@dikolab/kbdb 0.3.0 → 0.3.1

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 (425) hide show
  1. package/README.md +24 -43
  2. package/dist/bench/constants/corpus-defaults.constant.d.ts +3 -0
  3. package/dist/bench/functions/format-report.function.d.ts +11 -0
  4. package/dist/bench/functions/generate-corpus.function.d.ts +12 -0
  5. package/dist/bench/functions/measure-operation.function.d.ts +14 -0
  6. package/dist/bench/functions/seeded-rng.function.d.ts +11 -0
  7. package/dist/bench/functions/zipf-word.function.d.ts +13 -0
  8. package/dist/bench/index.d.ts +10 -0
  9. package/dist/bench/typings/bench-result.interface.d.ts +11 -0
  10. package/dist/bench/typings/bench-suite-result.interface.d.ts +10 -0
  11. package/dist/bench/typings/corpus-config.interface.d.ts +11 -0
  12. package/dist/bench/typings/corpus-section.interface.d.ts +9 -0
  13. package/dist/cli.cjs +63 -9
  14. package/dist/cli.cjs.map +2 -2
  15. package/dist/cli.mjs +63 -9
  16. package/dist/cli.mjs.map +2 -2
  17. package/dist/src/shared/auto-capture/classes/auto-capture-controller.class.d.ts +33 -0
  18. package/dist/src/shared/auto-capture/constants/auto-capture-defaults.constant.d.ts +8 -0
  19. package/dist/src/shared/auto-capture/functions/build-capture-prompt.function.d.ts +11 -0
  20. package/dist/src/shared/auto-capture/functions/evaluate-trigger.function.d.ts +12 -0
  21. package/dist/src/shared/auto-capture/index.d.ts +7 -0
  22. package/dist/src/shared/auto-capture/typings/auto-capture-config.interface.d.ts +13 -0
  23. package/dist/src/shared/auto-capture/typings/auto-capture-state.interface.d.ts +13 -0
  24. package/dist/src/shared/auto-capture/typings/auto-capture-trigger.interface.d.ts +7 -0
  25. package/dist/src/shared/cli/constants/global-help.constant.d.ts +8 -0
  26. package/dist/src/shared/cli/constants/leaf-help.constant.d.ts +7 -0
  27. package/dist/src/shared/cli/constants/memory-protocol-body.constant.d.ts +7 -0
  28. package/dist/src/shared/cli/constants/query-guidance-body.constant.d.ts +7 -0
  29. package/dist/src/shared/cli/constants/subcommand-help.constant.d.ts +8 -0
  30. package/dist/src/shared/cli/functions/collect-files.function.d.ts +13 -0
  31. package/dist/src/shared/cli/functions/compute-section-kbid.function.d.ts +15 -0
  32. package/dist/src/shared/cli/functions/format-mcp-output.function.d.ts +9 -0
  33. package/dist/src/shared/cli/functions/format-text-output.function.d.ts +9 -0
  34. package/dist/src/shared/cli/functions/generate-group-help.function.d.ts +11 -0
  35. package/dist/src/shared/cli/functions/handle-data-command.function.d.ts +16 -0
  36. package/dist/src/shared/cli/functions/handle-mcp.function.d.ts +15 -0
  37. package/dist/src/shared/cli/functions/handle-migrate.function.d.ts +15 -0
  38. package/dist/src/shared/cli/functions/hydrate-search-previews.function.d.ts +14 -0
  39. package/dist/src/shared/cli/functions/resolve-skill-names.function.d.ts +16 -0
  40. package/dist/src/shared/cli/functions/run-search.function.d.ts +1 -0
  41. package/dist/src/shared/cli/functions/version-gate.function.d.ts +15 -0
  42. package/dist/src/shared/cli/functions/wrap-command.function.d.ts +15 -0
  43. package/dist/src/shared/cli/typings/agent-create-client.interface.d.ts +42 -0
  44. package/dist/src/shared/cli/typings/agent-get-client.interface.d.ts +36 -0
  45. package/dist/src/shared/cli/typings/check-client.interface.d.ts +58 -0
  46. package/dist/src/shared/cli/typings/cli-deps.interface.d.ts +48 -0
  47. package/dist/src/shared/cli/typings/cli-options.interface.d.ts +2 -0
  48. package/dist/src/shared/cli/typings/disconnectable-client.interface.d.ts +26 -0
  49. package/dist/src/shared/cli/typings/dispatch-client.type.d.ts +27 -0
  50. package/dist/src/shared/cli/typings/learn-client.interface.d.ts +52 -0
  51. package/dist/src/shared/cli/typings/learn-io.interface.d.ts +5 -0
  52. package/dist/src/shared/cli/typings/search-client.interface.d.ts +71 -0
  53. package/dist/src/shared/embedding/classes/null-embedding-provider.class.d.ts +20 -0
  54. package/dist/src/shared/embedding/constants/near-duplicate-thresholds.constant.d.ts +15 -0
  55. package/dist/src/shared/embedding/functions/build-vector-index.function.d.ts +14 -0
  56. package/dist/src/shared/embedding/functions/cosine-similarity.function.d.ts +10 -0
  57. package/dist/src/shared/embedding/functions/detect-near-duplicates.function.d.ts +18 -0
  58. package/dist/src/shared/embedding/functions/jaccard-coefficient.function.d.ts +9 -0
  59. package/dist/src/shared/embedding/functions/read-vector-index-meta.function.d.ts +10 -0
  60. package/dist/src/shared/embedding/functions/rrf-fuse.function.d.ts +14 -0
  61. package/dist/src/shared/embedding/functions/search-vectors.function.d.ts +14 -0
  62. package/dist/src/shared/embedding/index.d.ts +16 -0
  63. package/dist/src/shared/embedding/typings/embedding-config.interface.d.ts +20 -0
  64. package/dist/src/shared/embedding/typings/embedding-provider.interface.d.ts +23 -0
  65. package/dist/src/shared/embedding/typings/near-duplicate-candidate.model.d.ts +23 -0
  66. package/dist/src/shared/embedding/typings/near-duplicate-result.model.d.ts +24 -0
  67. package/dist/src/shared/embedding/typings/vector-index-entry.model.d.ts +12 -0
  68. package/dist/src/shared/embedding/typings/vector-index-meta.model.d.ts +11 -0
  69. package/dist/src/shared/embedding/typings/vector-search-result.model.d.ts +7 -0
  70. package/dist/src/shared/mcp/constants/tool-agent-create.constant.d.ts +3 -0
  71. package/dist/src/shared/mcp/constants/tool-agent-delete.constant.d.ts +3 -0
  72. package/dist/src/shared/mcp/constants/tool-agent-get.constant.d.ts +3 -0
  73. package/dist/src/shared/mcp/constants/tool-agent-list.constant.d.ts +3 -0
  74. package/dist/src/shared/mcp/constants/tool-auto-capture-review.constant.d.ts +8 -0
  75. package/dist/src/shared/mcp/constants/tool-check.constant.d.ts +3 -0
  76. package/dist/src/shared/mcp/constants/tool-content.constant.d.ts +3 -0
  77. package/dist/src/shared/mcp/constants/tool-export.constant.d.ts +3 -0
  78. package/dist/src/shared/mcp/constants/tool-gc.constant.d.ts +3 -0
  79. package/dist/src/shared/mcp/constants/tool-learn.constant.d.ts +3 -0
  80. package/dist/src/shared/mcp/constants/tool-rebuild.constant.d.ts +3 -0
  81. package/dist/src/shared/mcp/constants/tool-recall.constant.d.ts +3 -0
  82. package/dist/src/shared/mcp/constants/tool-retrieve.constant.d.ts +3 -0
  83. package/dist/src/shared/mcp/constants/tool-search.constant.d.ts +3 -0
  84. package/dist/src/shared/mcp/constants/tool-skill-delete.constant.d.ts +3 -0
  85. package/dist/src/shared/mcp/constants/tool-skill-get.constant.d.ts +3 -0
  86. package/dist/src/shared/mcp/constants/tool-skill-learn.constant.d.ts +3 -0
  87. package/dist/src/shared/mcp/constants/tool-skill-list.constant.d.ts +3 -0
  88. package/dist/src/shared/mcp/constants/tool-status.constant.d.ts +3 -0
  89. package/dist/src/shared/mcp/constants/tool-unlearn.constant.d.ts +3 -0
  90. package/dist/src/shared/mcp/functions/as-boolean-or-undefined.function.d.ts +7 -0
  91. package/dist/src/shared/mcp/functions/as-string-array-or-undefined.function.d.ts +7 -0
  92. package/dist/src/shared/mcp/functions/as-string-array.function.d.ts +7 -0
  93. package/dist/src/shared/mcp/functions/as-string.function.d.ts +8 -0
  94. package/dist/src/shared/mcp/functions/build-skills-text.function.d.ts +18 -0
  95. package/dist/src/shared/mcp/functions/handle-agent-prompt.function.d.ts +14 -0
  96. package/dist/src/shared/mcp/functions/handle-mcp-request.function.d.ts +14 -0
  97. package/dist/src/shared/mcp/functions/handle-prompt-get.function.d.ts +4 -3
  98. package/dist/src/shared/mcp/functions/handle-skill-prompt.function.d.ts +16 -0
  99. package/dist/src/shared/mcp/functions/handle-tool-auto-capture-review.function.d.ts +12 -0
  100. package/dist/src/shared/mcp/functions/handle-tool-check.function.d.ts +11 -0
  101. package/dist/src/shared/mcp/functions/handle-tool-content.function.d.ts +12 -0
  102. package/dist/src/shared/mcp/functions/handle-tool-export.function.d.ts +12 -0
  103. package/dist/src/shared/mcp/functions/handle-tool-gc.function.d.ts +11 -0
  104. package/dist/src/shared/mcp/functions/handle-tool-learn.function.d.ts +12 -0
  105. package/dist/src/shared/mcp/functions/handle-tool-rebuild.function.d.ts +11 -0
  106. package/dist/src/shared/mcp/functions/handle-tool-retrieve.function.d.ts +12 -0
  107. package/dist/src/shared/mcp/functions/handle-tool-search.function.d.ts +13 -0
  108. package/dist/src/shared/mcp/functions/handle-tool-skill-delete.function.d.ts +12 -0
  109. package/dist/src/shared/mcp/functions/handle-tool-skill-get.function.d.ts +13 -0
  110. package/dist/src/shared/mcp/functions/handle-tool-skill-learn.function.d.ts +13 -0
  111. package/dist/src/shared/mcp/functions/handle-tool-skill-list.function.d.ts +11 -0
  112. package/dist/src/shared/mcp/functions/handle-tool-status.function.d.ts +11 -0
  113. package/dist/src/shared/mcp/functions/handle-tool-unlearn.function.d.ts +12 -0
  114. package/dist/src/shared/mcp/functions/parse-agent-meta.function.d.ts +14 -0
  115. package/dist/src/shared/mcp/functions/parse-skill-arguments.function.d.ts +11 -0
  116. package/dist/src/shared/mcp/functions/read-agent-meta.function.d.ts +17 -0
  117. package/dist/src/shared/mcp/functions/resolve-skill-refs.function.d.ts +23 -0
  118. package/dist/src/shared/mcp/functions/run-startup-health-check.function.d.ts +14 -0
  119. package/dist/src/shared/mcp/typings/mcp-capabilities.interface.d.ts +16 -0
  120. package/dist/src/shared/mcp/typings/mcp-client.interface.d.ts +2 -0
  121. package/dist/src/shared/mcp/typings/mcp-completion.interface.d.ts +43 -0
  122. package/dist/src/shared/mcp/typings/mcp-content-result.model.d.ts +9 -0
  123. package/dist/src/shared/mcp/typings/mcp-export-result.model.d.ts +11 -0
  124. package/dist/src/shared/mcp/typings/mcp-gc-result.model.d.ts +15 -0
  125. package/dist/src/shared/mcp/typings/mcp-integrity-check-result.model.d.ts +16 -0
  126. package/dist/src/shared/mcp/typings/mcp-integrity-error.model.d.ts +9 -0
  127. package/dist/src/shared/mcp/typings/mcp-notification.interface.d.ts +9 -0
  128. package/dist/src/shared/mcp/typings/mcp-rebuild-result.model.d.ts +9 -0
  129. package/dist/src/shared/mcp/typings/mcp-request.interface.d.ts +11 -0
  130. package/dist/src/shared/mcp/typings/mcp-resource-result.interface.d.ts +12 -0
  131. package/dist/src/shared/mcp/typings/mcp-resource-template.interface.d.ts +11 -0
  132. package/dist/src/shared/mcp/typings/mcp-response.interface.d.ts +18 -0
  133. package/dist/src/shared/mcp/typings/mcp-server-info.interface.d.ts +7 -0
  134. package/dist/src/shared/mcp/typings/mcp-server-state.interface.d.ts +16 -0
  135. package/dist/src/shared/mcp/typings/mcp-tool-annotations.interface.d.ts +32 -0
  136. package/dist/src/shared/mcp/typings/mcp-tool-definition.interface.d.ts +15 -0
  137. package/dist/src/shared/mcp/typings/mcp-tool-result.interface.d.ts +19 -0
  138. package/dist/src/shared/mcp/typings/mcp-worker-client.interface.d.ts +220 -0
  139. package/dist/src/shared/mcp/typings/tool-call-result.model.d.ts +17 -0
  140. package/dist/src/shared/sync/functions/build-import-report.function.d.ts +18 -0
  141. package/dist/src/shared/sync/functions/parse-export-entry.function.d.ts +11 -0
  142. package/dist/src/shared/sync/functions/resolve-conflict.function.d.ts +13 -0
  143. package/dist/src/shared/sync/functions/serialize-export-entry.function.d.ts +8 -0
  144. package/dist/src/shared/sync/index.d.ts +9 -0
  145. package/dist/src/shared/sync/typings/conflict-resolution.type.d.ts +8 -0
  146. package/dist/src/shared/sync/typings/export-entry.interface.d.ts +13 -0
  147. package/dist/src/shared/sync/typings/export-options.interface.d.ts +9 -0
  148. package/dist/src/shared/sync/typings/import-options.interface.d.ts +7 -0
  149. package/dist/src/shared/sync/typings/import-report.interface.d.ts +15 -0
  150. package/dist/src/shared/wasm-codec/functions/decode-one-recall-result.function.d.ts +14 -0
  151. package/dist/src/shared/wasm-codec/functions/decode-option-string.function.d.ts +12 -0
  152. package/dist/src/shared/wasm-codec/functions/decode-recall-document.function.d.ts +14 -0
  153. package/dist/src/shared/wasm-codec/functions/decode-recall-reference.function.d.ts +14 -0
  154. package/dist/src/shared/wasm-codec/functions/decode-recall-sibling.function.d.ts +13 -0
  155. package/dist/src/shared/wasm-codec/functions/decode-section-match.function.d.ts +15 -0
  156. package/dist/src/shared/wasm-codec/functions/decode-section-record-trailing.function.d.ts +14 -0
  157. package/dist/src/shared/wasm-codec/functions/decode-section-record.function.d.ts +14 -0
  158. package/dist/src/shared/wasm-codec/functions/decode-section-type.function.d.ts +13 -0
  159. package/dist/src/shared/wasm-codec/functions/decode-wasm-list.function.d.ts +17 -0
  160. package/dist/src/shared/wasm-codec/typings/add-section-input.model.d.ts +45 -0
  161. package/dist/src/shared/wasm-codec/typings/add-section-result.model.d.ts +27 -0
  162. package/dist/src/shared/wasm-codec/typings/document-manifest.model.d.ts +19 -0
  163. package/dist/src/shared/wasm-codec/typings/document-section.model.d.ts +12 -0
  164. package/dist/src/shared/wasm-codec/typings/item-decoder.type.d.ts +6 -0
  165. package/dist/src/shared/wasm-codec/typings/near-duplicate.model.d.ts +16 -0
  166. package/dist/src/shared/wasm-codec/typings/paged-search-result.model.d.ts +21 -0
  167. package/dist/src/shared/wasm-codec/typings/section-match.model.d.ts +31 -0
  168. package/dist/src/shared/wasm-codec/typings/section-record-trailing.model.d.ts +38 -0
  169. package/dist/src/shared/wasm-codec/typings/section-record.model.d.ts +66 -0
  170. package/dist/src/shared/wasm-codec/typings/section-type-result.model.d.ts +12 -0
  171. package/dist/src/shared/worker-client/functions/handle-ipc-data.function.d.ts +16 -0
  172. package/dist/src/shared/worker-client/functions/send-ipc-request.function.d.ts +19 -0
  173. package/dist/src/shared/worker-client/typings/add-section-result.model.d.ts +2 -0
  174. package/dist/src/shared/worker-client/typings/json-rpc-response.interface.d.ts +16 -0
  175. package/dist/src/shared/worker-client/typings/pending-call.interface.d.ts +7 -0
  176. package/dist/src/shared/worker-client/typings/recall-document.model.d.ts +16 -0
  177. package/dist/src/shared/worker-client/typings/recall-params.model.d.ts +15 -0
  178. package/dist/src/shared/worker-client/typings/recall-reference.model.d.ts +32 -0
  179. package/dist/src/shared/worker-client/typings/recall-sibling.model.d.ts +11 -0
  180. package/dist/src/shared/worker-client/typings/recall-single-result.model.d.ts +40 -0
  181. package/dist/src/shared/worker-daemon/classes/ipc-error.class.d.ts +17 -0
  182. package/dist/src/shared/worker-daemon/constants/wasm-method-map.constant.d.ts +16 -0
  183. package/dist/src/shared/worker-daemon/functions/build-ipc-error-response.function.d.ts +9 -0
  184. package/dist/src/shared/worker-daemon/functions/check-catalog-version.function.d.ts +9 -0
  185. package/dist/src/shared/worker-daemon/functions/check-preconditions.function.d.ts +10 -0
  186. package/dist/src/shared/worker-daemon/functions/detect-stale-pid.function.d.ts +15 -0
  187. package/dist/src/shared/worker-daemon/functions/dispatch-request.function.d.ts +35 -0
  188. package/dist/src/shared/worker-daemon/functions/handle-check-version.function.d.ts +23 -0
  189. package/dist/src/shared/worker-daemon/functions/handle-config-method.function.d.ts +11 -0
  190. package/dist/src/shared/worker-daemon/functions/handle-read-ops.function.d.ts +52 -0
  191. package/dist/src/shared/worker-daemon/functions/handle-write-ops.function.d.ts +44 -0
  192. package/dist/src/shared/worker-daemon/functions/parse-auto-capture-section.function.d.ts +14 -0
  193. package/dist/src/shared/worker-daemon/functions/parse-catalog-version.function.d.ts +10 -0
  194. package/dist/src/shared/worker-daemon/functions/parse-embedding-section.function.d.ts +13 -0
  195. package/dist/src/shared/worker-daemon/functions/parse-worker-toml.function.d.ts +11 -0
  196. package/dist/src/shared/worker-daemon/functions/run-startup-integrity-check.function.d.ts +18 -0
  197. package/dist/src/shared/worker-daemon/functions/scan-near-duplicates.function.d.ts +21 -0
  198. package/dist/src/shared/worker-daemon/functions/wasm-bridge.function.d.ts +51 -0
  199. package/dist/src/shared/worker-daemon/functions/wasm-memory-helpers.function.d.ts +22 -0
  200. package/dist/src/shared/worker-daemon/functions/write-lock.function.d.ts +32 -0
  201. package/dist/src/shared/worker-daemon/typings/allocator-ref.interface.d.ts +16 -0
  202. package/dist/src/shared/worker-daemon/typings/daemon-config.interface.d.ts +6 -0
  203. package/dist/src/shared/worker-daemon/typings/fs-adapter.interface.d.ts +22 -0
  204. package/dist/src/shared/worker-daemon/typings/handler-context.interface.d.ts +18 -0
  205. package/dist/src/shared/worker-daemon/typings/memory-ref.interface.d.ts +13 -0
  206. package/dist/src/shared/worker-daemon/typings/wasm-fn.type.d.ts +2 -0
  207. package/dist/src/shared/worker-daemon/typings/write-lock.interface.d.ts +15 -0
  208. package/dist/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
  209. package/dist/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
  210. package/docs/details/mcp-server.md +4 -2
  211. package/docs/goals/auto-capture.md +378 -0
  212. package/docs/goals/benchmarking.md +296 -0
  213. package/docs/goals/concurrency.md +259 -0
  214. package/docs/goals/hybrid-search.md +436 -0
  215. package/docs/goals/semantic-dedup.md +229 -0
  216. package/docs/goals/sync.md +217 -0
  217. package/docs/modules/rust/fs-database/indexes/vectors.md +110 -0
  218. package/docs/modules/typescript/shared/auto-capture/module.md +73 -0
  219. package/docs/modules/typescript/shared/embedding/functions.md +94 -0
  220. package/docs/modules/typescript/shared/embedding/module.md +71 -0
  221. package/docs/modules/typescript/shared/embedding/typings.md +122 -0
  222. package/docs/overview.md +148 -166
  223. package/docs/release-notes/0.2.0.md +3 -3
  224. package/docs/release-notes/0.3.0.md +89 -0
  225. package/docs/release-notes/0.3.1.md +111 -0
  226. package/docs/release-notes/README.md +2 -0
  227. package/package.json +1 -1
  228. package/src/shared/auto-capture/classes/auto-capture-controller.class.ts +62 -0
  229. package/src/shared/auto-capture/constants/auto-capture-defaults.constant.ts +15 -0
  230. package/src/shared/auto-capture/functions/build-capture-prompt.function.ts +27 -0
  231. package/src/shared/auto-capture/functions/evaluate-trigger.function.ts +50 -0
  232. package/src/shared/auto-capture/index.ts +7 -0
  233. package/src/shared/auto-capture/typings/auto-capture-config.interface.ts +13 -0
  234. package/src/shared/auto-capture/typings/auto-capture-state.interface.ts +13 -0
  235. package/src/shared/auto-capture/typings/auto-capture-trigger.interface.ts +7 -0
  236. package/src/shared/cli/constants/global-help.constant.ts +73 -0
  237. package/src/shared/cli/constants/leaf-help.constant.ts +219 -0
  238. package/src/shared/cli/constants/memory-protocol-body.constant.ts +39 -0
  239. package/src/shared/cli/constants/query-guidance-body.constant.ts +37 -0
  240. package/src/shared/cli/constants/subcommand-help.constant.ts +195 -0
  241. package/src/shared/cli/functions/collect-files.function.ts +55 -0
  242. package/src/shared/cli/functions/compute-section-kbid.function.ts +49 -0
  243. package/src/shared/cli/functions/format-mcp-output.function.ts +41 -0
  244. package/src/shared/cli/functions/format-text-output.function.ts +42 -0
  245. package/src/shared/cli/functions/generate-group-help.function.ts +41 -0
  246. package/src/shared/cli/functions/handle-data-command.function.ts +67 -0
  247. package/src/shared/cli/functions/handle-mcp.function.ts +56 -0
  248. package/src/shared/cli/functions/handle-migrate.function.ts +64 -0
  249. package/src/shared/cli/functions/hydrate-search-previews.function.ts +29 -0
  250. package/src/shared/cli/functions/parse-args.function.ts +3 -0
  251. package/src/shared/cli/functions/resolve-skill-names.function.ts +43 -0
  252. package/src/shared/cli/functions/run-search.function.ts +2 -0
  253. package/src/shared/cli/functions/version-gate.function.ts +44 -0
  254. package/src/shared/cli/functions/wrap-command.function.ts +34 -0
  255. package/src/shared/cli/typings/agent-create-client.interface.ts +47 -0
  256. package/src/shared/cli/typings/agent-get-client.interface.ts +39 -0
  257. package/src/shared/cli/typings/check-client.interface.ts +66 -0
  258. package/src/shared/cli/typings/cli-deps.interface.ts +54 -0
  259. package/src/shared/cli/typings/cli-options.interface.ts +2 -0
  260. package/src/shared/cli/typings/disconnectable-client.interface.ts +29 -0
  261. package/src/shared/cli/typings/dispatch-client.type.ts +46 -0
  262. package/src/shared/cli/typings/learn-client.interface.ts +53 -0
  263. package/src/shared/cli/typings/learn-io.interface.ts +5 -0
  264. package/src/shared/cli/typings/search-client.interface.ts +73 -0
  265. package/src/shared/embedding/classes/null-embedding-provider.class.ts +29 -0
  266. package/src/shared/embedding/constants/near-duplicate-thresholds.constant.ts +17 -0
  267. package/src/shared/embedding/functions/build-vector-index.function.ts +79 -0
  268. package/src/shared/embedding/functions/cosine-similarity.function.ts +31 -0
  269. package/src/shared/embedding/functions/detect-near-duplicates.function.ts +69 -0
  270. package/src/shared/embedding/functions/jaccard-coefficient.function.ts +26 -0
  271. package/src/shared/embedding/functions/read-vector-index-meta.function.ts +44 -0
  272. package/src/shared/embedding/functions/rrf-fuse.function.ts +33 -0
  273. package/src/shared/embedding/functions/search-vectors.function.ts +59 -0
  274. package/src/shared/embedding/index.ts +20 -0
  275. package/src/shared/embedding/typings/embedding-config.interface.ts +23 -0
  276. package/src/shared/embedding/typings/embedding-provider.interface.ts +25 -0
  277. package/src/shared/embedding/typings/near-duplicate-candidate.model.ts +25 -0
  278. package/src/shared/embedding/typings/near-duplicate-result.model.ts +26 -0
  279. package/src/shared/embedding/typings/vector-index-entry.model.ts +13 -0
  280. package/src/shared/embedding/typings/vector-index-meta.model.ts +14 -0
  281. package/src/shared/embedding/typings/vector-search-result.model.ts +8 -0
  282. package/src/shared/mcp/classes/mcp-server.class.ts +6 -3
  283. package/src/shared/mcp/constants/tool-agent-create.constant.ts +39 -0
  284. package/src/shared/mcp/constants/tool-agent-delete.constant.ts +26 -0
  285. package/src/shared/mcp/constants/tool-agent-get.constant.ts +24 -0
  286. package/src/shared/mcp/constants/tool-agent-list.constant.ts +18 -0
  287. package/src/shared/mcp/constants/tool-auto-capture-review.constant.ts +32 -0
  288. package/src/shared/mcp/constants/tool-check.constant.ts +21 -0
  289. package/src/shared/mcp/constants/tool-content.constant.ts +29 -0
  290. package/src/shared/mcp/constants/tool-export.constant.ts +27 -0
  291. package/src/shared/mcp/constants/tool-gc.constant.ts +21 -0
  292. package/src/shared/mcp/constants/tool-learn.constant.ts +58 -0
  293. package/src/shared/mcp/constants/tool-rebuild.constant.ts +21 -0
  294. package/src/shared/mcp/constants/tool-recall.constant.ts +36 -0
  295. package/src/shared/mcp/constants/tool-retrieve.constant.ts +31 -0
  296. package/src/shared/mcp/constants/tool-search.constant.ts +51 -0
  297. package/src/shared/mcp/constants/tool-skill-delete.constant.ts +24 -0
  298. package/src/shared/mcp/constants/tool-skill-get.constant.ts +27 -0
  299. package/src/shared/mcp/constants/tool-skill-learn.constant.ts +37 -0
  300. package/src/shared/mcp/constants/tool-skill-list.constant.ts +18 -0
  301. package/src/shared/mcp/constants/tool-status.constant.ts +20 -0
  302. package/src/shared/mcp/constants/tool-unlearn.constant.ts +25 -0
  303. package/src/shared/mcp/functions/as-boolean-or-undefined.function.ts +11 -0
  304. package/src/shared/mcp/functions/as-string-array-or-undefined.function.ts +17 -0
  305. package/src/shared/mcp/functions/as-string-array.function.ts +15 -0
  306. package/src/shared/mcp/functions/as-string.function.ts +10 -0
  307. package/src/shared/mcp/functions/build-skills-text.function.ts +43 -0
  308. package/src/shared/mcp/functions/create-tool-definitions.function.ts +28 -0
  309. package/src/shared/mcp/functions/handle-agent-create.function.ts +1 -1
  310. package/src/shared/mcp/functions/handle-agent-prompt.function.ts +68 -0
  311. package/src/shared/mcp/functions/handle-mcp-request.function.ts +202 -0
  312. package/src/shared/mcp/functions/handle-prompt-get.function.ts +18 -12
  313. package/src/shared/mcp/functions/handle-skill-prompt.function.ts +44 -0
  314. package/src/shared/mcp/functions/handle-tool-auto-capture-review.function.ts +24 -0
  315. package/src/shared/mcp/functions/handle-tool-call.function.ts +18 -0
  316. package/src/shared/mcp/functions/handle-tool-check.function.ts +21 -0
  317. package/src/shared/mcp/functions/handle-tool-content.function.ts +23 -0
  318. package/src/shared/mcp/functions/handle-tool-export.function.ts +25 -0
  319. package/src/shared/mcp/functions/handle-tool-gc.function.ts +21 -0
  320. package/src/shared/mcp/functions/handle-tool-learn.function.ts +69 -0
  321. package/src/shared/mcp/functions/handle-tool-rebuild.function.ts +21 -0
  322. package/src/shared/mcp/functions/handle-tool-retrieve.function.ts +40 -0
  323. package/src/shared/mcp/functions/handle-tool-search.function.ts +47 -0
  324. package/src/shared/mcp/functions/handle-tool-skill-delete.function.ts +34 -0
  325. package/src/shared/mcp/functions/handle-tool-skill-get.function.ts +59 -0
  326. package/src/shared/mcp/functions/handle-tool-skill-learn.function.ts +61 -0
  327. package/src/shared/mcp/functions/handle-tool-skill-list.function.ts +39 -0
  328. package/src/shared/mcp/functions/handle-tool-status.function.ts +21 -0
  329. package/src/shared/mcp/functions/handle-tool-unlearn.function.ts +24 -0
  330. package/src/shared/mcp/functions/parse-agent-meta.function.ts +27 -0
  331. package/src/shared/mcp/functions/parse-skill-arguments.function.ts +36 -0
  332. package/src/shared/mcp/functions/read-agent-meta.function.ts +41 -0
  333. package/src/shared/mcp/functions/resolve-skill-refs.function.ts +50 -0
  334. package/src/shared/mcp/functions/run-startup-health-check.function.ts +34 -0
  335. package/src/shared/mcp/typings/mcp-capabilities.interface.ts +16 -0
  336. package/src/shared/mcp/typings/mcp-client.interface.ts +2 -0
  337. package/src/shared/mcp/typings/mcp-completion.interface.ts +45 -0
  338. package/src/shared/mcp/typings/mcp-content-result.model.ts +9 -0
  339. package/src/shared/mcp/typings/mcp-export-result.model.ts +11 -0
  340. package/src/shared/mcp/typings/mcp-gc-result.model.ts +15 -0
  341. package/src/shared/mcp/typings/mcp-integrity-check-result.model.ts +17 -0
  342. package/src/shared/mcp/typings/mcp-integrity-error.model.ts +15 -0
  343. package/src/shared/mcp/typings/mcp-notification.interface.ts +9 -0
  344. package/src/shared/mcp/typings/mcp-rebuild-result.model.ts +9 -0
  345. package/src/shared/mcp/typings/mcp-request.interface.ts +11 -0
  346. package/src/shared/mcp/typings/mcp-resource-result.interface.ts +12 -0
  347. package/src/shared/mcp/typings/mcp-resource-template.interface.ts +11 -0
  348. package/src/shared/mcp/typings/mcp-response.interface.ts +18 -0
  349. package/src/shared/mcp/typings/mcp-server-info.interface.ts +7 -0
  350. package/src/shared/mcp/typings/mcp-server-state.interface.ts +17 -0
  351. package/src/shared/mcp/typings/mcp-tool-annotations.interface.ts +32 -0
  352. package/src/shared/mcp/typings/mcp-tool-definition.interface.ts +16 -0
  353. package/src/shared/mcp/typings/mcp-tool-result.interface.ts +19 -0
  354. package/src/shared/mcp/typings/mcp-worker-client.interface.ts +243 -0
  355. package/src/shared/mcp/typings/tool-call-result.model.ts +18 -0
  356. package/src/shared/sync/functions/build-import-report.function.ts +40 -0
  357. package/src/shared/sync/functions/parse-export-entry.function.ts +45 -0
  358. package/src/shared/sync/functions/resolve-conflict.function.ts +31 -0
  359. package/src/shared/sync/functions/serialize-export-entry.function.ts +18 -0
  360. package/src/shared/sync/index.ts +9 -0
  361. package/src/shared/sync/typings/conflict-resolution.type.ts +8 -0
  362. package/src/shared/sync/typings/export-entry.interface.ts +13 -0
  363. package/src/shared/sync/typings/export-options.interface.ts +9 -0
  364. package/src/shared/sync/typings/import-options.interface.ts +7 -0
  365. package/src/shared/sync/typings/import-report.interface.ts +15 -0
  366. package/src/shared/wasm-codec/functions/decode-one-recall-result.function.ts +86 -0
  367. package/src/shared/wasm-codec/functions/decode-option-string.function.ts +24 -0
  368. package/src/shared/wasm-codec/functions/decode-recall-document.function.ts +59 -0
  369. package/src/shared/wasm-codec/functions/decode-recall-reference.function.ts +52 -0
  370. package/src/shared/wasm-codec/functions/decode-recall-sibling.function.ts +43 -0
  371. package/src/shared/wasm-codec/functions/decode-section-match.function.ts +80 -0
  372. package/src/shared/wasm-codec/functions/decode-section-record-trailing.function.ts +75 -0
  373. package/src/shared/wasm-codec/functions/decode-section-record.function.ts +85 -0
  374. package/src/shared/wasm-codec/functions/decode-section-type.function.ts +30 -0
  375. package/src/shared/wasm-codec/functions/decode-wasm-list.function.ts +31 -0
  376. package/src/shared/wasm-codec/typings/add-section-input.model.ts +45 -0
  377. package/src/shared/wasm-codec/typings/add-section-result.model.ts +28 -0
  378. package/src/shared/wasm-codec/typings/document-manifest.model.ts +20 -0
  379. package/src/shared/wasm-codec/typings/document-section.model.ts +12 -0
  380. package/src/shared/wasm-codec/typings/item-decoder.type.ts +10 -0
  381. package/src/shared/wasm-codec/typings/near-duplicate.model.ts +16 -0
  382. package/src/shared/wasm-codec/typings/paged-search-result.model.ts +22 -0
  383. package/src/shared/wasm-codec/typings/section-match.model.ts +31 -0
  384. package/src/shared/wasm-codec/typings/section-record-trailing.model.ts +38 -0
  385. package/src/shared/wasm-codec/typings/section-record.model.ts +66 -0
  386. package/src/shared/wasm-codec/typings/section-type-result.model.ts +12 -0
  387. package/src/shared/worker-client/functions/handle-ipc-data.function.ts +49 -0
  388. package/src/shared/worker-client/functions/send-ipc-request.function.ts +39 -0
  389. package/src/shared/worker-client/typings/add-section-result.model.ts +2 -0
  390. package/src/shared/worker-client/typings/json-rpc-response.interface.ts +17 -0
  391. package/src/shared/worker-client/typings/pending-call.interface.ts +7 -0
  392. package/src/shared/worker-client/typings/recall-document.model.ts +16 -0
  393. package/src/shared/worker-client/typings/recall-params.model.ts +15 -0
  394. package/src/shared/worker-client/typings/recall-reference.model.ts +32 -0
  395. package/src/shared/worker-client/typings/recall-sibling.model.ts +11 -0
  396. package/src/shared/worker-client/typings/recall-single-result.model.ts +41 -0
  397. package/src/shared/worker-daemon/classes/ipc-error.class.ts +22 -0
  398. package/src/shared/worker-daemon/constants/wasm-method-map.constant.ts +69 -0
  399. package/src/shared/worker-daemon/functions/build-ipc-error-response.function.ts +16 -0
  400. package/src/shared/worker-daemon/functions/check-catalog-version.function.ts +54 -0
  401. package/src/shared/worker-daemon/functions/check-preconditions.function.ts +28 -0
  402. package/src/shared/worker-daemon/functions/detect-stale-pid.function.ts +33 -0
  403. package/src/shared/worker-daemon/functions/dispatch-request.function.ts +190 -0
  404. package/src/shared/worker-daemon/functions/handle-check-version.function.ts +74 -0
  405. package/src/shared/worker-daemon/functions/handle-config-method.function.ts +27 -0
  406. package/src/shared/worker-daemon/functions/handle-read-ops.function.ts +236 -0
  407. package/src/shared/worker-daemon/functions/handle-write-ops.function.ts +257 -0
  408. package/src/shared/worker-daemon/functions/parse-auto-capture-section.function.ts +51 -0
  409. package/src/shared/worker-daemon/functions/parse-catalog-version.function.ts +20 -0
  410. package/src/shared/worker-daemon/functions/parse-embedding-section.function.ts +38 -0
  411. package/src/shared/worker-daemon/functions/parse-worker-toml.function.ts +104 -0
  412. package/src/shared/worker-daemon/functions/run-startup-integrity-check.function.ts +55 -0
  413. package/src/shared/worker-daemon/functions/scan-near-duplicates.function.ts +92 -0
  414. package/src/shared/worker-daemon/functions/wasm-bridge.function.ts +144 -0
  415. package/src/shared/worker-daemon/functions/wasm-memory-helpers.function.ts +41 -0
  416. package/src/shared/worker-daemon/functions/write-lock.function.ts +49 -0
  417. package/src/shared/worker-daemon/typings/allocator-ref.interface.ts +16 -0
  418. package/src/shared/worker-daemon/typings/daemon-config.interface.ts +7 -0
  419. package/src/shared/worker-daemon/typings/fs-adapter.interface.ts +22 -0
  420. package/src/shared/worker-daemon/typings/handler-context.interface.ts +19 -0
  421. package/src/shared/worker-daemon/typings/memory-ref.interface.ts +13 -0
  422. package/src/shared/worker-daemon/typings/wasm-fn.type.ts +2 -0
  423. package/src/shared/worker-daemon/typings/write-lock.interface.ts +13 -0
  424. package/src/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
  425. package/src/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
@@ -0,0 +1,25 @@
1
+ import type { McpToolDefinition } from '../typings/mcp-types.interface.ts';
2
+
3
+ /** MCP tool definition for the `unlearn` operation. */
4
+ export const TOOL_UNLEARN: McpToolDefinition = {
5
+ name: 'unlearn',
6
+ description:
7
+ 'Remove a section from the knowledge base' + ' by its kb-id.',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ kbid: {
12
+ type: 'string',
13
+ description: 'Knowledge base ID of the section',
14
+ },
15
+ },
16
+ required: ['kbid'],
17
+ },
18
+ annotations: {
19
+ title: 'Remove Section',
20
+ readOnlyHint: false,
21
+ destructiveHint: true,
22
+ idempotentHint: true,
23
+ openWorldHint: false,
24
+ },
25
+ };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Narrows an `unknown` value to a boolean, returning `undefined`
3
+ * when the value is not a boolean.
4
+ *
5
+ * @param value - the value to narrow
6
+ */
7
+ export function asBooleanOrUndefined(
8
+ value: unknown,
9
+ ): boolean | undefined {
10
+ return typeof value === 'boolean' ? value : undefined;
11
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Narrows an `unknown` value to a `string[]`, returning `undefined`
3
+ * when the value is not an array of strings.
4
+ *
5
+ * @param value - the value to narrow
6
+ */
7
+ export function asStringArrayOrUndefined(
8
+ value: unknown,
9
+ ): string[] | undefined {
10
+ if (
11
+ Array.isArray(value) &&
12
+ value.every((item) => typeof item === 'string')
13
+ ) {
14
+ return value;
15
+ }
16
+ return undefined;
17
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Narrows an `unknown` value to a `string[]`, returning an empty
3
+ * array when the value is not an array of strings.
4
+ *
5
+ * @param value - the value to narrow
6
+ */
7
+ export function asStringArray(value: unknown): string[] {
8
+ if (
9
+ Array.isArray(value) &&
10
+ value.every((item) => typeof item === 'string')
11
+ ) {
12
+ return value;
13
+ }
14
+ return [];
15
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Narrows an `unknown` value to a string, returning the fallback
3
+ * when the value is not already a string.
4
+ *
5
+ * @param value - the value to narrow
6
+ * @param fallback - returned when `value` is not a string
7
+ */
8
+ export function asString(value: unknown, fallback: string): string {
9
+ return typeof value === 'string' ? value : fallback;
10
+ }
@@ -0,0 +1,43 @@
1
+ /** Minimal section shape for building the skills listing text. */
2
+ export interface SkillSection {
3
+ /** Knowledge-base identifier of the section. */
4
+ readonly kbid: string;
5
+ /** Raw JSON content of the skill section. */
6
+ readonly content: string;
7
+ }
8
+
9
+ /**
10
+ * Builds a human-readable skills listing from an array of skill
11
+ * section records.
12
+ *
13
+ * Sections whose JSON is not parseable or whose `name` field is
14
+ * absent are silently omitted. Returns `null` when no valid skills
15
+ * remain after filtering.
16
+ *
17
+ * @param skillSections - array of section records to summarise
18
+ */
19
+ export function buildSkillsText(
20
+ skillSections: SkillSection[],
21
+ ): string | null {
22
+ const lines: string[] = [];
23
+ for (const sec of skillSections) {
24
+ try {
25
+ const parsed = JSON.parse(sec.content) as Record<
26
+ string,
27
+ unknown
28
+ >;
29
+ const name =
30
+ typeof parsed['name'] === 'string' ? parsed['name'] : null;
31
+ if (name === null) continue;
32
+ const description =
33
+ typeof parsed['description'] === 'string'
34
+ ? parsed['description']
35
+ : '';
36
+ lines.push(`- ${name}: ${description}`);
37
+ } catch {
38
+ // skip unparseable sections
39
+ }
40
+ }
41
+ if (lines.length === 0) return null;
42
+ return `Available skills:\n${lines.join('\n')}`;
43
+ }
@@ -37,6 +37,11 @@ export function createToolDefinitions(): McpToolDefinition[] {
37
37
  'Number of results to skip for' +
38
38
  ' pagination (default: 0)',
39
39
  },
40
+ algo: {
41
+ type: 'string',
42
+ enum: ['lexical', 'vector', 'hybrid'],
43
+ description: 'Search algorithm (default: lexical)',
44
+ },
40
45
  },
41
46
  required: ['query'],
42
47
  },
@@ -498,5 +503,28 @@ export function createToolDefinitions(): McpToolDefinition[] {
498
503
  openWorldHint: false,
499
504
  },
500
505
  },
506
+ {
507
+ name: 'auto-capture-review',
508
+ description:
509
+ 'Review and approve pending auto-captured' +
510
+ ' knowledge before storage.',
511
+ inputSchema: {
512
+ type: 'object',
513
+ properties: {
514
+ action: {
515
+ type: 'string',
516
+ enum: ['list', 'approve', 'reject'],
517
+ description: 'Action to perform on pending captures',
518
+ },
519
+ },
520
+ },
521
+ annotations: {
522
+ title: 'Auto-Capture Review',
523
+ readOnlyHint: false,
524
+ destructiveHint: false,
525
+ idempotentHint: true,
526
+ openWorldHint: false,
527
+ },
528
+ },
501
529
  ];
502
530
  }
@@ -99,7 +99,7 @@ export async function handleAgentCreate(
99
99
  });
100
100
 
101
101
  const allKbids = [metaResult.kbid, ...skills];
102
- const docid = await client.groupSections(name, allKbids);
102
+ const docid = await client.groupSections(name, allKbids, 'agent');
103
103
 
104
104
  return {
105
105
  content: [
@@ -0,0 +1,68 @@
1
+ import type { McpWorkerClient } from '../typings/mcp-client.interface.ts';
2
+ import type { McpPromptMessage } from '../typings/prompt-types.interface.ts';
3
+ import { parseAgentMeta } from './parse-agent-meta.function.ts';
4
+ import { buildSkillsText } from './build-skills-text.function.ts';
5
+
6
+ /** Minimal agent document shape returned by retrieveDocument. */
7
+ interface AgentDocument {
8
+ /** Document identifier. */
9
+ readonly docid: string;
10
+ /** Document title. */
11
+ readonly title: string;
12
+ /** Ordered section references. */
13
+ readonly sections: readonly {
14
+ readonly kbid: string;
15
+ readonly position: number;
16
+ }[];
17
+ }
18
+
19
+ /**
20
+ * Handles an MCP `prompts/get` request for an agent prompt.
21
+ *
22
+ * Reads the agent document, extracts its persona from the metadata
23
+ * section, then reads all skill sections and composes the response.
24
+ * Returns an assistant message with the persona and, when skills
25
+ * exist, a user message listing them.
26
+ *
27
+ * @param name - prompt name with `agent:` prefix
28
+ * @param client - worker client used to access the knowledge base
29
+ */
30
+ export async function handleAgentPrompt(
31
+ name: string,
32
+ client: McpWorkerClient,
33
+ ): Promise<McpPromptMessage[]> {
34
+ const docid = name.slice(6);
35
+ const doc = (await client.retrieveDocument(docid)) as AgentDocument;
36
+ const metaSection = doc.sections.at(0);
37
+ const skillRefs = doc.sections.slice(1);
38
+
39
+ let persona = '';
40
+ if (metaSection !== undefined) {
41
+ const metaSections = await client.readSections([
42
+ metaSection.kbid,
43
+ ]);
44
+ const metaContent = metaSections.at(0);
45
+ if (metaContent !== undefined) {
46
+ persona = parseAgentMeta(metaContent.content).persona;
47
+ }
48
+ }
49
+
50
+ const messages: McpPromptMessage[] = [
51
+ { role: 'assistant', content: { type: 'text', text: persona } },
52
+ ];
53
+
54
+ if (skillRefs.length === 0) return messages;
55
+
56
+ const skillKbids = skillRefs.map((s) => s.kbid);
57
+ const skillSections = await client.readSections(skillKbids);
58
+ const skillsText = buildSkillsText(skillSections);
59
+
60
+ if (skillsText !== null) {
61
+ messages.push({
62
+ role: 'user',
63
+ content: { type: 'text', text: skillsText },
64
+ });
65
+ }
66
+
67
+ return messages;
68
+ }
@@ -0,0 +1,202 @@
1
+ import type { McpWorkerClient } from '../typings/mcp-client.interface.ts';
2
+ import type {
3
+ McpRequest,
4
+ McpResponse,
5
+ } from '../typings/mcp-types.interface.ts';
6
+ import type { McpLogLevel } from '../typings/log-types.interface.ts';
7
+ import type {
8
+ McpCompletionRef,
9
+ McpCompletionArgument,
10
+ } from '../typings/mcp-completion.interface.ts';
11
+ import type { McpServerState } from '../typings/mcp-server-state.interface.ts';
12
+ import { createToolDefinitions } from './create-tool-definitions.function.ts';
13
+ import { createResourceTemplates } from './create-resource-templates.function.ts';
14
+ import { handleToolCall } from './handle-tool-call.function.ts';
15
+ import { handleResourceRead } from './handle-resource-read.function.ts';
16
+ import { createPromptDefinitions } from './create-prompt-definitions.function.ts';
17
+ import { handlePromptGet } from './handle-prompt-get.function.ts';
18
+ import { handleCompletion } from './handle-completion.function.ts';
19
+ import { handleRootsList } from './handle-roots-list.function.ts';
20
+ import {
21
+ METHOD_NOT_FOUND,
22
+ RESOURCE_NOT_FOUND,
23
+ } from '../constants/mcp-error-codes.constant.ts';
24
+
25
+ /**
26
+ * Routes an MCP JSON-RPC request to the appropriate handler and
27
+ * returns the JSON-RPC response. Mutates `state` for methods that
28
+ * update server-side configuration (logging level, subscriptions,
29
+ * capabilities).
30
+ *
31
+ * @param request - the parsed MCP request
32
+ * @param client - worker client for knowledge-base operations
33
+ * @param state - mutable server state shared with `McpServer`
34
+ */
35
+ export async function handleMcpRequest(
36
+ request: McpRequest,
37
+ client: McpWorkerClient,
38
+ state: McpServerState,
39
+ ): Promise<McpResponse> {
40
+ const id = request.id as number | string;
41
+
42
+ switch (request.method) {
43
+ case 'initialize': {
44
+ const params = request.params ?? {};
45
+ const caps = params['capabilities'];
46
+ state.hostCapabilities = caps
47
+ ? (caps as Record<string, unknown>)
48
+ : null;
49
+ return {
50
+ jsonrpc: '2.0',
51
+ id,
52
+ result: {
53
+ protocolVersion: '2025-11-25',
54
+ serverInfo: { name: 'kbdb', version: '0.1.0' },
55
+ capabilities: {
56
+ tools: {},
57
+ resources: { subscribe: true },
58
+ prompts: {},
59
+ logging: {},
60
+ completions: {},
61
+ },
62
+ },
63
+ };
64
+ }
65
+
66
+ case 'ping':
67
+ return { jsonrpc: '2.0', id, result: {} };
68
+
69
+ case 'tools/list':
70
+ return {
71
+ jsonrpc: '2.0',
72
+ id,
73
+ result: { tools: createToolDefinitions() },
74
+ };
75
+
76
+ case 'resources/list':
77
+ return { jsonrpc: '2.0', id, result: { resources: [] } };
78
+
79
+ case 'resources/templates/list':
80
+ return {
81
+ jsonrpc: '2.0',
82
+ id,
83
+ result: { resourceTemplates: createResourceTemplates() },
84
+ };
85
+
86
+ case 'tools/call': {
87
+ const params = request.params ?? {};
88
+ const rawName = params['name'];
89
+ const name = typeof rawName === 'string' ? rawName : '';
90
+ const args = (params['arguments'] ?? {}) as Record<
91
+ string,
92
+ unknown
93
+ >;
94
+ const result = await handleToolCall(client, name, args);
95
+ return { jsonrpc: '2.0', id, result };
96
+ }
97
+
98
+ case 'resources/read': {
99
+ const params = request.params ?? {};
100
+ const rawUri = params['uri'];
101
+ const uri = typeof rawUri === 'string' ? rawUri : '';
102
+ try {
103
+ const result = await handleResourceRead(client, uri);
104
+ return { jsonrpc: '2.0', id, result };
105
+ } catch (err) {
106
+ return {
107
+ jsonrpc: '2.0',
108
+ id,
109
+ error: {
110
+ code: RESOURCE_NOT_FOUND,
111
+ message:
112
+ err instanceof Error ? err.message : String(err),
113
+ },
114
+ };
115
+ }
116
+ }
117
+
118
+ case 'prompts/list': {
119
+ const skills = await client.listByType('skill');
120
+ const agents = await client.listDocumentsByType('agent');
121
+ const prompts = createPromptDefinitions(skills, agents);
122
+ return { jsonrpc: '2.0', id, result: { prompts } };
123
+ }
124
+
125
+ case 'prompts/get': {
126
+ const params = request.params ?? {};
127
+ const name =
128
+ typeof params['name'] === 'string' ? params['name'] : '';
129
+ const promptArgs = (params['arguments'] ?? {}) as Record<
130
+ string,
131
+ string
132
+ >;
133
+ try {
134
+ const messages = await handlePromptGet(
135
+ name,
136
+ promptArgs,
137
+ client,
138
+ );
139
+ return { jsonrpc: '2.0', id, result: { messages } };
140
+ } catch (err) {
141
+ return {
142
+ jsonrpc: '2.0',
143
+ id,
144
+ error: {
145
+ code: RESOURCE_NOT_FOUND,
146
+ message:
147
+ err instanceof Error ? err.message : String(err),
148
+ },
149
+ };
150
+ }
151
+ }
152
+
153
+ case 'completion/complete': {
154
+ const params = request.params ?? {};
155
+ const ref = params['ref'] as McpCompletionRef;
156
+ const argument = (params['argument'] ?? {
157
+ name: '',
158
+ value: '',
159
+ }) as McpCompletionArgument;
160
+ const result = await handleCompletion(ref, argument, client);
161
+ return { jsonrpc: '2.0', id, result };
162
+ }
163
+
164
+ case 'roots/list': {
165
+ const roots = handleRootsList(state.contextPath);
166
+ return { jsonrpc: '2.0', id, result: { roots } };
167
+ }
168
+
169
+ case 'logging/setLevel': {
170
+ const params = request.params ?? {};
171
+ const level = params['level'] as McpLogLevel | undefined;
172
+ state.logLevel = level ?? null;
173
+ return { jsonrpc: '2.0', id, result: {} };
174
+ }
175
+
176
+ case 'resources/subscribe': {
177
+ const params = request.params ?? {};
178
+ const uri =
179
+ typeof params['uri'] === 'string' ? params['uri'] : '';
180
+ state.subscriptions.add(uri);
181
+ return { jsonrpc: '2.0', id, result: {} };
182
+ }
183
+
184
+ case 'resources/unsubscribe': {
185
+ const params = request.params ?? {};
186
+ const uri =
187
+ typeof params['uri'] === 'string' ? params['uri'] : '';
188
+ state.subscriptions.delete(uri);
189
+ return { jsonrpc: '2.0', id, result: {} };
190
+ }
191
+
192
+ default:
193
+ return {
194
+ jsonrpc: '2.0',
195
+ id,
196
+ error: {
197
+ code: METHOD_NOT_FOUND,
198
+ message: `Method not found: ` + request.method,
199
+ },
200
+ };
201
+ }
202
+ }
@@ -15,10 +15,8 @@ interface ReadSection {
15
15
  readonly content: string;
16
16
  }
17
17
 
18
- /** Minimal agent document shape returned by retrieveDocument. */
18
+ /** Minimal agent document shape from listDocumentsByType. */
19
19
  interface AgentDocument {
20
- /** Document identifier. */
21
- readonly docid: string;
22
20
  /** Document title. */
23
21
  readonly title: string;
24
22
  /** Ordered section references. */
@@ -86,17 +84,24 @@ function buildSkillsText(skillSections: ReadSection[]): string | null {
86
84
  /**
87
85
  * Handles an MCP `prompts/get` request for an agent prompt.
88
86
  *
89
- * Reads the agent document, extracts its persona from the metadata
90
- * section, then reads all skill sections and composes the response.
91
- * Returns an assistant message with the persona and, when skills
92
- * exist, a user message listing them.
87
+ * Looks up the agent by title via `listDocumentsByType('agent')`,
88
+ * extracts its persona from the metadata section, then reads all
89
+ * skill sections and composes the response. Returns an assistant
90
+ * message with the persona and, when skills exist, a user message
91
+ * listing them.
93
92
  */
94
93
  async function handleAgentPrompt(
95
94
  name: string,
96
95
  client: McpWorkerClient,
97
96
  ): Promise<McpPromptMessage[]> {
98
- const docid = name.slice(6);
99
- const doc = (await client.retrieveDocument(docid)) as AgentDocument;
97
+ const agentName = name.slice(6);
98
+ const agents = await client.listDocumentsByType('agent');
99
+ const doc = agents.find((a) => a.title === agentName) as
100
+ | AgentDocument
101
+ | undefined;
102
+ if (!doc) {
103
+ throw new Error('agent not found: ' + agentName);
104
+ }
100
105
  const sections = doc.sections;
101
106
 
102
107
  const metaSection = sections.at(0);
@@ -192,9 +197,10 @@ async function handleSkillPrompt(
192
197
  * substitutes `{{argName}}` placeholders in the body, and returns a
193
198
  * single user message.
194
199
  *
195
- * For agent prompts: reads the agent document via `retrieveDocument`,
196
- * builds an assistant message from the persona section, and (when
197
- * skills exist) a user message listing their names and descriptions.
200
+ * For agent prompts: looks up the agent by title via
201
+ * `listDocumentsByType('agent')`, builds an assistant message from
202
+ * the persona section, and (when skills exist) a user message
203
+ * listing their names and descriptions.
198
204
  *
199
205
  * @param name - prompt name from the MCP request
200
206
  * @param promptArgs - argument key-value map from the MCP request
@@ -0,0 +1,44 @@
1
+ import type { McpWorkerClient } from '../typings/mcp-client.interface.ts';
2
+ import type { McpPromptMessage } from '../typings/prompt-types.interface.ts';
3
+
4
+ /**
5
+ * Handles an MCP `prompts/get` request for a skill prompt.
6
+ *
7
+ * Looks up the skill by name in the `listByType('skill')` results,
8
+ * picks the most recent match (last occurrence), parses its body,
9
+ * and substitutes `{{argName}}` placeholders from `promptArgs`.
10
+ * Unresolved placeholders are left as-is.
11
+ *
12
+ * @param name - skill prompt name to look up
13
+ * @param promptArgs - argument key-value map from the MCP request
14
+ * @param client - worker client used to access the knowledge base
15
+ * @throws {Error} when no skill with the given name is found
16
+ */
17
+ export async function handleSkillPrompt(
18
+ name: string,
19
+ promptArgs: Record<string, string>,
20
+ client: McpWorkerClient,
21
+ ): Promise<McpPromptMessage[]> {
22
+ const sections = await client.listByType('skill');
23
+ let matchContent: string | undefined;
24
+ for (const sec of sections) {
25
+ if (sec.title === name) {
26
+ matchContent = sec.content;
27
+ }
28
+ }
29
+ if (matchContent === undefined) {
30
+ throw new Error(`Prompt not found: ${name}`);
31
+ }
32
+
33
+ const parsed = JSON.parse(matchContent) as Record<string, unknown>;
34
+ const body =
35
+ typeof parsed['body'] === 'string' ? parsed['body'] : '';
36
+
37
+ const rendered = body.replace(
38
+ /\{\{(\w+)\}\}/g,
39
+ (_match, key: string) =>
40
+ key in promptArgs ? (promptArgs[key] ?? _match) : _match,
41
+ );
42
+
43
+ return [{ role: 'user', content: { type: 'text', text: rendered } }];
44
+ }
@@ -0,0 +1,24 @@
1
+ import type { ToolCallResult } from '../typings/tool-call-result.model.ts';
2
+
3
+ /**
4
+ * Handles the `auto-capture-review` MCP tool call.
5
+ *
6
+ * Returns a stub response indicating no pending captures are
7
+ * available. Full implementation requires wiring the auto-capture
8
+ * controller into the MCP server state.
9
+ *
10
+ * @param _args - tool arguments; `action` may be list, approve,
11
+ * or reject
12
+ */
13
+ export function handleToolAutoCaptureReview(
14
+ _args: Record<string, unknown>,
15
+ ): Promise<ToolCallResult> {
16
+ return Promise.resolve({
17
+ content: [
18
+ {
19
+ type: 'text' as const,
20
+ text: 'No pending auto-captured knowledge entries.',
21
+ },
22
+ ],
23
+ });
24
+ }
@@ -124,6 +124,8 @@ export async function handleToolCall(
124
124
  return await handleAgentGet(client, args);
125
125
  case 'agent-delete':
126
126
  return await handleAgentDelete(client, args);
127
+ case 'auto-capture-review':
128
+ return handleAutoCaptureReview();
127
129
  default:
128
130
  return {
129
131
  content: [
@@ -157,6 +159,7 @@ async function handleSearch(
157
159
  mode: args['mode'] as string | undefined,
158
160
  limit: args['limit'] as number | undefined,
159
161
  offset: args['offset'] as number | undefined,
162
+ algo: args['algo'] as string | undefined,
160
163
  });
161
164
 
162
165
  const stripped = {
@@ -226,6 +229,7 @@ async function handleLearn(
226
229
  near_duplicates: (result.near_duplicates ?? []).map((d) => ({
227
230
  kbid: d.kbid,
228
231
  similarity: d.similarity,
232
+ ...(d.method !== undefined ? { method: d.method } : {}),
229
233
  })),
230
234
  };
231
235
  return {
@@ -522,6 +526,20 @@ async function handleSkillDelete(
522
526
  };
523
527
  }
524
528
 
529
+ function handleAutoCaptureReview(): ToolCallResult {
530
+ return {
531
+ content: [
532
+ {
533
+ type: 'text',
534
+ text: JSON.stringify({
535
+ pending: [],
536
+ message: 'No pending auto-captured knowledge entries.',
537
+ }),
538
+ },
539
+ ],
540
+ };
541
+ }
542
+
525
543
  async function handleExport(
526
544
  client: McpWorkerClient,
527
545
  args: Record<string, unknown>,
@@ -0,0 +1,21 @@
1
+ import type { McpWorkerClient } from '../typings/mcp-client.interface.ts';
2
+ import type { ToolCallResult } from '../typings/tool-call-result.model.ts';
3
+
4
+ /**
5
+ * Handles the `check` MCP tool call.
6
+ *
7
+ * Runs an integrity check on the knowledge base and returns the
8
+ * report as formatted JSON.
9
+ *
10
+ * @param client - the worker client used to execute operations
11
+ */
12
+ export async function handleToolCheck(
13
+ client: McpWorkerClient,
14
+ ): Promise<ToolCallResult> {
15
+ const report = await client.integrityCheck();
16
+ return {
17
+ content: [
18
+ { type: 'text', text: JSON.stringify(report, null, 2) },
19
+ ],
20
+ };
21
+ }
@@ -0,0 +1,23 @@
1
+ import type { McpWorkerClient } from '../typings/mcp-client.interface.ts';
2
+ import type { ToolCallResult } from '../typings/tool-call-result.model.ts';
3
+ import { asStringArray } from './as-string-array.function.ts';
4
+
5
+ /**
6
+ * Handles the `content` MCP tool call.
7
+ *
8
+ * Composes a rendered Markdown document from the given identifiers
9
+ * and returns the result as JSON.
10
+ *
11
+ * @param client - the worker client used to execute operations
12
+ * @param args - tool arguments from the MCP request
13
+ */
14
+ export async function handleToolContent(
15
+ client: McpWorkerClient,
16
+ args: Record<string, unknown>,
17
+ ): Promise<ToolCallResult> {
18
+ const ids = asStringArray(args['ids']);
19
+ const result = await client.content(ids);
20
+ return {
21
+ content: [{ type: 'text', text: JSON.stringify(result) }],
22
+ };
23
+ }