@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
@@ -40,6 +40,33 @@ export interface SectionRecord {
40
40
  codeTokenCount: number;
41
41
  /** Application-level type name assigned to this section. */
42
42
  typeName: string;
43
+ /**
44
+ * Stable logical identity derived from source path and heading.
45
+ * `null` for stdin input or sections without a source path.
46
+ */
47
+ sourceKey: string | null;
48
+ /**
49
+ * Absolute path of the source file that was learned.
50
+ * `null` for stdin input or programmatic API calls.
51
+ */
52
+ sourcePath: string | null;
53
+ /**
54
+ * ISO 8601 modified time of the source file at learn time.
55
+ * `null` when no source file exists.
56
+ */
57
+ sourceMtime: string | null;
58
+ /**
59
+ * ISO 8601 timestamp of the last supersession.
60
+ * `null` on first creation.
61
+ */
62
+ updatedAt: string | null;
63
+ /** User-supplied tags for scoping and filtering. */
64
+ tags: string[];
65
+ /**
66
+ * The kbid of the section this one replaced via supersession.
67
+ * `null` on first creation or non-superseding additions.
68
+ */
69
+ supersedes: string | null;
43
70
  }
44
71
 
45
72
  function decodeOptionString(
@@ -82,6 +109,12 @@ function decodeSectionType(
82
109
  * Each record is decoded in field order as produced by the Rust
83
110
  * `SectionRecord::encode` implementation.
84
111
  *
112
+ * Trailing fields (`sourceKey`, `sourcePath`, `sourceMtime`,
113
+ * `updatedAt`, `tags`, `supersedes`) were added after the initial
114
+ * format. When decoding legacy bytes that stop after `typeName`,
115
+ * those fields default to `null` / `[]`. This matches the Rust
116
+ * decoder's backward-compatibility guards.
117
+ *
85
118
  * @param bytes - raw bytes returned by a WASM section-list export
86
119
  * @returns decoded array of section records, empty when count is zero
87
120
  */
@@ -136,6 +169,54 @@ export function decodeSectionRecords(
136
169
  const typeName = decodeString(bytes, offset);
137
170
  offset += typeName.bytesRead;
138
171
 
172
+ // New trailing fields -- use length guards for backward compat.
173
+ let sourceKey: string | null = null;
174
+ if (offset < bytes.length) {
175
+ const v = decodeOptionString(bytes, offset);
176
+ offset += v.bytesRead;
177
+ sourceKey = v.value;
178
+ }
179
+
180
+ let sourcePath: string | null = null;
181
+ if (offset < bytes.length) {
182
+ const v = decodeOptionString(bytes, offset);
183
+ offset += v.bytesRead;
184
+ sourcePath = v.value;
185
+ }
186
+
187
+ let sourceMtime: string | null = null;
188
+ if (offset < bytes.length) {
189
+ const v = decodeOptionString(bytes, offset);
190
+ offset += v.bytesRead;
191
+ sourceMtime = v.value;
192
+ }
193
+
194
+ let updatedAt: string | null = null;
195
+ if (offset < bytes.length) {
196
+ const v = decodeOptionString(bytes, offset);
197
+ offset += v.bytesRead;
198
+ updatedAt = v.value;
199
+ }
200
+
201
+ let tags: string[] = [];
202
+ if (offset < bytes.length) {
203
+ const tagCount = decodeU32(bytes, offset);
204
+ offset += tagCount.bytesRead;
205
+ tags = [];
206
+ for (let j = 0; j < tagCount.value; j++) {
207
+ const tag = decodeString(bytes, offset);
208
+ offset += tag.bytesRead;
209
+ tags.push(tag.value);
210
+ }
211
+ }
212
+
213
+ let supersedes: string | null = null;
214
+ if (offset < bytes.length) {
215
+ const v = decodeOptionString(bytes, offset);
216
+ offset += v.bytesRead;
217
+ supersedes = v.value;
218
+ }
219
+
139
220
  const record: SectionRecord = {
140
221
  kbid: kbid.value,
141
222
  docid: docid.value,
@@ -151,6 +232,12 @@ export function decodeSectionRecords(
151
232
  bodyTokenCount: bodyTokenCount.value,
152
233
  codeTokenCount: codeTokenCount.value,
153
234
  typeName: typeName.value,
235
+ sourceKey,
236
+ sourcePath,
237
+ sourceMtime,
238
+ updatedAt,
239
+ tags,
240
+ supersedes,
154
241
  };
155
242
  if (st.mimeType !== undefined) {
156
243
  record.mimeType = st.mimeType;
@@ -0,0 +1,30 @@
1
+ import { decodeString } from './decode-string.function.ts';
2
+ import type { SectionTypeResult } from '../typings/section-type-result.model.ts';
3
+
4
+ export type { SectionTypeResult };
5
+
6
+ /**
7
+ * Decodes a section type discriminant from WASM binary output.
8
+ *
9
+ * Wire format: `u8` tag (`0x00` = text, `0x01` = code,
10
+ * `0x02` = image), followed by a MIME string for code/image.
11
+ *
12
+ * @param bytes - raw binary buffer
13
+ * @param offset - byte position of the tag byte
14
+ * @returns section type, optional MIME type, and bytes consumed
15
+ */
16
+ export function decodeSectionType(
17
+ bytes: Uint8Array,
18
+ offset: number,
19
+ ): SectionTypeResult {
20
+ const tag = bytes[offset];
21
+ if (tag === 0x00) {
22
+ return { sectionType: 'text', bytesRead: 1 };
23
+ }
24
+ const mime = decodeString(bytes, offset + 1);
25
+ return {
26
+ sectionType: tag === 0x01 ? 'code' : 'image',
27
+ mimeType: mime.value,
28
+ bytesRead: 1 + mime.bytesRead,
29
+ };
30
+ }
@@ -0,0 +1,31 @@
1
+ import { decodeU32 } from './decode-u32.function.ts';
2
+ import type { ItemDecoder } from '../typings/item-decoder.type.ts';
3
+
4
+ export type { ItemDecoder };
5
+
6
+ /**
7
+ * Decodes a length-prefixed list from WASM binary output.
8
+ *
9
+ * Wire format: u32 item count, then that many items decoded
10
+ * sequentially by `decode`.
11
+ *
12
+ * @param bytes - raw binary buffer
13
+ * @param offset - byte position of the u32 count
14
+ * @param decode - decoder function for each item
15
+ * @returns decoded item array and total bytes consumed
16
+ */
17
+ export function decodeWasmList<T>(
18
+ bytes: Uint8Array,
19
+ offset: number,
20
+ decode: ItemDecoder<T>,
21
+ ): { items: T[]; bytesRead: number } {
22
+ const count = decodeU32(bytes, offset);
23
+ let pos = offset + count.bytesRead;
24
+ const items: T[] = [];
25
+ for (let i = 0; i < count.value; i++) {
26
+ const result = decode(bytes, pos);
27
+ pos += result.bytesRead;
28
+ items.push(result.value);
29
+ }
30
+ return { items, bytesRead: pos - offset };
31
+ }
@@ -1,20 +1,83 @@
1
1
  import { encodeSectionType } from './encode-section-type.function.ts';
2
2
  import { encodeString } from './encode-string.function.ts';
3
3
  import { encodeOptionString } from './encode-option-string.function.ts';
4
+ import { encodeU32 } from './encode-u32.function.ts';
4
5
 
6
+ /**
7
+ * Parameters for adding a new section to the knowledge base.
8
+ *
9
+ * Maps to the Rust `AddSectionParams` struct encoded for the
10
+ * `worker_add_section` WASM export.
11
+ */
5
12
  export interface AddSectionInput {
13
+ /** Semantic content category. */
6
14
  sectionType: 'text' | 'code' | 'image';
15
+ /** MIME type; required for `code` and `image` section types. */
7
16
  mimeType?: string;
17
+ /** Raw section content. */
8
18
  content: string;
19
+ /** Optional section heading. */
9
20
  title?: string | null;
21
+ /** Optional description summary. */
10
22
  description?: string | null;
23
+ /** Optional document identifier to attach the section to. */
11
24
  docid?: string | null;
25
+ /**
26
+ * Application-level type name for the section (e.g. `'skill'`,
27
+ * `'fact'`). `null` means no custom type.
28
+ */
12
29
  typeName?: string | null;
30
+ /**
31
+ * Absolute path of the source file being learned. `undefined`
32
+ * means stdin input or programmatic API call.
33
+ */
34
+ sourcePath?: string;
35
+ /**
36
+ * ISO 8601 modified time of the source file. `undefined` means
37
+ * no source file exists.
38
+ */
39
+ sourceMtime?: string;
40
+ /**
41
+ * User-supplied tags for scoping and filtering. Defaults to
42
+ * an empty list when not provided.
43
+ */
44
+ tags?: string[];
45
+ /**
46
+ * When `true`, supersede any existing section with the same
47
+ * source key. Defaults to `false`.
48
+ */
49
+ replace?: boolean;
13
50
  }
14
51
 
52
+ /**
53
+ * Encodes `AddSectionInput` as the binary format expected by the
54
+ * `worker_add_section` WASM export.
55
+ *
56
+ * Wire format (little-endian):
57
+ * - `SectionType` tag byte (+ optional MIME string for code/image)
58
+ * - `content`: `u32` length + UTF-8 bytes
59
+ * - `title`: `u8` flag + optional `String`
60
+ * - `description`: `u8` flag + optional `String`
61
+ * - `docid`: `u8` flag + optional `String`
62
+ * - `typeName`: `u8` flag + optional `String`
63
+ * - `sourcePath`: `u8` flag + optional `String`
64
+ * - `sourceMtime`: `u8` flag + optional `String`
65
+ * - `tags`: `u32` count + each `String`
66
+ * - `replace`: `u8` (0 or 1)
67
+ */
15
68
  export function encodeAddSectionParams(
16
69
  params: AddSectionInput,
17
70
  ): Uint8Array {
71
+ const tags = params.tags ?? [];
72
+ const tagParts: Uint8Array[] = [];
73
+ for (const tag of tags) {
74
+ tagParts.push(encodeString(tag));
75
+ }
76
+ const tagsCountBytes = encodeU32(tags.length);
77
+ const replaceByte = new Uint8Array([
78
+ params.replace === true ? 1 : 0,
79
+ ]);
80
+
18
81
  const parts = [
19
82
  encodeSectionType(params.sectionType, params.mimeType),
20
83
  encodeString(params.content),
@@ -22,6 +85,11 @@ export function encodeAddSectionParams(
22
85
  encodeOptionString(params.description),
23
86
  encodeOptionString(params.docid),
24
87
  encodeOptionString(params.typeName),
88
+ encodeOptionString(params.sourcePath),
89
+ encodeOptionString(params.sourceMtime),
90
+ tagsCountBytes,
91
+ ...tagParts,
92
+ replaceByte,
25
93
  ];
26
94
  const totalLen = parts.reduce((sum, p) => sum + p.length, 0);
27
95
  const result = new Uint8Array(totalLen);
@@ -23,9 +23,14 @@ export { decodeKeyValueText } from './functions/decode-key-value-text.function.t
23
23
  export { decodeRemoveFlag } from './functions/decode-remove-flag.function.ts';
24
24
  export { encodeRecallParams } from './functions/encode-recall-params.function.ts';
25
25
  export { decodeRecallResult } from './functions/decode-recall-result.function.ts';
26
+ export { decodeAddSectionResult } from './functions/decode-add-section-result.function.ts';
26
27
 
27
28
  export type { DecodeResult } from './functions/decode-string.function.ts';
28
29
  export type { AddSectionInput } from './functions/encode-add-section-params.function.ts';
30
+ export type {
31
+ AddSectionResult,
32
+ NearDuplicate,
33
+ } from './functions/decode-add-section-result.function.ts';
29
34
  export type {
30
35
  SectionMatch,
31
36
  PagedSearchResult,
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Parameters for adding a new section to the knowledge base.
3
+ *
4
+ * Maps to the Rust `AddSectionParams` struct encoded for the
5
+ * `worker_add_section` WASM export.
6
+ */
7
+ export interface AddSectionInput {
8
+ /** Semantic content category. */
9
+ sectionType: 'text' | 'code' | 'image';
10
+ /** MIME type; required for `code` and `image` section types. */
11
+ mimeType?: string;
12
+ /** Raw section content. */
13
+ content: string;
14
+ /** Optional section heading. */
15
+ title?: string | null;
16
+ /** Optional description summary. */
17
+ description?: string | null;
18
+ /** Optional document identifier to attach the section to. */
19
+ docid?: string | null;
20
+ /**
21
+ * Application-level type name for the section (e.g. `'skill'`,
22
+ * `'fact'`). `null` means no custom type.
23
+ */
24
+ typeName?: string | null;
25
+ /**
26
+ * Absolute path of the source file being learned. `undefined`
27
+ * means stdin input or programmatic API call.
28
+ */
29
+ sourcePath?: string;
30
+ /**
31
+ * ISO 8601 modified time of the source file. `undefined` means
32
+ * no source file exists.
33
+ */
34
+ sourceMtime?: string;
35
+ /**
36
+ * User-supplied tags for scoping and filtering. Defaults to
37
+ * an empty list when not provided.
38
+ */
39
+ tags?: string[];
40
+ /**
41
+ * When `true`, supersede any existing section with the same
42
+ * source key. Defaults to `false`.
43
+ */
44
+ replace?: boolean;
45
+ }
@@ -0,0 +1,28 @@
1
+ import type { NearDuplicate } from './near-duplicate.model.ts';
2
+
3
+ /**
4
+ * Decoded result of a `worker_add_section` WASM call.
5
+ *
6
+ * Mirrors the Rust `AddSectionResult` struct encoded via the
7
+ * `Encode` trait wire format.
8
+ */
9
+ export interface AddSectionResult {
10
+ /** Knowledge-base identifier assigned to the new section. */
11
+ readonly kbid: string;
12
+ /** Number of unique terms indexed for the section. */
13
+ readonly indexedTermsCount: number;
14
+ /** Wall-clock time the add operation took, in milliseconds. */
15
+ readonly elapsedMs: number;
16
+ /**
17
+ * Knowledge-base identifier of the section that was superseded,
18
+ * or `null` if no supersession occurred.
19
+ */
20
+ readonly superseded: string | null;
21
+ /** Advisory warnings emitted during indexing. */
22
+ readonly warnings: string[];
23
+ /**
24
+ * Near-duplicate sections detected above the similarity threshold
25
+ * (Jaccard ≥ 0.85).
26
+ */
27
+ readonly nearDuplicates: NearDuplicate[];
28
+ }
@@ -0,0 +1,20 @@
1
+ import type { DocumentSection } from './document-section.model.ts';
2
+
3
+ /**
4
+ * A document manifest decoded from WASM binary output.
5
+ *
6
+ * Represents a grouped document record with its ordered list of
7
+ * section references as returned by `worker_retrieve_doc`.
8
+ */
9
+ export interface DocumentManifest {
10
+ /** Unique document identifier. */
11
+ docid: string;
12
+ /** Human-readable document title. */
13
+ title: string;
14
+ /** Document creation timestamp as a Unix epoch value. */
15
+ createdAt: bigint;
16
+ /** Application-level type name assigned to this document. */
17
+ docType: string;
18
+ /** Ordered list of section references belonging to the document. */
19
+ sections: DocumentSection[];
20
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * A single section reference within a document manifest.
3
+ *
4
+ * Associates a knowledge-base identifier with the section's
5
+ * ordinal position in the document.
6
+ */
7
+ export interface DocumentSection {
8
+ /** Knowledge-base identifier of the referenced section. */
9
+ kbid: string;
10
+ /** Zero-based position of this section within its document. */
11
+ position: number;
12
+ }
@@ -0,0 +1,10 @@
1
+ import type { DecodeResult } from '../functions/decode-string.function.ts';
2
+
3
+ /**
4
+ * A function that decodes one item from a binary buffer at the
5
+ * given byte offset, returning the decoded value and bytes consumed.
6
+ */
7
+ export type ItemDecoder<T> = (
8
+ bytes: Uint8Array,
9
+ offset: number,
10
+ ) => DecodeResult<T>;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * A near-duplicate section identified during add-section indexing.
3
+ */
4
+ export interface NearDuplicate {
5
+ /** Knowledge-base identifier of the near-duplicate section. */
6
+ readonly kbid: string;
7
+ /** Similarity score (0.0–1.0). */
8
+ readonly similarity: number;
9
+ /**
10
+ * Detection method that produced this match.
11
+ *
12
+ * Optional for backward compatibility with WASM-decoded results
13
+ * that do not carry method information.
14
+ */
15
+ readonly method?: 'jaccard' | 'cosine';
16
+ }
@@ -0,0 +1,22 @@
1
+ import type { SectionMatch } from './section-match.model.ts';
2
+
3
+ /**
4
+ * Paginated search response envelope returned by the WASM engine.
5
+ */
6
+ export interface PagedSearchResult {
7
+ /** Matching sections for the current page. */
8
+ items: SectionMatch[];
9
+ /** Total number of matches across all pages. */
10
+ total: number;
11
+ /** Number of results skipped (pagination offset). */
12
+ offset: number;
13
+ /** Maximum results per page. */
14
+ limit: number;
15
+ /** Whether more results exist beyond this page. */
16
+ has_more: boolean;
17
+ /**
18
+ * Whether the engine fell back to relaxed (OR-mode) search
19
+ * after strict (AND-mode) returned no results.
20
+ */
21
+ relaxed: boolean;
22
+ }
@@ -0,0 +1,31 @@
1
+ /**
2
+ * A single ranked result item from a paged search response.
3
+ */
4
+ export interface SectionMatch {
5
+ /** Knowledge-base identifier for the matched section. */
6
+ kbid: string;
7
+ /** Section heading, or `null` when untitled. */
8
+ heading: string | null;
9
+ /** MIME type of the section content. */
10
+ type: string;
11
+ /** Document IDs this section belongs to. */
12
+ docids: string[];
13
+ /** Relevance score from the ranking engine. */
14
+ score: number;
15
+ /**
16
+ * Confidence modifier (0.0–1.0) applied after relaxed search.
17
+ * Always 1.0 for strict-mode results.
18
+ */
19
+ confidence: number;
20
+ /** KWIC snippet (~150 chars around the best match). */
21
+ snippet: string;
22
+ /** Query terms that matched within this section. */
23
+ matched_terms: string[];
24
+ /**
25
+ * Document fields that contained at least one matched term
26
+ * (e.g. `'title'`, `'body'`).
27
+ */
28
+ matched_fields: string[];
29
+ /** ISO 8601 creation timestamp of the section. */
30
+ created_at: string;
31
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Trailing backward-compatible fields of a section record.
3
+ *
4
+ * These fields were added after the initial wire format. When
5
+ * decoding legacy binary output that stops before these fields,
6
+ * each defaults to `null` or `[]`.
7
+ */
8
+ export interface SectionRecordTrailing {
9
+ /**
10
+ * Stable logical identity derived from source path and heading.
11
+ * `null` for stdin input or sections without a source path.
12
+ */
13
+ sourceKey: string | null;
14
+ /**
15
+ * Absolute path of the source file that was learned.
16
+ * `null` for stdin input or programmatic API calls.
17
+ */
18
+ sourcePath: string | null;
19
+ /**
20
+ * ISO 8601 modified time of the source file at learn time.
21
+ * `null` when no source file exists.
22
+ */
23
+ sourceMtime: string | null;
24
+ /**
25
+ * ISO 8601 timestamp of the last supersession.
26
+ * `null` on first creation.
27
+ */
28
+ updatedAt: string | null;
29
+ /** User-supplied tags for scoping and filtering. */
30
+ tags: string[];
31
+ /**
32
+ * The kbid of the section this one replaced via supersession.
33
+ * `null` on first creation or non-superseding additions.
34
+ */
35
+ supersedes: string | null;
36
+ /** Number of bytes consumed from the buffer. */
37
+ bytesRead: number;
38
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * A single section record decoded from WASM binary output.
3
+ *
4
+ * Represents a stored knowledge-base section with all its metadata
5
+ * and token counts as returned by `worker_read_sections` or
6
+ * `worker_list_by_type`.
7
+ */
8
+ export interface SectionRecord {
9
+ /** Unique knowledge-base identifier for this section. */
10
+ kbid: string;
11
+ /** Document identifier this section belongs to, or `null`. */
12
+ docid: string | null;
13
+ /** Semantic type discriminant: `'text'`, `'code'`, or `'image'`. */
14
+ sectionType: string;
15
+ /** MIME type string, present only for `'code'` and `'image'` types. */
16
+ mimeType?: string;
17
+ /** Human-readable title for the section, or `null`. */
18
+ title: string | null;
19
+ /** Optional description of the section content, or `null`. */
20
+ description: string | null;
21
+ /** Raw text or base64-encoded content of the section. */
22
+ content: string;
23
+ /** Byte size of the stored content. */
24
+ size: number;
25
+ /** Section creation timestamp as a Unix epoch value. */
26
+ createdAt: bigint;
27
+ /** Integrity checksum of the stored content. */
28
+ checksum: string;
29
+ /** Total number of tokens in the section. */
30
+ tokenCount: number;
31
+ /** Number of heading tokens in the section. */
32
+ headingTokenCount: number;
33
+ /** Number of body tokens in the section. */
34
+ bodyTokenCount: number;
35
+ /** Number of code tokens in the section. */
36
+ codeTokenCount: number;
37
+ /** Application-level type name assigned to this section. */
38
+ typeName: string;
39
+ /**
40
+ * Stable logical identity derived from source path and heading.
41
+ * `null` for stdin input or sections without a source path.
42
+ */
43
+ sourceKey: string | null;
44
+ /**
45
+ * Absolute path of the source file that was learned.
46
+ * `null` for stdin input or programmatic API calls.
47
+ */
48
+ sourcePath: string | null;
49
+ /**
50
+ * ISO 8601 modified time of the source file at learn time.
51
+ * `null` when no source file exists.
52
+ */
53
+ sourceMtime: string | null;
54
+ /**
55
+ * ISO 8601 timestamp of the last supersession.
56
+ * `null` on first creation.
57
+ */
58
+ updatedAt: string | null;
59
+ /** User-supplied tags for scoping and filtering. */
60
+ tags: string[];
61
+ /**
62
+ * The kbid of the section this one replaced via supersession.
63
+ * `null` on first creation or non-superseding additions.
64
+ */
65
+ supersedes: string | null;
66
+ }
@@ -0,0 +1,12 @@
1
+ /** Result of decoding a section type discriminant from binary output. */
2
+ export interface SectionTypeResult {
3
+ /** Semantic section category: `'text'`, `'code'`, or `'image'`. */
4
+ sectionType: string;
5
+ /**
6
+ * MIME type string, present only for `'code'` and `'image'`
7
+ * types.
8
+ */
9
+ mimeType?: string;
10
+ /** Number of bytes consumed from the buffer. */
11
+ bytesRead: number;
12
+ }
@@ -21,6 +21,7 @@ import type {
21
21
  RecallParams,
22
22
  RecallResult,
23
23
  } from '../typings/recall-result.model.ts';
24
+ import type { ExportResult } from '../typings/export-result.model.ts';
24
25
 
25
26
  /** Pending JSON-RPC call awaiting a response from the daemon. */
26
27
  interface PendingCall {
@@ -381,6 +382,24 @@ export class WorkerClient {
381
382
  }) as Promise<DocumentManifest[]>;
382
383
  }
383
384
 
385
+ /**
386
+ * Exports the database to a target directory on disk.
387
+ *
388
+ * Copies section files, document manifests, and `catalog.toml`
389
+ * to `params.path`. Index files are not exported because they
390
+ * are derivable from the section and document data.
391
+ *
392
+ * @param params - optional export parameters
393
+ * @param params.path - target directory path; defaults to
394
+ * `./kbdb-export/` when not provided
395
+ * @returns export report with the resolved path and file counts
396
+ */
397
+ async export(params?: { path?: string }): Promise<ExportResult> {
398
+ return this.call('export', {
399
+ targetPath: params?.path || undefined,
400
+ }) as Promise<ExportResult>;
401
+ }
402
+
384
403
  /**
385
404
  * Sends a JSON-RPC 2.0 request and awaits the response.
386
405
  *
@@ -0,0 +1,49 @@
1
+ import type { PendingCall } from '../typings/pending-call.interface.ts';
2
+ import type { JsonRpcResponse } from '../typings/json-rpc-response.interface.ts';
3
+
4
+ /**
5
+ * Processes an incoming data chunk from the IPC socket.
6
+ *
7
+ * Appends the chunk to `buffer`, splits on newline boundaries,
8
+ * parses complete JSON-RPC response lines, and resolves or rejects
9
+ * the matching pending call. Returns the updated buffer with any
10
+ * incomplete trailing line retained.
11
+ *
12
+ * @param data - raw string chunk received from the socket
13
+ * @param buffer - partial line buffer from the previous call
14
+ * @param pending - map of outstanding request IDs to their
15
+ * resolve/reject pairs; mutated by this function
16
+ * @returns the updated buffer (incomplete trailing line, if any)
17
+ */
18
+ export function handleIpcData(
19
+ data: string,
20
+ buffer: string,
21
+ pending: Map<number, PendingCall>,
22
+ ): string {
23
+ const combined = buffer + data;
24
+ const lines = combined.split('\n');
25
+ const nextBuffer = lines.pop() ?? '';
26
+
27
+ for (const line of lines) {
28
+ if (!line.trim()) continue;
29
+ try {
30
+ const response = JSON.parse(line) as JsonRpcResponse;
31
+ const call = pending.get(response.id);
32
+ if (call !== undefined) {
33
+ pending.delete(response.id);
34
+ if (response.error !== undefined) {
35
+ const err = new Error(response.error.message);
36
+ (err as unknown as Record<string, unknown>)['code'] =
37
+ response.error.code;
38
+ call.reject(err);
39
+ } else {
40
+ call.resolve(response.result);
41
+ }
42
+ }
43
+ } catch {
44
+ // Ignore unparseable lines
45
+ }
46
+ }
47
+
48
+ return nextBuffer;
49
+ }