@untangle-code/cli 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/NOTICE +90 -0
- package/README.md +451 -2
- package/THIRD_PARTY_LICENSES.md +152 -0
- package/dist/cli/args.d.ts +48 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +167 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/command.d.ts +69 -0
- package/dist/cli/command.d.ts.map +1 -0
- package/dist/cli/command.js +82 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/deadline.d.ts +33 -0
- package/dist/cli/deadline.d.ts.map +1 -0
- package/dist/cli/deadline.js +49 -0
- package/dist/cli/deadline.js.map +1 -0
- package/dist/cli/embedder-deadline.d.ts +72 -0
- package/dist/cli/embedder-deadline.d.ts.map +1 -0
- package/dist/cli/embedder-deadline.js +117 -0
- package/dist/cli/embedder-deadline.js.map +1 -0
- package/dist/cli/exit.d.ts +71 -0
- package/dist/cli/exit.d.ts.map +1 -0
- package/dist/cli/exit.js +81 -0
- package/dist/cli/exit.js.map +1 -0
- package/dist/cli/graphs.d.ts +65 -0
- package/dist/cli/graphs.d.ts.map +1 -0
- package/dist/cli/graphs.js +108 -0
- package/dist/cli/graphs.js.map +1 -0
- package/dist/cli/index-freshness.d.ts +13 -0
- package/dist/cli/index-freshness.d.ts.map +1 -0
- package/dist/cli/index-freshness.js +226 -0
- package/dist/cli/index-freshness.js.map +1 -0
- package/dist/cli/index-refresh.d.ts +10 -0
- package/dist/cli/index-refresh.d.ts.map +1 -0
- package/dist/cli/index-refresh.js +76 -0
- package/dist/cli/index-refresh.js.map +1 -0
- package/dist/cli/index-state.d.ts +184 -0
- package/dist/cli/index-state.d.ts.map +1 -0
- package/dist/cli/index-state.js +852 -0
- package/dist/cli/index-state.js.map +1 -0
- package/dist/cli/io.d.ts +29 -0
- package/dist/cli/io.d.ts.map +1 -0
- package/dist/cli/io.js +42 -0
- package/dist/cli/io.js.map +1 -0
- package/dist/cli/language-support.d.ts +77 -0
- package/dist/cli/language-support.d.ts.map +1 -0
- package/dist/cli/language-support.js +152 -0
- package/dist/cli/language-support.js.map +1 -0
- package/dist/cli/renewing-lease.d.ts +26 -0
- package/dist/cli/renewing-lease.d.ts.map +1 -0
- package/dist/cli/renewing-lease.js +102 -0
- package/dist/cli/renewing-lease.js.map +1 -0
- package/dist/cli/search-graph-enrichment.d.ts +16 -0
- package/dist/cli/search-graph-enrichment.d.ts.map +1 -0
- package/dist/cli/search-graph-enrichment.js +428 -0
- package/dist/cli/search-graph-enrichment.js.map +1 -0
- package/dist/cli/system.d.ts +34 -0
- package/dist/cli/system.d.ts.map +1 -0
- package/dist/cli/system.js +89 -0
- package/dist/cli/system.js.map +1 -0
- package/dist/cli/vector-store-policy.d.ts +116 -0
- package/dist/cli/vector-store-policy.d.ts.map +1 -0
- package/dist/cli/vector-store-policy.js +160 -0
- package/dist/cli/vector-store-policy.js.map +1 -0
- package/dist/cli/version.d.ts +3 -0
- package/dist/cli/version.d.ts.map +1 -0
- package/dist/cli/version.js +3 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/cli/workspace.d.ts +105 -0
- package/dist/cli/workspace.d.ts.map +1 -0
- package/dist/cli/workspace.js +215 -0
- package/dist/cli/workspace.js.map +1 -0
- package/dist/commands/complexity.d.ts +72 -0
- package/dist/commands/complexity.d.ts.map +1 -0
- package/dist/commands/complexity.js +580 -0
- package/dist/commands/complexity.js.map +1 -0
- package/dist/commands/doctor.d.ts +66 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +764 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/doctor.languages.d.ts +37 -0
- package/dist/commands/doctor.languages.d.ts.map +1 -0
- package/dist/commands/doctor.languages.js +143 -0
- package/dist/commands/doctor.languages.js.map +1 -0
- package/dist/commands/doctor.storage.d.ts +17 -0
- package/dist/commands/doctor.storage.d.ts.map +1 -0
- package/dist/commands/doctor.storage.js +91 -0
- package/dist/commands/doctor.storage.js.map +1 -0
- package/dist/commands/extensions/add.d.ts +10 -0
- package/dist/commands/extensions/add.d.ts.map +1 -0
- package/dist/commands/extensions/add.js +213 -0
- package/dist/commands/extensions/add.js.map +1 -0
- package/dist/commands/extensions/configure.d.ts +5 -0
- package/dist/commands/extensions/configure.d.ts.map +1 -0
- package/dist/commands/extensions/configure.js +58 -0
- package/dist/commands/extensions/configure.js.map +1 -0
- package/dist/commands/extensions/container.d.ts +15 -0
- package/dist/commands/extensions/container.d.ts.map +1 -0
- package/dist/commands/extensions/container.js +135 -0
- package/dist/commands/extensions/container.js.map +1 -0
- package/dist/commands/extensions/context.d.ts +37 -0
- package/dist/commands/extensions/context.d.ts.map +1 -0
- package/dist/commands/extensions/context.js +72 -0
- package/dist/commands/extensions/context.js.map +1 -0
- package/dist/commands/extensions/enable.d.ts +6 -0
- package/dist/commands/extensions/enable.d.ts.map +1 -0
- package/dist/commands/extensions/enable.js +180 -0
- package/dist/commands/extensions/enable.js.map +1 -0
- package/dist/commands/extensions/environment.d.ts +74 -0
- package/dist/commands/extensions/environment.d.ts.map +1 -0
- package/dist/commands/extensions/environment.js +168 -0
- package/dist/commands/extensions/environment.js.map +1 -0
- package/dist/commands/extensions/feature-scan.d.ts +48 -0
- package/dist/commands/extensions/feature-scan.d.ts.map +1 -0
- package/dist/commands/extensions/feature-scan.js +156 -0
- package/dist/commands/extensions/feature-scan.js.map +1 -0
- package/dist/commands/extensions/invoke.d.ts +60 -0
- package/dist/commands/extensions/invoke.d.ts.map +1 -0
- package/dist/commands/extensions/invoke.js +275 -0
- package/dist/commands/extensions/invoke.js.map +1 -0
- package/dist/commands/extensions/list.d.ts +5 -0
- package/dist/commands/extensions/list.d.ts.map +1 -0
- package/dist/commands/extensions/list.js +125 -0
- package/dist/commands/extensions/list.js.map +1 -0
- package/dist/commands/extensions/logs.d.ts +5 -0
- package/dist/commands/extensions/logs.d.ts.map +1 -0
- package/dist/commands/extensions/logs.js +74 -0
- package/dist/commands/extensions/logs.js.map +1 -0
- package/dist/commands/extensions/provision.d.ts +36 -0
- package/dist/commands/extensions/provision.d.ts.map +1 -0
- package/dist/commands/extensions/provision.js +137 -0
- package/dist/commands/extensions/provision.js.map +1 -0
- package/dist/commands/extensions/remove.d.ts +5 -0
- package/dist/commands/extensions/remove.d.ts.map +1 -0
- package/dist/commands/extensions/remove.js +77 -0
- package/dist/commands/extensions/remove.js.map +1 -0
- package/dist/commands/extensions/render.d.ts +16 -0
- package/dist/commands/extensions/render.d.ts.map +1 -0
- package/dist/commands/extensions/render.js +25 -0
- package/dist/commands/extensions/render.js.map +1 -0
- package/dist/commands/extensions/run.d.ts +30 -0
- package/dist/commands/extensions/run.d.ts.map +1 -0
- package/dist/commands/extensions/run.js +292 -0
- package/dist/commands/extensions/run.js.map +1 -0
- package/dist/commands/extensions/secret-store.d.ts +15 -0
- package/dist/commands/extensions/secret-store.d.ts.map +1 -0
- package/dist/commands/extensions/secret-store.js +164 -0
- package/dist/commands/extensions/secret-store.js.map +1 -0
- package/dist/commands/extensions/setup.d.ts +17 -0
- package/dist/commands/extensions/setup.d.ts.map +1 -0
- package/dist/commands/extensions/setup.js +94 -0
- package/dist/commands/extensions/setup.js.map +1 -0
- package/dist/commands/extensions/source.d.ts +47 -0
- package/dist/commands/extensions/source.d.ts.map +1 -0
- package/dist/commands/extensions/source.js +142 -0
- package/dist/commands/extensions/source.js.map +1 -0
- package/dist/commands/extensions/state.d.ts +62 -0
- package/dist/commands/extensions/state.d.ts.map +1 -0
- package/dist/commands/extensions/state.js +177 -0
- package/dist/commands/extensions/state.js.map +1 -0
- package/dist/commands/extensions/status.d.ts +9 -0
- package/dist/commands/extensions/status.d.ts.map +1 -0
- package/dist/commands/extensions/status.js +239 -0
- package/dist/commands/extensions/status.js.map +1 -0
- package/dist/commands/extensions.d.ts +3 -0
- package/dist/commands/extensions.d.ts.map +1 -0
- package/dist/commands/extensions.js +223 -0
- package/dist/commands/extensions.js.map +1 -0
- package/dist/commands/flow/index.d.ts +3 -0
- package/dist/commands/flow/index.d.ts.map +1 -0
- package/dist/commands/flow/index.js +295 -0
- package/dist/commands/flow/index.js.map +1 -0
- package/dist/commands/flow/limits.d.ts +12 -0
- package/dist/commands/flow/limits.d.ts.map +1 -0
- package/dist/commands/flow/limits.js +13 -0
- package/dist/commands/flow/limits.js.map +1 -0
- package/dist/commands/flow/output.d.ts +8 -0
- package/dist/commands/flow/output.d.ts.map +1 -0
- package/dist/commands/flow/output.js +11 -0
- package/dist/commands/flow/output.js.map +1 -0
- package/dist/commands/flow/render.d.ts +51 -0
- package/dist/commands/flow/render.d.ts.map +1 -0
- package/dist/commands/flow/render.js +220 -0
- package/dist/commands/flow/render.js.map +1 -0
- package/dist/commands/flow/select.d.ts +31 -0
- package/dist/commands/flow/select.d.ts.map +1 -0
- package/dist/commands/flow/select.js +62 -0
- package/dist/commands/flow/select.js.map +1 -0
- package/dist/commands/graph/boundaries-input.d.ts +26 -0
- package/dist/commands/graph/boundaries-input.d.ts.map +1 -0
- package/dist/commands/graph/boundaries-input.js +54 -0
- package/dist/commands/graph/boundaries-input.js.map +1 -0
- package/dist/commands/graph/boundaries.d.ts +4 -0
- package/dist/commands/graph/boundaries.d.ts.map +1 -0
- package/dist/commands/graph/boundaries.js +141 -0
- package/dist/commands/graph/boundaries.js.map +1 -0
- package/dist/commands/graph/bounds.d.ts +16 -0
- package/dist/commands/graph/bounds.d.ts.map +1 -0
- package/dist/commands/graph/bounds.js +22 -0
- package/dist/commands/graph/bounds.js.map +1 -0
- package/dist/commands/graph/category-clusters.d.ts +20 -0
- package/dist/commands/graph/category-clusters.d.ts.map +1 -0
- package/dist/commands/graph/category-clusters.js +158 -0
- package/dist/commands/graph/category-clusters.js.map +1 -0
- package/dist/commands/graph/feature-3d.d.ts +22 -0
- package/dist/commands/graph/feature-3d.d.ts.map +1 -0
- package/dist/commands/graph/feature-3d.js +114 -0
- package/dist/commands/graph/feature-3d.js.map +1 -0
- package/dist/commands/graph/feature-clusters.d.ts +17 -0
- package/dist/commands/graph/feature-clusters.d.ts.map +1 -0
- package/dist/commands/graph/feature-clusters.js +94 -0
- package/dist/commands/graph/feature-clusters.js.map +1 -0
- package/dist/commands/graph/feature-html.d.ts +26 -0
- package/dist/commands/graph/feature-html.d.ts.map +1 -0
- package/dist/commands/graph/feature-html.js +314 -0
- package/dist/commands/graph/feature-html.js.map +1 -0
- package/dist/commands/graph/feature-map.d.ts +31 -0
- package/dist/commands/graph/feature-map.d.ts.map +1 -0
- package/dist/commands/graph/feature-map.js +217 -0
- package/dist/commands/graph/feature-map.js.map +1 -0
- package/dist/commands/graph/feature-model.d.ts +55 -0
- package/dist/commands/graph/feature-model.d.ts.map +1 -0
- package/dist/commands/graph/feature-model.js +167 -0
- package/dist/commands/graph/feature-model.js.map +1 -0
- package/dist/commands/graph/feature-untangle-motion.d.ts +33 -0
- package/dist/commands/graph/feature-untangle-motion.d.ts.map +1 -0
- package/dist/commands/graph/feature-untangle-motion.js +155 -0
- package/dist/commands/graph/feature-untangle-motion.js.map +1 -0
- package/dist/commands/graph/index.d.ts +3 -0
- package/dist/commands/graph/index.d.ts.map +1 -0
- package/dist/commands/graph/index.js +414 -0
- package/dist/commands/graph/index.js.map +1 -0
- package/dist/commands/graph/render.d.ts +63 -0
- package/dist/commands/graph/render.d.ts.map +1 -0
- package/dist/commands/graph/render.js +352 -0
- package/dist/commands/graph/render.js.map +1 -0
- package/dist/commands/graph/select.d.ts +34 -0
- package/dist/commands/graph/select.d.ts.map +1 -0
- package/dist/commands/graph/select.js +55 -0
- package/dist/commands/graph/select.js.map +1 -0
- package/dist/commands/index/index.d.ts +6 -0
- package/dist/commands/index/index.d.ts.map +1 -0
- package/dist/commands/index/index.js +461 -0
- package/dist/commands/index/index.js.map +1 -0
- package/dist/commands/index/render.d.ts +53 -0
- package/dist/commands/index/render.d.ts.map +1 -0
- package/dist/commands/index/render.js +205 -0
- package/dist/commands/index/render.js.map +1 -0
- package/dist/commands/index/target.d.ts +34 -0
- package/dist/commands/index/target.d.ts.map +1 -0
- package/dist/commands/index/target.js +97 -0
- package/dist/commands/index/target.js.map +1 -0
- package/dist/commands/index-watch.d.ts +30 -0
- package/dist/commands/index-watch.d.ts.map +1 -0
- package/dist/commands/index-watch.js +138 -0
- package/dist/commands/index-watch.js.map +1 -0
- package/dist/commands/init/command.d.ts +25 -0
- package/dist/commands/init/command.d.ts.map +1 -0
- package/dist/commands/init/command.js +198 -0
- package/dist/commands/init/command.js.map +1 -0
- package/dist/commands/init/config-draft.d.ts +48 -0
- package/dist/commands/init/config-draft.d.ts.map +1 -0
- package/dist/commands/init/config-draft.js +201 -0
- package/dist/commands/init/config-draft.js.map +1 -0
- package/dist/commands/init/diff.d.ts +33 -0
- package/dist/commands/init/diff.d.ts.map +1 -0
- package/dist/commands/init/diff.js +109 -0
- package/dist/commands/init/diff.js.map +1 -0
- package/dist/commands/init/http-probe.d.ts +26 -0
- package/dist/commands/init/http-probe.d.ts.map +1 -0
- package/dist/commands/init/http-probe.js +144 -0
- package/dist/commands/init/http-probe.js.map +1 -0
- package/dist/commands/init/ignore-rules.d.ts +70 -0
- package/dist/commands/init/ignore-rules.d.ts.map +1 -0
- package/dist/commands/init/ignore-rules.js +146 -0
- package/dist/commands/init/ignore-rules.js.map +1 -0
- package/dist/commands/init/index.d.ts +33 -0
- package/dist/commands/init/index.d.ts.map +1 -0
- package/dist/commands/init/index.js +32 -0
- package/dist/commands/init/index.js.map +1 -0
- package/dist/commands/init/integrations-apply.d.ts +50 -0
- package/dist/commands/init/integrations-apply.d.ts.map +1 -0
- package/dist/commands/init/integrations-apply.js +452 -0
- package/dist/commands/init/integrations-apply.js.map +1 -0
- package/dist/commands/init/integrations-plan.d.ts +68 -0
- package/dist/commands/init/integrations-plan.d.ts.map +1 -0
- package/dist/commands/init/integrations-plan.js +515 -0
- package/dist/commands/init/integrations-plan.js.map +1 -0
- package/dist/commands/init/integrations.d.ts +5 -0
- package/dist/commands/init/integrations.d.ts.map +1 -0
- package/dist/commands/init/integrations.js +4 -0
- package/dist/commands/init/integrations.js.map +1 -0
- package/dist/commands/init/languages.d.ts +55 -0
- package/dist/commands/init/languages.d.ts.map +1 -0
- package/dist/commands/init/languages.js +245 -0
- package/dist/commands/init/languages.js.map +1 -0
- package/dist/commands/init/product-context.d.ts +63 -0
- package/dist/commands/init/product-context.d.ts.map +1 -0
- package/dist/commands/init/product-context.js +390 -0
- package/dist/commands/init/product-context.js.map +1 -0
- package/dist/commands/init/render.d.ts +38 -0
- package/dist/commands/init/render.d.ts.map +1 -0
- package/dist/commands/init/render.js +501 -0
- package/dist/commands/init/render.js.map +1 -0
- package/dist/commands/init/report.d.ts +24 -0
- package/dist/commands/init/report.d.ts.map +1 -0
- package/dist/commands/init/report.js +163 -0
- package/dist/commands/init/report.js.map +1 -0
- package/dist/commands/init/run.d.ts +71 -0
- package/dist/commands/init/run.d.ts.map +1 -0
- package/dist/commands/init/run.js +253 -0
- package/dist/commands/init/run.js.map +1 -0
- package/dist/commands/init/services.d.ts +82 -0
- package/dist/commands/init/services.d.ts.map +1 -0
- package/dist/commands/init/services.js +209 -0
- package/dist/commands/init/services.js.map +1 -0
- package/dist/commands/init/storage.d.ts +8 -0
- package/dist/commands/init/storage.d.ts.map +1 -0
- package/dist/commands/init/storage.js +102 -0
- package/dist/commands/init/storage.js.map +1 -0
- package/dist/commands/init/toml.d.ts +65 -0
- package/dist/commands/init/toml.d.ts.map +1 -0
- package/dist/commands/init/toml.js +159 -0
- package/dist/commands/init/toml.js.map +1 -0
- package/dist/commands/init/topology.d.ts +54 -0
- package/dist/commands/init/topology.d.ts.map +1 -0
- package/dist/commands/init/topology.js +146 -0
- package/dist/commands/init/topology.js.map +1 -0
- package/dist/commands/init/types.d.ts +334 -0
- package/dist/commands/init/types.d.ts.map +1 -0
- package/dist/commands/init/types.js +31 -0
- package/dist/commands/init/types.js.map +1 -0
- package/dist/commands/init/wizard-terminal.d.ts +36 -0
- package/dist/commands/init/wizard-terminal.d.ts.map +1 -0
- package/dist/commands/init/wizard-terminal.js +163 -0
- package/dist/commands/init/wizard-terminal.js.map +1 -0
- package/dist/commands/init/wizard.d.ts +25 -0
- package/dist/commands/init/wizard.d.ts.map +1 -0
- package/dist/commands/init/wizard.js +358 -0
- package/dist/commands/init/wizard.js.map +1 -0
- package/dist/commands/mcp.d.ts +4 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +111 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/product-test-runner.d.ts +4 -0
- package/dist/commands/product-test-runner.d.ts.map +1 -0
- package/dist/commands/product-test-runner.js +85 -0
- package/dist/commands/product-test-runner.js.map +1 -0
- package/dist/commands/product.d.ts +16 -0
- package/dist/commands/product.d.ts.map +1 -0
- package/dist/commands/product.js +262 -0
- package/dist/commands/product.js.map +1 -0
- package/dist/commands/query.d.ts +114 -0
- package/dist/commands/query.d.ts.map +1 -0
- package/dist/commands/query.js +783 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/scan.d.ts +10 -0
- package/dist/commands/scan.d.ts.map +1 -0
- package/dist/commands/scan.js +302 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/sdd.d.ts +24 -0
- package/dist/commands/sdd.d.ts.map +1 -0
- package/dist/commands/sdd.js +195 -0
- package/dist/commands/sdd.js.map +1 -0
- package/dist/commands/unavailable.d.ts +40 -0
- package/dist/commands/unavailable.d.ts.map +1 -0
- package/dist/commands/unavailable.js +73 -0
- package/dist/commands/unavailable.js.map +1 -0
- package/dist/commands/watch/analyze.d.ts +69 -0
- package/dist/commands/watch/analyze.d.ts.map +1 -0
- package/dist/commands/watch/analyze.js +402 -0
- package/dist/commands/watch/analyze.js.map +1 -0
- package/dist/commands/watch/cli.d.ts +8 -0
- package/dist/commands/watch/cli.d.ts.map +1 -0
- package/dist/commands/watch/cli.js +97 -0
- package/dist/commands/watch/cli.js.map +1 -0
- package/dist/commands/watch/delta.d.ts +46 -0
- package/dist/commands/watch/delta.d.ts.map +1 -0
- package/dist/commands/watch/delta.js +170 -0
- package/dist/commands/watch/delta.js.map +1 -0
- package/dist/commands/watch/events.d.ts +214 -0
- package/dist/commands/watch/events.d.ts.map +1 -0
- package/dist/commands/watch/events.js +13 -0
- package/dist/commands/watch/events.js.map +1 -0
- package/dist/commands/watch/index.d.ts +19 -0
- package/dist/commands/watch/index.d.ts.map +1 -0
- package/dist/commands/watch/index.js +15 -0
- package/dist/commands/watch/index.js.map +1 -0
- package/dist/commands/watch/options.d.ts +43 -0
- package/dist/commands/watch/options.d.ts.map +1 -0
- package/dist/commands/watch/options.js +193 -0
- package/dist/commands/watch/options.js.map +1 -0
- package/dist/commands/watch/render.d.ts +26 -0
- package/dist/commands/watch/render.d.ts.map +1 -0
- package/dist/commands/watch/render.js +175 -0
- package/dist/commands/watch/render.js.map +1 -0
- package/dist/commands/watch/run.d.ts +14 -0
- package/dist/commands/watch/run.d.ts.map +1 -0
- package/dist/commands/watch/run.js +460 -0
- package/dist/commands/watch/run.js.map +1 -0
- package/dist/commands/watch/runtime.d.ts +67 -0
- package/dist/commands/watch/runtime.d.ts.map +1 -0
- package/dist/commands/watch/runtime.js +149 -0
- package/dist/commands/watch/runtime.js.map +1 -0
- package/dist/commands/watch-command.d.ts +3 -0
- package/dist/commands/watch-command.d.ts.map +1 -0
- package/dist/commands/watch-command.js +273 -0
- package/dist/commands/watch-command.js.map +1 -0
- package/dist/entry-point.d.ts +11 -0
- package/dist/entry-point.d.ts.map +1 -0
- package/dist/entry-point.js +65 -0
- package/dist/entry-point.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +245 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/boundaries-schema.d.ts +262 -0
- package/dist/mcp/boundaries-schema.d.ts.map +1 -0
- package/dist/mcp/boundaries-schema.js +183 -0
- package/dist/mcp/boundaries-schema.js.map +1 -0
- package/dist/mcp/default-runtime.d.ts +16 -0
- package/dist/mcp/default-runtime.d.ts.map +1 -0
- package/dist/mcp/default-runtime.js +718 -0
- package/dist/mcp/default-runtime.js.map +1 -0
- package/dist/mcp/envelope.d.ts +13 -0
- package/dist/mcp/envelope.d.ts.map +1 -0
- package/dist/mcp/envelope.js +29 -0
- package/dist/mcp/envelope.js.map +1 -0
- package/dist/mcp/index.d.ts +8 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +8 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/output-schemas.d.ts +5928 -0
- package/dist/mcp/output-schemas.d.ts.map +1 -0
- package/dist/mcp/output-schemas.js +2814 -0
- package/dist/mcp/output-schemas.js.map +1 -0
- package/dist/mcp/path-sandbox.d.ts +35 -0
- package/dist/mcp/path-sandbox.d.ts.map +1 -0
- package/dist/mcp/path-sandbox.js +128 -0
- package/dist/mcp/path-sandbox.js.map +1 -0
- package/dist/mcp/server.d.ts +155 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +257 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/stdio.d.ts +20 -0
- package/dist/mcp/stdio.d.ts.map +1 -0
- package/dist/mcp/stdio.js +71 -0
- package/dist/mcp/stdio.js.map +1 -0
- package/dist/mcp/tools.d.ts +355 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +319 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/mcp/types.d.ts +15 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +45 -0
- package/dist/mcp/types.js.map +1 -0
- package/package.json +99 -3
- package/src/cli/args.ts +231 -0
- package/src/cli/command.ts +146 -0
- package/src/cli/deadline.ts +56 -0
- package/src/cli/embedder-deadline.ts +187 -0
- package/src/cli/exit.ts +94 -0
- package/src/cli/graphs.ts +191 -0
- package/src/cli/index-freshness.ts +303 -0
- package/src/cli/index-refresh.ts +125 -0
- package/src/cli/index-state.ts +1217 -0
- package/src/cli/io.ts +56 -0
- package/src/cli/language-support.ts +203 -0
- package/src/cli/renewing-lease.ts +121 -0
- package/src/cli/search-graph-enrichment.ts +639 -0
- package/src/cli/system.ts +94 -0
- package/src/cli/vector-store-policy.ts +213 -0
- package/src/cli/version.ts +2 -0
- package/src/cli/workspace.ts +324 -0
- package/src/commands/complexity.ts +776 -0
- package/src/commands/doctor.languages.ts +187 -0
- package/src/commands/doctor.storage.ts +124 -0
- package/src/commands/doctor.ts +946 -0
- package/src/commands/extensions/add.ts +312 -0
- package/src/commands/extensions/configure.ts +82 -0
- package/src/commands/extensions/container.ts +209 -0
- package/src/commands/extensions/context.ts +109 -0
- package/src/commands/extensions/enable.ts +237 -0
- package/src/commands/extensions/environment.ts +218 -0
- package/src/commands/extensions/feature-scan.ts +232 -0
- package/src/commands/extensions/invoke.ts +368 -0
- package/src/commands/extensions/list.ts +158 -0
- package/src/commands/extensions/logs.ts +104 -0
- package/src/commands/extensions/provision.ts +206 -0
- package/src/commands/extensions/remove.ts +110 -0
- package/src/commands/extensions/render.ts +32 -0
- package/src/commands/extensions/run.ts +386 -0
- package/src/commands/extensions/secret-store.ts +223 -0
- package/src/commands/extensions/setup.ts +140 -0
- package/src/commands/extensions/source.ts +189 -0
- package/src/commands/extensions/state.ts +252 -0
- package/src/commands/extensions/status.ts +320 -0
- package/src/commands/extensions.ts +280 -0
- package/src/commands/flow/index.ts +402 -0
- package/src/commands/flow/limits.ts +14 -0
- package/src/commands/flow/output.ts +16 -0
- package/src/commands/flow/render.ts +318 -0
- package/src/commands/flow/select.ts +101 -0
- package/src/commands/graph/boundaries-input.ts +63 -0
- package/src/commands/graph/boundaries.ts +182 -0
- package/src/commands/graph/bounds.ts +25 -0
- package/src/commands/graph/category-clusters.ts +194 -0
- package/src/commands/graph/feature-3d.ts +141 -0
- package/src/commands/graph/feature-clusters.ts +125 -0
- package/src/commands/graph/feature-html.ts +336 -0
- package/src/commands/graph/feature-map.ts +270 -0
- package/src/commands/graph/feature-model.ts +234 -0
- package/src/commands/graph/feature-untangle-motion.ts +192 -0
- package/src/commands/graph/index.ts +562 -0
- package/src/commands/graph/render.ts +503 -0
- package/src/commands/graph/select.ts +77 -0
- package/src/commands/index/index.ts +595 -0
- package/src/commands/index/render.ts +325 -0
- package/src/commands/index/target.ts +136 -0
- package/src/commands/index-watch.ts +206 -0
- package/src/commands/init/command.ts +238 -0
- package/src/commands/init/config-draft.ts +235 -0
- package/src/commands/init/diff.ts +117 -0
- package/src/commands/init/http-probe.ts +150 -0
- package/src/commands/init/ignore-rules.ts +170 -0
- package/src/commands/init/index.ts +63 -0
- package/src/commands/init/integrations-apply.ts +618 -0
- package/src/commands/init/integrations-plan.ts +634 -0
- package/src/commands/init/integrations.ts +8 -0
- package/src/commands/init/languages.ts +320 -0
- package/src/commands/init/product-context.ts +576 -0
- package/src/commands/init/render.ts +598 -0
- package/src/commands/init/report.ts +204 -0
- package/src/commands/init/run.ts +349 -0
- package/src/commands/init/services.ts +271 -0
- package/src/commands/init/storage.ts +136 -0
- package/src/commands/init/toml.ts +174 -0
- package/src/commands/init/topology.ts +192 -0
- package/src/commands/init/types.ts +366 -0
- package/src/commands/init/wizard-terminal.ts +206 -0
- package/src/commands/init/wizard.ts +450 -0
- package/src/commands/mcp.ts +123 -0
- package/src/commands/product-test-runner.ts +80 -0
- package/src/commands/product.ts +331 -0
- package/src/commands/query.ts +1032 -0
- package/src/commands/scan.ts +360 -0
- package/src/commands/sdd.ts +243 -0
- package/src/commands/unavailable.ts +92 -0
- package/src/commands/watch/README.md +160 -0
- package/src/commands/watch/analyze.ts +600 -0
- package/src/commands/watch/cli.ts +108 -0
- package/src/commands/watch/delta.ts +186 -0
- package/src/commands/watch/events.ts +235 -0
- package/src/commands/watch/index.ts +53 -0
- package/src/commands/watch/options.ts +234 -0
- package/src/commands/watch/render.ts +240 -0
- package/src/commands/watch/run.ts +553 -0
- package/src/commands/watch/runtime.ts +167 -0
- package/src/commands/watch-command.ts +294 -0
- package/src/entry-point.ts +67 -0
- package/src/index.ts +291 -0
- package/src/mcp/boundaries-schema.ts +193 -0
- package/src/mcp/default-runtime.ts +1034 -0
- package/src/mcp/envelope.ts +57 -0
- package/src/mcp/index.ts +28 -0
- package/src/mcp/output-schemas.ts +3071 -0
- package/src/mcp/path-sandbox.ts +156 -0
- package/src/mcp/server.ts +358 -0
- package/src/mcp/stdio.ts +92 -0
- package/src/mcp/tools.ts +563 -0
- package/src/mcp/types.ts +66 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WP-222 — DIE EINE STELLE, DIE ENTSCHEIDET, WELCHER VEKTORSPEICHER BENUTZT
|
|
3
|
+
* WERDEN DARF.
|
|
4
|
+
*
|
|
5
|
+
* Vorher stand diese Regel zweimal im Werkzeug, und die zwei Fassungen
|
|
6
|
+
* widersprachen sich in einer Sicherheitsfrage:
|
|
7
|
+
*
|
|
8
|
+
* `untangle init` kannte spec.md §3.2 und prueft den ueblichen
|
|
9
|
+
* Standardport eines fremden Vektorspeichers
|
|
10
|
+
* ABSICHTLICH NICHT. Es schrieb den Grund sogar in die
|
|
11
|
+
* erzeugte Konfiguration.
|
|
12
|
+
* `untangle doctor` kannte die Regel nicht. Es liess `qdrant.mode =
|
|
13
|
+
* "managed"` vom Speicheradapter aufloesen, der ohne
|
|
14
|
+
* `url` auf denselben Standardport zurueckfiel, fand
|
|
15
|
+
* dort eine FREMDE Instanz mit fremden Daten, meldete
|
|
16
|
+
* "[OK ] Qdrant — Erreichbar" und empfahl, dorthin zu
|
|
17
|
+
* indizieren.
|
|
18
|
+
*
|
|
19
|
+
* Zwei Befehle desselben Werkzeugs, zwei Antworten, und die gefaehrlichere
|
|
20
|
+
* gewann: der Nutzer folgt dem Diagnosewerkzeug, nicht dem Kommentar in
|
|
21
|
+
* einer Datei. Die Ursache war nicht, dass eine der beiden Fassungen falsch
|
|
22
|
+
* war — die Ursache war, dass es ZWEI gab.
|
|
23
|
+
*
|
|
24
|
+
* Also: hier steht sie einmal. `init` bezieht von hier, welche Adressen es
|
|
25
|
+
* ueberhaupt anfassen darf; `doctor` und jeder andere Befehl bekommen ihren
|
|
26
|
+
* Speicher ueber `cli/workspace.ts`, das vor dem Verdrahten hier fragt. Wer
|
|
27
|
+
* eine dritte Fassung schreibt, muss diese Datei umgehen — und das faellt
|
|
28
|
+
* auf.
|
|
29
|
+
*
|
|
30
|
+
* DIE REGEL, in einem Satz: Untangle benutzt seinen EIGENEN verwalteten
|
|
31
|
+
* Speicher, es sei denn, der Nutzer hat eine Adresse ausdruecklich benannt.
|
|
32
|
+
* Ein Zurueckfallen auf eine fremde Vorgabeadresse gibt es nicht.
|
|
33
|
+
*/
|
|
34
|
+
import type { QdrantConfig } from "@untangle-code/config";
|
|
35
|
+
/**
|
|
36
|
+
* Der verwaltete Qdrant-REST-Port (spec.md §3.1). Dieser Dienst gehoert
|
|
37
|
+
* Untangle: eigener Container, eigenes Volume. Auf ihn darf geschrieben
|
|
38
|
+
* werden.
|
|
39
|
+
*/
|
|
40
|
+
export declare const MANAGED_QDRANT_URL = "http://127.0.0.1:16333";
|
|
41
|
+
/**
|
|
42
|
+
* Adressen, die Untangle von sich aus NIEMALS annimmt.
|
|
43
|
+
*
|
|
44
|
+
* `6333` ist der Vorgabeport von Qdrant selbst und damit genau der Port, auf
|
|
45
|
+
* dem auf einem Entwicklungsrechner die Instanz von JEMAND ANDEREM liegt —
|
|
46
|
+
* mit den Daten von jemand anderem. spec.md §3.2 verbietet, in fremde
|
|
47
|
+
* Infrastruktur einzugreifen. Eine Konfiguration, die diesen Port
|
|
48
|
+
* stillschweigend uebernaehme, wuerde beim naechsten Befehl hineinschreiben.
|
|
49
|
+
*/
|
|
50
|
+
export declare const FOREIGN_DEFAULT_QDRANT_URLS: readonly {
|
|
51
|
+
readonly url: string;
|
|
52
|
+
readonly reason: string;
|
|
53
|
+
}[];
|
|
54
|
+
/** Woher die Adresse kommt — das ist der ganze Unterschied. */
|
|
55
|
+
export type VectorStoreOrigin = "embedded"
|
|
56
|
+
/** Aus `qdrant.url` einer Konfigurationsdatei. Der Nutzer hat sie hingeschrieben. */
|
|
57
|
+
| "configured"
|
|
58
|
+
/** Aus `UNTANGLE_QDRANT_URL`. Der Nutzer hat sie benannt. */
|
|
59
|
+
| "environment"
|
|
60
|
+
/** Untangles eigener verwalteter Speicher (spec.md §3.1). */
|
|
61
|
+
| "managed";
|
|
62
|
+
export interface VectorStoreDecision {
|
|
63
|
+
/** Die Adresse, die benutzt werden darf — oder die abgelehnte. */
|
|
64
|
+
readonly url: string;
|
|
65
|
+
readonly origin: VectorStoreOrigin;
|
|
66
|
+
readonly allowed: boolean;
|
|
67
|
+
/** Bei `allowed === false`: warum nicht. Sonst: wie die Adresse zustande kam. */
|
|
68
|
+
readonly reason: string;
|
|
69
|
+
/** Bei `allowed === false` Pflicht: GENAU EIN naechster Schritt. */
|
|
70
|
+
readonly nextStep?: string;
|
|
71
|
+
}
|
|
72
|
+
/** Steht diese Adresse auf der Liste der fremden Vorgabeadressen? */
|
|
73
|
+
export declare function foreignDefaultFor(url: string): {
|
|
74
|
+
url: string;
|
|
75
|
+
reason: string;
|
|
76
|
+
} | undefined;
|
|
77
|
+
/**
|
|
78
|
+
* Die Entscheidung.
|
|
79
|
+
*
|
|
80
|
+
* Warum das Feld `qdrant.url` als „ausdrueckliche Nennung" zaehlt: es hat
|
|
81
|
+
* KEINE Produktvorgabe (`DEFAULT_QDRANT_CONFIG` setzt nur `mode`). Steht dort
|
|
82
|
+
* etwas, dann hat es eine Nutzerebene hingeschrieben — eine Datei, die
|
|
83
|
+
* Umgebung oder ein Argument. Genau das ist die Zustimmung, die spec.md §3.2
|
|
84
|
+
* verlangt, bevor Untangle eine fremde Instanz anfasst.
|
|
85
|
+
*/
|
|
86
|
+
export declare function decideVectorStore(input: {
|
|
87
|
+
qdrant: QdrantConfig;
|
|
88
|
+
env: Readonly<Record<string, string | undefined>>;
|
|
89
|
+
}): VectorStoreDecision;
|
|
90
|
+
/**
|
|
91
|
+
* Der Riegel.
|
|
92
|
+
*
|
|
93
|
+
* Er sitzt hinter der Entscheidung, weil eine Adresse auch auf anderem Wege
|
|
94
|
+
* dort landen kann — ein kuenftiger Adapter mit eigener Vorgabe, eine
|
|
95
|
+
* Migration, ein Tippfehler in einer Vorgabekonstanten. Wird eine fremde
|
|
96
|
+
* Vorgabeadresse benutzt, OHNE dass sie jemand benannt hat, bricht der
|
|
97
|
+
* Befehl ab statt hineinzuschreiben.
|
|
98
|
+
*/
|
|
99
|
+
export declare function assertVectorStoreAllowed(decision: VectorStoreDecision, resolvedUrl: string): void;
|
|
100
|
+
/**
|
|
101
|
+
* Welche Adressen `init` ueberhaupt anfassen darf — dieselbe Regel, von der
|
|
102
|
+
* anderen Seite gelesen.
|
|
103
|
+
*
|
|
104
|
+
* `probe` sind die Adressen, an die eine (ausschliesslich lesende) Anfrage
|
|
105
|
+
* gehen darf. `skipped` sind die bewusst ausgelassenen, JEWEILS MIT GRUND:
|
|
106
|
+
* eine ausgelassene Pruefung ohne Begruendung waere ein stilles
|
|
107
|
+
* Ueberspringen (E4), und genau dieses Schweigen hat `doctor` gefehlt.
|
|
108
|
+
*/
|
|
109
|
+
export declare function qdrantProbePlan(env: Readonly<Record<string, string | undefined>>): {
|
|
110
|
+
probe: string[];
|
|
111
|
+
skipped: {
|
|
112
|
+
url: string;
|
|
113
|
+
reason: string;
|
|
114
|
+
}[];
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=vector-store-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector-store-policy.d.ts","sourceRoot":"","sources":["../../src/cli/vector-store-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAE3D;;;;;;;;GAQG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,EAQA,CAAC;AAEF,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB,GACzB,UAAU;AACZ,qFAAqF;GACnF,YAAY;AACd,6DAA6D;GAC3D,aAAa;AACf,6DAA6D;GAC3D,SAAS,CAAC;AAEd,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAMD,qEAAqE;AACrE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAG1F;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;CACnD,GAAG,mBAAmB,CA6CtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAiBjG;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG;IAClF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5C,CAeA"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WP-222 — DIE EINE STELLE, DIE ENTSCHEIDET, WELCHER VEKTORSPEICHER BENUTZT
|
|
3
|
+
* WERDEN DARF.
|
|
4
|
+
*
|
|
5
|
+
* Vorher stand diese Regel zweimal im Werkzeug, und die zwei Fassungen
|
|
6
|
+
* widersprachen sich in einer Sicherheitsfrage:
|
|
7
|
+
*
|
|
8
|
+
* `untangle init` kannte spec.md §3.2 und prueft den ueblichen
|
|
9
|
+
* Standardport eines fremden Vektorspeichers
|
|
10
|
+
* ABSICHTLICH NICHT. Es schrieb den Grund sogar in die
|
|
11
|
+
* erzeugte Konfiguration.
|
|
12
|
+
* `untangle doctor` kannte die Regel nicht. Es liess `qdrant.mode =
|
|
13
|
+
* "managed"` vom Speicheradapter aufloesen, der ohne
|
|
14
|
+
* `url` auf denselben Standardport zurueckfiel, fand
|
|
15
|
+
* dort eine FREMDE Instanz mit fremden Daten, meldete
|
|
16
|
+
* "[OK ] Qdrant — Erreichbar" und empfahl, dorthin zu
|
|
17
|
+
* indizieren.
|
|
18
|
+
*
|
|
19
|
+
* Zwei Befehle desselben Werkzeugs, zwei Antworten, und die gefaehrlichere
|
|
20
|
+
* gewann: der Nutzer folgt dem Diagnosewerkzeug, nicht dem Kommentar in
|
|
21
|
+
* einer Datei. Die Ursache war nicht, dass eine der beiden Fassungen falsch
|
|
22
|
+
* war — die Ursache war, dass es ZWEI gab.
|
|
23
|
+
*
|
|
24
|
+
* Also: hier steht sie einmal. `init` bezieht von hier, welche Adressen es
|
|
25
|
+
* ueberhaupt anfassen darf; `doctor` und jeder andere Befehl bekommen ihren
|
|
26
|
+
* Speicher ueber `cli/workspace.ts`, das vor dem Verdrahten hier fragt. Wer
|
|
27
|
+
* eine dritte Fassung schreibt, muss diese Datei umgehen — und das faellt
|
|
28
|
+
* auf.
|
|
29
|
+
*
|
|
30
|
+
* DIE REGEL, in einem Satz: Untangle benutzt seinen EIGENEN verwalteten
|
|
31
|
+
* Speicher, es sei denn, der Nutzer hat eine Adresse ausdruecklich benannt.
|
|
32
|
+
* Ein Zurueckfallen auf eine fremde Vorgabeadresse gibt es nicht.
|
|
33
|
+
*/
|
|
34
|
+
import { OperationalError } from "./exit.js";
|
|
35
|
+
/**
|
|
36
|
+
* Der verwaltete Qdrant-REST-Port (spec.md §3.1). Dieser Dienst gehoert
|
|
37
|
+
* Untangle: eigener Container, eigenes Volume. Auf ihn darf geschrieben
|
|
38
|
+
* werden.
|
|
39
|
+
*/
|
|
40
|
+
export const MANAGED_QDRANT_URL = "http://127.0.0.1:16333";
|
|
41
|
+
/**
|
|
42
|
+
* Adressen, die Untangle von sich aus NIEMALS annimmt.
|
|
43
|
+
*
|
|
44
|
+
* `6333` ist der Vorgabeport von Qdrant selbst und damit genau der Port, auf
|
|
45
|
+
* dem auf einem Entwicklungsrechner die Instanz von JEMAND ANDEREM liegt —
|
|
46
|
+
* mit den Daten von jemand anderem. spec.md §3.2 verbietet, in fremde
|
|
47
|
+
* Infrastruktur einzugreifen. Eine Konfiguration, die diesen Port
|
|
48
|
+
* stillschweigend uebernaehme, wuerde beim naechsten Befehl hineinschreiben.
|
|
49
|
+
*/
|
|
50
|
+
export const FOREIGN_DEFAULT_QDRANT_URLS = [
|
|
51
|
+
{
|
|
52
|
+
url: "http://127.0.0.1:6333",
|
|
53
|
+
reason: "Default port of a foreign instance; spec.md §3.2 prohibits modifying foreign " +
|
|
54
|
+
"services. Select it explicitly with UNTANGLE_QDRANT_URL; otherwise `untangle` starts " +
|
|
55
|
+
"an owned instance on 16333 with its own volume.",
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
function normalize(url) {
|
|
59
|
+
return url.trim().replace(/\/+$/u, "");
|
|
60
|
+
}
|
|
61
|
+
/** Steht diese Adresse auf der Liste der fremden Vorgabeadressen? */
|
|
62
|
+
export function foreignDefaultFor(url) {
|
|
63
|
+
const wanted = normalize(url);
|
|
64
|
+
return FOREIGN_DEFAULT_QDRANT_URLS.find((entry) => normalize(entry.url) === wanted);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Die Entscheidung.
|
|
68
|
+
*
|
|
69
|
+
* Warum das Feld `qdrant.url` als „ausdrueckliche Nennung" zaehlt: es hat
|
|
70
|
+
* KEINE Produktvorgabe (`DEFAULT_QDRANT_CONFIG` setzt nur `mode`). Steht dort
|
|
71
|
+
* etwas, dann hat es eine Nutzerebene hingeschrieben — eine Datei, die
|
|
72
|
+
* Umgebung oder ein Argument. Genau das ist die Zustimmung, die spec.md §3.2
|
|
73
|
+
* verlangt, bevor Untangle eine fremde Instanz anfasst.
|
|
74
|
+
*/
|
|
75
|
+
export function decideVectorStore(input) {
|
|
76
|
+
const fromConfig = input.qdrant.url;
|
|
77
|
+
if (fromConfig !== undefined && fromConfig.length > 0) {
|
|
78
|
+
const foreign = foreignDefaultFor(fromConfig);
|
|
79
|
+
return {
|
|
80
|
+
url: fromConfig,
|
|
81
|
+
origin: "configured",
|
|
82
|
+
allowed: true,
|
|
83
|
+
reason: foreign === undefined
|
|
84
|
+
? "explicitly configured as `qdrant.url`"
|
|
85
|
+
: "explicitly configured as `qdrant.url`; selecting this foreign " +
|
|
86
|
+
"selecting the default address is therefore an explicit user decision (spec.md §3.2)",
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const fromEnv = input.env["UNTANGLE_QDRANT_URL"];
|
|
90
|
+
if (fromEnv !== undefined && fromEnv.length > 0) {
|
|
91
|
+
return {
|
|
92
|
+
url: fromEnv,
|
|
93
|
+
origin: "environment",
|
|
94
|
+
allowed: true,
|
|
95
|
+
reason: "explicitly selected through UNTANGLE_QDRANT_URL",
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
if (input.qdrant.mode === "external") {
|
|
99
|
+
// Kein Zurueckfallen. „external" ohne Adresse ist ein Konfigurationsfehler
|
|
100
|
+
// und wird als solcher gemeldet, nicht durch Raten geheilt.
|
|
101
|
+
return {
|
|
102
|
+
url: "",
|
|
103
|
+
origin: "configured",
|
|
104
|
+
allowed: false,
|
|
105
|
+
reason: 'qdrant.mode is "external", but no `qdrant.url` is set.',
|
|
106
|
+
nextStep: "Set your own instance's address as `qdrant.url`, or set " + 'qdrant.mode to "managed".',
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
url: MANAGED_QDRANT_URL,
|
|
111
|
+
origin: "managed",
|
|
112
|
+
allowed: true,
|
|
113
|
+
reason: "Untangle's owned managed store (spec.md §3.1, port 16333)",
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Der Riegel.
|
|
118
|
+
*
|
|
119
|
+
* Er sitzt hinter der Entscheidung, weil eine Adresse auch auf anderem Wege
|
|
120
|
+
* dort landen kann — ein kuenftiger Adapter mit eigener Vorgabe, eine
|
|
121
|
+
* Migration, ein Tippfehler in einer Vorgabekonstanten. Wird eine fremde
|
|
122
|
+
* Vorgabeadresse benutzt, OHNE dass sie jemand benannt hat, bricht der
|
|
123
|
+
* Befehl ab statt hineinzuschreiben.
|
|
124
|
+
*/
|
|
125
|
+
export function assertVectorStoreAllowed(decision, resolvedUrl) {
|
|
126
|
+
if (!decision.allowed) {
|
|
127
|
+
throw new OperationalError(decision.reason, decision.nextStep ?? "See `untangle init`.");
|
|
128
|
+
}
|
|
129
|
+
if (decision.origin !== "managed") {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const foreign = foreignDefaultFor(resolvedUrl);
|
|
133
|
+
if (foreign === undefined) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
throw new OperationalError(`${resolvedUrl} is the default port of a foreign Qdrant instance and was not explicitly ` +
|
|
137
|
+
`selected; Untangle will not take it over automatically. ${foreign.reason}`, `Set UNTANGLE_QDRANT_URL=${resolvedUrl} if this instance is yours; ` +
|
|
138
|
+
`otherwise start an owned instance on ${MANAGED_QDRANT_URL}.`);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Welche Adressen `init` ueberhaupt anfassen darf — dieselbe Regel, von der
|
|
142
|
+
* anderen Seite gelesen.
|
|
143
|
+
*
|
|
144
|
+
* `probe` sind die Adressen, an die eine (ausschliesslich lesende) Anfrage
|
|
145
|
+
* gehen darf. `skipped` sind die bewusst ausgelassenen, JEWEILS MIT GRUND:
|
|
146
|
+
* eine ausgelassene Pruefung ohne Begruendung waere ein stilles
|
|
147
|
+
* Ueberspringen (E4), und genau dieses Schweigen hat `doctor` gefehlt.
|
|
148
|
+
*/
|
|
149
|
+
export function qdrantProbePlan(env) {
|
|
150
|
+
const configured = env["UNTANGLE_QDRANT_URL"];
|
|
151
|
+
const probe = configured === undefined || configured.length === 0
|
|
152
|
+
? [MANAGED_QDRANT_URL]
|
|
153
|
+
: normalize(configured) === normalize(MANAGED_QDRANT_URL)
|
|
154
|
+
? [MANAGED_QDRANT_URL]
|
|
155
|
+
: [configured, MANAGED_QDRANT_URL];
|
|
156
|
+
const probing = new Set(probe.map(normalize));
|
|
157
|
+
const skipped = FOREIGN_DEFAULT_QDRANT_URLS.filter((entry) => !probing.has(normalize(entry.url))).map((entry) => ({ ...entry }));
|
|
158
|
+
return { probe, skipped };
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=vector-store-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector-store-policy.js","sourceRoot":"","sources":["../../src/cli/vector-store-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,wBAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAGlC;IACJ;QACE,GAAG,EAAE,uBAAuB;QAC5B,MAAM,EACJ,+EAA+E;YAC/E,uFAAuF;YACvF,iDAAiD;KACpD;CACF,CAAC;AAuBF,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9B,OAAO,2BAA2B,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,CAAC;AACtF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAGjC;IACC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IACpC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC9C,OAAO;YACL,GAAG,EAAE,UAAU;YACf,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,IAAI;YACb,MAAM,EACJ,OAAO,KAAK,SAAS;gBACnB,CAAC,CAAC,uCAAuC;gBACzC,CAAC,CAAC,gEAAgE;oBAChE,qFAAqF;SAC5F,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACjD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO;YACL,GAAG,EAAE,OAAO;YACZ,MAAM,EAAE,aAAa;YACrB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,iDAAiD;SAC1D,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACrC,2EAA2E;QAC3E,4DAA4D;QAC5D,OAAO;YACL,GAAG,EAAE,EAAE;YACP,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,wDAAwD;YAChE,QAAQ,EACN,0DAA0D,GAAG,2BAA2B;SAC3F,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,EAAE,kBAAkB;QACvB,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,2DAA2D;KACpE,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAA6B,EAAE,WAAmB;IACzF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,IAAI,sBAAsB,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IACD,MAAM,IAAI,gBAAgB,CACxB,GAAG,WAAW,2EAA2E;QACvF,2DAA2D,OAAO,CAAC,MAAM,EAAE,EAC7E,2BAA2B,WAAW,8BAA8B;QAClE,wCAAwC,kBAAkB,GAAG,CAChE,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,GAAiD;IAI/E,MAAM,UAAU,GAAG,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC9C,MAAM,KAAK,GACT,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QACjD,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACtB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,kBAAkB,CAAC;YACvD,CAAC,CAAC,CAAC,kBAAkB,CAAC;YACtB,CAAC,CAAC,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAEzC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,2BAA2B,CAAC,MAAM,CAChD,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAC9C,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAEjC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,eAAO,MAAM,WAAW,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Die Verdrahtung, die fast jeder Befehl braucht: von der Konfiguration im
|
|
3
|
+
* Projekt zu den fertigen Adaptern.
|
|
4
|
+
*
|
|
5
|
+
* Diese Datei ist bewusst die EINZIGE Stelle, an der die Oberflaeche
|
|
6
|
+
* Adapterklassen anfasst. Jeder Befehl bekommt danach nur noch Ports zu
|
|
7
|
+
* sehen. Das ist keine Kosmetik: es ist der Grund, warum sich `query` gegen
|
|
8
|
+
* den In-Memory-Speicher des testkits genauso testen laesst wie gegen ein
|
|
9
|
+
* echtes Qdrant.
|
|
10
|
+
*/
|
|
11
|
+
import { type ConfigIssue, type EffectiveUntangleConfigV1, type LoadConfigResult } from "@untangle-code/config";
|
|
12
|
+
import { type EmbeddingProfile, type EmbeddingProvider, type VectorStore, type MetadataStore, type GraphStore } from "@untangle-code/domain";
|
|
13
|
+
import { type HybridSearchEngine, type SearchGraphEnrichmentPort } from "@untangle-code/search";
|
|
14
|
+
import { type QdrantStorageConfig } from "@untangle-code/storage-qdrant";
|
|
15
|
+
import type { IndexStateScope, IndexStateV1 } from "./index-state.js";
|
|
16
|
+
import { decideVectorStore } from "./vector-store-policy.js";
|
|
17
|
+
/** Die aufgeloeste Sicht des Projekts, wie sie jeder Befehl sieht. */
|
|
18
|
+
export interface WorkspaceView {
|
|
19
|
+
readonly root: string;
|
|
20
|
+
readonly config: EffectiveUntangleConfigV1;
|
|
21
|
+
readonly load: LoadConfigResult;
|
|
22
|
+
readonly workspaceId: string;
|
|
23
|
+
readonly profile: EmbeddingProfile;
|
|
24
|
+
readonly profileId: string;
|
|
25
|
+
readonly profileShortId: string;
|
|
26
|
+
/** Repository-IDs aus der Konfiguration, codepoint-sortiert. */
|
|
27
|
+
readonly repoIds: readonly string[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Laedt die Konfiguration und leitet Identitaeten ab.
|
|
31
|
+
*
|
|
32
|
+
* `strict` entscheidet ueber spec.md §4.8: mit `strict` bricht ein
|
|
33
|
+
* Konfigurationsfehler ab (was jeder Befehl tut, der wirklich etwas tut),
|
|
34
|
+
* ohne `strict` kommen die Befunde als Daten zurueck (was `doctor` braucht,
|
|
35
|
+
* denn `doctor` soll den Fehler ja BERICHTEN statt an ihm zu sterben).
|
|
36
|
+
*/
|
|
37
|
+
export declare function loadWorkspace(options: {
|
|
38
|
+
cwd: string;
|
|
39
|
+
env: Readonly<Record<string, string | undefined>>;
|
|
40
|
+
workspaceIdOverride?: string | undefined;
|
|
41
|
+
strict: boolean;
|
|
42
|
+
}): WorkspaceView;
|
|
43
|
+
/** Konfigurationsbefunde als Textzeilen — Warnungen wie Fehler, nie stumm. */
|
|
44
|
+
export declare function describeConfigIssues(issues: readonly ConfigIssue[]): string[];
|
|
45
|
+
export interface StorageWiring {
|
|
46
|
+
readonly qdrantConfig?: QdrantStorageConfig;
|
|
47
|
+
readonly backend: "lancedb" | "qdrant";
|
|
48
|
+
readonly storeUrl: string;
|
|
49
|
+
readonly storagePath?: string;
|
|
50
|
+
readonly collectionPrefix: string;
|
|
51
|
+
readonly storage: {
|
|
52
|
+
vectorStore: VectorStore;
|
|
53
|
+
metadataStore: MetadataStore;
|
|
54
|
+
graphStore: GraphStore;
|
|
55
|
+
close?: () => Promise<void>;
|
|
56
|
+
};
|
|
57
|
+
readonly vectorStore: VectorStore;
|
|
58
|
+
readonly codeCollection: string;
|
|
59
|
+
/** Woher die benutzte Adresse kommt — `doctor` zeigt das dem Nutzer. */
|
|
60
|
+
readonly decision: ReturnType<typeof decideVectorStore>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Build the selected storage adapter from the resolved configuration.
|
|
64
|
+
* Local LanceDB is lazy; the service ownership policy below applies to Qdrant.
|
|
65
|
+
*
|
|
66
|
+
* WP-222: das ist der Engpass, durch den JEDER Befehl geht, der einen
|
|
67
|
+
* Vektorspeicher anfasst — und deshalb die Stelle, an der die Regel aus
|
|
68
|
+
* `vector-store-policy.ts` durchgesetzt wird. Sie wird VOR dem Aufloesen
|
|
69
|
+
* gefragt und danach noch einmal gegen das Ergebnis geprueft: die
|
|
70
|
+
* Entscheidung bestimmt die Adresse, statt eine Adapter-Vorgabe hinterher zu
|
|
71
|
+
* segnen. Vorher fiel `mode: "managed"` ohne `url` im Adapter auf den
|
|
72
|
+
* Standardport einer fremden Instanz zurueck, und `doctor` meldete diese
|
|
73
|
+
* Instanz als in Ordnung.
|
|
74
|
+
*/
|
|
75
|
+
export declare function wireStorage(view: WorkspaceView, env: Readonly<Record<string, string | undefined>>): StorageWiring;
|
|
76
|
+
/** Old Qdrant records retain their endpoint identity; embedded stores never adopt them. */
|
|
77
|
+
export declare function matchesStoredBackend(state: IndexStateV1, wiring: Pick<StorageWiring, "backend" | "storeUrl">): boolean;
|
|
78
|
+
export declare function storageIndexScope(wiring: Pick<StorageWiring, "backend" | "storeUrl">): Pick<IndexStateScope, "storageBackend" | "storeUrl">;
|
|
79
|
+
/** Baut den Ollama-Embedder aus der aufgeloesten Konfiguration. */
|
|
80
|
+
export declare function wireEmbedder(view: WorkspaceView): EmbeddingProvider;
|
|
81
|
+
/**
|
|
82
|
+
* Baut den Abrufkern.
|
|
83
|
+
*
|
|
84
|
+
* Ein Ziel je Embedding-Profil (spec.md §13.4). Diese Fassung kennt genau ein
|
|
85
|
+
* Profil — das der Konfiguration. Mehrere Profile in einem Workspace sind im
|
|
86
|
+
* Abrufkern vorgesehen, hier aber noch nicht konfigurierbar; das steht so in
|
|
87
|
+
* der README unter „Bekannte Grenzen".
|
|
88
|
+
*/
|
|
89
|
+
export declare function wireSearchEngine(input: {
|
|
90
|
+
view: WorkspaceView;
|
|
91
|
+
vectorStore: VectorStore;
|
|
92
|
+
collection: string;
|
|
93
|
+
embedder: EmbeddingProvider;
|
|
94
|
+
indexContexts?: readonly {
|
|
95
|
+
repoId: string;
|
|
96
|
+
refId: string;
|
|
97
|
+
generationId: string;
|
|
98
|
+
corpusRevisionFingerprint?: string;
|
|
99
|
+
outcome: "running" | "completed" | "cancelled" | "failed";
|
|
100
|
+
}[];
|
|
101
|
+
graphEnrichment?: SearchGraphEnrichmentPort;
|
|
102
|
+
}): HybridSearchEngine;
|
|
103
|
+
/** Die Botschaft eines unbekannten Wurfs, ohne je `[object Object]` zu zeigen. */
|
|
104
|
+
export declare function errorMessage(error: unknown): string;
|
|
105
|
+
//# sourceMappingURL=workspace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/cli/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,yBAAyB,EAC/B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAOL,KAAK,mBAAmB,EACzB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAA4B,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEvF,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,gEAAgE;IAChE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAClD,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,MAAM,EAAE,OAAO,CAAC;CACjB,GAAG,aAAa,CAuBhB;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,EAAE,CAI7E;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,QAAQ,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE;QAChB,WAAW,EAAE,WAAW,CAAC;QACzB,aAAa,EAAE,aAAa,CAAC;QAC7B,UAAU,EAAE,UAAU,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;CACzD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,aAAa,EACnB,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAChD,aAAa,CA0Cf;AA6CD,2FAA2F;AAC3F,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,UAAU,CAAC,GAClD,OAAO,CAKT;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,UAAU,CAAC,GAClD,IAAI,CAAC,eAAe,EAAE,gBAAgB,GAAG,UAAU,CAAC,CAEtD;AAED,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,iBAAiB,CAenE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,aAAa,CAAC,EAAE,SAAS;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,OAAO,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;KAC3D,EAAE,CAAC;IACJ,eAAe,CAAC,EAAE,yBAAyB,CAAC;CAC7C,GAAG,kBAAkB,CAqBrB;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQnD"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Die Verdrahtung, die fast jeder Befehl braucht: von der Konfiguration im
|
|
3
|
+
* Projekt zu den fertigen Adaptern.
|
|
4
|
+
*
|
|
5
|
+
* Diese Datei ist bewusst die EINZIGE Stelle, an der die Oberflaeche
|
|
6
|
+
* Adapterklassen anfasst. Jeder Befehl bekommt danach nur noch Ports zu
|
|
7
|
+
* sehen. Das ist keine Kosmetik: es ist der Grund, warum sich `query` gegen
|
|
8
|
+
* den In-Memory-Speicher des testkits genauso testen laesst wie gegen ein
|
|
9
|
+
* echtes Qdrant.
|
|
10
|
+
*/
|
|
11
|
+
import { realpathSync } from "node:fs";
|
|
12
|
+
import path from "node:path";
|
|
13
|
+
import { pathToFileURL } from "node:url";
|
|
14
|
+
import { assertConfigValid, deriveEmbeddingProfile, loadConfig, } from "@untangle-code/config";
|
|
15
|
+
import { buildEmbeddingProfileId, compareCodepoints, embeddingProfileShortId, } from "@untangle-code/domain";
|
|
16
|
+
import { OllamaEmbeddingProvider } from "@untangle-code/embeddings-ollama";
|
|
17
|
+
import { createHybridSearchEngine, } from "@untangle-code/search";
|
|
18
|
+
import { createLanceDbStorage } from "@untangle-code/storage-lancedb";
|
|
19
|
+
import { FetchQdrantTransport, codeCollectionName, createQdrantStorage, resolveQdrantStorageConfig, textToBm25SparseVector, QDRANT_STORAGE_DEFAULTS, } from "@untangle-code/storage-qdrant";
|
|
20
|
+
import { OperationalError } from "./exit.js";
|
|
21
|
+
import { systemClock, systemRandom } from "./system.js";
|
|
22
|
+
import { assertVectorStoreAllowed, decideVectorStore } from "./vector-store-policy.js";
|
|
23
|
+
/**
|
|
24
|
+
* Laedt die Konfiguration und leitet Identitaeten ab.
|
|
25
|
+
*
|
|
26
|
+
* `strict` entscheidet ueber spec.md §4.8: mit `strict` bricht ein
|
|
27
|
+
* Konfigurationsfehler ab (was jeder Befehl tut, der wirklich etwas tut),
|
|
28
|
+
* ohne `strict` kommen die Befunde als Daten zurueck (was `doctor` braucht,
|
|
29
|
+
* denn `doctor` soll den Fehler ja BERICHTEN statt an ihm zu sterben).
|
|
30
|
+
*/
|
|
31
|
+
export function loadWorkspace(options) {
|
|
32
|
+
const load = loadConfig({
|
|
33
|
+
cwd: options.cwd,
|
|
34
|
+
env: options.env,
|
|
35
|
+
});
|
|
36
|
+
if (options.strict)
|
|
37
|
+
assertConfigValid(load.errors);
|
|
38
|
+
const profile = deriveEmbeddingProfile(load.effectiveConfig);
|
|
39
|
+
const profileId = buildEmbeddingProfileId(profile);
|
|
40
|
+
const repoIds = (load.effectiveConfig.repositories ?? [])
|
|
41
|
+
.map((repo) => repo.id)
|
|
42
|
+
.sort(compareCodepoints);
|
|
43
|
+
return {
|
|
44
|
+
root: load.sources.projectRoot ?? load.sources.configBaseDir,
|
|
45
|
+
config: load.effectiveConfig,
|
|
46
|
+
load,
|
|
47
|
+
workspaceId: options.workspaceIdOverride ?? load.workspaceId,
|
|
48
|
+
profile,
|
|
49
|
+
profileId,
|
|
50
|
+
profileShortId: embeddingProfileShortId(profileId),
|
|
51
|
+
repoIds,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/** Konfigurationsbefunde als Textzeilen — Warnungen wie Fehler, nie stumm. */
|
|
55
|
+
export function describeConfigIssues(issues) {
|
|
56
|
+
return issues
|
|
57
|
+
.map((issue) => `${issue.path || "(root)"}: ${issue.message} [${issue.code}]`)
|
|
58
|
+
.sort(compareCodepoints);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Build the selected storage adapter from the resolved configuration.
|
|
62
|
+
* Local LanceDB is lazy; the service ownership policy below applies to Qdrant.
|
|
63
|
+
*
|
|
64
|
+
* WP-222: das ist der Engpass, durch den JEDER Befehl geht, der einen
|
|
65
|
+
* Vektorspeicher anfasst — und deshalb die Stelle, an der die Regel aus
|
|
66
|
+
* `vector-store-policy.ts` durchgesetzt wird. Sie wird VOR dem Aufloesen
|
|
67
|
+
* gefragt und danach noch einmal gegen das Ergebnis geprueft: die
|
|
68
|
+
* Entscheidung bestimmt die Adresse, statt eine Adapter-Vorgabe hinterher zu
|
|
69
|
+
* segnen. Vorher fiel `mode: "managed"` ohne `url` im Adapter auf den
|
|
70
|
+
* Standardport einer fremden Instanz zurueck, und `doctor` meldete diese
|
|
71
|
+
* Instanz als in Ordnung.
|
|
72
|
+
*/
|
|
73
|
+
export function wireStorage(view, env) {
|
|
74
|
+
if (view.config.storage.backend === "lancedb")
|
|
75
|
+
return wireLanceDbStorage(view);
|
|
76
|
+
if (view.config.storage.backend !== "qdrant") {
|
|
77
|
+
throw new OperationalError("Invalid storage backend.", "Set storage.backend to lancedb or qdrant.");
|
|
78
|
+
}
|
|
79
|
+
const decision = decideVectorStore({ qdrant: view.config.qdrant, env });
|
|
80
|
+
if (!decision.allowed) {
|
|
81
|
+
throw new OperationalError(decision.reason, decision.nextStep ?? "See `untangle init --help`.");
|
|
82
|
+
}
|
|
83
|
+
let qdrantConfig;
|
|
84
|
+
try {
|
|
85
|
+
qdrantConfig = resolveQdrantStorageConfig({ ...view.config.qdrant, url: decision.url }, env);
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
throw new OperationalError(`Cannot resolve Qdrant configuration: ${errorMessage(error)}`, 'Check your configuration\'s `qdrant` section; mode "external" requires `url`.', { cause: error });
|
|
89
|
+
}
|
|
90
|
+
assertVectorStoreAllowed(decision, qdrantConfig.url);
|
|
91
|
+
const transport = new FetchQdrantTransport({
|
|
92
|
+
url: qdrantConfig.url,
|
|
93
|
+
...(qdrantConfig.apiKey === undefined ? {} : { apiKey: qdrantConfig.apiKey }),
|
|
94
|
+
requestTimeoutMs: qdrantConfig.requestTimeoutMs,
|
|
95
|
+
});
|
|
96
|
+
const storage = createQdrantStorage({ config: qdrantConfig, clock: systemClock, transport });
|
|
97
|
+
return {
|
|
98
|
+
backend: "qdrant",
|
|
99
|
+
storeUrl: qdrantConfig.url,
|
|
100
|
+
collectionPrefix: qdrantConfig.collectionPrefix,
|
|
101
|
+
qdrantConfig,
|
|
102
|
+
storage,
|
|
103
|
+
vectorStore: storage.vectorStore,
|
|
104
|
+
codeCollection: codeCollectionName(qdrantConfig.collectionPrefix, view.profileShortId),
|
|
105
|
+
decision,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/** Local storage is lazy: wiring and missing-index reads create no directories. */
|
|
109
|
+
function wireLanceDbStorage(view) {
|
|
110
|
+
const storagePath = canonicalLocalPath(path.resolve(view.root, view.config.storage.path ?? ".untangle/index/lancedb"));
|
|
111
|
+
const storeUrl = pathToFileURL(storagePath).href;
|
|
112
|
+
const config = QDRANT_STORAGE_DEFAULTS;
|
|
113
|
+
const storage = createLanceDbStorage({
|
|
114
|
+
path: storagePath,
|
|
115
|
+
clock: systemClock,
|
|
116
|
+
collectionPrefix: config.collectionPrefix,
|
|
117
|
+
upsertMaxPoints: config.upsertMaxPoints,
|
|
118
|
+
upsertBudgetBytes: config.upsertBudgetBytes,
|
|
119
|
+
graphPartBudgetBytes: config.graphPartBudgetBytes,
|
|
120
|
+
});
|
|
121
|
+
return {
|
|
122
|
+
backend: "lancedb",
|
|
123
|
+
storeUrl,
|
|
124
|
+
storagePath,
|
|
125
|
+
collectionPrefix: config.collectionPrefix,
|
|
126
|
+
storage,
|
|
127
|
+
vectorStore: storage.vectorStore,
|
|
128
|
+
codeCollection: codeCollectionName(config.collectionPrefix, view.profileShortId),
|
|
129
|
+
decision: {
|
|
130
|
+
url: storeUrl,
|
|
131
|
+
origin: "embedded",
|
|
132
|
+
allowed: true,
|
|
133
|
+
reason: "project-local LanceDB; no database server required",
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function canonicalLocalPath(selected) {
|
|
138
|
+
try {
|
|
139
|
+
return realpathSync(selected);
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
if (error.code !== "ENOENT")
|
|
143
|
+
throw error;
|
|
144
|
+
const parent = path.dirname(selected);
|
|
145
|
+
if (parent === selected)
|
|
146
|
+
throw error;
|
|
147
|
+
return path.join(canonicalLocalPath(parent), path.basename(selected));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/** Old Qdrant records retain their endpoint identity; embedded stores never adopt them. */
|
|
151
|
+
export function matchesStoredBackend(state, wiring) {
|
|
152
|
+
return ((state.storageBackend ?? "qdrant") === wiring.backend &&
|
|
153
|
+
(state.storeUrl ?? state.qdrantUrl) === wiring.storeUrl);
|
|
154
|
+
}
|
|
155
|
+
export function storageIndexScope(wiring) {
|
|
156
|
+
return { storageBackend: wiring.backend, storeUrl: wiring.storeUrl };
|
|
157
|
+
}
|
|
158
|
+
/** Baut den Ollama-Embedder aus der aufgeloesten Konfiguration. */
|
|
159
|
+
export function wireEmbedder(view) {
|
|
160
|
+
const embeddings = view.config.embeddings;
|
|
161
|
+
return new OllamaEmbeddingProvider({
|
|
162
|
+
profile: view.profile,
|
|
163
|
+
mode: embeddings.mode,
|
|
164
|
+
url: embeddings.url,
|
|
165
|
+
apiKeyEnv: embeddings.apiKeyEnv,
|
|
166
|
+
contextLength: embeddings.contextLength,
|
|
167
|
+
batchSize: embeddings.batchSize,
|
|
168
|
+
maxConnections: embeddings.maxConnections,
|
|
169
|
+
requestTimeoutMs: embeddings.requestTimeoutMs,
|
|
170
|
+
}, { clock: systemClock, random: systemRandom });
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Baut den Abrufkern.
|
|
174
|
+
*
|
|
175
|
+
* Ein Ziel je Embedding-Profil (spec.md §13.4). Diese Fassung kennt genau ein
|
|
176
|
+
* Profil — das der Konfiguration. Mehrere Profile in einem Workspace sind im
|
|
177
|
+
* Abrufkern vorgesehen, hier aber noch nicht konfigurierbar; das steht so in
|
|
178
|
+
* der README unter „Bekannte Grenzen".
|
|
179
|
+
*/
|
|
180
|
+
export function wireSearchEngine(input) {
|
|
181
|
+
const target = {
|
|
182
|
+
embeddingProfileId: input.view.profileId,
|
|
183
|
+
collection: input.collection,
|
|
184
|
+
repoIds: [...input.view.repoIds],
|
|
185
|
+
embedder: input.embedder,
|
|
186
|
+
...(input.indexContexts === undefined ? {} : { indexContexts: input.indexContexts }),
|
|
187
|
+
};
|
|
188
|
+
return createHybridSearchEngine({
|
|
189
|
+
vectorStore: input.vectorStore,
|
|
190
|
+
targets: [target],
|
|
191
|
+
defaults: {
|
|
192
|
+
workspaceId: input.view.workspaceId,
|
|
193
|
+
limit: input.view.config.search.defaultLimit,
|
|
194
|
+
candidateLimit: input.view.config.search.defaultCandidateLimit,
|
|
195
|
+
},
|
|
196
|
+
searchConfig: input.view.config.search,
|
|
197
|
+
clock: systemClock,
|
|
198
|
+
sparseVectorizer: textToBm25SparseVector,
|
|
199
|
+
...(input.graphEnrichment === undefined ? {} : { graphEnrichment: input.graphEnrichment }),
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
/** Die Botschaft eines unbekannten Wurfs, ohne je `[object Object]` zu zeigen. */
|
|
203
|
+
export function errorMessage(error) {
|
|
204
|
+
if (error instanceof Error)
|
|
205
|
+
return error.message;
|
|
206
|
+
if (typeof error === "string")
|
|
207
|
+
return error;
|
|
208
|
+
try {
|
|
209
|
+
return JSON.stringify(error);
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
return String(error);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/cli/workspace.ts"],"names":[],"mappings":"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"}
|