@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
@@ -3,17 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.beginModelRunInAdapter = beginModelRunInAdapter;
7
- exports.commitModelRunInAdapter = commitModelRunInAdapter;
8
- exports.failModelRunInAdapter = failModelRunInAdapter;
9
- exports.getModelRunInAdapter = getModelRunInAdapter;
10
6
  exports.beginModelRun = beginModelRun;
11
7
  exports.commitModelRun = commitModelRun;
12
8
  exports.failModelRun = failModelRun;
13
9
  exports.getModelRun = getModelRun;
10
+ exports.listModelRunNativeInputs = listModelRunNativeInputs;
14
11
  const node_crypto_1 = __importDefault(require("node:crypto"));
15
- const db_manager_js_1 = require("../db-manager.js");
16
- const types_js_1 = require("./types.js");
12
+ const model_run_types_js_1 = require("./model-run-types.js");
17
13
  const BEGIN_REPLAY_FIELDS = [
18
14
  'model_id',
19
15
  'model_provider',
@@ -73,6 +69,14 @@ function requireTimestamp(value, field, modelRunId) {
73
69
  function normalizeNumber(value, fallback) {
74
70
  return typeof value === 'number' && Number.isFinite(value) ? Math.floor(value) : fallback;
75
71
  }
72
+ function requireTokenCount(value) {
73
+ if (value === undefined)
74
+ return undefined;
75
+ if (!Number.isSafeInteger(value) || value < 0) {
76
+ throw new Error('model_runs.token_count must be a non-negative safe integer');
77
+ }
78
+ return value;
79
+ }
76
80
  function normalizeCost(value) {
77
81
  return typeof value === 'number' && Number.isFinite(value) ? value : null;
78
82
  }
@@ -125,7 +129,7 @@ function parseInputRefs(row) {
125
129
  }
126
130
  throw new Error(`Invalid model_runs.input_refs_json for ${row.model_run_id}: expected object`);
127
131
  }
128
- const MODEL_RUN_STATUS_SET = new Set(types_js_1.MODEL_RUN_STATUSES);
132
+ const MODEL_RUN_STATUS_SET = new Set(model_run_types_js_1.MODEL_RUN_STATUSES);
129
133
  function requireModelRunStatus(value, modelRunId) {
130
134
  if (typeof value === 'string' && MODEL_RUN_STATUS_SET.has(value)) {
131
135
  return value;
@@ -167,10 +171,6 @@ function mapModelRunRow(row) {
167
171
  : null,
168
172
  };
169
173
  }
170
- async function initializedAdapter() {
171
- await (0, db_manager_js_1.initDB)();
172
- return (0, db_manager_js_1.getAdapter)();
173
- }
174
174
  function selectModelRun(adapter, id) {
175
175
  const row = adapter
176
176
  .prepare(`
@@ -329,11 +329,15 @@ function isDuplicateModelRunError(error) {
329
329
  const message = error instanceof Error ? error.message : String(error);
330
330
  return /UNIQUE constraint failed: model_runs\.model_run_id|PRIMARY KEY constraint failed/i.test(message);
331
331
  }
332
- function resolveExistingCommittedRun(existing, summary) {
332
+ function resolveExistingCommittedRun(existing, summary, tokenCount) {
333
333
  if (existing.status === 'committed') {
334
- if (existing.completion_summary === summary) {
334
+ if (existing.completion_summary === summary &&
335
+ (tokenCount === undefined || existing.token_count === tokenCount)) {
335
336
  return existing;
336
337
  }
338
+ if (tokenCount !== undefined && existing.token_count !== tokenCount) {
339
+ throw new Error(`Model run already committed with different token_count: ${existing.model_run_id}`);
340
+ }
337
341
  throw new Error(`Model run already committed with different completion_summary: ${existing.model_run_id}`);
338
342
  }
339
343
  if (existing.status === 'failed') {
@@ -341,11 +345,15 @@ function resolveExistingCommittedRun(existing, summary) {
341
345
  }
342
346
  throw new Error(`Cannot commit model run in ${existing.status} status: ${existing.model_run_id}`);
343
347
  }
344
- function resolveExistingFailedRun(existing, errorSummary) {
348
+ function resolveExistingFailedRun(existing, errorSummary, tokenCount) {
345
349
  if (existing.status === 'failed') {
346
- if (existing.error_summary === errorSummary) {
350
+ if (existing.error_summary === errorSummary &&
351
+ (tokenCount === undefined || existing.token_count === tokenCount)) {
347
352
  return existing;
348
353
  }
354
+ if (tokenCount !== undefined && existing.token_count !== tokenCount) {
355
+ throw new Error(`Model run already failed with different token_count: ${existing.model_run_id}`);
356
+ }
349
357
  throw new Error(`Model run already failed with different error_summary: ${existing.model_run_id}`);
350
358
  }
351
359
  if (existing.status === 'committed') {
@@ -353,7 +361,7 @@ function resolveExistingFailedRun(existing, errorSummary) {
353
361
  }
354
362
  throw new Error(`Cannot fail model run in ${existing.status} status: ${existing.model_run_id}`);
355
363
  }
356
- function beginModelRunInAdapter(adapter, input) {
364
+ function beginModelRun(adapter, input) {
357
365
  const id = nullableString(input.model_run_id) ?? modelRunId();
358
366
  const createdAt = normalizeTimestamp(input.created_at);
359
367
  const status = normalizeBeginStatus(input.status, id);
@@ -391,11 +399,12 @@ function beginModelRunInAdapter(adapter, input) {
391
399
  }
392
400
  return requireModelRun(adapter, id);
393
401
  }
394
- function commitModelRunInAdapter(adapter, modelRunId, summary) {
402
+ function commitModelRun(adapter, modelRunId, summary, tokenCount) {
395
403
  const summaryValue = nullableString(summary);
404
+ const measuredTokens = requireTokenCount(tokenCount);
396
405
  const existing = requireModelRun(adapter, modelRunId);
397
406
  if (existing.status !== 'running') {
398
- return resolveExistingCommittedRun(existing, summaryValue);
407
+ return resolveExistingCommittedRun(existing, summaryValue, measuredTokens);
399
408
  }
400
409
  const completedAt = Date.now();
401
410
  const result = adapter
@@ -404,20 +413,22 @@ function commitModelRunInAdapter(adapter, modelRunId, summary) {
404
413
  SET status = 'committed',
405
414
  completion_summary = ?,
406
415
  error_summary = NULL,
416
+ token_count = ?,
407
417
  completed_at = ?
408
418
  WHERE model_run_id = ? AND status = 'running'
409
419
  `)
410
- .run(summaryValue, completedAt, modelRunId);
420
+ .run(summaryValue, measuredTokens ?? existing.token_count, completedAt, modelRunId);
411
421
  if (result.changes === 0) {
412
- return resolveExistingCommittedRun(requireModelRun(adapter, modelRunId), summaryValue);
422
+ return resolveExistingCommittedRun(requireModelRun(adapter, modelRunId), summaryValue, measuredTokens);
413
423
  }
414
424
  return requireModelRun(adapter, modelRunId);
415
425
  }
416
- function failModelRunInAdapter(adapter, modelRunId, errorSummary) {
426
+ function failModelRun(adapter, modelRunId, errorSummary, tokenCount) {
417
427
  const errorSummaryValue = nullableString(errorSummary);
428
+ const measuredTokens = requireTokenCount(tokenCount);
418
429
  const existing = requireModelRun(adapter, modelRunId);
419
430
  if (existing.status !== 'running') {
420
- return resolveExistingFailedRun(existing, errorSummaryValue);
431
+ return resolveExistingFailedRun(existing, errorSummaryValue, measuredTokens);
421
432
  }
422
433
  const completedAt = Date.now();
423
434
  const result = adapter
@@ -426,32 +437,61 @@ function failModelRunInAdapter(adapter, modelRunId, errorSummary) {
426
437
  SET status = 'failed',
427
438
  completion_summary = NULL,
428
439
  error_summary = ?,
440
+ token_count = ?,
429
441
  completed_at = ?
430
442
  WHERE model_run_id = ? AND status = 'running'
431
443
  `)
432
- .run(errorSummaryValue, completedAt, modelRunId);
444
+ .run(errorSummaryValue, measuredTokens ?? existing.token_count, completedAt, modelRunId);
433
445
  if (result.changes === 0) {
434
- return resolveExistingFailedRun(requireModelRun(adapter, modelRunId), errorSummaryValue);
446
+ return resolveExistingFailedRun(requireModelRun(adapter, modelRunId), errorSummaryValue, measuredTokens);
435
447
  }
436
448
  return requireModelRun(adapter, modelRunId);
437
449
  }
438
- function getModelRunInAdapter(adapter, modelRunId) {
450
+ function getModelRun(adapter, modelRunId) {
439
451
  return selectModelRun(adapter, modelRunId);
440
452
  }
441
- async function beginModelRun(input) {
442
- const adapter = await initializedAdapter();
443
- return beginModelRunInAdapter(adapter, input);
444
- }
445
- async function commitModelRun(modelRunId, summary) {
446
- const adapter = await initializedAdapter();
447
- return commitModelRunInAdapter(adapter, modelRunId, summary);
448
- }
449
- async function failModelRun(modelRunId, errorSummary) {
450
- const adapter = await initializedAdapter();
451
- return failModelRunInAdapter(adapter, modelRunId, errorSummary);
452
- }
453
- async function getModelRun(modelRunId) {
454
- const adapter = await initializedAdapter();
455
- return getModelRunInAdapter(adapter, modelRunId);
453
+ /** Read one run's native input cohort without copying payloads or inventing legacy principals. */
454
+ function listModelRunNativeInputs(adapter, modelRunId, principalId, options = {}) {
455
+ requireString(principalId, 'principal_id');
456
+ const run = requireModelRun(adapter, modelRunId);
457
+ if (run.input_refs?.principalId !== principalId ||
458
+ !((typeof run.input_refs.nativeInputId === 'string' && run.input_refs.nativeInputId.trim()) ||
459
+ (typeof run.input_refs.sourceMessageRef === 'string' &&
460
+ run.input_refs.sourceMessageRef.trim()))) {
461
+ throw new Error('Model run has no matching principal-bound native input');
462
+ }
463
+ const afterId = options.afterId ?? 0;
464
+ const limit = options.limit ?? 25;
465
+ if (!Number.isSafeInteger(afterId) || afterId < 0) {
466
+ throw new Error('Model run native input cursor must be a non-negative integer');
467
+ }
468
+ if (!Number.isSafeInteger(limit) || limit < 1 || limit > 100) {
469
+ throw new Error('Model run native input page limit must be 1 to 100');
470
+ }
471
+ const rows = adapter
472
+ .prepare(`SELECT input_id, stimulus_id, kind, principal_id, channel_key,
473
+ occurred_at, status, native_state
474
+ FROM model_run_native_inputs
475
+ WHERE model_run_id=? AND principal_id=? AND input_id>?
476
+ ORDER BY input_id LIMIT ?`)
477
+ .all(modelRunId, principalId, afterId, limit + 1);
478
+ if (afterId === 0 && rows.length === 0) {
479
+ throw new Error('Model run has no accepted native turn receipt');
480
+ }
481
+ const page = rows.slice(0, limit);
482
+ return {
483
+ runStatus: run.status,
484
+ items: page.map((row) => ({
485
+ inputId: row.input_id,
486
+ stimulusId: row.stimulus_id,
487
+ kind: row.kind,
488
+ principalId: row.principal_id,
489
+ channelKey: row.channel_key,
490
+ occurredAt: row.occurred_at,
491
+ status: row.status,
492
+ nativeState: row.native_state,
493
+ })),
494
+ nextCursor: rows.length > limit ? page[page.length - 1].input_id : null,
495
+ };
456
496
  }
457
- //# sourceMappingURL=store.js.map
497
+ //# sourceMappingURL=model-run-store.js.map
@@ -42,7 +42,8 @@ export interface ModelRunRecord {
42
42
  created_at: number;
43
43
  completed_at: number | null;
44
44
  }
45
- export interface AppendToolTraceInput {
45
+ /** Fields shared by model-backed and service-operation trace appends. */
46
+ interface AppendToolTraceCommon {
46
47
  /** Host-derived access scope; legacy rows remain unscoped. */
47
48
  owner_scope?: string | null;
48
49
  project_id?: string | null;
@@ -51,7 +52,6 @@ export interface AppendToolTraceInput {
51
52
  evidence_json?: string | null;
52
53
  catalog_revision?: string | null;
53
54
  trace_id?: string;
54
- model_run_id: string;
55
55
  gateway_call_id?: string | null;
56
56
  tool_name: string;
57
57
  input_summary?: string | null;
@@ -63,6 +63,30 @@ export interface AppendToolTraceInput {
63
63
  failure_code?: string | null;
64
64
  created_at?: number;
65
65
  }
66
+ /**
67
+ * Model-backed append. `model_run_id` names the authorizing model run and stays
68
+ * required: the existing gateway/tracing callers are unchanged.
69
+ */
70
+ export interface AppendToolTraceInput extends AppendToolTraceCommon {
71
+ model_run_id: string;
72
+ }
73
+ /**
74
+ * Service/CLI operation append. A truthful host operation traces itself without
75
+ * inventing a model run: the row is anchored by a nonempty `operation_id` and
76
+ * `actor_principal_id`, which stay required.
77
+ *
78
+ * `model_run_id` is OPTIONAL causal provenance: when a real completed model run
79
+ * caused this operation observation, its id may be carried so the association is
80
+ * queryable (the `model_runs` FK validates that the reference is real). It is
81
+ * never fabricated, never invented, and never serves as execution authorization
82
+ * - an operation without a causing run simply omits it and the column stays NULL.
83
+ */
84
+ export interface AppendOperationToolTraceInput extends AppendToolTraceCommon {
85
+ operation_id: string;
86
+ actor_principal_id: string;
87
+ /** Optional real causal model run. Stored when supplied; absent stays NULL. */
88
+ model_run_id?: string | null;
89
+ }
66
90
  export interface ToolTraceRecord {
67
91
  /** Host-derived access scope; legacy rows remain unscoped. */
68
92
  owner_scope?: string | null;
@@ -72,7 +96,11 @@ export interface ToolTraceRecord {
72
96
  evidence_json?: string | null;
73
97
  catalog_revision?: string | null;
74
98
  trace_id: string;
75
- model_run_id: string;
99
+ /** NULL only for a service/operation-origin trace; legacy rows keep their model id. */
100
+ model_run_id: string | null;
101
+ /** Set (with actor_principal_id) exactly when this is an operation-origin trace. */
102
+ operation_id: string | null;
103
+ actor_principal_id: string | null;
76
104
  gateway_call_id: string | null;
77
105
  tool_name: string;
78
106
  input_summary: string | null;
@@ -100,4 +128,5 @@ export interface ToolTracePage {
100
128
  traces: ToolTraceRecord[];
101
129
  next_cursor: string | null;
102
130
  }
103
- //# sourceMappingURL=types.d.ts.map
131
+ export {};
132
+ //# sourceMappingURL=model-run-types.d.ts.map
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MODEL_RUN_STATUSES = void 0;
4
4
  exports.MODEL_RUN_STATUSES = ['running', 'committed', 'failed', 'legacy'];
5
- //# sourceMappingURL=types.js.map
5
+ //# sourceMappingURL=model-run-types.js.map
@@ -0,0 +1,22 @@
1
+ /** Notifications are observations, not backend pre-execution authorization hooks. */
2
+ export interface NativeEffectObserver {
3
+ started(name: string, input: Record<string, unknown>): void;
4
+ settled(name: string, toolUseId: string, isError: boolean, outcome?: 'unknown'): void;
5
+ interrupted(): void;
6
+ /** Settle the durable admission marker only after a clean run return. */
7
+ finished?(): void;
8
+ }
9
+ export declare function isDelegationToolName(name: string): boolean;
10
+ export declare function isNativeToolName(name: string): boolean;
11
+ /** TG-03/04/05/06: a completed shell invocation is still unsafe to replay. */
12
+ export declare class NativeEffectReplayBoundary {
13
+ private readonly observer?;
14
+ private observed;
15
+ constructor(observer?: NativeEffectObserver | undefined);
16
+ private observe;
17
+ started(name: string, input: Record<string, unknown>): void;
18
+ settled(name: string, toolUseId: string, isError: boolean, outcome?: 'unknown'): void;
19
+ finished(): void;
20
+ failure(error: unknown, allowPreExecutionRecovery?: boolean): unknown;
21
+ }
22
+ //# sourceMappingURL=native-effect-observer.d.ts.map
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NativeEffectReplayBoundary = void 0;
4
+ exports.isDelegationToolName = isDelegationToolName;
5
+ exports.isNativeToolName = isNativeToolName;
6
+ const types_js_1 = require("./drivers/types.js");
7
+ const NATIVE_EFFECT_NAMES = new Set([
8
+ 'bash',
9
+ 'write',
10
+ 'edit',
11
+ 'multiedit',
12
+ 'apply_patch',
13
+ 'exec_command',
14
+ 'shell',
15
+ 'shell_command',
16
+ 'commandexecution',
17
+ 'filechange',
18
+ 'execute_command',
19
+ 'write_to_file',
20
+ 'replace_in_file',
21
+ ]);
22
+ /**
23
+ * Delegation is an admission, not an effect. Spawning a native subagent (Claude `Agent`/
24
+ * `Task`, Codex `spawn_agent`/`send_input`/`resume_agent`) names nothing the replay gate
25
+ * can re-execute: every effect the child performs carries its own ledger row through the
26
+ * gateway. Measured 2026-09-10: a Claude `Agent` tool_use recorded as `native_tool`
27
+ * under the reused `workorder:board:full:repair` occurrence blocked every later board
28
+ * order ("owner effect requires reconciliation before replay", orders #4805-#4807).
29
+ * Codex spawns already bypass this boundary via `onSubagentStart`; the Claude spawn
30
+ * arrives as an ordinary tool_use, so the name set must not claim it.
31
+ */
32
+ const DELEGATION_NAMES = new Set([
33
+ 'agent',
34
+ 'task',
35
+ 'spawn_agent',
36
+ 'collabagenttoolcall',
37
+ 'send_input',
38
+ 'resume_agent',
39
+ ]);
40
+ function isDelegationToolName(name) {
41
+ return DELEGATION_NAMES.has(name.toLowerCase());
42
+ }
43
+ const NATIVE_READ_NAMES = new Set(['read', 'glob', 'grep', 'webfetch', 'websearch', 'web_search']);
44
+ function isNativeToolName(name) {
45
+ return (NATIVE_EFFECT_NAMES.has(name.toLowerCase()) ||
46
+ NATIVE_READ_NAMES.has(name.toLowerCase()) ||
47
+ isDelegationToolName(name));
48
+ }
49
+ /** TG-03/04/05/06: a completed shell invocation is still unsafe to replay. */
50
+ class NativeEffectReplayBoundary {
51
+ observer;
52
+ observed = false;
53
+ constructor(observer) {
54
+ this.observer = observer;
55
+ }
56
+ observe(callback) {
57
+ try {
58
+ callback();
59
+ }
60
+ catch {
61
+ // A trace sink is not an authorization hook; omit exception text (may contain input).
62
+ console.warn('[NativeEffectObserver] observation failed');
63
+ }
64
+ }
65
+ started(name, input) {
66
+ if (!isNativeToolName(name))
67
+ return;
68
+ if (NATIVE_EFFECT_NAMES.has(name.toLowerCase()))
69
+ this.observed = true;
70
+ this.observe(() => this.observer?.started(name, input));
71
+ }
72
+ settled(name, toolUseId, isError, outcome) {
73
+ if (!isNativeToolName(name))
74
+ return;
75
+ if (NATIVE_EFFECT_NAMES.has(name.toLowerCase()))
76
+ this.observed = true;
77
+ this.observe(() => this.observer?.settled(name, toolUseId, isError, outcome));
78
+ }
79
+ finished() {
80
+ this.observe(() => this.observer?.finished?.());
81
+ }
82
+ failure(error, allowPreExecutionRecovery = false) {
83
+ // Only AgentLoop's trusted recoverable-session predicate may permit a reset.
84
+ // Once a native effect is observed, even a session error cannot allow replay.
85
+ if (allowPreExecutionRecovery && !this.observed) {
86
+ this.observe(() => this.observer?.interrupted());
87
+ return error;
88
+ }
89
+ if (!this.observed) {
90
+ this.observe(() => this.observer?.interrupted());
91
+ return error;
92
+ }
93
+ try {
94
+ this.observer?.interrupted();
95
+ }
96
+ catch {
97
+ // The durable started reservation remains unresolved if settlement fails.
98
+ }
99
+ return new types_js_1.AgentError('Native run effect outcome is uncertain; reconcile effects before replaying the occurrence.', 'MUTATION_OUTCOME_UNKNOWN', error instanceof Error ? error : new Error(String(error)), false);
100
+ }
101
+ }
102
+ exports.NativeEffectReplayBoundary = NativeEffectReplayBoundary;
103
+ //# sourceMappingURL=native-effect-observer.js.map
@@ -0,0 +1,46 @@
1
+ import type { DatabaseAdapter } from '../db-manager.js';
2
+ import type { NativeInputDispatch, NativeInputReceipt } from './drivers/types.js';
3
+ import type { NativeTurnResult } from './native-turn.js';
4
+ import type { StimulusKind } from './mailbox.js';
5
+ type NativeTurnResultPayload = Pick<NativeTurnResult, 'response' | 'turns' | 'totalUsage' | 'stopReason' | 'modelRunId' | 'modelRunProvenance' | 'stoppedBy'> & {
6
+ ownerJournalProvenance?: 'commit_failed';
7
+ };
8
+ export type NativeTurnResultRecord = NativeTurnResultPayload & {
9
+ primaryStimulusId: string;
10
+ /** Null only for historical results whose primary mailbox row was already pruned. */
11
+ primaryKind: StimulusKind | null;
12
+ };
13
+ export interface NativeDeliveryRecord {
14
+ invocationId: string | null;
15
+ state: 'prepared' | 'dispatching' | 'accepted' | 'settled' | 'uncertain';
16
+ dispatch: NativeInputDispatch | null;
17
+ receipt: NativeInputReceipt | null;
18
+ error: string | null;
19
+ }
20
+ /** One durable dispatch identity per accepted input. No task meaning or effect classification. */
21
+ export declare class NativeInputJournal {
22
+ private readonly db;
23
+ private readonly now;
24
+ constructor(db: DatabaseAdapter, now?: () => number);
25
+ get(inputId: number): NativeDeliveryRecord | null;
26
+ /** Page the inputs that share one exact native receipt under one principal. */
27
+ listByReceipt(receipt: NativeInputReceipt, principalId: string, options?: {
28
+ afterId?: number;
29
+ limit?: number;
30
+ }): {
31
+ inputIds: number[];
32
+ nextCursor: number | null;
33
+ };
34
+ /** One immutable final result per native turn, written before any consumer reply. */
35
+ storeResult(inputId: number, result: NativeTurnResult): void;
36
+ /** A later accepted input can recover the one final result under its principal. */
37
+ resultForReceipt(receipt: NativeInputReceipt, principalId: string): NativeTurnResultRecord | null;
38
+ prepare(inputId: number): NativeDeliveryRecord;
39
+ dispatch(inputId: number, value: NativeInputDispatch): void;
40
+ accept(inputId: number, value: NativeInputReceipt): void;
41
+ settle(inputId: number, reconciled?: boolean): void;
42
+ uncertain(inputId: number, error: string): void;
43
+ pending(limit: number, afterId?: number): number[];
44
+ }
45
+ export {};
46
+ //# sourceMappingURL=native-input-journal.d.ts.map