bikky 0.3.1 → 0.3.3

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 (342) hide show
  1. package/README.md +124 -35
  2. package/dist/cli.d.ts +1 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +7 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/config.d.ts +22 -3
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +61 -6
  9. package/dist/config.js.map +1 -1
  10. package/dist/config.test.js +17 -9
  11. package/dist/config.test.js.map +1 -1
  12. package/dist/daemon/capture-policy.d.ts +95 -0
  13. package/dist/daemon/capture-policy.d.ts.map +1 -0
  14. package/dist/daemon/capture-policy.js +139 -0
  15. package/dist/daemon/capture-policy.js.map +1 -0
  16. package/dist/daemon/capture-policy.test.d.ts +2 -0
  17. package/dist/daemon/capture-policy.test.d.ts.map +1 -0
  18. package/dist/daemon/capture-policy.test.js +46 -0
  19. package/dist/daemon/capture-policy.test.js.map +1 -0
  20. package/dist/daemon/consolidation.d.ts.map +1 -1
  21. package/dist/daemon/consolidation.js +84 -98
  22. package/dist/daemon/consolidation.js.map +1 -1
  23. package/dist/daemon/episode-summary.d.ts +72 -0
  24. package/dist/daemon/episode-summary.d.ts.map +1 -0
  25. package/dist/daemon/episode-summary.js +208 -0
  26. package/dist/daemon/episode-summary.js.map +1 -0
  27. package/dist/daemon/episode-summary.test.d.ts +2 -0
  28. package/dist/daemon/episode-summary.test.d.ts.map +1 -0
  29. package/dist/daemon/episode-summary.test.js +101 -0
  30. package/dist/daemon/episode-summary.test.js.map +1 -0
  31. package/dist/daemon/extraction.d.ts +25 -0
  32. package/dist/daemon/extraction.d.ts.map +1 -1
  33. package/dist/daemon/extraction.js +244 -124
  34. package/dist/daemon/extraction.js.map +1 -1
  35. package/dist/daemon/extraction.test.d.ts +2 -0
  36. package/dist/daemon/extraction.test.d.ts.map +1 -0
  37. package/dist/daemon/extraction.test.js +106 -0
  38. package/dist/daemon/extraction.test.js.map +1 -0
  39. package/dist/daemon/loop.d.ts.map +1 -1
  40. package/dist/daemon/loop.js +8 -6
  41. package/dist/daemon/loop.js.map +1 -1
  42. package/dist/daemon/qdrant.d.ts +59 -8
  43. package/dist/daemon/qdrant.d.ts.map +1 -1
  44. package/dist/daemon/qdrant.js +74 -23
  45. package/dist/daemon/qdrant.js.map +1 -1
  46. package/dist/daemon/qdrant.test.js +2 -2
  47. package/dist/daemon/qdrant.test.js.map +1 -1
  48. package/dist/daemon/relations.d.ts +6 -1
  49. package/dist/daemon/relations.d.ts.map +1 -1
  50. package/dist/daemon/relations.js +44 -63
  51. package/dist/daemon/relations.js.map +1 -1
  52. package/dist/daemon/session-index.d.ts +60 -0
  53. package/dist/daemon/session-index.d.ts.map +1 -0
  54. package/dist/daemon/session-index.js +136 -0
  55. package/dist/daemon/session-index.js.map +1 -0
  56. package/dist/daemon/session-index.test.d.ts +2 -0
  57. package/dist/daemon/session-index.test.d.ts.map +1 -0
  58. package/dist/daemon/session-index.test.js +54 -0
  59. package/dist/daemon/session-index.test.js.map +1 -0
  60. package/dist/daemon/session-summary.d.ts +69 -0
  61. package/dist/daemon/session-summary.d.ts.map +1 -0
  62. package/dist/daemon/session-summary.js +200 -0
  63. package/dist/daemon/session-summary.js.map +1 -0
  64. package/dist/daemon/session-summary.test.d.ts +2 -0
  65. package/dist/daemon/session-summary.test.d.ts.map +1 -0
  66. package/dist/daemon/session-summary.test.js +160 -0
  67. package/dist/daemon/session-summary.test.js.map +1 -0
  68. package/dist/daemon/staleness.test.d.ts +7 -0
  69. package/dist/daemon/staleness.test.d.ts.map +1 -0
  70. package/dist/daemon/staleness.test.js +128 -0
  71. package/dist/daemon/staleness.test.js.map +1 -0
  72. package/dist/daemon/workstream-summary.d.ts +61 -0
  73. package/dist/daemon/workstream-summary.d.ts.map +1 -0
  74. package/dist/daemon/workstream-summary.js +220 -0
  75. package/dist/daemon/workstream-summary.js.map +1 -0
  76. package/dist/daemon/workstream-summary.test.d.ts +2 -0
  77. package/dist/daemon/workstream-summary.test.d.ts.map +1 -0
  78. package/dist/daemon/workstream-summary.test.js +86 -0
  79. package/dist/daemon/workstream-summary.test.js.map +1 -0
  80. package/dist/lib/qdrant-client.d.ts +6 -1
  81. package/dist/lib/qdrant-client.d.ts.map +1 -1
  82. package/dist/lib/qdrant-client.js +3 -4
  83. package/dist/lib/qdrant-client.js.map +1 -1
  84. package/dist/lib/qdrant-client.test.js +21 -2
  85. package/dist/lib/qdrant-client.test.js.map +1 -1
  86. package/dist/lifecycle.test.d.ts +8 -0
  87. package/dist/lifecycle.test.d.ts.map +1 -0
  88. package/dist/lifecycle.test.js +74 -0
  89. package/dist/lifecycle.test.js.map +1 -0
  90. package/dist/llm/embedding/index.d.ts +42 -0
  91. package/dist/llm/embedding/index.d.ts.map +1 -0
  92. package/dist/llm/embedding/index.js +78 -0
  93. package/dist/llm/embedding/index.js.map +1 -0
  94. package/dist/llm/embedding/index.test.d.ts +8 -0
  95. package/dist/llm/embedding/index.test.d.ts.map +1 -0
  96. package/dist/llm/embedding/index.test.js +100 -0
  97. package/dist/llm/embedding/index.test.js.map +1 -0
  98. package/dist/llm/embedding/providers/bedrock.d.ts +16 -0
  99. package/dist/llm/embedding/providers/bedrock.d.ts.map +1 -0
  100. package/dist/llm/embedding/providers/bedrock.js +90 -0
  101. package/dist/llm/embedding/providers/bedrock.js.map +1 -0
  102. package/dist/llm/embedding/providers/bedrock.test.d.ts +2 -0
  103. package/dist/llm/embedding/providers/bedrock.test.d.ts.map +1 -0
  104. package/dist/llm/embedding/providers/bedrock.test.js +24 -0
  105. package/dist/llm/embedding/providers/bedrock.test.js.map +1 -0
  106. package/dist/llm/embedding/providers/index.d.ts +9 -0
  107. package/dist/llm/embedding/providers/index.d.ts.map +1 -0
  108. package/dist/llm/embedding/providers/index.js +9 -0
  109. package/dist/llm/embedding/providers/index.js.map +1 -0
  110. package/dist/llm/embedding/providers/ollama.d.ts +6 -0
  111. package/dist/llm/embedding/providers/ollama.d.ts.map +1 -0
  112. package/dist/llm/embedding/providers/ollama.js +39 -0
  113. package/dist/llm/embedding/providers/ollama.js.map +1 -0
  114. package/dist/llm/embedding/providers/ollama.test.d.ts +2 -0
  115. package/dist/llm/embedding/providers/ollama.test.d.ts.map +1 -0
  116. package/dist/llm/embedding/providers/ollama.test.js +54 -0
  117. package/dist/llm/embedding/providers/ollama.test.js.map +1 -0
  118. package/dist/llm/embedding/providers/openai.d.ts +6 -0
  119. package/dist/llm/embedding/providers/openai.d.ts.map +1 -0
  120. package/dist/llm/embedding/providers/openai.js +44 -0
  121. package/dist/llm/embedding/providers/openai.js.map +1 -0
  122. package/dist/llm/embedding/providers/openai.test.d.ts +2 -0
  123. package/dist/llm/embedding/providers/openai.test.d.ts.map +1 -0
  124. package/dist/llm/embedding/providers/openai.test.js +48 -0
  125. package/dist/llm/embedding/providers/openai.test.js.map +1 -0
  126. package/dist/llm/embedding/providers/portkey.d.ts +15 -0
  127. package/dist/llm/embedding/providers/portkey.d.ts.map +1 -0
  128. package/dist/llm/embedding/providers/portkey.js +58 -0
  129. package/dist/llm/embedding/providers/portkey.js.map +1 -0
  130. package/dist/llm/embedding/providers/portkey.test.d.ts +2 -0
  131. package/dist/llm/embedding/providers/portkey.test.d.ts.map +1 -0
  132. package/dist/llm/embedding/providers/portkey.test.js +56 -0
  133. package/dist/llm/embedding/providers/portkey.test.js.map +1 -0
  134. package/dist/llm/embedding/registry.d.ts +14 -0
  135. package/dist/llm/embedding/registry.d.ts.map +1 -0
  136. package/dist/llm/embedding/registry.js +27 -0
  137. package/dist/llm/embedding/registry.js.map +1 -0
  138. package/dist/llm/embedding/registry.test.d.ts +7 -0
  139. package/dist/llm/embedding/registry.test.d.ts.map +1 -0
  140. package/dist/llm/embedding/registry.test.js +68 -0
  141. package/dist/llm/embedding/registry.test.js.map +1 -0
  142. package/dist/llm/embedding/types.d.ts +55 -0
  143. package/dist/llm/embedding/types.d.ts.map +1 -0
  144. package/dist/llm/embedding/types.js +12 -0
  145. package/dist/llm/embedding/types.js.map +1 -0
  146. package/dist/llm/errors.d.ts +95 -0
  147. package/dist/llm/errors.d.ts.map +1 -0
  148. package/dist/llm/errors.js +164 -0
  149. package/dist/llm/errors.js.map +1 -0
  150. package/dist/llm/errors.test.d.ts +2 -0
  151. package/dist/llm/errors.test.d.ts.map +1 -0
  152. package/dist/llm/errors.test.js +103 -0
  153. package/dist/llm/errors.test.js.map +1 -0
  154. package/dist/llm/fetch.d.ts +39 -0
  155. package/dist/llm/fetch.d.ts.map +1 -0
  156. package/dist/llm/fetch.js +52 -0
  157. package/dist/llm/fetch.js.map +1 -0
  158. package/dist/llm/index.d.ts +6 -3
  159. package/dist/llm/index.d.ts.map +1 -1
  160. package/dist/llm/index.js +2 -2
  161. package/dist/llm/index.js.map +1 -1
  162. package/dist/llm/inference/index.d.ts +39 -0
  163. package/dist/llm/inference/index.d.ts.map +1 -0
  164. package/dist/llm/inference/index.js +118 -0
  165. package/dist/llm/inference/index.js.map +1 -0
  166. package/dist/llm/inference/index.test.d.ts +6 -0
  167. package/dist/llm/inference/index.test.d.ts.map +1 -0
  168. package/dist/llm/inference/index.test.js +109 -0
  169. package/dist/llm/inference/index.test.js.map +1 -0
  170. package/dist/llm/inference/providers/bedrock.d.ts +18 -0
  171. package/dist/llm/inference/providers/bedrock.d.ts.map +1 -0
  172. package/dist/llm/inference/providers/bedrock.js +105 -0
  173. package/dist/llm/inference/providers/bedrock.js.map +1 -0
  174. package/dist/llm/inference/providers/bedrock.test.d.ts +2 -0
  175. package/dist/llm/inference/providers/bedrock.test.d.ts.map +1 -0
  176. package/dist/llm/inference/providers/bedrock.test.js +21 -0
  177. package/dist/llm/inference/providers/bedrock.test.js.map +1 -0
  178. package/dist/llm/inference/providers/index.d.ts +10 -0
  179. package/dist/llm/inference/providers/index.d.ts.map +1 -0
  180. package/dist/llm/inference/providers/index.js +10 -0
  181. package/dist/llm/inference/providers/index.js.map +1 -0
  182. package/dist/llm/inference/providers/ollama.d.ts +8 -0
  183. package/dist/llm/inference/providers/ollama.d.ts.map +1 -0
  184. package/dist/llm/inference/providers/ollama.js +63 -0
  185. package/dist/llm/inference/providers/ollama.js.map +1 -0
  186. package/dist/llm/inference/providers/ollama.test.d.ts +2 -0
  187. package/dist/llm/inference/providers/ollama.test.d.ts.map +1 -0
  188. package/dist/llm/inference/providers/ollama.test.js +57 -0
  189. package/dist/llm/inference/providers/ollama.test.js.map +1 -0
  190. package/dist/llm/inference/providers/openai.d.ts +11 -0
  191. package/dist/llm/inference/providers/openai.d.ts.map +1 -0
  192. package/dist/llm/inference/providers/openai.js +73 -0
  193. package/dist/llm/inference/providers/openai.js.map +1 -0
  194. package/dist/llm/inference/providers/openai.test.d.ts +2 -0
  195. package/dist/llm/inference/providers/openai.test.d.ts.map +1 -0
  196. package/dist/llm/inference/providers/openai.test.js +46 -0
  197. package/dist/llm/inference/providers/openai.test.js.map +1 -0
  198. package/dist/llm/inference/providers/portkey.d.ts +13 -0
  199. package/dist/llm/inference/providers/portkey.d.ts.map +1 -0
  200. package/dist/llm/inference/providers/portkey.js +80 -0
  201. package/dist/llm/inference/providers/portkey.js.map +1 -0
  202. package/dist/llm/inference/providers/portkey.test.d.ts +2 -0
  203. package/dist/llm/inference/providers/portkey.test.d.ts.map +1 -0
  204. package/dist/llm/inference/providers/portkey.test.js +48 -0
  205. package/dist/llm/inference/providers/portkey.test.js.map +1 -0
  206. package/dist/llm/inference/registry.d.ts +15 -0
  207. package/dist/llm/inference/registry.d.ts.map +1 -0
  208. package/dist/llm/inference/registry.js +28 -0
  209. package/dist/llm/inference/registry.js.map +1 -0
  210. package/dist/llm/inference/registry.test.d.ts +6 -0
  211. package/dist/llm/inference/registry.test.d.ts.map +1 -0
  212. package/dist/llm/inference/registry.test.js +63 -0
  213. package/dist/llm/inference/registry.test.js.map +1 -0
  214. package/dist/llm/inference/types.d.ts +84 -0
  215. package/dist/llm/inference/types.d.ts.map +1 -0
  216. package/dist/llm/inference/types.js +9 -0
  217. package/dist/llm/inference/types.js.map +1 -0
  218. package/dist/llm/telemetry.d.ts +25 -0
  219. package/dist/llm/telemetry.d.ts.map +1 -0
  220. package/dist/llm/telemetry.js +43 -0
  221. package/dist/llm/telemetry.js.map +1 -0
  222. package/dist/llm/telemetry.test.d.ts +5 -0
  223. package/dist/llm/telemetry.test.d.ts.map +1 -0
  224. package/dist/llm/telemetry.test.js +89 -0
  225. package/dist/llm/telemetry.test.js.map +1 -0
  226. package/dist/llm/types.d.ts +4 -37
  227. package/dist/llm/types.d.ts.map +1 -1
  228. package/dist/llm/types.js +4 -1
  229. package/dist/llm/types.js.map +1 -1
  230. package/dist/logger.d.ts +18 -3
  231. package/dist/logger.d.ts.map +1 -1
  232. package/dist/logger.js +102 -20
  233. package/dist/logger.js.map +1 -1
  234. package/dist/logger.test.d.ts +5 -0
  235. package/dist/logger.test.d.ts.map +1 -0
  236. package/dist/logger.test.js +103 -0
  237. package/dist/logger.test.js.map +1 -0
  238. package/dist/mcp/api.d.ts +15 -1
  239. package/dist/mcp/api.d.ts.map +1 -1
  240. package/dist/mcp/api.js +44 -19
  241. package/dist/mcp/api.js.map +1 -1
  242. package/dist/mcp/api.test.d.ts +6 -0
  243. package/dist/mcp/api.test.d.ts.map +1 -0
  244. package/dist/mcp/api.test.js +130 -0
  245. package/dist/mcp/api.test.js.map +1 -0
  246. package/dist/mcp/helpers.d.ts +1 -0
  247. package/dist/mcp/helpers.d.ts.map +1 -1
  248. package/dist/mcp/helpers.js +62 -6
  249. package/dist/mcp/helpers.js.map +1 -1
  250. package/dist/mcp/helpers.test.js +71 -10
  251. package/dist/mcp/helpers.test.js.map +1 -1
  252. package/dist/mcp/index.d.ts +7 -1
  253. package/dist/mcp/index.d.ts.map +1 -1
  254. package/dist/mcp/index.js +46 -21
  255. package/dist/mcp/index.js.map +1 -1
  256. package/dist/mcp/taxonomy.d.ts +251 -31
  257. package/dist/mcp/taxonomy.d.ts.map +1 -1
  258. package/dist/mcp/taxonomy.js +603 -171
  259. package/dist/mcp/taxonomy.js.map +1 -1
  260. package/dist/mcp/taxonomy.test.d.ts +1 -1
  261. package/dist/mcp/taxonomy.test.js +141 -302
  262. package/dist/mcp/taxonomy.test.js.map +1 -1
  263. package/dist/mcp/tools.d.ts +1 -1
  264. package/dist/mcp/tools.d.ts.map +1 -1
  265. package/dist/mcp/tools.integration.itest.d.ts +23 -0
  266. package/dist/mcp/tools.integration.itest.d.ts.map +1 -0
  267. package/dist/mcp/tools.integration.itest.js +172 -0
  268. package/dist/mcp/tools.integration.itest.js.map +1 -0
  269. package/dist/mcp/tools.js +422 -357
  270. package/dist/mcp/tools.js.map +1 -1
  271. package/dist/mcp/tools.test.d.ts +16 -0
  272. package/dist/mcp/tools.test.d.ts.map +1 -0
  273. package/dist/mcp/tools.test.js +472 -0
  274. package/dist/mcp/tools.test.js.map +1 -0
  275. package/dist/mcp/types.d.ts +63 -8
  276. package/dist/mcp/types.d.ts.map +1 -1
  277. package/dist/prompts/brief.d.ts +19 -0
  278. package/dist/prompts/brief.d.ts.map +1 -0
  279. package/dist/prompts/brief.js +67 -0
  280. package/dist/prompts/brief.js.map +1 -0
  281. package/dist/prompts/contradiction.d.ts +24 -0
  282. package/dist/prompts/contradiction.d.ts.map +1 -0
  283. package/dist/prompts/contradiction.js +73 -0
  284. package/dist/prompts/contradiction.js.map +1 -0
  285. package/dist/prompts/distill.d.ts +21 -0
  286. package/dist/prompts/distill.d.ts.map +1 -0
  287. package/dist/prompts/distill.js +92 -0
  288. package/dist/prompts/distill.js.map +1 -0
  289. package/dist/prompts/episode-summary.d.ts +15 -0
  290. package/dist/prompts/episode-summary.d.ts.map +1 -0
  291. package/dist/prompts/episode-summary.js +60 -0
  292. package/dist/prompts/episode-summary.js.map +1 -0
  293. package/dist/prompts/extraction.d.ts +14 -0
  294. package/dist/prompts/extraction.d.ts.map +1 -0
  295. package/dist/prompts/extraction.js +110 -0
  296. package/dist/prompts/extraction.js.map +1 -0
  297. package/dist/prompts/index.d.ts +52 -0
  298. package/dist/prompts/index.d.ts.map +1 -0
  299. package/dist/prompts/index.js +104 -0
  300. package/dist/prompts/index.js.map +1 -0
  301. package/dist/prompts/prompts.test.d.ts +8 -0
  302. package/dist/prompts/prompts.test.d.ts.map +1 -0
  303. package/dist/prompts/prompts.test.js +140 -0
  304. package/dist/prompts/prompts.test.js.map +1 -0
  305. package/dist/prompts/relations.d.ts +17 -0
  306. package/dist/prompts/relations.d.ts.map +1 -0
  307. package/dist/prompts/relations.js +72 -0
  308. package/dist/prompts/relations.js.map +1 -0
  309. package/dist/prompts/workstream-summary.d.ts +17 -0
  310. package/dist/prompts/workstream-summary.d.ts.map +1 -0
  311. package/dist/prompts/workstream-summary.js +72 -0
  312. package/dist/prompts/workstream-summary.js.map +1 -0
  313. package/dist/render.d.ts +41 -0
  314. package/dist/render.d.ts.map +1 -0
  315. package/dist/render.js +185 -0
  316. package/dist/render.js.map +1 -0
  317. package/dist/render.test.d.ts +8 -0
  318. package/dist/render.test.d.ts.map +1 -0
  319. package/dist/render.test.js +243 -0
  320. package/dist/render.test.js.map +1 -0
  321. package/docs/diagrams/architecture.svg +87 -0
  322. package/docs/diagrams/team-memory.svg +250 -0
  323. package/docs/screenshots/dashboard.png +0 -0
  324. package/docs/screenshots/graph.png +0 -0
  325. package/docs/screenshots/memory.png +0 -0
  326. package/package.json +12 -3
  327. package/dist/llm/embedding.d.ts +0 -13
  328. package/dist/llm/embedding.d.ts.map +0 -1
  329. package/dist/llm/embedding.js +0 -127
  330. package/dist/llm/embedding.js.map +0 -1
  331. package/dist/llm/embedding.test.d.ts +0 -8
  332. package/dist/llm/embedding.test.d.ts.map +0 -1
  333. package/dist/llm/embedding.test.js +0 -117
  334. package/dist/llm/embedding.test.js.map +0 -1
  335. package/dist/llm/inference.d.ts +0 -12
  336. package/dist/llm/inference.d.ts.map +0 -1
  337. package/dist/llm/inference.js +0 -146
  338. package/dist/llm/inference.js.map +0 -1
  339. package/dist/llm/inference.test.d.ts +0 -8
  340. package/dist/llm/inference.test.d.ts.map +0 -1
  341. package/dist/llm/inference.test.js +0 -117
  342. package/dist/llm/inference.test.js.map +0 -1
@@ -0,0 +1,472 @@
1
+ /**
2
+ * Integration tests for the MCP tool handlers in tools.ts.
3
+ *
4
+ * tools.ts registers all tool handlers inside `registerTools(mcp)`. To exercise
5
+ * them without a live MCP server we use a minimal fake McpServer that captures
6
+ * each `tool(name, desc, schema, handler)` registration into a map. Tests then
7
+ * invoke handlers directly with mocked fetch responses for Qdrant + embedding.
8
+ *
9
+ * Covers the data-integrity + recall surface:
10
+ * - memory_store: hash dedup, vector dedup, supersedes, relation insertion
11
+ * - memory_recall: filter passthrough, graph_depth=1 traversal, ranking
12
+ * - memory_entity: facts + relations aggregation with dedup
13
+ * - memory_forget: marks fact as superseded with reason
14
+ */
15
+ import { describe, it, before, beforeEach, after } from "node:test";
16
+ import assert from "node:assert/strict";
17
+ import { registerTools } from "./tools.js";
18
+ import { setQdrantUrl, setQdrantApiKey, setReady, setCollection, initEmbedding, } from "./api.js";
19
+ import { THRESHOLD_DUPLICATE, THRESHOLD_RELATED } from "./taxonomy.js";
20
+ function makeFakeServer() {
21
+ const handlers = new Map();
22
+ const server = {
23
+ tool(name, _desc, _schema, handler) {
24
+ handlers.set(name, handler);
25
+ },
26
+ };
27
+ return { server, handlers };
28
+ }
29
+ const realFetch = globalThis.fetch;
30
+ let calls;
31
+ let responders;
32
+ function installFetchMock() {
33
+ calls = [];
34
+ responders = [];
35
+ globalThis.fetch = (async (input, init) => {
36
+ const url = typeof input === "string" ? input : input.toString();
37
+ const body = init?.body ? JSON.parse(String(init.body)) : null;
38
+ const call = { url, method: init?.method ?? "GET", body };
39
+ calls.push(call);
40
+ for (const r of responders) {
41
+ const matches = typeof r.match === "string" ? url.includes(r.match) : r.match.test(url);
42
+ if (matches) {
43
+ const data = r.respond(call);
44
+ return new Response(JSON.stringify(data), {
45
+ status: 200,
46
+ headers: { "Content-Type": "application/json" },
47
+ });
48
+ }
49
+ }
50
+ // Default: empty success.
51
+ return new Response(JSON.stringify({ status: "ok", result: null }), { status: 200 });
52
+ });
53
+ }
54
+ function on(match, respond) {
55
+ responders.push({ match, respond });
56
+ }
57
+ function callsTo(match) {
58
+ return calls.filter((c) => typeof match === "string" ? c.url.includes(match) : match.test(c.url));
59
+ }
60
+ // ---------------------------------------------------------------------------
61
+ // Suite setup
62
+ // ---------------------------------------------------------------------------
63
+ let handlers;
64
+ async function invoke(name, args) {
65
+ const h = handlers.get(name);
66
+ if (!h)
67
+ throw new Error(`Handler '${name}' not registered`);
68
+ return h(args);
69
+ }
70
+ function textOf(result) {
71
+ return result.content[0]?.text ?? "";
72
+ }
73
+ describe("mcp/tools handlers", () => {
74
+ before(() => {
75
+ setQdrantUrl("https://qdrant.test:6333");
76
+ setQdrantApiKey("test-key");
77
+ setCollection("bikky-test");
78
+ setReady(true);
79
+ initEmbedding({
80
+ provider: "ollama",
81
+ baseUrl: "http://embed.test:11434",
82
+ model: "test-model",
83
+ dimensions: 4,
84
+ apiKey: null,
85
+ });
86
+ const fake = makeFakeServer();
87
+ // The real registerTools expects an McpServer; the only methods used are
88
+ // `tool(...)` so the fake is structurally compatible at runtime.
89
+ registerTools(fake.server);
90
+ handlers = fake.handlers;
91
+ });
92
+ beforeEach(() => {
93
+ installFetchMock();
94
+ // Always provide an embedding for any embed() call.
95
+ on("/v1/embeddings", () => ({ data: [{ embedding: [0.1, 0.2, 0.3, 0.4] }] }));
96
+ });
97
+ after(() => {
98
+ globalThis.fetch = realFetch;
99
+ setReady(false);
100
+ setQdrantUrl(null);
101
+ setQdrantApiKey(null);
102
+ });
103
+ // ─────────────────────────────────────────────────────────────────────────
104
+ // Tool registration sanity
105
+ // ─────────────────────────────────────────────────────────────────────────
106
+ it("registers all expected memory tools", () => {
107
+ for (const name of [
108
+ "memory_store",
109
+ "memory_recall",
110
+ "memory_entity",
111
+ "memory_relations",
112
+ "memory_forget",
113
+ "memory_verify",
114
+ "memory_review",
115
+ "memory_heartbeat",
116
+ ]) {
117
+ assert.ok(handlers.has(name), `expected handler '${name}' to be registered`);
118
+ }
119
+ });
120
+ // ─────────────────────────────────────────────────────────────────────────
121
+ // memory_store — dedup + insertion pipeline
122
+ // ─────────────────────────────────────────────────────────────────────────
123
+ describe("memory_store", () => {
124
+ it("reinforces an exact content-hash match without re-embedding", async () => {
125
+ on("/points/scroll", () => ({
126
+ result: {
127
+ points: [{
128
+ id: "existing-1",
129
+ payload: { content: "x", category: "infrastructure", reinforcement_count: 2 },
130
+ }],
131
+ },
132
+ }));
133
+ let setPayloadBody = null;
134
+ on("/points/payload", (call) => {
135
+ setPayloadBody = call.body;
136
+ return { status: "ok" };
137
+ });
138
+ const result = await invoke("memory_store", {
139
+ content: "qdrant runs on port 6333",
140
+ category: "infrastructure",
141
+ entities: ["qdrant"],
142
+ });
143
+ const parsed = JSON.parse(textOf(result));
144
+ assert.equal(parsed.action, "reinforced");
145
+ assert.equal(parsed.fact_id, "existing-1");
146
+ assert.equal(parsed.reinforcement_count, 3);
147
+ assert.deepEqual(setPayloadBody.points, ["existing-1"]);
148
+ // Hash dedup hits before embedding.
149
+ assert.equal(callsTo("/v1/embeddings").length, 0);
150
+ // Hash dedup hits before semantic search.
151
+ assert.equal(callsTo("/points/search").length, 0);
152
+ });
153
+ it("reinforces when semantic similarity exceeds THRESHOLD_DUPLICATE", async () => {
154
+ on("/points/scroll", () => ({ result: { points: [] } })); // no hash hit
155
+ on("/points/search", () => ({
156
+ result: [{
157
+ id: "near-dup",
158
+ score: THRESHOLD_DUPLICATE + 0.01,
159
+ payload: { content: "near", category: "infrastructure", reinforcement_count: 1 },
160
+ }],
161
+ }));
162
+ on("/points/payload", () => ({ status: "ok" }));
163
+ const result = await invoke("memory_store", {
164
+ content: "qdrant listens on 6333",
165
+ category: "infrastructure",
166
+ entities: ["qdrant"],
167
+ });
168
+ const parsed = JSON.parse(textOf(result));
169
+ assert.equal(parsed.action, "reinforced");
170
+ assert.equal(parsed.fact_id, "near-dup");
171
+ assert.equal(parsed.reinforcement_count, 2);
172
+ assert.ok(parsed.similarity > THRESHOLD_DUPLICATE);
173
+ // Should not insert a new point.
174
+ assert.equal(callsTo(/\/points$/).length, 0);
175
+ });
176
+ it("inserts a new point when no duplicates are found", async () => {
177
+ on("/points/scroll", () => ({ result: { points: [] } }));
178
+ on("/points/search", () => ({ result: [] }));
179
+ let upsertBody = null;
180
+ on(/\/points$/, (call) => {
181
+ if (call.method === "PUT")
182
+ upsertBody = call.body;
183
+ return { status: "ok" };
184
+ });
185
+ const result = await invoke("memory_store", {
186
+ content: "platform is on AWS",
187
+ category: "infrastructure",
188
+ entities: ["Platform"],
189
+ importance: 0.7,
190
+ });
191
+ const parsed = JSON.parse(textOf(result));
192
+ assert.equal(parsed.action, "inserted");
193
+ assert.ok(parsed.fact_id, "should return a generated fact_id");
194
+ assert.ok(upsertBody, "expected an upsert PUT to /points");
195
+ const pt = upsertBody.points[0];
196
+ assert.equal(pt.payload.content, "platform is on AWS");
197
+ assert.deepEqual(pt.payload.entities, ["platform"]); // lowercased
198
+ assert.equal(pt.payload.reinforcement_count, 1);
199
+ assert.equal(pt.payload.importance, 0.7);
200
+ assert.ok(pt.payload.content_hash, "content_hash should be set");
201
+ assert.equal(pt.payload.superseded_by, null);
202
+ });
203
+ it("flags potential conflicts when similarity is in the related band with shared entities", async () => {
204
+ on("/points/scroll", () => ({ result: { points: [] } }));
205
+ const related = (THRESHOLD_RELATED + THRESHOLD_DUPLICATE) / 2;
206
+ on("/points/search", () => ({
207
+ result: [{
208
+ id: "related-1",
209
+ score: related,
210
+ payload: {
211
+ content: "old fact about platform",
212
+ category: "infrastructure",
213
+ entities: ["platform"],
214
+ },
215
+ }],
216
+ }));
217
+ on(/\/points$/, () => ({ status: "ok" }));
218
+ const result = await invoke("memory_store", {
219
+ content: "new fact about platform",
220
+ category: "infrastructure",
221
+ entities: ["platform"],
222
+ });
223
+ const parsed = JSON.parse(textOf(result));
224
+ assert.equal(parsed.action, "inserted");
225
+ assert.ok(Array.isArray(parsed.similar_facts) && parsed.similar_facts.length === 1);
226
+ assert.ok(Array.isArray(parsed.potential_conflicts) && parsed.potential_conflicts.length === 1);
227
+ assert.deepEqual(parsed.potential_conflicts[0].shared_entities, ["platform"]);
228
+ assert.ok(parsed.conflict_hint, "conflict_hint should be present");
229
+ });
230
+ it("supersedes the prior fact when supersedes is provided", async () => {
231
+ on("/points/scroll", () => ({ result: { points: [] } }));
232
+ on("/points/search", () => ({ result: [] }));
233
+ const payloadCalls = [];
234
+ on("/points/payload", (call) => {
235
+ payloadCalls.push(call.body);
236
+ return { status: "ok" };
237
+ });
238
+ on(/\/points$/, (call) => {
239
+ // POST without `points` key = qdrantGetPoints (lookup of supersedes target)
240
+ const body = call.body;
241
+ if (call.method === "POST" && !body.points) {
242
+ return { result: [{ id: "old-fact-id", payload: { content: "old fact" } }] };
243
+ }
244
+ return { status: "ok" };
245
+ });
246
+ const result = await invoke("memory_store", {
247
+ content: "qdrant now on 7000",
248
+ category: "infrastructure",
249
+ entities: ["qdrant"],
250
+ supersedes: "old-fact-id",
251
+ });
252
+ const parsed = JSON.parse(textOf(result));
253
+ assert.equal(parsed.action, "inserted");
254
+ assert.equal(payloadCalls.length, 1);
255
+ const supersedeCall = payloadCalls[0];
256
+ assert.deepEqual(supersedeCall.points, ["old-fact-id"]);
257
+ assert.equal(supersedeCall.payload.superseded_by, parsed.fact_id);
258
+ assert.ok(supersedeCall.payload.superseded_at);
259
+ });
260
+ it("inserts a relation point alongside the fact when relation is provided", async () => {
261
+ on("/points/scroll", () => ({ result: { points: [] } }));
262
+ on("/points/search", () => ({ result: [] }));
263
+ const upserts = [];
264
+ on(/\/points$/, (call) => {
265
+ if (call.method === "PUT")
266
+ upserts.push(call.body);
267
+ return { status: "ok" };
268
+ });
269
+ const result = await invoke("memory_store", {
270
+ content: "saber owns platform",
271
+ category: "team",
272
+ entities: ["saber", "platform"],
273
+ relation: { from: "Saber", type: "Owns", to: "Platform" },
274
+ });
275
+ const parsed = JSON.parse(textOf(result));
276
+ assert.equal(parsed.action, "inserted");
277
+ assert.ok(parsed.relation_id, "relation_id should be returned");
278
+ // First upsert is the fact, second is the relation.
279
+ assert.equal(upserts.length, 2);
280
+ const relPt = upserts[1].points[0];
281
+ assert.equal(relPt.payload.kind, "relation");
282
+ assert.equal(relPt.payload.from_entity, "saber");
283
+ assert.equal(relPt.payload.to_entity, "platform");
284
+ assert.equal(relPt.payload.relation_type, "owns");
285
+ assert.deepEqual(relPt.payload.entities, ["saber", "platform"]);
286
+ });
287
+ });
288
+ // ─────────────────────────────────────────────────────────────────────────
289
+ // memory_recall — filter composition + graph_depth
290
+ // ─────────────────────────────────────────────────────────────────────────
291
+ describe("memory_recall", () => {
292
+ it("returns 'No matching facts found' when search returns no results", async () => {
293
+ on("/points/search", () => ({ result: [] }));
294
+ const result = await invoke("memory_recall", { query: "nothing" });
295
+ assert.match(textOf(result), /No matching facts found/);
296
+ });
297
+ it("passes category, domain, kind, entity, since, until, and metadata into the Qdrant filter", async () => {
298
+ let searchBody = null;
299
+ on("/points/search", (call) => {
300
+ searchBody = call.body;
301
+ return { result: [] };
302
+ });
303
+ await invoke("memory_recall", {
304
+ query: "q",
305
+ category: "infrastructure",
306
+ domain: "work",
307
+ kind: "fact",
308
+ entity: "Qdrant",
309
+ since: "2025-01-01T00:00:00Z",
310
+ until: "2025-12-31T00:00:00Z",
311
+ metadata_filter: { project: "bikky" },
312
+ });
313
+ assert.ok(searchBody);
314
+ const filter = searchBody.filter;
315
+ const must = filter.must;
316
+ // excludeSuperseded → adds `is_null` condition into `must`.
317
+ assert.ok(must.some((c) => c.is_null?.key === "superseded_by"), "expected an is_null:superseded_by condition in must");
318
+ // Field filters present in `must`.
319
+ const keys = must.map((c) => c.key ?? "").filter(Boolean);
320
+ for (const k of ["category", "domain", "kind", "entities", "created_at", "metadata.project"]) {
321
+ assert.ok(keys.includes(k), `expected filter.must to contain key=${k}; got ${keys.join(",")}`);
322
+ }
323
+ // Entity is lowercased.
324
+ const entityCond = must.find((c) => c.key === "entities");
325
+ assert.equal(entityCond.match.value, "qdrant");
326
+ });
327
+ it("ranks results by combined score and slices to limit", async () => {
328
+ // Three points: low score should win after combined weighting only if
329
+ // freshness/reinforcement compensate; we just verify deterministic order
330
+ // with three scores and limit=2.
331
+ on("/points/search", () => ({
332
+ result: [
333
+ { id: "a", score: 0.6, payload: { content: "A", category: "infrastructure", entities: [], reinforcement_count: 1, confidence: 0.9, importance: 0.5, created_at: new Date().toISOString() } },
334
+ { id: "b", score: 0.9, payload: { content: "B", category: "infrastructure", entities: [], reinforcement_count: 1, confidence: 0.9, importance: 0.5, created_at: new Date().toISOString() } },
335
+ { id: "c", score: 0.75, payload: { content: "C", category: "infrastructure", entities: [], reinforcement_count: 1, confidence: 0.9, importance: 0.5, created_at: new Date().toISOString() } },
336
+ ],
337
+ }));
338
+ const result = await invoke("memory_recall", { query: "q", limit: 2 });
339
+ const text = textOf(result);
340
+ const lines = text.split("\n").filter(Boolean);
341
+ assert.equal(lines.length, 2, "should slice to limit=2");
342
+ // 'B' has highest vector score → highest combined score → first.
343
+ assert.match(lines[0], /\bB\b/);
344
+ assert.match(lines[1], /\bC\b/);
345
+ });
346
+ it("appends 1-hop related facts when graph_depth=1", async () => {
347
+ // Primary search returns one fact mentioning entity 'a'.
348
+ on("/points/search", () => ({
349
+ result: [{
350
+ id: "p1",
351
+ score: 0.9,
352
+ payload: { content: "primary", category: "infrastructure", entities: ["a"], reinforcement_count: 1 },
353
+ }],
354
+ }));
355
+ // Scroll mock dispatches based on filter shape inside the body.
356
+ on("/points/scroll", (call) => {
357
+ const body = call.body;
358
+ const conditions = body.filter.must;
359
+ const fromCond = conditions.find((c) => c.key === "from_entity");
360
+ const toCond = conditions.find((c) => c.key === "to_entity");
361
+ const entitiesCond = conditions.find((c) => c.key === "entities");
362
+ // graphTraversal queries: outgoing(from_entity=a), incoming(to_entity=a), then entities=b.
363
+ if (fromCond?.match.value === "a") {
364
+ return { result: { points: [{
365
+ id: "rel1",
366
+ payload: { content: "a -> b", category: "team", entities: ["a", "b"], from_entity: "a", to_entity: "b", relation_type: "uses", reinforcement_count: 1 },
367
+ }] } };
368
+ }
369
+ if (toCond?.match.value === "a") {
370
+ return { result: { points: [] } };
371
+ }
372
+ if (entitiesCond?.match.value === "b") {
373
+ return { result: { points: [{
374
+ id: "neighbor",
375
+ payload: { content: "b is interesting", category: "infrastructure", entities: ["b"], reinforcement_count: 1 },
376
+ }] } };
377
+ }
378
+ return { result: { points: [] } };
379
+ });
380
+ const result = await invoke("memory_recall", { query: "q", graph_depth: 1, limit: 5 });
381
+ const text = textOf(result);
382
+ assert.match(text, /primary/);
383
+ assert.match(text, /Related \(1-hop\)/);
384
+ assert.match(text, /b is interesting/);
385
+ });
386
+ });
387
+ // ─────────────────────────────────────────────────────────────────────────
388
+ // memory_entity — facts + relations aggregation
389
+ // ─────────────────────────────────────────────────────────────────────────
390
+ describe("memory_entity", () => {
391
+ it("aggregates facts mentioning the entity plus from/to relations and dedups", async () => {
392
+ on("/points/scroll", (call) => {
393
+ const body = call.body;
394
+ // Filter may contain workspace_id conditions first; scan all conditions for the entity-shaped one.
395
+ const conds = body.filter.must;
396
+ const entityCond = conds.find((c) => c.key === "entities" && c.match?.value === "platform");
397
+ const fromCond = conds.find((c) => c.key === "from_entity" && c.match?.value === "platform");
398
+ const toCond = conds.find((c) => c.key === "to_entity" && c.match?.value === "platform");
399
+ if (entityCond) {
400
+ return { result: { points: [
401
+ { id: "f1", payload: { content: "platform fact", category: "infrastructure", entities: ["platform"], reinforcement_count: 1 } },
402
+ ] } };
403
+ }
404
+ if (fromCond) {
405
+ return { result: { points: [
406
+ { id: "r1", payload: { content: "platform uses qdrant", category: "team", from_entity: "platform", to_entity: "qdrant", relation_type: "uses" } },
407
+ ] } };
408
+ }
409
+ if (toCond) {
410
+ // Same relation appears as 'to' lookup too — must be deduped by id.
411
+ return { result: { points: [
412
+ { id: "r1", payload: { content: "platform uses qdrant", category: "team", from_entity: "platform", to_entity: "qdrant", relation_type: "uses" } },
413
+ { id: "r2", payload: { content: "saber owns platform", category: "team", from_entity: "saber", to_entity: "platform", relation_type: "owns" } },
414
+ ] } };
415
+ }
416
+ return { result: { points: [] } };
417
+ });
418
+ const result = await invoke("memory_entity", { name: "Platform" });
419
+ const text = textOf(result);
420
+ assert.match(text, /Facts about Platform \(1\)/);
421
+ assert.match(text, /platform fact/);
422
+ assert.match(text, /Relations \(2\)/); // r1 deduped, r1+r2 unique
423
+ assert.match(text, /platform --\[uses\]--> qdrant/);
424
+ assert.match(text, /saber --\[owns\]--> platform/);
425
+ });
426
+ it("returns a friendly message when nothing is found", async () => {
427
+ on("/points/scroll", () => ({ result: { points: [] } }));
428
+ const result = await invoke("memory_entity", { name: "ghost" });
429
+ assert.match(textOf(result), /No facts or relations found for 'ghost'/);
430
+ });
431
+ });
432
+ // ─────────────────────────────────────────────────────────────────────────
433
+ // memory_forget — supersession marker
434
+ // ─────────────────────────────────────────────────────────────────────────
435
+ describe("memory_forget", () => {
436
+ it("marks the fact as superseded with reason and timestamp", async () => {
437
+ let body = null;
438
+ on("/points/payload", (call) => {
439
+ body = call.body;
440
+ return { status: "ok" };
441
+ });
442
+ // memory_forget first calls qdrantGetPoints (POST /points with {ids,...}) for the workspace check.
443
+ on(/\/points$/, (call) => {
444
+ const callBody = call.body;
445
+ if (call.method === "POST" && callBody.ids) {
446
+ return { result: [{ id: "victim", payload: { content: "to be forgotten" } }] };
447
+ }
448
+ return { status: "ok" };
449
+ });
450
+ const result = await invoke("memory_forget", { fact_id: "victim", reason: "outdated" });
451
+ const parsed = JSON.parse(textOf(result));
452
+ assert.equal(parsed.status, "forgotten");
453
+ assert.equal(parsed.fact_id, "victim");
454
+ assert.equal(parsed.reason, "outdated");
455
+ assert.ok(body);
456
+ const b = body;
457
+ assert.deepEqual(b.points, ["victim"]);
458
+ assert.equal(b.payload.superseded_by, "forgotten:outdated");
459
+ assert.ok(b.payload.superseded_at);
460
+ assert.ok(b.payload.updated_at);
461
+ });
462
+ it("returns a graceful error string when Qdrant rejects the call", async () => {
463
+ // No matcher → default 200 OK; replace with explicit failure.
464
+ responders = [];
465
+ globalThis.fetch = (async () => new Response("nope", { status: 500 }));
466
+ const result = await invoke("memory_forget", { fact_id: "x", reason: "y" });
467
+ const text = textOf(result);
468
+ assert.match(text, /^Error: /);
469
+ });
470
+ });
471
+ });
472
+ //# sourceMappingURL=tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../src/mcp/tools.test.ts"],"names":[],"mappings":"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"}
@@ -11,13 +11,7 @@ export interface McpToolResult {
11
11
  }
12
12
  export interface CategoryDef {
13
13
  description: string;
14
- extractionHint: string;
15
- examples: Array<{
16
- content: string;
17
- entities: string[];
18
- confidence: number;
19
- importance: number;
20
- }>;
14
+ examples: string[];
21
15
  }
22
16
  export interface AxisDef {
23
17
  description: string;
@@ -39,6 +33,9 @@ export interface QdrantFilterCondition {
39
33
  is_null?: {
40
34
  key: string;
41
35
  };
36
+ is_empty?: {
37
+ key: string;
38
+ };
42
39
  }
43
40
  export interface QdrantFilter {
44
41
  must: QdrantFilterCondition[];
@@ -68,6 +65,10 @@ export interface FactPayload {
68
65
  category: string;
69
66
  domain?: string;
70
67
  kind?: string;
68
+ layer?: string | null;
69
+ memory_subtype?: string | null;
70
+ workspace_id?: string;
71
+ actor_id?: string;
71
72
  entities: string[];
72
73
  source?: string;
73
74
  confidence: number;
@@ -77,11 +78,46 @@ export interface FactPayload {
77
78
  last_reinforced_at: string;
78
79
  last_verified_at?: string;
79
80
  verification_count?: number;
81
+ useful_count?: number;
82
+ not_useful_count?: number;
83
+ last_used_at?: string;
84
+ last_feedback_at?: string;
80
85
  superseded_by: string | null;
81
86
  superseded_at: string | null;
82
87
  created_at: string;
83
88
  updated_at: string;
84
- metadata?: Record<string, string>;
89
+ metadata?: Record<string, string | number | boolean | null>;
90
+ episode_id?: string | null;
91
+ workstream_key?: string | null;
92
+ task_key?: string | null;
93
+ repo?: string | null;
94
+ branch?: string | null;
95
+ surface?: string | null;
96
+ issue_id?: string | null;
97
+ pr_id?: string | null;
98
+ source_event_ids?: string[];
99
+ source_fact_ids?: string[];
100
+ source_episode_ids?: string[];
101
+ prompt_version?: string | null;
102
+ capture_policy_version?: string | null;
103
+ review_status?: string | null;
104
+ volatility?: string | null;
105
+ valid_from?: string | null;
106
+ expires_at?: string | null;
107
+ quality_score?: number | null;
108
+ confidence_reason?: string | null;
109
+ owner_scope?: string | null;
110
+ visibility?: string | null;
111
+ audience?: string | null;
112
+ sensitivity?: string | null;
113
+ redaction?: {
114
+ redacted: boolean;
115
+ summary: string;
116
+ matches: Array<{
117
+ type: string;
118
+ count: number;
119
+ }>;
120
+ };
85
121
  from_entity?: string;
86
122
  relation_type?: string;
87
123
  to_entity?: string;
@@ -92,15 +128,34 @@ export interface FactPayload {
92
128
  distilled_period_start?: string;
93
129
  distilled_period_end?: string;
94
130
  summary_count?: number;
131
+ telemetry_type?: string;
132
+ event_session_id?: string;
133
+ recall_query?: string;
134
+ returned_fact_ids?: string[];
135
+ feedback_note?: string;
136
+ outcome?: string;
137
+ outcome_summary?: string;
95
138
  }
96
139
  export interface FilterParams {
97
140
  category?: string;
98
141
  domain?: string;
99
142
  kind?: string;
143
+ memory_subtype?: string;
144
+ workspace_id?: string;
145
+ includeLegacyWorkspace?: boolean;
146
+ actor_id?: string;
100
147
  entity?: string;
148
+ session_id?: string;
149
+ episode_id?: string;
150
+ workstream_key?: string;
151
+ task_key?: string;
152
+ repo?: string;
153
+ branch?: string;
154
+ review_status?: string;
101
155
  since?: string;
102
156
  until?: string;
103
157
  excludeSuperseded?: boolean;
158
+ excludeKinds?: string[];
104
159
  metadata?: Record<string, string>;
105
160
  }
106
161
  export interface SimilarFact {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"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"}