@jungjaehoon/mama-core 2.4.1 → 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 (371) 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/dist/action-contracts.d.ts +212 -0
  39. package/dist/action-contracts.js +10 -0
  40. package/dist/api/catalog.d.ts +118 -0
  41. package/dist/api/catalog.js +1756 -0
  42. package/dist/api/dispatch.d.ts +76 -0
  43. package/dist/api/dispatch.js +372 -0
  44. package/dist/canonicalize.d.ts +2 -2
  45. package/dist/canonicalize.js +3 -3
  46. package/dist/client/client.d.ts +33 -0
  47. package/dist/client/client.js +123 -0
  48. package/dist/client/ipc.d.ts +81 -0
  49. package/dist/client/ipc.js +314 -0
  50. package/dist/db-adapter/base-adapter.d.ts +6 -66
  51. package/dist/db-adapter/base-adapter.js +6 -6
  52. package/dist/db-adapter/index.d.ts +5 -5
  53. package/dist/db-adapter/index.js +2 -5
  54. package/dist/db-adapter/node-sqlite-adapter.d.ts +85 -15
  55. package/dist/db-adapter/node-sqlite-adapter.js +1968 -570
  56. package/dist/db-manager.d.ts +53 -97
  57. package/dist/db-manager.js +121 -603
  58. package/dist/embedding/embedder.d.ts +132 -0
  59. package/dist/embedding/embedder.js +299 -0
  60. package/dist/identity/principal-repository.d.ts +2 -2
  61. package/dist/index.d.ts +43 -58
  62. package/dist/index.js +97 -145
  63. package/dist/{context-compile/channel-grant.d.ts → knowledge/access.d.ts} +12 -17
  64. package/dist/knowledge/access.js +663 -0
  65. package/dist/knowledge/case-errors.d.ts +31 -0
  66. package/dist/knowledge/case-errors.js +40 -0
  67. package/dist/{cases/search-rollup.d.ts → knowledge/case-search-rollup.d.ts} +5 -4
  68. package/dist/{cases/search-rollup.js → knowledge/case-search-rollup.js} +6 -8
  69. package/dist/{cases/store.d.ts → knowledge/case-store.d.ts} +3 -6
  70. package/dist/{cases/store.js → knowledge/case-store.js} +7 -42
  71. package/dist/{cases/timeline-range.d.ts → knowledge/case-timeline-range.d.ts} +3 -3
  72. package/dist/{cases/timeline-range.js → knowledge/case-timeline-range.js} +47 -25
  73. package/dist/{cases/types.d.ts → knowledge/case-types.d.ts} +8 -2
  74. package/dist/{cases/types.js → knowledge/case-types.js} +1 -1
  75. package/dist/knowledge/commitments.d.ts +188 -0
  76. package/dist/knowledge/commitments.js +370 -0
  77. package/dist/knowledge/decision-edges.d.ts +70 -0
  78. package/dist/knowledge/decision-edges.js +123 -0
  79. package/dist/{agent-graph/types.d.ts → knowledge/graph-query.d.ts} +80 -70
  80. package/dist/knowledge/graph-query.js +1585 -0
  81. package/dist/knowledge/identity.d.ts +16 -0
  82. package/dist/knowledge/identity.js +22 -0
  83. package/dist/knowledge/index.d.ts +47 -0
  84. package/dist/knowledge/index.js +90 -0
  85. package/dist/knowledge/judgments.d.ts +118 -0
  86. package/dist/knowledge/judgments.js +808 -0
  87. package/dist/knowledge/observations.d.ts +160 -0
  88. package/dist/knowledge/observations.js +449 -0
  89. package/dist/knowledge/question-type.d.ts +34 -0
  90. package/dist/knowledge/question-type.js +70 -0
  91. package/dist/{search → knowledge}/ranker-features.js +1 -1
  92. package/dist/{search → knowledge}/search-quality.d.ts +0 -1
  93. package/dist/knowledge/search.d.ts +38 -0
  94. package/dist/knowledge/search.js +91 -0
  95. package/dist/knowledge/source-ingest.d.ts +65 -0
  96. package/dist/knowledge/source-ingest.js +174 -0
  97. package/dist/{edges/types.d.ts → knowledge/twin-edge-types.d.ts} +31 -4
  98. package/dist/{edges/types.js → knowledge/twin-edge-types.js} +13 -2
  99. package/dist/knowledge/work-dates.d.ts +49 -0
  100. package/dist/knowledge/work-dates.js +120 -0
  101. package/dist/mama-api.d.ts +114 -778
  102. package/dist/mama-api.js +313 -2461
  103. package/dist/memory/api.d.ts +264 -24
  104. package/dist/memory/api.js +1633 -843
  105. package/dist/memory/bootstrap-builder.d.ts +2 -1
  106. package/dist/memory/bootstrap-builder.js +5 -5
  107. package/dist/memory/channel-summary-state-store.d.ts +3 -2
  108. package/dist/memory/channel-summary-state-store.js +53 -51
  109. package/dist/memory/channel-summary-store.d.ts +5 -3
  110. package/dist/memory/channel-summary-store.js +3 -8
  111. package/dist/memory/dashboard-read.d.ts +46 -0
  112. package/dist/memory/dashboard-read.js +94 -0
  113. package/dist/memory/event-store.d.ts +3 -3
  114. package/dist/memory/event-store.js +3 -10
  115. package/dist/memory/finding-store.d.ts +3 -2
  116. package/dist/memory/finding-store.js +2 -7
  117. package/dist/memory/graph-read.d.ts +52 -0
  118. package/dist/memory/graph-read.js +130 -0
  119. package/dist/memory/judgment-types.d.ts +394 -0
  120. package/dist/memory/judgment-types.js +16 -0
  121. package/dist/memory/provenance-audit.d.ts +5 -2
  122. package/dist/memory/provenance-audit.js +8 -14
  123. package/dist/memory/provenance-live.d.ts +141 -0
  124. package/dist/memory/provenance-live.js +409 -0
  125. package/dist/memory/provenance-query.d.ts +5 -4
  126. package/dist/memory/provenance-query.js +21 -29
  127. package/dist/memory/provenance-resolver.d.ts +191 -0
  128. package/dist/memory/provenance-resolver.js +155 -0
  129. package/dist/memory/provenance.d.ts +1 -11
  130. package/dist/memory/provenance.js +2 -33
  131. package/dist/memory/recall-sanitize.d.ts +55 -0
  132. package/dist/memory/recall-sanitize.js +144 -0
  133. package/dist/memory/secret-filter.d.ts +32 -0
  134. package/dist/memory/secret-filter.js +126 -0
  135. package/dist/memory/truth-store.d.ts +2 -1
  136. package/dist/memory/truth-store.js +1 -4
  137. package/dist/memory/types.d.ts +74 -24
  138. package/dist/memory/types.js +75 -5
  139. package/dist/memory/write-adapters.d.ts +98 -0
  140. package/dist/memory/write-adapters.js +242 -0
  141. package/dist/operations/owner-action-effects.d.ts +53 -0
  142. package/dist/operations/owner-action-effects.js +96 -0
  143. package/dist/provenance/source-ref.d.ts +1 -1
  144. package/dist/provenance/source-ref.js +0 -2
  145. package/dist/registry/corrections.d.ts +31 -0
  146. package/dist/registry/corrections.js +332 -0
  147. package/dist/registry/record-identity.d.ts +49 -0
  148. package/dist/registry/record-identity.js +133 -0
  149. package/dist/registry/store.d.ts +101 -0
  150. package/dist/registry/store.js +395 -0
  151. package/dist/registry/types.d.ts +28 -0
  152. package/dist/registry/types.js +5 -0
  153. package/dist/relevance-scorer.js +2 -2
  154. package/dist/runtime/agent-event-bus.d.ts +50 -0
  155. package/dist/runtime/agent-event-bus.js +101 -0
  156. package/dist/runtime/drivers/claude-cli-wrapper.d.ts +155 -0
  157. package/dist/runtime/drivers/claude-cli-wrapper.js +392 -0
  158. package/dist/runtime/drivers/cli-arg-redaction.d.ts +2 -0
  159. package/dist/runtime/drivers/cli-arg-redaction.js +18 -0
  160. package/dist/runtime/drivers/cli-secret-redaction.d.ts +17 -0
  161. package/dist/runtime/drivers/cli-secret-redaction.js +126 -0
  162. package/dist/runtime/drivers/codex-app-server-process.d.ts +277 -0
  163. package/dist/runtime/drivers/codex-app-server-process.js +2342 -0
  164. package/dist/runtime/drivers/codex-auxiliary-tools.d.ts +17 -0
  165. package/dist/runtime/drivers/codex-auxiliary-tools.js +267 -0
  166. package/dist/runtime/drivers/codex-home.d.ts +20 -0
  167. package/dist/runtime/drivers/codex-home.js +674 -0
  168. package/dist/runtime/drivers/codex-thread-registry.d.ts +63 -0
  169. package/dist/runtime/drivers/codex-thread-registry.js +433 -0
  170. package/dist/runtime/drivers/persistent-cli-adapter.d.ts +160 -0
  171. package/dist/runtime/drivers/persistent-cli-adapter.js +396 -0
  172. package/dist/runtime/drivers/persistent-cli-process.d.ts +424 -0
  173. package/dist/runtime/drivers/persistent-cli-process.js +1543 -0
  174. package/dist/runtime/drivers/types.d.ts +456 -0
  175. package/dist/runtime/drivers/types.js +110 -0
  176. package/dist/runtime/mailbox.d.ts +223 -0
  177. package/dist/runtime/mailbox.js +582 -0
  178. package/dist/runtime/model-run-store.d.ts +28 -0
  179. package/dist/{model-runs/store.js → runtime/model-run-store.js} +81 -41
  180. package/dist/{model-runs/types.d.ts → runtime/model-run-types.d.ts} +33 -4
  181. package/dist/{model-runs/types.js → runtime/model-run-types.js} +1 -1
  182. package/dist/runtime/native-effect-observer.d.ts +22 -0
  183. package/dist/runtime/native-effect-observer.js +103 -0
  184. package/dist/runtime/native-input-journal.d.ts +46 -0
  185. package/dist/runtime/native-input-journal.js +308 -0
  186. package/dist/runtime/native-prompt.d.ts +118 -0
  187. package/dist/runtime/native-prompt.js +496 -0
  188. package/dist/runtime/native-session.d.ts +10 -0
  189. package/dist/{agent-graph/index.js → runtime/native-session.js} +9 -6
  190. package/dist/runtime/native-tool-trace-observer.d.ts +5 -0
  191. package/dist/runtime/native-tool-trace-observer.js +65 -0
  192. package/dist/runtime/native-turn.d.ts +272 -0
  193. package/dist/runtime/native-turn.js +1041 -0
  194. package/dist/runtime/operations.d.ts +236 -0
  195. package/dist/runtime/operations.js +565 -0
  196. package/dist/runtime/post-tool-handler.d.ts +74 -0
  197. package/dist/runtime/post-tool-handler.js +137 -0
  198. package/dist/runtime/prompt-layers.d.ts +126 -0
  199. package/dist/runtime/prompt-layers.js +239 -0
  200. package/dist/runtime/runtime-process.d.ts +102 -0
  201. package/dist/runtime/runtime-process.js +206 -0
  202. package/dist/runtime/runtime.d.ts +278 -0
  203. package/dist/runtime/runtime.js +563 -0
  204. package/dist/runtime/session-pool.d.ts +176 -0
  205. package/dist/runtime/session-pool.js +369 -0
  206. package/dist/runtime/stimulus-payload.d.ts +5 -0
  207. package/dist/runtime/stimulus-payload.js +50 -0
  208. package/dist/runtime/subagent-bridge.d.ts +24 -0
  209. package/dist/{agent-graph/types.js → runtime/subagent-bridge.js} +1 -1
  210. package/dist/runtime/text-completion.d.ts +22 -0
  211. package/dist/{agent-situation/types.js → runtime/text-completion.js} +1 -1
  212. package/dist/runtime/token-estimator.d.ts +25 -0
  213. package/dist/runtime/token-estimator.js +75 -0
  214. package/dist/runtime/tool-trace-store.d.ts +22 -0
  215. package/dist/{model-runs → runtime}/tool-trace-store.js +46 -27
  216. package/dist/runtime/trace-summary.d.ts +5 -0
  217. package/dist/runtime/trace-summary.js +74 -0
  218. package/dist/runtime/turn-text.d.ts +23 -0
  219. package/dist/runtime/turn-text.js +41 -0
  220. package/dist/storage/database.d.ts +67 -0
  221. package/dist/storage/database.js +158 -0
  222. package/package.json +20 -34
  223. package/dist/agent-graph/alias-write.d.ts +0 -3
  224. package/dist/agent-graph/alias-write.js +0 -234
  225. package/dist/agent-graph/entity-resolve.d.ts +0 -3
  226. package/dist/agent-graph/entity-resolve.js +0 -271
  227. package/dist/agent-graph/errors.d.ts +0 -4
  228. package/dist/agent-graph/errors.js +0 -11
  229. package/dist/agent-graph/graph-query.d.ts +0 -5
  230. package/dist/agent-graph/graph-query.js +0 -360
  231. package/dist/agent-graph/index.d.ts +0 -6
  232. package/dist/agent-situation/builder.d.ts +0 -8
  233. package/dist/agent-situation/builder.js +0 -239
  234. package/dist/agent-situation/cache-key.d.ts +0 -4
  235. package/dist/agent-situation/cache-key.js +0 -64
  236. package/dist/agent-situation/index.d.ts +0 -7
  237. package/dist/agent-situation/index.js +0 -28
  238. package/dist/agent-situation/packet-store.d.ts +0 -27
  239. package/dist/agent-situation/packet-store.js +0 -228
  240. package/dist/agent-situation/ranking-policy.d.ts +0 -18
  241. package/dist/agent-situation/ranking-policy.js +0 -75
  242. package/dist/agent-situation/source-readers.d.ts +0 -52
  243. package/dist/agent-situation/source-readers.js +0 -300
  244. package/dist/agent-situation/types.d.ts +0 -195
  245. package/dist/cases/wiki-page-index.d.ts +0 -37
  246. package/dist/cases/wiki-page-index.js +0 -201
  247. package/dist/config-loader.d.ts +0 -68
  248. package/dist/config-loader.js +0 -239
  249. package/dist/connectors/event-index.d.ts +0 -24
  250. package/dist/connectors/event-index.js +0 -245
  251. package/dist/connectors/raw-query.d.ts +0 -40
  252. package/dist/connectors/raw-query.js +0 -412
  253. package/dist/connectors/types.d.ts +0 -117
  254. package/dist/connectors/types.js +0 -3
  255. package/dist/context-compile/boundary-defaults.d.ts +0 -12
  256. package/dist/context-compile/boundary-defaults.js +0 -105
  257. package/dist/context-compile/channel-grant.js +0 -66
  258. package/dist/context-compile/compiler-policy.d.ts +0 -39
  259. package/dist/context-compile/compiler-policy.js +0 -147
  260. package/dist/context-compile/compiler.d.ts +0 -18
  261. package/dist/context-compile/compiler.js +0 -404
  262. package/dist/context-compile/index.d.ts +0 -10
  263. package/dist/context-compile/index.js +0 -26
  264. package/dist/context-compile/packet-store.d.ts +0 -8
  265. package/dist/context-compile/packet-store.js +0 -239
  266. package/dist/context-compile/ref.d.ts +0 -7
  267. package/dist/context-compile/ref.js +0 -102
  268. package/dist/context-compile/source-readers.d.ts +0 -70
  269. package/dist/context-compile/source-readers.js +0 -840
  270. package/dist/context-compile/types.d.ts +0 -155
  271. package/dist/context-compile/types.js +0 -11
  272. package/dist/context-compile/visibility.d.ts +0 -21
  273. package/dist/context-compile/visibility.js +0 -224
  274. package/dist/decision-tracker.d.ts +0 -206
  275. package/dist/decision-tracker.js +0 -481
  276. package/dist/edges/ref-validation.d.ts +0 -7
  277. package/dist/edges/ref-validation.js +0 -321
  278. package/dist/edges/store.d.ts +0 -8
  279. package/dist/edges/store.js +0 -129
  280. package/dist/embedding-client.d.ts +0 -28
  281. package/dist/embedding-client.js +0 -53
  282. package/dist/embedding-server/index.d.ts +0 -67
  283. package/dist/embedding-server/index.js +0 -405
  284. package/dist/embedding-server/mobile/auth.d.ts +0 -44
  285. package/dist/embedding-server/mobile/auth.js +0 -150
  286. package/dist/embedding-server/mobile/daemon.d.ts +0 -129
  287. package/dist/embedding-server/mobile/daemon.js +0 -313
  288. package/dist/embedding-server/mobile/output-parser.d.ts +0 -115
  289. package/dist/embedding-server/mobile/output-parser.js +0 -241
  290. package/dist/embedding-server/mobile/session-api.d.ts +0 -57
  291. package/dist/embedding-server/mobile/session-api.js +0 -261
  292. package/dist/embedding-server/mobile/session-manager.d.ts +0 -138
  293. package/dist/embedding-server/mobile/session-manager.js +0 -378
  294. package/dist/embedding-server/mobile/websocket-handler.d.ts +0 -137
  295. package/dist/embedding-server/mobile/websocket-handler.js +0 -486
  296. package/dist/embeddings.d.ts +0 -68
  297. package/dist/embeddings.js +0 -244
  298. package/dist/entities/audit-metrics.d.ts +0 -68
  299. package/dist/entities/audit-metrics.js +0 -124
  300. package/dist/entities/candidate-generator.d.ts +0 -8
  301. package/dist/entities/candidate-generator.js +0 -24
  302. package/dist/entities/entity-linked-decision-counts.d.ts +0 -2
  303. package/dist/entities/entity-linked-decision-counts.js +0 -29
  304. package/dist/entities/entity-list.d.ts +0 -22
  305. package/dist/entities/entity-list.js +0 -3
  306. package/dist/entities/entity-orphan-list.d.ts +0 -17
  307. package/dist/entities/entity-orphan-list.js +0 -3
  308. package/dist/entities/entity-search.d.ts +0 -20
  309. package/dist/entities/entity-search.js +0 -3
  310. package/dist/entities/errors.d.ts +0 -55
  311. package/dist/entities/errors.js +0 -100
  312. package/dist/entities/lineage-store.d.ts +0 -28
  313. package/dist/entities/lineage-store.js +0 -204
  314. package/dist/entities/normalization.d.ts +0 -14
  315. package/dist/entities/normalization.js +0 -63
  316. package/dist/entities/policy-store.d.ts +0 -8
  317. package/dist/entities/policy-store.js +0 -75
  318. package/dist/entities/policy-types.d.ts +0 -72
  319. package/dist/entities/policy-types.js +0 -59
  320. package/dist/entities/projection.d.ts +0 -8
  321. package/dist/entities/projection.js +0 -82
  322. package/dist/entities/provenance-query.d.ts +0 -32
  323. package/dist/entities/provenance-query.js +0 -3
  324. package/dist/entities/read-identity.d.ts +0 -31
  325. package/dist/entities/read-identity.js +0 -264
  326. package/dist/entities/recall-bridge.d.ts +0 -5
  327. package/dist/entities/recall-bridge.js +0 -171
  328. package/dist/entities/resolution-engine.d.ts +0 -8
  329. package/dist/entities/resolution-engine.js +0 -3
  330. package/dist/entities/rollback-preview.d.ts +0 -35
  331. package/dist/entities/rollback-preview.js +0 -3
  332. package/dist/entities/source-locator.d.ts +0 -3
  333. package/dist/entities/source-locator.js +0 -32
  334. package/dist/entities/store.d.ts +0 -69
  335. package/dist/entities/store.js +0 -544
  336. package/dist/entities/types.d.ts +0 -166
  337. package/dist/entities/types.js +0 -30
  338. package/dist/memory/extraction-prompt.d.ts +0 -4
  339. package/dist/memory/extraction-prompt.js +0 -89
  340. package/dist/memory/scope-backfill.d.ts +0 -14
  341. package/dist/memory/scope-backfill.js +0 -3
  342. package/dist/memory/scope-store.d.ts +0 -4
  343. package/dist/memory/scope-store.js +0 -9
  344. package/dist/memory-store.d.ts +0 -87
  345. package/dist/memory-store.js +0 -78
  346. package/dist/model-runs/store.d.ts +0 -13
  347. package/dist/model-runs/tool-trace-store.d.ts +0 -8
  348. package/dist/notification-manager.d.ts +0 -7
  349. package/dist/notification-manager.js +0 -12
  350. package/dist/outcome-tracker.d.ts +0 -151
  351. package/dist/outcome-tracker.js +0 -271
  352. package/dist/query-intent.d.ts +0 -23
  353. package/dist/query-intent.js +0 -114
  354. package/dist/runtime/trusted-provenance.d.ts +0 -3
  355. package/dist/runtime/trusted-provenance.js +0 -6
  356. package/dist/search/question-type.d.ts +0 -5
  357. package/dist/search/question-type.js +0 -41
  358. package/dist/test-utils.d.ts +0 -80
  359. package/dist/test-utils.js +0 -218
  360. package/dist/tier-validator.d.ts +0 -43
  361. package/dist/tier-validator.js +0 -159
  362. package/dist/time-formatter.d.ts +0 -25
  363. package/dist/time-formatter.js +0 -93
  364. /package/dist/{search → knowledge}/feedback-store.d.ts +0 -0
  365. /package/dist/{search → knowledge}/feedback-store.js +0 -0
  366. /package/dist/{search → knowledge}/ranker-features.d.ts +0 -0
  367. /package/dist/{search → knowledge}/ranker-rescore.d.ts +0 -0
  368. /package/dist/{search → knowledge}/ranker-rescore.js +0 -0
  369. /package/dist/{search → knowledge}/ranker-trainer.d.ts +0 -0
  370. /package/dist/{search → knowledge}/ranker-trainer.js +0 -0
  371. /package/dist/{search → knowledge}/search-quality.js +0 -0
@@ -1,117 +0,0 @@
1
- import type { Buffer } from 'node:buffer';
2
- import type { MemoryScopeRef } from '../memory/types.js';
3
- export interface ConnectorEventIndexRecord {
4
- event_index_id: string;
5
- source_connector: string;
6
- source_type: string;
7
- source_id: string;
8
- source_locator: string | null;
9
- channel: string | null;
10
- author: string | null;
11
- title: string | null;
12
- content: string;
13
- event_datetime: number | null;
14
- event_date: string | null;
15
- source_timestamp_ms: number;
16
- source_cursor: string | null;
17
- tenant_id: string | null;
18
- project_id: string | null;
19
- memory_scope_kind: string | null;
20
- memory_scope_id: string | null;
21
- metadata_json: string | null;
22
- artifact_locator: string | null;
23
- artifact_title: string | null;
24
- content_hash: Buffer;
25
- operator_ingest_seq: number;
26
- operator_observation_seq: number;
27
- indexed_at: string;
28
- updated_at: string;
29
- expires_at: string | null;
30
- }
31
- export interface UpsertConnectorEventIndexInput {
32
- source_connector: string;
33
- source_type: string;
34
- source_id: string;
35
- /** Stable upstream entity across revisions; enables grant-bounded change-history reads. */
36
- source_entity_id?: string | null;
37
- source_locator?: string | null;
38
- channel?: string | null;
39
- author?: string | null;
40
- title?: string | null;
41
- content: string;
42
- event_datetime?: number | null;
43
- event_date?: string | null;
44
- source_timestamp_ms?: number | null;
45
- source_cursor?: string | null;
46
- tenant_id?: string | null;
47
- project_id?: string | null;
48
- memory_scope_kind?: string | null;
49
- memory_scope_id?: string | null;
50
- metadata_json?: string | null;
51
- metadata?: unknown;
52
- artifact_locator?: string | null;
53
- artifact_title?: string | null;
54
- content_hash?: Buffer | Uint8Array | null;
55
- indexed_at?: string;
56
- updated_at?: string;
57
- expires_at?: string | null;
58
- }
59
- export interface ConnectorEventIndexCursorRecord {
60
- connector_name: string;
61
- last_seen_timestamp_ms: number;
62
- last_seen_source_id: string;
63
- last_sweep_at: string | null;
64
- last_success_at: string | null;
65
- last_error: string | null;
66
- last_error_at: string | null;
67
- indexed_count: number;
68
- }
69
- export interface UpsertConnectorEventIndexCursorInput {
70
- connector_name: string;
71
- last_seen_timestamp_ms?: number;
72
- last_seen_source_id?: string;
73
- last_sweep_at?: string | null;
74
- last_success_at?: string | null;
75
- last_error?: string | null;
76
- last_error_at?: string | null;
77
- indexed_count?: number;
78
- }
79
- export interface ConnectorEventSearchHit extends ConnectorEventIndexRecord {
80
- rank: number;
81
- score: number;
82
- }
83
- export interface RawSearchScopeFilter {
84
- kind: MemoryScopeRef['kind'];
85
- id: string;
86
- }
87
- export interface RawSearchInput {
88
- query: string;
89
- connectors?: string[];
90
- scopes?: RawSearchScopeFilter[];
91
- fromMs?: number;
92
- toMs?: number;
93
- cursor?: string;
94
- limit?: number;
95
- }
96
- export interface RawSearchHit {
97
- raw_id: string;
98
- connector: string;
99
- source_id: string;
100
- channel_id: string | null;
101
- author_label: string | null;
102
- created_at: string | null;
103
- content_preview: string;
104
- score: number;
105
- source_ref: string | null;
106
- metadata: Record<string, unknown>;
107
- }
108
- /** Explicit detail access includes the complete source; search results remain bounded previews. */
109
- export interface RawDocument extends RawSearchHit {
110
- content: string;
111
- }
112
- export interface RawSearchResult {
113
- hits: RawSearchHit[];
114
- next_cursor: string | null;
115
- }
116
- export type ConnectorEventStalenessStatus = 'healthy' | 'stale-but-warming' | 'warn' | 'unhealthy' | 'never_swept';
117
- //# sourceMappingURL=types.d.ts.map
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1,12 +0,0 @@
1
- import type { ContextBoundary, ContextProjectRef, ContextRange } from './types.js';
2
- import type { MemoryScopeRef } from '../memory/types.js';
3
- export type ContextBoundaryReadableInput = {
4
- scopes?: MemoryScopeRef[];
5
- connectors?: string[];
6
- project_refs?: ContextProjectRef[];
7
- tenant_id?: string | null;
8
- range?: ContextRange;
9
- as_of?: string | number | null;
10
- };
11
- export declare function applyContextBoundaryReadDefaults<T extends ContextBoundaryReadableInput>(input: T, boundary: ContextBoundary | undefined): T;
12
- //# sourceMappingURL=boundary-defaults.d.ts.map
@@ -1,105 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.applyContextBoundaryReadDefaults = applyContextBoundaryReadDefaults;
4
- function parseBoundaryTimeMs(value, field) {
5
- if (value === null || value === undefined) {
6
- return null;
7
- }
8
- if (typeof value === 'number' && Number.isFinite(value)) {
9
- return Math.floor(value);
10
- }
11
- if (typeof value === 'string') {
12
- const trimmed = value.trim();
13
- if (trimmed.length === 0) {
14
- throw new Error(`Invalid context boundary ${field}: ${String(value)}`);
15
- }
16
- const numeric = Number(trimmed);
17
- if (Number.isFinite(numeric)) {
18
- return Math.floor(numeric);
19
- }
20
- const parsed = Date.parse(trimmed);
21
- if (Number.isFinite(parsed)) {
22
- return parsed;
23
- }
24
- }
25
- throw new Error(`Invalid context boundary ${field}: ${String(value)}`);
26
- }
27
- function rangeBoundaryMs(value, field) {
28
- if (value === undefined) {
29
- return null;
30
- }
31
- if (typeof value === 'number' && Number.isFinite(value)) {
32
- return Math.floor(value);
33
- }
34
- throw new Error(`Invalid context boundary ${field}: ${String(value)}`);
35
- }
36
- function intersectRange(range, boundaryRange) {
37
- if (!boundaryRange) {
38
- return range;
39
- }
40
- const requestedStartMs = rangeBoundaryMs(range?.start_ms, 'range.start_ms');
41
- const requestedEndMs = rangeBoundaryMs(range?.end_ms, 'range.end_ms');
42
- const boundaryStartMs = rangeBoundaryMs(boundaryRange.start_ms, 'boundary.range.start_ms');
43
- const boundaryEndMs = rangeBoundaryMs(boundaryRange.end_ms, 'boundary.range.end_ms');
44
- const startMs = requestedStartMs === null
45
- ? boundaryStartMs
46
- : boundaryStartMs === null
47
- ? requestedStartMs
48
- : Math.max(requestedStartMs, boundaryStartMs);
49
- const endMs = requestedEndMs === null
50
- ? boundaryEndMs
51
- : boundaryEndMs === null
52
- ? requestedEndMs
53
- : Math.min(requestedEndMs, boundaryEndMs);
54
- if (startMs === null && endMs === null) {
55
- return undefined;
56
- }
57
- if (startMs !== null && endMs !== null && startMs > endMs) {
58
- throw new RangeError(`Context boundary range is empty after intersection: start_ms ${startMs} > end_ms ${endMs}`);
59
- }
60
- return {
61
- ...(startMs !== null ? { start_ms: startMs } : {}),
62
- ...(endMs !== null ? { end_ms: endMs } : {}),
63
- };
64
- }
65
- function clampAsOf(requested, boundaryAsOf) {
66
- const requestedMs = parseBoundaryTimeMs(requested, 'as_of');
67
- const boundaryMs = parseBoundaryTimeMs(boundaryAsOf, 'boundary.as_of');
68
- if (requestedMs === null) {
69
- return boundaryAsOf ?? null;
70
- }
71
- if (boundaryMs === null) {
72
- return requested ?? null;
73
- }
74
- return requestedMs <= boundaryMs ? (requested ?? null) : (boundaryAsOf ?? null);
75
- }
76
- function applyContextBoundaryReadDefaults(input, boundary) {
77
- if (!boundary) {
78
- return input;
79
- }
80
- const requestedTenantId = input.tenant_id;
81
- const boundaryTenantId = boundary.tenant_id;
82
- if (requestedTenantId !== undefined &&
83
- requestedTenantId !== null &&
84
- boundaryTenantId !== undefined &&
85
- boundaryTenantId !== null &&
86
- requestedTenantId !== boundaryTenantId) {
87
- throw new Error('Requested tenant is outside the context boundary');
88
- }
89
- const scopedInput = {
90
- ...input,
91
- scopes: input.scopes === undefined ? boundary.scopes : input.scopes,
92
- connectors: input.connectors === undefined ? boundary.connectors : input.connectors,
93
- project_refs: input.project_refs === undefined ? boundary.project_refs : input.project_refs,
94
- range: intersectRange(input.range, boundary.range),
95
- as_of: clampAsOf(input.as_of, boundary.as_of),
96
- };
97
- if (boundaryTenantId !== undefined || requestedTenantId !== undefined) {
98
- return {
99
- ...scopedInput,
100
- tenant_id: boundaryTenantId !== undefined ? boundaryTenantId : requestedTenantId,
101
- };
102
- }
103
- return scopedInput;
104
- }
105
- //# sourceMappingURL=boundary-defaults.js.map
@@ -1,66 +0,0 @@
1
- "use strict";
2
- /**
3
- * The raw visibility rule, in one place.
4
- *
5
- * There were three copies of this decision. The reader had one, twin-ref validation had a
6
- * second, and the standalone citation path had a third that carried a comment promising it
7
- * reproduced the reader "clause for clause" - which it did, until the reader changed. The
8
- * differential test that was supposed to catch that kept passing, because its fixtures
9
- * never exercised the branch production takes. Copies pinned by a test are still copies;
10
- * the test just tells you later.
11
- *
12
- * So the rule lives here, and everything that needs it takes it from here. It has to exist
13
- * in two compiled forms - a boolean for checking one row you already hold, and SQL for
14
- * selecting rows you do not - and those two forms are adjacent in this file with a
15
- * differential over a matrix that includes what production sends. Two forms of one rule is
16
- * the irreducible minimum; three copies of a decision is not.
17
- */
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.isChannelGranted = isChannelGranted;
20
- exports.channelGrantClause = channelGrantClause;
21
- /**
22
- * The rule: an event is visible when its connector is granted and its channel is one of
23
- * the channels granted for that connector.
24
- *
25
- * A connector absent from the grant is denied. A connector present with an empty list is
26
- * also denied - "granted the connector but no channel of it" is not a useful state, and
27
- * reading it as "all channels" is how a grant becomes a wildcard.
28
- */
29
- function isChannelGranted(connector, channel, grant) {
30
- if (typeof channel !== 'string' || channel.length === 0)
31
- return false;
32
- const channels = grant[connector];
33
- return Array.isArray(channels) && channels.includes(channel);
34
- }
35
- /**
36
- * The same rule as a SQL predicate.
37
- *
38
- * Returns null when nothing is readable, which callers must treat as "select nothing"
39
- * rather than "no filter" - an empty WHERE is how a visibility rule turns into a full scan
40
- * at the exact moment it should have refused.
41
- *
42
- * `requestedConnectors` narrows further: a connector the caller did not ask for is not read
43
- * even though it is granted. The grant is a ceiling, never an instruction.
44
- */
45
- function channelGrantClause(grant, requestedConnectors, columns) {
46
- const pairs = [];
47
- const params = [];
48
- for (const [connector, channels] of Object.entries(grant)) {
49
- if (Array.isArray(requestedConnectors) && !requestedConnectors.includes(connector))
50
- continue;
51
- // Array.isArray, not `?? []`: the boolean form denies a malformed grant quietly, so
52
- // this one must not throw on it. Two forms of a rule that disagree on bad input have
53
- // already started to be two rules.
54
- if (!Array.isArray(channels))
55
- continue;
56
- const unique = [
57
- ...new Set(channels.filter((channel) => typeof channel === 'string' && channel.length > 0)),
58
- ];
59
- if (unique.length === 0)
60
- continue;
61
- pairs.push(`(${columns.connector} = ? AND ${columns.channel} IN (${unique.map(() => '?').join(', ')}))`);
62
- params.push(connector, ...unique);
63
- }
64
- return pairs.length === 0 ? null : { sql: `(${pairs.join(' OR ')})`, params };
65
- }
66
- //# sourceMappingURL=channel-grant.js.map
@@ -1,39 +0,0 @@
1
- import type { ContextEvidence, ContextRef } from './types.js';
2
- import type { ContextCandidate, HiddenCandidateAggregate } from './source-readers.js';
3
- export interface ContextCompilerPolicyInput {
4
- task: string;
5
- candidates: ContextCandidate[];
6
- hidden: HiddenCandidateAggregate;
7
- limit?: number;
8
- strictness?: 'recall' | 'balanced' | 'strict' | 'low' | 'medium' | 'high';
9
- max_tokens?: number;
10
- }
11
- export interface ContextCompilerPolicyResult {
12
- selected_evidence: ContextEvidence[];
13
- source_refs: ContextRef[];
14
- evidence_clusters: unknown[];
15
- related_decisions: Array<{
16
- memory_id: string;
17
- title: string;
18
- }>;
19
- rejected_refs: ContextRef[];
20
- rejected_summary: string[];
21
- missing_context: string[];
22
- caveats: string[];
23
- retrieval_diagnostics: {
24
- candidate_count: number;
25
- selected_count: number;
26
- rejected_count: number;
27
- hidden: HiddenCandidateAggregate;
28
- deduplicated_count: number;
29
- strict_vector_only_rejected_count: number;
30
- token_budget_rejected_count: number;
31
- limit_rejected_count: number;
32
- truncated_by_tokens: boolean;
33
- estimated_tokens: number;
34
- };
35
- estimated_tokens: number;
36
- }
37
- export declare function estimateEvidenceTokens(evidence: Pick<ContextEvidence, 'title' | 'excerpt'>): number;
38
- export declare function applyContextCompilerPolicy(input: ContextCompilerPolicyInput): ContextCompilerPolicyResult;
39
- //# sourceMappingURL=compiler-policy.d.ts.map
@@ -1,147 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.estimateEvidenceTokens = estimateEvidenceTokens;
4
- exports.applyContextCompilerPolicy = applyContextCompilerPolicy;
5
- const ref_js_1 = require("./ref.js");
6
- function normalizeLimit(limit) {
7
- return Math.max(0, Math.min(100, Math.floor(limit ?? 10)));
8
- }
9
- function estimateEvidenceTokens(evidence) {
10
- const text = `${evidence.title ?? ''}\n${evidence.excerpt ?? ''}`;
11
- return Math.max(1, Math.ceil(text.length / 4));
12
- }
13
- function sortedCandidates(candidates) {
14
- return [...candidates].sort((left, right) => {
15
- const scoreDiff = right.score - left.score;
16
- if (scoreDiff !== 0) {
17
- return scoreDiff;
18
- }
19
- return (right.timestamp_ms ?? 0) - (left.timestamp_ms ?? 0);
20
- });
21
- }
22
- function shouldRejectVectorOnly(candidate, strictness) {
23
- return (strictness === 'strict' &&
24
- candidate.support.is_vector_only === true &&
25
- candidate.support.confirmation_signals.length === 0);
26
- }
27
- function evidenceFromCandidate(candidate) {
28
- return {
29
- ref: candidate.ref,
30
- title: candidate.title,
31
- excerpt: candidate.excerpt,
32
- score: candidate.score,
33
- reasons: [
34
- ...(candidate.support.confirmation_signals ?? []),
35
- ...(candidate.support.graph_expanded ? ['graph_expanded'] : []),
36
- ],
37
- ...(candidate.retrieval_diagnostics
38
- ? { retrieval_diagnostics: candidate.retrieval_diagnostics }
39
- : {}),
40
- };
41
- }
42
- function addCountSummary(parts, label, count) {
43
- if (count > 0) {
44
- parts.push(`${label}: ${count}`);
45
- }
46
- }
47
- function normalizeStrictness(strictness) {
48
- switch (strictness) {
49
- case 'low':
50
- case 'recall':
51
- return 'recall';
52
- case 'high':
53
- case 'strict':
54
- return 'strict';
55
- case 'medium':
56
- case 'balanced':
57
- case undefined:
58
- return 'balanced';
59
- }
60
- return 'balanced';
61
- }
62
- function applyContextCompilerPolicy(input) {
63
- const limit = normalizeLimit(input.limit);
64
- const strictness = normalizeStrictness(input.strictness);
65
- const maxTokens = typeof input.max_tokens === 'number' && Number.isFinite(input.max_tokens)
66
- ? Math.max(0, Math.floor(input.max_tokens))
67
- : null;
68
- const seen = new Set();
69
- const selected = [];
70
- const sourceRefs = [];
71
- const rejectedRefs = [];
72
- const counters = {
73
- deduplicated: 0,
74
- strictVectorOnly: 0,
75
- tokenBudget: 0,
76
- limit: 0,
77
- };
78
- let estimatedTokens = 0;
79
- for (const candidate of sortedCandidates(input.candidates)) {
80
- if (!candidate.visible) {
81
- continue;
82
- }
83
- const key = (0, ref_js_1.serializeContextRefForProvenance)(candidate.ref);
84
- if (seen.has(key)) {
85
- counters.deduplicated += 1;
86
- rejectedRefs.push(candidate.ref);
87
- continue;
88
- }
89
- if (shouldRejectVectorOnly(candidate, strictness)) {
90
- counters.strictVectorOnly += 1;
91
- rejectedRefs.push(candidate.ref);
92
- continue;
93
- }
94
- if (selected.length >= limit) {
95
- counters.limit += 1;
96
- rejectedRefs.push(candidate.ref);
97
- continue;
98
- }
99
- const evidence = evidenceFromCandidate(candidate);
100
- const nextTokens = estimateEvidenceTokens(evidence);
101
- if (maxTokens !== null && estimatedTokens + nextTokens > maxTokens) {
102
- counters.tokenBudget += 1;
103
- rejectedRefs.push(candidate.ref);
104
- continue;
105
- }
106
- selected.push(evidence);
107
- sourceRefs.push(candidate.ref);
108
- seen.add(key);
109
- estimatedTokens += nextTokens;
110
- }
111
- const rejectedSummary = [];
112
- addCountSummary(rejectedSummary, 'deduplicated duplicate candidates', counters.deduplicated);
113
- addCountSummary(rejectedSummary, 'strictness rejected vector-only candidates', counters.strictVectorOnly);
114
- addCountSummary(rejectedSummary, 'token budget rejected candidates', counters.tokenBudget);
115
- addCountSummary(rejectedSummary, 'limit rejected candidates', counters.limit);
116
- const caveats = [];
117
- if (input.hidden.total > 0) {
118
- caveats.push(`hidden candidates omitted: ${input.hidden.total}`);
119
- }
120
- const relatedDecisions = selected.flatMap((evidence) => evidence.ref.kind === 'memory'
121
- ? [{ memory_id: evidence.ref.id, title: evidence.title ?? evidence.ref.id }]
122
- : []);
123
- return {
124
- selected_evidence: selected,
125
- source_refs: sourceRefs,
126
- evidence_clusters: [],
127
- related_decisions: relatedDecisions,
128
- rejected_refs: rejectedRefs,
129
- rejected_summary: rejectedSummary,
130
- missing_context: selected.length === 0 ? [`No visible evidence selected for task: ${input.task}`] : [],
131
- caveats,
132
- retrieval_diagnostics: {
133
- candidate_count: input.candidates.length,
134
- selected_count: selected.length,
135
- rejected_count: rejectedRefs.length,
136
- hidden: input.hidden,
137
- deduplicated_count: counters.deduplicated,
138
- strict_vector_only_rejected_count: counters.strictVectorOnly,
139
- token_budget_rejected_count: counters.tokenBudget,
140
- limit_rejected_count: counters.limit,
141
- truncated_by_tokens: counters.tokenBudget > 0,
142
- estimated_tokens: estimatedTokens,
143
- },
144
- estimated_tokens: estimatedTokens,
145
- };
146
- }
147
- //# sourceMappingURL=compiler-policy.js.map
@@ -1,18 +0,0 @@
1
- import type { DatabaseAdapter } from '../db-manager.js';
2
- import type { ContextBoundary, ContextCompileInput, ContextPacket, ContextRef } from './types.js';
3
- import { type ContextSourceReadInput, type ContextSourceReadResult } from './source-readers.js';
4
- type ContextCompilerAdapter = Pick<DatabaseAdapter, 'prepare'>;
5
- export interface ContextCompilerDeps {
6
- adapter?: ContextCompilerAdapter;
7
- boundary?: ContextBoundary;
8
- signal?: AbortSignal;
9
- deadlineMs?: number;
10
- now?: () => number;
11
- packetId?: () => string;
12
- readMemoryCandidates?: (input: ContextSourceReadInput) => Promise<ContextSourceReadResult> | ContextSourceReadResult;
13
- readRawCandidates?: (input: ContextSourceReadInput) => Promise<ContextSourceReadResult> | ContextSourceReadResult;
14
- readGraphCandidates?: (input: ContextSourceReadInput, visibleRefs: readonly ContextRef[]) => Promise<ContextSourceReadResult> | ContextSourceReadResult;
15
- }
16
- export declare function compileContext(input: ContextCompileInput, deps?: ContextCompilerDeps): Promise<ContextPacket>;
17
- export {};
18
- //# sourceMappingURL=compiler.d.ts.map