@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,425 @@
1
+ /**
2
+ * Persistent Claude CLI Process - Keeps Claude alive for multi-turn conversations
3
+ *
4
+ * WHY THIS EXISTS:
5
+ * - Previous approach spawned new Claude CLI process for each message
6
+ * - Each spawn required ~20K system prompt to be sent every time
7
+ * - Result: Slow responses (16-30 seconds per message)
8
+ *
9
+ * NEW ARCHITECTURE:
10
+ * - Keep Claude process alive using stream-json input/output
11
+ * - Send messages via stdin, receive responses via stdout
12
+ * - Session memory preserved in Claude's context
13
+ * - System prompt sent only once at process start
14
+ *
15
+ * STREAM-JSON PROTOCOL:
16
+ * Input (stdin):
17
+ * User message: {"type":"user","message":{"role":"user","content":"..."}}
18
+ * Tool result: {"type":"user","message":{"role":"user","content":[{"type":"tool_result","tool_use_id":"xxx","content":"...","is_error":false}]}}
19
+ *
20
+ * Output (stdout):
21
+ * Init: {"type":"system","subtype":"init",...}
22
+ * Assistant: {"type":"assistant","message":{...}}
23
+ * Tool use: Content block with type="tool_use" in assistant message
24
+ * Result: {"type":"result","subtype":"success",...}
25
+ */
26
+ import { EventEmitter } from 'events';
27
+ import { type SessionPolicyStatus } from './types.js';
28
+ import { type PromptCallbacks, type PromptResult, type TokenUsageRecord } from './types.js';
29
+ import { type ThinkingEffort } from './claude-effort.js';
30
+ export interface PersistentProcessOptions {
31
+ sessionId: string;
32
+ /**
33
+ * Timeouts the product states. A driver does not read a config file: the
34
+ * numbers arrive with the options, and the defaults below are what a caller
35
+ * that states nothing gets.
36
+ */
37
+ /**
38
+ * The isolated workspace this process runs in, and the empty plugin
39
+ * directory that keeps the host's global plugins out of every turn. The
40
+ * product states both; the driver only creates and uses them. The values
41
+ * are a product decision recorded in its CLAUDE.md — a driver that invented
42
+ * them would be deciding where another system keeps its files.
43
+ */
44
+ /**
45
+ * Where this run keeps its files. Required: a driver does not know a product's
46
+ * directory name, and the default it used to compute spelled one out.
47
+ */
48
+ workspaceDir: string;
49
+ timeouts?: {
50
+ requestMs?: number;
51
+ idleMs?: number;
52
+ sessionMs?: number;
53
+ cleanupMs?: number;
54
+ pendingToolMs?: number;
55
+ };
56
+ /** Host-computed authority fingerprint bound to this process generation. */
57
+ policyFingerprint?: string;
58
+ model?: string;
59
+ systemPrompt?: string;
60
+ mcpConfigPath?: string;
61
+ /**
62
+ * Skip permission prompts for tool execution
63
+ *
64
+ * @warning SECURITY RISK: Bypasses all permission checks.
65
+ * Only enable in trusted environments where agent actions are pre-approved.
66
+ */
67
+ dangerouslySkipPermissions?: boolean;
68
+ /** Noninteractive consumers use dontAsk with explicit permission rules. */
69
+ permissionMode?: 'default' | 'acceptEdits' | 'dontAsk' | 'plan';
70
+ useGatewayTools?: boolean;
71
+ /** Timeout for each request in ms (default: 120000) */
72
+ requestTimeout?: number;
73
+ /** Idle timeout for pooled persistent processes in ms (default: session_ms) */
74
+ idleTimeoutMs?: number;
75
+ /** Cleanup interval for pooled persistent processes in ms (default: session_cleanup_ms) */
76
+ cleanupIntervalMs?: number;
77
+ /** Maximum time to keep a process waiting for host-side tool results (default: max(4 * idleTimeoutMs, 30m)) */
78
+ pendingToolUseTimeoutMs?: number;
79
+ /** Environment variables to pass to the Claude CLI process */
80
+ env?: Record<string, string>;
81
+ /** Complete inherited environment supplied by the consumer; env is applied afterward. */
82
+ processEnv?: NodeJS.ProcessEnv;
83
+ /** Structurally allowed tools (--allowedTools CLI flag) */
84
+ allowedTools?: string[];
85
+ /** Structurally disallowed tools (--disallowedTools CLI flag) */
86
+ disallowedTools?: string[];
87
+ /** Override built-in tool set (--tools CLI flag). Use "" to disable all tools. */
88
+ tools?: string;
89
+ /** Override plugin directory (--plugin-dir CLI flag). Use empty dir to disable plugins. */
90
+ pluginDir?: string;
91
+ /** Optional callback for recording token usage */
92
+ onTokenUsage?: (record: TokenUsageRecord) => void;
93
+ /** Channel key for token usage tracking */
94
+ channelKey?: string;
95
+ /** Agent ID for token usage tracking */
96
+ agentId?: string;
97
+ /** Thinking effort passed as --effort on models that accept it. */
98
+ effort?: ThinkingEffort;
99
+ }
100
+ export interface PersistentProcessAcquireResult {
101
+ process: PersistentClaudeProcess;
102
+ created: boolean;
103
+ }
104
+ export type { ToolUseBlock } from './types.js';
105
+ export interface ContentBlock {
106
+ type: 'text' | 'tool_use' | 'tool_result';
107
+ text?: string;
108
+ id?: string;
109
+ name?: string;
110
+ input?: Record<string, unknown>;
111
+ tool_use_id?: string;
112
+ content?: string | Array<{
113
+ type: string;
114
+ text?: string;
115
+ }>;
116
+ is_error?: boolean;
117
+ }
118
+ export interface StreamMessage {
119
+ type: 'system' | 'assistant' | 'result' | 'error' | 'user';
120
+ subtype?: string;
121
+ uuid?: string;
122
+ origin?: {
123
+ kind: string;
124
+ };
125
+ /**
126
+ * Set by the CLI on events produced INSIDE a subagent (the Agent tool_use id that
127
+ * started it). It is the only non-heuristic way to tell a child's tool calls from the
128
+ * parent's on one stream; absent/null means "this stream position", not "parent".
129
+ */
130
+ parent_tool_use_id?: string | null;
131
+ /** Background-task identity on `system` task_* events; field name varies by CLI build. */
132
+ task_id?: string;
133
+ taskId?: string;
134
+ task?: {
135
+ id?: string;
136
+ status?: string;
137
+ description?: string;
138
+ agentId?: string;
139
+ };
140
+ agent_id?: string;
141
+ agentId?: string;
142
+ message?: {
143
+ role: string;
144
+ content: ContentBlock[] | string;
145
+ model?: string;
146
+ id?: string;
147
+ usage?: {
148
+ input_tokens: number;
149
+ output_tokens: number;
150
+ cache_read_input_tokens?: number;
151
+ cache_creation_input_tokens?: number;
152
+ };
153
+ };
154
+ result?: string;
155
+ session_id?: string;
156
+ total_cost_usd?: number;
157
+ usage?: {
158
+ input_tokens: number;
159
+ output_tokens: number;
160
+ cache_read_input_tokens?: number;
161
+ cache_creation_input_tokens?: number;
162
+ };
163
+ duration_ms?: number;
164
+ num_turns?: number;
165
+ is_error?: boolean;
166
+ error?: string;
167
+ }
168
+ export type { PromptCallbacks, PromptResult };
169
+ type ProcessState = 'idle' | 'busy' | 'starting' | 'dead';
170
+ /** Host-visible spawn/finish of a native background Agent on the Claude stream. */
171
+ export interface ClaudeSubagentStreamEvent {
172
+ kind: 'started' | 'completed';
173
+ agentThreadId: string;
174
+ agentPath: string;
175
+ itemId: string;
176
+ status?: 'completed' | 'unknown';
177
+ finalText?: string;
178
+ /**
179
+ * False when the CLI opened its own follow-up turn for the notification: that turn IS
180
+ * the owner reacting, so the host must not enqueue a second one.
181
+ */
182
+ wakeRequired: boolean;
183
+ }
184
+ /** A turn the CLI begins on its own after a background task notification (no stdin). */
185
+ export interface ClaudeAutonomousTurnEvent {
186
+ agentThreadId: string;
187
+ agentPath: string;
188
+ itemId: string;
189
+ }
190
+ export interface ClaudeAutonomousTurnResultEvent extends ClaudeAutonomousTurnEvent {
191
+ text: string;
192
+ isError: boolean;
193
+ }
194
+ /**
195
+ * PersistentClaudeProcess - Manages a single long-lived Claude CLI process
196
+ *
197
+ * Features:
198
+ * - Keeps Claude process alive for multiple messages
199
+ * - Uses stream-json for bidirectional communication
200
+ * - Handles tool execution via Gateway Tools
201
+ * - Auto-restarts on process death
202
+ */
203
+ export declare class PersistentClaudeProcess extends EventEmitter {
204
+ private process;
205
+ private options;
206
+ private state;
207
+ private outputBuffer;
208
+ private currentCallbacks;
209
+ /**
210
+ * The most recent request that offered a follow-up sink. A CLI turn that no stdin request
211
+ * and no tracked child explains (a grandchild's task notification, measured 2026-09-10)
212
+ * still answers SOMEONE: the last request that asked.
213
+ */
214
+ private lastFollowUp;
215
+ private currentResolve;
216
+ private currentReject;
217
+ private currentInputUuid;
218
+ private inputAcknowledged;
219
+ private requestTimeoutHandle;
220
+ private toolUseBlocks;
221
+ private readonly promptToolExchanges;
222
+ private completedToolExchanges;
223
+ private awaitingToolResults;
224
+ private pendingToolUseStartedAt;
225
+ private accumulatedText;
226
+ private startPromise;
227
+ private onTokenUsage?;
228
+ /** Live + just-finished native background Agents, keyed by their `Agent` tool_use id. */
229
+ private readonly backgroundAgents;
230
+ /**
231
+ * True once a turn's `result` resolved while a background child was still running. From
232
+ * then until the next stdin request, unattributed assistant/user events on the stream
233
+ * belong to that child, not to a parent turn that no longer exists.
234
+ */
235
+ private parentTurnEnded;
236
+ /** Set between a `task_notification` and the CLI's own follow-up turn. */
237
+ private pendingNotification;
238
+ /** The CLI-initiated turn currently running with no stdin request behind it. */
239
+ private autonomousTurn;
240
+ /**
241
+ * Resolve the effective request timeout in ms.
242
+ * 0 = unlimited (no timeout). Returns the configured or default value.
243
+ */
244
+ private _getRequestTimeoutMs;
245
+ constructor(options: PersistentProcessOptions);
246
+ /**
247
+ * Start the Claude CLI process
248
+ *
249
+ * Note: The CLI only emits the 'init' event after receiving the first user message.
250
+ * So we don't wait for init here - we just start the process and let it run.
251
+ * The first sendMessage() call will handle init as part of its response flow.
252
+ */
253
+ start(): Promise<void>;
254
+ private doStart;
255
+ /**
256
+ * Build CLI arguments for stream-json mode
257
+ */
258
+ private buildArgs;
259
+ /**
260
+ * Send a user message to Claude
261
+ */
262
+ sendMessage(content: string, callbacks?: PromptCallbacks, nativeInputId?: string): Promise<PromptResult>;
263
+ /**
264
+ * Send a tool result back to Claude
265
+ */
266
+ sendToolResult(toolUseId: string, result: string, isError?: boolean, callbacks?: PromptCallbacks): Promise<PromptResult>;
267
+ /**
268
+ * Send multiple tool results back to Claude in a single message.
269
+ * Required when Claude requests multiple tools in one turn.
270
+ */
271
+ sendToolResults(results: Array<{
272
+ tool_use_id: string;
273
+ content: string;
274
+ is_error: boolean;
275
+ }>, callbacks?: PromptCallbacks): Promise<PromptResult>;
276
+ /**
277
+ * Handle stdout data
278
+ */
279
+ private handleStdout;
280
+ /**
281
+ * Process a parsed event from stdout
282
+ */
283
+ private processEvent;
284
+ private recordToolUse;
285
+ private trackBackgroundAgent;
286
+ private pruneBackgroundAgents;
287
+ /** The newest tracked agent matching a predicate; `system` task events carry no item id. */
288
+ private latestBackgroundAgent;
289
+ private taskIdentityOf;
290
+ private recordBackgroundTaskStarted;
291
+ /** Lift the child's id out of the "Async agent launched" tool_result text. */
292
+ private recordBackgroundLaunchResult;
293
+ private fireSubagentStart;
294
+ /**
295
+ * Which background child an assistant/user event belongs to, or null for the parent.
296
+ *
297
+ * `parent_tool_use_id` is authoritative when the CLI stamps it. Without it the only
298
+ * honest signal is position: the parent turn already ended and exactly one child is
299
+ * live. Two live children and no stamp is ambiguous, so the event stays with the parent
300
+ * and says so rather than being silently attributed.
301
+ */
302
+ private childAgentFor;
303
+ private absorbChildAssistant;
304
+ private recordBackgroundTaskNotification;
305
+ private beginAutonomousTurn;
306
+ private finishAutonomousTurn;
307
+ private completeBackgroundAgent;
308
+ /** Whether a spawned background child has not been reported finished yet. */
309
+ hasLiveBackgroundAgents(): boolean;
310
+ private recordToolResult;
311
+ private failToolStreamProtocol;
312
+ /**
313
+ * Handle process close
314
+ */
315
+ private handleClose;
316
+ /**
317
+ * Handle process error
318
+ */
319
+ private handleError;
320
+ /**
321
+ * Handle request timeout
322
+ */
323
+ private handleTimeout;
324
+ /**
325
+ * Clear request timeout
326
+ */
327
+ private clearRequestTimeout;
328
+ /**
329
+ * Reset request state
330
+ */
331
+ private resetRequestState;
332
+ /**
333
+ * Stop the process
334
+ */
335
+ stop(): void;
336
+ /**
337
+ * Check if process is alive
338
+ */
339
+ isAlive(): boolean;
340
+ /**
341
+ * Check if process is ready for new messages
342
+ */
343
+ isReady(): boolean;
344
+ /**
345
+ * True while Claude has requested tools and the host has not sent tool_result yet.
346
+ * The process is technically idle during host-side tool execution, but it must not
347
+ * be reclaimed because the next prompt depends on this live Claude context.
348
+ */
349
+ hasPendingToolUse(): boolean;
350
+ getPendingToolUseStartedAt(): number | null;
351
+ /**
352
+ * Get current state
353
+ */
354
+ getState(): ProcessState;
355
+ /**
356
+ * Get session ID
357
+ */
358
+ getSessionId(): string;
359
+ }
360
+ export declare function formatClaudeArgsForLog(args: readonly string[]): string[];
361
+ /**
362
+ * PersistentProcessPool - Manages multiple persistent Claude processes
363
+ *
364
+ * Features:
365
+ * - One process per channel/session
366
+ * - Automatic process lifecycle management
367
+ * - Process reuse for multi-turn conversations
368
+ */
369
+ export declare class PersistentProcessPool {
370
+ private processes;
371
+ private defaultOptions;
372
+ private idleTimeoutMs;
373
+ private cleanupIntervalMs;
374
+ private pendingToolUseTimeoutMs;
375
+ private cleanupTimer;
376
+ constructor(defaultOptions: Partial<PersistentProcessOptions> & {
377
+ workspaceDir: string;
378
+ });
379
+ private resolveIdleTimeoutMs;
380
+ private resolveCleanupIntervalMs;
381
+ private resolvePendingToolUseTimeoutMs;
382
+ private startCleanupTimer;
383
+ /**
384
+ * Get or create a process for a channel
385
+ */
386
+ getProcess(channelKey: string, options?: Partial<PersistentProcessOptions>): Promise<PersistentClaudeProcess>;
387
+ /**
388
+ * Get or create a process for a channel and report whether this call created it.
389
+ */
390
+ getProcessWithStatus(channelKey: string, options?: Partial<PersistentProcessOptions>): Promise<PersistentProcessAcquireResult>;
391
+ /**
392
+ * Stop idle ready processes that have outlived the configured idle timeout.
393
+ */
394
+ cleanupIdleProcesses(now?: number): number;
395
+ /**
396
+ * Stop a specific process
397
+ */
398
+ stopProcess(channelKey: string): void;
399
+ getSessionPolicyStatus(channelKey: string, policyFingerprint: string | undefined): SessionPolicyStatus;
400
+ /**
401
+ * Stop the exact process generation acquired by the caller. Only remove the pool entry when it
402
+ * still points at that generation, so stale cleanup cannot stop or evict a replacement. The
403
+ * expected process may already be absent after its error listener ran; it still must be stopped
404
+ * or the child would remain alive outside pool lifecycle management.
405
+ */
406
+ retireProcess(channelKey: string, expectedProcess: PersistentClaudeProcess): boolean;
407
+ /**
408
+ * Stop all processes
409
+ */
410
+ stopAll(): void;
411
+ /**
412
+ * Get number of active processes
413
+ */
414
+ getActiveCount(): number;
415
+ /**
416
+ * Get all channel keys with active processes
417
+ */
418
+ getActiveChannels(): string[];
419
+ /**
420
+ * Get states of all active processes
421
+ * @returns Map of channelKey → ProcessState
422
+ */
423
+ getProcessStates(): Map<string, string>;
424
+ }
425
+ //# sourceMappingURL=persistent-cli-process.d.ts.map