@agentmemory/agentmemory 0.9.28 → 0.9.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +98 -28
- package/AGENTS.md +19 -26
- package/README.md +619 -274
- package/dist/.env.example +98 -28
- package/dist/cli.d.mts.map +1 -1
- package/dist/cli.mjs +1328 -244
- package/dist/cli.mjs.map +1 -1
- package/dist/{connect-JnsJXc68.mjs → connect-B4_ca6BD.mjs} +619 -70
- package/dist/connect-B4_ca6BD.mjs.map +1 -0
- package/dist/docker-compose.yml +42 -16
- package/dist/hooks/_capture.d.mts +22 -0
- package/dist/hooks/_capture.d.mts.map +1 -0
- package/dist/hooks/_capture.mjs +908 -0
- package/dist/hooks/_capture.mjs.map +1 -0
- package/dist/hooks/antigravity-bridge.d.mts +8 -0
- package/dist/hooks/antigravity-bridge.d.mts.map +1 -0
- package/dist/hooks/antigravity-bridge.mjs +123 -0
- package/dist/hooks/antigravity-bridge.mjs.map +1 -0
- package/dist/hooks/notification.mjs +34 -27
- package/dist/hooks/notification.mjs.map +1 -1
- package/dist/hooks/post-commit.mjs +84 -2
- package/dist/hooks/post-commit.mjs.map +1 -1
- package/dist/hooks/post-tool-failure.mjs +71 -26
- package/dist/hooks/post-tool-failure.mjs.map +1 -1
- package/dist/hooks/post-tool-use.mjs +99 -36
- package/dist/hooks/post-tool-use.mjs.map +1 -1
- package/dist/hooks/pre-compact.mjs +95 -5
- package/dist/hooks/pre-compact.mjs.map +1 -1
- package/dist/hooks/pre-tool-use.mjs +72 -2
- package/dist/hooks/pre-tool-use.mjs.map +1 -1
- package/dist/hooks/prompt-submit.mjs +25 -22
- package/dist/hooks/prompt-submit.mjs.map +1 -1
- package/dist/hooks/session-end.mjs +93 -24
- package/dist/hooks/session-end.mjs.map +1 -1
- package/dist/hooks/session-start.mjs +101 -6
- package/dist/hooks/session-start.mjs.map +1 -1
- package/dist/hooks/stop.mjs +72 -8
- package/dist/hooks/stop.mjs.map +1 -1
- package/dist/hooks/subagent-start.mjs +28 -26
- package/dist/hooks/subagent-start.mjs.map +1 -1
- package/dist/hooks/subagent-stop.mjs +29 -26
- package/dist/hooks/subagent-stop.mjs.map +1 -1
- package/dist/hooks/task-completed.mjs +31 -28
- package/dist/hooks/task-completed.mjs.map +1 -1
- package/dist/iii-config.docker.yaml +10 -10
- package/dist/iii-config.yaml +3 -1
- package/dist/{image-refs-BKLmp_sD.mjs → image-refs-BaT-9oMU.mjs} +2 -2
- package/dist/image-refs-BaT-9oMU.mjs.map +1 -0
- package/dist/{image-refs-C2YU7BIm.mjs → image-refs-T_urbwHM.mjs} +3 -3
- package/dist/image-refs-T_urbwHM.mjs.map +1 -0
- package/dist/{keyed-mutex-DTHtcZrt.mjs → image-store-BsN4vyjr.mjs} +2 -14
- package/dist/image-store-BsN4vyjr.mjs.map +1 -0
- package/dist/index.mjs +14021 -6494
- package/dist/index.mjs.map +1 -1
- package/dist/keyed-mutex-DchXsyfP.mjs +221 -0
- package/dist/keyed-mutex-DchXsyfP.mjs.map +1 -0
- package/dist/secret-store-BnY3A50C.mjs +2348 -0
- package/dist/secret-store-BnY3A50C.mjs.map +1 -0
- package/dist/{src-CzgoepGU.mjs → src-Jsq9LCeH.mjs} +7349 -2940
- package/dist/src-Jsq9LCeH.mjs.map +1 -0
- package/dist/{standalone-YsZFFQBM.mjs → standalone-DKCdrf1d.mjs} +62 -24
- package/dist/standalone-DKCdrf1d.mjs.map +1 -0
- package/dist/standalone.d.mts.map +1 -1
- package/dist/standalone.mjs +298 -27
- package/dist/standalone.mjs.map +1 -1
- package/dist/status-IRz7ta8-.mjs +2344 -0
- package/dist/status-IRz7ta8-.mjs.map +1 -0
- package/dist/viewer/favicon.svg +35 -1
- package/dist/viewer/index.html +7428 -2608
- package/docker-compose.yml +42 -16
- package/iii-config.docker.yaml +10 -10
- package/iii-config.yaml +3 -1
- package/integrations/pi/README.md +77 -0
- package/integrations/pi/index.ts +402 -0
- package/integrations/pi/package.json +32 -0
- package/integrations/pi/security.ts +87 -0
- package/package.json +15 -7
- package/plugin/.claude-plugin/plugin.json +2 -2
- package/plugin/.codex-plugin/plugin.json +26 -4
- package/plugin/.devin-plugin/plugin.json +32 -0
- package/plugin/.mcp.codex.json +12 -0
- package/plugin/.mcp.copilot.json +2 -7
- package/plugin/.mcp.json +2 -7
- package/plugin/assets/icon.svg +35 -0
- package/plugin/cursor/hooks.json +41 -0
- package/plugin/cursor/mcp.json +12 -0
- package/plugin/hooks/hooks.antigravity.json +43 -0
- package/plugin/hooks/hooks.copilot.json +11 -11
- package/plugin/hooks/hooks.devin.json +67 -0
- package/plugin/hooks/hooks.droid.json +55 -0
- package/plugin/opencode/README.md +267 -31
- package/plugin/opencode/agentmemory-capture.ts +644 -15
- package/plugin/opencode/plugin.json +1 -1
- package/plugin/plugin.json +2 -2
- package/plugin/scripts/_capture.d.mts +22 -0
- package/plugin/scripts/_capture.d.mts.map +1 -0
- package/plugin/scripts/_capture.mjs +908 -0
- package/plugin/scripts/_capture.mjs.map +1 -0
- package/plugin/scripts/antigravity-bridge.d.mts +8 -0
- package/plugin/scripts/antigravity-bridge.d.mts.map +1 -0
- package/plugin/scripts/antigravity-bridge.mjs +123 -0
- package/plugin/scripts/antigravity-bridge.mjs.map +1 -0
- package/plugin/scripts/notification.mjs +34 -27
- package/plugin/scripts/notification.mjs.map +1 -1
- package/plugin/scripts/plugin-bridge.mjs +378 -0
- package/plugin/scripts/post-commit.mjs +84 -2
- package/plugin/scripts/post-commit.mjs.map +1 -1
- package/plugin/scripts/post-tool-failure.mjs +71 -26
- package/plugin/scripts/post-tool-failure.mjs.map +1 -1
- package/plugin/scripts/post-tool-use.mjs +99 -36
- package/plugin/scripts/post-tool-use.mjs.map +1 -1
- package/plugin/scripts/pre-compact.mjs +95 -5
- package/plugin/scripts/pre-compact.mjs.map +1 -1
- package/plugin/scripts/pre-tool-use.mjs +72 -2
- package/plugin/scripts/pre-tool-use.mjs.map +1 -1
- package/plugin/scripts/prompt-submit.mjs +25 -22
- package/plugin/scripts/prompt-submit.mjs.map +1 -1
- package/plugin/scripts/session-end.mjs +93 -24
- package/plugin/scripts/session-end.mjs.map +1 -1
- package/plugin/scripts/session-start.mjs +101 -6
- package/plugin/scripts/session-start.mjs.map +1 -1
- package/plugin/scripts/stop.mjs +72 -8
- package/plugin/scripts/stop.mjs.map +1 -1
- package/plugin/scripts/subagent-start.mjs +28 -26
- package/plugin/scripts/subagent-start.mjs.map +1 -1
- package/plugin/scripts/subagent-stop.mjs +29 -26
- package/plugin/scripts/subagent-stop.mjs.map +1 -1
- package/plugin/scripts/task-completed.mjs +31 -28
- package/plugin/scripts/task-completed.mjs.map +1 -1
- package/plugin/skills/_shared/TROUBLESHOOTING.md +22 -6
- package/plugin/skills/agentmemory-agents/REFERENCE.md +8 -5
- package/plugin/skills/agentmemory-config/REFERENCE.md +52 -1
- package/plugin/skills/agentmemory-config/SKILL.md +44 -7
- package/plugin/skills/agentmemory-mcp-tools/REFERENCE.md +4 -3
- package/plugin/skills/agentmemory-rest-api/REFERENCE.md +23 -2
- package/plugin/skills/forget/SKILL.md +4 -1
- package/plugin/skills/handoff/SKILL.md +4 -2
- package/plugin/skills/lesson/SKILL.md +64 -0
- package/plugin/skills/memory-discipline/SKILL.md +65 -0
- package/plugin/skills/recall/SKILL.md +4 -1
- package/plugin/skills/remember/SKILL.md +6 -1
- package/dist/config-ChC9EtgV.mjs +0 -259
- package/dist/config-ChC9EtgV.mjs.map +0 -1
- package/dist/connect-JnsJXc68.mjs.map +0 -1
- package/dist/image-refs-BKLmp_sD.mjs.map +0 -1
- package/dist/image-refs-C2YU7BIm.mjs.map +0 -1
- package/dist/keyed-mutex-DTHtcZrt.mjs.map +0 -1
- package/dist/logger-BEB7pCI9.mjs +0 -43
- package/dist/logger-BEB7pCI9.mjs.map +0 -1
- package/dist/schema-CNiCWzV9.mjs +0 -78
- package/dist/schema-CNiCWzV9.mjs.map +0 -1
- package/dist/src-CzgoepGU.mjs.map +0 -1
- package/dist/standalone-YsZFFQBM.mjs.map +0 -1
- package/dist/tools-registry-D3NEoe5m.mjs +0 -1115
- package/dist/tools-registry-D3NEoe5m.mjs.map +0 -1
- package/plugin/scripts/diagnostics.d.mts +0 -17
- package/plugin/scripts/diagnostics.d.mts.map +0 -1
- package/plugin/scripts/diagnostics.mjs.map +0 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
|
|
5
|
+
const LOOPBACK_HOSTS = new Set(["localhost", "127.0.0.1", "::1"]);
|
|
6
|
+
|
|
7
|
+
function usableSecret(value: unknown): string {
|
|
8
|
+
const trimmed = typeof value === "string" ? value.trim() : "";
|
|
9
|
+
if (!trimmed || (trimmed.startsWith("${") && trimmed.endsWith("}"))) return "";
|
|
10
|
+
return trimmed;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function readAgentmemoryFile(name: string): string {
|
|
14
|
+
try {
|
|
15
|
+
return readFileSync(join(homedir(), ".agentmemory", name), "utf-8");
|
|
16
|
+
} catch {
|
|
17
|
+
return "";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function envFileSecret(): string {
|
|
22
|
+
let found = "";
|
|
23
|
+
for (const line of readAgentmemoryFile(".env").split("\n")) {
|
|
24
|
+
const trimmed = line.trim();
|
|
25
|
+
if (trimmed.startsWith("#")) continue;
|
|
26
|
+
const eq = trimmed.indexOf("=");
|
|
27
|
+
if (eq === -1) continue;
|
|
28
|
+
if (trimmed.slice(0, eq).replace(/^export\s+/, "").trim() !== "AGENTMEMORY_SECRET") continue;
|
|
29
|
+
let value = trimmed.slice(eq + 1).trim();
|
|
30
|
+
const quote = value[0];
|
|
31
|
+
const close = quote === '"' || quote === "'" ? value.indexOf(quote, 1) : -1;
|
|
32
|
+
if (close > 0) value = value.slice(1, close);
|
|
33
|
+
else if (value.includes(" #")) value = value.slice(0, value.indexOf(" #"));
|
|
34
|
+
found = usableSecret(value);
|
|
35
|
+
}
|
|
36
|
+
return found;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function isLoopbackUrl(url: string): boolean {
|
|
40
|
+
try {
|
|
41
|
+
const host = new URL(url).hostname.replace(/^\[|\]$/g, "").toLowerCase();
|
|
42
|
+
return host === "localhost" || host === "::1" || /^127(?:\.\d{1,3}){3}$/.test(host);
|
|
43
|
+
} catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function resolveSecret(url: string, explicit?: string): string {
|
|
49
|
+
const configured = usableSecret(explicit);
|
|
50
|
+
if (configured) return configured;
|
|
51
|
+
if (!isLoopbackUrl(url)) return "";
|
|
52
|
+
return envFileSecret() || usableSecret(readAgentmemoryFile("secret"));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function normalizedHostname(hostname: string): string {
|
|
56
|
+
return hostname.replace(/^\[|\]$/g, "").toLowerCase();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export function usesPlaintextBearerAuth(baseUrl: string, secret?: string): boolean {
|
|
60
|
+
if (!secret) return false;
|
|
61
|
+
try {
|
|
62
|
+
const parsed = new URL(baseUrl);
|
|
63
|
+
return parsed.protocol === "http:" && !LOOPBACK_HOSTS.has(normalizedHostname(parsed.hostname));
|
|
64
|
+
} catch {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function plaintextBearerAuthMessage(baseUrl: string): string {
|
|
70
|
+
return `agentmemory: AGENTMEMORY_SECRET is configured for plaintext HTTP to ${baseUrl}. Bearer tokens and memory payloads can be observed on the network; use HTTPS or an SSH tunnel.`;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export function createPlaintextBearerAuthGuard(
|
|
74
|
+
warn: (message: string) => void = (message) => console.warn(message),
|
|
75
|
+
env?: { AGENTMEMORY_REQUIRE_HTTPS?: string },
|
|
76
|
+
): (baseUrl: string, secret?: string) => void {
|
|
77
|
+
let warned = false;
|
|
78
|
+
return (baseUrl, secret) => {
|
|
79
|
+
if (!usesPlaintextBearerAuth(baseUrl, secret)) return;
|
|
80
|
+
const message = plaintextBearerAuthMessage(baseUrl);
|
|
81
|
+
if ((env || process.env).AGENTMEMORY_REQUIRE_HTTPS === "1") throw new Error(message);
|
|
82
|
+
if (!warned) {
|
|
83
|
+
warned = true;
|
|
84
|
+
warn(message);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentmemory/agentmemory",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.30",
|
|
4
4
|
"description": "Persistent memory for AI coding agents, powered by iii-engine's three primitives",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.mjs",
|
|
@@ -25,9 +25,17 @@
|
|
|
25
25
|
"test:watch": "vitest --exclude test/integration.test.ts",
|
|
26
26
|
"test:integration": "vitest run test/integration.test.ts",
|
|
27
27
|
"test:all": "vitest run",
|
|
28
|
+
"release:gate": "node scripts/release-gate/run.mjs",
|
|
28
29
|
"skills:gen": "tsx scripts/skills/generate.ts",
|
|
30
|
+
"engine:hashes": "node scripts/engine-hashes.mjs",
|
|
29
31
|
"skills:check": "tsx scripts/skills/generate.ts --check && tsx scripts/skills/check.ts",
|
|
32
|
+
"docs:sync": "tsx scripts/docs-sync.ts",
|
|
33
|
+
"docs:check": "tsx scripts/docs-sync.ts --check",
|
|
34
|
+
"plugin:pack:codex": "npm run build && node scripts/plugins/package-codex.mjs",
|
|
35
|
+
"plugin:verify:published": "node scripts/plugins/verify-published.mjs",
|
|
36
|
+
"test:plugin:live": "node scripts/plugins/test-live.mjs",
|
|
30
37
|
"bench:load": "node --import tsx benchmark/load-100k.ts",
|
|
38
|
+
"bench:capture-costs": "node --import tsx benchmark/capture-costs.ts",
|
|
31
39
|
"eval:longmemeval": "tsx eval/runner/longmemeval.ts",
|
|
32
40
|
"eval:coding-life": "tsx eval/runner/coding-life.ts"
|
|
33
41
|
},
|
|
@@ -45,6 +53,7 @@
|
|
|
45
53
|
"files": [
|
|
46
54
|
"dist/",
|
|
47
55
|
"plugin/",
|
|
56
|
+
"integrations/pi/",
|
|
48
57
|
"iii-config.yaml",
|
|
49
58
|
"iii-config.docker.yaml",
|
|
50
59
|
"docker-compose.yml",
|
|
@@ -63,20 +72,19 @@
|
|
|
63
72
|
"@anthropic-ai/claude-agent-sdk": "^0.3.142",
|
|
64
73
|
"@anthropic-ai/sdk": "^0.100.1",
|
|
65
74
|
"@clack/prompts": "^1.2.0",
|
|
66
|
-
"dotenv": "^
|
|
67
|
-
"iii-
|
|
75
|
+
"dotenv": "^18.0.3",
|
|
76
|
+
"@iii-dev/helpers": "0.22.1",
|
|
77
|
+
"iii-sdk": "0.22.1",
|
|
68
78
|
"picocolors": "^1.1.1",
|
|
69
79
|
"zod": "^4.0.0"
|
|
70
80
|
},
|
|
71
81
|
"optionalDependencies": {
|
|
82
|
+
"@huggingface/transformers": "^4.2.0",
|
|
72
83
|
"@node-rs/jieba": "^2.0.1",
|
|
73
|
-
"@xenova/transformers": "^2.17.2",
|
|
74
|
-
"onnxruntime-node": "^1.14.0",
|
|
75
|
-
"onnxruntime-web": "^1.14.0",
|
|
76
84
|
"tiny-segmenter": "^0.2.0"
|
|
77
85
|
},
|
|
78
86
|
"devDependencies": {
|
|
79
|
-
"@types/node": "^
|
|
87
|
+
"@types/node": "^26.6.2",
|
|
80
88
|
"tsdown": "^0.21.10",
|
|
81
89
|
"tsx": "^4.19.0",
|
|
82
90
|
"typescript": "^6.0.3",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentmemory",
|
|
3
|
-
"version": "0.9.
|
|
4
|
-
"description": "Persistent memory for AI coding agents -- captures tool usage, compresses via LLM, injects context into future sessions. 12 hooks,
|
|
3
|
+
"version": "0.9.30",
|
|
4
|
+
"description": "Persistent memory for AI coding agents -- captures tool usage, compresses via LLM, injects context into future sessions. 12 hooks, 54 MCP tools, 17 skills, real-time viewer.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Rohit Ghumare",
|
|
7
7
|
"url": "https://github.com/rohitg00"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentmemory",
|
|
3
|
-
"version": "0.9.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.9.30",
|
|
4
|
+
"description": "Local persistent memory for coding agents. Recall decisions, resume sessions, learn from corrections, and manage memory through 54 MCP tools and 17 skills. Optional capture through 6 Codex hooks.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Rohit Ghumare",
|
|
7
7
|
"url": "https://github.com/rohitg00"
|
|
@@ -10,6 +10,28 @@
|
|
|
10
10
|
"homepage": "https://github.com/rohitg00/agentmemory",
|
|
11
11
|
"repository": "https://github.com/rohitg00/agentmemory",
|
|
12
12
|
"skills": "./skills/",
|
|
13
|
-
"mcpServers": "./.mcp.json",
|
|
14
|
-
"hooks": "./hooks/hooks.codex.json"
|
|
13
|
+
"mcpServers": "./.mcp.codex.json",
|
|
14
|
+
"hooks": "./hooks/hooks.codex.json",
|
|
15
|
+
"interface": {
|
|
16
|
+
"displayName": "Agent Memory",
|
|
17
|
+
"shortDescription": "Memory across coding sessions",
|
|
18
|
+
"longDescription": "Recall past decisions, resume work, save useful context, and learn from corrections across Codex and Claude Code using one local Agent Memory daemon. Includes search, session history, lessons, graph queries, memory maintenance, export, and deletion workflows. Requires Node.js 20+ and a running Agent Memory daemon. Basic keyword recall needs no model key. Embeddings and model-based features require configuration; external providers may receive selected data when enabled. Automatic capture requires trusted, supported hooks. Designed for local Codex sessions.",
|
|
19
|
+
"developerName": "Rohit Ghumare",
|
|
20
|
+
"websiteURL": "https://github.com/rohitg00/agentmemory",
|
|
21
|
+
"supportURL": "https://github.com/rohitg00/agentmemory/issues",
|
|
22
|
+
"category": "Developer Tools",
|
|
23
|
+
"capabilities": ["Local persistent memory", "Session handoff", "Lessons and recall", "Memory management"],
|
|
24
|
+
"defaultPrompt": [
|
|
25
|
+
"Check my local Agent Memory connection and explain which features are enabled.",
|
|
26
|
+
"Recall decisions relevant to this repository, with the evidence for each.",
|
|
27
|
+
"Resume the latest session for this repository and show the recorded next step."
|
|
28
|
+
],
|
|
29
|
+
"logo": "./assets/icon.svg",
|
|
30
|
+
"composerIcon": "./assets/icon.svg"
|
|
31
|
+
},
|
|
32
|
+
"extensions": {
|
|
33
|
+
"com.openai": {
|
|
34
|
+
"onboardingSkill": "./skills/agentmemory-config/SKILL.md"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
15
37
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "agentmemory",
|
|
3
|
+
"version": "0.9.30",
|
|
4
|
+
"description": "Persistent memory for AI coding agents. Captures sessions, recalls with hybrid BM25 + vector + graph search, and exposes 54 memory tools over MCP. Keyless by default, runs on your machine.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Rohit Ghumare",
|
|
7
|
+
"email": "ghumare64@gmail.com"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://agent-memory.dev",
|
|
10
|
+
"repository": "https://github.com/rohitg00/agentmemory",
|
|
11
|
+
"license": "Apache-2.0",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"memory",
|
|
14
|
+
"mcp",
|
|
15
|
+
"recall",
|
|
16
|
+
"knowledge-graph",
|
|
17
|
+
"agent-memory"
|
|
18
|
+
],
|
|
19
|
+
"mcpServers": {
|
|
20
|
+
"agentmemory": {
|
|
21
|
+
"command": "npx",
|
|
22
|
+
"args": [
|
|
23
|
+
"-y",
|
|
24
|
+
"@agentmemory/mcp"
|
|
25
|
+
],
|
|
26
|
+
"env": {
|
|
27
|
+
"AGENTMEMORY_URL": "${AGENTMEMORY_URL:-http://localhost:3111}",
|
|
28
|
+
"AGENTMEMORY_SECRET": "${AGENTMEMORY_SECRET:-}"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
package/plugin/.mcp.copilot.json
CHANGED
|
@@ -2,13 +2,8 @@
|
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"agentmemory": {
|
|
4
4
|
"type": "local",
|
|
5
|
-
"command": "
|
|
6
|
-
"args": ["-
|
|
7
|
-
"env": {
|
|
8
|
-
"AGENTMEMORY_URL": "${AGENTMEMORY_URL:-http://localhost:3111}",
|
|
9
|
-
"AGENTMEMORY_SECRET": "${AGENTMEMORY_SECRET:-}",
|
|
10
|
-
"AGENTMEMORY_TOOLS": "${AGENTMEMORY_TOOLS:-all}"
|
|
11
|
-
},
|
|
5
|
+
"command": "node",
|
|
6
|
+
"args": ["${COPILOT_PLUGIN_ROOT}/scripts/plugin-bridge.mjs"],
|
|
12
7
|
"tools": ["*"]
|
|
13
8
|
}
|
|
14
9
|
}
|
package/plugin/.mcp.json
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"agentmemory": {
|
|
4
|
-
"command": "
|
|
5
|
-
"args": ["-
|
|
6
|
-
"env": {
|
|
7
|
-
"AGENTMEMORY_URL": "${AGENTMEMORY_URL:-http://localhost:3111}",
|
|
8
|
-
"AGENTMEMORY_SECRET": "${AGENTMEMORY_SECRET:-}",
|
|
9
|
-
"AGENTMEMORY_TOOLS": "${AGENTMEMORY_TOOLS:-all}"
|
|
10
|
-
}
|
|
4
|
+
"command": "node",
|
|
5
|
+
"args": ["${CLAUDE_PLUGIN_ROOT}/scripts/plugin-bridge.mjs"]
|
|
11
6
|
}
|
|
12
7
|
}
|
|
13
8
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
|
|
4
|
+
<stop offset="0%" stop-color="#FF6B35"/>
|
|
5
|
+
<stop offset="100%" stop-color="#FF8F5E"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
|
|
9
|
+
<rect width="64" height="64" rx="14" fill="#1A1A1A"/>
|
|
10
|
+
|
|
11
|
+
<!-- 4 memory tiers -->
|
|
12
|
+
<rect x="14" y="40" width="36" height="5" rx="2.5" fill="#333" opacity="0.5"/>
|
|
13
|
+
<rect x="14" y="33" width="36" height="5" rx="2.5" fill="#444" opacity="0.6"/>
|
|
14
|
+
<rect x="14" y="26" width="36" height="5" rx="2.5" fill="#555" opacity="0.7"/>
|
|
15
|
+
<rect x="14" y="19" width="36" height="5" rx="2.5" fill="url(#g)"/>
|
|
16
|
+
|
|
17
|
+
<!-- Active nodes on hot layer -->
|
|
18
|
+
<circle cx="22" cy="21.5" r="1.8" fill="#fff"/>
|
|
19
|
+
<circle cx="32" cy="21.5" r="1.8" fill="#fff"/>
|
|
20
|
+
<circle cx="42" cy="21.5" r="1.8" fill="#fff"/>
|
|
21
|
+
|
|
22
|
+
<!-- Retrieval lines converging up -->
|
|
23
|
+
<line x1="22" y1="19" x2="32" y2="12" stroke="#FF6B35" stroke-width="1" opacity="0.7"/>
|
|
24
|
+
<line x1="32" y1="19" x2="32" y2="12" stroke="#FF6B35" stroke-width="1" opacity="0.5"/>
|
|
25
|
+
<line x1="42" y1="19" x2="32" y2="12" stroke="#FF6B35" stroke-width="1" opacity="0.7"/>
|
|
26
|
+
|
|
27
|
+
<!-- Retrieval point -->
|
|
28
|
+
<circle cx="32" cy="11" r="3" fill="url(#g)"/>
|
|
29
|
+
<circle cx="32" cy="11" r="5" fill="none" stroke="#FF6B35" stroke-width="0.8" opacity="0.3"/>
|
|
30
|
+
|
|
31
|
+
<!-- Fading dots on lower tiers -->
|
|
32
|
+
<circle cx="25" cy="28.5" r="1" fill="#888" opacity="0.4"/>
|
|
33
|
+
<circle cx="39" cy="28.5" r="1" fill="#888" opacity="0.4"/>
|
|
34
|
+
<circle cx="32" cy="35.5" r="0.8" fill="#666" opacity="0.3"/>
|
|
35
|
+
</svg>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"hooks": {
|
|
4
|
+
"sessionStart": [
|
|
5
|
+
{
|
|
6
|
+
"command": "node ${CURSOR_PLUGIN_ROOT}/plugin/scripts/session-start.mjs"
|
|
7
|
+
}
|
|
8
|
+
],
|
|
9
|
+
"beforeSubmitPrompt": [
|
|
10
|
+
{
|
|
11
|
+
"command": "node ${CURSOR_PLUGIN_ROOT}/plugin/scripts/prompt-submit.mjs"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
"preToolUse": [
|
|
15
|
+
{
|
|
16
|
+
"command": "node ${CURSOR_PLUGIN_ROOT}/plugin/scripts/pre-tool-use.mjs",
|
|
17
|
+
"matcher": "Shell|Read|Write|Grep"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"postToolUse": [
|
|
21
|
+
{
|
|
22
|
+
"command": "node ${CURSOR_PLUGIN_ROOT}/plugin/scripts/post-tool-use.mjs"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"postToolUseFailure": [
|
|
26
|
+
{
|
|
27
|
+
"command": "node ${CURSOR_PLUGIN_ROOT}/plugin/scripts/post-tool-failure.mjs"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"stop": [
|
|
31
|
+
{
|
|
32
|
+
"command": "node ${CURSOR_PLUGIN_ROOT}/plugin/scripts/stop.mjs"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"sessionEnd": [
|
|
36
|
+
{
|
|
37
|
+
"command": "node ${CURSOR_PLUGIN_ROOT}/plugin/scripts/session-end.mjs"
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"agentmemory": {
|
|
3
|
+
"enabled": true,
|
|
4
|
+
"PreInvocation": [
|
|
5
|
+
{
|
|
6
|
+
"type": "command",
|
|
7
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/antigravity-bridge.mjs PreInvocation",
|
|
8
|
+
"timeout": 10
|
|
9
|
+
}
|
|
10
|
+
],
|
|
11
|
+
"PreToolUse": [
|
|
12
|
+
{
|
|
13
|
+
"matcher": "view_file|view_code_item|read_file|edit_file|replace_file_content|write_to_file|create_file|grep_search|codebase_search|find_by_name|list_dir",
|
|
14
|
+
"hooks": [
|
|
15
|
+
{
|
|
16
|
+
"type": "command",
|
|
17
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/antigravity-bridge.mjs PreToolUse",
|
|
18
|
+
"timeout": 10
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"PostToolUse": [
|
|
24
|
+
{
|
|
25
|
+
"matcher": "",
|
|
26
|
+
"hooks": [
|
|
27
|
+
{
|
|
28
|
+
"type": "command",
|
|
29
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/antigravity-bridge.mjs PostToolUse",
|
|
30
|
+
"timeout": 10
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"Stop": [
|
|
36
|
+
{
|
|
37
|
+
"type": "command",
|
|
38
|
+
"command": "node ${CLAUDE_PLUGIN_ROOT}/scripts/antigravity-bridge.mjs Stop",
|
|
39
|
+
"timeout": 10
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -4,68 +4,68 @@
|
|
|
4
4
|
"sessionStart": [
|
|
5
5
|
{
|
|
6
6
|
"type": "command",
|
|
7
|
-
"command": "node ${COPILOT_PLUGIN_ROOT}/scripts/session-start.mjs"
|
|
7
|
+
"command": "node \"${COPILOT_PLUGIN_ROOT}/scripts/session-start.mjs\""
|
|
8
8
|
}
|
|
9
9
|
],
|
|
10
10
|
"userPromptSubmitted": [
|
|
11
11
|
{
|
|
12
12
|
"type": "command",
|
|
13
|
-
"command": "node ${COPILOT_PLUGIN_ROOT}/scripts/prompt-submit.mjs"
|
|
13
|
+
"command": "node \"${COPILOT_PLUGIN_ROOT}/scripts/prompt-submit.mjs\""
|
|
14
14
|
}
|
|
15
15
|
],
|
|
16
16
|
"preToolUse": [
|
|
17
17
|
{
|
|
18
18
|
"type": "command",
|
|
19
19
|
"matcher": "edit|write|create|read|view|glob|grep",
|
|
20
|
-
"command": "node ${COPILOT_PLUGIN_ROOT}/scripts/pre-tool-use.mjs"
|
|
20
|
+
"command": "node \"${COPILOT_PLUGIN_ROOT}/scripts/pre-tool-use.mjs\""
|
|
21
21
|
}
|
|
22
22
|
],
|
|
23
23
|
"postToolUse": [
|
|
24
24
|
{
|
|
25
25
|
"type": "command",
|
|
26
|
-
"command": "node ${COPILOT_PLUGIN_ROOT}/scripts/post-tool-use.mjs"
|
|
26
|
+
"command": "node \"${COPILOT_PLUGIN_ROOT}/scripts/post-tool-use.mjs\""
|
|
27
27
|
}
|
|
28
28
|
],
|
|
29
29
|
"postToolUseFailure": [
|
|
30
30
|
{
|
|
31
31
|
"type": "command",
|
|
32
|
-
"command": "node ${COPILOT_PLUGIN_ROOT}/scripts/post-tool-failure.mjs"
|
|
32
|
+
"command": "node \"${COPILOT_PLUGIN_ROOT}/scripts/post-tool-failure.mjs\""
|
|
33
33
|
}
|
|
34
34
|
],
|
|
35
35
|
"preCompact": [
|
|
36
36
|
{
|
|
37
37
|
"type": "command",
|
|
38
|
-
"command": "node ${COPILOT_PLUGIN_ROOT}/scripts/pre-compact.mjs"
|
|
38
|
+
"command": "node \"${COPILOT_PLUGIN_ROOT}/scripts/pre-compact.mjs\""
|
|
39
39
|
}
|
|
40
40
|
],
|
|
41
41
|
"agentStop": [
|
|
42
42
|
{
|
|
43
43
|
"type": "command",
|
|
44
|
-
"command": "node ${COPILOT_PLUGIN_ROOT}/scripts/stop.mjs"
|
|
44
|
+
"command": "node \"${COPILOT_PLUGIN_ROOT}/scripts/stop.mjs\""
|
|
45
45
|
}
|
|
46
46
|
],
|
|
47
47
|
"sessionEnd": [
|
|
48
48
|
{
|
|
49
49
|
"type": "command",
|
|
50
|
-
"command": "node ${COPILOT_PLUGIN_ROOT}/scripts/session-end.mjs"
|
|
50
|
+
"command": "node \"${COPILOT_PLUGIN_ROOT}/scripts/session-end.mjs\""
|
|
51
51
|
}
|
|
52
52
|
],
|
|
53
53
|
"subagentStart": [
|
|
54
54
|
{
|
|
55
55
|
"type": "command",
|
|
56
|
-
"command": "node ${COPILOT_PLUGIN_ROOT}/scripts/subagent-start.mjs"
|
|
56
|
+
"command": "node \"${COPILOT_PLUGIN_ROOT}/scripts/subagent-start.mjs\""
|
|
57
57
|
}
|
|
58
58
|
],
|
|
59
59
|
"subagentStop": [
|
|
60
60
|
{
|
|
61
61
|
"type": "command",
|
|
62
|
-
"command": "node ${COPILOT_PLUGIN_ROOT}/scripts/subagent-stop.mjs"
|
|
62
|
+
"command": "node \"${COPILOT_PLUGIN_ROOT}/scripts/subagent-stop.mjs\""
|
|
63
63
|
}
|
|
64
64
|
],
|
|
65
65
|
"notification": [
|
|
66
66
|
{
|
|
67
67
|
"type": "command",
|
|
68
|
-
"command": "node ${COPILOT_PLUGIN_ROOT}/scripts/notification.mjs"
|
|
68
|
+
"command": "node \"${COPILOT_PLUGIN_ROOT}/scripts/notification.mjs\""
|
|
69
69
|
}
|
|
70
70
|
]
|
|
71
71
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"SessionStart": [
|
|
4
|
+
{
|
|
5
|
+
"hooks": [
|
|
6
|
+
{
|
|
7
|
+
"type": "command",
|
|
8
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/session-start.mjs\""
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"UserPromptSubmit": [
|
|
14
|
+
{
|
|
15
|
+
"hooks": [
|
|
16
|
+
{
|
|
17
|
+
"type": "command",
|
|
18
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/prompt-submit.mjs\""
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"PreToolUse": [
|
|
24
|
+
{
|
|
25
|
+
"matcher": "^(exec|edit|write|read|apply_patch|grep|glob)$",
|
|
26
|
+
"hooks": [
|
|
27
|
+
{
|
|
28
|
+
"type": "command",
|
|
29
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/pre-tool-use.mjs\""
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"PostToolUse": [
|
|
35
|
+
{
|
|
36
|
+
"matcher": "",
|
|
37
|
+
"hooks": [
|
|
38
|
+
{
|
|
39
|
+
"type": "command",
|
|
40
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/post-tool-use.mjs\""
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"Stop": [
|
|
46
|
+
{
|
|
47
|
+
"matcher": "",
|
|
48
|
+
"hooks": [
|
|
49
|
+
{
|
|
50
|
+
"type": "command",
|
|
51
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/stop.mjs\""
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"SessionEnd": [
|
|
57
|
+
{
|
|
58
|
+
"hooks": [
|
|
59
|
+
{
|
|
60
|
+
"type": "command",
|
|
61
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/session-end.mjs\""
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"SessionStart": [
|
|
4
|
+
{
|
|
5
|
+
"hooks": [
|
|
6
|
+
{
|
|
7
|
+
"type": "command",
|
|
8
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/session-start.mjs\""
|
|
9
|
+
}
|
|
10
|
+
]
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"UserPromptSubmit": [
|
|
14
|
+
{
|
|
15
|
+
"hooks": [
|
|
16
|
+
{
|
|
17
|
+
"type": "command",
|
|
18
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/prompt-submit.mjs\""
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"PreToolUse": [
|
|
24
|
+
{
|
|
25
|
+
"matcher": "Edit|Create|Read|Glob|Grep",
|
|
26
|
+
"hooks": [
|
|
27
|
+
{
|
|
28
|
+
"type": "command",
|
|
29
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/pre-tool-use.mjs\""
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"PostToolUse": [
|
|
35
|
+
{
|
|
36
|
+
"hooks": [
|
|
37
|
+
{
|
|
38
|
+
"type": "command",
|
|
39
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/post-tool-use.mjs\""
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"SessionEnd": [
|
|
45
|
+
{
|
|
46
|
+
"hooks": [
|
|
47
|
+
{
|
|
48
|
+
"type": "command",
|
|
49
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/scripts/session-end.mjs\""
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
}
|