@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,69 @@
1
+ import type { DaemonConfig } from '../typings/daemon-config.interface.ts';
2
+
3
+ /**
4
+ * Maps incoming IPC method names to `kb-worker.wasm` export names.
5
+ *
6
+ * Both camelCase and snake_case variants of each method are
7
+ * included so that clients may use either convention.
8
+ */
9
+ export const WASM_METHOD_MAP: Readonly<
10
+ Partial<Record<string, string>>
11
+ > = {
12
+ search: 'worker_search',
13
+ addSection: 'worker_add_section',
14
+ add_section: 'worker_add_section',
15
+ updateSection: 'worker_update_section',
16
+ update_section: 'worker_update_section',
17
+ removeSection: 'worker_remove_section',
18
+ remove_section: 'worker_remove_section',
19
+ readSections: 'worker_read_sections',
20
+ read_sections: 'worker_read_sections',
21
+ groupSections: 'worker_group_sections',
22
+ group_sections: 'worker_group_sections',
23
+ removeGrouping: 'worker_remove_grouping',
24
+ remove_grouping: 'worker_remove_grouping',
25
+ retrieveDocument: 'worker_retrieve_doc',
26
+ retrieve_doc: 'worker_retrieve_doc',
27
+ content: 'worker_compose',
28
+ compose: 'worker_compose',
29
+ integrity_check: 'worker_check_integrity',
30
+ integrityCheck: 'worker_check_integrity',
31
+ gc: 'worker_garbage_collect',
32
+ rebuild_indexes: 'worker_rebuild_indexes',
33
+ rebuildIndexes: 'worker_rebuild_indexes',
34
+ init_directory: 'worker_init_directory',
35
+ initDirectory: 'worker_init_directory',
36
+ migrateDatabase: 'worker_migrate',
37
+ query: 'worker_query',
38
+ get_result_status: 'worker_result_status',
39
+ get_result: 'worker_get_result',
40
+ invalidate: 'worker_invalidate',
41
+ invalidate_all: 'worker_invalidate_all',
42
+ invalidateAll: 'worker_invalidate_all',
43
+ db_status: 'worker_status',
44
+ dbStatus: 'worker_status',
45
+ listByType: 'worker_list_by_type',
46
+ list_by_type: 'worker_list_by_type',
47
+ listDocumentsByType: 'worker_list_docs_by_type',
48
+ list_docs_by_type: 'worker_list_docs_by_type',
49
+ recall: 'worker_recall',
50
+ export: 'worker_export',
51
+ exportDb: 'worker_export',
52
+ };
53
+
54
+ /** Prefix shared by all IPC config-accessor method names. */
55
+ export const CONFIG_PREFIX = 'config_';
56
+
57
+ /**
58
+ * Maps config IPC key suffixes to `DaemonConfig` property names.
59
+ *
60
+ * A client sends `config_timeout_ms` to read `config.timeoutMs`.
61
+ */
62
+ export const CONFIG_KEY_MAP: Readonly<
63
+ Partial<Record<string, keyof DaemonConfig>>
64
+ > = {
65
+ timeout_ms: 'timeoutMs',
66
+ item_ttl_ms: 'itemTtlMs',
67
+ item_limit: 'itemLimit',
68
+ index_limit: 'indexLimit',
69
+ };
@@ -0,0 +1,16 @@
1
+ import type { IpcResponse } from '../typings/ipc-handler.interface.ts';
2
+
3
+ /**
4
+ * Builds a JSON-RPC 2.0 error response object.
5
+ *
6
+ * @param id - request identifier to echo back in the response
7
+ * @param code - JSON-RPC error code
8
+ * @param message - human-readable error description
9
+ */
10
+ export function buildIpcErrorResponse(
11
+ id: number | string,
12
+ code: number,
13
+ message: string,
14
+ ): IpcResponse {
15
+ return { jsonrpc: '2.0', id, error: { code, message } };
16
+ }
@@ -0,0 +1,54 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { DB_FORMAT_VERSION } from '../constants/daemon-defaults.constant.ts';
4
+ import { parseCatalogVersion } from './parse-catalog-version.function.ts';
5
+
6
+ /**
7
+ * Reads `catalog.toml` in `targetDir` and validates its version
8
+ * against `DB_FORMAT_VERSION`.
9
+ *
10
+ * @param targetDir - absolute path to the `.kbdb` directory
11
+ * @throws {Error} when the catalog cannot be read, is missing a
12
+ * version, or the version is incompatible with the current engine
13
+ */
14
+ export function checkCatalogVersion(targetDir: string): void {
15
+ const catalogPath = join(targetDir, 'catalog.toml');
16
+ let text: string;
17
+ try {
18
+ text = readFileSync(catalogPath, 'utf-8');
19
+ } catch {
20
+ throw new Error(
21
+ `cannot read database directory: ${targetDir}` +
22
+ ' -- permission denied',
23
+ );
24
+ }
25
+
26
+ const version = parseCatalogVersion(text);
27
+ if (version === null) {
28
+ throw new Error(
29
+ 'database version 0 requires migration to version ' +
30
+ String(DB_FORMAT_VERSION) +
31
+ ' -- run `kbdb --migrate` before starting the daemon',
32
+ );
33
+ }
34
+
35
+ if (version > DB_FORMAT_VERSION) {
36
+ throw new Error(
37
+ 'database version ' +
38
+ String(version) +
39
+ ' is newer than kbdb version ' +
40
+ String(DB_FORMAT_VERSION) +
41
+ ' -- upgrade kbdb to open this database',
42
+ );
43
+ }
44
+
45
+ if (version < DB_FORMAT_VERSION) {
46
+ throw new Error(
47
+ 'database version ' +
48
+ String(version) +
49
+ ' requires migration to version ' +
50
+ String(DB_FORMAT_VERSION) +
51
+ ' -- run `kbdb --migrate` before starting the daemon',
52
+ );
53
+ }
54
+ }
@@ -0,0 +1,28 @@
1
+ import { existsSync, accessSync, constants } from 'node:fs';
2
+ import { checkCatalogVersion } from './check-catalog-version.function.ts';
3
+
4
+ /**
5
+ * Validates startup preconditions for the worker daemon.
6
+ *
7
+ * Checks that `targetDir` exists, is readable and writable, and
8
+ * that `catalog.toml` reports a compatible format version.
9
+ *
10
+ * @param targetDir - absolute path to the `.kbdb` directory
11
+ * @throws {Error} when any precondition fails
12
+ */
13
+ export function checkPreconditions(targetDir: string): void {
14
+ if (!existsSync(targetDir)) {
15
+ throw new Error(`database directory not found: ${targetDir}`);
16
+ }
17
+
18
+ try {
19
+ accessSync(targetDir, constants.R_OK | constants.W_OK);
20
+ } catch {
21
+ throw new Error(
22
+ `cannot access database directory: ${targetDir}` +
23
+ ' -- permission denied',
24
+ );
25
+ }
26
+
27
+ checkCatalogVersion(targetDir);
28
+ }
@@ -0,0 +1,33 @@
1
+ import { existsSync, readFileSync, unlinkSync } from 'node:fs';
2
+ import { isProcessAlive } from '../../platform/functions/is-process-alive.function.ts';
3
+
4
+ /**
5
+ * Checks whether a PID file contains a stale process ID.
6
+ *
7
+ * Reads the PID from the file and checks whether the process is
8
+ * still running using `process.kill(pid, 0)`. If the process is
9
+ * dead, or the PID is unparseable, removes the PID file and
10
+ * returns `true`. Returns `false` when the process is alive or
11
+ * the file does not exist.
12
+ *
13
+ * @param pidPath - absolute path to the PID file to inspect
14
+ * @returns `true` if the PID file is stale (process dead or
15
+ * content invalid) and was removed; `false` if the process is
16
+ * alive or the file does not exist
17
+ */
18
+ export function detectStalePid(pidPath: string): boolean {
19
+ if (!existsSync(pidPath)) return false;
20
+
21
+ const pidStr = readFileSync(pidPath, 'utf-8').trim();
22
+ const pid = parseInt(pidStr, 10);
23
+ const isAlive = !isNaN(pid) && pid > 0 && isProcessAlive(pid);
24
+
25
+ if (isAlive) return false;
26
+
27
+ try {
28
+ unlinkSync(pidPath);
29
+ } catch {
30
+ // Best-effort removal; stale file is treated as detected
31
+ }
32
+ return true;
33
+ }
@@ -0,0 +1,190 @@
1
+ import type { DaemonConfig } from '../typings/daemon-config.interface.ts';
2
+ import type { HandlerContext } from '../typings/handler-context.interface.ts';
3
+ import { IpcError } from '../classes/ipc-error.class.ts';
4
+ import {
5
+ WASM_METHOD_MAP,
6
+ CONFIG_PREFIX,
7
+ } from '../constants/wasm-method-map.constant.ts';
8
+ import {
9
+ handleSearch,
10
+ handleResultStatus,
11
+ handleGetResult,
12
+ handleReadSections,
13
+ handleRetrieveDoc,
14
+ handleCompose,
15
+ handleIntegrityCheck,
16
+ handleDbStatus,
17
+ handleListByType,
18
+ handleListDocsByType,
19
+ handleRecall,
20
+ handleExport,
21
+ } from './handle-read-ops.function.ts';
22
+ import {
23
+ handleAddSection,
24
+ handleUpdateSection,
25
+ handleRemoveSection,
26
+ handleGroupSections,
27
+ handleRemoveGrouping,
28
+ handleInitDirectory,
29
+ handleInvalidate,
30
+ handleInvalidateAll,
31
+ handleGc,
32
+ handleRebuild,
33
+ } from './handle-write-ops.function.ts';
34
+ import { handleCheckVersion } from './handle-check-version.function.ts';
35
+ import { handleConfigMethod } from './handle-config-method.function.ts';
36
+ import {
37
+ acquireWriteLock,
38
+ releaseWriteLock,
39
+ } from './write-lock.function.ts';
40
+ import type { WriteLockState } from '../typings/write-lock.interface.ts';
41
+ import { callWasmSync } from './wasm-bridge.function.ts';
42
+
43
+ /** Daemon status information returned by `status` and `idle_at`. */
44
+ interface DaemonStatus {
45
+ /** Whether the daemon is currently serving connections. */
46
+ readonly status: 'busy' | 'idle';
47
+ /** Whether the startup integrity check passed. */
48
+ readonly integrityOk: boolean;
49
+ /** Integrity errors found at startup, if any. */
50
+ readonly integrityErrors: string[];
51
+ /** Unix timestamp (seconds) of the last completed request. */
52
+ readonly idleAt: number;
53
+ }
54
+
55
+ /**
56
+ * Dispatches an IPC method to its handler.
57
+ *
58
+ * Routes daemon-state methods inline and delegates WASM read/write
59
+ * operations to their respective handler functions. Write operations
60
+ * are serialised through the single-writer lock.
61
+ *
62
+ * @param method - IPC method name
63
+ * @param params - request parameters
64
+ * @param ctx - handler context (WASM modules, config, targetDir)
65
+ * @param daemonStatus - live daemon state read by the `status` method
66
+ * @param writeLock - shared write-lock state
67
+ */
68
+ export async function dispatchRequest(
69
+ method: string,
70
+ params: Record<string, unknown>,
71
+ ctx: HandlerContext,
72
+ daemonStatus: DaemonStatus,
73
+ writeLock: WriteLockState,
74
+ ): Promise<unknown> {
75
+ if (method === 'status') {
76
+ return {
77
+ status: daemonStatus.status,
78
+ integrityOk: daemonStatus.integrityOk,
79
+ integrityErrors: daemonStatus.integrityErrors,
80
+ };
81
+ }
82
+ if (method === 'idle_at') return daemonStatus.idleAt;
83
+ if (method === 'checkVersion') {
84
+ return handleCheckVersion(params, ctx.targetDir);
85
+ }
86
+ if (method.startsWith(CONFIG_PREFIX)) {
87
+ return handleConfigMethod(method, ctx.config);
88
+ }
89
+
90
+ const wasmMethod = WASM_METHOD_MAP[method];
91
+ if (wasmMethod === undefined) {
92
+ throw new IpcError(-32601, `Method not found: ${method}`);
93
+ }
94
+ return dispatchWasm(method, wasmMethod, params, ctx, writeLock);
95
+ }
96
+
97
+ async function dispatchWasm(
98
+ method: string,
99
+ wasmExport: string,
100
+ params: Record<string, unknown>,
101
+ ctx: HandlerContext,
102
+ writeLock: WriteLockState,
103
+ ): Promise<unknown> {
104
+ // Read-only operations -- no write lock required.
105
+ if (method === 'search' || method === 'query') {
106
+ return handleSearch(ctx, params);
107
+ }
108
+ if (method === 'readSections' || method === 'read_sections') {
109
+ return handleReadSections(ctx, params);
110
+ }
111
+ if (method === 'retrieveDocument' || method === 'retrieve_doc') {
112
+ return handleRetrieveDoc(ctx, params);
113
+ }
114
+ if (method === 'content' || method === 'compose') {
115
+ return handleCompose(ctx, params);
116
+ }
117
+ if (method === 'integrityCheck' || method === 'integrity_check') {
118
+ return handleIntegrityCheck(ctx);
119
+ }
120
+ if (method === 'dbStatus' || method === 'db_status') {
121
+ return handleDbStatus(ctx);
122
+ }
123
+ if (method === 'get_result_status') {
124
+ return handleResultStatus(ctx, params);
125
+ }
126
+ if (method === 'get_result') {
127
+ return handleGetResult(ctx, params);
128
+ }
129
+ if (method === 'listByType' || method === 'list_by_type') {
130
+ return handleListByType(ctx, params);
131
+ }
132
+ if (
133
+ method === 'listDocumentsByType' ||
134
+ method === 'list_docs_by_type'
135
+ ) {
136
+ return handleListDocsByType(ctx, params);
137
+ }
138
+ if (method === 'recall') return handleRecall(ctx, params);
139
+ if (method === 'export' || method === 'exportDb') {
140
+ return handleExport(ctx, params);
141
+ }
142
+
143
+ // Write operations -- serialised through the single-writer lock.
144
+ await acquireWriteLock(writeLock);
145
+ try {
146
+ if (method === 'invalidate') return handleInvalidate(ctx, params);
147
+ if (method === 'invalidateAll' || method === 'invalidate_all') {
148
+ return handleInvalidateAll(ctx);
149
+ }
150
+ if (method === 'addSection' || method === 'add_section') {
151
+ return handleAddSection(ctx, params);
152
+ }
153
+ if (method === 'updateSection' || method === 'update_section') {
154
+ return handleUpdateSection(ctx, params);
155
+ }
156
+ if (method === 'removeSection' || method === 'remove_section') {
157
+ return handleRemoveSection(ctx, params);
158
+ }
159
+ if (method === 'groupSections' || method === 'group_sections') {
160
+ return handleGroupSections(ctx, params);
161
+ }
162
+ if (method === 'removeGrouping' || method === 'remove_grouping') {
163
+ return handleRemoveGrouping(ctx, params);
164
+ }
165
+ if (method === 'gc') return handleGc(ctx);
166
+ if (method === 'rebuildIndexes' || method === 'rebuild_indexes') {
167
+ return handleRebuild(ctx);
168
+ }
169
+ if (method === 'initDirectory' || method === 'init_directory') {
170
+ return handleInitDirectory(ctx, params);
171
+ }
172
+ if (method === 'migrateDatabase') {
173
+ throw new IpcError(
174
+ -32601,
175
+ 'migrateDatabase is not yet supported',
176
+ );
177
+ }
178
+ return callWasmSync(ctx.modules, wasmExport, new Uint8Array(0));
179
+ } finally {
180
+ releaseWriteLock(writeLock);
181
+ }
182
+ }
183
+
184
+ /**
185
+ * Re-export `DaemonConfig` so callers can pass strongly-typed
186
+ * config without an extra import.
187
+ *
188
+ * @internal
189
+ */
190
+ export type { DaemonConfig };
@@ -0,0 +1,74 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { DB_FORMAT_VERSION } from '../constants/daemon-defaults.constant.ts';
4
+ import { parseCatalogVersion } from './parse-catalog-version.function.ts';
5
+
6
+ /** Payload returned by the `checkVersion` IPC method. */
7
+ interface VersionCheckResult {
8
+ /** Compatibility status string. */
9
+ readonly status: string;
10
+ /** Format version stored in the catalog. */
11
+ readonly currentVersion: number;
12
+ /** Format version required by the current engine. */
13
+ readonly requiredVersion: number;
14
+ }
15
+
16
+ /**
17
+ * Handles the `checkVersion` IPC method.
18
+ *
19
+ * Reads `catalog.toml` at `targetPath` and compares its format
20
+ * version to `DB_FORMAT_VERSION`. Returns a result object without
21
+ * making any modifications.
22
+ *
23
+ * @param targetPath - absolute path to the `.kbdb` directory to
24
+ * inspect; falls back to `defaultDir` when not provided in params
25
+ * @param defaultDir - fallback directory when `params.targetPath`
26
+ * is absent
27
+ */
28
+ export function handleCheckVersion(
29
+ params: Record<string, unknown>,
30
+ defaultDir: string,
31
+ ): VersionCheckResult {
32
+ const targetPath =
33
+ typeof params['targetPath'] === 'string'
34
+ ? params['targetPath']
35
+ : defaultDir;
36
+ const catalogPath = join(targetPath, 'catalog.toml');
37
+ let text: string;
38
+ try {
39
+ text = readFileSync(catalogPath, 'utf-8');
40
+ } catch {
41
+ return {
42
+ status: 'needs_migration',
43
+ currentVersion: 0,
44
+ requiredVersion: DB_FORMAT_VERSION,
45
+ };
46
+ }
47
+ const version = parseCatalogVersion(text);
48
+ if (version === null) {
49
+ return {
50
+ status: 'needs_migration',
51
+ currentVersion: 0,
52
+ requiredVersion: DB_FORMAT_VERSION,
53
+ };
54
+ }
55
+ if (version > DB_FORMAT_VERSION) {
56
+ return {
57
+ status: 'too_new',
58
+ currentVersion: version,
59
+ requiredVersion: DB_FORMAT_VERSION,
60
+ };
61
+ }
62
+ if (version < DB_FORMAT_VERSION) {
63
+ return {
64
+ status: 'needs_migration',
65
+ currentVersion: version,
66
+ requiredVersion: DB_FORMAT_VERSION,
67
+ };
68
+ }
69
+ return {
70
+ status: 'compatible',
71
+ currentVersion: version,
72
+ requiredVersion: DB_FORMAT_VERSION,
73
+ };
74
+ }
@@ -0,0 +1,27 @@
1
+ import type { DaemonConfig } from '../typings/daemon-config.interface.ts';
2
+ import { IpcError } from '../classes/ipc-error.class.ts';
3
+ import {
4
+ CONFIG_PREFIX,
5
+ CONFIG_KEY_MAP,
6
+ } from '../constants/wasm-method-map.constant.ts';
7
+
8
+ /**
9
+ * Handles `config_{key}` IPC methods by returning the corresponding
10
+ * `DaemonConfig` field value.
11
+ *
12
+ * @param method - the full method name, e.g. `config_timeout_ms`
13
+ * @param config - parsed daemon configuration
14
+ * @throws {IpcError} with code `-32601` when the key suffix is not
15
+ * in `CONFIG_KEY_MAP`
16
+ */
17
+ export function handleConfigMethod(
18
+ method: string,
19
+ config: DaemonConfig,
20
+ ): unknown {
21
+ const key = method.slice(CONFIG_PREFIX.length);
22
+ const prop = CONFIG_KEY_MAP[key];
23
+ if (prop === undefined) {
24
+ throw new IpcError(-32601, `Method not found: ${method}`);
25
+ }
26
+ return config[prop];
27
+ }