@dikolab/kbdb 0.3.2 → 0.4.0
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 +83 -89
- package/dist/chunk-BJPSPNGX.mjs +223 -0
- package/dist/chunk-BJPSPNGX.mjs.map +7 -0
- package/dist/cli.cjs +956 -319
- package/dist/cli.cjs.map +4 -4
- package/dist/cli.d.ts +9 -0
- package/dist/cli.mjs +840 -321
- package/dist/cli.mjs.map +4 -4
- package/dist/kbdb-worker.cjs +714 -94
- package/dist/kbdb-worker.cjs.map +4 -4
- package/dist/mod.cjs +122 -16
- package/dist/mod.cjs.map +3 -3
- package/dist/mod.d.ts +23 -2
- package/dist/mod.mjs +121 -16
- package/dist/mod.mjs.map +3 -3
- package/dist/src/shared/cli/functions/dispatch-command.function.d.ts +2 -1
- package/dist/src/shared/cli/functions/find-db.function.d.ts +7 -8
- package/dist/src/shared/cli/functions/handle-mcp.function.d.ts +1 -1
- package/dist/src/shared/cli/functions/parse-args.function.d.ts +4 -3
- package/dist/src/shared/cli/functions/resolve-kbid-prefix.function.d.ts +27 -0
- package/dist/src/shared/cli/functions/resolve-raw-db-path.function.d.ts +10 -0
- package/dist/src/shared/cli/functions/run-cli.function.d.ts +3 -1
- package/dist/src/shared/cli/functions/run-content.function.d.ts +8 -3
- package/dist/src/shared/cli/functions/run-import.function.d.ts +27 -0
- package/dist/src/shared/cli/functions/run-recall.function.d.ts +10 -4
- package/dist/src/shared/cli/functions/run-search.function.d.ts +7 -0
- package/dist/src/shared/cli/functions/run-unlearn.function.d.ts +9 -4
- package/dist/src/shared/cli/functions/run-worker-restart.function.d.ts +11 -0
- package/dist/src/shared/cli/functions/run-worker-stop.function.d.ts +11 -0
- package/dist/src/shared/cli/index.d.ts +2 -0
- package/dist/src/shared/cli/typings/cli-deps.interface.d.ts +4 -1
- package/dist/src/shared/cli/typings/cli-options.interface.d.ts +17 -0
- package/dist/src/shared/cli/typings/dispatch-client.type.d.ts +2 -1
- package/dist/src/shared/cli/typings/search-display.model.d.ts +6 -0
- package/dist/src/shared/embedding/classes/api-embedding-provider.class.d.ts +33 -0
- package/dist/src/shared/embedding/classes/onnx-embedding-provider.class.d.ts +33 -0
- package/dist/src/shared/embedding/functions/append-vector-entry.function.d.ts +14 -0
- package/dist/src/shared/embedding/functions/create-embedding-provider.function.d.ts +12 -0
- package/dist/src/shared/embedding/functions/detect-stale-vectors.function.d.ts +16 -0
- package/dist/src/shared/embedding/functions/parse-api-embedding-response.function.d.ts +11 -0
- package/dist/src/shared/embedding/functions/rebuild-vectors.function.d.ts +15 -0
- package/dist/src/shared/embedding/functions/scan-semantic-contradictions.function.d.ts +13 -0
- package/dist/src/shared/embedding/index.d.ts +7 -0
- package/dist/src/shared/embedding/typings/semantic-contradiction.model.d.ts +21 -0
- package/dist/src/shared/embedding/typings/stale-vectors-report.model.d.ts +16 -0
- package/dist/src/shared/mcp/classes/mcp-server.class.d.ts +22 -2
- package/dist/src/shared/mcp/functions/create-mcp-server.function.d.ts +6 -1
- package/dist/src/shared/mcp/functions/has-sampling-capability.function.d.ts +8 -0
- package/dist/src/shared/mcp/functions/run-auto-capture.function.d.ts +26 -0
- package/dist/src/shared/mcp/typings/mcp-client.interface.d.ts +2 -0
- package/dist/src/shared/mcp/typings/mcp-integrity-check-result.model.d.ts +24 -0
- package/dist/src/shared/mcp/typings/mcp-worker-client.interface.d.ts +3 -1
- package/dist/src/shared/version/constants/version.constant.d.ts +1 -1
- package/dist/src/shared/wasm-codec/typings/paged-search-result.model.d.ts +2 -0
- package/dist/src/shared/worker-client/classes/worker-client.class.d.ts +31 -1
- package/dist/src/shared/worker-client/constants/request-timeout.constant.d.ts +2 -0
- package/dist/src/shared/worker-client/constants/retry-defaults.constant.d.ts +2 -0
- package/dist/src/shared/worker-client/functions/get-or-create-client.function.d.ts +20 -0
- package/dist/src/shared/worker-client/functions/retry-on-timeout.function.d.ts +17 -0
- package/dist/src/shared/worker-client/index.d.ts +4 -1
- package/dist/src/shared/worker-client/typings/import-result.model.d.ts +16 -0
- package/dist/src/shared/worker-client/typings/integrity-check-result.model.d.ts +24 -0
- package/dist/src/shared/worker-client/typings/search-params.model.d.ts +4 -0
- package/dist/src/shared/worker-client/typings/search-result.model.d.ts +6 -0
- package/dist/src/shared/worker-client/typings/worker-client-options.interface.d.ts +7 -0
- package/dist/src/shared/worker-daemon/classes/worker-daemon.class.d.ts +5 -0
- package/dist/src/shared/worker-daemon/functions/create-ipc-server.function.d.ts +11 -11
- package/dist/src/shared/worker-daemon/functions/embed-after-learn.function.d.ts +13 -0
- package/dist/src/shared/worker-daemon/functions/handle-hybrid-search.function.d.ts +44 -0
- package/dist/src/shared/worker-daemon/functions/handle-import.function.d.ts +14 -0
- package/dist/src/shared/worker-daemon/functions/handle-read-ops.function.d.ts +7 -1
- package/dist/src/shared/worker-daemon/functions/handle-write-ops.function.d.ts +9 -4
- package/dist/src/shared/worker-daemon/typings/handler-context.interface.d.ts +3 -0
- package/dist/wasm/fs-database/kbdb_fs_database.d.ts +16 -85
- package/dist/wasm/fs-database/kbdb_fs_database.js +16 -85
- package/dist/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
- package/dist/wasm/kb-worker/kbdb_worker.d.ts +20 -115
- package/dist/wasm/kb-worker/kbdb_worker.js +20 -115
- package/dist/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
- package/dist/wasm/query-parser/kbdb_query_parser_bg.wasm +0 -0
- package/dist/worker.d.ts +8 -0
- package/dist/worker.mjs +606 -102
- package/dist/worker.mjs.map +4 -4
- package/docs/details/README.md +4 -0
- package/docs/details/agent-tooling.md +122 -0
- package/docs/details/cli.md +70 -13
- package/docs/details/knowledge-base.md +173 -0
- package/docs/details/library-api.md +42 -2
- package/docs/details/mcp-server.md +38 -7
- package/docs/details/search-and-ranking.md +11 -10
- package/docs/goals/cli.md +110 -34
- package/docs/goals/mcp.md +22 -19
- package/docs/goals/query-parser.md +8 -0
- package/docs/goals/worker-client.md +62 -1
- package/docs/goals/worker-daemon.md +52 -10
- package/docs/modules/typescript/cli.md +1 -1
- package/docs/modules/typescript/shared/cli/functions.md +116 -13
- package/docs/modules/typescript/shared/cli/module.md +33 -20
- package/docs/modules/typescript/shared/cli/typings.md +4 -0
- package/docs/modules/typescript/shared/embedding/functions.md +104 -25
- package/docs/modules/typescript/shared/mcp/module.md +1 -1
- package/docs/modules/typescript/shared/mcp/typings.md +8 -1
- package/docs/modules/typescript/shared/worker-client/module.md +9 -1
- package/docs/modules/typescript/shared/worker-client/typings.md +3 -0
- package/docs/modules/typescript/shared/worker-daemon/module.md +6 -3
- package/docs/overview.md +1 -2
- package/docs/release-notes/0.4.0.md +80 -0
- package/docs/release-notes/README.md +1 -0
- package/mod.ts +33 -15
- package/package.json +11 -10
- package/dist/chunk-JG2UCKLI.mjs +0 -95
- package/dist/chunk-JG2UCKLI.mjs.map +0 -7
- package/src/cli.ts +0 -71
- package/src/shared/auto-capture/classes/auto-capture-controller.class.ts +0 -62
- package/src/shared/auto-capture/constants/auto-capture-defaults.constant.ts +0 -15
- package/src/shared/auto-capture/functions/build-capture-prompt.function.ts +0 -27
- package/src/shared/auto-capture/functions/evaluate-trigger.function.ts +0 -50
- package/src/shared/auto-capture/index.ts +0 -7
- package/src/shared/auto-capture/typings/auto-capture-config.interface.ts +0 -13
- package/src/shared/auto-capture/typings/auto-capture-state.interface.ts +0 -13
- package/src/shared/auto-capture/typings/auto-capture-trigger.interface.ts +0 -7
- package/src/shared/cli/constants/defaults.constant.ts +0 -19
- package/src/shared/cli/constants/global-help.constant.ts +0 -73
- package/src/shared/cli/constants/help-text.constant.ts +0 -4
- package/src/shared/cli/constants/leaf-help.constant.ts +0 -219
- package/src/shared/cli/constants/memory-protocol-body.constant.ts +0 -39
- package/src/shared/cli/constants/query-guidance-body.constant.ts +0 -37
- package/src/shared/cli/constants/subcommand-help.constant.ts +0 -195
- package/src/shared/cli/functions/collect-files.function.ts +0 -55
- package/src/shared/cli/functions/compute-section-kbid.function.ts +0 -49
- package/src/shared/cli/functions/dispatch-command.function.ts +0 -390
- package/src/shared/cli/functions/ensure-db.function.ts +0 -21
- package/src/shared/cli/functions/error-to-message.function.ts +0 -9
- package/src/shared/cli/functions/find-db.function.ts +0 -20
- package/src/shared/cli/functions/format-mcp-output.function.ts +0 -41
- package/src/shared/cli/functions/format-output.function.ts +0 -95
- package/src/shared/cli/functions/format-text-output.function.ts +0 -42
- package/src/shared/cli/functions/generate-group-help.function.ts +0 -41
- package/src/shared/cli/functions/generate-help.function.ts +0 -654
- package/src/shared/cli/functions/handle-data-command.function.ts +0 -67
- package/src/shared/cli/functions/handle-mcp.function.ts +0 -56
- package/src/shared/cli/functions/handle-migrate.function.ts +0 -64
- package/src/shared/cli/functions/hydrate-search-previews.function.ts +0 -29
- package/src/shared/cli/functions/install-default-skills.function.ts +0 -296
- package/src/shared/cli/functions/is-stdin-tty.function.ts +0 -12
- package/src/shared/cli/functions/parse-args.function.ts +0 -156
- package/src/shared/cli/functions/prompt-user.function.ts +0 -36
- package/src/shared/cli/functions/resolve-skill-names.function.ts +0 -43
- package/src/shared/cli/functions/run-agent-create.function.ts +0 -114
- package/src/shared/cli/functions/run-agent-delete.function.ts +0 -47
- package/src/shared/cli/functions/run-agent-get.function.ts +0 -166
- package/src/shared/cli/functions/run-agent-list.function.ts +0 -58
- package/src/shared/cli/functions/run-check.function.ts +0 -159
- package/src/shared/cli/functions/run-cli.function.ts +0 -299
- package/src/shared/cli/functions/run-content.function.ts +0 -47
- package/src/shared/cli/functions/run-db-init.function.ts +0 -44
- package/src/shared/cli/functions/run-db-migrate.function.ts +0 -40
- package/src/shared/cli/functions/run-export.function.ts +0 -40
- package/src/shared/cli/functions/run-gc.function.ts +0 -51
- package/src/shared/cli/functions/run-init.function.ts +0 -93
- package/src/shared/cli/functions/run-learn.function.ts +0 -223
- package/src/shared/cli/functions/run-migrate.function.ts +0 -85
- package/src/shared/cli/functions/run-rebuild.function.ts +0 -47
- package/src/shared/cli/functions/run-recall.function.ts +0 -66
- package/src/shared/cli/functions/run-search.function.ts +0 -133
- package/src/shared/cli/functions/run-skill-delete.function.ts +0 -47
- package/src/shared/cli/functions/run-skill-get.function.ts +0 -90
- package/src/shared/cli/functions/run-skill-learn.function.ts +0 -70
- package/src/shared/cli/functions/run-skill-list.function.ts +0 -74
- package/src/shared/cli/functions/run-status.function.ts +0 -29
- package/src/shared/cli/functions/run-unlearn.function.ts +0 -58
- package/src/shared/cli/functions/version-gate.function.ts +0 -44
- package/src/shared/cli/functions/wrap-command.function.ts +0 -34
- package/src/shared/cli/index.ts +0 -55
- package/src/shared/cli/typings/agent-create-client.interface.ts +0 -47
- package/src/shared/cli/typings/agent-get-client.interface.ts +0 -39
- package/src/shared/cli/typings/check-client.interface.ts +0 -66
- package/src/shared/cli/typings/cli-deps.interface.ts +0 -54
- package/src/shared/cli/typings/cli-options.interface.ts +0 -72
- package/src/shared/cli/typings/command-result.model.ts +0 -15
- package/src/shared/cli/typings/disconnectable-client.interface.ts +0 -29
- package/src/shared/cli/typings/dispatch-client.type.ts +0 -46
- package/src/shared/cli/typings/learn-client.interface.ts +0 -53
- package/src/shared/cli/typings/learn-io.interface.ts +0 -5
- package/src/shared/cli/typings/learn-result.model.ts +0 -27
- package/src/shared/cli/typings/search-client.interface.ts +0 -73
- package/src/shared/cli/typings/search-display.model.ts +0 -54
- package/src/shared/dir-resolver/functions/join-path.function.ts +0 -13
- package/src/shared/dir-resolver/functions/resolve-base-dir.function.ts +0 -25
- package/src/shared/dir-resolver/functions/resolve-wasm-dir.function.ts +0 -5
- package/src/shared/dir-resolver/functions/resolve-worker-script.function.ts +0 -13
- package/src/shared/dir-resolver/index.ts +0 -11
- package/src/shared/dir-resolver/typings/base-dir.interface.ts +0 -4
- package/src/shared/embedding/classes/null-embedding-provider.class.ts +0 -29
- package/src/shared/embedding/constants/near-duplicate-thresholds.constant.ts +0 -17
- package/src/shared/embedding/functions/build-vector-index.function.ts +0 -79
- package/src/shared/embedding/functions/cosine-similarity.function.ts +0 -31
- package/src/shared/embedding/functions/detect-near-duplicates.function.ts +0 -69
- package/src/shared/embedding/functions/jaccard-coefficient.function.ts +0 -26
- package/src/shared/embedding/functions/read-vector-index-meta.function.ts +0 -44
- package/src/shared/embedding/functions/rrf-fuse.function.ts +0 -33
- package/src/shared/embedding/functions/search-vectors.function.ts +0 -59
- package/src/shared/embedding/index.ts +0 -20
- package/src/shared/embedding/typings/embedding-config.interface.ts +0 -23
- package/src/shared/embedding/typings/embedding-provider.interface.ts +0 -25
- package/src/shared/embedding/typings/near-duplicate-candidate.model.ts +0 -25
- package/src/shared/embedding/typings/near-duplicate-result.model.ts +0 -26
- package/src/shared/embedding/typings/vector-index-entry.model.ts +0 -13
- package/src/shared/embedding/typings/vector-index-meta.model.ts +0 -14
- package/src/shared/embedding/typings/vector-search-result.model.ts +0 -8
- package/src/shared/hash/functions/compute-sha256.ts +0 -17
- package/src/shared/hash/index.ts +0 -1
- package/src/shared/mcp/classes/mcp-server.class.ts +0 -480
- package/src/shared/mcp/constants/mcp-error-codes.constant.ts +0 -30
- package/src/shared/mcp/constants/tool-agent-create.constant.ts +0 -39
- package/src/shared/mcp/constants/tool-agent-delete.constant.ts +0 -26
- package/src/shared/mcp/constants/tool-agent-get.constant.ts +0 -24
- package/src/shared/mcp/constants/tool-agent-list.constant.ts +0 -18
- package/src/shared/mcp/constants/tool-auto-capture-review.constant.ts +0 -32
- package/src/shared/mcp/constants/tool-check.constant.ts +0 -21
- package/src/shared/mcp/constants/tool-content.constant.ts +0 -29
- package/src/shared/mcp/constants/tool-export.constant.ts +0 -27
- package/src/shared/mcp/constants/tool-gc.constant.ts +0 -21
- package/src/shared/mcp/constants/tool-learn.constant.ts +0 -58
- package/src/shared/mcp/constants/tool-rebuild.constant.ts +0 -21
- package/src/shared/mcp/constants/tool-recall.constant.ts +0 -36
- package/src/shared/mcp/constants/tool-retrieve.constant.ts +0 -31
- package/src/shared/mcp/constants/tool-search.constant.ts +0 -51
- package/src/shared/mcp/constants/tool-skill-delete.constant.ts +0 -24
- package/src/shared/mcp/constants/tool-skill-get.constant.ts +0 -27
- package/src/shared/mcp/constants/tool-skill-learn.constant.ts +0 -37
- package/src/shared/mcp/constants/tool-skill-list.constant.ts +0 -18
- package/src/shared/mcp/constants/tool-status.constant.ts +0 -20
- package/src/shared/mcp/constants/tool-unlearn.constant.ts +0 -25
- package/src/shared/mcp/functions/as-boolean-or-undefined.function.ts +0 -11
- package/src/shared/mcp/functions/as-string-array-or-undefined.function.ts +0 -17
- package/src/shared/mcp/functions/as-string-array.function.ts +0 -15
- package/src/shared/mcp/functions/as-string.function.ts +0 -10
- package/src/shared/mcp/functions/build-skills-text.function.ts +0 -43
- package/src/shared/mcp/functions/create-mcp-server.function.ts +0 -14
- package/src/shared/mcp/functions/create-prompt-definitions.function.ts +0 -102
- package/src/shared/mcp/functions/create-resource-templates.function.ts +0 -23
- package/src/shared/mcp/functions/create-tool-definitions.function.ts +0 -530
- package/src/shared/mcp/functions/extract-skill-arguments.function.ts +0 -27
- package/src/shared/mcp/functions/handle-agent-create.function.ts +0 -116
- package/src/shared/mcp/functions/handle-agent-delete.function.ts +0 -50
- package/src/shared/mcp/functions/handle-agent-get.function.ts +0 -160
- package/src/shared/mcp/functions/handle-agent-list.function.ts +0 -50
- package/src/shared/mcp/functions/handle-agent-prompt.function.ts +0 -68
- package/src/shared/mcp/functions/handle-completion.function.ts +0 -114
- package/src/shared/mcp/functions/handle-mcp-request.function.ts +0 -202
- package/src/shared/mcp/functions/handle-prompt-get.function.ts +0 -220
- package/src/shared/mcp/functions/handle-recall.function.ts +0 -66
- package/src/shared/mcp/functions/handle-resource-read.function.ts +0 -56
- package/src/shared/mcp/functions/handle-roots-list.function.ts +0 -29
- package/src/shared/mcp/functions/handle-skill-prompt.function.ts +0 -44
- package/src/shared/mcp/functions/handle-tool-auto-capture-review.function.ts +0 -24
- package/src/shared/mcp/functions/handle-tool-call.function.ts +0 -560
- package/src/shared/mcp/functions/handle-tool-check.function.ts +0 -21
- package/src/shared/mcp/functions/handle-tool-content.function.ts +0 -23
- package/src/shared/mcp/functions/handle-tool-export.function.ts +0 -25
- package/src/shared/mcp/functions/handle-tool-gc.function.ts +0 -21
- package/src/shared/mcp/functions/handle-tool-learn.function.ts +0 -69
- package/src/shared/mcp/functions/handle-tool-rebuild.function.ts +0 -21
- package/src/shared/mcp/functions/handle-tool-retrieve.function.ts +0 -40
- package/src/shared/mcp/functions/handle-tool-search.function.ts +0 -47
- package/src/shared/mcp/functions/handle-tool-skill-delete.function.ts +0 -34
- package/src/shared/mcp/functions/handle-tool-skill-get.function.ts +0 -59
- package/src/shared/mcp/functions/handle-tool-skill-learn.function.ts +0 -61
- package/src/shared/mcp/functions/handle-tool-skill-list.function.ts +0 -39
- package/src/shared/mcp/functions/handle-tool-status.function.ts +0 -21
- package/src/shared/mcp/functions/handle-tool-unlearn.function.ts +0 -24
- package/src/shared/mcp/functions/parse-agent-meta.function.ts +0 -27
- package/src/shared/mcp/functions/parse-skill-arguments.function.ts +0 -36
- package/src/shared/mcp/functions/parse-skill-content.function.ts +0 -38
- package/src/shared/mcp/functions/read-agent-meta.function.ts +0 -41
- package/src/shared/mcp/functions/resolve-skill-refs.function.ts +0 -50
- package/src/shared/mcp/functions/run-startup-health-check.function.ts +0 -34
- package/src/shared/mcp/functions/serialize-skill-content.function.ts +0 -12
- package/src/shared/mcp/functions/should-emit-log.function.ts +0 -38
- package/src/shared/mcp/index.ts +0 -28
- package/src/shared/mcp/typings/agent-types.interface.ts +0 -39
- package/src/shared/mcp/typings/log-types.interface.ts +0 -26
- package/src/shared/mcp/typings/mcp-capabilities.interface.ts +0 -16
- package/src/shared/mcp/typings/mcp-client.interface.ts +0 -317
- package/src/shared/mcp/typings/mcp-completion.interface.ts +0 -45
- package/src/shared/mcp/typings/mcp-content-result.model.ts +0 -9
- package/src/shared/mcp/typings/mcp-export-result.model.ts +0 -11
- package/src/shared/mcp/typings/mcp-gc-result.model.ts +0 -15
- package/src/shared/mcp/typings/mcp-integrity-check-result.model.ts +0 -17
- package/src/shared/mcp/typings/mcp-integrity-error.model.ts +0 -15
- package/src/shared/mcp/typings/mcp-notification.interface.ts +0 -9
- package/src/shared/mcp/typings/mcp-rebuild-result.model.ts +0 -9
- package/src/shared/mcp/typings/mcp-request.interface.ts +0 -11
- package/src/shared/mcp/typings/mcp-resource-result.interface.ts +0 -12
- package/src/shared/mcp/typings/mcp-resource-template.interface.ts +0 -11
- package/src/shared/mcp/typings/mcp-response.interface.ts +0 -18
- package/src/shared/mcp/typings/mcp-server-info.interface.ts +0 -7
- package/src/shared/mcp/typings/mcp-server-state.interface.ts +0 -17
- package/src/shared/mcp/typings/mcp-tool-annotations.interface.ts +0 -32
- package/src/shared/mcp/typings/mcp-tool-definition.interface.ts +0 -16
- package/src/shared/mcp/typings/mcp-tool-result.interface.ts +0 -19
- package/src/shared/mcp/typings/mcp-types.interface.ts +0 -158
- package/src/shared/mcp/typings/mcp-worker-client.interface.ts +0 -243
- package/src/shared/mcp/typings/prompt-types.interface.ts +0 -39
- package/src/shared/mcp/typings/remove-section-result.model.ts +0 -10
- package/src/shared/mcp/typings/sampling-types.interface.ts +0 -48
- package/src/shared/mcp/typings/skill-types.interface.ts +0 -29
- package/src/shared/mcp/typings/tool-call-result.model.ts +0 -18
- package/src/shared/mod.ts +0 -1
- package/src/shared/platform/functions/get-ipc-path.function.ts +0 -19
- package/src/shared/platform/functions/get-tmpdir.function.ts +0 -8
- package/src/shared/platform/functions/is-process-alive.function.ts +0 -17
- package/src/shared/platform/index.ts +0 -3
- package/src/shared/runtime/functions/detect-runtime.ts +0 -14
- package/src/shared/runtime/functions/get-args.ts +0 -16
- package/src/shared/runtime/index.ts +0 -3
- package/src/shared/runtime/typings/runtime.ts +0 -2
- package/src/shared/sync/functions/build-import-report.function.ts +0 -40
- package/src/shared/sync/functions/parse-export-entry.function.ts +0 -45
- package/src/shared/sync/functions/resolve-conflict.function.ts +0 -31
- package/src/shared/sync/functions/serialize-export-entry.function.ts +0 -18
- package/src/shared/sync/index.ts +0 -9
- package/src/shared/sync/typings/conflict-resolution.type.ts +0 -8
- package/src/shared/sync/typings/export-entry.interface.ts +0 -13
- package/src/shared/sync/typings/export-options.interface.ts +0 -9
- package/src/shared/sync/typings/import-options.interface.ts +0 -7
- package/src/shared/sync/typings/import-report.interface.ts +0 -15
- package/src/shared/version/constants/version.constant.ts +0 -2
- package/src/shared/version/index.ts +0 -1
- package/src/shared/wasm-codec/functions/decode-add-section-result.function.ts +0 -112
- package/src/shared/wasm-codec/functions/decode-compose-output.function.ts +0 -16
- package/src/shared/wasm-codec/functions/decode-document-manifest-list.function.ts +0 -70
- package/src/shared/wasm-codec/functions/decode-document-manifest.function.ts +0 -87
- package/src/shared/wasm-codec/functions/decode-f32.function.ts +0 -16
- package/src/shared/wasm-codec/functions/decode-key-value-text.function.ts +0 -15
- package/src/shared/wasm-codec/functions/decode-one-recall-result.function.ts +0 -86
- package/src/shared/wasm-codec/functions/decode-option-string.function.ts +0 -24
- package/src/shared/wasm-codec/functions/decode-recall-document.function.ts +0 -59
- package/src/shared/wasm-codec/functions/decode-recall-reference.function.ts +0 -52
- package/src/shared/wasm-codec/functions/decode-recall-result.function.ts +0 -267
- package/src/shared/wasm-codec/functions/decode-recall-sibling.function.ts +0 -43
- package/src/shared/wasm-codec/functions/decode-remove-flag.function.ts +0 -3
- package/src/shared/wasm-codec/functions/decode-scored-results.function.ts +0 -194
- package/src/shared/wasm-codec/functions/decode-section-match.function.ts +0 -80
- package/src/shared/wasm-codec/functions/decode-section-record-list.function.ts +0 -20
- package/src/shared/wasm-codec/functions/decode-section-record-trailing.function.ts +0 -75
- package/src/shared/wasm-codec/functions/decode-section-record.function.ts +0 -85
- package/src/shared/wasm-codec/functions/decode-section-records.function.ts +0 -249
- package/src/shared/wasm-codec/functions/decode-section-type.function.ts +0 -30
- package/src/shared/wasm-codec/functions/decode-string.function.ts +0 -22
- package/src/shared/wasm-codec/functions/decode-u32.function.ts +0 -16
- package/src/shared/wasm-codec/functions/decode-u64.function.ts +0 -16
- package/src/shared/wasm-codec/functions/decode-wasm-list.function.ts +0 -31
- package/src/shared/wasm-codec/functions/encode-add-section-params.function.ts +0 -102
- package/src/shared/wasm-codec/functions/encode-group-params.function.ts +0 -28
- package/src/shared/wasm-codec/functions/encode-identifier-list.function.ts +0 -17
- package/src/shared/wasm-codec/functions/encode-kbid-list.function.ts +0 -17
- package/src/shared/wasm-codec/functions/encode-option-string.function.ts +0 -14
- package/src/shared/wasm-codec/functions/encode-recall-params.function.ts +0 -68
- package/src/shared/wasm-codec/functions/encode-search-params.function.ts +0 -12
- package/src/shared/wasm-codec/functions/encode-section-type.function.ts +0 -18
- package/src/shared/wasm-codec/functions/encode-string.function.ts +0 -9
- package/src/shared/wasm-codec/functions/encode-type-filter-param.function.ts +0 -13
- package/src/shared/wasm-codec/functions/encode-u32.function.ts +0 -5
- package/src/shared/wasm-codec/functions/encode-update-section-params.function.ts +0 -16
- package/src/shared/wasm-codec/index.ts +0 -49
- package/src/shared/wasm-codec/typings/add-section-input.model.ts +0 -45
- package/src/shared/wasm-codec/typings/add-section-result.model.ts +0 -28
- package/src/shared/wasm-codec/typings/document-manifest.model.ts +0 -20
- package/src/shared/wasm-codec/typings/document-section.model.ts +0 -12
- package/src/shared/wasm-codec/typings/item-decoder.type.ts +0 -10
- package/src/shared/wasm-codec/typings/near-duplicate.model.ts +0 -16
- package/src/shared/wasm-codec/typings/paged-search-result.model.ts +0 -22
- package/src/shared/wasm-codec/typings/section-match.model.ts +0 -31
- package/src/shared/wasm-codec/typings/section-record-trailing.model.ts +0 -38
- package/src/shared/wasm-codec/typings/section-record.model.ts +0 -66
- package/src/shared/wasm-codec/typings/section-type-result.model.ts +0 -12
- package/src/shared/worker-client/classes/worker-client.class.ts +0 -466
- package/src/shared/worker-client/functions/compute-context-id.function.ts +0 -18
- package/src/shared/worker-client/functions/create-worker-client.function.ts +0 -70
- package/src/shared/worker-client/functions/discover-daemon.function.ts +0 -47
- package/src/shared/worker-client/functions/handle-ipc-data.function.ts +0 -49
- package/src/shared/worker-client/functions/resolve-db-path.function.ts +0 -21
- package/src/shared/worker-client/functions/send-ipc-request.function.ts +0 -39
- package/src/shared/worker-client/functions/spawn-daemon.function.ts +0 -35
- package/src/shared/worker-client/functions/wait-for-daemon.function.ts +0 -34
- package/src/shared/worker-client/index.ts +0 -44
- package/src/shared/worker-client/typings/add-section-result.model.ts +0 -39
- package/src/shared/worker-client/typings/content-result.model.ts +0 -12
- package/src/shared/worker-client/typings/daemon-info.model.ts +0 -7
- package/src/shared/worker-client/typings/export-result.model.ts +0 -14
- package/src/shared/worker-client/typings/gc-result.model.ts +0 -18
- package/src/shared/worker-client/typings/integrity-check-result.model.ts +0 -43
- package/src/shared/worker-client/typings/json-rpc-response.interface.ts +0 -17
- package/src/shared/worker-client/typings/migrate-result.model.ts +0 -11
- package/src/shared/worker-client/typings/pending-call.interface.ts +0 -7
- package/src/shared/worker-client/typings/rebuild-result.model.ts +0 -12
- package/src/shared/worker-client/typings/recall-document.model.ts +0 -16
- package/src/shared/worker-client/typings/recall-params.model.ts +0 -15
- package/src/shared/worker-client/typings/recall-reference.model.ts +0 -32
- package/src/shared/worker-client/typings/recall-result.model.ts +0 -98
- package/src/shared/worker-client/typings/recall-sibling.model.ts +0 -11
- package/src/shared/worker-client/typings/recall-single-result.model.ts +0 -41
- package/src/shared/worker-client/typings/remove-section-result.model.ts +0 -7
- package/src/shared/worker-client/typings/search-params.model.ts +0 -14
- package/src/shared/worker-client/typings/search-result.model.ts +0 -43
- package/src/shared/worker-client/typings/section.model.ts +0 -43
- package/src/shared/worker-client/typings/status-result.model.ts +0 -14
- package/src/shared/worker-client/typings/version-status.model.ts +0 -28
- package/src/shared/worker-client/typings/worker-client-error.interface.ts +0 -8
- package/src/shared/worker-client/typings/worker-client-options.interface.ts +0 -30
- package/src/shared/worker-daemon/classes/ipc-error.class.ts +0 -22
- package/src/shared/worker-daemon/classes/worker-daemon.class.ts +0 -1291
- package/src/shared/worker-daemon/constants/daemon-defaults.constant.ts +0 -29
- package/src/shared/worker-daemon/constants/wasm-method-map.constant.ts +0 -69
- package/src/shared/worker-daemon/functions/build-ipc-error-response.function.ts +0 -16
- package/src/shared/worker-daemon/functions/check-catalog-version.function.ts +0 -54
- package/src/shared/worker-daemon/functions/check-preconditions.function.ts +0 -28
- package/src/shared/worker-daemon/functions/create-host-imports.function.ts +0 -328
- package/src/shared/worker-daemon/functions/create-ipc-server.function.ts +0 -87
- package/src/shared/worker-daemon/functions/detect-stale-pid.function.ts +0 -33
- package/src/shared/worker-daemon/functions/dispatch-request.function.ts +0 -190
- package/src/shared/worker-daemon/functions/handle-check-version.function.ts +0 -74
- package/src/shared/worker-daemon/functions/handle-config-method.function.ts +0 -27
- package/src/shared/worker-daemon/functions/handle-read-ops.function.ts +0 -236
- package/src/shared/worker-daemon/functions/handle-write-ops.function.ts +0 -257
- package/src/shared/worker-daemon/functions/load-wasm-modules.function.ts +0 -95
- package/src/shared/worker-daemon/functions/parse-auto-capture-section.function.ts +0 -51
- package/src/shared/worker-daemon/functions/parse-catalog-version.function.ts +0 -20
- package/src/shared/worker-daemon/functions/parse-embedding-section.function.ts +0 -38
- package/src/shared/worker-daemon/functions/parse-worker-toml.function.ts +0 -104
- package/src/shared/worker-daemon/functions/read-config.function.ts +0 -83
- package/src/shared/worker-daemon/functions/run-startup-integrity-check.function.ts +0 -55
- package/src/shared/worker-daemon/functions/run-worker.function.ts +0 -57
- package/src/shared/worker-daemon/functions/scan-near-duplicates.function.ts +0 -92
- package/src/shared/worker-daemon/functions/start-daemon.function.ts +0 -74
- package/src/shared/worker-daemon/functions/wasm-bridge.function.ts +0 -144
- package/src/shared/worker-daemon/functions/wasm-memory-helpers.function.ts +0 -41
- package/src/shared/worker-daemon/functions/write-lock.function.ts +0 -49
- package/src/shared/worker-daemon/index.ts +0 -16
- package/src/shared/worker-daemon/typings/allocator-ref.interface.ts +0 -16
- package/src/shared/worker-daemon/typings/daemon-config.interface.ts +0 -20
- package/src/shared/worker-daemon/typings/fs-adapter.interface.ts +0 -22
- package/src/shared/worker-daemon/typings/handler-context.interface.ts +0 -19
- package/src/shared/worker-daemon/typings/ipc-handler.interface.ts +0 -39
- package/src/shared/worker-daemon/typings/memory-ref.interface.ts +0 -13
- package/src/shared/worker-daemon/typings/wasm-fn.type.ts +0 -2
- package/src/shared/worker-daemon/typings/wasm-modules.interface.ts +0 -7
- package/src/shared/worker-daemon/typings/write-lock.interface.ts +0 -13
- package/src/wasm/fs-database/kbdb_fs_database.d.ts +0 -259
- package/src/wasm/fs-database/kbdb_fs_database.js +0 -515
- package/src/wasm/fs-database/kbdb_fs_database_bg.wasm +0 -0
- package/src/wasm/fs-database/kbdb_fs_database_bg.wasm.d.ts +0 -35
- package/src/wasm/fs-database/package.json +0 -13
- package/src/wasm/kb-worker/kbdb_worker.d.ts +0 -650
- package/src/wasm/kb-worker/kbdb_worker.js +0 -1181
- package/src/wasm/kb-worker/kbdb_worker_bg.wasm +0 -0
- package/src/wasm/kb-worker/kbdb_worker_bg.wasm.d.ts +0 -77
- package/src/wasm/kb-worker/package.json +0 -13
- package/src/wasm/query-parser/kbdb_query_parser.d.ts +0 -195
- package/src/wasm/query-parser/kbdb_query_parser.js +0 -403
- package/src/wasm/query-parser/kbdb_query_parser_bg.wasm +0 -0
- package/src/wasm/query-parser/kbdb_query_parser_bg.wasm.d.ts +0 -25
- package/src/wasm/query-parser/package.json +0 -13
- package/src/worker.ts +0 -42
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import type { CliOptions } from '../typings/cli-options.interface.ts';
|
|
2
|
-
import type { CommandResult } from '../typings/command-result.model.ts';
|
|
3
|
-
import type { CliDeps } from '../typings/cli-deps.interface.ts';
|
|
4
|
-
import type { DisconnectableClient } from '../typings/disconnectable-client.interface.ts';
|
|
5
|
-
import { errorToMessage } from './error-to-message.function.ts';
|
|
6
|
-
import { versionGate } from './version-gate.function.ts';
|
|
7
|
-
import { dispatchCommand } from './dispatch-command.function.ts';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Handles data commands (search, learn, recall, etc.) by finding or
|
|
11
|
-
* creating the database, running the version gate, and dispatching to
|
|
12
|
-
* the appropriate command handler.
|
|
13
|
-
*
|
|
14
|
-
* When the database is not found in non-TTY mode, returns an error.
|
|
15
|
-
* In TTY mode, prompts the user to create a new database.
|
|
16
|
-
*
|
|
17
|
-
* @param options - parsed CLI options with command and args
|
|
18
|
-
* @param deps - injectable CLI dependencies
|
|
19
|
-
* @returns a `CommandResult` from the dispatched command
|
|
20
|
-
*/
|
|
21
|
-
export async function handleDataCommand(
|
|
22
|
-
options: CliOptions,
|
|
23
|
-
deps: CliDeps,
|
|
24
|
-
): Promise<CommandResult> {
|
|
25
|
-
let dbDir = deps.findDb(options.dbPath);
|
|
26
|
-
|
|
27
|
-
if (!dbDir) {
|
|
28
|
-
const basePath = options.dbPath ?? process.cwd();
|
|
29
|
-
if (!deps.isStdinTty()) {
|
|
30
|
-
return {
|
|
31
|
-
error:
|
|
32
|
-
`error: no .kbdb database found at ${basePath}` +
|
|
33
|
-
' -- run `kbdb --init` to create one',
|
|
34
|
-
exitCode: 1,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
const answer = await deps.promptUser(
|
|
38
|
-
`No .kbdb database found. Create one in ${basePath}? [y/N] `,
|
|
39
|
-
);
|
|
40
|
-
if (answer.toLowerCase() !== 'y') {
|
|
41
|
-
return { error: 'aborted: no database created', exitCode: 1 };
|
|
42
|
-
}
|
|
43
|
-
const initResult = deps.runInit(options);
|
|
44
|
-
if (!initResult.ok) {
|
|
45
|
-
return {
|
|
46
|
-
error: `error: ${initResult.errorMessage ?? 'init failed'}`,
|
|
47
|
-
exitCode: 1,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
dbDir = initResult.targetPath;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
let client: DisconnectableClient;
|
|
54
|
-
try {
|
|
55
|
-
client = await deps.createWorkerClient({ contextPath: dbDir });
|
|
56
|
-
} catch (err) {
|
|
57
|
-
return { error: `error: ${errorToMessage(err)}`, exitCode: 1 };
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
try {
|
|
61
|
-
const gateResult = await versionGate(client, dbDir);
|
|
62
|
-
if (gateResult) return gateResult;
|
|
63
|
-
return await dispatchCommand(client, options);
|
|
64
|
-
} finally {
|
|
65
|
-
client.disconnect();
|
|
66
|
-
}
|
|
67
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import type { CliOptions } from '../typings/cli-options.interface.ts';
|
|
2
|
-
import type { CommandResult } from '../typings/command-result.model.ts';
|
|
3
|
-
import type { CliDeps } from '../typings/cli-deps.interface.ts';
|
|
4
|
-
import type { DisconnectableClient } from '../typings/disconnectable-client.interface.ts';
|
|
5
|
-
import { errorToMessage } from './error-to-message.function.ts';
|
|
6
|
-
import { versionGate } from './version-gate.function.ts';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Handles the `mcp` command sub-flow.
|
|
10
|
-
*
|
|
11
|
-
* Resolves the database directory, creates a worker client, runs
|
|
12
|
-
* the version gate, and starts the MCP server. Disconnects the
|
|
13
|
-
* worker client when finished.
|
|
14
|
-
*
|
|
15
|
-
* @param options - parsed CLI options (uses `dbPath` and env fallback)
|
|
16
|
-
* @param deps - injectable CLI dependencies
|
|
17
|
-
* @returns a `CommandResult` with `exitCode: 0` on success
|
|
18
|
-
*/
|
|
19
|
-
export async function handleMcp(
|
|
20
|
-
options: CliOptions,
|
|
21
|
-
deps: CliDeps,
|
|
22
|
-
): Promise<CommandResult> {
|
|
23
|
-
const rawDbPath = options.dbPath ?? process.env['KBDB_DIR'];
|
|
24
|
-
if (!rawDbPath) {
|
|
25
|
-
return {
|
|
26
|
-
error: 'error: --db or KBDB_DIR required in MCP mode',
|
|
27
|
-
exitCode: 1,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
const dbDir = deps.findDb(rawDbPath);
|
|
31
|
-
if (!dbDir) {
|
|
32
|
-
return {
|
|
33
|
-
error: `error: no .kbdb database found at ${rawDbPath}`,
|
|
34
|
-
exitCode: 1,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
let client: DisconnectableClient;
|
|
38
|
-
try {
|
|
39
|
-
client = await deps.createWorkerClient({ contextPath: dbDir });
|
|
40
|
-
} catch (err) {
|
|
41
|
-
return { error: `error: ${errorToMessage(err)}`, exitCode: 1 };
|
|
42
|
-
}
|
|
43
|
-
try {
|
|
44
|
-
const gateResult = await versionGate(client, dbDir);
|
|
45
|
-
if (gateResult) return gateResult;
|
|
46
|
-
if (deps.startMcpServer) await deps.startMcpServer(dbDir);
|
|
47
|
-
return { exitCode: 0 };
|
|
48
|
-
} catch (err) {
|
|
49
|
-
return {
|
|
50
|
-
error: `error: mcp failed: ${errorToMessage(err)}`,
|
|
51
|
-
exitCode: 1,
|
|
52
|
-
};
|
|
53
|
-
} finally {
|
|
54
|
-
client.disconnect();
|
|
55
|
-
}
|
|
56
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import type { CliOptions } from '../typings/cli-options.interface.ts';
|
|
2
|
-
import type { CommandResult } from '../typings/command-result.model.ts';
|
|
3
|
-
import type { CliDeps } from '../typings/cli-deps.interface.ts';
|
|
4
|
-
import type { DisconnectableClient } from '../typings/disconnectable-client.interface.ts';
|
|
5
|
-
import { errorToMessage } from './error-to-message.function.ts';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Handles the `migrate` / `db-migrate` command sub-flow.
|
|
9
|
-
*
|
|
10
|
-
* Resolves the database directory, creates a worker client,
|
|
11
|
-
* checks the version, and runs migrations when needed. Disconnects
|
|
12
|
-
* the worker client when finished.
|
|
13
|
-
*
|
|
14
|
-
* @param options - parsed CLI options (uses `dbPath`)
|
|
15
|
-
* @param deps - injectable CLI dependencies
|
|
16
|
-
* @returns a `CommandResult` with migration output or an error
|
|
17
|
-
*/
|
|
18
|
-
export async function handleMigrate(
|
|
19
|
-
options: CliOptions,
|
|
20
|
-
deps: CliDeps,
|
|
21
|
-
): Promise<CommandResult> {
|
|
22
|
-
const dbDir = deps.findDb(options.dbPath);
|
|
23
|
-
if (!dbDir) {
|
|
24
|
-
return {
|
|
25
|
-
error: `error: no .kbdb database found at ${options.dbPath ?? process.cwd()}`,
|
|
26
|
-
exitCode: 1,
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
let client: DisconnectableClient;
|
|
30
|
-
try {
|
|
31
|
-
client = await deps.createWorkerClient({ contextPath: dbDir });
|
|
32
|
-
} catch (err) {
|
|
33
|
-
return { error: `error: ${errorToMessage(err)}`, exitCode: 1 };
|
|
34
|
-
}
|
|
35
|
-
try {
|
|
36
|
-
const versionStatus = await client.checkVersion(dbDir);
|
|
37
|
-
if (versionStatus.status === 'too_new') {
|
|
38
|
-
return {
|
|
39
|
-
error:
|
|
40
|
-
`error: database version` +
|
|
41
|
-
` ${versionStatus.currentVersion.toString()}` +
|
|
42
|
-
` is newer than kbdb version` +
|
|
43
|
-
` ${versionStatus.requiredVersion.toString()}` +
|
|
44
|
-
` -- upgrade kbdb`,
|
|
45
|
-
exitCode: 1,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
if (versionStatus.status === 'needs_migration') {
|
|
49
|
-
const migrateResult = await client.migrateDatabase(dbDir);
|
|
50
|
-
return {
|
|
51
|
-
output: JSON.stringify(migrateResult, null, 2),
|
|
52
|
-
exitCode: 0,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
return { output: 'already up to date', exitCode: 0 };
|
|
56
|
-
} catch (err) {
|
|
57
|
-
return {
|
|
58
|
-
error: `error: migrate failed: ${errorToMessage(err)}`,
|
|
59
|
-
exitCode: 1,
|
|
60
|
-
};
|
|
61
|
-
} finally {
|
|
62
|
-
client.disconnect();
|
|
63
|
-
}
|
|
64
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,296 +0,0 @@
|
|
|
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
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Returns `true` when stdin is an interactive terminal.
|
|
3
|
-
*
|
|
4
|
-
* @param stdin - readable stream to check (defaults to
|
|
5
|
-
* `process.stdin`)
|
|
6
|
-
*/
|
|
7
|
-
export function isStdinTty(
|
|
8
|
-
stdin: NodeJS.ReadStream = process.stdin,
|
|
9
|
-
): boolean {
|
|
10
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- isTTY is undefined at runtime for non-TTY despite Node types saying boolean
|
|
11
|
-
return stdin.isTTY ?? false;
|
|
12
|
-
}
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
import type { CliOptions } from '../typings/cli-options.interface.ts';
|
|
2
|
-
import {
|
|
3
|
-
DEFAULT_FORMAT,
|
|
4
|
-
DEFAULT_LIMIT,
|
|
5
|
-
DEFAULT_MODE,
|
|
6
|
-
} from '../constants/defaults.constant.ts';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Parses a raw argument vector into a structured `CliOptions` object.
|
|
10
|
-
*
|
|
11
|
-
* Recognises `--help` / `-h` and `--version` / `-v` as early-exit
|
|
12
|
-
* flags that set the command and return immediately. All other flags
|
|
13
|
-
* consume the next token as their value. The first non-flag token
|
|
14
|
-
* becomes the command; subsequent non-flag tokens become `args`.
|
|
15
|
-
*
|
|
16
|
-
* Compound commands are supported: when the first positional token is
|
|
17
|
-
* a group name (`db`, `skill`, or `agent`), the next positional token
|
|
18
|
-
* is joined with a hyphen to form the compound command
|
|
19
|
-
* (e.g. `db init` → `'db-init'`).
|
|
20
|
-
*
|
|
21
|
-
* Context-aware `--help`: when `--help` or `-h` appears after a
|
|
22
|
-
* command has been set, the existing command is moved to `args[0]`
|
|
23
|
-
* and the command is set to `'help'`, enabling per-command help.
|
|
24
|
-
*
|
|
25
|
-
* Deprecated flags `--init` and `--migrate` emit a warning to stderr
|
|
26
|
-
* before setting the corresponding command.
|
|
27
|
-
*
|
|
28
|
-
* @param argv - argument strings (typically `process.argv.slice(2)`)
|
|
29
|
-
* @returns fully populated `CliOptions` with defaults applied
|
|
30
|
-
*/
|
|
31
|
-
export function parseArgs(argv: string[]): CliOptions {
|
|
32
|
-
const options: CliOptions = {
|
|
33
|
-
command: '',
|
|
34
|
-
format: DEFAULT_FORMAT,
|
|
35
|
-
mode: DEFAULT_MODE,
|
|
36
|
-
limit: DEFAULT_LIMIT,
|
|
37
|
-
args: [],
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
let i = 0;
|
|
41
|
-
while (i < argv.length) {
|
|
42
|
-
const arg = argv[i];
|
|
43
|
-
switch (arg) {
|
|
44
|
-
case '--help':
|
|
45
|
-
case '-h':
|
|
46
|
-
if (options.command) {
|
|
47
|
-
options.args.unshift(options.command);
|
|
48
|
-
options.command = 'help';
|
|
49
|
-
} else {
|
|
50
|
-
options.command = 'help';
|
|
51
|
-
}
|
|
52
|
-
return options;
|
|
53
|
-
case '--version':
|
|
54
|
-
case '-v':
|
|
55
|
-
options.command = 'version';
|
|
56
|
-
return options;
|
|
57
|
-
case '--init':
|
|
58
|
-
// eslint-disable-next-line no-console
|
|
59
|
-
console.error(
|
|
60
|
-
'warning: --init is deprecated,' + ' use "kbdb db init"',
|
|
61
|
-
);
|
|
62
|
-
options.command = 'init';
|
|
63
|
-
break;
|
|
64
|
-
case '--migrate':
|
|
65
|
-
// eslint-disable-next-line no-console
|
|
66
|
-
console.error(
|
|
67
|
-
'warning: --migrate is deprecated,' +
|
|
68
|
-
' use "kbdb db migrate"',
|
|
69
|
-
);
|
|
70
|
-
options.command = 'migrate';
|
|
71
|
-
break;
|
|
72
|
-
case '--db':
|
|
73
|
-
options.dbPath = argv[++i];
|
|
74
|
-
break;
|
|
75
|
-
case '--format':
|
|
76
|
-
case '-f':
|
|
77
|
-
options.format = (argv[++i] ??
|
|
78
|
-
DEFAULT_FORMAT) as CliOptions['format'];
|
|
79
|
-
break;
|
|
80
|
-
case '--mode':
|
|
81
|
-
case '-m':
|
|
82
|
-
options.mode = (argv[++i] ??
|
|
83
|
-
DEFAULT_MODE) as CliOptions['mode'];
|
|
84
|
-
break;
|
|
85
|
-
case '--limit':
|
|
86
|
-
case '-l':
|
|
87
|
-
options.limit =
|
|
88
|
-
parseInt(argv[++i] ?? '', 10) || DEFAULT_LIMIT;
|
|
89
|
-
break;
|
|
90
|
-
case '--offset':
|
|
91
|
-
case '-o':
|
|
92
|
-
options.offset = Math.max(
|
|
93
|
-
0,
|
|
94
|
-
parseInt(argv[++i] ?? '', 10) || 0,
|
|
95
|
-
);
|
|
96
|
-
break;
|
|
97
|
-
case '--algo':
|
|
98
|
-
options.algo = argv[++i];
|
|
99
|
-
break;
|
|
100
|
-
case '--title':
|
|
101
|
-
options.title = argv[++i];
|
|
102
|
-
break;
|
|
103
|
-
case '--description':
|
|
104
|
-
options.description = argv[++i];
|
|
105
|
-
break;
|
|
106
|
-
case '--docid':
|
|
107
|
-
options.docid = argv[++i];
|
|
108
|
-
break;
|
|
109
|
-
case '--name':
|
|
110
|
-
options.name = argv[++i];
|
|
111
|
-
break;
|
|
112
|
-
case '--persona':
|
|
113
|
-
options.persona = argv[++i];
|
|
114
|
-
break;
|
|
115
|
-
case '--body':
|
|
116
|
-
options.body = argv[++i];
|
|
117
|
-
break;
|
|
118
|
-
case '--skills':
|
|
119
|
-
options.skills = (argv[++i] ?? '').split(',');
|
|
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;
|
|
134
|
-
case '--content':
|
|
135
|
-
case '-c':
|
|
136
|
-
options.content = true;
|
|
137
|
-
break;
|
|
138
|
-
default:
|
|
139
|
-
if (!options.command) {
|
|
140
|
-
options.command = arg;
|
|
141
|
-
} else if (
|
|
142
|
-
!options.args.length &&
|
|
143
|
-
(options.command === 'db' ||
|
|
144
|
-
options.command === 'skill' ||
|
|
145
|
-
options.command === 'agent')
|
|
146
|
-
) {
|
|
147
|
-
options.command = `${options.command}-${arg}`;
|
|
148
|
-
} else {
|
|
149
|
-
options.args.push(arg);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
i++;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
return options;
|
|
156
|
-
}
|