@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
@@ -136,8 +136,9 @@ export function createHostImports(
136
136
 
137
137
  function readPathArg(ptr: number, len: number): string {
138
138
  const bytes = new Uint8Array(getBuffer(), ptr, len);
139
- const relative = new TextDecoder().decode(bytes);
140
- return join(contextPath, relative);
139
+ const decoded = new TextDecoder().decode(bytes);
140
+ if (decoded.startsWith('/')) return decoded;
141
+ return join(contextPath, decoded);
141
142
  }
142
143
 
143
144
  return {
@@ -163,14 +164,21 @@ export function createHostImports(
163
164
  const filePath = readPathArg(pathPtr, pathLen);
164
165
  const data = fs.readFileSync(filePath);
165
166
  const dataLen = data.byteLength;
166
- const dv = new DataView(getBuffer());
167
167
  if (dataLen === 0) {
168
+ // No allocation -- buffer cannot have grown; safe to
169
+ // create DataView now.
170
+ const dv = new DataView(getBuffer());
168
171
  dv.setUint32(outPtr, 0, true);
169
172
  dv.setUint32(outLen, 0, true);
170
173
  return 0;
171
174
  }
172
175
  const dataPtr = allocator.alloc(dataLen);
173
176
  if (dataPtr === 0) return -1;
177
+ // Create DataView AFTER alloc() -- alloc may trigger WASM
178
+ // memory growth, which detaches the old ArrayBuffer and
179
+ // replaces it with a new one. A DataView captured before
180
+ // growth would reference the detached buffer and throw.
181
+ const dv = new DataView(getBuffer());
174
182
  const memView = new Uint8Array(getBuffer());
175
183
  memView.set(
176
184
  new Uint8Array(
@@ -267,14 +275,21 @@ export function createHostImports(
267
275
  const entries = fs.readdirSync(dirPath);
268
276
  const text = entries.join('\n');
269
277
  const encoded = new TextEncoder().encode(text);
270
- const dv = new DataView(getBuffer());
271
278
  if (encoded.length === 0) {
279
+ // No allocation -- buffer cannot have grown; safe to
280
+ // create DataView now.
281
+ const dv = new DataView(getBuffer());
272
282
  dv.setUint32(outPtr, 0, true);
273
283
  dv.setUint32(outLen, 0, true);
274
284
  return 0;
275
285
  }
276
286
  const dataPtr = allocator.alloc(encoded.length);
277
287
  if (dataPtr === 0) return -1;
288
+ // Create DataView AFTER alloc() -- alloc may trigger WASM
289
+ // memory growth, which detaches the old ArrayBuffer and
290
+ // replaces it with a new one. A DataView captured before
291
+ // growth would reference the detached buffer and throw.
292
+ const dv = new DataView(getBuffer());
278
293
  new Uint8Array(getBuffer(), dataPtr, encoded.length).set(
279
294
  encoded,
280
295
  );
@@ -28,6 +28,8 @@ export function createIpcServer(
28
28
  const server = createServer((socket) => {
29
29
  let buffer = '';
30
30
 
31
+ let processingQueue = Promise.resolve();
32
+
31
33
  socket.on('data', (chunk: Buffer) => {
32
34
  buffer += chunk.toString();
33
35
  const lines = buffer.split('\n');
@@ -35,7 +37,9 @@ export function createIpcServer(
35
37
 
36
38
  for (const line of lines) {
37
39
  if (!line.trim()) continue;
38
- void handleLine(line, handler, socket);
40
+ processingQueue = processingQueue.then(() =>
41
+ handleLine(line, handler, socket),
42
+ );
39
43
  }
40
44
  });
41
45
 
@@ -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
+ }
@@ -0,0 +1,236 @@
1
+ import {
2
+ encodeSearchParams,
3
+ encodeKbidList,
4
+ encodeIdentifierList,
5
+ encodeTypeFilterParam,
6
+ encodeRecallParams,
7
+ decodePagedSearchResult,
8
+ decodeSectionRecords,
9
+ decodeSectionRecordList,
10
+ decodeDocumentManifest,
11
+ decodeDocumentManifestList,
12
+ decodeComposeOutput,
13
+ decodeKeyValueText,
14
+ decodeRecallResult,
15
+ } from '../../wasm-codec/index.ts';
16
+ import type { HandlerContext } from '../typings/handler-context.interface.ts';
17
+ import { IpcError } from '../classes/ipc-error.class.ts';
18
+ import {
19
+ getWasmExport,
20
+ wasmAlloc,
21
+ wasmWrite,
22
+ wasmFree,
23
+ readReturnSlot,
24
+ callWasmSync,
25
+ callWasmZeroArg,
26
+ } from './wasm-bridge.function.ts';
27
+
28
+ /**
29
+ * Handles `search` and `query` IPC methods.
30
+ *
31
+ * Encodes parameters, invokes the `worker_search` token pipeline,
32
+ * waits synchronously for the result, and decodes the paged result.
33
+ */
34
+ export function handleSearch(
35
+ ctx: HandlerContext,
36
+ params: Record<string, unknown>,
37
+ ): unknown {
38
+ const query = (params['query'] as string | undefined) ?? '';
39
+ const mode = (params['mode'] as string | undefined) ?? 'and';
40
+ const limit = Number(params['limit'] ?? 20);
41
+ const offset = Number(params['offset'] ?? 0);
42
+ const encoded = encodeSearchParams(query, mode, limit, offset);
43
+
44
+ const searchFn = getWasmExport(ctx.modules, 'worker_search');
45
+ const ptr = wasmAlloc(ctx.modules, encoded.length);
46
+ wasmWrite(ctx.modules, ptr, encoded);
47
+ const token = searchFn(ptr, encoded.length) as number;
48
+ wasmFree(ctx.modules, ptr, encoded.length);
49
+
50
+ const statusFn = getWasmExport(ctx.modules, 'worker_result_status');
51
+ const status = statusFn(token) as number;
52
+ if (status === 3) {
53
+ getWasmExport(ctx.modules, 'worker_get_result')(token);
54
+ const errBytes = readReturnSlot(ctx.modules);
55
+ throw new IpcError(-32000, new TextDecoder().decode(errBytes));
56
+ }
57
+
58
+ const getResultFn = getWasmExport(ctx.modules, 'worker_get_result');
59
+ const rc = getResultFn(token) as number;
60
+ if (rc === -1) {
61
+ const errBytes = readReturnSlot(ctx.modules);
62
+ throw new IpcError(-32000, new TextDecoder().decode(errBytes));
63
+ }
64
+ return decodePagedSearchResult(readReturnSlot(ctx.modules));
65
+ }
66
+
67
+ /**
68
+ * Handles the `get_result_status` IPC method.
69
+ */
70
+ export function handleResultStatus(
71
+ ctx: HandlerContext,
72
+ params: Record<string, unknown>,
73
+ ): unknown {
74
+ const token = Number(params['token'] ?? 0);
75
+ const fn = getWasmExport(ctx.modules, 'worker_result_status');
76
+ return { status: fn(token) as number };
77
+ }
78
+
79
+ /**
80
+ * Handles the `get_result` IPC method.
81
+ */
82
+ export function handleGetResult(
83
+ ctx: HandlerContext,
84
+ params: Record<string, unknown>,
85
+ ): unknown {
86
+ const token = Number(params['token'] ?? 0);
87
+ const fn = getWasmExport(ctx.modules, 'worker_get_result');
88
+ const rc = fn(token) as number;
89
+ if (rc === -1) {
90
+ const errBytes = readReturnSlot(ctx.modules);
91
+ throw new IpcError(-32000, new TextDecoder().decode(errBytes));
92
+ }
93
+ return decodePagedSearchResult(readReturnSlot(ctx.modules));
94
+ }
95
+
96
+ /**
97
+ * Handles the `readSections` IPC method.
98
+ */
99
+ export function handleReadSections(
100
+ ctx: HandlerContext,
101
+ params: Record<string, unknown>,
102
+ ): unknown {
103
+ const kbids = (params['kbids'] ?? []) as string[];
104
+ const encoded = encodeKbidList(kbids);
105
+ const bytes = callWasmSync(
106
+ ctx.modules,
107
+ 'worker_read_sections',
108
+ encoded,
109
+ );
110
+ return decodeSectionRecords(bytes);
111
+ }
112
+
113
+ /**
114
+ * Handles the `retrieveDocument` IPC method.
115
+ */
116
+ export function handleRetrieveDoc(
117
+ ctx: HandlerContext,
118
+ params: Record<string, unknown>,
119
+ ): unknown {
120
+ const docid = (params['docid'] as string | undefined) ?? '';
121
+ const encoded = new TextEncoder().encode(docid);
122
+ const bytes = callWasmSync(
123
+ ctx.modules,
124
+ 'worker_retrieve_doc',
125
+ encoded,
126
+ );
127
+ return decodeDocumentManifest(bytes);
128
+ }
129
+
130
+ /**
131
+ * Handles the `content` and `compose` IPC methods.
132
+ */
133
+ export function handleCompose(
134
+ ctx: HandlerContext,
135
+ params: Record<string, unknown>,
136
+ ): unknown {
137
+ const ids = (params['ids'] ?? []) as string[];
138
+ const encoded = encodeIdentifierList(ids);
139
+ const bytes = callWasmSync(ctx.modules, 'worker_compose', encoded);
140
+ const output = decodeComposeOutput(bytes);
141
+ return { data: output.markdown, total: Number(output.totalChars) };
142
+ }
143
+
144
+ /**
145
+ * Handles the `integrityCheck` IPC method.
146
+ */
147
+ export function handleIntegrityCheck(ctx: HandlerContext): unknown {
148
+ callWasmZeroArg(ctx.modules, 'worker_check_integrity');
149
+ const bytes = readReturnSlot(ctx.modules);
150
+ return decodeKeyValueText(new TextDecoder().decode(bytes));
151
+ }
152
+
153
+ /**
154
+ * Handles the `dbStatus` IPC method.
155
+ */
156
+ export function handleDbStatus(ctx: HandlerContext): unknown {
157
+ callWasmZeroArg(ctx.modules, 'worker_status');
158
+ const bytes = readReturnSlot(ctx.modules);
159
+ return decodeKeyValueText(new TextDecoder().decode(bytes));
160
+ }
161
+
162
+ /**
163
+ * Handles the `listByType` IPC method.
164
+ */
165
+ export function handleListByType(
166
+ ctx: HandlerContext,
167
+ params: Record<string, unknown>,
168
+ ): unknown {
169
+ const typeStr = (params['sectionType'] as string | undefined) ?? '';
170
+ const encoded = encodeTypeFilterParam(typeStr);
171
+ const bytes = callWasmSync(
172
+ ctx.modules,
173
+ 'worker_list_by_type',
174
+ encoded,
175
+ );
176
+ return decodeSectionRecordList(bytes);
177
+ }
178
+
179
+ /**
180
+ * Handles the `listDocumentsByType` IPC method.
181
+ */
182
+ export function handleListDocsByType(
183
+ ctx: HandlerContext,
184
+ params: Record<string, unknown>,
185
+ ): unknown {
186
+ const typeStr = (params['docType'] as string | undefined) ?? '';
187
+ const encoded = encodeTypeFilterParam(typeStr);
188
+ const bytes = callWasmSync(
189
+ ctx.modules,
190
+ 'worker_list_docs_by_type',
191
+ encoded,
192
+ );
193
+ return decodeDocumentManifestList(bytes);
194
+ }
195
+
196
+ /**
197
+ * Handles the `recall` IPC method.
198
+ */
199
+ export function handleRecall(
200
+ ctx: HandlerContext,
201
+ params: Record<string, unknown>,
202
+ ): unknown {
203
+ const kbid =
204
+ typeof params['kbid'] === 'string' ? params['kbid'] : undefined;
205
+ const kbids = Array.isArray(params['kbids'])
206
+ ? (params['kbids'] as string[])
207
+ : undefined;
208
+ const depth = Number(params['depth'] ?? 0);
209
+ const encoded = encodeRecallParams({ kbid, kbids, depth });
210
+ const bytes = callWasmSync(ctx.modules, 'worker_recall', encoded);
211
+ return decodeRecallResult(bytes);
212
+ }
213
+
214
+ /**
215
+ * Handles the `export` and `exportDb` IPC methods.
216
+ */
217
+ export function handleExport(
218
+ ctx: HandlerContext,
219
+ params: Record<string, unknown>,
220
+ ): unknown {
221
+ const targetPath =
222
+ (params['targetPath'] as string | undefined) ??
223
+ (params['path'] as string | undefined) ??
224
+ './kbdb-export/';
225
+ const encoded = new TextEncoder().encode(targetPath);
226
+ const start = Date.now();
227
+ const bytes = callWasmSync(ctx.modules, 'worker_export', encoded);
228
+ const elapsed = Date.now() - start;
229
+ const kv = decodeKeyValueText(new TextDecoder().decode(bytes));
230
+ return {
231
+ path: kv['path'] ?? targetPath,
232
+ sections_exported: Number(kv['sections_exported'] ?? 0),
233
+ documents_exported: Number(kv['documents_exported'] ?? 0),
234
+ elapsed_ms: elapsed,
235
+ };
236
+ }