@jungjaehoon/mama-core 2.4.1 → 4.1.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 (378) 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/069-create-registry-nodes.sql +52 -0
  9. package/db/migrations/070-record-identity.sql +35 -0
  10. package/db/migrations/071-service-operation-origins.sql +187 -0
  11. package/db/migrations/072-observation-versions.sql +29 -0
  12. package/db/migrations/073-registry-corrections.sql +45 -0
  13. package/db/migrations/074-work-graph-ref-kinds.sql +39 -0
  14. package/db/migrations/075-agent-judgments.sql +58 -0
  15. package/db/migrations/076-scoped-checkpoint-bindings.sql +15 -0
  16. package/db/migrations/077-legacy-record-kind.sql +6 -0
  17. package/db/migrations/078-source-ingest-commands.sql +18 -0
  18. package/db/migrations/079-twin-edge-relations.sql +43 -0
  19. package/db/migrations/080-restore-duration-days.sql +7 -0
  20. package/db/migrations/081-mailbox.sql +61 -0
  21. package/db/migrations/082-commitments-row-id.sql +12 -0
  22. package/db/migrations/083-observation-is-the-evidence.sql +49 -0
  23. package/db/migrations/084-scope-kind-is-not-the-cores-to-list.sql +34 -0
  24. package/db/migrations/085-a-migration-has-a-source.sql +37 -0
  25. package/db/migrations/086-the-mailbox-is-generic.sql +110 -0
  26. package/db/migrations/087-mailbox-payload.sql +5 -0
  27. package/db/migrations/088-native-input-journal.sql +14 -0
  28. package/db/migrations/089-native-turn-receipt-lookup.sql +3 -0
  29. package/db/migrations/090-model-run-native-inputs.sql +29 -0
  30. package/db/migrations/091-native-turn-results.sql +11 -0
  31. package/db/migrations/092-restore-decision-fts.sql +34 -0
  32. package/db/migrations/093-native-turn-primary-kind.sql +14 -0
  33. package/db/migrations/094-commitment-run-provenance.sql +9 -0
  34. package/db/migrations/095-model-run-native-input-identity.sql +39 -0
  35. package/db/migrations/096-drop-connector-event-index-fts.sql +9 -0
  36. package/db/migrations/097-native-input-json-validity.sql +37 -0
  37. package/db/migrations/098-workflow-memory-kind.sql +105 -0
  38. package/db/migrations/099-commitment-revision-graph.sql +2 -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 +85 -15
  56. package/dist/db-adapter/node-sqlite-adapter.js +1985 -570
  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 +97 -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/commitment-revision-migration.d.ts +4 -0
  77. package/dist/knowledge/commitment-revision-migration.js +50 -0
  78. package/dist/knowledge/commitments.d.ts +192 -0
  79. package/dist/knowledge/commitments.js +386 -0
  80. package/dist/knowledge/decision-edges.d.ts +70 -0
  81. package/dist/knowledge/decision-edges.js +123 -0
  82. package/dist/{agent-graph/types.d.ts → knowledge/graph-query.d.ts} +80 -70
  83. package/dist/knowledge/graph-query.js +1585 -0
  84. package/dist/knowledge/identity.d.ts +16 -0
  85. package/dist/knowledge/identity.js +22 -0
  86. package/dist/knowledge/index.d.ts +47 -0
  87. package/dist/knowledge/index.js +90 -0
  88. package/dist/knowledge/judgment-edge.d.ts +6 -0
  89. package/dist/knowledge/judgment-edge.js +22 -0
  90. package/dist/knowledge/judgments.d.ts +118 -0
  91. package/dist/knowledge/judgments.js +802 -0
  92. package/dist/knowledge/observations.d.ts +160 -0
  93. package/dist/knowledge/observations.js +449 -0
  94. package/dist/knowledge/question-type.d.ts +34 -0
  95. package/dist/knowledge/question-type.js +70 -0
  96. package/dist/{search → knowledge}/ranker-features.js +1 -1
  97. package/dist/{search → knowledge}/search-quality.d.ts +0 -1
  98. package/dist/knowledge/search.d.ts +38 -0
  99. package/dist/knowledge/search.js +91 -0
  100. package/dist/knowledge/source-ingest.d.ts +65 -0
  101. package/dist/knowledge/source-ingest.js +174 -0
  102. package/dist/{edges/types.d.ts → knowledge/twin-edge-types.d.ts} +31 -4
  103. package/dist/{edges/types.js → knowledge/twin-edge-types.js} +13 -2
  104. package/dist/knowledge/work-dates.d.ts +49 -0
  105. package/dist/knowledge/work-dates.js +120 -0
  106. package/dist/mama-api.d.ts +114 -778
  107. package/dist/mama-api.js +313 -2461
  108. package/dist/memory/api.d.ts +264 -24
  109. package/dist/memory/api.js +1633 -843
  110. package/dist/memory/bootstrap-builder.d.ts +2 -1
  111. package/dist/memory/bootstrap-builder.js +5 -5
  112. package/dist/memory/channel-summary-state-store.d.ts +3 -2
  113. package/dist/memory/channel-summary-state-store.js +53 -51
  114. package/dist/memory/channel-summary-store.d.ts +5 -3
  115. package/dist/memory/channel-summary-store.js +3 -8
  116. package/dist/memory/dashboard-read.d.ts +46 -0
  117. package/dist/memory/dashboard-read.js +94 -0
  118. package/dist/memory/event-store.d.ts +3 -3
  119. package/dist/memory/event-store.js +3 -10
  120. package/dist/memory/finding-store.d.ts +3 -2
  121. package/dist/memory/finding-store.js +2 -7
  122. package/dist/memory/graph-read.d.ts +52 -0
  123. package/dist/memory/graph-read.js +130 -0
  124. package/dist/memory/judgment-types.d.ts +394 -0
  125. package/dist/memory/judgment-types.js +16 -0
  126. package/dist/memory/provenance-audit.d.ts +5 -2
  127. package/dist/memory/provenance-audit.js +8 -14
  128. package/dist/memory/provenance-live.d.ts +141 -0
  129. package/dist/memory/provenance-live.js +409 -0
  130. package/dist/memory/provenance-query.d.ts +5 -4
  131. package/dist/memory/provenance-query.js +21 -29
  132. package/dist/memory/provenance-resolver.d.ts +191 -0
  133. package/dist/memory/provenance-resolver.js +155 -0
  134. package/dist/memory/provenance.d.ts +1 -11
  135. package/dist/memory/provenance.js +2 -33
  136. package/dist/memory/recall-sanitize.d.ts +55 -0
  137. package/dist/memory/recall-sanitize.js +144 -0
  138. package/dist/memory/secret-filter.d.ts +32 -0
  139. package/dist/memory/secret-filter.js +126 -0
  140. package/dist/memory/truth-store.d.ts +2 -1
  141. package/dist/memory/truth-store.js +1 -4
  142. package/dist/memory/types.d.ts +74 -24
  143. package/dist/memory/types.js +75 -5
  144. package/dist/memory/write-adapters.d.ts +98 -0
  145. package/dist/memory/write-adapters.js +242 -0
  146. package/dist/operations/owner-action-effects.d.ts +53 -0
  147. package/dist/operations/owner-action-effects.js +96 -0
  148. package/dist/provenance/source-ref.d.ts +1 -1
  149. package/dist/provenance/source-ref.js +0 -2
  150. package/dist/registry/corrections.d.ts +31 -0
  151. package/dist/registry/corrections.js +332 -0
  152. package/dist/registry/record-identity.d.ts +49 -0
  153. package/dist/registry/record-identity.js +133 -0
  154. package/dist/registry/store.d.ts +101 -0
  155. package/dist/registry/store.js +395 -0
  156. package/dist/registry/types.d.ts +28 -0
  157. package/dist/registry/types.js +5 -0
  158. package/dist/relevance-scorer.js +2 -2
  159. package/dist/runtime/agent-event-bus.d.ts +50 -0
  160. package/dist/runtime/agent-event-bus.js +101 -0
  161. package/dist/runtime/drivers/claude-cli-wrapper.d.ts +152 -0
  162. package/dist/runtime/drivers/claude-cli-wrapper.js +375 -0
  163. package/dist/runtime/drivers/claude-effort.d.ts +4 -0
  164. package/dist/runtime/drivers/claude-effort.js +16 -0
  165. package/dist/runtime/drivers/cli-arg-redaction.d.ts +2 -0
  166. package/dist/runtime/drivers/cli-arg-redaction.js +18 -0
  167. package/dist/runtime/drivers/cli-secret-redaction.d.ts +17 -0
  168. package/dist/runtime/drivers/cli-secret-redaction.js +126 -0
  169. package/dist/runtime/drivers/codex-app-server-process.d.ts +277 -0
  170. package/dist/runtime/drivers/codex-app-server-process.js +2342 -0
  171. package/dist/runtime/drivers/codex-auxiliary-tools.d.ts +17 -0
  172. package/dist/runtime/drivers/codex-auxiliary-tools.js +267 -0
  173. package/dist/runtime/drivers/codex-home.d.ts +20 -0
  174. package/dist/runtime/drivers/codex-home.js +674 -0
  175. package/dist/runtime/drivers/codex-thread-registry.d.ts +63 -0
  176. package/dist/runtime/drivers/codex-thread-registry.js +433 -0
  177. package/dist/runtime/drivers/persistent-cli-adapter.d.ts +160 -0
  178. package/dist/runtime/drivers/persistent-cli-adapter.js +396 -0
  179. package/dist/runtime/drivers/persistent-cli-process.d.ts +425 -0
  180. package/dist/runtime/drivers/persistent-cli-process.js +1529 -0
  181. package/dist/runtime/drivers/types.d.ts +456 -0
  182. package/dist/runtime/drivers/types.js +110 -0
  183. package/dist/runtime/mailbox.d.ts +223 -0
  184. package/dist/runtime/mailbox.js +582 -0
  185. package/dist/runtime/model-run-store.d.ts +28 -0
  186. package/dist/{model-runs/store.js → runtime/model-run-store.js} +81 -41
  187. package/dist/{model-runs/types.d.ts → runtime/model-run-types.d.ts} +33 -4
  188. package/dist/{model-runs/types.js → runtime/model-run-types.js} +1 -1
  189. package/dist/runtime/native-effect-observer.d.ts +22 -0
  190. package/dist/runtime/native-effect-observer.js +103 -0
  191. package/dist/runtime/native-input-journal.d.ts +46 -0
  192. package/dist/runtime/native-input-journal.js +308 -0
  193. package/dist/runtime/native-prompt.d.ts +118 -0
  194. package/dist/runtime/native-prompt.js +496 -0
  195. package/dist/runtime/native-session.d.ts +10 -0
  196. package/dist/{agent-graph/index.js → runtime/native-session.js} +9 -6
  197. package/dist/runtime/native-tool-trace-observer.d.ts +5 -0
  198. package/dist/runtime/native-tool-trace-observer.js +65 -0
  199. package/dist/runtime/native-turn.d.ts +272 -0
  200. package/dist/runtime/native-turn.js +1041 -0
  201. package/dist/runtime/operations.d.ts +236 -0
  202. package/dist/runtime/operations.js +565 -0
  203. package/dist/runtime/post-tool-handler.d.ts +74 -0
  204. package/dist/runtime/post-tool-handler.js +137 -0
  205. package/dist/runtime/prompt-layers.d.ts +126 -0
  206. package/dist/runtime/prompt-layers.js +239 -0
  207. package/dist/runtime/runtime-process.d.ts +102 -0
  208. package/dist/runtime/runtime-process.js +206 -0
  209. package/dist/runtime/runtime.d.ts +278 -0
  210. package/dist/runtime/runtime.js +563 -0
  211. package/dist/runtime/session-pool.d.ts +176 -0
  212. package/dist/runtime/session-pool.js +369 -0
  213. package/dist/runtime/stimulus-payload.d.ts +5 -0
  214. package/dist/runtime/stimulus-payload.js +50 -0
  215. package/dist/runtime/subagent-bridge.d.ts +24 -0
  216. package/dist/{agent-graph/types.js → runtime/subagent-bridge.js} +1 -1
  217. package/dist/runtime/text-completion.d.ts +22 -0
  218. package/dist/{agent-situation/types.js → runtime/text-completion.js} +1 -1
  219. package/dist/runtime/token-estimator.d.ts +25 -0
  220. package/dist/runtime/token-estimator.js +75 -0
  221. package/dist/runtime/tool-trace-store.d.ts +22 -0
  222. package/dist/{model-runs → runtime}/tool-trace-store.js +46 -27
  223. package/dist/runtime/trace-summary.d.ts +5 -0
  224. package/dist/runtime/trace-summary.js +74 -0
  225. package/dist/runtime/turn-text.d.ts +23 -0
  226. package/dist/runtime/turn-text.js +41 -0
  227. package/dist/storage/database.d.ts +67 -0
  228. package/dist/storage/database.js +158 -0
  229. package/package.json +20 -34
  230. package/dist/agent-graph/alias-write.d.ts +0 -3
  231. package/dist/agent-graph/alias-write.js +0 -234
  232. package/dist/agent-graph/entity-resolve.d.ts +0 -3
  233. package/dist/agent-graph/entity-resolve.js +0 -271
  234. package/dist/agent-graph/errors.d.ts +0 -4
  235. package/dist/agent-graph/errors.js +0 -11
  236. package/dist/agent-graph/graph-query.d.ts +0 -5
  237. package/dist/agent-graph/graph-query.js +0 -360
  238. package/dist/agent-graph/index.d.ts +0 -6
  239. package/dist/agent-situation/builder.d.ts +0 -8
  240. package/dist/agent-situation/builder.js +0 -239
  241. package/dist/agent-situation/cache-key.d.ts +0 -4
  242. package/dist/agent-situation/cache-key.js +0 -64
  243. package/dist/agent-situation/index.d.ts +0 -7
  244. package/dist/agent-situation/index.js +0 -28
  245. package/dist/agent-situation/packet-store.d.ts +0 -27
  246. package/dist/agent-situation/packet-store.js +0 -228
  247. package/dist/agent-situation/ranking-policy.d.ts +0 -18
  248. package/dist/agent-situation/ranking-policy.js +0 -75
  249. package/dist/agent-situation/source-readers.d.ts +0 -52
  250. package/dist/agent-situation/source-readers.js +0 -300
  251. package/dist/agent-situation/types.d.ts +0 -195
  252. package/dist/cases/wiki-page-index.d.ts +0 -37
  253. package/dist/cases/wiki-page-index.js +0 -201
  254. package/dist/config-loader.d.ts +0 -68
  255. package/dist/config-loader.js +0 -239
  256. package/dist/connectors/event-index.d.ts +0 -24
  257. package/dist/connectors/event-index.js +0 -245
  258. package/dist/connectors/raw-query.d.ts +0 -40
  259. package/dist/connectors/raw-query.js +0 -412
  260. package/dist/connectors/types.d.ts +0 -117
  261. package/dist/connectors/types.js +0 -3
  262. package/dist/context-compile/boundary-defaults.d.ts +0 -12
  263. package/dist/context-compile/boundary-defaults.js +0 -105
  264. package/dist/context-compile/channel-grant.js +0 -66
  265. package/dist/context-compile/compiler-policy.d.ts +0 -39
  266. package/dist/context-compile/compiler-policy.js +0 -147
  267. package/dist/context-compile/compiler.d.ts +0 -18
  268. package/dist/context-compile/compiler.js +0 -404
  269. package/dist/context-compile/index.d.ts +0 -10
  270. package/dist/context-compile/index.js +0 -26
  271. package/dist/context-compile/packet-store.d.ts +0 -8
  272. package/dist/context-compile/packet-store.js +0 -239
  273. package/dist/context-compile/ref.d.ts +0 -7
  274. package/dist/context-compile/ref.js +0 -102
  275. package/dist/context-compile/source-readers.d.ts +0 -70
  276. package/dist/context-compile/source-readers.js +0 -840
  277. package/dist/context-compile/types.d.ts +0 -155
  278. package/dist/context-compile/types.js +0 -11
  279. package/dist/context-compile/visibility.d.ts +0 -21
  280. package/dist/context-compile/visibility.js +0 -224
  281. package/dist/decision-tracker.d.ts +0 -206
  282. package/dist/decision-tracker.js +0 -481
  283. package/dist/edges/ref-validation.d.ts +0 -7
  284. package/dist/edges/ref-validation.js +0 -321
  285. package/dist/edges/store.d.ts +0 -8
  286. package/dist/edges/store.js +0 -129
  287. package/dist/embedding-client.d.ts +0 -28
  288. package/dist/embedding-client.js +0 -53
  289. package/dist/embedding-server/index.d.ts +0 -67
  290. package/dist/embedding-server/index.js +0 -405
  291. package/dist/embedding-server/mobile/auth.d.ts +0 -44
  292. package/dist/embedding-server/mobile/auth.js +0 -150
  293. package/dist/embedding-server/mobile/daemon.d.ts +0 -129
  294. package/dist/embedding-server/mobile/daemon.js +0 -313
  295. package/dist/embedding-server/mobile/output-parser.d.ts +0 -115
  296. package/dist/embedding-server/mobile/output-parser.js +0 -241
  297. package/dist/embedding-server/mobile/session-api.d.ts +0 -57
  298. package/dist/embedding-server/mobile/session-api.js +0 -261
  299. package/dist/embedding-server/mobile/session-manager.d.ts +0 -138
  300. package/dist/embedding-server/mobile/session-manager.js +0 -378
  301. package/dist/embedding-server/mobile/websocket-handler.d.ts +0 -137
  302. package/dist/embedding-server/mobile/websocket-handler.js +0 -486
  303. package/dist/embeddings.d.ts +0 -68
  304. package/dist/embeddings.js +0 -244
  305. package/dist/entities/audit-metrics.d.ts +0 -68
  306. package/dist/entities/audit-metrics.js +0 -124
  307. package/dist/entities/candidate-generator.d.ts +0 -8
  308. package/dist/entities/candidate-generator.js +0 -24
  309. package/dist/entities/entity-linked-decision-counts.d.ts +0 -2
  310. package/dist/entities/entity-linked-decision-counts.js +0 -29
  311. package/dist/entities/entity-list.d.ts +0 -22
  312. package/dist/entities/entity-list.js +0 -3
  313. package/dist/entities/entity-orphan-list.d.ts +0 -17
  314. package/dist/entities/entity-orphan-list.js +0 -3
  315. package/dist/entities/entity-search.d.ts +0 -20
  316. package/dist/entities/entity-search.js +0 -3
  317. package/dist/entities/errors.d.ts +0 -55
  318. package/dist/entities/errors.js +0 -100
  319. package/dist/entities/lineage-store.d.ts +0 -28
  320. package/dist/entities/lineage-store.js +0 -204
  321. package/dist/entities/normalization.d.ts +0 -14
  322. package/dist/entities/normalization.js +0 -63
  323. package/dist/entities/policy-store.d.ts +0 -8
  324. package/dist/entities/policy-store.js +0 -75
  325. package/dist/entities/policy-types.d.ts +0 -72
  326. package/dist/entities/policy-types.js +0 -59
  327. package/dist/entities/projection.d.ts +0 -8
  328. package/dist/entities/projection.js +0 -82
  329. package/dist/entities/provenance-query.d.ts +0 -32
  330. package/dist/entities/provenance-query.js +0 -3
  331. package/dist/entities/read-identity.d.ts +0 -31
  332. package/dist/entities/read-identity.js +0 -264
  333. package/dist/entities/recall-bridge.d.ts +0 -5
  334. package/dist/entities/recall-bridge.js +0 -171
  335. package/dist/entities/resolution-engine.d.ts +0 -8
  336. package/dist/entities/resolution-engine.js +0 -3
  337. package/dist/entities/rollback-preview.d.ts +0 -35
  338. package/dist/entities/rollback-preview.js +0 -3
  339. package/dist/entities/source-locator.d.ts +0 -3
  340. package/dist/entities/source-locator.js +0 -32
  341. package/dist/entities/store.d.ts +0 -69
  342. package/dist/entities/store.js +0 -544
  343. package/dist/entities/types.d.ts +0 -166
  344. package/dist/entities/types.js +0 -30
  345. package/dist/memory/extraction-prompt.d.ts +0 -4
  346. package/dist/memory/extraction-prompt.js +0 -89
  347. package/dist/memory/scope-backfill.d.ts +0 -14
  348. package/dist/memory/scope-backfill.js +0 -3
  349. package/dist/memory/scope-store.d.ts +0 -4
  350. package/dist/memory/scope-store.js +0 -9
  351. package/dist/memory-store.d.ts +0 -87
  352. package/dist/memory-store.js +0 -78
  353. package/dist/model-runs/store.d.ts +0 -13
  354. package/dist/model-runs/tool-trace-store.d.ts +0 -8
  355. package/dist/notification-manager.d.ts +0 -7
  356. package/dist/notification-manager.js +0 -12
  357. package/dist/outcome-tracker.d.ts +0 -151
  358. package/dist/outcome-tracker.js +0 -271
  359. package/dist/query-intent.d.ts +0 -23
  360. package/dist/query-intent.js +0 -114
  361. package/dist/runtime/trusted-provenance.d.ts +0 -3
  362. package/dist/runtime/trusted-provenance.js +0 -6
  363. package/dist/search/question-type.d.ts +0 -5
  364. package/dist/search/question-type.js +0 -41
  365. package/dist/test-utils.d.ts +0 -80
  366. package/dist/test-utils.js +0 -218
  367. package/dist/tier-validator.d.ts +0 -43
  368. package/dist/tier-validator.js +0 -159
  369. package/dist/time-formatter.d.ts +0 -25
  370. package/dist/time-formatter.js +0 -93
  371. /package/dist/{search → knowledge}/feedback-store.d.ts +0 -0
  372. /package/dist/{search → knowledge}/feedback-store.js +0 -0
  373. /package/dist/{search → knowledge}/ranker-features.d.ts +0 -0
  374. /package/dist/{search → knowledge}/ranker-rescore.d.ts +0 -0
  375. /package/dist/{search → knowledge}/ranker-rescore.js +0 -0
  376. /package/dist/{search → knowledge}/ranker-trainer.d.ts +0 -0
  377. /package/dist/{search → knowledge}/ranker-trainer.js +0 -0
  378. /package/dist/{search → knowledge}/search-quality.js +0 -0
@@ -1,360 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getGraphNeighborhood = getGraphNeighborhood;
4
- exports.getGraphPaths = getGraphPaths;
5
- exports.getGraphTimeline = getGraphTimeline;
6
- const ref_validation_js_1 = require("../edges/ref-validation.js");
7
- const store_js_1 = require("../entities/store.js");
8
- const errors_js_1 = require("./errors.js");
9
- const DEFAULT_GRAPH_LIMIT = 100;
10
- const DEFAULT_PATH_LIMIT = 10;
11
- const MAX_DEPTH = 5;
12
- function refKey(ref) {
13
- return `${ref.kind}:${ref.id}`;
14
- }
15
- function edgeKey(edge) {
16
- return edge.edge_id;
17
- }
18
- function eventKey(event) {
19
- if (event.kind === 'edge') {
20
- return event.edge.edge_id;
21
- }
22
- return `${event.ref.kind}:${event.ref.id}`;
23
- }
24
- function eventKindRank(kind) {
25
- if (kind === 'entity') {
26
- return 0;
27
- }
28
- if (kind === 'memory') {
29
- return 1;
30
- }
31
- if (kind === 'raw') {
32
- return 2;
33
- }
34
- if (kind === 'case') {
35
- return 3;
36
- }
37
- return 4;
38
- }
39
- function normalizeDepth(value, fallback) {
40
- if (typeof value !== 'number' || !Number.isFinite(value)) {
41
- return fallback;
42
- }
43
- return Math.max(0, Math.min(MAX_DEPTH, Math.floor(value)));
44
- }
45
- function normalizeLimit(value, fallback) {
46
- if (typeof value !== 'number' || !Number.isFinite(value)) {
47
- return fallback;
48
- }
49
- return Math.max(1, Math.floor(value));
50
- }
51
- function addNode(nodes, seen, ref) {
52
- const key = refKey(ref);
53
- if (!seen.has(key)) {
54
- seen.add(key);
55
- nodes.push(ref);
56
- }
57
- }
58
- function addRef(refs, seen, ref) {
59
- if (ref.kind === 'edge' || ref.kind === 'report') {
60
- return;
61
- }
62
- const key = refKey(ref);
63
- if (!seen.has(key)) {
64
- seen.add(key);
65
- refs.push(ref);
66
- }
67
- }
68
- function oppositeRef(edge, current) {
69
- const currentKey = refKey(current);
70
- const refs = [];
71
- if (refKey(edge.subject_ref) !== currentKey) {
72
- refs.push(edge.subject_ref);
73
- }
74
- if (refKey(edge.object_ref) !== currentKey) {
75
- refs.push(edge.object_ref);
76
- }
77
- if (refs.length === 0) {
78
- refs.push(edge.object_ref);
79
- }
80
- return refs;
81
- }
82
- function listFilteredEdges(adapter, refs, input) {
83
- // Spread, not a field-by-field re-listing. Re-listing is how the channel grant was
84
- // silently dropped here while every other path enforced it: a new field on the
85
- // visibility type simply never arrived, and nothing failed to say so.
86
- return (0, ref_validation_js_1.listVisibleTwinEdgesForRefs)(adapter, refs, {
87
- ...input.visibility,
88
- edgeTypes: input.edge_filters?.edge_types,
89
- asOfMs: input.as_of_ms,
90
- limit: input.limit,
91
- });
92
- }
93
- function assertRefsVisible(adapter, refs, visibility, asOfMs) {
94
- try {
95
- (0, ref_validation_js_1.assertTwinRefsVisible)(adapter, refs, { ...visibility, asOfMs });
96
- }
97
- catch (error) {
98
- throw new errors_js_1.AgentGraphValidationError(error instanceof Error ? error.message : String(error));
99
- }
100
- }
101
- function graphVisibility(input) {
102
- return {
103
- scopes: input.scopes,
104
- connectors: input.connectors,
105
- projectRefs: input.project_refs,
106
- tenantId: input.tenant_id,
107
- ...(input.channels ? { channels: input.channels } : {}),
108
- };
109
- }
110
- function numberMs(value, field, refId) {
111
- if (typeof value === 'number' && Number.isFinite(value)) {
112
- return Math.floor(value);
113
- }
114
- throw new Error(`Invalid ${field} timestamp for graph timeline ref ${refId}.`);
115
- }
116
- function nullableNumberMs(value, field, refId) {
117
- if (value === null || value === undefined) {
118
- return null;
119
- }
120
- return numberMs(value, field, refId);
121
- }
122
- function parseTimestampMs(value, field, refId) {
123
- if (typeof value === 'number' && Number.isFinite(value)) {
124
- return Math.floor(value);
125
- }
126
- if (typeof value === 'string') {
127
- const parsed = Date.parse(value);
128
- if (Number.isFinite(parsed)) {
129
- return parsed;
130
- }
131
- }
132
- throw new Error(`Invalid ${field} timestamp for graph timeline ref ${refId}.`);
133
- }
134
- function timelineWindow(input) {
135
- const upperBounds = [input.to_ms, input.as_of_ms].filter((value) => typeof value === 'number');
136
- return {
137
- fromMs: input.from_ms,
138
- toMs: upperBounds.length > 0 ? Math.min(...upperBounds) : undefined,
139
- };
140
- }
141
- function isInTimelineWindow(atMs, window) {
142
- return ((window.fromMs === undefined || atMs >= window.fromMs) &&
143
- (window.toMs === undefined || atMs <= window.toMs));
144
- }
145
- function loadTimelineRecordEvent(adapter, ref) {
146
- if (ref.kind === 'entity') {
147
- const entity = (0, store_js_1.getEntityNode)(ref.id, adapter);
148
- if (!entity || entity.status !== 'active') {
149
- return null;
150
- }
151
- return { kind: 'entity', at_ms: entity.created_at, ref, entity };
152
- }
153
- if (ref.kind === 'memory') {
154
- const row = adapter
155
- .prepare(`
156
- SELECT id, topic, decision, created_at, event_datetime
157
- FROM decisions
158
- WHERE id = ?
159
- LIMIT 1
160
- `)
161
- .get(ref.id);
162
- if (!row) {
163
- return null;
164
- }
165
- const eventDatetime = nullableNumberMs(row.event_datetime, 'decisions.event_datetime', ref.id);
166
- const createdAt = numberMs(row.created_at, 'decisions.created_at', ref.id);
167
- return {
168
- kind: 'memory',
169
- at_ms: eventDatetime ?? createdAt,
170
- ref,
171
- memory: {
172
- id: row.id,
173
- topic: row.topic,
174
- decision: row.decision,
175
- created_at: createdAt,
176
- event_datetime: eventDatetime,
177
- },
178
- };
179
- }
180
- if (ref.kind === 'raw') {
181
- const row = adapter
182
- .prepare(`
183
- SELECT
184
- event_index_id, source_connector, source_type, source_id, source_locator,
185
- title, event_datetime, source_timestamp_ms
186
- FROM connector_event_index
187
- WHERE event_index_id = ?
188
- LIMIT 1
189
- `)
190
- .get(ref.id);
191
- if (!row) {
192
- return null;
193
- }
194
- const eventDatetime = nullableNumberMs(row.event_datetime, 'connector_event_index.event_datetime', ref.id);
195
- const sourceTimestampMs = numberMs(row.source_timestamp_ms, 'connector_event_index.source_timestamp_ms', ref.id);
196
- return {
197
- kind: 'raw',
198
- at_ms: eventDatetime ?? sourceTimestampMs,
199
- ref,
200
- raw: {
201
- event_index_id: row.event_index_id,
202
- source_connector: row.source_connector,
203
- source_type: row.source_type,
204
- source_id: row.source_id,
205
- source_locator: row.source_locator,
206
- title: row.title,
207
- event_datetime: eventDatetime,
208
- source_timestamp_ms: sourceTimestampMs,
209
- },
210
- };
211
- }
212
- if (ref.kind === 'case') {
213
- const row = adapter
214
- .prepare(`
215
- SELECT case_id, title, status, last_activity_at, created_at, updated_at
216
- FROM case_truth
217
- WHERE case_id = ?
218
- LIMIT 1
219
- `)
220
- .get(ref.id);
221
- if (!row) {
222
- return null;
223
- }
224
- return {
225
- kind: 'case',
226
- at_ms: parseTimestampMs(row.last_activity_at ?? row.updated_at, 'case_truth.updated_at', ref.id),
227
- ref,
228
- case: {
229
- case_id: row.case_id,
230
- title: row.title,
231
- status: row.status,
232
- created_at: row.created_at,
233
- updated_at: row.updated_at,
234
- last_activity_at: row.last_activity_at,
235
- },
236
- };
237
- }
238
- return null;
239
- }
240
- function getGraphNeighborhood(adapter, input) {
241
- const depth = normalizeDepth(input.depth, 1);
242
- const limit = normalizeLimit(input.limit, DEFAULT_GRAPH_LIMIT);
243
- const visibility = graphVisibility(input);
244
- assertRefsVisible(adapter, [input.ref], visibility, input.as_of_ms);
245
- const nodes = [];
246
- const edges = [];
247
- const seenNodes = new Set();
248
- const seenEdges = new Set();
249
- addNode(nodes, seenNodes, input.ref);
250
- let frontier = [input.ref];
251
- for (let currentDepth = 0; currentDepth < depth && frontier.length > 0; currentDepth++) {
252
- const found = listFilteredEdges(adapter, frontier, {
253
- visibility,
254
- edge_filters: input.edge_filters,
255
- as_of_ms: input.as_of_ms,
256
- limit,
257
- });
258
- const nextFrontier = [];
259
- const nextKeys = new Set();
260
- for (const edge of found) {
261
- if (seenEdges.size >= limit) {
262
- break;
263
- }
264
- if (!seenEdges.has(edgeKey(edge))) {
265
- seenEdges.add(edgeKey(edge));
266
- edges.push(edge);
267
- }
268
- for (const endpoint of [edge.subject_ref, edge.object_ref]) {
269
- const before = seenNodes.size;
270
- addNode(nodes, seenNodes, endpoint);
271
- if (seenNodes.size > before && !nextKeys.has(refKey(endpoint))) {
272
- nextKeys.add(refKey(endpoint));
273
- nextFrontier.push(endpoint);
274
- }
275
- }
276
- }
277
- frontier = nextFrontier;
278
- }
279
- return { nodes, edges };
280
- }
281
- function getGraphPaths(adapter, input) {
282
- const maxDepth = normalizeDepth(input.max_depth, 3);
283
- const limit = normalizeLimit(input.limit, DEFAULT_PATH_LIMIT);
284
- const visibility = graphVisibility(input);
285
- assertRefsVisible(adapter, [input.from_ref, input.to_ref], visibility, input.as_of_ms);
286
- const targetKey = refKey(input.to_ref);
287
- const queue = [{ refs: [input.from_ref], edges: [] }];
288
- const paths = [];
289
- while (queue.length > 0 && paths.length < limit) {
290
- const path = queue.shift();
291
- if (!path) {
292
- break;
293
- }
294
- const current = path.refs[path.refs.length - 1];
295
- if (!current || path.edges.length >= maxDepth) {
296
- continue;
297
- }
298
- const edges = listFilteredEdges(adapter, [current], {
299
- visibility,
300
- edge_filters: input.edge_filters,
301
- as_of_ms: input.as_of_ms,
302
- });
303
- for (const edge of edges) {
304
- for (const next of oppositeRef(edge, current)) {
305
- if (path.refs.some((ref) => refKey(ref) === refKey(next))) {
306
- continue;
307
- }
308
- const nextPath = { refs: [...path.refs, next], edges: [...path.edges, edge] };
309
- if (refKey(next) === targetKey) {
310
- paths.push(nextPath);
311
- if (paths.length >= limit) {
312
- break;
313
- }
314
- }
315
- else {
316
- queue.push(nextPath);
317
- }
318
- }
319
- if (paths.length >= limit) {
320
- break;
321
- }
322
- }
323
- }
324
- return { paths };
325
- }
326
- function getGraphTimeline(adapter, input) {
327
- const visibility = graphVisibility(input);
328
- assertRefsVisible(adapter, [input.ref], visibility, input.as_of_ms);
329
- const limit = normalizeLimit(input.limit, DEFAULT_GRAPH_LIMIT);
330
- const window = timelineWindow(input);
331
- const edges = listFilteredEdges(adapter, [input.ref], {
332
- visibility,
333
- edge_filters: input.edge_filters,
334
- as_of_ms: input.as_of_ms,
335
- }).filter((edge) => isInTimelineWindow(edge.created_at, window));
336
- const refs = [];
337
- const seenRefs = new Set();
338
- addRef(refs, seenRefs, input.ref);
339
- for (const edge of edges) {
340
- addRef(refs, seenRefs, edge.subject_ref);
341
- addRef(refs, seenRefs, edge.object_ref);
342
- }
343
- const events = [];
344
- for (const ref of refs) {
345
- const event = loadTimelineRecordEvent(adapter, ref);
346
- if (event && isInTimelineWindow(event.at_ms, window)) {
347
- events.push(event);
348
- }
349
- }
350
- events.push(...edges.map((edge) => ({ kind: 'edge', at_ms: edge.created_at, edge })));
351
- return {
352
- ref: input.ref,
353
- events: events
354
- .sort((left, right) => left.at_ms - right.at_ms ||
355
- eventKindRank(left.kind) - eventKindRank(right.kind) ||
356
- eventKey(left).localeCompare(eventKey(right)))
357
- .slice(0, limit),
358
- };
359
- }
360
- //# sourceMappingURL=graph-query.js.map
@@ -1,6 +0,0 @@
1
- export * from './types.js';
2
- export * from './errors.js';
3
- export * from './entity-resolve.js';
4
- export * from './graph-query.js';
5
- export * from './alias-write.js';
6
- //# sourceMappingURL=index.d.ts.map
@@ -1,8 +0,0 @@
1
- import type { DatabaseAdapter } from '../db-manager.js';
2
- import { type AgentSituationSourceReadInput, type VisibleAgentSituationSources } from './source-readers.js';
3
- import type { AgentSituationInput, AgentSituationPacketRecord } from './types.js';
4
- type SituationBuilderAdapter = Pick<DatabaseAdapter, 'prepare'>;
5
- export declare function listVisibleAgentSituationSources(adapter: SituationBuilderAdapter, input: AgentSituationSourceReadInput): VisibleAgentSituationSources;
6
- export declare function buildAgentSituationPacketRecord(adapter: SituationBuilderAdapter, input: AgentSituationInput): AgentSituationPacketRecord;
7
- export {};
8
- //# sourceMappingURL=builder.d.ts.map
@@ -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