@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
@@ -0,0 +1,308 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NativeInputJournal = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const canonicalize_js_1 = require("../canonicalize.js");
6
+ function resultRecord(value) {
7
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
8
+ throw new Error('Native turn result is not an object');
9
+ }
10
+ const record = value;
11
+ const usage = record.totalUsage;
12
+ if (typeof record.response !== 'string' ||
13
+ !Number.isSafeInteger(record.turns) ||
14
+ Number(record.turns) < 0 ||
15
+ !usage ||
16
+ typeof usage.input_tokens !== 'number' ||
17
+ !Number.isFinite(usage.input_tokens) ||
18
+ usage.input_tokens < 0 ||
19
+ typeof usage.output_tokens !== 'number' ||
20
+ !Number.isFinite(usage.output_tokens) ||
21
+ usage.output_tokens < 0 ||
22
+ ['cache_creation_input_tokens', 'cache_read_input_tokens', 'cost_usd'].some((key) => usage[key] !== undefined &&
23
+ (typeof usage[key] !== 'number' || !Number.isFinite(usage[key]) || Number(usage[key]) < 0)) ||
24
+ typeof record.stopReason !== 'string' ||
25
+ (record.modelRunId !== null && typeof record.modelRunId !== 'string') ||
26
+ !['available', 'backend_no_run', 'commit_failed'].includes(String(record.modelRunProvenance)) ||
27
+ (record.modelRunProvenance === 'available' &&
28
+ (typeof record.modelRunId !== 'string' || !record.modelRunId.trim())) ||
29
+ (record.modelRunProvenance !== 'available' && record.modelRunId !== null) ||
30
+ (record.stoppedBy !== undefined && typeof record.stoppedBy !== 'string') ||
31
+ (record.ownerJournalProvenance !== undefined &&
32
+ record.ownerJournalProvenance !== 'commit_failed')) {
33
+ throw new Error('Native turn result is invalid');
34
+ }
35
+ return {
36
+ response: record.response,
37
+ turns: Number(record.turns),
38
+ totalUsage: {
39
+ input_tokens: Number(usage.input_tokens),
40
+ output_tokens: Number(usage.output_tokens),
41
+ ...(usage.cache_creation_input_tokens === undefined
42
+ ? {}
43
+ : { cache_creation_input_tokens: Number(usage.cache_creation_input_tokens) }),
44
+ ...(usage.cache_read_input_tokens === undefined
45
+ ? {}
46
+ : { cache_read_input_tokens: Number(usage.cache_read_input_tokens) }),
47
+ ...(usage.cost_usd === undefined ? {} : { cost_usd: Number(usage.cost_usd) }),
48
+ },
49
+ stopReason: record.stopReason,
50
+ modelRunId: record.modelRunId,
51
+ modelRunProvenance: record.modelRunProvenance,
52
+ ...(record.stoppedBy === undefined
53
+ ? {}
54
+ : { stoppedBy: record.stoppedBy }),
55
+ ...(record.ownerJournalProvenance === 'commit_failed'
56
+ ? { ownerJournalProvenance: 'commit_failed' }
57
+ : {}),
58
+ };
59
+ }
60
+ function address(value) {
61
+ if (!value ||
62
+ typeof value !== 'object' ||
63
+ !['claude', 'codex'].includes(String(value.backend)) ||
64
+ typeof value.sessionId !== 'string' ||
65
+ !value.sessionId.trim()) {
66
+ throw new Error('Native input address is invalid');
67
+ }
68
+ }
69
+ function required(value) {
70
+ if (typeof value !== 'string' || !value.trim()) {
71
+ throw new Error('Native input identity is required');
72
+ }
73
+ }
74
+ /** One durable dispatch identity per accepted input. No task meaning or effect classification. */
75
+ class NativeInputJournal {
76
+ db;
77
+ now;
78
+ constructor(db, now = Date.now) {
79
+ this.db = db;
80
+ this.now = now;
81
+ const existed = db
82
+ .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='native_input_deliveries'")
83
+ .get();
84
+ db.exec(`CREATE TABLE IF NOT EXISTS native_input_deliveries (
85
+ input_id INTEGER PRIMARY KEY REFERENCES mailbox_inputs(id) ON DELETE CASCADE,
86
+ invocation_id TEXT UNIQUE,
87
+ state TEXT NOT NULL CHECK (state IN ('prepared','dispatching','accepted','settled','uncertain')),
88
+ dispatch_json TEXT, receipt_json TEXT, error TEXT, updated_at INTEGER NOT NULL
89
+ )`);
90
+ db.exec(`CREATE TABLE IF NOT EXISTS native_turn_results (
91
+ receipt_json TEXT NOT NULL,
92
+ principal_id TEXT NOT NULL,
93
+ primary_stimulus_id TEXT NOT NULL,
94
+ primary_kind TEXT CHECK (primary_kind IS NULL OR primary_kind IN
95
+ ('owner_message','source_delta','scheduled','native_event')),
96
+ result_json TEXT NOT NULL CHECK (json_valid(result_json)),
97
+ created_at INTEGER NOT NULL,
98
+ PRIMARY KEY (receipt_json, principal_id)
99
+ )`);
100
+ if (!existed) {
101
+ db.exec(`INSERT OR IGNORE INTO native_input_deliveries (input_id,state,error,updated_at)
102
+ SELECT id,'uncertain','Legacy input has no native dispatch record',created_at
103
+ FROM mailbox_inputs WHERE status='claimed' OR (status='pending' AND attempts>0)`);
104
+ }
105
+ }
106
+ get(inputId) {
107
+ const row = this.db
108
+ .prepare('SELECT * FROM native_input_deliveries WHERE input_id=?')
109
+ .get(inputId);
110
+ if (!row) {
111
+ return null;
112
+ }
113
+ const dispatch = row.dispatch_json === null ? null : JSON.parse(row.dispatch_json);
114
+ const receipt = row.receipt_json === null ? null : JSON.parse(row.receipt_json);
115
+ if (row.dispatch_json !== null) {
116
+ address(dispatch);
117
+ required(dispatch.inputId);
118
+ }
119
+ if (row.receipt_json !== null) {
120
+ address(receipt);
121
+ required(receipt.backend === 'claude' ? receipt.inputId : receipt.turnId);
122
+ }
123
+ if (dispatch && dispatch.inputId !== row.invocation_id) {
124
+ throw new Error('Stored native input identity mismatch');
125
+ }
126
+ if (receipt &&
127
+ (!dispatch ||
128
+ receipt.backend !== dispatch.backend ||
129
+ receipt.sessionId !== dispatch.sessionId ||
130
+ (receipt.backend === 'claude' && receipt.inputId !== row.invocation_id))) {
131
+ throw new Error('Stored native receipt identity mismatch');
132
+ }
133
+ if (row.state === 'accepted' && !receipt) {
134
+ throw new Error('Accepted native input has no receipt');
135
+ }
136
+ if (row.state === 'dispatching' && !dispatch) {
137
+ throw new Error('Dispatched native input has no address');
138
+ }
139
+ return {
140
+ invocationId: row.invocation_id,
141
+ state: row.state,
142
+ dispatch,
143
+ receipt,
144
+ error: row.error,
145
+ };
146
+ }
147
+ /** Page the inputs that share one exact native receipt under one principal. */
148
+ listByReceipt(receipt, principalId, options = {}) {
149
+ address(receipt);
150
+ required(receipt.backend === 'codex' ? receipt.turnId : receipt.inputId);
151
+ required(principalId);
152
+ const afterId = options.afterId ?? 0;
153
+ const limit = options.limit ?? 25;
154
+ if (!Number.isSafeInteger(afterId) || afterId < 0) {
155
+ throw new Error('Native receipt cursor must be a non-negative integer');
156
+ }
157
+ if (!Number.isSafeInteger(limit) || limit < 1 || limit > 100) {
158
+ throw new Error('Native receipt page limit must be 1 to 100');
159
+ }
160
+ const rows = this.db
161
+ .prepare(`SELECT n.input_id FROM native_input_deliveries n
162
+ JOIN mailbox_inputs m ON m.id=n.input_id
163
+ WHERE n.receipt_json=? AND m.principal_id=? AND n.input_id>?
164
+ ORDER BY n.input_id LIMIT ?`)
165
+ .all((0, canonicalize_js_1.canonicalizeJSON)(receipt), principalId, afterId, limit + 1);
166
+ const page = rows.slice(0, limit);
167
+ return {
168
+ inputIds: page.map((row) => row.input_id),
169
+ nextCursor: rows.length > limit ? page[page.length - 1].input_id : null,
170
+ };
171
+ }
172
+ /** One immutable final result per native turn, written before any consumer reply. */
173
+ storeResult(inputId, result) {
174
+ const native = this.get(inputId);
175
+ if (!native?.receipt)
176
+ throw new Error('Native result requires an accepted input receipt');
177
+ const mailbox = this.db
178
+ .prepare('SELECT stimulus_id, principal_id, kind FROM mailbox_inputs WHERE id=?')
179
+ .get(inputId);
180
+ if (!mailbox)
181
+ throw new Error('Native result input is missing');
182
+ if (!['owner_message', 'source_delta', 'scheduled', 'native_event'].includes(String(mailbox.kind))) {
183
+ throw new Error('Native result input has no producer-stated kind');
184
+ }
185
+ const receiptJson = (0, canonicalize_js_1.canonicalizeJSON)(native.receipt);
186
+ const resultJson = (0, canonicalize_js_1.canonicalizeJSON)(resultRecord(result));
187
+ this.db.transaction(() => {
188
+ const existing = this.db
189
+ .prepare('SELECT primary_stimulus_id, primary_kind, result_json FROM native_turn_results WHERE receipt_json=? AND principal_id=?')
190
+ .get(receiptJson, mailbox.principal_id);
191
+ if (existing) {
192
+ if (existing.primary_stimulus_id !== mailbox.stimulus_id ||
193
+ existing.primary_kind !== mailbox.kind ||
194
+ existing.result_json !== resultJson) {
195
+ throw new Error('Native turn result conflicts with its durable receipt');
196
+ }
197
+ return;
198
+ }
199
+ this.db
200
+ .prepare(`INSERT INTO native_turn_results
201
+ (receipt_json,principal_id,primary_stimulus_id,primary_kind,result_json,created_at)
202
+ VALUES (?,?,?,?,?,?)`)
203
+ .run(receiptJson, mailbox.principal_id, mailbox.stimulus_id, mailbox.kind, resultJson, this.now());
204
+ });
205
+ }
206
+ /** A later accepted input can recover the one final result under its principal. */
207
+ resultForReceipt(receipt, principalId) {
208
+ address(receipt);
209
+ required(receipt.backend === 'codex' ? receipt.turnId : receipt.inputId);
210
+ required(principalId);
211
+ const row = this.db
212
+ .prepare('SELECT primary_stimulus_id, primary_kind, result_json FROM native_turn_results WHERE receipt_json=? AND principal_id=?')
213
+ .get((0, canonicalize_js_1.canonicalizeJSON)(receipt), principalId);
214
+ if (!row)
215
+ return null;
216
+ if (row.primary_kind !== null &&
217
+ !['owner_message', 'source_delta', 'scheduled', 'native_event'].includes(row.primary_kind)) {
218
+ throw new Error('Stored native primary kind is invalid');
219
+ }
220
+ return {
221
+ ...resultRecord(JSON.parse(row.result_json)),
222
+ primaryStimulusId: row.primary_stimulus_id,
223
+ primaryKind: row.primary_kind,
224
+ };
225
+ }
226
+ prepare(inputId) {
227
+ this.db
228
+ .prepare(`INSERT OR IGNORE INTO native_input_deliveries
229
+ (input_id,invocation_id,state,updated_at) VALUES (?,?,'prepared',?)`)
230
+ .run(inputId, (0, node_crypto_1.randomUUID)(), this.now());
231
+ return this.get(inputId);
232
+ }
233
+ dispatch(inputId, value) {
234
+ address(value);
235
+ required(value.inputId);
236
+ const record = this.get(inputId);
237
+ if (!record || record.invocationId !== value.inputId) {
238
+ throw new Error('Native dispatch input identity mismatch');
239
+ }
240
+ const encoded = (0, canonicalize_js_1.canonicalizeJSON)(value);
241
+ if (record.dispatch) {
242
+ if ((0, canonicalize_js_1.canonicalizeJSON)(record.dispatch) !== encoded) {
243
+ throw new Error('Native dispatch identity conflict');
244
+ }
245
+ throw new Error('Native input was already dispatched; reconciliation is required');
246
+ }
247
+ if (record.state !== 'prepared') {
248
+ throw new Error('Native input requires reconciliation before dispatch');
249
+ }
250
+ const changed = this.db
251
+ .prepare("UPDATE native_input_deliveries SET state='dispatching',dispatch_json=?,updated_at=? WHERE input_id=? AND state='prepared'")
252
+ .run(encoded, this.now(), inputId);
253
+ if (changed.changes !== 1) {
254
+ throw new Error('Native input was already dispatched; reconciliation is required');
255
+ }
256
+ }
257
+ accept(inputId, value) {
258
+ address(value);
259
+ required(value.backend === 'claude' ? value.inputId : value.turnId);
260
+ this.db.transaction(() => {
261
+ const record = this.get(inputId);
262
+ if (!record?.dispatch ||
263
+ record.dispatch.backend !== value.backend ||
264
+ record.dispatch.sessionId !== value.sessionId ||
265
+ (value.backend === 'claude' && value.inputId !== record.invocationId)) {
266
+ throw new Error('Native receipt does not match the dispatched input');
267
+ }
268
+ if (record.receipt) {
269
+ if ((0, canonicalize_js_1.canonicalizeJSON)(record.receipt) !== (0, canonicalize_js_1.canonicalizeJSON)(value)) {
270
+ throw new Error('Native receipt identity conflict');
271
+ }
272
+ return;
273
+ }
274
+ this.db
275
+ .prepare("UPDATE native_input_deliveries SET state='accepted',receipt_json=?,error=NULL,updated_at=? WHERE input_id=?")
276
+ .run((0, canonicalize_js_1.canonicalizeJSON)(value), this.now(), inputId);
277
+ });
278
+ }
279
+ settle(inputId, reconciled = false) {
280
+ this.db.transaction(() => {
281
+ const record = this.get(inputId);
282
+ if (!record) {
283
+ throw new Error('Native delivery record is missing');
284
+ }
285
+ if (record.state !== 'prepared' && !record.receipt && !reconciled) {
286
+ throw new Error('Native input acknowledgement is unresolved');
287
+ }
288
+ this.db
289
+ .prepare("UPDATE native_input_deliveries SET state='settled',error=NULL,updated_at=? WHERE input_id=?")
290
+ .run(this.now(), inputId);
291
+ this.db
292
+ .prepare("UPDATE mailbox_inputs SET status='acked',acked_at=COALESCE(acked_at,?) WHERE id=?")
293
+ .run(this.now(), inputId);
294
+ });
295
+ }
296
+ uncertain(inputId, error) {
297
+ this.db
298
+ .prepare("UPDATE native_input_deliveries SET state='uncertain',error=?,updated_at=? WHERE input_id=? AND state!='settled' AND (state!='uncertain' OR error IS NOT ?)")
299
+ .run(error.slice(0, 500), this.now(), inputId, error.slice(0, 500));
300
+ }
301
+ pending(limit, afterId = 0) {
302
+ return this.db
303
+ .prepare("SELECT input_id FROM native_input_deliveries WHERE state IN ('dispatching','accepted','uncertain') AND input_id>? ORDER BY input_id LIMIT ?")
304
+ .all(afterId, limit).map((row) => row.input_id);
305
+ }
306
+ }
307
+ exports.NativeInputJournal = NativeInputJournal;
308
+ //# sourceMappingURL=native-input-journal.js.map
@@ -0,0 +1,118 @@
1
+ /**
2
+ * One native request: prepare its protocol options, forward acknowledgement and
3
+ * events, record observed exchanges, and return the harness result.
4
+ * Tool execution, compaction and continuation belong to the native harness.
5
+ */
6
+ import type { BackendType, ContentBlock, HostExecutionContext, HostToolBridge, IModelRunner, Message, StopReason, StreamCallbacks, ToolResultBlock, TurnInfo, Usage } from './drivers/types.js';
7
+ import type { SessionPool } from './session-pool.js';
8
+ import type { NativeEffectReplayBoundary } from './native-effect-observer.js';
9
+ /** Why a run stopped on the host's side, as distinct from the model's own stop reason. */
10
+ export interface BudgetStopInfo {
11
+ channelKey: string;
12
+ modelRunId: string | null;
13
+ agentId?: string;
14
+ budgetTokens: number;
15
+ runTokenBudget: number;
16
+ turns: number;
17
+ }
18
+ /** Run-local observers and tier. Never instance state: two runs can overlap. */
19
+ export interface RunScope {
20
+ streamCallbacks?: StreamCallbacks;
21
+ tier: 1 | 2 | 3;
22
+ onTurn?: (turn: TurnInfo) => void;
23
+ onToolUse?: (toolName: string, input: unknown, result: unknown) => void;
24
+ }
25
+ /** State the loop is handed and hands back. Everything here changes as turns run. */
26
+ export interface NativePromptCarry {
27
+ turn: number;
28
+ stopReason: StopReason;
29
+ stoppedBy?: 'budget';
30
+ budgetTokens: number;
31
+ resolvedCliSessionId: string | null;
32
+ sessionIsNew: boolean;
33
+ }
34
+ /**
35
+ * The fourteen facts about this request the loop actually reads. The caller's own
36
+ * options object is wider and names things the core has no business knowing; this is
37
+ * the part that crosses.
38
+ */
39
+ export interface NativePromptRequest {
40
+ nativeInputId?: string;
41
+ source?: string;
42
+ freshSession?: boolean;
43
+ resumeSession?: boolean;
44
+ model?: string;
45
+ requestTimeoutMs?: number;
46
+ onCliSessionReset?: (sessionId: string) => void;
47
+ systemPrompt?: string;
48
+ promptKind?: string;
49
+ promptBrief?: 'sent' | 'omitted';
50
+ agentContext?: {
51
+ roleName?: string;
52
+ };
53
+ modelRunId?: string;
54
+ stopAfterSuccessfulTools?: string[];
55
+ }
56
+ /** A tool result carries two host-only fields that history must not keep. */
57
+ export type InternalToolResultBlock = ToolResultBlock & {
58
+ abort?: boolean;
59
+ terminalCode?: string;
60
+ };
61
+ /**
62
+ * Everything the loop reads that does not change while it runs. The caller builds it
63
+ * once, before the first turn.
64
+ */
65
+ export interface NativePromptContext<TToolContext extends HostExecutionContext> {
66
+ prepareSessionContent?: (session: import('./drivers/types.js').NativeSessionState) => Promise<ContentBlock[]>;
67
+ channelKey: string;
68
+ claudeNativeTools: string | undefined;
69
+ effectiveSessionPolicyFingerprint: string | undefined;
70
+ restrictedReadRoots: readonly string[] | undefined;
71
+ nativeCwd: string | undefined;
72
+ history: Message[];
73
+ hostToolBridge: HostToolBridge | undefined;
74
+ isCodex: boolean;
75
+ isDurableRuntime: boolean;
76
+ nativeEffects: NativeEffectReplayBoundary;
77
+ ownedModelRunId: string | null;
78
+ standingPolicy: boolean;
79
+ /** What this call opens with, already composed by the entry. */
80
+ systemPrompt: string | undefined;
81
+ /**
82
+ * The complete current policy, asked for only when the durable thread this run was
83
+ * resuming turned out to be gone. The loop never composes one: it asks.
84
+ */
85
+ reanchor: (() => Promise<string>) | undefined;
86
+ resumeInstructions: (() => Promise<string>) | undefined;
87
+ runScope: RunScope;
88
+ toolExecutionContext: TToolContext | null;
89
+ totalUsage: Usage;
90
+ tracksSessionPolicy: boolean;
91
+ }
92
+ /**
93
+ * Native driver, lifecycle bookkeeping and the consumer's input formatting port.
94
+ */
95
+ export interface NativePromptHost {
96
+ agent: IModelRunner;
97
+ backend: BackendType;
98
+ model: string;
99
+ runTokenBudget: number;
100
+ sessionPool: SessionPool;
101
+ onBudgetStop?: (info: BudgetStopInfo) => void;
102
+ onTokenUsage?: (record: {
103
+ channel_key: string;
104
+ agent_id?: string;
105
+ input_tokens: number;
106
+ output_tokens: number;
107
+ cache_read_tokens?: number;
108
+ cost_usd?: number;
109
+ }) => void;
110
+ onMetric?: (name: string, value: number, labels?: Record<string, string>) => void;
111
+ formatLastMessageOnly(history: Message[]): string;
112
+ }
113
+ /**
114
+ * Submit one native request and observe its completed exchanges and final result.
115
+ * `carry` is read and written: the caller reads the final state off it.
116
+ */
117
+ export declare function runNativePrompt<TToolContext extends HostExecutionContext>(carry: NativePromptCarry, context: NativePromptContext<TToolContext>, request: NativePromptRequest, host: NativePromptHost): Promise<void>;
118
+ //# sourceMappingURL=native-prompt.d.ts.map