@untangle-code/cli 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/NOTICE +90 -0
- package/README.md +424 -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,452 @@
|
|
|
1
|
+
/** Executes only the explicitly selected onboarding plan; ordinary init never calls this. */
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { constants } from "node:fs";
|
|
4
|
+
import { lstat, mkdir, open, readFile, realpath } from "node:fs/promises";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { createNodeProcessRunner, defaultProcessLimits, parseExtensionManifest, } from "@untangle-code/extension-runtime";
|
|
7
|
+
import { parseArgs } from "../../cli/args.js";
|
|
8
|
+
import { OperationalError } from "../../cli/exit.js";
|
|
9
|
+
import { BufferIo } from "../../cli/io.js";
|
|
10
|
+
import { systemClock } from "../../cli/system.js";
|
|
11
|
+
import { findExtension, loadExtensionContext } from "../extensions/context.js";
|
|
12
|
+
import { createExtensionEnvironment } from "../extensions/environment.js";
|
|
13
|
+
import { extensionsCommand } from "../extensions.js";
|
|
14
|
+
import { planIntegrationSetup, } from "./integrations-plan.js";
|
|
15
|
+
class IntegrationSetupError extends OperationalError {
|
|
16
|
+
}
|
|
17
|
+
export class IntegrationSetupCancelledError extends Error {
|
|
18
|
+
reportPath;
|
|
19
|
+
name = "AbortError";
|
|
20
|
+
constructor(reportPath) {
|
|
21
|
+
super(reportPath === undefined
|
|
22
|
+
? "Integration setup cancelled. Its partial receipt could not be written safely."
|
|
23
|
+
: `Integration setup cancelled. Partial receipt: ${reportPath}`);
|
|
24
|
+
this.reportPath = reportPath;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function trackedRunner(runner, receipts) {
|
|
28
|
+
return {
|
|
29
|
+
async run(invocation, limits, options) {
|
|
30
|
+
const receipt = {
|
|
31
|
+
command: invocation.command,
|
|
32
|
+
args: [...invocation.args],
|
|
33
|
+
exitCode: null,
|
|
34
|
+
};
|
|
35
|
+
receipts.push(receipt);
|
|
36
|
+
const outcome = await runner.run(invocation, limits, options);
|
|
37
|
+
receipt.exitCode = outcome.exitCode;
|
|
38
|
+
receipt.outcome = outcome.outcome;
|
|
39
|
+
return outcome;
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function sha256(bytes) {
|
|
44
|
+
return createHash("sha256").update(bytes).digest("hex");
|
|
45
|
+
}
|
|
46
|
+
async function exists(target) {
|
|
47
|
+
try {
|
|
48
|
+
await lstat(target);
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (error.code === "ENOENT")
|
|
53
|
+
return false;
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/** Never traverse a symlink in a project-owned metadata path. */
|
|
58
|
+
async function safeTarget(root, relativePath, create) {
|
|
59
|
+
const parts = relativePath.split("/");
|
|
60
|
+
if (parts[0] !== ".untangle" ||
|
|
61
|
+
parts.some((part) => part === "" || part === "." || part === ".." || part.includes("\\"))) {
|
|
62
|
+
throw new IntegrationSetupError("Integration artifacts must stay below the project .untangle directory.");
|
|
63
|
+
}
|
|
64
|
+
let parent = root;
|
|
65
|
+
for (const part of parts.slice(0, -1)) {
|
|
66
|
+
parent = path.join(parent, part);
|
|
67
|
+
if (!(await exists(parent))) {
|
|
68
|
+
if (!create)
|
|
69
|
+
return path.join(root, ...parts);
|
|
70
|
+
try {
|
|
71
|
+
await mkdir(parent, { mode: 0o700 });
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
if (error.code !== "EEXIST")
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const stat = await lstat(parent);
|
|
79
|
+
if (!stat.isDirectory() || stat.isSymbolicLink() || (await realpath(parent)) !== parent) {
|
|
80
|
+
throw new IntegrationSetupError("Integration metadata contains a symlink or a non-directory; no file was overwritten.");
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const target = path.join(root, ...parts);
|
|
84
|
+
if (await exists(target)) {
|
|
85
|
+
const stat = await lstat(target);
|
|
86
|
+
if (!stat.isFile() || stat.isSymbolicLink()) {
|
|
87
|
+
throw new IntegrationSetupError("An integration artifact is not a regular file; it was preserved.");
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return target;
|
|
91
|
+
}
|
|
92
|
+
async function checkArtifact(root, relativePath, bytes) {
|
|
93
|
+
const target = await safeTarget(root, relativePath, false);
|
|
94
|
+
if ((await exists(target)) && !Buffer.from(await readFile(target)).equals(Buffer.from(bytes))) {
|
|
95
|
+
throw new IntegrationSetupError("An integration artifact already exists with different content; it was preserved.");
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async function writeArtifact(root, relativePath, bytes, mode = 0o600) {
|
|
99
|
+
const target = await safeTarget(root, relativePath, true);
|
|
100
|
+
await checkArtifact(root, relativePath, bytes);
|
|
101
|
+
if (await exists(target))
|
|
102
|
+
return target;
|
|
103
|
+
const file = await open(target, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | constants.O_NOFOLLOW, mode);
|
|
104
|
+
try {
|
|
105
|
+
await file.writeFile(bytes);
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
await file.close();
|
|
109
|
+
}
|
|
110
|
+
return target;
|
|
111
|
+
}
|
|
112
|
+
export async function downloadIntegrationBinary(download, fetchImpl, signal) {
|
|
113
|
+
signal?.throwIfAborted();
|
|
114
|
+
const requestSignal = AbortSignal.any([
|
|
115
|
+
AbortSignal.timeout(120_000),
|
|
116
|
+
...(signal === undefined ? [] : [signal]),
|
|
117
|
+
]);
|
|
118
|
+
const response = await fetchImpl(download.url, { signal: requestSignal, credentials: "omit" });
|
|
119
|
+
if (!response.ok || response.body === null) {
|
|
120
|
+
throw new IntegrationSetupError("The pinned analyzer binary could not be downloaded; no binary was installed.");
|
|
121
|
+
}
|
|
122
|
+
const reader = response.body.getReader();
|
|
123
|
+
const chunks = [];
|
|
124
|
+
let size = 0;
|
|
125
|
+
try {
|
|
126
|
+
for (;;) {
|
|
127
|
+
const chunk = await reader.read();
|
|
128
|
+
if (chunk.done)
|
|
129
|
+
break;
|
|
130
|
+
size += chunk.value.byteLength;
|
|
131
|
+
if (size > download.maxBytes) {
|
|
132
|
+
await reader.cancel();
|
|
133
|
+
throw new IntegrationSetupError("The analyzer download exceeded its byte limit; no binary was installed.");
|
|
134
|
+
}
|
|
135
|
+
chunks.push(chunk.value);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
finally {
|
|
139
|
+
reader.releaseLock();
|
|
140
|
+
}
|
|
141
|
+
const bytes = Buffer.concat(chunks, size);
|
|
142
|
+
if (sha256(bytes) !== download.sha256) {
|
|
143
|
+
throw new IntegrationSetupError("The analyzer SHA256 did not match the pinned release; no binary was installed or executed.");
|
|
144
|
+
}
|
|
145
|
+
return bytes;
|
|
146
|
+
}
|
|
147
|
+
function processFailed(result) {
|
|
148
|
+
return result.outcome !== "completed" || result.exitCode !== 0;
|
|
149
|
+
}
|
|
150
|
+
async function verifyContainerOwnership(item, root, runner, signal) {
|
|
151
|
+
if (item.projectName === undefined)
|
|
152
|
+
return;
|
|
153
|
+
const limits = { ...defaultProcessLimits(), timeoutMs: 30_000, maxOutputBytes: 1024 * 1024 };
|
|
154
|
+
const result = await runner.run({
|
|
155
|
+
command: "docker",
|
|
156
|
+
args: [
|
|
157
|
+
"ps",
|
|
158
|
+
"--all",
|
|
159
|
+
"--filter",
|
|
160
|
+
`label=com.docker.compose.project=${item.projectName}`,
|
|
161
|
+
"--format",
|
|
162
|
+
"{{.ID}}",
|
|
163
|
+
],
|
|
164
|
+
cwd: root,
|
|
165
|
+
}, limits, signal === undefined ? {} : { signal });
|
|
166
|
+
signal?.throwIfAborted();
|
|
167
|
+
if (processFailed(result))
|
|
168
|
+
throw new IntegrationSetupError("Docker is unavailable; the server was not started.");
|
|
169
|
+
for (const id of result.stdout.split(/\s+/u).filter(Boolean)) {
|
|
170
|
+
if (!/^[a-f0-9]{12,64}$/u.test(id))
|
|
171
|
+
throw new IntegrationSetupError("Docker returned an invalid container identity.");
|
|
172
|
+
const inspected = await runner.run({
|
|
173
|
+
command: "docker",
|
|
174
|
+
args: ["inspect", "--format", "{{json .Config.Labels}}", id],
|
|
175
|
+
cwd: root,
|
|
176
|
+
}, limits, signal === undefined ? {} : { signal });
|
|
177
|
+
signal?.throwIfAborted();
|
|
178
|
+
if (processFailed(inspected))
|
|
179
|
+
throw new IntegrationSetupError("Container ownership could not be verified; nothing was started.");
|
|
180
|
+
let labels;
|
|
181
|
+
try {
|
|
182
|
+
labels = JSON.parse(inspected.stdout);
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
throw new IntegrationSetupError("Container labels were not readable; nothing was started.");
|
|
186
|
+
}
|
|
187
|
+
if (typeof labels !== "object" ||
|
|
188
|
+
labels === null ||
|
|
189
|
+
labels["dev.untangle.init-managed"] !== "true" ||
|
|
190
|
+
labels["dev.untangle.init-project"] !== item.projectName) {
|
|
191
|
+
throw new IntegrationSetupError("A container already occupies this project name without Untangle ownership labels; it was not touched.");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
function extensionRunner(deps) {
|
|
196
|
+
if (deps.runExtensionCommand !== undefined)
|
|
197
|
+
return deps.runExtensionCommand;
|
|
198
|
+
return async (args, root, signal) => {
|
|
199
|
+
const io = new BufferIo();
|
|
200
|
+
const exitCode = await extensionsCommand.run({
|
|
201
|
+
cwd: root,
|
|
202
|
+
env: deps.env ?? process.env,
|
|
203
|
+
signal: signal ?? new AbortController().signal,
|
|
204
|
+
io,
|
|
205
|
+
}, parseArgs([...args, "--format=json"], extensionsCommand.spec.flags));
|
|
206
|
+
let value;
|
|
207
|
+
try {
|
|
208
|
+
value = JSON.parse(io.outText);
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
value = undefined;
|
|
212
|
+
}
|
|
213
|
+
return { exitCode, ...(value === undefined ? {} : { value }) };
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
async function executeCommand(command, root, deps, runner) {
|
|
217
|
+
deps.signal?.throwIfAborted();
|
|
218
|
+
if (command.kind === "extension")
|
|
219
|
+
return extensionRunner(deps)(command.args.slice(1), root, deps.signal);
|
|
220
|
+
const result = await runner.run({ command: command.command, args: command.args, cwd: root }, { ...defaultProcessLimits(), timeoutMs: 300_000, maxOutputBytes: 1024 * 1024 }, deps.signal === undefined ? {} : { signal: deps.signal });
|
|
221
|
+
deps.signal?.throwIfAborted();
|
|
222
|
+
return {
|
|
223
|
+
exitCode: processFailed(result) ? (result.exitCode === 0 ? 1 : (result.exitCode ?? 1)) : 0,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/** Only a generated, byte-equal selected manifest may reuse an existing profile entry. */
|
|
227
|
+
async function reuseSelectedManifest(plan, item, command, deps) {
|
|
228
|
+
if (deps.runExtensionCommand !== undefined ||
|
|
229
|
+
!item.id.startsWith("sonarqube-") ||
|
|
230
|
+
command.args[1] !== "add")
|
|
231
|
+
return false;
|
|
232
|
+
const source = item.files.find((file) => file.relativePath.endsWith("/manifest.toml"));
|
|
233
|
+
if (source === undefined)
|
|
234
|
+
return false;
|
|
235
|
+
const parsed = parseExtensionManifest(source.content);
|
|
236
|
+
if (parsed.manifest === null)
|
|
237
|
+
return false;
|
|
238
|
+
const environment = await createExtensionEnvironment({
|
|
239
|
+
cwd: plan.root,
|
|
240
|
+
env: deps.env ?? process.env,
|
|
241
|
+
});
|
|
242
|
+
const installed = findExtension(await loadExtensionContext(environment), parsed.manifest.id);
|
|
243
|
+
return installed !== null && installed.manifestSha256 === sha256(Buffer.from(source.content));
|
|
244
|
+
}
|
|
245
|
+
export async function verifySelectedBinary(plan, item, command) {
|
|
246
|
+
const download = item.downloads.find((candidate) => path.join(plan.root, candidate.relativePath) === command.command);
|
|
247
|
+
if (download === undefined)
|
|
248
|
+
return;
|
|
249
|
+
const target = await safeTarget(plan.root, download.relativePath, false);
|
|
250
|
+
const file = await open(target, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
251
|
+
try {
|
|
252
|
+
if (sha256(await file.readFile()) !== download.sha256)
|
|
253
|
+
throw new IntegrationSetupError("The selected analyzer binary changed before execution; it was not started.");
|
|
254
|
+
}
|
|
255
|
+
finally {
|
|
256
|
+
await file.close();
|
|
257
|
+
}
|
|
258
|
+
const stat = await lstat(target);
|
|
259
|
+
if (!stat.isFile() || stat.isSymbolicLink())
|
|
260
|
+
throw new IntegrationSetupError("The selected analyzer binary path changed before execution; it was not started.");
|
|
261
|
+
}
|
|
262
|
+
async function applyItem(plan, item, deps, result) {
|
|
263
|
+
for (const file of item.files)
|
|
264
|
+
await checkArtifact(plan.root, file.relativePath, Buffer.from(file.content));
|
|
265
|
+
for (const download of item.downloads) {
|
|
266
|
+
const target = await safeTarget(plan.root, download.relativePath, false);
|
|
267
|
+
if ((await exists(target)) && sha256(await readFile(target)) !== download.sha256) {
|
|
268
|
+
throw new IntegrationSetupError("An installed analyzer binary differs from the pinned release; it was preserved.");
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
for (const file of item.files) {
|
|
272
|
+
deps.signal?.throwIfAborted();
|
|
273
|
+
result.files.push(await writeArtifact(plan.root, file.relativePath, Buffer.from(file.content)));
|
|
274
|
+
}
|
|
275
|
+
if (deps.execute !== true || plan.offline) {
|
|
276
|
+
if (plan.offline && deps.execute === true)
|
|
277
|
+
result.detail = "Offline setup prepared; installation and network execution were skipped.";
|
|
278
|
+
return result;
|
|
279
|
+
}
|
|
280
|
+
if (item.blockers.length > 0) {
|
|
281
|
+
return { ...result, status: "needs_configuration", detail: item.blockers.join(" ") };
|
|
282
|
+
}
|
|
283
|
+
const runner = trackedRunner(deps.runner ?? createNodeProcessRunner(systemClock), result.executed);
|
|
284
|
+
await verifyContainerOwnership(item, plan.root, runner, deps.signal);
|
|
285
|
+
for (const download of item.downloads) {
|
|
286
|
+
deps.signal?.throwIfAborted();
|
|
287
|
+
const target = await safeTarget(plan.root, download.relativePath, false);
|
|
288
|
+
if (!(await exists(target))) {
|
|
289
|
+
const bytes = await downloadIntegrationBinary(download, deps.fetchImpl ?? fetch, deps.signal);
|
|
290
|
+
deps.signal?.throwIfAborted();
|
|
291
|
+
result.files.push(await writeArtifact(plan.root, download.relativePath, bytes, 0o700));
|
|
292
|
+
}
|
|
293
|
+
else
|
|
294
|
+
result.files.push(target);
|
|
295
|
+
}
|
|
296
|
+
for (const command of item.commands) {
|
|
297
|
+
for (const file of item.files)
|
|
298
|
+
await checkArtifact(plan.root, file.relativePath, Buffer.from(file.content));
|
|
299
|
+
await verifySelectedBinary(plan, item, command);
|
|
300
|
+
const isMetricsRead = command.kind === "extension" && command.args[1] === "run";
|
|
301
|
+
const receipt = command.kind === "extension"
|
|
302
|
+
? { command: command.command, args: [...command.args], exitCode: null }
|
|
303
|
+
: undefined;
|
|
304
|
+
if (receipt !== undefined)
|
|
305
|
+
result.executed.push(receipt);
|
|
306
|
+
let execution;
|
|
307
|
+
try {
|
|
308
|
+
execution = (await reuseSelectedManifest(plan, item, command, deps))
|
|
309
|
+
? { exitCode: 0, reused: true }
|
|
310
|
+
: await executeCommand(command, plan.root, deps, runner);
|
|
311
|
+
}
|
|
312
|
+
catch (error) {
|
|
313
|
+
deps.signal?.throwIfAborted();
|
|
314
|
+
if (!isMetricsRead)
|
|
315
|
+
throw error;
|
|
316
|
+
return {
|
|
317
|
+
...result,
|
|
318
|
+
status: "needs_configuration",
|
|
319
|
+
detail: "The metrics read did not succeed. Check the named token, project key, server reachability and prior scanner analysis; no connection success or source freshness is claimed.",
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
if (receipt !== undefined) {
|
|
323
|
+
receipt.exitCode = execution.exitCode;
|
|
324
|
+
if (execution.reused === true)
|
|
325
|
+
receipt.reused = true;
|
|
326
|
+
}
|
|
327
|
+
if (execution.exitCode !== 0) {
|
|
328
|
+
return {
|
|
329
|
+
...result,
|
|
330
|
+
status: "failed",
|
|
331
|
+
detail: "A selected setup command failed. Existing files were preserved; review the displayed command and prerequisites before retrying.",
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
if (isMetricsRead &&
|
|
335
|
+
typeof execution.value === "object" &&
|
|
336
|
+
execution.value !== null &&
|
|
337
|
+
"measurements" in execution.value &&
|
|
338
|
+
Array.isArray(execution.value.measurements)) {
|
|
339
|
+
result.metricsRead = execution.value.measurements.length;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
if (item.id.startsWith("sonarqube-")) {
|
|
343
|
+
if ((result.metricsRead ?? 0) > 0) {
|
|
344
|
+
return {
|
|
345
|
+
...result,
|
|
346
|
+
status: "installed",
|
|
347
|
+
detail: "The configured server returned numeric project metrics through the existing extension runtime. These are external evidence from prior analysis; remote source freshness is not verified.",
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
return {
|
|
351
|
+
...result,
|
|
352
|
+
status: "needs_configuration",
|
|
353
|
+
detail: "Selected server/manifest setup completed. Account, project, scanner and token configuration must be completed before a real metrics read; remote source freshness is not verified.",
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
return {
|
|
357
|
+
...result,
|
|
358
|
+
status: "installed",
|
|
359
|
+
detail: item.id === "local-search"
|
|
360
|
+
? "The selected search services started and the default model pull completed. No index was built; use the generated endpoint configuration, doctor and index next."
|
|
361
|
+
: item.id === "sentrux"
|
|
362
|
+
? "The hash-verified binary passed --version; its separate MCP template is prepared. No normalized Untangle adapter or scan is claimed."
|
|
363
|
+
: "The trusted extension manifest was installed. Enable its ID and run the analyzer explicitly; installation starts no analyzer.",
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
export async function applyIntegrationSetup(supplied, deps = {}) {
|
|
367
|
+
deps.signal?.throwIfAborted();
|
|
368
|
+
const physicalRoot = await realpath(supplied.root);
|
|
369
|
+
const plan = planIntegrationSetup({
|
|
370
|
+
root: physicalRoot,
|
|
371
|
+
selections: supplied.selections,
|
|
372
|
+
offline: supplied.offline,
|
|
373
|
+
platform: supplied.platform,
|
|
374
|
+
arch: supplied.arch,
|
|
375
|
+
});
|
|
376
|
+
const items = [];
|
|
377
|
+
let active;
|
|
378
|
+
try {
|
|
379
|
+
for (const item of plan.items) {
|
|
380
|
+
deps.signal?.throwIfAborted();
|
|
381
|
+
active = {
|
|
382
|
+
id: item.id,
|
|
383
|
+
status: "prepared",
|
|
384
|
+
detail: "Setup files prepared; no analyzer process or network request was started.",
|
|
385
|
+
files: [],
|
|
386
|
+
executed: [],
|
|
387
|
+
nextSteps: item.nextSteps,
|
|
388
|
+
};
|
|
389
|
+
try {
|
|
390
|
+
items.push(await applyItem(plan, item, deps, active));
|
|
391
|
+
}
|
|
392
|
+
catch (error) {
|
|
393
|
+
deps.signal?.throwIfAborted();
|
|
394
|
+
items.push({
|
|
395
|
+
...active,
|
|
396
|
+
status: "failed",
|
|
397
|
+
detail: error instanceof IntegrationSetupError
|
|
398
|
+
? error.message
|
|
399
|
+
: "Integration setup failed. Existing files and credentials were preserved; review the plan and prerequisites.",
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
active = undefined;
|
|
403
|
+
}
|
|
404
|
+
deps.signal?.throwIfAborted();
|
|
405
|
+
const report = await persistSetupReport(plan, items, deps.execute === true);
|
|
406
|
+
deps.signal?.throwIfAborted();
|
|
407
|
+
return report;
|
|
408
|
+
}
|
|
409
|
+
catch (error) {
|
|
410
|
+
if (deps.signal?.aborted !== true)
|
|
411
|
+
throw error;
|
|
412
|
+
if (active !== undefined)
|
|
413
|
+
items.push({
|
|
414
|
+
...active,
|
|
415
|
+
status: "cancelled",
|
|
416
|
+
detail: "Setup cancelled before completion. Already prepared files or started owned services may remain; no automatic cleanup or success is claimed.",
|
|
417
|
+
});
|
|
418
|
+
for (const item of plan.items) {
|
|
419
|
+
if (!items.some((result) => result.id === item.id))
|
|
420
|
+
items.push({
|
|
421
|
+
id: item.id,
|
|
422
|
+
status: "cancelled",
|
|
423
|
+
detail: "Not started because setup was cancelled.",
|
|
424
|
+
files: [],
|
|
425
|
+
executed: [],
|
|
426
|
+
nextSteps: item.nextSteps,
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
let reportPath;
|
|
430
|
+
try {
|
|
431
|
+
reportPath = (await persistSetupReport(plan, items, deps.execute === true, true)).reportPath;
|
|
432
|
+
}
|
|
433
|
+
catch {
|
|
434
|
+
/* An unsafe or unwritable metadata directory never permits an outside fallback. */
|
|
435
|
+
}
|
|
436
|
+
throw new IntegrationSetupCancelledError(reportPath);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
async function persistSetupReport(plan, items, executeRequested, cancelled = false) {
|
|
440
|
+
const payload = {
|
|
441
|
+
schemaVersion: 1,
|
|
442
|
+
root: plan.root,
|
|
443
|
+
executeRequested,
|
|
444
|
+
offline: plan.offline,
|
|
445
|
+
items,
|
|
446
|
+
...(cancelled ? { cancelled: true } : {}),
|
|
447
|
+
};
|
|
448
|
+
const bytes = Buffer.from(`${JSON.stringify(payload, null, 2)}\n`);
|
|
449
|
+
const reportPath = await writeArtifact(plan.root, `.untangle/setup/integrations/results/${sha256(bytes)}.json`, bytes);
|
|
450
|
+
return { ...payload, reportPath };
|
|
451
|
+
}
|
|
452
|
+
//# sourceMappingURL=integrations-apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrations-apply.js","sourceRoot":"","sources":["../../../src/commands/init/integrations-apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export type IntegrationId = "local-search" | "sonarqube-local" | "sonarqube-existing" | "sentrux" | "custom";
|
|
2
|
+
export interface IntegrationOfferV1 {
|
|
3
|
+
id: IntegrationId;
|
|
4
|
+
label: string;
|
|
5
|
+
description: string;
|
|
6
|
+
documentation: string;
|
|
7
|
+
licenseSummary: string;
|
|
8
|
+
requiresLicenseAcknowledgment: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface IntegrationSelectionV1 {
|
|
11
|
+
id: IntegrationId;
|
|
12
|
+
endpoint?: string;
|
|
13
|
+
projectKey?: string;
|
|
14
|
+
tokenEnvVar?: string;
|
|
15
|
+
manifestPath?: string;
|
|
16
|
+
manifestDigest?: string;
|
|
17
|
+
acknowledgeLicense?: boolean;
|
|
18
|
+
allowProjectLocal?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface IntegrationCommandV1 {
|
|
21
|
+
command: string;
|
|
22
|
+
args: readonly string[];
|
|
23
|
+
purpose: string;
|
|
24
|
+
kind: "process" | "extension";
|
|
25
|
+
}
|
|
26
|
+
export interface IntegrationFileV1 {
|
|
27
|
+
relativePath: string;
|
|
28
|
+
content: string;
|
|
29
|
+
}
|
|
30
|
+
export interface IntegrationDownloadV1 {
|
|
31
|
+
url: string;
|
|
32
|
+
sha256: string;
|
|
33
|
+
relativePath: string;
|
|
34
|
+
maxBytes: number;
|
|
35
|
+
}
|
|
36
|
+
export interface IntegrationPlanItemV1 {
|
|
37
|
+
id: IntegrationId;
|
|
38
|
+
label: string;
|
|
39
|
+
files: readonly IntegrationFileV1[];
|
|
40
|
+
commands: readonly IntegrationCommandV1[];
|
|
41
|
+
downloads: readonly IntegrationDownloadV1[];
|
|
42
|
+
blockers: readonly string[];
|
|
43
|
+
nextSteps: readonly string[];
|
|
44
|
+
licenseAcknowledged: boolean;
|
|
45
|
+
projectName?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface IntegrationSetupOptionsV1 {
|
|
48
|
+
root: string;
|
|
49
|
+
selections: readonly IntegrationSelectionV1[];
|
|
50
|
+
offline?: boolean;
|
|
51
|
+
platform?: string;
|
|
52
|
+
arch?: string;
|
|
53
|
+
}
|
|
54
|
+
export interface IntegrationSetupPlanV1 {
|
|
55
|
+
schemaVersion: 1;
|
|
56
|
+
root: string;
|
|
57
|
+
selections: readonly IntegrationSelectionV1[];
|
|
58
|
+
offline: boolean;
|
|
59
|
+
platform: string;
|
|
60
|
+
arch: string;
|
|
61
|
+
items: readonly IntegrationPlanItemV1[];
|
|
62
|
+
}
|
|
63
|
+
export declare const SONAR_IMAGE = "sonarqube@sha256:f95aaa9016dd4e92c7d70691167a6d96dbb5d8acffd61eba1cb4335d364a7840";
|
|
64
|
+
export declare const SENTRUX_VERSION = "0.5.7";
|
|
65
|
+
export declare function integrationCatalog(): readonly IntegrationOfferV1[];
|
|
66
|
+
/** Planning is deterministic and performs no filesystem, process or network operation. */
|
|
67
|
+
export declare function planIntegrationSetup(options: IntegrationSetupOptionsV1): IntegrationSetupPlanV1;
|
|
68
|
+
//# sourceMappingURL=integrations-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrations-plan.d.ts","sourceRoot":"","sources":["../../../src/commands/init/integrations-plan.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,aAAa,GACvB,cAAc,GAAG,iBAAiB,GAAG,oBAAoB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEnF,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,aAAa,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,6BAA6B,EAAE,OAAO,CAAC;CACxC;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,aAAa,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,GAAG,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,aAAa,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC1C,SAAS,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC5C,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,CAAC,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACzC;AAED,eAAO,MAAM,WAAW,sFAC6D,CAAC;AACtF,eAAO,MAAM,eAAe,UAAU,CAAC;AAqDvC,wBAAgB,kBAAkB,IAAI,SAAS,kBAAkB,EAAE,CAElE;AAgdD,0FAA0F;AAC1F,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,yBAAyB,GAAG,sBAAsB,CAiC/F"}
|