@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,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The terminal report of `untangle init`.
|
|
3
|
+
*
|
|
4
|
+
* Separate from the file it writes, and deliberately shorter: the file is the
|
|
5
|
+
* record, the report is the answer to "what just happened and what do I do
|
|
6
|
+
* now". It ends in exactly one next step — never a list — because a first
|
|
7
|
+
* command that hands back five errands is a first command nobody finishes.
|
|
8
|
+
*
|
|
9
|
+
* Wall-clock time is allowed in a report (it is not result data), and is
|
|
10
|
+
* still not used here: there is nothing about `init` whose duration a user
|
|
11
|
+
* needs to be told.
|
|
12
|
+
*/
|
|
13
|
+
import { formatCount, formatShare, productContextWarnings } from "./render.js";
|
|
14
|
+
/** Human report. One line per array element, no trailing newline. */
|
|
15
|
+
export function formatTextReport(result) {
|
|
16
|
+
const { findings } = result;
|
|
17
|
+
const lines = [];
|
|
18
|
+
lines.push(`untangle init — ${findings.root}`);
|
|
19
|
+
lines.push("");
|
|
20
|
+
const languages = findings.languages;
|
|
21
|
+
if (languages.entries.length === 0) {
|
|
22
|
+
lines.push("Languages no analyzable files found");
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
const top = languages.entries
|
|
26
|
+
.slice(0, 5)
|
|
27
|
+
.map((entry) => `${entry.languageId} ${formatShare(entry.lineShare)}`)
|
|
28
|
+
.join(", ");
|
|
29
|
+
lines.push(`Languages ${top}`);
|
|
30
|
+
lines.push(` ${formatCount(languages.totalFiles)} files, ${formatCount(languages.totalLines)} lines; ${formatShare(languages.parsedLineShare)} with a parser`);
|
|
31
|
+
const withoutParser = languages.entries.filter((entry) => !entry.hasParserAdapter && entry.lineShare >= 0.05);
|
|
32
|
+
if (withoutParser.length > 0) {
|
|
33
|
+
lines.push(` no parser (text search only): ${withoutParser.map((entry) => entry.languageId).join(", ")}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const topology = findings.topology;
|
|
37
|
+
lines.push(`Topology ${formatCount(topology.packages.length)} packages, ${formatCount(topology.services.length)} Container-Dienste${topology.isMonorepo ? "; monorepo" : "; single project"}`);
|
|
38
|
+
if (topology.workspaceGlobs.length > 0) {
|
|
39
|
+
lines.push(` Globs: ${topology.workspaceGlobs.join(", ")}`);
|
|
40
|
+
}
|
|
41
|
+
if (topology.packages.length > 0) {
|
|
42
|
+
lines.push(` ${topology.packages.map((pkg) => pkg.name).join(", ")}`);
|
|
43
|
+
}
|
|
44
|
+
if (topology.services.length > 0) {
|
|
45
|
+
lines.push(` Services: ${topology.services.map((service) => service.name).join(", ")}`);
|
|
46
|
+
}
|
|
47
|
+
for (const uncovered of topology.managers.uncoveredByTopology) {
|
|
48
|
+
lines.push(` GAP: ${uncovered} declares packages that were not found`);
|
|
49
|
+
}
|
|
50
|
+
const productContext = findings.productContext;
|
|
51
|
+
if (productContext !== undefined) {
|
|
52
|
+
const readable = productContext.sources.filter((source) => source.selected && source.status === "readable").length;
|
|
53
|
+
lines.push(`Produktkontext ${formatCount(readable)} selected sources readable; ${productContext.status}; ${formatCount(productContext.reviewDraft.questions.length)} open questions in the review draft`);
|
|
54
|
+
for (const warning of productContextWarnings(findings)) {
|
|
55
|
+
lines.push(`WARNING ${warning}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const ollama = findings.ollama;
|
|
59
|
+
if (findings.featureAlignment !== undefined) {
|
|
60
|
+
const alignment = findings.featureAlignment;
|
|
61
|
+
lines.push(`Feature evidence ${alignment.status}; ${formatCount(alignment.features.length)} declared features; semantic conformance ${alignment.semanticConformance}`);
|
|
62
|
+
for (const feature of alignment.features) {
|
|
63
|
+
lines.push(` ${feature.id.replace(/[\r\n]/gu, " ")}: ${feature.status}; ownership ${feature.ownership.map((owner) => `${owner.id.replace(/[\r\n]/gu, " ")}:${owner.status}`).join(", ") || "none"}; test evidence ${feature.testEvidence.status}`);
|
|
64
|
+
for (const hint of feature.agentHints) {
|
|
65
|
+
lines.push(`HINT ${hint.code}: ${hint.message.replace(/[\r\n]/gu, " ")}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
for (const limitation of alignment.limitations) {
|
|
69
|
+
lines.push(`LIMIT ${limitation.replace(/[\r\n]/gu, " ")}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
lines.push(ollama.outcome === "reachable"
|
|
73
|
+
? `Embeddings ${ollama.url} erreichbar${ollama.chosenModel === undefined ? "; no embedding model" : ` — ${ollama.chosenModel.name} (${ollama.chosenModel.dimensions === undefined ? "?" : formatCount(ollama.chosenModel.dimensions)} dimensions)`}`
|
|
74
|
+
: `Embeddings ${ollama.url} unreachable; this is not an error`);
|
|
75
|
+
// WP-228: Die Zeile darueber sagt nur, dass /api/tags geantwortet hat.
|
|
76
|
+
// Diese hier sagt, ob der Dienst das kann, wofuer er gebraucht wird.
|
|
77
|
+
lines.push(` ${describeEmbedProbe(ollama)}`);
|
|
78
|
+
if (findings.storage?.backend === "lancedb") {
|
|
79
|
+
lines.push(`Vector store LanceDB at ${findings.storage.directory}; directory ${findings.storage.directoryStatus}`);
|
|
80
|
+
lines.push(" Local storage only; no database opened, Docker or Qdrant probed.");
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
const qdrant = findings.qdrant;
|
|
84
|
+
lines.push(qdrant.outcome === "reachable"
|
|
85
|
+
? `Vector store ${qdrant.url ?? "?"} reachable`
|
|
86
|
+
: `Vector store unreachable (${qdrant.probedUrls.join(", ")}); this is not an error`);
|
|
87
|
+
for (const skipped of qdrant.skippedUrls) {
|
|
88
|
+
lines.push(` not checked: ${skipped.url}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const ignore = findings.ignore;
|
|
92
|
+
lines.push(ignore.gitignorePresent
|
|
93
|
+
? `Ignore rules .gitignore with ${formatCount(ignore.gitignoreRuleCount)} rules + ${formatCount(ignore.defaultExcludes.length)} defaults${ignore.additionalExcludes.length > 0 ? `, ${formatCount(ignore.additionalExcludes.length)} imported (${ignore.additionalExcludes.join(", ")})` : ""}`
|
|
94
|
+
: `Ignore rules no .gitignore; ${formatCount(ignore.defaultExcludes.length)} defaults`);
|
|
95
|
+
if (findings.skipped.entries.length > 0) {
|
|
96
|
+
lines.push(`Skipped ${formatCount(findings.skipped.entries.length)} entries with reasons (--format json shows all)`);
|
|
97
|
+
}
|
|
98
|
+
lines.push("");
|
|
99
|
+
lines.push(...formatOutcome(result));
|
|
100
|
+
for (const warning of result.configWarnings) {
|
|
101
|
+
lines.push(`WARNING ${warning}`);
|
|
102
|
+
}
|
|
103
|
+
for (const error of result.configErrors) {
|
|
104
|
+
lines.push(`ERROR ${error}`);
|
|
105
|
+
}
|
|
106
|
+
lines.push("");
|
|
107
|
+
lines.push(result.nextStep);
|
|
108
|
+
return lines;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Der Satz zum Probe-Embedding (WP-228).
|
|
112
|
+
*
|
|
113
|
+
* Er nennt IMMER, was geprueft wurde — auch im Erfolgsfall. Eine Zeile, die
|
|
114
|
+
* nur bei Problemen erscheint, liest sich in ihrer Abwesenheit wie „geprueft
|
|
115
|
+
* und in Ordnung", und genau das war der Befund.
|
|
116
|
+
*/
|
|
117
|
+
export function describeEmbedProbe(ollama) {
|
|
118
|
+
const probe = ollama.embedProbe;
|
|
119
|
+
switch (probe.outcome) {
|
|
120
|
+
case "ok":
|
|
121
|
+
return `/api/embed checked: responds${probe.dimensions === undefined ? "" : ` (${formatCount(probe.dimensions)} dimensions)`}; the service is usable`;
|
|
122
|
+
case "timeout":
|
|
123
|
+
return `/api/embed NO RESPONSE within ${formatCount(probe.timeoutMs)} ms; reachable does not mean usable here; use \`--embedder=offline\``;
|
|
124
|
+
case "failed":
|
|
125
|
+
return `/api/embed failed (${probe.detail ?? "no details"}); use \`--embedder=offline\``;
|
|
126
|
+
default:
|
|
127
|
+
return `/api/embed not checked (${probe.detail ?? "no details"})`;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function formatOutcome(result) {
|
|
131
|
+
switch (result.outcome) {
|
|
132
|
+
case "created":
|
|
133
|
+
return [`Written ${result.configPath}`];
|
|
134
|
+
case "overwritten":
|
|
135
|
+
return [`Overwritten ${result.configPath} (--force)`];
|
|
136
|
+
case "unchanged":
|
|
137
|
+
return [`Unchanged ${result.configPath}; a second identical run changes nothing.`];
|
|
138
|
+
case "would-create":
|
|
139
|
+
return [`--dry-run ${result.configPath} would be created (nothing written).`];
|
|
140
|
+
case "would-be-unchanged":
|
|
141
|
+
return [`--dry-run ${result.configPath} is already current (nothing written).`];
|
|
142
|
+
case "would-overwrite":
|
|
143
|
+
case "differs":
|
|
144
|
+
return [
|
|
145
|
+
result.outcome === "differs"
|
|
146
|
+
? `Difference ${result.configPath} differs. Nothing written; use --force to overwrite.`
|
|
147
|
+
: `--dry-run ${result.configPath} would change (nothing written).`,
|
|
148
|
+
...formatChanges(result),
|
|
149
|
+
];
|
|
150
|
+
default:
|
|
151
|
+
return [];
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/** At most 40 changed lines; more than that is a rewrite, not a diff. */
|
|
155
|
+
function formatChanges(result) {
|
|
156
|
+
const shown = result.changes.slice(0, 40);
|
|
157
|
+
const lines = shown.map((change) => ` ${change.kind === "added" ? "+" : "-"} ${change.line}`);
|
|
158
|
+
if (result.changes.length > shown.length) {
|
|
159
|
+
lines.push(` … ${formatCount(result.changes.length - shown.length)} additional lines`);
|
|
160
|
+
}
|
|
161
|
+
return lines;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/commands/init/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `untangle init` — the command a user runs first.
|
|
3
|
+
*
|
|
4
|
+
* It reads a project, decides, writes one commented file, and names one next
|
|
5
|
+
* step. It asks nothing. Everything it cannot determine becomes a documented
|
|
6
|
+
* finding, never a prompt and never an abort: an absent embedding provider,
|
|
7
|
+
* an absent vector store, an unreadable manifest are all things a
|
|
8
|
+
* configuration can be written AROUND (WP-125).
|
|
9
|
+
*
|
|
10
|
+
* WRITE SAFETY: the file goes to a temporary sibling and is renamed into
|
|
11
|
+
* place, so an interrupted run can never leave half a configuration behind.
|
|
12
|
+
* An existing file is replaced only with `--force`; the run that declines to
|
|
13
|
+
* replace it says exactly which lines would have differed.
|
|
14
|
+
*
|
|
15
|
+
* This module is free of argv and of output formatting — `command.ts` binds
|
|
16
|
+
* it to the CLI shell. That split is what lets the whole command be tested
|
|
17
|
+
* against an in-memory file system and a probe that answers nothing.
|
|
18
|
+
*/
|
|
19
|
+
import type { FileSystemPort, ParserRegistry } from "@untangle-code/domain";
|
|
20
|
+
import type { HttpProbePort, InitLimitsV1, InitOutcome, InitResultV1 } from "./types.js";
|
|
21
|
+
/** The file `init` writes. */
|
|
22
|
+
export declare const CONFIG_FILE_NAME = "untangle.toml";
|
|
23
|
+
/** Suffix of the temporary sibling used for the atomic write. */
|
|
24
|
+
export declare const TEMP_SUFFIX = ".untangle-init-tmp";
|
|
25
|
+
/** Ports and overrides. Every one of them has a real default; tests replace them. */
|
|
26
|
+
export interface InitDepsV1 {
|
|
27
|
+
fs?: FileSystemPort;
|
|
28
|
+
http?: HttpProbePort;
|
|
29
|
+
parserRegistry?: ParserRegistry;
|
|
30
|
+
env?: Readonly<Record<string, string | undefined>>;
|
|
31
|
+
limits?: Partial<InitLimitsV1>;
|
|
32
|
+
signal?: AbortSignal;
|
|
33
|
+
}
|
|
34
|
+
export interface InitOptionsV1 {
|
|
35
|
+
/** Absolute directory to initialise. */
|
|
36
|
+
root: string;
|
|
37
|
+
force: boolean;
|
|
38
|
+
dryRun: boolean;
|
|
39
|
+
/** Skip every network probe; the infrastructure counts as absent. */
|
|
40
|
+
offline: boolean;
|
|
41
|
+
/** Explicit selection; otherwise environment and existing configuration apply. */
|
|
42
|
+
storageBackend?: "lancedb" | "qdrant";
|
|
43
|
+
preferredModel?: string;
|
|
44
|
+
/** Product intent sources, relative to the chosen project root. */
|
|
45
|
+
visionPath?: string;
|
|
46
|
+
specPath?: string;
|
|
47
|
+
featureManifestPath?: string;
|
|
48
|
+
}
|
|
49
|
+
/** The command proper. Returns a result; never writes to a terminal. */
|
|
50
|
+
export declare function runInit(options: InitOptionsV1, deps?: InitDepsV1): Promise<InitResultV1>;
|
|
51
|
+
/**
|
|
52
|
+
* The whole decision table of idempotency, in one place.
|
|
53
|
+
*
|
|
54
|
+
* `--dry-run` never writes and never fails: it reports. Without `--force` an
|
|
55
|
+
* existing, differing file is left alone — the second run "meldet, was sich
|
|
56
|
+
* geaendert hat" instead of quietly rewriting a file the user may well have
|
|
57
|
+
* edited on purpose.
|
|
58
|
+
*/
|
|
59
|
+
export declare function decideOutcome(existing: string | null, rendered: string, options: Pick<InitOptionsV1, "force" | "dryRun">): InitOutcome;
|
|
60
|
+
/**
|
|
61
|
+
* Which vector-store URLs get probed.
|
|
62
|
+
*
|
|
63
|
+
* WP-222: this no longer decides anything — it asks
|
|
64
|
+
* `cli/vector-store-policy.ts`, the one place that knows which store Untangle
|
|
65
|
+
* may use, and which `untangle doctor` obeys through `wireStorage`. An
|
|
66
|
+
* explicitly configured `UNTANGLE_QDRANT_URL` comes first ("this one is
|
|
67
|
+
* mine"), the managed default follows, and upstream's default port is
|
|
68
|
+
* skipped WITH ITS REASON rather than silently absent (E4).
|
|
69
|
+
*/
|
|
70
|
+
export declare function qdrantProbeList(env: Readonly<Record<string, string | undefined>>): string[];
|
|
71
|
+
//# sourceMappingURL=run.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/init/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAC;AAoB/F,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EAGb,MAAM,YAAY,CAAC;AAEpB,8BAA8B;AAC9B,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAChD,iEAAiE;AACjE,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAEhD,qFAAqF;AACrF,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,kFAAkF;IAClF,cAAc,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wEAAwE;AACxE,wBAAsB,OAAO,CAC3B,OAAO,EAAE,aAAa,EACtB,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,YAAY,CAAC,CA6DvB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,QAAQ,CAAC,GAC/C,WAAW,CAWb;AA0GD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,EAAE,CAE3F"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `untangle init` — the command a user runs first.
|
|
3
|
+
*
|
|
4
|
+
* It reads a project, decides, writes one commented file, and names one next
|
|
5
|
+
* step. It asks nothing. Everything it cannot determine becomes a documented
|
|
6
|
+
* finding, never a prompt and never an abort: an absent embedding provider,
|
|
7
|
+
* an absent vector store, an unreadable manifest are all things a
|
|
8
|
+
* configuration can be written AROUND (WP-125).
|
|
9
|
+
*
|
|
10
|
+
* WRITE SAFETY: the file goes to a temporary sibling and is renamed into
|
|
11
|
+
* place, so an interrupted run can never leave half a configuration behind.
|
|
12
|
+
* An existing file is replaced only with `--force`; the run that declines to
|
|
13
|
+
* replace it says exactly which lines would have differed.
|
|
14
|
+
*
|
|
15
|
+
* This module is free of argv and of output formatting — `command.ts` binds
|
|
16
|
+
* it to the CLI shell. That split is what lets the whole command be tested
|
|
17
|
+
* against an in-memory file system and a probe that answers nothing.
|
|
18
|
+
*/
|
|
19
|
+
import path from "node:path";
|
|
20
|
+
import { analyzeProductAlignment } from "@untangle-code/core";
|
|
21
|
+
import { summarizeSkipReasons } from "@untangle-code/domain";
|
|
22
|
+
import { createParserRegistry } from "@untangle-code/parser-registry";
|
|
23
|
+
import { NodeFileSystem } from "@untangle-code/scanner/node-fs";
|
|
24
|
+
import { OperationalError } from "../../cli/exit.js";
|
|
25
|
+
import { qdrantProbePlan } from "../../cli/vector-store-policy.js";
|
|
26
|
+
import { buildConfigDraft, deriveProjectId, nextStepFor } from "./config-draft.js";
|
|
27
|
+
import { diffLines, toLines } from "./diff.js";
|
|
28
|
+
import { nodeHttpProbe, offlineProbe } from "./http-probe.js";
|
|
29
|
+
import { detectIgnoreRules } from "./ignore-rules.js";
|
|
30
|
+
import { buildLanguageCensus } from "./languages.js";
|
|
31
|
+
import { assessProductContext } from "./product-context.js";
|
|
32
|
+
import { renderUntangleToml } from "./render.js";
|
|
33
|
+
import { DEFAULT_OLLAMA_URL, probeOllama, probeQdrant } from "./services.js";
|
|
34
|
+
import { inspectInitStorage } from "./storage.js";
|
|
35
|
+
import { detectTopology } from "./topology.js";
|
|
36
|
+
import { DEFAULT_INIT_LIMITS } from "./types.js";
|
|
37
|
+
/** The file `init` writes. */
|
|
38
|
+
export const CONFIG_FILE_NAME = "untangle.toml";
|
|
39
|
+
/** Suffix of the temporary sibling used for the atomic write. */
|
|
40
|
+
export const TEMP_SUFFIX = ".untangle-init-tmp";
|
|
41
|
+
/** The command proper. Returns a result; never writes to a terminal. */
|
|
42
|
+
export async function runInit(options, deps = {}) {
|
|
43
|
+
deps.signal?.throwIfAborted();
|
|
44
|
+
const fs = deps.fs ?? new NodeFileSystem();
|
|
45
|
+
const http = deps.http ?? (options.offline ? offlineProbe() : nodeHttpProbe());
|
|
46
|
+
const parserRegistry = deps.parserRegistry ?? createParserRegistry();
|
|
47
|
+
const env = deps.env ?? process.env;
|
|
48
|
+
const limits = { ...DEFAULT_INIT_LIMITS, ...deps.limits };
|
|
49
|
+
const root = await canonicalRoot(fs, options.root);
|
|
50
|
+
const storage = await inspectInitStorage(fs, root, options.storageBackend, env, deps.signal);
|
|
51
|
+
const findings = await collectFindings({
|
|
52
|
+
fs,
|
|
53
|
+
http,
|
|
54
|
+
parserRegistry,
|
|
55
|
+
env,
|
|
56
|
+
limits,
|
|
57
|
+
root,
|
|
58
|
+
storage,
|
|
59
|
+
...(options.preferredModel === undefined ? {} : { preferredModel: options.preferredModel }),
|
|
60
|
+
...(options.visionPath === undefined ? {} : { visionPath: options.visionPath }),
|
|
61
|
+
...(options.specPath === undefined ? {} : { specPath: options.specPath }),
|
|
62
|
+
...(options.featureManifestPath === undefined
|
|
63
|
+
? {}
|
|
64
|
+
: { featureManifestPath: options.featureManifestPath }),
|
|
65
|
+
...(deps.signal === undefined ? {} : { signal: deps.signal }),
|
|
66
|
+
});
|
|
67
|
+
deps.signal?.throwIfAborted();
|
|
68
|
+
const draft = buildConfigDraft(findings);
|
|
69
|
+
const nextStep = nextStepFor(findings);
|
|
70
|
+
const rendered = renderUntangleToml({ findings, draft, limits, nextStep });
|
|
71
|
+
const configPath = path.join(root, CONFIG_FILE_NAME);
|
|
72
|
+
const base = {
|
|
73
|
+
configPath,
|
|
74
|
+
findings,
|
|
75
|
+
rendered,
|
|
76
|
+
nextStep,
|
|
77
|
+
configWarnings: draft.warnings,
|
|
78
|
+
configErrors: draft.errors,
|
|
79
|
+
};
|
|
80
|
+
if (draft.errors.length > 0) {
|
|
81
|
+
// A configuration the rest of the product would reject is not written at
|
|
82
|
+
// all. Reporting it and stopping is the only honest outcome.
|
|
83
|
+
return { ...base, outcome: "differs", changes: [], exitCode: 1 };
|
|
84
|
+
}
|
|
85
|
+
const existing = await readOptionalText(fs, configPath);
|
|
86
|
+
deps.signal?.throwIfAborted();
|
|
87
|
+
const outcome = decideOutcome(existing, rendered, options);
|
|
88
|
+
const changes = existing === null || existing === rendered
|
|
89
|
+
? []
|
|
90
|
+
: diffLines(toLines(existing), toLines(rendered));
|
|
91
|
+
if (outcome === "created" || outcome === "overwritten") {
|
|
92
|
+
await writeAtomically(fs, configPath, rendered, deps.signal);
|
|
93
|
+
}
|
|
94
|
+
return { ...base, outcome, changes, exitCode: outcome === "differs" ? 1 : 0 };
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The whole decision table of idempotency, in one place.
|
|
98
|
+
*
|
|
99
|
+
* `--dry-run` never writes and never fails: it reports. Without `--force` an
|
|
100
|
+
* existing, differing file is left alone — the second run "meldet, was sich
|
|
101
|
+
* geaendert hat" instead of quietly rewriting a file the user may well have
|
|
102
|
+
* edited on purpose.
|
|
103
|
+
*/
|
|
104
|
+
export function decideOutcome(existing, rendered, options) {
|
|
105
|
+
if (existing === null) {
|
|
106
|
+
return options.dryRun ? "would-create" : "created";
|
|
107
|
+
}
|
|
108
|
+
if (existing === rendered) {
|
|
109
|
+
return options.dryRun ? "would-be-unchanged" : "unchanged";
|
|
110
|
+
}
|
|
111
|
+
if (options.dryRun) {
|
|
112
|
+
return "would-overwrite";
|
|
113
|
+
}
|
|
114
|
+
return options.force ? "overwritten" : "differs";
|
|
115
|
+
}
|
|
116
|
+
async function collectFindings(input) {
|
|
117
|
+
const { fs, http, parserRegistry, env, limits, root } = input;
|
|
118
|
+
const skipEntries = [];
|
|
119
|
+
const onSkipEntry = (entry) => {
|
|
120
|
+
skipEntries.push(entry);
|
|
121
|
+
};
|
|
122
|
+
// Ignore rules first: their result narrows the scan that follows.
|
|
123
|
+
const ignore = await detectIgnoreRules({ fs, repoRoot: root });
|
|
124
|
+
const files = [];
|
|
125
|
+
const languages = await buildLanguageCensus({
|
|
126
|
+
fs,
|
|
127
|
+
parserRegistry,
|
|
128
|
+
repoRoot: root,
|
|
129
|
+
limits,
|
|
130
|
+
additionalExcludes: ignore.additionalExcludes,
|
|
131
|
+
selfManagedPaths: [CONFIG_FILE_NAME, `${CONFIG_FILE_NAME}${TEMP_SUFFIX}`],
|
|
132
|
+
onSkipEntry,
|
|
133
|
+
onDiscoveredFile: (file) => files.push(file),
|
|
134
|
+
...(input.signal === undefined ? {} : { signal: input.signal }),
|
|
135
|
+
});
|
|
136
|
+
const topology = await detectTopology({ fs, repoRoot: root, limits, onSkipEntry });
|
|
137
|
+
const productContext = await assessProductContext({
|
|
138
|
+
fs,
|
|
139
|
+
root,
|
|
140
|
+
files,
|
|
141
|
+
inventoryTruncated: languages.truncated,
|
|
142
|
+
...(input.visionPath === undefined ? {} : { visionPath: input.visionPath }),
|
|
143
|
+
...(input.specPath === undefined ? {} : { specPath: input.specPath }),
|
|
144
|
+
...(input.signal === undefined ? {} : { signal: input.signal }),
|
|
145
|
+
});
|
|
146
|
+
const featureAlignment = await analyzeProductAlignment({
|
|
147
|
+
fs,
|
|
148
|
+
root,
|
|
149
|
+
files,
|
|
150
|
+
inventoryTruncated: languages.truncated,
|
|
151
|
+
inventoryExcluded: languages.excluded.reduce((sum, entry) => sum + entry.count, 0),
|
|
152
|
+
inventoryScope: {
|
|
153
|
+
additionalDefaultExcludes: ignore.additionalExcludes,
|
|
154
|
+
maxFileSizeBytes: limits.maxFileSizeBytes,
|
|
155
|
+
maxFilesScanned: limits.maxFilesScanned,
|
|
156
|
+
concurrency: limits.concurrency,
|
|
157
|
+
},
|
|
158
|
+
parserRegistry,
|
|
159
|
+
...(input.featureManifestPath === undefined ? {} : { manifestPath: input.featureManifestPath }),
|
|
160
|
+
...(input.signal === undefined ? {} : { signal: input.signal }),
|
|
161
|
+
});
|
|
162
|
+
const probeInput = {
|
|
163
|
+
http,
|
|
164
|
+
limits,
|
|
165
|
+
ollamaUrl: env["UNTANGLE_OLLAMA_URL"] ?? env["UNTANGLE_EMBEDDINGS_URL"] ?? DEFAULT_OLLAMA_URL,
|
|
166
|
+
qdrantUrls: qdrantProbeList({
|
|
167
|
+
...env,
|
|
168
|
+
...(input.storage.qdrantUrl === undefined
|
|
169
|
+
? {}
|
|
170
|
+
: { UNTANGLE_QDRANT_URL: input.storage.qdrantUrl }),
|
|
171
|
+
}),
|
|
172
|
+
...(input.preferredModel === undefined ? {} : { preferredModel: input.preferredModel }),
|
|
173
|
+
};
|
|
174
|
+
const ollama = await probeOllama(probeInput);
|
|
175
|
+
const qdrant = input.storage.backend === "qdrant"
|
|
176
|
+
? await probeQdrant(probeInput)
|
|
177
|
+
: { outcome: "not-probed", probedUrls: [], skippedUrls: [] };
|
|
178
|
+
return {
|
|
179
|
+
schemaVersion: 1,
|
|
180
|
+
root,
|
|
181
|
+
projectId: deriveProjectId(path.basename(root)),
|
|
182
|
+
languages,
|
|
183
|
+
topology,
|
|
184
|
+
productContext,
|
|
185
|
+
featureAlignment,
|
|
186
|
+
ignore,
|
|
187
|
+
ollama,
|
|
188
|
+
qdrant,
|
|
189
|
+
storage: input.storage,
|
|
190
|
+
skipped: {
|
|
191
|
+
schemaVersion: 1,
|
|
192
|
+
generationId: "untangle-init",
|
|
193
|
+
entries: skipEntries,
|
|
194
|
+
countsByReason: summarizeSkipReasons(skipEntries),
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Which vector-store URLs get probed.
|
|
200
|
+
*
|
|
201
|
+
* WP-222: this no longer decides anything — it asks
|
|
202
|
+
* `cli/vector-store-policy.ts`, the one place that knows which store Untangle
|
|
203
|
+
* may use, and which `untangle doctor` obeys through `wireStorage`. An
|
|
204
|
+
* explicitly configured `UNTANGLE_QDRANT_URL` comes first ("this one is
|
|
205
|
+
* mine"), the managed default follows, and upstream's default port is
|
|
206
|
+
* skipped WITH ITS REASON rather than silently absent (E4).
|
|
207
|
+
*/
|
|
208
|
+
export function qdrantProbeList(env) {
|
|
209
|
+
return qdrantProbePlan(env).probe;
|
|
210
|
+
}
|
|
211
|
+
async function canonicalRoot(fs, candidate) {
|
|
212
|
+
const stat = await fs.stat(candidate);
|
|
213
|
+
if (stat === null) {
|
|
214
|
+
throw new OperationalError(`Directory "${candidate}" does not exist.`, "Create it or select an existing directory with --root.");
|
|
215
|
+
}
|
|
216
|
+
if (stat.kind !== "directory") {
|
|
217
|
+
throw new OperationalError(`"${candidate}" is not a directory.`, "init requires a project's root directory.");
|
|
218
|
+
}
|
|
219
|
+
try {
|
|
220
|
+
return await fs.realPath(candidate);
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
return candidate;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
async function readOptionalText(fs, filePath) {
|
|
227
|
+
const stat = await fs.stat(filePath);
|
|
228
|
+
if (stat === null || stat.kind !== "file") {
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
231
|
+
return fs.readTextFile(filePath);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Temp file plus rename. `rename` is atomic within a directory on every
|
|
235
|
+
* platform Untangle supports, so a reader sees either the old file or the new
|
|
236
|
+
* one — never a truncated one.
|
|
237
|
+
*/
|
|
238
|
+
async function writeAtomically(fs, filePath, text, signal) {
|
|
239
|
+
const temporary = `${filePath}${TEMP_SUFFIX}`;
|
|
240
|
+
signal?.throwIfAborted();
|
|
241
|
+
const callOptions = signal === undefined ? undefined : { signal };
|
|
242
|
+
try {
|
|
243
|
+
await fs.writeFile(temporary, new TextEncoder().encode(text), callOptions);
|
|
244
|
+
signal?.throwIfAborted();
|
|
245
|
+
await fs.rename(temporary, filePath, callOptions);
|
|
246
|
+
}
|
|
247
|
+
catch (error) {
|
|
248
|
+
await fs.remove(temporary).catch(() => undefined);
|
|
249
|
+
signal?.throwIfAborted();
|
|
250
|
+
throw new OperationalError(`Writing "${filePath}" failed: ${error instanceof Error ? error.message : String(error)}`, `Check write permissions for "${path.dirname(filePath)}".`, { cause: error });
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/init/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Probing the two pieces of infrastructure Untangle needs.
|
|
3
|
+
*
|
|
4
|
+
* READ-ONLY, ON PURPOSE. `HttpProbePort` can issue a GET and nothing else, so
|
|
5
|
+
* `init` is structurally incapable of changing a service it finds — which is
|
|
6
|
+
* what spec.md §3.2 demands of External Infrastructure mode ("Untangle DARF in
|
|
7
|
+
* diesem Modus keine fremden Prozesse oder Container verändern").
|
|
8
|
+
*
|
|
9
|
+
* WHICH URLS ARE PROBED AT ALL IS NOT DECIDED HERE ANY MORE (WP-222). That
|
|
10
|
+
* rule lives in `cli/vector-store-policy.ts` and is the SAME rule
|
|
11
|
+
* `untangle doctor` obeys. It used to be written out twice — once here, once
|
|
12
|
+
* (by omission) in `doctor` — and the two disagreed: `init` refused upstream's
|
|
13
|
+
* default port 6333 citing spec.md §3.2, while `doctor` fell back onto it,
|
|
14
|
+
* found the foreign instance living there and reported it as healthy. Two
|
|
15
|
+
* commands of one tool, two answers to a safety question. One rule, one
|
|
16
|
+
* file, one answer.
|
|
17
|
+
*
|
|
18
|
+
* NOT FINDING EITHER SERVICE IS NOT AN ERROR (WP-125): the configuration is
|
|
19
|
+
* written regardless, and the command names exactly one next step.
|
|
20
|
+
*/
|
|
21
|
+
import type { EmbeddingModelInfoV1, HttpProbePort, InitLimitsV1, OllamaFindingsV1, QdrantFindingsV1 } from "./types.js";
|
|
22
|
+
/** Native Ollama probe target (spec.md §3.1). */
|
|
23
|
+
export declare const DEFAULT_OLLAMA_URL = "http://127.0.0.1:11434";
|
|
24
|
+
/**
|
|
25
|
+
* Managed Qdrant REST port (spec.md §3.1) — re-exported, NOT redefined. The
|
|
26
|
+
* value belongs to the shared policy; a second copy here is exactly how the
|
|
27
|
+
* two commands drifted apart in the first place.
|
|
28
|
+
*/
|
|
29
|
+
export declare const DEFAULT_QDRANT_URL = "http://127.0.0.1:16333";
|
|
30
|
+
/**
|
|
31
|
+
* Reads `/api/tags` into the embedding models it describes.
|
|
32
|
+
*
|
|
33
|
+
* The provider reports `capabilities`, `embedding_length` and
|
|
34
|
+
* `context_length` per model, so the vector width is READ, never guessed and
|
|
35
|
+
* never obtained by sending the model something to embed. A model that
|
|
36
|
+
* predates the `capabilities` field is still recognised by the presence of an
|
|
37
|
+
* `embedding_length`, which only embedding models carry.
|
|
38
|
+
*/
|
|
39
|
+
export declare function readEmbeddingModels(payload: unknown): EmbeddingModelInfoV1[];
|
|
40
|
+
export interface ModelChoiceV1 {
|
|
41
|
+
model: EmbeddingModelInfoV1;
|
|
42
|
+
reason: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Chooses one embedding model out of what the provider actually has.
|
|
46
|
+
*
|
|
47
|
+
* The rule, in order: the widest context window first, because a code chunk
|
|
48
|
+
* that does not fit is a chunk that gets truncated; then the widest vector,
|
|
49
|
+
* because that is the model with more to say; then codepoint order, so the
|
|
50
|
+
* decision never depends on the order the provider happened to list its
|
|
51
|
+
* models in. `preferred` (an explicit user choice) short-circuits all of it.
|
|
52
|
+
*
|
|
53
|
+
* Deliberately NOT "whatever the product default is called": on a machine
|
|
54
|
+
* that has three embedding models and not the default one, silently falling
|
|
55
|
+
* back to a name that is not installed produces a configuration that fails on
|
|
56
|
+
* first use.
|
|
57
|
+
*/
|
|
58
|
+
export declare function chooseEmbeddingModel(models: readonly EmbeddingModelInfoV1[], preferred?: string): ModelChoiceV1 | undefined;
|
|
59
|
+
export interface ProbeInput {
|
|
60
|
+
http: HttpProbePort;
|
|
61
|
+
limits: InitLimitsV1;
|
|
62
|
+
/** `UNTANGLE_OLLAMA_URL` when set. */
|
|
63
|
+
ollamaUrl: string;
|
|
64
|
+
/** `UNTANGLE_QDRANT_URL` when set — probed BEFORE the managed default. */
|
|
65
|
+
qdrantUrls: readonly string[];
|
|
66
|
+
/** Model name from `--embedding-model`, when given. */
|
|
67
|
+
preferredModel?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* WP-228: Erreichbarkeit heisst NICHT „benutzbar".
|
|
71
|
+
*
|
|
72
|
+
* Bis hierher fragte `init` nur `/api/version` und `/api/tags` — zwei
|
|
73
|
+
* Endpunkte, die der Indexlauf nie anfasst. Auf dem Rechner, an dem das
|
|
74
|
+
* gemessen wurde, antworteten beide sofort, waehrend `/api/embed` haengte:
|
|
75
|
+
* die geschriebene Konfiguration versprach einen Dienst, der keinen einzigen
|
|
76
|
+
* Chunk einbetten konnte. Deshalb wird jetzt der Endpunkt geprueft, den das
|
|
77
|
+
* Produkt WIRKLICH benutzt — mit kurzer Frist, und ein Fristablauf ist ein
|
|
78
|
+
* Befund, keine bestandene Pruefung.
|
|
79
|
+
*/
|
|
80
|
+
export declare function probeOllama(input: ProbeInput): Promise<OllamaFindingsV1>;
|
|
81
|
+
export declare function probeQdrant(input: ProbeInput): Promise<QdrantFindingsV1>;
|
|
82
|
+
//# sourceMappingURL=services.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../src/commands/init/services.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,KAAK,EACV,oBAAoB,EACpB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,iDAAiD;AACjD,eAAO,MAAM,kBAAkB,2BAA2B,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,2BAAqB,CAAC;AAarD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,EAAE,CAmC5E;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,oBAAoB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,oBAAoB,EAAE,EACvC,SAAS,CAAC,EAAE,MAAM,GACjB,aAAa,GAAG,SAAS,CA6B3B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmC9E;AAoBD,wBAAsB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwB9E"}
|