@dikolab/kbdb 0.2.2 → 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 (520) hide show
  1. package/README.md +47 -31
  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 +523 -80
  14. package/dist/cli.cjs.map +4 -4
  15. package/dist/cli.mjs +515 -72
  16. package/dist/cli.mjs.map +4 -4
  17. package/dist/kbdb-worker.cjs +395 -60
  18. package/dist/kbdb-worker.cjs.map +4 -4
  19. package/dist/mod.cjs +17 -0
  20. package/dist/mod.cjs.map +2 -2
  21. package/dist/mod.mjs +17 -0
  22. package/dist/mod.mjs.map +2 -2
  23. package/dist/src/shared/auto-capture/classes/auto-capture-controller.class.d.ts +33 -0
  24. package/dist/src/shared/auto-capture/constants/auto-capture-defaults.constant.d.ts +8 -0
  25. package/dist/src/shared/auto-capture/functions/build-capture-prompt.function.d.ts +11 -0
  26. package/dist/src/shared/auto-capture/functions/evaluate-trigger.function.d.ts +12 -0
  27. package/dist/src/shared/auto-capture/index.d.ts +7 -0
  28. package/dist/src/shared/auto-capture/typings/auto-capture-config.interface.d.ts +13 -0
  29. package/dist/src/shared/auto-capture/typings/auto-capture-state.interface.d.ts +13 -0
  30. package/dist/src/shared/auto-capture/typings/auto-capture-trigger.interface.d.ts +7 -0
  31. package/dist/src/shared/cli/constants/global-help.constant.d.ts +8 -0
  32. package/dist/src/shared/cli/constants/leaf-help.constant.d.ts +7 -0
  33. package/dist/src/shared/cli/constants/memory-protocol-body.constant.d.ts +7 -0
  34. package/dist/src/shared/cli/constants/query-guidance-body.constant.d.ts +7 -0
  35. package/dist/src/shared/cli/constants/subcommand-help.constant.d.ts +8 -0
  36. package/dist/src/shared/cli/functions/collect-files.function.d.ts +13 -0
  37. package/dist/src/shared/cli/functions/compute-section-kbid.function.d.ts +15 -0
  38. package/dist/src/shared/cli/functions/dispatch-command.function.d.ts +3 -1
  39. package/dist/src/shared/cli/functions/format-mcp-output.function.d.ts +9 -0
  40. package/dist/src/shared/cli/functions/format-text-output.function.d.ts +9 -0
  41. package/dist/src/shared/cli/functions/generate-group-help.function.d.ts +11 -0
  42. package/dist/src/shared/cli/functions/handle-data-command.function.d.ts +16 -0
  43. package/dist/src/shared/cli/functions/handle-mcp.function.d.ts +15 -0
  44. package/dist/src/shared/cli/functions/handle-migrate.function.d.ts +15 -0
  45. package/dist/src/shared/cli/functions/hydrate-search-previews.function.d.ts +14 -0
  46. package/dist/src/shared/cli/functions/install-default-skills.function.d.ts +12 -0
  47. package/dist/src/shared/cli/functions/resolve-skill-names.function.d.ts +16 -0
  48. package/dist/src/shared/cli/functions/run-check.function.d.ts +47 -5
  49. package/dist/src/shared/cli/functions/run-export.function.d.ts +34 -0
  50. package/dist/src/shared/cli/functions/run-gc.function.d.ts +6 -0
  51. package/dist/src/shared/cli/functions/run-learn.function.d.ts +35 -6
  52. package/dist/src/shared/cli/functions/run-recall.function.d.ts +45 -0
  53. package/dist/src/shared/cli/functions/run-search.function.d.ts +53 -15
  54. package/dist/src/shared/cli/functions/version-gate.function.d.ts +15 -0
  55. package/dist/src/shared/cli/functions/wrap-command.function.d.ts +15 -0
  56. package/dist/src/shared/cli/index.d.ts +4 -0
  57. package/dist/src/shared/cli/typings/agent-create-client.interface.d.ts +42 -0
  58. package/dist/src/shared/cli/typings/agent-get-client.interface.d.ts +36 -0
  59. package/dist/src/shared/cli/typings/check-client.interface.d.ts +58 -0
  60. package/dist/src/shared/cli/typings/cli-deps.interface.d.ts +48 -0
  61. package/dist/src/shared/cli/typings/cli-options.interface.d.ts +15 -0
  62. package/dist/src/shared/cli/typings/disconnectable-client.interface.d.ts +26 -0
  63. package/dist/src/shared/cli/typings/dispatch-client.type.d.ts +27 -0
  64. package/dist/src/shared/cli/typings/learn-client.interface.d.ts +52 -0
  65. package/dist/src/shared/cli/typings/learn-io.interface.d.ts +5 -0
  66. package/dist/src/shared/cli/typings/learn-result.model.d.ts +19 -0
  67. package/dist/src/shared/cli/typings/search-client.interface.d.ts +71 -0
  68. package/dist/src/shared/cli/typings/search-display.model.d.ts +18 -0
  69. package/dist/src/shared/embedding/classes/null-embedding-provider.class.d.ts +20 -0
  70. package/dist/src/shared/embedding/constants/near-duplicate-thresholds.constant.d.ts +15 -0
  71. package/dist/src/shared/embedding/functions/build-vector-index.function.d.ts +14 -0
  72. package/dist/src/shared/embedding/functions/cosine-similarity.function.d.ts +10 -0
  73. package/dist/src/shared/embedding/functions/detect-near-duplicates.function.d.ts +18 -0
  74. package/dist/src/shared/embedding/functions/jaccard-coefficient.function.d.ts +9 -0
  75. package/dist/src/shared/embedding/functions/read-vector-index-meta.function.d.ts +10 -0
  76. package/dist/src/shared/embedding/functions/rrf-fuse.function.d.ts +14 -0
  77. package/dist/src/shared/embedding/functions/search-vectors.function.d.ts +14 -0
  78. package/dist/src/shared/embedding/index.d.ts +16 -0
  79. package/dist/src/shared/embedding/typings/embedding-config.interface.d.ts +20 -0
  80. package/dist/src/shared/embedding/typings/embedding-provider.interface.d.ts +23 -0
  81. package/dist/src/shared/embedding/typings/near-duplicate-candidate.model.d.ts +23 -0
  82. package/dist/src/shared/embedding/typings/near-duplicate-result.model.d.ts +24 -0
  83. package/dist/src/shared/embedding/typings/vector-index-entry.model.d.ts +12 -0
  84. package/dist/src/shared/embedding/typings/vector-index-meta.model.d.ts +11 -0
  85. package/dist/src/shared/embedding/typings/vector-search-result.model.d.ts +7 -0
  86. package/dist/src/shared/mcp/classes/mcp-server.class.d.ts +8 -0
  87. package/dist/src/shared/mcp/constants/tool-agent-create.constant.d.ts +3 -0
  88. package/dist/src/shared/mcp/constants/tool-agent-delete.constant.d.ts +3 -0
  89. package/dist/src/shared/mcp/constants/tool-agent-get.constant.d.ts +3 -0
  90. package/dist/src/shared/mcp/constants/tool-agent-list.constant.d.ts +3 -0
  91. package/dist/src/shared/mcp/constants/tool-auto-capture-review.constant.d.ts +8 -0
  92. package/dist/src/shared/mcp/constants/tool-check.constant.d.ts +3 -0
  93. package/dist/src/shared/mcp/constants/tool-content.constant.d.ts +3 -0
  94. package/dist/src/shared/mcp/constants/tool-export.constant.d.ts +3 -0
  95. package/dist/src/shared/mcp/constants/tool-gc.constant.d.ts +3 -0
  96. package/dist/src/shared/mcp/constants/tool-learn.constant.d.ts +3 -0
  97. package/dist/src/shared/mcp/constants/tool-rebuild.constant.d.ts +3 -0
  98. package/dist/src/shared/mcp/constants/tool-recall.constant.d.ts +3 -0
  99. package/dist/src/shared/mcp/constants/tool-retrieve.constant.d.ts +3 -0
  100. package/dist/src/shared/mcp/constants/tool-search.constant.d.ts +3 -0
  101. package/dist/src/shared/mcp/constants/tool-skill-delete.constant.d.ts +3 -0
  102. package/dist/src/shared/mcp/constants/tool-skill-get.constant.d.ts +3 -0
  103. package/dist/src/shared/mcp/constants/tool-skill-learn.constant.d.ts +3 -0
  104. package/dist/src/shared/mcp/constants/tool-skill-list.constant.d.ts +3 -0
  105. package/dist/src/shared/mcp/constants/tool-status.constant.d.ts +3 -0
  106. package/dist/src/shared/mcp/constants/tool-unlearn.constant.d.ts +3 -0
  107. package/dist/src/shared/mcp/functions/as-boolean-or-undefined.function.d.ts +7 -0
  108. package/dist/src/shared/mcp/functions/as-string-array-or-undefined.function.d.ts +7 -0
  109. package/dist/src/shared/mcp/functions/as-string-array.function.d.ts +7 -0
  110. package/dist/src/shared/mcp/functions/as-string.function.d.ts +8 -0
  111. package/dist/src/shared/mcp/functions/build-skills-text.function.d.ts +18 -0
  112. package/dist/src/shared/mcp/functions/handle-agent-prompt.function.d.ts +14 -0
  113. package/dist/src/shared/mcp/functions/handle-mcp-request.function.d.ts +14 -0
  114. package/dist/src/shared/mcp/functions/handle-prompt-get.function.d.ts +4 -3
  115. package/dist/src/shared/mcp/functions/handle-skill-prompt.function.d.ts +16 -0
  116. package/dist/src/shared/mcp/functions/handle-tool-auto-capture-review.function.d.ts +12 -0
  117. package/dist/src/shared/mcp/functions/handle-tool-check.function.d.ts +11 -0
  118. package/dist/src/shared/mcp/functions/handle-tool-content.function.d.ts +12 -0
  119. package/dist/src/shared/mcp/functions/handle-tool-export.function.d.ts +12 -0
  120. package/dist/src/shared/mcp/functions/handle-tool-gc.function.d.ts +11 -0
  121. package/dist/src/shared/mcp/functions/handle-tool-learn.function.d.ts +12 -0
  122. package/dist/src/shared/mcp/functions/handle-tool-rebuild.function.d.ts +11 -0
  123. package/dist/src/shared/mcp/functions/handle-tool-retrieve.function.d.ts +12 -0
  124. package/dist/src/shared/mcp/functions/handle-tool-search.function.d.ts +13 -0
  125. package/dist/src/shared/mcp/functions/handle-tool-skill-delete.function.d.ts +12 -0
  126. package/dist/src/shared/mcp/functions/handle-tool-skill-get.function.d.ts +13 -0
  127. package/dist/src/shared/mcp/functions/handle-tool-skill-learn.function.d.ts +13 -0
  128. package/dist/src/shared/mcp/functions/handle-tool-skill-list.function.d.ts +11 -0
  129. package/dist/src/shared/mcp/functions/handle-tool-status.function.d.ts +11 -0
  130. package/dist/src/shared/mcp/functions/handle-tool-unlearn.function.d.ts +12 -0
  131. package/dist/src/shared/mcp/functions/parse-agent-meta.function.d.ts +14 -0
  132. package/dist/src/shared/mcp/functions/parse-skill-arguments.function.d.ts +11 -0
  133. package/dist/src/shared/mcp/functions/read-agent-meta.function.d.ts +17 -0
  134. package/dist/src/shared/mcp/functions/resolve-skill-refs.function.d.ts +23 -0
  135. package/dist/src/shared/mcp/functions/run-startup-health-check.function.d.ts +14 -0
  136. package/dist/src/shared/mcp/typings/mcp-capabilities.interface.d.ts +16 -0
  137. package/dist/src/shared/mcp/typings/mcp-client.interface.d.ts +45 -0
  138. package/dist/src/shared/mcp/typings/mcp-completion.interface.d.ts +43 -0
  139. package/dist/src/shared/mcp/typings/mcp-content-result.model.d.ts +9 -0
  140. package/dist/src/shared/mcp/typings/mcp-export-result.model.d.ts +11 -0
  141. package/dist/src/shared/mcp/typings/mcp-gc-result.model.d.ts +15 -0
  142. package/dist/src/shared/mcp/typings/mcp-integrity-check-result.model.d.ts +16 -0
  143. package/dist/src/shared/mcp/typings/mcp-integrity-error.model.d.ts +9 -0
  144. package/dist/src/shared/mcp/typings/mcp-notification.interface.d.ts +9 -0
  145. package/dist/src/shared/mcp/typings/mcp-rebuild-result.model.d.ts +9 -0
  146. package/dist/src/shared/mcp/typings/mcp-request.interface.d.ts +11 -0
  147. package/dist/src/shared/mcp/typings/mcp-resource-result.interface.d.ts +12 -0
  148. package/dist/src/shared/mcp/typings/mcp-resource-template.interface.d.ts +11 -0
  149. package/dist/src/shared/mcp/typings/mcp-response.interface.d.ts +18 -0
  150. package/dist/src/shared/mcp/typings/mcp-server-info.interface.d.ts +7 -0
  151. package/dist/src/shared/mcp/typings/mcp-server-state.interface.d.ts +16 -0
  152. package/dist/src/shared/mcp/typings/mcp-tool-annotations.interface.d.ts +32 -0
  153. package/dist/src/shared/mcp/typings/mcp-tool-definition.interface.d.ts +15 -0
  154. package/dist/src/shared/mcp/typings/mcp-tool-result.interface.d.ts +19 -0
  155. package/dist/src/shared/mcp/typings/mcp-worker-client.interface.d.ts +220 -0
  156. package/dist/src/shared/mcp/typings/tool-call-result.model.d.ts +17 -0
  157. package/dist/src/shared/sync/functions/build-import-report.function.d.ts +18 -0
  158. package/dist/src/shared/sync/functions/parse-export-entry.function.d.ts +11 -0
  159. package/dist/src/shared/sync/functions/resolve-conflict.function.d.ts +13 -0
  160. package/dist/src/shared/sync/functions/serialize-export-entry.function.d.ts +8 -0
  161. package/dist/src/shared/sync/index.d.ts +9 -0
  162. package/dist/src/shared/sync/typings/conflict-resolution.type.d.ts +8 -0
  163. package/dist/src/shared/sync/typings/export-entry.interface.d.ts +13 -0
  164. package/dist/src/shared/sync/typings/export-options.interface.d.ts +9 -0
  165. package/dist/src/shared/sync/typings/import-options.interface.d.ts +7 -0
  166. package/dist/src/shared/sync/typings/import-report.interface.d.ts +15 -0
  167. package/dist/src/shared/wasm-codec/functions/decode-add-section-result.function.d.ts +48 -0
  168. package/dist/src/shared/wasm-codec/functions/decode-one-recall-result.function.d.ts +14 -0
  169. package/dist/src/shared/wasm-codec/functions/decode-option-string.function.d.ts +12 -0
  170. package/dist/src/shared/wasm-codec/functions/decode-recall-document.function.d.ts +14 -0
  171. package/dist/src/shared/wasm-codec/functions/decode-recall-reference.function.d.ts +14 -0
  172. package/dist/src/shared/wasm-codec/functions/decode-recall-sibling.function.d.ts +13 -0
  173. package/dist/src/shared/wasm-codec/functions/decode-scored-results.function.d.ts +58 -0
  174. package/dist/src/shared/wasm-codec/functions/decode-section-match.function.d.ts +15 -0
  175. package/dist/src/shared/wasm-codec/functions/decode-section-record-trailing.function.d.ts +14 -0
  176. package/dist/src/shared/wasm-codec/functions/decode-section-record.function.d.ts +14 -0
  177. package/dist/src/shared/wasm-codec/functions/decode-section-records.function.d.ts +33 -0
  178. package/dist/src/shared/wasm-codec/functions/decode-section-type.function.d.ts +13 -0
  179. package/dist/src/shared/wasm-codec/functions/decode-wasm-list.function.d.ts +17 -0
  180. package/dist/src/shared/wasm-codec/functions/encode-add-section-params.function.d.ts +52 -0
  181. package/dist/src/shared/wasm-codec/index.d.ts +2 -0
  182. package/dist/src/shared/wasm-codec/typings/add-section-input.model.d.ts +45 -0
  183. package/dist/src/shared/wasm-codec/typings/add-section-result.model.d.ts +27 -0
  184. package/dist/src/shared/wasm-codec/typings/document-manifest.model.d.ts +19 -0
  185. package/dist/src/shared/wasm-codec/typings/document-section.model.d.ts +12 -0
  186. package/dist/src/shared/wasm-codec/typings/item-decoder.type.d.ts +6 -0
  187. package/dist/src/shared/wasm-codec/typings/near-duplicate.model.d.ts +16 -0
  188. package/dist/src/shared/wasm-codec/typings/paged-search-result.model.d.ts +21 -0
  189. package/dist/src/shared/wasm-codec/typings/section-match.model.d.ts +31 -0
  190. package/dist/src/shared/wasm-codec/typings/section-record-trailing.model.d.ts +38 -0
  191. package/dist/src/shared/wasm-codec/typings/section-record.model.d.ts +66 -0
  192. package/dist/src/shared/wasm-codec/typings/section-type-result.model.d.ts +12 -0
  193. package/dist/src/shared/worker-client/classes/worker-client.class.d.ts +16 -0
  194. package/dist/src/shared/worker-client/functions/handle-ipc-data.function.d.ts +16 -0
  195. package/dist/src/shared/worker-client/functions/send-ipc-request.function.d.ts +19 -0
  196. package/dist/src/shared/worker-client/index.d.ts +1 -1
  197. package/dist/src/shared/worker-client/typings/add-section-result.model.d.ts +31 -15
  198. package/dist/src/shared/worker-client/typings/export-result.model.d.ts +14 -0
  199. package/dist/src/shared/worker-client/typings/gc-result.model.d.ts +6 -0
  200. package/dist/src/shared/worker-client/typings/json-rpc-response.interface.d.ts +16 -0
  201. package/dist/src/shared/worker-client/typings/pending-call.interface.d.ts +7 -0
  202. package/dist/src/shared/worker-client/typings/recall-document.model.d.ts +16 -0
  203. package/dist/src/shared/worker-client/typings/recall-params.model.d.ts +15 -0
  204. package/dist/src/shared/worker-client/typings/recall-reference.model.d.ts +32 -0
  205. package/dist/src/shared/worker-client/typings/recall-sibling.model.d.ts +11 -0
  206. package/dist/src/shared/worker-client/typings/recall-single-result.model.d.ts +40 -0
  207. package/dist/src/shared/worker-client/typings/search-result.model.d.ts +12 -0
  208. package/dist/src/shared/worker-client/typings/section.model.d.ts +16 -0
  209. package/dist/src/shared/worker-daemon/classes/ipc-error.class.d.ts +17 -0
  210. package/dist/src/shared/worker-daemon/classes/worker-daemon.class.d.ts +35 -0
  211. package/dist/src/shared/worker-daemon/constants/wasm-method-map.constant.d.ts +16 -0
  212. package/dist/src/shared/worker-daemon/functions/build-ipc-error-response.function.d.ts +9 -0
  213. package/dist/src/shared/worker-daemon/functions/check-catalog-version.function.d.ts +9 -0
  214. package/dist/src/shared/worker-daemon/functions/check-preconditions.function.d.ts +10 -0
  215. package/dist/src/shared/worker-daemon/functions/detect-stale-pid.function.d.ts +15 -0
  216. package/dist/src/shared/worker-daemon/functions/dispatch-request.function.d.ts +35 -0
  217. package/dist/src/shared/worker-daemon/functions/handle-check-version.function.d.ts +23 -0
  218. package/dist/src/shared/worker-daemon/functions/handle-config-method.function.d.ts +11 -0
  219. package/dist/src/shared/worker-daemon/functions/handle-read-ops.function.d.ts +52 -0
  220. package/dist/src/shared/worker-daemon/functions/handle-write-ops.function.d.ts +44 -0
  221. package/dist/src/shared/worker-daemon/functions/parse-auto-capture-section.function.d.ts +14 -0
  222. package/dist/src/shared/worker-daemon/functions/parse-catalog-version.function.d.ts +10 -0
  223. package/dist/src/shared/worker-daemon/functions/parse-embedding-section.function.d.ts +13 -0
  224. package/dist/src/shared/worker-daemon/functions/parse-worker-toml.function.d.ts +11 -0
  225. package/dist/src/shared/worker-daemon/functions/run-startup-integrity-check.function.d.ts +18 -0
  226. package/dist/src/shared/worker-daemon/functions/scan-near-duplicates.function.d.ts +21 -0
  227. package/dist/src/shared/worker-daemon/functions/wasm-bridge.function.d.ts +51 -0
  228. package/dist/src/shared/worker-daemon/functions/wasm-memory-helpers.function.d.ts +22 -0
  229. package/dist/src/shared/worker-daemon/functions/write-lock.function.d.ts +32 -0
  230. package/dist/src/shared/worker-daemon/typings/allocator-ref.interface.d.ts +16 -0
  231. package/dist/src/shared/worker-daemon/typings/daemon-config.interface.d.ts +6 -0
  232. package/dist/src/shared/worker-daemon/typings/fs-adapter.interface.d.ts +22 -0
  233. package/dist/src/shared/worker-daemon/typings/handler-context.interface.d.ts +18 -0
  234. package/dist/src/shared/worker-daemon/typings/memory-ref.interface.d.ts +13 -0
  235. package/dist/src/shared/worker-daemon/typings/wasm-fn.type.d.ts +2 -0
  236. package/dist/src/shared/worker-daemon/typings/write-lock.interface.d.ts +15 -0
  237. package/dist/wasm/fs-database/kbdb_fs_database.d.ts +22 -1
  238. package/dist/wasm/fs-database/kbdb_fs_database.js +28 -1
  239. package/dist/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
  240. package/dist/wasm/fs-database/kbdb_fs_database_bg.wasm.d.ts +1 -0
  241. package/dist/wasm/kb-worker/kbdb_worker.d.ts +48 -1
  242. package/dist/wasm/kb-worker/kbdb_worker.js +60 -1
  243. package/dist/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
  244. package/dist/wasm/kb-worker/kbdb_worker_bg.wasm.d.ts +2 -0
  245. package/dist/wasm/query-parser/kbdb_query_parser_bg.wasm +0 -0
  246. package/dist/worker.mjs +396 -60
  247. package/dist/worker.mjs.map +4 -4
  248. package/docs/details/cli.md +102 -15
  249. package/docs/details/library-api.md +55 -6
  250. package/docs/details/mcp-server.md +10 -4
  251. package/docs/details/search-and-ranking.md +63 -5
  252. package/docs/details/storage.md +2 -0
  253. package/docs/goals/auto-capture.md +378 -0
  254. package/docs/goals/benchmarking.md +296 -0
  255. package/docs/goals/cli.md +255 -14
  256. package/docs/goals/concurrency.md +259 -0
  257. package/docs/goals/database.md +244 -17
  258. package/docs/goals/document.md +1 -1
  259. package/docs/goals/hybrid-search.md +436 -0
  260. package/docs/goals/mcp.md +83 -14
  261. package/docs/goals/query-parser.md +98 -4
  262. package/docs/goals/query-result.md +177 -10
  263. package/docs/goals/semantic-dedup.md +229 -0
  264. package/docs/goals/skills.md +72 -0
  265. package/docs/goals/sync.md +217 -0
  266. package/docs/goals/worker-daemon.md +54 -7
  267. package/docs/modules/rust/fs-database/functions/integrity.md +11 -0
  268. package/docs/modules/rust/fs-database/functions/section.md +23 -6
  269. package/docs/modules/rust/fs-database/indexes/vectors.md +110 -0
  270. package/docs/modules/rust/fs-database/module.md +1 -0
  271. package/docs/modules/rust/fs-database/types/section.md +27 -1
  272. package/docs/modules/rust/overview.md +2 -1
  273. package/docs/modules/rust/query-parser/functions/module.md +2 -2
  274. package/docs/modules/rust/query-parser/functions/pipeline.md +44 -6
  275. package/docs/modules/rust/query-parser/module.md +5 -4
  276. package/docs/modules/rust/query-parser/types/keyphrase.md +11 -0
  277. package/docs/modules/rust/query-parser/types/module.md +3 -3
  278. package/docs/modules/typescript/shared/auto-capture/module.md +73 -0
  279. package/docs/modules/typescript/shared/cli/functions.md +68 -3
  280. package/docs/modules/typescript/shared/embedding/functions.md +94 -0
  281. package/docs/modules/typescript/shared/embedding/module.md +71 -0
  282. package/docs/modules/typescript/shared/embedding/typings.md +122 -0
  283. package/docs/overview.md +148 -166
  284. package/docs/release-notes/0.2.0.md +3 -3
  285. package/docs/release-notes/0.3.0.md +89 -0
  286. package/docs/release-notes/0.3.1.md +111 -0
  287. package/docs/release-notes/README.md +2 -0
  288. package/package.json +1 -1
  289. package/src/shared/auto-capture/classes/auto-capture-controller.class.ts +62 -0
  290. package/src/shared/auto-capture/constants/auto-capture-defaults.constant.ts +15 -0
  291. package/src/shared/auto-capture/functions/build-capture-prompt.function.ts +27 -0
  292. package/src/shared/auto-capture/functions/evaluate-trigger.function.ts +50 -0
  293. package/src/shared/auto-capture/index.ts +7 -0
  294. package/src/shared/auto-capture/typings/auto-capture-config.interface.ts +13 -0
  295. package/src/shared/auto-capture/typings/auto-capture-state.interface.ts +13 -0
  296. package/src/shared/auto-capture/typings/auto-capture-trigger.interface.ts +7 -0
  297. package/src/shared/cli/constants/global-help.constant.ts +73 -0
  298. package/src/shared/cli/constants/leaf-help.constant.ts +219 -0
  299. package/src/shared/cli/constants/memory-protocol-body.constant.ts +39 -0
  300. package/src/shared/cli/constants/query-guidance-body.constant.ts +37 -0
  301. package/src/shared/cli/constants/subcommand-help.constant.ts +195 -0
  302. package/src/shared/cli/functions/collect-files.function.ts +55 -0
  303. package/src/shared/cli/functions/compute-section-kbid.function.ts +49 -0
  304. package/src/shared/cli/functions/dispatch-command.function.ts +53 -1
  305. package/src/shared/cli/functions/format-mcp-output.function.ts +41 -0
  306. package/src/shared/cli/functions/format-output.function.ts +36 -12
  307. package/src/shared/cli/functions/format-text-output.function.ts +42 -0
  308. package/src/shared/cli/functions/generate-group-help.function.ts +41 -0
  309. package/src/shared/cli/functions/generate-help.function.ts +56 -1
  310. package/src/shared/cli/functions/handle-data-command.function.ts +67 -0
  311. package/src/shared/cli/functions/handle-mcp.function.ts +56 -0
  312. package/src/shared/cli/functions/handle-migrate.function.ts +64 -0
  313. package/src/shared/cli/functions/hydrate-search-previews.function.ts +29 -0
  314. package/src/shared/cli/functions/install-default-skills.function.ts +296 -0
  315. package/src/shared/cli/functions/parse-args.function.ts +16 -0
  316. package/src/shared/cli/functions/resolve-skill-names.function.ts +43 -0
  317. package/src/shared/cli/functions/run-check.function.ts +87 -6
  318. package/src/shared/cli/functions/run-export.function.ts +40 -0
  319. package/src/shared/cli/functions/run-gc.function.ts +6 -0
  320. package/src/shared/cli/functions/run-init.function.ts +2 -0
  321. package/src/shared/cli/functions/run-learn.function.ts +68 -16
  322. package/src/shared/cli/functions/run-recall.function.ts +66 -0
  323. package/src/shared/cli/functions/run-search.function.ts +60 -15
  324. package/src/shared/cli/functions/version-gate.function.ts +44 -0
  325. package/src/shared/cli/functions/wrap-command.function.ts +34 -0
  326. package/src/shared/cli/index.ts +4 -0
  327. package/src/shared/cli/typings/agent-create-client.interface.ts +47 -0
  328. package/src/shared/cli/typings/agent-get-client.interface.ts +39 -0
  329. package/src/shared/cli/typings/check-client.interface.ts +66 -0
  330. package/src/shared/cli/typings/cli-deps.interface.ts +54 -0
  331. package/src/shared/cli/typings/cli-options.interface.ts +15 -0
  332. package/src/shared/cli/typings/disconnectable-client.interface.ts +29 -0
  333. package/src/shared/cli/typings/dispatch-client.type.ts +46 -0
  334. package/src/shared/cli/typings/learn-client.interface.ts +53 -0
  335. package/src/shared/cli/typings/learn-io.interface.ts +5 -0
  336. package/src/shared/cli/typings/learn-result.model.ts +16 -0
  337. package/src/shared/cli/typings/search-client.interface.ts +73 -0
  338. package/src/shared/cli/typings/search-display.model.ts +18 -0
  339. package/src/shared/embedding/classes/null-embedding-provider.class.ts +29 -0
  340. package/src/shared/embedding/constants/near-duplicate-thresholds.constant.ts +17 -0
  341. package/src/shared/embedding/functions/build-vector-index.function.ts +79 -0
  342. package/src/shared/embedding/functions/cosine-similarity.function.ts +31 -0
  343. package/src/shared/embedding/functions/detect-near-duplicates.function.ts +69 -0
  344. package/src/shared/embedding/functions/jaccard-coefficient.function.ts +26 -0
  345. package/src/shared/embedding/functions/read-vector-index-meta.function.ts +44 -0
  346. package/src/shared/embedding/functions/rrf-fuse.function.ts +33 -0
  347. package/src/shared/embedding/functions/search-vectors.function.ts +59 -0
  348. package/src/shared/embedding/index.ts +20 -0
  349. package/src/shared/embedding/typings/embedding-config.interface.ts +23 -0
  350. package/src/shared/embedding/typings/embedding-provider.interface.ts +25 -0
  351. package/src/shared/embedding/typings/near-duplicate-candidate.model.ts +25 -0
  352. package/src/shared/embedding/typings/near-duplicate-result.model.ts +26 -0
  353. package/src/shared/embedding/typings/vector-index-entry.model.ts +13 -0
  354. package/src/shared/embedding/typings/vector-index-meta.model.ts +14 -0
  355. package/src/shared/embedding/typings/vector-search-result.model.ts +8 -0
  356. package/src/shared/mcp/classes/mcp-server.class.ts +36 -4
  357. package/src/shared/mcp/constants/tool-agent-create.constant.ts +39 -0
  358. package/src/shared/mcp/constants/tool-agent-delete.constant.ts +26 -0
  359. package/src/shared/mcp/constants/tool-agent-get.constant.ts +24 -0
  360. package/src/shared/mcp/constants/tool-agent-list.constant.ts +18 -0
  361. package/src/shared/mcp/constants/tool-auto-capture-review.constant.ts +32 -0
  362. package/src/shared/mcp/constants/tool-check.constant.ts +21 -0
  363. package/src/shared/mcp/constants/tool-content.constant.ts +29 -0
  364. package/src/shared/mcp/constants/tool-export.constant.ts +27 -0
  365. package/src/shared/mcp/constants/tool-gc.constant.ts +21 -0
  366. package/src/shared/mcp/constants/tool-learn.constant.ts +58 -0
  367. package/src/shared/mcp/constants/tool-rebuild.constant.ts +21 -0
  368. package/src/shared/mcp/constants/tool-recall.constant.ts +36 -0
  369. package/src/shared/mcp/constants/tool-retrieve.constant.ts +31 -0
  370. package/src/shared/mcp/constants/tool-search.constant.ts +51 -0
  371. package/src/shared/mcp/constants/tool-skill-delete.constant.ts +24 -0
  372. package/src/shared/mcp/constants/tool-skill-get.constant.ts +27 -0
  373. package/src/shared/mcp/constants/tool-skill-learn.constant.ts +37 -0
  374. package/src/shared/mcp/constants/tool-skill-list.constant.ts +18 -0
  375. package/src/shared/mcp/constants/tool-status.constant.ts +20 -0
  376. package/src/shared/mcp/constants/tool-unlearn.constant.ts +25 -0
  377. package/src/shared/mcp/functions/as-boolean-or-undefined.function.ts +11 -0
  378. package/src/shared/mcp/functions/as-string-array-or-undefined.function.ts +17 -0
  379. package/src/shared/mcp/functions/as-string-array.function.ts +15 -0
  380. package/src/shared/mcp/functions/as-string.function.ts +10 -0
  381. package/src/shared/mcp/functions/build-skills-text.function.ts +43 -0
  382. package/src/shared/mcp/functions/create-tool-definitions.function.ts +74 -5
  383. package/src/shared/mcp/functions/handle-agent-create.function.ts +1 -1
  384. package/src/shared/mcp/functions/handle-agent-prompt.function.ts +68 -0
  385. package/src/shared/mcp/functions/handle-mcp-request.function.ts +202 -0
  386. package/src/shared/mcp/functions/handle-prompt-get.function.ts +18 -12
  387. package/src/shared/mcp/functions/handle-skill-prompt.function.ts +44 -0
  388. package/src/shared/mcp/functions/handle-tool-auto-capture-review.function.ts +24 -0
  389. package/src/shared/mcp/functions/handle-tool-call.function.ts +88 -2
  390. package/src/shared/mcp/functions/handle-tool-check.function.ts +21 -0
  391. package/src/shared/mcp/functions/handle-tool-content.function.ts +23 -0
  392. package/src/shared/mcp/functions/handle-tool-export.function.ts +25 -0
  393. package/src/shared/mcp/functions/handle-tool-gc.function.ts +21 -0
  394. package/src/shared/mcp/functions/handle-tool-learn.function.ts +69 -0
  395. package/src/shared/mcp/functions/handle-tool-rebuild.function.ts +21 -0
  396. package/src/shared/mcp/functions/handle-tool-retrieve.function.ts +40 -0
  397. package/src/shared/mcp/functions/handle-tool-search.function.ts +47 -0
  398. package/src/shared/mcp/functions/handle-tool-skill-delete.function.ts +34 -0
  399. package/src/shared/mcp/functions/handle-tool-skill-get.function.ts +59 -0
  400. package/src/shared/mcp/functions/handle-tool-skill-learn.function.ts +61 -0
  401. package/src/shared/mcp/functions/handle-tool-skill-list.function.ts +39 -0
  402. package/src/shared/mcp/functions/handle-tool-status.function.ts +21 -0
  403. package/src/shared/mcp/functions/handle-tool-unlearn.function.ts +24 -0
  404. package/src/shared/mcp/functions/parse-agent-meta.function.ts +27 -0
  405. package/src/shared/mcp/functions/parse-skill-arguments.function.ts +36 -0
  406. package/src/shared/mcp/functions/read-agent-meta.function.ts +41 -0
  407. package/src/shared/mcp/functions/resolve-skill-refs.function.ts +50 -0
  408. package/src/shared/mcp/functions/run-startup-health-check.function.ts +34 -0
  409. package/src/shared/mcp/typings/mcp-capabilities.interface.ts +16 -0
  410. package/src/shared/mcp/typings/mcp-client.interface.ts +47 -0
  411. package/src/shared/mcp/typings/mcp-completion.interface.ts +45 -0
  412. package/src/shared/mcp/typings/mcp-content-result.model.ts +9 -0
  413. package/src/shared/mcp/typings/mcp-export-result.model.ts +11 -0
  414. package/src/shared/mcp/typings/mcp-gc-result.model.ts +15 -0
  415. package/src/shared/mcp/typings/mcp-integrity-check-result.model.ts +17 -0
  416. package/src/shared/mcp/typings/mcp-integrity-error.model.ts +15 -0
  417. package/src/shared/mcp/typings/mcp-notification.interface.ts +9 -0
  418. package/src/shared/mcp/typings/mcp-rebuild-result.model.ts +9 -0
  419. package/src/shared/mcp/typings/mcp-request.interface.ts +11 -0
  420. package/src/shared/mcp/typings/mcp-resource-result.interface.ts +12 -0
  421. package/src/shared/mcp/typings/mcp-resource-template.interface.ts +11 -0
  422. package/src/shared/mcp/typings/mcp-response.interface.ts +18 -0
  423. package/src/shared/mcp/typings/mcp-server-info.interface.ts +7 -0
  424. package/src/shared/mcp/typings/mcp-server-state.interface.ts +17 -0
  425. package/src/shared/mcp/typings/mcp-tool-annotations.interface.ts +32 -0
  426. package/src/shared/mcp/typings/mcp-tool-definition.interface.ts +16 -0
  427. package/src/shared/mcp/typings/mcp-tool-result.interface.ts +19 -0
  428. package/src/shared/mcp/typings/mcp-worker-client.interface.ts +243 -0
  429. package/src/shared/mcp/typings/tool-call-result.model.ts +18 -0
  430. package/src/shared/sync/functions/build-import-report.function.ts +40 -0
  431. package/src/shared/sync/functions/parse-export-entry.function.ts +45 -0
  432. package/src/shared/sync/functions/resolve-conflict.function.ts +31 -0
  433. package/src/shared/sync/functions/serialize-export-entry.function.ts +18 -0
  434. package/src/shared/sync/index.ts +9 -0
  435. package/src/shared/sync/typings/conflict-resolution.type.ts +8 -0
  436. package/src/shared/sync/typings/export-entry.interface.ts +13 -0
  437. package/src/shared/sync/typings/export-options.interface.ts +9 -0
  438. package/src/shared/sync/typings/import-options.interface.ts +7 -0
  439. package/src/shared/sync/typings/import-report.interface.ts +15 -0
  440. package/src/shared/wasm-codec/functions/decode-add-section-result.function.ts +112 -0
  441. package/src/shared/wasm-codec/functions/decode-one-recall-result.function.ts +86 -0
  442. package/src/shared/wasm-codec/functions/decode-option-string.function.ts +24 -0
  443. package/src/shared/wasm-codec/functions/decode-recall-document.function.ts +59 -0
  444. package/src/shared/wasm-codec/functions/decode-recall-reference.function.ts +52 -0
  445. package/src/shared/wasm-codec/functions/decode-recall-sibling.function.ts +43 -0
  446. package/src/shared/wasm-codec/functions/decode-scored-results.function.ts +86 -0
  447. package/src/shared/wasm-codec/functions/decode-section-match.function.ts +80 -0
  448. package/src/shared/wasm-codec/functions/decode-section-record-trailing.function.ts +75 -0
  449. package/src/shared/wasm-codec/functions/decode-section-record.function.ts +85 -0
  450. package/src/shared/wasm-codec/functions/decode-section-records.function.ts +87 -0
  451. package/src/shared/wasm-codec/functions/decode-section-type.function.ts +30 -0
  452. package/src/shared/wasm-codec/functions/decode-wasm-list.function.ts +31 -0
  453. package/src/shared/wasm-codec/functions/encode-add-section-params.function.ts +68 -0
  454. package/src/shared/wasm-codec/index.ts +5 -0
  455. package/src/shared/wasm-codec/typings/add-section-input.model.ts +45 -0
  456. package/src/shared/wasm-codec/typings/add-section-result.model.ts +28 -0
  457. package/src/shared/wasm-codec/typings/document-manifest.model.ts +20 -0
  458. package/src/shared/wasm-codec/typings/document-section.model.ts +12 -0
  459. package/src/shared/wasm-codec/typings/item-decoder.type.ts +10 -0
  460. package/src/shared/wasm-codec/typings/near-duplicate.model.ts +16 -0
  461. package/src/shared/wasm-codec/typings/paged-search-result.model.ts +22 -0
  462. package/src/shared/wasm-codec/typings/section-match.model.ts +31 -0
  463. package/src/shared/wasm-codec/typings/section-record-trailing.model.ts +38 -0
  464. package/src/shared/wasm-codec/typings/section-record.model.ts +66 -0
  465. package/src/shared/wasm-codec/typings/section-type-result.model.ts +12 -0
  466. package/src/shared/worker-client/classes/worker-client.class.ts +19 -0
  467. package/src/shared/worker-client/functions/handle-ipc-data.function.ts +49 -0
  468. package/src/shared/worker-client/functions/send-ipc-request.function.ts +39 -0
  469. package/src/shared/worker-client/index.ts +4 -1
  470. package/src/shared/worker-client/typings/add-section-result.model.ts +32 -15
  471. package/src/shared/worker-client/typings/export-result.model.ts +14 -0
  472. package/src/shared/worker-client/typings/gc-result.model.ts +6 -0
  473. package/src/shared/worker-client/typings/json-rpc-response.interface.ts +17 -0
  474. package/src/shared/worker-client/typings/pending-call.interface.ts +7 -0
  475. package/src/shared/worker-client/typings/recall-document.model.ts +16 -0
  476. package/src/shared/worker-client/typings/recall-params.model.ts +15 -0
  477. package/src/shared/worker-client/typings/recall-reference.model.ts +32 -0
  478. package/src/shared/worker-client/typings/recall-sibling.model.ts +11 -0
  479. package/src/shared/worker-client/typings/recall-single-result.model.ts +41 -0
  480. package/src/shared/worker-client/typings/search-result.model.ts +12 -0
  481. package/src/shared/worker-client/typings/section.model.ts +16 -0
  482. package/src/shared/worker-daemon/classes/ipc-error.class.ts +22 -0
  483. package/src/shared/worker-daemon/classes/worker-daemon.class.ts +315 -46
  484. package/src/shared/worker-daemon/constants/wasm-method-map.constant.ts +69 -0
  485. package/src/shared/worker-daemon/functions/build-ipc-error-response.function.ts +16 -0
  486. package/src/shared/worker-daemon/functions/check-catalog-version.function.ts +54 -0
  487. package/src/shared/worker-daemon/functions/check-preconditions.function.ts +28 -0
  488. package/src/shared/worker-daemon/functions/create-host-imports.function.ts +19 -4
  489. package/src/shared/worker-daemon/functions/create-ipc-server.function.ts +5 -1
  490. package/src/shared/worker-daemon/functions/detect-stale-pid.function.ts +33 -0
  491. package/src/shared/worker-daemon/functions/dispatch-request.function.ts +190 -0
  492. package/src/shared/worker-daemon/functions/handle-check-version.function.ts +74 -0
  493. package/src/shared/worker-daemon/functions/handle-config-method.function.ts +27 -0
  494. package/src/shared/worker-daemon/functions/handle-read-ops.function.ts +236 -0
  495. package/src/shared/worker-daemon/functions/handle-write-ops.function.ts +257 -0
  496. package/src/shared/worker-daemon/functions/parse-auto-capture-section.function.ts +51 -0
  497. package/src/shared/worker-daemon/functions/parse-catalog-version.function.ts +20 -0
  498. package/src/shared/worker-daemon/functions/parse-embedding-section.function.ts +38 -0
  499. package/src/shared/worker-daemon/functions/parse-worker-toml.function.ts +104 -0
  500. package/src/shared/worker-daemon/functions/run-startup-integrity-check.function.ts +55 -0
  501. package/src/shared/worker-daemon/functions/scan-near-duplicates.function.ts +92 -0
  502. package/src/shared/worker-daemon/functions/wasm-bridge.function.ts +144 -0
  503. package/src/shared/worker-daemon/functions/wasm-memory-helpers.function.ts +41 -0
  504. package/src/shared/worker-daemon/functions/write-lock.function.ts +49 -0
  505. package/src/shared/worker-daemon/typings/allocator-ref.interface.ts +16 -0
  506. package/src/shared/worker-daemon/typings/daemon-config.interface.ts +7 -0
  507. package/src/shared/worker-daemon/typings/fs-adapter.interface.ts +22 -0
  508. package/src/shared/worker-daemon/typings/handler-context.interface.ts +19 -0
  509. package/src/shared/worker-daemon/typings/memory-ref.interface.ts +13 -0
  510. package/src/shared/worker-daemon/typings/wasm-fn.type.ts +2 -0
  511. package/src/shared/worker-daemon/typings/write-lock.interface.ts +13 -0
  512. package/src/wasm/fs-database/kbdb_fs_database.d.ts +22 -1
  513. package/src/wasm/fs-database/kbdb_fs_database.js +28 -1
  514. package/src/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
  515. package/src/wasm/fs-database/kbdb_fs_database_bg.wasm.d.ts +1 -0
  516. package/src/wasm/kb-worker/kbdb_worker.d.ts +48 -1
  517. package/src/wasm/kb-worker/kbdb_worker.js +60 -1
  518. package/src/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
  519. package/src/wasm/kb-worker/kbdb_worker_bg.wasm.d.ts +2 -0
  520. package/src/wasm/query-parser/kbdb_query_parser_bg.wasm +0 -0
package/docs/goals/cli.md CHANGED
@@ -53,12 +53,14 @@ kbdb --version | -v
53
53
  kbdb learn [options] <path | ->...
54
54
  kbdb unlearn [options] <kbid>...
55
55
  kbdb search [options] <query>...
56
+ kbdb recall [options] <kbid>...
56
57
  kbdb content [options] <id>...
57
58
  kbdb mcp [options]
58
59
  kbdb check [options]
59
60
  kbdb gc [options]
60
61
  kbdb rebuild [options]
61
62
  kbdb status [options]
63
+ kbdb export [options] [<path>]
62
64
  kbdb db init [options]
63
65
  kbdb db migrate [options]
64
66
  kbdb skill learn [options] --name <n> --body <file|->
@@ -196,6 +198,17 @@ Import and index documents into the knowledge base.
196
198
  to this document ID. If the document does not
197
199
  exist, it is created. Applies to all sections
198
200
  ingested in this invocation.
201
+ - `--tags <t,...>` -- Comma-separated tags for scoping
202
+ and filtering. Applies to all sections ingested in
203
+ this invocation. Example: `--tags auth,api,v2`.
204
+ - `--replace` -- Enable supersession. When set, the
205
+ system matches each incoming section by source key
206
+ (source path + heading). If an existing section has
207
+ the same source key, it is superseded: the old
208
+ section's document references are transferred to the
209
+ new one and the old section becomes eligible for GC.
210
+ Without this flag, re-learning edited content creates
211
+ a sibling rather than replacing the original.
199
212
 
200
213
  **Supported file extensions:**
201
214
 
@@ -239,7 +252,10 @@ sections in the same invocation.
239
252
  "kbid": "abcdef1234567890abcdef1234",
240
253
  "path": "/absolute/path/to/file.md",
241
254
  "size": 1234,
242
- "skipped": false
255
+ "skipped": false,
256
+ "superseded": null,
257
+ "warnings": [],
258
+ "near_duplicates": []
243
259
  }
244
260
  ]
245
261
  ```
@@ -247,7 +263,12 @@ sections in the same invocation.
247
263
  is the UTF-8 character count of the content. The
248
264
  `skipped` field is always `false` for results that
249
265
  appear in the array -- files that are skipped produce
250
- no entry.
266
+ no entry. `superseded` is the kbid of the section
267
+ that was replaced via `--replace` (null when no
268
+ supersession occurred). `warnings` is an array of
269
+ warning strings (e.g. `"heading_missing"` when no
270
+ title is provided). `near_duplicates` lists sections
271
+ with similarity >= 0.85 as `{kbid, similarity}`.
251
272
  - **stderr**: errors only.
252
273
 
253
274
  **Exit code:** `0` on success, `1` on error.
@@ -425,15 +446,19 @@ array (see [SearchDisplay type](#searchdisplay-type)).
425
446
  "type": "text/markdown",
426
447
  "docids": ["doc-intro-ml"],
427
448
  "score": 8.7432,
449
+ "confidence": 1.0,
428
450
  "snippet": "Machine learning is a subfield...",
429
451
  "matched_terms": ["machine", "learning"],
452
+ "matched_fields": ["heading", "body"],
453
+ "created_at": "2026-06-15T10:00:00Z",
430
454
  "preview": ""
431
455
  }
432
456
  ],
433
457
  "total": 42,
434
458
  "offset": 0,
435
459
  "limit": 20,
436
- "has_more": true
460
+ "has_more": true,
461
+ "relaxed": false
437
462
  }
438
463
  ```
439
464
 
@@ -448,15 +473,19 @@ section text:
448
473
  "type": "text/markdown",
449
474
  "docids": ["doc-intro-ml"],
450
475
  "score": 8.7432,
476
+ "confidence": 1.0,
451
477
  "snippet": "Machine learning is a subfield...",
452
478
  "matched_terms": ["machine", "learning"],
479
+ "matched_fields": ["heading", "body"],
480
+ "created_at": "2026-06-15T10:00:00Z",
453
481
  "preview": "Machine learning is a subfield..."
454
482
  }
455
483
  ],
456
484
  "total": 42,
457
485
  "offset": 0,
458
486
  "limit": 20,
459
- "has_more": true
487
+ "has_more": true,
488
+ "relaxed": false
460
489
  }
461
490
  ```
462
491
 
@@ -557,6 +586,131 @@ src/cli.ts parseArgs()
557
586
  See [Content Composer](content-composer.md) for the
558
587
  full composition specification.
559
588
 
589
+ ### `recall` -- progressive context retrieval
590
+
591
+ ```
592
+ kbdb recall [options] <kbid>...
593
+ ```
594
+
595
+ Retrieve full content and progressive context for one
596
+ or more sections by kbid. Use after `search` to drill
597
+ into relevant results. Returns section text, metadata,
598
+ references, and back-references at configurable
599
+ expansion depths.
600
+
601
+ **Arguments:**
602
+ - `<kbid>...` -- one or more 26-character kb-id
603
+ strings.
604
+
605
+ **Options:**
606
+
607
+ | Flag | Alias | Description |
608
+ |-----------------|-------|--------------------------------|
609
+ | `--depth <n>` | `-d` | Expansion depth (0--3, |
610
+ | | | default: 0, clamped to 3) |
611
+ | `--db <path>` | | Database directory path |
612
+
613
+ **Expansion levels:**
614
+
615
+ | Depth | Returns |
616
+ |-------|---------------------------------------|
617
+ | 0 | Full section content with heading, |
618
+ | | type, and docids. |
619
+ | 1 | Depth-0 content, plus parent document |
620
+ | | manifests (title, all section kbids |
621
+ | | with headings and types) for each |
622
+ | | docid, plus back-references (sections |
623
+ | | that reference this section, from the |
624
+ | | reference graph index, each with |
625
+ | | marker_type and context_snippet). |
626
+ | 2 | Depth-1 content, plus full text of |
627
+ | | sibling sections (other sections in |
628
+ | | the same documents), plus forward |
629
+ | | references from the section's own |
630
+ | | content markers. |
631
+ | 3 | Depth-2 content, plus full text of |
632
+ | | referenced sections (one level deep), |
633
+ | | plus their back-references. |
634
+
635
+ Depth values above 3 are clamped to 3.
636
+
637
+ **Output:**
638
+ - **stdout**: JSON `RecallResult` object (single kbid)
639
+ or `RecallResult[]` array (multiple kbids).
640
+
641
+ Single result shape (depth 0):
642
+
643
+ ```json
644
+ {
645
+ "kbid": "a1b2c3d4e5f6g7h8j9k0l1m2n3",
646
+ "heading": "Architecture Overview",
647
+ "type": "text/markdown",
648
+ "content": "Full section text...",
649
+ "docids": ["doc-5678"]
650
+ }
651
+ ```
652
+
653
+ Single result shape (depth 1+):
654
+
655
+ ```json
656
+ {
657
+ "kbid": "a1b2c3d4e5f6g7h8j9k0l1m2n3",
658
+ "heading": "Architecture Overview",
659
+ "type": "text/markdown",
660
+ "content": "Full section text...",
661
+ "docids": ["doc-5678"],
662
+ "documents": [
663
+ {
664
+ "docid": "doc-5678",
665
+ "title": "System Architecture",
666
+ "sections": [
667
+ {
668
+ "kbid": "...",
669
+ "heading": "...",
670
+ "type": "..."
671
+ }
672
+ ]
673
+ }
674
+ ],
675
+ "back_references": [
676
+ {
677
+ "kbid": "ref-section-kbid",
678
+ "heading": "Related Section",
679
+ "type": "text/markdown",
680
+ "marker_type": "link",
681
+ "context_snippet": "For details, see ...",
682
+ "direction": "back"
683
+ }
684
+ ],
685
+ "siblings": [ ... ],
686
+ "references": [ ... ]
687
+ }
688
+ ```
689
+
690
+ Fields beyond `content` and `docids` are present only
691
+ at the corresponding depth level. At depth 0,
692
+ `documents`, `back_references`, `siblings`, and
693
+ `references` are absent. At depth 1, `siblings` and
694
+ `references` are absent. And so on.
695
+
696
+ - **stderr**: errors only.
697
+
698
+ **Exit code:** `0` on success, `1` on error.
699
+
700
+ **Delegation chain:**
701
+ ```
702
+ src/cli.ts parseArgs()
703
+ -> findDb() / promptUser() / runDbInit()
704
+ -> createWorkerClient({ contextPath })
705
+ -> versionGate(client, dbDir)
706
+ -> dispatchCommand(client, options)
707
+ -> runRecall(client, options)
708
+ -> client.recall({ kbids, depth })
709
+ -> IPC -> worker daemon
710
+ -> kb-worker.wasm
711
+ -> fs-database.wasm (fetch)
712
+ ```
713
+
560
714
  ### `mcp` -- start MCP server
561
715
 
562
716
  ```
@@ -604,7 +758,8 @@ The MCP server exposes `retrieve` (section/document
604
758
  lookup by ID) and `status` (database metadata) tools
605
759
  that have no CLI equivalents. These are programmatic
606
760
  operations suited to MCP clients (AI agents). CLI
607
- users use `kbdb search` to find content and
761
+ users use `kbdb search` to find content,
762
+ `kbdb recall` to expand context progressively, and
608
763
  `kbdb content` to compose documents by ID.
609
764
 
610
765
  ### `check` -- integrity check
@@ -614,8 +769,9 @@ kbdb check [options]
614
769
  ```
615
770
 
616
771
  Verify the integrity of the database. Checks section
617
- file checksums, document manifest references, and
618
- type consistency.
772
+ file checksums, document manifest references, type
773
+ consistency, and divergent content (sections sharing
774
+ the same source key with different content).
619
775
 
620
776
  **Output:**
621
777
  - **stdout**: JSON integrity report:
@@ -672,11 +828,15 @@ manifest references it (empty `docids` array).
672
828
  ```json
673
829
  {
674
830
  "removed_sections": 3,
675
- "removed_bytes": 15360
831
+ "removed_bytes": 15360,
832
+ "stale_sources": 1
676
833
  }
677
834
  ```
678
835
  When no sections are eligible, `removed_sections`
679
836
  is `0` and `removed_bytes` is `0`.
837
+ `stale_sources` reports sections whose
838
+ `source_path` file no longer contains their heading
839
+ text (advisory, not automatically removed).
680
840
  - **stderr**: errors only.
681
841
 
682
842
  **Exit code:** `0` on success, `1` on error.
@@ -734,6 +894,55 @@ src/cli.ts parseArgs()
734
894
  -> stdout
735
895
  ```
736
896
 
897
+ ### `export` -- snapshot database
898
+
899
+ ```
900
+ kbdb export [options] [<path>]
901
+ ```
902
+
903
+ Export the database as a self-contained directory
904
+ snapshot for backup, transfer, or version control.
905
+ The export includes sections, documents, and the
906
+ catalog. Indexes are excluded -- they are derived
907
+ data and can be rebuilt with `kbdb rebuild` after
908
+ importing.
909
+
910
+ **Arguments:**
911
+ - `<path>` -- Output directory path. Defaults to
912
+ `./kbdb-export/` in the current working directory.
913
+ If the directory exists, it is overwritten.
914
+
915
+ **Options:**
916
+ - `--db <path>` -- Source database directory.
917
+
918
+ **Output:**
919
+ - **stdout**: JSON report:
920
+ ```json
921
+ {
922
+ "path": "/absolute/path/kbdb-export",
923
+ "sections_exported": 42,
924
+ "documents_exported": 5
925
+ }
926
+ ```
927
+ - **stderr**: errors only.
928
+
929
+ **Exit code:** `0` on success, `1` on error.
930
+
931
+ **Delegation chain:**
932
+ ```
933
+ src/cli.ts parseArgs()
934
+ -> findDb() / promptUser() / runDbInit()
935
+ -> createWorkerClient({ contextPath })
936
+ -> versionGate(client, dbDir)
937
+ -> dispatchCommand(client, options)
938
+ -> runExport(client, options)
939
+ -> client.export({ path })
940
+ -> IPC -> worker daemon
941
+ -> kb-worker.wasm
942
+ -> fs-database.wasm
943
+ -> stdout
944
+ ```
945
+
737
946
  ### `kbdb db` -- database management
738
947
 
739
948
  The `db` command group manages the `.kbdb` database
@@ -1520,10 +1729,13 @@ processes the raw argument vector
1520
1729
  5. All other flags (`--db`, `--format`, `--mode`,
1521
1730
  `--limit`, `--offset`, `--title`, `--description`,
1522
1731
  `--docid`, `--name`, `--persona`, `--body`,
1523
- `--skills`) consume the next token as their value.
1524
- 6. `--content` / `-c` is a boolean flag; it sets
1525
- `options.content = true` without consuming the next
1526
- token.
1732
+ `--skills`, `--depth` / `-d`, `--tags`) consume
1733
+ the next token as their value. `--depth` is parsed
1734
+ as a number and clamped to the range 0--3. `--tags`
1735
+ splits its value on commas into a `string[]`.
1736
+ 6. `--content` / `-c` and `--replace` are boolean
1737
+ flags; they set their respective option to `true`
1738
+ without consuming the next token.
1527
1739
  7. The first non-flag, non-group token becomes the
1528
1740
  **command**.
1529
1741
  8. Subsequent non-flag tokens become **positional
@@ -1584,6 +1796,12 @@ interface CliOptions {
1584
1796
  /** Comma-separated skill kbids
1585
1797
  * (agent create). Parsed to string[]. */
1586
1798
  skills?: string[];
1799
+ /** Recall expansion depth (0-3). Defaults to 0. */
1800
+ depth?: number;
1801
+ /** Comma-separated tags for scoping (learn). */
1802
+ tags?: string[];
1803
+ /** Enable supersession by source key (learn). */
1804
+ replace?: boolean;
1587
1805
  /** Positional arguments following the sub-command. */
1588
1806
  args: string[];
1589
1807
  }
@@ -1638,6 +1856,7 @@ Knowledge Base:
1638
1856
  learn Import content from files/stdin
1639
1857
  unlearn Remove sections by kbid
1640
1858
  search Query the knowledge base
1859
+ recall Retrieve section context by kbid
1641
1860
  content Compose rendered content from ids
1642
1861
 
1643
1862
  Database:
@@ -1650,6 +1869,7 @@ Maintenance:
1650
1869
  sections
1651
1870
  rebuild Reconstruct all index files
1652
1871
  status Show database status
1872
+ export Snapshot database for backup
1653
1873
 
1654
1874
  Skills:
1655
1875
  skill learn Create a new skill definition
@@ -1734,12 +1954,20 @@ interface SearchDisplay {
1734
1954
  docids: string[];
1735
1955
  /** Relevance score from the ranking engine. */
1736
1956
  score: number;
1957
+ /** Normalized score (0.0-1.0) relative to the top
1958
+ * result in this result set. */
1959
+ confidence: number;
1737
1960
  /** KWIC excerpt (~150 chars) centered on the
1738
1961
  * highest-scoring matched term. Empty string
1739
1962
  * for image sections. */
1740
1963
  snippet: string;
1741
1964
  /** Query terms that matched, as a flat string[]. */
1742
1965
  matched_terms: string[];
1966
+ /** Fields that contained matches: subset of
1967
+ * ["heading", "body", "code"]. */
1968
+ matched_fields: string[];
1969
+ /** ISO 8601 creation timestamp. */
1970
+ created_at: string;
1743
1971
  /** Full section text. Empty string when --content
1744
1972
  * is not used. */
1745
1973
  preview: string;
@@ -1764,12 +1992,23 @@ Produced by `runLearn()` for each file ingested.
1764
1992
  interface LearnResult {
1765
1993
  /** Knowledge-base identifier assigned to the section. */
1766
1994
  kbid: string;
1767
- /** Absolute path to the source file (or "-" for stdin). */
1995
+ /** Absolute path to the source file (or "-" for
1996
+ * stdin). */
1768
1997
  path: string;
1769
1998
  /** UTF-8 character count of the ingested content. */
1770
1999
  size: number;
1771
- /** true when the file was skipped without being ingested. */
2000
+ /** true when the file was skipped. */
1772
2001
  skipped: boolean;
2002
+ /** Kbid of the section this one superseded via
2003
+ * --replace, or null. */
2004
+ superseded: string | null;
2005
+ /** Warning strings (e.g. "heading_missing"). */
2006
+ warnings: string[];
2007
+ /** Sections with similarity >= 0.85. */
2008
+ near_duplicates: Array<{
2009
+ kbid: string;
2010
+ similarity: number;
2011
+ }>;
1773
2012
  }
1774
2013
  ```
1775
2014
 
@@ -1860,10 +2099,12 @@ Routing table:
1860
2099
  | `learn` | `runLearn` | yes |
1861
2100
  | `unlearn` | `runUnlearn` | yes |
1862
2101
  | `search` | `runSearch` | yes |
2102
+ | `recall` | `runRecall` | yes |
1863
2103
  | `content` | `runContent` | yes |
1864
2104
  | `check` | `runCheck` | yes |
1865
2105
  | `gc` | `runGc` | yes |
1866
2106
  | `rebuild` | `runRebuild` | yes |
2107
+ | `export` | `runExport` | yes |
1867
2108
  | `db-init` | `runDbInit` | no |
1868
2109
  | `db-migrate` | `runDbMigrate` | yes |
1869
2110
  | `skill-learn` | `runSkillLearn` | yes |
@@ -0,0 +1,259 @@
1
+ # Concurrent Write Safety
2
+
3
+ *One writer at a time, unlimited concurrent readers --
4
+ formalizing the locking model, multi-daemon prevention,
5
+ crash recovery, and stress-test methodology.*
6
+
7
+ ## Goal
8
+
9
+ The worker daemon serializes all write operations
10
+ through a single-writer lock. Multiple concurrent
11
+ readers proceed without any lock. This document
12
+ formalizes the locking model, multi-daemon prevention,
13
+ atomic write guarantees, crash recovery, and
14
+ stress-test methodology.
15
+
16
+ This goal addresses gap #3 from the issue
17
+ [2026-06-23 Opus 4.8 Second Brain Review](../issues/2026-06-23-opus-48-second-brain-review.md):
18
+ the single-writer lock in the worker daemon must be
19
+ validated under concurrent load before concurrent
20
+ multi-agent use can be trusted.
21
+
22
+ ## Single-Writer Lock
23
+
24
+ The daemon acquires an exclusive file lock on
25
+ `kbdb-{ctx}.lock` in the OS temporary directory during
26
+ write operations. The lock file uses the same context
27
+ ID as the PID file and IPC socket (see
28
+ [Worker Daemon](worker-daemon.md) for context ID
29
+ derivation).
30
+
31
+ - **Read operations** -- search, recall, retrieve,
32
+ content, dbStatus, and listByType -- proceed without
33
+ acquiring the lock. Concurrent read requests from
34
+ multiple worker client connections are fully parallel.
35
+ - **Write operations** -- addSection, updateSection,
36
+ removeSection, groupSections, removeGrouping,
37
+ initDirectory, gc, rebuildIndexes, and export --
38
+ acquire the exclusive lock before calling the
39
+ corresponding WASM export. If another write is
40
+ already in progress, the new write queues behind the
41
+ lock and waits.
42
+ - The lock is held only for the duration of a single
43
+ write operation. It is released immediately after
44
+ the operation completes. It is never held across
45
+ multiple operations or across client connections.
46
+ - The locking model is implemented in TypeScript inside
47
+ the worker daemon (`src/shared/worker-daemon/`), not
48
+ inside any WASM module.
49
+
50
+ This model is equivalent to SQLite's default locking:
51
+ readers never block, and writers take turns one at a
52
+ time.
53
+
54
+ ### Write Operations Subject to the Lock
55
+
56
+ | IPC Method | WASM Export |
57
+ |--------------------------|----------------------------|
58
+ | `addSection` | `worker_add_section` |
59
+ | `updateSection` | `worker_update_section` |
60
+ | `removeSection` | `worker_remove_section` |
61
+ | `groupSections` | `worker_group_sections` |
62
+ | `removeGrouping` | `worker_remove_grouping` |
63
+ | `initDirectory` | `worker_init_directory` |
64
+ | `gc` | `worker_garbage_collect` |
65
+ | `rebuildIndexes` | `worker_rebuild_indexes` |
66
+ | `export` | `db_export` |
67
+
68
+ ## Multi-Daemon Prevention
69
+
70
+ Each database context gets exactly one daemon process
71
+ at a time, enforced by a PID file keyed to the context
72
+ ID.
73
+
74
+ - The PID file is named `kbdb-{ctx}.pid` and lives in
75
+ the OS temporary directory. Its presence means a
76
+ daemon for that context is either running or died
77
+ without cleaning up.
78
+ - Before spawning a new daemon, the worker client reads
79
+ the PID file (if present) and checks whether the
80
+ recorded process is alive.
81
+ - **PID file absent** -- no running daemon; spawn a
82
+ new one.
83
+ - **PID file present, process alive** -- connect to
84
+ the existing daemon; do not spawn.
85
+ - **PID file present, process dead** -- stale PID
86
+ file from a prior crash; remove the file and spawn
87
+ a new daemon.
88
+ - The daemon writes its PID file only after all startup
89
+ preconditions pass and the WASM module is loaded
90
+ successfully. See [Worker Daemon](worker-daemon.md)
91
+ for the full startup sequence.
92
+ - On graceful shutdown, the daemon removes its PID
93
+ file before exiting.
94
+
95
+ This protocol ensures that the same database directory
96
+ is never served by two concurrent daemon processes.
97
+
98
+ ## Atomic Write Guarantees
99
+
100
+ All file writes in the database use the atomic
101
+ write pattern: content is written to a temporary file
102
+ first, then the temporary file is renamed to the final
103
+ path. Rename is an atomic operation on all supported
104
+ filesystems (POSIX and Windows NTFS).
105
+
106
+ - **Section files** (`sections/{prefix}/{kbid}.sec`)
107
+ are written to `sections/{prefix}/{kbid}.sec.tmp`
108
+ then renamed.
109
+ - **Document manifests** (`documents/{docid}.toml`)
110
+ are written to `documents/{docid}.toml.tmp` then
111
+ renamed.
112
+ - **Index files** (`indexes/terms.idx`, etc.) are
113
+ rebuilt to temporary paths then renamed into place.
114
+ - **Catalog** (`catalog.toml`) is written last,
115
+ after all data files are in place. A crash
116
+ before the catalog rename leaves the catalog
117
+ consistent with the previous complete state.
118
+
119
+ If the daemon crashes mid-write, the temporary file
120
+ is orphaned but the original file is intact. On next
121
+ daemon startup, orphaned temporary files (matching
122
+ `*.tmp`) in the database directory are cleaned up.
123
+
124
+ The atomic write pattern is specified in
125
+ [Database](database.md) under Storage Design.
126
+
127
+ ## Crash Recovery
128
+
129
+ The table below describes every identified failure
130
+ scenario, the resulting disk state, and the recovery
131
+ action.
132
+
133
+ | Scenario | State After Crash | Recovery |
134
+ |---|---|---|
135
+ | Crash during section write | `*.sec.tmp` orphaned, original `.sec` intact | Startup cleans `*.tmp` files |
136
+ | Crash during index rebuild | Partial `*.idx.tmp`, originals intact | Startup cleans `*.tmp`; next `rebuildIndexes` overwrites |
137
+ | Crash during GC | Some unreferenced sections deleted, others not | Re-run `gc`; idempotent |
138
+ | Crash during catalog write | `catalog.toml.tmp` orphaned, original intact | Startup cleans `*.tmp` |
139
+ | PID file not removed | Stale `kbdb-{ctx}.pid` on disk | Worker client detects dead process, removes PID, spawns new daemon |
140
+ | Lock file not released | `kbdb-{ctx}.lock` orphaned | Daemon startup acquires the exclusive lock fresh; OS releases orphaned file locks when the process that held them exits |
141
+ | WASM crash inside write | Partial in-memory state, temp file may exist | Daemon exits; startup cleans `*.tmp`; next operation starts clean |
142
+
143
+ All recovery actions are automatic. No manual
144
+ intervention is required for any scenario in this
145
+ table.
146
+
147
+ ## Stress Test Specification
148
+
149
+ The following test harness validates concurrent write
150
+ safety. It must pass on both Deno and Node.js runtimes
151
+ before a release can claim concurrent safety.
152
+
153
+ ### Setup
154
+
155
+ 1. Create a fresh, empty database directory.
156
+ 2. Prepare N unique documents (N in the range 10--50).
157
+ Each document must have distinct content to avoid
158
+ content-address collisions that would make section
159
+ count verification meaningless.
160
+
161
+ ### Execution
162
+
163
+ 3. Launch N concurrent `kbdb learn` invocations, all
164
+ targeting the same database directory. Each
165
+ invocation learns one of the N unique documents.
166
+ 4. Use a process pool or parallel shell to launch all
167
+ N invocations simultaneously -- not sequentially.
168
+ 5. Wait for all N invocations to complete. Record any
169
+ non-zero exit codes as failures.
170
+
171
+ ### Verification
172
+
173
+ 6. Run `kbdb check` against the database.
174
+ The response must have `ok: true`. Any errors in the
175
+ response are test failures.
176
+ 7. Query the section count. The count must equal the
177
+ expected number of sections derived from the N
178
+ documents (no duplicates from race conditions, no
179
+ losses from interleaved writes).
180
+ 8. Verify that no section has a checksum mismatch.
181
+ A mismatch indicates a torn write -- the atomic
182
+ rename pattern failed or was bypassed.
183
+
184
+ ### Pass Criteria
185
+
186
+ | Check | Expected Result |
187
+ |---|---|
188
+ | All `kbdb learn` exit codes | `0` |
189
+ | `kbdb check` response | `ok: true`, zero errors |
190
+ | Section count | Exactly the expected count |
191
+ | Checksum mismatches | Zero |
192
+
193
+ ### Runtime Matrix
194
+
195
+ Run the full harness on both runtimes:
196
+
197
+ | Runtime | Command prefix |
198
+ |---|---|
199
+ | Node.js >= 20 | `node dist/kbdb.mjs` |
200
+ | Deno | `deno run --allow-all src/cli.ts` |
201
+
202
+ Both must pass. A failure on one runtime but not the
203
+ other indicates a runtime-specific locking bug.
204
+
205
+ ## Edge Cases
206
+
207
+ ### Two CLI Invocations Through the Same Daemon
208
+
209
+ When two `kbdb` CLI processes connect to the same
210
+ daemon (same database directory), their write requests
211
+ share the single-writer lock automatically. No user
212
+ action is required. The second write waits for the
213
+ first to complete.
214
+
215
+ ### MCP Server Connections
216
+
217
+ An MCP server connection routes all requests through
218
+ a worker client to the daemon, the same as a CLI
219
+ invocation. Multiple MCP client connections routed to
220
+ the same daemon share the write lock:
221
+
222
+ - Concurrent read requests from multiple MCP clients
223
+ are served in parallel.
224
+ - Concurrent write requests from multiple MCP clients
225
+ are serialized through the lock one at a time.
226
+
227
+ There is no per-connection or per-client lock; the
228
+ lock is global to the daemon process.
229
+
230
+ ### Direct File Access
231
+
232
+ Accessing or modifying `.kbdb` files directly -- via
233
+ text editor, shell commands, or any process other than
234
+ the daemon -- is not supported. Direct writes bypass
235
+ the single-writer lock and the atomic write pattern,
236
+ and may corrupt the database. All mutations must go
237
+ through the daemon's IPC API.
238
+
239
+ ## Design Constraints
240
+
241
+ - **Per-daemon locking, not per-file** -- The lock
242
+ covers all writes to a database context, not writes
243
+ to individual files. This means writes to unrelated
244
+ sections still serialize behind the same lock. The
245
+ simplicity of a single lock outweighs the throughput
246
+ cost at current scale. If per-section parallelism
247
+ becomes necessary, this constraint is the place to
248
+ revisit.
249
+ - **Single-machine only** -- The locking model
250
+ relies on OS-level file locks and process identity
251
+ on a single machine. It provides no guarantees across
252
+ network filesystems or multiple machines. Cross-machine
253
+ scenarios require an external sync mechanism (see
254
+ [Sync](sync.md) when available).
255
+ - **Lock implemented in TypeScript** -- The write lock
256
+ is managed by the TypeScript worker daemon layer, not
257
+ by any WASM module. WASM modules have no knowledge of
258
+ concurrent callers; they process one call at a time
259
+ through the host.