@agentmemory/agentmemory 0.9.27 → 0.9.29

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.
Files changed (156) hide show
  1. package/.env.example +15 -6
  2. package/AGENTS.md +7 -7
  3. package/README.md +292 -164
  4. package/dist/.env.example +15 -6
  5. package/dist/cli.d.mts.map +1 -1
  6. package/dist/cli.mjs +427 -177
  7. package/dist/cli.mjs.map +1 -1
  8. package/dist/{connect-bmZ5eqYN.mjs → connect-Qaeq15TQ.mjs} +717 -65
  9. package/dist/connect-Qaeq15TQ.mjs.map +1 -0
  10. package/dist/docker-compose.yml +2 -2
  11. package/dist/hooks/antigravity-bridge.d.mts +8 -0
  12. package/dist/hooks/antigravity-bridge.d.mts.map +1 -0
  13. package/dist/hooks/antigravity-bridge.mjs +114 -0
  14. package/dist/hooks/antigravity-bridge.mjs.map +1 -0
  15. package/dist/hooks/notification.mjs +21 -5
  16. package/dist/hooks/notification.mjs.map +1 -1
  17. package/dist/hooks/post-commit.mjs +15 -2
  18. package/dist/hooks/post-commit.mjs.map +1 -1
  19. package/dist/hooks/post-tool-failure.mjs +16 -4
  20. package/dist/hooks/post-tool-failure.mjs.map +1 -1
  21. package/dist/hooks/post-tool-use.mjs +16 -4
  22. package/dist/hooks/post-tool-use.mjs.map +1 -1
  23. package/dist/hooks/pre-compact.mjs +14 -3
  24. package/dist/hooks/pre-compact.mjs.map +1 -1
  25. package/dist/hooks/pre-tool-use.mjs +3 -2
  26. package/dist/hooks/pre-tool-use.mjs.map +1 -1
  27. package/dist/hooks/prompt-submit.mjs +16 -4
  28. package/dist/hooks/prompt-submit.mjs.map +1 -1
  29. package/dist/hooks/session-end.mjs +84 -19
  30. package/dist/hooks/session-end.mjs.map +1 -1
  31. package/dist/hooks/session-start.mjs +24 -5
  32. package/dist/hooks/session-start.mjs.map +1 -1
  33. package/dist/hooks/stop.mjs +3 -8
  34. package/dist/hooks/stop.mjs.map +1 -1
  35. package/dist/hooks/subagent-start.mjs +16 -4
  36. package/dist/hooks/subagent-start.mjs.map +1 -1
  37. package/dist/hooks/subagent-stop.mjs +16 -4
  38. package/dist/hooks/subagent-stop.mjs.map +1 -1
  39. package/dist/hooks/task-completed.mjs +16 -4
  40. package/dist/hooks/task-completed.mjs.map +1 -1
  41. package/dist/{image-refs-B5Zf_Djo.mjs → image-refs-BKLmp_sD.mjs} +4 -22
  42. package/dist/image-refs-BKLmp_sD.mjs.map +1 -0
  43. package/dist/image-refs-CJgZmb9X.mjs +34 -0
  44. package/dist/image-refs-CJgZmb9X.mjs.map +1 -0
  45. package/dist/index.mjs +1681 -911
  46. package/dist/index.mjs.map +1 -1
  47. package/dist/{image-store-Gpo2mgM9.mjs → keyed-mutex-DTHtcZrt.mjs} +14 -11
  48. package/dist/keyed-mutex-DTHtcZrt.mjs.map +1 -0
  49. package/dist/{logger-yHTcEBAI.mjs → logger-BEB7pCI9.mjs} +1 -1
  50. package/dist/{logger-yHTcEBAI.mjs.map → logger-BEB7pCI9.mjs.map} +1 -1
  51. package/dist/schema-BFZhNTF7.mjs +197 -0
  52. package/dist/schema-BFZhNTF7.mjs.map +1 -0
  53. package/dist/{src-MOg2zKJs.mjs → src-G7yt8gGm.mjs} +1521 -854
  54. package/dist/src-G7yt8gGm.mjs.map +1 -0
  55. package/dist/{standalone-BORXC71-.mjs → standalone-BqNJDJ04.mjs} +30 -16
  56. package/dist/standalone-BqNJDJ04.mjs.map +1 -0
  57. package/dist/standalone.d.mts.map +1 -1
  58. package/dist/standalone.mjs +55 -15
  59. package/dist/standalone.mjs.map +1 -1
  60. package/dist/{tools-registry-D8XVVPbJ.mjs → tools-registry-BV_2bu7z.mjs} +55 -17
  61. package/dist/tools-registry-BV_2bu7z.mjs.map +1 -0
  62. package/dist/viewer/favicon.svg +35 -1
  63. package/dist/viewer/index.html +473 -83
  64. package/docker-compose.yml +2 -2
  65. package/integrations/pi/README.md +77 -0
  66. package/integrations/pi/index.ts +403 -0
  67. package/integrations/pi/package.json +32 -0
  68. package/integrations/pi/security.ts +35 -0
  69. package/package.json +6 -4
  70. package/plugin/.claude-plugin/plugin.json +2 -2
  71. package/plugin/.codex-plugin/plugin.json +2 -2
  72. package/plugin/.devin-plugin/plugin.json +32 -0
  73. package/plugin/cursor/hooks.json +41 -0
  74. package/plugin/cursor/mcp.json +12 -0
  75. package/plugin/hooks/hooks.antigravity.json +43 -0
  76. package/plugin/hooks/hooks.devin.json +67 -0
  77. package/plugin/hooks/hooks.droid.json +55 -0
  78. package/plugin/opencode/README.md +1 -1
  79. package/plugin/opencode/agentmemory-capture.ts +73 -13
  80. package/plugin/opencode/plugin.json +1 -1
  81. package/plugin/plugin.json +2 -2
  82. package/plugin/scripts/antigravity-bridge.d.mts +8 -0
  83. package/plugin/scripts/antigravity-bridge.d.mts.map +1 -0
  84. package/plugin/scripts/antigravity-bridge.mjs +114 -0
  85. package/plugin/scripts/antigravity-bridge.mjs.map +1 -0
  86. package/plugin/scripts/notification.mjs +21 -5
  87. package/plugin/scripts/notification.mjs.map +1 -1
  88. package/plugin/scripts/post-commit.mjs +15 -2
  89. package/plugin/scripts/post-commit.mjs.map +1 -1
  90. package/plugin/scripts/post-tool-failure.mjs +16 -4
  91. package/plugin/scripts/post-tool-failure.mjs.map +1 -1
  92. package/plugin/scripts/post-tool-use.mjs +16 -4
  93. package/plugin/scripts/post-tool-use.mjs.map +1 -1
  94. package/plugin/scripts/pre-compact.mjs +14 -3
  95. package/plugin/scripts/pre-compact.mjs.map +1 -1
  96. package/plugin/scripts/pre-tool-use.mjs +3 -2
  97. package/plugin/scripts/pre-tool-use.mjs.map +1 -1
  98. package/plugin/scripts/prompt-submit.mjs +16 -4
  99. package/plugin/scripts/prompt-submit.mjs.map +1 -1
  100. package/plugin/scripts/session-end.mjs +84 -19
  101. package/plugin/scripts/session-end.mjs.map +1 -1
  102. package/plugin/scripts/session-start.mjs +24 -5
  103. package/plugin/scripts/session-start.mjs.map +1 -1
  104. package/plugin/scripts/stop.mjs +3 -8
  105. package/plugin/scripts/stop.mjs.map +1 -1
  106. package/plugin/scripts/subagent-start.mjs +16 -4
  107. package/plugin/scripts/subagent-start.mjs.map +1 -1
  108. package/plugin/scripts/subagent-stop.mjs +16 -4
  109. package/plugin/scripts/subagent-stop.mjs.map +1 -1
  110. package/plugin/scripts/task-completed.mjs +16 -4
  111. package/plugin/scripts/task-completed.mjs.map +1 -1
  112. package/plugin/skills/_shared/TROUBLESHOOTING.md +38 -0
  113. package/plugin/skills/agentmemory-agents/REFERENCE.md +31 -0
  114. package/plugin/skills/agentmemory-agents/SKILL.md +34 -0
  115. package/plugin/skills/agentmemory-architecture/SKILL.md +33 -0
  116. package/plugin/skills/agentmemory-config/REFERENCE.md +45 -0
  117. package/plugin/skills/agentmemory-config/SKILL.md +37 -0
  118. package/plugin/skills/agentmemory-hooks/REFERENCE.md +20 -0
  119. package/plugin/skills/agentmemory-hooks/SKILL.md +39 -0
  120. package/plugin/skills/agentmemory-mcp-tools/REFERENCE.md +66 -0
  121. package/plugin/skills/agentmemory-mcp-tools/SKILL.md +39 -0
  122. package/plugin/skills/agentmemory-rest-api/REFERENCE.md +142 -0
  123. package/plugin/skills/agentmemory-rest-api/SKILL.md +43 -0
  124. package/plugin/skills/commit-context/EXAMPLES.md +71 -0
  125. package/plugin/skills/commit-context/SKILL.md +53 -8
  126. package/plugin/skills/commit-history/EXAMPLES.md +71 -0
  127. package/plugin/skills/commit-history/SKILL.md +51 -9
  128. package/plugin/skills/forget/EXAMPLES.md +75 -0
  129. package/plugin/skills/forget/SKILL.md +57 -14
  130. package/plugin/skills/handoff/EXAMPLES.md +56 -0
  131. package/plugin/skills/handoff/SKILL.md +56 -9
  132. package/plugin/skills/lesson/SKILL.md +64 -0
  133. package/plugin/skills/memory-discipline/SKILL.md +57 -0
  134. package/plugin/skills/recall/EXAMPLES.md +74 -0
  135. package/plugin/skills/recall/SKILL.md +53 -11
  136. package/plugin/skills/recap/EXAMPLES.md +60 -0
  137. package/plugin/skills/recap/SKILL.md +51 -13
  138. package/plugin/skills/remember/EXAMPLES.md +67 -0
  139. package/plugin/skills/remember/SKILL.md +58 -17
  140. package/plugin/skills/session-history/EXAMPLES.md +59 -0
  141. package/plugin/skills/session-history/SKILL.md +54 -11
  142. package/plugin/skills/write-agentmemory-skill/SKILL.md +40 -0
  143. package/dist/connect-bmZ5eqYN.mjs.map +0 -1
  144. package/dist/image-refs-B5Zf_Djo.mjs.map +0 -1
  145. package/dist/image-store-Gpo2mgM9.mjs.map +0 -1
  146. package/dist/rolldown-runtime-twds-ZHy.mjs +0 -14
  147. package/dist/schema-CNiCWzV9.mjs +0 -78
  148. package/dist/schema-CNiCWzV9.mjs.map +0 -1
  149. package/dist/src-MOg2zKJs.mjs.map +0 -1
  150. package/dist/standalone-BORXC71-.mjs.map +0 -1
  151. package/dist/tools-registry-D8XVVPbJ.mjs.map +0 -1
  152. package/dist/version-9DNrRyph.mjs +0 -6
  153. package/dist/version-9DNrRyph.mjs.map +0 -1
  154. package/plugin/scripts/diagnostics.d.mts +0 -17
  155. package/plugin/scripts/diagnostics.d.mts.map +0 -1
  156. package/plugin/scripts/diagnostics.mjs.map +0 -1
@@ -1,78 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- //#region src/state/schema.ts
3
- const KV = {
4
- sessions: "mem:sessions",
5
- observations: (sessionId) => `mem:obs:${sessionId}`,
6
- memories: "mem:memories",
7
- summaries: "mem:summaries",
8
- config: "mem:config",
9
- metrics: "mem:metrics",
10
- health: "mem:health",
11
- embeddings: (obsId) => `mem:emb:${obsId}`,
12
- bm25Index: "mem:index:bm25",
13
- relations: "mem:relations",
14
- profiles: "mem:profiles",
15
- claudeBridge: "mem:claude-bridge",
16
- graphNodes: "mem:graph:nodes",
17
- graphEdges: "mem:graph:edges",
18
- graphSnapshot: "mem:graph:snapshot",
19
- graphNameIndex: "mem:graph:name-index",
20
- graphEdgeKey: "mem:graph:edge-key",
21
- graphNodeDegree: "mem:graph:node-degree",
22
- semantic: "mem:semantic",
23
- procedural: "mem:procedural",
24
- teamShared: (teamId) => `mem:team:${teamId}:shared`,
25
- teamUsers: (teamId, userId) => `mem:team:${teamId}:users:${userId}`,
26
- teamProfile: (teamId) => `mem:team:${teamId}:profile`,
27
- audit: "mem:audit",
28
- actions: "mem:actions",
29
- actionEdges: "mem:action-edges",
30
- leases: "mem:leases",
31
- routines: "mem:routines",
32
- routineRuns: "mem:routine-runs",
33
- signals: "mem:signals",
34
- checkpoints: "mem:checkpoints",
35
- mesh: "mem:mesh",
36
- sketches: "mem:sketches",
37
- facets: "mem:facets",
38
- sentinels: "mem:sentinels",
39
- crystals: "mem:crystals",
40
- lessons: "mem:lessons",
41
- insights: "mem:insights",
42
- graphEdgeHistory: "mem:graph:edge-history",
43
- enrichedChunks: (sessionId) => `mem:enriched:${sessionId}`,
44
- latentEmbeddings: (obsId) => `mem:latent:${obsId}`,
45
- retentionScores: "mem:retention",
46
- accessLog: "mem:access",
47
- imageRefs: "mem:image-refs",
48
- imageEmbeddings: "mem:image-embeddings",
49
- slots: "mem:slots",
50
- globalSlots: "mem:slots:global",
51
- state: "mem:state",
52
- commits: "mem:commits",
53
- recentSearches: "mem:recent-searches"
54
- };
55
- const STREAM = {
56
- name: "mem-live",
57
- group: (sessionId) => sessionId,
58
- viewerGroup: "viewer"
59
- };
60
- function generateId(prefix) {
61
- return `${prefix}_${Date.now().toString(36)}_${crypto.randomUUID().replace(/-/g, "").slice(0, 12)}`;
62
- }
63
- function fingerprintId(prefix, content) {
64
- return `${prefix}_${createHash("sha256").update(content).digest("hex").slice(0, 16)}`;
65
- }
66
- function jaccardSimilarity(a, b) {
67
- const setA = new Set(a.split(/\s+/).filter((t) => t.length > 2));
68
- const setB = new Set(b.split(/\s+/).filter((t) => t.length > 2));
69
- if (setA.size === 0 && setB.size === 0) return 1;
70
- if (setA.size === 0 || setB.size === 0) return 0;
71
- let intersection = 0;
72
- for (const word of setA) if (setB.has(word)) intersection++;
73
- return intersection / (setA.size + setB.size - intersection);
74
- }
75
- //#endregion
76
- export { jaccardSimilarity as a, generateId as i, STREAM as n, fingerprintId as r, KV as t };
77
-
78
- //# sourceMappingURL=schema-CNiCWzV9.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-CNiCWzV9.mjs","names":[],"sources":["../src/state/schema.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\n\nexport const KV = {\n sessions: \"mem:sessions\",\n observations: (sessionId: string) => `mem:obs:${sessionId}`,\n memories: \"mem:memories\",\n summaries: \"mem:summaries\",\n config: \"mem:config\",\n metrics: \"mem:metrics\",\n health: \"mem:health\",\n embeddings: (obsId: string) => `mem:emb:${obsId}`,\n bm25Index: \"mem:index:bm25\",\n relations: \"mem:relations\",\n profiles: \"mem:profiles\",\n claudeBridge: \"mem:claude-bridge\",\n graphNodes: \"mem:graph:nodes\",\n graphEdges: \"mem:graph:edges\",\n // #814: precomputed snapshot of the top-degree subgraph and aggregate\n // type counts. Saves /graph/query and /graph/stats from a full\n // kv.list enumeration over 75K+ node corpora, which exceeds the iii\n // invocation timeout and surfaces as \"Invocation stopped\" 500s.\n // Single fixed key (\"current\") so writes are read-modify-write under\n // the same keyed mutex as graph-extract.\n graphSnapshot: \"mem:graph:snapshot\",\n // #814 v2: targeted-lookup indexes so graph-extract never enumerates\n // the full nodes/edges scope. Each entry is a single small kv.get,\n // bounded payload — works at 75K+ nodes where kv.list would block\n // the worker event loop (37MB WS frame parse blocks heartbeat,\n // worker is declared dead before any Promise.race timer can fire).\n // - graphNameIndex: key `${type}|${name}` -> nodeId. Replaces the\n // existingNodes.find() O(n) dedup scan inside mem::graph-extract.\n // - graphEdgeKey: key `${src}|${tgt}|${type}` -> edgeId. Same for\n // edge dedup.\n // - graphNodeDegree: key nodeId -> incident-edge count. Read /\n // incremented on edge writes to maintain the snapshot top-N\n // ranking without scanning all edges.\n graphNameIndex: \"mem:graph:name-index\",\n graphEdgeKey: \"mem:graph:edge-key\",\n graphNodeDegree: \"mem:graph:node-degree\",\n semantic: \"mem:semantic\",\n procedural: \"mem:procedural\",\n teamShared: (teamId: string) => `mem:team:${teamId}:shared`,\n teamUsers: (teamId: string, userId: string) =>\n `mem:team:${teamId}:users:${userId}`,\n teamProfile: (teamId: string) => `mem:team:${teamId}:profile`,\n audit: \"mem:audit\",\n actions: \"mem:actions\",\n actionEdges: \"mem:action-edges\",\n leases: \"mem:leases\",\n routines: \"mem:routines\",\n routineRuns: \"mem:routine-runs\",\n signals: \"mem:signals\",\n checkpoints: \"mem:checkpoints\",\n mesh: \"mem:mesh\",\n sketches: \"mem:sketches\",\n facets: \"mem:facets\",\n sentinels: \"mem:sentinels\",\n crystals: \"mem:crystals\",\n lessons: \"mem:lessons\",\n insights: \"mem:insights\",\n graphEdgeHistory: \"mem:graph:edge-history\",\n enrichedChunks: (sessionId: string) => `mem:enriched:${sessionId}`,\n latentEmbeddings: (obsId: string) => `mem:latent:${obsId}`,\n retentionScores: \"mem:retention\",\n accessLog: \"mem:access\",\n imageRefs: \"mem:image-refs\",\n imageEmbeddings: \"mem:image-embeddings\",\n slots: \"mem:slots\",\n globalSlots: \"mem:slots:global\",\n state: \"mem:state\",\n commits: \"mem:commits\",\n // #771: tracks the most recent smart-search call per session, used by\n // the followup-rate diagnostic. Key = sessionId. TTL-swept hourly.\n recentSearches: \"mem:recent-searches\",\n} as const;\n\nexport const STREAM = {\n name: \"mem-live\",\n group: (sessionId: string) => sessionId,\n viewerGroup: \"viewer\",\n} as const;\n\nexport function generateId(prefix: string): string {\n const ts = Date.now().toString(36);\n const rand = crypto.randomUUID().replace(/-/g, \"\").slice(0, 12);\n return `${prefix}_${ts}_${rand}`;\n}\n\nexport function fingerprintId(prefix: string, content: string): string {\n const hash = createHash(\"sha256\").update(content).digest(\"hex\");\n return `${prefix}_${hash.slice(0, 16)}`;\n}\n\nexport function jaccardSimilarity(a: string, b: string): number {\n const setA = new Set(a.split(/\\s+/).filter((t) => t.length > 2));\n const setB = new Set(b.split(/\\s+/).filter((t) => t.length > 2));\n if (setA.size === 0 && setB.size === 0) return 1;\n if (setA.size === 0 || setB.size === 0) return 0;\n let intersection = 0;\n for (const word of setA) {\n if (setB.has(word)) intersection++;\n }\n return intersection / (setA.size + setB.size - intersection);\n}\n"],"mappings":";;AAEA,MAAa,KAAK;CAChB,UAAU;CACV,eAAe,cAAsB,WAAW;CAChD,UAAU;CACV,WAAW;CACX,QAAQ;CACR,SAAS;CACT,QAAQ;CACR,aAAa,UAAkB,WAAW;CAC1C,WAAW;CACX,WAAW;CACX,UAAU;CACV,cAAc;CACd,YAAY;CACZ,YAAY;CAOZ,eAAe;CAaf,gBAAgB;CAChB,cAAc;CACd,iBAAiB;CACjB,UAAU;CACV,YAAY;CACZ,aAAa,WAAmB,YAAY,OAAO;CACnD,YAAY,QAAgB,WAC1B,YAAY,OAAO,SAAS;CAC9B,cAAc,WAAmB,YAAY,OAAO;CACpD,OAAO;CACP,SAAS;CACT,aAAa;CACb,QAAQ;CACR,UAAU;CACV,aAAa;CACb,SAAS;CACT,aAAa;CACb,MAAM;CACN,UAAU;CACV,QAAQ;CACR,WAAW;CACX,UAAU;CACV,SAAS;CACT,UAAU;CACV,kBAAkB;CAClB,iBAAiB,cAAsB,gBAAgB;CACvD,mBAAmB,UAAkB,cAAc;CACnD,iBAAiB;CACjB,WAAW;CACX,WAAW;CACX,iBAAiB;CACjB,OAAO;CACP,aAAa;CACb,OAAO;CACP,SAAS;CAGT,gBAAgB;CACjB;AAED,MAAa,SAAS;CACpB,MAAM;CACN,QAAQ,cAAsB;CAC9B,aAAa;CACd;AAED,SAAgB,WAAW,QAAwB;AAGjD,QAAO,GAAG,OAAO,GAFN,KAAK,KAAK,CAAC,SAAS,GAET,CAAC,GADV,OAAO,YAAY,CAAC,QAAQ,MAAM,GAAG,CAAC,MAAM,GAAG,GAC9B;;AAGhC,SAAgB,cAAc,QAAgB,SAAyB;AAErE,QAAO,GAAG,OAAO,GADJ,WAAW,SAAS,CAAC,OAAO,QAAQ,CAAC,OAAO,MACjC,CAAC,MAAM,GAAG,GAAG;;AAGvC,SAAgB,kBAAkB,GAAW,GAAmB;CAC9D,MAAM,OAAO,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC,QAAQ,MAAM,EAAE,SAAS,EAAE,CAAC;CAChE,MAAM,OAAO,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC,QAAQ,MAAM,EAAE,SAAS,EAAE,CAAC;AAChE,KAAI,KAAK,SAAS,KAAK,KAAK,SAAS,EAAG,QAAO;AAC/C,KAAI,KAAK,SAAS,KAAK,KAAK,SAAS,EAAG,QAAO;CAC/C,IAAI,eAAe;AACnB,MAAK,MAAM,QAAQ,KACjB,KAAI,KAAK,IAAI,KAAK,CAAE;AAEtB,QAAO,gBAAgB,KAAK,OAAO,KAAK,OAAO"}