@jungjaehoon/mama-core 2.4.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/README.md +76 -239
  2. package/db/migrations/030-case-first-memory-substrate.sql +13 -98
  3. package/db/migrations/034-add-connector-event-scope-columns.sql +9 -13
  4. package/db/migrations/039-add-connector-event-operator-ingest-seq.sql +9 -95
  5. package/db/migrations/062-refresh-connector-event-sequences.sql +9 -113
  6. package/db/migrations/063-refresh-legacy-connector-event-updates.sql +9 -32
  7. package/db/migrations/067-add-connector-event-source-entity-id.sql +9 -13
  8. package/db/migrations/069-create-registry-nodes.sql +52 -0
  9. package/db/migrations/070-record-identity.sql +35 -0
  10. package/db/migrations/071-service-operation-origins.sql +187 -0
  11. package/db/migrations/072-observation-versions.sql +29 -0
  12. package/db/migrations/073-registry-corrections.sql +45 -0
  13. package/db/migrations/074-work-graph-ref-kinds.sql +39 -0
  14. package/db/migrations/075-agent-judgments.sql +58 -0
  15. package/db/migrations/076-scoped-checkpoint-bindings.sql +15 -0
  16. package/db/migrations/077-legacy-record-kind.sql +6 -0
  17. package/db/migrations/078-source-ingest-commands.sql +18 -0
  18. package/db/migrations/079-twin-edge-relations.sql +43 -0
  19. package/db/migrations/080-restore-duration-days.sql +7 -0
  20. package/db/migrations/081-mailbox.sql +61 -0
  21. package/db/migrations/082-commitments-row-id.sql +12 -0
  22. package/db/migrations/083-observation-is-the-evidence.sql +49 -0
  23. package/db/migrations/084-scope-kind-is-not-the-cores-to-list.sql +34 -0
  24. package/db/migrations/085-a-migration-has-a-source.sql +37 -0
  25. package/db/migrations/086-the-mailbox-is-generic.sql +110 -0
  26. package/db/migrations/087-mailbox-payload.sql +5 -0
  27. package/db/migrations/088-native-input-journal.sql +14 -0
  28. package/db/migrations/089-native-turn-receipt-lookup.sql +3 -0
  29. package/db/migrations/090-model-run-native-inputs.sql +29 -0
  30. package/db/migrations/091-native-turn-results.sql +11 -0
  31. package/db/migrations/092-restore-decision-fts.sql +34 -0
  32. package/db/migrations/093-native-turn-primary-kind.sql +14 -0
  33. package/db/migrations/094-commitment-run-provenance.sql +9 -0
  34. package/db/migrations/095-model-run-native-input-identity.sql +39 -0
  35. package/db/migrations/096-drop-connector-event-index-fts.sql +9 -0
  36. package/db/migrations/097-native-input-json-validity.sql +37 -0
  37. package/db/migrations/098-workflow-memory-kind.sql +105 -0
  38. package/db/migrations/099-commitment-revision-graph.sql +2 -0
  39. package/dist/action-contracts.d.ts +212 -0
  40. package/dist/action-contracts.js +10 -0
  41. package/dist/api/catalog.d.ts +118 -0
  42. package/dist/api/catalog.js +1756 -0
  43. package/dist/api/dispatch.d.ts +76 -0
  44. package/dist/api/dispatch.js +372 -0
  45. package/dist/canonicalize.d.ts +2 -2
  46. package/dist/canonicalize.js +3 -3
  47. package/dist/client/client.d.ts +33 -0
  48. package/dist/client/client.js +123 -0
  49. package/dist/client/ipc.d.ts +81 -0
  50. package/dist/client/ipc.js +314 -0
  51. package/dist/db-adapter/base-adapter.d.ts +6 -66
  52. package/dist/db-adapter/base-adapter.js +6 -6
  53. package/dist/db-adapter/index.d.ts +5 -5
  54. package/dist/db-adapter/index.js +2 -5
  55. package/dist/db-adapter/node-sqlite-adapter.d.ts +85 -15
  56. package/dist/db-adapter/node-sqlite-adapter.js +1985 -570
  57. package/dist/db-manager.d.ts +53 -97
  58. package/dist/db-manager.js +121 -603
  59. package/dist/embedding/embedder.d.ts +132 -0
  60. package/dist/embedding/embedder.js +299 -0
  61. package/dist/identity/principal-repository.d.ts +2 -2
  62. package/dist/index.d.ts +43 -58
  63. package/dist/index.js +97 -145
  64. package/dist/{context-compile/channel-grant.d.ts → knowledge/access.d.ts} +12 -17
  65. package/dist/knowledge/access.js +663 -0
  66. package/dist/knowledge/case-errors.d.ts +31 -0
  67. package/dist/knowledge/case-errors.js +40 -0
  68. package/dist/{cases/search-rollup.d.ts → knowledge/case-search-rollup.d.ts} +5 -4
  69. package/dist/{cases/search-rollup.js → knowledge/case-search-rollup.js} +6 -8
  70. package/dist/{cases/store.d.ts → knowledge/case-store.d.ts} +3 -6
  71. package/dist/{cases/store.js → knowledge/case-store.js} +7 -42
  72. package/dist/{cases/timeline-range.d.ts → knowledge/case-timeline-range.d.ts} +3 -3
  73. package/dist/{cases/timeline-range.js → knowledge/case-timeline-range.js} +47 -25
  74. package/dist/{cases/types.d.ts → knowledge/case-types.d.ts} +8 -2
  75. package/dist/{cases/types.js → knowledge/case-types.js} +1 -1
  76. package/dist/knowledge/commitment-revision-migration.d.ts +4 -0
  77. package/dist/knowledge/commitment-revision-migration.js +50 -0
  78. package/dist/knowledge/commitments.d.ts +192 -0
  79. package/dist/knowledge/commitments.js +386 -0
  80. package/dist/knowledge/decision-edges.d.ts +70 -0
  81. package/dist/knowledge/decision-edges.js +123 -0
  82. package/dist/{agent-graph/types.d.ts → knowledge/graph-query.d.ts} +80 -70
  83. package/dist/knowledge/graph-query.js +1585 -0
  84. package/dist/knowledge/identity.d.ts +16 -0
  85. package/dist/knowledge/identity.js +22 -0
  86. package/dist/knowledge/index.d.ts +47 -0
  87. package/dist/knowledge/index.js +90 -0
  88. package/dist/knowledge/judgment-edge.d.ts +6 -0
  89. package/dist/knowledge/judgment-edge.js +22 -0
  90. package/dist/knowledge/judgments.d.ts +118 -0
  91. package/dist/knowledge/judgments.js +802 -0
  92. package/dist/knowledge/observations.d.ts +160 -0
  93. package/dist/knowledge/observations.js +449 -0
  94. package/dist/knowledge/question-type.d.ts +34 -0
  95. package/dist/knowledge/question-type.js +70 -0
  96. package/dist/{search → knowledge}/ranker-features.js +1 -1
  97. package/dist/{search → knowledge}/search-quality.d.ts +0 -1
  98. package/dist/knowledge/search.d.ts +38 -0
  99. package/dist/knowledge/search.js +91 -0
  100. package/dist/knowledge/source-ingest.d.ts +65 -0
  101. package/dist/knowledge/source-ingest.js +174 -0
  102. package/dist/{edges/types.d.ts → knowledge/twin-edge-types.d.ts} +31 -4
  103. package/dist/{edges/types.js → knowledge/twin-edge-types.js} +13 -2
  104. package/dist/knowledge/work-dates.d.ts +49 -0
  105. package/dist/knowledge/work-dates.js +120 -0
  106. package/dist/mama-api.d.ts +114 -778
  107. package/dist/mama-api.js +313 -2461
  108. package/dist/memory/api.d.ts +264 -24
  109. package/dist/memory/api.js +1633 -843
  110. package/dist/memory/bootstrap-builder.d.ts +2 -1
  111. package/dist/memory/bootstrap-builder.js +5 -5
  112. package/dist/memory/channel-summary-state-store.d.ts +3 -2
  113. package/dist/memory/channel-summary-state-store.js +53 -51
  114. package/dist/memory/channel-summary-store.d.ts +5 -3
  115. package/dist/memory/channel-summary-store.js +3 -8
  116. package/dist/memory/dashboard-read.d.ts +46 -0
  117. package/dist/memory/dashboard-read.js +94 -0
  118. package/dist/memory/event-store.d.ts +3 -3
  119. package/dist/memory/event-store.js +3 -10
  120. package/dist/memory/finding-store.d.ts +3 -2
  121. package/dist/memory/finding-store.js +2 -7
  122. package/dist/memory/graph-read.d.ts +52 -0
  123. package/dist/memory/graph-read.js +130 -0
  124. package/dist/memory/judgment-types.d.ts +394 -0
  125. package/dist/memory/judgment-types.js +16 -0
  126. package/dist/memory/provenance-audit.d.ts +5 -2
  127. package/dist/memory/provenance-audit.js +8 -14
  128. package/dist/memory/provenance-live.d.ts +141 -0
  129. package/dist/memory/provenance-live.js +409 -0
  130. package/dist/memory/provenance-query.d.ts +5 -4
  131. package/dist/memory/provenance-query.js +21 -29
  132. package/dist/memory/provenance-resolver.d.ts +191 -0
  133. package/dist/memory/provenance-resolver.js +155 -0
  134. package/dist/memory/provenance.d.ts +1 -11
  135. package/dist/memory/provenance.js +2 -33
  136. package/dist/memory/recall-sanitize.d.ts +55 -0
  137. package/dist/memory/recall-sanitize.js +144 -0
  138. package/dist/memory/secret-filter.d.ts +32 -0
  139. package/dist/memory/secret-filter.js +126 -0
  140. package/dist/memory/truth-store.d.ts +2 -1
  141. package/dist/memory/truth-store.js +1 -4
  142. package/dist/memory/types.d.ts +74 -24
  143. package/dist/memory/types.js +75 -5
  144. package/dist/memory/write-adapters.d.ts +98 -0
  145. package/dist/memory/write-adapters.js +242 -0
  146. package/dist/operations/owner-action-effects.d.ts +53 -0
  147. package/dist/operations/owner-action-effects.js +96 -0
  148. package/dist/provenance/source-ref.d.ts +1 -1
  149. package/dist/provenance/source-ref.js +0 -2
  150. package/dist/registry/corrections.d.ts +31 -0
  151. package/dist/registry/corrections.js +332 -0
  152. package/dist/registry/record-identity.d.ts +49 -0
  153. package/dist/registry/record-identity.js +133 -0
  154. package/dist/registry/store.d.ts +101 -0
  155. package/dist/registry/store.js +395 -0
  156. package/dist/registry/types.d.ts +28 -0
  157. package/dist/registry/types.js +5 -0
  158. package/dist/relevance-scorer.js +2 -2
  159. package/dist/runtime/agent-event-bus.d.ts +50 -0
  160. package/dist/runtime/agent-event-bus.js +101 -0
  161. package/dist/runtime/drivers/claude-cli-wrapper.d.ts +152 -0
  162. package/dist/runtime/drivers/claude-cli-wrapper.js +375 -0
  163. package/dist/runtime/drivers/claude-effort.d.ts +4 -0
  164. package/dist/runtime/drivers/claude-effort.js +16 -0
  165. package/dist/runtime/drivers/cli-arg-redaction.d.ts +2 -0
  166. package/dist/runtime/drivers/cli-arg-redaction.js +18 -0
  167. package/dist/runtime/drivers/cli-secret-redaction.d.ts +17 -0
  168. package/dist/runtime/drivers/cli-secret-redaction.js +126 -0
  169. package/dist/runtime/drivers/codex-app-server-process.d.ts +277 -0
  170. package/dist/runtime/drivers/codex-app-server-process.js +2342 -0
  171. package/dist/runtime/drivers/codex-auxiliary-tools.d.ts +17 -0
  172. package/dist/runtime/drivers/codex-auxiliary-tools.js +267 -0
  173. package/dist/runtime/drivers/codex-home.d.ts +20 -0
  174. package/dist/runtime/drivers/codex-home.js +674 -0
  175. package/dist/runtime/drivers/codex-thread-registry.d.ts +63 -0
  176. package/dist/runtime/drivers/codex-thread-registry.js +433 -0
  177. package/dist/runtime/drivers/persistent-cli-adapter.d.ts +160 -0
  178. package/dist/runtime/drivers/persistent-cli-adapter.js +396 -0
  179. package/dist/runtime/drivers/persistent-cli-process.d.ts +425 -0
  180. package/dist/runtime/drivers/persistent-cli-process.js +1529 -0
  181. package/dist/runtime/drivers/types.d.ts +456 -0
  182. package/dist/runtime/drivers/types.js +110 -0
  183. package/dist/runtime/mailbox.d.ts +223 -0
  184. package/dist/runtime/mailbox.js +582 -0
  185. package/dist/runtime/model-run-store.d.ts +28 -0
  186. package/dist/{model-runs/store.js → runtime/model-run-store.js} +81 -41
  187. package/dist/{model-runs/types.d.ts → runtime/model-run-types.d.ts} +33 -4
  188. package/dist/{model-runs/types.js → runtime/model-run-types.js} +1 -1
  189. package/dist/runtime/native-effect-observer.d.ts +22 -0
  190. package/dist/runtime/native-effect-observer.js +103 -0
  191. package/dist/runtime/native-input-journal.d.ts +46 -0
  192. package/dist/runtime/native-input-journal.js +308 -0
  193. package/dist/runtime/native-prompt.d.ts +118 -0
  194. package/dist/runtime/native-prompt.js +496 -0
  195. package/dist/runtime/native-session.d.ts +10 -0
  196. package/dist/{agent-graph/index.js → runtime/native-session.js} +9 -6
  197. package/dist/runtime/native-tool-trace-observer.d.ts +5 -0
  198. package/dist/runtime/native-tool-trace-observer.js +65 -0
  199. package/dist/runtime/native-turn.d.ts +272 -0
  200. package/dist/runtime/native-turn.js +1041 -0
  201. package/dist/runtime/operations.d.ts +236 -0
  202. package/dist/runtime/operations.js +565 -0
  203. package/dist/runtime/post-tool-handler.d.ts +74 -0
  204. package/dist/runtime/post-tool-handler.js +137 -0
  205. package/dist/runtime/prompt-layers.d.ts +126 -0
  206. package/dist/runtime/prompt-layers.js +239 -0
  207. package/dist/runtime/runtime-process.d.ts +102 -0
  208. package/dist/runtime/runtime-process.js +206 -0
  209. package/dist/runtime/runtime.d.ts +278 -0
  210. package/dist/runtime/runtime.js +563 -0
  211. package/dist/runtime/session-pool.d.ts +176 -0
  212. package/dist/runtime/session-pool.js +369 -0
  213. package/dist/runtime/stimulus-payload.d.ts +5 -0
  214. package/dist/runtime/stimulus-payload.js +50 -0
  215. package/dist/runtime/subagent-bridge.d.ts +24 -0
  216. package/dist/{agent-graph/types.js → runtime/subagent-bridge.js} +1 -1
  217. package/dist/runtime/text-completion.d.ts +22 -0
  218. package/dist/{agent-situation/types.js → runtime/text-completion.js} +1 -1
  219. package/dist/runtime/token-estimator.d.ts +25 -0
  220. package/dist/runtime/token-estimator.js +75 -0
  221. package/dist/runtime/tool-trace-store.d.ts +22 -0
  222. package/dist/{model-runs → runtime}/tool-trace-store.js +46 -27
  223. package/dist/runtime/trace-summary.d.ts +5 -0
  224. package/dist/runtime/trace-summary.js +74 -0
  225. package/dist/runtime/turn-text.d.ts +23 -0
  226. package/dist/runtime/turn-text.js +41 -0
  227. package/dist/storage/database.d.ts +67 -0
  228. package/dist/storage/database.js +158 -0
  229. package/package.json +20 -34
  230. package/dist/agent-graph/alias-write.d.ts +0 -3
  231. package/dist/agent-graph/alias-write.js +0 -234
  232. package/dist/agent-graph/entity-resolve.d.ts +0 -3
  233. package/dist/agent-graph/entity-resolve.js +0 -271
  234. package/dist/agent-graph/errors.d.ts +0 -4
  235. package/dist/agent-graph/errors.js +0 -11
  236. package/dist/agent-graph/graph-query.d.ts +0 -5
  237. package/dist/agent-graph/graph-query.js +0 -360
  238. package/dist/agent-graph/index.d.ts +0 -6
  239. package/dist/agent-situation/builder.d.ts +0 -8
  240. package/dist/agent-situation/builder.js +0 -239
  241. package/dist/agent-situation/cache-key.d.ts +0 -4
  242. package/dist/agent-situation/cache-key.js +0 -64
  243. package/dist/agent-situation/index.d.ts +0 -7
  244. package/dist/agent-situation/index.js +0 -28
  245. package/dist/agent-situation/packet-store.d.ts +0 -27
  246. package/dist/agent-situation/packet-store.js +0 -228
  247. package/dist/agent-situation/ranking-policy.d.ts +0 -18
  248. package/dist/agent-situation/ranking-policy.js +0 -75
  249. package/dist/agent-situation/source-readers.d.ts +0 -52
  250. package/dist/agent-situation/source-readers.js +0 -300
  251. package/dist/agent-situation/types.d.ts +0 -195
  252. package/dist/cases/wiki-page-index.d.ts +0 -37
  253. package/dist/cases/wiki-page-index.js +0 -201
  254. package/dist/config-loader.d.ts +0 -68
  255. package/dist/config-loader.js +0 -239
  256. package/dist/connectors/event-index.d.ts +0 -24
  257. package/dist/connectors/event-index.js +0 -245
  258. package/dist/connectors/raw-query.d.ts +0 -40
  259. package/dist/connectors/raw-query.js +0 -412
  260. package/dist/connectors/types.d.ts +0 -117
  261. package/dist/connectors/types.js +0 -3
  262. package/dist/context-compile/boundary-defaults.d.ts +0 -12
  263. package/dist/context-compile/boundary-defaults.js +0 -105
  264. package/dist/context-compile/channel-grant.js +0 -66
  265. package/dist/context-compile/compiler-policy.d.ts +0 -39
  266. package/dist/context-compile/compiler-policy.js +0 -147
  267. package/dist/context-compile/compiler.d.ts +0 -18
  268. package/dist/context-compile/compiler.js +0 -404
  269. package/dist/context-compile/index.d.ts +0 -10
  270. package/dist/context-compile/index.js +0 -26
  271. package/dist/context-compile/packet-store.d.ts +0 -8
  272. package/dist/context-compile/packet-store.js +0 -239
  273. package/dist/context-compile/ref.d.ts +0 -7
  274. package/dist/context-compile/ref.js +0 -102
  275. package/dist/context-compile/source-readers.d.ts +0 -70
  276. package/dist/context-compile/source-readers.js +0 -840
  277. package/dist/context-compile/types.d.ts +0 -155
  278. package/dist/context-compile/types.js +0 -11
  279. package/dist/context-compile/visibility.d.ts +0 -21
  280. package/dist/context-compile/visibility.js +0 -224
  281. package/dist/decision-tracker.d.ts +0 -206
  282. package/dist/decision-tracker.js +0 -481
  283. package/dist/edges/ref-validation.d.ts +0 -7
  284. package/dist/edges/ref-validation.js +0 -321
  285. package/dist/edges/store.d.ts +0 -8
  286. package/dist/edges/store.js +0 -129
  287. package/dist/embedding-client.d.ts +0 -28
  288. package/dist/embedding-client.js +0 -53
  289. package/dist/embedding-server/index.d.ts +0 -67
  290. package/dist/embedding-server/index.js +0 -405
  291. package/dist/embedding-server/mobile/auth.d.ts +0 -44
  292. package/dist/embedding-server/mobile/auth.js +0 -150
  293. package/dist/embedding-server/mobile/daemon.d.ts +0 -129
  294. package/dist/embedding-server/mobile/daemon.js +0 -313
  295. package/dist/embedding-server/mobile/output-parser.d.ts +0 -115
  296. package/dist/embedding-server/mobile/output-parser.js +0 -241
  297. package/dist/embedding-server/mobile/session-api.d.ts +0 -57
  298. package/dist/embedding-server/mobile/session-api.js +0 -261
  299. package/dist/embedding-server/mobile/session-manager.d.ts +0 -138
  300. package/dist/embedding-server/mobile/session-manager.js +0 -378
  301. package/dist/embedding-server/mobile/websocket-handler.d.ts +0 -137
  302. package/dist/embedding-server/mobile/websocket-handler.js +0 -486
  303. package/dist/embeddings.d.ts +0 -68
  304. package/dist/embeddings.js +0 -244
  305. package/dist/entities/audit-metrics.d.ts +0 -68
  306. package/dist/entities/audit-metrics.js +0 -124
  307. package/dist/entities/candidate-generator.d.ts +0 -8
  308. package/dist/entities/candidate-generator.js +0 -24
  309. package/dist/entities/entity-linked-decision-counts.d.ts +0 -2
  310. package/dist/entities/entity-linked-decision-counts.js +0 -29
  311. package/dist/entities/entity-list.d.ts +0 -22
  312. package/dist/entities/entity-list.js +0 -3
  313. package/dist/entities/entity-orphan-list.d.ts +0 -17
  314. package/dist/entities/entity-orphan-list.js +0 -3
  315. package/dist/entities/entity-search.d.ts +0 -20
  316. package/dist/entities/entity-search.js +0 -3
  317. package/dist/entities/errors.d.ts +0 -55
  318. package/dist/entities/errors.js +0 -100
  319. package/dist/entities/lineage-store.d.ts +0 -28
  320. package/dist/entities/lineage-store.js +0 -204
  321. package/dist/entities/normalization.d.ts +0 -14
  322. package/dist/entities/normalization.js +0 -63
  323. package/dist/entities/policy-store.d.ts +0 -8
  324. package/dist/entities/policy-store.js +0 -75
  325. package/dist/entities/policy-types.d.ts +0 -72
  326. package/dist/entities/policy-types.js +0 -59
  327. package/dist/entities/projection.d.ts +0 -8
  328. package/dist/entities/projection.js +0 -82
  329. package/dist/entities/provenance-query.d.ts +0 -32
  330. package/dist/entities/provenance-query.js +0 -3
  331. package/dist/entities/read-identity.d.ts +0 -31
  332. package/dist/entities/read-identity.js +0 -264
  333. package/dist/entities/recall-bridge.d.ts +0 -5
  334. package/dist/entities/recall-bridge.js +0 -171
  335. package/dist/entities/resolution-engine.d.ts +0 -8
  336. package/dist/entities/resolution-engine.js +0 -3
  337. package/dist/entities/rollback-preview.d.ts +0 -35
  338. package/dist/entities/rollback-preview.js +0 -3
  339. package/dist/entities/source-locator.d.ts +0 -3
  340. package/dist/entities/source-locator.js +0 -32
  341. package/dist/entities/store.d.ts +0 -69
  342. package/dist/entities/store.js +0 -544
  343. package/dist/entities/types.d.ts +0 -166
  344. package/dist/entities/types.js +0 -30
  345. package/dist/memory/extraction-prompt.d.ts +0 -4
  346. package/dist/memory/extraction-prompt.js +0 -89
  347. package/dist/memory/scope-backfill.d.ts +0 -14
  348. package/dist/memory/scope-backfill.js +0 -3
  349. package/dist/memory/scope-store.d.ts +0 -4
  350. package/dist/memory/scope-store.js +0 -9
  351. package/dist/memory-store.d.ts +0 -87
  352. package/dist/memory-store.js +0 -78
  353. package/dist/model-runs/store.d.ts +0 -13
  354. package/dist/model-runs/tool-trace-store.d.ts +0 -8
  355. package/dist/notification-manager.d.ts +0 -7
  356. package/dist/notification-manager.js +0 -12
  357. package/dist/outcome-tracker.d.ts +0 -151
  358. package/dist/outcome-tracker.js +0 -271
  359. package/dist/query-intent.d.ts +0 -23
  360. package/dist/query-intent.js +0 -114
  361. package/dist/runtime/trusted-provenance.d.ts +0 -3
  362. package/dist/runtime/trusted-provenance.js +0 -6
  363. package/dist/search/question-type.d.ts +0 -5
  364. package/dist/search/question-type.js +0 -41
  365. package/dist/test-utils.d.ts +0 -80
  366. package/dist/test-utils.js +0 -218
  367. package/dist/tier-validator.d.ts +0 -43
  368. package/dist/tier-validator.js +0 -159
  369. package/dist/time-formatter.d.ts +0 -25
  370. package/dist/time-formatter.js +0 -93
  371. /package/dist/{search → knowledge}/feedback-store.d.ts +0 -0
  372. /package/dist/{search → knowledge}/feedback-store.js +0 -0
  373. /package/dist/{search → knowledge}/ranker-features.d.ts +0 -0
  374. /package/dist/{search → knowledge}/ranker-rescore.d.ts +0 -0
  375. /package/dist/{search → knowledge}/ranker-rescore.js +0 -0
  376. /package/dist/{search → knowledge}/ranker-trainer.d.ts +0 -0
  377. /package/dist/{search → knowledge}/ranker-trainer.js +0 -0
  378. /package/dist/{search → knowledge}/search-quality.js +0 -0
package/package.json CHANGED
@@ -1,53 +1,39 @@
1
1
  {
2
2
  "name": "@jungjaehoon/mama-core",
3
- "version": "2.4.1",
3
+ "version": "4.1.0",
4
4
  "description": "MAMA Core - Shared modules for Memory-Augmented MCP Assistant",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "exports": {
8
8
  ".": "./dist/index.js",
9
- "./embeddings": "./dist/embeddings.js",
10
- "./embedding-cache": "./dist/embedding-cache.js",
11
- "./embedding-client": "./dist/embedding-client.js",
12
- "./embedding-server": "./dist/embedding-server/index.js",
9
+ "./embeddings": "./dist/embedding/embedder.js",
13
10
  "./memory/types": "./dist/memory/types.js",
14
- "./memory-store": "./dist/memory-store.js",
15
11
  "./db-manager": "./dist/db-manager.js",
16
- "./db-adapter": "./dist/db-adapter/index.js",
17
12
  "./mama-api": "./dist/mama-api.js",
18
- "./config-loader": "./dist/config-loader.js",
19
13
  "./relevance-scorer": "./dist/relevance-scorer.js",
20
- "./decision-tracker": "./dist/decision-tracker.js",
21
14
  "./debug-logger": "./dist/debug-logger.js",
22
15
  "./decision-formatter": "./dist/decision-formatter.js",
23
- "./ollama-client": "./dist/ollama-client.js",
24
16
  "./errors": "./dist/errors.js",
25
- "./time-formatter": "./dist/time-formatter.js",
26
- "./outcome-tracker": "./dist/outcome-tracker.js",
27
- "./query-intent": "./dist/query-intent.js",
28
- "./test-utils": "./dist/test-utils.js",
29
- "./entities/store": "./dist/entities/store.js",
30
- "./entities/candidate-generator": "./dist/entities/candidate-generator.js",
31
17
  "./canonicalize": "./dist/canonicalize.js",
32
- "./cases/types": "./dist/cases/types.js",
33
- "./cases/store": "./dist/cases/store.js",
34
- "./cases/search-rollup": "./dist/cases/search-rollup.js",
35
- "./cases/timeline-range": "./dist/cases/timeline-range.js",
36
- "./cases/wiki-page-index": "./dist/cases/wiki-page-index.js",
37
- "./connectors": "./dist/connectors/event-index.js",
38
- "./connectors/event-index": "./dist/connectors/event-index.js",
39
- "./connectors/raw-query": "./dist/connectors/raw-query.js",
40
- "./connectors/types": "./dist/connectors/types.js",
41
- "./agent-situation": "./dist/agent-situation/index.js",
42
- "./agent-graph": "./dist/agent-graph/index.js",
43
- "./context-compile": "./dist/context-compile/index.js",
18
+ "./connectors": "./dist/knowledge/event-index.js",
19
+ "./connectors/event-index": "./dist/knowledge/event-index.js",
20
+ "./connectors/raw-query": "./dist/knowledge/raw-query.js",
44
21
  "./provenance/source-ref": "./dist/provenance/source-ref.js",
45
- "./edges/types": "./dist/edges/types.js",
46
- "./edges/store": "./dist/edges/store.js",
47
- "./edges/ref-validation": "./dist/edges/ref-validation.js"
22
+ "./registry/store": "./dist/registry/store.js",
23
+ "./operations/owner-action-effects": "./dist/operations/owner-action-effects.js",
24
+ "./knowledge": "./dist/knowledge/index.js",
25
+ "./action-contracts": "./dist/action-contracts.js",
26
+ "./api/catalog": "./dist/api/catalog.js",
27
+ "./api/dispatch": "./dist/api/dispatch.js",
28
+ "./client/client": "./dist/client/client.js",
29
+ "./client/ipc": "./dist/client/ipc.js",
30
+ "./runtime/*": {
31
+ "types": "./dist/runtime/*.d.ts",
32
+ "default": "./dist/runtime/*.js"
33
+ }
48
34
  },
49
35
  "scripts": {
50
- "build": "tsc",
36
+ "build": "node scripts/clean-dist.mjs && tsc",
51
37
  "build:watch": "tsc --watch",
52
38
  "test": "vitest run",
53
39
  "test:watch": "vitest watch",
@@ -83,12 +69,12 @@
83
69
  "dependencies": {
84
70
  "@huggingface/transformers": "^3.8.1",
85
71
  "better-sqlite3": "^12.8.0",
86
- "ws": "^8.19.0"
72
+ "js-tiktoken": "^1.0.21",
73
+ "minimatch": "^10.1.1"
87
74
  },
88
75
  "devDependencies": {
89
76
  "@types/better-sqlite3": "^7.6.13",
90
77
  "@types/node": "^22.0.0",
91
- "@types/ws": "^8.18.1",
92
78
  "typescript": "^5.9.3",
93
79
  "vitest": "^1.0.0"
94
80
  },
@@ -1,3 +0,0 @@
1
- import type { AgentGraphAdapter, AttachEntityAliasWithEdgeInput, AttachEntityAliasWithEdgeResult } from './types.js';
2
- export declare function attachEntityAliasWithEdge(adapter: AgentGraphAdapter, input: AttachEntityAliasWithEdgeInput): AttachEntityAliasWithEdgeResult;
3
- //# sourceMappingURL=alias-write.d.ts.map
@@ -1,234 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.attachEntityAliasWithEdge = attachEntityAliasWithEdge;
4
- const node_crypto_1 = require("node:crypto");
5
- const canonicalize_js_1 = require("../canonicalize.js");
6
- const ref_validation_js_1 = require("../edges/ref-validation.js");
7
- const store_js_1 = require("../edges/store.js");
8
- const types_js_1 = require("../edges/types.js");
9
- const normalization_js_1 = require("../entities/normalization.js");
10
- const store_js_2 = require("../entities/store.js");
11
- const errors_js_1 = require("./errors.js");
12
- const TWIN_REF_KIND_SET = new Set(types_js_1.TWIN_REF_KINDS);
13
- function stableAliasId(input, normalizedLabel) {
14
- const replayKey = replayIdempotencyKey(input);
15
- if (replayKey) {
16
- const hash = (0, node_crypto_1.createHash)('sha256')
17
- .update(`${input.entity_id}\0${normalizedLabel}\0${replayKey}`, 'utf8')
18
- .digest('hex')
19
- .slice(0, 32);
20
- return `alias_${hash}`;
21
- }
22
- return `alias_${(0, node_crypto_1.randomUUID)().replace(/-/g, '')}`;
23
- }
24
- function replayIdempotencyKey(input) {
25
- return input.edge_idempotency_key ?? input.request_idempotency_key;
26
- }
27
- function loadAlias(adapter, aliasId) {
28
- const row = adapter.prepare('SELECT * FROM entity_aliases WHERE id = ?').get(aliasId);
29
- if (!row) {
30
- throw new Error(`Entity alias was not written: ${aliasId}`);
31
- }
32
- return {
33
- id: String(row.id),
34
- entity_id: String(row.entity_id),
35
- label: String(row.label),
36
- normalized_label: String(row.normalized_label),
37
- lang: typeof row.lang === 'string' ? row.lang : null,
38
- script: typeof row.script === 'string' ? row.script : null,
39
- label_type: row.label_type,
40
- source_type: String(row.source_type),
41
- source_ref: typeof row.source_ref === 'string' ? row.source_ref : null,
42
- confidence: typeof row.confidence === 'number' ? row.confidence : null,
43
- status: row.status,
44
- created_at: Number(row.created_at),
45
- };
46
- }
47
- function normalizeConfidence(value) {
48
- if (value === undefined || value === null) {
49
- return 1;
50
- }
51
- if (typeof value === 'number' && Number.isFinite(value) && value >= 0 && value <= 1) {
52
- return value;
53
- }
54
- throw new errors_js_1.AgentGraphValidationError(`confidence must be between 0 and 1: ${String(value)}`);
55
- }
56
- function selectExistingAliasEdge(adapter, modelRunId, edgeIdempotencyKey) {
57
- if (!edgeIdempotencyKey) {
58
- return null;
59
- }
60
- const row = adapter
61
- .prepare(`
62
- SELECT *
63
- FROM twin_edges
64
- WHERE model_run_id = ?
65
- AND edge_idempotency_key = ?
66
- LIMIT 1
67
- `)
68
- .get(modelRunId, edgeIdempotencyKey);
69
- return row ? (0, store_js_1.mapTwinEdgeRow)(row) : null;
70
- }
71
- function normalizeSourceRefs(sourceRefs) {
72
- if (!sourceRefs || sourceRefs.length === 0) {
73
- return [];
74
- }
75
- const refs = [];
76
- const seen = new Set();
77
- for (const ref of sourceRefs) {
78
- if (!ref ||
79
- typeof ref !== 'object' ||
80
- typeof ref.kind !== 'string' ||
81
- typeof ref.id !== 'string' ||
82
- ref.id.trim().length === 0 ||
83
- !TWIN_REF_KIND_SET.has(ref.kind)) {
84
- throw new errors_js_1.AgentGraphValidationError('source_refs must be TwinRef objects with kind and id.');
85
- }
86
- const normalized = { kind: ref.kind, id: ref.id.trim() };
87
- const key = `${normalized.kind}:${normalized.id}`;
88
- if (!seen.has(key)) {
89
- seen.add(key);
90
- refs.push(normalized);
91
- }
92
- }
93
- return refs.sort((left, right) => `${left.kind}:${left.id}`.localeCompare(`${right.kind}:${right.id}`));
94
- }
95
- function expectedRelationAttrs(alias, sourceRefs) {
96
- const attrs = {
97
- alias_id: alias.id,
98
- label: alias.label,
99
- normalized_label: alias.normalized_label,
100
- lang: alias.lang,
101
- script: alias.script,
102
- label_type: alias.label_type,
103
- };
104
- if (sourceRefs.length > 0) {
105
- attrs.source_refs = sourceRefs.map((ref) => ({ kind: ref.kind, id: ref.id }));
106
- }
107
- return attrs;
108
- }
109
- function assertAliasReplayMatches(alias, input, normalized, confidence) {
110
- const expectedScript = input.script ?? normalized.script;
111
- const expectedLabelType = input.label_type ?? 'alt';
112
- const expectedSourceRef = input.source_ref ?? null;
113
- const matches = alias.entity_id === input.entity_id &&
114
- alias.label === input.label &&
115
- alias.normalized_label === normalized.normalized &&
116
- alias.lang === (input.lang ?? null) &&
117
- alias.script === expectedScript &&
118
- alias.label_type === expectedLabelType &&
119
- alias.source_type === input.source_type &&
120
- alias.source_ref === expectedSourceRef &&
121
- alias.confidence === confidence &&
122
- alias.status === 'active';
123
- if (!matches) {
124
- throw new errors_js_1.AgentGraphValidationError(`Conflicting entity alias replay for request idempotency key: ${replayIdempotencyKey(input)}`);
125
- }
126
- }
127
- function assertAliasEdgeReplayMatches(edge, input, alias, confidence, edgeIdempotencyKey, sourceRefs) {
128
- const matches = edge.edge_type === 'alias_of' &&
129
- edge.subject_ref.kind === 'entity' &&
130
- edge.subject_ref.id === input.entity_id &&
131
- edge.object_ref.kind === 'entity' &&
132
- edge.object_ref.id === input.entity_id &&
133
- edge.relation_attrs_json === (0, canonicalize_js_1.canonicalizeJSON)(expectedRelationAttrs(alias, sourceRefs)) &&
134
- edge.confidence === confidence &&
135
- edge.source === 'agent' &&
136
- edge.agent_id === input.agent_id &&
137
- edge.model_run_id === input.model_run_id &&
138
- edge.envelope_hash === input.envelope_hash &&
139
- edge.request_idempotency_key === (input.request_idempotency_key ?? null) &&
140
- edge.edge_idempotency_key === (edgeIdempotencyKey ?? null);
141
- if (!matches) {
142
- throw new errors_js_1.AgentGraphValidationError(`Conflicting alias edge replay for request idempotency key: ${replayIdempotencyKey(input)}`);
143
- }
144
- }
145
- function insertAliasEdge(adapter, input, alias, confidence, sourceRefs) {
146
- const edgeIdempotencyKey = replayIdempotencyKey(input);
147
- const existing = selectExistingAliasEdge(adapter, input.model_run_id, edgeIdempotencyKey);
148
- const edgeId = `edge_${(0, node_crypto_1.randomUUID)().replace(/-/g, '')}`;
149
- const relationAttrs = expectedRelationAttrs(alias, sourceRefs);
150
- const relationAttrsJson = (0, canonicalize_js_1.canonicalizeJSON)(relationAttrs);
151
- if (existing) {
152
- assertAliasEdgeReplayMatches(existing, input, alias, confidence, edgeIdempotencyKey, sourceRefs);
153
- return existing;
154
- }
155
- const contentHash = (0, node_crypto_1.createHash)('sha256')
156
- .update((0, canonicalize_js_1.canonicalizeJSON)({
157
- edge_type: 'alias_of',
158
- subject_ref: { kind: 'entity', id: input.entity_id },
159
- object_ref: { kind: 'entity', id: input.entity_id },
160
- relation_attrs_json: relationAttrsJson,
161
- confidence,
162
- source: 'agent',
163
- agent_id: input.agent_id,
164
- model_run_id: input.model_run_id,
165
- envelope_hash: input.envelope_hash,
166
- }), 'utf8')
167
- .digest();
168
- adapter
169
- .prepare(`
170
- INSERT INTO twin_edges (
171
- edge_id, edge_type, subject_kind, subject_id, object_kind, object_id,
172
- relation_attrs_json, confidence, source, agent_id, model_run_id, envelope_hash,
173
- request_idempotency_key, edge_idempotency_key, content_hash, created_at
174
- )
175
- VALUES (?, 'alias_of', 'entity', ?, 'entity', ?, ?, ?, 'agent', ?, ?, ?, ?, ?, ?, ?)
176
- `)
177
- .run(edgeId, input.entity_id, input.entity_id, relationAttrsJson, confidence, input.agent_id, input.model_run_id, input.envelope_hash, input.request_idempotency_key ?? null, edgeIdempotencyKey ?? null, contentHash, Date.now());
178
- const row = adapter.prepare('SELECT * FROM twin_edges WHERE edge_id = ?').get(edgeId);
179
- if (!row) {
180
- throw new Error(`Entity alias edge was not written: ${edgeId}`);
181
- }
182
- return (0, store_js_1.mapTwinEdgeRow)(row);
183
- }
184
- function attachEntityAliasWithEdge(adapter, input) {
185
- const entity = (0, store_js_2.getEntityNode)(input.entity_id, adapter);
186
- if (!entity || entity.status !== 'active') {
187
- throw new errors_js_1.AgentGraphValidationError(`Active entity not found: ${input.entity_id}`);
188
- }
189
- const visibility = {
190
- scopes: input.scopes,
191
- connectors: input.connectors,
192
- projectRefs: input.project_refs,
193
- tenantId: input.tenant_id,
194
- // source_refs are caller-supplied, so this is the surface where naming a raw id from
195
- // an ungranted channel would bind it to an entity the caller can read back.
196
- ...(input.channels ? { channels: input.channels } : {}),
197
- };
198
- const sourceRefs = normalizeSourceRefs(input.source_refs);
199
- if (sourceRefs.length === 0) {
200
- throw new errors_js_1.AgentGraphValidationError('source_refs must include at least one visible source.');
201
- }
202
- try {
203
- (0, ref_validation_js_1.assertTwinRefsVisible)(adapter, [{ kind: 'entity', id: input.entity_id }, ...sourceRefs], visibility);
204
- }
205
- catch (error) {
206
- throw new errors_js_1.AgentGraphValidationError(error instanceof Error ? error.message : String(error));
207
- }
208
- let normalized;
209
- try {
210
- normalized = (0, normalization_js_1.normalizeEntityLabel)(input.label);
211
- }
212
- catch (error) {
213
- throw new errors_js_1.AgentGraphValidationError(error instanceof Error ? error.message : String(error));
214
- }
215
- const confidence = normalizeConfidence(input.confidence);
216
- const aliasId = stableAliasId(input, normalized.normalized);
217
- const createdAt = Date.now();
218
- return adapter.transaction(() => {
219
- adapter
220
- .prepare(`
221
- INSERT OR IGNORE INTO entity_aliases (
222
- id, entity_id, label, normalized_label, lang, script, label_type,
223
- source_type, source_ref, confidence, status, created_at
224
- )
225
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'active', ?)
226
- `)
227
- .run(aliasId, input.entity_id, input.label, normalized.normalized, input.lang ?? null, input.script ?? normalized.script, input.label_type ?? 'alt', input.source_type, input.source_ref ?? null, confidence, createdAt);
228
- const alias = loadAlias(adapter, aliasId);
229
- assertAliasReplayMatches(alias, input, normalized, confidence);
230
- const edge = insertAliasEdge(adapter, input, alias, confidence, sourceRefs);
231
- return { alias, edge };
232
- });
233
- }
234
- //# sourceMappingURL=alias-write.js.map
@@ -1,3 +0,0 @@
1
- import type { AgentGraphAdapter, ResolveEntityInput, ResolveEntityResult } from './types.js';
2
- export declare function resolveEntity(adapter: AgentGraphAdapter, input: ResolveEntityInput): ResolveEntityResult;
3
- //# sourceMappingURL=entity-resolve.d.ts.map
@@ -1,271 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveEntity = resolveEntity;
4
- const ref_validation_js_1 = require("../edges/ref-validation.js");
5
- const normalization_js_1 = require("../entities/normalization.js");
6
- const store_js_1 = require("../entities/store.js");
7
- const types_js_1 = require("../edges/types.js");
8
- const errors_js_1 = require("./errors.js");
9
- const TWIN_REF_KIND_SET = new Set(types_js_1.TWIN_REF_KINDS);
10
- function hasScopes(scopes) {
11
- return Array.isArray(scopes) && scopes.length > 0;
12
- }
13
- function normalizeLabel(value) {
14
- try {
15
- return (0, normalization_js_1.normalizeEntityLabel)(value).normalized;
16
- }
17
- catch (error) {
18
- throw new errors_js_1.AgentGraphValidationError(error instanceof Error ? error.message : String(error));
19
- }
20
- }
21
- function entityVisible(entity, scopes) {
22
- if (!hasScopes(scopes)) {
23
- return true;
24
- }
25
- return scopes.some((scope) => entity.scope_kind === scope.kind && entity.scope_id === scope.id);
26
- }
27
- function isAtOrBeforeAsOf(value, asOfMs) {
28
- return typeof asOfMs !== 'number' || value <= asOfMs;
29
- }
30
- function scopeVisible(scopeKind, scopeId, scopes) {
31
- if (!hasScopes(scopes)) {
32
- return true;
33
- }
34
- return scopes.some((scope) => scope.kind === scopeKind && scope.id === scopeId);
35
- }
36
- function connectorVisible(connector, connectors) {
37
- return !connectors || connectors.length === 0 || connectors.includes(connector);
38
- }
39
- function hasProjectOrTenantFilter(visibility) {
40
- return ((Array.isArray(visibility.projectRefs) && visibility.projectRefs.length > 0) ||
41
- (typeof visibility.tenantId === 'string' && visibility.tenantId.length > 0));
42
- }
43
- function refsVisible(adapter, refs, visibility) {
44
- if (refs.length === 0) {
45
- return true;
46
- }
47
- try {
48
- (0, ref_validation_js_1.assertTwinRefsVisible)(adapter, refs, visibility);
49
- return true;
50
- }
51
- catch {
52
- return false;
53
- }
54
- }
55
- function parseSourceRefs(value, context) {
56
- if (value === undefined || value === null) {
57
- return [];
58
- }
59
- if (!Array.isArray(value)) {
60
- throw new Error(`${context}.source_refs must be an array.`);
61
- }
62
- const refs = [];
63
- for (const item of value) {
64
- if (item === null ||
65
- typeof item !== 'object' ||
66
- typeof item.kind !== 'string' ||
67
- typeof item.id !== 'string') {
68
- throw new Error(`${context}.source_refs entries must be TwinRef objects.`);
69
- }
70
- const kind = item.kind;
71
- const id = item.id.trim();
72
- if (!TWIN_REF_KIND_SET.has(kind) || id.length === 0) {
73
- throw new Error(`${context}.source_refs contains an invalid TwinRef.`);
74
- }
75
- refs.push({ kind, id });
76
- }
77
- return refs;
78
- }
79
- function aliasSourceRefs(adapter, aliasId, entityId) {
80
- const rows = adapter
81
- .prepare(`
82
- SELECT relation_attrs_json
83
- FROM twin_edges
84
- WHERE edge_type = 'alias_of'
85
- AND subject_kind = 'entity'
86
- AND subject_id = ?
87
- AND object_kind = 'entity'
88
- AND object_id = ?
89
- AND relation_attrs_json IS NOT NULL
90
- ORDER BY created_at DESC, edge_id ASC
91
- `)
92
- .all(entityId, entityId);
93
- const refs = [];
94
- const seen = new Set();
95
- for (const row of rows) {
96
- if (!row.relation_attrs_json) {
97
- continue;
98
- }
99
- const parsed = JSON.parse(row.relation_attrs_json);
100
- if (parsed === null ||
101
- typeof parsed !== 'object' ||
102
- parsed.alias_id !== aliasId) {
103
- continue;
104
- }
105
- for (const ref of parseSourceRefs(parsed.source_refs, `alias ${aliasId}`)) {
106
- const key = `${ref.kind}:${ref.id}`;
107
- if (!seen.has(key)) {
108
- seen.add(key);
109
- refs.push(ref);
110
- }
111
- }
112
- }
113
- return refs;
114
- }
115
- function aliasVisible(adapter, row, visibility, asOfMs) {
116
- if (!isAtOrBeforeAsOf(row.created_at, asOfMs)) {
117
- return false;
118
- }
119
- const sourceRefs = aliasSourceRefs(adapter, row.id, row.entity_id);
120
- if (row.source_type === 'agent' && sourceRefs.length === 0) {
121
- return false;
122
- }
123
- return refsVisible(adapter, sourceRefs, visibility);
124
- }
125
- function rawRefForObservation(adapter, row) {
126
- const raw = adapter
127
- .prepare(`
128
- SELECT event_index_id
129
- FROM connector_event_index
130
- WHERE event_index_id = ?
131
- OR (source_connector = ? AND source_id = ?)
132
- ORDER BY CASE WHEN event_index_id = ? THEN 0 ELSE 1 END
133
- LIMIT 1
134
- `)
135
- .get(row.source_raw_record_id, row.source_connector, row.source_raw_record_id, row.source_raw_record_id);
136
- return raw ? { kind: 'raw', id: raw.event_index_id } : null;
137
- }
138
- function observationVisible(adapter, row, visibility, asOfMs) {
139
- if (!isAtOrBeforeAsOf(row.timestamp_observed ?? row.created_at, asOfMs)) {
140
- return false;
141
- }
142
- if (!scopeVisible(row.scope_kind, row.scope_id, visibility.scopes)) {
143
- return false;
144
- }
145
- if (!connectorVisible(row.source_connector, visibility.connectors)) {
146
- return false;
147
- }
148
- const rawRef = rawRefForObservation(adapter, row);
149
- if (!rawRef) {
150
- return !hasProjectOrTenantFilter(visibility);
151
- }
152
- return refsVisible(adapter, [rawRef], visibility);
153
- }
154
- function canonicalEntity(adapter, entityId) {
155
- try {
156
- const canonicalId = (0, store_js_1.resolveCanonicalEntityId)(adapter, entityId);
157
- const entity = (0, store_js_1.getEntityNode)(canonicalId, adapter);
158
- return entity && entity.status === 'active' ? entity : null;
159
- }
160
- catch (error) {
161
- if (error instanceof store_js_1.EntityMergeError) {
162
- throw new errors_js_1.AgentGraphValidationError(`${error.code}: ${error.message}`);
163
- }
164
- throw error;
165
- }
166
- }
167
- function contextBoost(adapter, entityId, contextRefs, visibility, asOfMs) {
168
- if (!contextRefs || contextRefs.length === 0) {
169
- return 0;
170
- }
171
- // Spread rather than re-list: see graph-query's listFilteredEdges.
172
- const edges = (0, ref_validation_js_1.listVisibleTwinEdgesForRefs)(adapter, contextRefs, { ...visibility, asOfMs });
173
- return edges.some((edge) => (edge.subject_ref.kind === 'entity' && edge.subject_ref.id === entityId) ||
174
- (edge.object_ref.kind === 'entity' && edge.object_ref.id === entityId))
175
- ? 0.2
176
- : 0;
177
- }
178
- function resolveEntity(adapter, input) {
179
- const normalized = normalizeLabel(input.label);
180
- const limit = Math.max(1, Math.floor(input.limit ?? 5));
181
- const visibility = {
182
- scopes: input.scopes,
183
- connectors: input.connectors,
184
- projectRefs: input.project_refs,
185
- tenantId: input.tenant_id,
186
- asOfMs: input.as_of_ms,
187
- ...(input.channels ? { channels: input.channels } : {}),
188
- };
189
- if (input.context_refs && input.context_refs.length > 0) {
190
- try {
191
- (0, ref_validation_js_1.assertTwinRefsVisible)(adapter, input.context_refs, visibility);
192
- }
193
- catch (error) {
194
- throw new errors_js_1.AgentGraphValidationError(error instanceof Error ? error.message : String(error));
195
- }
196
- }
197
- const candidates = new Map();
198
- const recordCandidate = (entityId, matchedLabel, matchSource, baseScore) => {
199
- const entity = canonicalEntity(adapter, entityId);
200
- if (!entity ||
201
- !entityVisible(entity, input.scopes) ||
202
- !isAtOrBeforeAsOf(entity.created_at, input.as_of_ms)) {
203
- return;
204
- }
205
- const score = baseScore + contextBoost(adapter, entity.id, input.context_refs, visibility, input.as_of_ms);
206
- const existing = candidates.get(entity.id);
207
- if (!existing || score > existing.score) {
208
- candidates.set(entity.id, {
209
- entity,
210
- matched_label: matchedLabel,
211
- match_source: matchSource,
212
- score,
213
- });
214
- }
215
- };
216
- const nodeRows = adapter
217
- .prepare(`
218
- SELECT id, preferred_label
219
- FROM entity_nodes
220
- WHERE status = 'active'
221
- `)
222
- .all();
223
- for (const row of nodeRows) {
224
- if (normalizeLabel(row.preferred_label) === normalized) {
225
- recordCandidate(row.id, row.preferred_label, 'preferred_label', 1);
226
- }
227
- }
228
- const aliasRows = adapter
229
- .prepare(`
230
- SELECT id, entity_id, label, normalized_label, source_type, created_at
231
- FROM entity_aliases
232
- WHERE status = 'active'
233
- `)
234
- .all();
235
- for (const row of aliasRows) {
236
- if (aliasVisible(adapter, row, visibility, input.as_of_ms) &&
237
- (row.normalized_label === normalized || normalizeLabel(row.label) === normalized)) {
238
- recordCandidate(row.entity_id, row.label, 'alias', 0.95);
239
- }
240
- }
241
- const observationRows = adapter
242
- .prepare(`
243
- SELECT
244
- l.canonical_entity_id, o.surface_form, o.normalized_form,
245
- o.scope_kind, o.scope_id, o.source_connector, o.source_raw_record_id,
246
- o.timestamp_observed, o.created_at
247
- FROM entity_lineage_links l
248
- JOIN entity_observations o ON o.id = l.entity_observation_id
249
- WHERE l.status = 'active'
250
- `)
251
- .all();
252
- for (const row of observationRows) {
253
- if (observationVisible(adapter, row, visibility, input.as_of_ms) &&
254
- (row.normalized_form === normalized || normalizeLabel(row.surface_form) === normalized)) {
255
- recordCandidate(row.canonical_entity_id, row.surface_form, 'observation', 0.85);
256
- }
257
- }
258
- const sorted = Array.from(candidates.values())
259
- .sort((left, right) => {
260
- if (right.score !== left.score) {
261
- return right.score - left.score;
262
- }
263
- return left.entity.id.localeCompare(right.entity.id);
264
- })
265
- .slice(0, limit);
266
- return {
267
- entity: sorted[0]?.entity ?? null,
268
- candidates: sorted,
269
- };
270
- }
271
- //# sourceMappingURL=entity-resolve.js.map
@@ -1,4 +0,0 @@
1
- export declare class AgentGraphValidationError extends Error {
2
- constructor(message: string);
3
- }
4
- //# sourceMappingURL=errors.d.ts.map
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AgentGraphValidationError = void 0;
4
- class AgentGraphValidationError extends Error {
5
- constructor(message) {
6
- super(message);
7
- this.name = 'AgentGraphValidationError';
8
- }
9
- }
10
- exports.AgentGraphValidationError = AgentGraphValidationError;
11
- //# sourceMappingURL=errors.js.map
@@ -1,5 +0,0 @@
1
- import type { AgentGraphAdapter, AgentGraphResult, GraphNeighborhoodInput, GraphPathsInput, GraphPathsResult, GraphTimelineInput, GraphTimelineResult } from './types.js';
2
- export declare function getGraphNeighborhood(adapter: AgentGraphAdapter, input: GraphNeighborhoodInput): AgentGraphResult;
3
- export declare function getGraphPaths(adapter: AgentGraphAdapter, input: GraphPathsInput): GraphPathsResult;
4
- export declare function getGraphTimeline(adapter: AgentGraphAdapter, input: GraphTimelineInput): GraphTimelineResult;
5
- //# sourceMappingURL=graph-query.d.ts.map