@laserdata/laser-sdk 0.0.1-rc.21 → 0.0.1-rc.22

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 (434) hide show
  1. package/README.md +1 -1
  2. package/dist/agent/agdx.d.ts +55 -0
  3. package/dist/agent/agdx.d.ts.map +1 -0
  4. package/dist/agent/agdx.js +447 -0
  5. package/dist/agent/agdx.js.map +1 -0
  6. package/dist/agent/assembler.d.ts +29 -0
  7. package/dist/agent/assembler.d.ts.map +1 -0
  8. package/dist/agent/assembler.js +69 -0
  9. package/dist/agent/assembler.js.map +1 -0
  10. package/dist/agent/builder.d.ts +114 -0
  11. package/dist/agent/builder.d.ts.map +1 -0
  12. package/dist/agent/builder.js +334 -0
  13. package/dist/agent/builder.js.map +1 -0
  14. package/dist/agent/context.d.ts +68 -0
  15. package/dist/agent/context.d.ts.map +1 -0
  16. package/dist/agent/context.js +212 -0
  17. package/dist/agent/context.js.map +1 -0
  18. package/dist/agent/contract.d.ts +70 -0
  19. package/dist/agent/contract.d.ts.map +1 -0
  20. package/dist/agent/contract.js +275 -0
  21. package/dist/agent/contract.js.map +1 -0
  22. package/dist/agent/registry.d.ts +76 -0
  23. package/dist/agent/registry.d.ts.map +1 -0
  24. package/dist/agent/registry.js +286 -0
  25. package/dist/agent/registry.js.map +1 -0
  26. package/dist/agent/reliable-consumer.d.ts +126 -0
  27. package/dist/agent/reliable-consumer.d.ts.map +1 -0
  28. package/dist/agent/reliable-consumer.js +551 -0
  29. package/dist/agent/reliable-consumer.js.map +1 -0
  30. package/dist/agent/replies.d.ts +28 -0
  31. package/dist/agent/replies.d.ts.map +1 -0
  32. package/dist/agent/replies.js +175 -0
  33. package/dist/agent/replies.js.map +1 -0
  34. package/dist/agent/router.d.ts +72 -0
  35. package/dist/agent/router.d.ts.map +1 -0
  36. package/dist/agent/router.js +172 -0
  37. package/dist/agent/router.js.map +1 -0
  38. package/dist/agent/scope.d.ts +16 -0
  39. package/dist/agent/scope.d.ts.map +1 -0
  40. package/dist/agent/scope.js +34 -0
  41. package/dist/agent/scope.js.map +1 -0
  42. package/dist/agent/workflow.d.ts +85 -0
  43. package/dist/agent/workflow.d.ts.map +1 -0
  44. package/dist/agent/workflow.js +416 -0
  45. package/dist/agent/workflow.js.map +1 -0
  46. package/dist/blob.d.ts +12 -0
  47. package/dist/blob.d.ts.map +1 -0
  48. package/dist/blob.js +34 -0
  49. package/dist/blob.js.map +1 -0
  50. package/dist/bridges/a2a.d.ts +89 -0
  51. package/dist/bridges/a2a.d.ts.map +1 -0
  52. package/dist/bridges/a2a.js +244 -0
  53. package/dist/bridges/a2a.js.map +1 -0
  54. package/dist/bridges/agui.d.ts +66 -0
  55. package/dist/bridges/agui.d.ts.map +1 -0
  56. package/dist/bridges/agui.js +335 -0
  57. package/dist/bridges/agui.js.map +1 -0
  58. package/dist/bridges/edge-auth.d.ts +16 -0
  59. package/dist/bridges/edge-auth.d.ts.map +1 -0
  60. package/dist/bridges/edge-auth.js +19 -0
  61. package/dist/bridges/edge-auth.js.map +1 -0
  62. package/dist/bridges/hops.d.ts +9 -0
  63. package/dist/bridges/hops.d.ts.map +1 -0
  64. package/dist/bridges/hops.js +16 -0
  65. package/dist/bridges/hops.js.map +1 -0
  66. package/dist/bridges/mcp.d.ts +79 -0
  67. package/dist/bridges/mcp.d.ts.map +1 -0
  68. package/dist/bridges/mcp.js +248 -0
  69. package/dist/bridges/mcp.js.map +1 -0
  70. package/dist/client/bytes.d.ts +3 -0
  71. package/dist/client/bytes.d.ts.map +1 -0
  72. package/dist/client/bytes.js +9 -0
  73. package/dist/client/bytes.js.map +1 -0
  74. package/dist/client/capabilities.d.ts +36 -0
  75. package/dist/client/capabilities.d.ts.map +1 -0
  76. package/dist/client/capabilities.js +91 -0
  77. package/dist/client/capabilities.js.map +1 -0
  78. package/dist/client/errors.d.ts +178 -0
  79. package/dist/client/errors.d.ts.map +1 -0
  80. package/dist/client/errors.js +192 -0
  81. package/dist/client/errors.js.map +1 -0
  82. package/dist/client/internals.d.ts +5 -0
  83. package/dist/client/internals.d.ts.map +1 -0
  84. package/dist/client/internals.js +5 -0
  85. package/dist/client/internals.js.map +1 -0
  86. package/dist/client/laser.d.ts +238 -0
  87. package/dist/client/laser.d.ts.map +1 -0
  88. package/dist/client/laser.js +831 -0
  89. package/dist/client/laser.js.map +1 -0
  90. package/dist/client/laserdata-ca.d.ts +2 -0
  91. package/dist/client/laserdata-ca.d.ts.map +1 -0
  92. package/dist/client/laserdata-ca.js +35 -0
  93. package/dist/client/laserdata-ca.js.map +1 -0
  94. package/dist/client/managed.d.ts +6 -0
  95. package/dist/client/managed.d.ts.map +1 -0
  96. package/dist/client/managed.js +19 -0
  97. package/dist/client/managed.js.map +1 -0
  98. package/dist/context-scope.d.ts +40 -0
  99. package/dist/context-scope.d.ts.map +1 -0
  100. package/dist/context-scope.js +73 -0
  101. package/dist/context-scope.js.map +1 -0
  102. package/dist/context.d.ts +64 -0
  103. package/dist/context.d.ts.map +1 -0
  104. package/dist/context.js +149 -0
  105. package/dist/context.js.map +1 -0
  106. package/dist/conversation-state.d.ts +24 -0
  107. package/dist/conversation-state.d.ts.map +1 -0
  108. package/dist/conversation-state.js +29 -0
  109. package/dist/conversation-state.js.map +1 -0
  110. package/dist/crash-context.d.ts +11 -0
  111. package/dist/crash-context.d.ts.map +1 -0
  112. package/dist/crash-context.js +62 -0
  113. package/dist/crash-context.js.map +1 -0
  114. package/dist/full.d.ts +3 -0
  115. package/dist/full.d.ts.map +1 -0
  116. package/dist/full.js +3 -0
  117. package/dist/full.js.map +1 -0
  118. package/dist/govern.d.ts +133 -0
  119. package/dist/govern.d.ts.map +1 -0
  120. package/dist/govern.js +347 -0
  121. package/dist/govern.js.map +1 -0
  122. package/dist/iggy/apache-iggy.d.ts +173 -0
  123. package/dist/iggy/apache-iggy.d.ts.map +1 -0
  124. package/dist/iggy/apache-iggy.js +634 -0
  125. package/dist/iggy/apache-iggy.js.map +1 -0
  126. package/dist/index.d.ts +121 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +64 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/intent.d.ts +75 -0
  131. package/dist/intent.d.ts.map +1 -0
  132. package/dist/intent.js +195 -0
  133. package/dist/intent.js.map +1 -0
  134. package/dist/managed/batch.d.ts +5 -0
  135. package/dist/managed/batch.d.ts.map +1 -0
  136. package/dist/managed/batch.js +32 -0
  137. package/dist/managed/batch.js.map +1 -0
  138. package/dist/managed/forks.d.ts +72 -0
  139. package/dist/managed/forks.d.ts.map +1 -0
  140. package/dist/managed/forks.js +188 -0
  141. package/dist/managed/forks.js.map +1 -0
  142. package/dist/managed/graph.d.ts +58 -0
  143. package/dist/managed/graph.d.ts.map +1 -0
  144. package/dist/managed/graph.js +176 -0
  145. package/dist/managed/graph.js.map +1 -0
  146. package/dist/managed/kv.d.ts +144 -0
  147. package/dist/managed/kv.d.ts.map +1 -0
  148. package/dist/managed/kv.js +502 -0
  149. package/dist/managed/kv.js.map +1 -0
  150. package/dist/managed/projections.d.ts +61 -0
  151. package/dist/managed/projections.d.ts.map +1 -0
  152. package/dist/managed/projections.js +191 -0
  153. package/dist/managed/projections.js.map +1 -0
  154. package/dist/managed/query.d.ts +72 -0
  155. package/dist/managed/query.d.ts.map +1 -0
  156. package/dist/managed/query.js +287 -0
  157. package/dist/managed/query.js.map +1 -0
  158. package/dist/managed/rbac.d.ts +16 -0
  159. package/dist/managed/rbac.d.ts.map +1 -0
  160. package/dist/managed/rbac.js +82 -0
  161. package/dist/managed/rbac.js.map +1 -0
  162. package/dist/managed/runs.d.ts +40 -0
  163. package/dist/managed/runs.d.ts.map +1 -0
  164. package/dist/managed/runs.js +112 -0
  165. package/dist/managed/runs.js.map +1 -0
  166. package/dist/managed/watch.d.ts +21 -0
  167. package/dist/managed/watch.d.ts.map +1 -0
  168. package/dist/managed/watch.js +73 -0
  169. package/dist/managed/watch.js.map +1 -0
  170. package/dist/memory/handle.d.ts +77 -0
  171. package/dist/memory/handle.d.ts.map +1 -0
  172. package/dist/memory/handle.js +234 -0
  173. package/dist/memory/handle.js.map +1 -0
  174. package/dist/memory/log-memory.d.ts +38 -0
  175. package/dist/memory/log-memory.d.ts.map +1 -0
  176. package/dist/memory/log-memory.js +309 -0
  177. package/dist/memory/log-memory.js.map +1 -0
  178. package/dist/memory/topic.d.ts +22 -0
  179. package/dist/memory/topic.d.ts.map +1 -0
  180. package/dist/memory/topic.js +56 -0
  181. package/dist/memory/topic.js.map +1 -0
  182. package/dist/memory/types.d.ts +108 -0
  183. package/dist/memory/types.d.ts.map +1 -0
  184. package/dist/memory/types.js +127 -0
  185. package/dist/memory/types.js.map +1 -0
  186. package/dist/memory/vector-memory.d.ts +20 -0
  187. package/dist/memory/vector-memory.d.ts.map +1 -0
  188. package/dist/memory/vector-memory.js +193 -0
  189. package/dist/memory/vector-memory.js.map +1 -0
  190. package/dist/memory.d.ts +7 -0
  191. package/dist/memory.d.ts.map +1 -0
  192. package/dist/memory.js +6 -0
  193. package/dist/memory.js.map +1 -0
  194. package/dist/observe.d.ts +10 -0
  195. package/dist/observe.d.ts.map +1 -0
  196. package/dist/observe.js +5 -0
  197. package/dist/observe.js.map +1 -0
  198. package/dist/opentelemetry.d.ts +22 -0
  199. package/dist/opentelemetry.d.ts.map +1 -0
  200. package/dist/opentelemetry.js +38 -0
  201. package/dist/opentelemetry.js.map +1 -0
  202. package/dist/provenance/agent-topic.d.ts +14 -0
  203. package/dist/provenance/agent-topic.d.ts.map +1 -0
  204. package/dist/provenance/agent-topic.js +13 -0
  205. package/dist/provenance/agent-topic.js.map +1 -0
  206. package/dist/provenance/provenance.d.ts +24 -0
  207. package/dist/provenance/provenance.d.ts.map +1 -0
  208. package/dist/provenance/provenance.js +186 -0
  209. package/dist/provenance/provenance.js.map +1 -0
  210. package/dist/provenance/session-policy.d.ts +4 -0
  211. package/dist/provenance/session-policy.d.ts.map +1 -0
  212. package/dist/provenance/session-policy.js +5 -0
  213. package/dist/provenance/session-policy.js.map +1 -0
  214. package/dist/runtime/async-once.d.ts +6 -0
  215. package/dist/runtime/async-once.d.ts.map +1 -0
  216. package/dist/runtime/async-once.js +19 -0
  217. package/dist/runtime/async-once.js.map +1 -0
  218. package/dist/runtime/clock.d.ts +14 -0
  219. package/dist/runtime/clock.d.ts.map +1 -0
  220. package/dist/runtime/clock.js +21 -0
  221. package/dist/runtime/clock.js.map +1 -0
  222. package/dist/runtime/mutex.d.ts +5 -0
  223. package/dist/runtime/mutex.d.ts.map +1 -0
  224. package/dist/runtime/mutex.js +23 -0
  225. package/dist/runtime/mutex.js.map +1 -0
  226. package/dist/runtime/ulid.d.ts +7 -0
  227. package/dist/runtime/ulid.d.ts.map +1 -0
  228. package/dist/runtime/ulid.js +17 -0
  229. package/dist/runtime/ulid.js.map +1 -0
  230. package/dist/schema-codecs.d.ts +16 -0
  231. package/dist/schema-codecs.d.ts.map +1 -0
  232. package/dist/schema-codecs.js +174 -0
  233. package/dist/schema-codecs.js.map +1 -0
  234. package/dist/signing.d.ts +63 -0
  235. package/dist/signing.d.ts.map +1 -0
  236. package/dist/signing.js +288 -0
  237. package/dist/signing.js.map +1 -0
  238. package/dist/snapshot.d.ts +24 -0
  239. package/dist/snapshot.d.ts.map +1 -0
  240. package/dist/snapshot.js +80 -0
  241. package/dist/snapshot.js.map +1 -0
  242. package/dist/state-store.d.ts +20 -0
  243. package/dist/state-store.d.ts.map +1 -0
  244. package/dist/state-store.js +70 -0
  245. package/dist/state-store.js.map +1 -0
  246. package/dist/stream/codecs.d.ts +9 -0
  247. package/dist/stream/codecs.d.ts.map +1 -0
  248. package/dist/stream/codecs.js +83 -0
  249. package/dist/stream/codecs.js.map +1 -0
  250. package/dist/stream/consumer.d.ts +50 -0
  251. package/dist/stream/consumer.d.ts.map +1 -0
  252. package/dist/stream/consumer.js +145 -0
  253. package/dist/stream/consumer.js.map +1 -0
  254. package/dist/stream/cursor.d.ts +26 -0
  255. package/dist/stream/cursor.d.ts.map +1 -0
  256. package/dist/stream/cursor.js +83 -0
  257. package/dist/stream/cursor.js.map +1 -0
  258. package/dist/stream/header-value.d.ts +18 -0
  259. package/dist/stream/header-value.d.ts.map +1 -0
  260. package/dist/stream/header-value.js +70 -0
  261. package/dist/stream/header-value.js.map +1 -0
  262. package/dist/stream/polling-strategy.d.ts +14 -0
  263. package/dist/stream/polling-strategy.d.ts.map +1 -0
  264. package/dist/stream/polling-strategy.js +2 -0
  265. package/dist/stream/polling-strategy.js.map +1 -0
  266. package/dist/stream/producer.d.ts +44 -0
  267. package/dist/stream/producer.d.ts.map +1 -0
  268. package/dist/stream/producer.js +125 -0
  269. package/dist/stream/producer.js.map +1 -0
  270. package/dist/stream/publish.d.ts +83 -0
  271. package/dist/stream/publish.d.ts.map +1 -0
  272. package/dist/stream/publish.js +287 -0
  273. package/dist/stream/publish.js.map +1 -0
  274. package/dist/stream/record.d.ts +29 -0
  275. package/dist/stream/record.d.ts.map +1 -0
  276. package/dist/stream/record.js +152 -0
  277. package/dist/stream/record.js.map +1 -0
  278. package/dist/stream/routing.d.ts +10 -0
  279. package/dist/stream/routing.d.ts.map +1 -0
  280. package/dist/stream/routing.js +2 -0
  281. package/dist/stream/routing.js.map +1 -0
  282. package/dist/stream/stream.d.ts +14 -0
  283. package/dist/stream/stream.d.ts.map +1 -0
  284. package/dist/stream/stream.js +26 -0
  285. package/dist/stream/stream.js.map +1 -0
  286. package/dist/stream/topic.d.ts +52 -0
  287. package/dist/stream/topic.d.ts.map +1 -0
  288. package/dist/stream/topic.js +181 -0
  289. package/dist/stream/topic.js.map +1 -0
  290. package/dist/stream/typed-topic.d.ts +59 -0
  291. package/dist/stream/typed-topic.d.ts.map +1 -0
  292. package/dist/stream/typed-topic.js +119 -0
  293. package/dist/stream/typed-topic.js.map +1 -0
  294. package/dist/swarm.d.ts +16 -0
  295. package/dist/swarm.d.ts.map +1 -0
  296. package/dist/swarm.js +40 -0
  297. package/dist/swarm.js.map +1 -0
  298. package/dist/testing.d.ts +16 -0
  299. package/dist/testing.d.ts.map +1 -0
  300. package/dist/testing.js +19 -0
  301. package/dist/testing.js.map +1 -0
  302. package/dist/types/ids.d.ts +48 -0
  303. package/dist/types/ids.d.ts.map +1 -0
  304. package/dist/types/ids.js +161 -0
  305. package/dist/types/ids.js.map +1 -0
  306. package/dist/wire/agent-record.d.ts +24 -0
  307. package/dist/wire/agent-record.d.ts.map +1 -0
  308. package/dist/wire/agent-record.js +99 -0
  309. package/dist/wire/agent-record.js.map +1 -0
  310. package/dist/wire/agent-workflow.d.ts +118 -0
  311. package/dist/wire/agent-workflow.d.ts.map +1 -0
  312. package/dist/wire/agent-workflow.js +290 -0
  313. package/dist/wire/agent-workflow.js.map +1 -0
  314. package/dist/wire/agent.d.ts +255 -0
  315. package/dist/wire/agent.d.ts.map +1 -0
  316. package/dist/wire/agent.js +792 -0
  317. package/dist/wire/agent.js.map +1 -0
  318. package/dist/wire/authz.d.ts +186 -0
  319. package/dist/wire/authz.d.ts.map +1 -0
  320. package/dist/wire/authz.js +545 -0
  321. package/dist/wire/authz.js.map +1 -0
  322. package/dist/wire/batch.d.ts +17 -0
  323. package/dist/wire/batch.d.ts.map +1 -0
  324. package/dist/wire/batch.js +41 -0
  325. package/dist/wire/batch.js.map +1 -0
  326. package/dist/wire/browse.d.ts +96 -0
  327. package/dist/wire/browse.d.ts.map +1 -0
  328. package/dist/wire/browse.js +201 -0
  329. package/dist/wire/browse.js.map +1 -0
  330. package/dist/wire/cbor.d.ts +35 -0
  331. package/dist/wire/cbor.d.ts.map +1 -0
  332. package/dist/wire/cbor.js +231 -0
  333. package/dist/wire/cbor.js.map +1 -0
  334. package/dist/wire/change.d.ts +12 -0
  335. package/dist/wire/change.d.ts.map +1 -0
  336. package/dist/wire/change.js +22 -0
  337. package/dist/wire/change.js.map +1 -0
  338. package/dist/wire/clients.d.ts +27 -0
  339. package/dist/wire/clients.d.ts.map +1 -0
  340. package/dist/wire/clients.js +64 -0
  341. package/dist/wire/clients.js.map +1 -0
  342. package/dist/wire/codes.d.ts +67 -0
  343. package/dist/wire/codes.d.ts.map +1 -0
  344. package/dist/wire/codes.js +67 -0
  345. package/dist/wire/codes.js.map +1 -0
  346. package/dist/wire/commands.d.ts +68 -0
  347. package/dist/wire/commands.d.ts.map +1 -0
  348. package/dist/wire/commands.js +140 -0
  349. package/dist/wire/commands.js.map +1 -0
  350. package/dist/wire/content.d.ts +17 -0
  351. package/dist/wire/content.d.ts.map +1 -0
  352. package/dist/wire/content.js +47 -0
  353. package/dist/wire/content.js.map +1 -0
  354. package/dist/wire/control.d.ts +170 -0
  355. package/dist/wire/control.d.ts.map +1 -0
  356. package/dist/wire/control.js +453 -0
  357. package/dist/wire/control.js.map +1 -0
  358. package/dist/wire/fork.d.ts +112 -0
  359. package/dist/wire/fork.d.ts.map +1 -0
  360. package/dist/wire/fork.js +280 -0
  361. package/dist/wire/fork.js.map +1 -0
  362. package/dist/wire/forward.d.ts +23 -0
  363. package/dist/wire/forward.d.ts.map +1 -0
  364. package/dist/wire/forward.js +72 -0
  365. package/dist/wire/forward.js.map +1 -0
  366. package/dist/wire/graph.d.ts +181 -0
  367. package/dist/wire/graph.d.ts.map +1 -0
  368. package/dist/wire/graph.js +554 -0
  369. package/dist/wire/graph.js.map +1 -0
  370. package/dist/wire/hashing.d.ts +2 -0
  371. package/dist/wire/hashing.d.ts.map +1 -0
  372. package/dist/wire/hashing.js +21 -0
  373. package/dist/wire/hashing.js.map +1 -0
  374. package/dist/wire/headers.d.ts +32 -0
  375. package/dist/wire/headers.d.ts.map +1 -0
  376. package/dist/wire/headers.js +32 -0
  377. package/dist/wire/headers.js.map +1 -0
  378. package/dist/wire/hello.d.ts +50 -0
  379. package/dist/wire/hello.d.ts.map +1 -0
  380. package/dist/wire/hello.js +122 -0
  381. package/dist/wire/hello.js.map +1 -0
  382. package/dist/wire/http.d.ts +95 -0
  383. package/dist/wire/http.d.ts.map +1 -0
  384. package/dist/wire/http.js +282 -0
  385. package/dist/wire/http.js.map +1 -0
  386. package/dist/wire/ids.d.ts +50 -0
  387. package/dist/wire/ids.d.ts.map +1 -0
  388. package/dist/wire/ids.js +198 -0
  389. package/dist/wire/ids.js.map +1 -0
  390. package/dist/wire/index.d.ts +32 -0
  391. package/dist/wire/index.d.ts.map +1 -0
  392. package/dist/wire/index.js +32 -0
  393. package/dist/wire/index.js.map +1 -0
  394. package/dist/wire/kv.d.ts +260 -0
  395. package/dist/wire/kv.d.ts.map +1 -0
  396. package/dist/wire/kv.js +650 -0
  397. package/dist/wire/kv.js.map +1 -0
  398. package/dist/wire/limits.d.ts +36 -0
  399. package/dist/wire/limits.d.ts.map +1 -0
  400. package/dist/wire/limits.js +36 -0
  401. package/dist/wire/limits.js.map +1 -0
  402. package/dist/wire/memory.d.ts +17 -0
  403. package/dist/wire/memory.d.ts.map +1 -0
  404. package/dist/wire/memory.js +65 -0
  405. package/dist/wire/memory.js.map +1 -0
  406. package/dist/wire/mutation.d.ts +10 -0
  407. package/dist/wire/mutation.d.ts.map +1 -0
  408. package/dist/wire/mutation.js +18 -0
  409. package/dist/wire/mutation.js.map +1 -0
  410. package/dist/wire/query.d.ts +210 -0
  411. package/dist/wire/query.d.ts.map +1 -0
  412. package/dist/wire/query.js +594 -0
  413. package/dist/wire/query.js.map +1 -0
  414. package/dist/wire/result.d.ts +25 -0
  415. package/dist/wire/result.d.ts.map +1 -0
  416. package/dist/wire/result.js +52 -0
  417. package/dist/wire/result.js.map +1 -0
  418. package/dist/wire/snapshot.d.ts +11 -0
  419. package/dist/wire/snapshot.d.ts.map +1 -0
  420. package/dist/wire/snapshot.js +50 -0
  421. package/dist/wire/snapshot.js.map +1 -0
  422. package/dist/wire/topics.d.ts +5 -0
  423. package/dist/wire/topics.d.ts.map +1 -0
  424. package/dist/wire/topics.js +5 -0
  425. package/dist/wire/topics.js.map +1 -0
  426. package/dist/wire/topology.d.ts +24 -0
  427. package/dist/wire/topology.d.ts.map +1 -0
  428. package/dist/wire/topology.js +56 -0
  429. package/dist/wire/topology.js.map +1 -0
  430. package/dist/wire/value.d.ts +21 -0
  431. package/dist/wire/value.d.ts.map +1 -0
  432. package/dist/wire/value.js +40 -0
  433. package/dist/wire/value.js.map +1 -0
  434. package/package.json +2 -1
@@ -0,0 +1,309 @@
1
+ import { NoStreamError } from "../client/errors.js";
2
+ import { INTERNAL_GOVERN, INTERNAL_TRANSPORT } from "../client/internals.js";
3
+ import { ActionKind } from "../govern.js";
4
+ import { AgentTopic } from "../provenance/agent-topic.js";
5
+ import { decodeProvenanceHeaders, encodeProvenanceHeaders } from "../provenance/provenance.js";
6
+ import { AgentId, ConversationId } from "../types/ids.js";
7
+ import { MEMORY_APP, MEMORY_NAMESPACE, MEMORY_USER } from "../wire/headers.js";
8
+ import { decodeOne } from "../wire/cbor.js";
9
+ import { decodeMemoryRecord, encodeMemoryRecordFrame } from "../wire/memory.js";
10
+ import { MemoryId, MemoryKind, RecallStrategy } from "./types.js";
11
+ export class LogMemory {
12
+ laser;
13
+ namespace;
14
+ topic;
15
+ stream;
16
+ items = new Map();
17
+ forgotten = new Set();
18
+ named = new Map();
19
+ offsets = new Map();
20
+ sequence = 0;
21
+ constructor(laser, namespace, topic = AgentTopic.Audit, stream = laser.defaultStream) {
22
+ this.laser = laser;
23
+ this.namespace = namespace;
24
+ this.topic = topic;
25
+ this.stream = stream;
26
+ }
27
+ async remember(scope, payload) {
28
+ return this.append(scope, MemoryId.new(), MemoryKind.Fact, payload);
29
+ }
30
+ async append(scope, id, kind, payload) {
31
+ await this.publish(scope, id.toString(), {
32
+ kind: "item",
33
+ id: id.toString(),
34
+ memoryKind: kind,
35
+ body: payload.slice()
36
+ });
37
+ return id;
38
+ }
39
+ /** Reads the managed key-value view the deployment materializes from the
40
+ * memory topic, so a large topic never folds in process. Folding is the
41
+ * opt-in {@link LogMemory.recallFolded}, never the default, matching Rust and Python. */
42
+ async recall(scope, query) {
43
+ const { conversation } = scope;
44
+ if (conversation === undefined)
45
+ return [];
46
+ // One conversation's memory is bounded by the lens, so page through it and
47
+ // keep the most recent `limit`. Ids are time-ordered ULIDs, so the tail
48
+ // after sorting is the newest.
49
+ const entries = await this.laser
50
+ .kv(this.namespace)
51
+ .scan()
52
+ .conversation(conversation.toString())
53
+ .entries();
54
+ const agent = query.agent ?? scope.agent;
55
+ const items = entries
56
+ .map((entry) => itemFromEntry(conversation, entry))
57
+ .filter((item) => item !== undefined)
58
+ .filter((item) => agent === undefined || item.provenance.agent?.equals(agent) === true)
59
+ .sort((left, right) => (left.id.toString() < right.id.toString() ? -1 : 1));
60
+ const limit = query.limit ?? 50;
61
+ return items.length > limit ? items.slice(items.length - limit) : items;
62
+ }
63
+ /** Recall by folding the memory topic in process, the opt-in path for a small
64
+ * deployment with no materialized read view. */
65
+ async recallFolded(scope, query) {
66
+ await this.catchUp();
67
+ const agent = query.agent ?? scope.agent;
68
+ const matched = [...this.items.values()]
69
+ .filter((entry) => matchesScope(entry.scope, scope, agent))
70
+ .sort((left, right) => right.feedback - left.feedback || right.sequence - left.sequence)
71
+ .slice(0, query.limit ?? 50);
72
+ const strategy = query.strategy ?? RecallStrategy.Auto;
73
+ return matched.map((entry, rank) => ({
74
+ ...entry.item,
75
+ payload: entry.item.payload.slice(),
76
+ ...(entry.feedback !== 0 ? { score: entry.feedback } : {}),
77
+ signals: entry.feedback === 0 ? [] : [{ strategy, rank, score: entry.feedback }]
78
+ }));
79
+ }
80
+ async improve(scope, feedback) {
81
+ const id = MemoryId.new();
82
+ await this.publish(scope, id.toString(), {
83
+ kind: "feedback",
84
+ target: feedback.target.toString(),
85
+ weight: feedback.weight
86
+ });
87
+ return id;
88
+ }
89
+ async forget(scope, id) {
90
+ await this.publish(scope, id.toString(), { kind: "forget", target: id.toString() });
91
+ }
92
+ async set(key, payload) {
93
+ const id = this.namedKey(key);
94
+ await this.publish({}, id, {
95
+ kind: "item",
96
+ id,
97
+ memoryKind: MemoryKind.Fact,
98
+ body: payload.slice()
99
+ });
100
+ this.named.set(id, payload.slice());
101
+ }
102
+ /** Reads named point state from the managed key-value view, like {@link LogMemory.recall}.
103
+ * Folding the topic is the opt-in {@link LogMemory.fetchFolded}. */
104
+ async fetch(key) {
105
+ return this.laser.kv(this.namespace).get(new TextEncoder().encode(this.namedKey(key)));
106
+ }
107
+ async fetchFolded(key) {
108
+ await this.catchUp();
109
+ return this.named.get(this.namedKey(key))?.slice();
110
+ }
111
+ async update(key, patch) {
112
+ const current = await this.fetchFolded(key);
113
+ const base = current === undefined ? null : JSON.parse(new TextDecoder().decode(current));
114
+ const patchValue = JSON.parse(new TextDecoder().decode(patch));
115
+ const merged = mergePatch(base, patchValue);
116
+ await this.set(key, new TextEncoder().encode(JSON.stringify(merged)));
117
+ }
118
+ async remove(key) {
119
+ const id = this.namedKey(key);
120
+ await this.publish({}, id, { kind: "forget", target: id });
121
+ this.named.delete(id);
122
+ }
123
+ async publish(scope, idempotencyKey, record) {
124
+ const stream = this.requireStream();
125
+ const conversation = scope.conversation ?? ConversationId.derive(idempotencyKey);
126
+ const headers = new Map(encodeProvenanceHeaders({
127
+ conversationId: conversation,
128
+ ...(scope.agent !== undefined ? { agent: scope.agent } : {}),
129
+ idempotencyKey
130
+ }));
131
+ headers.set(MEMORY_NAMESPACE, stringHeader(this.namespace));
132
+ if (scope.user !== undefined)
133
+ headers.set(MEMORY_USER, stringHeader(scope.user));
134
+ if (scope.application !== undefined)
135
+ headers.set(MEMORY_APP, stringHeader(scope.application));
136
+ const encoded = encodeMemoryRecordFrame(record);
137
+ const payload = await this.laser[INTERNAL_GOVERN]({
138
+ kind: ActionKind.MemoryWrite,
139
+ stream,
140
+ topic: this.topic,
141
+ ...(scope.agent !== undefined ? { source: scope.agent.asString() } : {}),
142
+ conversation,
143
+ payload: encoded,
144
+ signed: false
145
+ });
146
+ await this.laser[INTERNAL_TRANSPORT]().sendMessageWithHeaders(stream, this.topic, payload, headers, conversation.toString());
147
+ }
148
+ async catchUp() {
149
+ const stream = this.requireStream();
150
+ const cursor = await this.laser.stream(stream).topic(this.topic).replay({ batchSize: 1000 });
151
+ const topicIds = await this.laser[INTERNAL_TRANSPORT]().resolveStreamTopicIds?.(stream, this.topic);
152
+ cursor.fromOffsets(this.offsets);
153
+ for (;;) {
154
+ const messages = await cursor.poll();
155
+ if (messages.length === 0)
156
+ break;
157
+ for (const message of messages) {
158
+ this.offsets.set(message.partitionId, message.offset + 1n);
159
+ if (headerString(message.headers, MEMORY_NAMESPACE) !== this.namespace)
160
+ continue;
161
+ let record;
162
+ try {
163
+ record = decodeMemoryRecord(decodeOne(message.payload, "memory record"), "memory record");
164
+ }
165
+ catch {
166
+ continue;
167
+ }
168
+ this.absorb(record, message.headers, topicIds === undefined
169
+ ? undefined
170
+ : {
171
+ kind: "message",
172
+ stream: topicIds.streamId,
173
+ topic: topicIds.topicId,
174
+ partition: message.partitionId,
175
+ offset: message.offset
176
+ });
177
+ }
178
+ }
179
+ }
180
+ absorb(record, headers, source) {
181
+ if (record.kind === "forget") {
182
+ this.items.delete(record.target);
183
+ this.forgotten.add(record.target);
184
+ this.named.delete(record.target);
185
+ return;
186
+ }
187
+ if (record.kind === "feedback") {
188
+ const entry = this.items.get(record.target);
189
+ if (entry !== undefined)
190
+ entry.feedback += record.weight;
191
+ return;
192
+ }
193
+ if (record.id.startsWith(`${this.namespace}/`)) {
194
+ this.named.set(record.id, record.body.slice());
195
+ return;
196
+ }
197
+ if (this.forgotten.has(record.id) || this.items.has(record.id))
198
+ return;
199
+ const id = MemoryId.parse(record.id);
200
+ const provenance = decodeProvenanceHeaders(headers);
201
+ const user = headerString(headers, MEMORY_USER);
202
+ const application = headerString(headers, MEMORY_APP);
203
+ const scope = {
204
+ ...(user !== undefined ? { user } : {}),
205
+ ...(provenance.agent !== undefined ? { agent: provenance.agent } : {}),
206
+ conversation: provenance.conversationId,
207
+ ...(application !== undefined ? { application } : {}),
208
+ ...(this.stream !== undefined ? { stream: this.stream } : {})
209
+ };
210
+ this.items.set(record.id, {
211
+ item: {
212
+ id,
213
+ payload: record.body.slice(),
214
+ provenance,
215
+ kind: parseKind(record.memoryKind),
216
+ signals: [],
217
+ ...(source === undefined
218
+ ? {}
219
+ : {
220
+ source: {
221
+ ...source,
222
+ ...(source.kind === "message"
223
+ ? { conversation: provenance.conversationId.toString() }
224
+ : {})
225
+ }
226
+ })
227
+ },
228
+ scope,
229
+ sequence: this.sequence,
230
+ feedback: 0
231
+ });
232
+ this.sequence += 1;
233
+ }
234
+ namedKey(key) {
235
+ return `${this.namespace}/${key}`;
236
+ }
237
+ requireStream() {
238
+ if (this.stream === undefined) {
239
+ throw new NoStreamError("log memory requires a default stream");
240
+ }
241
+ return this.stream;
242
+ }
243
+ }
244
+ function stringHeader(value) {
245
+ return { kind: "string", value };
246
+ }
247
+ function headerString(headers, key) {
248
+ const value = headers.get(key);
249
+ return value?.kind === "string" ? value.value : undefined;
250
+ }
251
+ function parseKind(word) {
252
+ return Object.values(MemoryKind).includes(word)
253
+ ? word
254
+ : MemoryKind.Fact;
255
+ }
256
+ // Rebuild a memory item from a read-view row, or `undefined` when the key is a
257
+ // named-item key rather than a recall id, or the row carries no memory scope.
258
+ function itemFromEntry(conversation, entry) {
259
+ const { scope } = entry;
260
+ if (scope === undefined)
261
+ return undefined;
262
+ let id;
263
+ try {
264
+ id = MemoryId.parse(new TextDecoder().decode(entry.key));
265
+ }
266
+ catch {
267
+ return undefined;
268
+ }
269
+ const agent = scope.agent;
270
+ return {
271
+ id,
272
+ payload: entry.value.slice(),
273
+ provenance: {
274
+ conversationId: conversation,
275
+ ...(agent === undefined ? {} : { agent: AgentId.new(agent) })
276
+ },
277
+ kind: kindFromWord(scope.kind),
278
+ ...(scope.source === undefined ? {} : { source: scope.source }),
279
+ signals: []
280
+ };
281
+ }
282
+ function kindFromWord(word) {
283
+ const kinds = Object.values(MemoryKind);
284
+ return kinds.find((kind) => kind === word) ?? MemoryKind.Fact;
285
+ }
286
+ function matchesScope(stored, requested, agent) {
287
+ return ((requested.stream === undefined || stored.stream === requested.stream) &&
288
+ (requested.user === undefined || stored.user === requested.user) &&
289
+ (agent === undefined || stored.agent?.equals(agent) === true) &&
290
+ (requested.conversation === undefined ||
291
+ stored.conversation?.equals(requested.conversation) === true) &&
292
+ (requested.application === undefined || stored.application === requested.application));
293
+ }
294
+ function mergePatch(base, patch) {
295
+ if (!isObject(patch))
296
+ return patch;
297
+ const output = isObject(base) ? { ...base } : {};
298
+ for (const [key, value] of Object.entries(patch)) {
299
+ if (value === null)
300
+ Reflect.deleteProperty(output, key);
301
+ else
302
+ output[key] = mergePatch(output[key], value);
303
+ }
304
+ return output;
305
+ }
306
+ function isObject(value) {
307
+ return typeof value === "object" && value !== null && !Array.isArray(value);
308
+ }
309
+ //# sourceMappingURL=log-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-memory.js","sourceRoot":"","sources":["../../src/memory/log-memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { Laser } from "../client/laser.js";
2
+ import { MemoryHandle } from "./handle.js";
3
+ /** Configures and opens a durable memory topic. */
4
+ export declare class MemoryTopicBuilder {
5
+ private readonly laser;
6
+ private readonly topic;
7
+ private streamValue;
8
+ private partitionsValue;
9
+ private ttlMs;
10
+ constructor(laser: Laser, topic: string);
11
+ /** Selects a stream instead of the client's default stream. */
12
+ stream(name: string): this;
13
+ /** Sets the partition count used to spread independent memory scopes. */
14
+ partitions(count: number): this;
15
+ /** Sets message expiry in milliseconds. */
16
+ ttl(milliseconds: number): this;
17
+ /** Keeps memory records until ordinary topic retention removes them. */
18
+ noExpiry(): this;
19
+ /** Ensures the topic and returns memory bound to it. */
20
+ build(): Promise<MemoryHandle>;
21
+ }
22
+ //# sourceMappingURL=topic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topic.d.ts","sourceRoot":"","sources":["../../src/memory/topic.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI1C,mDAAmD;AACnD,qBAAa,kBAAkB;IAM3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IANxB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,KAAK,CAA4C;IAEzD,YACmB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EAC5B;IAEJ,+DAA+D;IAC/D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGzB;IAED,yEAAyE;IACzE,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAM9B;IAED,2CAA2C;IAC3C,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAM9B;IAED,wEAAwE;IACxE,QAAQ,IAAI,IAAI,CAGf;IAED,wDAAwD;IAClD,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC,CAWnC;CACF"}
@@ -0,0 +1,56 @@
1
+ import { InvalidError, NoStreamError } from "../client/errors.js";
2
+ import { MemoryHandle } from "./handle.js";
3
+ const DEFAULT_MEMORY_TTL_MS = 30 * 24 * 60 * 60 * 1_000;
4
+ /** Configures and opens a durable memory topic. */
5
+ export class MemoryTopicBuilder {
6
+ laser;
7
+ topic;
8
+ streamValue;
9
+ partitionsValue = 1;
10
+ ttlMs = DEFAULT_MEMORY_TTL_MS;
11
+ constructor(laser, topic) {
12
+ this.laser = laser;
13
+ this.topic = topic;
14
+ }
15
+ /** Selects a stream instead of the client's default stream. */
16
+ stream(name) {
17
+ this.streamValue = name;
18
+ return this;
19
+ }
20
+ /** Sets the partition count used to spread independent memory scopes. */
21
+ partitions(count) {
22
+ if (!Number.isSafeInteger(count) || count < 1) {
23
+ throw new InvalidError("memory topic partitions must be a positive safe integer");
24
+ }
25
+ this.partitionsValue = count;
26
+ return this;
27
+ }
28
+ /** Sets message expiry in milliseconds. */
29
+ ttl(milliseconds) {
30
+ if (!Number.isSafeInteger(milliseconds) || milliseconds < 1) {
31
+ throw new InvalidError("memory topic TTL must be a positive whole number of milliseconds");
32
+ }
33
+ this.ttlMs = milliseconds;
34
+ return this;
35
+ }
36
+ /** Keeps memory records until ordinary topic retention removes them. */
37
+ noExpiry() {
38
+ this.ttlMs = undefined;
39
+ return this;
40
+ }
41
+ /** Ensures the topic and returns memory bound to it. */
42
+ async build() {
43
+ const stream = this.streamValue ?? this.laser.defaultStream;
44
+ if (stream === undefined)
45
+ throw new NoStreamError("memory topic requires a stream");
46
+ await this.laser.stream(stream).ensure();
47
+ await this.laser
48
+ .stream(stream)
49
+ .topic(this.topic)
50
+ .ensure(this.partitionsValue, {
51
+ messageExpiryMicros: this.ttlMs === undefined ? 0n : BigInt(this.ttlMs) * 1000n
52
+ });
53
+ return MemoryHandle.logTopic(this.laser, this.topic, stream);
54
+ }
55
+ }
56
+ //# sourceMappingURL=topic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topic.js","sourceRoot":"","sources":["../../src/memory/topic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAA;AAEvD,mDAAmD;AACnD,MAAM,OAAO,kBAAkB;IAMV,KAAK;IACL,KAAK;IANhB,WAAW,CAAoB;IAC/B,eAAe,GAAG,CAAC,CAAA;IACnB,KAAK,GAAuB,qBAAqB,CAAA;IAEzD,YACmB,KAAY,EACZ,KAAa;qBADb,KAAK;qBACL,KAAK;IACrB,CAAC;IAEJ,+DAA+D;IAC/D,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QACvB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,yEAAyE;IACzE,UAAU,CAAC,KAAa;QACtB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,YAAY,CAAC,yDAAyD,CAAC,CAAA;QACnF,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAA;QAC5B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2CAA2C;IAC3C,GAAG,CAAC,YAAoB;QACtB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,YAAY,CAAC,kEAAkE,CAAC,CAAA;QAC5F,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,YAAY,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,wEAAwE;IACxE,QAAQ;QACN,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,wDAAwD;IACxD,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAA;QAC3D,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,aAAa,CAAC,gCAAgC,CAAC,CAAA;QACnF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAA;QACxC,MAAM,IAAI,CAAC,KAAK;aACb,MAAM,CAAC,MAAM,CAAC;aACd,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;aACjB,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE;YAC5B,mBAAmB,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAM;SACjF,CAAC,CAAA;QACJ,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC9D,CAAC;CACF"}
@@ -0,0 +1,108 @@
1
+ import { type UlidSource } from "../runtime/ulid.js";
2
+ import { ConversationId } from "../types/ids.js";
3
+ import type { AgentId } from "../types/ids.js";
4
+ import type { SourceRef } from "../wire/graph.js";
5
+ export declare const MemoryKind: {
6
+ readonly Fact: "fact";
7
+ readonly Message: "message";
8
+ readonly Summary: "summary";
9
+ readonly Entity: "entity";
10
+ readonly Feedback: "feedback";
11
+ readonly Procedure: "procedure";
12
+ };
13
+ export type MemoryKind = (typeof MemoryKind)[keyof typeof MemoryKind];
14
+ export declare const MemoryClass: {
15
+ readonly Episodic: "episodic";
16
+ readonly Semantic: "semantic";
17
+ readonly Procedural: "procedural";
18
+ };
19
+ export type MemoryClass = (typeof MemoryClass)[keyof typeof MemoryClass];
20
+ export declare const Lifetime: {
21
+ readonly Session: "session";
22
+ readonly Durable: "durable";
23
+ };
24
+ export type Lifetime = (typeof Lifetime)[keyof typeof Lifetime];
25
+ export declare const RecallStrategy: {
26
+ readonly Auto: "auto";
27
+ readonly Recent: "recent";
28
+ readonly Semantic: "semantic";
29
+ readonly Keyword: "keyword";
30
+ readonly Graph: "graph";
31
+ readonly Temporal: "temporal";
32
+ readonly Hybrid: "hybrid";
33
+ };
34
+ export type RecallStrategy = (typeof RecallStrategy)[keyof typeof RecallStrategy];
35
+ export declare function memoryClass(kind: MemoryKind): MemoryClass;
36
+ export declare class MemoryId {
37
+ private readonly value;
38
+ private constructor();
39
+ static new(source?: UlidSource): MemoryId;
40
+ static fromU128(value: bigint): MemoryId;
41
+ static parse(text: string): MemoryId;
42
+ static content(owner: MemoryScope, kind: MemoryKind, body: Uint8Array): MemoryId;
43
+ asU128(): bigint;
44
+ equals(other: MemoryId): boolean;
45
+ toString(): string;
46
+ }
47
+ export interface MemoryScope {
48
+ readonly stream?: string;
49
+ readonly user?: string;
50
+ readonly agent?: AgentId;
51
+ readonly conversation?: ConversationId;
52
+ readonly application?: string;
53
+ readonly lifetime?: Lifetime;
54
+ }
55
+ export interface RecallSignal {
56
+ readonly strategy: RecallStrategy;
57
+ readonly rank: number;
58
+ readonly score?: number;
59
+ }
60
+ export interface MemoryItem {
61
+ readonly id: MemoryId;
62
+ readonly payload: Uint8Array;
63
+ readonly provenance: {
64
+ readonly conversationId: ConversationId;
65
+ readonly agent?: AgentId;
66
+ readonly idempotencyKey?: string;
67
+ };
68
+ readonly kind: MemoryKind;
69
+ readonly score?: number;
70
+ readonly signals: readonly RecallSignal[];
71
+ readonly source?: SourceRef;
72
+ }
73
+ export interface MemoryQuery {
74
+ readonly limit?: number;
75
+ readonly tokenBudget?: number;
76
+ readonly agent?: AgentId;
77
+ readonly semantic?: string;
78
+ readonly strategy?: RecallStrategy;
79
+ }
80
+ export interface Feedback {
81
+ readonly target: MemoryId;
82
+ readonly weight: number;
83
+ readonly note?: string;
84
+ }
85
+ export interface Memory {
86
+ remember(scope: MemoryScope, payload: Uint8Array): Promise<MemoryId>;
87
+ recall(scope: MemoryScope, query: MemoryQuery): Promise<readonly MemoryItem[]>;
88
+ improve(scope: MemoryScope, feedback: Feedback): Promise<MemoryId>;
89
+ forget(scope: MemoryScope, id: MemoryId): Promise<void>;
90
+ }
91
+ export interface Embedder {
92
+ embed(text: string): Promise<readonly number[]>;
93
+ }
94
+ export interface Reranker {
95
+ rerank(query: string, items: readonly MemoryItem[]): Promise<readonly MemoryItem[]>;
96
+ }
97
+ export interface ConsolidationReport {
98
+ readonly scanned: number;
99
+ readonly kept: number;
100
+ readonly forgotten: number;
101
+ }
102
+ export interface Consolidator {
103
+ consolidate(memory: Memory, scope: MemoryScope): Promise<ConsolidationReport>;
104
+ }
105
+ export declare function toContextBlock(items: readonly MemoryItem[], tokenBudget?: number): string;
106
+ export declare function fuseReciprocalRank(signals: readonly (readonly MemoryItem[])[], limit: number): readonly MemoryItem[];
107
+ export declare const ZERO_CONVERSATION: ConversationId;
108
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import { InvalidError } from "../client/errors.js";
2
+ import { mintUlidValue } from "../runtime/ulid.js";
3
+ import { ConversationId } from "../types/ids.js";
4
+ import { contentId } from "../wire/hashing.js";
5
+ import { crockfordDecode, crockfordEncode } from "../wire/ids.js";
6
+ export const MemoryKind = {
7
+ Fact: "fact",
8
+ Message: "message",
9
+ Summary: "summary",
10
+ Entity: "entity",
11
+ Feedback: "feedback",
12
+ Procedure: "procedure"
13
+ };
14
+ export const MemoryClass = {
15
+ Episodic: "episodic",
16
+ Semantic: "semantic",
17
+ Procedural: "procedural"
18
+ };
19
+ export const Lifetime = { Session: "session", Durable: "durable" };
20
+ export const RecallStrategy = {
21
+ Auto: "auto",
22
+ Recent: "recent",
23
+ Semantic: "semantic",
24
+ Keyword: "keyword",
25
+ Graph: "graph",
26
+ Temporal: "temporal",
27
+ Hybrid: "hybrid"
28
+ };
29
+ const KIND_CODES = {
30
+ [MemoryKind.Fact]: 1,
31
+ [MemoryKind.Message]: 2,
32
+ [MemoryKind.Summary]: 3,
33
+ [MemoryKind.Entity]: 4,
34
+ [MemoryKind.Feedback]: 5,
35
+ [MemoryKind.Procedure]: 6
36
+ };
37
+ export function memoryClass(kind) {
38
+ if (kind === MemoryKind.Message)
39
+ return MemoryClass.Episodic;
40
+ if (kind === MemoryKind.Procedure)
41
+ return MemoryClass.Procedural;
42
+ return MemoryClass.Semantic;
43
+ }
44
+ export class MemoryId {
45
+ value;
46
+ constructor(value) {
47
+ this.value = value;
48
+ }
49
+ static new(source) {
50
+ return new MemoryId(mintUlidValue(source));
51
+ }
52
+ static fromU128(value) {
53
+ if (value < 0n || value >= 1n << 128n) {
54
+ throw new InvalidError("memory id must fit in 128 bits", { value: value.toString() });
55
+ }
56
+ return new MemoryId(value);
57
+ }
58
+ static parse(text) {
59
+ return MemoryId.fromU128(crockfordDecode(text));
60
+ }
61
+ static content(owner, kind, body) {
62
+ const encoder = new TextEncoder();
63
+ const segments = [
64
+ encoder.encode(owner.stream ?? ""),
65
+ Uint8Array.of(0),
66
+ encoder.encode(owner.agent?.asString() ?? ""),
67
+ Uint8Array.of(0),
68
+ Uint8Array.of(KIND_CODES[kind]),
69
+ body
70
+ ];
71
+ return MemoryId.fromU128(contentId(segments));
72
+ }
73
+ asU128() {
74
+ return this.value;
75
+ }
76
+ equals(other) {
77
+ return this.value === other.value;
78
+ }
79
+ toString() {
80
+ return crockfordEncode(this.value);
81
+ }
82
+ }
83
+ export function toContextBlock(items, tokenBudget) {
84
+ let spent = 0;
85
+ let rendered = 0;
86
+ const blocks = [];
87
+ for (const item of items) {
88
+ const text = new TextDecoder().decode(item.payload);
89
+ const cost = Math.max(1, Math.ceil(new TextEncoder().encode(text).byteLength / 4));
90
+ if (tokenBudget !== undefined && rendered > 0 && spent + cost > tokenBudget)
91
+ break;
92
+ blocks.push(text);
93
+ spent += cost;
94
+ rendered += 1;
95
+ }
96
+ const omitted = items.length - rendered;
97
+ if (omitted > 0)
98
+ blocks.push(`[... ${String(omitted)} more recalled item(s) omitted ...]`);
99
+ return blocks.join("\n\n");
100
+ }
101
+ export function fuseReciprocalRank(signals, limit) {
102
+ const byId = new Map();
103
+ for (const ranked of signals) {
104
+ ranked.forEach((candidate, rank) => {
105
+ 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] }
115
+ : {
116
+ ...held,
117
+ score: (held.score ?? 0) + contribution,
118
+ signals: [...held.signals, signal]
119
+ });
120
+ });
121
+ }
122
+ return [...byId.values()]
123
+ .sort((left, right) => (right.score ?? 0) - (left.score ?? 0))
124
+ .slice(0, limit);
125
+ }
126
+ export const ZERO_CONVERSATION = ConversationId.parse("00000000000000000000000000");
127
+ //# sourceMappingURL=types.js.map