@dikolab/kbdb 0.3.1 → 0.4.0

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 (468) hide show
  1. package/README.md +108 -126
  2. package/dist/chunk-BJPSPNGX.mjs +223 -0
  3. package/dist/chunk-BJPSPNGX.mjs.map +7 -0
  4. package/dist/cli.cjs +956 -319
  5. package/dist/cli.cjs.map +4 -4
  6. package/dist/cli.d.ts +9 -0
  7. package/dist/cli.mjs +840 -321
  8. package/dist/cli.mjs.map +4 -4
  9. package/dist/kbdb-worker.cjs +714 -94
  10. package/dist/kbdb-worker.cjs.map +4 -4
  11. package/dist/mod.cjs +122 -16
  12. package/dist/mod.cjs.map +3 -3
  13. package/dist/mod.d.ts +23 -2
  14. package/dist/mod.mjs +121 -16
  15. package/dist/mod.mjs.map +3 -3
  16. package/dist/src/shared/cli/functions/dispatch-command.function.d.ts +2 -1
  17. package/dist/src/shared/cli/functions/find-db.function.d.ts +7 -8
  18. package/dist/src/shared/cli/functions/handle-mcp.function.d.ts +1 -1
  19. package/dist/src/shared/cli/functions/parse-args.function.d.ts +4 -3
  20. package/dist/src/shared/cli/functions/resolve-kbid-prefix.function.d.ts +27 -0
  21. package/dist/src/shared/cli/functions/resolve-raw-db-path.function.d.ts +10 -0
  22. package/dist/src/shared/cli/functions/run-cli.function.d.ts +3 -1
  23. package/dist/src/shared/cli/functions/run-content.function.d.ts +8 -3
  24. package/dist/src/shared/cli/functions/run-import.function.d.ts +27 -0
  25. package/dist/src/shared/cli/functions/run-recall.function.d.ts +10 -4
  26. package/dist/src/shared/cli/functions/run-search.function.d.ts +7 -0
  27. package/dist/src/shared/cli/functions/run-unlearn.function.d.ts +9 -4
  28. package/dist/src/shared/cli/functions/run-worker-restart.function.d.ts +11 -0
  29. package/dist/src/shared/cli/functions/run-worker-stop.function.d.ts +11 -0
  30. package/dist/src/shared/cli/index.d.ts +2 -0
  31. package/dist/src/shared/cli/typings/cli-deps.interface.d.ts +4 -1
  32. package/dist/src/shared/cli/typings/cli-options.interface.d.ts +17 -0
  33. package/dist/src/shared/cli/typings/dispatch-client.type.d.ts +2 -1
  34. package/dist/src/shared/cli/typings/search-display.model.d.ts +6 -0
  35. package/dist/src/shared/embedding/classes/api-embedding-provider.class.d.ts +33 -0
  36. package/dist/src/shared/embedding/classes/onnx-embedding-provider.class.d.ts +33 -0
  37. package/dist/src/shared/embedding/functions/append-vector-entry.function.d.ts +14 -0
  38. package/dist/src/shared/embedding/functions/create-embedding-provider.function.d.ts +12 -0
  39. package/dist/src/shared/embedding/functions/detect-stale-vectors.function.d.ts +16 -0
  40. package/dist/src/shared/embedding/functions/parse-api-embedding-response.function.d.ts +11 -0
  41. package/dist/src/shared/embedding/functions/rebuild-vectors.function.d.ts +15 -0
  42. package/dist/src/shared/embedding/functions/scan-semantic-contradictions.function.d.ts +13 -0
  43. package/dist/src/shared/embedding/index.d.ts +7 -0
  44. package/dist/src/shared/embedding/typings/semantic-contradiction.model.d.ts +21 -0
  45. package/dist/src/shared/embedding/typings/stale-vectors-report.model.d.ts +16 -0
  46. package/dist/src/shared/mcp/classes/mcp-server.class.d.ts +22 -2
  47. package/dist/src/shared/mcp/functions/create-mcp-server.function.d.ts +6 -1
  48. package/dist/src/shared/mcp/functions/has-sampling-capability.function.d.ts +8 -0
  49. package/dist/src/shared/mcp/functions/run-auto-capture.function.d.ts +26 -0
  50. package/dist/src/shared/mcp/typings/mcp-client.interface.d.ts +2 -0
  51. package/dist/src/shared/mcp/typings/mcp-integrity-check-result.model.d.ts +24 -0
  52. package/dist/src/shared/mcp/typings/mcp-worker-client.interface.d.ts +3 -1
  53. package/dist/src/shared/version/constants/version.constant.d.ts +1 -1
  54. package/dist/src/shared/wasm-codec/typings/paged-search-result.model.d.ts +2 -0
  55. package/dist/src/shared/worker-client/classes/worker-client.class.d.ts +31 -1
  56. package/dist/src/shared/worker-client/constants/request-timeout.constant.d.ts +2 -0
  57. package/dist/src/shared/worker-client/constants/retry-defaults.constant.d.ts +2 -0
  58. package/dist/src/shared/worker-client/functions/get-or-create-client.function.d.ts +20 -0
  59. package/dist/src/shared/worker-client/functions/retry-on-timeout.function.d.ts +17 -0
  60. package/dist/src/shared/worker-client/index.d.ts +4 -1
  61. package/dist/src/shared/worker-client/typings/import-result.model.d.ts +16 -0
  62. package/dist/src/shared/worker-client/typings/integrity-check-result.model.d.ts +24 -0
  63. package/dist/src/shared/worker-client/typings/search-params.model.d.ts +4 -0
  64. package/dist/src/shared/worker-client/typings/search-result.model.d.ts +6 -0
  65. package/dist/src/shared/worker-client/typings/worker-client-options.interface.d.ts +7 -0
  66. package/dist/src/shared/worker-daemon/classes/worker-daemon.class.d.ts +5 -0
  67. package/dist/src/shared/worker-daemon/functions/create-ipc-server.function.d.ts +11 -11
  68. package/dist/src/shared/worker-daemon/functions/embed-after-learn.function.d.ts +13 -0
  69. package/dist/src/shared/worker-daemon/functions/handle-hybrid-search.function.d.ts +44 -0
  70. package/dist/src/shared/worker-daemon/functions/handle-import.function.d.ts +14 -0
  71. package/dist/src/shared/worker-daemon/functions/handle-read-ops.function.d.ts +7 -1
  72. package/dist/src/shared/worker-daemon/functions/handle-write-ops.function.d.ts +9 -4
  73. package/dist/src/shared/worker-daemon/typings/handler-context.interface.d.ts +3 -0
  74. package/dist/wasm/fs-database/kbdb_fs_database.d.ts +16 -85
  75. package/dist/wasm/fs-database/kbdb_fs_database.js +16 -85
  76. package/dist/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
  77. package/dist/wasm/kb-worker/kbdb_worker.d.ts +20 -115
  78. package/dist/wasm/kb-worker/kbdb_worker.js +20 -115
  79. package/dist/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
  80. package/dist/wasm/query-parser/kbdb_query_parser_bg.wasm +0 -0
  81. package/dist/worker.d.ts +8 -0
  82. package/dist/worker.mjs +606 -102
  83. package/dist/worker.mjs.map +4 -4
  84. package/docs/details/README.md +4 -0
  85. package/docs/details/agent-tooling.md +122 -0
  86. package/docs/details/cli.md +78 -12
  87. package/docs/details/knowledge-base.md +173 -0
  88. package/docs/details/library-api.md +42 -2
  89. package/docs/details/mcp-server.md +39 -8
  90. package/docs/details/search-and-ranking.md +56 -0
  91. package/docs/goals/cli.md +110 -34
  92. package/docs/goals/mcp.md +22 -19
  93. package/docs/goals/query-parser.md +8 -0
  94. package/docs/goals/worker-client.md +62 -1
  95. package/docs/goals/worker-daemon.md +52 -10
  96. package/docs/modules/typescript/cli.md +1 -1
  97. package/docs/modules/typescript/shared/cli/functions.md +116 -13
  98. package/docs/modules/typescript/shared/cli/module.md +33 -20
  99. package/docs/modules/typescript/shared/cli/typings.md +4 -0
  100. package/docs/modules/typescript/shared/embedding/functions.md +104 -25
  101. package/docs/modules/typescript/shared/mcp/module.md +1 -1
  102. package/docs/modules/typescript/shared/mcp/typings.md +8 -1
  103. package/docs/modules/typescript/shared/worker-client/module.md +9 -1
  104. package/docs/modules/typescript/shared/worker-client/typings.md +3 -0
  105. package/docs/modules/typescript/shared/worker-daemon/module.md +6 -3
  106. package/docs/overview.md +43 -22
  107. package/docs/release-notes/0.3.1.md +10 -0
  108. package/docs/release-notes/0.3.2.md +64 -0
  109. package/docs/release-notes/0.4.0.md +80 -0
  110. package/docs/release-notes/README.md +2 -0
  111. package/mod.ts +33 -15
  112. package/package.json +11 -10
  113. package/dist/chunk-JG2UCKLI.mjs +0 -95
  114. package/dist/chunk-JG2UCKLI.mjs.map +0 -7
  115. package/src/cli.ts +0 -71
  116. package/src/shared/auto-capture/classes/auto-capture-controller.class.ts +0 -62
  117. package/src/shared/auto-capture/constants/auto-capture-defaults.constant.ts +0 -15
  118. package/src/shared/auto-capture/functions/build-capture-prompt.function.ts +0 -27
  119. package/src/shared/auto-capture/functions/evaluate-trigger.function.ts +0 -50
  120. package/src/shared/auto-capture/index.ts +0 -7
  121. package/src/shared/auto-capture/typings/auto-capture-config.interface.ts +0 -13
  122. package/src/shared/auto-capture/typings/auto-capture-state.interface.ts +0 -13
  123. package/src/shared/auto-capture/typings/auto-capture-trigger.interface.ts +0 -7
  124. package/src/shared/cli/constants/defaults.constant.ts +0 -19
  125. package/src/shared/cli/constants/global-help.constant.ts +0 -73
  126. package/src/shared/cli/constants/help-text.constant.ts +0 -4
  127. package/src/shared/cli/constants/leaf-help.constant.ts +0 -219
  128. package/src/shared/cli/constants/memory-protocol-body.constant.ts +0 -39
  129. package/src/shared/cli/constants/query-guidance-body.constant.ts +0 -37
  130. package/src/shared/cli/constants/subcommand-help.constant.ts +0 -195
  131. package/src/shared/cli/functions/collect-files.function.ts +0 -55
  132. package/src/shared/cli/functions/compute-section-kbid.function.ts +0 -49
  133. package/src/shared/cli/functions/dispatch-command.function.ts +0 -390
  134. package/src/shared/cli/functions/ensure-db.function.ts +0 -21
  135. package/src/shared/cli/functions/error-to-message.function.ts +0 -9
  136. package/src/shared/cli/functions/find-db.function.ts +0 -20
  137. package/src/shared/cli/functions/format-mcp-output.function.ts +0 -41
  138. package/src/shared/cli/functions/format-output.function.ts +0 -95
  139. package/src/shared/cli/functions/format-text-output.function.ts +0 -42
  140. package/src/shared/cli/functions/generate-group-help.function.ts +0 -41
  141. package/src/shared/cli/functions/generate-help.function.ts +0 -654
  142. package/src/shared/cli/functions/handle-data-command.function.ts +0 -67
  143. package/src/shared/cli/functions/handle-mcp.function.ts +0 -56
  144. package/src/shared/cli/functions/handle-migrate.function.ts +0 -64
  145. package/src/shared/cli/functions/hydrate-search-previews.function.ts +0 -29
  146. package/src/shared/cli/functions/install-default-skills.function.ts +0 -296
  147. package/src/shared/cli/functions/is-stdin-tty.function.ts +0 -12
  148. package/src/shared/cli/functions/parse-args.function.ts +0 -156
  149. package/src/shared/cli/functions/prompt-user.function.ts +0 -36
  150. package/src/shared/cli/functions/resolve-skill-names.function.ts +0 -43
  151. package/src/shared/cli/functions/run-agent-create.function.ts +0 -114
  152. package/src/shared/cli/functions/run-agent-delete.function.ts +0 -47
  153. package/src/shared/cli/functions/run-agent-get.function.ts +0 -166
  154. package/src/shared/cli/functions/run-agent-list.function.ts +0 -58
  155. package/src/shared/cli/functions/run-check.function.ts +0 -159
  156. package/src/shared/cli/functions/run-cli.function.ts +0 -299
  157. package/src/shared/cli/functions/run-content.function.ts +0 -47
  158. package/src/shared/cli/functions/run-db-init.function.ts +0 -44
  159. package/src/shared/cli/functions/run-db-migrate.function.ts +0 -40
  160. package/src/shared/cli/functions/run-export.function.ts +0 -40
  161. package/src/shared/cli/functions/run-gc.function.ts +0 -51
  162. package/src/shared/cli/functions/run-init.function.ts +0 -93
  163. package/src/shared/cli/functions/run-learn.function.ts +0 -223
  164. package/src/shared/cli/functions/run-migrate.function.ts +0 -85
  165. package/src/shared/cli/functions/run-rebuild.function.ts +0 -47
  166. package/src/shared/cli/functions/run-recall.function.ts +0 -66
  167. package/src/shared/cli/functions/run-search.function.ts +0 -133
  168. package/src/shared/cli/functions/run-skill-delete.function.ts +0 -47
  169. package/src/shared/cli/functions/run-skill-get.function.ts +0 -90
  170. package/src/shared/cli/functions/run-skill-learn.function.ts +0 -70
  171. package/src/shared/cli/functions/run-skill-list.function.ts +0 -74
  172. package/src/shared/cli/functions/run-status.function.ts +0 -29
  173. package/src/shared/cli/functions/run-unlearn.function.ts +0 -58
  174. package/src/shared/cli/functions/version-gate.function.ts +0 -44
  175. package/src/shared/cli/functions/wrap-command.function.ts +0 -34
  176. package/src/shared/cli/index.ts +0 -55
  177. package/src/shared/cli/typings/agent-create-client.interface.ts +0 -47
  178. package/src/shared/cli/typings/agent-get-client.interface.ts +0 -39
  179. package/src/shared/cli/typings/check-client.interface.ts +0 -66
  180. package/src/shared/cli/typings/cli-deps.interface.ts +0 -54
  181. package/src/shared/cli/typings/cli-options.interface.ts +0 -72
  182. package/src/shared/cli/typings/command-result.model.ts +0 -15
  183. package/src/shared/cli/typings/disconnectable-client.interface.ts +0 -29
  184. package/src/shared/cli/typings/dispatch-client.type.ts +0 -46
  185. package/src/shared/cli/typings/learn-client.interface.ts +0 -53
  186. package/src/shared/cli/typings/learn-io.interface.ts +0 -5
  187. package/src/shared/cli/typings/learn-result.model.ts +0 -27
  188. package/src/shared/cli/typings/search-client.interface.ts +0 -73
  189. package/src/shared/cli/typings/search-display.model.ts +0 -54
  190. package/src/shared/dir-resolver/functions/join-path.function.ts +0 -13
  191. package/src/shared/dir-resolver/functions/resolve-base-dir.function.ts +0 -25
  192. package/src/shared/dir-resolver/functions/resolve-wasm-dir.function.ts +0 -5
  193. package/src/shared/dir-resolver/functions/resolve-worker-script.function.ts +0 -13
  194. package/src/shared/dir-resolver/index.ts +0 -11
  195. package/src/shared/dir-resolver/typings/base-dir.interface.ts +0 -4
  196. package/src/shared/embedding/classes/null-embedding-provider.class.ts +0 -29
  197. package/src/shared/embedding/constants/near-duplicate-thresholds.constant.ts +0 -17
  198. package/src/shared/embedding/functions/build-vector-index.function.ts +0 -79
  199. package/src/shared/embedding/functions/cosine-similarity.function.ts +0 -31
  200. package/src/shared/embedding/functions/detect-near-duplicates.function.ts +0 -69
  201. package/src/shared/embedding/functions/jaccard-coefficient.function.ts +0 -26
  202. package/src/shared/embedding/functions/read-vector-index-meta.function.ts +0 -44
  203. package/src/shared/embedding/functions/rrf-fuse.function.ts +0 -33
  204. package/src/shared/embedding/functions/search-vectors.function.ts +0 -59
  205. package/src/shared/embedding/index.ts +0 -20
  206. package/src/shared/embedding/typings/embedding-config.interface.ts +0 -23
  207. package/src/shared/embedding/typings/embedding-provider.interface.ts +0 -25
  208. package/src/shared/embedding/typings/near-duplicate-candidate.model.ts +0 -25
  209. package/src/shared/embedding/typings/near-duplicate-result.model.ts +0 -26
  210. package/src/shared/embedding/typings/vector-index-entry.model.ts +0 -13
  211. package/src/shared/embedding/typings/vector-index-meta.model.ts +0 -14
  212. package/src/shared/embedding/typings/vector-search-result.model.ts +0 -8
  213. package/src/shared/hash/functions/compute-sha256.ts +0 -17
  214. package/src/shared/hash/index.ts +0 -1
  215. package/src/shared/mcp/classes/mcp-server.class.ts +0 -480
  216. package/src/shared/mcp/constants/mcp-error-codes.constant.ts +0 -30
  217. package/src/shared/mcp/constants/tool-agent-create.constant.ts +0 -39
  218. package/src/shared/mcp/constants/tool-agent-delete.constant.ts +0 -26
  219. package/src/shared/mcp/constants/tool-agent-get.constant.ts +0 -24
  220. package/src/shared/mcp/constants/tool-agent-list.constant.ts +0 -18
  221. package/src/shared/mcp/constants/tool-auto-capture-review.constant.ts +0 -32
  222. package/src/shared/mcp/constants/tool-check.constant.ts +0 -21
  223. package/src/shared/mcp/constants/tool-content.constant.ts +0 -29
  224. package/src/shared/mcp/constants/tool-export.constant.ts +0 -27
  225. package/src/shared/mcp/constants/tool-gc.constant.ts +0 -21
  226. package/src/shared/mcp/constants/tool-learn.constant.ts +0 -58
  227. package/src/shared/mcp/constants/tool-rebuild.constant.ts +0 -21
  228. package/src/shared/mcp/constants/tool-recall.constant.ts +0 -36
  229. package/src/shared/mcp/constants/tool-retrieve.constant.ts +0 -31
  230. package/src/shared/mcp/constants/tool-search.constant.ts +0 -51
  231. package/src/shared/mcp/constants/tool-skill-delete.constant.ts +0 -24
  232. package/src/shared/mcp/constants/tool-skill-get.constant.ts +0 -27
  233. package/src/shared/mcp/constants/tool-skill-learn.constant.ts +0 -37
  234. package/src/shared/mcp/constants/tool-skill-list.constant.ts +0 -18
  235. package/src/shared/mcp/constants/tool-status.constant.ts +0 -20
  236. package/src/shared/mcp/constants/tool-unlearn.constant.ts +0 -25
  237. package/src/shared/mcp/functions/as-boolean-or-undefined.function.ts +0 -11
  238. package/src/shared/mcp/functions/as-string-array-or-undefined.function.ts +0 -17
  239. package/src/shared/mcp/functions/as-string-array.function.ts +0 -15
  240. package/src/shared/mcp/functions/as-string.function.ts +0 -10
  241. package/src/shared/mcp/functions/build-skills-text.function.ts +0 -43
  242. package/src/shared/mcp/functions/create-mcp-server.function.ts +0 -14
  243. package/src/shared/mcp/functions/create-prompt-definitions.function.ts +0 -102
  244. package/src/shared/mcp/functions/create-resource-templates.function.ts +0 -23
  245. package/src/shared/mcp/functions/create-tool-definitions.function.ts +0 -530
  246. package/src/shared/mcp/functions/extract-skill-arguments.function.ts +0 -27
  247. package/src/shared/mcp/functions/handle-agent-create.function.ts +0 -116
  248. package/src/shared/mcp/functions/handle-agent-delete.function.ts +0 -50
  249. package/src/shared/mcp/functions/handle-agent-get.function.ts +0 -160
  250. package/src/shared/mcp/functions/handle-agent-list.function.ts +0 -50
  251. package/src/shared/mcp/functions/handle-agent-prompt.function.ts +0 -68
  252. package/src/shared/mcp/functions/handle-completion.function.ts +0 -114
  253. package/src/shared/mcp/functions/handle-mcp-request.function.ts +0 -202
  254. package/src/shared/mcp/functions/handle-prompt-get.function.ts +0 -220
  255. package/src/shared/mcp/functions/handle-recall.function.ts +0 -66
  256. package/src/shared/mcp/functions/handle-resource-read.function.ts +0 -56
  257. package/src/shared/mcp/functions/handle-roots-list.function.ts +0 -29
  258. package/src/shared/mcp/functions/handle-skill-prompt.function.ts +0 -44
  259. package/src/shared/mcp/functions/handle-tool-auto-capture-review.function.ts +0 -24
  260. package/src/shared/mcp/functions/handle-tool-call.function.ts +0 -560
  261. package/src/shared/mcp/functions/handle-tool-check.function.ts +0 -21
  262. package/src/shared/mcp/functions/handle-tool-content.function.ts +0 -23
  263. package/src/shared/mcp/functions/handle-tool-export.function.ts +0 -25
  264. package/src/shared/mcp/functions/handle-tool-gc.function.ts +0 -21
  265. package/src/shared/mcp/functions/handle-tool-learn.function.ts +0 -69
  266. package/src/shared/mcp/functions/handle-tool-rebuild.function.ts +0 -21
  267. package/src/shared/mcp/functions/handle-tool-retrieve.function.ts +0 -40
  268. package/src/shared/mcp/functions/handle-tool-search.function.ts +0 -47
  269. package/src/shared/mcp/functions/handle-tool-skill-delete.function.ts +0 -34
  270. package/src/shared/mcp/functions/handle-tool-skill-get.function.ts +0 -59
  271. package/src/shared/mcp/functions/handle-tool-skill-learn.function.ts +0 -61
  272. package/src/shared/mcp/functions/handle-tool-skill-list.function.ts +0 -39
  273. package/src/shared/mcp/functions/handle-tool-status.function.ts +0 -21
  274. package/src/shared/mcp/functions/handle-tool-unlearn.function.ts +0 -24
  275. package/src/shared/mcp/functions/parse-agent-meta.function.ts +0 -27
  276. package/src/shared/mcp/functions/parse-skill-arguments.function.ts +0 -36
  277. package/src/shared/mcp/functions/parse-skill-content.function.ts +0 -38
  278. package/src/shared/mcp/functions/read-agent-meta.function.ts +0 -41
  279. package/src/shared/mcp/functions/resolve-skill-refs.function.ts +0 -50
  280. package/src/shared/mcp/functions/run-startup-health-check.function.ts +0 -34
  281. package/src/shared/mcp/functions/serialize-skill-content.function.ts +0 -12
  282. package/src/shared/mcp/functions/should-emit-log.function.ts +0 -38
  283. package/src/shared/mcp/index.ts +0 -28
  284. package/src/shared/mcp/typings/agent-types.interface.ts +0 -39
  285. package/src/shared/mcp/typings/log-types.interface.ts +0 -26
  286. package/src/shared/mcp/typings/mcp-capabilities.interface.ts +0 -16
  287. package/src/shared/mcp/typings/mcp-client.interface.ts +0 -317
  288. package/src/shared/mcp/typings/mcp-completion.interface.ts +0 -45
  289. package/src/shared/mcp/typings/mcp-content-result.model.ts +0 -9
  290. package/src/shared/mcp/typings/mcp-export-result.model.ts +0 -11
  291. package/src/shared/mcp/typings/mcp-gc-result.model.ts +0 -15
  292. package/src/shared/mcp/typings/mcp-integrity-check-result.model.ts +0 -17
  293. package/src/shared/mcp/typings/mcp-integrity-error.model.ts +0 -15
  294. package/src/shared/mcp/typings/mcp-notification.interface.ts +0 -9
  295. package/src/shared/mcp/typings/mcp-rebuild-result.model.ts +0 -9
  296. package/src/shared/mcp/typings/mcp-request.interface.ts +0 -11
  297. package/src/shared/mcp/typings/mcp-resource-result.interface.ts +0 -12
  298. package/src/shared/mcp/typings/mcp-resource-template.interface.ts +0 -11
  299. package/src/shared/mcp/typings/mcp-response.interface.ts +0 -18
  300. package/src/shared/mcp/typings/mcp-server-info.interface.ts +0 -7
  301. package/src/shared/mcp/typings/mcp-server-state.interface.ts +0 -17
  302. package/src/shared/mcp/typings/mcp-tool-annotations.interface.ts +0 -32
  303. package/src/shared/mcp/typings/mcp-tool-definition.interface.ts +0 -16
  304. package/src/shared/mcp/typings/mcp-tool-result.interface.ts +0 -19
  305. package/src/shared/mcp/typings/mcp-types.interface.ts +0 -158
  306. package/src/shared/mcp/typings/mcp-worker-client.interface.ts +0 -243
  307. package/src/shared/mcp/typings/prompt-types.interface.ts +0 -39
  308. package/src/shared/mcp/typings/remove-section-result.model.ts +0 -10
  309. package/src/shared/mcp/typings/sampling-types.interface.ts +0 -48
  310. package/src/shared/mcp/typings/skill-types.interface.ts +0 -29
  311. package/src/shared/mcp/typings/tool-call-result.model.ts +0 -18
  312. package/src/shared/mod.ts +0 -1
  313. package/src/shared/platform/functions/get-ipc-path.function.ts +0 -19
  314. package/src/shared/platform/functions/get-tmpdir.function.ts +0 -8
  315. package/src/shared/platform/functions/is-process-alive.function.ts +0 -17
  316. package/src/shared/platform/index.ts +0 -3
  317. package/src/shared/runtime/functions/detect-runtime.ts +0 -14
  318. package/src/shared/runtime/functions/get-args.ts +0 -16
  319. package/src/shared/runtime/index.ts +0 -3
  320. package/src/shared/runtime/typings/runtime.ts +0 -2
  321. package/src/shared/sync/functions/build-import-report.function.ts +0 -40
  322. package/src/shared/sync/functions/parse-export-entry.function.ts +0 -45
  323. package/src/shared/sync/functions/resolve-conflict.function.ts +0 -31
  324. package/src/shared/sync/functions/serialize-export-entry.function.ts +0 -18
  325. package/src/shared/sync/index.ts +0 -9
  326. package/src/shared/sync/typings/conflict-resolution.type.ts +0 -8
  327. package/src/shared/sync/typings/export-entry.interface.ts +0 -13
  328. package/src/shared/sync/typings/export-options.interface.ts +0 -9
  329. package/src/shared/sync/typings/import-options.interface.ts +0 -7
  330. package/src/shared/sync/typings/import-report.interface.ts +0 -15
  331. package/src/shared/version/constants/version.constant.ts +0 -2
  332. package/src/shared/version/index.ts +0 -1
  333. package/src/shared/wasm-codec/functions/decode-add-section-result.function.ts +0 -112
  334. package/src/shared/wasm-codec/functions/decode-compose-output.function.ts +0 -16
  335. package/src/shared/wasm-codec/functions/decode-document-manifest-list.function.ts +0 -70
  336. package/src/shared/wasm-codec/functions/decode-document-manifest.function.ts +0 -87
  337. package/src/shared/wasm-codec/functions/decode-f32.function.ts +0 -16
  338. package/src/shared/wasm-codec/functions/decode-key-value-text.function.ts +0 -15
  339. package/src/shared/wasm-codec/functions/decode-one-recall-result.function.ts +0 -86
  340. package/src/shared/wasm-codec/functions/decode-option-string.function.ts +0 -24
  341. package/src/shared/wasm-codec/functions/decode-recall-document.function.ts +0 -59
  342. package/src/shared/wasm-codec/functions/decode-recall-reference.function.ts +0 -52
  343. package/src/shared/wasm-codec/functions/decode-recall-result.function.ts +0 -267
  344. package/src/shared/wasm-codec/functions/decode-recall-sibling.function.ts +0 -43
  345. package/src/shared/wasm-codec/functions/decode-remove-flag.function.ts +0 -3
  346. package/src/shared/wasm-codec/functions/decode-scored-results.function.ts +0 -194
  347. package/src/shared/wasm-codec/functions/decode-section-match.function.ts +0 -80
  348. package/src/shared/wasm-codec/functions/decode-section-record-list.function.ts +0 -20
  349. package/src/shared/wasm-codec/functions/decode-section-record-trailing.function.ts +0 -75
  350. package/src/shared/wasm-codec/functions/decode-section-record.function.ts +0 -85
  351. package/src/shared/wasm-codec/functions/decode-section-records.function.ts +0 -249
  352. package/src/shared/wasm-codec/functions/decode-section-type.function.ts +0 -30
  353. package/src/shared/wasm-codec/functions/decode-string.function.ts +0 -22
  354. package/src/shared/wasm-codec/functions/decode-u32.function.ts +0 -16
  355. package/src/shared/wasm-codec/functions/decode-u64.function.ts +0 -16
  356. package/src/shared/wasm-codec/functions/decode-wasm-list.function.ts +0 -31
  357. package/src/shared/wasm-codec/functions/encode-add-section-params.function.ts +0 -102
  358. package/src/shared/wasm-codec/functions/encode-group-params.function.ts +0 -28
  359. package/src/shared/wasm-codec/functions/encode-identifier-list.function.ts +0 -17
  360. package/src/shared/wasm-codec/functions/encode-kbid-list.function.ts +0 -17
  361. package/src/shared/wasm-codec/functions/encode-option-string.function.ts +0 -14
  362. package/src/shared/wasm-codec/functions/encode-recall-params.function.ts +0 -68
  363. package/src/shared/wasm-codec/functions/encode-search-params.function.ts +0 -12
  364. package/src/shared/wasm-codec/functions/encode-section-type.function.ts +0 -18
  365. package/src/shared/wasm-codec/functions/encode-string.function.ts +0 -9
  366. package/src/shared/wasm-codec/functions/encode-type-filter-param.function.ts +0 -13
  367. package/src/shared/wasm-codec/functions/encode-u32.function.ts +0 -5
  368. package/src/shared/wasm-codec/functions/encode-update-section-params.function.ts +0 -16
  369. package/src/shared/wasm-codec/index.ts +0 -49
  370. package/src/shared/wasm-codec/typings/add-section-input.model.ts +0 -45
  371. package/src/shared/wasm-codec/typings/add-section-result.model.ts +0 -28
  372. package/src/shared/wasm-codec/typings/document-manifest.model.ts +0 -20
  373. package/src/shared/wasm-codec/typings/document-section.model.ts +0 -12
  374. package/src/shared/wasm-codec/typings/item-decoder.type.ts +0 -10
  375. package/src/shared/wasm-codec/typings/near-duplicate.model.ts +0 -16
  376. package/src/shared/wasm-codec/typings/paged-search-result.model.ts +0 -22
  377. package/src/shared/wasm-codec/typings/section-match.model.ts +0 -31
  378. package/src/shared/wasm-codec/typings/section-record-trailing.model.ts +0 -38
  379. package/src/shared/wasm-codec/typings/section-record.model.ts +0 -66
  380. package/src/shared/wasm-codec/typings/section-type-result.model.ts +0 -12
  381. package/src/shared/worker-client/classes/worker-client.class.ts +0 -466
  382. package/src/shared/worker-client/functions/compute-context-id.function.ts +0 -18
  383. package/src/shared/worker-client/functions/create-worker-client.function.ts +0 -70
  384. package/src/shared/worker-client/functions/discover-daemon.function.ts +0 -47
  385. package/src/shared/worker-client/functions/handle-ipc-data.function.ts +0 -49
  386. package/src/shared/worker-client/functions/resolve-db-path.function.ts +0 -21
  387. package/src/shared/worker-client/functions/send-ipc-request.function.ts +0 -39
  388. package/src/shared/worker-client/functions/spawn-daemon.function.ts +0 -35
  389. package/src/shared/worker-client/functions/wait-for-daemon.function.ts +0 -34
  390. package/src/shared/worker-client/index.ts +0 -44
  391. package/src/shared/worker-client/typings/add-section-result.model.ts +0 -39
  392. package/src/shared/worker-client/typings/content-result.model.ts +0 -12
  393. package/src/shared/worker-client/typings/daemon-info.model.ts +0 -7
  394. package/src/shared/worker-client/typings/export-result.model.ts +0 -14
  395. package/src/shared/worker-client/typings/gc-result.model.ts +0 -18
  396. package/src/shared/worker-client/typings/integrity-check-result.model.ts +0 -43
  397. package/src/shared/worker-client/typings/json-rpc-response.interface.ts +0 -17
  398. package/src/shared/worker-client/typings/migrate-result.model.ts +0 -11
  399. package/src/shared/worker-client/typings/pending-call.interface.ts +0 -7
  400. package/src/shared/worker-client/typings/rebuild-result.model.ts +0 -12
  401. package/src/shared/worker-client/typings/recall-document.model.ts +0 -16
  402. package/src/shared/worker-client/typings/recall-params.model.ts +0 -15
  403. package/src/shared/worker-client/typings/recall-reference.model.ts +0 -32
  404. package/src/shared/worker-client/typings/recall-result.model.ts +0 -98
  405. package/src/shared/worker-client/typings/recall-sibling.model.ts +0 -11
  406. package/src/shared/worker-client/typings/recall-single-result.model.ts +0 -41
  407. package/src/shared/worker-client/typings/remove-section-result.model.ts +0 -7
  408. package/src/shared/worker-client/typings/search-params.model.ts +0 -14
  409. package/src/shared/worker-client/typings/search-result.model.ts +0 -43
  410. package/src/shared/worker-client/typings/section.model.ts +0 -43
  411. package/src/shared/worker-client/typings/status-result.model.ts +0 -14
  412. package/src/shared/worker-client/typings/version-status.model.ts +0 -28
  413. package/src/shared/worker-client/typings/worker-client-error.interface.ts +0 -8
  414. package/src/shared/worker-client/typings/worker-client-options.interface.ts +0 -30
  415. package/src/shared/worker-daemon/classes/ipc-error.class.ts +0 -22
  416. package/src/shared/worker-daemon/classes/worker-daemon.class.ts +0 -1291
  417. package/src/shared/worker-daemon/constants/daemon-defaults.constant.ts +0 -29
  418. package/src/shared/worker-daemon/constants/wasm-method-map.constant.ts +0 -69
  419. package/src/shared/worker-daemon/functions/build-ipc-error-response.function.ts +0 -16
  420. package/src/shared/worker-daemon/functions/check-catalog-version.function.ts +0 -54
  421. package/src/shared/worker-daemon/functions/check-preconditions.function.ts +0 -28
  422. package/src/shared/worker-daemon/functions/create-host-imports.function.ts +0 -328
  423. package/src/shared/worker-daemon/functions/create-ipc-server.function.ts +0 -87
  424. package/src/shared/worker-daemon/functions/detect-stale-pid.function.ts +0 -33
  425. package/src/shared/worker-daemon/functions/dispatch-request.function.ts +0 -190
  426. package/src/shared/worker-daemon/functions/handle-check-version.function.ts +0 -74
  427. package/src/shared/worker-daemon/functions/handle-config-method.function.ts +0 -27
  428. package/src/shared/worker-daemon/functions/handle-read-ops.function.ts +0 -236
  429. package/src/shared/worker-daemon/functions/handle-write-ops.function.ts +0 -257
  430. package/src/shared/worker-daemon/functions/load-wasm-modules.function.ts +0 -95
  431. package/src/shared/worker-daemon/functions/parse-auto-capture-section.function.ts +0 -51
  432. package/src/shared/worker-daemon/functions/parse-catalog-version.function.ts +0 -20
  433. package/src/shared/worker-daemon/functions/parse-embedding-section.function.ts +0 -38
  434. package/src/shared/worker-daemon/functions/parse-worker-toml.function.ts +0 -104
  435. package/src/shared/worker-daemon/functions/read-config.function.ts +0 -83
  436. package/src/shared/worker-daemon/functions/run-startup-integrity-check.function.ts +0 -55
  437. package/src/shared/worker-daemon/functions/run-worker.function.ts +0 -57
  438. package/src/shared/worker-daemon/functions/scan-near-duplicates.function.ts +0 -92
  439. package/src/shared/worker-daemon/functions/start-daemon.function.ts +0 -74
  440. package/src/shared/worker-daemon/functions/wasm-bridge.function.ts +0 -144
  441. package/src/shared/worker-daemon/functions/wasm-memory-helpers.function.ts +0 -41
  442. package/src/shared/worker-daemon/functions/write-lock.function.ts +0 -49
  443. package/src/shared/worker-daemon/index.ts +0 -16
  444. package/src/shared/worker-daemon/typings/allocator-ref.interface.ts +0 -16
  445. package/src/shared/worker-daemon/typings/daemon-config.interface.ts +0 -20
  446. package/src/shared/worker-daemon/typings/fs-adapter.interface.ts +0 -22
  447. package/src/shared/worker-daemon/typings/handler-context.interface.ts +0 -19
  448. package/src/shared/worker-daemon/typings/ipc-handler.interface.ts +0 -39
  449. package/src/shared/worker-daemon/typings/memory-ref.interface.ts +0 -13
  450. package/src/shared/worker-daemon/typings/wasm-fn.type.ts +0 -2
  451. package/src/shared/worker-daemon/typings/wasm-modules.interface.ts +0 -7
  452. package/src/shared/worker-daemon/typings/write-lock.interface.ts +0 -13
  453. package/src/wasm/fs-database/kbdb_fs_database.d.ts +0 -259
  454. package/src/wasm/fs-database/kbdb_fs_database.js +0 -515
  455. package/src/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
  456. package/src/wasm/fs-database/kbdb_fs_database_bg.wasm.d.ts +0 -35
  457. package/src/wasm/fs-database/package.json +0 -13
  458. package/src/wasm/kb-worker/kbdb_worker.d.ts +0 -650
  459. package/src/wasm/kb-worker/kbdb_worker.js +0 -1181
  460. package/src/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
  461. package/src/wasm/kb-worker/kbdb_worker_bg.wasm.d.ts +0 -77
  462. package/src/wasm/kb-worker/package.json +0 -13
  463. package/src/wasm/query-parser/kbdb_query_parser.d.ts +0 -195
  464. package/src/wasm/query-parser/kbdb_query_parser.js +0 -403
  465. package/src/wasm/query-parser/kbdb_query_parser_bg.wasm +0 -0
  466. package/src/wasm/query-parser/kbdb_query_parser_bg.wasm.d.ts +0 -25
  467. package/src/wasm/query-parser/package.json +0 -13
  468. package/src/worker.ts +0 -42
@@ -1,67 +0,0 @@
1
- import type { CliOptions } from '../typings/cli-options.interface.ts';
2
- import type { CommandResult } from '../typings/command-result.model.ts';
3
- import type { CliDeps } from '../typings/cli-deps.interface.ts';
4
- import type { DisconnectableClient } from '../typings/disconnectable-client.interface.ts';
5
- import { errorToMessage } from './error-to-message.function.ts';
6
- import { versionGate } from './version-gate.function.ts';
7
- import { dispatchCommand } from './dispatch-command.function.ts';
8
-
9
- /**
10
- * Handles data commands (search, learn, recall, etc.) by finding or
11
- * creating the database, running the version gate, and dispatching to
12
- * the appropriate command handler.
13
- *
14
- * When the database is not found in non-TTY mode, returns an error.
15
- * In TTY mode, prompts the user to create a new database.
16
- *
17
- * @param options - parsed CLI options with command and args
18
- * @param deps - injectable CLI dependencies
19
- * @returns a `CommandResult` from the dispatched command
20
- */
21
- export async function handleDataCommand(
22
- options: CliOptions,
23
- deps: CliDeps,
24
- ): Promise<CommandResult> {
25
- let dbDir = deps.findDb(options.dbPath);
26
-
27
- if (!dbDir) {
28
- const basePath = options.dbPath ?? process.cwd();
29
- if (!deps.isStdinTty()) {
30
- return {
31
- error:
32
- `error: no .kbdb database found at ${basePath}` +
33
- ' -- run `kbdb --init` to create one',
34
- exitCode: 1,
35
- };
36
- }
37
- const answer = await deps.promptUser(
38
- `No .kbdb database found. Create one in ${basePath}? [y/N] `,
39
- );
40
- if (answer.toLowerCase() !== 'y') {
41
- return { error: 'aborted: no database created', exitCode: 1 };
42
- }
43
- const initResult = deps.runInit(options);
44
- if (!initResult.ok) {
45
- return {
46
- error: `error: ${initResult.errorMessage ?? 'init failed'}`,
47
- exitCode: 1,
48
- };
49
- }
50
- dbDir = initResult.targetPath;
51
- }
52
-
53
- let client: DisconnectableClient;
54
- try {
55
- client = await deps.createWorkerClient({ contextPath: dbDir });
56
- } catch (err) {
57
- return { error: `error: ${errorToMessage(err)}`, exitCode: 1 };
58
- }
59
-
60
- try {
61
- const gateResult = await versionGate(client, dbDir);
62
- if (gateResult) return gateResult;
63
- return await dispatchCommand(client, options);
64
- } finally {
65
- client.disconnect();
66
- }
67
- }
@@ -1,56 +0,0 @@
1
- import type { CliOptions } from '../typings/cli-options.interface.ts';
2
- import type { CommandResult } from '../typings/command-result.model.ts';
3
- import type { CliDeps } from '../typings/cli-deps.interface.ts';
4
- import type { DisconnectableClient } from '../typings/disconnectable-client.interface.ts';
5
- import { errorToMessage } from './error-to-message.function.ts';
6
- import { versionGate } from './version-gate.function.ts';
7
-
8
- /**
9
- * Handles the `mcp` command sub-flow.
10
- *
11
- * Resolves the database directory, creates a worker client, runs
12
- * the version gate, and starts the MCP server. Disconnects the
13
- * worker client when finished.
14
- *
15
- * @param options - parsed CLI options (uses `dbPath` and env fallback)
16
- * @param deps - injectable CLI dependencies
17
- * @returns a `CommandResult` with `exitCode: 0` on success
18
- */
19
- export async function handleMcp(
20
- options: CliOptions,
21
- deps: CliDeps,
22
- ): Promise<CommandResult> {
23
- const rawDbPath = options.dbPath ?? process.env['KBDB_DIR'];
24
- if (!rawDbPath) {
25
- return {
26
- error: 'error: --db or KBDB_DIR required in MCP mode',
27
- exitCode: 1,
28
- };
29
- }
30
- const dbDir = deps.findDb(rawDbPath);
31
- if (!dbDir) {
32
- return {
33
- error: `error: no .kbdb database found at ${rawDbPath}`,
34
- exitCode: 1,
35
- };
36
- }
37
- let client: DisconnectableClient;
38
- try {
39
- client = await deps.createWorkerClient({ contextPath: dbDir });
40
- } catch (err) {
41
- return { error: `error: ${errorToMessage(err)}`, exitCode: 1 };
42
- }
43
- try {
44
- const gateResult = await versionGate(client, dbDir);
45
- if (gateResult) return gateResult;
46
- if (deps.startMcpServer) await deps.startMcpServer(dbDir);
47
- return { exitCode: 0 };
48
- } catch (err) {
49
- return {
50
- error: `error: mcp failed: ${errorToMessage(err)}`,
51
- exitCode: 1,
52
- };
53
- } finally {
54
- client.disconnect();
55
- }
56
- }
@@ -1,64 +0,0 @@
1
- import type { CliOptions } from '../typings/cli-options.interface.ts';
2
- import type { CommandResult } from '../typings/command-result.model.ts';
3
- import type { CliDeps } from '../typings/cli-deps.interface.ts';
4
- import type { DisconnectableClient } from '../typings/disconnectable-client.interface.ts';
5
- import { errorToMessage } from './error-to-message.function.ts';
6
-
7
- /**
8
- * Handles the `migrate` / `db-migrate` command sub-flow.
9
- *
10
- * Resolves the database directory, creates a worker client,
11
- * checks the version, and runs migrations when needed. Disconnects
12
- * the worker client when finished.
13
- *
14
- * @param options - parsed CLI options (uses `dbPath`)
15
- * @param deps - injectable CLI dependencies
16
- * @returns a `CommandResult` with migration output or an error
17
- */
18
- export async function handleMigrate(
19
- options: CliOptions,
20
- deps: CliDeps,
21
- ): Promise<CommandResult> {
22
- const dbDir = deps.findDb(options.dbPath);
23
- if (!dbDir) {
24
- return {
25
- error: `error: no .kbdb database found at ${options.dbPath ?? process.cwd()}`,
26
- exitCode: 1,
27
- };
28
- }
29
- let client: DisconnectableClient;
30
- try {
31
- client = await deps.createWorkerClient({ contextPath: dbDir });
32
- } catch (err) {
33
- return { error: `error: ${errorToMessage(err)}`, exitCode: 1 };
34
- }
35
- try {
36
- const versionStatus = await client.checkVersion(dbDir);
37
- if (versionStatus.status === 'too_new') {
38
- return {
39
- error:
40
- `error: database version` +
41
- ` ${versionStatus.currentVersion.toString()}` +
42
- ` is newer than kbdb version` +
43
- ` ${versionStatus.requiredVersion.toString()}` +
44
- ` -- upgrade kbdb`,
45
- exitCode: 1,
46
- };
47
- }
48
- if (versionStatus.status === 'needs_migration') {
49
- const migrateResult = await client.migrateDatabase(dbDir);
50
- return {
51
- output: JSON.stringify(migrateResult, null, 2),
52
- exitCode: 0,
53
- };
54
- }
55
- return { output: 'already up to date', exitCode: 0 };
56
- } catch (err) {
57
- return {
58
- error: `error: migrate failed: ${errorToMessage(err)}`,
59
- exitCode: 1,
60
- };
61
- } finally {
62
- client.disconnect();
63
- }
64
- }
@@ -1,29 +0,0 @@
1
- import type { PagedSearchDisplay } from '../typings/search-display.model.ts';
2
- import type { ContentClient } from './run-content.function.ts';
3
-
4
- /**
5
- * Hydrates each result's `preview` field with the actual section
6
- * content fetched from the client.
7
- *
8
- * Failures for individual results are caught and suppressed so that
9
- * one unavailable section does not prevent other previews from
10
- * being returned.
11
- *
12
- * @param client - content client used to fetch section text
13
- * @param paged - mutable search display records to hydrate
14
- */
15
- export async function hydrateSearchPreviews(
16
- client: ContentClient,
17
- paged: PagedSearchDisplay,
18
- ): Promise<void> {
19
- await Promise.all(
20
- paged.items.map(async (result) => {
21
- try {
22
- const contentResult = await client.content([result.kbid]);
23
- result.preview = contentResult.data;
24
- } catch {
25
- // Leave preview as empty string on failure.
26
- }
27
- }),
28
- );
29
- }
@@ -1,296 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
- import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
3
- import { join } from 'node:path';
4
-
5
- /**
6
- * RFC 4648 base32 alphabet (upper-case, no padding).
7
- * Used to encode the SHA-256-derived kbid bytes.
8
- */
9
- const BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
10
-
11
- /**
12
- * Encodes a byte array as a lowercase base32 string without padding.
13
- *
14
- * Mirrors the `data_encoding::BASE32_NOPAD` encoding used in the
15
- * Rust engine's `KbId::from_content`.
16
- *
17
- * @param bytes - raw bytes to encode
18
- * @returns lowercase base32-encoded string
19
- */
20
- function base32Encode(bytes: Uint8Array): string {
21
- let result = '';
22
- let bits = 0;
23
- let value = 0;
24
- for (const byte of bytes) {
25
- value = (value << 8) | byte;
26
- bits += 8;
27
- while (bits >= 5) {
28
- result += BASE32_ALPHABET[(value >>> (bits - 5)) & 0x1f];
29
- bits -= 5;
30
- }
31
- }
32
- if (bits > 0) {
33
- result += BASE32_ALPHABET[(value << (5 - bits)) & 0x1f];
34
- }
35
- return result.toLowerCase();
36
- }
37
-
38
- /**
39
- * Computes a 26-character kbid for a section using the same algorithm
40
- * as the Rust engine's `hash_section`.
41
- *
42
- * Algorithm:
43
- * 1. Build input: `"section <mime> <byteLen>\0<content>"`
44
- * 2. SHA-256 hash the input
45
- * 3. Take the first 16 bytes
46
- * 4. Base32 encode (RFC 4648, no padding), lowercased → 26 chars
47
- *
48
- * @param mimeType - MIME type string (e.g. `"text/markdown"`)
49
- * @param content - UTF-8 section content string
50
- * @returns 26-character lowercase base32 kbid
51
- */
52
- function computeSectionKbid(mimeType: string, content: string): string {
53
- const contentBytes = Buffer.from(content, 'utf-8');
54
- const header = `section ${mimeType} ${contentBytes.length.toString()}\0`;
55
- const headerBytes = Buffer.from(header, 'utf-8');
56
- const input = Buffer.concat([headerBytes, contentBytes]);
57
- const hash = createHash('sha256').update(input).digest();
58
- const truncated = new Uint8Array(hash.buffer, 0, 16);
59
- return base32Encode(truncated);
60
- }
61
-
62
- /**
63
- * Escapes backslashes and double-quotes in a string for TOML inline
64
- * string values.
65
- *
66
- * Mirrors the `escape_toml_str` function in the Rust engine.
67
- *
68
- * @param s - string to escape
69
- * @returns escaped string safe for use inside TOML double-quoted strings
70
- */
71
- function escapeToml(s: string): string {
72
- return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
73
- }
74
-
75
- /**
76
- * Serializes a skill section record to the `.section` file format.
77
- *
78
- * Format:
79
- * ```
80
- * kbid = "..."
81
- * section_type = "text/markdown"
82
- * type_name = "skill"
83
- * title = "..."
84
- * description = "..."
85
- * size = 0
86
- * token_count = 0
87
- * heading_token_count = 0
88
- * body_token_count = 0
89
- * code_token_count = 0
90
- * created_at = 0
91
- * checksum = "..."
92
- *
93
- * ---
94
- * <json content>
95
- * ```
96
- *
97
- * @param kbid - 26-char content-addressed identifier
98
- * @param title - skill name used as section title
99
- * @param description - human-readable description
100
- * @param content - serialised JSON skill definition
101
- * @returns file content string
102
- */
103
- function serializeSkillSection(
104
- kbid: string,
105
- title: string,
106
- description: string,
107
- content: string,
108
- ): string {
109
- const size = Buffer.byteLength(content, 'utf-8');
110
- const header = [
111
- `kbid = "${escapeToml(kbid)}"`,
112
- `section_type = "text/markdown"`,
113
- `type_name = "skill"`,
114
- `title = "${escapeToml(title)}"`,
115
- `description = "${escapeToml(description)}"`,
116
- `size = ${size.toString()}`,
117
- `token_count = 0`,
118
- `heading_token_count = 0`,
119
- `body_token_count = 0`,
120
- `code_token_count = 0`,
121
- `created_at = 0`,
122
- `checksum = "${escapeToml(kbid)}"`,
123
- '',
124
- ].join('\n');
125
- return `${header}\n---\n${content}`;
126
- }
127
-
128
- /** Descriptor for a skill to install. */
129
- interface SkillDescriptor {
130
- /** Unique skill name (kebab-case). */
131
- readonly name: string;
132
- /** Human-readable description. */
133
- readonly description: string;
134
- /** Template body text. */
135
- readonly body: string;
136
- }
137
-
138
- /**
139
- * Installs a single skill section file under `sectionsDir`.
140
- *
141
- * Creates the shard subdirectory if it does not exist. Skips
142
- * writing if the section file already exists, preserving any
143
- * user modifications.
144
- *
145
- * @param sectionsDir - absolute path to `.kbdb/sections`
146
- * @param skill - skill definition to serialise and store
147
- */
148
- function installSkill(
149
- sectionsDir: string,
150
- skill: SkillDescriptor,
151
- ): void {
152
- const content = JSON.stringify({
153
- name: skill.name,
154
- description: skill.description,
155
- arguments: [],
156
- body: skill.body,
157
- });
158
- const kbid = computeSectionKbid('text/markdown', content);
159
- const prefix = kbid.slice(0, 2);
160
- const shardDir = join(sectionsDir, prefix);
161
- const filePath = join(shardDir, `${kbid}.section`);
162
-
163
- if (existsSync(filePath)) {
164
- return;
165
- }
166
-
167
- mkdirSync(shardDir, { recursive: true });
168
-
169
- const fileContent = serializeSkillSection(
170
- kbid,
171
- skill.name,
172
- skill.description,
173
- content,
174
- );
175
- writeFileSync(filePath, fileContent, 'utf-8');
176
- }
177
-
178
- /**
179
- * Body text for the `query-guidance` default skill.
180
- *
181
- * Teaches AI agents how to effectively search the knowledge base
182
- * using lexical BM25F queries.
183
- */
184
- const QUERY_GUIDANCE_BODY =
185
- 'This knowledge base uses lexical search (stemmed BM25F), not' +
186
- ' semantic/vector search. Follow these guidelines for effective' +
187
- ' retrieval:\n\n' +
188
- '1. Issue MULTIPLE short keyword queries rather than one long' +
189
- ' natural-language question. Each query should target 2-3' +
190
- ' specific terms.\n\n' +
191
- '2. EXPAND SYNONYMS yourself. "login" will not match "sign-in"' +
192
- ' unless both terms appear in the content. Try alternative' +
193
- ' phrasings: search for "login", then "sign-in", then' +
194
- ' "authentication".\n\n' +
195
- '3. USE BOOLEAN AND PHRASE SYNTAX:\n' +
196
- ' - Exact phrases: "error handling"\n' +
197
- ' - Boolean AND: auth AND token\n' +
198
- ' - Boolean OR: cache OR redis\n' +
199
- ' - Exclusion: auth -oauth\n\n' +
200
- '4. LEAN ON HEADINGS. Headings carry 2x weight in ranking.' +
201
- ' Search for terms that are likely in section titles.\n\n' +
202
- '5. STEMMING IS AUTOMATIC. "connections" matches "connect",' +
203
- ' "running" matches "run". You do not need to try inflected' +
204
- ' forms.\n\n' +
205
- '6. USE RECALL AFTER SEARCH. After finding relevant sections' +
206
- ' with search, use recall with increasing depth (0-3) to' +
207
- ' progressively expand context: depth 0 = full content, depth' +
208
- ' 1 = parent documents + back-references, depth 2 = siblings' +
209
- ' + forward references, depth 3 = referenced sections.\n\n' +
210
- '7. CODE IDENTIFIERS ARE SPLIT. camelCase and snake_case names' +
211
- ' are decomposed: getUserById becomes searchable as "get",' +
212
- ' "user", "by", "id".\n\n' +
213
- '8. PAGINATION. Default limit is 20 results. Use offset for' +
214
- ' additional pages if total > limit.';
215
-
216
- /**
217
- * Body text for the `memory-protocol` default skill.
218
- *
219
- * Teaches AI agents when and what to store in the knowledge base
220
- * to keep it accurate and useful.
221
- */
222
- const MEMORY_PROTOCOL_BODY =
223
- 'Follow these guidelines to keep the knowledge base accurate' +
224
- ' and useful:\n\n' +
225
- '1. STORE DURABLE FACTS: decisions, architecture choices,' +
226
- ' configuration values, corrections to prior knowledge, API' +
227
- ' contracts, and resolved incidents. These are the facts that' +
228
- ' matter weeks later.\n\n' +
229
- '2. DO NOT STORE: transient conversation context, debugging' +
230
- ' output, ephemeral task state, raw log dumps, or information' +
231
- ' that changes every session. The brain should contain' +
232
- ' knowledge, not activity logs.\n\n' +
233
- '3. SEARCH BEFORE STORING. Always search the knowledge base' +
234
- ' before adding new content. If a section already covers the' +
235
- ' topic, use learn with --replace to update it rather than' +
236
- ' creating a duplicate.\n\n' +
237
- '4. USE --replace FOR CORRECTIONS. When a fact changes (e.g.,' +
238
- ' rate limit updated from 100 to 200 req/min), re-learn the' +
239
- ' corrected content with --replace so the old version is' +
240
- ' superseded. Without --replace, both the old and new versions' +
241
- ' coexist with equal ranking.\n\n' +
242
- '5. ATTACH TAGS for scoping. Use tags like project name,' +
243
- ' domain, or topic (e.g., --tags auth,api,v2) so queries can' +
244
- ' be filtered by scope later.\n\n' +
245
- '6. PREFER RECENT RESULTS. When search returns multiple' +
246
- ' sections covering the same topic, prefer the one with the' +
247
- ' most recent created_at timestamp -- it is more likely to' +
248
- ' reflect the current state.\n\n' +
249
- '7. USE RECALL AFTER SEARCH. After finding relevant sections,' +
250
- ' use recall with increasing depth (0-3) to expand context' +
251
- ' progressively before making decisions.\n\n' +
252
- '8. INCLUDE HEADINGS. Always provide a descriptive title when' +
253
- ' storing content. Headings carry 2x ranking weight -- omitting' +
254
- ' them significantly reduces searchability.';
255
-
256
- /**
257
- * Default skills installed on every fresh `kbdb db init`.
258
- *
259
- * These provide baseline guidance that improves AI agent
260
- * effectiveness out of the box. They are regular skill sections
261
- * and can be deleted by users.
262
- */
263
- const DEFAULT_SKILLS: readonly SkillDescriptor[] = [
264
- {
265
- name: 'query-guidance',
266
- description:
267
- 'How to effectively search this knowledge base.' +
268
- ' Read this before issuing search queries.',
269
- body: QUERY_GUIDANCE_BODY,
270
- },
271
- {
272
- name: 'memory-protocol',
273
- description:
274
- 'Guidelines for what to store in this knowledge base' +
275
- ' and when. Read this before using the learn tool.',
276
- body: MEMORY_PROTOCOL_BODY,
277
- },
278
- ];
279
-
280
- /**
281
- * Writes the two default skills (`query-guidance` and
282
- * `memory-protocol`) as section files directly into the `.kbdb`
283
- * directory scaffold.
284
- *
285
- * Called by `runInit` after the directory scaffold is created.
286
- * Does not require a running worker daemon. Skips any skill whose
287
- * section file already exists so user modifications are preserved.
288
- *
289
- * @param dbDir - absolute path to the `.kbdb` directory
290
- */
291
- export function installDefaultSkills(dbDir: string): void {
292
- const sectionsDir = join(dbDir, 'sections');
293
- for (const skill of DEFAULT_SKILLS) {
294
- installSkill(sectionsDir, skill);
295
- }
296
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * Returns `true` when stdin is an interactive terminal.
3
- *
4
- * @param stdin - readable stream to check (defaults to
5
- * `process.stdin`)
6
- */
7
- export function isStdinTty(
8
- stdin: NodeJS.ReadStream = process.stdin,
9
- ): boolean {
10
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- isTTY is undefined at runtime for non-TTY despite Node types saying boolean
11
- return stdin.isTTY ?? false;
12
- }
@@ -1,156 +0,0 @@
1
- import type { CliOptions } from '../typings/cli-options.interface.ts';
2
- import {
3
- DEFAULT_FORMAT,
4
- DEFAULT_LIMIT,
5
- DEFAULT_MODE,
6
- } from '../constants/defaults.constant.ts';
7
-
8
- /**
9
- * Parses a raw argument vector into a structured `CliOptions` object.
10
- *
11
- * Recognises `--help` / `-h` and `--version` / `-v` as early-exit
12
- * flags that set the command and return immediately. All other flags
13
- * consume the next token as their value. The first non-flag token
14
- * becomes the command; subsequent non-flag tokens become `args`.
15
- *
16
- * Compound commands are supported: when the first positional token is
17
- * a group name (`db`, `skill`, or `agent`), the next positional token
18
- * is joined with a hyphen to form the compound command
19
- * (e.g. `db init` → `'db-init'`).
20
- *
21
- * Context-aware `--help`: when `--help` or `-h` appears after a
22
- * command has been set, the existing command is moved to `args[0]`
23
- * and the command is set to `'help'`, enabling per-command help.
24
- *
25
- * Deprecated flags `--init` and `--migrate` emit a warning to stderr
26
- * before setting the corresponding command.
27
- *
28
- * @param argv - argument strings (typically `process.argv.slice(2)`)
29
- * @returns fully populated `CliOptions` with defaults applied
30
- */
31
- export function parseArgs(argv: string[]): CliOptions {
32
- const options: CliOptions = {
33
- command: '',
34
- format: DEFAULT_FORMAT,
35
- mode: DEFAULT_MODE,
36
- limit: DEFAULT_LIMIT,
37
- args: [],
38
- };
39
-
40
- let i = 0;
41
- while (i < argv.length) {
42
- const arg = argv[i];
43
- switch (arg) {
44
- case '--help':
45
- case '-h':
46
- if (options.command) {
47
- options.args.unshift(options.command);
48
- options.command = 'help';
49
- } else {
50
- options.command = 'help';
51
- }
52
- return options;
53
- case '--version':
54
- case '-v':
55
- options.command = 'version';
56
- return options;
57
- case '--init':
58
- // eslint-disable-next-line no-console
59
- console.error(
60
- 'warning: --init is deprecated,' + ' use "kbdb db init"',
61
- );
62
- options.command = 'init';
63
- break;
64
- case '--migrate':
65
- // eslint-disable-next-line no-console
66
- console.error(
67
- 'warning: --migrate is deprecated,' +
68
- ' use "kbdb db migrate"',
69
- );
70
- options.command = 'migrate';
71
- break;
72
- case '--db':
73
- options.dbPath = argv[++i];
74
- break;
75
- case '--format':
76
- case '-f':
77
- options.format = (argv[++i] ??
78
- DEFAULT_FORMAT) as CliOptions['format'];
79
- break;
80
- case '--mode':
81
- case '-m':
82
- options.mode = (argv[++i] ??
83
- DEFAULT_MODE) as CliOptions['mode'];
84
- break;
85
- case '--limit':
86
- case '-l':
87
- options.limit =
88
- parseInt(argv[++i] ?? '', 10) || DEFAULT_LIMIT;
89
- break;
90
- case '--offset':
91
- case '-o':
92
- options.offset = Math.max(
93
- 0,
94
- parseInt(argv[++i] ?? '', 10) || 0,
95
- );
96
- break;
97
- case '--algo':
98
- options.algo = argv[++i];
99
- break;
100
- case '--title':
101
- options.title = argv[++i];
102
- break;
103
- case '--description':
104
- options.description = argv[++i];
105
- break;
106
- case '--docid':
107
- options.docid = argv[++i];
108
- break;
109
- case '--name':
110
- options.name = argv[++i];
111
- break;
112
- case '--persona':
113
- options.persona = argv[++i];
114
- break;
115
- case '--body':
116
- options.body = argv[++i];
117
- break;
118
- case '--skills':
119
- options.skills = (argv[++i] ?? '').split(',');
120
- break;
121
- case '--tags':
122
- options.tags = (argv[++i] ?? '').split(',');
123
- break;
124
- case '--replace':
125
- options.replace = true;
126
- break;
127
- case '--depth':
128
- case '-d':
129
- options.depth = Math.min(
130
- 3,
131
- Math.max(0, parseInt(argv[++i] ?? '', 10) || 0),
132
- );
133
- break;
134
- case '--content':
135
- case '-c':
136
- options.content = true;
137
- break;
138
- default:
139
- if (!options.command) {
140
- options.command = arg;
141
- } else if (
142
- !options.args.length &&
143
- (options.command === 'db' ||
144
- options.command === 'skill' ||
145
- options.command === 'agent')
146
- ) {
147
- options.command = `${options.command}-${arg}`;
148
- } else {
149
- options.args.push(arg);
150
- }
151
- }
152
- i++;
153
- }
154
-
155
- return options;
156
- }