@dikolab/kbdb 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -43
- package/dist/bench/constants/corpus-defaults.constant.d.ts +3 -0
- package/dist/bench/functions/format-report.function.d.ts +11 -0
- package/dist/bench/functions/generate-corpus.function.d.ts +12 -0
- package/dist/bench/functions/measure-operation.function.d.ts +14 -0
- package/dist/bench/functions/seeded-rng.function.d.ts +11 -0
- package/dist/bench/functions/zipf-word.function.d.ts +13 -0
- package/dist/bench/index.d.ts +10 -0
- package/dist/bench/typings/bench-result.interface.d.ts +11 -0
- package/dist/bench/typings/bench-suite-result.interface.d.ts +10 -0
- package/dist/bench/typings/corpus-config.interface.d.ts +11 -0
- package/dist/bench/typings/corpus-section.interface.d.ts +9 -0
- package/dist/cli.cjs +63 -9
- package/dist/cli.cjs.map +2 -2
- package/dist/cli.mjs +63 -9
- package/dist/cli.mjs.map +2 -2
- package/dist/src/shared/auto-capture/classes/auto-capture-controller.class.d.ts +33 -0
- package/dist/src/shared/auto-capture/constants/auto-capture-defaults.constant.d.ts +8 -0
- package/dist/src/shared/auto-capture/functions/build-capture-prompt.function.d.ts +11 -0
- package/dist/src/shared/auto-capture/functions/evaluate-trigger.function.d.ts +12 -0
- package/dist/src/shared/auto-capture/index.d.ts +7 -0
- package/dist/src/shared/auto-capture/typings/auto-capture-config.interface.d.ts +13 -0
- package/dist/src/shared/auto-capture/typings/auto-capture-state.interface.d.ts +13 -0
- package/dist/src/shared/auto-capture/typings/auto-capture-trigger.interface.d.ts +7 -0
- package/dist/src/shared/cli/constants/global-help.constant.d.ts +8 -0
- package/dist/src/shared/cli/constants/leaf-help.constant.d.ts +7 -0
- package/dist/src/shared/cli/constants/memory-protocol-body.constant.d.ts +7 -0
- package/dist/src/shared/cli/constants/query-guidance-body.constant.d.ts +7 -0
- package/dist/src/shared/cli/constants/subcommand-help.constant.d.ts +8 -0
- package/dist/src/shared/cli/functions/collect-files.function.d.ts +13 -0
- package/dist/src/shared/cli/functions/compute-section-kbid.function.d.ts +15 -0
- package/dist/src/shared/cli/functions/format-mcp-output.function.d.ts +9 -0
- package/dist/src/shared/cli/functions/format-text-output.function.d.ts +9 -0
- package/dist/src/shared/cli/functions/generate-group-help.function.d.ts +11 -0
- package/dist/src/shared/cli/functions/handle-data-command.function.d.ts +16 -0
- package/dist/src/shared/cli/functions/handle-mcp.function.d.ts +15 -0
- package/dist/src/shared/cli/functions/handle-migrate.function.d.ts +15 -0
- package/dist/src/shared/cli/functions/hydrate-search-previews.function.d.ts +14 -0
- package/dist/src/shared/cli/functions/resolve-skill-names.function.d.ts +16 -0
- package/dist/src/shared/cli/functions/run-search.function.d.ts +1 -0
- package/dist/src/shared/cli/functions/version-gate.function.d.ts +15 -0
- package/dist/src/shared/cli/functions/wrap-command.function.d.ts +15 -0
- package/dist/src/shared/cli/typings/agent-create-client.interface.d.ts +42 -0
- package/dist/src/shared/cli/typings/agent-get-client.interface.d.ts +36 -0
- package/dist/src/shared/cli/typings/check-client.interface.d.ts +58 -0
- package/dist/src/shared/cli/typings/cli-deps.interface.d.ts +48 -0
- package/dist/src/shared/cli/typings/cli-options.interface.d.ts +2 -0
- package/dist/src/shared/cli/typings/disconnectable-client.interface.d.ts +26 -0
- package/dist/src/shared/cli/typings/dispatch-client.type.d.ts +27 -0
- package/dist/src/shared/cli/typings/learn-client.interface.d.ts +52 -0
- package/dist/src/shared/cli/typings/learn-io.interface.d.ts +5 -0
- package/dist/src/shared/cli/typings/search-client.interface.d.ts +71 -0
- package/dist/src/shared/embedding/classes/null-embedding-provider.class.d.ts +20 -0
- package/dist/src/shared/embedding/constants/near-duplicate-thresholds.constant.d.ts +15 -0
- package/dist/src/shared/embedding/functions/build-vector-index.function.d.ts +14 -0
- package/dist/src/shared/embedding/functions/cosine-similarity.function.d.ts +10 -0
- package/dist/src/shared/embedding/functions/detect-near-duplicates.function.d.ts +18 -0
- package/dist/src/shared/embedding/functions/jaccard-coefficient.function.d.ts +9 -0
- package/dist/src/shared/embedding/functions/read-vector-index-meta.function.d.ts +10 -0
- package/dist/src/shared/embedding/functions/rrf-fuse.function.d.ts +14 -0
- package/dist/src/shared/embedding/functions/search-vectors.function.d.ts +14 -0
- package/dist/src/shared/embedding/index.d.ts +16 -0
- package/dist/src/shared/embedding/typings/embedding-config.interface.d.ts +20 -0
- package/dist/src/shared/embedding/typings/embedding-provider.interface.d.ts +23 -0
- package/dist/src/shared/embedding/typings/near-duplicate-candidate.model.d.ts +23 -0
- package/dist/src/shared/embedding/typings/near-duplicate-result.model.d.ts +24 -0
- package/dist/src/shared/embedding/typings/vector-index-entry.model.d.ts +12 -0
- package/dist/src/shared/embedding/typings/vector-index-meta.model.d.ts +11 -0
- package/dist/src/shared/embedding/typings/vector-search-result.model.d.ts +7 -0
- package/dist/src/shared/mcp/constants/tool-agent-create.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-agent-delete.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-agent-get.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-agent-list.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-auto-capture-review.constant.d.ts +8 -0
- package/dist/src/shared/mcp/constants/tool-check.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-content.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-export.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-gc.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-learn.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-rebuild.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-recall.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-retrieve.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-search.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-skill-delete.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-skill-get.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-skill-learn.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-skill-list.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-status.constant.d.ts +3 -0
- package/dist/src/shared/mcp/constants/tool-unlearn.constant.d.ts +3 -0
- package/dist/src/shared/mcp/functions/as-boolean-or-undefined.function.d.ts +7 -0
- package/dist/src/shared/mcp/functions/as-string-array-or-undefined.function.d.ts +7 -0
- package/dist/src/shared/mcp/functions/as-string-array.function.d.ts +7 -0
- package/dist/src/shared/mcp/functions/as-string.function.d.ts +8 -0
- package/dist/src/shared/mcp/functions/build-skills-text.function.d.ts +18 -0
- package/dist/src/shared/mcp/functions/handle-agent-prompt.function.d.ts +14 -0
- package/dist/src/shared/mcp/functions/handle-mcp-request.function.d.ts +14 -0
- package/dist/src/shared/mcp/functions/handle-prompt-get.function.d.ts +4 -3
- package/dist/src/shared/mcp/functions/handle-skill-prompt.function.d.ts +16 -0
- package/dist/src/shared/mcp/functions/handle-tool-auto-capture-review.function.d.ts +12 -0
- package/dist/src/shared/mcp/functions/handle-tool-check.function.d.ts +11 -0
- package/dist/src/shared/mcp/functions/handle-tool-content.function.d.ts +12 -0
- package/dist/src/shared/mcp/functions/handle-tool-export.function.d.ts +12 -0
- package/dist/src/shared/mcp/functions/handle-tool-gc.function.d.ts +11 -0
- package/dist/src/shared/mcp/functions/handle-tool-learn.function.d.ts +12 -0
- package/dist/src/shared/mcp/functions/handle-tool-rebuild.function.d.ts +11 -0
- package/dist/src/shared/mcp/functions/handle-tool-retrieve.function.d.ts +12 -0
- package/dist/src/shared/mcp/functions/handle-tool-search.function.d.ts +13 -0
- package/dist/src/shared/mcp/functions/handle-tool-skill-delete.function.d.ts +12 -0
- package/dist/src/shared/mcp/functions/handle-tool-skill-get.function.d.ts +13 -0
- package/dist/src/shared/mcp/functions/handle-tool-skill-learn.function.d.ts +13 -0
- package/dist/src/shared/mcp/functions/handle-tool-skill-list.function.d.ts +11 -0
- package/dist/src/shared/mcp/functions/handle-tool-status.function.d.ts +11 -0
- package/dist/src/shared/mcp/functions/handle-tool-unlearn.function.d.ts +12 -0
- package/dist/src/shared/mcp/functions/parse-agent-meta.function.d.ts +14 -0
- package/dist/src/shared/mcp/functions/parse-skill-arguments.function.d.ts +11 -0
- package/dist/src/shared/mcp/functions/read-agent-meta.function.d.ts +17 -0
- package/dist/src/shared/mcp/functions/resolve-skill-refs.function.d.ts +23 -0
- package/dist/src/shared/mcp/functions/run-startup-health-check.function.d.ts +14 -0
- package/dist/src/shared/mcp/typings/mcp-capabilities.interface.d.ts +16 -0
- package/dist/src/shared/mcp/typings/mcp-client.interface.d.ts +2 -0
- package/dist/src/shared/mcp/typings/mcp-completion.interface.d.ts +43 -0
- package/dist/src/shared/mcp/typings/mcp-content-result.model.d.ts +9 -0
- package/dist/src/shared/mcp/typings/mcp-export-result.model.d.ts +11 -0
- package/dist/src/shared/mcp/typings/mcp-gc-result.model.d.ts +15 -0
- package/dist/src/shared/mcp/typings/mcp-integrity-check-result.model.d.ts +16 -0
- package/dist/src/shared/mcp/typings/mcp-integrity-error.model.d.ts +9 -0
- package/dist/src/shared/mcp/typings/mcp-notification.interface.d.ts +9 -0
- package/dist/src/shared/mcp/typings/mcp-rebuild-result.model.d.ts +9 -0
- package/dist/src/shared/mcp/typings/mcp-request.interface.d.ts +11 -0
- package/dist/src/shared/mcp/typings/mcp-resource-result.interface.d.ts +12 -0
- package/dist/src/shared/mcp/typings/mcp-resource-template.interface.d.ts +11 -0
- package/dist/src/shared/mcp/typings/mcp-response.interface.d.ts +18 -0
- package/dist/src/shared/mcp/typings/mcp-server-info.interface.d.ts +7 -0
- package/dist/src/shared/mcp/typings/mcp-server-state.interface.d.ts +16 -0
- package/dist/src/shared/mcp/typings/mcp-tool-annotations.interface.d.ts +32 -0
- package/dist/src/shared/mcp/typings/mcp-tool-definition.interface.d.ts +15 -0
- package/dist/src/shared/mcp/typings/mcp-tool-result.interface.d.ts +19 -0
- package/dist/src/shared/mcp/typings/mcp-worker-client.interface.d.ts +220 -0
- package/dist/src/shared/mcp/typings/tool-call-result.model.d.ts +17 -0
- package/dist/src/shared/sync/functions/build-import-report.function.d.ts +18 -0
- package/dist/src/shared/sync/functions/parse-export-entry.function.d.ts +11 -0
- package/dist/src/shared/sync/functions/resolve-conflict.function.d.ts +13 -0
- package/dist/src/shared/sync/functions/serialize-export-entry.function.d.ts +8 -0
- package/dist/src/shared/sync/index.d.ts +9 -0
- package/dist/src/shared/sync/typings/conflict-resolution.type.d.ts +8 -0
- package/dist/src/shared/sync/typings/export-entry.interface.d.ts +13 -0
- package/dist/src/shared/sync/typings/export-options.interface.d.ts +9 -0
- package/dist/src/shared/sync/typings/import-options.interface.d.ts +7 -0
- package/dist/src/shared/sync/typings/import-report.interface.d.ts +15 -0
- package/dist/src/shared/wasm-codec/functions/decode-one-recall-result.function.d.ts +14 -0
- package/dist/src/shared/wasm-codec/functions/decode-option-string.function.d.ts +12 -0
- package/dist/src/shared/wasm-codec/functions/decode-recall-document.function.d.ts +14 -0
- package/dist/src/shared/wasm-codec/functions/decode-recall-reference.function.d.ts +14 -0
- package/dist/src/shared/wasm-codec/functions/decode-recall-sibling.function.d.ts +13 -0
- package/dist/src/shared/wasm-codec/functions/decode-section-match.function.d.ts +15 -0
- package/dist/src/shared/wasm-codec/functions/decode-section-record-trailing.function.d.ts +14 -0
- package/dist/src/shared/wasm-codec/functions/decode-section-record.function.d.ts +14 -0
- package/dist/src/shared/wasm-codec/functions/decode-section-type.function.d.ts +13 -0
- package/dist/src/shared/wasm-codec/functions/decode-wasm-list.function.d.ts +17 -0
- package/dist/src/shared/wasm-codec/typings/add-section-input.model.d.ts +45 -0
- package/dist/src/shared/wasm-codec/typings/add-section-result.model.d.ts +27 -0
- package/dist/src/shared/wasm-codec/typings/document-manifest.model.d.ts +19 -0
- package/dist/src/shared/wasm-codec/typings/document-section.model.d.ts +12 -0
- package/dist/src/shared/wasm-codec/typings/item-decoder.type.d.ts +6 -0
- package/dist/src/shared/wasm-codec/typings/near-duplicate.model.d.ts +16 -0
- package/dist/src/shared/wasm-codec/typings/paged-search-result.model.d.ts +21 -0
- package/dist/src/shared/wasm-codec/typings/section-match.model.d.ts +31 -0
- package/dist/src/shared/wasm-codec/typings/section-record-trailing.model.d.ts +38 -0
- package/dist/src/shared/wasm-codec/typings/section-record.model.d.ts +66 -0
- package/dist/src/shared/wasm-codec/typings/section-type-result.model.d.ts +12 -0
- package/dist/src/shared/worker-client/functions/handle-ipc-data.function.d.ts +16 -0
- package/dist/src/shared/worker-client/functions/send-ipc-request.function.d.ts +19 -0
- package/dist/src/shared/worker-client/typings/add-section-result.model.d.ts +2 -0
- package/dist/src/shared/worker-client/typings/json-rpc-response.interface.d.ts +16 -0
- package/dist/src/shared/worker-client/typings/pending-call.interface.d.ts +7 -0
- package/dist/src/shared/worker-client/typings/recall-document.model.d.ts +16 -0
- package/dist/src/shared/worker-client/typings/recall-params.model.d.ts +15 -0
- package/dist/src/shared/worker-client/typings/recall-reference.model.d.ts +32 -0
- package/dist/src/shared/worker-client/typings/recall-sibling.model.d.ts +11 -0
- package/dist/src/shared/worker-client/typings/recall-single-result.model.d.ts +40 -0
- package/dist/src/shared/worker-daemon/classes/ipc-error.class.d.ts +17 -0
- package/dist/src/shared/worker-daemon/constants/wasm-method-map.constant.d.ts +16 -0
- package/dist/src/shared/worker-daemon/functions/build-ipc-error-response.function.d.ts +9 -0
- package/dist/src/shared/worker-daemon/functions/check-catalog-version.function.d.ts +9 -0
- package/dist/src/shared/worker-daemon/functions/check-preconditions.function.d.ts +10 -0
- package/dist/src/shared/worker-daemon/functions/detect-stale-pid.function.d.ts +15 -0
- package/dist/src/shared/worker-daemon/functions/dispatch-request.function.d.ts +35 -0
- package/dist/src/shared/worker-daemon/functions/handle-check-version.function.d.ts +23 -0
- package/dist/src/shared/worker-daemon/functions/handle-config-method.function.d.ts +11 -0
- package/dist/src/shared/worker-daemon/functions/handle-read-ops.function.d.ts +52 -0
- package/dist/src/shared/worker-daemon/functions/handle-write-ops.function.d.ts +44 -0
- package/dist/src/shared/worker-daemon/functions/parse-auto-capture-section.function.d.ts +14 -0
- package/dist/src/shared/worker-daemon/functions/parse-catalog-version.function.d.ts +10 -0
- package/dist/src/shared/worker-daemon/functions/parse-embedding-section.function.d.ts +13 -0
- package/dist/src/shared/worker-daemon/functions/parse-worker-toml.function.d.ts +11 -0
- package/dist/src/shared/worker-daemon/functions/run-startup-integrity-check.function.d.ts +18 -0
- package/dist/src/shared/worker-daemon/functions/scan-near-duplicates.function.d.ts +21 -0
- package/dist/src/shared/worker-daemon/functions/wasm-bridge.function.d.ts +51 -0
- package/dist/src/shared/worker-daemon/functions/wasm-memory-helpers.function.d.ts +22 -0
- package/dist/src/shared/worker-daemon/functions/write-lock.function.d.ts +32 -0
- package/dist/src/shared/worker-daemon/typings/allocator-ref.interface.d.ts +16 -0
- package/dist/src/shared/worker-daemon/typings/daemon-config.interface.d.ts +6 -0
- package/dist/src/shared/worker-daemon/typings/fs-adapter.interface.d.ts +22 -0
- package/dist/src/shared/worker-daemon/typings/handler-context.interface.d.ts +18 -0
- package/dist/src/shared/worker-daemon/typings/memory-ref.interface.d.ts +13 -0
- package/dist/src/shared/worker-daemon/typings/wasm-fn.type.d.ts +2 -0
- package/dist/src/shared/worker-daemon/typings/write-lock.interface.d.ts +15 -0
- package/dist/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
- package/dist/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
- package/docs/details/mcp-server.md +4 -2
- package/docs/goals/auto-capture.md +378 -0
- package/docs/goals/benchmarking.md +296 -0
- package/docs/goals/concurrency.md +259 -0
- package/docs/goals/hybrid-search.md +436 -0
- package/docs/goals/semantic-dedup.md +229 -0
- package/docs/goals/sync.md +217 -0
- package/docs/modules/rust/fs-database/indexes/vectors.md +110 -0
- package/docs/modules/typescript/shared/auto-capture/module.md +73 -0
- package/docs/modules/typescript/shared/embedding/functions.md +94 -0
- package/docs/modules/typescript/shared/embedding/module.md +71 -0
- package/docs/modules/typescript/shared/embedding/typings.md +122 -0
- package/docs/overview.md +148 -166
- package/docs/release-notes/0.2.0.md +3 -3
- package/docs/release-notes/0.3.0.md +89 -0
- package/docs/release-notes/0.3.1.md +111 -0
- package/docs/release-notes/README.md +2 -0
- package/package.json +1 -1
- package/src/shared/auto-capture/classes/auto-capture-controller.class.ts +62 -0
- package/src/shared/auto-capture/constants/auto-capture-defaults.constant.ts +15 -0
- package/src/shared/auto-capture/functions/build-capture-prompt.function.ts +27 -0
- package/src/shared/auto-capture/functions/evaluate-trigger.function.ts +50 -0
- package/src/shared/auto-capture/index.ts +7 -0
- package/src/shared/auto-capture/typings/auto-capture-config.interface.ts +13 -0
- package/src/shared/auto-capture/typings/auto-capture-state.interface.ts +13 -0
- package/src/shared/auto-capture/typings/auto-capture-trigger.interface.ts +7 -0
- package/src/shared/cli/constants/global-help.constant.ts +73 -0
- package/src/shared/cli/constants/leaf-help.constant.ts +219 -0
- package/src/shared/cli/constants/memory-protocol-body.constant.ts +39 -0
- package/src/shared/cli/constants/query-guidance-body.constant.ts +37 -0
- package/src/shared/cli/constants/subcommand-help.constant.ts +195 -0
- package/src/shared/cli/functions/collect-files.function.ts +55 -0
- package/src/shared/cli/functions/compute-section-kbid.function.ts +49 -0
- package/src/shared/cli/functions/format-mcp-output.function.ts +41 -0
- package/src/shared/cli/functions/format-text-output.function.ts +42 -0
- package/src/shared/cli/functions/generate-group-help.function.ts +41 -0
- package/src/shared/cli/functions/handle-data-command.function.ts +67 -0
- package/src/shared/cli/functions/handle-mcp.function.ts +56 -0
- package/src/shared/cli/functions/handle-migrate.function.ts +64 -0
- package/src/shared/cli/functions/hydrate-search-previews.function.ts +29 -0
- package/src/shared/cli/functions/parse-args.function.ts +3 -0
- package/src/shared/cli/functions/resolve-skill-names.function.ts +43 -0
- package/src/shared/cli/functions/run-search.function.ts +2 -0
- package/src/shared/cli/functions/version-gate.function.ts +44 -0
- package/src/shared/cli/functions/wrap-command.function.ts +34 -0
- package/src/shared/cli/typings/agent-create-client.interface.ts +47 -0
- package/src/shared/cli/typings/agent-get-client.interface.ts +39 -0
- package/src/shared/cli/typings/check-client.interface.ts +66 -0
- package/src/shared/cli/typings/cli-deps.interface.ts +54 -0
- package/src/shared/cli/typings/cli-options.interface.ts +2 -0
- package/src/shared/cli/typings/disconnectable-client.interface.ts +29 -0
- package/src/shared/cli/typings/dispatch-client.type.ts +46 -0
- package/src/shared/cli/typings/learn-client.interface.ts +53 -0
- package/src/shared/cli/typings/learn-io.interface.ts +5 -0
- package/src/shared/cli/typings/search-client.interface.ts +73 -0
- package/src/shared/embedding/classes/null-embedding-provider.class.ts +29 -0
- package/src/shared/embedding/constants/near-duplicate-thresholds.constant.ts +17 -0
- package/src/shared/embedding/functions/build-vector-index.function.ts +79 -0
- package/src/shared/embedding/functions/cosine-similarity.function.ts +31 -0
- package/src/shared/embedding/functions/detect-near-duplicates.function.ts +69 -0
- package/src/shared/embedding/functions/jaccard-coefficient.function.ts +26 -0
- package/src/shared/embedding/functions/read-vector-index-meta.function.ts +44 -0
- package/src/shared/embedding/functions/rrf-fuse.function.ts +33 -0
- package/src/shared/embedding/functions/search-vectors.function.ts +59 -0
- package/src/shared/embedding/index.ts +20 -0
- package/src/shared/embedding/typings/embedding-config.interface.ts +23 -0
- package/src/shared/embedding/typings/embedding-provider.interface.ts +25 -0
- package/src/shared/embedding/typings/near-duplicate-candidate.model.ts +25 -0
- package/src/shared/embedding/typings/near-duplicate-result.model.ts +26 -0
- package/src/shared/embedding/typings/vector-index-entry.model.ts +13 -0
- package/src/shared/embedding/typings/vector-index-meta.model.ts +14 -0
- package/src/shared/embedding/typings/vector-search-result.model.ts +8 -0
- package/src/shared/mcp/classes/mcp-server.class.ts +6 -3
- package/src/shared/mcp/constants/tool-agent-create.constant.ts +39 -0
- package/src/shared/mcp/constants/tool-agent-delete.constant.ts +26 -0
- package/src/shared/mcp/constants/tool-agent-get.constant.ts +24 -0
- package/src/shared/mcp/constants/tool-agent-list.constant.ts +18 -0
- package/src/shared/mcp/constants/tool-auto-capture-review.constant.ts +32 -0
- package/src/shared/mcp/constants/tool-check.constant.ts +21 -0
- package/src/shared/mcp/constants/tool-content.constant.ts +29 -0
- package/src/shared/mcp/constants/tool-export.constant.ts +27 -0
- package/src/shared/mcp/constants/tool-gc.constant.ts +21 -0
- package/src/shared/mcp/constants/tool-learn.constant.ts +58 -0
- package/src/shared/mcp/constants/tool-rebuild.constant.ts +21 -0
- package/src/shared/mcp/constants/tool-recall.constant.ts +36 -0
- package/src/shared/mcp/constants/tool-retrieve.constant.ts +31 -0
- package/src/shared/mcp/constants/tool-search.constant.ts +51 -0
- package/src/shared/mcp/constants/tool-skill-delete.constant.ts +24 -0
- package/src/shared/mcp/constants/tool-skill-get.constant.ts +27 -0
- package/src/shared/mcp/constants/tool-skill-learn.constant.ts +37 -0
- package/src/shared/mcp/constants/tool-skill-list.constant.ts +18 -0
- package/src/shared/mcp/constants/tool-status.constant.ts +20 -0
- package/src/shared/mcp/constants/tool-unlearn.constant.ts +25 -0
- package/src/shared/mcp/functions/as-boolean-or-undefined.function.ts +11 -0
- package/src/shared/mcp/functions/as-string-array-or-undefined.function.ts +17 -0
- package/src/shared/mcp/functions/as-string-array.function.ts +15 -0
- package/src/shared/mcp/functions/as-string.function.ts +10 -0
- package/src/shared/mcp/functions/build-skills-text.function.ts +43 -0
- package/src/shared/mcp/functions/create-tool-definitions.function.ts +28 -0
- package/src/shared/mcp/functions/handle-agent-create.function.ts +1 -1
- package/src/shared/mcp/functions/handle-agent-prompt.function.ts +68 -0
- package/src/shared/mcp/functions/handle-mcp-request.function.ts +202 -0
- package/src/shared/mcp/functions/handle-prompt-get.function.ts +18 -12
- package/src/shared/mcp/functions/handle-skill-prompt.function.ts +44 -0
- package/src/shared/mcp/functions/handle-tool-auto-capture-review.function.ts +24 -0
- package/src/shared/mcp/functions/handle-tool-call.function.ts +18 -0
- package/src/shared/mcp/functions/handle-tool-check.function.ts +21 -0
- package/src/shared/mcp/functions/handle-tool-content.function.ts +23 -0
- package/src/shared/mcp/functions/handle-tool-export.function.ts +25 -0
- package/src/shared/mcp/functions/handle-tool-gc.function.ts +21 -0
- package/src/shared/mcp/functions/handle-tool-learn.function.ts +69 -0
- package/src/shared/mcp/functions/handle-tool-rebuild.function.ts +21 -0
- package/src/shared/mcp/functions/handle-tool-retrieve.function.ts +40 -0
- package/src/shared/mcp/functions/handle-tool-search.function.ts +47 -0
- package/src/shared/mcp/functions/handle-tool-skill-delete.function.ts +34 -0
- package/src/shared/mcp/functions/handle-tool-skill-get.function.ts +59 -0
- package/src/shared/mcp/functions/handle-tool-skill-learn.function.ts +61 -0
- package/src/shared/mcp/functions/handle-tool-skill-list.function.ts +39 -0
- package/src/shared/mcp/functions/handle-tool-status.function.ts +21 -0
- package/src/shared/mcp/functions/handle-tool-unlearn.function.ts +24 -0
- package/src/shared/mcp/functions/parse-agent-meta.function.ts +27 -0
- package/src/shared/mcp/functions/parse-skill-arguments.function.ts +36 -0
- package/src/shared/mcp/functions/read-agent-meta.function.ts +41 -0
- package/src/shared/mcp/functions/resolve-skill-refs.function.ts +50 -0
- package/src/shared/mcp/functions/run-startup-health-check.function.ts +34 -0
- package/src/shared/mcp/typings/mcp-capabilities.interface.ts +16 -0
- package/src/shared/mcp/typings/mcp-client.interface.ts +2 -0
- package/src/shared/mcp/typings/mcp-completion.interface.ts +45 -0
- package/src/shared/mcp/typings/mcp-content-result.model.ts +9 -0
- package/src/shared/mcp/typings/mcp-export-result.model.ts +11 -0
- package/src/shared/mcp/typings/mcp-gc-result.model.ts +15 -0
- package/src/shared/mcp/typings/mcp-integrity-check-result.model.ts +17 -0
- package/src/shared/mcp/typings/mcp-integrity-error.model.ts +15 -0
- package/src/shared/mcp/typings/mcp-notification.interface.ts +9 -0
- package/src/shared/mcp/typings/mcp-rebuild-result.model.ts +9 -0
- package/src/shared/mcp/typings/mcp-request.interface.ts +11 -0
- package/src/shared/mcp/typings/mcp-resource-result.interface.ts +12 -0
- package/src/shared/mcp/typings/mcp-resource-template.interface.ts +11 -0
- package/src/shared/mcp/typings/mcp-response.interface.ts +18 -0
- package/src/shared/mcp/typings/mcp-server-info.interface.ts +7 -0
- package/src/shared/mcp/typings/mcp-server-state.interface.ts +17 -0
- package/src/shared/mcp/typings/mcp-tool-annotations.interface.ts +32 -0
- package/src/shared/mcp/typings/mcp-tool-definition.interface.ts +16 -0
- package/src/shared/mcp/typings/mcp-tool-result.interface.ts +19 -0
- package/src/shared/mcp/typings/mcp-worker-client.interface.ts +243 -0
- package/src/shared/mcp/typings/tool-call-result.model.ts +18 -0
- package/src/shared/sync/functions/build-import-report.function.ts +40 -0
- package/src/shared/sync/functions/parse-export-entry.function.ts +45 -0
- package/src/shared/sync/functions/resolve-conflict.function.ts +31 -0
- package/src/shared/sync/functions/serialize-export-entry.function.ts +18 -0
- package/src/shared/sync/index.ts +9 -0
- package/src/shared/sync/typings/conflict-resolution.type.ts +8 -0
- package/src/shared/sync/typings/export-entry.interface.ts +13 -0
- package/src/shared/sync/typings/export-options.interface.ts +9 -0
- package/src/shared/sync/typings/import-options.interface.ts +7 -0
- package/src/shared/sync/typings/import-report.interface.ts +15 -0
- package/src/shared/wasm-codec/functions/decode-one-recall-result.function.ts +86 -0
- package/src/shared/wasm-codec/functions/decode-option-string.function.ts +24 -0
- package/src/shared/wasm-codec/functions/decode-recall-document.function.ts +59 -0
- package/src/shared/wasm-codec/functions/decode-recall-reference.function.ts +52 -0
- package/src/shared/wasm-codec/functions/decode-recall-sibling.function.ts +43 -0
- package/src/shared/wasm-codec/functions/decode-section-match.function.ts +80 -0
- package/src/shared/wasm-codec/functions/decode-section-record-trailing.function.ts +75 -0
- package/src/shared/wasm-codec/functions/decode-section-record.function.ts +85 -0
- package/src/shared/wasm-codec/functions/decode-section-type.function.ts +30 -0
- package/src/shared/wasm-codec/functions/decode-wasm-list.function.ts +31 -0
- package/src/shared/wasm-codec/typings/add-section-input.model.ts +45 -0
- package/src/shared/wasm-codec/typings/add-section-result.model.ts +28 -0
- package/src/shared/wasm-codec/typings/document-manifest.model.ts +20 -0
- package/src/shared/wasm-codec/typings/document-section.model.ts +12 -0
- package/src/shared/wasm-codec/typings/item-decoder.type.ts +10 -0
- package/src/shared/wasm-codec/typings/near-duplicate.model.ts +16 -0
- package/src/shared/wasm-codec/typings/paged-search-result.model.ts +22 -0
- package/src/shared/wasm-codec/typings/section-match.model.ts +31 -0
- package/src/shared/wasm-codec/typings/section-record-trailing.model.ts +38 -0
- package/src/shared/wasm-codec/typings/section-record.model.ts +66 -0
- package/src/shared/wasm-codec/typings/section-type-result.model.ts +12 -0
- package/src/shared/worker-client/functions/handle-ipc-data.function.ts +49 -0
- package/src/shared/worker-client/functions/send-ipc-request.function.ts +39 -0
- package/src/shared/worker-client/typings/add-section-result.model.ts +2 -0
- package/src/shared/worker-client/typings/json-rpc-response.interface.ts +17 -0
- package/src/shared/worker-client/typings/pending-call.interface.ts +7 -0
- package/src/shared/worker-client/typings/recall-document.model.ts +16 -0
- package/src/shared/worker-client/typings/recall-params.model.ts +15 -0
- package/src/shared/worker-client/typings/recall-reference.model.ts +32 -0
- package/src/shared/worker-client/typings/recall-sibling.model.ts +11 -0
- package/src/shared/worker-client/typings/recall-single-result.model.ts +41 -0
- package/src/shared/worker-daemon/classes/ipc-error.class.ts +22 -0
- package/src/shared/worker-daemon/constants/wasm-method-map.constant.ts +69 -0
- package/src/shared/worker-daemon/functions/build-ipc-error-response.function.ts +16 -0
- package/src/shared/worker-daemon/functions/check-catalog-version.function.ts +54 -0
- package/src/shared/worker-daemon/functions/check-preconditions.function.ts +28 -0
- package/src/shared/worker-daemon/functions/detect-stale-pid.function.ts +33 -0
- package/src/shared/worker-daemon/functions/dispatch-request.function.ts +190 -0
- package/src/shared/worker-daemon/functions/handle-check-version.function.ts +74 -0
- package/src/shared/worker-daemon/functions/handle-config-method.function.ts +27 -0
- package/src/shared/worker-daemon/functions/handle-read-ops.function.ts +236 -0
- package/src/shared/worker-daemon/functions/handle-write-ops.function.ts +257 -0
- package/src/shared/worker-daemon/functions/parse-auto-capture-section.function.ts +51 -0
- package/src/shared/worker-daemon/functions/parse-catalog-version.function.ts +20 -0
- package/src/shared/worker-daemon/functions/parse-embedding-section.function.ts +38 -0
- package/src/shared/worker-daemon/functions/parse-worker-toml.function.ts +104 -0
- package/src/shared/worker-daemon/functions/run-startup-integrity-check.function.ts +55 -0
- package/src/shared/worker-daemon/functions/scan-near-duplicates.function.ts +92 -0
- package/src/shared/worker-daemon/functions/wasm-bridge.function.ts +144 -0
- package/src/shared/worker-daemon/functions/wasm-memory-helpers.function.ts +41 -0
- package/src/shared/worker-daemon/functions/write-lock.function.ts +49 -0
- package/src/shared/worker-daemon/typings/allocator-ref.interface.ts +16 -0
- package/src/shared/worker-daemon/typings/daemon-config.interface.ts +7 -0
- package/src/shared/worker-daemon/typings/fs-adapter.interface.ts +22 -0
- package/src/shared/worker-daemon/typings/handler-context.interface.ts +19 -0
- package/src/shared/worker-daemon/typings/memory-ref.interface.ts +13 -0
- package/src/shared/worker-daemon/typings/wasm-fn.type.ts +2 -0
- package/src/shared/worker-daemon/typings/write-lock.interface.ts +13 -0
- package/src/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
- package/src/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** One-line description for each group command. */
|
|
2
|
+
const GROUP_DESCRIPTIONS: Readonly<Record<string, string>> = {
|
|
3
|
+
db: 'Database management',
|
|
4
|
+
skill: 'Skill management',
|
|
5
|
+
agent: 'Agent management',
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Generates the level-2 help text for a group command.
|
|
10
|
+
*
|
|
11
|
+
* Lists all subcommands with their descriptions and
|
|
12
|
+
* includes a footer pointing to per-subcommand help.
|
|
13
|
+
*
|
|
14
|
+
* @param group - the group command name (e.g. `'db'`, `'skill'`)
|
|
15
|
+
* @param subs - ordered list of `[name, description]` pairs
|
|
16
|
+
* @returns formatted help string for the group command
|
|
17
|
+
*/
|
|
18
|
+
export function generateGroupHelp(
|
|
19
|
+
group: string,
|
|
20
|
+
subs: readonly (readonly [string, string])[],
|
|
21
|
+
): string {
|
|
22
|
+
const subLines = subs
|
|
23
|
+
.map(([name, desc]) => ` ${name.padEnd(20)}${desc}`)
|
|
24
|
+
.join('\n');
|
|
25
|
+
const desc = GROUP_DESCRIPTIONS[group] ?? group;
|
|
26
|
+
return (
|
|
27
|
+
`kbdb ${group} - ${desc}\n` +
|
|
28
|
+
`\n` +
|
|
29
|
+
`Usage: kbdb ${group} <subcommand> [options]\n` +
|
|
30
|
+
`\n` +
|
|
31
|
+
`Subcommands:\n` +
|
|
32
|
+
`${subLines}\n` +
|
|
33
|
+
`\n` +
|
|
34
|
+
`Global Options:\n` +
|
|
35
|
+
` --db <path> Path to .kbdb directory\n` +
|
|
36
|
+
` -h, --help Show this help message\n` +
|
|
37
|
+
`\n` +
|
|
38
|
+
`Run "kbdb ${group} <subcommand> --help"` +
|
|
39
|
+
` for details.\n`
|
|
40
|
+
);
|
|
41
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AgentGetClient,
|
|
3
|
+
AgentDocumentSection,
|
|
4
|
+
AgentSectionRecord,
|
|
5
|
+
} from '../typings/agent-get-client.interface.ts';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Resolves skill names by reading each skill section's JSON content.
|
|
9
|
+
*
|
|
10
|
+
* Returns `null` for any reference whose section no longer exists
|
|
11
|
+
* (dangling reference) or whose content cannot be parsed.
|
|
12
|
+
*
|
|
13
|
+
* @param client - client used to fetch section records
|
|
14
|
+
* @param skillRefs - ordered section references to resolve
|
|
15
|
+
* @returns list of resolved skill entries with name and position
|
|
16
|
+
*/
|
|
17
|
+
export async function resolveSkillNames(
|
|
18
|
+
client: AgentGetClient,
|
|
19
|
+
skillRefs: AgentDocumentSection[],
|
|
20
|
+
): Promise<{ kbid: string; name: string | null; position: number }[]> {
|
|
21
|
+
if (skillRefs.length === 0) return [];
|
|
22
|
+
const kbids = skillRefs.map((r) => r.kbid);
|
|
23
|
+
const sections: AgentSectionRecord[] =
|
|
24
|
+
await client.readSections(kbids);
|
|
25
|
+
const sectionMap = new Map(sections.map((s) => [s.kbid, s]));
|
|
26
|
+
return skillRefs.map((ref) => {
|
|
27
|
+
const sec = sectionMap.get(ref.kbid);
|
|
28
|
+
if (!sec) {
|
|
29
|
+
return { kbid: ref.kbid, name: null, position: ref.position };
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const parsed = JSON.parse(sec.content) as Record<
|
|
33
|
+
string,
|
|
34
|
+
unknown
|
|
35
|
+
>;
|
|
36
|
+
const name =
|
|
37
|
+
typeof parsed['name'] === 'string' ? parsed['name'] : null;
|
|
38
|
+
return { kbid: ref.kbid, name, position: ref.position };
|
|
39
|
+
} catch {
|
|
40
|
+
return { kbid: ref.kbid, name: null, position: ref.position };
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
@@ -70,6 +70,7 @@ export interface SearchClient {
|
|
|
70
70
|
mode?: string;
|
|
71
71
|
limit?: number;
|
|
72
72
|
offset?: number;
|
|
73
|
+
algo?: string;
|
|
73
74
|
}): Promise<RawSearchResponse>;
|
|
74
75
|
}
|
|
75
76
|
|
|
@@ -106,6 +107,7 @@ export async function runSearch(
|
|
|
106
107
|
mode: options.mode,
|
|
107
108
|
limit: options.limit,
|
|
108
109
|
offset: options.offset,
|
|
110
|
+
algo: options.algo,
|
|
109
111
|
});
|
|
110
112
|
|
|
111
113
|
return {
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { CommandResult } from '../typings/command-result.model.ts';
|
|
2
|
+
import type { DisconnectableClient } from '../typings/disconnectable-client.interface.ts';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Checks the database version and returns a `CommandResult` error
|
|
6
|
+
* when the version is incompatible, or `null` when it is compatible.
|
|
7
|
+
*
|
|
8
|
+
* - `'needs_migration'`: prompts the user to run `kbdb --migrate`
|
|
9
|
+
* - `'too_new'`: informs the user to upgrade kbdb
|
|
10
|
+
* - `'compatible'`: returns `null` (no gate triggered)
|
|
11
|
+
*
|
|
12
|
+
* @param client - disconnectable client with version-check capability
|
|
13
|
+
* @param dbDir - absolute path to the `.kbdb` database root
|
|
14
|
+
* @returns error `CommandResult` when blocked, or `null` when clear
|
|
15
|
+
*/
|
|
16
|
+
export async function versionGate(
|
|
17
|
+
client: DisconnectableClient,
|
|
18
|
+
dbDir: string,
|
|
19
|
+
): Promise<CommandResult | null> {
|
|
20
|
+
const versionStatus = await client.checkVersion(dbDir);
|
|
21
|
+
|
|
22
|
+
if (versionStatus.status === 'needs_migration') {
|
|
23
|
+
return {
|
|
24
|
+
error:
|
|
25
|
+
'error: database needs migration' +
|
|
26
|
+
' -- run `kbdb --migrate`',
|
|
27
|
+
exitCode: 1,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (versionStatus.status === 'too_new') {
|
|
32
|
+
return {
|
|
33
|
+
error:
|
|
34
|
+
`error: database version` +
|
|
35
|
+
` ${versionStatus.currentVersion.toString()}` +
|
|
36
|
+
` is newer than kbdb version` +
|
|
37
|
+
` ${versionStatus.requiredVersion.toString()}` +
|
|
38
|
+
` -- upgrade kbdb`,
|
|
39
|
+
exitCode: 1,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CommandResult } from '../typings/command-result.model.ts';
|
|
2
|
+
import { errorToMessage } from './error-to-message.function.ts';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Wraps an async command handler in a standard try/catch envelope.
|
|
6
|
+
*
|
|
7
|
+
* On success, serialises the result with `JSON.stringify` and
|
|
8
|
+
* returns `exitCode: 0`. On failure, returns an error message
|
|
9
|
+
* prefixed with `<label> failed:` and `exitCode: 1`.
|
|
10
|
+
*
|
|
11
|
+
* @param label - command name used in the error prefix
|
|
12
|
+
* @param handler - async function that produces the command result
|
|
13
|
+
* @param exitCodeSelector - optional function to derive `exitCode`
|
|
14
|
+
* from the successful result; defaults to always returning 0
|
|
15
|
+
* @returns a `CommandResult` with output or error
|
|
16
|
+
*/
|
|
17
|
+
export async function wrapCommand<T>(
|
|
18
|
+
label: string,
|
|
19
|
+
handler: () => Promise<T>,
|
|
20
|
+
exitCodeSelector?: (result: T) => number,
|
|
21
|
+
): Promise<CommandResult> {
|
|
22
|
+
try {
|
|
23
|
+
const result = await handler();
|
|
24
|
+
return {
|
|
25
|
+
output: JSON.stringify(result, null, 2),
|
|
26
|
+
exitCode: exitCodeSelector ? exitCodeSelector(result) : 0,
|
|
27
|
+
};
|
|
28
|
+
} catch (err) {
|
|
29
|
+
return {
|
|
30
|
+
error: `${label} failed: ${errorToMessage(err)}`,
|
|
31
|
+
exitCode: 1,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { AddSectionResult } from '../../worker-client/typings/add-section-result.model.ts';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Minimal client interface required by `runAgentCreate`.
|
|
5
|
+
*
|
|
6
|
+
* Decouples the CLI function from the concrete `WorkerClient`
|
|
7
|
+
* implementation, making it straightforward to test with mocks.
|
|
8
|
+
*/
|
|
9
|
+
export interface AgentCreateClient {
|
|
10
|
+
/**
|
|
11
|
+
* Ingests a content section into the knowledge base.
|
|
12
|
+
*
|
|
13
|
+
* @param params - section type label, raw content, and optional
|
|
14
|
+
* metadata
|
|
15
|
+
* @returns result object containing the assigned knowledge-base
|
|
16
|
+
* identifier
|
|
17
|
+
*/
|
|
18
|
+
addSection(params: {
|
|
19
|
+
readonly sectionType: string;
|
|
20
|
+
readonly content: string;
|
|
21
|
+
readonly title?: string;
|
|
22
|
+
readonly description?: string;
|
|
23
|
+
}): Promise<AddSectionResult>;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Groups a set of sections under a named document.
|
|
27
|
+
*
|
|
28
|
+
* @param title - human-readable document title
|
|
29
|
+
* @param kbids - identifiers of the sections to group
|
|
30
|
+
* @param docType - application-level document type tag; omit or
|
|
31
|
+
* pass an empty string for untagged documents
|
|
32
|
+
* @returns the assigned document identifier
|
|
33
|
+
*/
|
|
34
|
+
groupSections(
|
|
35
|
+
title: string,
|
|
36
|
+
kbids: string[],
|
|
37
|
+
docType?: string,
|
|
38
|
+
): Promise<string>;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Retrieves one or more sections by their identifiers.
|
|
42
|
+
*
|
|
43
|
+
* @param kbids - list of knowledge-base identifiers to fetch
|
|
44
|
+
* @returns sections found; missing kbids are omitted from the result
|
|
45
|
+
*/
|
|
46
|
+
readSections(kbids: string[]): Promise<{ kbid: string }[]>;
|
|
47
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/** A document section reference as returned by `retrieveDocument`. */
|
|
2
|
+
export interface AgentDocumentSection {
|
|
3
|
+
/** Knowledge-base identifier of the section. */
|
|
4
|
+
readonly kbid: string;
|
|
5
|
+
/** Zero-based position of the section within the document. */
|
|
6
|
+
readonly position: number;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/** A section record as returned by `readSections`. */
|
|
10
|
+
export interface AgentSectionRecord {
|
|
11
|
+
/** Knowledge-base identifier of the section. */
|
|
12
|
+
readonly kbid: string;
|
|
13
|
+
/** Raw text content stored in the section. */
|
|
14
|
+
readonly content: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Minimal client interface required by `runAgentGet`.
|
|
19
|
+
*
|
|
20
|
+
* Decouples the CLI function from the concrete `WorkerClient`
|
|
21
|
+
* implementation, making it straightforward to test with mocks.
|
|
22
|
+
*/
|
|
23
|
+
export interface AgentGetClient {
|
|
24
|
+
/**
|
|
25
|
+
* Retrieves a full document record including its ordered sections.
|
|
26
|
+
*
|
|
27
|
+
* @param docid - identifier of the document to retrieve
|
|
28
|
+
* @returns the document record
|
|
29
|
+
*/
|
|
30
|
+
retrieveDocument(docid: string): Promise<unknown>;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Retrieves one or more sections by their identifiers.
|
|
34
|
+
*
|
|
35
|
+
* @param kbids - list of knowledge-base identifiers to fetch
|
|
36
|
+
* @returns sections found; missing kbids are omitted from the result
|
|
37
|
+
*/
|
|
38
|
+
readSections(kbids: string[]): Promise<AgentSectionRecord[]>;
|
|
39
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/** Raw daemon response from `integrityCheck`. */
|
|
2
|
+
export interface RawIntegrityCheckResult {
|
|
3
|
+
/** `true` when all checks passed and no errors were found. */
|
|
4
|
+
readonly ok: boolean;
|
|
5
|
+
/** All integrity errors found; empty when `ok` is `true`. */
|
|
6
|
+
readonly errors: IntegrityError[];
|
|
7
|
+
/** Total number of sections examined. */
|
|
8
|
+
readonly sections_checked: number;
|
|
9
|
+
/** Total number of documents examined. */
|
|
10
|
+
readonly documents_checked: number;
|
|
11
|
+
/** Total number of marker references checked. */
|
|
12
|
+
readonly references_checked: number;
|
|
13
|
+
/** Time taken to complete the check, in milliseconds. */
|
|
14
|
+
readonly elapsed_ms: number;
|
|
15
|
+
/**
|
|
16
|
+
* Encoded divergent-content map.
|
|
17
|
+
*
|
|
18
|
+
* Format: `sk1:kbid1,kbid2;sk2:kbid3,kbid4`
|
|
19
|
+
*
|
|
20
|
+
* Each semicolon-separated segment is a source key followed by
|
|
21
|
+
* a colon and a comma-separated list of kbids. Absent when no
|
|
22
|
+
* divergent content exists.
|
|
23
|
+
*/
|
|
24
|
+
readonly divergent_content?: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** A single integrity error found during a database check. */
|
|
28
|
+
export interface IntegrityError {
|
|
29
|
+
/**
|
|
30
|
+
* The category of integrity violation detected.
|
|
31
|
+
*
|
|
32
|
+
* - `'checksum_mismatch'` -- stored content does not match its hash
|
|
33
|
+
* - `'orphan_section'` -- section not referenced by any document
|
|
34
|
+
* - `'orphan_document'` -- document references no existing sections
|
|
35
|
+
* - `'broken_reference'` -- a marker references a non-existent entity
|
|
36
|
+
* - `'type_mismatch'` -- stored MIME type conflicts with content
|
|
37
|
+
* - `'circular_reference'` -- marker chain contains a cycle
|
|
38
|
+
*/
|
|
39
|
+
readonly type:
|
|
40
|
+
| 'checksum_mismatch'
|
|
41
|
+
| 'orphan_section'
|
|
42
|
+
| 'orphan_document'
|
|
43
|
+
| 'broken_reference'
|
|
44
|
+
| 'type_mismatch'
|
|
45
|
+
| 'circular_reference';
|
|
46
|
+
/** Identifier of the entity (kbid or docid) that has the issue. */
|
|
47
|
+
readonly entity: string;
|
|
48
|
+
/** Human-readable description of the specific problem. */
|
|
49
|
+
readonly detail: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Minimal client interface required by `runCheck`.
|
|
54
|
+
*
|
|
55
|
+
* Decouples the CLI function from the concrete `WorkerClient`
|
|
56
|
+
* implementation, making it straightforward to test with mocks.
|
|
57
|
+
*/
|
|
58
|
+
export interface CheckClient {
|
|
59
|
+
/**
|
|
60
|
+
* Runs an integrity check on the knowledge-base database.
|
|
61
|
+
*
|
|
62
|
+
* @returns a report of all issues found; `ok` is `true` when
|
|
63
|
+
* no errors were detected
|
|
64
|
+
*/
|
|
65
|
+
integrityCheck(): Promise<RawIntegrityCheckResult>;
|
|
66
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { CliOptions } from './cli-options.interface.ts';
|
|
2
|
+
import type { InitResult } from '../functions/run-init.function.ts';
|
|
3
|
+
import type { DisconnectableClient } from './disconnectable-client.interface.ts';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Injectable dependencies for the CLI orchestrator.
|
|
7
|
+
*
|
|
8
|
+
* Every external side-effect is injected so the function
|
|
9
|
+
* is fully testable without touching process globals,
|
|
10
|
+
* filesystem, or network.
|
|
11
|
+
*/
|
|
12
|
+
export interface CliDeps {
|
|
13
|
+
/** Returns `true` when stdin is an interactive terminal. */
|
|
14
|
+
isStdinTty: () => boolean;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Prompts the user with the given question and resolves with
|
|
18
|
+
* their trimmed response.
|
|
19
|
+
*
|
|
20
|
+
* @param question - text to display before the input prompt
|
|
21
|
+
*/
|
|
22
|
+
promptUser: (question: string) => Promise<string>;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Creates a worker client connected to the given database path.
|
|
26
|
+
*
|
|
27
|
+
* @param opts - connection options including the context path
|
|
28
|
+
*/
|
|
29
|
+
createWorkerClient: (opts: {
|
|
30
|
+
contextPath: string;
|
|
31
|
+
}) => Promise<DisconnectableClient>;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Finds the `.kbdb` directory starting from the given base path.
|
|
35
|
+
*
|
|
36
|
+
* @param basePath - starting directory; defaults to `process.cwd()`
|
|
37
|
+
* @returns absolute path to `.kbdb` or `null` when not found
|
|
38
|
+
*/
|
|
39
|
+
findDb: (basePath?: string) => string | null;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Initialises a new `.kbdb` database directory.
|
|
43
|
+
*
|
|
44
|
+
* @param options - parsed CLI options
|
|
45
|
+
*/
|
|
46
|
+
runInit: (options: CliOptions) => InitResult;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Starts the MCP server using the given database path.
|
|
50
|
+
*
|
|
51
|
+
* @param contextPath - absolute path to the `.kbdb` directory
|
|
52
|
+
*/
|
|
53
|
+
startMcpServer?: (contextPath: string) => Promise<void>;
|
|
54
|
+
}
|
|
@@ -29,6 +29,8 @@ export interface CliOptions {
|
|
|
29
29
|
format: OutputFormat;
|
|
30
30
|
/** Search mode passed to the worker daemon. Defaults to `'sections'`. */
|
|
31
31
|
mode: SearchMode;
|
|
32
|
+
/** Search algorithm: `'lexical'`, `'vector'`, or `'hybrid'`. */
|
|
33
|
+
algo?: string;
|
|
32
34
|
/** Maximum number of results to return. Defaults to 20. */
|
|
33
35
|
limit: number;
|
|
34
36
|
/** Number of results to skip for pagination. */
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { VersionStatus } from '../../worker-client/typings/version-status.model.ts';
|
|
2
|
+
import type { MigrateResult } from '../../worker-client/typings/migrate-result.model.ts';
|
|
3
|
+
import type { DispatchClient } from './dispatch-client.type.ts';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Extension of `DispatchClient` with lifecycle methods needed by
|
|
7
|
+
* the CLI orchestrator.
|
|
8
|
+
*
|
|
9
|
+
* Adds version checking, migration, and disconnect so the orchestrator
|
|
10
|
+
* can manage a worker-client connection across all CLI commands.
|
|
11
|
+
*/
|
|
12
|
+
export interface DisconnectableClient extends DispatchClient {
|
|
13
|
+
/**
|
|
14
|
+
* Checks the database version against the worker engine.
|
|
15
|
+
*
|
|
16
|
+
* @param targetPath - absolute path to the `.kbdb` database root
|
|
17
|
+
*/
|
|
18
|
+
checkVersion(targetPath: string): Promise<VersionStatus>;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Runs all pending database migrations.
|
|
22
|
+
*
|
|
23
|
+
* @param targetPath - absolute path to the `.kbdb` database root
|
|
24
|
+
*/
|
|
25
|
+
migrateDatabase(targetPath: string): Promise<MigrateResult>;
|
|
26
|
+
|
|
27
|
+
/** Disconnects from the worker daemon and releases resources. */
|
|
28
|
+
disconnect(): void;
|
|
29
|
+
}
|