@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
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { PagedSearchDisplay } from '../typings/search-display.model.ts';
|
|
2
|
+
import type { ContentClient } from './run-content.function.ts';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Hydrates each result's `preview` field with the actual section
|
|
6
|
+
* content fetched from the client.
|
|
7
|
+
*
|
|
8
|
+
* Failures for individual results are caught and suppressed so that
|
|
9
|
+
* one unavailable section does not prevent other previews from
|
|
10
|
+
* being returned.
|
|
11
|
+
*
|
|
12
|
+
* @param client - content client used to fetch section text
|
|
13
|
+
* @param paged - mutable search display records to hydrate
|
|
14
|
+
*/
|
|
15
|
+
export async function hydrateSearchPreviews(
|
|
16
|
+
client: ContentClient,
|
|
17
|
+
paged: PagedSearchDisplay,
|
|
18
|
+
): Promise<void> {
|
|
19
|
+
await Promise.all(
|
|
20
|
+
paged.items.map(async (result) => {
|
|
21
|
+
try {
|
|
22
|
+
const contentResult = await client.content([result.kbid]);
|
|
23
|
+
result.preview = contentResult.data;
|
|
24
|
+
} catch {
|
|
25
|
+
// Leave preview as empty string on failure.
|
|
26
|
+
}
|
|
27
|
+
}),
|
|
28
|
+
);
|
|
29
|
+
}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* RFC 4648 base32 alphabet (upper-case, no padding).
|
|
7
|
+
* Used to encode the SHA-256-derived kbid bytes.
|
|
8
|
+
*/
|
|
9
|
+
const BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Encodes a byte array as a lowercase base32 string without padding.
|
|
13
|
+
*
|
|
14
|
+
* Mirrors the `data_encoding::BASE32_NOPAD` encoding used in the
|
|
15
|
+
* Rust engine's `KbId::from_content`.
|
|
16
|
+
*
|
|
17
|
+
* @param bytes - raw bytes to encode
|
|
18
|
+
* @returns lowercase base32-encoded string
|
|
19
|
+
*/
|
|
20
|
+
function base32Encode(bytes: Uint8Array): string {
|
|
21
|
+
let result = '';
|
|
22
|
+
let bits = 0;
|
|
23
|
+
let value = 0;
|
|
24
|
+
for (const byte of bytes) {
|
|
25
|
+
value = (value << 8) | byte;
|
|
26
|
+
bits += 8;
|
|
27
|
+
while (bits >= 5) {
|
|
28
|
+
result += BASE32_ALPHABET[(value >>> (bits - 5)) & 0x1f];
|
|
29
|
+
bits -= 5;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (bits > 0) {
|
|
33
|
+
result += BASE32_ALPHABET[(value << (5 - bits)) & 0x1f];
|
|
34
|
+
}
|
|
35
|
+
return result.toLowerCase();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Computes a 26-character kbid for a section using the same algorithm
|
|
40
|
+
* as the Rust engine's `hash_section`.
|
|
41
|
+
*
|
|
42
|
+
* Algorithm:
|
|
43
|
+
* 1. Build input: `"section <mime> <byteLen>\0<content>"`
|
|
44
|
+
* 2. SHA-256 hash the input
|
|
45
|
+
* 3. Take the first 16 bytes
|
|
46
|
+
* 4. Base32 encode (RFC 4648, no padding), lowercased → 26 chars
|
|
47
|
+
*
|
|
48
|
+
* @param mimeType - MIME type string (e.g. `"text/markdown"`)
|
|
49
|
+
* @param content - UTF-8 section content string
|
|
50
|
+
* @returns 26-character lowercase base32 kbid
|
|
51
|
+
*/
|
|
52
|
+
function computeSectionKbid(mimeType: string, content: string): string {
|
|
53
|
+
const contentBytes = Buffer.from(content, 'utf-8');
|
|
54
|
+
const header = `section ${mimeType} ${contentBytes.length.toString()}\0`;
|
|
55
|
+
const headerBytes = Buffer.from(header, 'utf-8');
|
|
56
|
+
const input = Buffer.concat([headerBytes, contentBytes]);
|
|
57
|
+
const hash = createHash('sha256').update(input).digest();
|
|
58
|
+
const truncated = new Uint8Array(hash.buffer, 0, 16);
|
|
59
|
+
return base32Encode(truncated);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Escapes backslashes and double-quotes in a string for TOML inline
|
|
64
|
+
* string values.
|
|
65
|
+
*
|
|
66
|
+
* Mirrors the `escape_toml_str` function in the Rust engine.
|
|
67
|
+
*
|
|
68
|
+
* @param s - string to escape
|
|
69
|
+
* @returns escaped string safe for use inside TOML double-quoted strings
|
|
70
|
+
*/
|
|
71
|
+
function escapeToml(s: string): string {
|
|
72
|
+
return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Serializes a skill section record to the `.section` file format.
|
|
77
|
+
*
|
|
78
|
+
* Format:
|
|
79
|
+
* ```
|
|
80
|
+
* kbid = "..."
|
|
81
|
+
* section_type = "text/markdown"
|
|
82
|
+
* type_name = "skill"
|
|
83
|
+
* title = "..."
|
|
84
|
+
* description = "..."
|
|
85
|
+
* size = 0
|
|
86
|
+
* token_count = 0
|
|
87
|
+
* heading_token_count = 0
|
|
88
|
+
* body_token_count = 0
|
|
89
|
+
* code_token_count = 0
|
|
90
|
+
* created_at = 0
|
|
91
|
+
* checksum = "..."
|
|
92
|
+
*
|
|
93
|
+
* ---
|
|
94
|
+
* <json content>
|
|
95
|
+
* ```
|
|
96
|
+
*
|
|
97
|
+
* @param kbid - 26-char content-addressed identifier
|
|
98
|
+
* @param title - skill name used as section title
|
|
99
|
+
* @param description - human-readable description
|
|
100
|
+
* @param content - serialised JSON skill definition
|
|
101
|
+
* @returns file content string
|
|
102
|
+
*/
|
|
103
|
+
function serializeSkillSection(
|
|
104
|
+
kbid: string,
|
|
105
|
+
title: string,
|
|
106
|
+
description: string,
|
|
107
|
+
content: string,
|
|
108
|
+
): string {
|
|
109
|
+
const size = Buffer.byteLength(content, 'utf-8');
|
|
110
|
+
const header = [
|
|
111
|
+
`kbid = "${escapeToml(kbid)}"`,
|
|
112
|
+
`section_type = "text/markdown"`,
|
|
113
|
+
`type_name = "skill"`,
|
|
114
|
+
`title = "${escapeToml(title)}"`,
|
|
115
|
+
`description = "${escapeToml(description)}"`,
|
|
116
|
+
`size = ${size.toString()}`,
|
|
117
|
+
`token_count = 0`,
|
|
118
|
+
`heading_token_count = 0`,
|
|
119
|
+
`body_token_count = 0`,
|
|
120
|
+
`code_token_count = 0`,
|
|
121
|
+
`created_at = 0`,
|
|
122
|
+
`checksum = "${escapeToml(kbid)}"`,
|
|
123
|
+
'',
|
|
124
|
+
].join('\n');
|
|
125
|
+
return `${header}\n---\n${content}`;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/** Descriptor for a skill to install. */
|
|
129
|
+
interface SkillDescriptor {
|
|
130
|
+
/** Unique skill name (kebab-case). */
|
|
131
|
+
readonly name: string;
|
|
132
|
+
/** Human-readable description. */
|
|
133
|
+
readonly description: string;
|
|
134
|
+
/** Template body text. */
|
|
135
|
+
readonly body: string;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Installs a single skill section file under `sectionsDir`.
|
|
140
|
+
*
|
|
141
|
+
* Creates the shard subdirectory if it does not exist. Skips
|
|
142
|
+
* writing if the section file already exists, preserving any
|
|
143
|
+
* user modifications.
|
|
144
|
+
*
|
|
145
|
+
* @param sectionsDir - absolute path to `.kbdb/sections`
|
|
146
|
+
* @param skill - skill definition to serialise and store
|
|
147
|
+
*/
|
|
148
|
+
function installSkill(
|
|
149
|
+
sectionsDir: string,
|
|
150
|
+
skill: SkillDescriptor,
|
|
151
|
+
): void {
|
|
152
|
+
const content = JSON.stringify({
|
|
153
|
+
name: skill.name,
|
|
154
|
+
description: skill.description,
|
|
155
|
+
arguments: [],
|
|
156
|
+
body: skill.body,
|
|
157
|
+
});
|
|
158
|
+
const kbid = computeSectionKbid('text/markdown', content);
|
|
159
|
+
const prefix = kbid.slice(0, 2);
|
|
160
|
+
const shardDir = join(sectionsDir, prefix);
|
|
161
|
+
const filePath = join(shardDir, `${kbid}.section`);
|
|
162
|
+
|
|
163
|
+
if (existsSync(filePath)) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
mkdirSync(shardDir, { recursive: true });
|
|
168
|
+
|
|
169
|
+
const fileContent = serializeSkillSection(
|
|
170
|
+
kbid,
|
|
171
|
+
skill.name,
|
|
172
|
+
skill.description,
|
|
173
|
+
content,
|
|
174
|
+
);
|
|
175
|
+
writeFileSync(filePath, fileContent, 'utf-8');
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Body text for the `query-guidance` default skill.
|
|
180
|
+
*
|
|
181
|
+
* Teaches AI agents how to effectively search the knowledge base
|
|
182
|
+
* using lexical BM25F queries.
|
|
183
|
+
*/
|
|
184
|
+
const QUERY_GUIDANCE_BODY =
|
|
185
|
+
'This knowledge base uses lexical search (stemmed BM25F), not' +
|
|
186
|
+
' semantic/vector search. Follow these guidelines for effective' +
|
|
187
|
+
' retrieval:\n\n' +
|
|
188
|
+
'1. Issue MULTIPLE short keyword queries rather than one long' +
|
|
189
|
+
' natural-language question. Each query should target 2-3' +
|
|
190
|
+
' specific terms.\n\n' +
|
|
191
|
+
'2. EXPAND SYNONYMS yourself. "login" will not match "sign-in"' +
|
|
192
|
+
' unless both terms appear in the content. Try alternative' +
|
|
193
|
+
' phrasings: search for "login", then "sign-in", then' +
|
|
194
|
+
' "authentication".\n\n' +
|
|
195
|
+
'3. USE BOOLEAN AND PHRASE SYNTAX:\n' +
|
|
196
|
+
' - Exact phrases: "error handling"\n' +
|
|
197
|
+
' - Boolean AND: auth AND token\n' +
|
|
198
|
+
' - Boolean OR: cache OR redis\n' +
|
|
199
|
+
' - Exclusion: auth -oauth\n\n' +
|
|
200
|
+
'4. LEAN ON HEADINGS. Headings carry 2x weight in ranking.' +
|
|
201
|
+
' Search for terms that are likely in section titles.\n\n' +
|
|
202
|
+
'5. STEMMING IS AUTOMATIC. "connections" matches "connect",' +
|
|
203
|
+
' "running" matches "run". You do not need to try inflected' +
|
|
204
|
+
' forms.\n\n' +
|
|
205
|
+
'6. USE RECALL AFTER SEARCH. After finding relevant sections' +
|
|
206
|
+
' with search, use recall with increasing depth (0-3) to' +
|
|
207
|
+
' progressively expand context: depth 0 = full content, depth' +
|
|
208
|
+
' 1 = parent documents + back-references, depth 2 = siblings' +
|
|
209
|
+
' + forward references, depth 3 = referenced sections.\n\n' +
|
|
210
|
+
'7. CODE IDENTIFIERS ARE SPLIT. camelCase and snake_case names' +
|
|
211
|
+
' are decomposed: getUserById becomes searchable as "get",' +
|
|
212
|
+
' "user", "by", "id".\n\n' +
|
|
213
|
+
'8. PAGINATION. Default limit is 20 results. Use offset for' +
|
|
214
|
+
' additional pages if total > limit.';
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Body text for the `memory-protocol` default skill.
|
|
218
|
+
*
|
|
219
|
+
* Teaches AI agents when and what to store in the knowledge base
|
|
220
|
+
* to keep it accurate and useful.
|
|
221
|
+
*/
|
|
222
|
+
const MEMORY_PROTOCOL_BODY =
|
|
223
|
+
'Follow these guidelines to keep the knowledge base accurate' +
|
|
224
|
+
' and useful:\n\n' +
|
|
225
|
+
'1. STORE DURABLE FACTS: decisions, architecture choices,' +
|
|
226
|
+
' configuration values, corrections to prior knowledge, API' +
|
|
227
|
+
' contracts, and resolved incidents. These are the facts that' +
|
|
228
|
+
' matter weeks later.\n\n' +
|
|
229
|
+
'2. DO NOT STORE: transient conversation context, debugging' +
|
|
230
|
+
' output, ephemeral task state, raw log dumps, or information' +
|
|
231
|
+
' that changes every session. The brain should contain' +
|
|
232
|
+
' knowledge, not activity logs.\n\n' +
|
|
233
|
+
'3. SEARCH BEFORE STORING. Always search the knowledge base' +
|
|
234
|
+
' before adding new content. If a section already covers the' +
|
|
235
|
+
' topic, use learn with --replace to update it rather than' +
|
|
236
|
+
' creating a duplicate.\n\n' +
|
|
237
|
+
'4. USE --replace FOR CORRECTIONS. When a fact changes (e.g.,' +
|
|
238
|
+
' rate limit updated from 100 to 200 req/min), re-learn the' +
|
|
239
|
+
' corrected content with --replace so the old version is' +
|
|
240
|
+
' superseded. Without --replace, both the old and new versions' +
|
|
241
|
+
' coexist with equal ranking.\n\n' +
|
|
242
|
+
'5. ATTACH TAGS for scoping. Use tags like project name,' +
|
|
243
|
+
' domain, or topic (e.g., --tags auth,api,v2) so queries can' +
|
|
244
|
+
' be filtered by scope later.\n\n' +
|
|
245
|
+
'6. PREFER RECENT RESULTS. When search returns multiple' +
|
|
246
|
+
' sections covering the same topic, prefer the one with the' +
|
|
247
|
+
' most recent created_at timestamp -- it is more likely to' +
|
|
248
|
+
' reflect the current state.\n\n' +
|
|
249
|
+
'7. USE RECALL AFTER SEARCH. After finding relevant sections,' +
|
|
250
|
+
' use recall with increasing depth (0-3) to expand context' +
|
|
251
|
+
' progressively before making decisions.\n\n' +
|
|
252
|
+
'8. INCLUDE HEADINGS. Always provide a descriptive title when' +
|
|
253
|
+
' storing content. Headings carry 2x ranking weight -- omitting' +
|
|
254
|
+
' them significantly reduces searchability.';
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Default skills installed on every fresh `kbdb db init`.
|
|
258
|
+
*
|
|
259
|
+
* These provide baseline guidance that improves AI agent
|
|
260
|
+
* effectiveness out of the box. They are regular skill sections
|
|
261
|
+
* and can be deleted by users.
|
|
262
|
+
*/
|
|
263
|
+
const DEFAULT_SKILLS: readonly SkillDescriptor[] = [
|
|
264
|
+
{
|
|
265
|
+
name: 'query-guidance',
|
|
266
|
+
description:
|
|
267
|
+
'How to effectively search this knowledge base.' +
|
|
268
|
+
' Read this before issuing search queries.',
|
|
269
|
+
body: QUERY_GUIDANCE_BODY,
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
name: 'memory-protocol',
|
|
273
|
+
description:
|
|
274
|
+
'Guidelines for what to store in this knowledge base' +
|
|
275
|
+
' and when. Read this before using the learn tool.',
|
|
276
|
+
body: MEMORY_PROTOCOL_BODY,
|
|
277
|
+
},
|
|
278
|
+
];
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Writes the two default skills (`query-guidance` and
|
|
282
|
+
* `memory-protocol`) as section files directly into the `.kbdb`
|
|
283
|
+
* directory scaffold.
|
|
284
|
+
*
|
|
285
|
+
* Called by `runInit` after the directory scaffold is created.
|
|
286
|
+
* Does not require a running worker daemon. Skips any skill whose
|
|
287
|
+
* section file already exists so user modifications are preserved.
|
|
288
|
+
*
|
|
289
|
+
* @param dbDir - absolute path to the `.kbdb` directory
|
|
290
|
+
*/
|
|
291
|
+
export function installDefaultSkills(dbDir: string): void {
|
|
292
|
+
const sectionsDir = join(dbDir, 'sections');
|
|
293
|
+
for (const skill of DEFAULT_SKILLS) {
|
|
294
|
+
installSkill(sectionsDir, skill);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
@@ -94,6 +94,9 @@ export function parseArgs(argv: string[]): CliOptions {
|
|
|
94
94
|
parseInt(argv[++i] ?? '', 10) || 0,
|
|
95
95
|
);
|
|
96
96
|
break;
|
|
97
|
+
case '--algo':
|
|
98
|
+
options.algo = argv[++i];
|
|
99
|
+
break;
|
|
97
100
|
case '--title':
|
|
98
101
|
options.title = argv[++i];
|
|
99
102
|
break;
|
|
@@ -115,6 +118,19 @@ export function parseArgs(argv: string[]): CliOptions {
|
|
|
115
118
|
case '--skills':
|
|
116
119
|
options.skills = (argv[++i] ?? '').split(',');
|
|
117
120
|
break;
|
|
121
|
+
case '--tags':
|
|
122
|
+
options.tags = (argv[++i] ?? '').split(',');
|
|
123
|
+
break;
|
|
124
|
+
case '--replace':
|
|
125
|
+
options.replace = true;
|
|
126
|
+
break;
|
|
127
|
+
case '--depth':
|
|
128
|
+
case '-d':
|
|
129
|
+
options.depth = Math.min(
|
|
130
|
+
3,
|
|
131
|
+
Math.max(0, parseInt(argv[++i] ?? '', 10) || 0),
|
|
132
|
+
);
|
|
133
|
+
break;
|
|
118
134
|
case '--content':
|
|
119
135
|
case '-c':
|
|
120
136
|
options.content = true;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
AgentGetClient,
|
|
3
|
+
AgentDocumentSection,
|
|
4
|
+
AgentSectionRecord,
|
|
5
|
+
} from '../typings/agent-get-client.interface.ts';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Resolves skill names by reading each skill section's JSON content.
|
|
9
|
+
*
|
|
10
|
+
* Returns `null` for any reference whose section no longer exists
|
|
11
|
+
* (dangling reference) or whose content cannot be parsed.
|
|
12
|
+
*
|
|
13
|
+
* @param client - client used to fetch section records
|
|
14
|
+
* @param skillRefs - ordered section references to resolve
|
|
15
|
+
* @returns list of resolved skill entries with name and position
|
|
16
|
+
*/
|
|
17
|
+
export async function resolveSkillNames(
|
|
18
|
+
client: AgentGetClient,
|
|
19
|
+
skillRefs: AgentDocumentSection[],
|
|
20
|
+
): Promise<{ kbid: string; name: string | null; position: number }[]> {
|
|
21
|
+
if (skillRefs.length === 0) return [];
|
|
22
|
+
const kbids = skillRefs.map((r) => r.kbid);
|
|
23
|
+
const sections: AgentSectionRecord[] =
|
|
24
|
+
await client.readSections(kbids);
|
|
25
|
+
const sectionMap = new Map(sections.map((s) => [s.kbid, s]));
|
|
26
|
+
return skillRefs.map((ref) => {
|
|
27
|
+
const sec = sectionMap.get(ref.kbid);
|
|
28
|
+
if (!sec) {
|
|
29
|
+
return { kbid: ref.kbid, name: null, position: ref.position };
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const parsed = JSON.parse(sec.content) as Record<
|
|
33
|
+
string,
|
|
34
|
+
unknown
|
|
35
|
+
>;
|
|
36
|
+
const name =
|
|
37
|
+
typeof parsed['name'] === 'string' ? parsed['name'] : null;
|
|
38
|
+
return { kbid: ref.kbid, name, position: ref.position };
|
|
39
|
+
} catch {
|
|
40
|
+
return { kbid: ref.kbid, name: null, position: ref.position };
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
@@ -25,6 +25,17 @@ interface IntegrityError {
|
|
|
25
25
|
readonly detail: string;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
/**
|
|
29
|
+
* A single entry in the divergent-content map.
|
|
30
|
+
* Groups kbids under a common source key.
|
|
31
|
+
*/
|
|
32
|
+
interface DivergentContentEntry {
|
|
33
|
+
/** Source key that has multiple divergent content versions. */
|
|
34
|
+
readonly sourceKey: string;
|
|
35
|
+
/** Kbids of sections sharing this source key but with different content. */
|
|
36
|
+
readonly kbids: string[];
|
|
37
|
+
}
|
|
38
|
+
|
|
28
39
|
/**
|
|
29
40
|
* Integrity check report returned by the daemon.
|
|
30
41
|
*/
|
|
@@ -41,6 +52,38 @@ interface IntegrityCheckResult {
|
|
|
41
52
|
readonly references_checked: number;
|
|
42
53
|
/** Time taken to complete the check, in milliseconds. */
|
|
43
54
|
readonly elapsed_ms: number;
|
|
55
|
+
/**
|
|
56
|
+
* Sections that share a source key but have divergent content.
|
|
57
|
+
* Each entry groups the kbids under a common source key.
|
|
58
|
+
* Empty when no divergent content is found.
|
|
59
|
+
*/
|
|
60
|
+
readonly divergent_content: DivergentContentEntry[];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** Raw daemon response from `integrityCheck`. */
|
|
64
|
+
interface RawIntegrityCheckResult {
|
|
65
|
+
/** `true` when all checks passed and no errors were found. */
|
|
66
|
+
readonly ok: boolean;
|
|
67
|
+
/** All integrity errors found; empty when `ok` is `true`. */
|
|
68
|
+
readonly errors: IntegrityError[];
|
|
69
|
+
/** Total number of sections examined. */
|
|
70
|
+
readonly sections_checked: number;
|
|
71
|
+
/** Total number of documents examined. */
|
|
72
|
+
readonly documents_checked: number;
|
|
73
|
+
/** Total number of marker references checked. */
|
|
74
|
+
readonly references_checked: number;
|
|
75
|
+
/** Time taken to complete the check, in milliseconds. */
|
|
76
|
+
readonly elapsed_ms: number;
|
|
77
|
+
/**
|
|
78
|
+
* Encoded divergent-content map.
|
|
79
|
+
*
|
|
80
|
+
* Format: `sk1:kbid1,kbid2;sk2:kbid3,kbid4`
|
|
81
|
+
*
|
|
82
|
+
* Each semicolon-separated segment is a source key followed by
|
|
83
|
+
* a colon and a comma-separated list of kbids. Absent when no
|
|
84
|
+
* divergent content exists.
|
|
85
|
+
*/
|
|
86
|
+
readonly divergent_content?: string;
|
|
44
87
|
}
|
|
45
88
|
|
|
46
89
|
/**
|
|
@@ -56,23 +99,61 @@ export interface CheckClient {
|
|
|
56
99
|
* @returns a report of all issues found; `ok` is `true` when
|
|
57
100
|
* no errors were detected
|
|
58
101
|
*/
|
|
59
|
-
integrityCheck(): Promise<
|
|
102
|
+
integrityCheck(): Promise<RawIntegrityCheckResult>;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Parses the encoded `divergent_content` string from the daemon
|
|
107
|
+
* into a structured array.
|
|
108
|
+
*
|
|
109
|
+
* Input format: `sk1:kbid1,kbid2;sk2:kbid3,kbid4`
|
|
110
|
+
*
|
|
111
|
+
* @param encoded - raw encoded string, or empty / absent
|
|
112
|
+
* @returns structured entries grouped by source key
|
|
113
|
+
*/
|
|
114
|
+
function parseDivergentContent(
|
|
115
|
+
encoded: string | undefined,
|
|
116
|
+
): DivergentContentEntry[] {
|
|
117
|
+
if (!encoded) return [];
|
|
118
|
+
return encoded
|
|
119
|
+
.split(';')
|
|
120
|
+
.filter((segment) => segment.includes(':'))
|
|
121
|
+
.map((segment) => {
|
|
122
|
+
const colonIdx = segment.indexOf(':');
|
|
123
|
+
const sourceKey = segment.slice(0, colonIdx);
|
|
124
|
+
const kbids = segment
|
|
125
|
+
.slice(colonIdx + 1)
|
|
126
|
+
.split(',')
|
|
127
|
+
.filter((k) => k.length > 0);
|
|
128
|
+
return { sourceKey, kbids };
|
|
129
|
+
})
|
|
130
|
+
.filter((entry) => entry.kbids.length > 0);
|
|
60
131
|
}
|
|
61
132
|
|
|
62
133
|
/**
|
|
63
134
|
* Runs an integrity check on the database and returns the report.
|
|
64
135
|
*
|
|
65
|
-
* Delegates to `client.integrityCheck()
|
|
66
|
-
*
|
|
67
|
-
*
|
|
136
|
+
* Delegates to `client.integrityCheck()`, then parses the encoded
|
|
137
|
+
* `divergent_content` field into structured form. The caller is
|
|
138
|
+
* responsible for printing the result to stdout and setting the
|
|
139
|
+
* process exit code based on `result.ok`.
|
|
68
140
|
*
|
|
69
141
|
* @param client - check client to delegate to
|
|
70
142
|
* @param _options - parsed CLI options (unused; reserved for future flags)
|
|
71
|
-
* @returns the integrity check report
|
|
143
|
+
* @returns the integrity check report with parsed `divergent_content`
|
|
72
144
|
*/
|
|
73
145
|
export async function runCheck(
|
|
74
146
|
client: CheckClient,
|
|
75
147
|
_options: CliOptions,
|
|
76
148
|
): Promise<IntegrityCheckResult> {
|
|
77
|
-
|
|
149
|
+
const raw = await client.integrityCheck();
|
|
150
|
+
return {
|
|
151
|
+
ok: raw.ok,
|
|
152
|
+
errors: raw.errors,
|
|
153
|
+
sections_checked: raw.sections_checked,
|
|
154
|
+
documents_checked: raw.documents_checked,
|
|
155
|
+
references_checked: raw.references_checked,
|
|
156
|
+
elapsed_ms: raw.elapsed_ms,
|
|
157
|
+
divergent_content: parseDivergentContent(raw.divergent_content),
|
|
158
|
+
};
|
|
78
159
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { CliOptions } from '../typings/cli-options.interface.ts';
|
|
2
|
+
import type { ExportResult } from '../../worker-client/typings/export-result.model.ts';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Minimal client interface required by `runExport`.
|
|
6
|
+
*
|
|
7
|
+
* Decouples the CLI function from the concrete `WorkerClient`
|
|
8
|
+
* implementation, making it straightforward to test with mocks.
|
|
9
|
+
*/
|
|
10
|
+
export interface ExportClient {
|
|
11
|
+
/**
|
|
12
|
+
* Exports the database to the given directory path.
|
|
13
|
+
*
|
|
14
|
+
* @param params - optional target path; the daemon defaults to
|
|
15
|
+
* `./kbdb-export/` when `path` is `undefined`
|
|
16
|
+
* @returns export report with the resolved path and file counts
|
|
17
|
+
*/
|
|
18
|
+
export(params: { path?: string }): Promise<ExportResult>;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Exports the knowledge-base database to a target directory via the
|
|
23
|
+
* provided client.
|
|
24
|
+
*
|
|
25
|
+
* The target path is taken from `options.args[0]`. When no argument
|
|
26
|
+
* is given the daemon resolves its own default (`./kbdb-export/`).
|
|
27
|
+
*
|
|
28
|
+
* @param client - export client to delegate to
|
|
29
|
+
* @param options - parsed CLI options whose first positional
|
|
30
|
+
* argument, if present, is the target directory path
|
|
31
|
+
* @returns the export result containing the resolved path and file
|
|
32
|
+
* counts
|
|
33
|
+
*/
|
|
34
|
+
export async function runExport(
|
|
35
|
+
client: ExportClient,
|
|
36
|
+
options: CliOptions,
|
|
37
|
+
): Promise<ExportResult> {
|
|
38
|
+
const path = options.args[0];
|
|
39
|
+
return client.export({ path });
|
|
40
|
+
}
|
|
@@ -10,6 +10,12 @@ interface GcResult {
|
|
|
10
10
|
readonly removed_bytes: number;
|
|
11
11
|
/** Time taken to complete garbage collection, in milliseconds. */
|
|
12
12
|
readonly elapsed_ms: number;
|
|
13
|
+
/**
|
|
14
|
+
* Number of sections whose `source_path` file no longer
|
|
15
|
+
* contains their heading text (advisory; not auto-removed).
|
|
16
|
+
* Absent on older daemon versions.
|
|
17
|
+
*/
|
|
18
|
+
readonly stale_sources?: number;
|
|
13
19
|
}
|
|
14
20
|
|
|
15
21
|
/**
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import { join, resolve } from 'node:path';
|
|
3
3
|
import type { CliOptions } from '../typings/cli-options.interface.ts';
|
|
4
|
+
import { installDefaultSkills } from './install-default-skills.function.ts';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Result returned by `runInit` describing whether the directory was
|
|
@@ -82,6 +83,7 @@ export function runInit(options: CliOptions): InitResult {
|
|
|
82
83
|
};
|
|
83
84
|
}
|
|
84
85
|
createScaffold(dbDir);
|
|
86
|
+
installDefaultSkills(dbDir);
|
|
85
87
|
return { ok: true, targetPath: dbDir };
|
|
86
88
|
} catch (err: unknown) {
|
|
87
89
|
const errorMessage =
|