@dikolab/kbdb 0.3.1 → 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 +108 -126
- 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 +78 -12
- package/docs/details/knowledge-base.md +173 -0
- package/docs/details/library-api.md +42 -2
- package/docs/details/mcp-server.md +39 -8
- package/docs/details/search-and-ranking.md +56 -0
- 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 +43 -22
- package/docs/release-notes/0.3.1.md +10 -0
- package/docs/release-notes/0.3.2.md +64 -0
- package/docs/release-notes/0.4.0.md +80 -0
- package/docs/release-notes/README.md +2 -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,29 +0,0 @@
|
|
|
1
|
-
/** Default maximum number of items held in daemon memory. */
|
|
2
|
-
export const DEFAULT_ITEM_LIMIT = 1000;
|
|
3
|
-
|
|
4
|
-
/** Default maximum number of index entries held in daemon memory. */
|
|
5
|
-
export const DEFAULT_INDEX_LIMIT = 100;
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Default idle timeout in milliseconds before the daemon shuts
|
|
9
|
-
* down automatically (5 minutes).
|
|
10
|
-
*/
|
|
11
|
-
export const DEFAULT_TIMEOUT_MS = 300_000;
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Default time-to-live in milliseconds for each cached item
|
|
15
|
-
* (1 minute).
|
|
16
|
-
*/
|
|
17
|
-
export const DEFAULT_ITEM_TTL_MS = 60_000;
|
|
18
|
-
|
|
19
|
-
/** Filename of the daemon configuration file inside `.kbdb/`. */
|
|
20
|
-
export const WORKER_TOML_FILENAME = 'worker.toml';
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Database format version the daemon supports.
|
|
24
|
-
*
|
|
25
|
-
* Read from `catalog.toml` at startup. If the catalog version
|
|
26
|
-
* differs, the daemon prints a structured error to stderr and
|
|
27
|
-
* exits with code 1 before loading any WASM modules.
|
|
28
|
-
*/
|
|
29
|
-
export const DB_FORMAT_VERSION = 1;
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import type { DaemonConfig } from '../typings/daemon-config.interface.ts';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Maps incoming IPC method names to `kb-worker.wasm` export names.
|
|
5
|
-
*
|
|
6
|
-
* Both camelCase and snake_case variants of each method are
|
|
7
|
-
* included so that clients may use either convention.
|
|
8
|
-
*/
|
|
9
|
-
export const WASM_METHOD_MAP: Readonly<
|
|
10
|
-
Partial<Record<string, string>>
|
|
11
|
-
> = {
|
|
12
|
-
search: 'worker_search',
|
|
13
|
-
addSection: 'worker_add_section',
|
|
14
|
-
add_section: 'worker_add_section',
|
|
15
|
-
updateSection: 'worker_update_section',
|
|
16
|
-
update_section: 'worker_update_section',
|
|
17
|
-
removeSection: 'worker_remove_section',
|
|
18
|
-
remove_section: 'worker_remove_section',
|
|
19
|
-
readSections: 'worker_read_sections',
|
|
20
|
-
read_sections: 'worker_read_sections',
|
|
21
|
-
groupSections: 'worker_group_sections',
|
|
22
|
-
group_sections: 'worker_group_sections',
|
|
23
|
-
removeGrouping: 'worker_remove_grouping',
|
|
24
|
-
remove_grouping: 'worker_remove_grouping',
|
|
25
|
-
retrieveDocument: 'worker_retrieve_doc',
|
|
26
|
-
retrieve_doc: 'worker_retrieve_doc',
|
|
27
|
-
content: 'worker_compose',
|
|
28
|
-
compose: 'worker_compose',
|
|
29
|
-
integrity_check: 'worker_check_integrity',
|
|
30
|
-
integrityCheck: 'worker_check_integrity',
|
|
31
|
-
gc: 'worker_garbage_collect',
|
|
32
|
-
rebuild_indexes: 'worker_rebuild_indexes',
|
|
33
|
-
rebuildIndexes: 'worker_rebuild_indexes',
|
|
34
|
-
init_directory: 'worker_init_directory',
|
|
35
|
-
initDirectory: 'worker_init_directory',
|
|
36
|
-
migrateDatabase: 'worker_migrate',
|
|
37
|
-
query: 'worker_query',
|
|
38
|
-
get_result_status: 'worker_result_status',
|
|
39
|
-
get_result: 'worker_get_result',
|
|
40
|
-
invalidate: 'worker_invalidate',
|
|
41
|
-
invalidate_all: 'worker_invalidate_all',
|
|
42
|
-
invalidateAll: 'worker_invalidate_all',
|
|
43
|
-
db_status: 'worker_status',
|
|
44
|
-
dbStatus: 'worker_status',
|
|
45
|
-
listByType: 'worker_list_by_type',
|
|
46
|
-
list_by_type: 'worker_list_by_type',
|
|
47
|
-
listDocumentsByType: 'worker_list_docs_by_type',
|
|
48
|
-
list_docs_by_type: 'worker_list_docs_by_type',
|
|
49
|
-
recall: 'worker_recall',
|
|
50
|
-
export: 'worker_export',
|
|
51
|
-
exportDb: 'worker_export',
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
/** Prefix shared by all IPC config-accessor method names. */
|
|
55
|
-
export const CONFIG_PREFIX = 'config_';
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Maps config IPC key suffixes to `DaemonConfig` property names.
|
|
59
|
-
*
|
|
60
|
-
* A client sends `config_timeout_ms` to read `config.timeoutMs`.
|
|
61
|
-
*/
|
|
62
|
-
export const CONFIG_KEY_MAP: Readonly<
|
|
63
|
-
Partial<Record<string, keyof DaemonConfig>>
|
|
64
|
-
> = {
|
|
65
|
-
timeout_ms: 'timeoutMs',
|
|
66
|
-
item_ttl_ms: 'itemTtlMs',
|
|
67
|
-
item_limit: 'itemLimit',
|
|
68
|
-
index_limit: 'indexLimit',
|
|
69
|
-
};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { IpcResponse } from '../typings/ipc-handler.interface.ts';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Builds a JSON-RPC 2.0 error response object.
|
|
5
|
-
*
|
|
6
|
-
* @param id - request identifier to echo back in the response
|
|
7
|
-
* @param code - JSON-RPC error code
|
|
8
|
-
* @param message - human-readable error description
|
|
9
|
-
*/
|
|
10
|
-
export function buildIpcErrorResponse(
|
|
11
|
-
id: number | string,
|
|
12
|
-
code: number,
|
|
13
|
-
message: string,
|
|
14
|
-
): IpcResponse {
|
|
15
|
-
return { jsonrpc: '2.0', id, error: { code, message } };
|
|
16
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { DB_FORMAT_VERSION } from '../constants/daemon-defaults.constant.ts';
|
|
4
|
-
import { parseCatalogVersion } from './parse-catalog-version.function.ts';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Reads `catalog.toml` in `targetDir` and validates its version
|
|
8
|
-
* against `DB_FORMAT_VERSION`.
|
|
9
|
-
*
|
|
10
|
-
* @param targetDir - absolute path to the `.kbdb` directory
|
|
11
|
-
* @throws {Error} when the catalog cannot be read, is missing a
|
|
12
|
-
* version, or the version is incompatible with the current engine
|
|
13
|
-
*/
|
|
14
|
-
export function checkCatalogVersion(targetDir: string): void {
|
|
15
|
-
const catalogPath = join(targetDir, 'catalog.toml');
|
|
16
|
-
let text: string;
|
|
17
|
-
try {
|
|
18
|
-
text = readFileSync(catalogPath, 'utf-8');
|
|
19
|
-
} catch {
|
|
20
|
-
throw new Error(
|
|
21
|
-
`cannot read database directory: ${targetDir}` +
|
|
22
|
-
' -- permission denied',
|
|
23
|
-
);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const version = parseCatalogVersion(text);
|
|
27
|
-
if (version === null) {
|
|
28
|
-
throw new Error(
|
|
29
|
-
'database version 0 requires migration to version ' +
|
|
30
|
-
String(DB_FORMAT_VERSION) +
|
|
31
|
-
' -- run `kbdb --migrate` before starting the daemon',
|
|
32
|
-
);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if (version > DB_FORMAT_VERSION) {
|
|
36
|
-
throw new Error(
|
|
37
|
-
'database version ' +
|
|
38
|
-
String(version) +
|
|
39
|
-
' is newer than kbdb version ' +
|
|
40
|
-
String(DB_FORMAT_VERSION) +
|
|
41
|
-
' -- upgrade kbdb to open this database',
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (version < DB_FORMAT_VERSION) {
|
|
46
|
-
throw new Error(
|
|
47
|
-
'database version ' +
|
|
48
|
-
String(version) +
|
|
49
|
-
' requires migration to version ' +
|
|
50
|
-
String(DB_FORMAT_VERSION) +
|
|
51
|
-
' -- run `kbdb --migrate` before starting the daemon',
|
|
52
|
-
);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { existsSync, accessSync, constants } from 'node:fs';
|
|
2
|
-
import { checkCatalogVersion } from './check-catalog-version.function.ts';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Validates startup preconditions for the worker daemon.
|
|
6
|
-
*
|
|
7
|
-
* Checks that `targetDir` exists, is readable and writable, and
|
|
8
|
-
* that `catalog.toml` reports a compatible format version.
|
|
9
|
-
*
|
|
10
|
-
* @param targetDir - absolute path to the `.kbdb` directory
|
|
11
|
-
* @throws {Error} when any precondition fails
|
|
12
|
-
*/
|
|
13
|
-
export function checkPreconditions(targetDir: string): void {
|
|
14
|
-
if (!existsSync(targetDir)) {
|
|
15
|
-
throw new Error(`database directory not found: ${targetDir}`);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
try {
|
|
19
|
-
accessSync(targetDir, constants.R_OK | constants.W_OK);
|
|
20
|
-
} catch {
|
|
21
|
-
throw new Error(
|
|
22
|
-
`cannot access database directory: ${targetDir}` +
|
|
23
|
-
' -- permission denied',
|
|
24
|
-
);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
checkCatalogVersion(targetDir);
|
|
28
|
-
}
|
|
@@ -1,328 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
readFileSync,
|
|
3
|
-
writeFileSync,
|
|
4
|
-
renameSync,
|
|
5
|
-
unlinkSync,
|
|
6
|
-
readdirSync,
|
|
7
|
-
mkdirSync,
|
|
8
|
-
existsSync,
|
|
9
|
-
} from 'node:fs';
|
|
10
|
-
import { join } from 'node:path';
|
|
11
|
-
|
|
12
|
-
// ---------------------------------------------------------------------------
|
|
13
|
-
// FsAdapter interface (enables dependency injection for testing)
|
|
14
|
-
// ---------------------------------------------------------------------------
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Minimal filesystem operations required by the host imports.
|
|
18
|
-
*
|
|
19
|
-
* The default implementation delegates to `node:fs` synchronous
|
|
20
|
-
* APIs. Tests inject a stub to avoid touching the real filesystem.
|
|
21
|
-
*/
|
|
22
|
-
export interface FsAdapter {
|
|
23
|
-
/** Read entire file as a Buffer. */
|
|
24
|
-
readFileSync(path: string): Buffer;
|
|
25
|
-
/** Write data buffer to file. */
|
|
26
|
-
writeFileSync(path: string, data: Uint8Array): void;
|
|
27
|
-
/** Rename `oldPath` to `newPath`. */
|
|
28
|
-
renameSync(oldPath: string, newPath: string): void;
|
|
29
|
-
/** Delete a file. */
|
|
30
|
-
unlinkSync(path: string): void;
|
|
31
|
-
/** List directory entries as strings. */
|
|
32
|
-
readdirSync(path: string): string[];
|
|
33
|
-
/** Create a directory (and parents) recursively. */
|
|
34
|
-
mkdirSync(path: string): void;
|
|
35
|
-
/** Return true if the path exists. */
|
|
36
|
-
existsSync(path: string): boolean;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// ---------------------------------------------------------------------------
|
|
40
|
-
// MemoryRef interface
|
|
41
|
-
// ---------------------------------------------------------------------------
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* A mutable reference to the WASM linear memory.
|
|
45
|
-
*
|
|
46
|
-
* The `memory` field starts as `null` and is wired up after the
|
|
47
|
-
* `kb-worker` WASM module is instantiated (the module exports its
|
|
48
|
-
* own memory rather than importing one). Host import functions
|
|
49
|
-
* read `memory` at call time, not at creation time, so the ref
|
|
50
|
-
* can be populated after the import record is built.
|
|
51
|
-
*/
|
|
52
|
-
export interface MemoryRef {
|
|
53
|
-
memory: WebAssembly.Memory | null;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// ---------------------------------------------------------------------------
|
|
57
|
-
// AllocatorRef interface
|
|
58
|
-
// ---------------------------------------------------------------------------
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* A mutable reference to the WASM allocator function.
|
|
62
|
-
*
|
|
63
|
-
* The `alloc` field starts as `null` and is wired up after the
|
|
64
|
-
* `kb-worker` WASM module is instantiated. Host import functions
|
|
65
|
-
* that must allocate memory in WASM linear memory check this
|
|
66
|
-
* reference before proceeding and return -1 when it is null.
|
|
67
|
-
*/
|
|
68
|
-
export interface AllocatorRef {
|
|
69
|
-
/**
|
|
70
|
-
* Allocates `size` bytes in WASM linear memory and returns the
|
|
71
|
-
* byte offset of the allocated region, or `null` when the
|
|
72
|
-
* allocator is not yet available.
|
|
73
|
-
*/
|
|
74
|
-
alloc: ((size: number) => number) | null;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/** Default `FsAdapter` backed by `node:fs` synchronous APIs. */
|
|
78
|
-
const nodeFsAdapter: FsAdapter = {
|
|
79
|
-
readFileSync: (p) => readFileSync(p),
|
|
80
|
-
writeFileSync: (p, d) => {
|
|
81
|
-
writeFileSync(p, d);
|
|
82
|
-
},
|
|
83
|
-
renameSync: (o, n) => {
|
|
84
|
-
renameSync(o, n);
|
|
85
|
-
},
|
|
86
|
-
unlinkSync: (p) => {
|
|
87
|
-
unlinkSync(p);
|
|
88
|
-
},
|
|
89
|
-
readdirSync: (p) => readdirSync(p),
|
|
90
|
-
mkdirSync: (p) => {
|
|
91
|
-
mkdirSync(p, { recursive: true });
|
|
92
|
-
},
|
|
93
|
-
existsSync: (p) => existsSync(p),
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
/** Default `MemoryRef` with no memory wired. */
|
|
97
|
-
const nullMemory: MemoryRef = { memory: null };
|
|
98
|
-
|
|
99
|
-
/** Default `AllocatorRef` with no allocator wired. */
|
|
100
|
-
const nullAllocator: AllocatorRef = { alloc: null };
|
|
101
|
-
|
|
102
|
-
// ---------------------------------------------------------------------------
|
|
103
|
-
// createHostImports
|
|
104
|
-
// ---------------------------------------------------------------------------
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Creates the host I/O import functions required by `kb-worker.wasm`.
|
|
108
|
-
*
|
|
109
|
-
* All functions read the WASM linear memory through `memoryRef`,
|
|
110
|
-
* a deferred reference wired up after module instantiation (the
|
|
111
|
-
* module exports its own memory). Paths from WASM are resolved
|
|
112
|
-
* relative to `contextPath`.
|
|
113
|
-
*
|
|
114
|
-
* @param contextPath - absolute path to the `.kbdb` database directory
|
|
115
|
-
* @param memoryRef - deferred reference to the WASM module's
|
|
116
|
-
* exported memory; wired after instantiation
|
|
117
|
-
* @param fs - filesystem adapter; defaults to real `node:fs` operations
|
|
118
|
-
* @param allocator - reference to the WASM allocator; wired after
|
|
119
|
-
* `kb-worker` instantiation. Defaults to a null (uninitialized) ref.
|
|
120
|
-
* @returns a record of host import functions keyed by their WASM import
|
|
121
|
-
* names
|
|
122
|
-
*/
|
|
123
|
-
export function createHostImports(
|
|
124
|
-
contextPath: string,
|
|
125
|
-
memoryRef: MemoryRef = nullMemory,
|
|
126
|
-
fs: FsAdapter = nodeFsAdapter,
|
|
127
|
-
allocator: AllocatorRef = nullAllocator,
|
|
128
|
-
): Record<string, WebAssembly.ImportValue> {
|
|
129
|
-
function getBuffer(): ArrayBuffer {
|
|
130
|
-
if (!memoryRef.memory) {
|
|
131
|
-
throw new Error('WASM memory not initialized');
|
|
132
|
-
}
|
|
133
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
134
|
-
return memoryRef.memory.buffer as ArrayBuffer;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
function readPathArg(ptr: number, len: number): string {
|
|
138
|
-
const bytes = new Uint8Array(getBuffer(), ptr, len);
|
|
139
|
-
const decoded = new TextDecoder().decode(bytes);
|
|
140
|
-
if (decoded.startsWith('/')) return decoded;
|
|
141
|
-
return join(contextPath, decoded);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
return {
|
|
145
|
-
/**
|
|
146
|
-
* Reads a file at the path encoded in shared memory and writes
|
|
147
|
-
* the result back via the out-pointer protocol.
|
|
148
|
-
*
|
|
149
|
-
* `outPtr` and `outLen` are WASM linear-memory addresses. On
|
|
150
|
-
* success, the host allocates a buffer via `allocator.alloc`,
|
|
151
|
-
* copies the file data there, and writes the allocated pointer
|
|
152
|
-
* as a LE u32 to `outPtr` and the data length as a LE u32 to
|
|
153
|
-
* `outLen`. Returns 0 on success, -1 on error or when the
|
|
154
|
-
* allocator is not yet available.
|
|
155
|
-
*/
|
|
156
|
-
host_read_file(
|
|
157
|
-
pathPtr: number,
|
|
158
|
-
pathLen: number,
|
|
159
|
-
outPtr: number,
|
|
160
|
-
outLen: number,
|
|
161
|
-
): number {
|
|
162
|
-
try {
|
|
163
|
-
if (!allocator.alloc) return -1;
|
|
164
|
-
const filePath = readPathArg(pathPtr, pathLen);
|
|
165
|
-
const data = fs.readFileSync(filePath);
|
|
166
|
-
const dataLen = data.byteLength;
|
|
167
|
-
if (dataLen === 0) {
|
|
168
|
-
// No allocation -- buffer cannot have grown; safe to
|
|
169
|
-
// create DataView now.
|
|
170
|
-
const dv = new DataView(getBuffer());
|
|
171
|
-
dv.setUint32(outPtr, 0, true);
|
|
172
|
-
dv.setUint32(outLen, 0, true);
|
|
173
|
-
return 0;
|
|
174
|
-
}
|
|
175
|
-
const dataPtr = allocator.alloc(dataLen);
|
|
176
|
-
if (dataPtr === 0) return -1;
|
|
177
|
-
// Create DataView AFTER alloc() -- alloc may trigger WASM
|
|
178
|
-
// memory growth, which detaches the old ArrayBuffer and
|
|
179
|
-
// replaces it with a new one. A DataView captured before
|
|
180
|
-
// growth would reference the detached buffer and throw.
|
|
181
|
-
const dv = new DataView(getBuffer());
|
|
182
|
-
const memView = new Uint8Array(getBuffer());
|
|
183
|
-
memView.set(
|
|
184
|
-
new Uint8Array(
|
|
185
|
-
data.buffer,
|
|
186
|
-
data.byteOffset,
|
|
187
|
-
data.byteLength,
|
|
188
|
-
),
|
|
189
|
-
dataPtr,
|
|
190
|
-
);
|
|
191
|
-
dv.setUint32(outPtr, dataPtr, true);
|
|
192
|
-
dv.setUint32(outLen, dataLen, true);
|
|
193
|
-
return 0;
|
|
194
|
-
} catch {
|
|
195
|
-
return -1;
|
|
196
|
-
}
|
|
197
|
-
},
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Writes bytes from shared memory (`dataPtr`, `dataLen`) to the
|
|
201
|
-
* file at the path encoded in shared memory. Returns 0 on
|
|
202
|
-
* success, -1 on error.
|
|
203
|
-
*/
|
|
204
|
-
host_write_file(
|
|
205
|
-
pathPtr: number,
|
|
206
|
-
pathLen: number,
|
|
207
|
-
dataPtr: number,
|
|
208
|
-
dataLen: number,
|
|
209
|
-
): number {
|
|
210
|
-
try {
|
|
211
|
-
const filePath = readPathArg(pathPtr, pathLen);
|
|
212
|
-
const data = new Uint8Array(getBuffer(), dataPtr, dataLen);
|
|
213
|
-
fs.writeFileSync(filePath, data);
|
|
214
|
-
return 0;
|
|
215
|
-
} catch {
|
|
216
|
-
return -1;
|
|
217
|
-
}
|
|
218
|
-
},
|
|
219
|
-
|
|
220
|
-
/**
|
|
221
|
-
* Renames the file at `oldPtr/oldLen` to `newPtr/newLen`.
|
|
222
|
-
* Both paths are resolved relative to `contextPath`. Returns 0
|
|
223
|
-
* on success, -1 on error.
|
|
224
|
-
*/
|
|
225
|
-
host_rename(
|
|
226
|
-
oldPtr: number,
|
|
227
|
-
oldLen: number,
|
|
228
|
-
newPtr: number,
|
|
229
|
-
newLen: number,
|
|
230
|
-
): number {
|
|
231
|
-
try {
|
|
232
|
-
const oldPath = readPathArg(oldPtr, oldLen);
|
|
233
|
-
const newPath = readPathArg(newPtr, newLen);
|
|
234
|
-
fs.renameSync(oldPath, newPath);
|
|
235
|
-
return 0;
|
|
236
|
-
} catch {
|
|
237
|
-
return -1;
|
|
238
|
-
}
|
|
239
|
-
},
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* Deletes the file at the path encoded in shared memory.
|
|
243
|
-
* Returns 0 on success, -1 on error.
|
|
244
|
-
*/
|
|
245
|
-
host_remove_file(pathPtr: number, pathLen: number): number {
|
|
246
|
-
try {
|
|
247
|
-
const filePath = readPathArg(pathPtr, pathLen);
|
|
248
|
-
fs.unlinkSync(filePath);
|
|
249
|
-
return 0;
|
|
250
|
-
} catch {
|
|
251
|
-
return -1;
|
|
252
|
-
}
|
|
253
|
-
},
|
|
254
|
-
|
|
255
|
-
/**
|
|
256
|
-
* Lists the directory at the path encoded in shared memory and
|
|
257
|
-
* writes the result back via the out-pointer protocol.
|
|
258
|
-
*
|
|
259
|
-
* `outPtr` and `outLen` are WASM linear-memory addresses. On
|
|
260
|
-
* success, the host allocates a buffer via `allocator.alloc`,
|
|
261
|
-
* copies a newline-delimited UTF-8 listing there, and writes
|
|
262
|
-
* the allocated pointer as a LE u32 to `outPtr` and the byte
|
|
263
|
-
* length as a LE u32 to `outLen`. Returns 0 on success, -1 on
|
|
264
|
-
* error or when the allocator is not yet available.
|
|
265
|
-
*/
|
|
266
|
-
host_list_dir(
|
|
267
|
-
pathPtr: number,
|
|
268
|
-
pathLen: number,
|
|
269
|
-
outPtr: number,
|
|
270
|
-
outLen: number,
|
|
271
|
-
): number {
|
|
272
|
-
try {
|
|
273
|
-
if (!allocator.alloc) return -1;
|
|
274
|
-
const dirPath = readPathArg(pathPtr, pathLen);
|
|
275
|
-
const entries = fs.readdirSync(dirPath);
|
|
276
|
-
const text = entries.join('\n');
|
|
277
|
-
const encoded = new TextEncoder().encode(text);
|
|
278
|
-
if (encoded.length === 0) {
|
|
279
|
-
// No allocation -- buffer cannot have grown; safe to
|
|
280
|
-
// create DataView now.
|
|
281
|
-
const dv = new DataView(getBuffer());
|
|
282
|
-
dv.setUint32(outPtr, 0, true);
|
|
283
|
-
dv.setUint32(outLen, 0, true);
|
|
284
|
-
return 0;
|
|
285
|
-
}
|
|
286
|
-
const dataPtr = allocator.alloc(encoded.length);
|
|
287
|
-
if (dataPtr === 0) return -1;
|
|
288
|
-
// Create DataView AFTER alloc() -- alloc may trigger WASM
|
|
289
|
-
// memory growth, which detaches the old ArrayBuffer and
|
|
290
|
-
// replaces it with a new one. A DataView captured before
|
|
291
|
-
// growth would reference the detached buffer and throw.
|
|
292
|
-
const dv = new DataView(getBuffer());
|
|
293
|
-
new Uint8Array(getBuffer(), dataPtr, encoded.length).set(
|
|
294
|
-
encoded,
|
|
295
|
-
);
|
|
296
|
-
dv.setUint32(outPtr, dataPtr, true);
|
|
297
|
-
dv.setUint32(outLen, encoded.length, true);
|
|
298
|
-
return 0;
|
|
299
|
-
} catch {
|
|
300
|
-
return -1;
|
|
301
|
-
}
|
|
302
|
-
},
|
|
303
|
-
|
|
304
|
-
/**
|
|
305
|
-
* Creates the directory at the path encoded in shared memory,
|
|
306
|
-
* including any missing parent directories (recursive). Returns
|
|
307
|
-
* 0 on success, -1 on error.
|
|
308
|
-
*/
|
|
309
|
-
host_mkdir(pathPtr: number, pathLen: number): number {
|
|
310
|
-
try {
|
|
311
|
-
const dirPath = readPathArg(pathPtr, pathLen);
|
|
312
|
-
fs.mkdirSync(dirPath);
|
|
313
|
-
return 0;
|
|
314
|
-
} catch {
|
|
315
|
-
return -1;
|
|
316
|
-
}
|
|
317
|
-
},
|
|
318
|
-
|
|
319
|
-
/**
|
|
320
|
-
* Checks whether the file at the path encoded in shared memory
|
|
321
|
-
* exists. Returns 1 if it exists, 0 if it does not.
|
|
322
|
-
*/
|
|
323
|
-
host_file_exists(pathPtr: number, pathLen: number): number {
|
|
324
|
-
const filePath = readPathArg(pathPtr, pathLen);
|
|
325
|
-
return fs.existsSync(filePath) ? 1 : 0;
|
|
326
|
-
},
|
|
327
|
-
};
|
|
328
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { createServer } from 'node:net';
|
|
2
|
-
import type { Server, Socket } from 'node:net';
|
|
3
|
-
import type {
|
|
4
|
-
IpcHandler,
|
|
5
|
-
IpcRequest,
|
|
6
|
-
IpcResponse,
|
|
7
|
-
} from '../typings/ipc-handler.interface.ts';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Creates a Unix socket (or named pipe on Windows) IPC server that
|
|
11
|
-
* reads newline-delimited JSON-RPC requests and writes responses.
|
|
12
|
-
*
|
|
13
|
-
* Each line received on a socket connection is parsed as an
|
|
14
|
-
* `IpcRequest`, dispatched to `handler`, and the resulting
|
|
15
|
-
* `IpcResponse` is written back as a newline-terminated JSON string.
|
|
16
|
-
* A malformed line that cannot be parsed results in a JSON-RPC
|
|
17
|
-
* parse-error response (`-32700`).
|
|
18
|
-
*
|
|
19
|
-
* @param socketPath - path to the Unix domain socket or Windows
|
|
20
|
-
* named pipe
|
|
21
|
-
* @param handler - async function invoked for each valid request
|
|
22
|
-
* @returns the listening `net.Server` instance
|
|
23
|
-
*/
|
|
24
|
-
export function createIpcServer(
|
|
25
|
-
socketPath: string,
|
|
26
|
-
handler: IpcHandler,
|
|
27
|
-
): Server {
|
|
28
|
-
const server = createServer((socket) => {
|
|
29
|
-
let buffer = '';
|
|
30
|
-
|
|
31
|
-
let processingQueue = Promise.resolve();
|
|
32
|
-
|
|
33
|
-
socket.on('data', (chunk: Buffer) => {
|
|
34
|
-
buffer += chunk.toString();
|
|
35
|
-
const lines = buffer.split('\n');
|
|
36
|
-
buffer = lines.pop() ?? '';
|
|
37
|
-
|
|
38
|
-
for (const line of lines) {
|
|
39
|
-
if (!line.trim()) continue;
|
|
40
|
-
processingQueue = processingQueue.then(() =>
|
|
41
|
-
handleLine(line, handler, socket),
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
socket.on('error', (err: Error) => {
|
|
47
|
-
// eslint-disable-next-line no-console
|
|
48
|
-
console.error(
|
|
49
|
-
`kbdb-worker: ipc connection error: ${err.message}`,
|
|
50
|
-
);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
server.on('error', (err: Error) => {
|
|
55
|
-
// eslint-disable-next-line no-console
|
|
56
|
-
console.error(`kbdb-worker: ipc server error: ${err.message}`);
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
server.listen(socketPath);
|
|
60
|
-
return server;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function bigintReplacer(_key: string, value: unknown): unknown {
|
|
64
|
-
return typeof value === 'bigint' ? Number(value) : value;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
async function handleLine(
|
|
68
|
-
line: string,
|
|
69
|
-
handler: IpcHandler,
|
|
70
|
-
socket: Socket,
|
|
71
|
-
): Promise<void> {
|
|
72
|
-
let response: IpcResponse;
|
|
73
|
-
try {
|
|
74
|
-
const request = JSON.parse(line) as IpcRequest;
|
|
75
|
-
response = await handler(request);
|
|
76
|
-
} catch {
|
|
77
|
-
response = {
|
|
78
|
-
jsonrpc: '2.0',
|
|
79
|
-
id: 0,
|
|
80
|
-
error: {
|
|
81
|
-
code: -32700,
|
|
82
|
-
message: 'Parse error',
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
socket.write(JSON.stringify(response, bigintReplacer) + '\n');
|
|
87
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync, unlinkSync } from 'node:fs';
|
|
2
|
-
import { isProcessAlive } from '../../platform/functions/is-process-alive.function.ts';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Checks whether a PID file contains a stale process ID.
|
|
6
|
-
*
|
|
7
|
-
* Reads the PID from the file and checks whether the process is
|
|
8
|
-
* still running using `process.kill(pid, 0)`. If the process is
|
|
9
|
-
* dead, or the PID is unparseable, removes the PID file and
|
|
10
|
-
* returns `true`. Returns `false` when the process is alive or
|
|
11
|
-
* the file does not exist.
|
|
12
|
-
*
|
|
13
|
-
* @param pidPath - absolute path to the PID file to inspect
|
|
14
|
-
* @returns `true` if the PID file is stale (process dead or
|
|
15
|
-
* content invalid) and was removed; `false` if the process is
|
|
16
|
-
* alive or the file does not exist
|
|
17
|
-
*/
|
|
18
|
-
export function detectStalePid(pidPath: string): boolean {
|
|
19
|
-
if (!existsSync(pidPath)) return false;
|
|
20
|
-
|
|
21
|
-
const pidStr = readFileSync(pidPath, 'utf-8').trim();
|
|
22
|
-
const pid = parseInt(pidStr, 10);
|
|
23
|
-
const isAlive = !isNaN(pid) && pid > 0 && isProcessAlive(pid);
|
|
24
|
-
|
|
25
|
-
if (isAlive) return false;
|
|
26
|
-
|
|
27
|
-
try {
|
|
28
|
-
unlinkSync(pidPath);
|
|
29
|
-
} catch {
|
|
30
|
-
// Best-effort removal; stale file is treated as detected
|
|
31
|
-
}
|
|
32
|
-
return true;
|
|
33
|
-
}
|