@laserdata/laser-sdk 0.5.3 → 0.6.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 (356) hide show
  1. package/README.md +105 -79
  2. package/dist/agent/agdx.d.ts +8 -3
  3. package/dist/agent/agdx.d.ts.map +1 -1
  4. package/dist/agent/agdx.js +39 -22
  5. package/dist/agent/agdx.js.map +1 -1
  6. package/dist/agent/builder.d.ts +25 -15
  7. package/dist/agent/builder.d.ts.map +1 -1
  8. package/dist/agent/builder.js +103 -59
  9. package/dist/agent/builder.js.map +1 -1
  10. package/dist/agent/context.d.ts +3 -6
  11. package/dist/agent/context.d.ts.map +1 -1
  12. package/dist/agent/context.js +17 -9
  13. package/dist/agent/context.js.map +1 -1
  14. package/dist/agent/contract.d.ts +2 -2
  15. package/dist/agent/contract.d.ts.map +1 -1
  16. package/dist/agent/contract.js +10 -6
  17. package/dist/agent/contract.js.map +1 -1
  18. package/dist/agent/memory-handler.d.ts +25 -0
  19. package/dist/agent/memory-handler.d.ts.map +1 -0
  20. package/dist/agent/memory-handler.js +43 -0
  21. package/dist/agent/memory-handler.js.map +1 -0
  22. package/dist/agent/registry.d.ts +3 -10
  23. package/dist/agent/registry.d.ts.map +1 -1
  24. package/dist/agent/registry.js +22 -19
  25. package/dist/agent/registry.js.map +1 -1
  26. package/dist/agent/reliable-consumer.d.ts +19 -9
  27. package/dist/agent/reliable-consumer.d.ts.map +1 -1
  28. package/dist/agent/reliable-consumer.js +193 -54
  29. package/dist/agent/reliable-consumer.js.map +1 -1
  30. package/dist/agent/replies.d.ts +6 -0
  31. package/dist/agent/replies.d.ts.map +1 -1
  32. package/dist/agent/replies.js +55 -4
  33. package/dist/agent/replies.js.map +1 -1
  34. package/dist/agent/router.d.ts +1 -1
  35. package/dist/agent/router.d.ts.map +1 -1
  36. package/dist/agent/router.js +5 -19
  37. package/dist/agent/router.js.map +1 -1
  38. package/dist/agent/scope.d.ts +7 -3
  39. package/dist/agent/scope.d.ts.map +1 -1
  40. package/dist/agent/scope.js +11 -1
  41. package/dist/agent/scope.js.map +1 -1
  42. package/dist/agent/timer.d.ts +6 -0
  43. package/dist/agent/timer.d.ts.map +1 -0
  44. package/dist/agent/timer.js +21 -0
  45. package/dist/agent/timer.js.map +1 -0
  46. package/dist/agent/workflow.d.ts +16 -19
  47. package/dist/agent/workflow.d.ts.map +1 -1
  48. package/dist/agent/workflow.js +17 -6
  49. package/dist/agent/workflow.js.map +1 -1
  50. package/dist/blob.d.ts +2 -3
  51. package/dist/blob.d.ts.map +1 -1
  52. package/dist/blob.js.map +1 -1
  53. package/dist/bridges/a2a.d.ts +34 -23
  54. package/dist/bridges/a2a.d.ts.map +1 -1
  55. package/dist/bridges/a2a.js +29 -19
  56. package/dist/bridges/a2a.js.map +1 -1
  57. package/dist/bridges/hops.d.ts +1 -1
  58. package/dist/bridges/hops.d.ts.map +1 -1
  59. package/dist/bridges/hops.js +1 -1
  60. package/dist/bridges/hops.js.map +1 -1
  61. package/dist/bridges/mcp.d.ts +27 -7
  62. package/dist/bridges/mcp.d.ts.map +1 -1
  63. package/dist/bridges/mcp.js +24 -9
  64. package/dist/bridges/mcp.js.map +1 -1
  65. package/dist/client/bytes.d.ts +5 -0
  66. package/dist/client/bytes.d.ts.map +1 -1
  67. package/dist/client/bytes.js +15 -0
  68. package/dist/client/bytes.js.map +1 -1
  69. package/dist/client/capabilities.d.ts +25 -13
  70. package/dist/client/capabilities.d.ts.map +1 -1
  71. package/dist/client/capabilities.js +145 -123
  72. package/dist/client/capabilities.js.map +1 -1
  73. package/dist/client/error-classify.d.ts +57 -0
  74. package/dist/client/error-classify.d.ts.map +1 -0
  75. package/dist/client/error-classify.js +347 -0
  76. package/dist/client/error-classify.js.map +1 -0
  77. package/dist/client/errors.d.ts +113 -40
  78. package/dist/client/errors.d.ts.map +1 -1
  79. package/dist/client/errors.js +191 -53
  80. package/dist/client/errors.js.map +1 -1
  81. package/dist/client/internals.d.ts +1 -0
  82. package/dist/client/internals.d.ts.map +1 -1
  83. package/dist/client/internals.js +1 -0
  84. package/dist/client/internals.js.map +1 -1
  85. package/dist/client/laser.d.ts +62 -46
  86. package/dist/client/laser.d.ts.map +1 -1
  87. package/dist/client/laser.js +206 -120
  88. package/dist/client/laser.js.map +1 -1
  89. package/dist/client/managed.d.ts +3 -0
  90. package/dist/client/managed.d.ts.map +1 -1
  91. package/dist/client/managed.js +70 -3
  92. package/dist/client/managed.js.map +1 -1
  93. package/dist/context-scope.d.ts +25 -9
  94. package/dist/context-scope.d.ts.map +1 -1
  95. package/dist/context-scope.js +36 -9
  96. package/dist/context-scope.js.map +1 -1
  97. package/dist/context.d.ts +33 -16
  98. package/dist/context.d.ts.map +1 -1
  99. package/dist/context.js +174 -95
  100. package/dist/context.js.map +1 -1
  101. package/dist/conversation-state.d.ts +1 -1
  102. package/dist/conversation-state.d.ts.map +1 -1
  103. package/dist/conversation-state.js +35 -16
  104. package/dist/conversation-state.js.map +1 -1
  105. package/dist/govern.d.ts +24 -5
  106. package/dist/govern.d.ts.map +1 -1
  107. package/dist/govern.js +116 -28
  108. package/dist/govern.js.map +1 -1
  109. package/dist/iggy/apache-iggy.d.ts +59 -56
  110. package/dist/iggy/apache-iggy.d.ts.map +1 -1
  111. package/dist/iggy/apache-iggy.js +300 -137
  112. package/dist/iggy/apache-iggy.js.map +1 -1
  113. package/dist/index.d.ts +97 -65
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +49 -30
  116. package/dist/index.js.map +1 -1
  117. package/dist/intent.d.ts +16 -2
  118. package/dist/intent.d.ts.map +1 -1
  119. package/dist/intent.js +50 -18
  120. package/dist/intent.js.map +1 -1
  121. package/dist/managed/coordination.d.ts +82 -0
  122. package/dist/managed/coordination.d.ts.map +1 -0
  123. package/dist/managed/coordination.js +367 -0
  124. package/dist/managed/coordination.js.map +1 -0
  125. package/dist/managed/destinations.d.ts +4 -3
  126. package/dist/managed/destinations.d.ts.map +1 -1
  127. package/dist/managed/destinations.js +29 -13
  128. package/dist/managed/destinations.js.map +1 -1
  129. package/dist/managed/filters.d.ts +5 -5
  130. package/dist/managed/filters.d.ts.map +1 -1
  131. package/dist/managed/filters.js +39 -22
  132. package/dist/managed/filters.js.map +1 -1
  133. package/dist/managed/forks.d.ts +8 -11
  134. package/dist/managed/forks.d.ts.map +1 -1
  135. package/dist/managed/forks.js +33 -13
  136. package/dist/managed/forks.js.map +1 -1
  137. package/dist/managed/graph.d.ts +1 -4
  138. package/dist/managed/graph.d.ts.map +1 -1
  139. package/dist/managed/graph.js +5 -3
  140. package/dist/managed/graph.js.map +1 -1
  141. package/dist/managed/kv.d.ts +26 -14
  142. package/dist/managed/kv.d.ts.map +1 -1
  143. package/dist/managed/kv.js +88 -61
  144. package/dist/managed/kv.js.map +1 -1
  145. package/dist/managed/projections.d.ts +5 -8
  146. package/dist/managed/projections.d.ts.map +1 -1
  147. package/dist/managed/projections.js +22 -2
  148. package/dist/managed/projections.js.map +1 -1
  149. package/dist/managed/query.d.ts +20 -6
  150. package/dist/managed/query.d.ts.map +1 -1
  151. package/dist/managed/query.js +97 -24
  152. package/dist/managed/query.js.map +1 -1
  153. package/dist/managed/runs.d.ts +2 -4
  154. package/dist/managed/runs.d.ts.map +1 -1
  155. package/dist/managed/runs.js +9 -1
  156. package/dist/managed/runs.js.map +1 -1
  157. package/dist/managed/watch.d.ts +2 -4
  158. package/dist/managed/watch.d.ts.map +1 -1
  159. package/dist/managed/watch.js +9 -1
  160. package/dist/managed/watch.js.map +1 -1
  161. package/dist/memory/handle.d.ts +75 -22
  162. package/dist/memory/handle.d.ts.map +1 -1
  163. package/dist/memory/handle.js +232 -58
  164. package/dist/memory/handle.js.map +1 -1
  165. package/dist/memory/log-memory.d.ts +24 -12
  166. package/dist/memory/log-memory.d.ts.map +1 -1
  167. package/dist/memory/log-memory.js +214 -100
  168. package/dist/memory/log-memory.js.map +1 -1
  169. package/dist/memory/topic.d.ts +2 -2
  170. package/dist/memory/topic.d.ts.map +1 -1
  171. package/dist/memory/topic.js +7 -5
  172. package/dist/memory/topic.js.map +1 -1
  173. package/dist/memory/types.d.ts +41 -5
  174. package/dist/memory/types.d.ts.map +1 -1
  175. package/dist/memory/types.js +44 -18
  176. package/dist/memory/types.js.map +1 -1
  177. package/dist/memory/vector-memory.d.ts +8 -6
  178. package/dist/memory/vector-memory.d.ts.map +1 -1
  179. package/dist/memory/vector-memory.js +65 -34
  180. package/dist/memory/vector-memory.js.map +1 -1
  181. package/dist/memory.d.ts +6 -5
  182. package/dist/memory.d.ts.map +1 -1
  183. package/dist/memory.js +4 -4
  184. package/dist/memory.js.map +1 -1
  185. package/dist/provenance/agent-topic.d.ts +3 -1
  186. package/dist/provenance/agent-topic.d.ts.map +1 -1
  187. package/dist/provenance/agent-topic.js +3 -1
  188. package/dist/provenance/agent-topic.js.map +1 -1
  189. package/dist/provenance/provenance.d.ts +3 -3
  190. package/dist/provenance/provenance.d.ts.map +1 -1
  191. package/dist/provenance/provenance.js +30 -18
  192. package/dist/provenance/provenance.js.map +1 -1
  193. package/dist/runtime/clock.d.ts +3 -0
  194. package/dist/runtime/clock.d.ts.map +1 -1
  195. package/dist/runtime/clock.js +16 -3
  196. package/dist/runtime/clock.js.map +1 -1
  197. package/dist/schema-codecs.d.ts +7 -3
  198. package/dist/schema-codecs.d.ts.map +1 -1
  199. package/dist/schema-codecs.js +80 -12
  200. package/dist/schema-codecs.js.map +1 -1
  201. package/dist/session.d.ts +27 -18
  202. package/dist/session.d.ts.map +1 -1
  203. package/dist/session.js +95 -37
  204. package/dist/session.js.map +1 -1
  205. package/dist/signing.d.ts +11 -5
  206. package/dist/signing.d.ts.map +1 -1
  207. package/dist/signing.js +64 -21
  208. package/dist/signing.js.map +1 -1
  209. package/dist/snapshot.d.ts +10 -2
  210. package/dist/snapshot.d.ts.map +1 -1
  211. package/dist/snapshot.js +62 -28
  212. package/dist/snapshot.js.map +1 -1
  213. package/dist/state-store.d.ts +1 -1
  214. package/dist/state-store.d.ts.map +1 -1
  215. package/dist/state-store.js.map +1 -1
  216. package/dist/stream/batching.d.ts +81 -0
  217. package/dist/stream/batching.d.ts.map +1 -0
  218. package/dist/stream/batching.js +210 -0
  219. package/dist/stream/batching.js.map +1 -0
  220. package/dist/stream/bson.d.ts +3 -0
  221. package/dist/stream/bson.d.ts.map +1 -0
  222. package/dist/stream/bson.js +245 -0
  223. package/dist/stream/bson.js.map +1 -0
  224. package/dist/stream/codecs.d.ts +58 -6
  225. package/dist/stream/codecs.d.ts.map +1 -1
  226. package/dist/stream/codecs.js +143 -59
  227. package/dist/stream/codecs.js.map +1 -1
  228. package/dist/stream/consumer-group.d.ts +13 -10
  229. package/dist/stream/consumer-group.d.ts.map +1 -1
  230. package/dist/stream/consumer-group.js +91 -31
  231. package/dist/stream/consumer-group.js.map +1 -1
  232. package/dist/stream/consumer-start.d.ts +17 -0
  233. package/dist/stream/consumer-start.d.ts.map +1 -0
  234. package/dist/stream/consumer-start.js +2 -0
  235. package/dist/stream/consumer-start.js.map +1 -0
  236. package/dist/stream/consumer.d.ts +166 -24
  237. package/dist/stream/consumer.d.ts.map +1 -1
  238. package/dist/stream/consumer.js +451 -68
  239. package/dist/stream/consumer.js.map +1 -1
  240. package/dist/stream/cursor.d.ts +5 -12
  241. package/dist/stream/cursor.d.ts.map +1 -1
  242. package/dist/stream/cursor.js +34 -8
  243. package/dist/stream/cursor.js.map +1 -1
  244. package/dist/stream/header-value.d.ts +61 -15
  245. package/dist/stream/header-value.d.ts.map +1 -1
  246. package/dist/stream/header-value.js.map +1 -1
  247. package/dist/stream/message.d.ts +17 -0
  248. package/dist/stream/message.d.ts.map +1 -0
  249. package/dist/stream/message.js +9 -0
  250. package/dist/stream/message.js.map +1 -0
  251. package/dist/stream/producer.d.ts +127 -11
  252. package/dist/stream/producer.d.ts.map +1 -1
  253. package/dist/stream/producer.js +401 -36
  254. package/dist/stream/producer.js.map +1 -1
  255. package/dist/stream/publish.d.ts +6 -15
  256. package/dist/stream/publish.d.ts.map +1 -1
  257. package/dist/stream/publish.js +18 -28
  258. package/dist/stream/publish.js.map +1 -1
  259. package/dist/stream/record.d.ts +4 -6
  260. package/dist/stream/record.d.ts.map +1 -1
  261. package/dist/stream/record.js +4 -3
  262. package/dist/stream/record.js.map +1 -1
  263. package/dist/stream/routing.d.ts +12 -0
  264. package/dist/stream/routing.d.ts.map +1 -1
  265. package/dist/stream/routing.js +6 -1
  266. package/dist/stream/routing.js.map +1 -1
  267. package/dist/stream/stream.d.ts +1 -4
  268. package/dist/stream/stream.d.ts.map +1 -1
  269. package/dist/stream/stream.js +5 -1
  270. package/dist/stream/stream.js.map +1 -1
  271. package/dist/stream/topic.d.ts +22 -23
  272. package/dist/stream/topic.d.ts.map +1 -1
  273. package/dist/stream/topic.js +90 -30
  274. package/dist/stream/topic.js.map +1 -1
  275. package/dist/stream/typed-topic.d.ts +9 -13
  276. package/dist/stream/typed-topic.d.ts.map +1 -1
  277. package/dist/stream/typed-topic.js +25 -10
  278. package/dist/stream/typed-topic.js.map +1 -1
  279. package/dist/swarm.d.ts +0 -1
  280. package/dist/swarm.d.ts.map +1 -1
  281. package/dist/swarm.js +1 -0
  282. package/dist/swarm.js.map +1 -1
  283. package/dist/testing.d.ts +3 -3
  284. package/dist/testing.d.ts.map +1 -1
  285. package/dist/testing.js +3 -3
  286. package/dist/testing.js.map +1 -1
  287. package/dist/types/ids.d.ts +17 -2
  288. package/dist/types/ids.d.ts.map +1 -1
  289. package/dist/types/ids.js +34 -14
  290. package/dist/types/ids.js.map +1 -1
  291. package/dist/wire/agent.d.ts +22 -0
  292. package/dist/wire/agent.d.ts.map +1 -1
  293. package/dist/wire/agent.js +80 -25
  294. package/dist/wire/agent.js.map +1 -1
  295. package/dist/wire/authz.d.ts +35 -1
  296. package/dist/wire/authz.d.ts.map +1 -1
  297. package/dist/wire/authz.js +45 -15
  298. package/dist/wire/authz.js.map +1 -1
  299. package/dist/wire/cbor.d.ts.map +1 -1
  300. package/dist/wire/cbor.js +13 -2
  301. package/dist/wire/cbor.js.map +1 -1
  302. package/dist/wire/checkpoint.d.ts +17 -12
  303. package/dist/wire/checkpoint.d.ts.map +1 -1
  304. package/dist/wire/checkpoint.js +28 -3
  305. package/dist/wire/checkpoint.js.map +1 -1
  306. package/dist/wire/control.d.ts +82 -0
  307. package/dist/wire/control.d.ts.map +1 -1
  308. package/dist/wire/control.js +219 -0
  309. package/dist/wire/control.js.map +1 -1
  310. package/dist/wire/filter-eval.d.ts +41 -7
  311. package/dist/wire/filter-eval.d.ts.map +1 -1
  312. package/dist/wire/filter-eval.js +26 -28
  313. package/dist/wire/filter-eval.js.map +1 -1
  314. package/dist/wire/filter.d.ts +51 -17
  315. package/dist/wire/filter.d.ts.map +1 -1
  316. package/dist/wire/filter.js +99 -10
  317. package/dist/wire/filter.js.map +1 -1
  318. package/dist/wire/fork.d.ts +14 -1
  319. package/dist/wire/fork.d.ts.map +1 -1
  320. package/dist/wire/fork.js +19 -8
  321. package/dist/wire/fork.js.map +1 -1
  322. package/dist/wire/graph.d.ts +3 -0
  323. package/dist/wire/graph.d.ts.map +1 -1
  324. package/dist/wire/graph.js +18 -4
  325. package/dist/wire/graph.js.map +1 -1
  326. package/dist/wire/hello.d.ts +4 -1
  327. package/dist/wire/hello.d.ts.map +1 -1
  328. package/dist/wire/hello.js +13 -3
  329. package/dist/wire/hello.js.map +1 -1
  330. package/dist/wire/index.d.ts +4 -1
  331. package/dist/wire/index.d.ts.map +1 -1
  332. package/dist/wire/index.js +4 -1
  333. package/dist/wire/index.js.map +1 -1
  334. package/dist/wire/kv.d.ts +37 -2
  335. package/dist/wire/kv.d.ts.map +1 -1
  336. package/dist/wire/kv.js +36 -18
  337. package/dist/wire/kv.js.map +1 -1
  338. package/dist/wire/query.d.ts +6 -0
  339. package/dist/wire/query.d.ts.map +1 -1
  340. package/dist/wire/query.js +38 -12
  341. package/dist/wire/query.js.map +1 -1
  342. package/dist/wire/schema.d.ts +29 -6
  343. package/dist/wire/schema.d.ts.map +1 -1
  344. package/dist/wire/schema.js +61 -26
  345. package/dist/wire/schema.js.map +1 -1
  346. package/dist/wire/snapshot.js +1 -1
  347. package/dist/wire/snapshot.js.map +1 -1
  348. package/dist/wire/value.d.ts +10 -2
  349. package/dist/wire/value.d.ts.map +1 -1
  350. package/dist/wire/value.js +29 -3
  351. package/dist/wire/value.js.map +1 -1
  352. package/package.json +2 -3
  353. package/dist/stream/polling-strategy.d.ts +0 -14
  354. package/dist/stream/polling-strategy.d.ts.map +0 -1
  355. package/dist/stream/polling-strategy.js +0 -2
  356. package/dist/stream/polling-strategy.js.map +0 -1
@@ -32,6 +32,9 @@ export declare const RecallStrategy: {
32
32
  readonly Hybrid: "hybrid";
33
33
  };
34
34
  export type RecallStrategy = (typeof RecallStrategy)[keyof typeof RecallStrategy];
35
+ /** A stable one-byte discriminator, mixed into a content-addressed id so the
36
+ * same body under different kinds gets distinct ids. */
37
+ export declare function memoryKindCode(kind: MemoryKind): number;
35
38
  export declare function memoryClass(kind: MemoryKind): MemoryClass;
36
39
  export declare class MemoryId {
37
40
  private readonly value;
@@ -39,6 +42,11 @@ export declare class MemoryId {
39
42
  static new(source?: UlidSource): MemoryId;
40
43
  static fromU128(value: bigint): MemoryId;
41
44
  static parse(text: string): MemoryId;
45
+ /** A deterministic id over `owner`, `kind`, and `body`, so a deduped remember
46
+ * stores one item. The owner is the durable scope (stream, agent, user, and
47
+ * application, never the conversation), so the same fact in two
48
+ * conversations is one durable memory and two users never share an id. The
49
+ * segments match Rust `MemoryId::content` byte for byte. */
42
50
  static content(owner: MemoryScope, kind: MemoryKind, body: Uint8Array): MemoryId;
43
51
  asU128(): bigint;
44
52
  equals(other: MemoryId): boolean;
@@ -49,7 +57,7 @@ export interface MemoryScope {
49
57
  readonly user?: string;
50
58
  readonly agent?: AgentId;
51
59
  readonly conversation?: ConversationId;
52
- readonly application?: string;
60
+ readonly app?: string;
53
61
  readonly lifetime?: Lifetime;
54
62
  }
55
63
  export interface RecallSignal {
@@ -70,6 +78,11 @@ export interface MemoryItem {
70
78
  readonly signals: readonly RecallSignal[];
71
79
  readonly source?: SourceRef;
72
80
  }
81
+ /** The memory item payload as UTF-8, lossy. */
82
+ export declare function memoryItemText(item: MemoryItem): string;
83
+ /** Decodes the memory item payload as JSON, through `decodeValue` when given.
84
+ * A payload that is not JSON fails with `CodecError`. */
85
+ export declare function memoryItemJson<T = unknown>(item: MemoryItem, decodeValue?: (value: unknown) => T): T;
73
86
  export interface MemoryQuery {
74
87
  readonly limit?: number;
75
88
  readonly tokenBudget?: number;
@@ -83,6 +96,7 @@ export interface Feedback {
83
96
  readonly note?: string;
84
97
  }
85
98
  export interface Memory {
99
+ append?(scope: MemoryScope, id: MemoryId, kind: MemoryKind, payload: Uint8Array): Promise<MemoryId>;
86
100
  remember(scope: MemoryScope, payload: Uint8Array): Promise<MemoryId>;
87
101
  recall(scope: MemoryScope, query: MemoryQuery): Promise<readonly MemoryItem[]>;
88
102
  improve(scope: MemoryScope, feedback: Feedback): Promise<MemoryId>;
@@ -94,15 +108,37 @@ export interface Embedder {
94
108
  export interface Reranker {
95
109
  rerank(query: string, items: readonly MemoryItem[]): Promise<readonly MemoryItem[]>;
96
110
  }
111
+ /** Folds a batch of session bodies into one durable summary body. A model
112
+ * client, a template, or a hosted summarize API lives in application code. */
113
+ export interface Summarizer {
114
+ summarize(bodies: readonly Uint8Array[]): Promise<Uint8Array>;
115
+ }
116
+ /** The optional passes of one consolidation run. */
117
+ export interface ConsolidateOptions {
118
+ /** Adds the summarize pass: the `message` items in the scope are folded
119
+ * through this into one durable summary per conversation. */
120
+ readonly summarizer?: Summarizer;
121
+ /** Forgets the items a summarize pass folded, so the summary replaces them. */
122
+ readonly pruneSummarized?: boolean;
123
+ }
97
124
  export interface ConsolidationReport {
98
- readonly scanned: number;
99
- readonly kept: number;
100
- readonly forgotten: number;
125
+ /** Items folded into durable summaries. */
126
+ readonly summarized: number;
127
+ /** Items whose recall weights changed through feedback. */
128
+ readonly reweighted: number;
129
+ /** Items successfully pruned. */
130
+ readonly pruned: number;
131
+ /** New facts or graph edges derived. */
132
+ readonly derived: number;
101
133
  }
102
134
  export interface Consolidator {
103
- consolidate(memory: Memory, scope: MemoryScope): Promise<ConsolidationReport>;
135
+ consolidate(scope: MemoryScope, signal?: AbortSignal): Promise<ConsolidationReport>;
104
136
  }
105
137
  export declare function toContextBlock(items: readonly MemoryItem[], tokenBudget?: number): string;
138
+ /** Fuses ranked lists by reciprocal rank. Each item scores the sum of
139
+ * `1 / (60 + rank)` over the lists that surfaced it, where `rank` is the item's
140
+ * own first signal rank, and an item without a signal contributes nothing. A
141
+ * fused item keeps every signal it arrived with. */
106
142
  export declare function fuseReciprocalRank(signals: readonly (readonly MemoryItem[])[], limit: number): readonly MemoryItem[];
107
143
  export declare const ZERO_CONVERSATION: ConversationId;
108
144
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { InvalidError } from "../client/errors.js";
2
2
  import { mintUlidValue } from "../runtime/ulid.js";
3
+ import { Json } from "../stream/codecs.js";
3
4
  import { ConversationId } from "../types/ids.js";
4
5
  import { contentId } from "../wire/hashing.js";
5
6
  import { crockfordDecode, crockfordEncode } from "../wire/ids.js";
@@ -26,6 +27,7 @@ export const RecallStrategy = {
26
27
  Temporal: "temporal",
27
28
  Hybrid: "hybrid"
28
29
  };
30
+ const RRF_K = 60;
29
31
  const KIND_CODES = {
30
32
  [MemoryKind.Fact]: 1,
31
33
  [MemoryKind.Message]: 2,
@@ -34,6 +36,11 @@ const KIND_CODES = {
34
36
  [MemoryKind.Feedback]: 5,
35
37
  [MemoryKind.Procedure]: 6
36
38
  };
39
+ /** A stable one-byte discriminator, mixed into a content-addressed id so the
40
+ * same body under different kinds gets distinct ids. */
41
+ export function memoryKindCode(kind) {
42
+ return KIND_CODES[kind];
43
+ }
37
44
  export function memoryClass(kind) {
38
45
  if (kind === MemoryKind.Message)
39
46
  return MemoryClass.Episodic;
@@ -58,14 +65,24 @@ export class MemoryId {
58
65
  static parse(text) {
59
66
  return MemoryId.fromU128(crockfordDecode(text));
60
67
  }
68
+ /** A deterministic id over `owner`, `kind`, and `body`, so a deduped remember
69
+ * stores one item. The owner is the durable scope (stream, agent, user, and
70
+ * application, never the conversation), so the same fact in two
71
+ * conversations is one durable memory and two users never share an id. The
72
+ * segments match Rust `MemoryId::content` byte for byte. */
61
73
  static content(owner, kind, body) {
62
74
  const encoder = new TextEncoder();
75
+ const separator = Uint8Array.of(0);
63
76
  const segments = [
64
77
  encoder.encode(owner.stream ?? ""),
65
- Uint8Array.of(0),
66
- encoder.encode(owner.agent?.asString() ?? ""),
67
- Uint8Array.of(0),
68
- Uint8Array.of(KIND_CODES[kind]),
78
+ separator,
79
+ encoder.encode(owner.agent?.asStr() ?? ""),
80
+ separator,
81
+ encoder.encode(owner.user ?? ""),
82
+ separator,
83
+ encoder.encode(owner.app ?? ""),
84
+ separator,
85
+ Uint8Array.of(memoryKindCode(kind)),
69
86
  body
70
87
  ];
71
88
  return MemoryId.fromU128(contentId(segments));
@@ -80,6 +97,15 @@ export class MemoryId {
80
97
  return crockfordEncode(this.value);
81
98
  }
82
99
  }
100
+ /** The memory item payload as UTF-8, lossy. */
101
+ export function memoryItemText(item) {
102
+ return new TextDecoder().decode(item.payload);
103
+ }
104
+ /** Decodes the memory item payload as JSON, through `decodeValue` when given.
105
+ * A payload that is not JSON fails with `CodecError`. */
106
+ export function memoryItemJson(item, decodeValue = (value) => value) {
107
+ return new Json(decodeValue).decode(item.payload);
108
+ }
83
109
  export function toContextBlock(items, tokenBudget) {
84
110
  let spent = 0;
85
111
  let rendered = 0;
@@ -98,28 +124,28 @@ export function toContextBlock(items, tokenBudget) {
98
124
  blocks.push(`[... ${String(omitted)} more recalled item(s) omitted ...]`);
99
125
  return blocks.join("\n\n");
100
126
  }
127
+ /** Fuses ranked lists by reciprocal rank. Each item scores the sum of
128
+ * `1 / (60 + rank)` over the lists that surfaced it, where `rank` is the item's
129
+ * own first signal rank, and an item without a signal contributes nothing. A
130
+ * fused item keeps every signal it arrived with. */
101
131
  export function fuseReciprocalRank(signals, limit) {
102
- const byId = new Map();
132
+ const fused = new Map();
103
133
  for (const ranked of signals) {
104
- ranked.forEach((candidate, rank) => {
134
+ for (const candidate of ranked) {
105
135
  const key = candidate.id.toString();
106
- const contribution = 1 / (60 + rank);
107
- const held = byId.get(key);
108
- const signal = {
109
- strategy: candidate.signals[0]?.strategy ?? RecallStrategy.Auto,
110
- rank,
111
- ...(candidate.score !== undefined ? { score: candidate.score } : {})
112
- };
113
- byId.set(key, held === undefined
114
- ? { ...candidate, score: contribution, signals: [signal] }
136
+ const first = candidate.signals[0];
137
+ const contribution = first === undefined ? 0 : 1 / (RRF_K + first.rank);
138
+ const held = fused.get(key);
139
+ fused.set(key, held === undefined
140
+ ? { ...candidate, score: contribution, signals: [...candidate.signals] }
115
141
  : {
116
142
  ...held,
117
143
  score: (held.score ?? 0) + contribution,
118
- signals: [...held.signals, signal]
144
+ signals: [...held.signals, ...candidate.signals]
119
145
  });
120
- });
146
+ }
121
147
  }
122
- return [...byId.values()]
148
+ return [...fused.values()]
123
149
  .sort((left, right) => (right.score ?? 0) - (left.score ?? 0))
124
150
  .slice(0, limit);
125
151
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,22 @@
1
+ import type { Laser } from "../client/laser.js";
1
2
  import { MemoryId, MemoryKind, type Embedder, type Feedback, type Memory, type MemoryItem, type MemoryQuery, type MemoryScope } from "./types.js";
2
- export declare class ZeroEmbedder implements Embedder {
3
- embed(): Promise<readonly number[]>;
4
- }
3
+ export declare const WITH_EMBEDDER: unique symbol;
5
4
  export declare class VectorMemory implements Memory {
6
5
  private readonly embedder;
7
6
  private readonly laser?;
8
7
  private readonly items;
9
- constructor(embedder?: Embedder, laser?: Laser | undefined);
8
+ constructor(embedder: Embedder, laser?: Laser | undefined);
9
+ /** A vector memory whose writes run through the governor enrolled on
10
+ * `laser`. Without `embedder`, a write or a semantic recall throws
11
+ * `ConfigError`. */
10
12
  static governed(laser: Laser, embedder?: Embedder): VectorMemory;
11
13
  remember(scope: MemoryScope, payload: Uint8Array): Promise<MemoryId>;
12
14
  append(scope: MemoryScope, id: MemoryId, kind: MemoryKind, payload: Uint8Array): Promise<MemoryId>;
13
15
  recall(scope: MemoryScope, query: MemoryQuery): Promise<readonly MemoryItem[]>;
14
16
  improve(scope: MemoryScope, feedback: Feedback): Promise<MemoryId>;
15
17
  forget(scope: MemoryScope, id: MemoryId): Promise<void>;
16
- size(): number;
18
+ /** A fresh, empty index over `embedder` that keeps this memory's governance. */
19
+ [WITH_EMBEDDER](embedder: Embedder): VectorMemory;
17
20
  private govern;
18
21
  }
19
- import type { Laser } from "../client/laser.js";
20
22
  //# sourceMappingURL=vector-memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vector-memory.d.ts","sourceRoot":"","sources":["../../src/memory/vector-memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,UAAU,EAGV,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,EAEjB,MAAM,YAAY,CAAA;AAUnB,qBAAa,YAAa,YAAW,QAAQ;IAC3C,KAAK,IAAI,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAElC;CACF;AAED,qBAAa,YAAa,YAAW,MAAM;IAIvC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAJzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAE1C,YACmB,QAAQ,GAAE,QAA6B,EACvC,KAAK,CAAC,EAAE,KAAK,YAAA,EAC5B;IAEJ,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,CAE/D;IAEK,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAEzE;IAEK,MAAM,CACV,KAAK,EAAE,WAAW,EAClB,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,QAAQ,CAAC,CA6BnB;IAEK,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CA4CnF;IAEK,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAYvE;IAEK,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAM5D;IAED,IAAI,IAAI,MAAM,CAEb;YAEa,MAAM;CAoBrB;AAgED,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"vector-memory.d.ts","sourceRoot":"","sources":["../../src/memory/vector-memory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAK/C,OAAO,EAEL,QAAQ,EACR,UAAU,EAGV,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,EAEjB,MAAM,YAAY,CAAA;AAuBnB,eAAO,MAAM,aAAa,eAAyC,CAAA;AAEnE,qBAAa,YAAa,YAAW,MAAM;IAIvC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;IAJzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAE1C,YACmB,QAAQ,EAAE,QAAQ,EAClB,KAAK,CAAC,EAAE,KAAK,YAAA,EAC5B;IAEJ;;wBAEoB;IACpB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,YAAY,CAE/D;IAEK,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,CAEzE;IAEK,MAAM,CACV,KAAK,EAAE,WAAW,EAClB,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,QAAQ,CAAC,CAgCnB;IAEK,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAmEnF;IAEK,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAYvE;IAEK,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAM5D;IAOD,gFAAgF;IAChF,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAEhD;YAEa,MAAM;CAoBrB"}
@@ -1,26 +1,36 @@
1
+ import { ConfigError, InvalidError, NoStreamError } from "../client/errors.js";
2
+ import { INTERNAL_GOVERN } from "../client/internals.js";
3
+ import { ActionKind } from "../govern.js";
4
+ import { AgentTopic } from "../provenance/agent-topic.js";
5
+ import { decodeOne } from "../wire/cbor.js";
6
+ import { decodeMemoryRecord, encodeMemoryRecordFrame } from "../wire/memory.js";
1
7
  import { Lifetime, MemoryId, MemoryKind, RecallStrategy, ZERO_CONVERSATION } from "./types.js";
2
- export class ZeroEmbedder {
3
- embed() {
4
- return Promise.resolve([0]);
5
- }
6
- }
8
+ // Stands in for an embedder a governed vector handle was opened without. Any
9
+ // write or semantic recall needs a vector, so it fails with the registration hint.
10
+ const MISSING_EMBEDDER = {
11
+ embed: () => Promise.reject(new ConfigError('this memory needs an embedder for semantic recall: pass one to laser.memoryWith(namespace, "vector", embedder)'))
12
+ };
13
+ // Rebuilds a vector memory over another embedder with the same governance,
14
+ // the seam `MemoryHandle.embedder` configures through.
15
+ export const WITH_EMBEDDER = Symbol("laser.internal.with-embedder");
7
16
  export class VectorMemory {
8
17
  embedder;
9
18
  laser;
10
19
  items = [];
11
- constructor(embedder = new ZeroEmbedder(), laser) {
20
+ constructor(embedder, laser) {
12
21
  this.embedder = embedder;
13
22
  this.laser = laser;
14
23
  }
24
+ /** A vector memory whose writes run through the governor enrolled on
25
+ * `laser`. Without `embedder`, a write or a semantic recall throws
26
+ * `ConfigError`. */
15
27
  static governed(laser, embedder) {
16
- return new VectorMemory(embedder, laser);
28
+ return new VectorMemory(embedder ?? MISSING_EMBEDDER, laser);
17
29
  }
18
30
  async remember(scope, payload) {
19
31
  return this.append(scope, MemoryId.new(), MemoryKind.Fact, payload);
20
32
  }
21
33
  async append(scope, id, kind, payload) {
22
- if (this.items.some((entry) => entry.id.equals(id)))
23
- return id;
24
34
  const governed = await this.govern(scope, {
25
35
  kind: "item",
26
36
  id: id.toString(),
@@ -28,8 +38,12 @@ export class VectorMemory {
28
38
  body: payload
29
39
  });
30
40
  if (governed.kind !== "item")
31
- throw new TypeError("governed memory item changed record kind");
41
+ throw new InvalidError("a memory-item governor modification must remain an item");
32
42
  const embedding = await this.embedder.embed(new TextDecoder().decode(governed.body));
43
+ // Checked after the awaits, so two concurrent writes of one content id
44
+ // still store one item.
45
+ if (this.items.some((entry) => entry.id.equals(id)))
46
+ return id;
33
47
  const provenance = {
34
48
  conversationId: scope.conversation ?? ZERO_CONVERSATION,
35
49
  ...(scope.agent !== undefined ? { agent: scope.agent } : {}),
@@ -52,6 +66,8 @@ export class VectorMemory {
52
66
  }
53
67
  async recall(scope, query) {
54
68
  const limit = query.limit ?? 50;
69
+ if (!Number.isSafeInteger(limit) || limit < 0)
70
+ throw new InvalidError("memory recall limit must be a non-negative safe integer");
55
71
  const strategy = query.strategy ?? RecallStrategy.Auto;
56
72
  const text = query.semantic;
57
73
  const wantsSemantic = text !== undefined &&
@@ -63,15 +79,16 @@ export class VectorMemory {
63
79
  const queryTokens = wantsKeyword ? tokenize(text) : undefined;
64
80
  const agent = query.agent ?? scope.agent;
65
81
  const matched = this.items.filter((entry) => matchesScope(entry.scope, scope, agent));
66
- if (queryEmbedding === undefined && queryTokens === undefined && !matched.some(hasFeedback)) {
82
+ // Recent is write order only, so feedback never reorders it.
83
+ if (strategy === RecallStrategy.Recent ||
84
+ (queryEmbedding === undefined && queryTokens === undefined && !matched.some(hasFeedback))) {
67
85
  return matched
68
86
  .slice()
69
87
  .reverse()
70
88
  .slice(0, limit)
71
89
  .map((entry) => copyItem(entry.item));
72
90
  }
73
- return matched
74
- .map((entry) => {
91
+ const scored = matched.map((entry) => {
75
92
  const semantic = queryEmbedding === undefined ? undefined : cosine(queryEmbedding, entry.embedding);
76
93
  const keyword = queryTokens === undefined ? undefined : keywordScore(queryTokens, entry.item.payload);
77
94
  const score = entry.feedback + (semantic ?? 0) + (keyword ?? 0);
@@ -84,10 +101,28 @@ export class VectorMemory {
84
101
  signals.push({ strategy: RecallStrategy.Auto, rank: 0, score: entry.feedback });
85
102
  }
86
103
  return { entry, score, signals };
87
- })
104
+ });
105
+ const ranks = new Map();
106
+ for (const strategy of [RecallStrategy.Semantic, RecallStrategy.Keyword, RecallStrategy.Auto]) {
107
+ const active = scored
108
+ .flatMap(({ entry, signals }) => {
109
+ const signal = signals.find((candidate) => candidate.strategy === strategy);
110
+ return signal === undefined ? [] : [{ id: entry.id.toString(), score: signal.score ?? 0 }];
111
+ })
112
+ .sort((left, right) => right.score - left.score);
113
+ ranks.set(strategy, new Map(active.map(({ id }, rank) => [id, rank])));
114
+ }
115
+ return scored
88
116
  .sort((left, right) => right.score - left.score)
89
117
  .slice(0, limit)
90
- .map(({ entry, score, signals }) => ({ ...copyItem(entry.item), score, signals }));
118
+ .map(({ entry, score, signals }) => ({
119
+ ...copyItem(entry.item),
120
+ score,
121
+ signals: signals.map((signal) => ({
122
+ ...signal,
123
+ rank: ranks.get(signal.strategy)?.get(entry.id.toString()) ?? 0
124
+ }))
125
+ }));
91
126
  }
92
127
  async improve(scope, feedback) {
93
128
  const governed = await this.govern(scope, {
@@ -96,7 +131,7 @@ export class VectorMemory {
96
131
  weight: feedback.weight
97
132
  });
98
133
  if (governed.kind !== "feedback") {
99
- throw new TypeError("governed memory feedback changed record kind");
134
+ throw new InvalidError("a memory-feedback governor modification must remain feedback");
100
135
  }
101
136
  const entry = this.items.find((candidate) => candidate.id.toString() === governed.target);
102
137
  if (entry !== undefined)
@@ -106,14 +141,19 @@ export class VectorMemory {
106
141
  async forget(scope, id) {
107
142
  const governed = await this.govern(scope, { kind: "forget", target: id.toString() });
108
143
  if (governed.kind !== "forget")
109
- throw new TypeError("governed memory forget changed record kind");
144
+ throw new InvalidError("a memory-forget governor modification must remain a tombstone");
110
145
  const index = this.items.findIndex((entry) => entry.id.toString() === governed.target);
111
146
  if (index !== -1)
112
147
  this.items.splice(index, 1);
113
148
  }
149
+ /** @internal */
114
150
  size() {
115
151
  return this.items.length;
116
152
  }
153
+ /** A fresh, empty index over `embedder` that keeps this memory's governance. */
154
+ [WITH_EMBEDDER](embedder) {
155
+ return new VectorMemory(embedder, this.laser);
156
+ }
117
157
  async govern(scope, record) {
118
158
  if (this.laser === undefined)
119
159
  return record;
@@ -125,7 +165,7 @@ export class VectorMemory {
125
165
  kind: ActionKind.MemoryWrite,
126
166
  stream,
127
167
  topic: AgentTopic.Audit,
128
- ...(scope.agent !== undefined ? { source: scope.agent.asString() } : {}),
168
+ ...(scope.agent !== undefined ? { source: scope.agent.asStr() } : {}),
129
169
  ...(scope.conversation !== undefined ? { conversation: scope.conversation } : {}),
130
170
  payload: encoded,
131
171
  signed: false
@@ -144,9 +184,7 @@ function matchesScope(stored, requested, agent) {
144
184
  (agent === undefined || stored.agent?.equals(agent) === true) &&
145
185
  (requested.conversation === undefined ||
146
186
  stored.conversation?.equals(requested.conversation) === true) &&
147
- (requested.application === undefined || stored.application === requested.application) &&
148
- (requested.lifetime === undefined ||
149
- (stored.lifetime ?? Lifetime.Session) === requested.lifetime));
187
+ (requested.app === undefined || stored.app === requested.app));
150
188
  }
151
189
  function hasFeedback(entry) {
152
190
  return entry.feedback !== 0;
@@ -158,14 +196,13 @@ function cosine(left, right) {
158
196
  let dot = 0;
159
197
  let leftNorm = 0;
160
198
  let rightNorm = 0;
161
- const length = Math.min(left.length, right.length);
162
- for (let index = 0; index < length; index += 1) {
163
- const leftValue = left[index] ?? 0;
164
- const rightValue = right[index] ?? 0;
165
- dot += leftValue * rightValue;
166
- leftNorm += leftValue * leftValue;
167
- rightNorm += rightValue * rightValue;
199
+ for (let index = 0; index < Math.min(left.length, right.length); index += 1) {
200
+ dot += (left[index] ?? 0) * (right[index] ?? 0);
168
201
  }
202
+ for (const component of left)
203
+ leftNorm += component * component;
204
+ for (const component of right)
205
+ rightNorm += component * component;
169
206
  return leftNorm === 0 || rightNorm === 0 ? 0 : dot / Math.sqrt(leftNorm * rightNorm);
170
207
  }
171
208
  function tokenize(text) {
@@ -184,10 +221,4 @@ function keywordScore(query, payload) {
184
221
  hits += 1;
185
222
  return hits / query.size;
186
223
  }
187
- import { NoStreamError } from "../client/errors.js";
188
- import { INTERNAL_GOVERN } from "../client/internals.js";
189
- import { ActionKind } from "../govern.js";
190
- import { AgentTopic } from "../provenance/agent-topic.js";
191
- import { decodeOne } from "../wire/cbor.js";
192
- import { decodeMemoryRecord, encodeMemoryRecordFrame } from "../wire/memory.js";
193
224
  //# sourceMappingURL=vector-memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vector-memory.js","sourceRoot":"","sources":["../../src/memory/vector-memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vector-memory.js","sourceRoot":"","sources":["../../src/memory/vector-memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAqB,MAAM,mBAAmB,CAAA;AAClG,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,cAAc,EACd,iBAAiB,EAQlB,MAAM,YAAY,CAAA;AAUnB,6EAA6E;AAC7E,mFAAmF;AACnF,MAAM,gBAAgB,GAAa;IACjC,KAAK,EAAE,GAAG,EAAE,CACV,OAAO,CAAC,MAAM,CACZ,IAAI,WAAW,CACb,gHAAgH,CACjH,CACF;CACJ,CAAA;AAED,2EAA2E;AAC3E,uDAAuD;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,8BAA8B,CAAC,CAAA;AAEnE,MAAM,OAAO,YAAY;IAIJ,QAAQ;IACR,KAAK;IAJP,KAAK,GAAkB,EAAE,CAAA;IAE1C,YACmB,QAAkB,EAClB,KAAa;wBADb,QAAQ;qBACR,KAAK;IACrB,CAAC;IAEJ;;wBAEoB;IACpB,MAAM,CAAC,QAAQ,CAAC,KAAY,EAAE,QAAmB;QAC/C,OAAO,IAAI,YAAY,CAAC,QAAQ,IAAI,gBAAgB,EAAE,KAAK,CAAC,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAkB,EAAE,OAAmB;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACrE,CAAC;IAED,KAAK,CAAC,MAAM,CACV,KAAkB,EAClB,EAAY,EACZ,IAAgB,EAChB,OAAmB;QAEnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACxC,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE;YACjB,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,OAAO;SACd,CAAC,CAAA;QACF,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM;YAC1B,MAAM,IAAI,YAAY,CAAC,yDAAyD,CAAC,CAAA;QACnF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QACpF,uEAAuE;QACvE,wBAAwB;QACxB,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO,EAAE,CAAA;QAC9D,MAAM,UAAU,GAAG;YACjB,cAAc,EAAE,KAAK,CAAC,YAAY,IAAI,iBAAiB;YACvD,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,cAAc,EAAE,EAAE,CAAC,QAAQ,EAAE;SAC9B,CAAA;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,EAAE;YACF,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC;YAC7B,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC;YACzB,IAAI,EAAE;gBACJ,EAAE;gBACF,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;gBAC9B,UAAU;gBACV,IAAI;gBACJ,OAAO,EAAE,EAAE;aACZ;YACD,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAA;QACF,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAkB,EAAE,KAAkB;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAA;QAC/B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAC3C,MAAM,IAAI,YAAY,CAAC,yDAAyD,CAAC,CAAA;QACnF,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAA;QACtD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAA;QAC3B,MAAM,aAAa,GACjB,IAAI,KAAK,SAAS;YAClB,QAAQ,KAAK,cAAc,CAAC,OAAO;YACnC,QAAQ,KAAK,cAAc,CAAC,MAAM,CAAA;QACpC,MAAM,YAAY,GAChB,IAAI,KAAK,SAAS;YAClB,CAAC,QAAQ,KAAK,cAAc,CAAC,OAAO,IAAI,QAAQ,KAAK,cAAc,CAAC,MAAM,CAAC,CAAA;QAC7E,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAClF,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAC7D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAA;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;QAErF,6DAA6D;QAC7D,IACE,QAAQ,KAAK,cAAc,CAAC,MAAM;YAClC,CAAC,cAAc,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EACzF,CAAC;YACD,OAAO,OAAO;iBACX,KAAK,EAAE;iBACP,OAAO,EAAE;iBACT,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;iBACf,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;QACzC,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACnC,MAAM,QAAQ,GACZ,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;YACpF,MAAM,OAAO,GACX,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACvF,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,CAAA;YAC/D,MAAM,OAAO,GAAmB,EAAE,CAAA;YAClC,IAAI,QAAQ,KAAK,SAAS;gBACxB,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAA;YAC/E,IAAI,OAAO,KAAK,SAAS;gBACvB,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;YAC7E,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;YACjF,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;QAClC,CAAC,CAAC,CAAA;QACF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuC,CAAA;QAC5D,KAAK,MAAM,QAAQ,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9F,MAAM,MAAM,GAAG,MAAM;iBAClB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;gBAC3E,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAA;YAC5F,CAAC,CAAC;iBACD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;YAClD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACxE,CAAC;QACD,OAAO,MAAM;aACV,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;aAC/C,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;aACf,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACnC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;YACvB,KAAK;YACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAChC,GAAG,MAAM;gBACT,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC;aAChE,CAAC,CAAC;SACJ,CAAC,CAAC,CAAA;IACP,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAkB,EAAE,QAAkB;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACxC,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;YAClC,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAA;QACF,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,IAAI,YAAY,CAAC,8DAA8D,CAAC,CAAA;QACxF,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAA;QACzF,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAA;QAC1D,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAkB,EAAE,EAAY;QAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QACpF,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ;YAC5B,MAAM,IAAI,YAAY,CAAC,+DAA+D,CAAC,CAAA;QACzF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAA;QACtF,IAAI,KAAK,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED,gBAAgB;IAChB,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IAC1B,CAAC;IAED,gFAAgF;IAChF,CAAC,aAAa,CAAC,CAAC,QAAkB;QAChC,OAAO,IAAI,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC/C,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,KAAkB,EAAE,MAAoB;QAC3D,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,MAAM,CAAA;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAA;QACvC,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,aAAa,CAAC,0CAA0C,CAAC,CAAA;QAC7F,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAA;QACtF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAChD,IAAI,EAAE,UAAU,CAAC,WAAW;YAC5B,MAAM;YACN,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,KAAK;SACd,CAAC,CAAA;QACF,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;QAC/D,OAAO,kBAAkB,CACvB,SAAS,CAAC,OAAO,EAAE,wBAAwB,CAAC,EAC5C,wBAAwB,CACzB,CAAA;IACH,CAAC;CACF;AAED,SAAS,eAAe,CAAC,KAAkB;IACzC,OAAO,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAA;AACnE,CAAC;AAED,SAAS,YAAY,CACnB,MAAmB,EACnB,SAAsB,EACtB,KAA2B;IAE3B,OAAO,CACL,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,CAAC;QACtE,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC;QAChE,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;QAC7D,CAAC,SAAS,CAAC,YAAY,KAAK,SAAS;YACnC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC;QAC/D,CAAC,SAAS,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,CAAC,CAC9D,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAkB;IACrC,OAAO,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAA;AAC7B,CAAC;AAED,SAAS,QAAQ,CAAC,IAAgB;IAChC,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;AAC/E,CAAC;AAED,SAAS,MAAM,CAAC,IAAuB,EAAE,KAAwB;IAC/D,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC5E,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACjD,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,IAAI;QAAE,QAAQ,IAAI,SAAS,GAAG,SAAS,CAAA;IAC/D,KAAK,MAAM,SAAS,IAAI,KAAK;QAAE,SAAS,IAAI,SAAS,GAAG,SAAS,CAAA;IACjE,OAAO,QAAQ,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAA;AACtF,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,GAAG,CACZ,IAAI;SACD,WAAW,EAAE;SACb,KAAK,CAAC,iBAAiB,CAAC;SACxB,MAAM,CAAC,OAAO,CAAC,CACnB,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAA0B,EAAE,OAAmB;IACnE,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IACxD,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,KAAK,MAAM,KAAK,IAAI,KAAK;QAAE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,IAAI,IAAI,CAAC,CAAA;IACzD,OAAO,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;AAC1B,CAAC"}
package/dist/memory.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  export { LogMemory } from "./memory/log-memory.js";
2
- export { MemoryBackend, MemoryHandle, RecallBuilder, RememberBuilder } from "./memory/handle.js";
3
- export { MemoryTopicBuilder } from "./memory/topic.js";
4
- export { Lifetime, MemoryClass, MemoryId, MemoryKind, RecallStrategy, fuseReciprocalRank, memoryClass, toContextBlock } from "./memory/types.js";
5
- export type { ConsolidationReport, Consolidator, Embedder, Feedback, Memory, MemoryItem, MemoryQuery, MemoryScope, RecallSignal, Reranker } from "./memory/types.js";
6
- export { VectorMemory, ZeroEmbedder } from "./memory/vector-memory.js";
2
+ export { MemoryBackend, MemoryHandle, RecallBuilder, RememberBuilder, RerankedMemory } from "./memory/handle.js";
3
+ export type { MemoryBackendKind } from "./memory/handle.js";
4
+ export { DEFAULT_MEMORY_TOPIC_TTL_MS, MemoryTopicBuilder } from "./memory/topic.js";
5
+ export { Lifetime, MemoryClass, MemoryId, MemoryKind, RecallStrategy, fuseReciprocalRank, memoryClass, memoryItemJson, memoryItemText, memoryKindCode, toContextBlock } from "./memory/types.js";
6
+ export type { ConsolidateOptions, ConsolidationReport, Consolidator, Embedder, Feedback, Memory, MemoryItem, MemoryQuery, MemoryScope, RecallSignal, Reranker, Summarizer } from "./memory/types.js";
7
+ export { VectorMemory } from "./memory/vector-memory.js";
7
8
  //# sourceMappingURL=memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,cAAc,EACf,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,mBAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,QAAQ,EACT,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,eAAe,EACf,cAAc,EACf,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACnF,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACf,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,UAAU,EACX,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA"}
package/dist/memory.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { LogMemory } from "./memory/log-memory.js";
2
- export { MemoryBackend, MemoryHandle, RecallBuilder, RememberBuilder } from "./memory/handle.js";
3
- export { MemoryTopicBuilder } from "./memory/topic.js";
4
- export { Lifetime, MemoryClass, MemoryId, MemoryKind, RecallStrategy, fuseReciprocalRank, memoryClass, toContextBlock } from "./memory/types.js";
5
- export { VectorMemory, ZeroEmbedder } from "./memory/vector-memory.js";
2
+ export { MemoryBackend, MemoryHandle, RecallBuilder, RememberBuilder, RerankedMemory } from "./memory/handle.js";
3
+ export { DEFAULT_MEMORY_TOPIC_TTL_MS, MemoryTopicBuilder } from "./memory/topic.js";
4
+ export { Lifetime, MemoryClass, MemoryId, MemoryKind, RecallStrategy, fuseReciprocalRank, memoryClass, memoryItemJson, memoryItemText, memoryKindCode, toContextBlock } from "./memory/types.js";
5
+ export { VectorMemory } from "./memory/vector-memory.js";
6
6
  //# sourceMappingURL=memory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,cAAc,EACf,MAAM,mBAAmB,CAAA;AAa1B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,eAAe,EACf,cAAc,EACf,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACnF,OAAO,EACL,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACf,MAAM,mBAAmB,CAAA;AAe1B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA"}
@@ -9,6 +9,8 @@ export declare const AgentTopic: {
9
9
  readonly Registry: "agent.registry";
10
10
  readonly WorkflowJournal: "agent.workflow_journal";
11
11
  readonly Dlq: "agent.dlq";
12
+ /** Any other topic, by name. */
13
+ readonly Custom: (name: string) => string;
12
14
  };
13
- export type AgentTopic = (typeof AgentTopic)[keyof typeof AgentTopic];
15
+ export type AgentTopic = Exclude<(typeof AgentTopic)[keyof typeof AgentTopic], typeof AgentTopic.Custom>;
14
16
  //# sourceMappingURL=agent-topic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-topic.d.ts","sourceRoot":"","sources":["../../src/provenance/agent-topic.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;aACrB,QAAQ,EAAE,gBAAgB;aAC1B,SAAS,EAAE,iBAAiB;aAC5B,SAAS,EAAE,kBAAkB;aAC7B,WAAW,EAAE,oBAAoB;aACjC,KAAK,EAAE,cAAc;aACrB,UAAU,EAAE,mBAAmB;aAC/B,KAAK,EAAE,aAAa;aACpB,QAAQ,EAAE,gBAAgB;aAC1B,eAAe,EAAE,wBAAwB;aACzC,GAAG,EAAE,WAAW;CACR,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAA"}
1
+ {"version":3,"file":"agent-topic.d.ts","sourceRoot":"","sources":["../../src/provenance/agent-topic.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;aACrB,QAAQ,EAAE,gBAAgB;aAC1B,SAAS,EAAE,iBAAiB;aAC5B,SAAS,EAAE,kBAAkB;aAC7B,WAAW,EAAE,oBAAoB;aACjC,KAAK,EAAE,cAAc;aACrB,UAAU,EAAE,mBAAmB;aAC/B,KAAK,EAAE,aAAa;aACpB,QAAQ,EAAE,gBAAgB;aAC1B,eAAe,EAAE,wBAAwB;aACzC,GAAG,EAAE,WAAW;IAChB,gCAAgC;aAChC,MAAM,SAAS,MAAM,KAAG,MAAM;CACtB,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,OAAO,CAC9B,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,EAC5C,OAAO,UAAU,CAAC,MAAM,CACzB,CAAA"}
@@ -8,6 +8,8 @@ export const AgentTopic = {
8
8
  Audit: "agent.audit",
9
9
  Registry: "agent.registry",
10
10
  WorkflowJournal: "agent.workflow_journal",
11
- Dlq: "agent.dlq"
11
+ Dlq: "agent.dlq",
12
+ /** Any other topic, by name. */
13
+ Custom: (name) => name
12
14
  };
13
15
  //# sourceMappingURL=agent-topic.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-topic.js","sourceRoot":"","sources":["../../src/provenance/agent-topic.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ,EAAE,gBAAgB;IAC1B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,kBAAkB;IAC7B,WAAW,EAAE,oBAAoB;IACjC,KAAK,EAAE,cAAc;IACrB,UAAU,EAAE,mBAAmB;IAC/B,KAAK,EAAE,aAAa;IACpB,QAAQ,EAAE,gBAAgB;IAC1B,eAAe,EAAE,wBAAwB;IACzC,GAAG,EAAE,WAAW;CACR,CAAA"}
1
+ {"version":3,"file":"agent-topic.js","sourceRoot":"","sources":["../../src/provenance/agent-topic.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ,EAAE,gBAAgB;IAC1B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,kBAAkB;IAC7B,WAAW,EAAE,oBAAoB;IACjC,KAAK,EAAE,cAAc;IACrB,UAAU,EAAE,mBAAmB;IAC/B,KAAK,EAAE,aAAa;IACpB,QAAQ,EAAE,gBAAgB;IAC1B,eAAe,EAAE,wBAAwB;IACzC,GAAG,EAAE,WAAW;IAChB,gCAAgC;IAChC,MAAM,EAAE,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI;CAC9B,CAAA"}