@contractspec/lib.ai-agent 1.57.0 → 1.58.0

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 (232) hide show
  1. package/dist/agent/agent-factory.d.ts +67 -71
  2. package/dist/agent/agent-factory.d.ts.map +1 -1
  3. package/dist/agent/agent-factory.js +658 -100
  4. package/dist/agent/agent.test.d.ts +2 -0
  5. package/dist/agent/agent.test.d.ts.map +1 -0
  6. package/dist/agent/contract-spec-agent.d.ts +48 -52
  7. package/dist/agent/contract-spec-agent.d.ts.map +1 -1
  8. package/dist/agent/contract-spec-agent.js +605 -146
  9. package/dist/agent/index.d.ts +4 -4
  10. package/dist/agent/index.d.ts.map +1 -0
  11. package/dist/agent/index.js +2102 -4
  12. package/dist/agent/json-runner.d.ts +15 -19
  13. package/dist/agent/json-runner.d.ts.map +1 -1
  14. package/dist/agent/json-runner.js +672 -57
  15. package/dist/agent/json-runner.test.d.ts +2 -0
  16. package/dist/agent/json-runner.test.d.ts.map +1 -0
  17. package/dist/agent/unified-agent.d.ts +132 -109
  18. package/dist/agent/unified-agent.d.ts.map +1 -1
  19. package/dist/agent/unified-agent.js +2011 -293
  20. package/dist/approval/index.d.ts +3 -2
  21. package/dist/approval/index.d.ts.map +1 -0
  22. package/dist/approval/index.js +128 -2
  23. package/dist/approval/workflow.d.ts +106 -110
  24. package/dist/approval/workflow.d.ts.map +1 -1
  25. package/dist/approval/workflow.js +126 -157
  26. package/dist/exporters/claude-agent-exporter.d.ts +50 -48
  27. package/dist/exporters/claude-agent-exporter.d.ts.map +1 -1
  28. package/dist/exporters/claude-agent-exporter.js +258 -203
  29. package/dist/exporters/index.d.ts +28 -4
  30. package/dist/exporters/index.d.ts.map +1 -0
  31. package/dist/exporters/index.js +737 -3
  32. package/dist/exporters/opencode-exporter.d.ts +47 -45
  33. package/dist/exporters/opencode-exporter.d.ts.map +1 -1
  34. package/dist/exporters/opencode-exporter.js +507 -191
  35. package/dist/exporters/types.d.ts +171 -169
  36. package/dist/exporters/types.d.ts.map +1 -1
  37. package/dist/exporters/types.js +1 -0
  38. package/dist/index.d.ts +15 -39
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +3337 -32
  41. package/dist/interop/index.d.ts +48 -4
  42. package/dist/interop/index.d.ts.map +1 -0
  43. package/dist/interop/index.js +709 -3
  44. package/dist/interop/spec-consumer.d.ts +57 -53
  45. package/dist/interop/spec-consumer.d.ts.map +1 -1
  46. package/dist/interop/spec-consumer.js +302 -282
  47. package/dist/interop/tool-consumer.d.ts +57 -53
  48. package/dist/interop/tool-consumer.d.ts.map +1 -1
  49. package/dist/interop/tool-consumer.js +412 -213
  50. package/dist/interop/types.d.ts +173 -171
  51. package/dist/interop/types.d.ts.map +1 -1
  52. package/dist/interop/types.js +1 -0
  53. package/dist/knowledge/index.d.ts +2 -2
  54. package/dist/knowledge/index.d.ts.map +1 -0
  55. package/dist/knowledge/index.js +66 -2
  56. package/dist/knowledge/injector.d.ts +16 -20
  57. package/dist/knowledge/injector.d.ts.map +1 -1
  58. package/dist/knowledge/injector.js +56 -47
  59. package/dist/memory/in-memory.d.ts +15 -19
  60. package/dist/memory/in-memory.d.ts.map +1 -1
  61. package/dist/memory/in-memory.js +152 -46
  62. package/dist/memory/index.d.ts +3 -3
  63. package/dist/memory/index.d.ts.map +1 -0
  64. package/dist/memory/index.js +155 -3
  65. package/dist/memory/manager.d.ts +32 -36
  66. package/dist/memory/manager.d.ts.map +1 -1
  67. package/dist/memory/manager.js +96 -70
  68. package/dist/memory/memory.test.d.ts +2 -0
  69. package/dist/memory/memory.test.d.ts.map +1 -0
  70. package/dist/node/agent/agent-factory.js +661 -0
  71. package/dist/node/agent/contract-spec-agent.js +607 -0
  72. package/dist/node/agent/index.js +2103 -0
  73. package/dist/node/agent/json-runner.js +684 -0
  74. package/dist/node/agent/unified-agent.js +2019 -0
  75. package/dist/node/approval/index.js +129 -0
  76. package/dist/node/approval/workflow.js +129 -0
  77. package/dist/node/exporters/claude-agent-exporter.js +265 -0
  78. package/dist/node/exporters/index.js +738 -0
  79. package/dist/node/exporters/opencode-exporter.js +516 -0
  80. package/dist/node/exporters/types.js +0 -0
  81. package/dist/node/index.js +3337 -0
  82. package/dist/node/interop/index.js +710 -0
  83. package/dist/node/interop/spec-consumer.js +307 -0
  84. package/dist/node/interop/tool-consumer.js +419 -0
  85. package/dist/node/interop/types.js +0 -0
  86. package/dist/node/knowledge/index.js +67 -0
  87. package/dist/node/knowledge/injector.js +67 -0
  88. package/dist/node/memory/in-memory.js +154 -0
  89. package/dist/node/memory/index.js +156 -0
  90. package/dist/node/memory/manager.js +105 -0
  91. package/dist/node/providers/claude-agent-sdk/adapter.js +624 -0
  92. package/dist/node/providers/claude-agent-sdk/index.js +673 -0
  93. package/dist/node/providers/claude-agent-sdk/session-bridge.js +149 -0
  94. package/dist/node/providers/claude-agent-sdk/tool-bridge.js +118 -0
  95. package/dist/node/providers/index.js +1261 -0
  96. package/dist/node/providers/opencode-sdk/adapter.js +669 -0
  97. package/dist/node/providers/opencode-sdk/agent-bridge.js +299 -0
  98. package/dist/node/providers/opencode-sdk/index.js +703 -0
  99. package/dist/node/providers/opencode-sdk/tool-bridge.js +141 -0
  100. package/dist/node/providers/registry.js +89 -0
  101. package/dist/node/providers/types.js +56 -0
  102. package/dist/node/schema/index.js +195 -0
  103. package/dist/node/schema/json-schema-to-zod.js +152 -0
  104. package/dist/node/schema/schema-output.js +190 -0
  105. package/dist/node/session/index.js +90 -0
  106. package/dist/node/session/store.js +90 -0
  107. package/dist/node/spec/index.js +85 -0
  108. package/dist/node/spec/registry.js +56 -0
  109. package/dist/node/spec/spec.js +44 -0
  110. package/dist/node/telemetry/adapter.js +85 -0
  111. package/dist/node/telemetry/index.js +86 -0
  112. package/dist/node/tools/index.js +345 -0
  113. package/dist/node/tools/knowledge-tool.js +74 -0
  114. package/dist/node/tools/mcp-client.js +47 -0
  115. package/dist/node/tools/mcp-server.js +205 -0
  116. package/dist/node/tools/tool-adapter.js +197 -0
  117. package/dist/node/types.js +0 -0
  118. package/dist/providers/claude-agent-sdk/adapter.d.ts +60 -52
  119. package/dist/providers/claude-agent-sdk/adapter.d.ts.map +1 -1
  120. package/dist/providers/claude-agent-sdk/adapter.js +622 -304
  121. package/dist/providers/claude-agent-sdk/index.d.ts +22 -4
  122. package/dist/providers/claude-agent-sdk/index.d.ts.map +1 -0
  123. package/dist/providers/claude-agent-sdk/index.js +672 -4
  124. package/dist/providers/claude-agent-sdk/session-bridge.d.ts +43 -40
  125. package/dist/providers/claude-agent-sdk/session-bridge.d.ts.map +1 -1
  126. package/dist/providers/claude-agent-sdk/session-bridge.js +121 -130
  127. package/dist/providers/claude-agent-sdk/tool-bridge.d.ts +63 -60
  128. package/dist/providers/claude-agent-sdk/tool-bridge.d.ts.map +1 -1
  129. package/dist/providers/claude-agent-sdk/tool-bridge.js +104 -108
  130. package/dist/providers/index.d.ts +28 -7
  131. package/dist/providers/index.d.ts.map +1 -0
  132. package/dist/providers/index.js +1261 -8
  133. package/dist/providers/opencode-sdk/adapter.d.ts +56 -48
  134. package/dist/providers/opencode-sdk/adapter.d.ts.map +1 -1
  135. package/dist/providers/opencode-sdk/adapter.js +667 -274
  136. package/dist/providers/opencode-sdk/agent-bridge.d.ts +62 -57
  137. package/dist/providers/opencode-sdk/agent-bridge.d.ts.map +1 -1
  138. package/dist/providers/opencode-sdk/agent-bridge.js +289 -155
  139. package/dist/providers/opencode-sdk/index.d.ts +22 -4
  140. package/dist/providers/opencode-sdk/index.d.ts.map +1 -0
  141. package/dist/providers/opencode-sdk/index.js +702 -4
  142. package/dist/providers/opencode-sdk/tool-bridge.d.ts +41 -42
  143. package/dist/providers/opencode-sdk/tool-bridge.d.ts.map +1 -1
  144. package/dist/providers/opencode-sdk/tool-bridge.js +121 -107
  145. package/dist/providers/registry.d.ts +10 -11
  146. package/dist/providers/registry.d.ts.map +1 -1
  147. package/dist/providers/registry.js +86 -49
  148. package/dist/providers/types.d.ts +169 -166
  149. package/dist/providers/types.d.ts.map +1 -1
  150. package/dist/providers/types.js +54 -42
  151. package/dist/schema/index.d.ts +3 -3
  152. package/dist/schema/index.d.ts.map +1 -0
  153. package/dist/schema/index.js +194 -3
  154. package/dist/schema/json-schema-to-zod.d.ts +23 -26
  155. package/dist/schema/json-schema-to-zod.d.ts.map +1 -1
  156. package/dist/schema/json-schema-to-zod.js +138 -110
  157. package/dist/schema/schema-output.d.ts +29 -32
  158. package/dist/schema/schema-output.d.ts.map +1 -1
  159. package/dist/schema/schema-output.js +178 -53
  160. package/dist/session/index.d.ts +2 -2
  161. package/dist/session/index.d.ts.map +1 -0
  162. package/dist/session/index.js +89 -2
  163. package/dist/session/store.d.ts +51 -55
  164. package/dist/session/store.d.ts.map +1 -1
  165. package/dist/session/store.js +85 -74
  166. package/dist/spec/index.d.ts +3 -3
  167. package/dist/spec/index.d.ts.map +1 -0
  168. package/dist/spec/index.js +84 -3
  169. package/dist/spec/registry.d.ts +32 -36
  170. package/dist/spec/registry.d.ts.map +1 -1
  171. package/dist/spec/registry.js +51 -60
  172. package/dist/spec/spec.d.ts +80 -84
  173. package/dist/spec/spec.d.ts.map +1 -1
  174. package/dist/spec/spec.js +40 -26
  175. package/dist/telemetry/adapter.d.ts +33 -37
  176. package/dist/telemetry/adapter.d.ts.map +1 -1
  177. package/dist/telemetry/adapter.js +78 -96
  178. package/dist/telemetry/index.d.ts +2 -2
  179. package/dist/telemetry/index.d.ts.map +1 -0
  180. package/dist/telemetry/index.js +85 -2
  181. package/dist/tools/index.d.ts +5 -5
  182. package/dist/tools/index.d.ts.map +1 -0
  183. package/dist/tools/index.js +344 -5
  184. package/dist/tools/knowledge-tool.d.ts +4 -8
  185. package/dist/tools/knowledge-tool.d.ts.map +1 -1
  186. package/dist/tools/knowledge-tool.js +68 -48
  187. package/dist/tools/mcp-client.d.ts +17 -21
  188. package/dist/tools/mcp-client.d.ts.map +1 -1
  189. package/dist/tools/mcp-client.js +42 -53
  190. package/dist/tools/mcp-server.d.ts +14 -18
  191. package/dist/tools/mcp-server.d.ts.map +1 -1
  192. package/dist/tools/mcp-server.js +200 -64
  193. package/dist/tools/tool-adapter.d.ts +7 -11
  194. package/dist/tools/tool-adapter.d.ts.map +1 -1
  195. package/dist/tools/tool-adapter.js +187 -70
  196. package/dist/tools/tools.test.d.ts +2 -0
  197. package/dist/tools/tools.test.d.ts.map +1 -0
  198. package/dist/types.d.ts +108 -111
  199. package/dist/types.d.ts.map +1 -1
  200. package/dist/types.js +1 -0
  201. package/package.json +448 -90
  202. package/dist/_virtual/_rolldown/runtime.js +0 -8
  203. package/dist/agent/agent-factory.js.map +0 -1
  204. package/dist/agent/contract-spec-agent.js.map +0 -1
  205. package/dist/agent/json-runner.js.map +0 -1
  206. package/dist/agent/unified-agent.js.map +0 -1
  207. package/dist/approval/workflow.js.map +0 -1
  208. package/dist/exporters/claude-agent-exporter.js.map +0 -1
  209. package/dist/exporters/opencode-exporter.js.map +0 -1
  210. package/dist/interop/spec-consumer.js.map +0 -1
  211. package/dist/interop/tool-consumer.js.map +0 -1
  212. package/dist/knowledge/injector.js.map +0 -1
  213. package/dist/memory/in-memory.js.map +0 -1
  214. package/dist/memory/manager.js.map +0 -1
  215. package/dist/providers/claude-agent-sdk/adapter.js.map +0 -1
  216. package/dist/providers/claude-agent-sdk/session-bridge.js.map +0 -1
  217. package/dist/providers/claude-agent-sdk/tool-bridge.js.map +0 -1
  218. package/dist/providers/opencode-sdk/adapter.js.map +0 -1
  219. package/dist/providers/opencode-sdk/agent-bridge.js.map +0 -1
  220. package/dist/providers/opencode-sdk/tool-bridge.js.map +0 -1
  221. package/dist/providers/registry.js.map +0 -1
  222. package/dist/providers/types.js.map +0 -1
  223. package/dist/schema/json-schema-to-zod.js.map +0 -1
  224. package/dist/schema/schema-output.js.map +0 -1
  225. package/dist/session/store.js.map +0 -1
  226. package/dist/spec/registry.js.map +0 -1
  227. package/dist/spec/spec.js.map +0 -1
  228. package/dist/telemetry/adapter.js.map +0 -1
  229. package/dist/tools/knowledge-tool.js.map +0 -1
  230. package/dist/tools/mcp-client.js.map +0 -1
  231. package/dist/tools/mcp-server.js.map +0 -1
  232. package/dist/tools/tool-adapter.js.map +0 -1
@@ -1,38 +1,46 @@
1
- //#region src/knowledge/injector.ts
2
- /**
3
- * Inject static knowledge into agent instructions.
4
- *
5
- * This function handles the "required" knowledge that should be
6
- * injected into the system prompt at agent initialization time.
7
- * Optional knowledge is handled by the knowledge query tool.
8
- *
9
- * @param instructions - Base agent instructions
10
- * @param knowledgeRefs - Knowledge references from the agent spec
11
- * @param retriever - Optional knowledge retriever
12
- * @returns Instructions with injected knowledge
13
- */
1
+ // @bun
2
+ var __defProp = Object.defineProperty;
3
+ var __export = (target, all) => {
4
+ for (var name in all)
5
+ __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true,
8
+ configurable: true,
9
+ set: (newValue) => all[name] = () => newValue
10
+ });
11
+ };
12
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
13
+ var __require = import.meta.require;
14
+
15
+ // src/knowledge/injector.ts
14
16
  async function injectStaticKnowledge(instructions, knowledgeRefs, retriever) {
15
- if (!retriever) return instructions;
16
- const requiredRefs = knowledgeRefs.filter((ref) => ref.required);
17
- if (requiredRefs.length === 0) return instructions;
18
- const blocks = [];
19
- for (const ref of requiredRefs) {
20
- if (!retriever.supportsSpace(ref.key)) {
21
- console.warn(`Required knowledge space "${ref.key}" is not available`);
22
- continue;
23
- }
24
- try {
25
- const content = await retriever.getStatic(ref.key);
26
- if (content) {
27
- const header = ref.instructions ? `## ${ref.key}\n${ref.instructions}` : `## ${ref.key}`;
28
- blocks.push(`${header}\n\n${content}`);
29
- }
30
- } catch (error) {
31
- console.warn(`Failed to load required knowledge "${ref.key}":`, error);
32
- }
33
- }
34
- if (blocks.length === 0) return instructions;
35
- return `${instructions}
17
+ if (!retriever)
18
+ return instructions;
19
+ const requiredRefs = knowledgeRefs.filter((ref) => ref.required);
20
+ if (requiredRefs.length === 0)
21
+ return instructions;
22
+ const blocks = [];
23
+ for (const ref of requiredRefs) {
24
+ if (!retriever.supportsSpace(ref.key)) {
25
+ console.warn(`Required knowledge space "${ref.key}" is not available`);
26
+ continue;
27
+ }
28
+ try {
29
+ const content = await retriever.getStatic(ref.key);
30
+ if (content) {
31
+ const header = ref.instructions ? `## ${ref.key}
32
+ ${ref.instructions}` : `## ${ref.key}`;
33
+ blocks.push(`${header}
34
+
35
+ ${content}`);
36
+ }
37
+ } catch (error) {
38
+ console.warn(`Failed to load required knowledge "${ref.key}":`, error);
39
+ }
40
+ }
41
+ if (blocks.length === 0)
42
+ return instructions;
43
+ return `${instructions}
36
44
 
37
45
  ---
38
46
 
@@ -40,19 +48,20 @@ async function injectStaticKnowledge(instructions, knowledgeRefs, retriever) {
40
48
 
41
49
  The following information is provided for your reference. Use it to inform your responses.
42
50
 
43
- ${blocks.join("\n\n---\n\n")}`;
51
+ ${blocks.join(`
52
+
53
+ ---
54
+
55
+ `)}`;
44
56
  }
45
- /**
46
- * Create a knowledge injector instance for reuse.
47
- */
48
57
  function createKnowledgeInjector(retriever) {
49
- return {
50
- inject: (instructions, knowledgeRefs) => injectStaticKnowledge(instructions, knowledgeRefs, retriever),
51
- hasSpace: (spaceKey) => retriever?.supportsSpace(spaceKey) ?? false,
52
- listSpaces: () => retriever?.listSpaces() ?? []
53
- };
58
+ return {
59
+ inject: (instructions, knowledgeRefs) => injectStaticKnowledge(instructions, knowledgeRefs, retriever),
60
+ hasSpace: (spaceKey) => retriever?.supportsSpace(spaceKey) ?? false,
61
+ listSpaces: () => retriever?.listSpaces() ?? []
62
+ };
54
63
  }
55
-
56
- //#endregion
57
- export { createKnowledgeInjector, injectStaticKnowledge };
58
- //# sourceMappingURL=injector.js.map
64
+ export {
65
+ injectStaticKnowledge,
66
+ createKnowledgeInjector
67
+ };
@@ -1,22 +1,18 @@
1
- import { AgentSessionState } from "../types.js";
2
- import { AgentMemorySnapshot, AgentSessionMemory, BaseAgentMemoryManager } from "./manager.js";
3
-
4
- //#region src/memory/in-memory.d.ts
5
- interface InMemoryAgentMemoryOptions {
6
- ttlMinutes?: number;
7
- maxEntries?: number;
1
+ import type { AgentSessionState } from '../types';
2
+ import { BaseAgentMemoryManager, type AgentMemorySnapshot, type AgentSessionMemory } from './manager';
3
+ export interface InMemoryAgentMemoryOptions {
4
+ ttlMinutes?: number;
5
+ maxEntries?: number;
8
6
  }
9
- declare class InMemoryAgentMemory extends BaseAgentMemoryManager {
10
- private readonly ttlMs;
11
- private readonly maxEntries;
12
- private readonly store;
13
- constructor(options?: InMemoryAgentMemoryOptions);
14
- load(sessionId: string): Promise<AgentSessionMemory | null>;
15
- save(snapshot: AgentSessionMemory): Promise<void>;
16
- summarize(session: AgentSessionState): Promise<AgentMemorySnapshot>;
17
- private trim;
18
- private evictExpired;
7
+ export declare class InMemoryAgentMemory extends BaseAgentMemoryManager {
8
+ private readonly ttlMs;
9
+ private readonly maxEntries;
10
+ private readonly store;
11
+ constructor(options?: InMemoryAgentMemoryOptions);
12
+ load(sessionId: string): Promise<AgentSessionMemory | null>;
13
+ save(snapshot: AgentSessionMemory): Promise<void>;
14
+ summarize(session: AgentSessionState): Promise<AgentMemorySnapshot>;
15
+ private trim;
16
+ private evictExpired;
19
17
  }
20
- //#endregion
21
- export { InMemoryAgentMemory, InMemoryAgentMemoryOptions };
22
18
  //# sourceMappingURL=in-memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory.d.ts","names":[],"sources":["../../src/memory/in-memory.ts"],"mappings":";;;;UAaiB,0BAAA;EACf,UAAA;EACA,UAAA;AAAA;AAAA,cAGW,mBAAA,SAA4B,sBAAA;EAAA,iBACtB,KAAA;EAAA,iBACA,UAAA;EAAA,iBACA,KAAA;cAEL,OAAA,GAAU,0BAAA;EAMhB,IAAA,CAAK,SAAA,WAAoB,OAAA,CAAQ,kBAAA;EASjC,IAAA,CAAK,QAAA,EAAU,kBAAA,GAAqB,OAAA;EAQpC,SAAA,CAAU,OAAA,EAAS,iBAAA,GAAoB,OAAA,CAAQ,mBAAA;EAAA,QAa7C,IAAA;EAAA,QAKA,YAAA;AAAA"}
1
+ {"version":3,"file":"in-memory.d.ts","sourceRoot":"","sources":["../../src/memory/in-memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EACL,sBAAsB,EAEtB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,WAAW,CAAC;AAOnB,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,mBAAoB,SAAQ,sBAAsB;IAC7D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;gBAE9C,OAAO,CAAC,EAAE,0BAA0B;IAM1C,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAS3D,IAAI,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjD,SAAS,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAazE,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,YAAY;CAQrB"}
@@ -1,48 +1,154 @@
1
- import { BaseAgentMemoryManager } from "./manager.js";
2
-
3
- //#region src/memory/in-memory.ts
4
- var InMemoryAgentMemory = class extends BaseAgentMemoryManager {
5
- ttlMs;
6
- maxEntries;
7
- store = /* @__PURE__ */ new Map();
8
- constructor(options) {
9
- super();
10
- this.ttlMs = (options?.ttlMinutes ?? 60) * 60 * 1e3;
11
- this.maxEntries = options?.maxEntries ?? 250;
12
- }
13
- async load(sessionId) {
14
- this.evictExpired();
15
- const stored = this.store.get(sessionId);
16
- if (!stored) return null;
17
- stored.data.session.updatedAt = /* @__PURE__ */ new Date();
18
- stored.expiresAt = Date.now() + this.ttlMs;
19
- return stored.data;
20
- }
21
- async save(snapshot) {
22
- this.trim(snapshot.memory.entries);
23
- this.store.set(snapshot.session.sessionId, {
24
- data: snapshot,
25
- expiresAt: Date.now() + this.ttlMs
26
- });
27
- }
28
- async summarize(session) {
29
- const current = await this.load(session.sessionId) ?? this.bootstrapMemory(session);
30
- const content = current.memory.entries.slice(-10).map((entry) => `- ${entry.type}: ${entry.content}`).join("\n");
31
- current.memory.summary = content;
32
- current.memory.lastSummarizedAt = /* @__PURE__ */ new Date();
33
- await this.save(current);
34
- return current.memory;
35
- }
36
- trim(entries) {
37
- if (entries.length <= this.maxEntries) return;
38
- entries.splice(0, entries.length - this.maxEntries);
39
- }
40
- evictExpired() {
41
- const now = Date.now();
42
- for (const [sessionId, stored] of this.store.entries()) if (stored.expiresAt <= now) this.store.delete(sessionId);
43
- }
1
+ // @bun
2
+ var __defProp = Object.defineProperty;
3
+ var __export = (target, all) => {
4
+ for (var name in all)
5
+ __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true,
8
+ configurable: true,
9
+ set: (newValue) => all[name] = () => newValue
10
+ });
44
11
  };
12
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
13
+ var __require = import.meta.require;
14
+
15
+ // src/memory/manager.ts
16
+ import { randomUUID } from "crypto";
17
+ function extractMessageContent(message) {
18
+ const content = message.content;
19
+ if (typeof content === "string") {
20
+ return content;
21
+ }
22
+ if (Array.isArray(content)) {
23
+ return content.map((part) => {
24
+ if (typeof part === "string")
25
+ return part;
26
+ if ("text" in part && typeof part.text === "string")
27
+ return part.text;
28
+ return "";
29
+ }).filter(Boolean).join("");
30
+ }
31
+ return "";
32
+ }
33
+ function extractAgentMessageContent(message) {
34
+ const content = message.content;
35
+ if (typeof content === "string") {
36
+ return content;
37
+ }
38
+ if (Array.isArray(content)) {
39
+ return content.map((part) => {
40
+ if (typeof part === "string")
41
+ return part;
42
+ if ("text" in part && typeof part.text === "string")
43
+ return part.text;
44
+ return "";
45
+ }).filter(Boolean).join("");
46
+ }
47
+ return "";
48
+ }
49
+ function roleToEntryType(role) {
50
+ switch (role) {
51
+ case "assistant":
52
+ return "assistant";
53
+ case "system":
54
+ return "system";
55
+ case "tool":
56
+ return "tool";
57
+ case "user":
58
+ default:
59
+ return "user";
60
+ }
61
+ }
45
62
 
46
- //#endregion
47
- export { InMemoryAgentMemory };
48
- //# sourceMappingURL=in-memory.js.map
63
+ class BaseAgentMemoryManager {
64
+ async append(session, entry) {
65
+ const current = await this.load(session.sessionId) ?? this.bootstrapMemory(session);
66
+ const finalEntry = {
67
+ id: randomUUID(),
68
+ createdAt: entry.createdAt ?? new Date,
69
+ ...entry
70
+ };
71
+ current.memory.entries.push(finalEntry);
72
+ await this.save(current);
73
+ return current;
74
+ }
75
+ async summarize(_session) {
76
+ return;
77
+ }
78
+ async prune(_session) {}
79
+ bootstrapMemory(session) {
80
+ return {
81
+ session,
82
+ memory: {
83
+ entries: session.messages.map((message) => ({
84
+ id: randomUUID(),
85
+ createdAt: new Date,
86
+ type: roleToEntryType(message.role),
87
+ content: extractMessageContent(message)
88
+ }))
89
+ }
90
+ };
91
+ }
92
+ }
93
+ function trackMessageInMemory(manager, session, message) {
94
+ if (!manager)
95
+ return;
96
+ manager.append(session, {
97
+ type: message.role,
98
+ content: extractAgentMessageContent(message),
99
+ metadata: message.metadata
100
+ });
101
+ }
102
+
103
+ // src/memory/in-memory.ts
104
+ class InMemoryAgentMemory extends BaseAgentMemoryManager {
105
+ ttlMs;
106
+ maxEntries;
107
+ store = new Map;
108
+ constructor(options) {
109
+ super();
110
+ this.ttlMs = (options?.ttlMinutes ?? 60) * 60 * 1000;
111
+ this.maxEntries = options?.maxEntries ?? 250;
112
+ }
113
+ async load(sessionId) {
114
+ this.evictExpired();
115
+ const stored = this.store.get(sessionId);
116
+ if (!stored)
117
+ return null;
118
+ stored.data.session.updatedAt = new Date;
119
+ stored.expiresAt = Date.now() + this.ttlMs;
120
+ return stored.data;
121
+ }
122
+ async save(snapshot) {
123
+ this.trim(snapshot.memory.entries);
124
+ this.store.set(snapshot.session.sessionId, {
125
+ data: snapshot,
126
+ expiresAt: Date.now() + this.ttlMs
127
+ });
128
+ }
129
+ async summarize(session) {
130
+ const current = await this.load(session.sessionId) ?? this.bootstrapMemory(session);
131
+ const content = current.memory.entries.slice(-10).map((entry) => `- ${entry.type}: ${entry.content}`).join(`
132
+ `);
133
+ current.memory.summary = content;
134
+ current.memory.lastSummarizedAt = new Date;
135
+ await this.save(current);
136
+ return current.memory;
137
+ }
138
+ trim(entries) {
139
+ if (entries.length <= this.maxEntries)
140
+ return;
141
+ entries.splice(0, entries.length - this.maxEntries);
142
+ }
143
+ evictExpired() {
144
+ const now = Date.now();
145
+ for (const [sessionId, stored] of this.store.entries()) {
146
+ if (stored.expiresAt <= now) {
147
+ this.store.delete(sessionId);
148
+ }
149
+ }
150
+ }
151
+ }
152
+ export {
153
+ InMemoryAgentMemory
154
+ };
@@ -1,3 +1,3 @@
1
- import { AgentMemoryEntry, AgentMemoryManager, AgentMemorySnapshot, AgentSessionMemory, BaseAgentMemoryManager, trackMessageInMemory } from "./manager.js";
2
- import { InMemoryAgentMemory, InMemoryAgentMemoryOptions } from "./in-memory.js";
3
- export { AgentMemoryEntry, AgentMemoryManager, AgentMemorySnapshot, AgentSessionMemory, BaseAgentMemoryManager, InMemoryAgentMemory, InMemoryAgentMemoryOptions, trackMessageInMemory };
1
+ export * from './manager';
2
+ export * from './in-memory';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -1,4 +1,156 @@
1
- import { BaseAgentMemoryManager, trackMessageInMemory } from "./manager.js";
2
- import { InMemoryAgentMemory } from "./in-memory.js";
1
+ // @bun
2
+ var __defProp = Object.defineProperty;
3
+ var __export = (target, all) => {
4
+ for (var name in all)
5
+ __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true,
8
+ configurable: true,
9
+ set: (newValue) => all[name] = () => newValue
10
+ });
11
+ };
12
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
13
+ var __require = import.meta.require;
3
14
 
4
- export { BaseAgentMemoryManager, InMemoryAgentMemory, trackMessageInMemory };
15
+ // src/memory/manager.ts
16
+ import { randomUUID } from "crypto";
17
+ function extractMessageContent(message) {
18
+ const content = message.content;
19
+ if (typeof content === "string") {
20
+ return content;
21
+ }
22
+ if (Array.isArray(content)) {
23
+ return content.map((part) => {
24
+ if (typeof part === "string")
25
+ return part;
26
+ if ("text" in part && typeof part.text === "string")
27
+ return part.text;
28
+ return "";
29
+ }).filter(Boolean).join("");
30
+ }
31
+ return "";
32
+ }
33
+ function extractAgentMessageContent(message) {
34
+ const content = message.content;
35
+ if (typeof content === "string") {
36
+ return content;
37
+ }
38
+ if (Array.isArray(content)) {
39
+ return content.map((part) => {
40
+ if (typeof part === "string")
41
+ return part;
42
+ if ("text" in part && typeof part.text === "string")
43
+ return part.text;
44
+ return "";
45
+ }).filter(Boolean).join("");
46
+ }
47
+ return "";
48
+ }
49
+ function roleToEntryType(role) {
50
+ switch (role) {
51
+ case "assistant":
52
+ return "assistant";
53
+ case "system":
54
+ return "system";
55
+ case "tool":
56
+ return "tool";
57
+ case "user":
58
+ default:
59
+ return "user";
60
+ }
61
+ }
62
+
63
+ class BaseAgentMemoryManager {
64
+ async append(session, entry) {
65
+ const current = await this.load(session.sessionId) ?? this.bootstrapMemory(session);
66
+ const finalEntry = {
67
+ id: randomUUID(),
68
+ createdAt: entry.createdAt ?? new Date,
69
+ ...entry
70
+ };
71
+ current.memory.entries.push(finalEntry);
72
+ await this.save(current);
73
+ return current;
74
+ }
75
+ async summarize(_session) {
76
+ return;
77
+ }
78
+ async prune(_session) {}
79
+ bootstrapMemory(session) {
80
+ return {
81
+ session,
82
+ memory: {
83
+ entries: session.messages.map((message) => ({
84
+ id: randomUUID(),
85
+ createdAt: new Date,
86
+ type: roleToEntryType(message.role),
87
+ content: extractMessageContent(message)
88
+ }))
89
+ }
90
+ };
91
+ }
92
+ }
93
+ function trackMessageInMemory(manager, session, message) {
94
+ if (!manager)
95
+ return;
96
+ manager.append(session, {
97
+ type: message.role,
98
+ content: extractAgentMessageContent(message),
99
+ metadata: message.metadata
100
+ });
101
+ }
102
+
103
+ // src/memory/in-memory.ts
104
+ class InMemoryAgentMemory extends BaseAgentMemoryManager {
105
+ ttlMs;
106
+ maxEntries;
107
+ store = new Map;
108
+ constructor(options) {
109
+ super();
110
+ this.ttlMs = (options?.ttlMinutes ?? 60) * 60 * 1000;
111
+ this.maxEntries = options?.maxEntries ?? 250;
112
+ }
113
+ async load(sessionId) {
114
+ this.evictExpired();
115
+ const stored = this.store.get(sessionId);
116
+ if (!stored)
117
+ return null;
118
+ stored.data.session.updatedAt = new Date;
119
+ stored.expiresAt = Date.now() + this.ttlMs;
120
+ return stored.data;
121
+ }
122
+ async save(snapshot) {
123
+ this.trim(snapshot.memory.entries);
124
+ this.store.set(snapshot.session.sessionId, {
125
+ data: snapshot,
126
+ expiresAt: Date.now() + this.ttlMs
127
+ });
128
+ }
129
+ async summarize(session) {
130
+ const current = await this.load(session.sessionId) ?? this.bootstrapMemory(session);
131
+ const content = current.memory.entries.slice(-10).map((entry) => `- ${entry.type}: ${entry.content}`).join(`
132
+ `);
133
+ current.memory.summary = content;
134
+ current.memory.lastSummarizedAt = new Date;
135
+ await this.save(current);
136
+ return current.memory;
137
+ }
138
+ trim(entries) {
139
+ if (entries.length <= this.maxEntries)
140
+ return;
141
+ entries.splice(0, entries.length - this.maxEntries);
142
+ }
143
+ evictExpired() {
144
+ const now = Date.now();
145
+ for (const [sessionId, stored] of this.store.entries()) {
146
+ if (stored.expiresAt <= now) {
147
+ this.store.delete(sessionId);
148
+ }
149
+ }
150
+ }
151
+ }
152
+ export {
153
+ trackMessageInMemory,
154
+ InMemoryAgentMemory,
155
+ BaseAgentMemoryManager
156
+ };
@@ -1,42 +1,38 @@
1
- import { AgentMessage, AgentSessionState } from "../types.js";
2
-
3
- //#region src/memory/manager.d.ts
4
- interface AgentMemoryEntry {
5
- id: string;
6
- type: 'user' | 'assistant' | 'tool' | 'system';
7
- content: string;
8
- createdAt: Date;
9
- metadata?: Record<string, string>;
1
+ import type { AgentMessage, AgentSessionState } from '../types';
2
+ export interface AgentMemoryEntry {
3
+ id: string;
4
+ type: 'user' | 'assistant' | 'tool' | 'system';
5
+ content: string;
6
+ createdAt: Date;
7
+ metadata?: Record<string, string>;
10
8
  }
11
- interface AgentMemorySnapshot {
12
- entries: AgentMemoryEntry[];
13
- summary?: string;
14
- lastSummarizedAt?: Date;
9
+ export interface AgentMemorySnapshot {
10
+ entries: AgentMemoryEntry[];
11
+ summary?: string;
12
+ lastSummarizedAt?: Date;
15
13
  }
16
- interface AgentSessionMemory {
17
- session: AgentSessionState;
18
- memory: AgentMemorySnapshot;
14
+ export interface AgentSessionMemory {
15
+ session: AgentSessionState;
16
+ memory: AgentMemorySnapshot;
19
17
  }
20
- interface AgentMemoryManager {
21
- load(sessionId: string): Promise<AgentSessionMemory | null>;
22
- save(snapshot: AgentSessionMemory): Promise<void>;
23
- append(session: AgentSessionState, entry: Omit<AgentMemoryEntry, 'id' | 'createdAt'> & {
24
- createdAt?: Date;
25
- }): Promise<AgentSessionMemory>;
26
- summarize(session: AgentSessionState): Promise<AgentMemorySnapshot | undefined>;
27
- prune(session: AgentSessionState): Promise<void>;
18
+ export interface AgentMemoryManager {
19
+ load(sessionId: string): Promise<AgentSessionMemory | null>;
20
+ save(snapshot: AgentSessionMemory): Promise<void>;
21
+ append(session: AgentSessionState, entry: Omit<AgentMemoryEntry, 'id' | 'createdAt'> & {
22
+ createdAt?: Date;
23
+ }): Promise<AgentSessionMemory>;
24
+ summarize(session: AgentSessionState): Promise<AgentMemorySnapshot | undefined>;
25
+ prune(session: AgentSessionState): Promise<void>;
28
26
  }
29
- declare abstract class BaseAgentMemoryManager implements AgentMemoryManager {
30
- abstract load(sessionId: string): Promise<AgentSessionMemory | null>;
31
- abstract save(snapshot: AgentSessionMemory): Promise<void>;
32
- append(session: AgentSessionState, entry: Omit<AgentMemoryEntry, 'id' | 'createdAt'> & {
33
- createdAt?: Date;
34
- }): Promise<AgentSessionMemory>;
35
- summarize(_session: AgentSessionState): Promise<AgentMemorySnapshot | undefined>;
36
- prune(_session: AgentSessionState): Promise<void>;
37
- protected bootstrapMemory(session: AgentSessionState): AgentSessionMemory;
27
+ export declare abstract class BaseAgentMemoryManager implements AgentMemoryManager {
28
+ abstract load(sessionId: string): Promise<AgentSessionMemory | null>;
29
+ abstract save(snapshot: AgentSessionMemory): Promise<void>;
30
+ append(session: AgentSessionState, entry: Omit<AgentMemoryEntry, 'id' | 'createdAt'> & {
31
+ createdAt?: Date;
32
+ }): Promise<AgentSessionMemory>;
33
+ summarize(_session: AgentSessionState): Promise<AgentMemorySnapshot | undefined>;
34
+ prune(_session: AgentSessionState): Promise<void>;
35
+ protected bootstrapMemory(session: AgentSessionState): AgentSessionMemory;
38
36
  }
39
- declare function trackMessageInMemory(manager: AgentMemoryManager | undefined, session: AgentSessionState, message: AgentMessage): void;
40
- //#endregion
41
- export { AgentMemoryEntry, AgentMemoryManager, AgentMemorySnapshot, AgentSessionMemory, BaseAgentMemoryManager, trackMessageInMemory };
37
+ export declare function trackMessageInMemory(manager: AgentMemoryManager | undefined, session: AgentSessionState, message: AgentMessage): void;
42
38
  //# sourceMappingURL=manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","names":[],"sources":["../../src/memory/manager.ts"],"mappings":";;;UAIiB,gBAAA;EACf,EAAA;EACA,IAAA;EACA,OAAA;EACA,SAAA,EAAW,IAAA;EACX,QAAA,GAAW,MAAA;AAAA;AAAA,UAGI,mBAAA;EACf,OAAA,EAAS,gBAAA;EACT,OAAA;EACA,gBAAA,GAAmB,IAAA;AAAA;AAAA,UAGJ,kBAAA;EACf,OAAA,EAAS,iBAAA;EACT,MAAA,EAAQ,mBAAA;AAAA;AAAA,UAGO,kBAAA;EACf,IAAA,CAAK,SAAA,WAAoB,OAAA,CAAQ,kBAAA;EACjC,IAAA,CAAK,QAAA,EAAU,kBAAA,GAAqB,OAAA;EACpC,MAAA,CACE,OAAA,EAAS,iBAAA,EACT,KAAA,EAAO,IAAA,CAAK,gBAAA;IAA0C,SAAA,GAAY,IAAA;EAAA,IACjE,OAAA,CAAQ,kBAAA;EACX,SAAA,CACE,OAAA,EAAS,iBAAA,GACR,OAAA,CAAQ,mBAAA;EACX,KAAA,CAAM,OAAA,EAAS,iBAAA,GAAoB,OAAA;AAAA;AAAA,uBAyEf,sBAAA,YAAkC,kBAAA;EAAA,SAC7C,IAAA,CAAK,SAAA,WAAoB,OAAA,CAAQ,kBAAA;EAAA,SACjC,IAAA,CAAK,QAAA,EAAU,kBAAA,GAAqB,OAAA;EAEvC,MAAA,CACJ,OAAA,EAAS,iBAAA,EACT,KAAA,EAAO,IAAA,CAAK,gBAAA;IAA0C,SAAA,GAAY,IAAA;EAAA,IACjE,OAAA,CAAQ,kBAAA;EAaL,SAAA,CACJ,QAAA,EAAU,iBAAA,GACT,OAAA,CAAQ,mBAAA;EAIL,KAAA,CAAM,QAAA,EAAU,iBAAA,GAAoB,OAAA;EAAA,UAIhC,eAAA,CAAgB,OAAA,EAAS,iBAAA,GAAoB,kBAAA;AAAA;AAAA,iBAezC,oBAAA,CACd,OAAA,EAAS,kBAAA,cACT,OAAA,EAAS,iBAAA,EACT,OAAA,EAAS,YAAA"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/memory/manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,CACJ,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,IAAI,CAAA;KAAE,GACvE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/B,SAAS,CACP,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC;IAC5C,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAwED,8BAAsB,sBAAuB,YAAW,kBAAkB;IACxE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACpE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAEpD,MAAM,CACV,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,IAAI,CAAA;KAAE,GACvE,OAAO,CAAC,kBAAkB,CAAC;IAaxB,SAAS,CACb,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,kBAAkB;CAa1E;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,YAAY,QAQtB"}