@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,105 @@
1
+ -- Workflow is a core memory kind. Rebuild the constrained projection while
2
+ -- retaining every column, rowid, index, and full-text index trigger.
3
+ DROP TABLE IF EXISTS decisions_w14;
4
+ CREATE TABLE decisions_w14 (
5
+ id TEXT PRIMARY KEY,
6
+ topic TEXT NOT NULL,
7
+ decision TEXT NOT NULL,
8
+ reasoning TEXT,
9
+ outcome TEXT,
10
+ failure_reason TEXT,
11
+ limitation TEXT,
12
+ user_involvement TEXT,
13
+ session_id TEXT,
14
+ supersedes TEXT,
15
+ superseded_by TEXT,
16
+ refined_from TEXT,
17
+ confidence REAL DEFAULT 0.5 CHECK (confidence >= 0.0 AND confidence <= 1.0),
18
+ created_at INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000),
19
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000),
20
+ needs_validation INTEGER DEFAULT 0 CHECK (needs_validation IN (0, 1)),
21
+ validation_attempts INTEGER DEFAULT 0,
22
+ last_validated_at INTEGER,
23
+ usage_count INTEGER DEFAULT 0,
24
+ trust_context TEXT,
25
+ usage_success INTEGER DEFAULT 0,
26
+ usage_failure INTEGER DEFAULT 0,
27
+ time_saved INTEGER DEFAULT 0,
28
+ evidence TEXT,
29
+ alternatives TEXT,
30
+ risks TEXT,
31
+ event_date TEXT,
32
+ kind TEXT DEFAULT 'decision'
33
+ CHECK (kind IN ('decision', 'preference', 'constraint', 'lesson', 'fact', 'task', 'schedule', 'workflow')),
34
+ status TEXT DEFAULT 'active'
35
+ CHECK (status IN ('active', 'superseded', 'contradicted', 'stale')),
36
+ summary TEXT,
37
+ is_static INTEGER DEFAULT 0,
38
+ event_datetime INTEGER,
39
+ agent_id TEXT,
40
+ model_run_id TEXT,
41
+ envelope_hash TEXT,
42
+ gateway_call_id TEXT,
43
+ source_refs_json TEXT,
44
+ provenance_json TEXT,
45
+ item_id TEXT,
46
+ record_kind TEXT NOT NULL DEFAULT 'legacy'
47
+ CHECK (record_kind IN ('legacy', 'judgment', 'commitment')),
48
+ payload_json TEXT NOT NULL DEFAULT '{}'
49
+ CHECK (json_valid(payload_json)),
50
+ applies_from INTEGER,
51
+ applies_until INTEGER,
52
+ duration_days INTEGER
53
+ );
54
+
55
+ INSERT INTO decisions_w14 (
56
+ rowid, id, topic, decision, reasoning, outcome, failure_reason, limitation,
57
+ user_involvement, session_id, supersedes, superseded_by, refined_from, confidence,
58
+ created_at, updated_at, needs_validation, validation_attempts, last_validated_at,
59
+ usage_count, trust_context, usage_success, usage_failure, time_saved, evidence,
60
+ alternatives, risks, event_date, kind, status, summary, is_static, event_datetime,
61
+ agent_id, model_run_id, envelope_hash, gateway_call_id, source_refs_json,
62
+ provenance_json, item_id, record_kind, payload_json, applies_from, applies_until,
63
+ duration_days
64
+ )
65
+ SELECT
66
+ rowid, id, topic, decision, reasoning, outcome, failure_reason, limitation,
67
+ user_involvement, session_id, supersedes, superseded_by, refined_from, confidence,
68
+ created_at, updated_at, needs_validation, validation_attempts, last_validated_at,
69
+ usage_count, trust_context, usage_success, usage_failure, time_saved, evidence,
70
+ alternatives, risks, event_date, kind, status, summary, is_static, event_datetime,
71
+ agent_id, model_run_id, envelope_hash, gateway_call_id, source_refs_json,
72
+ provenance_json, item_id, record_kind, payload_json, applies_from, applies_until,
73
+ duration_days
74
+ FROM decisions;
75
+
76
+ DROP TABLE decisions;
77
+ ALTER TABLE decisions_w14 RENAME TO decisions;
78
+
79
+ CREATE INDEX idx_decisions_event_datetime ON decisions(event_datetime);
80
+ CREATE INDEX idx_decisions_event_datetime_backfill ON decisions(event_datetime);
81
+ CREATE INDEX idx_decisions_envelope_hash ON decisions(envelope_hash);
82
+ CREATE INDEX idx_decisions_model_run_id ON decisions(model_run_id);
83
+ CREATE INDEX idx_decisions_gateway_call_id ON decisions(gateway_call_id);
84
+ CREATE INDEX idx_decisions_item ON decisions(item_id);
85
+
86
+ CREATE TRIGGER decisions_ai AFTER INSERT ON decisions BEGIN
87
+ INSERT INTO decisions_fts(rowid, topic, decision, reasoning)
88
+ VALUES (new.rowid, new.topic, new.decision, new.reasoning);
89
+ END;
90
+ CREATE TRIGGER decisions_ad BEFORE DELETE ON decisions BEGIN
91
+ INSERT INTO decisions_fts(decisions_fts, rowid, topic, decision, reasoning)
92
+ VALUES ('delete', old.rowid, old.topic, old.decision, old.reasoning);
93
+ END;
94
+ CREATE TRIGGER decisions_au BEFORE UPDATE ON decisions BEGIN
95
+ INSERT INTO decisions_fts(decisions_fts, rowid, topic, decision, reasoning)
96
+ VALUES ('delete', old.rowid, old.topic, old.decision, old.reasoning);
97
+ END;
98
+ CREATE TRIGGER decisions_au2 AFTER UPDATE ON decisions BEGIN
99
+ INSERT INTO decisions_fts(rowid, topic, decision, reasoning)
100
+ VALUES (new.rowid, new.topic, new.decision, new.reasoning);
101
+ END;
102
+ INSERT INTO decisions_fts(decisions_fts) VALUES ('rebuild');
103
+
104
+ INSERT OR IGNORE INTO schema_version (version, description)
105
+ VALUES (98, 'Add workflow as a memory kind');
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Action contracts — the one surface CLI/MCP clients call.
3
+ *
4
+ * §4.2: schema, description, examples and the exec binding live in ONE catalog
5
+ * entry; help/schema/examples are generated from the same contract. Input that
6
+ * fails the schema never reaches exec.
7
+ */
8
+ /** JSON-Schema subset the catalog validates against. */
9
+ export interface ActionSchemaObject {
10
+ /** Short caller-facing meaning and example shape for this input field. */
11
+ description?: string;
12
+ type?: 'object' | 'array' | 'string' | 'number' | 'integer' | 'boolean' | 'null';
13
+ properties?: Record<string, ActionSchemaObject>;
14
+ required?: readonly string[];
15
+ additionalProperties?: boolean;
16
+ items?: ActionSchemaObject;
17
+ enum?: readonly unknown[];
18
+ const?: unknown;
19
+ oneOf?: readonly ActionSchemaObject[];
20
+ minimum?: number;
21
+ maximum?: number;
22
+ minLength?: number;
23
+ /** Longest a string value may be. */
24
+ maxLength?: number;
25
+ /** Fewest elements an array value may carry. */
26
+ minItems?: number;
27
+ /** Most elements an array value may carry. */
28
+ maxItems?: number;
29
+ /** Anchored regular expression a string value must match. */
30
+ pattern?: string;
31
+ }
32
+ export interface ActionExample {
33
+ title: string;
34
+ input: Record<string, unknown>;
35
+ }
36
+ /**
37
+ * What `client.describe(action)` returns. Everything a caller needs to build a
38
+ * call — name, summary, input schema, examples — without executing anything.
39
+ */
40
+ export interface ActionContract {
41
+ name: string;
42
+ summary: string;
43
+ inputSchema: ActionSchemaObject;
44
+ examples?: readonly ActionExample[];
45
+ /**
46
+ * This action persists text that a later read can return. Dispatch scans the
47
+ * input of such a call for secret-shaped material and refuses it, because
48
+ * the one real leak path a chat-reachable caller has is writing a secret
49
+ * into something recall will hand back. Declared by the contract rather than
50
+ * listed in dispatch, so a new recallable write cannot be added without
51
+ * saying that it is one.
52
+ */
53
+ recallableWrite?: boolean;
54
+ /**
55
+ * This action reads a raw connector. Dispatch refuses the call unless the
56
+ * principal's grant names that connector.
57
+ *
58
+ * The rule existed before as a host enforcer keyed on tool names, reachable
59
+ * only from the one caller that went through the tool layer. A program
60
+ * calling the same action over the socket carried no envelope and met no
61
+ * check, so the same read was bounded for one caller and unbounded for the
62
+ * other. Declared by the contract for the same reason `recallableWrite` is:
63
+ * a new connector read cannot be added without saying that it is one.
64
+ *
65
+ * `fromInput` names the input field carrying the connector, for an action
66
+ * that reads whichever source it is told to. `fixed` names it outright, for
67
+ * an action that always reads the same one.
68
+ */
69
+ readsConnector?: {
70
+ fromInput: string;
71
+ } | {
72
+ fixed: string;
73
+ };
74
+ }
75
+ /**
76
+ * One call. `operationId` is issued by the common client before the call and,
77
+ * for knowledge commands, becomes the commandId — retransmission reuses it,
78
+ * topic/body similarity is never used to guess sameness.
79
+ */
80
+ export interface ActionCall {
81
+ action: string;
82
+ input?: unknown;
83
+ operationId?: string;
84
+ }
85
+ export type ActionFailureKind = 'unknown_action' | 'invalid_input' | 'denied' | 'failed' | 'internal';
86
+ /**
87
+ * Call-site facts the SERVER side knows — never caller input. Provenance is
88
+ * composed from the call authority plus these facts (§240: provenance is
89
+ * composed from the current call authority); a field stays absent rather than
90
+ * being trusted from
91
+ * the payload. The model run, the tool call, the context packet, and the
92
+ * source turn are all things only the host can truthfully state.
93
+ */
94
+ /** Native harness identity, supplied per call by the transport hook, never action input. */
95
+ export interface NativeToolCaller {
96
+ session_id: string;
97
+ tool_use_id: string;
98
+ agent_id?: string;
99
+ agent_type?: string;
100
+ }
101
+ /** Wire facts carry identity only; the host resolves authority and run provenance. */
102
+ export interface ClientSessionFacts {
103
+ nativeCaller?: NativeToolCaller;
104
+ }
105
+ export interface ActionSessionFacts {
106
+ nativeCaller?: NativeToolCaller;
107
+ /** The model run this call belongs to. */
108
+ modelRunId?: string;
109
+ /** The surface the call arrived on (e.g. 'mama_save'). */
110
+ toolName?: string;
111
+ /** The tool-call id the host issued for this invocation. */
112
+ gatewayCallId?: string;
113
+ /** The verified envelope hash this call ran under — an audit fact, not authority. */
114
+ envelopeHash?: string;
115
+ /** The compiled context packet this call is bound to, if any. */
116
+ contextPacketId?: string;
117
+ /** The conversation turn this call belongs to. */
118
+ sourceTurnId?: string;
119
+ /** The source message ref this call is bound to. */
120
+ sourceMessageRef?: string;
121
+ /** Which lane wrote — 'memory_agent' for the memory lane, else main. */
122
+ actor?: 'memory_agent' | 'main_agent';
123
+ /** Extra source refs the host attests (packet refs, message refs). */
124
+ sourceRefs?: readonly string[];
125
+ /** The workorder attempt this call is bound to, if the host bound one. */
126
+ workorderAttemptId?: number;
127
+ /** The call ran under a member-scope-required envelope — owner actions must refuse. */
128
+ memberScopeRequired?: boolean;
129
+ /** The bounded-run batch this call inherits — effects record it as their cause. */
130
+ causeEventIds?: readonly string[];
131
+ /** The channel this call runs on, if the host bound one. */
132
+ channelId?: string;
133
+ /**
134
+ * Inclusive source-event ceiling for a replay turn. The feeder states this
135
+ * fact; callers cannot widen it through action input. Absent means live time.
136
+ */
137
+ replaySourceEndMs?: number;
138
+ /**
139
+ * The turn's recent conversation, for a checkpoint that hands work over.
140
+ *
141
+ * A host fact and only a host fact: the model does not hold the transcript,
142
+ * so asking it for one asks it to write one. It was an input field that one
143
+ * caller filled from the session store and every other caller left empty.
144
+ */
145
+ recentConversation?: readonly unknown[];
146
+ /**
147
+ * Host-issued wiki workorder range: the owner date and the updated bounds
148
+ * the wiki turn is allowed to touch. An agent cannot mint or widen this; a
149
+ * null field is an honest "not bounded" from the host.
150
+ */
151
+ wikiTaskRange?: {
152
+ ownerDate: string | null;
153
+ rangeStartMs: number | null;
154
+ rangeEndMs: number | null;
155
+ connectors: readonly string[] | null;
156
+ updatedSince: string | null;
157
+ updatedBefore: string | null;
158
+ };
159
+ /**
160
+ * The verified envelope's allowed destinations (e.g. drive roots) — host
161
+ * state for destination-gated reads like source.search's folder resolve.
162
+ */
163
+ allowedDestinations?: readonly {
164
+ kind: string;
165
+ id: string;
166
+ }[];
167
+ /** The host-resolved role name this call runs under (e.g. 'owner_console'). */
168
+ agentRole?: string;
169
+ /**
170
+ * Whose run this is, for the call receipt: owner scope, project and channel.
171
+ *
172
+ * Stated, never derived here. A host that can name all three says so and its
173
+ * calls are attributable; a host that cannot omits the field and its calls are
174
+ * honestly unattributed. Deriving it from `access` would be a second answer to
175
+ * a question the host already answers.
176
+ */
177
+ runEvidenceScope?: {
178
+ ownerScope: string;
179
+ projectId: string;
180
+ channelId?: string | null;
181
+ };
182
+ /** The verified envelope's expiry (ISO) — bounds any capability a host port mints. */
183
+ envelopeExpiresAt?: string;
184
+ }
185
+ export interface ActionFailure {
186
+ kind: ActionFailureKind;
187
+ code: string;
188
+ message: string;
189
+ }
190
+ /**
191
+ * The common result every call returns. `unknown` is reserved for the case the
192
+ * transport loses the answer after a possible commit — dispatch itself only
193
+ * produces `completed` or `failed`.
194
+ */
195
+ /**
196
+ * `experienceRef` points at the call's own receipt, so the agent that made the
197
+ * call can read what the run recorded. It rides the envelope rather than the
198
+ * answer: `data` is the action's shape and a refusal has no `data` at all,
199
+ * while a refusal is exactly the call whose receipt is worth reading.
200
+ */
201
+ export type ActionResult = {
202
+ status: 'completed';
203
+ operationId?: string;
204
+ experienceRef?: string;
205
+ data: unknown;
206
+ } | {
207
+ status: 'failed' | 'unknown';
208
+ operationId?: string;
209
+ experienceRef?: string;
210
+ error: ActionFailure;
211
+ };
212
+ //# sourceMappingURL=action-contracts.d.ts.map
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * Action contracts — the one surface CLI/MCP clients call.
4
+ *
5
+ * §4.2: schema, description, examples and the exec binding live in ONE catalog
6
+ * entry; help/schema/examples are generated from the same contract. Input that
7
+ * fails the schema never reaches exec.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=action-contracts.js.map
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Action catalog — one contract bound to its implementation.
3
+ *
4
+ * §4.2: each entry carries schema, description, examples and exec together; an
5
+ * action that is not implemented is not listed. Legacy name translation lives
6
+ * here exactly once, in the alias table — a retired tool never survives as an
7
+ * alias that calls the old implementation.
8
+ */
9
+ import type { ActionContract, ActionSchemaObject, ActionSessionFacts } from '../action-contracts.js';
10
+ import { type JudgmentAccess } from '../knowledge/judgments.js';
11
+ import type { TextCompletion } from '../runtime/text-completion.js';
12
+ import type { DatabaseInstance } from '../db-manager.js';
13
+ import type { Knowledge } from '../knowledge/index.js';
14
+ import { type ChangesLedger, type EffectAdapter } from '../runtime/operations.js';
15
+ /**
16
+ * Server-side authority for one call — from the session credential, never
17
+ * input. `operationId` is the id the common client issued for this call; for
18
+ * knowledge commands it becomes the commandId, so a command action cannot run
19
+ * without one. `session` carries the call-site facts only the host can
20
+ * truthfully state (model run, tool call id, context packet) — provenance is
21
+ * composed from these plus `access`, never trusted from the payload.
22
+ */
23
+ export interface ActionContext {
24
+ access: JudgmentAccess;
25
+ operationId?: string;
26
+ session?: ActionSessionFacts;
27
+ /**
28
+ * The host-composed read window for citation reads — connector grant,
29
+ * project/tenant filters, and the observation-time clamp the envelope states.
30
+ * Like `access` and `session` it is server-stated, never caller input: the
31
+ * caller can only narrow within it through `input.scopes`, and an absent
32
+ * window fails closed (no connectors means no raw events).
33
+ */
34
+ readAllowance?: MemoryReadAllowance;
35
+ /**
36
+ * Host-bound cancellation handle for long reads/downloads. Absent over
37
+ * transports that cannot carry it — actions must run without it.
38
+ */
39
+ signal?: AbortSignal;
40
+ }
41
+ /**
42
+ * Host-composed visibility window for reads that cite raw events. Every field
43
+ * is derived from envelope state by the host, the same way the reader derives
44
+ * it — the action consumes it as-is rather than trusting payload claims.
45
+ */
46
+ export interface MemoryReadAllowance {
47
+ /** Raw connectors this call may read. Empty means NO raw events, never all. */
48
+ connectors: readonly string[];
49
+ /** Explicit connector-wide reads stated by the principal, independent of tenant scoping. */
50
+ wideConnectors?: readonly string[];
51
+ /** Per-connector channel grant, already narrowed to the envelope's scopes. */
52
+ channels?: Record<string, readonly string[]>;
53
+ /** Project window, mirroring the reader's filter on the same column. */
54
+ projectIds?: readonly string[];
55
+ /** Tenant window for narrower reads; an explicit connector-wide owner grant is separate. */
56
+ tenantId?: string | null;
57
+ /** Observation-time clamp (envelope `as_of`), epoch ms. */
58
+ minObservedMs?: number | null;
59
+ maxObservedMs?: number | null;
60
+ /** Inclusive source/event-time ceiling stated by an active replay turn. */
61
+ maxSourceMs?: number | null;
62
+ }
63
+ export type ActionExec = (input: unknown, context: ActionContext) => unknown | Promise<unknown>;
64
+ export interface ActionRegistration {
65
+ contract: ActionContract;
66
+ exec: ActionExec;
67
+ }
68
+ export declare class UnknownActionError extends Error {
69
+ readonly code = "unknown_action";
70
+ constructor(name: string);
71
+ }
72
+ export interface ActionCatalog {
73
+ /** Every registered contract — the executable surface, nothing more. */
74
+ list(): ActionContract[];
75
+ /** One contract by name or alias; throws UnknownActionError. */
76
+ describe(name: string): ActionContract;
77
+ /** The exec binding by name or alias; throws UnknownActionError. */
78
+ entry(name: string): ActionRegistration;
79
+ }
80
+ export declare function createCatalog(registrations: readonly ActionRegistration[], aliases?: Readonly<Record<string, string>>): ActionCatalog;
81
+ export declare const scopeRefSchema: ActionSchemaObject;
82
+ export declare const recordLinkSchema: ActionSchemaObject;
83
+ /**
84
+ * The actions this build actually implements. `graph.query` reads the twin-edge
85
+ * graph and `graph.identity.correct` is the registry_corrections transaction —
86
+ * the action behind `registry_correct`; the `work.*` commands are the
87
+ * commitment log's public write/read surface — the actions behind `task_create`
88
+ * / `task_update` / `task_reclassify` / `task_list`; `operation.get` is how a
89
+ * caller settles a call whose reply was lost.
90
+ */
91
+ export declare function coreActionRegistrations(knowledge: Knowledge, adapter: DatabaseInstance, deps?: {
92
+ /**
93
+ * The host's effect-ledger read port for `work.changes`. The
94
+ * `evidence_effects` store is host-opened, so the catalog takes the port —
95
+ * absent means the action is absent (the catalog never lists an action it
96
+ * cannot execute).
97
+ */
98
+ effects?: ChangesLedger;
99
+ /**
100
+ * The host's effect-ledger WRITE handle. A recallable write leaves a
101
+ * receipt naming what caused it, so a crash between the write and the
102
+ * batch ACK does not re-run the batch and save the same thing twice. The
103
+ * store is host-opened like the read port above; absent means the write
104
+ * still happens and leaves no receipt, which the coverage count shows.
105
+ */
106
+ effectLedger?: () => EffectAdapter | undefined;
107
+ /**
108
+ * The model the runtime opened, read at call time.
109
+ *
110
+ * A lookup rather than a value because the runtime opens after the catalog
111
+ * is built — the same late binding every other host-opened dependency
112
+ * uses. Absent means this host states no model, and the one action that
113
+ * would ask for one (`memory.search` with `useReranking`) says so instead
114
+ * of opening its own (§2.1).
115
+ */
116
+ runner?: () => TextCompletion | undefined;
117
+ }): ActionRegistration[];
118
+ //# sourceMappingURL=catalog.d.ts.map