@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,69 @@
|
|
|
1
|
+
import type { DaemonConfig } from '../typings/daemon-config.interface.ts';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Maps incoming IPC method names to `kb-worker.wasm` export names.
|
|
5
|
+
*
|
|
6
|
+
* Both camelCase and snake_case variants of each method are
|
|
7
|
+
* included so that clients may use either convention.
|
|
8
|
+
*/
|
|
9
|
+
export const WASM_METHOD_MAP: Readonly<
|
|
10
|
+
Partial<Record<string, string>>
|
|
11
|
+
> = {
|
|
12
|
+
search: 'worker_search',
|
|
13
|
+
addSection: 'worker_add_section',
|
|
14
|
+
add_section: 'worker_add_section',
|
|
15
|
+
updateSection: 'worker_update_section',
|
|
16
|
+
update_section: 'worker_update_section',
|
|
17
|
+
removeSection: 'worker_remove_section',
|
|
18
|
+
remove_section: 'worker_remove_section',
|
|
19
|
+
readSections: 'worker_read_sections',
|
|
20
|
+
read_sections: 'worker_read_sections',
|
|
21
|
+
groupSections: 'worker_group_sections',
|
|
22
|
+
group_sections: 'worker_group_sections',
|
|
23
|
+
removeGrouping: 'worker_remove_grouping',
|
|
24
|
+
remove_grouping: 'worker_remove_grouping',
|
|
25
|
+
retrieveDocument: 'worker_retrieve_doc',
|
|
26
|
+
retrieve_doc: 'worker_retrieve_doc',
|
|
27
|
+
content: 'worker_compose',
|
|
28
|
+
compose: 'worker_compose',
|
|
29
|
+
integrity_check: 'worker_check_integrity',
|
|
30
|
+
integrityCheck: 'worker_check_integrity',
|
|
31
|
+
gc: 'worker_garbage_collect',
|
|
32
|
+
rebuild_indexes: 'worker_rebuild_indexes',
|
|
33
|
+
rebuildIndexes: 'worker_rebuild_indexes',
|
|
34
|
+
init_directory: 'worker_init_directory',
|
|
35
|
+
initDirectory: 'worker_init_directory',
|
|
36
|
+
migrateDatabase: 'worker_migrate',
|
|
37
|
+
query: 'worker_query',
|
|
38
|
+
get_result_status: 'worker_result_status',
|
|
39
|
+
get_result: 'worker_get_result',
|
|
40
|
+
invalidate: 'worker_invalidate',
|
|
41
|
+
invalidate_all: 'worker_invalidate_all',
|
|
42
|
+
invalidateAll: 'worker_invalidate_all',
|
|
43
|
+
db_status: 'worker_status',
|
|
44
|
+
dbStatus: 'worker_status',
|
|
45
|
+
listByType: 'worker_list_by_type',
|
|
46
|
+
list_by_type: 'worker_list_by_type',
|
|
47
|
+
listDocumentsByType: 'worker_list_docs_by_type',
|
|
48
|
+
list_docs_by_type: 'worker_list_docs_by_type',
|
|
49
|
+
recall: 'worker_recall',
|
|
50
|
+
export: 'worker_export',
|
|
51
|
+
exportDb: 'worker_export',
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/** Prefix shared by all IPC config-accessor method names. */
|
|
55
|
+
export const CONFIG_PREFIX = 'config_';
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Maps config IPC key suffixes to `DaemonConfig` property names.
|
|
59
|
+
*
|
|
60
|
+
* A client sends `config_timeout_ms` to read `config.timeoutMs`.
|
|
61
|
+
*/
|
|
62
|
+
export const CONFIG_KEY_MAP: Readonly<
|
|
63
|
+
Partial<Record<string, keyof DaemonConfig>>
|
|
64
|
+
> = {
|
|
65
|
+
timeout_ms: 'timeoutMs',
|
|
66
|
+
item_ttl_ms: 'itemTtlMs',
|
|
67
|
+
item_limit: 'itemLimit',
|
|
68
|
+
index_limit: 'indexLimit',
|
|
69
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { IpcResponse } from '../typings/ipc-handler.interface.ts';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Builds a JSON-RPC 2.0 error response object.
|
|
5
|
+
*
|
|
6
|
+
* @param id - request identifier to echo back in the response
|
|
7
|
+
* @param code - JSON-RPC error code
|
|
8
|
+
* @param message - human-readable error description
|
|
9
|
+
*/
|
|
10
|
+
export function buildIpcErrorResponse(
|
|
11
|
+
id: number | string,
|
|
12
|
+
code: number,
|
|
13
|
+
message: string,
|
|
14
|
+
): IpcResponse {
|
|
15
|
+
return { jsonrpc: '2.0', id, error: { code, message } };
|
|
16
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { DB_FORMAT_VERSION } from '../constants/daemon-defaults.constant.ts';
|
|
4
|
+
import { parseCatalogVersion } from './parse-catalog-version.function.ts';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Reads `catalog.toml` in `targetDir` and validates its version
|
|
8
|
+
* against `DB_FORMAT_VERSION`.
|
|
9
|
+
*
|
|
10
|
+
* @param targetDir - absolute path to the `.kbdb` directory
|
|
11
|
+
* @throws {Error} when the catalog cannot be read, is missing a
|
|
12
|
+
* version, or the version is incompatible with the current engine
|
|
13
|
+
*/
|
|
14
|
+
export function checkCatalogVersion(targetDir: string): void {
|
|
15
|
+
const catalogPath = join(targetDir, 'catalog.toml');
|
|
16
|
+
let text: string;
|
|
17
|
+
try {
|
|
18
|
+
text = readFileSync(catalogPath, 'utf-8');
|
|
19
|
+
} catch {
|
|
20
|
+
throw new Error(
|
|
21
|
+
`cannot read database directory: ${targetDir}` +
|
|
22
|
+
' -- permission denied',
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const version = parseCatalogVersion(text);
|
|
27
|
+
if (version === null) {
|
|
28
|
+
throw new Error(
|
|
29
|
+
'database version 0 requires migration to version ' +
|
|
30
|
+
String(DB_FORMAT_VERSION) +
|
|
31
|
+
' -- run `kbdb --migrate` before starting the daemon',
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (version > DB_FORMAT_VERSION) {
|
|
36
|
+
throw new Error(
|
|
37
|
+
'database version ' +
|
|
38
|
+
String(version) +
|
|
39
|
+
' is newer than kbdb version ' +
|
|
40
|
+
String(DB_FORMAT_VERSION) +
|
|
41
|
+
' -- upgrade kbdb to open this database',
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (version < DB_FORMAT_VERSION) {
|
|
46
|
+
throw new Error(
|
|
47
|
+
'database version ' +
|
|
48
|
+
String(version) +
|
|
49
|
+
' requires migration to version ' +
|
|
50
|
+
String(DB_FORMAT_VERSION) +
|
|
51
|
+
' -- run `kbdb --migrate` before starting the daemon',
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { existsSync, accessSync, constants } from 'node:fs';
|
|
2
|
+
import { checkCatalogVersion } from './check-catalog-version.function.ts';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Validates startup preconditions for the worker daemon.
|
|
6
|
+
*
|
|
7
|
+
* Checks that `targetDir` exists, is readable and writable, and
|
|
8
|
+
* that `catalog.toml` reports a compatible format version.
|
|
9
|
+
*
|
|
10
|
+
* @param targetDir - absolute path to the `.kbdb` directory
|
|
11
|
+
* @throws {Error} when any precondition fails
|
|
12
|
+
*/
|
|
13
|
+
export function checkPreconditions(targetDir: string): void {
|
|
14
|
+
if (!existsSync(targetDir)) {
|
|
15
|
+
throw new Error(`database directory not found: ${targetDir}`);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
try {
|
|
19
|
+
accessSync(targetDir, constants.R_OK | constants.W_OK);
|
|
20
|
+
} catch {
|
|
21
|
+
throw new Error(
|
|
22
|
+
`cannot access database directory: ${targetDir}` +
|
|
23
|
+
' -- permission denied',
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
checkCatalogVersion(targetDir);
|
|
28
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { existsSync, readFileSync, unlinkSync } from 'node:fs';
|
|
2
|
+
import { isProcessAlive } from '../../platform/functions/is-process-alive.function.ts';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Checks whether a PID file contains a stale process ID.
|
|
6
|
+
*
|
|
7
|
+
* Reads the PID from the file and checks whether the process is
|
|
8
|
+
* still running using `process.kill(pid, 0)`. If the process is
|
|
9
|
+
* dead, or the PID is unparseable, removes the PID file and
|
|
10
|
+
* returns `true`. Returns `false` when the process is alive or
|
|
11
|
+
* the file does not exist.
|
|
12
|
+
*
|
|
13
|
+
* @param pidPath - absolute path to the PID file to inspect
|
|
14
|
+
* @returns `true` if the PID file is stale (process dead or
|
|
15
|
+
* content invalid) and was removed; `false` if the process is
|
|
16
|
+
* alive or the file does not exist
|
|
17
|
+
*/
|
|
18
|
+
export function detectStalePid(pidPath: string): boolean {
|
|
19
|
+
if (!existsSync(pidPath)) return false;
|
|
20
|
+
|
|
21
|
+
const pidStr = readFileSync(pidPath, 'utf-8').trim();
|
|
22
|
+
const pid = parseInt(pidStr, 10);
|
|
23
|
+
const isAlive = !isNaN(pid) && pid > 0 && isProcessAlive(pid);
|
|
24
|
+
|
|
25
|
+
if (isAlive) return false;
|
|
26
|
+
|
|
27
|
+
try {
|
|
28
|
+
unlinkSync(pidPath);
|
|
29
|
+
} catch {
|
|
30
|
+
// Best-effort removal; stale file is treated as detected
|
|
31
|
+
}
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import type { DaemonConfig } from '../typings/daemon-config.interface.ts';
|
|
2
|
+
import type { HandlerContext } from '../typings/handler-context.interface.ts';
|
|
3
|
+
import { IpcError } from '../classes/ipc-error.class.ts';
|
|
4
|
+
import {
|
|
5
|
+
WASM_METHOD_MAP,
|
|
6
|
+
CONFIG_PREFIX,
|
|
7
|
+
} from '../constants/wasm-method-map.constant.ts';
|
|
8
|
+
import {
|
|
9
|
+
handleSearch,
|
|
10
|
+
handleResultStatus,
|
|
11
|
+
handleGetResult,
|
|
12
|
+
handleReadSections,
|
|
13
|
+
handleRetrieveDoc,
|
|
14
|
+
handleCompose,
|
|
15
|
+
handleIntegrityCheck,
|
|
16
|
+
handleDbStatus,
|
|
17
|
+
handleListByType,
|
|
18
|
+
handleListDocsByType,
|
|
19
|
+
handleRecall,
|
|
20
|
+
handleExport,
|
|
21
|
+
} from './handle-read-ops.function.ts';
|
|
22
|
+
import {
|
|
23
|
+
handleAddSection,
|
|
24
|
+
handleUpdateSection,
|
|
25
|
+
handleRemoveSection,
|
|
26
|
+
handleGroupSections,
|
|
27
|
+
handleRemoveGrouping,
|
|
28
|
+
handleInitDirectory,
|
|
29
|
+
handleInvalidate,
|
|
30
|
+
handleInvalidateAll,
|
|
31
|
+
handleGc,
|
|
32
|
+
handleRebuild,
|
|
33
|
+
} from './handle-write-ops.function.ts';
|
|
34
|
+
import { handleCheckVersion } from './handle-check-version.function.ts';
|
|
35
|
+
import { handleConfigMethod } from './handle-config-method.function.ts';
|
|
36
|
+
import {
|
|
37
|
+
acquireWriteLock,
|
|
38
|
+
releaseWriteLock,
|
|
39
|
+
} from './write-lock.function.ts';
|
|
40
|
+
import type { WriteLockState } from '../typings/write-lock.interface.ts';
|
|
41
|
+
import { callWasmSync } from './wasm-bridge.function.ts';
|
|
42
|
+
|
|
43
|
+
/** Daemon status information returned by `status` and `idle_at`. */
|
|
44
|
+
interface DaemonStatus {
|
|
45
|
+
/** Whether the daemon is currently serving connections. */
|
|
46
|
+
readonly status: 'busy' | 'idle';
|
|
47
|
+
/** Whether the startup integrity check passed. */
|
|
48
|
+
readonly integrityOk: boolean;
|
|
49
|
+
/** Integrity errors found at startup, if any. */
|
|
50
|
+
readonly integrityErrors: string[];
|
|
51
|
+
/** Unix timestamp (seconds) of the last completed request. */
|
|
52
|
+
readonly idleAt: number;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Dispatches an IPC method to its handler.
|
|
57
|
+
*
|
|
58
|
+
* Routes daemon-state methods inline and delegates WASM read/write
|
|
59
|
+
* operations to their respective handler functions. Write operations
|
|
60
|
+
* are serialised through the single-writer lock.
|
|
61
|
+
*
|
|
62
|
+
* @param method - IPC method name
|
|
63
|
+
* @param params - request parameters
|
|
64
|
+
* @param ctx - handler context (WASM modules, config, targetDir)
|
|
65
|
+
* @param daemonStatus - live daemon state read by the `status` method
|
|
66
|
+
* @param writeLock - shared write-lock state
|
|
67
|
+
*/
|
|
68
|
+
export async function dispatchRequest(
|
|
69
|
+
method: string,
|
|
70
|
+
params: Record<string, unknown>,
|
|
71
|
+
ctx: HandlerContext,
|
|
72
|
+
daemonStatus: DaemonStatus,
|
|
73
|
+
writeLock: WriteLockState,
|
|
74
|
+
): Promise<unknown> {
|
|
75
|
+
if (method === 'status') {
|
|
76
|
+
return {
|
|
77
|
+
status: daemonStatus.status,
|
|
78
|
+
integrityOk: daemonStatus.integrityOk,
|
|
79
|
+
integrityErrors: daemonStatus.integrityErrors,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
if (method === 'idle_at') return daemonStatus.idleAt;
|
|
83
|
+
if (method === 'checkVersion') {
|
|
84
|
+
return handleCheckVersion(params, ctx.targetDir);
|
|
85
|
+
}
|
|
86
|
+
if (method.startsWith(CONFIG_PREFIX)) {
|
|
87
|
+
return handleConfigMethod(method, ctx.config);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const wasmMethod = WASM_METHOD_MAP[method];
|
|
91
|
+
if (wasmMethod === undefined) {
|
|
92
|
+
throw new IpcError(-32601, `Method not found: ${method}`);
|
|
93
|
+
}
|
|
94
|
+
return dispatchWasm(method, wasmMethod, params, ctx, writeLock);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async function dispatchWasm(
|
|
98
|
+
method: string,
|
|
99
|
+
wasmExport: string,
|
|
100
|
+
params: Record<string, unknown>,
|
|
101
|
+
ctx: HandlerContext,
|
|
102
|
+
writeLock: WriteLockState,
|
|
103
|
+
): Promise<unknown> {
|
|
104
|
+
// Read-only operations -- no write lock required.
|
|
105
|
+
if (method === 'search' || method === 'query') {
|
|
106
|
+
return handleSearch(ctx, params);
|
|
107
|
+
}
|
|
108
|
+
if (method === 'readSections' || method === 'read_sections') {
|
|
109
|
+
return handleReadSections(ctx, params);
|
|
110
|
+
}
|
|
111
|
+
if (method === 'retrieveDocument' || method === 'retrieve_doc') {
|
|
112
|
+
return handleRetrieveDoc(ctx, params);
|
|
113
|
+
}
|
|
114
|
+
if (method === 'content' || method === 'compose') {
|
|
115
|
+
return handleCompose(ctx, params);
|
|
116
|
+
}
|
|
117
|
+
if (method === 'integrityCheck' || method === 'integrity_check') {
|
|
118
|
+
return handleIntegrityCheck(ctx);
|
|
119
|
+
}
|
|
120
|
+
if (method === 'dbStatus' || method === 'db_status') {
|
|
121
|
+
return handleDbStatus(ctx);
|
|
122
|
+
}
|
|
123
|
+
if (method === 'get_result_status') {
|
|
124
|
+
return handleResultStatus(ctx, params);
|
|
125
|
+
}
|
|
126
|
+
if (method === 'get_result') {
|
|
127
|
+
return handleGetResult(ctx, params);
|
|
128
|
+
}
|
|
129
|
+
if (method === 'listByType' || method === 'list_by_type') {
|
|
130
|
+
return handleListByType(ctx, params);
|
|
131
|
+
}
|
|
132
|
+
if (
|
|
133
|
+
method === 'listDocumentsByType' ||
|
|
134
|
+
method === 'list_docs_by_type'
|
|
135
|
+
) {
|
|
136
|
+
return handleListDocsByType(ctx, params);
|
|
137
|
+
}
|
|
138
|
+
if (method === 'recall') return handleRecall(ctx, params);
|
|
139
|
+
if (method === 'export' || method === 'exportDb') {
|
|
140
|
+
return handleExport(ctx, params);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Write operations -- serialised through the single-writer lock.
|
|
144
|
+
await acquireWriteLock(writeLock);
|
|
145
|
+
try {
|
|
146
|
+
if (method === 'invalidate') return handleInvalidate(ctx, params);
|
|
147
|
+
if (method === 'invalidateAll' || method === 'invalidate_all') {
|
|
148
|
+
return handleInvalidateAll(ctx);
|
|
149
|
+
}
|
|
150
|
+
if (method === 'addSection' || method === 'add_section') {
|
|
151
|
+
return handleAddSection(ctx, params);
|
|
152
|
+
}
|
|
153
|
+
if (method === 'updateSection' || method === 'update_section') {
|
|
154
|
+
return handleUpdateSection(ctx, params);
|
|
155
|
+
}
|
|
156
|
+
if (method === 'removeSection' || method === 'remove_section') {
|
|
157
|
+
return handleRemoveSection(ctx, params);
|
|
158
|
+
}
|
|
159
|
+
if (method === 'groupSections' || method === 'group_sections') {
|
|
160
|
+
return handleGroupSections(ctx, params);
|
|
161
|
+
}
|
|
162
|
+
if (method === 'removeGrouping' || method === 'remove_grouping') {
|
|
163
|
+
return handleRemoveGrouping(ctx, params);
|
|
164
|
+
}
|
|
165
|
+
if (method === 'gc') return handleGc(ctx);
|
|
166
|
+
if (method === 'rebuildIndexes' || method === 'rebuild_indexes') {
|
|
167
|
+
return handleRebuild(ctx);
|
|
168
|
+
}
|
|
169
|
+
if (method === 'initDirectory' || method === 'init_directory') {
|
|
170
|
+
return handleInitDirectory(ctx, params);
|
|
171
|
+
}
|
|
172
|
+
if (method === 'migrateDatabase') {
|
|
173
|
+
throw new IpcError(
|
|
174
|
+
-32601,
|
|
175
|
+
'migrateDatabase is not yet supported',
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
return callWasmSync(ctx.modules, wasmExport, new Uint8Array(0));
|
|
179
|
+
} finally {
|
|
180
|
+
releaseWriteLock(writeLock);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Re-export `DaemonConfig` so callers can pass strongly-typed
|
|
186
|
+
* config without an extra import.
|
|
187
|
+
*
|
|
188
|
+
* @internal
|
|
189
|
+
*/
|
|
190
|
+
export type { DaemonConfig };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { DB_FORMAT_VERSION } from '../constants/daemon-defaults.constant.ts';
|
|
4
|
+
import { parseCatalogVersion } from './parse-catalog-version.function.ts';
|
|
5
|
+
|
|
6
|
+
/** Payload returned by the `checkVersion` IPC method. */
|
|
7
|
+
interface VersionCheckResult {
|
|
8
|
+
/** Compatibility status string. */
|
|
9
|
+
readonly status: string;
|
|
10
|
+
/** Format version stored in the catalog. */
|
|
11
|
+
readonly currentVersion: number;
|
|
12
|
+
/** Format version required by the current engine. */
|
|
13
|
+
readonly requiredVersion: number;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Handles the `checkVersion` IPC method.
|
|
18
|
+
*
|
|
19
|
+
* Reads `catalog.toml` at `targetPath` and compares its format
|
|
20
|
+
* version to `DB_FORMAT_VERSION`. Returns a result object without
|
|
21
|
+
* making any modifications.
|
|
22
|
+
*
|
|
23
|
+
* @param targetPath - absolute path to the `.kbdb` directory to
|
|
24
|
+
* inspect; falls back to `defaultDir` when not provided in params
|
|
25
|
+
* @param defaultDir - fallback directory when `params.targetPath`
|
|
26
|
+
* is absent
|
|
27
|
+
*/
|
|
28
|
+
export function handleCheckVersion(
|
|
29
|
+
params: Record<string, unknown>,
|
|
30
|
+
defaultDir: string,
|
|
31
|
+
): VersionCheckResult {
|
|
32
|
+
const targetPath =
|
|
33
|
+
typeof params['targetPath'] === 'string'
|
|
34
|
+
? params['targetPath']
|
|
35
|
+
: defaultDir;
|
|
36
|
+
const catalogPath = join(targetPath, 'catalog.toml');
|
|
37
|
+
let text: string;
|
|
38
|
+
try {
|
|
39
|
+
text = readFileSync(catalogPath, 'utf-8');
|
|
40
|
+
} catch {
|
|
41
|
+
return {
|
|
42
|
+
status: 'needs_migration',
|
|
43
|
+
currentVersion: 0,
|
|
44
|
+
requiredVersion: DB_FORMAT_VERSION,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const version = parseCatalogVersion(text);
|
|
48
|
+
if (version === null) {
|
|
49
|
+
return {
|
|
50
|
+
status: 'needs_migration',
|
|
51
|
+
currentVersion: 0,
|
|
52
|
+
requiredVersion: DB_FORMAT_VERSION,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (version > DB_FORMAT_VERSION) {
|
|
56
|
+
return {
|
|
57
|
+
status: 'too_new',
|
|
58
|
+
currentVersion: version,
|
|
59
|
+
requiredVersion: DB_FORMAT_VERSION,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (version < DB_FORMAT_VERSION) {
|
|
63
|
+
return {
|
|
64
|
+
status: 'needs_migration',
|
|
65
|
+
currentVersion: version,
|
|
66
|
+
requiredVersion: DB_FORMAT_VERSION,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
status: 'compatible',
|
|
71
|
+
currentVersion: version,
|
|
72
|
+
requiredVersion: DB_FORMAT_VERSION,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { DaemonConfig } from '../typings/daemon-config.interface.ts';
|
|
2
|
+
import { IpcError } from '../classes/ipc-error.class.ts';
|
|
3
|
+
import {
|
|
4
|
+
CONFIG_PREFIX,
|
|
5
|
+
CONFIG_KEY_MAP,
|
|
6
|
+
} from '../constants/wasm-method-map.constant.ts';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Handles `config_{key}` IPC methods by returning the corresponding
|
|
10
|
+
* `DaemonConfig` field value.
|
|
11
|
+
*
|
|
12
|
+
* @param method - the full method name, e.g. `config_timeout_ms`
|
|
13
|
+
* @param config - parsed daemon configuration
|
|
14
|
+
* @throws {IpcError} with code `-32601` when the key suffix is not
|
|
15
|
+
* in `CONFIG_KEY_MAP`
|
|
16
|
+
*/
|
|
17
|
+
export function handleConfigMethod(
|
|
18
|
+
method: string,
|
|
19
|
+
config: DaemonConfig,
|
|
20
|
+
): unknown {
|
|
21
|
+
const key = method.slice(CONFIG_PREFIX.length);
|
|
22
|
+
const prop = CONFIG_KEY_MAP[key];
|
|
23
|
+
if (prop === undefined) {
|
|
24
|
+
throw new IpcError(-32601, `Method not found: ${method}`);
|
|
25
|
+
}
|
|
26
|
+
return config[prop];
|
|
27
|
+
}
|