@jungjaehoon/mama-core 2.4.0 → 4.0.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 (374) hide show
  1. package/README.md +76 -239
  2. package/db/migrations/030-case-first-memory-substrate.sql +13 -98
  3. package/db/migrations/034-add-connector-event-scope-columns.sql +9 -13
  4. package/db/migrations/039-add-connector-event-operator-ingest-seq.sql +9 -95
  5. package/db/migrations/062-refresh-connector-event-sequences.sql +9 -113
  6. package/db/migrations/063-refresh-legacy-connector-event-updates.sql +9 -32
  7. package/db/migrations/067-add-connector-event-source-entity-id.sql +9 -13
  8. package/db/migrations/068-tool-trace-diagnostics.sql +13 -0
  9. package/db/migrations/069-create-registry-nodes.sql +52 -0
  10. package/db/migrations/070-record-identity.sql +35 -0
  11. package/db/migrations/071-service-operation-origins.sql +187 -0
  12. package/db/migrations/072-observation-versions.sql +29 -0
  13. package/db/migrations/073-registry-corrections.sql +45 -0
  14. package/db/migrations/074-work-graph-ref-kinds.sql +39 -0
  15. package/db/migrations/075-agent-judgments.sql +58 -0
  16. package/db/migrations/076-scoped-checkpoint-bindings.sql +15 -0
  17. package/db/migrations/077-legacy-record-kind.sql +6 -0
  18. package/db/migrations/078-source-ingest-commands.sql +18 -0
  19. package/db/migrations/079-twin-edge-relations.sql +43 -0
  20. package/db/migrations/080-restore-duration-days.sql +7 -0
  21. package/db/migrations/081-mailbox.sql +61 -0
  22. package/db/migrations/082-commitments-row-id.sql +12 -0
  23. package/db/migrations/083-observation-is-the-evidence.sql +49 -0
  24. package/db/migrations/084-scope-kind-is-not-the-cores-to-list.sql +34 -0
  25. package/db/migrations/085-a-migration-has-a-source.sql +37 -0
  26. package/db/migrations/086-the-mailbox-is-generic.sql +110 -0
  27. package/db/migrations/087-mailbox-payload.sql +5 -0
  28. package/db/migrations/088-native-input-journal.sql +14 -0
  29. package/db/migrations/089-native-turn-receipt-lookup.sql +3 -0
  30. package/db/migrations/090-model-run-native-inputs.sql +29 -0
  31. package/db/migrations/091-native-turn-results.sql +11 -0
  32. package/db/migrations/092-restore-decision-fts.sql +34 -0
  33. package/db/migrations/093-native-turn-primary-kind.sql +14 -0
  34. package/db/migrations/094-commitment-run-provenance.sql +9 -0
  35. package/db/migrations/095-model-run-native-input-identity.sql +39 -0
  36. package/db/migrations/096-drop-connector-event-index-fts.sql +9 -0
  37. package/db/migrations/097-native-input-json-validity.sql +37 -0
  38. package/db/migrations/098-workflow-memory-kind.sql +105 -0
  39. package/dist/action-contracts.d.ts +212 -0
  40. package/dist/action-contracts.js +10 -0
  41. package/dist/api/catalog.d.ts +118 -0
  42. package/dist/api/catalog.js +1756 -0
  43. package/dist/api/dispatch.d.ts +76 -0
  44. package/dist/api/dispatch.js +372 -0
  45. package/dist/canonicalize.d.ts +2 -2
  46. package/dist/canonicalize.js +3 -3
  47. package/dist/client/client.d.ts +33 -0
  48. package/dist/client/client.js +123 -0
  49. package/dist/client/ipc.d.ts +81 -0
  50. package/dist/client/ipc.js +314 -0
  51. package/dist/db-adapter/base-adapter.d.ts +6 -66
  52. package/dist/db-adapter/base-adapter.js +6 -6
  53. package/dist/db-adapter/index.d.ts +5 -5
  54. package/dist/db-adapter/index.js +2 -5
  55. package/dist/db-adapter/node-sqlite-adapter.d.ts +87 -15
  56. package/dist/db-adapter/node-sqlite-adapter.js +2045 -568
  57. package/dist/db-manager.d.ts +53 -97
  58. package/dist/db-manager.js +121 -603
  59. package/dist/embedding/embedder.d.ts +132 -0
  60. package/dist/embedding/embedder.js +299 -0
  61. package/dist/identity/principal-repository.d.ts +2 -2
  62. package/dist/index.d.ts +43 -58
  63. package/dist/index.js +99 -145
  64. package/dist/{context-compile/channel-grant.d.ts → knowledge/access.d.ts} +12 -17
  65. package/dist/knowledge/access.js +663 -0
  66. package/dist/knowledge/case-errors.d.ts +31 -0
  67. package/dist/knowledge/case-errors.js +40 -0
  68. package/dist/{cases/search-rollup.d.ts → knowledge/case-search-rollup.d.ts} +5 -4
  69. package/dist/{cases/search-rollup.js → knowledge/case-search-rollup.js} +6 -8
  70. package/dist/{cases/store.d.ts → knowledge/case-store.d.ts} +3 -6
  71. package/dist/{cases/store.js → knowledge/case-store.js} +7 -42
  72. package/dist/{cases/timeline-range.d.ts → knowledge/case-timeline-range.d.ts} +3 -3
  73. package/dist/{cases/timeline-range.js → knowledge/case-timeline-range.js} +47 -25
  74. package/dist/{cases/types.d.ts → knowledge/case-types.d.ts} +8 -2
  75. package/dist/{cases/types.js → knowledge/case-types.js} +1 -1
  76. package/dist/knowledge/commitments.d.ts +188 -0
  77. package/dist/knowledge/commitments.js +370 -0
  78. package/dist/knowledge/decision-edges.d.ts +70 -0
  79. package/dist/knowledge/decision-edges.js +123 -0
  80. package/dist/{agent-graph/types.d.ts → knowledge/graph-query.d.ts} +80 -70
  81. package/dist/knowledge/graph-query.js +1585 -0
  82. package/dist/knowledge/identity.d.ts +16 -0
  83. package/dist/knowledge/identity.js +22 -0
  84. package/dist/knowledge/index.d.ts +47 -0
  85. package/dist/knowledge/index.js +90 -0
  86. package/dist/knowledge/judgments.d.ts +118 -0
  87. package/dist/knowledge/judgments.js +808 -0
  88. package/dist/knowledge/observations.d.ts +160 -0
  89. package/dist/knowledge/observations.js +449 -0
  90. package/dist/knowledge/question-type.d.ts +34 -0
  91. package/dist/knowledge/question-type.js +70 -0
  92. package/dist/{search → knowledge}/ranker-features.js +1 -1
  93. package/dist/{search → knowledge}/search-quality.d.ts +0 -1
  94. package/dist/knowledge/search.d.ts +38 -0
  95. package/dist/knowledge/search.js +91 -0
  96. package/dist/knowledge/source-ingest.d.ts +65 -0
  97. package/dist/knowledge/source-ingest.js +174 -0
  98. package/dist/{edges/types.d.ts → knowledge/twin-edge-types.d.ts} +31 -4
  99. package/dist/{edges/types.js → knowledge/twin-edge-types.js} +13 -2
  100. package/dist/knowledge/work-dates.d.ts +49 -0
  101. package/dist/knowledge/work-dates.js +120 -0
  102. package/dist/mama-api.d.ts +116 -778
  103. package/dist/mama-api.js +313 -2457
  104. package/dist/memory/api.d.ts +264 -24
  105. package/dist/memory/api.js +1633 -843
  106. package/dist/memory/bootstrap-builder.d.ts +2 -1
  107. package/dist/memory/bootstrap-builder.js +5 -5
  108. package/dist/memory/channel-summary-state-store.d.ts +3 -2
  109. package/dist/memory/channel-summary-state-store.js +53 -51
  110. package/dist/memory/channel-summary-store.d.ts +5 -3
  111. package/dist/memory/channel-summary-store.js +3 -8
  112. package/dist/memory/dashboard-read.d.ts +46 -0
  113. package/dist/memory/dashboard-read.js +94 -0
  114. package/dist/memory/event-store.d.ts +3 -3
  115. package/dist/memory/event-store.js +3 -10
  116. package/dist/memory/finding-store.d.ts +3 -2
  117. package/dist/memory/finding-store.js +2 -7
  118. package/dist/memory/graph-read.d.ts +52 -0
  119. package/dist/memory/graph-read.js +130 -0
  120. package/dist/memory/judgment-types.d.ts +394 -0
  121. package/dist/memory/judgment-types.js +16 -0
  122. package/dist/memory/provenance-audit.d.ts +5 -2
  123. package/dist/memory/provenance-audit.js +8 -14
  124. package/dist/memory/provenance-live.d.ts +141 -0
  125. package/dist/memory/provenance-live.js +409 -0
  126. package/dist/memory/provenance-query.d.ts +5 -4
  127. package/dist/memory/provenance-query.js +21 -29
  128. package/dist/memory/provenance-resolver.d.ts +191 -0
  129. package/dist/memory/provenance-resolver.js +155 -0
  130. package/dist/memory/provenance.d.ts +1 -11
  131. package/dist/memory/provenance.js +2 -33
  132. package/dist/memory/recall-sanitize.d.ts +55 -0
  133. package/dist/memory/recall-sanitize.js +144 -0
  134. package/dist/memory/secret-filter.d.ts +32 -0
  135. package/dist/memory/secret-filter.js +126 -0
  136. package/dist/memory/truth-store.d.ts +2 -1
  137. package/dist/memory/truth-store.js +1 -4
  138. package/dist/memory/types.d.ts +74 -24
  139. package/dist/memory/types.js +75 -5
  140. package/dist/memory/write-adapters.d.ts +98 -0
  141. package/dist/memory/write-adapters.js +242 -0
  142. package/dist/operations/owner-action-effects.d.ts +53 -0
  143. package/dist/operations/owner-action-effects.js +96 -0
  144. package/dist/provenance/source-ref.d.ts +1 -1
  145. package/dist/provenance/source-ref.js +0 -2
  146. package/dist/registry/corrections.d.ts +31 -0
  147. package/dist/registry/corrections.js +332 -0
  148. package/dist/registry/record-identity.d.ts +49 -0
  149. package/dist/registry/record-identity.js +133 -0
  150. package/dist/registry/store.d.ts +101 -0
  151. package/dist/registry/store.js +395 -0
  152. package/dist/registry/types.d.ts +28 -0
  153. package/dist/registry/types.js +5 -0
  154. package/dist/relevance-scorer.js +2 -2
  155. package/dist/runtime/agent-event-bus.d.ts +50 -0
  156. package/dist/runtime/agent-event-bus.js +101 -0
  157. package/dist/runtime/drivers/claude-cli-wrapper.d.ts +155 -0
  158. package/dist/runtime/drivers/claude-cli-wrapper.js +392 -0
  159. package/dist/runtime/drivers/cli-arg-redaction.d.ts +2 -0
  160. package/dist/runtime/drivers/cli-arg-redaction.js +18 -0
  161. package/dist/runtime/drivers/cli-secret-redaction.d.ts +17 -0
  162. package/dist/runtime/drivers/cli-secret-redaction.js +126 -0
  163. package/dist/runtime/drivers/codex-app-server-process.d.ts +277 -0
  164. package/dist/runtime/drivers/codex-app-server-process.js +2342 -0
  165. package/dist/runtime/drivers/codex-auxiliary-tools.d.ts +17 -0
  166. package/dist/runtime/drivers/codex-auxiliary-tools.js +267 -0
  167. package/dist/runtime/drivers/codex-home.d.ts +20 -0
  168. package/dist/runtime/drivers/codex-home.js +674 -0
  169. package/dist/runtime/drivers/codex-thread-registry.d.ts +63 -0
  170. package/dist/runtime/drivers/codex-thread-registry.js +433 -0
  171. package/dist/runtime/drivers/persistent-cli-adapter.d.ts +160 -0
  172. package/dist/runtime/drivers/persistent-cli-adapter.js +396 -0
  173. package/dist/runtime/drivers/persistent-cli-process.d.ts +424 -0
  174. package/dist/runtime/drivers/persistent-cli-process.js +1543 -0
  175. package/dist/runtime/drivers/types.d.ts +456 -0
  176. package/dist/runtime/drivers/types.js +110 -0
  177. package/dist/runtime/mailbox.d.ts +223 -0
  178. package/dist/runtime/mailbox.js +582 -0
  179. package/dist/runtime/model-run-store.d.ts +28 -0
  180. package/dist/{model-runs/store.js → runtime/model-run-store.js} +81 -41
  181. package/dist/runtime/model-run-types.d.ts +132 -0
  182. package/dist/{model-runs/types.js → runtime/model-run-types.js} +1 -1
  183. package/dist/runtime/native-effect-observer.d.ts +22 -0
  184. package/dist/runtime/native-effect-observer.js +103 -0
  185. package/dist/runtime/native-input-journal.d.ts +46 -0
  186. package/dist/runtime/native-input-journal.js +308 -0
  187. package/dist/runtime/native-prompt.d.ts +118 -0
  188. package/dist/runtime/native-prompt.js +496 -0
  189. package/dist/runtime/native-session.d.ts +10 -0
  190. package/dist/{agent-graph/index.js → runtime/native-session.js} +9 -6
  191. package/dist/runtime/native-tool-trace-observer.d.ts +5 -0
  192. package/dist/runtime/native-tool-trace-observer.js +65 -0
  193. package/dist/runtime/native-turn.d.ts +272 -0
  194. package/dist/runtime/native-turn.js +1041 -0
  195. package/dist/runtime/operations.d.ts +236 -0
  196. package/dist/runtime/operations.js +565 -0
  197. package/dist/runtime/post-tool-handler.d.ts +74 -0
  198. package/dist/runtime/post-tool-handler.js +137 -0
  199. package/dist/runtime/prompt-layers.d.ts +126 -0
  200. package/dist/runtime/prompt-layers.js +239 -0
  201. package/dist/runtime/runtime-process.d.ts +102 -0
  202. package/dist/runtime/runtime-process.js +206 -0
  203. package/dist/runtime/runtime.d.ts +278 -0
  204. package/dist/runtime/runtime.js +563 -0
  205. package/dist/runtime/session-pool.d.ts +176 -0
  206. package/dist/runtime/session-pool.js +369 -0
  207. package/dist/runtime/stimulus-payload.d.ts +5 -0
  208. package/dist/runtime/stimulus-payload.js +50 -0
  209. package/dist/runtime/subagent-bridge.d.ts +24 -0
  210. package/dist/{agent-graph/types.js → runtime/subagent-bridge.js} +1 -1
  211. package/dist/runtime/text-completion.d.ts +22 -0
  212. package/dist/{agent-situation/types.js → runtime/text-completion.js} +1 -1
  213. package/dist/runtime/token-estimator.d.ts +25 -0
  214. package/dist/runtime/token-estimator.js +75 -0
  215. package/dist/runtime/tool-trace-store.d.ts +22 -0
  216. package/dist/runtime/tool-trace-store.js +242 -0
  217. package/dist/runtime/trace-summary.d.ts +5 -0
  218. package/dist/runtime/trace-summary.js +74 -0
  219. package/dist/runtime/turn-text.d.ts +23 -0
  220. package/dist/runtime/turn-text.js +41 -0
  221. package/dist/storage/database.d.ts +67 -0
  222. package/dist/storage/database.js +158 -0
  223. package/package.json +20 -34
  224. package/dist/agent-graph/alias-write.d.ts +0 -3
  225. package/dist/agent-graph/alias-write.js +0 -234
  226. package/dist/agent-graph/entity-resolve.d.ts +0 -3
  227. package/dist/agent-graph/entity-resolve.js +0 -271
  228. package/dist/agent-graph/errors.d.ts +0 -4
  229. package/dist/agent-graph/errors.js +0 -11
  230. package/dist/agent-graph/graph-query.d.ts +0 -5
  231. package/dist/agent-graph/graph-query.js +0 -360
  232. package/dist/agent-graph/index.d.ts +0 -6
  233. package/dist/agent-situation/builder.d.ts +0 -8
  234. package/dist/agent-situation/builder.js +0 -239
  235. package/dist/agent-situation/cache-key.d.ts +0 -4
  236. package/dist/agent-situation/cache-key.js +0 -64
  237. package/dist/agent-situation/index.d.ts +0 -7
  238. package/dist/agent-situation/index.js +0 -28
  239. package/dist/agent-situation/packet-store.d.ts +0 -27
  240. package/dist/agent-situation/packet-store.js +0 -228
  241. package/dist/agent-situation/ranking-policy.d.ts +0 -18
  242. package/dist/agent-situation/ranking-policy.js +0 -75
  243. package/dist/agent-situation/source-readers.d.ts +0 -52
  244. package/dist/agent-situation/source-readers.js +0 -300
  245. package/dist/agent-situation/types.d.ts +0 -195
  246. package/dist/cases/wiki-page-index.d.ts +0 -37
  247. package/dist/cases/wiki-page-index.js +0 -201
  248. package/dist/config-loader.d.ts +0 -68
  249. package/dist/config-loader.js +0 -239
  250. package/dist/connectors/event-index.d.ts +0 -24
  251. package/dist/connectors/event-index.js +0 -245
  252. package/dist/connectors/raw-query.d.ts +0 -40
  253. package/dist/connectors/raw-query.js +0 -412
  254. package/dist/connectors/types.d.ts +0 -117
  255. package/dist/connectors/types.js +0 -3
  256. package/dist/context-compile/boundary-defaults.d.ts +0 -12
  257. package/dist/context-compile/boundary-defaults.js +0 -105
  258. package/dist/context-compile/channel-grant.js +0 -66
  259. package/dist/context-compile/compiler-policy.d.ts +0 -39
  260. package/dist/context-compile/compiler-policy.js +0 -147
  261. package/dist/context-compile/compiler.d.ts +0 -18
  262. package/dist/context-compile/compiler.js +0 -404
  263. package/dist/context-compile/index.d.ts +0 -10
  264. package/dist/context-compile/index.js +0 -26
  265. package/dist/context-compile/packet-store.d.ts +0 -8
  266. package/dist/context-compile/packet-store.js +0 -239
  267. package/dist/context-compile/ref.d.ts +0 -7
  268. package/dist/context-compile/ref.js +0 -102
  269. package/dist/context-compile/source-readers.d.ts +0 -70
  270. package/dist/context-compile/source-readers.js +0 -840
  271. package/dist/context-compile/types.d.ts +0 -155
  272. package/dist/context-compile/types.js +0 -11
  273. package/dist/context-compile/visibility.d.ts +0 -21
  274. package/dist/context-compile/visibility.js +0 -224
  275. package/dist/decision-tracker.d.ts +0 -206
  276. package/dist/decision-tracker.js +0 -481
  277. package/dist/edges/ref-validation.d.ts +0 -7
  278. package/dist/edges/ref-validation.js +0 -321
  279. package/dist/edges/store.d.ts +0 -8
  280. package/dist/edges/store.js +0 -129
  281. package/dist/embedding-client.d.ts +0 -28
  282. package/dist/embedding-client.js +0 -53
  283. package/dist/embedding-server/index.d.ts +0 -67
  284. package/dist/embedding-server/index.js +0 -405
  285. package/dist/embedding-server/mobile/auth.d.ts +0 -44
  286. package/dist/embedding-server/mobile/auth.js +0 -150
  287. package/dist/embedding-server/mobile/daemon.d.ts +0 -129
  288. package/dist/embedding-server/mobile/daemon.js +0 -313
  289. package/dist/embedding-server/mobile/output-parser.d.ts +0 -115
  290. package/dist/embedding-server/mobile/output-parser.js +0 -241
  291. package/dist/embedding-server/mobile/session-api.d.ts +0 -57
  292. package/dist/embedding-server/mobile/session-api.js +0 -261
  293. package/dist/embedding-server/mobile/session-manager.d.ts +0 -138
  294. package/dist/embedding-server/mobile/session-manager.js +0 -378
  295. package/dist/embedding-server/mobile/websocket-handler.d.ts +0 -137
  296. package/dist/embedding-server/mobile/websocket-handler.js +0 -486
  297. package/dist/embeddings.d.ts +0 -68
  298. package/dist/embeddings.js +0 -244
  299. package/dist/entities/audit-metrics.d.ts +0 -68
  300. package/dist/entities/audit-metrics.js +0 -124
  301. package/dist/entities/candidate-generator.d.ts +0 -8
  302. package/dist/entities/candidate-generator.js +0 -24
  303. package/dist/entities/entity-linked-decision-counts.d.ts +0 -2
  304. package/dist/entities/entity-linked-decision-counts.js +0 -29
  305. package/dist/entities/entity-list.d.ts +0 -22
  306. package/dist/entities/entity-list.js +0 -3
  307. package/dist/entities/entity-orphan-list.d.ts +0 -17
  308. package/dist/entities/entity-orphan-list.js +0 -3
  309. package/dist/entities/entity-search.d.ts +0 -20
  310. package/dist/entities/entity-search.js +0 -3
  311. package/dist/entities/errors.d.ts +0 -55
  312. package/dist/entities/errors.js +0 -100
  313. package/dist/entities/lineage-store.d.ts +0 -28
  314. package/dist/entities/lineage-store.js +0 -204
  315. package/dist/entities/normalization.d.ts +0 -14
  316. package/dist/entities/normalization.js +0 -63
  317. package/dist/entities/policy-store.d.ts +0 -8
  318. package/dist/entities/policy-store.js +0 -75
  319. package/dist/entities/policy-types.d.ts +0 -72
  320. package/dist/entities/policy-types.js +0 -59
  321. package/dist/entities/projection.d.ts +0 -8
  322. package/dist/entities/projection.js +0 -82
  323. package/dist/entities/provenance-query.d.ts +0 -32
  324. package/dist/entities/provenance-query.js +0 -3
  325. package/dist/entities/read-identity.d.ts +0 -31
  326. package/dist/entities/read-identity.js +0 -264
  327. package/dist/entities/recall-bridge.d.ts +0 -5
  328. package/dist/entities/recall-bridge.js +0 -171
  329. package/dist/entities/resolution-engine.d.ts +0 -8
  330. package/dist/entities/resolution-engine.js +0 -3
  331. package/dist/entities/rollback-preview.d.ts +0 -35
  332. package/dist/entities/rollback-preview.js +0 -3
  333. package/dist/entities/source-locator.d.ts +0 -3
  334. package/dist/entities/source-locator.js +0 -32
  335. package/dist/entities/store.d.ts +0 -69
  336. package/dist/entities/store.js +0 -544
  337. package/dist/entities/types.d.ts +0 -166
  338. package/dist/entities/types.js +0 -30
  339. package/dist/memory/extraction-prompt.d.ts +0 -4
  340. package/dist/memory/extraction-prompt.js +0 -89
  341. package/dist/memory/scope-backfill.d.ts +0 -14
  342. package/dist/memory/scope-backfill.js +0 -3
  343. package/dist/memory/scope-store.d.ts +0 -4
  344. package/dist/memory/scope-store.js +0 -9
  345. package/dist/memory-store.d.ts +0 -87
  346. package/dist/memory-store.js +0 -78
  347. package/dist/model-runs/store.d.ts +0 -13
  348. package/dist/model-runs/tool-trace-store.d.ts +0 -4
  349. package/dist/model-runs/tool-trace-store.js +0 -118
  350. package/dist/model-runs/types.d.ts +0 -72
  351. package/dist/notification-manager.d.ts +0 -7
  352. package/dist/notification-manager.js +0 -12
  353. package/dist/outcome-tracker.d.ts +0 -151
  354. package/dist/outcome-tracker.js +0 -271
  355. package/dist/query-intent.d.ts +0 -23
  356. package/dist/query-intent.js +0 -114
  357. package/dist/runtime/trusted-provenance.d.ts +0 -3
  358. package/dist/runtime/trusted-provenance.js +0 -6
  359. package/dist/search/question-type.d.ts +0 -5
  360. package/dist/search/question-type.js +0 -41
  361. package/dist/test-utils.d.ts +0 -80
  362. package/dist/test-utils.js +0 -218
  363. package/dist/tier-validator.d.ts +0 -43
  364. package/dist/tier-validator.js +0 -159
  365. package/dist/time-formatter.d.ts +0 -25
  366. package/dist/time-formatter.js +0 -93
  367. /package/dist/{search → knowledge}/feedback-store.d.ts +0 -0
  368. /package/dist/{search → knowledge}/feedback-store.js +0 -0
  369. /package/dist/{search → knowledge}/ranker-features.d.ts +0 -0
  370. /package/dist/{search → knowledge}/ranker-rescore.d.ts +0 -0
  371. /package/dist/{search → knowledge}/ranker-rescore.js +0 -0
  372. /package/dist/{search → knowledge}/ranker-trainer.d.ts +0 -0
  373. /package/dist/{search → knowledge}/ranker-trainer.js +0 -0
  374. /package/dist/{search → knowledge}/search-quality.js +0 -0
@@ -1,239 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.listVisibleAgentSituationSources = listVisibleAgentSituationSources;
4
- exports.buildAgentSituationPacketRecord = buildAgentSituationPacketRecord;
5
- const node_crypto_1 = require("node:crypto");
6
- const canonicalize_js_1 = require("../canonicalize.js");
7
- const cache_key_js_1 = require("./cache-key.js");
8
- const ranking_policy_js_1 = require("./ranking-policy.js");
9
- const source_readers_js_1 = require("./source-readers.js");
10
- function iso(ms) {
11
- return new Date(ms).toISOString();
12
- }
13
- function ttlForRange(rangeStartMs, rangeEndMs) {
14
- const rangeMs = Math.max(0, rangeEndMs - rangeStartMs);
15
- const dayMs = 24 * 60 * 60 * 1000;
16
- if (rangeMs <= 7 * dayMs) {
17
- return 120;
18
- }
19
- if (rangeMs <= 30 * dayMs) {
20
- return 300;
21
- }
22
- return 900;
23
- }
24
- function topStrings(values, limit = 3) {
25
- return values
26
- .map((value) => value.trim())
27
- .filter(Boolean)
28
- .slice(0, limit);
29
- }
30
- function refKey(ref) {
31
- return `${ref.kind}:${ref.id}`;
32
- }
33
- function buildBriefing(sources) {
34
- const memories = sources.memories;
35
- const openQuestions = memories.filter((memory) => memory.is_open_question);
36
- const lowConfidence = [...memories, ...sources.cases, ...sources.edges].filter((candidate) => typeof candidate.confidence === 'number' && candidate.confidence < 0.6);
37
- return {
38
- decisions: topStrings(memories.map((memory) => memory.summary || memory.title)),
39
- facts: topStrings(sources.raw.map((raw) => raw.summary)),
40
- open_questions: topStrings(openQuestions.map((memory) => memory.summary || memory.title)),
41
- risks: topStrings([
42
- ...lowConfidence.map((candidate) => candidate.summary || candidate.title),
43
- ...sources.cases
44
- .filter((item) => item.status === 'blocked')
45
- .map((item) => `${item.title}: ${item.status}`),
46
- ]),
47
- };
48
- }
49
- function buildCoverage(sources, input) {
50
- const coverage = [];
51
- for (const connector of input.effective_filters.connectors) {
52
- for (const scope of input.effective_filters.scopes) {
53
- const raw = sources.raw.filter((item) => item.connector === connector &&
54
- item.scope?.kind === scope.kind &&
55
- item.scope.id === scope.id);
56
- const memories = sources.memories.filter((item) => item.scope?.kind === scope.kind && item.scope.id === scope.id);
57
- const cases = sources.cases.filter((item) => item.scope?.kind === scope.kind && item.scope.id === scope.id);
58
- const rowRefs = new Set([...raw, ...memories, ...cases].map((item) => refKey(item.ref)));
59
- const edges = sources.edges.filter((item) => rowRefs.has(refKey(item.subject_ref)) && rowRefs.has(refKey(item.object_ref)));
60
- const lastSeenMs = Math.max(0, ...raw.map((item) => item.timestamp_ms), ...memories.map((item) => item.timestamp_ms), ...cases.map((item) => item.timestamp_ms), ...edges.map((item) => item.timestamp_ms));
61
- coverage.push({
62
- connector,
63
- channel_id: raw[0]?.channel_id ?? null,
64
- memory_scope: scope,
65
- raw_count: raw.length,
66
- memory_count: memories.length,
67
- case_count: cases.length,
68
- edge_count: edges.length,
69
- last_seen: lastSeenMs > 0 ? iso(lastSeenMs) : null,
70
- stale: lastSeenMs > 0
71
- ? (input.now_ms ?? Date.now()) - lastSeenMs > 30 * 24 * 60 * 60 * 1000
72
- : true,
73
- });
74
- }
75
- }
76
- return coverage;
77
- }
78
- function buildRankedItems(sources, limit) {
79
- const policy = (0, ranking_policy_js_1.getAgentSituationRankingPolicy)();
80
- const candidates = [...sources.raw, ...sources.memories, ...sources.cases, ...sources.edges];
81
- return candidates
82
- .map((candidate) => {
83
- const score = (0, ranking_policy_js_1.scoreAgentSituationCandidate)(candidate, policy);
84
- return {
85
- ref: candidate.ref,
86
- kind: candidate.kind,
87
- score: score.score,
88
- reasons: score.reasons,
89
- caveats: score.caveats,
90
- };
91
- })
92
- .sort((left, right) => right.score - left.score || left.ref.id.localeCompare(right.ref.id))
93
- .slice(0, limit);
94
- }
95
- function buildRecommendations(sources, rankedItems) {
96
- const recommendations = [];
97
- const expectedRefs = rankedItems.map((item) => item.ref);
98
- if (sources.memories.some((memory) => memory.is_open_question) || sources.raw.length > 0) {
99
- recommendations.push({
100
- tool: 'raw.searchAll',
101
- args: {
102
- query: sources.memories.find((memory) => memory.is_open_question)?.title ?? 'recent work',
103
- },
104
- reason: 'visible_open_question_needs_evidence',
105
- expected_refs: expectedRefs.filter((ref) => ref.kind === 'raw' || ref.kind === 'memory'),
106
- });
107
- }
108
- const topRaw = sources.raw[0];
109
- if (topRaw) {
110
- recommendations.push({
111
- tool: 'raw.window',
112
- args: { raw_id: topRaw.ref.id },
113
- reason: 'inspect_visible_raw_context',
114
- expected_refs: [topRaw.ref],
115
- });
116
- }
117
- return recommendations;
118
- }
119
- function sourceRefs(sources) {
120
- return [
121
- ...sources.raw.map((item) => item.ref),
122
- ...sources.memories.map((item) => item.ref),
123
- ...sources.cases.map((item) => item.ref),
124
- ...sources.edges.map((item) => item.ref),
125
- ];
126
- }
127
- function primaryScope(input) {
128
- const scope = input.scope[0] ?? input.effective_filters.scopes[0];
129
- if (!scope) {
130
- throw new Error('agent.situation requires at least one effective memory scope');
131
- }
132
- return scope;
133
- }
134
- function primaryProjectId(input) {
135
- const project = input.effective_filters.project_refs[0];
136
- if (!project) {
137
- throw new Error('agent.situation requires at least one effective project ref');
138
- }
139
- return project.id;
140
- }
141
- function json(value) {
142
- return (0, canonicalize_js_1.canonicalizeJSON)(value);
143
- }
144
- function listVisibleAgentSituationSources(adapter, input) {
145
- return (0, source_readers_js_1.listVisibleAgentSituationSources)(adapter, input);
146
- }
147
- function buildAgentSituationPacketRecord(adapter, input) {
148
- const rankingPolicyVersion = input.ranking_policy_version ?? ranking_policy_js_1.AGENT_SITUATION_V0_POLICY_VERSION;
149
- const nowMs = Math.floor(input.now_ms ?? Date.now());
150
- const limit = Math.floor(input.limit);
151
- const effectiveFilters = (0, cache_key_js_1.normalizeAgentSituationEffectiveFilters)(input.effective_filters);
152
- const normalizedInput = { ...input, effective_filters: effectiveFilters };
153
- const sources = (0, source_readers_js_1.listVisibleAgentSituationSources)(adapter, {
154
- effective_filters: effectiveFilters,
155
- range_start_ms: input.range_start_ms,
156
- range_end_ms: input.range_end_ms,
157
- limit,
158
- });
159
- const key = (0, cache_key_js_1.buildAgentSituationCacheKey)({
160
- ...effectiveFilters,
161
- range_start_ms: input.range_start_ms,
162
- range_end_ms: input.range_end_ms,
163
- focus: input.focus,
164
- limit,
165
- ranking_policy_version: rankingPolicyVersion,
166
- });
167
- const ttlSeconds = ttlForRange(input.range_start_ms, input.range_end_ms);
168
- const expiresAt = nowMs + ttlSeconds * 1000;
169
- const scope = primaryScope(input);
170
- const rankedItems = buildRankedItems(sources, limit);
171
- const briefing = buildBriefing(sources);
172
- const coverage = buildCoverage(sources, normalizedInput);
173
- const visibleSourceRefs = sourceRefs(sources);
174
- const pendingHumanQuestions = sources.memories
175
- .filter((memory) => memory.is_open_question)
176
- .slice(0, 3)
177
- .map((memory) => ({
178
- memory_id: memory.ref.id,
179
- title: memory.title,
180
- summary: memory.summary,
181
- }));
182
- const caveats = visibleSourceRefs.length === 0 ? ['no_visible_sources'] : [];
183
- const recommendedNextTools = buildRecommendations(sources, rankedItems);
184
- const topMemoryRefs = sources.memories.map((memory) => memory.ref.id).slice(0, limit);
185
- const freshness = {
186
- generated_at_ms: nowMs,
187
- visible_source_count: visibleSourceRefs.length,
188
- };
189
- return {
190
- packet_id: `situ_${(0, node_crypto_1.randomUUID)().replace(/-/g, '')}`,
191
- cache_key: key.cacheKey,
192
- scope_json: json(input.scope),
193
- scope: input.scope,
194
- scope_hash: key.scopeHash,
195
- range_start_ms: Math.floor(input.range_start_ms),
196
- range_end_ms: Math.floor(input.range_end_ms),
197
- focus_json: json(input.focus),
198
- focus: input.focus,
199
- envelope_hash: input.envelope_hash,
200
- envelope_effective_filters_json: json(effectiveFilters),
201
- envelope_effective_filters: effectiveFilters,
202
- envelope_effective_filters_hash: key.filtersHash,
203
- ranking_policy_version: rankingPolicyVersion,
204
- generated_at: nowMs,
205
- expires_at: expiresAt,
206
- ttl_seconds: ttlSeconds,
207
- freshness_json: json(freshness),
208
- freshness,
209
- source_coverage_json: json(coverage),
210
- source_coverage: coverage,
211
- briefing_json: json(briefing),
212
- briefing,
213
- ranked_items_json: json(rankedItems),
214
- ranked_items: rankedItems,
215
- top_memory_refs_json: json(topMemoryRefs),
216
- top_memory_refs: topMemoryRefs,
217
- pending_human_questions_json: json(pendingHumanQuestions),
218
- pending_human_questions: pendingHumanQuestions,
219
- entity_clusters_json: '[]',
220
- entity_clusters: [],
221
- recommended_next_tools_json: json(recommendedNextTools),
222
- recommended_next_tools: recommendedNextTools,
223
- generated_from_slice_ids_json: '[]',
224
- generated_from_slice_ids: [],
225
- caveats_json: json(caveats),
226
- caveats,
227
- agent_id: input.agent_id,
228
- model_run_id: input.model_run_id,
229
- input_snapshot_ref: `situation:${key.cacheKey}`,
230
- source_refs_json: json(visibleSourceRefs),
231
- source_refs: visibleSourceRefs,
232
- tenant_id: effectiveFilters.tenant_id,
233
- project_id: primaryProjectId(normalizedInput),
234
- memory_scope_kind: scope.kind,
235
- memory_scope_id: scope.id,
236
- created_at: nowMs,
237
- };
238
- }
239
- //# sourceMappingURL=builder.js.map
@@ -1,4 +0,0 @@
1
- import type { AgentSituationCacheKeyInput, AgentSituationCacheKeyResult, AgentSituationEffectiveFilters } from './types.js';
2
- export declare function normalizeAgentSituationEffectiveFilters(input: AgentSituationEffectiveFilters): AgentSituationEffectiveFilters;
3
- export declare function buildAgentSituationCacheKey(input: AgentSituationCacheKeyInput): AgentSituationCacheKeyResult;
4
- //# sourceMappingURL=cache-key.d.ts.map
@@ -1,64 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.normalizeAgentSituationEffectiveFilters = normalizeAgentSituationEffectiveFilters;
4
- exports.buildAgentSituationCacheKey = buildAgentSituationCacheKey;
5
- const node_crypto_1 = require("node:crypto");
6
- const canonicalize_js_1 = require("../canonicalize.js");
7
- function sha256Hex(value) {
8
- return (0, node_crypto_1.createHash)('sha256').update((0, canonicalize_js_1.canonicalizeJSON)(value), 'utf8').digest('hex');
9
- }
10
- function uniqueSorted(values) {
11
- return [...new Set(values.map((value) => value.trim()).filter(Boolean))].sort();
12
- }
13
- function normalizeScopes(scopes) {
14
- const byKey = new Map();
15
- for (const scope of scopes) {
16
- const normalized = { kind: scope.kind, id: scope.id.trim() };
17
- if (normalized.id.length > 0) {
18
- byKey.set(`${normalized.kind}:${normalized.id}`, normalized);
19
- }
20
- }
21
- return [...byKey.values()].sort((left, right) => `${left.kind}:${left.id}`.localeCompare(`${right.kind}:${right.id}`));
22
- }
23
- function normalizeProjectRefs(projectRefs) {
24
- const byId = new Map();
25
- for (const project of projectRefs) {
26
- const normalized = { kind: 'project', id: project.id.trim() };
27
- if (normalized.id.length > 0) {
28
- byId.set(normalized.id, normalized);
29
- }
30
- }
31
- return [...byId.values()].sort((left, right) => left.id.localeCompare(right.id));
32
- }
33
- function normalizeFocus(focus) {
34
- return [...new Set(focus)].sort();
35
- }
36
- function normalizeAgentSituationEffectiveFilters(input) {
37
- return {
38
- scopes: normalizeScopes(input.scopes),
39
- connectors: uniqueSorted(input.connectors),
40
- project_refs: normalizeProjectRefs(input.project_refs),
41
- tenant_id: input.tenant_id.trim() || 'default',
42
- as_of: input.as_of ?? null,
43
- };
44
- }
45
- function buildAgentSituationCacheKey(input) {
46
- const effective = normalizeAgentSituationEffectiveFilters(input);
47
- const canonicalInput = {
48
- ...effective,
49
- range_start_ms: Math.floor(input.range_start_ms),
50
- range_end_ms: Math.floor(input.range_end_ms),
51
- focus: normalizeFocus(input.focus),
52
- limit: Math.floor(input.limit),
53
- ranking_policy_version: input.ranking_policy_version,
54
- };
55
- const canonicalJson = (0, canonicalize_js_1.canonicalizeJSON)(canonicalInput);
56
- return {
57
- cacheKey: (0, node_crypto_1.createHash)('sha256').update(canonicalJson, 'utf8').digest('hex'),
58
- canonicalInput,
59
- canonicalJson,
60
- filtersHash: sha256Hex(effective),
61
- scopeHash: sha256Hex(effective.scopes),
62
- };
63
- }
64
- //# sourceMappingURL=cache-key.js.map
@@ -1,7 +0,0 @@
1
- export * from './types.js';
2
- export * from './cache-key.js';
3
- export * from './ranking-policy.js';
4
- export { listVisibleRawCandidates, listVisibleMemoryCandidates, listVisibleCaseCandidates, listVisibleEdgeCandidates, type AgentSituationSourceReadInput, type VisibleAgentSituationSources, type VisibleRawCandidate, type VisibleMemoryCandidate, type VisibleCaseCandidate, type VisibleEdgeCandidate, } from './source-readers.js';
5
- export * from './builder.js';
6
- export * from './packet-store.js';
7
- //# sourceMappingURL=index.d.ts.map
@@ -1,28 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.listVisibleEdgeCandidates = exports.listVisibleCaseCandidates = exports.listVisibleMemoryCandidates = exports.listVisibleRawCandidates = void 0;
18
- __exportStar(require("./types.js"), exports);
19
- __exportStar(require("./cache-key.js"), exports);
20
- __exportStar(require("./ranking-policy.js"), exports);
21
- var source_readers_js_1 = require("./source-readers.js");
22
- Object.defineProperty(exports, "listVisibleRawCandidates", { enumerable: true, get: function () { return source_readers_js_1.listVisibleRawCandidates; } });
23
- Object.defineProperty(exports, "listVisibleMemoryCandidates", { enumerable: true, get: function () { return source_readers_js_1.listVisibleMemoryCandidates; } });
24
- Object.defineProperty(exports, "listVisibleCaseCandidates", { enumerable: true, get: function () { return source_readers_js_1.listVisibleCaseCandidates; } });
25
- Object.defineProperty(exports, "listVisibleEdgeCandidates", { enumerable: true, get: function () { return source_readers_js_1.listVisibleEdgeCandidates; } });
26
- __exportStar(require("./builder.js"), exports);
27
- __exportStar(require("./packet-store.js"), exports);
28
- //# sourceMappingURL=index.js.map
@@ -1,27 +0,0 @@
1
- import type { DatabaseAdapter } from '../db-manager.js';
2
- import type { AgentSituationLease, AgentSituationPacketRecord } from './types.js';
3
- type PacketStoreAdapter = Pick<DatabaseAdapter, 'prepare' | 'transaction'>;
4
- export interface AcquireAgentSituationLeaseInput {
5
- cacheKey: string;
6
- rankingPolicyVersion: string;
7
- leaseOwner: string;
8
- nowMs: number;
9
- leaseSeconds: number;
10
- }
11
- export interface AgentSituationRefreshInput {
12
- cacheKey: string;
13
- rankingPolicyVersion: string;
14
- nowMs: number;
15
- leaseOwner: string;
16
- leaseSeconds?: number;
17
- pollIntervalMs?: number;
18
- maxPollMs?: number;
19
- refresh?: boolean;
20
- }
21
- export declare function getFreshAgentSituationPacket(adapter: PacketStoreAdapter, cacheKey: string, rankingPolicyVersion: string, nowMs: number): AgentSituationPacketRecord | null;
22
- export declare function insertAgentSituationPacket(adapter: PacketStoreAdapter, packet: AgentSituationPacketRecord): AgentSituationPacketRecord;
23
- export declare function acquireAgentSituationLease(adapter: PacketStoreAdapter, input: AcquireAgentSituationLeaseInput): AgentSituationLease | null;
24
- export declare function releaseAgentSituationLease(adapter: PacketStoreAdapter, cacheKey: string, leaseOwner: string): void;
25
- export declare function getOrRefreshAgentSituationPacket(adapter: PacketStoreAdapter, input: AgentSituationRefreshInput, builder: () => Promise<AgentSituationPacketRecord> | AgentSituationPacketRecord): Promise<AgentSituationPacketRecord>;
26
- export {};
27
- //# sourceMappingURL=packet-store.d.ts.map
@@ -1,228 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getFreshAgentSituationPacket = getFreshAgentSituationPacket;
4
- exports.insertAgentSituationPacket = insertAgentSituationPacket;
5
- exports.acquireAgentSituationLease = acquireAgentSituationLease;
6
- exports.releaseAgentSituationLease = releaseAgentSituationLease;
7
- exports.getOrRefreshAgentSituationPacket = getOrRefreshAgentSituationPacket;
8
- const inProcessRefreshesByAdapter = new WeakMap();
9
- function parseJson(row, field) {
10
- const value = row[field];
11
- if (typeof value !== 'string') {
12
- throw new Error(`Invalid agent situation packet JSON field ${field}: expected string`);
13
- }
14
- try {
15
- return JSON.parse(value);
16
- }
17
- catch (error) {
18
- const message = error instanceof Error ? error.message : String(error);
19
- throw new Error(`Invalid agent situation packet JSON field ${field}: ${message}`);
20
- }
21
- }
22
- function inProcessRefreshesForAdapter(adapter) {
23
- const existing = inProcessRefreshesByAdapter.get(adapter);
24
- if (existing) {
25
- return existing;
26
- }
27
- const scoped = new Map();
28
- inProcessRefreshesByAdapter.set(adapter, scoped);
29
- return scoped;
30
- }
31
- function mapPacketRow(row) {
32
- return {
33
- packet_id: String(row.packet_id),
34
- cache_key: String(row.cache_key),
35
- scope_json: String(row.scope_json),
36
- scope: parseJson(row, 'scope_json'),
37
- scope_hash: String(row.scope_hash),
38
- range_start_ms: Number(row.range_start_ms),
39
- range_end_ms: Number(row.range_end_ms),
40
- focus_json: String(row.focus_json),
41
- focus: parseJson(row, 'focus_json'),
42
- envelope_hash: String(row.envelope_hash),
43
- envelope_effective_filters_json: String(row.envelope_effective_filters_json),
44
- envelope_effective_filters: parseJson(row, 'envelope_effective_filters_json'),
45
- envelope_effective_filters_hash: String(row.envelope_effective_filters_hash),
46
- ranking_policy_version: String(row.ranking_policy_version),
47
- generated_at: Number(row.generated_at),
48
- expires_at: Number(row.expires_at),
49
- ttl_seconds: Number(row.ttl_seconds),
50
- freshness_json: String(row.freshness_json),
51
- freshness: parseJson(row, 'freshness_json'),
52
- source_coverage_json: String(row.source_coverage_json),
53
- source_coverage: parseJson(row, 'source_coverage_json'),
54
- briefing_json: String(row.briefing_json),
55
- briefing: parseJson(row, 'briefing_json'),
56
- ranked_items_json: String(row.ranked_items_json),
57
- ranked_items: parseJson(row, 'ranked_items_json'),
58
- top_memory_refs_json: String(row.top_memory_refs_json),
59
- top_memory_refs: parseJson(row, 'top_memory_refs_json'),
60
- pending_human_questions_json: String(row.pending_human_questions_json),
61
- pending_human_questions: parseJson(row, 'pending_human_questions_json'),
62
- entity_clusters_json: String(row.entity_clusters_json),
63
- entity_clusters: parseJson(row, 'entity_clusters_json'),
64
- recommended_next_tools_json: String(row.recommended_next_tools_json),
65
- recommended_next_tools: parseJson(row, 'recommended_next_tools_json'),
66
- generated_from_slice_ids_json: String(row.generated_from_slice_ids_json),
67
- generated_from_slice_ids: parseJson(row, 'generated_from_slice_ids_json'),
68
- caveats_json: String(row.caveats_json),
69
- caveats: parseJson(row, 'caveats_json'),
70
- agent_id: String(row.agent_id),
71
- model_run_id: String(row.model_run_id),
72
- input_snapshot_ref: String(row.input_snapshot_ref),
73
- source_refs_json: String(row.source_refs_json),
74
- source_refs: parseJson(row, 'source_refs_json'),
75
- tenant_id: String(row.tenant_id),
76
- project_id: String(row.project_id),
77
- memory_scope_kind: String(row.memory_scope_kind),
78
- memory_scope_id: String(row.memory_scope_id),
79
- created_at: Number(row.created_at),
80
- };
81
- }
82
- function isDuplicateLeaseError(error) {
83
- if (!(error instanceof Error)) {
84
- return false;
85
- }
86
- return /UNIQUE constraint failed: agent_situation_refresh_leases\.cache_key|PRIMARY KEY constraint failed|SQLITE_CONSTRAINT_(PRIMARYKEY|UNIQUE)/i.test(error.message);
87
- }
88
- function mapLeaseRow(row) {
89
- return {
90
- cache_key: String(row.cache_key),
91
- ranking_policy_version: String(row.ranking_policy_version),
92
- lease_owner: String(row.lease_owner),
93
- lease_expires_at: Number(row.lease_expires_at),
94
- created_at: Number(row.created_at),
95
- };
96
- }
97
- function getFreshAgentSituationPacket(adapter, cacheKey, rankingPolicyVersion, nowMs) {
98
- const row = adapter
99
- .prepare(`
100
- SELECT *
101
- FROM agent_situation_packets
102
- WHERE cache_key = ?
103
- AND ranking_policy_version = ?
104
- AND expires_at > ?
105
- ORDER BY expires_at DESC, generated_at DESC
106
- LIMIT 1
107
- `)
108
- .get(cacheKey, rankingPolicyVersion, nowMs);
109
- return row ? mapPacketRow(row) : null;
110
- }
111
- function insertAgentSituationPacket(adapter, packet) {
112
- adapter
113
- .prepare(`
114
- INSERT INTO agent_situation_packets (
115
- packet_id, cache_key, scope_json, scope_hash, range_start_ms, range_end_ms,
116
- focus_json, envelope_hash, envelope_effective_filters_json,
117
- envelope_effective_filters_hash, ranking_policy_version, generated_at, expires_at,
118
- ttl_seconds, freshness_json, source_coverage_json, briefing_json, ranked_items_json,
119
- top_memory_refs_json, pending_human_questions_json, entity_clusters_json,
120
- recommended_next_tools_json, generated_from_slice_ids_json, caveats_json,
121
- agent_id, model_run_id, input_snapshot_ref, source_refs_json, tenant_id, project_id,
122
- memory_scope_kind, memory_scope_id, created_at
123
- )
124
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
125
- `)
126
- .run(packet.packet_id, packet.cache_key, packet.scope_json, packet.scope_hash, packet.range_start_ms, packet.range_end_ms, packet.focus_json, packet.envelope_hash, packet.envelope_effective_filters_json, packet.envelope_effective_filters_hash, packet.ranking_policy_version, packet.generated_at, packet.expires_at, packet.ttl_seconds, packet.freshness_json, packet.source_coverage_json, packet.briefing_json, packet.ranked_items_json, packet.top_memory_refs_json, packet.pending_human_questions_json, packet.entity_clusters_json, packet.recommended_next_tools_json, packet.generated_from_slice_ids_json, packet.caveats_json, packet.agent_id, packet.model_run_id, packet.input_snapshot_ref, packet.source_refs_json, packet.tenant_id, packet.project_id, packet.memory_scope_kind, packet.memory_scope_id, packet.created_at);
127
- const inserted = adapter
128
- .prepare('SELECT * FROM agent_situation_packets WHERE packet_id = ?')
129
- .get(packet.packet_id);
130
- if (!inserted) {
131
- throw new Error(`Agent situation packet insert failed: ${packet.packet_id}`);
132
- }
133
- return mapPacketRow(inserted);
134
- }
135
- function acquireAgentSituationLease(adapter, input) {
136
- adapter
137
- .prepare('DELETE FROM agent_situation_refresh_leases WHERE lease_expires_at <= ?')
138
- .run(input.nowMs);
139
- try {
140
- adapter
141
- .prepare(`
142
- INSERT INTO agent_situation_refresh_leases (
143
- cache_key, ranking_policy_version, lease_owner, lease_expires_at, created_at
144
- )
145
- VALUES (?, ?, ?, ?, ?)
146
- `)
147
- .run(input.cacheKey, input.rankingPolicyVersion, input.leaseOwner, input.nowMs + input.leaseSeconds * 1000, input.nowMs);
148
- }
149
- catch (error) {
150
- if (isDuplicateLeaseError(error)) {
151
- return null;
152
- }
153
- throw error;
154
- }
155
- const row = adapter
156
- .prepare('SELECT * FROM agent_situation_refresh_leases WHERE cache_key = ?')
157
- .get(input.cacheKey);
158
- return row ? mapLeaseRow(row) : null;
159
- }
160
- function releaseAgentSituationLease(adapter, cacheKey, leaseOwner) {
161
- adapter
162
- .prepare('DELETE FROM agent_situation_refresh_leases WHERE cache_key = ? AND lease_owner = ?')
163
- .run(cacheKey, leaseOwner);
164
- }
165
- function delay(ms) {
166
- return new Promise((resolve) => setTimeout(resolve, ms));
167
- }
168
- async function waitForFreshPacket(adapter, input) {
169
- const pollIntervalMs = input.pollIntervalMs ?? 50;
170
- const maxPollMs = input.maxPollMs ?? 30_000;
171
- const started = Date.now();
172
- while (Date.now() - started < maxPollMs) {
173
- const fresh = getFreshAgentSituationPacket(adapter, input.cacheKey, input.rankingPolicyVersion, input.nowMs);
174
- if (fresh) {
175
- return fresh;
176
- }
177
- await delay(pollIntervalMs);
178
- }
179
- return null;
180
- }
181
- async function getOrRefreshAgentSituationPacket(adapter, input, builder) {
182
- if (!input.refresh) {
183
- const fresh = getFreshAgentSituationPacket(adapter, input.cacheKey, input.rankingPolicyVersion, input.nowMs);
184
- if (fresh) {
185
- return fresh;
186
- }
187
- }
188
- const refreshes = inProcessRefreshesForAdapter(adapter);
189
- const key = `${input.cacheKey}:${input.rankingPolicyVersion}`;
190
- const existing = refreshes.get(key);
191
- if (existing) {
192
- return existing;
193
- }
194
- const task = (async () => {
195
- const lease = acquireAgentSituationLease(adapter, {
196
- cacheKey: input.cacheKey,
197
- rankingPolicyVersion: input.rankingPolicyVersion,
198
- leaseOwner: input.leaseOwner,
199
- nowMs: input.nowMs,
200
- leaseSeconds: input.leaseSeconds ?? 30,
201
- });
202
- if (!lease) {
203
- const fresh = await waitForFreshPacket(adapter, input);
204
- if (fresh) {
205
- return fresh;
206
- }
207
- throw new Error(`Timed out waiting for agent situation refresh lease for cache key ${input.cacheKey} and ranking policy ${input.rankingPolicyVersion}`);
208
- }
209
- try {
210
- const built = await builder();
211
- return insertAgentSituationPacket(adapter, built);
212
- }
213
- finally {
214
- releaseAgentSituationLease(adapter, input.cacheKey, input.leaseOwner);
215
- }
216
- })();
217
- refreshes.set(key, task);
218
- try {
219
- return await task;
220
- }
221
- finally {
222
- refreshes.delete(key);
223
- if (refreshes.size === 0) {
224
- inProcessRefreshesByAdapter.delete(adapter);
225
- }
226
- }
227
- }
228
- //# sourceMappingURL=packet-store.js.map
@@ -1,18 +0,0 @@
1
- import type { AgentSituationCandidate, SituationScore } from './types.js';
2
- export declare const AGENT_SITUATION_V0_POLICY_VERSION = "agent_situation.v0";
3
- export declare const AGENT_SITUATION_V0_WEIGHTS: {
4
- readonly urgency: 0.35;
5
- readonly confidence_gap: 0.2;
6
- readonly debate_edge: 0.2;
7
- readonly source_freshness: 0.2;
8
- readonly cross_channel_signal: 0.15;
9
- readonly pending_human_question: 0.1;
10
- readonly open_question_urgency_boost: 0.2;
11
- };
12
- export interface AgentSituationRankingPolicy {
13
- version: string;
14
- weights: typeof AGENT_SITUATION_V0_WEIGHTS;
15
- }
16
- export declare function getAgentSituationRankingPolicy(version?: string): AgentSituationRankingPolicy;
17
- export declare function scoreAgentSituationCandidate(candidate: AgentSituationCandidate, policy: AgentSituationRankingPolicy): SituationScore;
18
- //# sourceMappingURL=ranking-policy.d.ts.map