@dikolab/kbdb 0.2.2 → 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 +47 -31
- 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 +523 -80
- package/dist/cli.cjs.map +4 -4
- package/dist/cli.mjs +515 -72
- package/dist/cli.mjs.map +4 -4
- package/dist/kbdb-worker.cjs +395 -60
- package/dist/kbdb-worker.cjs.map +4 -4
- package/dist/mod.cjs +17 -0
- package/dist/mod.cjs.map +2 -2
- package/dist/mod.mjs +17 -0
- package/dist/mod.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/dispatch-command.function.d.ts +3 -1
- 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/install-default-skills.function.d.ts +12 -0
- package/dist/src/shared/cli/functions/resolve-skill-names.function.d.ts +16 -0
- package/dist/src/shared/cli/functions/run-check.function.d.ts +47 -5
- package/dist/src/shared/cli/functions/run-export.function.d.ts +34 -0
- package/dist/src/shared/cli/functions/run-gc.function.d.ts +6 -0
- package/dist/src/shared/cli/functions/run-learn.function.d.ts +35 -6
- package/dist/src/shared/cli/functions/run-recall.function.d.ts +45 -0
- package/dist/src/shared/cli/functions/run-search.function.d.ts +53 -15
- 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/index.d.ts +4 -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 +15 -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/learn-result.model.d.ts +19 -0
- package/dist/src/shared/cli/typings/search-client.interface.d.ts +71 -0
- package/dist/src/shared/cli/typings/search-display.model.d.ts +18 -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/classes/mcp-server.class.d.ts +8 -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 +45 -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-add-section-result.function.d.ts +48 -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-scored-results.function.d.ts +58 -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-records.function.d.ts +33 -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/functions/encode-add-section-params.function.d.ts +52 -0
- package/dist/src/shared/wasm-codec/index.d.ts +2 -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/classes/worker-client.class.d.ts +16 -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/index.d.ts +1 -1
- package/dist/src/shared/worker-client/typings/add-section-result.model.d.ts +31 -15
- package/dist/src/shared/worker-client/typings/export-result.model.d.ts +14 -0
- package/dist/src/shared/worker-client/typings/gc-result.model.d.ts +6 -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-client/typings/search-result.model.d.ts +12 -0
- package/dist/src/shared/worker-client/typings/section.model.d.ts +16 -0
- package/dist/src/shared/worker-daemon/classes/ipc-error.class.d.ts +17 -0
- package/dist/src/shared/worker-daemon/classes/worker-daemon.class.d.ts +35 -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.d.ts +22 -1
- package/dist/wasm/fs-database/kbdb_fs_database.js +28 -1
- package/dist/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
- package/dist/wasm/fs-database/kbdb_fs_database_bg.wasm.d.ts +1 -0
- package/dist/wasm/kb-worker/kbdb_worker.d.ts +48 -1
- package/dist/wasm/kb-worker/kbdb_worker.js +60 -1
- package/dist/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
- package/dist/wasm/kb-worker/kbdb_worker_bg.wasm.d.ts +2 -0
- package/dist/wasm/query-parser/kbdb_query_parser_bg.wasm +0 -0
- package/dist/worker.mjs +396 -60
- package/dist/worker.mjs.map +4 -4
- package/docs/details/cli.md +102 -15
- package/docs/details/library-api.md +55 -6
- package/docs/details/mcp-server.md +10 -4
- package/docs/details/search-and-ranking.md +63 -5
- package/docs/details/storage.md +2 -0
- package/docs/goals/auto-capture.md +378 -0
- package/docs/goals/benchmarking.md +296 -0
- package/docs/goals/cli.md +255 -14
- package/docs/goals/concurrency.md +259 -0
- package/docs/goals/database.md +244 -17
- package/docs/goals/document.md +1 -1
- package/docs/goals/hybrid-search.md +436 -0
- package/docs/goals/mcp.md +83 -14
- package/docs/goals/query-parser.md +98 -4
- package/docs/goals/query-result.md +177 -10
- package/docs/goals/semantic-dedup.md +229 -0
- package/docs/goals/skills.md +72 -0
- package/docs/goals/sync.md +217 -0
- package/docs/goals/worker-daemon.md +54 -7
- package/docs/modules/rust/fs-database/functions/integrity.md +11 -0
- package/docs/modules/rust/fs-database/functions/section.md +23 -6
- package/docs/modules/rust/fs-database/indexes/vectors.md +110 -0
- package/docs/modules/rust/fs-database/module.md +1 -0
- package/docs/modules/rust/fs-database/types/section.md +27 -1
- package/docs/modules/rust/overview.md +2 -1
- package/docs/modules/rust/query-parser/functions/module.md +2 -2
- package/docs/modules/rust/query-parser/functions/pipeline.md +44 -6
- package/docs/modules/rust/query-parser/module.md +5 -4
- package/docs/modules/rust/query-parser/types/keyphrase.md +11 -0
- package/docs/modules/rust/query-parser/types/module.md +3 -3
- package/docs/modules/typescript/shared/auto-capture/module.md +73 -0
- package/docs/modules/typescript/shared/cli/functions.md +68 -3
- 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/dispatch-command.function.ts +53 -1
- package/src/shared/cli/functions/format-mcp-output.function.ts +41 -0
- package/src/shared/cli/functions/format-output.function.ts +36 -12
- 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/generate-help.function.ts +56 -1
- 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/install-default-skills.function.ts +296 -0
- package/src/shared/cli/functions/parse-args.function.ts +16 -0
- package/src/shared/cli/functions/resolve-skill-names.function.ts +43 -0
- package/src/shared/cli/functions/run-check.function.ts +87 -6
- package/src/shared/cli/functions/run-export.function.ts +40 -0
- package/src/shared/cli/functions/run-gc.function.ts +6 -0
- package/src/shared/cli/functions/run-init.function.ts +2 -0
- package/src/shared/cli/functions/run-learn.function.ts +68 -16
- package/src/shared/cli/functions/run-recall.function.ts +66 -0
- package/src/shared/cli/functions/run-search.function.ts +60 -15
- 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/index.ts +4 -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 +15 -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/learn-result.model.ts +16 -0
- package/src/shared/cli/typings/search-client.interface.ts +73 -0
- package/src/shared/cli/typings/search-display.model.ts +18 -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 +36 -4
- 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 +74 -5
- 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 +88 -2
- 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 +47 -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-add-section-result.function.ts +112 -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-scored-results.function.ts +86 -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-records.function.ts +87 -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/functions/encode-add-section-params.function.ts +68 -0
- package/src/shared/wasm-codec/index.ts +5 -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/classes/worker-client.class.ts +19 -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/index.ts +4 -1
- package/src/shared/worker-client/typings/add-section-result.model.ts +32 -15
- package/src/shared/worker-client/typings/export-result.model.ts +14 -0
- package/src/shared/worker-client/typings/gc-result.model.ts +6 -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-client/typings/search-result.model.ts +12 -0
- package/src/shared/worker-client/typings/section.model.ts +16 -0
- package/src/shared/worker-daemon/classes/ipc-error.class.ts +22 -0
- package/src/shared/worker-daemon/classes/worker-daemon.class.ts +315 -46
- 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/create-host-imports.function.ts +19 -4
- package/src/shared/worker-daemon/functions/create-ipc-server.function.ts +5 -1
- 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.d.ts +22 -1
- package/src/wasm/fs-database/kbdb_fs_database.js +28 -1
- package/src/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
- package/src/wasm/fs-database/kbdb_fs_database_bg.wasm.d.ts +1 -0
- package/src/wasm/kb-worker/kbdb_worker.d.ts +48 -1
- package/src/wasm/kb-worker/kbdb_worker.js +60 -1
- package/src/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
- package/src/wasm/kb-worker/kbdb_worker_bg.wasm.d.ts +2 -0
- package/src/wasm/query-parser/kbdb_query_parser_bg.wasm +0 -0
|
@@ -136,8 +136,9 @@ export function createHostImports(
|
|
|
136
136
|
|
|
137
137
|
function readPathArg(ptr: number, len: number): string {
|
|
138
138
|
const bytes = new Uint8Array(getBuffer(), ptr, len);
|
|
139
|
-
const
|
|
140
|
-
|
|
139
|
+
const decoded = new TextDecoder().decode(bytes);
|
|
140
|
+
if (decoded.startsWith('/')) return decoded;
|
|
141
|
+
return join(contextPath, decoded);
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
return {
|
|
@@ -163,14 +164,21 @@ export function createHostImports(
|
|
|
163
164
|
const filePath = readPathArg(pathPtr, pathLen);
|
|
164
165
|
const data = fs.readFileSync(filePath);
|
|
165
166
|
const dataLen = data.byteLength;
|
|
166
|
-
const dv = new DataView(getBuffer());
|
|
167
167
|
if (dataLen === 0) {
|
|
168
|
+
// No allocation -- buffer cannot have grown; safe to
|
|
169
|
+
// create DataView now.
|
|
170
|
+
const dv = new DataView(getBuffer());
|
|
168
171
|
dv.setUint32(outPtr, 0, true);
|
|
169
172
|
dv.setUint32(outLen, 0, true);
|
|
170
173
|
return 0;
|
|
171
174
|
}
|
|
172
175
|
const dataPtr = allocator.alloc(dataLen);
|
|
173
176
|
if (dataPtr === 0) return -1;
|
|
177
|
+
// Create DataView AFTER alloc() -- alloc may trigger WASM
|
|
178
|
+
// memory growth, which detaches the old ArrayBuffer and
|
|
179
|
+
// replaces it with a new one. A DataView captured before
|
|
180
|
+
// growth would reference the detached buffer and throw.
|
|
181
|
+
const dv = new DataView(getBuffer());
|
|
174
182
|
const memView = new Uint8Array(getBuffer());
|
|
175
183
|
memView.set(
|
|
176
184
|
new Uint8Array(
|
|
@@ -267,14 +275,21 @@ export function createHostImports(
|
|
|
267
275
|
const entries = fs.readdirSync(dirPath);
|
|
268
276
|
const text = entries.join('\n');
|
|
269
277
|
const encoded = new TextEncoder().encode(text);
|
|
270
|
-
const dv = new DataView(getBuffer());
|
|
271
278
|
if (encoded.length === 0) {
|
|
279
|
+
// No allocation -- buffer cannot have grown; safe to
|
|
280
|
+
// create DataView now.
|
|
281
|
+
const dv = new DataView(getBuffer());
|
|
272
282
|
dv.setUint32(outPtr, 0, true);
|
|
273
283
|
dv.setUint32(outLen, 0, true);
|
|
274
284
|
return 0;
|
|
275
285
|
}
|
|
276
286
|
const dataPtr = allocator.alloc(encoded.length);
|
|
277
287
|
if (dataPtr === 0) return -1;
|
|
288
|
+
// Create DataView AFTER alloc() -- alloc may trigger WASM
|
|
289
|
+
// memory growth, which detaches the old ArrayBuffer and
|
|
290
|
+
// replaces it with a new one. A DataView captured before
|
|
291
|
+
// growth would reference the detached buffer and throw.
|
|
292
|
+
const dv = new DataView(getBuffer());
|
|
278
293
|
new Uint8Array(getBuffer(), dataPtr, encoded.length).set(
|
|
279
294
|
encoded,
|
|
280
295
|
);
|
|
@@ -28,6 +28,8 @@ export function createIpcServer(
|
|
|
28
28
|
const server = createServer((socket) => {
|
|
29
29
|
let buffer = '';
|
|
30
30
|
|
|
31
|
+
let processingQueue = Promise.resolve();
|
|
32
|
+
|
|
31
33
|
socket.on('data', (chunk: Buffer) => {
|
|
32
34
|
buffer += chunk.toString();
|
|
33
35
|
const lines = buffer.split('\n');
|
|
@@ -35,7 +37,9 @@ export function createIpcServer(
|
|
|
35
37
|
|
|
36
38
|
for (const line of lines) {
|
|
37
39
|
if (!line.trim()) continue;
|
|
38
|
-
|
|
40
|
+
processingQueue = processingQueue.then(() =>
|
|
41
|
+
handleLine(line, handler, socket),
|
|
42
|
+
);
|
|
39
43
|
}
|
|
40
44
|
});
|
|
41
45
|
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import {
|
|
2
|
+
encodeSearchParams,
|
|
3
|
+
encodeKbidList,
|
|
4
|
+
encodeIdentifierList,
|
|
5
|
+
encodeTypeFilterParam,
|
|
6
|
+
encodeRecallParams,
|
|
7
|
+
decodePagedSearchResult,
|
|
8
|
+
decodeSectionRecords,
|
|
9
|
+
decodeSectionRecordList,
|
|
10
|
+
decodeDocumentManifest,
|
|
11
|
+
decodeDocumentManifestList,
|
|
12
|
+
decodeComposeOutput,
|
|
13
|
+
decodeKeyValueText,
|
|
14
|
+
decodeRecallResult,
|
|
15
|
+
} from '../../wasm-codec/index.ts';
|
|
16
|
+
import type { HandlerContext } from '../typings/handler-context.interface.ts';
|
|
17
|
+
import { IpcError } from '../classes/ipc-error.class.ts';
|
|
18
|
+
import {
|
|
19
|
+
getWasmExport,
|
|
20
|
+
wasmAlloc,
|
|
21
|
+
wasmWrite,
|
|
22
|
+
wasmFree,
|
|
23
|
+
readReturnSlot,
|
|
24
|
+
callWasmSync,
|
|
25
|
+
callWasmZeroArg,
|
|
26
|
+
} from './wasm-bridge.function.ts';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Handles `search` and `query` IPC methods.
|
|
30
|
+
*
|
|
31
|
+
* Encodes parameters, invokes the `worker_search` token pipeline,
|
|
32
|
+
* waits synchronously for the result, and decodes the paged result.
|
|
33
|
+
*/
|
|
34
|
+
export function handleSearch(
|
|
35
|
+
ctx: HandlerContext,
|
|
36
|
+
params: Record<string, unknown>,
|
|
37
|
+
): unknown {
|
|
38
|
+
const query = (params['query'] as string | undefined) ?? '';
|
|
39
|
+
const mode = (params['mode'] as string | undefined) ?? 'and';
|
|
40
|
+
const limit = Number(params['limit'] ?? 20);
|
|
41
|
+
const offset = Number(params['offset'] ?? 0);
|
|
42
|
+
const encoded = encodeSearchParams(query, mode, limit, offset);
|
|
43
|
+
|
|
44
|
+
const searchFn = getWasmExport(ctx.modules, 'worker_search');
|
|
45
|
+
const ptr = wasmAlloc(ctx.modules, encoded.length);
|
|
46
|
+
wasmWrite(ctx.modules, ptr, encoded);
|
|
47
|
+
const token = searchFn(ptr, encoded.length) as number;
|
|
48
|
+
wasmFree(ctx.modules, ptr, encoded.length);
|
|
49
|
+
|
|
50
|
+
const statusFn = getWasmExport(ctx.modules, 'worker_result_status');
|
|
51
|
+
const status = statusFn(token) as number;
|
|
52
|
+
if (status === 3) {
|
|
53
|
+
getWasmExport(ctx.modules, 'worker_get_result')(token);
|
|
54
|
+
const errBytes = readReturnSlot(ctx.modules);
|
|
55
|
+
throw new IpcError(-32000, new TextDecoder().decode(errBytes));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const getResultFn = getWasmExport(ctx.modules, 'worker_get_result');
|
|
59
|
+
const rc = getResultFn(token) as number;
|
|
60
|
+
if (rc === -1) {
|
|
61
|
+
const errBytes = readReturnSlot(ctx.modules);
|
|
62
|
+
throw new IpcError(-32000, new TextDecoder().decode(errBytes));
|
|
63
|
+
}
|
|
64
|
+
return decodePagedSearchResult(readReturnSlot(ctx.modules));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Handles the `get_result_status` IPC method.
|
|
69
|
+
*/
|
|
70
|
+
export function handleResultStatus(
|
|
71
|
+
ctx: HandlerContext,
|
|
72
|
+
params: Record<string, unknown>,
|
|
73
|
+
): unknown {
|
|
74
|
+
const token = Number(params['token'] ?? 0);
|
|
75
|
+
const fn = getWasmExport(ctx.modules, 'worker_result_status');
|
|
76
|
+
return { status: fn(token) as number };
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Handles the `get_result` IPC method.
|
|
81
|
+
*/
|
|
82
|
+
export function handleGetResult(
|
|
83
|
+
ctx: HandlerContext,
|
|
84
|
+
params: Record<string, unknown>,
|
|
85
|
+
): unknown {
|
|
86
|
+
const token = Number(params['token'] ?? 0);
|
|
87
|
+
const fn = getWasmExport(ctx.modules, 'worker_get_result');
|
|
88
|
+
const rc = fn(token) as number;
|
|
89
|
+
if (rc === -1) {
|
|
90
|
+
const errBytes = readReturnSlot(ctx.modules);
|
|
91
|
+
throw new IpcError(-32000, new TextDecoder().decode(errBytes));
|
|
92
|
+
}
|
|
93
|
+
return decodePagedSearchResult(readReturnSlot(ctx.modules));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Handles the `readSections` IPC method.
|
|
98
|
+
*/
|
|
99
|
+
export function handleReadSections(
|
|
100
|
+
ctx: HandlerContext,
|
|
101
|
+
params: Record<string, unknown>,
|
|
102
|
+
): unknown {
|
|
103
|
+
const kbids = (params['kbids'] ?? []) as string[];
|
|
104
|
+
const encoded = encodeKbidList(kbids);
|
|
105
|
+
const bytes = callWasmSync(
|
|
106
|
+
ctx.modules,
|
|
107
|
+
'worker_read_sections',
|
|
108
|
+
encoded,
|
|
109
|
+
);
|
|
110
|
+
return decodeSectionRecords(bytes);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Handles the `retrieveDocument` IPC method.
|
|
115
|
+
*/
|
|
116
|
+
export function handleRetrieveDoc(
|
|
117
|
+
ctx: HandlerContext,
|
|
118
|
+
params: Record<string, unknown>,
|
|
119
|
+
): unknown {
|
|
120
|
+
const docid = (params['docid'] as string | undefined) ?? '';
|
|
121
|
+
const encoded = new TextEncoder().encode(docid);
|
|
122
|
+
const bytes = callWasmSync(
|
|
123
|
+
ctx.modules,
|
|
124
|
+
'worker_retrieve_doc',
|
|
125
|
+
encoded,
|
|
126
|
+
);
|
|
127
|
+
return decodeDocumentManifest(bytes);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Handles the `content` and `compose` IPC methods.
|
|
132
|
+
*/
|
|
133
|
+
export function handleCompose(
|
|
134
|
+
ctx: HandlerContext,
|
|
135
|
+
params: Record<string, unknown>,
|
|
136
|
+
): unknown {
|
|
137
|
+
const ids = (params['ids'] ?? []) as string[];
|
|
138
|
+
const encoded = encodeIdentifierList(ids);
|
|
139
|
+
const bytes = callWasmSync(ctx.modules, 'worker_compose', encoded);
|
|
140
|
+
const output = decodeComposeOutput(bytes);
|
|
141
|
+
return { data: output.markdown, total: Number(output.totalChars) };
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Handles the `integrityCheck` IPC method.
|
|
146
|
+
*/
|
|
147
|
+
export function handleIntegrityCheck(ctx: HandlerContext): unknown {
|
|
148
|
+
callWasmZeroArg(ctx.modules, 'worker_check_integrity');
|
|
149
|
+
const bytes = readReturnSlot(ctx.modules);
|
|
150
|
+
return decodeKeyValueText(new TextDecoder().decode(bytes));
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Handles the `dbStatus` IPC method.
|
|
155
|
+
*/
|
|
156
|
+
export function handleDbStatus(ctx: HandlerContext): unknown {
|
|
157
|
+
callWasmZeroArg(ctx.modules, 'worker_status');
|
|
158
|
+
const bytes = readReturnSlot(ctx.modules);
|
|
159
|
+
return decodeKeyValueText(new TextDecoder().decode(bytes));
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Handles the `listByType` IPC method.
|
|
164
|
+
*/
|
|
165
|
+
export function handleListByType(
|
|
166
|
+
ctx: HandlerContext,
|
|
167
|
+
params: Record<string, unknown>,
|
|
168
|
+
): unknown {
|
|
169
|
+
const typeStr = (params['sectionType'] as string | undefined) ?? '';
|
|
170
|
+
const encoded = encodeTypeFilterParam(typeStr);
|
|
171
|
+
const bytes = callWasmSync(
|
|
172
|
+
ctx.modules,
|
|
173
|
+
'worker_list_by_type',
|
|
174
|
+
encoded,
|
|
175
|
+
);
|
|
176
|
+
return decodeSectionRecordList(bytes);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Handles the `listDocumentsByType` IPC method.
|
|
181
|
+
*/
|
|
182
|
+
export function handleListDocsByType(
|
|
183
|
+
ctx: HandlerContext,
|
|
184
|
+
params: Record<string, unknown>,
|
|
185
|
+
): unknown {
|
|
186
|
+
const typeStr = (params['docType'] as string | undefined) ?? '';
|
|
187
|
+
const encoded = encodeTypeFilterParam(typeStr);
|
|
188
|
+
const bytes = callWasmSync(
|
|
189
|
+
ctx.modules,
|
|
190
|
+
'worker_list_docs_by_type',
|
|
191
|
+
encoded,
|
|
192
|
+
);
|
|
193
|
+
return decodeDocumentManifestList(bytes);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Handles the `recall` IPC method.
|
|
198
|
+
*/
|
|
199
|
+
export function handleRecall(
|
|
200
|
+
ctx: HandlerContext,
|
|
201
|
+
params: Record<string, unknown>,
|
|
202
|
+
): unknown {
|
|
203
|
+
const kbid =
|
|
204
|
+
typeof params['kbid'] === 'string' ? params['kbid'] : undefined;
|
|
205
|
+
const kbids = Array.isArray(params['kbids'])
|
|
206
|
+
? (params['kbids'] as string[])
|
|
207
|
+
: undefined;
|
|
208
|
+
const depth = Number(params['depth'] ?? 0);
|
|
209
|
+
const encoded = encodeRecallParams({ kbid, kbids, depth });
|
|
210
|
+
const bytes = callWasmSync(ctx.modules, 'worker_recall', encoded);
|
|
211
|
+
return decodeRecallResult(bytes);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Handles the `export` and `exportDb` IPC methods.
|
|
216
|
+
*/
|
|
217
|
+
export function handleExport(
|
|
218
|
+
ctx: HandlerContext,
|
|
219
|
+
params: Record<string, unknown>,
|
|
220
|
+
): unknown {
|
|
221
|
+
const targetPath =
|
|
222
|
+
(params['targetPath'] as string | undefined) ??
|
|
223
|
+
(params['path'] as string | undefined) ??
|
|
224
|
+
'./kbdb-export/';
|
|
225
|
+
const encoded = new TextEncoder().encode(targetPath);
|
|
226
|
+
const start = Date.now();
|
|
227
|
+
const bytes = callWasmSync(ctx.modules, 'worker_export', encoded);
|
|
228
|
+
const elapsed = Date.now() - start;
|
|
229
|
+
const kv = decodeKeyValueText(new TextDecoder().decode(bytes));
|
|
230
|
+
return {
|
|
231
|
+
path: kv['path'] ?? targetPath,
|
|
232
|
+
sections_exported: Number(kv['sections_exported'] ?? 0),
|
|
233
|
+
documents_exported: Number(kv['documents_exported'] ?? 0),
|
|
234
|
+
elapsed_ms: elapsed,
|
|
235
|
+
};
|
|
236
|
+
}
|