@jungjaehoon/mama-core 2.4.0 → 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 (374) 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/068-tool-trace-diagnostics.sql +13 -0
  9. package/db/migrations/069-create-registry-nodes.sql +52 -0
  10. package/db/migrations/070-record-identity.sql +35 -0
  11. package/db/migrations/071-service-operation-origins.sql +187 -0
  12. package/db/migrations/072-observation-versions.sql +29 -0
  13. package/db/migrations/073-registry-corrections.sql +45 -0
  14. package/db/migrations/074-work-graph-ref-kinds.sql +39 -0
  15. package/db/migrations/075-agent-judgments.sql +58 -0
  16. package/db/migrations/076-scoped-checkpoint-bindings.sql +15 -0
  17. package/db/migrations/077-legacy-record-kind.sql +6 -0
  18. package/db/migrations/078-source-ingest-commands.sql +18 -0
  19. package/db/migrations/079-twin-edge-relations.sql +43 -0
  20. package/db/migrations/080-restore-duration-days.sql +7 -0
  21. package/db/migrations/081-mailbox.sql +61 -0
  22. package/db/migrations/082-commitments-row-id.sql +12 -0
  23. package/db/migrations/083-observation-is-the-evidence.sql +49 -0
  24. package/db/migrations/084-scope-kind-is-not-the-cores-to-list.sql +34 -0
  25. package/db/migrations/085-a-migration-has-a-source.sql +37 -0
  26. package/db/migrations/086-the-mailbox-is-generic.sql +110 -0
  27. package/db/migrations/087-mailbox-payload.sql +5 -0
  28. package/db/migrations/088-native-input-journal.sql +14 -0
  29. package/db/migrations/089-native-turn-receipt-lookup.sql +3 -0
  30. package/db/migrations/090-model-run-native-inputs.sql +29 -0
  31. package/db/migrations/091-native-turn-results.sql +11 -0
  32. package/db/migrations/092-restore-decision-fts.sql +34 -0
  33. package/db/migrations/093-native-turn-primary-kind.sql +14 -0
  34. package/db/migrations/094-commitment-run-provenance.sql +9 -0
  35. package/db/migrations/095-model-run-native-input-identity.sql +39 -0
  36. package/db/migrations/096-drop-connector-event-index-fts.sql +9 -0
  37. package/db/migrations/097-native-input-json-validity.sql +37 -0
  38. package/db/migrations/098-workflow-memory-kind.sql +105 -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 +87 -15
  56. package/dist/db-adapter/node-sqlite-adapter.js +2045 -568
  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 +99 -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/commitments.d.ts +188 -0
  77. package/dist/knowledge/commitments.js +370 -0
  78. package/dist/knowledge/decision-edges.d.ts +70 -0
  79. package/dist/knowledge/decision-edges.js +123 -0
  80. package/dist/{agent-graph/types.d.ts → knowledge/graph-query.d.ts} +80 -70
  81. package/dist/knowledge/graph-query.js +1585 -0
  82. package/dist/knowledge/identity.d.ts +16 -0
  83. package/dist/knowledge/identity.js +22 -0
  84. package/dist/knowledge/index.d.ts +47 -0
  85. package/dist/knowledge/index.js +90 -0
  86. package/dist/knowledge/judgments.d.ts +118 -0
  87. package/dist/knowledge/judgments.js +808 -0
  88. package/dist/knowledge/observations.d.ts +160 -0
  89. package/dist/knowledge/observations.js +449 -0
  90. package/dist/knowledge/question-type.d.ts +34 -0
  91. package/dist/knowledge/question-type.js +70 -0
  92. package/dist/{search → knowledge}/ranker-features.js +1 -1
  93. package/dist/{search → knowledge}/search-quality.d.ts +0 -1
  94. package/dist/knowledge/search.d.ts +38 -0
  95. package/dist/knowledge/search.js +91 -0
  96. package/dist/knowledge/source-ingest.d.ts +65 -0
  97. package/dist/knowledge/source-ingest.js +174 -0
  98. package/dist/{edges/types.d.ts → knowledge/twin-edge-types.d.ts} +31 -4
  99. package/dist/{edges/types.js → knowledge/twin-edge-types.js} +13 -2
  100. package/dist/knowledge/work-dates.d.ts +49 -0
  101. package/dist/knowledge/work-dates.js +120 -0
  102. package/dist/mama-api.d.ts +116 -778
  103. package/dist/mama-api.js +313 -2457
  104. package/dist/memory/api.d.ts +264 -24
  105. package/dist/memory/api.js +1633 -843
  106. package/dist/memory/bootstrap-builder.d.ts +2 -1
  107. package/dist/memory/bootstrap-builder.js +5 -5
  108. package/dist/memory/channel-summary-state-store.d.ts +3 -2
  109. package/dist/memory/channel-summary-state-store.js +53 -51
  110. package/dist/memory/channel-summary-store.d.ts +5 -3
  111. package/dist/memory/channel-summary-store.js +3 -8
  112. package/dist/memory/dashboard-read.d.ts +46 -0
  113. package/dist/memory/dashboard-read.js +94 -0
  114. package/dist/memory/event-store.d.ts +3 -3
  115. package/dist/memory/event-store.js +3 -10
  116. package/dist/memory/finding-store.d.ts +3 -2
  117. package/dist/memory/finding-store.js +2 -7
  118. package/dist/memory/graph-read.d.ts +52 -0
  119. package/dist/memory/graph-read.js +130 -0
  120. package/dist/memory/judgment-types.d.ts +394 -0
  121. package/dist/memory/judgment-types.js +16 -0
  122. package/dist/memory/provenance-audit.d.ts +5 -2
  123. package/dist/memory/provenance-audit.js +8 -14
  124. package/dist/memory/provenance-live.d.ts +141 -0
  125. package/dist/memory/provenance-live.js +409 -0
  126. package/dist/memory/provenance-query.d.ts +5 -4
  127. package/dist/memory/provenance-query.js +21 -29
  128. package/dist/memory/provenance-resolver.d.ts +191 -0
  129. package/dist/memory/provenance-resolver.js +155 -0
  130. package/dist/memory/provenance.d.ts +1 -11
  131. package/dist/memory/provenance.js +2 -33
  132. package/dist/memory/recall-sanitize.d.ts +55 -0
  133. package/dist/memory/recall-sanitize.js +144 -0
  134. package/dist/memory/secret-filter.d.ts +32 -0
  135. package/dist/memory/secret-filter.js +126 -0
  136. package/dist/memory/truth-store.d.ts +2 -1
  137. package/dist/memory/truth-store.js +1 -4
  138. package/dist/memory/types.d.ts +74 -24
  139. package/dist/memory/types.js +75 -5
  140. package/dist/memory/write-adapters.d.ts +98 -0
  141. package/dist/memory/write-adapters.js +242 -0
  142. package/dist/operations/owner-action-effects.d.ts +53 -0
  143. package/dist/operations/owner-action-effects.js +96 -0
  144. package/dist/provenance/source-ref.d.ts +1 -1
  145. package/dist/provenance/source-ref.js +0 -2
  146. package/dist/registry/corrections.d.ts +31 -0
  147. package/dist/registry/corrections.js +332 -0
  148. package/dist/registry/record-identity.d.ts +49 -0
  149. package/dist/registry/record-identity.js +133 -0
  150. package/dist/registry/store.d.ts +101 -0
  151. package/dist/registry/store.js +395 -0
  152. package/dist/registry/types.d.ts +28 -0
  153. package/dist/registry/types.js +5 -0
  154. package/dist/relevance-scorer.js +2 -2
  155. package/dist/runtime/agent-event-bus.d.ts +50 -0
  156. package/dist/runtime/agent-event-bus.js +101 -0
  157. package/dist/runtime/drivers/claude-cli-wrapper.d.ts +155 -0
  158. package/dist/runtime/drivers/claude-cli-wrapper.js +392 -0
  159. package/dist/runtime/drivers/cli-arg-redaction.d.ts +2 -0
  160. package/dist/runtime/drivers/cli-arg-redaction.js +18 -0
  161. package/dist/runtime/drivers/cli-secret-redaction.d.ts +17 -0
  162. package/dist/runtime/drivers/cli-secret-redaction.js +126 -0
  163. package/dist/runtime/drivers/codex-app-server-process.d.ts +277 -0
  164. package/dist/runtime/drivers/codex-app-server-process.js +2342 -0
  165. package/dist/runtime/drivers/codex-auxiliary-tools.d.ts +17 -0
  166. package/dist/runtime/drivers/codex-auxiliary-tools.js +267 -0
  167. package/dist/runtime/drivers/codex-home.d.ts +20 -0
  168. package/dist/runtime/drivers/codex-home.js +674 -0
  169. package/dist/runtime/drivers/codex-thread-registry.d.ts +63 -0
  170. package/dist/runtime/drivers/codex-thread-registry.js +433 -0
  171. package/dist/runtime/drivers/persistent-cli-adapter.d.ts +160 -0
  172. package/dist/runtime/drivers/persistent-cli-adapter.js +396 -0
  173. package/dist/runtime/drivers/persistent-cli-process.d.ts +424 -0
  174. package/dist/runtime/drivers/persistent-cli-process.js +1543 -0
  175. package/dist/runtime/drivers/types.d.ts +456 -0
  176. package/dist/runtime/drivers/types.js +110 -0
  177. package/dist/runtime/mailbox.d.ts +223 -0
  178. package/dist/runtime/mailbox.js +582 -0
  179. package/dist/runtime/model-run-store.d.ts +28 -0
  180. package/dist/{model-runs/store.js → runtime/model-run-store.js} +81 -41
  181. package/dist/runtime/model-run-types.d.ts +132 -0
  182. package/dist/{model-runs/types.js → runtime/model-run-types.js} +1 -1
  183. package/dist/runtime/native-effect-observer.d.ts +22 -0
  184. package/dist/runtime/native-effect-observer.js +103 -0
  185. package/dist/runtime/native-input-journal.d.ts +46 -0
  186. package/dist/runtime/native-input-journal.js +308 -0
  187. package/dist/runtime/native-prompt.d.ts +118 -0
  188. package/dist/runtime/native-prompt.js +496 -0
  189. package/dist/runtime/native-session.d.ts +10 -0
  190. package/dist/{agent-graph/index.js → runtime/native-session.js} +9 -6
  191. package/dist/runtime/native-tool-trace-observer.d.ts +5 -0
  192. package/dist/runtime/native-tool-trace-observer.js +65 -0
  193. package/dist/runtime/native-turn.d.ts +272 -0
  194. package/dist/runtime/native-turn.js +1041 -0
  195. package/dist/runtime/operations.d.ts +236 -0
  196. package/dist/runtime/operations.js +565 -0
  197. package/dist/runtime/post-tool-handler.d.ts +74 -0
  198. package/dist/runtime/post-tool-handler.js +137 -0
  199. package/dist/runtime/prompt-layers.d.ts +126 -0
  200. package/dist/runtime/prompt-layers.js +239 -0
  201. package/dist/runtime/runtime-process.d.ts +102 -0
  202. package/dist/runtime/runtime-process.js +206 -0
  203. package/dist/runtime/runtime.d.ts +278 -0
  204. package/dist/runtime/runtime.js +563 -0
  205. package/dist/runtime/session-pool.d.ts +176 -0
  206. package/dist/runtime/session-pool.js +369 -0
  207. package/dist/runtime/stimulus-payload.d.ts +5 -0
  208. package/dist/runtime/stimulus-payload.js +50 -0
  209. package/dist/runtime/subagent-bridge.d.ts +24 -0
  210. package/dist/{agent-graph/types.js → runtime/subagent-bridge.js} +1 -1
  211. package/dist/runtime/text-completion.d.ts +22 -0
  212. package/dist/{agent-situation/types.js → runtime/text-completion.js} +1 -1
  213. package/dist/runtime/token-estimator.d.ts +25 -0
  214. package/dist/runtime/token-estimator.js +75 -0
  215. package/dist/runtime/tool-trace-store.d.ts +22 -0
  216. package/dist/runtime/tool-trace-store.js +242 -0
  217. package/dist/runtime/trace-summary.d.ts +5 -0
  218. package/dist/runtime/trace-summary.js +74 -0
  219. package/dist/runtime/turn-text.d.ts +23 -0
  220. package/dist/runtime/turn-text.js +41 -0
  221. package/dist/storage/database.d.ts +67 -0
  222. package/dist/storage/database.js +158 -0
  223. package/package.json +20 -34
  224. package/dist/agent-graph/alias-write.d.ts +0 -3
  225. package/dist/agent-graph/alias-write.js +0 -234
  226. package/dist/agent-graph/entity-resolve.d.ts +0 -3
  227. package/dist/agent-graph/entity-resolve.js +0 -271
  228. package/dist/agent-graph/errors.d.ts +0 -4
  229. package/dist/agent-graph/errors.js +0 -11
  230. package/dist/agent-graph/graph-query.d.ts +0 -5
  231. package/dist/agent-graph/graph-query.js +0 -360
  232. package/dist/agent-graph/index.d.ts +0 -6
  233. package/dist/agent-situation/builder.d.ts +0 -8
  234. package/dist/agent-situation/builder.js +0 -239
  235. package/dist/agent-situation/cache-key.d.ts +0 -4
  236. package/dist/agent-situation/cache-key.js +0 -64
  237. package/dist/agent-situation/index.d.ts +0 -7
  238. package/dist/agent-situation/index.js +0 -28
  239. package/dist/agent-situation/packet-store.d.ts +0 -27
  240. package/dist/agent-situation/packet-store.js +0 -228
  241. package/dist/agent-situation/ranking-policy.d.ts +0 -18
  242. package/dist/agent-situation/ranking-policy.js +0 -75
  243. package/dist/agent-situation/source-readers.d.ts +0 -52
  244. package/dist/agent-situation/source-readers.js +0 -300
  245. package/dist/agent-situation/types.d.ts +0 -195
  246. package/dist/cases/wiki-page-index.d.ts +0 -37
  247. package/dist/cases/wiki-page-index.js +0 -201
  248. package/dist/config-loader.d.ts +0 -68
  249. package/dist/config-loader.js +0 -239
  250. package/dist/connectors/event-index.d.ts +0 -24
  251. package/dist/connectors/event-index.js +0 -245
  252. package/dist/connectors/raw-query.d.ts +0 -40
  253. package/dist/connectors/raw-query.js +0 -412
  254. package/dist/connectors/types.d.ts +0 -117
  255. package/dist/connectors/types.js +0 -3
  256. package/dist/context-compile/boundary-defaults.d.ts +0 -12
  257. package/dist/context-compile/boundary-defaults.js +0 -105
  258. package/dist/context-compile/channel-grant.js +0 -66
  259. package/dist/context-compile/compiler-policy.d.ts +0 -39
  260. package/dist/context-compile/compiler-policy.js +0 -147
  261. package/dist/context-compile/compiler.d.ts +0 -18
  262. package/dist/context-compile/compiler.js +0 -404
  263. package/dist/context-compile/index.d.ts +0 -10
  264. package/dist/context-compile/index.js +0 -26
  265. package/dist/context-compile/packet-store.d.ts +0 -8
  266. package/dist/context-compile/packet-store.js +0 -239
  267. package/dist/context-compile/ref.d.ts +0 -7
  268. package/dist/context-compile/ref.js +0 -102
  269. package/dist/context-compile/source-readers.d.ts +0 -70
  270. package/dist/context-compile/source-readers.js +0 -840
  271. package/dist/context-compile/types.d.ts +0 -155
  272. package/dist/context-compile/types.js +0 -11
  273. package/dist/context-compile/visibility.d.ts +0 -21
  274. package/dist/context-compile/visibility.js +0 -224
  275. package/dist/decision-tracker.d.ts +0 -206
  276. package/dist/decision-tracker.js +0 -481
  277. package/dist/edges/ref-validation.d.ts +0 -7
  278. package/dist/edges/ref-validation.js +0 -321
  279. package/dist/edges/store.d.ts +0 -8
  280. package/dist/edges/store.js +0 -129
  281. package/dist/embedding-client.d.ts +0 -28
  282. package/dist/embedding-client.js +0 -53
  283. package/dist/embedding-server/index.d.ts +0 -67
  284. package/dist/embedding-server/index.js +0 -405
  285. package/dist/embedding-server/mobile/auth.d.ts +0 -44
  286. package/dist/embedding-server/mobile/auth.js +0 -150
  287. package/dist/embedding-server/mobile/daemon.d.ts +0 -129
  288. package/dist/embedding-server/mobile/daemon.js +0 -313
  289. package/dist/embedding-server/mobile/output-parser.d.ts +0 -115
  290. package/dist/embedding-server/mobile/output-parser.js +0 -241
  291. package/dist/embedding-server/mobile/session-api.d.ts +0 -57
  292. package/dist/embedding-server/mobile/session-api.js +0 -261
  293. package/dist/embedding-server/mobile/session-manager.d.ts +0 -138
  294. package/dist/embedding-server/mobile/session-manager.js +0 -378
  295. package/dist/embedding-server/mobile/websocket-handler.d.ts +0 -137
  296. package/dist/embedding-server/mobile/websocket-handler.js +0 -486
  297. package/dist/embeddings.d.ts +0 -68
  298. package/dist/embeddings.js +0 -244
  299. package/dist/entities/audit-metrics.d.ts +0 -68
  300. package/dist/entities/audit-metrics.js +0 -124
  301. package/dist/entities/candidate-generator.d.ts +0 -8
  302. package/dist/entities/candidate-generator.js +0 -24
  303. package/dist/entities/entity-linked-decision-counts.d.ts +0 -2
  304. package/dist/entities/entity-linked-decision-counts.js +0 -29
  305. package/dist/entities/entity-list.d.ts +0 -22
  306. package/dist/entities/entity-list.js +0 -3
  307. package/dist/entities/entity-orphan-list.d.ts +0 -17
  308. package/dist/entities/entity-orphan-list.js +0 -3
  309. package/dist/entities/entity-search.d.ts +0 -20
  310. package/dist/entities/entity-search.js +0 -3
  311. package/dist/entities/errors.d.ts +0 -55
  312. package/dist/entities/errors.js +0 -100
  313. package/dist/entities/lineage-store.d.ts +0 -28
  314. package/dist/entities/lineage-store.js +0 -204
  315. package/dist/entities/normalization.d.ts +0 -14
  316. package/dist/entities/normalization.js +0 -63
  317. package/dist/entities/policy-store.d.ts +0 -8
  318. package/dist/entities/policy-store.js +0 -75
  319. package/dist/entities/policy-types.d.ts +0 -72
  320. package/dist/entities/policy-types.js +0 -59
  321. package/dist/entities/projection.d.ts +0 -8
  322. package/dist/entities/projection.js +0 -82
  323. package/dist/entities/provenance-query.d.ts +0 -32
  324. package/dist/entities/provenance-query.js +0 -3
  325. package/dist/entities/read-identity.d.ts +0 -31
  326. package/dist/entities/read-identity.js +0 -264
  327. package/dist/entities/recall-bridge.d.ts +0 -5
  328. package/dist/entities/recall-bridge.js +0 -171
  329. package/dist/entities/resolution-engine.d.ts +0 -8
  330. package/dist/entities/resolution-engine.js +0 -3
  331. package/dist/entities/rollback-preview.d.ts +0 -35
  332. package/dist/entities/rollback-preview.js +0 -3
  333. package/dist/entities/source-locator.d.ts +0 -3
  334. package/dist/entities/source-locator.js +0 -32
  335. package/dist/entities/store.d.ts +0 -69
  336. package/dist/entities/store.js +0 -544
  337. package/dist/entities/types.d.ts +0 -166
  338. package/dist/entities/types.js +0 -30
  339. package/dist/memory/extraction-prompt.d.ts +0 -4
  340. package/dist/memory/extraction-prompt.js +0 -89
  341. package/dist/memory/scope-backfill.d.ts +0 -14
  342. package/dist/memory/scope-backfill.js +0 -3
  343. package/dist/memory/scope-store.d.ts +0 -4
  344. package/dist/memory/scope-store.js +0 -9
  345. package/dist/memory-store.d.ts +0 -87
  346. package/dist/memory-store.js +0 -78
  347. package/dist/model-runs/store.d.ts +0 -13
  348. package/dist/model-runs/tool-trace-store.d.ts +0 -4
  349. package/dist/model-runs/tool-trace-store.js +0 -118
  350. package/dist/model-runs/types.d.ts +0 -72
  351. package/dist/notification-manager.d.ts +0 -7
  352. package/dist/notification-manager.js +0 -12
  353. package/dist/outcome-tracker.d.ts +0 -151
  354. package/dist/outcome-tracker.js +0 -271
  355. package/dist/query-intent.d.ts +0 -23
  356. package/dist/query-intent.js +0 -114
  357. package/dist/runtime/trusted-provenance.d.ts +0 -3
  358. package/dist/runtime/trusted-provenance.js +0 -6
  359. package/dist/search/question-type.d.ts +0 -5
  360. package/dist/search/question-type.js +0 -41
  361. package/dist/test-utils.d.ts +0 -80
  362. package/dist/test-utils.js +0 -218
  363. package/dist/tier-validator.d.ts +0 -43
  364. package/dist/tier-validator.js +0 -159
  365. package/dist/time-formatter.d.ts +0 -25
  366. package/dist/time-formatter.js +0 -93
  367. /package/dist/{search → knowledge}/feedback-store.d.ts +0 -0
  368. /package/dist/{search → knowledge}/feedback-store.js +0 -0
  369. /package/dist/{search → knowledge}/ranker-features.d.ts +0 -0
  370. /package/dist/{search → knowledge}/ranker-rescore.d.ts +0 -0
  371. /package/dist/{search → knowledge}/ranker-rescore.js +0 -0
  372. /package/dist/{search → knowledge}/ranker-trainer.d.ts +0 -0
  373. /package/dist/{search → knowledge}/ranker-trainer.js +0 -0
  374. /package/dist/{search → knowledge}/search-quality.js +0 -0
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ /**
3
+ * TokenEstimator — singleton wrapper around js-tiktoken (cl100k_base).
4
+ *
5
+ * Provides accurate token counting for Korean + English text.
6
+ * Falls back to byte-length heuristic if WASM init fails or during loading.
7
+ *
8
+ * Uses dynamic import to avoid blocking vitest fork initialization.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.initTokenEstimator = initTokenEstimator;
12
+ exports.countTokens = countTokens;
13
+ exports.resetTokenEstimator = resetTokenEstimator;
14
+ exports.forceFallbackMode = forceFallbackMode;
15
+ let _encoder = null;
16
+ let _initFailed = false;
17
+ let _initPromise = null;
18
+ /**
19
+ * Initialize the encoder asynchronously. Safe to call multiple times.
20
+ */
21
+ async function initTokenEstimator() {
22
+ if (_encoder || _initFailed)
23
+ return;
24
+ if (_initPromise)
25
+ return _initPromise;
26
+ _initPromise = (async () => {
27
+ try {
28
+ const { encodingForModel } = await import('js-tiktoken');
29
+ _encoder = encodingForModel('gpt-4o');
30
+ }
31
+ catch {
32
+ _initFailed = true;
33
+ }
34
+ })();
35
+ return _initPromise;
36
+ }
37
+ function getEncoder() {
38
+ if (!_encoder && !_initFailed && !_initPromise) {
39
+ // Fire-and-forget init on first sync access
40
+ initTokenEstimator().catch(() => { });
41
+ }
42
+ return _encoder;
43
+ }
44
+ /**
45
+ * Byte-length fallback: ~0.4 tokens per byte (empirical for mixed CJK+Latin).
46
+ */
47
+ function fallbackCount(text) {
48
+ return Math.ceil(Buffer.byteLength(text, 'utf-8') * 0.4);
49
+ }
50
+ /**
51
+ * Count tokens in text. Uses js-tiktoken if available, else byte fallback.
52
+ */
53
+ function countTokens(text) {
54
+ const enc = getEncoder();
55
+ if (enc) {
56
+ return enc.encode(text).length;
57
+ }
58
+ return fallbackCount(text);
59
+ }
60
+ /**
61
+ * Reset singleton state (for testing).
62
+ */
63
+ function resetTokenEstimator() {
64
+ _encoder = null;
65
+ _initFailed = false;
66
+ _initPromise = null;
67
+ }
68
+ /**
69
+ * Force fallback mode (for testing).
70
+ */
71
+ function forceFallbackMode() {
72
+ _encoder = null;
73
+ _initFailed = true;
74
+ }
75
+ //# sourceMappingURL=token-estimator.js.map
@@ -0,0 +1,22 @@
1
+ import type { DatabaseAdapter } from '../db-manager.js';
2
+ import type { AppendToolTraceInput, AppendOperationToolTraceInput, ToolTraceRecord, ToolTraceScope, ListToolTracesInput, ToolTracePage } from './model-run-types.js';
3
+ type ToolTraceAdapter = Pick<DatabaseAdapter, 'prepare'>;
4
+ /** Model-backed append. `model_run_id` is required and validated as before. */
5
+ export declare function appendToolTrace(adapter: ToolTraceAdapter, input: AppendToolTraceInput): Promise<ToolTraceRecord>;
6
+ /**
7
+ * Service/CLI operation append. Records a truthful operation trace anchored by a
8
+ * nonempty `operation_id` and `actor_principal_id`. No `model_runs` row is
9
+ * created or required.
10
+ *
11
+ * `model_run_id` is optional causal provenance: when a real completed model run
12
+ * caused this operation observation it is stored (the DB `model_runs` FK rejects
13
+ * an invalid reference); absent, it stays NULL. It never authorizes execution.
14
+ */
15
+ export declare function appendOperationToolTrace(adapter: ToolTraceAdapter, input: AppendOperationToolTraceInput): ToolTraceRecord;
16
+ export declare function listToolTracesForRun(adapter: ToolTraceAdapter, modelRunId: string): Promise<ToolTraceRecord[]>;
17
+ /** Access is exact host-derived scope; knowing a trace ID never grants access. */
18
+ export declare function readToolTrace(adapter: ToolTraceAdapter, traceId: string, scope: ToolTraceScope): Promise<ToolTraceRecord | null>;
19
+ /** Bounded metadata discovery; detailed evidence is read explicitly by trace ID. */
20
+ export declare function listToolTraces(adapter: ToolTraceAdapter, input: ListToolTracesInput): Promise<ToolTracePage>;
21
+ export {};
22
+ //# sourceMappingURL=tool-trace-store.d.ts.map
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.appendToolTrace = appendToolTrace;
7
+ exports.appendOperationToolTrace = appendOperationToolTrace;
8
+ exports.listToolTracesForRun = listToolTracesForRun;
9
+ exports.readToolTrace = readToolTrace;
10
+ exports.listToolTraces = listToolTraces;
11
+ const node_crypto_1 = __importDefault(require("node:crypto"));
12
+ function traceId() {
13
+ return `tr_${node_crypto_1.default.randomUUID().replace(/-/g, '')}`;
14
+ }
15
+ function requiredString(value, field) {
16
+ if (typeof value !== 'string' || value.length === 0) {
17
+ throw new Error(`tool_traces.${field} must be a non-empty string: ${formatInvalidValue(value)}`);
18
+ }
19
+ return value;
20
+ }
21
+ function formatInvalidValue(value) {
22
+ return typeof value === 'string' ? JSON.stringify(value) : String(value);
23
+ }
24
+ function nullableString(value) {
25
+ return typeof value === 'string' && value.length > 0 ? value : null;
26
+ }
27
+ function normalizeTimestamp(value) {
28
+ if (value === undefined || value === null) {
29
+ return Date.now();
30
+ }
31
+ return requiredInteger(value, 'created_at');
32
+ }
33
+ function normalizeDuration(value) {
34
+ if (value === undefined || value === null) {
35
+ return 0;
36
+ }
37
+ return requiredNonNegativeInteger(value, 'duration_ms');
38
+ }
39
+ function requiredInteger(value, field) {
40
+ if (typeof value !== 'number' || !Number.isFinite(value)) {
41
+ throw new Error(`tool_traces.${field} must be a finite number: ${formatInvalidValue(value)}`);
42
+ }
43
+ return Math.floor(value);
44
+ }
45
+ function requiredNonNegativeInteger(value, field) {
46
+ const normalized = requiredInteger(value, field);
47
+ if (normalized < 0) {
48
+ throw new Error(`tool_traces.${field} must be non-negative: ${formatInvalidValue(value)}`);
49
+ }
50
+ return normalized;
51
+ }
52
+ function nullableJsonObject(value, field) {
53
+ if (value === undefined || value === null) {
54
+ return null;
55
+ }
56
+ if (typeof value !== 'string') {
57
+ throw new Error(`tool_traces.${field} must be a JSON object string`);
58
+ }
59
+ let parsed;
60
+ try {
61
+ parsed = JSON.parse(value);
62
+ }
63
+ catch {
64
+ throw new Error(`tool_traces.${field} contains malformed JSON`);
65
+ }
66
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
67
+ throw new Error(`tool_traces.${field} must contain a JSON object`);
68
+ }
69
+ return value;
70
+ }
71
+ function mapToolTraceRow(row) {
72
+ return {
73
+ diagnostic_json: nullableJsonObject(row.diagnostic_json, 'diagnostic_json'),
74
+ evidence_json: nullableJsonObject(row.evidence_json, 'evidence_json'),
75
+ catalog_revision: nullableString(row.catalog_revision),
76
+ owner_scope: nullableString(row.owner_scope),
77
+ project_id: nullableString(row.project_id),
78
+ channel_id: nullableString(row.channel_id),
79
+ trace_id: requiredString(row.trace_id, 'trace_id'),
80
+ // NULL for operation-origin rows; legacy/model-backed rows keep their id.
81
+ model_run_id: nullableString(row.model_run_id),
82
+ operation_id: nullableString(row.operation_id),
83
+ actor_principal_id: nullableString(row.actor_principal_id),
84
+ gateway_call_id: nullableString(row.gateway_call_id),
85
+ tool_name: requiredString(row.tool_name, 'tool_name'),
86
+ input_summary: nullableString(row.input_summary),
87
+ output_summary: nullableString(row.output_summary),
88
+ execution_status: nullableString(row.execution_status),
89
+ duration_ms: requiredNonNegativeInteger(row.duration_ms, 'duration_ms'),
90
+ envelope_hash: nullableString(row.envelope_hash),
91
+ failure_code: nullableString(row.failure_code),
92
+ created_at: requiredInteger(row.created_at, 'created_at'),
93
+ };
94
+ }
95
+ /** Columns selected for every full trace read; kept in one place so operation-origin rows are never joined away. */
96
+ const TOOL_TRACE_COLUMNS = `trace_id, model_run_id, operation_id, actor_principal_id, gateway_call_id, tool_name, input_summary,
97
+ output_summary, execution_status, duration_ms, envelope_hash, failure_code,
98
+ created_at, diagnostic_json, evidence_json, catalog_revision, owner_scope, project_id, channel_id`;
99
+ function selectToolTrace(adapter, id) {
100
+ const row = adapter
101
+ .prepare(`
102
+ SELECT
103
+ ${TOOL_TRACE_COLUMNS}
104
+ FROM tool_traces
105
+ WHERE trace_id = ?
106
+ `)
107
+ .get(id);
108
+ if (!row) {
109
+ throw new Error(`Tool trace not found: ${id}`);
110
+ }
111
+ return mapToolTraceRow(row);
112
+ }
113
+ function insertToolTraceRow(adapter, id, origin, input) {
114
+ adapter
115
+ .prepare(`
116
+ INSERT INTO tool_traces (
117
+ trace_id, model_run_id, operation_id, actor_principal_id, gateway_call_id, tool_name, input_summary,
118
+ output_summary, execution_status, duration_ms, envelope_hash, failure_code,
119
+ created_at, diagnostic_json, evidence_json, catalog_revision, owner_scope, project_id, channel_id
120
+ )
121
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
122
+ `)
123
+ .run(id, origin.model_run_id, origin.operation_id, origin.actor_principal_id, nullableString(input.gateway_call_id), requiredString(input.tool_name, 'tool_name'), nullableString(input.input_summary), nullableString(input.output_summary), nullableString(input.execution_status), normalizeDuration(input.duration_ms), nullableString(input.envelope_hash), nullableString(input.failure_code), normalizeTimestamp(input.created_at), nullableJsonObject(input.diagnostic_json, 'diagnostic_json'), nullableJsonObject(input.evidence_json, 'evidence_json'), nullableString(input.catalog_revision), nullableString(input.owner_scope), nullableString(input.project_id), nullableString(input.channel_id));
124
+ }
125
+ /** Model-backed append. `model_run_id` is required and validated as before. */
126
+ async function appendToolTrace(adapter, input) {
127
+ const id = nullableString(input.trace_id) ?? traceId();
128
+ const modelRunId = requiredString(input.model_run_id, 'model_run_id');
129
+ insertToolTraceRow(adapter, id, { model_run_id: modelRunId, operation_id: null, actor_principal_id: null }, input);
130
+ return selectToolTrace(adapter, id);
131
+ }
132
+ /**
133
+ * Service/CLI operation append. Records a truthful operation trace anchored by a
134
+ * nonempty `operation_id` and `actor_principal_id`. No `model_runs` row is
135
+ * created or required.
136
+ *
137
+ * `model_run_id` is optional causal provenance: when a real completed model run
138
+ * caused this operation observation it is stored (the DB `model_runs` FK rejects
139
+ * an invalid reference); absent, it stays NULL. It never authorizes execution.
140
+ */
141
+ function appendOperationToolTrace(adapter, input) {
142
+ const id = nullableString(input.trace_id) ?? traceId();
143
+ const operationId = requiredString(input.operation_id, 'operation_id');
144
+ const actorPrincipalId = requiredString(input.actor_principal_id, 'actor_principal_id');
145
+ const causalModelRunId = nullableString(input.model_run_id);
146
+ insertToolTraceRow(adapter, id, {
147
+ model_run_id: causalModelRunId,
148
+ operation_id: operationId,
149
+ actor_principal_id: actorPrincipalId,
150
+ }, input);
151
+ return selectToolTrace(adapter, id);
152
+ }
153
+ async function listToolTracesForRun(adapter, modelRunId) {
154
+ const id = requiredString(modelRunId, 'model_run_id');
155
+ const rows = adapter
156
+ .prepare(`
157
+ SELECT
158
+ ${TOOL_TRACE_COLUMNS}
159
+ FROM tool_traces
160
+ WHERE model_run_id = ?
161
+ ORDER BY created_at DESC, rowid DESC
162
+ `)
163
+ .all(id);
164
+ return rows.map(mapToolTraceRow);
165
+ }
166
+ function scopedWhere(scope) {
167
+ const clauses = ['owner_scope = ?', 'project_id = ?'];
168
+ const values = [
169
+ requiredString(scope.owner_scope, 'owner_scope'),
170
+ requiredString(scope.project_id, 'project_id'),
171
+ ];
172
+ if (scope.channel_id !== undefined) {
173
+ clauses.push('channel_id = ?');
174
+ values.push(requiredString(scope.channel_id, 'channel_id'));
175
+ }
176
+ return { clauses, values };
177
+ }
178
+ /** Access is exact host-derived scope; knowing a trace ID never grants access. */
179
+ async function readToolTrace(adapter, traceId, scope) {
180
+ const { clauses, values } = scopedWhere(scope);
181
+ clauses.push('trace_id = ?');
182
+ values.push(requiredString(traceId, 'trace_id'));
183
+ const row = adapter
184
+ .prepare(`SELECT * FROM tool_traces WHERE ${clauses.join(' AND ')}`)
185
+ .get(...values);
186
+ return row ? mapToolTraceRow(row) : null;
187
+ }
188
+ /** Bounded metadata discovery; detailed evidence is read explicitly by trace ID. */
189
+ async function listToolTraces(adapter, input) {
190
+ const { clauses, values } = scopedWhere(input);
191
+ if (input.evidence_only !== undefined && typeof input.evidence_only !== 'boolean') {
192
+ throw new Error('tool_traces.evidence_only must be a boolean');
193
+ }
194
+ if (input.evidence_only === true) {
195
+ clauses.push('evidence_json IS NOT NULL');
196
+ }
197
+ const limit = input.limit ?? 20;
198
+ if (!Number.isInteger(limit) || limit < 1 || limit > 100) {
199
+ throw new Error('tool_traces.limit must be an integer between 1 and 100');
200
+ }
201
+ for (const field of ['model_run_id', 'tool_name']) {
202
+ if (input[field] !== undefined) {
203
+ clauses.push(`${field} = ?`);
204
+ values.push(requiredString(input[field], field));
205
+ }
206
+ }
207
+ if (input.cursor !== undefined) {
208
+ let cursor;
209
+ try {
210
+ cursor = JSON.parse(Buffer.from(input.cursor, 'base64url').toString('utf8'));
211
+ }
212
+ catch {
213
+ throw new Error('tool_traces.cursor is malformed');
214
+ }
215
+ if (!Array.isArray(cursor) || cursor.length !== 2) {
216
+ throw new Error('tool_traces.cursor is malformed');
217
+ }
218
+ const [cursorCreatedAt, cursorTraceId] = cursor;
219
+ if (typeof cursorCreatedAt !== 'number' ||
220
+ !Number.isSafeInteger(cursorCreatedAt) ||
221
+ typeof cursorTraceId !== 'string' ||
222
+ cursorTraceId.length === 0) {
223
+ throw new Error('tool_traces.cursor is malformed');
224
+ }
225
+ clauses.push('(created_at < ? OR (created_at = ? AND trace_id < ?))');
226
+ values.push(cursorCreatedAt, cursorCreatedAt, cursorTraceId);
227
+ }
228
+ const rows = adapter
229
+ .prepare(`SELECT trace_id, model_run_id, operation_id, actor_principal_id, gateway_call_id, tool_name,
230
+ input_summary, output_summary, execution_status, duration_ms, envelope_hash, failure_code,
231
+ created_at, diagnostic_json, NULL AS evidence_json, catalog_revision, owner_scope, project_id, channel_id
232
+ FROM tool_traces WHERE ${clauses.join(' AND ')}
233
+ ORDER BY created_at DESC, trace_id DESC LIMIT ?`)
234
+ .all(...values, limit + 1);
235
+ const traces = rows.slice(0, limit).map(mapToolTraceRow);
236
+ const last = traces.at(-1);
237
+ const next_cursor = rows.length > limit && last
238
+ ? Buffer.from(JSON.stringify([last.created_at, last.trace_id])).toString('base64url')
239
+ : null;
240
+ return { traces, next_cursor };
241
+ }
242
+ //# sourceMappingURL=tool-trace-store.js.map
@@ -0,0 +1,5 @@
1
+ /** Shared raw diagnostic redaction; callers choose their own output bounds. */
2
+ export declare function redactTraceText(value: string): string;
3
+ /** Bounded diagnostics only: never mutate the executed input or stored evidence. */
4
+ export declare function traceSummary(value: unknown): string | null;
5
+ //# sourceMappingURL=trace-summary.d.ts.map
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.redactTraceText = redactTraceText;
4
+ exports.traceSummary = traceSummary;
5
+ const secret_filter_js_1 = require("../memory/secret-filter.js");
6
+ const SECRET_FIELD = /(?:authorization|credential|password|passwd|secret|token|api[_-]?key|private[_-]?key)/i;
7
+ const SECRET_ASSIGNMENT = /\b([\w-]*(?:token|secret|password|passwd|credential|api[_-]?key|private[_-]?key)[\w-]*(?:\\?["'])?\s*[=:]\s*)(?:\\"[^\r\n]*?\\"|"[^"\n]*"|'[^'\n]*'|[^\s,;&}\]]+)/gi;
8
+ /** Shared raw diagnostic redaction; callers choose their own output bounds. */
9
+ function redactTraceText(value) {
10
+ return (0, secret_filter_js_1.redactSecretPatterns)(value)
11
+ .replace(/\beyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+\b/g, '[REDACTED]')
12
+ .replace(/https?:\/\/[^\s<>"']+/gi, (raw) => {
13
+ try {
14
+ const url = new URL(raw);
15
+ if (url.username || url.password) {
16
+ url.username = '[REDACTED]';
17
+ url.password = '';
18
+ }
19
+ for (const key of [...url.searchParams.keys()]) {
20
+ if (SECRET_FIELD.test(key))
21
+ url.searchParams.set(key, '[REDACTED]');
22
+ }
23
+ // URL fragments are not sent to servers and do not help diagnose tool execution.
24
+ url.hash = '';
25
+ return url.toString();
26
+ }
27
+ catch {
28
+ return '[INVALID-URL]';
29
+ }
30
+ })
31
+ .replace(/(--[\w-]*(?:token|secret|password|passwd|credential|api[_-]?key|private[_-]?key)[\w-]*\s+)(?:"[^"\n]*"|'[^'\n]*'|[^\s,;&}\]]+)/gi, '$1[REDACTED]')
32
+ .replace(SECRET_ASSIGNMENT, '$1[REDACTED]')
33
+ .replace(/\b(Authorization["']?\s*[:=]\s*["']?)(?:(?:Bearer|Basic)\s+)?[^\s,"';]+/gi, '$1[REDACTED]');
34
+ }
35
+ /** Bounded diagnostics only: never mutate the executed input or stored evidence. */
36
+ function traceSummary(value) {
37
+ if (value === undefined)
38
+ return null;
39
+ const seen = new WeakSet();
40
+ let remaining = 4_000;
41
+ const text = (value) => {
42
+ const safe = redactTraceText(value);
43
+ const result = safe.slice(0, Math.max(0, remaining));
44
+ remaining -= result.length;
45
+ return result;
46
+ };
47
+ const visit = (item, depth) => {
48
+ if (remaining <= 0 || depth > 6)
49
+ return '[TRUNCATED]';
50
+ if (typeof item === 'string')
51
+ return text(item);
52
+ if (!item || typeof item !== 'object')
53
+ return item;
54
+ if (seen.has(item))
55
+ return '[CIRCULAR]';
56
+ seen.add(item);
57
+ if (Array.isArray(item))
58
+ return item.slice(0, 40).map((entry) => visit(entry, depth + 1));
59
+ return Object.fromEntries(Object.entries(item)
60
+ .slice(0, 40)
61
+ .map(([key, entry]) => [
62
+ text(key),
63
+ SECRET_FIELD.test(key) ? '[REDACTED]' : visit(entry, depth + 1),
64
+ ]));
65
+ };
66
+ try {
67
+ const serialized = JSON.stringify(visit(value, 0)) ?? '';
68
+ return serialized.length <= 4_000 ? serialized : `${serialized.slice(0, 3_997)}...`;
69
+ }
70
+ catch {
71
+ return '[UNSERIALIZABLE]';
72
+ }
73
+ }
74
+ //# sourceMappingURL=trace-summary.js.map
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Reading and writing a turn's text, with nothing in it that knows which product
3
+ * the turn belongs to.
4
+ *
5
+ * These five were methods on the product's loop class only because they were written
6
+ * there. None of them reads any state on that class; the one that needed to know the
7
+ * backend takes it as an argument. They come out first so that what remains of the
8
+ * turn body is the part that actually holds state.
9
+ */
10
+ import type { BackendType, ContentBlock, Message, PromptResult } from './drivers/types.js';
11
+ /** The text blocks of one content array, joined. */
12
+ export declare function extractTextFromContent(content: ContentBlock[]): string;
13
+ /** The last assistant message's text, or empty when the history holds none. */
14
+ export declare function extractTextResponse(history: Message[]): string;
15
+ /**
16
+ * Tokens a turn counts against the run budget.
17
+ *
18
+ * One backend reports cache reads and cache creation outside input_tokens; the other
19
+ * reports input tokens inclusive of cached ones. Adding cache reads for the second
20
+ * doubled every count in 0.44.0, where a 2.8M turn read as 5.5M and was stopped.
21
+ */
22
+ export declare function countBudgetTokens(usage: PromptResult['usage'], backend: BackendType): number;
23
+ //# sourceMappingURL=turn-text.d.ts.map
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractTextFromContent = extractTextFromContent;
4
+ exports.extractTextResponse = extractTextResponse;
5
+ exports.countBudgetTokens = countBudgetTokens;
6
+ /** The text blocks of one content array, joined. */
7
+ function extractTextFromContent(content) {
8
+ return content
9
+ .filter((block) => block.type === 'text')
10
+ .map((block) => block.text)
11
+ .join('\n');
12
+ }
13
+ /** The last assistant message's text, or empty when the history holds none. */
14
+ function extractTextResponse(history) {
15
+ for (let i = history.length - 1; i >= 0; i--) {
16
+ const message = history[i];
17
+ if (message.role === 'assistant') {
18
+ const content = message.content;
19
+ if (typeof content === 'string') {
20
+ return content;
21
+ }
22
+ return extractTextFromContent(content);
23
+ }
24
+ }
25
+ return '';
26
+ }
27
+ /**
28
+ * Tokens a turn counts against the run budget.
29
+ *
30
+ * One backend reports cache reads and cache creation outside input_tokens; the other
31
+ * reports input tokens inclusive of cached ones. Adding cache reads for the second
32
+ * doubled every count in 0.44.0, where a 2.8M turn read as 5.5M and was stopped.
33
+ */
34
+ function countBudgetTokens(usage, backend) {
35
+ const base = usage.input_tokens + usage.output_tokens;
36
+ if (backend === 'codex') {
37
+ return base;
38
+ }
39
+ return base + (usage.cache_creation_input_tokens ?? 0) + (usage.cache_read_input_tokens ?? 0);
40
+ }
41
+ //# sourceMappingURL=turn-text.js.map
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Database lifetime.
3
+ *
4
+ * `openDatabase` returns a handle to one database. It does not register itself
5
+ * anywhere, so two calls give two independent databases and a caller always
6
+ * knows which one it holds. `db-manager.ts` keeps a single handle for the
7
+ * callers that still reach for a module-level connection; nothing here depends
8
+ * on that handle existing.
9
+ *
10
+ * @module storage/database
11
+ */
12
+ import type { DatabaseInstance } from '../db-manager.js';
13
+ /** Migrations ship beside the compiled output, two levels up from `dist/storage`. */
14
+ export declare const MIGRATIONS_DIR: string;
15
+ export interface OpenDatabaseOptions {
16
+ /** Where to open. Falls back to the adapter's own resolution when omitted. */
17
+ path?: string;
18
+ /** Directory holding the core's migration files. Defaults to the shipped one. */
19
+ migrationsDir?: string;
20
+ /**
21
+ * Migrations this consumer brings of its own, run after the core's.
22
+ *
23
+ * A package that needs a table has somewhere to put it other than inside the
24
+ * core. Each source namespaces its own version numbers, so the core's next
25
+ * number is not spoken for by somebody else.
26
+ */
27
+ migrations?: ReadonlyArray<{
28
+ name: string;
29
+ dir: string;
30
+ }>;
31
+ }
32
+ export interface DatabaseHandle {
33
+ adapter: DatabaseInstance;
34
+ /** The value `connect()` returned, for callers that still need the raw driver. */
35
+ connection: unknown;
36
+ /** Where this handle actually opened, or a description when the adapter cannot say. */
37
+ dbPath: string;
38
+ close: () => Promise<void>;
39
+ }
40
+ export declare function isTestMode(): boolean;
41
+ /**
42
+ * Declare where this product's live database is, as a resolved absolute path.
43
+ * Call once, before opening anything.
44
+ */
45
+ export declare function declareProductionDatabasePath(value: string): void;
46
+ /** Test seam: forget what was declared. */
47
+ export declare function clearProductionDatabasePaths(): void;
48
+ /**
49
+ * Refuse, in a test process, to open a database nobody named or one a product
50
+ * declared as live.
51
+ *
52
+ * This used to compare against one hard-coded path, `~/.claude/mama-memory.db`, which
53
+ * meant the core held a product's data location in order to protect it. The rule is
54
+ * the same and says no product's name: a test that did not state where it wanted to
55
+ * write is about to write somewhere it did not choose, and that failure surfaces far
56
+ * from its cause.
57
+ */
58
+ export declare function assertTestProcessIsNotUsingRealDb(effectivePath?: string, effectivePathSource?: string): void;
59
+ export declare function resolveAdapterDbPath(adapter: DatabaseInstance): string | undefined;
60
+ /**
61
+ * Open one database: connect, migrate, and verify the embedding scheme.
62
+ *
63
+ * Throws if any step fails. Nothing partially opened is returned, so a caller
64
+ * that receives a handle holds a migrated database it can use.
65
+ */
66
+ export declare function openDatabase(options?: OpenDatabaseOptions): Promise<DatabaseHandle>;
67
+ //# sourceMappingURL=database.d.ts.map