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: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"name": "claude-code",
"source": "./plugins/claude-code",
"description": "Persistent semantic memory for Claude Code — user preferences, project context, prior decisions, and codebase facts that survive across sessions.",
"version": "0.1.13",
"version": "0.1.14",
"category": "productivity",
"homepage": "https://docs.atomicstrata.ai/integrations/coding-agents/claude-code",
"license": "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion 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.13",
"version": "0.1.14",
"description": "Persistent semantic memory for Claude Code — user preferences, project context, prior decisions, and codebase facts that survive across sessions.",
"author": {
"name": "AtomicMemory",
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.13",
"version": "0.1.14",
"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-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "atomicmemory",
"version": "0.1.13",
"version": "0.1.14",
"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/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@atomicmemory/codex-plugin",
"version": "0.1.13",
"version": "0.1.14",
"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.13"
version: "0.1.14"
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.13",
"version": "0.1.14",
"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.13",
"version": "0.1.14",
"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.13
version: 0.1.14
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.13"
version = "0.1.14"
description = "AtomicMemory native Hermes memory provider."
readme = "README.md"
requires-python = ">=3.10"
Expand Down
5 changes: 4 additions & 1 deletion plugins/openclaw/openclaw.plugin.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
{
"id": "atomicmemory",
"name": "AtomicMemory",
"version": "0.1.13",
"version": "0.1.14",
"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"],
"contracts": {
"tools": ["memory_search", "memory_ingest", "memory_package", "memory_list"]
},
"configSchema": {
"type": "object",
"additionalProperties": false,
Expand Down
2 changes: 1 addition & 1 deletion 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.13",
"version": "0.1.14",
"description": "AtomicMemory plugin for OpenClaw — persistent semantic memory and deterministic session snapshots across channels.",
"type": "module",
"main": "dist/index.js",
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.13
version: 0.1.14
author:
name: AtomicMemory
url: https://atomicmem.ai
Expand Down
19 changes: 19 additions & 0 deletions plugins/openclaw/src/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,27 @@

import test from 'node:test';
import assert from 'node:assert/strict';
import { readFileSync } from 'node:fs';
import { fileURLToPath } from 'node:url';
import { dirname, resolve } from 'node:path';
import plugin, { createOpenClawPlugin } from './index.js';

const PLUGIN_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..');
const EXPECTED_TOOL_NAMES = ['memory_ingest', 'memory_list', 'memory_package', 'memory_search'];

test('manifest declares contracts.tools matching the tools register() exposes', () => {
const manifest = JSON.parse(
readFileSync(resolve(PLUGIN_ROOT, 'openclaw.plugin.json'), 'utf8'),
);
assert.ok(manifest.contracts, 'openclaw.plugin.json must declare a contracts block');
assert.ok(Array.isArray(manifest.contracts.tools), 'contracts.tools must be an array');
assert.deepEqual(
[...manifest.contracts.tools].sort(),
EXPECTED_TOOL_NAMES,
'contracts.tools must match the tools register() actually exposes',
);
});

test('register exposes memory tools without requiring provider config', () => {
const tools: Array<{ name: string }> = [];

Expand Down
Loading