@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,5 +1,17 @@
1
1
  # How Search Works
2
2
 
3
+ When you search, kbdb finds the sections that best
4
+ match your query and ranks them by relevance. By
5
+ default it uses keyword search -- matching terms with
6
+ stemming, synonym expansion, and BM25F ranking. Use
7
+ `--algo hybrid` to combine keyword matching with
8
+ AI-powered similarity for broader recall. The rest
9
+ of this page explains how ranking
10
+ works under the hood -- you don't need to read it
11
+ to use kbdb.
12
+
13
+ ---
14
+
3
15
  kbdb uses field-weighted BM25F ranking to score search
4
16
  results by relevance. Sections are indexed across
5
17
  three fields -- heading, body, and code -- each with a
@@ -513,3 +525,47 @@ Neither standalone module calls the other directly.
513
525
  | `sections` | Individual matching sections with scores, snippets, and matched terms |
514
526
  | `documents` | Documents containing matches, with aggregated scores and per-section details |
515
527
  | `stats` | Match counts and top terms without content bodies |
528
+
529
+ ## Search Algorithms
530
+
531
+ kbdb supports three search algorithms, selected
532
+ with `--algo` (CLI) or the `algo` parameter (MCP).
533
+
534
+ ### Lexical
535
+
536
+ Keyword matching with stemming and synonym
537
+ expansion, scored by BM25F as described above.
538
+ Fast, works offline, and gives consistent results.
539
+
540
+ ### Vector
541
+
542
+ Embedding-based similarity search. Each section's
543
+ content is converted into a numeric vector (an
544
+ "embedding") by an AI model. Search finds sections
545
+ whose vectors are closest to the query's vector
546
+ using cosine similarity.
547
+
548
+ Vector search catches matches that keyword search
549
+ misses -- for example, searching "database
550
+ rationale" finds a section about "we chose Postgres
551
+ because of JSONB" even though none of the words
552
+ overlap.
553
+
554
+ Requires an embedding provider to be configured.
555
+ Without one, vector mode returns an error.
556
+
557
+ ### Hybrid
558
+
559
+ Runs both lexical and vector searches in parallel,
560
+ then merges the two ranked lists using Reciprocal
561
+ Rank Fusion (RRF). This combines the precision of
562
+ keyword matching with the associative recall of
563
+ embeddings. Use `--algo hybrid` to enable.
564
+
565
+ RRF works by converting each result's rank position
566
+ into a score (`1 / (k + rank)` with k=60), then
567
+ summing scores across both lists. Results that rank
568
+ well in both lists get the highest combined scores.
569
+
570
+ Hybrid mode requires an embedding provider. Without
571
+ one, it returns an error.
package/docs/goals/cli.md CHANGED
@@ -61,6 +61,8 @@ kbdb gc [options]
61
61
  kbdb rebuild [options]
62
62
  kbdb status [options]
63
63
  kbdb export [options] [<path>]
64
+ kbdb worker stop [options]
65
+ kbdb worker restart [options]
64
66
  kbdb db init [options]
65
67
  kbdb db migrate [options]
66
68
  kbdb skill learn [options] --name <n> --body <file|->
@@ -104,10 +106,9 @@ with the AI agent host over stdio using JSON-RPC 2.0,
104
106
  and delegates all operations to the worker daemon via
105
107
  the same worker client module.
106
108
 
107
- MCP mode requires `--db <path>` or the `KBDB_DIR`
108
- environment variable. It does not fall back to the
109
- current working directory because the server's cwd is
110
- determined by the host application, not the user.
109
+ MCP mode accepts `--db <path>` or the `KBDB_DB_DIR`
110
+ environment variable. When neither is set, it falls
111
+ back to the current working directory.
111
112
 
112
113
  See [MCP](mcp.md) for the full MCP mode
113
114
  specification.
@@ -116,11 +117,14 @@ specification.
116
117
 
117
118
  These options apply to all commands.
118
119
 
119
- | Option | Short | Description |
120
- |---------------|-------|--------------------------|
121
- | `--help` | `-h` | Print help text and exit |
122
- | `--version` | `-v` | Print version and exit |
123
- | `--db <path>` | | Database directory path |
120
+ | Option | Short | Description |
121
+ |--------------------|-------|--------------------------|
122
+ | `--help` | `-h` | Print help text and exit |
123
+ | `--version` | `-v` | Print version and exit |
124
+ | `--db <path>` | | Database directory path (optional) |
125
+ | `--format <fmt>` | `-f` | Output format (json default; text when stdout is a TTY) |
126
+ | `--timeout-ms <ms>`| | Request timeout in ms |
127
+ | `--retry <n>` | | Max retries on timeout |
124
128
 
125
129
  ### `--help`, `-h`
126
130
 
@@ -156,12 +160,13 @@ kbdb search "query" --db /path/to/project
156
160
  ```
157
161
 
158
162
  When omitted:
159
- - **CLI mode**: defaults to the current working
160
- directory (`process.cwd()`).
161
- - **MCP mode**: falls back to the `KBDB_DIR`
162
- environment variable. If neither `--db` nor
163
- `KBDB_DIR` is set, the MCP server prints an error
164
- and exits non-zero.
163
+ - **CLI mode**: falls back to the `KBDB_DB_DIR`
164
+ environment variable when `--db` is omitted,
165
+ then to the current working directory
166
+ (`process.cwd()`).
167
+ - **MCP mode**: falls back to the `KBDB_DB_DIR`
168
+ environment variable, then to the current
169
+ working directory.
165
170
 
166
171
  ## Commands
167
172
 
@@ -300,7 +305,10 @@ Remove knowledge base sections by their kb-id.
300
305
 
301
306
  **Arguments:**
302
307
  - `<kbid>...` -- one or more 26-character kb-id
303
- strings. Each is processed independently.
308
+ strings (or unique prefixes -- kbdb resolves
309
+ short prefixes to full identifiers, similar to
310
+ git short hashes). Each is processed
311
+ independently.
304
312
 
305
313
  **Behaviour:**
306
314
  - The engine removes the referenced content and
@@ -360,6 +368,7 @@ Search the knowledge base by keywords or phrases.
360
368
  | `--offset <n>` | `-o` | `0` | Result offset |
361
369
  | `--format <fmt>` | `-f` | `json` | Output format |
362
370
  | `--content` | `-c` | | Hydrate previews |
371
+ | `--algo <algo>` | | `lexical` | Search algorithm |
363
372
  | `--db <path>` | | cwd | Database directory |
364
373
 
365
374
  #### `--mode`, `-m`
@@ -406,8 +415,8 @@ Controls the output format printed to stdout.
406
415
 
407
416
  | Format | Description |
408
417
  |--------|-----------------------------------------|
409
- | `json` | Pretty-printed JSON array (default). |
410
- | `text` | Numbered human-readable list with scores and matched terms. |
418
+ | `json` | Pretty-printed JSON array (default when stdout is piped). |
419
+ | `text` | Numbered human-readable list with scores and matched terms (default when stdout is a TTY). |
411
420
  | `mcp` | JSON envelope for MCP protocol consumers. |
412
421
 
413
422
  ```
@@ -553,7 +562,10 @@ more knowledge base identifiers and output it to
553
562
  stdout.
554
563
 
555
564
  **Arguments:**
556
- - `<id>...` -- one or more kbid or docid identifiers.
565
+ - `<id>...` -- one or more kbid or docid identifiers
566
+ (or unique prefixes -- kbdb resolves short
567
+ prefixes to full identifiers, similar to git
568
+ short hashes).
557
569
 
558
570
  **Output:**
559
571
  - **stdout**: JSON envelope containing the composed
@@ -600,7 +612,9 @@ expansion depths.
600
612
 
601
613
  **Arguments:**
602
614
  - `<kbid>...` -- one or more 26-character kb-id
603
- strings.
615
+ strings (or unique prefixes -- kbdb resolves
616
+ short prefixes to full identifiers, similar to
617
+ git short hashes).
604
618
 
605
619
  **Options:**
606
620
 
@@ -722,9 +736,9 @@ Start a long-lived MCP server on stdio.
722
736
  **Behaviour:**
723
737
  - Communicates with the AI agent host over stdio
724
738
  using JSON-RPC 2.0.
725
- - Requires `--db <path>` or the `KBDB_DIR` environment
726
- variable. Does NOT fall back to the current working
727
- directory.
739
+ - Accepts `--db <path>` or the `KBDB_DB_DIR`
740
+ environment variable. Falls back to the current
741
+ working directory when neither is set.
728
742
  - Runs a version gate before starting: exits with an
729
743
  error if the database needs migration or is too new.
730
744
  - The MCP server does not prompt, does not print
@@ -734,8 +748,8 @@ Start a long-lived MCP server on stdio.
734
748
  a shutdown signal.
735
749
 
736
750
  **Environment variables:**
737
- - `KBDB_DIR` -- fallback database directory path when
738
- `--db` is not specified.
751
+ - `KBDB_DB_DIR` -- fallback database directory path
752
+ when `--db` is not specified.
739
753
 
740
754
  **Exit code:** `0` on clean shutdown, `1` on error.
741
755
 
@@ -943,6 +957,43 @@ src/cli.ts parseArgs()
943
957
  -> stdout
944
958
  ```
945
959
 
960
+ ### `kbdb worker` -- daemon lifecycle
961
+
962
+ The `worker` command group manages the background
963
+ worker daemon process.
964
+
965
+ #### `worker stop` -- stop the daemon
966
+
967
+ ```
968
+ kbdb worker stop [options]
969
+ ```
970
+
971
+ Stop the running worker daemon for the current
972
+ database. If no daemon is running, prints a message
973
+ and exits successfully.
974
+
975
+ **Exit code:** `0` on success, `1` on error.
976
+
977
+ **Delegation chain:**
978
+ ```
979
+ src/cli.ts parseArgs()
980
+ -> dispatchCommand(client, options)
981
+ -> runWorkerStop(client, options)
982
+ -> sends shutdown signal via IPC
983
+ ```
984
+
985
+ #### `worker restart` -- restart the daemon
986
+
987
+ ```
988
+ kbdb worker restart [options]
989
+ ```
990
+
991
+ Stop and restart the worker daemon. Equivalent to
992
+ `worker stop` followed by the next command
993
+ auto-spawning a new daemon.
994
+
995
+ **Exit code:** `0` on success, `1` on error.
996
+
946
997
  ### `kbdb db` -- database management
947
998
 
948
999
  The `db` command group manages the `.kbdb` database
@@ -1721,18 +1772,21 @@ processes the raw argument vector
1721
1772
  deprecation warning to stderr, and continues
1722
1773
  parsing.
1723
1774
  4. When the first positional token is `db`, `skill`,
1724
- or `agent`, the parser consumes the next positional
1775
+ `agent`, or `worker`, the parser consumes the next positional
1725
1776
  token as the subcommand and combines them into a
1726
1777
  hyphenated command string: `db init` →
1727
1778
  `'db-init'`, `skill learn` → `'skill-learn'`,
1728
- `agent create` → `'agent-create'`, etc.
1779
+ `agent create` → `'agent-create'`,
1780
+ `worker stop` → `'worker-stop'`, etc.
1729
1781
  5. All other flags (`--db`, `--format`, `--mode`,
1730
1782
  `--limit`, `--offset`, `--title`, `--description`,
1731
1783
  `--docid`, `--name`, `--persona`, `--body`,
1732
- `--skills`, `--depth` / `-d`, `--tags`) consume
1733
- the next token as their value. `--depth` is parsed
1734
- as a number and clamped to the range 0--3. `--tags`
1735
- splits its value on commas into a `string[]`.
1784
+ `--skills`, `--depth` / `-d`, `--tags`,
1785
+ `--timeout-ms`, `--retry`) consume the next token
1786
+ as their value. `--depth` is parsed as a number
1787
+ and clamped to the range 0--3. `--tags` splits its
1788
+ value on commas into a `string[]`. `--timeout-ms`
1789
+ and `--retry` are parsed as numbers.
1736
1790
  6. `--content` / `-c` and `--replace` are boolean
1737
1791
  flags; they set their respective option to `true`
1738
1792
  without consuming the next token.
@@ -1802,6 +1856,10 @@ interface CliOptions {
1802
1856
  tags?: string[];
1803
1857
  /** Enable supersession by source key (learn). */
1804
1858
  replace?: boolean;
1859
+ /** Request timeout in ms. */
1860
+ timeoutMs?: number;
1861
+ /** Max retry count on timeout. */
1862
+ retry?: number;
1805
1863
  /** Positional arguments following the sub-command. */
1806
1864
  args: string[];
1807
1865
  }
@@ -1883,6 +1941,10 @@ Agents:
1883
1941
  agent get Retrieve an agent by docid
1884
1942
  agent delete Remove an agent
1885
1943
 
1944
+ Worker:
1945
+ worker stop Stop the background daemon
1946
+ worker restart Restart the background daemon
1947
+
1886
1948
  Server:
1887
1949
  mcp Start MCP server mode (stdio)
1888
1950
 
@@ -2114,6 +2176,8 @@ Routing table:
2114
2176
  | `agent-create` | `runAgentCreate` | yes |
2115
2177
  | `agent-list` | `runAgentList` | yes |
2116
2178
  | `agent-get` | `runAgentGet` | yes |
2179
+ | `worker-stop` | `runWorkerStop` | yes |
2180
+ | `worker-restart` | `runWorkerRestart` | yes |
2117
2181
  | `agent-delete` | `runAgentDelete` | yes |
2118
2182
 
2119
2183
  Unknown commands return exit code 1 with an "unknown
@@ -2504,9 +2568,21 @@ kbdb search "machine learning" --limit 5
2504
2568
 
2505
2569
  ## Environment Variables
2506
2570
 
2507
- | Variable | Used by | Description |
2508
- |------------|----------|----------------------------|
2509
- | `KBDB_DIR` | MCP mode | Fallback database directory when `--db` is not specified. Not used in CLI mode. |
2571
+ | Variable | Used by | Description |
2572
+ |-----------------------|-----------|-------------------------|
2573
+ | `KBDB_DB_DIR` | CLI + MCP | Fallback database directory when `--db` is not specified |
2574
+ | `KBDB_DAEMON_TIMEOUT` | CLI + MCP | Request timeout fallback (ms) |
2575
+ | `KBDB_RETRY` | CLI + MCP | Retry count fallback |
2576
+
2577
+ ### Resolution Priority
2578
+
2579
+ When multiple sources set the same option, the
2580
+ most specific source wins:
2581
+
2582
+ - **timeout**: `--timeout-ms` >
2583
+ `KBDB_DAEMON_TIMEOUT` > `30000`
2584
+ - **retry**: `--retry` > `KBDB_RETRY` > `5`
2585
+ - **db path**: `--db` > `KBDB_DB_DIR` > cwd
2510
2586
 
2511
2587
  ## Exit Codes
2512
2588
 
package/docs/goals/mcp.md CHANGED
@@ -27,25 +27,28 @@ identically.
27
27
  ## Invocation
28
28
 
29
29
  ```
30
- kbdb mcp [--db <path>]
30
+ kbdb mcp [--db <path>] [--timeout-ms <ms>]
31
+ [--retry <n>]
31
32
  ```
32
33
 
33
- The `--db` flag specifies the absolute path to the
34
- `.kbdb` database directory. If omitted, the server
35
- reads the `KBDB_DIR` environment variable. One of the
36
- two must be provided -- the MCP server does not fall
37
- back to the current working directory.
34
+ All flags are optional. `--db` specifies the path
35
+ to the `.kbdb` database directory. If omitted, the
36
+ server reads the `KBDB_DB_DIR` environment variable,
37
+ then falls back to the current working directory.
38
38
 
39
39
  Resolution order:
40
40
 
41
41
  1. `--db <path>` command-line flag.
42
- 2. `KBDB_DIR` environment variable.
43
- 3. Error: no database directory specified.
42
+ 2. `KBDB_DB_DIR` environment variable.
43
+ 3. Current working directory.
44
44
 
45
- The MCP server does not fall back to the current
46
- working directory because the server's working
47
- directory is determined by the host application, not
48
- the user.
45
+ ### Environment Variables
46
+
47
+ | Variable | Description |
48
+ |-----------------------|-------------------------|
49
+ | `KBDB_DB_DIR` | Fallback database directory when `--db` is not specified |
50
+ | `KBDB_DAEMON_TIMEOUT` | Request timeout fallback (ms); default 30 000 |
51
+ | `KBDB_RETRY` | Retry count fallback; default 5 |
49
52
 
50
53
  See [CLI -- Run Modes](cli.md#run-modes) for how
51
54
  the `kbdb` executable dispatches to MCP mode.
@@ -127,7 +130,7 @@ Add to `.claude/settings.json` or project settings:
127
130
 
128
131
  ### Environment Variable
129
132
 
130
- The `--db` flag can be replaced by `KBDB_DIR`:
133
+ The `--db` flag can be replaced by `KBDB_DB_DIR`:
131
134
 
132
135
  ```json
133
136
  {
@@ -136,7 +139,7 @@ The `--db` flag can be replaced by `KBDB_DIR`:
136
139
  "command": "npx",
137
140
  "args": ["@dikolab/kbdb", "mcp"],
138
141
  "env": {
139
- "KBDB_DIR": "/path/to/.kbdb"
142
+ "KBDB_DB_DIR": "/path/to/.kbdb"
140
143
  }
141
144
  }
142
145
  }
@@ -1125,7 +1128,7 @@ interface McpToolAnnotations {
1125
1128
  }
1126
1129
  ```
1127
1130
 
1128
- Annotations for all 19 kbdb tools:
1131
+ Annotations for all 20 kbdb tools:
1129
1132
 
1130
1133
  | Tool | title | readOnly | destructive | idempotent | openWorld |
1131
1134
  |----------------|-------------------|----------|-------------|------------|-----------|
@@ -1148,6 +1151,7 @@ Annotations for all 19 kbdb tools:
1148
1151
  | `agent-list` | List Agents | true | false | true | false |
1149
1152
  | `agent-get` | Get Agent | true | false | true | false |
1150
1153
  | `agent-delete` | Delete Agent | false | true | true | false |
1154
+ | `auto-capture-review` | Review Captures | false | false | false | false |
1151
1155
 
1152
1156
  ## Completions
1153
1157
 
@@ -1361,7 +1365,7 @@ The difference is the interface:
1361
1365
  | Interface | Command-line arguments | MCP protocol (stdio) |
1362
1366
  | Consumer | Human / shell script | AI agent |
1363
1367
  | Output | stdout (JSON/text/MCP) | MCP tool result format |
1364
- | DB path | CWD or `--db` flag | `--db` flag or `KBDB_DIR` env |
1368
+ | DB path | CWD or `--db` flag | `--db` flag or `KBDB_DB_DIR` env |
1365
1369
 
1366
1370
  See [CLI](cli.md) for CLI mode details,
1367
1371
  [Worker Client](worker-client.md) for the shared
@@ -1513,9 +1517,8 @@ returns `-32601` if they are called.
1513
1517
  - The server works with both Deno and Node.js
1514
1518
  runtimes, consistent with the project's
1515
1519
  dual-runtime requirement.
1516
- - The database path must be explicitly configured
1517
- via `--db` or `KBDB_DIR`. No working directory
1518
- fallback.
1520
+ - The database path is resolved from `--db`,
1521
+ `KBDB_DB_DIR`, or the current working directory.
1519
1522
  - The MCP server does not perform keyword extraction,
1520
1523
  indexing, ranking, or database I/O itself. All
1521
1524
  processing is delegated to the worker daemon via
@@ -193,6 +193,14 @@ hardcoded. Future versions may allow user-defined
193
193
  synonym maps via a `synonyms.toml` configuration file
194
194
  in the `.kbdb` directory.
195
195
 
196
+ **Implementation status:** Synonym expansion is
197
+ implemented in the Rust pipeline
198
+ (`query-parser/src/pipeline/synonyms.rs`). The
199
+ built-in map covers common technical synonyms.
200
+ The `query-guidance` default skill complements this
201
+ by instructing AI agents to rephrase queries with
202
+ alternative terms before searching.
203
+
196
204
  ## Query Parsing
197
205
 
198
206
  Search queries are parsed into a structured query plan
@@ -270,7 +270,9 @@ The spawning sequence:
270
270
  daemon started.
271
271
  4. **On PID file found (success):** worker client
272
272
  closes the stderr pipe, detaches the child, unrefs
273
- it, and connects to the IPC socket.
273
+ it, and connects to the IPC socket. Because the
274
+ daemon writes the PID file only after the socket
275
+ is listening, the client can connect immediately.
274
276
  5. **On timeout or child exit (failure):** worker
275
277
  client reads all buffered stderr from the daemon,
276
278
  includes it in the thrown error (see Startup
@@ -337,6 +339,65 @@ error reason even though the daemon runs as a separate
337
339
  detached process. The daemon's stderr is the single
338
340
  source of truth for startup failure diagnostics.
339
341
 
342
+ ## Connection Retry
343
+
344
+ When the worker client calls `connect()`, transient
345
+ errors (`ENOENT` -- socket not yet created, or
346
+ `ECONNREFUSED` -- server not yet accepting) are
347
+ retried with exponential backoff:
348
+
349
+ - **Max retries**: 5
350
+ - **Initial delay**: 50 ms
351
+ - **Backoff**: doubles each attempt (50, 100, 200,
352
+ 400, 800 ms = ~1.55 s worst case)
353
+ - **Non-transient errors** (`EACCES`, `EINVAL`, etc.)
354
+ fail immediately without retry.
355
+
356
+ This covers the narrow window where the PID file
357
+ exists but the socket has not yet finished binding
358
+ (e.g. under heavy load or slow I/O).
359
+
360
+ ## Post-Connect Failure Handling
361
+
362
+ After a successful `connect()`, if the daemon crashes
363
+ or the IPC socket dies:
364
+
365
+ 1. All pending RPC calls (in `this.pending`) are
366
+ rejected with a descriptive error.
367
+ 2. The client marks itself as disconnected
368
+ (`this.socket = null`).
369
+ 3. The socket is destroyed.
370
+
371
+ The `isConnected` getter exposes the connection
372
+ state so callers (and the cached client factory) can
373
+ check before reusing a client.
374
+
375
+ ## Cached Client Factory
376
+
377
+ `getOrCreateClient(options?)` returns a cached
378
+ `WorkerClient` for the given context path, or creates
379
+ and caches a new one if the cached client is
380
+ disconnected or absent.
381
+
382
+ ```ts
383
+ import { getOrCreateClient } from '@dikolab/kbdb';
384
+
385
+ const client = await getOrCreateClient({
386
+ dbPath: '/path/to/project',
387
+ });
388
+ ```
389
+
390
+ Intended for library consumers and the MCP server.
391
+ CLI one-shots should use `createWorkerClient()`
392
+ directly (each is a separate process anyway).
393
+
394
+ ## Socket Keepalive
395
+
396
+ Both the client and server enable `SO_KEEPALIVE`
397
+ with a 30-second interval. This ensures both ends
398
+ detect a dead peer within ~30 seconds, even if no
399
+ application-level traffic is flowing.
400
+
340
401
  ## `createWorkerClient(options?)`
341
402
 
342
403
  Factory function. Returns a connected `WorkerClient`
@@ -163,18 +163,21 @@ daemon process performs the following startup sequence:
163
163
  to startup. The health status (`integrity_ok`,
164
164
  `integrity_errors`) is included in subsequent
165
165
  `status` responses.
166
- 7. Writes its PID to `kbdb-{ctx}.pid` in the OS
167
- temporary directory.
166
+ 7. Removes the stale IPC socket if present.
168
167
  8. Creates the IPC socket (`kbdb-{ctx}.sock` on Unix,
169
- named pipe on Windows).
170
- 9. Begins listening for connections.
168
+ named pipe on Windows) and begins listening
169
+ (async, with backlog 256).
170
+ 9. Writes its PID to `kbdb-{ctx}.pid` in the OS
171
+ temporary directory.
171
172
 
172
- The daemon only writes its PID file and creates the
173
- IPC socket after all preconditions pass and the WASM
174
- module is loaded. If the daemon exits before step 7,
175
- the worker client's PID-file poll times out, and the
176
- worker client reads the crash log (or the daemon's
177
- stderr) to report the failure reason.
173
+ The daemon writes its PID file only after the IPC
174
+ socket is bound and listening. This guarantees the
175
+ worker client's PID-file poll succeeds only when
176
+ the socket is ready to accept connections. If the
177
+ daemon exits before step 9, the worker client's
178
+ PID-file poll times out, and the worker client
179
+ reads the crash log (or the daemon's stderr) to
180
+ report the failure reason.
178
181
 
179
182
  ### Startup Preconditions
180
183
 
@@ -273,6 +276,14 @@ a client connects, disconnects, or sends a request.
273
276
  The daemon stays alive as long as at least one client
274
277
  is connected, regardless of the idle timer.
275
278
 
279
+ `SO_KEEPALIVE` (30-second interval) provides a
280
+ secondary mechanism for detecting dead connections
281
+ beyond the counter-based idle timer. If a client
282
+ process crashes without closing the socket, the OS
283
+ will detect the dead peer within ~30 seconds and
284
+ close the connection, allowing the daemon to
285
+ decrement its counter and eventually idle-shutdown.
286
+
276
287
  ## Graceful Shutdown
277
288
 
278
289
  On shutdown (idle timeout or OS signal SIGTERM/SIGINT),
@@ -447,6 +458,26 @@ Configuration is set once when the daemon spawns and
447
458
  does not change until the daemon shuts down and a new
448
459
  one is spawned.
449
460
 
461
+ ### Client vs Daemon Timeouts
462
+
463
+ The `KBDB_DAEMON_TIMEOUT` environment variable (or
464
+ `--timeout-ms` CLI flag) controls the **client-side
465
+ request timeout** -- how long a CLI or MCP client
466
+ waits for a response from the daemon before giving
467
+ up and optionally retrying.
468
+
469
+ The `timeout_ms` setting in `worker.toml` controls
470
+ the **daemon-side idle timeout** -- how long the
471
+ daemon stays alive after all client connections have
472
+ closed.
473
+
474
+ These are independent. A long-running query may
475
+ exceed the client request timeout while the daemon
476
+ continues processing. Conversely, a short idle
477
+ timeout shuts the daemon down quickly between
478
+ invocations but has no effect on in-flight
479
+ requests.
480
+
450
481
  ## IPC Transport
451
482
 
452
483
  The daemon listens on a local IPC channel:
@@ -471,6 +502,17 @@ No third-party IPC library is required. The daemon
471
502
  creates the IPC socket at startup and removes it on
472
503
  shutdown.
473
504
 
505
+ ### Socket Options
506
+
507
+ - **Backlog**: `256`. Handles connection bursts from
508
+ concurrent CLI invocations and benchmarks without
509
+ dropping connections.
510
+ - **SO_KEEPALIVE**: Enabled on every accepted
511
+ connection with a 30-second interval. Detects dead
512
+ clients without relying solely on the idle timer.
513
+ Both the server and client enable keepalive (see
514
+ [Worker Client](worker-client.md)).
515
+
474
516
  ## IPC Protocol
475
517
 
476
518
  Communication uses **JSON-RPC 2.0** over the IPC
@@ -73,7 +73,7 @@ src/cli.ts
73
73
  src/cli.ts
74
74
 
75
75
  ├─ argv[0] === 'mcp'
76
- ├─ resolve --db flag or KBDB_DIR env
76
+ ├─ resolve --db flag or KBDB_DB_DIR env or cwd
77
77
  ├─ client = await createWorkerClient({ targetDir })
78
78
  ├─ server = createMcpServer(client)
79
79
  ├─ server.listen() ← stdio, blocks until closed