Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ or publish pending.
compliance.
- Source snapshot provenance manifests for packages, adapters, plugins, and
public validation assets.
- Metadata-only cutover versions for published packages so npm registry
metadata can point at the monorepo.

### Notes

Expand Down
4 changes: 2 additions & 2 deletions adapters/langchain/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/langchain",
"version": "0.1.0",
"version": "0.1.1",
"description": "AtomicMemory adapter for LangChain JS - memory tools and framework-agnostic retrieve/ingest helpers around an injected MemoryClient.",
"type": "module",
"main": "dist/index.js",
Expand Down Expand Up @@ -33,7 +33,7 @@
"prepublishOnly": "node -e \"const v=require('./package.json').dependencies['@atomicmemory/sdk'];if(v.startsWith('file:')||v.startsWith('link:')||v.startsWith('workspace:')){console.error('refusing to publish: @atomicmemory/sdk is '+v+'. Publish the SDK first, then pin to a registry version here.');process.exit(1)}\""
},
"dependencies": {
"@atomicmemory/sdk": "^1.0.1"
"@atomicmemory/sdk": "^1.0.2"
},
"peerDependencies": {
"@langchain/core": "^0.3.0",
Expand Down
4 changes: 2 additions & 2 deletions adapters/langgraph/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/langgraph",
"version": "0.1.0",
"version": "0.1.1",
"description": "AtomicMemory adapter for LangGraph JS - state-graph node factories around an injected MemoryClient.",
"type": "module",
"main": "dist/index.js",
Expand Down Expand Up @@ -33,7 +33,7 @@
"prepublishOnly": "node -e \"const v=require('./package.json').dependencies['@atomicmemory/sdk'];if(v.startsWith('file:')||v.startsWith('link:')||v.startsWith('workspace:')){console.error('refusing to publish: @atomicmemory/sdk is '+v+'. Publish the SDK first, then pin to a registry version here.');process.exit(1)}\""
},
"dependencies": {
"@atomicmemory/sdk": "^1.0.1"
"@atomicmemory/sdk": "^1.0.2"
},
"peerDependencies": {
"@langchain/langgraph": "^0.4.0"
Expand Down
4 changes: 2 additions & 2 deletions adapters/mastra/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/mastra",
"version": "0.1.0",
"version": "0.1.1",
"description": "AtomicMemory adapter for Mastra - memory tools around an injected MemoryClient.",
"type": "module",
"main": "dist/index.js",
Expand Down Expand Up @@ -33,7 +33,7 @@
"prepublishOnly": "node -e \"const v=require('./package.json').dependencies['@atomicmemory/sdk'];if(v.startsWith('file:')||v.startsWith('link:')||v.startsWith('workspace:')){console.error('refusing to publish: @atomicmemory/sdk is '+v+'. Publish the SDK first, then pin to a registry version here.');process.exit(1)}\""
},
"dependencies": {
"@atomicmemory/sdk": "^1.0.1"
"@atomicmemory/sdk": "^1.0.2"
},
"peerDependencies": {
"@mastra/core": "^1.0.0",
Expand Down
2 changes: 1 addition & 1 deletion adapters/openai-agents/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ export ATOMICMEMORY_SCOPE_NAMESPACE="openai-agents-sdk-smoke"
pnpm --filter @atomicmemory/openai-agents smoke:backend
```

The smoke test writes a unique marker, verifies `augmentInputWithMemory()` retrieves it, then runs `runWithMemory()` with a fake runner and reports the post-run ingest AUDN outcome.
The smoke test writes a unique marker, verifies `augmentInputWithMemory()` retrieves it, then runs `runWithMemory()` with a fake runner and reports the post-run ingest AUDN-SC outcome.

Set `OPENAI_API_KEY` only when you want to test the real `Agent + run()` path from the install example.

Expand Down
4 changes: 2 additions & 2 deletions adapters/openai-agents/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/openai-agents",
"version": "0.1.0",
"version": "0.1.1",
"description": "AtomicMemory adapter for the OpenAI Agents SDK — pre-run memory retrieval, post-run ingest, and function tools.",
"type": "module",
"main": "dist/index.js",
Expand Down Expand Up @@ -34,7 +34,7 @@
"prepublishOnly": "node -e \"const v=require('./package.json').dependencies['@atomicmemory/sdk'];if(v.startsWith('file:')||v.startsWith('link:')){console.error('refusing to publish: @atomicmemory/sdk is '+v+'. Publish the SDK first, then pin to a registry version here.');process.exit(1)}\""
},
"dependencies": {
"@atomicmemory/sdk": "^1.0.1",
"@atomicmemory/sdk": "^1.0.2",
"@openai/agents": "^0.8.5",
"zod": "^4.3.6"
},
Expand Down
4 changes: 2 additions & 2 deletions adapters/vercel-ai/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/vercel-ai",
"version": "0.1.0",
"version": "0.1.1",
"description": "AtomicMemory adapter for the Vercel AI SDK — pre-call memory retrieval + post-call ingest, framework-version-agnostic.",
"type": "module",
"main": "dist/index.js",
Expand Down Expand Up @@ -33,7 +33,7 @@
"prepublishOnly": "node -e \"const v=require('./package.json').dependencies['@atomicmemory/sdk'];if(v.startsWith('file:')||v.startsWith('link:')){console.error('refusing to publish: @atomicmemory/sdk is '+v+'. Publish the SDK first, then pin to a registry version here.');process.exit(1)}\""
},
"dependencies": {
"@atomicmemory/sdk": "^1.0.1"
"@atomicmemory/sdk": "^1.0.2"
},
"devDependencies": {
"@types/node": "^20.0.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: atomicmemory-cli
description: Use the installed AtomicMemory CLI for memory search, ingestion, packaging, diagnostics, and agent-safe JSON output.
version: "0.1.0"
version: "0.1.2"
---

# AtomicMemory CLI Skill
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/cli-spec.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"spec_version": "5.0.0",
"package_name": "@atomicmemory/cli",
"package_version": "0.1.0",
"package_version": "0.1.2",
"global_options": [
{
"name": "--json",
Expand Down
4 changes: 2 additions & 2 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/cli",
"version": "0.1.1",
"version": "0.1.2",
"description": "AtomicMemory CLI for memory operations, config, status, and agent-friendly JSON output.",
"type": "module",
"publishConfig": {
Expand Down Expand Up @@ -58,7 +58,7 @@
"prepublishOnly": "node -e \"const v=require('./package.json').dependencies['@atomicmemory/sdk'];if(v.startsWith('file:')||v.startsWith('link:')){console.error('refusing to publish: @atomicmemory/sdk is '+v+'. Publish the SDK first, then pin to a registry version here.');process.exit(1)}\""
},
"dependencies": {
"@atomicmemory/sdk": "^1.0.1",
"@atomicmemory/sdk": "^1.0.2",
"commander": "^12.1.0",
"ink": "npm:@jrichman/ink@6.6.9",
"react": "^19.2.6",
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/bin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import { runInvocation } from './cli/runtime.js';
import { renderTopLevelError } from './cli/error-render.js';
import type { ExitCode } from './types.js';

export const CLI_VERSION = '0.1.0';
export const CLI_VERSION = '0.1.2';

async function main(argv: string[]): Promise<ExitCode> {
const startTime = Date.now();
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/src/help.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export function commandTree(options: { includeHidden?: boolean } = {}): CliComma
return filterHidden(CLI_SPEC.commands, options.includeHidden === true);
}

export function renderHelp(command?: string, version = '0.1.0'): string {
export function renderHelp(command?: string, version = CLI_SPEC.package_version): string {
if (command) {
const spec = findCommand(command, true);
if (!spec) return `Unknown command: ${command}`;
Expand Down
2 changes: 1 addition & 1 deletion packages/core/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ vector fields survive the Phase 1 → Phase 2 migration.
- Express API server with memory ingest, search, and consolidation endpoints
- Postgres + pgvector storage backend
- Pluggable embedding providers: openai, openai-compatible, ollama, transformers (WASM)
- AUDN mutation engine (Add, Update, Delete, No-op) with fail-closed semantics
- AUDN-SC mutation engine (Add, Update, Delete, No-op + Supersede, Clarify) with fail-closed semantics; pre-AUDN rejections are reported with a separate `SKIP` ingest trace sentinel
- Contradiction-safe claim versioning
- Hybrid retrieval (vector + BM25/FTS)
- Tiered context packaging
Expand Down
8 changes: 4 additions & 4 deletions packages/core/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@

Open-source memory engine for AI applications and agents.

Docker-deployable memory backend with durable context, semantic retrieval, and memory mutation (AUDN: Add, Update, Delete, No-op).
Docker-deployable memory backend with durable context, semantic retrieval, and memory mutation (AUDN-SC: Add, Update, Delete, No-op + Supersede, Clarify). Pre-AUDN rejections use a separate `SKIP` ingest trace sentinel.

**Docs:** [docs.atomicstrata.ai](https://docs.atomicstrata.ai)

## Features

- **Semantic ingest** — extract structured facts from conversations with contradiction detection
- **Hybrid retrieval** — vector similarity + BM25/FTS with RRF fusion
- **AUDN mutation** — Add, Update, Delete, No-op decisions with fail-closed integrity
- **AUDN-SC mutation** — Add, Update, Delete, No-op, Supersede, and Clarify decisions with fail-closed integrity
- **Claim versioning** — temporal lineage tracking with supersession and invalidation
- **Tiered context packaging** — L0/L1/L2 compression for token-efficient retrieval
- **Entity graph** — spreading activation over extracted entities
Expand Down Expand Up @@ -219,7 +219,7 @@ when you want the database bundled with Core.
| Method | Path | Description |
|--------|------|-------------|
| `GET` | `/health` | Health check |
| `POST` | `/v1/memories/ingest` | Full ingest with extraction and AUDN |
| `POST` | `/v1/memories/ingest` | Full ingest with extraction and AUDN-SC |
| `POST` | `/v1/memories/ingest/quick` | Fast ingest (embedding dedup only) |
| `POST` | `/v1/memories/search` | Semantic search with hybrid retrieval |
| `POST` | `/v1/memories/search/fast` | Fast vector-only search |
Expand Down Expand Up @@ -355,7 +355,7 @@ src/
server.ts # Express app bootstrap
```

Storage: Postgres + pgvector. Retrieval: hybrid (vector + BM25/FTS). Mutation: contradiction-safe AUDN with claim versioning.
Storage: Postgres + pgvector. Retrieval: hybrid (vector + BM25/FTS). Mutation: contradiction-safe AUDN-SC with claim versioning.

## Development

Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/core",
"version": "1.0.3",
"version": "1.0.4",
"description": "Open-source memory engine for AI applications — semantic retrieval, AUDN mutation, and contradiction-safe claim versioning.",
"type": "module",
"license": "Apache-2.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/mcp-server/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
MCP server that exposes [AtomicMemory core](../../packages/core) as four tools to any MCP-compatible agent:

- `memory_search` — semantic retrieval
- `memory_ingest` — AUDN-mutating ingest (`text` / `messages`) or deterministic one-record ingest (`verbatim`, provider permitting)
- `memory_ingest` — AUDN-SC-mutating ingest (`text` / `messages`) or deterministic one-record ingest (`verbatim`, provider permitting)
- `memory_package` — token-budgeted context package
- `memory_list` — list recent scoped memories

Expand Down
4 changes: 2 additions & 2 deletions packages/mcp-server/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/mcp-server",
"version": "0.1.1",
"version": "0.1.2",
"description": "MCP server exposing AtomicMemory's ingest / search / package tools to any MCP-compatible agent.",
"type": "module",
"main": "dist/index.js",
Expand Down Expand Up @@ -45,7 +45,7 @@
"prepublishOnly": "node -e \"const v=require('./package.json').dependencies['@atomicmemory/sdk'];if(v.startsWith('file:')||v.startsWith('link:')){console.error('refusing to publish: @atomicmemory/sdk is '+v+'. Publish the SDK first, then pin to a registry version here.');process.exit(1)}\""
},
"dependencies": {
"@atomicmemory/sdk": "^1.0.1",
"@atomicmemory/sdk": "^1.0.2",
"@modelcontextprotocol/sdk": "^1.0.0",
"zod": "^3.23.0"
},
Expand Down
2 changes: 1 addition & 1 deletion packages/sdk/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/sdk",
"version": "1.0.1",
"version": "1.0.2",
"type": "module",
"engines": {
"node": ">=22"
Expand Down
4 changes: 2 additions & 2 deletions plugins/claude-code/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "atomicmemory",
"version": "0.1.14",
"version": "0.1.15",
"description": "Persistent semantic memory for Claude Code — user preferences, project context, prior decisions, and codebase facts that survive across sessions.",
"author": {
"name": "AtomicMemory",
Expand All @@ -11,7 +11,7 @@
"mcpServers": {
"atomicmemory": {
"command": "npx",
"args": ["-y", "--package=@atomicmemory/mcp-server@^0.1.1", "atomicmemory-mcp"],
"args": ["-y", "--package=@atomicmemory/mcp-server@^0.1.2", "atomicmemory-mcp"],
"env": {
"ATOMICMEMORY_API_URL": "${ATOMICMEMORY_API_URL:-}",
"ATOMICMEMORY_API_KEY": "${ATOMICMEMORY_API_KEY:-}",
Expand Down
2 changes: 1 addition & 1 deletion plugins/claude-code/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ plugins/claude-code/
└── README.md
```

The plugin spawns [`@atomicmemory/mcp-server`](../../packages/mcp-server) from the npm registry via `npx -y --package=@atomicmemory/mcp-server@^0.1.1 atomicmemory-mcp`, so a `claude plugin install` is self-contained — no local clone or build required. Most semantic memory operations go through the MCP tools. Latency-sensitive prompt retrieval uses `/v1/memories/search/fast` directly, and lifecycle scripts write deterministic records to `/v1/memories/ingest/quick` with `skip_extraction=true` because command hooks cannot talk to Claude Code's already-running stdio MCP child. Hook record content stays clean and human-readable; lifecycle provenance, scope, dedupe keys, session IDs, cwd, transcript paths, tool counts, and validation details are sent separately in request `metadata` and persisted to the memory's `metadata` JSONB column, with `sourceSite` / `sourceUrl` continuing to carry the provider/route identity.
The plugin spawns [`@atomicmemory/mcp-server`](../../packages/mcp-server) from the npm registry via `npx -y --package=@atomicmemory/mcp-server@^0.1.2 atomicmemory-mcp`, so a `claude plugin install` is self-contained — no local clone or build required. Most semantic memory operations go through the MCP tools. Latency-sensitive prompt retrieval uses `/v1/memories/search/fast` directly, and lifecycle scripts write deterministic records to `/v1/memories/ingest/quick` with `skip_extraction=true` because command hooks cannot talk to Claude Code's already-running stdio MCP child. Hook record content stays clean and human-readable; lifecycle provenance, scope, dedupe keys, session IDs, cwd, transcript paths, tool counts, and validation details are sent separately in request `metadata` and persisted to the memory's `metadata` JSONB column, with `sourceSite` / `sourceUrl` continuing to carry the provider/route identity.

## Lifecycle hooks

Expand Down
2 changes: 1 addition & 1 deletion plugins/claude-code/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/claude-code-plugin",
"version": "0.1.14",
"version": "0.1.15",
"description": "AtomicMemory plugin for Claude Code — persistent semantic memory across sessions.",
"private": false,
"license": "Apache-2.0",
Expand Down
2 changes: 1 addition & 1 deletion plugins/codex/.codex-mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"mcpServers": {
"atomicmemory": {
"command": "npx",
"args": ["-y", "--package=@atomicmemory/mcp-server@^0.1.1", "atomicmemory-mcp"],
"args": ["-y", "--package=@atomicmemory/mcp-server@^0.1.2", "atomicmemory-mcp"],
"env_vars": [
"ATOMICMEMORY_API_URL",
"ATOMICMEMORY_API_KEY",
Expand Down
2 changes: 1 addition & 1 deletion plugins/codex/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "atomicmemory",
"version": "0.1.14",
"version": "0.1.15",
"description": "AtomicMemory memory layer for Codex. Pluggable semantic memory — swap backends through the SDK's MemoryProvider model by config, not code change.",
"author": {
"name": "AtomicMemory",
Expand Down
2 changes: 1 addition & 1 deletion plugins/codex/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ export ATOMICMEMORY_SCOPE_USER="pip"
# export ATOMICMEMORY_SCOPE_THREAD="<session-id>"
```

At least one `ATOMICMEMORY_SCOPE_*` must be set — the server rejects scopeless requests. The MCP server itself is fetched from npm on first use via `npx -y --package=@atomicmemory/mcp-server@^0.1.1 atomicmemory-mcp`, so no local clone or build is required.
At least one `ATOMICMEMORY_SCOPE_*` must be set — the server rejects scopeless requests. The MCP server itself is fetched from npm on first use via `npx -y --package=@atomicmemory/mcp-server@^0.1.2 atomicmemory-mcp`, so no local clone or build is required.

## Memory behavior

Expand Down
2 changes: 1 addition & 1 deletion plugins/codex/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/codex-plugin",
"version": "0.1.14",
"version": "0.1.15",
"description": "AtomicMemory plugin for OpenAI Codex — plugin manifest, MCP server config, and memory protocol skill.",
"private": true,
"license": "Apache-2.0",
Expand Down
2 changes: 1 addition & 1 deletion plugins/codex/skills/atomicmemory/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ description: >
license: Apache-2.0
metadata:
author: AtomicMemory
version: "0.1.14"
version: "0.1.15"
category: ai-memory
tags: "memory, semantic-search, codex, pluggable"
---
Expand Down
2 changes: 1 addition & 1 deletion plugins/cursor/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/cursor-plugin",
"version": "0.1.14",
"version": "0.1.15",
"description": "AtomicMemory integration for Cursor - MCP configuration and project rules for persistent semantic memory.",
"private": true,
"license": "Apache-2.0",
Expand Down
2 changes: 1 addition & 1 deletion plugins/hermes/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/hermes-plugin",
"version": "0.1.14",
"version": "0.1.15",
"description": "AtomicMemory native Hermes memory provider — Python SDK-backed, cross-tool memory by default.",
"publishConfig": {
"access": "public",
Expand Down
2 changes: 1 addition & 1 deletion plugins/hermes/plugin.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: atomicmemory
version: 0.1.14
version: 0.1.15
description: "AtomicMemory native Hermes memory provider — Python SDK-backed, cross-tool memory by default."
pip_dependencies:
- "atomicmemory>=1.0.1,<2.0.0"
Expand Down
2 changes: 1 addition & 1 deletion plugins/hermes/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "atomicmemory-hermes"
version = "0.1.14"
version = "0.1.15"
description = "AtomicMemory native Hermes memory provider."
readme = "README.md"
requires-python = ">=3.10"
Expand Down
2 changes: 1 addition & 1 deletion plugins/openclaw/openclaw.plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id": "atomicmemory",
"name": "AtomicMemory",
"version": "0.1.14",
"version": "0.1.15",
"description": "Persistent semantic memory for OpenClaw agents — cross-channel user memory and deterministic session snapshots via the AtomicMemory SDK's pluggable MemoryProvider model.",
"kind": "memory",
"skills": ["./skills/atomicmemory"],
Expand Down
4 changes: 2 additions & 2 deletions plugins/openclaw/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/openclaw-plugin",
"version": "0.1.14",
"version": "0.1.15",
"description": "AtomicMemory plugin for OpenClaw — persistent semantic memory and deterministic session snapshots across channels.",
"type": "module",
"main": "dist/index.js",
Expand Down Expand Up @@ -30,7 +30,7 @@
"prepack": "pnpm build"
},
"dependencies": {
"@atomicmemory/mcp-server": "^0.1.0"
"@atomicmemory/mcp-server": "^0.1.2"
},
"devDependencies": {
"@types/node": "^20.0.0",
Expand Down
2 changes: 1 addition & 1 deletion plugins/openclaw/skills/atomicmemory/skill.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: atomicmemory
version: 0.1.14
version: 0.1.15
author:
name: AtomicMemory
url: https://atomicmem.ai
Expand Down
Loading
Loading