@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
|
@@ -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
|
+
}
|
|
@@ -32,6 +32,30 @@ function asString(value: unknown, fallback: string): string {
|
|
|
32
32
|
return typeof value === 'string' ? value : fallback;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Narrows an `unknown` value to a boolean, returning `undefined`
|
|
37
|
+
* when the value is not a boolean.
|
|
38
|
+
*/
|
|
39
|
+
function asBooleanOrUndefined(value: unknown): boolean | undefined {
|
|
40
|
+
return typeof value === 'boolean' ? value : undefined;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Narrows an `unknown` value to a `string[]`, returning `undefined`
|
|
45
|
+
* when the value is not an array of strings.
|
|
46
|
+
*/
|
|
47
|
+
function asStringArrayOrUndefined(
|
|
48
|
+
value: unknown,
|
|
49
|
+
): string[] | undefined {
|
|
50
|
+
if (
|
|
51
|
+
Array.isArray(value) &&
|
|
52
|
+
value.every((item) => typeof item === 'string')
|
|
53
|
+
) {
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
|
|
35
59
|
/**
|
|
36
60
|
* Narrows an `unknown` value to a `string[]`, returning an empty
|
|
37
61
|
* array when the value is not an array of strings.
|
|
@@ -82,6 +106,8 @@ export async function handleToolCall(
|
|
|
82
106
|
return await handleGc(client);
|
|
83
107
|
case 'rebuild':
|
|
84
108
|
return await handleRebuild(client);
|
|
109
|
+
case 'export':
|
|
110
|
+
return await handleExport(client, args);
|
|
85
111
|
case 'skill-learn':
|
|
86
112
|
return await handleSkillLearn(client, args);
|
|
87
113
|
case 'skill-list':
|
|
@@ -98,6 +124,8 @@ export async function handleToolCall(
|
|
|
98
124
|
return await handleAgentGet(client, args);
|
|
99
125
|
case 'agent-delete':
|
|
100
126
|
return await handleAgentDelete(client, args);
|
|
127
|
+
case 'auto-capture-review':
|
|
128
|
+
return handleAutoCaptureReview();
|
|
101
129
|
default:
|
|
102
130
|
return {
|
|
103
131
|
content: [
|
|
@@ -131,11 +159,20 @@ async function handleSearch(
|
|
|
131
159
|
mode: args['mode'] as string | undefined,
|
|
132
160
|
limit: args['limit'] as number | undefined,
|
|
133
161
|
offset: args['offset'] as number | undefined,
|
|
162
|
+
algo: args['algo'] as string | undefined,
|
|
134
163
|
});
|
|
135
164
|
|
|
136
165
|
const stripped = {
|
|
137
166
|
...results,
|
|
138
|
-
items: results.items.map(
|
|
167
|
+
items: results.items.map(
|
|
168
|
+
({
|
|
169
|
+
score: _score,
|
|
170
|
+
confidence: _confidence,
|
|
171
|
+
...rest
|
|
172
|
+
}: (typeof results.items)[number] & {
|
|
173
|
+
confidence?: number;
|
|
174
|
+
}) => rest,
|
|
175
|
+
),
|
|
139
176
|
};
|
|
140
177
|
|
|
141
178
|
return {
|
|
@@ -161,6 +198,8 @@ async function handleLearn(
|
|
|
161
198
|
: undefined;
|
|
162
199
|
const docid =
|
|
163
200
|
typeof args['docid'] === 'string' ? args['docid'] : undefined;
|
|
201
|
+
const tags = asStringArrayOrUndefined(args['tags']);
|
|
202
|
+
const replace = asBooleanOrUndefined(args['replace']);
|
|
164
203
|
if (sectionType.startsWith('image/') && !title) {
|
|
165
204
|
return {
|
|
166
205
|
content: [
|
|
@@ -178,12 +217,26 @@ async function handleLearn(
|
|
|
178
217
|
title,
|
|
179
218
|
description,
|
|
180
219
|
docid,
|
|
220
|
+
tags,
|
|
221
|
+
replace,
|
|
181
222
|
});
|
|
223
|
+
const normalized = {
|
|
224
|
+
kbid: result.kbid,
|
|
225
|
+
indexed_terms_count: result.indexed_terms_count ?? 0,
|
|
226
|
+
elapsed_ms: result.elapsed_ms ?? 0,
|
|
227
|
+
superseded: result.superseded ?? null,
|
|
228
|
+
warnings: result.warnings ?? [],
|
|
229
|
+
near_duplicates: (result.near_duplicates ?? []).map((d) => ({
|
|
230
|
+
kbid: d.kbid,
|
|
231
|
+
similarity: d.similarity,
|
|
232
|
+
...(d.method !== undefined ? { method: d.method } : {}),
|
|
233
|
+
})),
|
|
234
|
+
};
|
|
182
235
|
return {
|
|
183
236
|
content: [
|
|
184
237
|
{
|
|
185
238
|
type: 'text',
|
|
186
|
-
text: JSON.stringify(
|
|
239
|
+
text: JSON.stringify(normalized),
|
|
187
240
|
},
|
|
188
241
|
],
|
|
189
242
|
};
|
|
@@ -472,3 +525,36 @@ async function handleSkillDelete(
|
|
|
472
525
|
],
|
|
473
526
|
};
|
|
474
527
|
}
|
|
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
|
+
|
|
543
|
+
async function handleExport(
|
|
544
|
+
client: McpWorkerClient,
|
|
545
|
+
args: Record<string, unknown>,
|
|
546
|
+
): Promise<ToolCallResult> {
|
|
547
|
+
const path =
|
|
548
|
+
typeof args['path'] === 'string' ? args['path'] : undefined;
|
|
549
|
+
const result = await client.export(
|
|
550
|
+
path !== undefined ? { path } : {},
|
|
551
|
+
);
|
|
552
|
+
return {
|
|
553
|
+
content: [
|
|
554
|
+
{
|
|
555
|
+
type: 'text',
|
|
556
|
+
text: JSON.stringify(result),
|
|
557
|
+
},
|
|
558
|
+
],
|
|
559
|
+
};
|
|
560
|
+
}
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
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 `export` MCP tool call.
|
|
6
|
+
*
|
|
7
|
+
* Exports the database as a self-contained directory snapshot.
|
|
8
|
+
* Passes the optional `path` argument when supplied.
|
|
9
|
+
*
|
|
10
|
+
* @param client - the worker client used to execute operations
|
|
11
|
+
* @param args - tool arguments from the MCP request
|
|
12
|
+
*/
|
|
13
|
+
export async function handleToolExport(
|
|
14
|
+
client: McpWorkerClient,
|
|
15
|
+
args: Record<string, unknown>,
|
|
16
|
+
): Promise<ToolCallResult> {
|
|
17
|
+
const path =
|
|
18
|
+
typeof args['path'] === 'string' ? args['path'] : undefined;
|
|
19
|
+
const result = await client.export(
|
|
20
|
+
path !== undefined ? { path } : {},
|
|
21
|
+
);
|
|
22
|
+
return {
|
|
23
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
@@ -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 `gc` MCP tool call.
|
|
6
|
+
*
|
|
7
|
+
* Removes unreferenced sections from the knowledge base and returns
|
|
8
|
+
* the collection report as formatted JSON.
|
|
9
|
+
*
|
|
10
|
+
* @param client - the worker client used to execute operations
|
|
11
|
+
*/
|
|
12
|
+
export async function handleToolGc(
|
|
13
|
+
client: McpWorkerClient,
|
|
14
|
+
): Promise<ToolCallResult> {
|
|
15
|
+
const report = await client.gc();
|
|
16
|
+
return {
|
|
17
|
+
content: [
|
|
18
|
+
{ type: 'text', text: JSON.stringify(report, null, 2) },
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { McpWorkerClient } from '../typings/mcp-client.interface.ts';
|
|
2
|
+
import type { ToolCallResult } from '../typings/tool-call-result.model.ts';
|
|
3
|
+
import { asString } from './as-string.function.ts';
|
|
4
|
+
import { asStringArrayOrUndefined } from './as-string-array-or-undefined.function.ts';
|
|
5
|
+
import { asBooleanOrUndefined } from './as-boolean-or-undefined.function.ts';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Handles the `learn` MCP tool call.
|
|
9
|
+
*
|
|
10
|
+
* Validates that image content includes a title, then imports the
|
|
11
|
+
* content into the knowledge base via the worker client.
|
|
12
|
+
*
|
|
13
|
+
* @param client - the worker client used to execute operations
|
|
14
|
+
* @param args - tool arguments from the MCP request
|
|
15
|
+
*/
|
|
16
|
+
export async function handleToolLearn(
|
|
17
|
+
client: McpWorkerClient,
|
|
18
|
+
args: Record<string, unknown>,
|
|
19
|
+
): Promise<ToolCallResult> {
|
|
20
|
+
const sectionType = asString(args['type'], 'text/markdown');
|
|
21
|
+
const title =
|
|
22
|
+
typeof args['title'] === 'string' ? args['title'] : undefined;
|
|
23
|
+
const description =
|
|
24
|
+
typeof args['description'] === 'string'
|
|
25
|
+
? args['description']
|
|
26
|
+
: undefined;
|
|
27
|
+
const docid =
|
|
28
|
+
typeof args['docid'] === 'string' ? args['docid'] : undefined;
|
|
29
|
+
const tags = asStringArrayOrUndefined(args['tags']);
|
|
30
|
+
const replace = asBooleanOrUndefined(args['replace']);
|
|
31
|
+
|
|
32
|
+
if (sectionType.startsWith('image/') && !title) {
|
|
33
|
+
return {
|
|
34
|
+
content: [
|
|
35
|
+
{
|
|
36
|
+
type: 'text',
|
|
37
|
+
text: 'title is required for image/* types',
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
isError: true,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const result = await client.addSection({
|
|
45
|
+
sectionType,
|
|
46
|
+
content: asString(args['content'], ''),
|
|
47
|
+
title,
|
|
48
|
+
description,
|
|
49
|
+
docid,
|
|
50
|
+
tags,
|
|
51
|
+
replace,
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
const normalized = {
|
|
55
|
+
kbid: result.kbid,
|
|
56
|
+
indexed_terms_count: result.indexed_terms_count ?? 0,
|
|
57
|
+
elapsed_ms: result.elapsed_ms ?? 0,
|
|
58
|
+
superseded: result.superseded ?? null,
|
|
59
|
+
warnings: result.warnings ?? [],
|
|
60
|
+
near_duplicates: (result.near_duplicates ?? []).map((d) => ({
|
|
61
|
+
kbid: d.kbid,
|
|
62
|
+
similarity: d.similarity,
|
|
63
|
+
})),
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
return {
|
|
67
|
+
content: [{ type: 'text', text: JSON.stringify(normalized) }],
|
|
68
|
+
};
|
|
69
|
+
}
|
|
@@ -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 `rebuild` MCP tool call.
|
|
6
|
+
*
|
|
7
|
+
* Reconstructs all index files from section and document files and
|
|
8
|
+
* returns the rebuild report as formatted JSON.
|
|
9
|
+
*
|
|
10
|
+
* @param client - the worker client used to execute operations
|
|
11
|
+
*/
|
|
12
|
+
export async function handleToolRebuild(
|
|
13
|
+
client: McpWorkerClient,
|
|
14
|
+
): Promise<ToolCallResult> {
|
|
15
|
+
const report = await client.rebuildIndexes();
|
|
16
|
+
return {
|
|
17
|
+
content: [
|
|
18
|
+
{ type: 'text', text: JSON.stringify(report, null, 2) },
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
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 `retrieve` MCP tool call.
|
|
6
|
+
*
|
|
7
|
+
* Fetches a section by `kbid` or a document by `docid`. Returns an
|
|
8
|
+
* error when neither identifier is supplied.
|
|
9
|
+
*
|
|
10
|
+
* @param client - the worker client used to execute operations
|
|
11
|
+
* @param args - tool arguments from the MCP request
|
|
12
|
+
*/
|
|
13
|
+
export async function handleToolRetrieve(
|
|
14
|
+
client: McpWorkerClient,
|
|
15
|
+
args: Record<string, unknown>,
|
|
16
|
+
): Promise<ToolCallResult> {
|
|
17
|
+
if (typeof args['kbid'] === 'string') {
|
|
18
|
+
const sections = await client.readSections([args['kbid']]);
|
|
19
|
+
return {
|
|
20
|
+
content: [
|
|
21
|
+
{
|
|
22
|
+
type: 'text',
|
|
23
|
+
text: JSON.stringify(sections, null, 2),
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
if (typeof args['docid'] === 'string') {
|
|
29
|
+
const doc = await client.retrieveDocument(args['docid']);
|
|
30
|
+
return {
|
|
31
|
+
content: [
|
|
32
|
+
{ type: 'text', text: JSON.stringify(doc, null, 2) },
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
content: [{ type: 'text', text: 'Provide kbid or docid' }],
|
|
38
|
+
isError: true,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
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 `search` MCP tool call.
|
|
6
|
+
*
|
|
7
|
+
* Forwards query parameters to the worker client and strips internal
|
|
8
|
+
* scoring fields (`score`, `confidence`) from each result item before
|
|
9
|
+
* returning.
|
|
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 handleToolSearch(
|
|
15
|
+
client: McpWorkerClient,
|
|
16
|
+
args: Record<string, unknown>,
|
|
17
|
+
): Promise<ToolCallResult> {
|
|
18
|
+
const query = typeof args['query'] === 'string' ? args['query'] : '';
|
|
19
|
+
const algo =
|
|
20
|
+
typeof args['algo'] === 'string' ? args['algo'] : undefined;
|
|
21
|
+
const results = await client.search({
|
|
22
|
+
query,
|
|
23
|
+
mode: args['mode'] as string | undefined,
|
|
24
|
+
...(algo !== undefined ? { algo } : {}),
|
|
25
|
+
limit: args['limit'] as number | undefined,
|
|
26
|
+
offset: args['offset'] as number | undefined,
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
const stripped = {
|
|
30
|
+
...results,
|
|
31
|
+
items: results.items.map(
|
|
32
|
+
({
|
|
33
|
+
score: _score,
|
|
34
|
+
confidence: _confidence,
|
|
35
|
+
...rest
|
|
36
|
+
}: (typeof results.items)[number] & {
|
|
37
|
+
confidence?: number;
|
|
38
|
+
}) => rest,
|
|
39
|
+
),
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
return {
|
|
43
|
+
content: [
|
|
44
|
+
{ type: 'text', text: JSON.stringify(stripped, null, 2) },
|
|
45
|
+
],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { McpWorkerClient } from '../typings/mcp-client.interface.ts';
|
|
2
|
+
import type { ToolCallResult } from '../typings/tool-call-result.model.ts';
|
|
3
|
+
import { asString } from './as-string.function.ts';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Handles the `skill-delete` MCP tool call.
|
|
7
|
+
*
|
|
8
|
+
* Removes the skill section identified by `kbid` from the knowledge
|
|
9
|
+
* base and returns the result.
|
|
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 handleToolSkillDelete(
|
|
15
|
+
client: McpWorkerClient,
|
|
16
|
+
args: Record<string, unknown>,
|
|
17
|
+
): Promise<ToolCallResult> {
|
|
18
|
+
const kbid = asString(args['kbid'], '');
|
|
19
|
+
if (!kbid) {
|
|
20
|
+
return {
|
|
21
|
+
content: [{ type: 'text', text: 'kbid is required' }],
|
|
22
|
+
isError: true,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const result = await client.removeSection(kbid);
|
|
26
|
+
return {
|
|
27
|
+
content: [
|
|
28
|
+
{
|
|
29
|
+
type: 'text',
|
|
30
|
+
text: JSON.stringify({ kbid, removed: result.removed }),
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { McpWorkerClient } from '../typings/mcp-client.interface.ts';
|
|
2
|
+
import type { ToolCallResult } from '../typings/tool-call-result.model.ts';
|
|
3
|
+
import { parseSkillContent } from './parse-skill-content.function.ts';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Handles the `skill-get` MCP tool call.
|
|
7
|
+
*
|
|
8
|
+
* Looks up a skill by `kbid` first, then falls back to searching by
|
|
9
|
+
* `name`. Returns an error when neither identifier resolves to a
|
|
10
|
+
* known skill.
|
|
11
|
+
*
|
|
12
|
+
* @param client - the worker client used to execute operations
|
|
13
|
+
* @param args - tool arguments from the MCP request
|
|
14
|
+
*/
|
|
15
|
+
export async function handleToolSkillGet(
|
|
16
|
+
client: McpWorkerClient,
|
|
17
|
+
args: Record<string, unknown>,
|
|
18
|
+
): Promise<ToolCallResult> {
|
|
19
|
+
const kbid =
|
|
20
|
+
typeof args['kbid'] === 'string' ? args['kbid'] : undefined;
|
|
21
|
+
const name =
|
|
22
|
+
typeof args['name'] === 'string' ? args['name'] : undefined;
|
|
23
|
+
|
|
24
|
+
if (!kbid && !name) {
|
|
25
|
+
return {
|
|
26
|
+
content: [{ type: 'text', text: 'name or kbid is required' }],
|
|
27
|
+
isError: true,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
let content: string | undefined;
|
|
32
|
+
if (kbid) {
|
|
33
|
+
const sections = await client.readSections([kbid]);
|
|
34
|
+
if (sections.length > 0) {
|
|
35
|
+
content = sections[0]?.content;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (content === undefined && name) {
|
|
39
|
+
const records = await client.listByType('skill');
|
|
40
|
+
const match = records.filter((r) => r.title === name).pop();
|
|
41
|
+
if (match) {
|
|
42
|
+
content = match.content;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (content === undefined) {
|
|
46
|
+
const identifier = kbid ?? name ?? '';
|
|
47
|
+
return {
|
|
48
|
+
content: [
|
|
49
|
+
{ type: 'text', text: `skill not found: ${identifier}` },
|
|
50
|
+
],
|
|
51
|
+
isError: true,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const skill = parseSkillContent(content);
|
|
56
|
+
return {
|
|
57
|
+
content: [{ type: 'text', text: JSON.stringify(skill, null, 2) }],
|
|
58
|
+
};
|
|
59
|
+
}
|