@jungjaehoon/mama-core 2.4.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/README.md +76 -239
  2. package/db/migrations/030-case-first-memory-substrate.sql +13 -98
  3. package/db/migrations/034-add-connector-event-scope-columns.sql +9 -13
  4. package/db/migrations/039-add-connector-event-operator-ingest-seq.sql +9 -95
  5. package/db/migrations/062-refresh-connector-event-sequences.sql +9 -113
  6. package/db/migrations/063-refresh-legacy-connector-event-updates.sql +9 -32
  7. package/db/migrations/067-add-connector-event-source-entity-id.sql +9 -13
  8. package/db/migrations/069-create-registry-nodes.sql +52 -0
  9. package/db/migrations/070-record-identity.sql +35 -0
  10. package/db/migrations/071-service-operation-origins.sql +187 -0
  11. package/db/migrations/072-observation-versions.sql +29 -0
  12. package/db/migrations/073-registry-corrections.sql +45 -0
  13. package/db/migrations/074-work-graph-ref-kinds.sql +39 -0
  14. package/db/migrations/075-agent-judgments.sql +58 -0
  15. package/db/migrations/076-scoped-checkpoint-bindings.sql +15 -0
  16. package/db/migrations/077-legacy-record-kind.sql +6 -0
  17. package/db/migrations/078-source-ingest-commands.sql +18 -0
  18. package/db/migrations/079-twin-edge-relations.sql +43 -0
  19. package/db/migrations/080-restore-duration-days.sql +7 -0
  20. package/db/migrations/081-mailbox.sql +61 -0
  21. package/db/migrations/082-commitments-row-id.sql +12 -0
  22. package/db/migrations/083-observation-is-the-evidence.sql +49 -0
  23. package/db/migrations/084-scope-kind-is-not-the-cores-to-list.sql +34 -0
  24. package/db/migrations/085-a-migration-has-a-source.sql +37 -0
  25. package/db/migrations/086-the-mailbox-is-generic.sql +110 -0
  26. package/db/migrations/087-mailbox-payload.sql +5 -0
  27. package/db/migrations/088-native-input-journal.sql +14 -0
  28. package/db/migrations/089-native-turn-receipt-lookup.sql +3 -0
  29. package/db/migrations/090-model-run-native-inputs.sql +29 -0
  30. package/db/migrations/091-native-turn-results.sql +11 -0
  31. package/db/migrations/092-restore-decision-fts.sql +34 -0
  32. package/db/migrations/093-native-turn-primary-kind.sql +14 -0
  33. package/db/migrations/094-commitment-run-provenance.sql +9 -0
  34. package/db/migrations/095-model-run-native-input-identity.sql +39 -0
  35. package/db/migrations/096-drop-connector-event-index-fts.sql +9 -0
  36. package/db/migrations/097-native-input-json-validity.sql +37 -0
  37. package/db/migrations/098-workflow-memory-kind.sql +105 -0
  38. package/dist/action-contracts.d.ts +212 -0
  39. package/dist/action-contracts.js +10 -0
  40. package/dist/api/catalog.d.ts +118 -0
  41. package/dist/api/catalog.js +1756 -0
  42. package/dist/api/dispatch.d.ts +76 -0
  43. package/dist/api/dispatch.js +372 -0
  44. package/dist/canonicalize.d.ts +2 -2
  45. package/dist/canonicalize.js +3 -3
  46. package/dist/client/client.d.ts +33 -0
  47. package/dist/client/client.js +123 -0
  48. package/dist/client/ipc.d.ts +81 -0
  49. package/dist/client/ipc.js +314 -0
  50. package/dist/db-adapter/base-adapter.d.ts +6 -66
  51. package/dist/db-adapter/base-adapter.js +6 -6
  52. package/dist/db-adapter/index.d.ts +5 -5
  53. package/dist/db-adapter/index.js +2 -5
  54. package/dist/db-adapter/node-sqlite-adapter.d.ts +85 -15
  55. package/dist/db-adapter/node-sqlite-adapter.js +1968 -570
  56. package/dist/db-manager.d.ts +53 -97
  57. package/dist/db-manager.js +121 -603
  58. package/dist/embedding/embedder.d.ts +132 -0
  59. package/dist/embedding/embedder.js +299 -0
  60. package/dist/identity/principal-repository.d.ts +2 -2
  61. package/dist/index.d.ts +43 -58
  62. package/dist/index.js +97 -145
  63. package/dist/{context-compile/channel-grant.d.ts → knowledge/access.d.ts} +12 -17
  64. package/dist/knowledge/access.js +663 -0
  65. package/dist/knowledge/case-errors.d.ts +31 -0
  66. package/dist/knowledge/case-errors.js +40 -0
  67. package/dist/{cases/search-rollup.d.ts → knowledge/case-search-rollup.d.ts} +5 -4
  68. package/dist/{cases/search-rollup.js → knowledge/case-search-rollup.js} +6 -8
  69. package/dist/{cases/store.d.ts → knowledge/case-store.d.ts} +3 -6
  70. package/dist/{cases/store.js → knowledge/case-store.js} +7 -42
  71. package/dist/{cases/timeline-range.d.ts → knowledge/case-timeline-range.d.ts} +3 -3
  72. package/dist/{cases/timeline-range.js → knowledge/case-timeline-range.js} +47 -25
  73. package/dist/{cases/types.d.ts → knowledge/case-types.d.ts} +8 -2
  74. package/dist/{cases/types.js → knowledge/case-types.js} +1 -1
  75. package/dist/knowledge/commitments.d.ts +188 -0
  76. package/dist/knowledge/commitments.js +370 -0
  77. package/dist/knowledge/decision-edges.d.ts +70 -0
  78. package/dist/knowledge/decision-edges.js +123 -0
  79. package/dist/{agent-graph/types.d.ts → knowledge/graph-query.d.ts} +80 -70
  80. package/dist/knowledge/graph-query.js +1585 -0
  81. package/dist/knowledge/identity.d.ts +16 -0
  82. package/dist/knowledge/identity.js +22 -0
  83. package/dist/knowledge/index.d.ts +47 -0
  84. package/dist/knowledge/index.js +90 -0
  85. package/dist/knowledge/judgments.d.ts +118 -0
  86. package/dist/knowledge/judgments.js +808 -0
  87. package/dist/knowledge/observations.d.ts +160 -0
  88. package/dist/knowledge/observations.js +449 -0
  89. package/dist/knowledge/question-type.d.ts +34 -0
  90. package/dist/knowledge/question-type.js +70 -0
  91. package/dist/{search → knowledge}/ranker-features.js +1 -1
  92. package/dist/{search → knowledge}/search-quality.d.ts +0 -1
  93. package/dist/knowledge/search.d.ts +38 -0
  94. package/dist/knowledge/search.js +91 -0
  95. package/dist/knowledge/source-ingest.d.ts +65 -0
  96. package/dist/knowledge/source-ingest.js +174 -0
  97. package/dist/{edges/types.d.ts → knowledge/twin-edge-types.d.ts} +31 -4
  98. package/dist/{edges/types.js → knowledge/twin-edge-types.js} +13 -2
  99. package/dist/knowledge/work-dates.d.ts +49 -0
  100. package/dist/knowledge/work-dates.js +120 -0
  101. package/dist/mama-api.d.ts +114 -778
  102. package/dist/mama-api.js +313 -2461
  103. package/dist/memory/api.d.ts +264 -24
  104. package/dist/memory/api.js +1633 -843
  105. package/dist/memory/bootstrap-builder.d.ts +2 -1
  106. package/dist/memory/bootstrap-builder.js +5 -5
  107. package/dist/memory/channel-summary-state-store.d.ts +3 -2
  108. package/dist/memory/channel-summary-state-store.js +53 -51
  109. package/dist/memory/channel-summary-store.d.ts +5 -3
  110. package/dist/memory/channel-summary-store.js +3 -8
  111. package/dist/memory/dashboard-read.d.ts +46 -0
  112. package/dist/memory/dashboard-read.js +94 -0
  113. package/dist/memory/event-store.d.ts +3 -3
  114. package/dist/memory/event-store.js +3 -10
  115. package/dist/memory/finding-store.d.ts +3 -2
  116. package/dist/memory/finding-store.js +2 -7
  117. package/dist/memory/graph-read.d.ts +52 -0
  118. package/dist/memory/graph-read.js +130 -0
  119. package/dist/memory/judgment-types.d.ts +394 -0
  120. package/dist/memory/judgment-types.js +16 -0
  121. package/dist/memory/provenance-audit.d.ts +5 -2
  122. package/dist/memory/provenance-audit.js +8 -14
  123. package/dist/memory/provenance-live.d.ts +141 -0
  124. package/dist/memory/provenance-live.js +409 -0
  125. package/dist/memory/provenance-query.d.ts +5 -4
  126. package/dist/memory/provenance-query.js +21 -29
  127. package/dist/memory/provenance-resolver.d.ts +191 -0
  128. package/dist/memory/provenance-resolver.js +155 -0
  129. package/dist/memory/provenance.d.ts +1 -11
  130. package/dist/memory/provenance.js +2 -33
  131. package/dist/memory/recall-sanitize.d.ts +55 -0
  132. package/dist/memory/recall-sanitize.js +144 -0
  133. package/dist/memory/secret-filter.d.ts +32 -0
  134. package/dist/memory/secret-filter.js +126 -0
  135. package/dist/memory/truth-store.d.ts +2 -1
  136. package/dist/memory/truth-store.js +1 -4
  137. package/dist/memory/types.d.ts +74 -24
  138. package/dist/memory/types.js +75 -5
  139. package/dist/memory/write-adapters.d.ts +98 -0
  140. package/dist/memory/write-adapters.js +242 -0
  141. package/dist/operations/owner-action-effects.d.ts +53 -0
  142. package/dist/operations/owner-action-effects.js +96 -0
  143. package/dist/provenance/source-ref.d.ts +1 -1
  144. package/dist/provenance/source-ref.js +0 -2
  145. package/dist/registry/corrections.d.ts +31 -0
  146. package/dist/registry/corrections.js +332 -0
  147. package/dist/registry/record-identity.d.ts +49 -0
  148. package/dist/registry/record-identity.js +133 -0
  149. package/dist/registry/store.d.ts +101 -0
  150. package/dist/registry/store.js +395 -0
  151. package/dist/registry/types.d.ts +28 -0
  152. package/dist/registry/types.js +5 -0
  153. package/dist/relevance-scorer.js +2 -2
  154. package/dist/runtime/agent-event-bus.d.ts +50 -0
  155. package/dist/runtime/agent-event-bus.js +101 -0
  156. package/dist/runtime/drivers/claude-cli-wrapper.d.ts +155 -0
  157. package/dist/runtime/drivers/claude-cli-wrapper.js +392 -0
  158. package/dist/runtime/drivers/cli-arg-redaction.d.ts +2 -0
  159. package/dist/runtime/drivers/cli-arg-redaction.js +18 -0
  160. package/dist/runtime/drivers/cli-secret-redaction.d.ts +17 -0
  161. package/dist/runtime/drivers/cli-secret-redaction.js +126 -0
  162. package/dist/runtime/drivers/codex-app-server-process.d.ts +277 -0
  163. package/dist/runtime/drivers/codex-app-server-process.js +2342 -0
  164. package/dist/runtime/drivers/codex-auxiliary-tools.d.ts +17 -0
  165. package/dist/runtime/drivers/codex-auxiliary-tools.js +267 -0
  166. package/dist/runtime/drivers/codex-home.d.ts +20 -0
  167. package/dist/runtime/drivers/codex-home.js +674 -0
  168. package/dist/runtime/drivers/codex-thread-registry.d.ts +63 -0
  169. package/dist/runtime/drivers/codex-thread-registry.js +433 -0
  170. package/dist/runtime/drivers/persistent-cli-adapter.d.ts +160 -0
  171. package/dist/runtime/drivers/persistent-cli-adapter.js +396 -0
  172. package/dist/runtime/drivers/persistent-cli-process.d.ts +424 -0
  173. package/dist/runtime/drivers/persistent-cli-process.js +1543 -0
  174. package/dist/runtime/drivers/types.d.ts +456 -0
  175. package/dist/runtime/drivers/types.js +110 -0
  176. package/dist/runtime/mailbox.d.ts +223 -0
  177. package/dist/runtime/mailbox.js +582 -0
  178. package/dist/runtime/model-run-store.d.ts +28 -0
  179. package/dist/{model-runs/store.js → runtime/model-run-store.js} +81 -41
  180. package/dist/{model-runs/types.d.ts → runtime/model-run-types.d.ts} +33 -4
  181. package/dist/{model-runs/types.js → runtime/model-run-types.js} +1 -1
  182. package/dist/runtime/native-effect-observer.d.ts +22 -0
  183. package/dist/runtime/native-effect-observer.js +103 -0
  184. package/dist/runtime/native-input-journal.d.ts +46 -0
  185. package/dist/runtime/native-input-journal.js +308 -0
  186. package/dist/runtime/native-prompt.d.ts +118 -0
  187. package/dist/runtime/native-prompt.js +496 -0
  188. package/dist/runtime/native-session.d.ts +10 -0
  189. package/dist/{agent-graph/index.js → runtime/native-session.js} +9 -6
  190. package/dist/runtime/native-tool-trace-observer.d.ts +5 -0
  191. package/dist/runtime/native-tool-trace-observer.js +65 -0
  192. package/dist/runtime/native-turn.d.ts +272 -0
  193. package/dist/runtime/native-turn.js +1041 -0
  194. package/dist/runtime/operations.d.ts +236 -0
  195. package/dist/runtime/operations.js +565 -0
  196. package/dist/runtime/post-tool-handler.d.ts +74 -0
  197. package/dist/runtime/post-tool-handler.js +137 -0
  198. package/dist/runtime/prompt-layers.d.ts +126 -0
  199. package/dist/runtime/prompt-layers.js +239 -0
  200. package/dist/runtime/runtime-process.d.ts +102 -0
  201. package/dist/runtime/runtime-process.js +206 -0
  202. package/dist/runtime/runtime.d.ts +278 -0
  203. package/dist/runtime/runtime.js +563 -0
  204. package/dist/runtime/session-pool.d.ts +176 -0
  205. package/dist/runtime/session-pool.js +369 -0
  206. package/dist/runtime/stimulus-payload.d.ts +5 -0
  207. package/dist/runtime/stimulus-payload.js +50 -0
  208. package/dist/runtime/subagent-bridge.d.ts +24 -0
  209. package/dist/{agent-graph/types.js → runtime/subagent-bridge.js} +1 -1
  210. package/dist/runtime/text-completion.d.ts +22 -0
  211. package/dist/{agent-situation/types.js → runtime/text-completion.js} +1 -1
  212. package/dist/runtime/token-estimator.d.ts +25 -0
  213. package/dist/runtime/token-estimator.js +75 -0
  214. package/dist/runtime/tool-trace-store.d.ts +22 -0
  215. package/dist/{model-runs → runtime}/tool-trace-store.js +46 -27
  216. package/dist/runtime/trace-summary.d.ts +5 -0
  217. package/dist/runtime/trace-summary.js +74 -0
  218. package/dist/runtime/turn-text.d.ts +23 -0
  219. package/dist/runtime/turn-text.js +41 -0
  220. package/dist/storage/database.d.ts +67 -0
  221. package/dist/storage/database.js +158 -0
  222. package/package.json +20 -34
  223. package/dist/agent-graph/alias-write.d.ts +0 -3
  224. package/dist/agent-graph/alias-write.js +0 -234
  225. package/dist/agent-graph/entity-resolve.d.ts +0 -3
  226. package/dist/agent-graph/entity-resolve.js +0 -271
  227. package/dist/agent-graph/errors.d.ts +0 -4
  228. package/dist/agent-graph/errors.js +0 -11
  229. package/dist/agent-graph/graph-query.d.ts +0 -5
  230. package/dist/agent-graph/graph-query.js +0 -360
  231. package/dist/agent-graph/index.d.ts +0 -6
  232. package/dist/agent-situation/builder.d.ts +0 -8
  233. package/dist/agent-situation/builder.js +0 -239
  234. package/dist/agent-situation/cache-key.d.ts +0 -4
  235. package/dist/agent-situation/cache-key.js +0 -64
  236. package/dist/agent-situation/index.d.ts +0 -7
  237. package/dist/agent-situation/index.js +0 -28
  238. package/dist/agent-situation/packet-store.d.ts +0 -27
  239. package/dist/agent-situation/packet-store.js +0 -228
  240. package/dist/agent-situation/ranking-policy.d.ts +0 -18
  241. package/dist/agent-situation/ranking-policy.js +0 -75
  242. package/dist/agent-situation/source-readers.d.ts +0 -52
  243. package/dist/agent-situation/source-readers.js +0 -300
  244. package/dist/agent-situation/types.d.ts +0 -195
  245. package/dist/cases/wiki-page-index.d.ts +0 -37
  246. package/dist/cases/wiki-page-index.js +0 -201
  247. package/dist/config-loader.d.ts +0 -68
  248. package/dist/config-loader.js +0 -239
  249. package/dist/connectors/event-index.d.ts +0 -24
  250. package/dist/connectors/event-index.js +0 -245
  251. package/dist/connectors/raw-query.d.ts +0 -40
  252. package/dist/connectors/raw-query.js +0 -412
  253. package/dist/connectors/types.d.ts +0 -117
  254. package/dist/connectors/types.js +0 -3
  255. package/dist/context-compile/boundary-defaults.d.ts +0 -12
  256. package/dist/context-compile/boundary-defaults.js +0 -105
  257. package/dist/context-compile/channel-grant.js +0 -66
  258. package/dist/context-compile/compiler-policy.d.ts +0 -39
  259. package/dist/context-compile/compiler-policy.js +0 -147
  260. package/dist/context-compile/compiler.d.ts +0 -18
  261. package/dist/context-compile/compiler.js +0 -404
  262. package/dist/context-compile/index.d.ts +0 -10
  263. package/dist/context-compile/index.js +0 -26
  264. package/dist/context-compile/packet-store.d.ts +0 -8
  265. package/dist/context-compile/packet-store.js +0 -239
  266. package/dist/context-compile/ref.d.ts +0 -7
  267. package/dist/context-compile/ref.js +0 -102
  268. package/dist/context-compile/source-readers.d.ts +0 -70
  269. package/dist/context-compile/source-readers.js +0 -840
  270. package/dist/context-compile/types.d.ts +0 -155
  271. package/dist/context-compile/types.js +0 -11
  272. package/dist/context-compile/visibility.d.ts +0 -21
  273. package/dist/context-compile/visibility.js +0 -224
  274. package/dist/decision-tracker.d.ts +0 -206
  275. package/dist/decision-tracker.js +0 -481
  276. package/dist/edges/ref-validation.d.ts +0 -7
  277. package/dist/edges/ref-validation.js +0 -321
  278. package/dist/edges/store.d.ts +0 -8
  279. package/dist/edges/store.js +0 -129
  280. package/dist/embedding-client.d.ts +0 -28
  281. package/dist/embedding-client.js +0 -53
  282. package/dist/embedding-server/index.d.ts +0 -67
  283. package/dist/embedding-server/index.js +0 -405
  284. package/dist/embedding-server/mobile/auth.d.ts +0 -44
  285. package/dist/embedding-server/mobile/auth.js +0 -150
  286. package/dist/embedding-server/mobile/daemon.d.ts +0 -129
  287. package/dist/embedding-server/mobile/daemon.js +0 -313
  288. package/dist/embedding-server/mobile/output-parser.d.ts +0 -115
  289. package/dist/embedding-server/mobile/output-parser.js +0 -241
  290. package/dist/embedding-server/mobile/session-api.d.ts +0 -57
  291. package/dist/embedding-server/mobile/session-api.js +0 -261
  292. package/dist/embedding-server/mobile/session-manager.d.ts +0 -138
  293. package/dist/embedding-server/mobile/session-manager.js +0 -378
  294. package/dist/embedding-server/mobile/websocket-handler.d.ts +0 -137
  295. package/dist/embedding-server/mobile/websocket-handler.js +0 -486
  296. package/dist/embeddings.d.ts +0 -68
  297. package/dist/embeddings.js +0 -244
  298. package/dist/entities/audit-metrics.d.ts +0 -68
  299. package/dist/entities/audit-metrics.js +0 -124
  300. package/dist/entities/candidate-generator.d.ts +0 -8
  301. package/dist/entities/candidate-generator.js +0 -24
  302. package/dist/entities/entity-linked-decision-counts.d.ts +0 -2
  303. package/dist/entities/entity-linked-decision-counts.js +0 -29
  304. package/dist/entities/entity-list.d.ts +0 -22
  305. package/dist/entities/entity-list.js +0 -3
  306. package/dist/entities/entity-orphan-list.d.ts +0 -17
  307. package/dist/entities/entity-orphan-list.js +0 -3
  308. package/dist/entities/entity-search.d.ts +0 -20
  309. package/dist/entities/entity-search.js +0 -3
  310. package/dist/entities/errors.d.ts +0 -55
  311. package/dist/entities/errors.js +0 -100
  312. package/dist/entities/lineage-store.d.ts +0 -28
  313. package/dist/entities/lineage-store.js +0 -204
  314. package/dist/entities/normalization.d.ts +0 -14
  315. package/dist/entities/normalization.js +0 -63
  316. package/dist/entities/policy-store.d.ts +0 -8
  317. package/dist/entities/policy-store.js +0 -75
  318. package/dist/entities/policy-types.d.ts +0 -72
  319. package/dist/entities/policy-types.js +0 -59
  320. package/dist/entities/projection.d.ts +0 -8
  321. package/dist/entities/projection.js +0 -82
  322. package/dist/entities/provenance-query.d.ts +0 -32
  323. package/dist/entities/provenance-query.js +0 -3
  324. package/dist/entities/read-identity.d.ts +0 -31
  325. package/dist/entities/read-identity.js +0 -264
  326. package/dist/entities/recall-bridge.d.ts +0 -5
  327. package/dist/entities/recall-bridge.js +0 -171
  328. package/dist/entities/resolution-engine.d.ts +0 -8
  329. package/dist/entities/resolution-engine.js +0 -3
  330. package/dist/entities/rollback-preview.d.ts +0 -35
  331. package/dist/entities/rollback-preview.js +0 -3
  332. package/dist/entities/source-locator.d.ts +0 -3
  333. package/dist/entities/source-locator.js +0 -32
  334. package/dist/entities/store.d.ts +0 -69
  335. package/dist/entities/store.js +0 -544
  336. package/dist/entities/types.d.ts +0 -166
  337. package/dist/entities/types.js +0 -30
  338. package/dist/memory/extraction-prompt.d.ts +0 -4
  339. package/dist/memory/extraction-prompt.js +0 -89
  340. package/dist/memory/scope-backfill.d.ts +0 -14
  341. package/dist/memory/scope-backfill.js +0 -3
  342. package/dist/memory/scope-store.d.ts +0 -4
  343. package/dist/memory/scope-store.js +0 -9
  344. package/dist/memory-store.d.ts +0 -87
  345. package/dist/memory-store.js +0 -78
  346. package/dist/model-runs/store.d.ts +0 -13
  347. package/dist/model-runs/tool-trace-store.d.ts +0 -8
  348. package/dist/notification-manager.d.ts +0 -7
  349. package/dist/notification-manager.js +0 -12
  350. package/dist/outcome-tracker.d.ts +0 -151
  351. package/dist/outcome-tracker.js +0 -271
  352. package/dist/query-intent.d.ts +0 -23
  353. package/dist/query-intent.js +0 -114
  354. package/dist/runtime/trusted-provenance.d.ts +0 -3
  355. package/dist/runtime/trusted-provenance.js +0 -6
  356. package/dist/search/question-type.d.ts +0 -5
  357. package/dist/search/question-type.js +0 -41
  358. package/dist/test-utils.d.ts +0 -80
  359. package/dist/test-utils.js +0 -218
  360. package/dist/tier-validator.d.ts +0 -43
  361. package/dist/tier-validator.js +0 -159
  362. package/dist/time-formatter.d.ts +0 -25
  363. package/dist/time-formatter.js +0 -93
  364. /package/dist/{search → knowledge}/feedback-store.d.ts +0 -0
  365. /package/dist/{search → knowledge}/feedback-store.js +0 -0
  366. /package/dist/{search → knowledge}/ranker-features.d.ts +0 -0
  367. /package/dist/{search → knowledge}/ranker-rescore.d.ts +0 -0
  368. /package/dist/{search → knowledge}/ranker-rescore.js +0 -0
  369. /package/dist/{search → knowledge}/ranker-trainer.d.ts +0 -0
  370. /package/dist/{search → knowledge}/ranker-trainer.js +0 -0
  371. /package/dist/{search → knowledge}/search-quality.js +0 -0
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SecretRedactingStream = void 0;
4
+ exports.configuredSecretValues = configuredSecretValues;
5
+ exports.redactConfiguredSecrets = redactConfiguredSecrets;
6
+ exports.claudeConfiguredSecrets = claudeConfiguredSecrets;
7
+ const node_fs_1 = require("node:fs");
8
+ const node_string_decoder_1 = require("node:string_decoder");
9
+ function configuredSecretValues(launch) {
10
+ const names = new Set();
11
+ const addJsonString = (source) => {
12
+ try {
13
+ const name = JSON.parse(source);
14
+ if (typeof name === 'string' && /^[A-Za-z_][A-Za-z0-9_]*$/.test(name)) {
15
+ names.add(name);
16
+ }
17
+ }
18
+ catch (error) {
19
+ throw new Error('Codex app-server launch config contained malformed environment quoting', {
20
+ cause: error,
21
+ });
22
+ }
23
+ };
24
+ for (const argument of launch.args) {
25
+ for (const match of argument.matchAll(/env_vars\s*=\s*\[([^\]]*)\]/g)) {
26
+ for (const quoted of match[1].matchAll(/"(?:\\.|[^"\\])*"/g)) {
27
+ addJsonString(quoted[0]);
28
+ }
29
+ }
30
+ for (const match of argument.matchAll(/bearer_token_env_var\s*=\s*("(?:\\.|[^"\\])*")/g)) {
31
+ addJsonString(match[1]);
32
+ }
33
+ for (const match of argument.matchAll(/env_http_headers\s*=\s*\{([^}]*)\}/g)) {
34
+ for (const binding of match[1].matchAll(/=\s*("(?:\\.|[^"\\])*")/g)) {
35
+ addJsonString(binding[1]);
36
+ }
37
+ }
38
+ }
39
+ const values = new Set();
40
+ for (const name of names) {
41
+ const value = launch.env[name];
42
+ if (typeof value === 'string' && value.length > 0) {
43
+ values.add(value);
44
+ }
45
+ }
46
+ return values;
47
+ }
48
+ /** Exact configured values, never an entropy/token-length guess. */
49
+ function redactConfiguredSecrets(value, secrets) {
50
+ for (const secret of [...secrets].sort((a, b) => b.length - a.length)) {
51
+ if (secret)
52
+ value = value.split(secret).join('[REDACTED]');
53
+ }
54
+ return value;
55
+ }
56
+ function claudeConfiguredSecrets(configPath, env) {
57
+ const values = new Set();
58
+ const add = (value) => {
59
+ if (typeof value === 'string' && value)
60
+ values.add(value);
61
+ };
62
+ for (const [name, value] of Object.entries(env)) {
63
+ if (name !== 'MAX_THINKING_TOKENS' && /(TOKEN|KEY|SECRET|PASSWORD|CREDENTIAL)/i.test(name))
64
+ add(value);
65
+ }
66
+ if (!configPath)
67
+ return values;
68
+ let config;
69
+ try {
70
+ config = JSON.parse((0, node_fs_1.readFileSync)(configPath, 'utf8'));
71
+ }
72
+ catch {
73
+ throw new Error('Native MCP secret configuration could not be read');
74
+ }
75
+ for (const server of Object.values(config.mcpServers ?? {})) {
76
+ for (const value of Object.values(server.env ?? {}))
77
+ add(value);
78
+ for (const value of Object.values(server.headers ?? {}))
79
+ add(value);
80
+ for (const value of Object.values(server.http_headers ?? {}))
81
+ add(value);
82
+ for (const name of [
83
+ ...(server.env_vars ?? []),
84
+ ...Object.values(server.env_http_headers ?? {}),
85
+ ])
86
+ add(env[name]);
87
+ if (server.bearer_token_env_var)
88
+ add(env[server.bearer_token_env_var]);
89
+ }
90
+ return values;
91
+ }
92
+ /** Keep the possible credential suffix until the next chunk (including UTF-8 boundaries). */
93
+ class SecretRedactingStream {
94
+ secrets;
95
+ emit;
96
+ pending = '';
97
+ decoder = new node_string_decoder_1.StringDecoder('utf8');
98
+ overlap;
99
+ constructor(secrets, emit) {
100
+ this.secrets = secrets;
101
+ this.emit = emit;
102
+ this.overlap = Math.max(0, ...[...secrets].map((secret) => secret.length - 1));
103
+ }
104
+ write(chunk) {
105
+ this.pending += this.decoder.write(chunk);
106
+ let cut = Math.max(0, this.pending.length - this.overlap);
107
+ // Never split a complete match at the output boundary.
108
+ for (const secret of this.secrets) {
109
+ for (let start = this.pending.indexOf(secret); secret && start !== -1; start = this.pending.indexOf(secret, start + 1)) {
110
+ if (start < cut && start + secret.length > cut)
111
+ cut = start;
112
+ }
113
+ }
114
+ if (cut)
115
+ this.emit(redactConfiguredSecrets(this.pending.slice(0, cut), this.secrets));
116
+ this.pending = this.pending.slice(cut);
117
+ }
118
+ end() {
119
+ this.pending += this.decoder.end();
120
+ if (this.pending)
121
+ this.emit(redactConfiguredSecrets(this.pending, this.secrets));
122
+ this.pending = '';
123
+ }
124
+ }
125
+ exports.SecretRedactingStream = SecretRedactingStream;
126
+ //# sourceMappingURL=cli-secret-redaction.js.map
@@ -0,0 +1,277 @@
1
+ import { type HostToolBridge, type PromptResult, type NativeInputReceipt, type SessionPolicyStatus } from './types.js';
2
+ import { type PromptCallbacks, type PromptOptions } from './types.js';
3
+ export interface CodexAppServerProcessOptions {
4
+ /**
5
+ * The product's own root directory. A driver does not know what a product
6
+ * calls its home; the caller states it and the driver keeps its files there.
7
+ */
8
+ /**
9
+ * Where this run keeps its files. Required: a driver does not know a product's
10
+ * directory name, and the default it used to compute spelled one out.
11
+ */
12
+ hostRootDir: string;
13
+ sessionKey: string;
14
+ model: string;
15
+ systemPrompt: string;
16
+ cwd: string;
17
+ sandbox: 'read-only' | 'workspace-write' | 'danger-full-access';
18
+ command?: string;
19
+ requestTimeout?: number;
20
+ codexHome?: string;
21
+ isolatedHome?: string;
22
+ registryRoot?: string;
23
+ mcpConfigPath?: string;
24
+ /**
25
+ * Where the consumer's own Codex CLI keeps its credential, copied into the managed
26
+ * home so the isolated runtime can authenticate.
27
+ *
28
+ * The driver used to look for it under the user's home directory. That is a fact
29
+ * about whoever installed a CLI, not about this driver, and a core that goes looking
30
+ * for one consumer's dotfile is not shared. Absent means no credential is copied -
31
+ * the managed home keeps whatever it already had.
32
+ */
33
+ authSourcePath?: string;
34
+ /** Managed `model_reasoning_effort`; unset means the built-in default, unknown values throw. */
35
+ effort?: string;
36
+ /** Enable the managed workspace shell; disabled unless the consumer opts in. */
37
+ shellTool?: boolean;
38
+ /** Enable live web search; disabled unless the consumer opts in. */
39
+ webSearch?: boolean;
40
+ /** Explicit shell environment overrides; does not replace the app-server's isolated HOME. */
41
+ shellEnvironment?: Record<string, string>;
42
+ /** Complete backend environment; omitted retains normal process inheritance. */
43
+ processEnv?: NodeJS.ProcessEnv;
44
+ /** Absolute credential paths the native command sandbox must not read. */
45
+ deniedReadPaths?: string[];
46
+ allowLoginShell?: boolean;
47
+ /** Stable identity/rules fingerprint; dynamic conversation context must be excluded. */
48
+ policyFingerprint?: string;
49
+ /** Observability sink for Codex-native subagent threads spawned by a parent turn. */
50
+ onSubagentEvent?: (event: SubagentEvent) => void;
51
+ /**
52
+ * Host factory for a CHILD-SCOPED authority. A child outlives the parent turn, so it
53
+ * must never inherit the parent's snapshot bridge (whose envelope expires with the
54
+ * parent wall). Called once per announced child; the child's tool calls are queued
55
+ * until it resolves. `null` (or no factory at all) means the child has no authority
56
+ * and every call it makes is refused with `subagent authority unavailable`.
57
+ */
58
+ createSubagentBridge?: (info: SubagentBridgeRequest) => Promise<SubagentBridge | null>;
59
+ /**
60
+ * Grace after the PARENT announced a child completed before the child's missing own
61
+ * `turn/completed` is reported as `unknown`. Test seam; the default is 5s.
62
+ */
63
+ subagentGraceMs?: number;
64
+ /** Bounded life of a registered child; a child Codex killed must not leak. */
65
+ subagentTtlMs?: number;
66
+ }
67
+ import type { SubagentBridge, SubagentBridgeRequest } from '../subagent-bridge.js';
68
+ export type { SubagentBridge, SubagentBridgeRequest } from '../subagent-bridge.js';
69
+ /**
70
+ * One Codex-native subagent thread, observed from the parent thread.
71
+ *
72
+ * Codex announces children on the PARENT thread as `subAgentActivity` items and then
73
+ * drives the child on ITS OWN thread id - including after the parent turn completed.
74
+ * These events only report that; they never gate the child.
75
+ */
76
+ export interface SubagentEvent {
77
+ kind: 'started' | 'completed';
78
+ /** The PARENT's session key; a child never owns a session of its own. */
79
+ sessionKey: string;
80
+ parentThreadId: string;
81
+ agentThreadId: string;
82
+ /** Codex agent path, e.g. "/root/board". */
83
+ agentPath: string;
84
+ /**
85
+ * Completion events only. `unknown` is the honest verdict when the parent announced a
86
+ * completion and the child's own `turn/completed` never arrived: no result, no failure
87
+ * either. It must never be rendered as success.
88
+ */
89
+ status?: 'completed' | 'failed' | 'interrupted' | 'unknown';
90
+ /** Last `final_answer` agentMessage text seen on the child thread, bounded. */
91
+ finalText?: string;
92
+ /** Redacted failure message; failed child turns only. */
93
+ error?: string;
94
+ }
95
+ export interface CodexAppServerPromptOptions {
96
+ preparePrompt?: PromptOptions['preparePrompt'];
97
+ nativeInputId?: string;
98
+ /**
99
+ * Per-run counted-token budget (input + output; codex reports input INCLUSIVE of cache,
100
+ * so cache reads are not added again). A codex turn is a whole
101
+ * agentic loop of model calls, so the budget is checked on every usage event INSIDE the
102
+ * turn and the turn is interrupted when it crosses; AgentLoop's per-turn check would only
103
+ * see the total after the turn ended (0.43.0 stopped board runs one turn too late).
104
+ */
105
+ runTokenBudget?: number;
106
+ sessionKey?: string;
107
+ model?: string;
108
+ systemPrompt?: string;
109
+ cwd?: string;
110
+ sandbox?: 'read-only' | 'workspace-write' | 'danger-full-access';
111
+ /** Restrict this thread's model tools to explicitly stated readable roots. */
112
+ restrictedReadRoots?: readonly string[];
113
+ requestTimeout?: number;
114
+ policyFingerprint?: string;
115
+ resumeSession?: boolean;
116
+ hostToolBridge?: HostToolBridge;
117
+ /**
118
+ * Full instructions to re-supply when this call has to resume a durable thread.
119
+ * `thread/resume` accepts `baseInstructions` (ThreadResumeParams), so a rehydrated
120
+ * thread can be re-anchored through the protocol instead of the turn-text
121
+ * `<system-reminder>` workaround. Lazy on purpose: rebuilding the composed prompt
122
+ * costs an embedding search, and a live thread never resumes - the callback runs
123
+ * only inside the resume branch. Omit it to keep the legacy bootstrap behaviour.
124
+ */
125
+ resumeInstructions?: () => Promise<string>;
126
+ /** Measurement only: host lane and brief state for the per-turn [prompt] log line. */
127
+ promptTelemetry?: {
128
+ kind: string;
129
+ brief: 'sent' | 'omitted';
130
+ };
131
+ }
132
+ export declare class CodexAppServerProcess {
133
+ private readonly options;
134
+ private readonly registry;
135
+ private child;
136
+ private stdout;
137
+ private stderr;
138
+ private nextId;
139
+ private pending;
140
+ private lateTurnStarts;
141
+ private turnStartReconciliations;
142
+ private turns;
143
+ private readonly subagents;
144
+ /**
145
+ * Child threads that already reported a terminal status. The SAME `started`
146
+ * announcement arrives as both an item/started and an item/completed view, and the
147
+ * second view can land after the child's own turn/completed - `subagents.has` no longer
148
+ * dedupes it then, so it would mint a second authority and a second completion for a
149
+ * dead child. Bounded FIFO: identity of recent children, not a growing ledger.
150
+ */
151
+ private readonly finishedSubagents;
152
+ private readonly threadContexts;
153
+ private sessions;
154
+ private sessionQueues;
155
+ private connectionQueue;
156
+ private startPromise;
157
+ private shutdownPromise;
158
+ private stopped;
159
+ private stderrTail;
160
+ private secrets;
161
+ private authFingerprint;
162
+ private authFingerprintInitialized;
163
+ private authSourceSignature;
164
+ private managedConfigFingerprint;
165
+ private managedConfigSignature;
166
+ private secretLaunchFingerprint;
167
+ private secretLaunchFingerprintInitialized;
168
+ private killTimer;
169
+ private finalKillTimer;
170
+ constructor(options: CodexAppServerProcessOptions);
171
+ prompt(text: string, callbacks?: PromptCallbacks, overrides?: CodexAppServerPromptOptions): Promise<PromptResult>;
172
+ /** Append input to this exact native turn; never queue behind it or start a replacement. */
173
+ steer(text: string, target: NativeInputReceipt, sessionKey?: string, beforeSend?: () => void): Promise<NativeInputReceipt>;
174
+ reset(sessionKey?: string): Promise<void>;
175
+ getSessionPolicyStatus(overrides?: CodexAppServerPromptOptions): SessionPolicyStatus;
176
+ stop(): Promise<void>;
177
+ executeSandboxedCommand(command: string, cwd: string, roots: readonly string[], signal?: AbortSignal): Promise<{
178
+ exitCode: number;
179
+ stdout: string;
180
+ stderr: string;
181
+ }>;
182
+ getThreadId(sessionKey?: string): string | undefined;
183
+ getStatus(): {
184
+ running: boolean;
185
+ childPid?: number;
186
+ pendingRequestCount: number;
187
+ hasActiveTurn: boolean;
188
+ stdoutListenerCount: number;
189
+ stderrListenerCount: number;
190
+ shutdownTimerActive: boolean;
191
+ };
192
+ private resolveSessionPolicy;
193
+ private enqueueSession;
194
+ private prepareConnection;
195
+ private assertRegistryPolicy;
196
+ private registryPolicyMatches;
197
+ private prepareManagedFiles;
198
+ private ensureStarted;
199
+ private start;
200
+ private openThread;
201
+ private policyFingerprint;
202
+ /** Restrict Codex-native child creation only for a thread with a stated read boundary. */
203
+ private threadConfig;
204
+ private validateInstructionMetadata;
205
+ private validateResponsePolicy;
206
+ private startTurn;
207
+ private request;
208
+ private requestOnce;
209
+ private notify;
210
+ private handleLine;
211
+ private handleNotification;
212
+ private resolveTurn;
213
+ /** Returns true when this notification belongs to the subagent surface and was consumed. */
214
+ private observeNativeItem;
215
+ private handleSubagentNotification;
216
+ private subagentFinalText;
217
+ /** A working child keeps the parent's idle timeout alive (the parent may be in wait_agent). */
218
+ private refreshParentTurnIdleTimeout;
219
+ /** Drop every thread context this session left behind on a previous thread id. */
220
+ private pruneThreadContexts;
221
+ private knownThreadIds;
222
+ private registerSubagent;
223
+ /**
224
+ * The parent says a child finished. That is an announcement, not a result: it can win
225
+ * the race against the child's own `turn/completed`, which is what carries status and
226
+ * final text. Wait a bounded grace for the real event, then report `unknown`.
227
+ */
228
+ private observeParentSideCompletion;
229
+ /**
230
+ * Emits exactly one completion per child thread and releases its authority with the
231
+ * same terminal status. Grandchildren keep their own entries.
232
+ */
233
+ private finishSubagent;
234
+ private deliverSubagentCompletion;
235
+ /** FIFO-bounded identity of finished children; the oldest id is forgotten first. */
236
+ private rememberFinishedSubagent;
237
+ private clearSubagentTimers;
238
+ private emitSubagentEvent;
239
+ /** Every live child is reported interrupted and its authority released. */
240
+ private terminateSubagents;
241
+ /** A reset/restart drops the thread's context and interrupts its children. */
242
+ private discardSessionThreadState;
243
+ private handleSubagentToolRequest;
244
+ private dispatchSubagentToolCall;
245
+ private reportSubagentToolComplete;
246
+ private isSubagentToolActive;
247
+ private handleServerRequest;
248
+ private handleDynamicToolRequest;
249
+ private failToolProtocol;
250
+ private requiredToolString;
251
+ private dispatchDynamicToolCall;
252
+ private isToolTurnActive;
253
+ private toolResult;
254
+ private replyDisabledTool;
255
+ private replyToolError;
256
+ private reply;
257
+ private handleStderr;
258
+ private redact;
259
+ private toError;
260
+ private refreshTurnIdleTimeout;
261
+ private failTurn;
262
+ /** Interrupt a turn whose counted usage crossed its run budget; the loop reports stoppedBy. */
263
+ private enforceTurnBudget;
264
+ private timeoutTurn;
265
+ private getOrCreateTurnStartReconciliation;
266
+ private completeTurnStartReconciliation;
267
+ private reconcileAcknowledgedTurn;
268
+ private handleLateTurnStartResponse;
269
+ private clearTurnCallbacks;
270
+ private failAll;
271
+ private failProcess;
272
+ private restart;
273
+ private shutdown;
274
+ private performShutdown;
275
+ private detach;
276
+ }
277
+ //# sourceMappingURL=codex-app-server-process.d.ts.map