@dikolab/kbdb 0.3.0 → 0.3.2
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 +89 -120
- 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/cli.md +9 -0
- package/docs/details/mcp-server.md +5 -3
- package/docs/details/search-and-ranking.md +55 -0
- 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 +171 -167
- 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 +121 -0
- package/docs/release-notes/0.3.2.md +64 -0
- package/docs/release-notes/README.md +3 -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,25 @@
|
|
|
1
|
+
import type { McpToolDefinition } from '../typings/mcp-types.interface.ts';
|
|
2
|
+
|
|
3
|
+
/** MCP tool definition for the `unlearn` operation. */
|
|
4
|
+
export const TOOL_UNLEARN: McpToolDefinition = {
|
|
5
|
+
name: 'unlearn',
|
|
6
|
+
description:
|
|
7
|
+
'Remove a section from the knowledge base' + ' by its kb-id.',
|
|
8
|
+
inputSchema: {
|
|
9
|
+
type: 'object',
|
|
10
|
+
properties: {
|
|
11
|
+
kbid: {
|
|
12
|
+
type: 'string',
|
|
13
|
+
description: 'Knowledge base ID of the section',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
required: ['kbid'],
|
|
17
|
+
},
|
|
18
|
+
annotations: {
|
|
19
|
+
title: 'Remove Section',
|
|
20
|
+
readOnlyHint: false,
|
|
21
|
+
destructiveHint: true,
|
|
22
|
+
idempotentHint: true,
|
|
23
|
+
openWorldHint: false,
|
|
24
|
+
},
|
|
25
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Narrows an `unknown` value to a boolean, returning `undefined`
|
|
3
|
+
* when the value is not a boolean.
|
|
4
|
+
*
|
|
5
|
+
* @param value - the value to narrow
|
|
6
|
+
*/
|
|
7
|
+
export function asBooleanOrUndefined(
|
|
8
|
+
value: unknown,
|
|
9
|
+
): boolean | undefined {
|
|
10
|
+
return typeof value === 'boolean' ? value : undefined;
|
|
11
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Narrows an `unknown` value to a `string[]`, returning `undefined`
|
|
3
|
+
* when the value is not an array of strings.
|
|
4
|
+
*
|
|
5
|
+
* @param value - the value to narrow
|
|
6
|
+
*/
|
|
7
|
+
export function asStringArrayOrUndefined(
|
|
8
|
+
value: unknown,
|
|
9
|
+
): string[] | undefined {
|
|
10
|
+
if (
|
|
11
|
+
Array.isArray(value) &&
|
|
12
|
+
value.every((item) => typeof item === 'string')
|
|
13
|
+
) {
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Narrows an `unknown` value to a `string[]`, returning an empty
|
|
3
|
+
* array when the value is not an array of strings.
|
|
4
|
+
*
|
|
5
|
+
* @param value - the value to narrow
|
|
6
|
+
*/
|
|
7
|
+
export function asStringArray(value: unknown): string[] {
|
|
8
|
+
if (
|
|
9
|
+
Array.isArray(value) &&
|
|
10
|
+
value.every((item) => typeof item === 'string')
|
|
11
|
+
) {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Narrows an `unknown` value to a string, returning the fallback
|
|
3
|
+
* when the value is not already a string.
|
|
4
|
+
*
|
|
5
|
+
* @param value - the value to narrow
|
|
6
|
+
* @param fallback - returned when `value` is not a string
|
|
7
|
+
*/
|
|
8
|
+
export function asString(value: unknown, fallback: string): string {
|
|
9
|
+
return typeof value === 'string' ? value : fallback;
|
|
10
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Minimal section shape for building the skills listing text. */
|
|
2
|
+
export interface SkillSection {
|
|
3
|
+
/** Knowledge-base identifier of the section. */
|
|
4
|
+
readonly kbid: string;
|
|
5
|
+
/** Raw JSON content of the skill section. */
|
|
6
|
+
readonly content: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Builds a human-readable skills listing from an array of skill
|
|
11
|
+
* section records.
|
|
12
|
+
*
|
|
13
|
+
* Sections whose JSON is not parseable or whose `name` field is
|
|
14
|
+
* absent are silently omitted. Returns `null` when no valid skills
|
|
15
|
+
* remain after filtering.
|
|
16
|
+
*
|
|
17
|
+
* @param skillSections - array of section records to summarise
|
|
18
|
+
*/
|
|
19
|
+
export function buildSkillsText(
|
|
20
|
+
skillSections: SkillSection[],
|
|
21
|
+
): string | null {
|
|
22
|
+
const lines: string[] = [];
|
|
23
|
+
for (const sec of skillSections) {
|
|
24
|
+
try {
|
|
25
|
+
const parsed = JSON.parse(sec.content) as Record<
|
|
26
|
+
string,
|
|
27
|
+
unknown
|
|
28
|
+
>;
|
|
29
|
+
const name =
|
|
30
|
+
typeof parsed['name'] === 'string' ? parsed['name'] : null;
|
|
31
|
+
if (name === null) continue;
|
|
32
|
+
const description =
|
|
33
|
+
typeof parsed['description'] === 'string'
|
|
34
|
+
? parsed['description']
|
|
35
|
+
: '';
|
|
36
|
+
lines.push(`- ${name}: ${description}`);
|
|
37
|
+
} catch {
|
|
38
|
+
// skip unparseable sections
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (lines.length === 0) return null;
|
|
42
|
+
return `Available skills:\n${lines.join('\n')}`;
|
|
43
|
+
}
|
|
@@ -37,6 +37,11 @@ export function createToolDefinitions(): McpToolDefinition[] {
|
|
|
37
37
|
'Number of results to skip for' +
|
|
38
38
|
' pagination (default: 0)',
|
|
39
39
|
},
|
|
40
|
+
algo: {
|
|
41
|
+
type: 'string',
|
|
42
|
+
enum: ['lexical', 'vector', 'hybrid'],
|
|
43
|
+
description: 'Search algorithm (default: lexical)',
|
|
44
|
+
},
|
|
40
45
|
},
|
|
41
46
|
required: ['query'],
|
|
42
47
|
},
|
|
@@ -498,5 +503,28 @@ export function createToolDefinitions(): McpToolDefinition[] {
|
|
|
498
503
|
openWorldHint: false,
|
|
499
504
|
},
|
|
500
505
|
},
|
|
506
|
+
{
|
|
507
|
+
name: 'auto-capture-review',
|
|
508
|
+
description:
|
|
509
|
+
'Review and approve pending auto-captured' +
|
|
510
|
+
' knowledge before storage.',
|
|
511
|
+
inputSchema: {
|
|
512
|
+
type: 'object',
|
|
513
|
+
properties: {
|
|
514
|
+
action: {
|
|
515
|
+
type: 'string',
|
|
516
|
+
enum: ['list', 'approve', 'reject'],
|
|
517
|
+
description: 'Action to perform on pending captures',
|
|
518
|
+
},
|
|
519
|
+
},
|
|
520
|
+
},
|
|
521
|
+
annotations: {
|
|
522
|
+
title: 'Auto-Capture Review',
|
|
523
|
+
readOnlyHint: false,
|
|
524
|
+
destructiveHint: false,
|
|
525
|
+
idempotentHint: true,
|
|
526
|
+
openWorldHint: false,
|
|
527
|
+
},
|
|
528
|
+
},
|
|
501
529
|
];
|
|
502
530
|
}
|
|
@@ -99,7 +99,7 @@ export async function handleAgentCreate(
|
|
|
99
99
|
});
|
|
100
100
|
|
|
101
101
|
const allKbids = [metaResult.kbid, ...skills];
|
|
102
|
-
const docid = await client.groupSections(name, allKbids);
|
|
102
|
+
const docid = await client.groupSections(name, allKbids, 'agent');
|
|
103
103
|
|
|
104
104
|
return {
|
|
105
105
|
content: [
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { McpWorkerClient } from '../typings/mcp-client.interface.ts';
|
|
2
|
+
import type { McpPromptMessage } from '../typings/prompt-types.interface.ts';
|
|
3
|
+
import { parseAgentMeta } from './parse-agent-meta.function.ts';
|
|
4
|
+
import { buildSkillsText } from './build-skills-text.function.ts';
|
|
5
|
+
|
|
6
|
+
/** Minimal agent document shape returned by retrieveDocument. */
|
|
7
|
+
interface AgentDocument {
|
|
8
|
+
/** Document identifier. */
|
|
9
|
+
readonly docid: string;
|
|
10
|
+
/** Document title. */
|
|
11
|
+
readonly title: string;
|
|
12
|
+
/** Ordered section references. */
|
|
13
|
+
readonly sections: readonly {
|
|
14
|
+
readonly kbid: string;
|
|
15
|
+
readonly position: number;
|
|
16
|
+
}[];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Handles an MCP `prompts/get` request for an agent prompt.
|
|
21
|
+
*
|
|
22
|
+
* Reads the agent document, extracts its persona from the metadata
|
|
23
|
+
* section, then reads all skill sections and composes the response.
|
|
24
|
+
* Returns an assistant message with the persona and, when skills
|
|
25
|
+
* exist, a user message listing them.
|
|
26
|
+
*
|
|
27
|
+
* @param name - prompt name with `agent:` prefix
|
|
28
|
+
* @param client - worker client used to access the knowledge base
|
|
29
|
+
*/
|
|
30
|
+
export async function handleAgentPrompt(
|
|
31
|
+
name: string,
|
|
32
|
+
client: McpWorkerClient,
|
|
33
|
+
): Promise<McpPromptMessage[]> {
|
|
34
|
+
const docid = name.slice(6);
|
|
35
|
+
const doc = (await client.retrieveDocument(docid)) as AgentDocument;
|
|
36
|
+
const metaSection = doc.sections.at(0);
|
|
37
|
+
const skillRefs = doc.sections.slice(1);
|
|
38
|
+
|
|
39
|
+
let persona = '';
|
|
40
|
+
if (metaSection !== undefined) {
|
|
41
|
+
const metaSections = await client.readSections([
|
|
42
|
+
metaSection.kbid,
|
|
43
|
+
]);
|
|
44
|
+
const metaContent = metaSections.at(0);
|
|
45
|
+
if (metaContent !== undefined) {
|
|
46
|
+
persona = parseAgentMeta(metaContent.content).persona;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const messages: McpPromptMessage[] = [
|
|
51
|
+
{ role: 'assistant', content: { type: 'text', text: persona } },
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
if (skillRefs.length === 0) return messages;
|
|
55
|
+
|
|
56
|
+
const skillKbids = skillRefs.map((s) => s.kbid);
|
|
57
|
+
const skillSections = await client.readSections(skillKbids);
|
|
58
|
+
const skillsText = buildSkillsText(skillSections);
|
|
59
|
+
|
|
60
|
+
if (skillsText !== null) {
|
|
61
|
+
messages.push({
|
|
62
|
+
role: 'user',
|
|
63
|
+
content: { type: 'text', text: skillsText },
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return messages;
|
|
68
|
+
}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import type { McpWorkerClient } from '../typings/mcp-client.interface.ts';
|
|
2
|
+
import type {
|
|
3
|
+
McpRequest,
|
|
4
|
+
McpResponse,
|
|
5
|
+
} from '../typings/mcp-types.interface.ts';
|
|
6
|
+
import type { McpLogLevel } from '../typings/log-types.interface.ts';
|
|
7
|
+
import type {
|
|
8
|
+
McpCompletionRef,
|
|
9
|
+
McpCompletionArgument,
|
|
10
|
+
} from '../typings/mcp-completion.interface.ts';
|
|
11
|
+
import type { McpServerState } from '../typings/mcp-server-state.interface.ts';
|
|
12
|
+
import { createToolDefinitions } from './create-tool-definitions.function.ts';
|
|
13
|
+
import { createResourceTemplates } from './create-resource-templates.function.ts';
|
|
14
|
+
import { handleToolCall } from './handle-tool-call.function.ts';
|
|
15
|
+
import { handleResourceRead } from './handle-resource-read.function.ts';
|
|
16
|
+
import { createPromptDefinitions } from './create-prompt-definitions.function.ts';
|
|
17
|
+
import { handlePromptGet } from './handle-prompt-get.function.ts';
|
|
18
|
+
import { handleCompletion } from './handle-completion.function.ts';
|
|
19
|
+
import { handleRootsList } from './handle-roots-list.function.ts';
|
|
20
|
+
import {
|
|
21
|
+
METHOD_NOT_FOUND,
|
|
22
|
+
RESOURCE_NOT_FOUND,
|
|
23
|
+
} from '../constants/mcp-error-codes.constant.ts';
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Routes an MCP JSON-RPC request to the appropriate handler and
|
|
27
|
+
* returns the JSON-RPC response. Mutates `state` for methods that
|
|
28
|
+
* update server-side configuration (logging level, subscriptions,
|
|
29
|
+
* capabilities).
|
|
30
|
+
*
|
|
31
|
+
* @param request - the parsed MCP request
|
|
32
|
+
* @param client - worker client for knowledge-base operations
|
|
33
|
+
* @param state - mutable server state shared with `McpServer`
|
|
34
|
+
*/
|
|
35
|
+
export async function handleMcpRequest(
|
|
36
|
+
request: McpRequest,
|
|
37
|
+
client: McpWorkerClient,
|
|
38
|
+
state: McpServerState,
|
|
39
|
+
): Promise<McpResponse> {
|
|
40
|
+
const id = request.id as number | string;
|
|
41
|
+
|
|
42
|
+
switch (request.method) {
|
|
43
|
+
case 'initialize': {
|
|
44
|
+
const params = request.params ?? {};
|
|
45
|
+
const caps = params['capabilities'];
|
|
46
|
+
state.hostCapabilities = caps
|
|
47
|
+
? (caps as Record<string, unknown>)
|
|
48
|
+
: null;
|
|
49
|
+
return {
|
|
50
|
+
jsonrpc: '2.0',
|
|
51
|
+
id,
|
|
52
|
+
result: {
|
|
53
|
+
protocolVersion: '2025-11-25',
|
|
54
|
+
serverInfo: { name: 'kbdb', version: '0.1.0' },
|
|
55
|
+
capabilities: {
|
|
56
|
+
tools: {},
|
|
57
|
+
resources: { subscribe: true },
|
|
58
|
+
prompts: {},
|
|
59
|
+
logging: {},
|
|
60
|
+
completions: {},
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
case 'ping':
|
|
67
|
+
return { jsonrpc: '2.0', id, result: {} };
|
|
68
|
+
|
|
69
|
+
case 'tools/list':
|
|
70
|
+
return {
|
|
71
|
+
jsonrpc: '2.0',
|
|
72
|
+
id,
|
|
73
|
+
result: { tools: createToolDefinitions() },
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
case 'resources/list':
|
|
77
|
+
return { jsonrpc: '2.0', id, result: { resources: [] } };
|
|
78
|
+
|
|
79
|
+
case 'resources/templates/list':
|
|
80
|
+
return {
|
|
81
|
+
jsonrpc: '2.0',
|
|
82
|
+
id,
|
|
83
|
+
result: { resourceTemplates: createResourceTemplates() },
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
case 'tools/call': {
|
|
87
|
+
const params = request.params ?? {};
|
|
88
|
+
const rawName = params['name'];
|
|
89
|
+
const name = typeof rawName === 'string' ? rawName : '';
|
|
90
|
+
const args = (params['arguments'] ?? {}) as Record<
|
|
91
|
+
string,
|
|
92
|
+
unknown
|
|
93
|
+
>;
|
|
94
|
+
const result = await handleToolCall(client, name, args);
|
|
95
|
+
return { jsonrpc: '2.0', id, result };
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
case 'resources/read': {
|
|
99
|
+
const params = request.params ?? {};
|
|
100
|
+
const rawUri = params['uri'];
|
|
101
|
+
const uri = typeof rawUri === 'string' ? rawUri : '';
|
|
102
|
+
try {
|
|
103
|
+
const result = await handleResourceRead(client, uri);
|
|
104
|
+
return { jsonrpc: '2.0', id, result };
|
|
105
|
+
} catch (err) {
|
|
106
|
+
return {
|
|
107
|
+
jsonrpc: '2.0',
|
|
108
|
+
id,
|
|
109
|
+
error: {
|
|
110
|
+
code: RESOURCE_NOT_FOUND,
|
|
111
|
+
message:
|
|
112
|
+
err instanceof Error ? err.message : String(err),
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
case 'prompts/list': {
|
|
119
|
+
const skills = await client.listByType('skill');
|
|
120
|
+
const agents = await client.listDocumentsByType('agent');
|
|
121
|
+
const prompts = createPromptDefinitions(skills, agents);
|
|
122
|
+
return { jsonrpc: '2.0', id, result: { prompts } };
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
case 'prompts/get': {
|
|
126
|
+
const params = request.params ?? {};
|
|
127
|
+
const name =
|
|
128
|
+
typeof params['name'] === 'string' ? params['name'] : '';
|
|
129
|
+
const promptArgs = (params['arguments'] ?? {}) as Record<
|
|
130
|
+
string,
|
|
131
|
+
string
|
|
132
|
+
>;
|
|
133
|
+
try {
|
|
134
|
+
const messages = await handlePromptGet(
|
|
135
|
+
name,
|
|
136
|
+
promptArgs,
|
|
137
|
+
client,
|
|
138
|
+
);
|
|
139
|
+
return { jsonrpc: '2.0', id, result: { messages } };
|
|
140
|
+
} catch (err) {
|
|
141
|
+
return {
|
|
142
|
+
jsonrpc: '2.0',
|
|
143
|
+
id,
|
|
144
|
+
error: {
|
|
145
|
+
code: RESOURCE_NOT_FOUND,
|
|
146
|
+
message:
|
|
147
|
+
err instanceof Error ? err.message : String(err),
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
case 'completion/complete': {
|
|
154
|
+
const params = request.params ?? {};
|
|
155
|
+
const ref = params['ref'] as McpCompletionRef;
|
|
156
|
+
const argument = (params['argument'] ?? {
|
|
157
|
+
name: '',
|
|
158
|
+
value: '',
|
|
159
|
+
}) as McpCompletionArgument;
|
|
160
|
+
const result = await handleCompletion(ref, argument, client);
|
|
161
|
+
return { jsonrpc: '2.0', id, result };
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
case 'roots/list': {
|
|
165
|
+
const roots = handleRootsList(state.contextPath);
|
|
166
|
+
return { jsonrpc: '2.0', id, result: { roots } };
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
case 'logging/setLevel': {
|
|
170
|
+
const params = request.params ?? {};
|
|
171
|
+
const level = params['level'] as McpLogLevel | undefined;
|
|
172
|
+
state.logLevel = level ?? null;
|
|
173
|
+
return { jsonrpc: '2.0', id, result: {} };
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
case 'resources/subscribe': {
|
|
177
|
+
const params = request.params ?? {};
|
|
178
|
+
const uri =
|
|
179
|
+
typeof params['uri'] === 'string' ? params['uri'] : '';
|
|
180
|
+
state.subscriptions.add(uri);
|
|
181
|
+
return { jsonrpc: '2.0', id, result: {} };
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
case 'resources/unsubscribe': {
|
|
185
|
+
const params = request.params ?? {};
|
|
186
|
+
const uri =
|
|
187
|
+
typeof params['uri'] === 'string' ? params['uri'] : '';
|
|
188
|
+
state.subscriptions.delete(uri);
|
|
189
|
+
return { jsonrpc: '2.0', id, result: {} };
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
default:
|
|
193
|
+
return {
|
|
194
|
+
jsonrpc: '2.0',
|
|
195
|
+
id,
|
|
196
|
+
error: {
|
|
197
|
+
code: METHOD_NOT_FOUND,
|
|
198
|
+
message: `Method not found: ` + request.method,
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
}
|
|
@@ -15,10 +15,8 @@ interface ReadSection {
|
|
|
15
15
|
readonly content: string;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
/** Minimal agent document shape
|
|
18
|
+
/** Minimal agent document shape from listDocumentsByType. */
|
|
19
19
|
interface AgentDocument {
|
|
20
|
-
/** Document identifier. */
|
|
21
|
-
readonly docid: string;
|
|
22
20
|
/** Document title. */
|
|
23
21
|
readonly title: string;
|
|
24
22
|
/** Ordered section references. */
|
|
@@ -86,17 +84,24 @@ function buildSkillsText(skillSections: ReadSection[]): string | null {
|
|
|
86
84
|
/**
|
|
87
85
|
* Handles an MCP `prompts/get` request for an agent prompt.
|
|
88
86
|
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
* exist, a user message
|
|
87
|
+
* Looks up the agent by title via `listDocumentsByType('agent')`,
|
|
88
|
+
* extracts its persona from the metadata section, then reads all
|
|
89
|
+
* skill sections and composes the response. Returns an assistant
|
|
90
|
+
* message with the persona and, when skills exist, a user message
|
|
91
|
+
* listing them.
|
|
93
92
|
*/
|
|
94
93
|
async function handleAgentPrompt(
|
|
95
94
|
name: string,
|
|
96
95
|
client: McpWorkerClient,
|
|
97
96
|
): Promise<McpPromptMessage[]> {
|
|
98
|
-
const
|
|
99
|
-
const
|
|
97
|
+
const agentName = name.slice(6);
|
|
98
|
+
const agents = await client.listDocumentsByType('agent');
|
|
99
|
+
const doc = agents.find((a) => a.title === agentName) as
|
|
100
|
+
| AgentDocument
|
|
101
|
+
| undefined;
|
|
102
|
+
if (!doc) {
|
|
103
|
+
throw new Error('agent not found: ' + agentName);
|
|
104
|
+
}
|
|
100
105
|
const sections = doc.sections;
|
|
101
106
|
|
|
102
107
|
const metaSection = sections.at(0);
|
|
@@ -192,9 +197,10 @@ async function handleSkillPrompt(
|
|
|
192
197
|
* substitutes `{{argName}}` placeholders in the body, and returns a
|
|
193
198
|
* single user message.
|
|
194
199
|
*
|
|
195
|
-
* For agent prompts:
|
|
196
|
-
* builds an assistant message from
|
|
197
|
-
* skills exist) a user message
|
|
200
|
+
* For agent prompts: looks up the agent by title via
|
|
201
|
+
* `listDocumentsByType('agent')`, builds an assistant message from
|
|
202
|
+
* the persona section, and (when skills exist) a user message
|
|
203
|
+
* listing their names and descriptions.
|
|
198
204
|
*
|
|
199
205
|
* @param name - prompt name from the MCP request
|
|
200
206
|
* @param promptArgs - argument key-value map from the MCP request
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { McpWorkerClient } from '../typings/mcp-client.interface.ts';
|
|
2
|
+
import type { McpPromptMessage } from '../typings/prompt-types.interface.ts';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Handles an MCP `prompts/get` request for a skill prompt.
|
|
6
|
+
*
|
|
7
|
+
* Looks up the skill by name in the `listByType('skill')` results,
|
|
8
|
+
* picks the most recent match (last occurrence), parses its body,
|
|
9
|
+
* and substitutes `{{argName}}` placeholders from `promptArgs`.
|
|
10
|
+
* Unresolved placeholders are left as-is.
|
|
11
|
+
*
|
|
12
|
+
* @param name - skill prompt name to look up
|
|
13
|
+
* @param promptArgs - argument key-value map from the MCP request
|
|
14
|
+
* @param client - worker client used to access the knowledge base
|
|
15
|
+
* @throws {Error} when no skill with the given name is found
|
|
16
|
+
*/
|
|
17
|
+
export async function handleSkillPrompt(
|
|
18
|
+
name: string,
|
|
19
|
+
promptArgs: Record<string, string>,
|
|
20
|
+
client: McpWorkerClient,
|
|
21
|
+
): Promise<McpPromptMessage[]> {
|
|
22
|
+
const sections = await client.listByType('skill');
|
|
23
|
+
let matchContent: string | undefined;
|
|
24
|
+
for (const sec of sections) {
|
|
25
|
+
if (sec.title === name) {
|
|
26
|
+
matchContent = sec.content;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (matchContent === undefined) {
|
|
30
|
+
throw new Error(`Prompt not found: ${name}`);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const parsed = JSON.parse(matchContent) as Record<string, unknown>;
|
|
34
|
+
const body =
|
|
35
|
+
typeof parsed['body'] === 'string' ? parsed['body'] : '';
|
|
36
|
+
|
|
37
|
+
const rendered = body.replace(
|
|
38
|
+
/\{\{(\w+)\}\}/g,
|
|
39
|
+
(_match, key: string) =>
|
|
40
|
+
key in promptArgs ? (promptArgs[key] ?? _match) : _match,
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
return [{ role: 'user', content: { type: 'text', text: rendered } }];
|
|
44
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ToolCallResult } from '../typings/tool-call-result.model.ts';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Handles the `auto-capture-review` MCP tool call.
|
|
5
|
+
*
|
|
6
|
+
* Returns a stub response indicating no pending captures are
|
|
7
|
+
* available. Full implementation requires wiring the auto-capture
|
|
8
|
+
* controller into the MCP server state.
|
|
9
|
+
*
|
|
10
|
+
* @param _args - tool arguments; `action` may be list, approve,
|
|
11
|
+
* or reject
|
|
12
|
+
*/
|
|
13
|
+
export function handleToolAutoCaptureReview(
|
|
14
|
+
_args: Record<string, unknown>,
|
|
15
|
+
): Promise<ToolCallResult> {
|
|
16
|
+
return Promise.resolve({
|
|
17
|
+
content: [
|
|
18
|
+
{
|
|
19
|
+
type: 'text' as const,
|
|
20
|
+
text: 'No pending auto-captured knowledge entries.',
|
|
21
|
+
},
|
|
22
|
+
],
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -124,6 +124,8 @@ export async function handleToolCall(
|
|
|
124
124
|
return await handleAgentGet(client, args);
|
|
125
125
|
case 'agent-delete':
|
|
126
126
|
return await handleAgentDelete(client, args);
|
|
127
|
+
case 'auto-capture-review':
|
|
128
|
+
return handleAutoCaptureReview();
|
|
127
129
|
default:
|
|
128
130
|
return {
|
|
129
131
|
content: [
|
|
@@ -157,6 +159,7 @@ async function handleSearch(
|
|
|
157
159
|
mode: args['mode'] as string | undefined,
|
|
158
160
|
limit: args['limit'] as number | undefined,
|
|
159
161
|
offset: args['offset'] as number | undefined,
|
|
162
|
+
algo: args['algo'] as string | undefined,
|
|
160
163
|
});
|
|
161
164
|
|
|
162
165
|
const stripped = {
|
|
@@ -226,6 +229,7 @@ async function handleLearn(
|
|
|
226
229
|
near_duplicates: (result.near_duplicates ?? []).map((d) => ({
|
|
227
230
|
kbid: d.kbid,
|
|
228
231
|
similarity: d.similarity,
|
|
232
|
+
...(d.method !== undefined ? { method: d.method } : {}),
|
|
229
233
|
})),
|
|
230
234
|
};
|
|
231
235
|
return {
|
|
@@ -522,6 +526,20 @@ async function handleSkillDelete(
|
|
|
522
526
|
};
|
|
523
527
|
}
|
|
524
528
|
|
|
529
|
+
function handleAutoCaptureReview(): ToolCallResult {
|
|
530
|
+
return {
|
|
531
|
+
content: [
|
|
532
|
+
{
|
|
533
|
+
type: 'text',
|
|
534
|
+
text: JSON.stringify({
|
|
535
|
+
pending: [],
|
|
536
|
+
message: 'No pending auto-captured knowledge entries.',
|
|
537
|
+
}),
|
|
538
|
+
},
|
|
539
|
+
],
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
|
+
|
|
525
543
|
async function handleExport(
|
|
526
544
|
client: McpWorkerClient,
|
|
527
545
|
args: Record<string, unknown>,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { McpWorkerClient } from '../typings/mcp-client.interface.ts';
|
|
2
|
+
import type { ToolCallResult } from '../typings/tool-call-result.model.ts';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Handles the `check` MCP tool call.
|
|
6
|
+
*
|
|
7
|
+
* Runs an integrity check on the knowledge base and returns the
|
|
8
|
+
* report as formatted JSON.
|
|
9
|
+
*
|
|
10
|
+
* @param client - the worker client used to execute operations
|
|
11
|
+
*/
|
|
12
|
+
export async function handleToolCheck(
|
|
13
|
+
client: McpWorkerClient,
|
|
14
|
+
): Promise<ToolCallResult> {
|
|
15
|
+
const report = await client.integrityCheck();
|
|
16
|
+
return {
|
|
17
|
+
content: [
|
|
18
|
+
{ type: 'text', text: JSON.stringify(report, null, 2) },
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { McpWorkerClient } from '../typings/mcp-client.interface.ts';
|
|
2
|
+
import type { ToolCallResult } from '../typings/tool-call-result.model.ts';
|
|
3
|
+
import { asStringArray } from './as-string-array.function.ts';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Handles the `content` MCP tool call.
|
|
7
|
+
*
|
|
8
|
+
* Composes a rendered Markdown document from the given identifiers
|
|
9
|
+
* and returns the result as JSON.
|
|
10
|
+
*
|
|
11
|
+
* @param client - the worker client used to execute operations
|
|
12
|
+
* @param args - tool arguments from the MCP request
|
|
13
|
+
*/
|
|
14
|
+
export async function handleToolContent(
|
|
15
|
+
client: McpWorkerClient,
|
|
16
|
+
args: Record<string, unknown>,
|
|
17
|
+
): Promise<ToolCallResult> {
|
|
18
|
+
const ids = asStringArray(args['ids']);
|
|
19
|
+
const result = await client.content(ids);
|
|
20
|
+
return {
|
|
21
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
22
|
+
};
|
|
23
|
+
}
|