@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,55 +0,0 @@
|
|
|
1
|
-
import type { WasmModules } from '../typings/wasm-modules.interface.ts';
|
|
2
|
-
import {
|
|
3
|
-
callWasmZeroArg,
|
|
4
|
-
readReturnSlot,
|
|
5
|
-
} from './wasm-bridge.function.ts';
|
|
6
|
-
import { decodeKeyValueText } from '../../wasm-codec/index.ts';
|
|
7
|
-
|
|
8
|
-
/** Result of a startup integrity check. */
|
|
9
|
-
export interface StartupIntegrityResult {
|
|
10
|
-
/** Whether the check passed without errors. */
|
|
11
|
-
readonly integrityOk: boolean;
|
|
12
|
-
/** Integrity error descriptions found at startup. */
|
|
13
|
-
readonly integrityErrors: string[];
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Runs `worker_check_integrity` immediately after WASM context
|
|
18
|
-
* initialisation and returns the result.
|
|
19
|
-
*
|
|
20
|
-
* Logs a warning to stderr when issues are found. Never throws --
|
|
21
|
-
* failures are captured and returned as part of the result.
|
|
22
|
-
*
|
|
23
|
-
* @param modules - loaded WASM module instances
|
|
24
|
-
*/
|
|
25
|
-
export function runStartupIntegrityCheck(
|
|
26
|
-
modules: WasmModules,
|
|
27
|
-
): StartupIntegrityResult {
|
|
28
|
-
try {
|
|
29
|
-
callWasmZeroArg(modules, 'worker_check_integrity');
|
|
30
|
-
const bytes = readReturnSlot(modules);
|
|
31
|
-
const kv = decodeKeyValueText(new TextDecoder().decode(bytes));
|
|
32
|
-
const integrityOk = kv['ok'] === 'true';
|
|
33
|
-
if (!integrityOk) {
|
|
34
|
-
const integrityErrors = Object.entries(kv)
|
|
35
|
-
.filter(([k]) => k !== 'ok')
|
|
36
|
-
.map(([k, v]) => `${k}=${v}`);
|
|
37
|
-
// eslint-disable-next-line no-console
|
|
38
|
-
console.error(
|
|
39
|
-
'[kbdb-worker] startup integrity check failed:',
|
|
40
|
-
integrityErrors.join(', '),
|
|
41
|
-
);
|
|
42
|
-
return { integrityOk: false, integrityErrors };
|
|
43
|
-
}
|
|
44
|
-
return { integrityOk: true, integrityErrors: [] };
|
|
45
|
-
} catch {
|
|
46
|
-
// eslint-disable-next-line no-console
|
|
47
|
-
console.error(
|
|
48
|
-
'[kbdb-worker] startup integrity check threw an error',
|
|
49
|
-
);
|
|
50
|
-
return {
|
|
51
|
-
integrityOk: false,
|
|
52
|
-
integrityErrors: ['integrity_check_failed'],
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { resolve } from 'node:path';
|
|
2
|
-
|
|
3
|
-
/** Result of the worker entry point. */
|
|
4
|
-
export interface WorkerResult {
|
|
5
|
-
/** Error message (if any). */
|
|
6
|
-
error?: string;
|
|
7
|
-
/** Process exit code. `0` means success. */
|
|
8
|
-
exitCode: number;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Injectable dependencies for the worker entry point.
|
|
13
|
-
*/
|
|
14
|
-
export interface WorkerDeps {
|
|
15
|
-
existsSync: (path: string) => boolean;
|
|
16
|
-
startDaemon: (
|
|
17
|
-
contextPath: string,
|
|
18
|
-
wasmDir?: string,
|
|
19
|
-
) => Promise<void>;
|
|
20
|
-
wasmDir?: string;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Worker daemon entry point extracted from `src/worker.ts`.
|
|
25
|
-
*
|
|
26
|
-
* Validates the context path argument, resolves it to an
|
|
27
|
-
* absolute path, checks existence, and delegates to
|
|
28
|
-
* `startDaemon`.
|
|
29
|
-
*
|
|
30
|
-
* @param argv - raw arguments (expects `[contextPath]`)
|
|
31
|
-
* @param deps - injectable dependencies
|
|
32
|
-
*/
|
|
33
|
-
export async function runWorker(
|
|
34
|
-
argv: string[],
|
|
35
|
-
deps: WorkerDeps,
|
|
36
|
-
): Promise<WorkerResult> {
|
|
37
|
-
const contextPath = argv[0];
|
|
38
|
-
|
|
39
|
-
if (!contextPath) {
|
|
40
|
-
return {
|
|
41
|
-
error: 'usage: kbdb-worker <context-path>',
|
|
42
|
-
exitCode: 1,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const resolved = resolve(contextPath);
|
|
47
|
-
|
|
48
|
-
if (!deps.existsSync(resolved)) {
|
|
49
|
-
return {
|
|
50
|
-
error: `error: path not found: ${resolved}`,
|
|
51
|
-
exitCode: 1,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
await deps.startDaemon(resolved, deps.wasmDir);
|
|
56
|
-
return { exitCode: 0 };
|
|
57
|
-
}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { readdirSync, readFileSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
|
|
4
|
-
/** A near-duplicate match found during add-section scanning. */
|
|
5
|
-
export interface NearDuplicateMatch {
|
|
6
|
-
/** Knowledge-base identifier of the near-duplicate section. */
|
|
7
|
-
readonly kbid: string;
|
|
8
|
-
/** Jaccard similarity score, rounded to 2 decimal places (0–1). */
|
|
9
|
-
readonly similarity: number;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Scans existing section files for near-duplicates of `content`.
|
|
14
|
-
*
|
|
15
|
-
* Uses Jaccard similarity on a set of lowercased tokens (3+ chars)
|
|
16
|
-
* extracted from the section body. Sections with a similarity of
|
|
17
|
-
* 0.85 or above are included in the result. The `newKbid` section
|
|
18
|
-
* is excluded from comparison.
|
|
19
|
-
*
|
|
20
|
-
* @param targetDir - absolute path to the `.kbdb` directory
|
|
21
|
-
* @param content - raw text content of the newly added section
|
|
22
|
-
* @param newKbid - identifier of the just-added section to exclude
|
|
23
|
-
* @returns near-duplicate matches sorted by insertion order
|
|
24
|
-
*/
|
|
25
|
-
export function scanNearDuplicates(
|
|
26
|
-
targetDir: string,
|
|
27
|
-
content: string,
|
|
28
|
-
newKbid: string,
|
|
29
|
-
): NearDuplicateMatch[] {
|
|
30
|
-
const newTerms = extractTermSet(content);
|
|
31
|
-
if (newTerms.size === 0) return [];
|
|
32
|
-
|
|
33
|
-
const sectionsDir = join(targetDir, 'sections');
|
|
34
|
-
let shards: string[];
|
|
35
|
-
try {
|
|
36
|
-
shards = readdirSync(sectionsDir);
|
|
37
|
-
} catch {
|
|
38
|
-
return [];
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
const results: NearDuplicateMatch[] = [];
|
|
42
|
-
for (const shard of shards) {
|
|
43
|
-
let files: string[];
|
|
44
|
-
try {
|
|
45
|
-
files = readdirSync(join(sectionsDir, shard));
|
|
46
|
-
} catch {
|
|
47
|
-
continue;
|
|
48
|
-
}
|
|
49
|
-
for (const file of files) {
|
|
50
|
-
if (!file.endsWith('.section')) continue;
|
|
51
|
-
const kbid = file.slice(0, -8);
|
|
52
|
-
if (kbid === newKbid) continue;
|
|
53
|
-
try {
|
|
54
|
-
const data = readFileSync(
|
|
55
|
-
join(sectionsDir, shard, file),
|
|
56
|
-
'utf-8',
|
|
57
|
-
);
|
|
58
|
-
const sep = data.indexOf('\n---\n');
|
|
59
|
-
const body = sep >= 0 ? data.slice(sep + 5) : data;
|
|
60
|
-
const existing = extractTermSet(body);
|
|
61
|
-
let intersection = 0;
|
|
62
|
-
for (const t of newTerms) {
|
|
63
|
-
if (existing.has(t)) intersection++;
|
|
64
|
-
}
|
|
65
|
-
const union = newTerms.size + existing.size - intersection;
|
|
66
|
-
const sim = union > 0 ? intersection / union : 0;
|
|
67
|
-
if (sim >= 0.85) {
|
|
68
|
-
results.push({
|
|
69
|
-
kbid,
|
|
70
|
-
similarity: Math.round(sim * 100) / 100,
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
} catch {
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
return results;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Extracts a set of lowercased word tokens with 3 or more
|
|
83
|
-
* characters from `text`.
|
|
84
|
-
*/
|
|
85
|
-
function extractTermSet(text: string): Set<string> {
|
|
86
|
-
return new Set(
|
|
87
|
-
text
|
|
88
|
-
.toLowerCase()
|
|
89
|
-
.split(/\W+/)
|
|
90
|
-
.filter((w) => w.length > 2),
|
|
91
|
-
);
|
|
92
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { writeFileSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { tmpdir } from 'node:os';
|
|
4
|
-
import { readConfig } from './read-config.function.ts';
|
|
5
|
-
import { computeSha256 } from '../../hash/functions/compute-sha256.ts';
|
|
6
|
-
import { WorkerDaemon } from '../classes/worker-daemon.class.ts';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Starts the worker daemon for the given knowledge-base context.
|
|
10
|
-
*
|
|
11
|
-
* Reads configuration from `worker.toml` in the context directory,
|
|
12
|
-
* validates startup preconditions (directory exists, accessible, and
|
|
13
|
-
* database version compatible), and then starts the `WorkerDaemon`.
|
|
14
|
-
*
|
|
15
|
-
* Signal handlers for `SIGTERM` and `SIGINT` trigger a graceful stop.
|
|
16
|
-
* Precondition failures are printed to stderr and cause exit code 1.
|
|
17
|
-
*
|
|
18
|
-
* @param contextPath - absolute path to the `.kbdb` context directory
|
|
19
|
-
*/
|
|
20
|
-
export async function startDaemon(
|
|
21
|
-
contextPath: string,
|
|
22
|
-
wasmDir?: string,
|
|
23
|
-
): Promise<void> {
|
|
24
|
-
const config = readConfig(contextPath);
|
|
25
|
-
const hash = await computeSha256(contextPath);
|
|
26
|
-
const contextId = hash.slice(0, 16);
|
|
27
|
-
|
|
28
|
-
const daemon = new WorkerDaemon(
|
|
29
|
-
contextId,
|
|
30
|
-
contextPath,
|
|
31
|
-
config,
|
|
32
|
-
wasmDir,
|
|
33
|
-
);
|
|
34
|
-
|
|
35
|
-
try {
|
|
36
|
-
daemon.checkPreconditions();
|
|
37
|
-
} catch (err) {
|
|
38
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
39
|
-
// eslint-disable-next-line no-console
|
|
40
|
-
console.error(`kbdb-worker: ${message}`);
|
|
41
|
-
writeCrashLog(contextId, message);
|
|
42
|
-
process.exit(1);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
try {
|
|
46
|
-
await daemon.start();
|
|
47
|
-
} catch (err) {
|
|
48
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
49
|
-
// eslint-disable-next-line no-console
|
|
50
|
-
console.error(`kbdb-worker: ${message}`);
|
|
51
|
-
writeCrashLog(contextId, message);
|
|
52
|
-
process.exit(1);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
process.on('SIGTERM', () => {
|
|
56
|
-
daemon.stop();
|
|
57
|
-
});
|
|
58
|
-
process.on('SIGINT', () => {
|
|
59
|
-
daemon.stop();
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function writeCrashLog(contextId: string, message: string): void {
|
|
64
|
-
try {
|
|
65
|
-
const crashPath = join(tmpdir(), `kbdb-${contextId}.crash`);
|
|
66
|
-
const payload = JSON.stringify({
|
|
67
|
-
error: message,
|
|
68
|
-
timestamp: Date.now(),
|
|
69
|
-
});
|
|
70
|
-
writeFileSync(crashPath, payload);
|
|
71
|
-
} catch {
|
|
72
|
-
// never mask the original error
|
|
73
|
-
}
|
|
74
|
-
}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import type { WasmModules } from '../typings/wasm-modules.interface.ts';
|
|
2
|
-
import type { WasmFn } from '../typings/wasm-fn.type.ts';
|
|
3
|
-
import { IpcError } from '../classes/ipc-error.class.ts';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Retrieves a named export from the kb-worker WASM instance.
|
|
7
|
-
*
|
|
8
|
-
* @throws {Error} if WASM modules are not yet loaded
|
|
9
|
-
* @throws {Error} if the named export does not exist or is not a
|
|
10
|
-
* function
|
|
11
|
-
*/
|
|
12
|
-
export function getWasmExport(
|
|
13
|
-
modules: WasmModules,
|
|
14
|
-
name: string,
|
|
15
|
-
): WasmFn {
|
|
16
|
-
const fn = modules.kbWorker.exports[name] as WasmFn | undefined;
|
|
17
|
-
if (typeof fn !== 'function') {
|
|
18
|
-
throw new Error(`WASM export not found: ${name}`);
|
|
19
|
-
}
|
|
20
|
-
return fn;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Allocates `size` bytes in WASM linear memory.
|
|
25
|
-
*
|
|
26
|
-
* Returns `0` when `size` is zero or the allocator export is
|
|
27
|
-
* absent.
|
|
28
|
-
*/
|
|
29
|
-
export function wasmAlloc(modules: WasmModules, size: number): number {
|
|
30
|
-
if (size === 0) return 0;
|
|
31
|
-
const allocFn = modules.kbWorker.exports['kbdb_alloc'] as
|
|
32
|
-
| WasmFn
|
|
33
|
-
| undefined;
|
|
34
|
-
if (typeof allocFn !== 'function') return 0;
|
|
35
|
-
return allocFn(size) as number;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Frees a previously allocated WASM memory region.
|
|
40
|
-
*
|
|
41
|
-
* No-ops when `ptr` or `size` is zero, or when the free export
|
|
42
|
-
* is absent.
|
|
43
|
-
*/
|
|
44
|
-
export function wasmFree(
|
|
45
|
-
modules: WasmModules,
|
|
46
|
-
ptr: number,
|
|
47
|
-
size: number,
|
|
48
|
-
): void {
|
|
49
|
-
if (ptr === 0 || size === 0) return;
|
|
50
|
-
const freeFn = modules.kbWorker.exports['kbdb_free'] as
|
|
51
|
-
| WasmFn
|
|
52
|
-
| undefined;
|
|
53
|
-
if (typeof freeFn === 'function') {
|
|
54
|
-
freeFn(ptr, size);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Writes `data` into WASM linear memory at `ptr`.
|
|
60
|
-
*
|
|
61
|
-
* @throws {Error} if the write would exceed memory bounds
|
|
62
|
-
*/
|
|
63
|
-
export function wasmWrite(
|
|
64
|
-
modules: WasmModules,
|
|
65
|
-
ptr: number,
|
|
66
|
-
data: Uint8Array,
|
|
67
|
-
): void {
|
|
68
|
-
if (data.length === 0) return;
|
|
69
|
-
const memView = new Uint8Array(modules.memory.buffer);
|
|
70
|
-
if (ptr + data.length > memView.length) {
|
|
71
|
-
throw new Error('WASM memory overflow');
|
|
72
|
-
}
|
|
73
|
-
memView.set(data, ptr);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Reads the WASM return slot, frees the underlying buffer, and
|
|
78
|
-
* returns its contents as a `Uint8Array`.
|
|
79
|
-
*
|
|
80
|
-
* Returns an empty array when the slot is unset or memory is
|
|
81
|
-
* unavailable.
|
|
82
|
-
*/
|
|
83
|
-
export function readReturnSlot(modules: WasmModules): Uint8Array {
|
|
84
|
-
const getPtrFn = modules.kbWorker.exports['get_return_ptr'] as
|
|
85
|
-
| WasmFn
|
|
86
|
-
| undefined;
|
|
87
|
-
const getLenFn = modules.kbWorker.exports['get_return_len'] as
|
|
88
|
-
| WasmFn
|
|
89
|
-
| undefined;
|
|
90
|
-
if (
|
|
91
|
-
typeof getPtrFn !== 'function' ||
|
|
92
|
-
typeof getLenFn !== 'function'
|
|
93
|
-
) {
|
|
94
|
-
return new Uint8Array(0);
|
|
95
|
-
}
|
|
96
|
-
const ptr = getPtrFn() as number;
|
|
97
|
-
const len = getLenFn() as number;
|
|
98
|
-
if (ptr === 0 || len === 0) return new Uint8Array(0);
|
|
99
|
-
const data = new Uint8Array(modules.memory.buffer, ptr, len).slice();
|
|
100
|
-
wasmFree(modules, ptr, len);
|
|
101
|
-
return data;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Calls a WASM export with binary-encoded input via the
|
|
106
|
-
* alloc/write/call/read/free protocol.
|
|
107
|
-
*
|
|
108
|
-
* @throws {IpcError} when the export returns `-1` (error sentinel)
|
|
109
|
-
*/
|
|
110
|
-
export function callWasmSync(
|
|
111
|
-
modules: WasmModules,
|
|
112
|
-
exportName: string,
|
|
113
|
-
input: Uint8Array,
|
|
114
|
-
): Uint8Array {
|
|
115
|
-
const fn = getWasmExport(modules, exportName);
|
|
116
|
-
const ptr = wasmAlloc(modules, input.length);
|
|
117
|
-
wasmWrite(modules, ptr, input);
|
|
118
|
-
const rc = fn(ptr, input.length) as number;
|
|
119
|
-
wasmFree(modules, ptr, input.length);
|
|
120
|
-
if (rc === -1) {
|
|
121
|
-
const errBytes = readReturnSlot(modules);
|
|
122
|
-
const errMsg = new TextDecoder().decode(errBytes);
|
|
123
|
-
throw new IpcError(-32000, errMsg || exportName + ' failed');
|
|
124
|
-
}
|
|
125
|
-
return readReturnSlot(modules);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Calls a zero-argument WASM export and checks its return code.
|
|
130
|
-
*
|
|
131
|
-
* @throws {IpcError} when the export returns `-1` (error sentinel)
|
|
132
|
-
*/
|
|
133
|
-
export function callWasmZeroArg(
|
|
134
|
-
modules: WasmModules,
|
|
135
|
-
exportName: string,
|
|
136
|
-
): void {
|
|
137
|
-
const fn = getWasmExport(modules, exportName);
|
|
138
|
-
const rc = fn() as number;
|
|
139
|
-
if (rc === -1) {
|
|
140
|
-
const errBytes = readReturnSlot(modules);
|
|
141
|
-
const errMsg = new TextDecoder().decode(errBytes);
|
|
142
|
-
throw new IpcError(-32000, errMsg || exportName + ' failed');
|
|
143
|
-
}
|
|
144
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { join } from 'node:path';
|
|
2
|
-
import type { MemoryRef } from '../typings/memory-ref.interface.ts';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Returns the current `ArrayBuffer` backing WASM linear memory.
|
|
6
|
-
*
|
|
7
|
-
* Must be called after WASM module instantiation. The buffer
|
|
8
|
-
* reference may change after WASM memory growth, so callers
|
|
9
|
-
* should call this function each time they need a fresh view.
|
|
10
|
-
*
|
|
11
|
-
* @param memoryRef - deferred reference to WASM linear memory
|
|
12
|
-
* @throws {Error} when memory is not yet initialised
|
|
13
|
-
*/
|
|
14
|
-
export function getWasmBuffer(memoryRef: MemoryRef): ArrayBuffer {
|
|
15
|
-
if (!memoryRef.memory) {
|
|
16
|
-
throw new Error('WASM memory not initialized');
|
|
17
|
-
}
|
|
18
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
19
|
-
return memoryRef.memory.buffer as ArrayBuffer;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Decodes a UTF-8 path from WASM linear memory and resolves it
|
|
24
|
-
* relative to `contextPath` when the path is not absolute.
|
|
25
|
-
*
|
|
26
|
-
* @param memoryRef - deferred reference to WASM linear memory
|
|
27
|
-
* @param contextPath - base directory for relative paths
|
|
28
|
-
* @param ptr - byte offset of the path string in WASM memory
|
|
29
|
-
* @param len - byte length of the path string
|
|
30
|
-
*/
|
|
31
|
-
export function readWasmPathArg(
|
|
32
|
-
memoryRef: MemoryRef,
|
|
33
|
-
contextPath: string,
|
|
34
|
-
ptr: number,
|
|
35
|
-
len: number,
|
|
36
|
-
): string {
|
|
37
|
-
const bytes = new Uint8Array(getWasmBuffer(memoryRef), ptr, len);
|
|
38
|
-
const decoded = new TextDecoder().decode(bytes);
|
|
39
|
-
if (decoded.startsWith('/')) return decoded;
|
|
40
|
-
return join(contextPath, decoded);
|
|
41
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import type { WriteLockState } from '../typings/write-lock.interface.ts';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Acquires the single-writer lock.
|
|
5
|
-
*
|
|
6
|
-
* Enforces the single-writer guarantee: at most one write
|
|
7
|
-
* operation runs at a time inside the daemon. Concurrent writes
|
|
8
|
-
* are serialized through an in-memory FIFO queue -- each caller
|
|
9
|
-
* awaits this function and proceeds only when it is at the head
|
|
10
|
-
* of the queue. Read operations bypass this lock entirely and
|
|
11
|
-
* may proceed concurrently with writes and with each other.
|
|
12
|
-
*
|
|
13
|
-
* Crash recovery: the lock is purely in-memory. If the daemon
|
|
14
|
-
* process crashes mid-write, the OS reclaims process memory,
|
|
15
|
-
* releasing the lock automatically. The WASM engine is
|
|
16
|
-
* responsible for leaving on-disk state consistent (it uses
|
|
17
|
-
* atomic rename: write to a `.tmp` file, then `host_rename` to
|
|
18
|
-
* the final path).
|
|
19
|
-
*
|
|
20
|
-
* @param state - shared write-lock state
|
|
21
|
-
*/
|
|
22
|
-
export function acquireWriteLock(state: WriteLockState): Promise<void> {
|
|
23
|
-
if (!state.locked) {
|
|
24
|
-
state.locked = true;
|
|
25
|
-
return Promise.resolve();
|
|
26
|
-
}
|
|
27
|
-
return new Promise<void>((resolve) => {
|
|
28
|
-
state.queue.push({ resolve });
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Releases the single-writer lock.
|
|
34
|
-
*
|
|
35
|
-
* Grants the lock to the next queued waiter if one exists;
|
|
36
|
-
* otherwise marks the lock as free. Must always be called in a
|
|
37
|
-
* `finally` block after `acquireWriteLock` to prevent permanent
|
|
38
|
-
* lock starvation.
|
|
39
|
-
*
|
|
40
|
-
* @param state - shared write-lock state
|
|
41
|
-
*/
|
|
42
|
-
export function releaseWriteLock(state: WriteLockState): void {
|
|
43
|
-
const next = state.queue.shift();
|
|
44
|
-
if (next !== undefined) {
|
|
45
|
-
next.resolve();
|
|
46
|
-
} else {
|
|
47
|
-
state.locked = false;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export { readConfig } from './functions/read-config.function.ts';
|
|
2
|
-
export { startDaemon } from './functions/start-daemon.function.ts';
|
|
3
|
-
export { createIpcServer } from './functions/create-ipc-server.function.ts';
|
|
4
|
-
export { loadWasmModules } from './functions/load-wasm-modules.function.ts';
|
|
5
|
-
export type { DaemonConfig } from './typings/daemon-config.interface.ts';
|
|
6
|
-
export type { WasmModules } from './typings/wasm-modules.interface.ts';
|
|
7
|
-
export type {
|
|
8
|
-
IpcRequest,
|
|
9
|
-
IpcResponse,
|
|
10
|
-
IpcHandler,
|
|
11
|
-
} from './typings/ipc-handler.interface.ts';
|
|
12
|
-
export { runWorker } from './functions/run-worker.function.ts';
|
|
13
|
-
export type {
|
|
14
|
-
WorkerResult,
|
|
15
|
-
WorkerDeps,
|
|
16
|
-
} from './functions/run-worker.function.ts';
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A mutable reference to the WASM allocator function.
|
|
3
|
-
*
|
|
4
|
-
* The `alloc` field starts as `null` and is wired up after the
|
|
5
|
-
* `kb-worker` WASM module is instantiated. Host import functions
|
|
6
|
-
* that must allocate memory in WASM linear memory check this
|
|
7
|
-
* reference before proceeding and return `-1` when it is null.
|
|
8
|
-
*/
|
|
9
|
-
export interface AllocatorRef {
|
|
10
|
-
/**
|
|
11
|
-
* Allocates `size` bytes in WASM linear memory and returns the
|
|
12
|
-
* byte offset of the allocated region, or `null` when the
|
|
13
|
-
* allocator is not yet available.
|
|
14
|
-
*/
|
|
15
|
-
alloc: ((size: number) => number) | null;
|
|
16
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { EmbeddingConfig } from '../../embedding/typings/embedding-config.interface.ts';
|
|
2
|
-
import type { AutoCaptureConfig } from '../../auto-capture/typings/auto-capture-config.interface.ts';
|
|
3
|
-
|
|
4
|
-
/** Configuration for the worker daemon process. */
|
|
5
|
-
export interface DaemonConfig {
|
|
6
|
-
/** Absolute path to the knowledge-base context directory. */
|
|
7
|
-
readonly contextPath: string;
|
|
8
|
-
/** Maximum number of items held in memory at once. */
|
|
9
|
-
readonly itemLimit: number;
|
|
10
|
-
/** Maximum number of index entries held in memory at once. */
|
|
11
|
-
readonly indexLimit: number;
|
|
12
|
-
/** Idle timeout in milliseconds before the daemon shuts down. */
|
|
13
|
-
readonly timeoutMs: number;
|
|
14
|
-
/** Time-to-live in milliseconds for each cached item. */
|
|
15
|
-
readonly itemTtlMs: number;
|
|
16
|
-
/** Embedding provider configuration. */
|
|
17
|
-
readonly embedding?: EmbeddingConfig;
|
|
18
|
-
/** Auto-capture behaviour configuration. */
|
|
19
|
-
readonly autoCapture?: AutoCaptureConfig;
|
|
20
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Minimal filesystem operations required by the WASM host imports.
|
|
3
|
-
*
|
|
4
|
-
* The default implementation delegates to `node:fs` synchronous
|
|
5
|
-
* APIs. Tests inject a stub to avoid touching the real filesystem.
|
|
6
|
-
*/
|
|
7
|
-
export interface FsAdapter {
|
|
8
|
-
/** Read entire file as a Buffer. */
|
|
9
|
-
readFileSync(path: string): Buffer;
|
|
10
|
-
/** Write data buffer to file. */
|
|
11
|
-
writeFileSync(path: string, data: Uint8Array): void;
|
|
12
|
-
/** Rename `oldPath` to `newPath`. */
|
|
13
|
-
renameSync(oldPath: string, newPath: string): void;
|
|
14
|
-
/** Delete a file. */
|
|
15
|
-
unlinkSync(path: string): void;
|
|
16
|
-
/** List directory entries as strings. */
|
|
17
|
-
readdirSync(path: string): string[];
|
|
18
|
-
/** Create a directory (and parents) recursively. */
|
|
19
|
-
mkdirSync(path: string): void;
|
|
20
|
-
/** Return true if the path exists. */
|
|
21
|
-
existsSync(path: string): boolean;
|
|
22
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { DaemonConfig } from './daemon-config.interface.ts';
|
|
2
|
-
import type { WasmModules } from './wasm-modules.interface.ts';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Runtime context passed to all IPC request handler functions.
|
|
6
|
-
*
|
|
7
|
-
* Groups the minimal shared state needed by every request handler
|
|
8
|
-
* so that handler functions can be standalone (not methods on a
|
|
9
|
-
* class) while still accessing WASM modules, configuration, and
|
|
10
|
-
* the database directory path.
|
|
11
|
-
*/
|
|
12
|
-
export interface HandlerContext {
|
|
13
|
-
/** Absolute path to the `.kbdb` directory. */
|
|
14
|
-
readonly targetDir: string;
|
|
15
|
-
/** Parsed daemon configuration from `worker.toml`. */
|
|
16
|
-
readonly config: DaemonConfig;
|
|
17
|
-
/** Loaded WASM module instances. */
|
|
18
|
-
readonly modules: WasmModules;
|
|
19
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/** A JSON-RPC 2.0 request sent to the daemon over IPC. */
|
|
2
|
-
export interface IpcRequest {
|
|
3
|
-
/** JSON-RPC version string -- always `'2.0'`. */
|
|
4
|
-
readonly jsonrpc: '2.0';
|
|
5
|
-
/** Request identifier, echoed back in the response. */
|
|
6
|
-
readonly id: number | string;
|
|
7
|
-
/** Method name to invoke on the daemon. */
|
|
8
|
-
readonly method: string;
|
|
9
|
-
/** Optional method parameters. */
|
|
10
|
-
readonly params?: unknown;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/** Error detail included in a failed JSON-RPC response. */
|
|
14
|
-
export interface IpcErrorDetail {
|
|
15
|
-
/** JSON-RPC error code. */
|
|
16
|
-
readonly code: number;
|
|
17
|
-
/** Human-readable error message. */
|
|
18
|
-
readonly message: string;
|
|
19
|
-
/** Optional additional error data. */
|
|
20
|
-
readonly data?: unknown;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/** A JSON-RPC 2.0 response returned by the daemon over IPC. */
|
|
24
|
-
export interface IpcResponse {
|
|
25
|
-
/** JSON-RPC version string -- always `'2.0'`. */
|
|
26
|
-
readonly jsonrpc: '2.0';
|
|
27
|
-
/** Identifier matching the originating request. */
|
|
28
|
-
readonly id: number | string;
|
|
29
|
-
/** Successful result payload. Present on success. */
|
|
30
|
-
readonly result?: unknown;
|
|
31
|
-
/** Error detail. Present on failure. */
|
|
32
|
-
readonly error?: IpcErrorDetail;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Function that handles a single IPC request and returns a
|
|
37
|
-
* JSON-RPC response.
|
|
38
|
-
*/
|
|
39
|
-
export type IpcHandler = (request: IpcRequest) => Promise<IpcResponse>;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A mutable reference to the WASM linear memory.
|
|
3
|
-
*
|
|
4
|
-
* The `memory` field starts as `null` and is wired up after the
|
|
5
|
-
* `kb-worker` WASM module is instantiated (the module exports its
|
|
6
|
-
* own memory rather than importing one). Host import functions
|
|
7
|
-
* read `memory` at call time, not at creation time, so the ref
|
|
8
|
-
* can be populated after the import record is built.
|
|
9
|
-
*/
|
|
10
|
-
export interface MemoryRef {
|
|
11
|
-
/** WASM linear memory; `null` until the module is instantiated. */
|
|
12
|
-
memory: WebAssembly.Memory | null;
|
|
13
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/** Loaded and instantiated WASM module instances. */
|
|
2
|
-
export interface WasmModules {
|
|
3
|
-
/** Linear memory exported by the kb-worker WASM module. */
|
|
4
|
-
readonly memory: WebAssembly.Memory;
|
|
5
|
-
/** Instantiated kb-worker WASM module. */
|
|
6
|
-
readonly kbWorker: WebAssembly.Instance;
|
|
7
|
-
}
|