@dikolab/kbdb 0.3.0 → 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 (425) hide show
  1. package/README.md +24 -43
  2. package/dist/bench/constants/corpus-defaults.constant.d.ts +3 -0
  3. package/dist/bench/functions/format-report.function.d.ts +11 -0
  4. package/dist/bench/functions/generate-corpus.function.d.ts +12 -0
  5. package/dist/bench/functions/measure-operation.function.d.ts +14 -0
  6. package/dist/bench/functions/seeded-rng.function.d.ts +11 -0
  7. package/dist/bench/functions/zipf-word.function.d.ts +13 -0
  8. package/dist/bench/index.d.ts +10 -0
  9. package/dist/bench/typings/bench-result.interface.d.ts +11 -0
  10. package/dist/bench/typings/bench-suite-result.interface.d.ts +10 -0
  11. package/dist/bench/typings/corpus-config.interface.d.ts +11 -0
  12. package/dist/bench/typings/corpus-section.interface.d.ts +9 -0
  13. package/dist/cli.cjs +63 -9
  14. package/dist/cli.cjs.map +2 -2
  15. package/dist/cli.mjs +63 -9
  16. package/dist/cli.mjs.map +2 -2
  17. package/dist/src/shared/auto-capture/classes/auto-capture-controller.class.d.ts +33 -0
  18. package/dist/src/shared/auto-capture/constants/auto-capture-defaults.constant.d.ts +8 -0
  19. package/dist/src/shared/auto-capture/functions/build-capture-prompt.function.d.ts +11 -0
  20. package/dist/src/shared/auto-capture/functions/evaluate-trigger.function.d.ts +12 -0
  21. package/dist/src/shared/auto-capture/index.d.ts +7 -0
  22. package/dist/src/shared/auto-capture/typings/auto-capture-config.interface.d.ts +13 -0
  23. package/dist/src/shared/auto-capture/typings/auto-capture-state.interface.d.ts +13 -0
  24. package/dist/src/shared/auto-capture/typings/auto-capture-trigger.interface.d.ts +7 -0
  25. package/dist/src/shared/cli/constants/global-help.constant.d.ts +8 -0
  26. package/dist/src/shared/cli/constants/leaf-help.constant.d.ts +7 -0
  27. package/dist/src/shared/cli/constants/memory-protocol-body.constant.d.ts +7 -0
  28. package/dist/src/shared/cli/constants/query-guidance-body.constant.d.ts +7 -0
  29. package/dist/src/shared/cli/constants/subcommand-help.constant.d.ts +8 -0
  30. package/dist/src/shared/cli/functions/collect-files.function.d.ts +13 -0
  31. package/dist/src/shared/cli/functions/compute-section-kbid.function.d.ts +15 -0
  32. package/dist/src/shared/cli/functions/format-mcp-output.function.d.ts +9 -0
  33. package/dist/src/shared/cli/functions/format-text-output.function.d.ts +9 -0
  34. package/dist/src/shared/cli/functions/generate-group-help.function.d.ts +11 -0
  35. package/dist/src/shared/cli/functions/handle-data-command.function.d.ts +16 -0
  36. package/dist/src/shared/cli/functions/handle-mcp.function.d.ts +15 -0
  37. package/dist/src/shared/cli/functions/handle-migrate.function.d.ts +15 -0
  38. package/dist/src/shared/cli/functions/hydrate-search-previews.function.d.ts +14 -0
  39. package/dist/src/shared/cli/functions/resolve-skill-names.function.d.ts +16 -0
  40. package/dist/src/shared/cli/functions/run-search.function.d.ts +1 -0
  41. package/dist/src/shared/cli/functions/version-gate.function.d.ts +15 -0
  42. package/dist/src/shared/cli/functions/wrap-command.function.d.ts +15 -0
  43. package/dist/src/shared/cli/typings/agent-create-client.interface.d.ts +42 -0
  44. package/dist/src/shared/cli/typings/agent-get-client.interface.d.ts +36 -0
  45. package/dist/src/shared/cli/typings/check-client.interface.d.ts +58 -0
  46. package/dist/src/shared/cli/typings/cli-deps.interface.d.ts +48 -0
  47. package/dist/src/shared/cli/typings/cli-options.interface.d.ts +2 -0
  48. package/dist/src/shared/cli/typings/disconnectable-client.interface.d.ts +26 -0
  49. package/dist/src/shared/cli/typings/dispatch-client.type.d.ts +27 -0
  50. package/dist/src/shared/cli/typings/learn-client.interface.d.ts +52 -0
  51. package/dist/src/shared/cli/typings/learn-io.interface.d.ts +5 -0
  52. package/dist/src/shared/cli/typings/search-client.interface.d.ts +71 -0
  53. package/dist/src/shared/embedding/classes/null-embedding-provider.class.d.ts +20 -0
  54. package/dist/src/shared/embedding/constants/near-duplicate-thresholds.constant.d.ts +15 -0
  55. package/dist/src/shared/embedding/functions/build-vector-index.function.d.ts +14 -0
  56. package/dist/src/shared/embedding/functions/cosine-similarity.function.d.ts +10 -0
  57. package/dist/src/shared/embedding/functions/detect-near-duplicates.function.d.ts +18 -0
  58. package/dist/src/shared/embedding/functions/jaccard-coefficient.function.d.ts +9 -0
  59. package/dist/src/shared/embedding/functions/read-vector-index-meta.function.d.ts +10 -0
  60. package/dist/src/shared/embedding/functions/rrf-fuse.function.d.ts +14 -0
  61. package/dist/src/shared/embedding/functions/search-vectors.function.d.ts +14 -0
  62. package/dist/src/shared/embedding/index.d.ts +16 -0
  63. package/dist/src/shared/embedding/typings/embedding-config.interface.d.ts +20 -0
  64. package/dist/src/shared/embedding/typings/embedding-provider.interface.d.ts +23 -0
  65. package/dist/src/shared/embedding/typings/near-duplicate-candidate.model.d.ts +23 -0
  66. package/dist/src/shared/embedding/typings/near-duplicate-result.model.d.ts +24 -0
  67. package/dist/src/shared/embedding/typings/vector-index-entry.model.d.ts +12 -0
  68. package/dist/src/shared/embedding/typings/vector-index-meta.model.d.ts +11 -0
  69. package/dist/src/shared/embedding/typings/vector-search-result.model.d.ts +7 -0
  70. package/dist/src/shared/mcp/constants/tool-agent-create.constant.d.ts +3 -0
  71. package/dist/src/shared/mcp/constants/tool-agent-delete.constant.d.ts +3 -0
  72. package/dist/src/shared/mcp/constants/tool-agent-get.constant.d.ts +3 -0
  73. package/dist/src/shared/mcp/constants/tool-agent-list.constant.d.ts +3 -0
  74. package/dist/src/shared/mcp/constants/tool-auto-capture-review.constant.d.ts +8 -0
  75. package/dist/src/shared/mcp/constants/tool-check.constant.d.ts +3 -0
  76. package/dist/src/shared/mcp/constants/tool-content.constant.d.ts +3 -0
  77. package/dist/src/shared/mcp/constants/tool-export.constant.d.ts +3 -0
  78. package/dist/src/shared/mcp/constants/tool-gc.constant.d.ts +3 -0
  79. package/dist/src/shared/mcp/constants/tool-learn.constant.d.ts +3 -0
  80. package/dist/src/shared/mcp/constants/tool-rebuild.constant.d.ts +3 -0
  81. package/dist/src/shared/mcp/constants/tool-recall.constant.d.ts +3 -0
  82. package/dist/src/shared/mcp/constants/tool-retrieve.constant.d.ts +3 -0
  83. package/dist/src/shared/mcp/constants/tool-search.constant.d.ts +3 -0
  84. package/dist/src/shared/mcp/constants/tool-skill-delete.constant.d.ts +3 -0
  85. package/dist/src/shared/mcp/constants/tool-skill-get.constant.d.ts +3 -0
  86. package/dist/src/shared/mcp/constants/tool-skill-learn.constant.d.ts +3 -0
  87. package/dist/src/shared/mcp/constants/tool-skill-list.constant.d.ts +3 -0
  88. package/dist/src/shared/mcp/constants/tool-status.constant.d.ts +3 -0
  89. package/dist/src/shared/mcp/constants/tool-unlearn.constant.d.ts +3 -0
  90. package/dist/src/shared/mcp/functions/as-boolean-or-undefined.function.d.ts +7 -0
  91. package/dist/src/shared/mcp/functions/as-string-array-or-undefined.function.d.ts +7 -0
  92. package/dist/src/shared/mcp/functions/as-string-array.function.d.ts +7 -0
  93. package/dist/src/shared/mcp/functions/as-string.function.d.ts +8 -0
  94. package/dist/src/shared/mcp/functions/build-skills-text.function.d.ts +18 -0
  95. package/dist/src/shared/mcp/functions/handle-agent-prompt.function.d.ts +14 -0
  96. package/dist/src/shared/mcp/functions/handle-mcp-request.function.d.ts +14 -0
  97. package/dist/src/shared/mcp/functions/handle-prompt-get.function.d.ts +4 -3
  98. package/dist/src/shared/mcp/functions/handle-skill-prompt.function.d.ts +16 -0
  99. package/dist/src/shared/mcp/functions/handle-tool-auto-capture-review.function.d.ts +12 -0
  100. package/dist/src/shared/mcp/functions/handle-tool-check.function.d.ts +11 -0
  101. package/dist/src/shared/mcp/functions/handle-tool-content.function.d.ts +12 -0
  102. package/dist/src/shared/mcp/functions/handle-tool-export.function.d.ts +12 -0
  103. package/dist/src/shared/mcp/functions/handle-tool-gc.function.d.ts +11 -0
  104. package/dist/src/shared/mcp/functions/handle-tool-learn.function.d.ts +12 -0
  105. package/dist/src/shared/mcp/functions/handle-tool-rebuild.function.d.ts +11 -0
  106. package/dist/src/shared/mcp/functions/handle-tool-retrieve.function.d.ts +12 -0
  107. package/dist/src/shared/mcp/functions/handle-tool-search.function.d.ts +13 -0
  108. package/dist/src/shared/mcp/functions/handle-tool-skill-delete.function.d.ts +12 -0
  109. package/dist/src/shared/mcp/functions/handle-tool-skill-get.function.d.ts +13 -0
  110. package/dist/src/shared/mcp/functions/handle-tool-skill-learn.function.d.ts +13 -0
  111. package/dist/src/shared/mcp/functions/handle-tool-skill-list.function.d.ts +11 -0
  112. package/dist/src/shared/mcp/functions/handle-tool-status.function.d.ts +11 -0
  113. package/dist/src/shared/mcp/functions/handle-tool-unlearn.function.d.ts +12 -0
  114. package/dist/src/shared/mcp/functions/parse-agent-meta.function.d.ts +14 -0
  115. package/dist/src/shared/mcp/functions/parse-skill-arguments.function.d.ts +11 -0
  116. package/dist/src/shared/mcp/functions/read-agent-meta.function.d.ts +17 -0
  117. package/dist/src/shared/mcp/functions/resolve-skill-refs.function.d.ts +23 -0
  118. package/dist/src/shared/mcp/functions/run-startup-health-check.function.d.ts +14 -0
  119. package/dist/src/shared/mcp/typings/mcp-capabilities.interface.d.ts +16 -0
  120. package/dist/src/shared/mcp/typings/mcp-client.interface.d.ts +2 -0
  121. package/dist/src/shared/mcp/typings/mcp-completion.interface.d.ts +43 -0
  122. package/dist/src/shared/mcp/typings/mcp-content-result.model.d.ts +9 -0
  123. package/dist/src/shared/mcp/typings/mcp-export-result.model.d.ts +11 -0
  124. package/dist/src/shared/mcp/typings/mcp-gc-result.model.d.ts +15 -0
  125. package/dist/src/shared/mcp/typings/mcp-integrity-check-result.model.d.ts +16 -0
  126. package/dist/src/shared/mcp/typings/mcp-integrity-error.model.d.ts +9 -0
  127. package/dist/src/shared/mcp/typings/mcp-notification.interface.d.ts +9 -0
  128. package/dist/src/shared/mcp/typings/mcp-rebuild-result.model.d.ts +9 -0
  129. package/dist/src/shared/mcp/typings/mcp-request.interface.d.ts +11 -0
  130. package/dist/src/shared/mcp/typings/mcp-resource-result.interface.d.ts +12 -0
  131. package/dist/src/shared/mcp/typings/mcp-resource-template.interface.d.ts +11 -0
  132. package/dist/src/shared/mcp/typings/mcp-response.interface.d.ts +18 -0
  133. package/dist/src/shared/mcp/typings/mcp-server-info.interface.d.ts +7 -0
  134. package/dist/src/shared/mcp/typings/mcp-server-state.interface.d.ts +16 -0
  135. package/dist/src/shared/mcp/typings/mcp-tool-annotations.interface.d.ts +32 -0
  136. package/dist/src/shared/mcp/typings/mcp-tool-definition.interface.d.ts +15 -0
  137. package/dist/src/shared/mcp/typings/mcp-tool-result.interface.d.ts +19 -0
  138. package/dist/src/shared/mcp/typings/mcp-worker-client.interface.d.ts +220 -0
  139. package/dist/src/shared/mcp/typings/tool-call-result.model.d.ts +17 -0
  140. package/dist/src/shared/sync/functions/build-import-report.function.d.ts +18 -0
  141. package/dist/src/shared/sync/functions/parse-export-entry.function.d.ts +11 -0
  142. package/dist/src/shared/sync/functions/resolve-conflict.function.d.ts +13 -0
  143. package/dist/src/shared/sync/functions/serialize-export-entry.function.d.ts +8 -0
  144. package/dist/src/shared/sync/index.d.ts +9 -0
  145. package/dist/src/shared/sync/typings/conflict-resolution.type.d.ts +8 -0
  146. package/dist/src/shared/sync/typings/export-entry.interface.d.ts +13 -0
  147. package/dist/src/shared/sync/typings/export-options.interface.d.ts +9 -0
  148. package/dist/src/shared/sync/typings/import-options.interface.d.ts +7 -0
  149. package/dist/src/shared/sync/typings/import-report.interface.d.ts +15 -0
  150. package/dist/src/shared/wasm-codec/functions/decode-one-recall-result.function.d.ts +14 -0
  151. package/dist/src/shared/wasm-codec/functions/decode-option-string.function.d.ts +12 -0
  152. package/dist/src/shared/wasm-codec/functions/decode-recall-document.function.d.ts +14 -0
  153. package/dist/src/shared/wasm-codec/functions/decode-recall-reference.function.d.ts +14 -0
  154. package/dist/src/shared/wasm-codec/functions/decode-recall-sibling.function.d.ts +13 -0
  155. package/dist/src/shared/wasm-codec/functions/decode-section-match.function.d.ts +15 -0
  156. package/dist/src/shared/wasm-codec/functions/decode-section-record-trailing.function.d.ts +14 -0
  157. package/dist/src/shared/wasm-codec/functions/decode-section-record.function.d.ts +14 -0
  158. package/dist/src/shared/wasm-codec/functions/decode-section-type.function.d.ts +13 -0
  159. package/dist/src/shared/wasm-codec/functions/decode-wasm-list.function.d.ts +17 -0
  160. package/dist/src/shared/wasm-codec/typings/add-section-input.model.d.ts +45 -0
  161. package/dist/src/shared/wasm-codec/typings/add-section-result.model.d.ts +27 -0
  162. package/dist/src/shared/wasm-codec/typings/document-manifest.model.d.ts +19 -0
  163. package/dist/src/shared/wasm-codec/typings/document-section.model.d.ts +12 -0
  164. package/dist/src/shared/wasm-codec/typings/item-decoder.type.d.ts +6 -0
  165. package/dist/src/shared/wasm-codec/typings/near-duplicate.model.d.ts +16 -0
  166. package/dist/src/shared/wasm-codec/typings/paged-search-result.model.d.ts +21 -0
  167. package/dist/src/shared/wasm-codec/typings/section-match.model.d.ts +31 -0
  168. package/dist/src/shared/wasm-codec/typings/section-record-trailing.model.d.ts +38 -0
  169. package/dist/src/shared/wasm-codec/typings/section-record.model.d.ts +66 -0
  170. package/dist/src/shared/wasm-codec/typings/section-type-result.model.d.ts +12 -0
  171. package/dist/src/shared/worker-client/functions/handle-ipc-data.function.d.ts +16 -0
  172. package/dist/src/shared/worker-client/functions/send-ipc-request.function.d.ts +19 -0
  173. package/dist/src/shared/worker-client/typings/add-section-result.model.d.ts +2 -0
  174. package/dist/src/shared/worker-client/typings/json-rpc-response.interface.d.ts +16 -0
  175. package/dist/src/shared/worker-client/typings/pending-call.interface.d.ts +7 -0
  176. package/dist/src/shared/worker-client/typings/recall-document.model.d.ts +16 -0
  177. package/dist/src/shared/worker-client/typings/recall-params.model.d.ts +15 -0
  178. package/dist/src/shared/worker-client/typings/recall-reference.model.d.ts +32 -0
  179. package/dist/src/shared/worker-client/typings/recall-sibling.model.d.ts +11 -0
  180. package/dist/src/shared/worker-client/typings/recall-single-result.model.d.ts +40 -0
  181. package/dist/src/shared/worker-daemon/classes/ipc-error.class.d.ts +17 -0
  182. package/dist/src/shared/worker-daemon/constants/wasm-method-map.constant.d.ts +16 -0
  183. package/dist/src/shared/worker-daemon/functions/build-ipc-error-response.function.d.ts +9 -0
  184. package/dist/src/shared/worker-daemon/functions/check-catalog-version.function.d.ts +9 -0
  185. package/dist/src/shared/worker-daemon/functions/check-preconditions.function.d.ts +10 -0
  186. package/dist/src/shared/worker-daemon/functions/detect-stale-pid.function.d.ts +15 -0
  187. package/dist/src/shared/worker-daemon/functions/dispatch-request.function.d.ts +35 -0
  188. package/dist/src/shared/worker-daemon/functions/handle-check-version.function.d.ts +23 -0
  189. package/dist/src/shared/worker-daemon/functions/handle-config-method.function.d.ts +11 -0
  190. package/dist/src/shared/worker-daemon/functions/handle-read-ops.function.d.ts +52 -0
  191. package/dist/src/shared/worker-daemon/functions/handle-write-ops.function.d.ts +44 -0
  192. package/dist/src/shared/worker-daemon/functions/parse-auto-capture-section.function.d.ts +14 -0
  193. package/dist/src/shared/worker-daemon/functions/parse-catalog-version.function.d.ts +10 -0
  194. package/dist/src/shared/worker-daemon/functions/parse-embedding-section.function.d.ts +13 -0
  195. package/dist/src/shared/worker-daemon/functions/parse-worker-toml.function.d.ts +11 -0
  196. package/dist/src/shared/worker-daemon/functions/run-startup-integrity-check.function.d.ts +18 -0
  197. package/dist/src/shared/worker-daemon/functions/scan-near-duplicates.function.d.ts +21 -0
  198. package/dist/src/shared/worker-daemon/functions/wasm-bridge.function.d.ts +51 -0
  199. package/dist/src/shared/worker-daemon/functions/wasm-memory-helpers.function.d.ts +22 -0
  200. package/dist/src/shared/worker-daemon/functions/write-lock.function.d.ts +32 -0
  201. package/dist/src/shared/worker-daemon/typings/allocator-ref.interface.d.ts +16 -0
  202. package/dist/src/shared/worker-daemon/typings/daemon-config.interface.d.ts +6 -0
  203. package/dist/src/shared/worker-daemon/typings/fs-adapter.interface.d.ts +22 -0
  204. package/dist/src/shared/worker-daemon/typings/handler-context.interface.d.ts +18 -0
  205. package/dist/src/shared/worker-daemon/typings/memory-ref.interface.d.ts +13 -0
  206. package/dist/src/shared/worker-daemon/typings/wasm-fn.type.d.ts +2 -0
  207. package/dist/src/shared/worker-daemon/typings/write-lock.interface.d.ts +15 -0
  208. package/dist/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
  209. package/dist/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
  210. package/docs/details/mcp-server.md +4 -2
  211. package/docs/goals/auto-capture.md +378 -0
  212. package/docs/goals/benchmarking.md +296 -0
  213. package/docs/goals/concurrency.md +259 -0
  214. package/docs/goals/hybrid-search.md +436 -0
  215. package/docs/goals/semantic-dedup.md +229 -0
  216. package/docs/goals/sync.md +217 -0
  217. package/docs/modules/rust/fs-database/indexes/vectors.md +110 -0
  218. package/docs/modules/typescript/shared/auto-capture/module.md +73 -0
  219. package/docs/modules/typescript/shared/embedding/functions.md +94 -0
  220. package/docs/modules/typescript/shared/embedding/module.md +71 -0
  221. package/docs/modules/typescript/shared/embedding/typings.md +122 -0
  222. package/docs/overview.md +148 -166
  223. package/docs/release-notes/0.2.0.md +3 -3
  224. package/docs/release-notes/0.3.0.md +89 -0
  225. package/docs/release-notes/0.3.1.md +111 -0
  226. package/docs/release-notes/README.md +2 -0
  227. package/package.json +1 -1
  228. package/src/shared/auto-capture/classes/auto-capture-controller.class.ts +62 -0
  229. package/src/shared/auto-capture/constants/auto-capture-defaults.constant.ts +15 -0
  230. package/src/shared/auto-capture/functions/build-capture-prompt.function.ts +27 -0
  231. package/src/shared/auto-capture/functions/evaluate-trigger.function.ts +50 -0
  232. package/src/shared/auto-capture/index.ts +7 -0
  233. package/src/shared/auto-capture/typings/auto-capture-config.interface.ts +13 -0
  234. package/src/shared/auto-capture/typings/auto-capture-state.interface.ts +13 -0
  235. package/src/shared/auto-capture/typings/auto-capture-trigger.interface.ts +7 -0
  236. package/src/shared/cli/constants/global-help.constant.ts +73 -0
  237. package/src/shared/cli/constants/leaf-help.constant.ts +219 -0
  238. package/src/shared/cli/constants/memory-protocol-body.constant.ts +39 -0
  239. package/src/shared/cli/constants/query-guidance-body.constant.ts +37 -0
  240. package/src/shared/cli/constants/subcommand-help.constant.ts +195 -0
  241. package/src/shared/cli/functions/collect-files.function.ts +55 -0
  242. package/src/shared/cli/functions/compute-section-kbid.function.ts +49 -0
  243. package/src/shared/cli/functions/format-mcp-output.function.ts +41 -0
  244. package/src/shared/cli/functions/format-text-output.function.ts +42 -0
  245. package/src/shared/cli/functions/generate-group-help.function.ts +41 -0
  246. package/src/shared/cli/functions/handle-data-command.function.ts +67 -0
  247. package/src/shared/cli/functions/handle-mcp.function.ts +56 -0
  248. package/src/shared/cli/functions/handle-migrate.function.ts +64 -0
  249. package/src/shared/cli/functions/hydrate-search-previews.function.ts +29 -0
  250. package/src/shared/cli/functions/parse-args.function.ts +3 -0
  251. package/src/shared/cli/functions/resolve-skill-names.function.ts +43 -0
  252. package/src/shared/cli/functions/run-search.function.ts +2 -0
  253. package/src/shared/cli/functions/version-gate.function.ts +44 -0
  254. package/src/shared/cli/functions/wrap-command.function.ts +34 -0
  255. package/src/shared/cli/typings/agent-create-client.interface.ts +47 -0
  256. package/src/shared/cli/typings/agent-get-client.interface.ts +39 -0
  257. package/src/shared/cli/typings/check-client.interface.ts +66 -0
  258. package/src/shared/cli/typings/cli-deps.interface.ts +54 -0
  259. package/src/shared/cli/typings/cli-options.interface.ts +2 -0
  260. package/src/shared/cli/typings/disconnectable-client.interface.ts +29 -0
  261. package/src/shared/cli/typings/dispatch-client.type.ts +46 -0
  262. package/src/shared/cli/typings/learn-client.interface.ts +53 -0
  263. package/src/shared/cli/typings/learn-io.interface.ts +5 -0
  264. package/src/shared/cli/typings/search-client.interface.ts +73 -0
  265. package/src/shared/embedding/classes/null-embedding-provider.class.ts +29 -0
  266. package/src/shared/embedding/constants/near-duplicate-thresholds.constant.ts +17 -0
  267. package/src/shared/embedding/functions/build-vector-index.function.ts +79 -0
  268. package/src/shared/embedding/functions/cosine-similarity.function.ts +31 -0
  269. package/src/shared/embedding/functions/detect-near-duplicates.function.ts +69 -0
  270. package/src/shared/embedding/functions/jaccard-coefficient.function.ts +26 -0
  271. package/src/shared/embedding/functions/read-vector-index-meta.function.ts +44 -0
  272. package/src/shared/embedding/functions/rrf-fuse.function.ts +33 -0
  273. package/src/shared/embedding/functions/search-vectors.function.ts +59 -0
  274. package/src/shared/embedding/index.ts +20 -0
  275. package/src/shared/embedding/typings/embedding-config.interface.ts +23 -0
  276. package/src/shared/embedding/typings/embedding-provider.interface.ts +25 -0
  277. package/src/shared/embedding/typings/near-duplicate-candidate.model.ts +25 -0
  278. package/src/shared/embedding/typings/near-duplicate-result.model.ts +26 -0
  279. package/src/shared/embedding/typings/vector-index-entry.model.ts +13 -0
  280. package/src/shared/embedding/typings/vector-index-meta.model.ts +14 -0
  281. package/src/shared/embedding/typings/vector-search-result.model.ts +8 -0
  282. package/src/shared/mcp/classes/mcp-server.class.ts +6 -3
  283. package/src/shared/mcp/constants/tool-agent-create.constant.ts +39 -0
  284. package/src/shared/mcp/constants/tool-agent-delete.constant.ts +26 -0
  285. package/src/shared/mcp/constants/tool-agent-get.constant.ts +24 -0
  286. package/src/shared/mcp/constants/tool-agent-list.constant.ts +18 -0
  287. package/src/shared/mcp/constants/tool-auto-capture-review.constant.ts +32 -0
  288. package/src/shared/mcp/constants/tool-check.constant.ts +21 -0
  289. package/src/shared/mcp/constants/tool-content.constant.ts +29 -0
  290. package/src/shared/mcp/constants/tool-export.constant.ts +27 -0
  291. package/src/shared/mcp/constants/tool-gc.constant.ts +21 -0
  292. package/src/shared/mcp/constants/tool-learn.constant.ts +58 -0
  293. package/src/shared/mcp/constants/tool-rebuild.constant.ts +21 -0
  294. package/src/shared/mcp/constants/tool-recall.constant.ts +36 -0
  295. package/src/shared/mcp/constants/tool-retrieve.constant.ts +31 -0
  296. package/src/shared/mcp/constants/tool-search.constant.ts +51 -0
  297. package/src/shared/mcp/constants/tool-skill-delete.constant.ts +24 -0
  298. package/src/shared/mcp/constants/tool-skill-get.constant.ts +27 -0
  299. package/src/shared/mcp/constants/tool-skill-learn.constant.ts +37 -0
  300. package/src/shared/mcp/constants/tool-skill-list.constant.ts +18 -0
  301. package/src/shared/mcp/constants/tool-status.constant.ts +20 -0
  302. package/src/shared/mcp/constants/tool-unlearn.constant.ts +25 -0
  303. package/src/shared/mcp/functions/as-boolean-or-undefined.function.ts +11 -0
  304. package/src/shared/mcp/functions/as-string-array-or-undefined.function.ts +17 -0
  305. package/src/shared/mcp/functions/as-string-array.function.ts +15 -0
  306. package/src/shared/mcp/functions/as-string.function.ts +10 -0
  307. package/src/shared/mcp/functions/build-skills-text.function.ts +43 -0
  308. package/src/shared/mcp/functions/create-tool-definitions.function.ts +28 -0
  309. package/src/shared/mcp/functions/handle-agent-create.function.ts +1 -1
  310. package/src/shared/mcp/functions/handle-agent-prompt.function.ts +68 -0
  311. package/src/shared/mcp/functions/handle-mcp-request.function.ts +202 -0
  312. package/src/shared/mcp/functions/handle-prompt-get.function.ts +18 -12
  313. package/src/shared/mcp/functions/handle-skill-prompt.function.ts +44 -0
  314. package/src/shared/mcp/functions/handle-tool-auto-capture-review.function.ts +24 -0
  315. package/src/shared/mcp/functions/handle-tool-call.function.ts +18 -0
  316. package/src/shared/mcp/functions/handle-tool-check.function.ts +21 -0
  317. package/src/shared/mcp/functions/handle-tool-content.function.ts +23 -0
  318. package/src/shared/mcp/functions/handle-tool-export.function.ts +25 -0
  319. package/src/shared/mcp/functions/handle-tool-gc.function.ts +21 -0
  320. package/src/shared/mcp/functions/handle-tool-learn.function.ts +69 -0
  321. package/src/shared/mcp/functions/handle-tool-rebuild.function.ts +21 -0
  322. package/src/shared/mcp/functions/handle-tool-retrieve.function.ts +40 -0
  323. package/src/shared/mcp/functions/handle-tool-search.function.ts +47 -0
  324. package/src/shared/mcp/functions/handle-tool-skill-delete.function.ts +34 -0
  325. package/src/shared/mcp/functions/handle-tool-skill-get.function.ts +59 -0
  326. package/src/shared/mcp/functions/handle-tool-skill-learn.function.ts +61 -0
  327. package/src/shared/mcp/functions/handle-tool-skill-list.function.ts +39 -0
  328. package/src/shared/mcp/functions/handle-tool-status.function.ts +21 -0
  329. package/src/shared/mcp/functions/handle-tool-unlearn.function.ts +24 -0
  330. package/src/shared/mcp/functions/parse-agent-meta.function.ts +27 -0
  331. package/src/shared/mcp/functions/parse-skill-arguments.function.ts +36 -0
  332. package/src/shared/mcp/functions/read-agent-meta.function.ts +41 -0
  333. package/src/shared/mcp/functions/resolve-skill-refs.function.ts +50 -0
  334. package/src/shared/mcp/functions/run-startup-health-check.function.ts +34 -0
  335. package/src/shared/mcp/typings/mcp-capabilities.interface.ts +16 -0
  336. package/src/shared/mcp/typings/mcp-client.interface.ts +2 -0
  337. package/src/shared/mcp/typings/mcp-completion.interface.ts +45 -0
  338. package/src/shared/mcp/typings/mcp-content-result.model.ts +9 -0
  339. package/src/shared/mcp/typings/mcp-export-result.model.ts +11 -0
  340. package/src/shared/mcp/typings/mcp-gc-result.model.ts +15 -0
  341. package/src/shared/mcp/typings/mcp-integrity-check-result.model.ts +17 -0
  342. package/src/shared/mcp/typings/mcp-integrity-error.model.ts +15 -0
  343. package/src/shared/mcp/typings/mcp-notification.interface.ts +9 -0
  344. package/src/shared/mcp/typings/mcp-rebuild-result.model.ts +9 -0
  345. package/src/shared/mcp/typings/mcp-request.interface.ts +11 -0
  346. package/src/shared/mcp/typings/mcp-resource-result.interface.ts +12 -0
  347. package/src/shared/mcp/typings/mcp-resource-template.interface.ts +11 -0
  348. package/src/shared/mcp/typings/mcp-response.interface.ts +18 -0
  349. package/src/shared/mcp/typings/mcp-server-info.interface.ts +7 -0
  350. package/src/shared/mcp/typings/mcp-server-state.interface.ts +17 -0
  351. package/src/shared/mcp/typings/mcp-tool-annotations.interface.ts +32 -0
  352. package/src/shared/mcp/typings/mcp-tool-definition.interface.ts +16 -0
  353. package/src/shared/mcp/typings/mcp-tool-result.interface.ts +19 -0
  354. package/src/shared/mcp/typings/mcp-worker-client.interface.ts +243 -0
  355. package/src/shared/mcp/typings/tool-call-result.model.ts +18 -0
  356. package/src/shared/sync/functions/build-import-report.function.ts +40 -0
  357. package/src/shared/sync/functions/parse-export-entry.function.ts +45 -0
  358. package/src/shared/sync/functions/resolve-conflict.function.ts +31 -0
  359. package/src/shared/sync/functions/serialize-export-entry.function.ts +18 -0
  360. package/src/shared/sync/index.ts +9 -0
  361. package/src/shared/sync/typings/conflict-resolution.type.ts +8 -0
  362. package/src/shared/sync/typings/export-entry.interface.ts +13 -0
  363. package/src/shared/sync/typings/export-options.interface.ts +9 -0
  364. package/src/shared/sync/typings/import-options.interface.ts +7 -0
  365. package/src/shared/sync/typings/import-report.interface.ts +15 -0
  366. package/src/shared/wasm-codec/functions/decode-one-recall-result.function.ts +86 -0
  367. package/src/shared/wasm-codec/functions/decode-option-string.function.ts +24 -0
  368. package/src/shared/wasm-codec/functions/decode-recall-document.function.ts +59 -0
  369. package/src/shared/wasm-codec/functions/decode-recall-reference.function.ts +52 -0
  370. package/src/shared/wasm-codec/functions/decode-recall-sibling.function.ts +43 -0
  371. package/src/shared/wasm-codec/functions/decode-section-match.function.ts +80 -0
  372. package/src/shared/wasm-codec/functions/decode-section-record-trailing.function.ts +75 -0
  373. package/src/shared/wasm-codec/functions/decode-section-record.function.ts +85 -0
  374. package/src/shared/wasm-codec/functions/decode-section-type.function.ts +30 -0
  375. package/src/shared/wasm-codec/functions/decode-wasm-list.function.ts +31 -0
  376. package/src/shared/wasm-codec/typings/add-section-input.model.ts +45 -0
  377. package/src/shared/wasm-codec/typings/add-section-result.model.ts +28 -0
  378. package/src/shared/wasm-codec/typings/document-manifest.model.ts +20 -0
  379. package/src/shared/wasm-codec/typings/document-section.model.ts +12 -0
  380. package/src/shared/wasm-codec/typings/item-decoder.type.ts +10 -0
  381. package/src/shared/wasm-codec/typings/near-duplicate.model.ts +16 -0
  382. package/src/shared/wasm-codec/typings/paged-search-result.model.ts +22 -0
  383. package/src/shared/wasm-codec/typings/section-match.model.ts +31 -0
  384. package/src/shared/wasm-codec/typings/section-record-trailing.model.ts +38 -0
  385. package/src/shared/wasm-codec/typings/section-record.model.ts +66 -0
  386. package/src/shared/wasm-codec/typings/section-type-result.model.ts +12 -0
  387. package/src/shared/worker-client/functions/handle-ipc-data.function.ts +49 -0
  388. package/src/shared/worker-client/functions/send-ipc-request.function.ts +39 -0
  389. package/src/shared/worker-client/typings/add-section-result.model.ts +2 -0
  390. package/src/shared/worker-client/typings/json-rpc-response.interface.ts +17 -0
  391. package/src/shared/worker-client/typings/pending-call.interface.ts +7 -0
  392. package/src/shared/worker-client/typings/recall-document.model.ts +16 -0
  393. package/src/shared/worker-client/typings/recall-params.model.ts +15 -0
  394. package/src/shared/worker-client/typings/recall-reference.model.ts +32 -0
  395. package/src/shared/worker-client/typings/recall-sibling.model.ts +11 -0
  396. package/src/shared/worker-client/typings/recall-single-result.model.ts +41 -0
  397. package/src/shared/worker-daemon/classes/ipc-error.class.ts +22 -0
  398. package/src/shared/worker-daemon/constants/wasm-method-map.constant.ts +69 -0
  399. package/src/shared/worker-daemon/functions/build-ipc-error-response.function.ts +16 -0
  400. package/src/shared/worker-daemon/functions/check-catalog-version.function.ts +54 -0
  401. package/src/shared/worker-daemon/functions/check-preconditions.function.ts +28 -0
  402. package/src/shared/worker-daemon/functions/detect-stale-pid.function.ts +33 -0
  403. package/src/shared/worker-daemon/functions/dispatch-request.function.ts +190 -0
  404. package/src/shared/worker-daemon/functions/handle-check-version.function.ts +74 -0
  405. package/src/shared/worker-daemon/functions/handle-config-method.function.ts +27 -0
  406. package/src/shared/worker-daemon/functions/handle-read-ops.function.ts +236 -0
  407. package/src/shared/worker-daemon/functions/handle-write-ops.function.ts +257 -0
  408. package/src/shared/worker-daemon/functions/parse-auto-capture-section.function.ts +51 -0
  409. package/src/shared/worker-daemon/functions/parse-catalog-version.function.ts +20 -0
  410. package/src/shared/worker-daemon/functions/parse-embedding-section.function.ts +38 -0
  411. package/src/shared/worker-daemon/functions/parse-worker-toml.function.ts +104 -0
  412. package/src/shared/worker-daemon/functions/run-startup-integrity-check.function.ts +55 -0
  413. package/src/shared/worker-daemon/functions/scan-near-duplicates.function.ts +92 -0
  414. package/src/shared/worker-daemon/functions/wasm-bridge.function.ts +144 -0
  415. package/src/shared/worker-daemon/functions/wasm-memory-helpers.function.ts +41 -0
  416. package/src/shared/worker-daemon/functions/write-lock.function.ts +49 -0
  417. package/src/shared/worker-daemon/typings/allocator-ref.interface.ts +16 -0
  418. package/src/shared/worker-daemon/typings/daemon-config.interface.ts +7 -0
  419. package/src/shared/worker-daemon/typings/fs-adapter.interface.ts +22 -0
  420. package/src/shared/worker-daemon/typings/handler-context.interface.ts +19 -0
  421. package/src/shared/worker-daemon/typings/memory-ref.interface.ts +13 -0
  422. package/src/shared/worker-daemon/typings/wasm-fn.type.ts +2 -0
  423. package/src/shared/worker-daemon/typings/write-lock.interface.ts +13 -0
  424. package/src/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
  425. package/src/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
@@ -0,0 +1,31 @@
1
+ import type { ConflictResolution } from '../typings/conflict-resolution.type.ts';
2
+ import type { ExportEntry } from '../typings/export-entry.interface.ts';
3
+
4
+ /**
5
+ * Determines the conflict resolution action for
6
+ * an incoming section.
7
+ *
8
+ * Rules applied in order:
9
+ * 1. Same kbid exists -> skip
10
+ * 2. Same source_key, incoming is newer -> supersede
11
+ * 3. Same source_key, incoming is not newer -> skip
12
+ * 4. No match -> add
13
+ */
14
+ export function resolveConflict(
15
+ incoming: ExportEntry,
16
+ existingKbids: ReadonlySet<string>,
17
+ existingBySourceKey: ReadonlyMap<string, ExportEntry>,
18
+ ): ConflictResolution {
19
+ if (existingKbids.has(incoming.kbid)) {
20
+ return 'skip';
21
+ }
22
+
23
+ const existing = existingBySourceKey.get(incoming.sourceKey);
24
+ if (existing !== undefined) {
25
+ const incomingTime = new Date(incoming.createdAt).getTime();
26
+ const existingTime = new Date(existing.createdAt).getTime();
27
+ return incomingTime > existingTime ? 'supersede' : 'skip';
28
+ }
29
+
30
+ return 'add';
31
+ }
@@ -0,0 +1,18 @@
1
+ import type { ExportEntry } from '../typings/export-entry.interface.ts';
2
+
3
+ /**
4
+ * Serializes an export entry to a flat file format.
5
+ *
6
+ * Format: TOML frontmatter delimited by `+++` lines,
7
+ * followed by the body content.
8
+ */
9
+ export function serializeExportEntry(entry: ExportEntry): string {
10
+ const frontmatter = [
11
+ `kbid = "${entry.kbid}"`,
12
+ `sourceKey = "${entry.sourceKey}"`,
13
+ `heading = "${entry.heading}"`,
14
+ `createdAt = "${entry.createdAt}"`,
15
+ ].join('\n');
16
+
17
+ return `+++\n${frontmatter}\n+++\n${entry.body}`;
18
+ }
@@ -0,0 +1,9 @@
1
+ export { resolveConflict } from './functions/resolve-conflict.function.ts';
2
+ export { buildImportReport } from './functions/build-import-report.function.ts';
3
+ export { serializeExportEntry } from './functions/serialize-export-entry.function.ts';
4
+ export { parseExportEntry } from './functions/parse-export-entry.function.ts';
5
+ export type { ExportEntry } from './typings/export-entry.interface.ts';
6
+ export type { ExportOptions } from './typings/export-options.interface.ts';
7
+ export type { ImportOptions } from './typings/import-options.interface.ts';
8
+ export type { ImportReport } from './typings/import-report.interface.ts';
9
+ export type { ConflictResolution } from './typings/conflict-resolution.type.ts';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Conflict resolution strategy.
3
+ *
4
+ * - 'skip': same kbid -> skip
5
+ * - 'supersede': same source_key -> replace if newer
6
+ * - 'add': no match -> add
7
+ */
8
+ export type ConflictResolution = 'skip' | 'supersede' | 'add';
@@ -0,0 +1,13 @@
1
+ /** A single entry in an export manifest. */
2
+ export interface ExportEntry {
3
+ /** Section kbid. */
4
+ readonly kbid: string;
5
+ /** Source key. */
6
+ readonly sourceKey: string;
7
+ /** Section heading. */
8
+ readonly heading: string;
9
+ /** Content body. */
10
+ readonly body: string;
11
+ /** Created timestamp (ISO). */
12
+ readonly createdAt: string;
13
+ }
@@ -0,0 +1,9 @@
1
+ /** Options for export operation. */
2
+ export interface ExportOptions {
3
+ /** Export format. */
4
+ readonly format: 'git' | 'archive';
5
+ /** Output directory or file path. */
6
+ readonly outputPath: string;
7
+ /** Exclude vector indexes. */
8
+ readonly excludeVectors: boolean;
9
+ }
@@ -0,0 +1,7 @@
1
+ /** Options for import operation. */
2
+ export interface ImportOptions {
3
+ /** Source path (exported directory or archive). */
4
+ readonly fromPath: string;
5
+ /** Dry-run mode. */
6
+ readonly dryRun: boolean;
7
+ }
@@ -0,0 +1,15 @@
1
+ /** Report of an import operation. */
2
+ export interface ImportReport {
3
+ /** Sections added. */
4
+ readonly sectionsAdded: number;
5
+ /** Sections skipped (same kbid). */
6
+ readonly sectionsSkipped: number;
7
+ /** Sections superseded (same source_key, newer). */
8
+ readonly sectionsSuperseded: number;
9
+ /** Documents added. */
10
+ readonly documentsAdded: number;
11
+ /** Documents skipped. */
12
+ readonly documentsSkipped: number;
13
+ /** Whether rebuild is required. */
14
+ readonly rebuildRequired: boolean;
15
+ }
@@ -0,0 +1,86 @@
1
+ import { decodeString } from './decode-string.function.ts';
2
+ import { decodeOptionString } from './decode-option-string.function.ts';
3
+ import { decodeWasmList } from './decode-wasm-list.function.ts';
4
+ import { decodeRecallReference } from './decode-recall-reference.function.ts';
5
+ import { decodeRecallSibling } from './decode-recall-sibling.function.ts';
6
+ import { decodeRecallDocument } from './decode-recall-document.function.ts';
7
+ import type { DecodeResult } from './decode-string.function.ts';
8
+ import type {
9
+ RecallResult,
10
+ RecallDocument,
11
+ RecallSibling,
12
+ RecallReference,
13
+ } from '../../worker-client/typings/recall-result.model.ts';
14
+
15
+ /**
16
+ * Decodes a single `RecallResult` record from WASM binary output.
17
+ *
18
+ * Wire format: kbid, heading, section_type, content, docid list,
19
+ * document list, back_references list, siblings list,
20
+ * references list.
21
+ *
22
+ * @param bytes - raw binary buffer
23
+ * @param startOffset - byte position of the record start
24
+ * @returns decoded result and number of bytes consumed
25
+ */
26
+ export function decodeOneRecallResult(
27
+ bytes: Uint8Array,
28
+ startOffset: number,
29
+ ): DecodeResult<RecallResult> {
30
+ let pos = startOffset;
31
+
32
+ const kbid = decodeString(bytes, pos);
33
+ pos += kbid.bytesRead;
34
+ const heading = decodeOptionString(bytes, pos);
35
+ pos += heading.bytesRead;
36
+ const sectionType = decodeString(bytes, pos);
37
+ pos += sectionType.bytesRead;
38
+ const content = decodeString(bytes, pos);
39
+ pos += content.bytesRead;
40
+
41
+ const docids = decodeWasmList(bytes, pos, decodeString);
42
+ pos += docids.bytesRead;
43
+
44
+ const documents = decodeWasmList<RecallDocument>(
45
+ bytes,
46
+ pos,
47
+ decodeRecallDocument,
48
+ );
49
+ pos += documents.bytesRead;
50
+
51
+ const back_references = decodeWasmList<RecallReference>(
52
+ bytes,
53
+ pos,
54
+ decodeRecallReference,
55
+ );
56
+ pos += back_references.bytesRead;
57
+
58
+ const siblings = decodeWasmList<RecallSibling>(
59
+ bytes,
60
+ pos,
61
+ decodeRecallSibling,
62
+ );
63
+ pos += siblings.bytesRead;
64
+
65
+ const references = decodeWasmList<RecallReference>(
66
+ bytes,
67
+ pos,
68
+ decodeRecallReference,
69
+ );
70
+ pos += references.bytesRead;
71
+
72
+ return {
73
+ value: {
74
+ kbid: kbid.value,
75
+ heading: heading.value,
76
+ type: sectionType.value,
77
+ content: content.value,
78
+ docids: docids.items,
79
+ documents: documents.items,
80
+ back_references: back_references.items,
81
+ siblings: siblings.items,
82
+ references: references.items,
83
+ },
84
+ bytesRead: pos - startOffset,
85
+ };
86
+ }
@@ -0,0 +1,24 @@
1
+ import type { DecodeResult } from './decode-string.function.ts';
2
+ import { decodeString } from './decode-string.function.ts';
3
+
4
+ /**
5
+ * Decodes an `Option<String>` from WASM binary output.
6
+ *
7
+ * Wire format: `u8` tag byte (`0x00` = `None`, any other value =
8
+ * `Some`) followed by a length-prefixed UTF-8 string when present.
9
+ *
10
+ * @param bytes - raw binary buffer
11
+ * @param offset - byte position of the tag byte
12
+ * @returns decoded nullable string and number of bytes consumed
13
+ */
14
+ export function decodeOptionString(
15
+ bytes: Uint8Array,
16
+ offset: number,
17
+ ): DecodeResult<string | null> {
18
+ const tag = bytes[offset];
19
+ if (tag === 0x00) {
20
+ return { value: null, bytesRead: 1 };
21
+ }
22
+ const str = decodeString(bytes, offset + 1);
23
+ return { value: str.value, bytesRead: 1 + str.bytesRead };
24
+ }
@@ -0,0 +1,59 @@
1
+ import { decodeString } from './decode-string.function.ts';
2
+ import { decodeU32 } from './decode-u32.function.ts';
3
+ import { decodeOptionString } from './decode-option-string.function.ts';
4
+ import type { DecodeResult } from './decode-string.function.ts';
5
+ import type { RecallDocument } from '../../worker-client/typings/recall-result.model.ts';
6
+
7
+ /**
8
+ * Decodes a single `RecallDocument` record from WASM binary output.
9
+ *
10
+ * Wire format: docid (String), title (String), section_count (u32),
11
+ * then each section as kbid (String), heading (Option<String>),
12
+ * section_type (String).
13
+ *
14
+ * @param bytes - raw binary buffer
15
+ * @param offset - byte position of the record start
16
+ * @returns decoded document and number of bytes consumed
17
+ */
18
+ export function decodeRecallDocument(
19
+ bytes: Uint8Array,
20
+ offset: number,
21
+ ): DecodeResult<RecallDocument> {
22
+ let pos = offset;
23
+
24
+ const docid = decodeString(bytes, pos);
25
+ pos += docid.bytesRead;
26
+
27
+ const title = decodeString(bytes, pos);
28
+ pos += title.bytesRead;
29
+
30
+ const sectionCount = decodeU32(bytes, pos);
31
+ pos += sectionCount.bytesRead;
32
+
33
+ const sections: RecallDocument['sections'][number][] = [];
34
+ for (let i = 0; i < sectionCount.value; i++) {
35
+ const secKbid = decodeString(bytes, pos);
36
+ pos += secKbid.bytesRead;
37
+
38
+ const secHeading = decodeOptionString(bytes, pos);
39
+ pos += secHeading.bytesRead;
40
+
41
+ const secType = decodeString(bytes, pos);
42
+ pos += secType.bytesRead;
43
+
44
+ sections.push({
45
+ kbid: secKbid.value,
46
+ heading: secHeading.value,
47
+ type: secType.value,
48
+ });
49
+ }
50
+
51
+ return {
52
+ value: {
53
+ docid: docid.value,
54
+ title: title.value,
55
+ sections,
56
+ },
57
+ bytesRead: pos - offset,
58
+ };
59
+ }
@@ -0,0 +1,52 @@
1
+ import { decodeString } from './decode-string.function.ts';
2
+ import { decodeOptionString } from './decode-option-string.function.ts';
3
+ import type { DecodeResult } from './decode-string.function.ts';
4
+ import type { RecallReference } from '../../worker-client/typings/recall-result.model.ts';
5
+
6
+ /**
7
+ * Decodes a single `RecallReference` record from WASM binary output.
8
+ *
9
+ * Wire format: kbid (String), heading (Option<String>),
10
+ * section_type (String), marker_type (String),
11
+ * context_snippet (String), direction (String).
12
+ *
13
+ * @param bytes - raw binary buffer
14
+ * @param offset - byte position of the record start
15
+ * @returns decoded reference and number of bytes consumed
16
+ */
17
+ export function decodeRecallReference(
18
+ bytes: Uint8Array,
19
+ offset: number,
20
+ ): DecodeResult<RecallReference> {
21
+ let pos = offset;
22
+
23
+ const kbid = decodeString(bytes, pos);
24
+ pos += kbid.bytesRead;
25
+
26
+ const heading = decodeOptionString(bytes, pos);
27
+ pos += heading.bytesRead;
28
+
29
+ const sectionType = decodeString(bytes, pos);
30
+ pos += sectionType.bytesRead;
31
+
32
+ const markerType = decodeString(bytes, pos);
33
+ pos += markerType.bytesRead;
34
+
35
+ const contextSnippet = decodeString(bytes, pos);
36
+ pos += contextSnippet.bytesRead;
37
+
38
+ const direction = decodeString(bytes, pos);
39
+ pos += direction.bytesRead;
40
+
41
+ return {
42
+ value: {
43
+ kbid: kbid.value,
44
+ heading: heading.value,
45
+ type: sectionType.value,
46
+ marker_type: markerType.value,
47
+ context_snippet: contextSnippet.value,
48
+ direction: direction.value as 'forward' | 'back',
49
+ },
50
+ bytesRead: pos - offset,
51
+ };
52
+ }
@@ -0,0 +1,43 @@
1
+ import { decodeString } from './decode-string.function.ts';
2
+ import { decodeOptionString } from './decode-option-string.function.ts';
3
+ import type { DecodeResult } from './decode-string.function.ts';
4
+ import type { RecallSibling } from '../../worker-client/typings/recall-result.model.ts';
5
+
6
+ /**
7
+ * Decodes a single `RecallSibling` record from WASM binary output.
8
+ *
9
+ * Wire format: kbid (String), heading (Option<String>),
10
+ * section_type (String), content (String).
11
+ *
12
+ * @param bytes - raw binary buffer
13
+ * @param offset - byte position of the record start
14
+ * @returns decoded sibling and number of bytes consumed
15
+ */
16
+ export function decodeRecallSibling(
17
+ bytes: Uint8Array,
18
+ offset: number,
19
+ ): DecodeResult<RecallSibling> {
20
+ let pos = offset;
21
+
22
+ const kbid = decodeString(bytes, pos);
23
+ pos += kbid.bytesRead;
24
+
25
+ const heading = decodeOptionString(bytes, pos);
26
+ pos += heading.bytesRead;
27
+
28
+ const sectionType = decodeString(bytes, pos);
29
+ pos += sectionType.bytesRead;
30
+
31
+ const content = decodeString(bytes, pos);
32
+ pos += content.bytesRead;
33
+
34
+ return {
35
+ value: {
36
+ kbid: kbid.value,
37
+ heading: heading.value,
38
+ type: sectionType.value,
39
+ content: content.value,
40
+ },
41
+ bytesRead: pos - offset,
42
+ };
43
+ }
@@ -0,0 +1,80 @@
1
+ import { decodeString } from './decode-string.function.ts';
2
+ import { decodeU32 } from './decode-u32.function.ts';
3
+ import { decodeF32 } from './decode-f32.function.ts';
4
+ import { decodeOptionString } from './decode-option-string.function.ts';
5
+ import type { DecodeResult } from './decode-string.function.ts';
6
+ import type { SectionMatch } from '../typings/section-match.model.ts';
7
+
8
+ /**
9
+ * Decodes a single `SectionMatch` item from WASM binary output.
10
+ *
11
+ * Wire format per item: kbid, heading (Option<String>),
12
+ * section_type, docids (u32 count + String[]), score (f32),
13
+ * confidence (f32), snippet, matched_terms (u32 + String[]),
14
+ * matched_fields (u32 + String[]), created_at.
15
+ *
16
+ * @param bytes - raw binary buffer
17
+ * @param startOffset - byte position of the item start
18
+ * @returns decoded match and number of bytes consumed
19
+ */
20
+ export function decodeSectionMatch(
21
+ bytes: Uint8Array,
22
+ startOffset: number,
23
+ ): DecodeResult<SectionMatch> {
24
+ let pos = startOffset;
25
+
26
+ const kbid = decodeString(bytes, pos);
27
+ pos += kbid.bytesRead;
28
+ const heading = decodeOptionString(bytes, pos);
29
+ pos += heading.bytesRead;
30
+ const sectionType = decodeString(bytes, pos);
31
+ pos += sectionType.bytesRead;
32
+ const docidCount = decodeU32(bytes, pos);
33
+ pos += docidCount.bytesRead;
34
+ const docids: string[] = [];
35
+ for (let j = 0; j < docidCount.value; j++) {
36
+ const docid = decodeString(bytes, pos);
37
+ pos += docid.bytesRead;
38
+ docids.push(docid.value);
39
+ }
40
+ const score = decodeF32(bytes, pos);
41
+ pos += score.bytesRead;
42
+ const confidence = decodeF32(bytes, pos);
43
+ pos += confidence.bytesRead;
44
+ const snippet = decodeString(bytes, pos);
45
+ pos += snippet.bytesRead;
46
+ const termCount = decodeU32(bytes, pos);
47
+ pos += termCount.bytesRead;
48
+ const matched_terms: string[] = [];
49
+ for (let j = 0; j < termCount.value; j++) {
50
+ const term = decodeString(bytes, pos);
51
+ pos += term.bytesRead;
52
+ matched_terms.push(term.value);
53
+ }
54
+ const fieldCount = decodeU32(bytes, pos);
55
+ pos += fieldCount.bytesRead;
56
+ const matched_fields: string[] = [];
57
+ for (let j = 0; j < fieldCount.value; j++) {
58
+ const field = decodeString(bytes, pos);
59
+ pos += field.bytesRead;
60
+ matched_fields.push(field.value);
61
+ }
62
+ const createdAt = decodeString(bytes, pos);
63
+ pos += createdAt.bytesRead;
64
+
65
+ return {
66
+ value: {
67
+ kbid: kbid.value,
68
+ heading: heading.value,
69
+ type: sectionType.value,
70
+ docids,
71
+ score: score.value,
72
+ confidence: confidence.value,
73
+ snippet: snippet.value,
74
+ matched_terms,
75
+ matched_fields,
76
+ created_at: createdAt.value,
77
+ },
78
+ bytesRead: pos - startOffset,
79
+ };
80
+ }
@@ -0,0 +1,75 @@
1
+ import { decodeString } from './decode-string.function.ts';
2
+ import { decodeU32 } from './decode-u32.function.ts';
3
+ import { decodeOptionString } from './decode-option-string.function.ts';
4
+ import type { SectionRecordTrailing } from '../typings/section-record-trailing.model.ts';
5
+
6
+ export type { SectionRecordTrailing };
7
+
8
+ /**
9
+ * Decodes the trailing backward-compatible fields of a
10
+ * `SectionRecord` from WASM binary output.
11
+ *
12
+ * Fields present only in newer binary output; each is guarded by a
13
+ * length check. Missing fields default to `null` or `[]`.
14
+ *
15
+ * @param bytes - raw bytes from a WASM section-list export
16
+ * @param startOffset - byte position after the `typeName` field
17
+ * @returns decoded trailing fields and bytes consumed
18
+ */
19
+ export function decodeSectionRecordTrailing(
20
+ bytes: Uint8Array,
21
+ startOffset: number,
22
+ ): SectionRecordTrailing {
23
+ let pos = startOffset;
24
+
25
+ let sourceKey: string | null = null;
26
+ if (pos < bytes.length) {
27
+ const v = decodeOptionString(bytes, pos);
28
+ pos += v.bytesRead;
29
+ sourceKey = v.value;
30
+ }
31
+ let sourcePath: string | null = null;
32
+ if (pos < bytes.length) {
33
+ const v = decodeOptionString(bytes, pos);
34
+ pos += v.bytesRead;
35
+ sourcePath = v.value;
36
+ }
37
+ let sourceMtime: string | null = null;
38
+ if (pos < bytes.length) {
39
+ const v = decodeOptionString(bytes, pos);
40
+ pos += v.bytesRead;
41
+ sourceMtime = v.value;
42
+ }
43
+ let updatedAt: string | null = null;
44
+ if (pos < bytes.length) {
45
+ const v = decodeOptionString(bytes, pos);
46
+ pos += v.bytesRead;
47
+ updatedAt = v.value;
48
+ }
49
+ const tags: string[] = [];
50
+ if (pos < bytes.length) {
51
+ const tagCount = decodeU32(bytes, pos);
52
+ pos += tagCount.bytesRead;
53
+ for (let j = 0; j < tagCount.value; j++) {
54
+ const tagStr = decodeString(bytes, pos);
55
+ pos += tagStr.bytesRead;
56
+ tags.push(tagStr.value);
57
+ }
58
+ }
59
+ let supersedes: string | null = null;
60
+ if (pos < bytes.length) {
61
+ const v = decodeOptionString(bytes, pos);
62
+ pos += v.bytesRead;
63
+ supersedes = v.value;
64
+ }
65
+
66
+ return {
67
+ sourceKey,
68
+ sourcePath,
69
+ sourceMtime,
70
+ updatedAt,
71
+ tags,
72
+ supersedes,
73
+ bytesRead: pos - startOffset,
74
+ };
75
+ }
@@ -0,0 +1,85 @@
1
+ import { decodeString } from './decode-string.function.ts';
2
+ import { decodeU32 } from './decode-u32.function.ts';
3
+ import { decodeU64 } from './decode-u64.function.ts';
4
+ import { decodeOptionString } from './decode-option-string.function.ts';
5
+ import { decodeSectionType } from './decode-section-type.function.ts';
6
+ import { decodeSectionRecordTrailing } from './decode-section-record-trailing.function.ts';
7
+ import type { DecodeResult } from './decode-string.function.ts';
8
+ import type { SectionRecord } from '../typings/section-record.model.ts';
9
+
10
+ /**
11
+ * Decodes a single `SectionRecord` from WASM binary output.
12
+ *
13
+ * Reads all section fields in the order produced by the Rust
14
+ * `SectionRecord::encode` implementation. Trailing fields added
15
+ * after `typeName` default to `null` / `[]` when absent.
16
+ *
17
+ * @param bytes - raw bytes returned by a WASM section-list export
18
+ * @param startOffset - byte position of the record start
19
+ * @returns decoded record and number of bytes consumed
20
+ */
21
+ export function decodeSectionRecord(
22
+ bytes: Uint8Array,
23
+ startOffset: number,
24
+ ): DecodeResult<SectionRecord> {
25
+ let pos = startOffset;
26
+
27
+ const kbid = decodeString(bytes, pos);
28
+ pos += kbid.bytesRead;
29
+ const docid = decodeOptionString(bytes, pos);
30
+ pos += docid.bytesRead;
31
+ const st = decodeSectionType(bytes, pos);
32
+ pos += st.bytesRead;
33
+ const title = decodeOptionString(bytes, pos);
34
+ pos += title.bytesRead;
35
+ const description = decodeOptionString(bytes, pos);
36
+ pos += description.bytesRead;
37
+ const content = decodeString(bytes, pos);
38
+ pos += content.bytesRead;
39
+ const size = decodeU32(bytes, pos);
40
+ pos += size.bytesRead;
41
+ const createdAt = decodeU64(bytes, pos);
42
+ pos += createdAt.bytesRead;
43
+ const checksum = decodeString(bytes, pos);
44
+ pos += checksum.bytesRead;
45
+ const tokenCount = decodeU32(bytes, pos);
46
+ pos += tokenCount.bytesRead;
47
+ const headingTokenCount = decodeU32(bytes, pos);
48
+ pos += headingTokenCount.bytesRead;
49
+ const bodyTokenCount = decodeU32(bytes, pos);
50
+ pos += bodyTokenCount.bytesRead;
51
+ const codeTokenCount = decodeU32(bytes, pos);
52
+ pos += codeTokenCount.bytesRead;
53
+ const typeName = decodeString(bytes, pos);
54
+ pos += typeName.bytesRead;
55
+
56
+ const trailing = decodeSectionRecordTrailing(bytes, pos);
57
+ pos += trailing.bytesRead;
58
+
59
+ const record: SectionRecord = {
60
+ kbid: kbid.value,
61
+ docid: docid.value,
62
+ sectionType: st.sectionType,
63
+ title: title.value,
64
+ description: description.value,
65
+ content: content.value,
66
+ size: size.value,
67
+ createdAt: createdAt.value,
68
+ checksum: checksum.value,
69
+ tokenCount: tokenCount.value,
70
+ headingTokenCount: headingTokenCount.value,
71
+ bodyTokenCount: bodyTokenCount.value,
72
+ codeTokenCount: codeTokenCount.value,
73
+ typeName: typeName.value,
74
+ sourceKey: trailing.sourceKey,
75
+ sourcePath: trailing.sourcePath,
76
+ sourceMtime: trailing.sourceMtime,
77
+ updatedAt: trailing.updatedAt,
78
+ tags: trailing.tags,
79
+ supersedes: trailing.supersedes,
80
+ };
81
+ if (st.mimeType !== undefined) {
82
+ record.mimeType = st.mimeType;
83
+ }
84
+ return { value: record, bytesRead: pos - startOffset };
85
+ }
@@ -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
+ }