@dikolab/kbdb 0.3.0 → 0.3.2

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 (428) hide show
  1. package/README.md +89 -120
  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/cli.md +9 -0
  211. package/docs/details/mcp-server.md +5 -3
  212. package/docs/details/search-and-ranking.md +55 -0
  213. package/docs/goals/auto-capture.md +378 -0
  214. package/docs/goals/benchmarking.md +296 -0
  215. package/docs/goals/concurrency.md +259 -0
  216. package/docs/goals/hybrid-search.md +436 -0
  217. package/docs/goals/semantic-dedup.md +229 -0
  218. package/docs/goals/sync.md +217 -0
  219. package/docs/modules/rust/fs-database/indexes/vectors.md +110 -0
  220. package/docs/modules/typescript/shared/auto-capture/module.md +73 -0
  221. package/docs/modules/typescript/shared/embedding/functions.md +94 -0
  222. package/docs/modules/typescript/shared/embedding/module.md +71 -0
  223. package/docs/modules/typescript/shared/embedding/typings.md +122 -0
  224. package/docs/overview.md +171 -167
  225. package/docs/release-notes/0.2.0.md +3 -3
  226. package/docs/release-notes/0.3.0.md +89 -0
  227. package/docs/release-notes/0.3.1.md +121 -0
  228. package/docs/release-notes/0.3.2.md +64 -0
  229. package/docs/release-notes/README.md +3 -0
  230. package/package.json +1 -1
  231. package/src/shared/auto-capture/classes/auto-capture-controller.class.ts +62 -0
  232. package/src/shared/auto-capture/constants/auto-capture-defaults.constant.ts +15 -0
  233. package/src/shared/auto-capture/functions/build-capture-prompt.function.ts +27 -0
  234. package/src/shared/auto-capture/functions/evaluate-trigger.function.ts +50 -0
  235. package/src/shared/auto-capture/index.ts +7 -0
  236. package/src/shared/auto-capture/typings/auto-capture-config.interface.ts +13 -0
  237. package/src/shared/auto-capture/typings/auto-capture-state.interface.ts +13 -0
  238. package/src/shared/auto-capture/typings/auto-capture-trigger.interface.ts +7 -0
  239. package/src/shared/cli/constants/global-help.constant.ts +73 -0
  240. package/src/shared/cli/constants/leaf-help.constant.ts +219 -0
  241. package/src/shared/cli/constants/memory-protocol-body.constant.ts +39 -0
  242. package/src/shared/cli/constants/query-guidance-body.constant.ts +37 -0
  243. package/src/shared/cli/constants/subcommand-help.constant.ts +195 -0
  244. package/src/shared/cli/functions/collect-files.function.ts +55 -0
  245. package/src/shared/cli/functions/compute-section-kbid.function.ts +49 -0
  246. package/src/shared/cli/functions/format-mcp-output.function.ts +41 -0
  247. package/src/shared/cli/functions/format-text-output.function.ts +42 -0
  248. package/src/shared/cli/functions/generate-group-help.function.ts +41 -0
  249. package/src/shared/cli/functions/handle-data-command.function.ts +67 -0
  250. package/src/shared/cli/functions/handle-mcp.function.ts +56 -0
  251. package/src/shared/cli/functions/handle-migrate.function.ts +64 -0
  252. package/src/shared/cli/functions/hydrate-search-previews.function.ts +29 -0
  253. package/src/shared/cli/functions/parse-args.function.ts +3 -0
  254. package/src/shared/cli/functions/resolve-skill-names.function.ts +43 -0
  255. package/src/shared/cli/functions/run-search.function.ts +2 -0
  256. package/src/shared/cli/functions/version-gate.function.ts +44 -0
  257. package/src/shared/cli/functions/wrap-command.function.ts +34 -0
  258. package/src/shared/cli/typings/agent-create-client.interface.ts +47 -0
  259. package/src/shared/cli/typings/agent-get-client.interface.ts +39 -0
  260. package/src/shared/cli/typings/check-client.interface.ts +66 -0
  261. package/src/shared/cli/typings/cli-deps.interface.ts +54 -0
  262. package/src/shared/cli/typings/cli-options.interface.ts +2 -0
  263. package/src/shared/cli/typings/disconnectable-client.interface.ts +29 -0
  264. package/src/shared/cli/typings/dispatch-client.type.ts +46 -0
  265. package/src/shared/cli/typings/learn-client.interface.ts +53 -0
  266. package/src/shared/cli/typings/learn-io.interface.ts +5 -0
  267. package/src/shared/cli/typings/search-client.interface.ts +73 -0
  268. package/src/shared/embedding/classes/null-embedding-provider.class.ts +29 -0
  269. package/src/shared/embedding/constants/near-duplicate-thresholds.constant.ts +17 -0
  270. package/src/shared/embedding/functions/build-vector-index.function.ts +79 -0
  271. package/src/shared/embedding/functions/cosine-similarity.function.ts +31 -0
  272. package/src/shared/embedding/functions/detect-near-duplicates.function.ts +69 -0
  273. package/src/shared/embedding/functions/jaccard-coefficient.function.ts +26 -0
  274. package/src/shared/embedding/functions/read-vector-index-meta.function.ts +44 -0
  275. package/src/shared/embedding/functions/rrf-fuse.function.ts +33 -0
  276. package/src/shared/embedding/functions/search-vectors.function.ts +59 -0
  277. package/src/shared/embedding/index.ts +20 -0
  278. package/src/shared/embedding/typings/embedding-config.interface.ts +23 -0
  279. package/src/shared/embedding/typings/embedding-provider.interface.ts +25 -0
  280. package/src/shared/embedding/typings/near-duplicate-candidate.model.ts +25 -0
  281. package/src/shared/embedding/typings/near-duplicate-result.model.ts +26 -0
  282. package/src/shared/embedding/typings/vector-index-entry.model.ts +13 -0
  283. package/src/shared/embedding/typings/vector-index-meta.model.ts +14 -0
  284. package/src/shared/embedding/typings/vector-search-result.model.ts +8 -0
  285. package/src/shared/mcp/classes/mcp-server.class.ts +6 -3
  286. package/src/shared/mcp/constants/tool-agent-create.constant.ts +39 -0
  287. package/src/shared/mcp/constants/tool-agent-delete.constant.ts +26 -0
  288. package/src/shared/mcp/constants/tool-agent-get.constant.ts +24 -0
  289. package/src/shared/mcp/constants/tool-agent-list.constant.ts +18 -0
  290. package/src/shared/mcp/constants/tool-auto-capture-review.constant.ts +32 -0
  291. package/src/shared/mcp/constants/tool-check.constant.ts +21 -0
  292. package/src/shared/mcp/constants/tool-content.constant.ts +29 -0
  293. package/src/shared/mcp/constants/tool-export.constant.ts +27 -0
  294. package/src/shared/mcp/constants/tool-gc.constant.ts +21 -0
  295. package/src/shared/mcp/constants/tool-learn.constant.ts +58 -0
  296. package/src/shared/mcp/constants/tool-rebuild.constant.ts +21 -0
  297. package/src/shared/mcp/constants/tool-recall.constant.ts +36 -0
  298. package/src/shared/mcp/constants/tool-retrieve.constant.ts +31 -0
  299. package/src/shared/mcp/constants/tool-search.constant.ts +51 -0
  300. package/src/shared/mcp/constants/tool-skill-delete.constant.ts +24 -0
  301. package/src/shared/mcp/constants/tool-skill-get.constant.ts +27 -0
  302. package/src/shared/mcp/constants/tool-skill-learn.constant.ts +37 -0
  303. package/src/shared/mcp/constants/tool-skill-list.constant.ts +18 -0
  304. package/src/shared/mcp/constants/tool-status.constant.ts +20 -0
  305. package/src/shared/mcp/constants/tool-unlearn.constant.ts +25 -0
  306. package/src/shared/mcp/functions/as-boolean-or-undefined.function.ts +11 -0
  307. package/src/shared/mcp/functions/as-string-array-or-undefined.function.ts +17 -0
  308. package/src/shared/mcp/functions/as-string-array.function.ts +15 -0
  309. package/src/shared/mcp/functions/as-string.function.ts +10 -0
  310. package/src/shared/mcp/functions/build-skills-text.function.ts +43 -0
  311. package/src/shared/mcp/functions/create-tool-definitions.function.ts +28 -0
  312. package/src/shared/mcp/functions/handle-agent-create.function.ts +1 -1
  313. package/src/shared/mcp/functions/handle-agent-prompt.function.ts +68 -0
  314. package/src/shared/mcp/functions/handle-mcp-request.function.ts +202 -0
  315. package/src/shared/mcp/functions/handle-prompt-get.function.ts +18 -12
  316. package/src/shared/mcp/functions/handle-skill-prompt.function.ts +44 -0
  317. package/src/shared/mcp/functions/handle-tool-auto-capture-review.function.ts +24 -0
  318. package/src/shared/mcp/functions/handle-tool-call.function.ts +18 -0
  319. package/src/shared/mcp/functions/handle-tool-check.function.ts +21 -0
  320. package/src/shared/mcp/functions/handle-tool-content.function.ts +23 -0
  321. package/src/shared/mcp/functions/handle-tool-export.function.ts +25 -0
  322. package/src/shared/mcp/functions/handle-tool-gc.function.ts +21 -0
  323. package/src/shared/mcp/functions/handle-tool-learn.function.ts +69 -0
  324. package/src/shared/mcp/functions/handle-tool-rebuild.function.ts +21 -0
  325. package/src/shared/mcp/functions/handle-tool-retrieve.function.ts +40 -0
  326. package/src/shared/mcp/functions/handle-tool-search.function.ts +47 -0
  327. package/src/shared/mcp/functions/handle-tool-skill-delete.function.ts +34 -0
  328. package/src/shared/mcp/functions/handle-tool-skill-get.function.ts +59 -0
  329. package/src/shared/mcp/functions/handle-tool-skill-learn.function.ts +61 -0
  330. package/src/shared/mcp/functions/handle-tool-skill-list.function.ts +39 -0
  331. package/src/shared/mcp/functions/handle-tool-status.function.ts +21 -0
  332. package/src/shared/mcp/functions/handle-tool-unlearn.function.ts +24 -0
  333. package/src/shared/mcp/functions/parse-agent-meta.function.ts +27 -0
  334. package/src/shared/mcp/functions/parse-skill-arguments.function.ts +36 -0
  335. package/src/shared/mcp/functions/read-agent-meta.function.ts +41 -0
  336. package/src/shared/mcp/functions/resolve-skill-refs.function.ts +50 -0
  337. package/src/shared/mcp/functions/run-startup-health-check.function.ts +34 -0
  338. package/src/shared/mcp/typings/mcp-capabilities.interface.ts +16 -0
  339. package/src/shared/mcp/typings/mcp-client.interface.ts +2 -0
  340. package/src/shared/mcp/typings/mcp-completion.interface.ts +45 -0
  341. package/src/shared/mcp/typings/mcp-content-result.model.ts +9 -0
  342. package/src/shared/mcp/typings/mcp-export-result.model.ts +11 -0
  343. package/src/shared/mcp/typings/mcp-gc-result.model.ts +15 -0
  344. package/src/shared/mcp/typings/mcp-integrity-check-result.model.ts +17 -0
  345. package/src/shared/mcp/typings/mcp-integrity-error.model.ts +15 -0
  346. package/src/shared/mcp/typings/mcp-notification.interface.ts +9 -0
  347. package/src/shared/mcp/typings/mcp-rebuild-result.model.ts +9 -0
  348. package/src/shared/mcp/typings/mcp-request.interface.ts +11 -0
  349. package/src/shared/mcp/typings/mcp-resource-result.interface.ts +12 -0
  350. package/src/shared/mcp/typings/mcp-resource-template.interface.ts +11 -0
  351. package/src/shared/mcp/typings/mcp-response.interface.ts +18 -0
  352. package/src/shared/mcp/typings/mcp-server-info.interface.ts +7 -0
  353. package/src/shared/mcp/typings/mcp-server-state.interface.ts +17 -0
  354. package/src/shared/mcp/typings/mcp-tool-annotations.interface.ts +32 -0
  355. package/src/shared/mcp/typings/mcp-tool-definition.interface.ts +16 -0
  356. package/src/shared/mcp/typings/mcp-tool-result.interface.ts +19 -0
  357. package/src/shared/mcp/typings/mcp-worker-client.interface.ts +243 -0
  358. package/src/shared/mcp/typings/tool-call-result.model.ts +18 -0
  359. package/src/shared/sync/functions/build-import-report.function.ts +40 -0
  360. package/src/shared/sync/functions/parse-export-entry.function.ts +45 -0
  361. package/src/shared/sync/functions/resolve-conflict.function.ts +31 -0
  362. package/src/shared/sync/functions/serialize-export-entry.function.ts +18 -0
  363. package/src/shared/sync/index.ts +9 -0
  364. package/src/shared/sync/typings/conflict-resolution.type.ts +8 -0
  365. package/src/shared/sync/typings/export-entry.interface.ts +13 -0
  366. package/src/shared/sync/typings/export-options.interface.ts +9 -0
  367. package/src/shared/sync/typings/import-options.interface.ts +7 -0
  368. package/src/shared/sync/typings/import-report.interface.ts +15 -0
  369. package/src/shared/wasm-codec/functions/decode-one-recall-result.function.ts +86 -0
  370. package/src/shared/wasm-codec/functions/decode-option-string.function.ts +24 -0
  371. package/src/shared/wasm-codec/functions/decode-recall-document.function.ts +59 -0
  372. package/src/shared/wasm-codec/functions/decode-recall-reference.function.ts +52 -0
  373. package/src/shared/wasm-codec/functions/decode-recall-sibling.function.ts +43 -0
  374. package/src/shared/wasm-codec/functions/decode-section-match.function.ts +80 -0
  375. package/src/shared/wasm-codec/functions/decode-section-record-trailing.function.ts +75 -0
  376. package/src/shared/wasm-codec/functions/decode-section-record.function.ts +85 -0
  377. package/src/shared/wasm-codec/functions/decode-section-type.function.ts +30 -0
  378. package/src/shared/wasm-codec/functions/decode-wasm-list.function.ts +31 -0
  379. package/src/shared/wasm-codec/typings/add-section-input.model.ts +45 -0
  380. package/src/shared/wasm-codec/typings/add-section-result.model.ts +28 -0
  381. package/src/shared/wasm-codec/typings/document-manifest.model.ts +20 -0
  382. package/src/shared/wasm-codec/typings/document-section.model.ts +12 -0
  383. package/src/shared/wasm-codec/typings/item-decoder.type.ts +10 -0
  384. package/src/shared/wasm-codec/typings/near-duplicate.model.ts +16 -0
  385. package/src/shared/wasm-codec/typings/paged-search-result.model.ts +22 -0
  386. package/src/shared/wasm-codec/typings/section-match.model.ts +31 -0
  387. package/src/shared/wasm-codec/typings/section-record-trailing.model.ts +38 -0
  388. package/src/shared/wasm-codec/typings/section-record.model.ts +66 -0
  389. package/src/shared/wasm-codec/typings/section-type-result.model.ts +12 -0
  390. package/src/shared/worker-client/functions/handle-ipc-data.function.ts +49 -0
  391. package/src/shared/worker-client/functions/send-ipc-request.function.ts +39 -0
  392. package/src/shared/worker-client/typings/add-section-result.model.ts +2 -0
  393. package/src/shared/worker-client/typings/json-rpc-response.interface.ts +17 -0
  394. package/src/shared/worker-client/typings/pending-call.interface.ts +7 -0
  395. package/src/shared/worker-client/typings/recall-document.model.ts +16 -0
  396. package/src/shared/worker-client/typings/recall-params.model.ts +15 -0
  397. package/src/shared/worker-client/typings/recall-reference.model.ts +32 -0
  398. package/src/shared/worker-client/typings/recall-sibling.model.ts +11 -0
  399. package/src/shared/worker-client/typings/recall-single-result.model.ts +41 -0
  400. package/src/shared/worker-daemon/classes/ipc-error.class.ts +22 -0
  401. package/src/shared/worker-daemon/constants/wasm-method-map.constant.ts +69 -0
  402. package/src/shared/worker-daemon/functions/build-ipc-error-response.function.ts +16 -0
  403. package/src/shared/worker-daemon/functions/check-catalog-version.function.ts +54 -0
  404. package/src/shared/worker-daemon/functions/check-preconditions.function.ts +28 -0
  405. package/src/shared/worker-daemon/functions/detect-stale-pid.function.ts +33 -0
  406. package/src/shared/worker-daemon/functions/dispatch-request.function.ts +190 -0
  407. package/src/shared/worker-daemon/functions/handle-check-version.function.ts +74 -0
  408. package/src/shared/worker-daemon/functions/handle-config-method.function.ts +27 -0
  409. package/src/shared/worker-daemon/functions/handle-read-ops.function.ts +236 -0
  410. package/src/shared/worker-daemon/functions/handle-write-ops.function.ts +257 -0
  411. package/src/shared/worker-daemon/functions/parse-auto-capture-section.function.ts +51 -0
  412. package/src/shared/worker-daemon/functions/parse-catalog-version.function.ts +20 -0
  413. package/src/shared/worker-daemon/functions/parse-embedding-section.function.ts +38 -0
  414. package/src/shared/worker-daemon/functions/parse-worker-toml.function.ts +104 -0
  415. package/src/shared/worker-daemon/functions/run-startup-integrity-check.function.ts +55 -0
  416. package/src/shared/worker-daemon/functions/scan-near-duplicates.function.ts +92 -0
  417. package/src/shared/worker-daemon/functions/wasm-bridge.function.ts +144 -0
  418. package/src/shared/worker-daemon/functions/wasm-memory-helpers.function.ts +41 -0
  419. package/src/shared/worker-daemon/functions/write-lock.function.ts +49 -0
  420. package/src/shared/worker-daemon/typings/allocator-ref.interface.ts +16 -0
  421. package/src/shared/worker-daemon/typings/daemon-config.interface.ts +7 -0
  422. package/src/shared/worker-daemon/typings/fs-adapter.interface.ts +22 -0
  423. package/src/shared/worker-daemon/typings/handler-context.interface.ts +19 -0
  424. package/src/shared/worker-daemon/typings/memory-ref.interface.ts +13 -0
  425. package/src/shared/worker-daemon/typings/wasm-fn.type.ts +2 -0
  426. package/src/shared/worker-daemon/typings/write-lock.interface.ts +13 -0
  427. package/src/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
  428. package/src/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
@@ -0,0 +1,94 @@
1
+ # embedding/functions -- Embedding Functions
2
+
3
+ **Source:** `src/shared/embedding/functions/`
4
+
5
+ ## embed
6
+
7
+ ```ts
8
+ embed(
9
+ provider: EmbeddingProvider,
10
+ text: string,
11
+ ): Promise<Float32Array>
12
+ ```
13
+
14
+ Computes a single embedding vector for the given text.
15
+ Delegates to the provider's `embed()` method. Returns a
16
+ `Float32Array` of dimensions matching `provider.dimensions()`.
17
+
18
+ Used during `learn` to embed section content and during
19
+ `search` to embed the query string.
20
+
21
+ ## batchEmbed
22
+
23
+ ```ts
24
+ batchEmbed(
25
+ provider: EmbeddingProvider,
26
+ texts: string[],
27
+ ): Promise<Float32Array[]>
28
+ ```
29
+
30
+ Computes embeddings for multiple texts in a single batch.
31
+ More efficient than calling `embed()` in a loop -- providers
32
+ can batch API calls or parallelize ONNX inference. Used
33
+ during `rebuild` to re-embed all sections.
34
+
35
+ ## cosineSimilarity
36
+
37
+ ```ts
38
+ cosineSimilarity(
39
+ a: Float32Array,
40
+ b: Float32Array,
41
+ ): number
42
+ ```
43
+
44
+ Computes the cosine similarity between two vectors. Returns a
45
+ value in [-1, 1], where 1 means identical direction. Used by
46
+ semantic near-duplicate detection (threshold >= 0.92) and by
47
+ vector search ranking.
48
+
49
+ Both vectors must have the same length (same embedding
50
+ dimensions). Throws if lengths differ.
51
+
52
+ ## buildVectorIndex
53
+
54
+ ```ts
55
+ buildVectorIndex(
56
+ provider: EmbeddingProvider,
57
+ sections: SectionRecord[],
58
+ outPath: string,
59
+ ): Promise<VectorIndexMeta>
60
+ ```
61
+
62
+ Builds the vector index file (`vectors.idx`) from all
63
+ sections. Embeds each section's content via `batchEmbed`,
64
+ writes fixed-width records (kbid + vector) to `outPath`, and
65
+ writes `vectors-meta.toml` alongside it with model name,
66
+ dimensions, and record count.
67
+
68
+ Called by `rebuild` when an embedding provider is configured.
69
+ Returns metadata about the built index.
70
+
71
+ ## searchVectors
72
+
73
+ ```ts
74
+ searchVectors(
75
+ provider: EmbeddingProvider,
76
+ query: string,
77
+ indexPath: string,
78
+ limit: number,
79
+ ): Promise<VectorSearchResult[]>
80
+ ```
81
+
82
+ Performs vector similarity search. Embeds the query, reads
83
+ `vectors.idx`, computes cosine similarity against all stored
84
+ vectors, and returns the top `limit` results sorted by
85
+ similarity descending.
86
+
87
+ Each result includes the kbid and similarity score. The
88
+ results are passed to the RRF fusion step alongside lexical
89
+ search results.
90
+
91
+ Note: This is a brute-force linear scan. For corpus sizes
92
+ under 100k sections, this is fast enough (< 50ms). A future
93
+ version may add approximate nearest neighbor (ANN) indexing
94
+ if scale demands it.
@@ -0,0 +1,71 @@
1
+ # embedding -- Pluggable Embedding Computation
2
+
3
+ **Source:** `src/shared/embedding/`
4
+
5
+ ## Responsibility
6
+
7
+ Pluggable embedding computation for hybrid lexical+vector search.
8
+ Provides the `EmbeddingProvider` interface and implementations for
9
+ different backends. Used by the worker daemon to embed sections at
10
+ learn time and to compute query embeddings at search time.
11
+
12
+ ## Directory Layout
13
+
14
+ ```
15
+ src/shared/embedding/
16
+ index.ts
17
+ functions/
18
+ embed.function.ts
19
+ batch-embed.function.ts
20
+ cosine-similarity.function.ts
21
+ build-vector-index.function.ts
22
+ search-vectors.function.ts
23
+ providers/
24
+ null-embedding.provider.ts
25
+ onnx-embedding.provider.ts
26
+ api-embedding.provider.ts
27
+ typings/
28
+ embedding-provider.typing.ts
29
+ embedding-config.typing.ts
30
+ vector-search-result.typing.ts
31
+ vector-index-meta.typing.ts
32
+ ```
33
+
34
+ ## Exports
35
+
36
+ - [Functions](functions.md) -- `embed`, `batchEmbed`,
37
+ `cosineSimilarity`, `buildVectorIndex`, `searchVectors`
38
+ - [Typings](typings.md) -- `EmbeddingProvider`, `EmbeddingConfig`,
39
+ `VectorSearchResult`, `VectorIndexMeta`
40
+
41
+ ## Providers
42
+
43
+ Three implementations of the `EmbeddingProvider` interface:
44
+
45
+ - **NullEmbeddingProvider** -- No-op provider used when no embedding
46
+ backend is configured. Returns empty vectors. Allows all
47
+ lexical-only paths to work unchanged.
48
+ - **OnnxEmbeddingProvider** -- Local inference using ONNX Runtime.
49
+ Loads a model from disk (e.g., `all-MiniLM-L6-v2`). Zero network
50
+ calls, fully offline.
51
+ - **ApiEmbeddingProvider** -- Remote inference via HTTP API (OpenAI,
52
+ Anthropic, or compatible endpoints). Configured via `worker.toml`
53
+ with endpoint URL and API key.
54
+
55
+ ## Dependency Direction
56
+
57
+ ```
58
+ shared/embedding/
59
+ ├── shared/hash/ (content hashing for cache keys)
60
+ └── shared/platform/ (file paths for local models)
61
+
62
+ shared/worker-daemon/
63
+ └── shared/embedding/ (init provider at startup)
64
+
65
+ shared/mcp/
66
+ └── (indirect via worker-client)
67
+ ```
68
+
69
+ The embedding module is a utility module -- it depends only on other
70
+ utility modules. The worker daemon initializes the provider at startup
71
+ based on `worker.toml` config.
@@ -0,0 +1,122 @@
1
+ # embedding/typings -- Embedding Type Definitions
2
+
3
+ *Interfaces and type aliases for the embedding
4
+ module's providers, configuration, and search
5
+ results.*
6
+
7
+ ## Source
8
+
9
+ `src/shared/embedding/typings/`
10
+
11
+ ## Typings
12
+
13
+ ### `EmbeddingProvider`
14
+
15
+ **File:** `embedding-provider.typing.ts`
16
+
17
+ Core abstraction for text embedding. Accepts a batch
18
+ of texts and returns a vector for each. Implemented
19
+ by `NullEmbeddingProvider`, `OnnxEmbeddingProvider`,
20
+ and `ApiEmbeddingProvider`.
21
+
22
+ ```ts
23
+ interface EmbeddingProvider {
24
+ embed(texts: string[]): Promise<Float32Array[]>;
25
+ dimensions(): number;
26
+ modelName(): string;
27
+ }
28
+ ```
29
+
30
+ | Member | Description |
31
+ |--------------|-----------------------------------------|
32
+ | `embed` | Produces one embedding vector per input |
33
+ | | text; accepts an array for batching |
34
+ | | efficiency |
35
+ | `dimensions` | Returns the length of each vector |
36
+ | | (e.g. 384 for MiniLM) |
37
+ | `modelName` | Returns a stable identifier stored in |
38
+ | | `vectors-meta.toml`; used to detect |
39
+ | | model changes that require a rebuild |
40
+
41
+ ### `EmbeddingConfig`
42
+
43
+ **File:** `embedding-config.typing.ts`
44
+
45
+ Configuration read from the `[embedding]` section
46
+ of `worker.toml`. Determines which `EmbeddingProvider`
47
+ implementation to instantiate at daemon startup.
48
+
49
+ ```ts
50
+ interface EmbeddingConfig {
51
+ provider: 'none' | 'onnx' | 'api';
52
+ model?: string;
53
+ apiEndpoint?: string;
54
+ apiKey?: string;
55
+ dimensions?: number;
56
+ }
57
+ ```
58
+
59
+ | Property | Description |
60
+ |---------------|------------------------------------------|
61
+ | `provider` | Selects the backend: `'none'` → |
62
+ | | `NullEmbeddingProvider`; `'onnx'` → |
63
+ | | `OnnxEmbeddingProvider`; `'api'` → |
64
+ | | `ApiEmbeddingProvider` |
65
+ | `model` | Path to the local ONNX model file; |
66
+ | | required when `provider` is `'onnx'` |
67
+ | `apiEndpoint` | Remote HTTP API URL; required when |
68
+ | | `provider` is `'api'` |
69
+ | `apiKey` | Bearer token for the remote API; |
70
+ | | required when `provider` is `'api'` |
71
+ | `dimensions` | Vector length; inferred from the model |
72
+ | | when possible; required for API |
73
+ | | providers that do not report dimensions |
74
+
75
+ ### `VectorSearchResult`
76
+
77
+ **File:** `vector-search-result.typing.ts`
78
+
79
+ A single result from a vector similarity search.
80
+ Used as input to the RRF fusion step alongside
81
+ lexical search results.
82
+
83
+ ```ts
84
+ interface VectorSearchResult {
85
+ kbid: string;
86
+ similarity: number;
87
+ }
88
+ ```
89
+
90
+ | Property | Description |
91
+ |--------------|-----------------------------------------|
92
+ | `kbid` | Knowledge-base identifier of the |
93
+ | | matched section |
94
+ | `similarity` | Cosine similarity score in [-1, 1] |
95
+
96
+ ### `VectorIndexMeta`
97
+
98
+ **File:** `vector-index-meta.typing.ts`
99
+
100
+ Metadata stored in `vectors-meta.toml` alongside
101
+ `vectors.idx`. Used to detect stale indexes: when
102
+ `model` differs from the current provider's
103
+ `modelName()`, vectors must be rebuilt.
104
+
105
+ ```ts
106
+ interface VectorIndexMeta {
107
+ model: string;
108
+ dimensions: number;
109
+ recordCount: number;
110
+ version: number;
111
+ }
112
+ ```
113
+
114
+ | Property | Description |
115
+ |---------------|-----------------------------------------|
116
+ | `model` | `modelName()` value at index build time |
117
+ | `dimensions` | Vector length used when building the |
118
+ | | index |
119
+ | `recordCount` | Number of vectors stored in the index |
120
+ | `version` | Format version; currently `1` |
121
+
122
+ No spec -- typings are compile-time only.
package/docs/overview.md CHANGED
@@ -1,188 +1,192 @@
1
1
  # @dikolab/kbdb -- Knowledge Base Database
2
2
 
3
- *A persistent, file-based knowledge store and MCP server purpose-built for AI agents -- your second brain, on disk.*
3
+ *A file-based knowledge store and MCP server for
4
+ AI agents -- your second brain, on disk.*
4
5
 
5
- ## What Is @dikolab/kbdb?
6
+ ## What Is kbdb?
6
7
 
7
- AI agents operate in ephemeral sessions. They lose context between conversations, forget prior research, and have no built-in way to persist or retrieve knowledge across runs. When an agent needs to recall documentation, search a codebase's API surface, or query a corpus of notes, there is no lightweight, local solution optimized for how agents actually retrieve information -- keyword-driven, section-level, ranked.
8
+ AI agents forget everything between sessions. kbdb
9
+ gives them a searchable, persistent memory.
8
10
 
9
- @dikolab/kbdb is a CLI tool and MCP server that imports documents and code documentation, extracts keywords, builds indexes, and enables ranked search -- all backed by a directory-based file database. No database server, no cloud dependency. A folder on disk is your entire knowledge base.
11
+ Import your documents, and kbdb indexes them
12
+ automatically. Search returns ranked results
13
+ instantly. No database server to install, no cloud
14
+ account to create -- your knowledge base is just a
15
+ folder on disk.
10
16
 
11
- The computationally intensive work -- keyword extraction, indexing, ranking -- is offloaded to a Rust engine compiled to WebAssembly, delivering near-native performance inside a Deno or Node.js runtime. The TypeScript CLI provides the developer-facing interface and MCP server; Rust/WASM does the heavy lifting underneath.
17
+ kbdb works as both a command-line tool and an
18
+ [MCP](https://modelcontextprotocol.io/) server.
19
+ Humans use it from the terminal; AI agents connect
20
+ to it as a tool.
12
21
 
13
22
  ## Who Is This For?
14
23
 
15
- - **AI agent developers** -- Anyone building agentic workflows (with Claude, LangChain, or custom harnesses) who needs persistent, searchable knowledge across sessions.
16
- - **MCP tool authors** -- Developers creating Model Context Protocol servers who need a local knowledge backend their tools can query.
17
- - **Knowledge workers using AI assistants** -- Power users who want their AI to have a second brain -- a searchable, structured store of documentation, research, and reference material that survives session boundaries.
18
- - **CLI-first developers** -- Those who prefer composable command-line tools over GUI applications for managing knowledge.
19
-
20
- ## Core Features
21
-
22
- ### CLI
23
-
24
- 1. **Markdown import and indexing** -- Import `*.md` files, extract keywords and sections, and store them in the file system database.
25
- 2. **Codebase documentation scanning** -- Scan a codebase and import code documentation (TypeDoc, JSDoc, PHPDoc), index it, and store it in the file system database.
26
- 3. **Ranked search** -- Search and display a ranked list of results by section or by whole document, with output in `.md` or `.json` format.
27
-
28
- ### MCP
29
-
30
- 1. **MCP service endpoints** -- Expose the knowledge base as MCP service endpoints for Claude and other AI agents to query, search, and retrieve knowledge programmatically.
31
-
32
- ### Distribution
33
-
34
- This tool is available via **NPM** for Node.js or **JSR** for Deno.
35
-
36
- - **Node.js**: `npm install -g @dikolab/kbdb`
37
- - **Deno**: `deno add @dikolab/kbdb` (via [jsr.io](https://jsr.io))
38
-
39
- ## High-Level Architecture
40
-
41
- The system is organized in five layers. Data flows
42
- downward from user commands or agent requests through
43
- the worker client and daemon into the WASM engine,
44
- which performs heavy processing and manages the file
45
- database.
46
-
47
- ![System Architecture](goals/architecture.svg)
48
-
49
- **The kbdb Command** -- A single executable with two
50
- run modes. CLI mode (`kbdb learn`, `kbdb search`,
51
- `kbdb unlearn`) handles human and script invocation --
52
- each command is a short-lived process. MCP mode
53
- (`kbdb mcp`) starts a long-lived MCP server that AI
54
- agents connect to over stdio.
55
-
56
- **Worker Client** -- Shared TypeScript module imported
57
- by both run modes. Discovers or spawns the worker
58
- daemon and provides a typed async API over IPC.
59
-
60
- **Worker Daemon** -- A detached background process
61
- that loads WASM modules, manages an in-memory cache,
62
- and serves JSON-RPC 2.0 requests over local IPC (Unix
63
- sockets or Windows named pipes). The daemon has no
64
- knowledge of its callers.
65
-
66
- **Rust/WASM Engine** -- Three WASM modules:
67
- `query-parser.wasm` (tokenization, query parsing,
68
- ranking), `fs-database.wasm` (file database I/O), and
69
- `kb-worker.wasm` (imports both, orchestrates). Rust
70
- provides memory safety and performance; WASM provides
71
- portability across runtimes.
72
-
73
- **File Database** -- A structured directory on disk.
74
- No external database process required. Documents,
75
- indexes, keywords, and metadata are stored in a
76
- defined directory layout. The database is portable,
77
- version-controllable, and human-inspectable.
78
-
79
- ## Technology Stack
80
-
81
- | Layer | Technology | Role |
82
- |-------|-----------|------|
83
- | Runtime | Deno (primary), Node.js (compatible) | Executes the CLI, MCP server, and TypeScript orchestration |
84
- | Language | TypeScript | CLI, command parsing, MCP protocol, I/O coordination |
85
- | Engine | Rust compiled to WebAssembly | Keyword processing, indexing, ranking, file DB operations |
86
- | Protocol | MCP (Model Context Protocol) | AI agent integration interface |
87
- | Distribution | NPM (Node.js), JSR (Deno) | Package distribution for both ecosystems |
88
- | Storage | Directory-based file database | Persistent, portable, server-less data storage |
24
+ - **AI agent developers** -- persistent, searchable
25
+ knowledge across agent sessions
26
+ - **MCP tool authors** -- a local knowledge backend
27
+ for Model Context Protocol servers
28
+ - **Knowledge workers** -- a second brain your AI
29
+ assistant can search across conversations
30
+ - **Vibe coders** -- a searchable doc store for
31
+ your AI-assisted projects
32
+ - **CLI-first developers** -- composable commands
33
+ for managing knowledge from the terminal
34
+
35
+ ## What Can It Do?
36
+
37
+ - **Import** Markdown files with automatic keyword
38
+ extraction and indexing
39
+ - **Search** three ways: keyword (default),
40
+ AI similarity, or hybrid (both combined) via
41
+ `--algo`
42
+ - **Auto-fallback** -- loosens your query when
43
+ exact matches return nothing
44
+ - **Recall** sections with progressive context
45
+ (depth 0--3)
46
+ - **Smart updates** -- re-learning a file replaces
47
+ the old version, not duplicates it
48
+ - **Near-duplicate detection** -- warns when
49
+ imported content closely matches existing data
50
+ - **Skills** -- reusable prompt templates with
51
+ fill-in-the-blank arguments
52
+ - **Agents** -- AI profiles combining a persona
53
+ with skills
54
+ - **Auto-capture** -- MCP server proactively
55
+ suggests knowledge to store from conversations
56
+ - **Export and sync** -- snapshot your knowledge
57
+ base for backup or sharing across machines
58
+ - **Verify** database integrity and clean up stale
59
+ data
60
+ - **MCP server** with 20 tools, prompts, resources,
61
+ and completions
62
+
63
+ ### Install
64
+
65
+ ```sh
66
+ # Node.js
67
+ npm install -g @dikolab/kbdb
68
+
69
+ # Deno
70
+ deno add @dikolab/kbdb
71
+ ```
72
+
73
+ ## Architecture
74
+
75
+ Five layers, top to bottom:
76
+
77
+ ```
78
+ User / AI Agent
79
+ -> kbdb command (CLI or MCP mode)
80
+ -> Worker Client (TypeScript IPC)
81
+ -> Worker Daemon (background process)
82
+ -> Rust/WASM Engine
83
+ -> File Database (folder on disk)
84
+ ```
85
+
86
+ **kbdb command** -- One executable, two modes. CLI
87
+ mode runs short-lived commands (`learn`, `search`,
88
+ `recall`). MCP mode starts a long-lived server for
89
+ AI agents over stdio.
90
+
91
+ **Worker Client** -- Connects to the background
92
+ daemon and gives your code a typed API.
93
+
94
+ **Worker Daemon** -- Background process that loads
95
+ the search engine, caches data in memory, and
96
+ handles requests.
97
+
98
+ **Search Engine** -- Compiled from Rust to
99
+ WebAssembly for speed. Three modules handle
100
+ tokenization, indexing, ranking, and file I/O.
101
+
102
+ **File Database** -- Structured folder on disk.
103
+ No server process. Portable, version-controllable,
104
+ and human-readable.
105
+
106
+ ### Technology Stack
107
+
108
+ | Layer | Technology | What it does |
109
+ |-------|-----------|--------------|
110
+ | Runtime | Node.js, Deno | Runs the tools |
111
+ | Language | TypeScript | CLI, MCP server, I/O |
112
+ | Engine | Rust -> WebAssembly | Fast indexing and search |
113
+ | Protocol | MCP | AI agent integration |
114
+ | Distribution | NPM, JSR | Install from either |
115
+ | Storage | File database | Your data, in a folder |
89
116
 
90
117
  ## Design Principles
91
118
 
92
- 1. **Offline-first, server-less** -- No database server, no cloud dependency. A directory on disk is the entire database. Works anywhere a filesystem exists.
93
- 2. **AI-agent-native** -- Designed from the ground up to be invoked by AI agents, not just humans. Commands, output formats, and the MCP interface prioritize machine consumption.
94
- 3. **MCP-first integration** -- The MCP server is a primary interface, not an afterthought. AI agents connect to the knowledge base as naturally as they connect to any other MCP service.
95
- 4. **Performance through Rust/WASM** -- Computationally intensive work runs in compiled Rust via WebAssembly, keeping the TypeScript layer thin and the heavy processing fast.
96
- 5. **Portability** -- Runs on Deno or Node.js. The file database is a plain directory. No platform lock-in at any layer.
97
- 6. **Section-level precision** -- Documents are decomposed into sections. Search returns the specific passage that matters, not an entire document.
98
- 7. **Incremental design** -- The project ships working slices. Storage format and engine capabilities will evolve; the architecture accommodates change without requiring rewrites.
99
-
100
- ## Details
101
-
102
- The following documents describe the intended behavior and
103
- design goals for each major subsystem. They serve as
104
- implementation specifications, not descriptions of current
105
- functionality.
106
-
107
- - **[Database](goals/database.md)** -- Filesystem storage
108
- engine (`fs-database.wasm`). The `.kbdb` directory
109
- structure, section and document CRUD operations, index
110
- management, and storage design.
111
- - **[Query Parser](goals/query-parser.md)** -- Query
112
- processing and tokenization (`query-parser.wasm`).
113
- Standalone WASM module for tokenization, query
114
- parsing, keyword extraction, and ranking.
115
- - **[Document](goals/document.md)** -- Text content
116
- format specification. Markdown body text with
117
- embedding markers and cross-reference link markers.
119
+ 1. **No server needed** -- A folder is your whole
120
+ database. Works anywhere.
121
+ 2. **Built for AI agents** -- Commands and output
122
+ are optimized for machine use.
123
+ 3. **MCP-first** -- The MCP server is a primary
124
+ interface, not an add-on.
125
+ 4. **Fast** -- Heavy work runs in compiled Rust
126
+ via WebAssembly.
127
+ 5. **Portable** -- Runs on Node.js or Deno. The
128
+ database is a plain directory.
129
+ 6. **Section-level search** -- Returns the specific
130
+ passage that matters, not a whole document.
131
+
132
+ ## Design Documents
133
+
134
+ Deeper docs for each part of the system. You don't
135
+ need to read these to use kbdb -- they're here for
136
+ contributors and anyone curious about internals.
137
+
138
+ - **[Database](goals/database.md)** -- File storage
139
+ engine, directory structure, section and document
140
+ operations
141
+ - **[Query Parser](goals/query-parser.md)** --
142
+ Tokenization, query parsing, keyword extraction,
143
+ ranking
144
+ - **[Hybrid Search](goals/hybrid-search.md)** --
145
+ Lexical + vector retrieval with score fusion
146
+ - **[Document](goals/document.md)** -- Content format
147
+ with markers and cross-references
118
148
  - **[Content Parser](goals/content-parser.md)** --
119
- Marker extraction engine (`kbdb-shared` rlib).
120
- Scans section content for `$(type: value)` markers
121
- and returns structured reference lists.
149
+ Marker extraction from section content
122
150
  - **[Content Composer](goals/content-composer.md)** --
123
- Content composition engine (`kbdb-shared` rlib).
124
- Resolves sections and markers, produces rendered
125
- Markdown documents from kbid and docid identifiers.
126
- - **[CLI](goals/cli.md)** -- The `kbdb` command and its
127
- two run modes. CLI mode commands (`learn`, `unlearn`,
128
- `search`), MCP mode dispatch, output formats, and the
129
- pass-through execution model.
130
- - **[MCP](goals/mcp.md)** -- MCP server mode
131
- (`kbdb mcp`). Invocation, database path
132
- configuration, stdio transport, MCP tools and
133
- resources, agent wiring examples, and relationship
134
- to CLI mode.
135
- - **[Worker Daemon](goals/worker-daemon.md)** -- Cache
136
- daemon (`kb-worker.wasm` + `src/worker.ts`).
137
- The detached TypeScript daemon, WASM module loading,
138
- caching, IPC protocol, lifecycle, and configuration.
139
- - **[Worker Client](goals/worker-client.md)** -- Shared
140
- TypeScript client module (`src/shared/worker-client/`).
141
- Daemon discovery, spawning, IPC connection, typed
142
- API, and the sole entry point used by `src/cli.ts`.
151
+ Rendered Markdown composition from identifiers
152
+ - **[CLI](goals/cli.md)** -- Commands, run modes,
153
+ output formats
154
+ - **[MCP](goals/mcp.md)** -- MCP server, tools,
155
+ resources, agent wiring
156
+ - **[Auto-Capture](goals/auto-capture.md)** --
157
+ Proactive knowledge capture via MCP sampling
158
+ - **[Sync](goals/sync.md)** -- Cross-machine export
159
+ and import
160
+ - **[Worker Daemon](goals/worker-daemon.md)** --
161
+ Background daemon, WASM loading, caching, IPC
162
+ - **[Worker Client](goals/worker-client.md)** --
163
+ Client module, daemon discovery, typed API
143
164
 
144
165
  ## Project Status
145
166
 
146
- @dikolab/kbdb is in active development. The full
147
- five-layer stack (CLI/MCP -> Worker Client -> Worker
148
- Daemon -> WASM Engine -> File Database) is wired and
149
- working end-to-end for all core operations: learn,
150
- search, recall, content retrieval, skills, agents,
151
- and maintenance commands.
152
-
153
- E2E smoke tests run on both Node.js and Deno via
154
- Docker, covering 380+ assertions across CLI commands,
155
- 18 MCP tools, MCP protocol features, and worker IPC
156
- methods.
157
-
158
- ### Completed
159
-
160
- - CLI with 18 commands across 6 groups (tested)
161
- - MCP server with 18 tools, prompts, resources,
162
- and completions (tested)
163
- - Worker client with typed async IPC API (tested)
164
- - Worker daemon with WASM module loading (tested)
165
- - Rust/WASM engine: search, recall, indexing,
166
- reference graph, KWIC snippets, pagination
167
- - Paginated search with rich metadata (heading,
168
- type, snippet, matched_terms, docids)
167
+ All layers are wired and working end-to-end. Every
168
+ core operation -- learn, search, recall, content
169
+ retrieval, skills, agents, export, and maintenance
170
+ -- runs through the full stack.
171
+
172
+ **548 e2e assertions** pass on both Node.js and Deno
173
+ with zero failures and zero skips.
174
+
175
+ - 18 CLI commands across 6 groups
176
+ - 20 MCP tools with prompts, resources, completions
177
+ - Three search algorithms: lexical, vector, hybrid
178
+ - Sequential MCP request processing
179
+ - Worker daemon with fully implemented WASM host I/O
180
+ - Paginated search with rich metadata
169
181
  - Progressive recall at depths 0--3
170
- - Bidirectional reference graph (references.idx)
171
- - Skills (template-based prompts) and agents
172
- (persona + skills compositions)
173
- - esbuild bundling pipeline (ESM + CJS + .d.ts)
174
- - Docker build containers (Deno + Node + Rust +
175
- wasm-pack)
176
- - npm and JSR packaging with documentation
177
-
178
- ### Remaining
179
-
180
- - Complete WASM host I/O imports (some operations
181
- still hit stubs: document removal, agent document
182
- persistence)
183
- - Database format versioning and migration
184
- infrastructure
182
+ - Bidirectional reference graph
183
+ - Skills and agent document management
184
+ - Auto-capture hooks via MCP sampling
185
+ - Export/import sync primitives
186
+ - esbuild bundling (ESM + CJS + .d.ts)
187
+ - Docker build containers
188
+ - npm and JSR packages with documentation
185
189
 
186
190
  ## Links
187
191
 
188
- - **Repository**: https://gitlab.com/tech-slaves-internal/knowledge-base-db
192
+ - **Repository**: https://gitlab.com/tech-slaves/knowledge-base-db