@bloomreach/brxm-upgrade 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/README.md +217 -0
- package/dist/ai/index.d.ts +3 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +2 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/providers.d.ts +27 -0
- package/dist/ai/providers.d.ts.map +1 -0
- package/dist/ai/providers.js +105 -0
- package/dist/ai/providers.js.map +1 -0
- package/dist/ai/types.d.ts +47 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +2 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/capture/change-scanner.d.ts +20 -0
- package/dist/capture/change-scanner.d.ts.map +1 -0
- package/dist/capture/change-scanner.js +71 -0
- package/dist/capture/change-scanner.js.map +1 -0
- package/dist/capture/conflict-resolver.d.ts +21 -0
- package/dist/capture/conflict-resolver.d.ts.map +1 -0
- package/dist/capture/conflict-resolver.js +45 -0
- package/dist/capture/conflict-resolver.js.map +1 -0
- package/dist/capture/critique-types.d.ts +60 -0
- package/dist/capture/critique-types.d.ts.map +1 -0
- package/dist/capture/critique-types.js +2 -0
- package/dist/capture/critique-types.js.map +1 -0
- package/dist/capture/entry-critique.d.ts +30 -0
- package/dist/capture/entry-critique.d.ts.map +1 -0
- package/dist/capture/entry-critique.js +137 -0
- package/dist/capture/entry-critique.js.map +1 -0
- package/dist/capture/entry-generator.d.ts +32 -0
- package/dist/capture/entry-generator.d.ts.map +1 -0
- package/dist/capture/entry-generator.js +209 -0
- package/dist/capture/entry-generator.js.map +1 -0
- package/dist/capture/entry-qa.d.ts +28 -0
- package/dist/capture/entry-qa.d.ts.map +1 -0
- package/dist/capture/entry-qa.js +84 -0
- package/dist/capture/entry-qa.js.map +1 -0
- package/dist/capture/entry-regeneration.d.ts +29 -0
- package/dist/capture/entry-regeneration.d.ts.map +1 -0
- package/dist/capture/entry-regeneration.js +164 -0
- package/dist/capture/entry-regeneration.js.map +1 -0
- package/dist/capture/entry-validator.d.ts +18 -0
- package/dist/capture/entry-validator.d.ts.map +1 -0
- package/dist/capture/entry-validator.js +47 -0
- package/dist/capture/entry-validator.js.map +1 -0
- package/dist/capture/heuristics.d.ts +30 -0
- package/dist/capture/heuristics.d.ts.map +1 -0
- package/dist/capture/heuristics.js +223 -0
- package/dist/capture/heuristics.js.map +1 -0
- package/dist/capture/index.d.ts +7 -0
- package/dist/capture/index.d.ts.map +1 -0
- package/dist/capture/index.js +11 -0
- package/dist/capture/index.js.map +1 -0
- package/dist/capture/quality-report.d.ts +19 -0
- package/dist/capture/quality-report.d.ts.map +1 -0
- package/dist/capture/quality-report.js +161 -0
- package/dist/capture/quality-report.js.map +1 -0
- package/dist/capture/review-flow.d.ts +37 -0
- package/dist/capture/review-flow.d.ts.map +1 -0
- package/dist/capture/review-flow.js +212 -0
- package/dist/capture/review-flow.js.map +1 -0
- package/dist/capture/types.d.ts +114 -0
- package/dist/capture/types.d.ts.map +1 -0
- package/dist/capture/types.js +2 -0
- package/dist/capture/types.js.map +1 -0
- package/dist/commands/discover.d.ts +6 -0
- package/dist/commands/discover.d.ts.map +1 -0
- package/dist/commands/discover.js +147 -0
- package/dist/commands/discover.js.map +1 -0
- package/dist/commands/execute.d.ts +12 -0
- package/dist/commands/execute.d.ts.map +1 -0
- package/dist/commands/execute.js +113 -0
- package/dist/commands/execute.js.map +1 -0
- package/dist/commands/export.d.ts +26 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +291 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/finalize.d.ts +12 -0
- package/dist/commands/finalize.d.ts.map +1 -0
- package/dist/commands/finalize.js +225 -0
- package/dist/commands/finalize.js.map +1 -0
- package/dist/commands/guide.d.ts +12 -0
- package/dist/commands/guide.d.ts.map +1 -0
- package/dist/commands/guide.js +28 -0
- package/dist/commands/guide.js.map +1 -0
- package/dist/commands/index.d.ts +6 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +22 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/log-change.d.ts +14 -0
- package/dist/commands/log-change.d.ts.map +1 -0
- package/dist/commands/log-change.js +243 -0
- package/dist/commands/log-change.js.map +1 -0
- package/dist/commands/plan.d.ts +12 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +162 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/review-manifest.d.ts +39 -0
- package/dist/commands/review-manifest.d.ts.map +1 -0
- package/dist/commands/review-manifest.js +178 -0
- package/dist/commands/review-manifest.js.map +1 -0
- package/dist/commands/setup-manifests.d.ts +12 -0
- package/dist/commands/setup-manifests.d.ts.map +1 -0
- package/dist/commands/setup-manifests.js +229 -0
- package/dist/commands/setup-manifests.js.map +1 -0
- package/dist/config/defaults.d.ts +15 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +36 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +17 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +104 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/schema.d.ts +33 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +110 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +16 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/phase-manager.d.ts +53 -0
- package/dist/core/phase-manager.d.ts.map +1 -0
- package/dist/core/phase-manager.js +124 -0
- package/dist/core/phase-manager.js.map +1 -0
- package/dist/core/upgrade-state.d.ts +24 -0
- package/dist/core/upgrade-state.d.ts.map +1 -0
- package/dist/core/upgrade-state.js +32 -0
- package/dist/core/upgrade-state.js.map +1 -0
- package/dist/discovery/index.d.ts +5 -0
- package/dist/discovery/index.d.ts.map +1 -0
- package/dist/discovery/index.js +4 -0
- package/dist/discovery/index.js.map +1 -0
- package/dist/discovery/orchestrator.d.ts +46 -0
- package/dist/discovery/orchestrator.d.ts.map +1 -0
- package/dist/discovery/orchestrator.js +124 -0
- package/dist/discovery/orchestrator.js.map +1 -0
- package/dist/discovery/scanners/config-detector.d.ts +24 -0
- package/dist/discovery/scanners/config-detector.d.ts.map +1 -0
- package/dist/discovery/scanners/config-detector.js +82 -0
- package/dist/discovery/scanners/config-detector.js.map +1 -0
- package/dist/discovery/scanners/cv-scanner.d.ts +30 -0
- package/dist/discovery/scanners/cv-scanner.d.ts.map +1 -0
- package/dist/discovery/scanners/cv-scanner.js +85 -0
- package/dist/discovery/scanners/cv-scanner.js.map +1 -0
- package/dist/discovery/scanners/index.d.ts +6 -0
- package/dist/discovery/scanners/index.d.ts.map +1 -0
- package/dist/discovery/scanners/index.js +6 -0
- package/dist/discovery/scanners/index.js.map +1 -0
- package/dist/discovery/scanners/maven-scanner.d.ts +33 -0
- package/dist/discovery/scanners/maven-scanner.d.ts.map +1 -0
- package/dist/discovery/scanners/maven-scanner.js +96 -0
- package/dist/discovery/scanners/maven-scanner.js.map +1 -0
- package/dist/discovery/scanners/repo-scanner.d.ts +9 -0
- package/dist/discovery/scanners/repo-scanner.d.ts.map +1 -0
- package/dist/discovery/scanners/repo-scanner.js +80 -0
- package/dist/discovery/scanners/repo-scanner.js.map +1 -0
- package/dist/discovery/scanners/version-resolver.d.ts +45 -0
- package/dist/discovery/scanners/version-resolver.d.ts.map +1 -0
- package/dist/discovery/scanners/version-resolver.js +119 -0
- package/dist/discovery/scanners/version-resolver.js.map +1 -0
- package/dist/discovery/types.d.ts +156 -0
- package/dist/discovery/types.d.ts.map +1 -0
- package/dist/discovery/types.js +2 -0
- package/dist/discovery/types.js.map +1 -0
- package/dist/discovery/validators/index.d.ts +2 -0
- package/dist/discovery/validators/index.d.ts.map +1 -0
- package/dist/discovery/validators/index.js +2 -0
- package/dist/discovery/validators/index.js.map +1 -0
- package/dist/discovery/validators/upgrade-validator.d.ts +34 -0
- package/dist/discovery/validators/upgrade-validator.d.ts.map +1 -0
- package/dist/discovery/validators/upgrade-validator.js +135 -0
- package/dist/discovery/validators/upgrade-validator.js.map +1 -0
- package/dist/docs/docs-client.d.ts +44 -0
- package/dist/docs/docs-client.d.ts.map +1 -0
- package/dist/docs/docs-client.js +161 -0
- package/dist/docs/docs-client.js.map +1 -0
- package/dist/docs/docs-context.d.ts +23 -0
- package/dist/docs/docs-context.d.ts.map +1 -0
- package/dist/docs/docs-context.js +41 -0
- package/dist/docs/docs-context.js.map +1 -0
- package/dist/docs/index.d.ts +4 -0
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +3 -0
- package/dist/docs/index.js.map +1 -0
- package/dist/docs/types.d.ts +27 -0
- package/dist/docs/types.d.ts.map +1 -0
- package/dist/docs/types.js +2 -0
- package/dist/docs/types.js.map +1 -0
- package/dist/execution/diff-presenter.d.ts +52 -0
- package/dist/execution/diff-presenter.d.ts.map +1 -0
- package/dist/execution/diff-presenter.js +148 -0
- package/dist/execution/diff-presenter.js.map +1 -0
- package/dist/execution/executors/ai-assisted.d.ts +28 -0
- package/dist/execution/executors/ai-assisted.d.ts.map +1 -0
- package/dist/execution/executors/ai-assisted.js +226 -0
- package/dist/execution/executors/ai-assisted.js.map +1 -0
- package/dist/execution/executors/automated.d.ts +15 -0
- package/dist/execution/executors/automated.d.ts.map +1 -0
- package/dist/execution/executors/automated.js +37 -0
- package/dist/execution/executors/automated.js.map +1 -0
- package/dist/execution/executors/cv-gate.d.ts +23 -0
- package/dist/execution/executors/cv-gate.d.ts.map +1 -0
- package/dist/execution/executors/cv-gate.js +63 -0
- package/dist/execution/executors/cv-gate.js.map +1 -0
- package/dist/execution/executors/index.d.ts +7 -0
- package/dist/execution/executors/index.d.ts.map +1 -0
- package/dist/execution/executors/index.js +7 -0
- package/dist/execution/executors/index.js.map +1 -0
- package/dist/execution/executors/manual.d.ts +18 -0
- package/dist/execution/executors/manual.d.ts.map +1 -0
- package/dist/execution/executors/manual.js +31 -0
- package/dist/execution/executors/manual.js.map +1 -0
- package/dist/execution/executors/override-resolution.d.ts +27 -0
- package/dist/execution/executors/override-resolution.d.ts.map +1 -0
- package/dist/execution/executors/override-resolution.js +79 -0
- package/dist/execution/executors/override-resolution.js.map +1 -0
- package/dist/execution/executors/version-bump.d.ts +20 -0
- package/dist/execution/executors/version-bump.d.ts.map +1 -0
- package/dist/execution/executors/version-bump.js +65 -0
- package/dist/execution/executors/version-bump.js.map +1 -0
- package/dist/execution/file-transformer.d.ts +25 -0
- package/dist/execution/file-transformer.d.ts.map +1 -0
- package/dist/execution/file-transformer.js +74 -0
- package/dist/execution/file-transformer.js.map +1 -0
- package/dist/execution/index.d.ts +7 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +9 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/execution/state-manager.d.ts +27 -0
- package/dist/execution/state-manager.d.ts.map +1 -0
- package/dist/execution/state-manager.js +48 -0
- package/dist/execution/state-manager.js.map +1 -0
- package/dist/execution/step-executor.d.ts +68 -0
- package/dist/execution/step-executor.d.ts.map +1 -0
- package/dist/execution/step-executor.js +243 -0
- package/dist/execution/step-executor.js.map +1 -0
- package/dist/execution/types.d.ts +92 -0
- package/dist/execution/types.d.ts.map +1 -0
- package/dist/execution/types.js +2 -0
- package/dist/execution/types.js.map +1 -0
- package/dist/guide/GuideRunner.d.ts +62 -0
- package/dist/guide/GuideRunner.d.ts.map +1 -0
- package/dist/guide/GuideRunner.js +390 -0
- package/dist/guide/GuideRunner.js.map +1 -0
- package/dist/guide/chat/ChatContextBuilder.d.ts +44 -0
- package/dist/guide/chat/ChatContextBuilder.d.ts.map +1 -0
- package/dist/guide/chat/ChatContextBuilder.js +121 -0
- package/dist/guide/chat/ChatContextBuilder.js.map +1 -0
- package/dist/guide/chat/ChatLoop.d.ts +18 -0
- package/dist/guide/chat/ChatLoop.d.ts.map +1 -0
- package/dist/guide/chat/ChatLoop.js +59 -0
- package/dist/guide/chat/ChatLoop.js.map +1 -0
- package/dist/guide/chat/StepCoach.d.ts +22 -0
- package/dist/guide/chat/StepCoach.d.ts.map +1 -0
- package/dist/guide/chat/StepCoach.js +39 -0
- package/dist/guide/chat/StepCoach.js.map +1 -0
- package/dist/guide/chat/index.d.ts +4 -0
- package/dist/guide/chat/index.d.ts.map +1 -0
- package/dist/guide/chat/index.js +4 -0
- package/dist/guide/chat/index.js.map +1 -0
- package/dist/guide/index.d.ts +3 -0
- package/dist/guide/index.d.ts.map +1 -0
- package/dist/guide/index.js +2 -0
- package/dist/guide/index.js.map +1 -0
- package/dist/guide/phases/DiscoveryPhase.d.ts +30 -0
- package/dist/guide/phases/DiscoveryPhase.d.ts.map +1 -0
- package/dist/guide/phases/DiscoveryPhase.js +238 -0
- package/dist/guide/phases/DiscoveryPhase.js.map +1 -0
- package/dist/guide/phases/ExecutionPhase.d.ts +80 -0
- package/dist/guide/phases/ExecutionPhase.d.ts.map +1 -0
- package/dist/guide/phases/ExecutionPhase.js +574 -0
- package/dist/guide/phases/ExecutionPhase.js.map +1 -0
- package/dist/guide/phases/PlanPhase.d.ts +22 -0
- package/dist/guide/phases/PlanPhase.d.ts.map +1 -0
- package/dist/guide/phases/PlanPhase.js +200 -0
- package/dist/guide/phases/PlanPhase.js.map +1 -0
- package/dist/guide/phases/index.d.ts +4 -0
- package/dist/guide/phases/index.d.ts.map +1 -0
- package/dist/guide/phases/index.js +4 -0
- package/dist/guide/phases/index.js.map +1 -0
- package/dist/guide/rendering/formatters.d.ts +126 -0
- package/dist/guide/rendering/formatters.d.ts.map +1 -0
- package/dist/guide/rendering/formatters.js +340 -0
- package/dist/guide/rendering/formatters.js.map +1 -0
- package/dist/guide/rendering/index.d.ts +2 -0
- package/dist/guide/rendering/index.d.ts.map +1 -0
- package/dist/guide/rendering/index.js +2 -0
- package/dist/guide/rendering/index.js.map +1 -0
- package/dist/guide/rendering/platform-changes.d.ts +18 -0
- package/dist/guide/rendering/platform-changes.d.ts.map +1 -0
- package/dist/guide/rendering/platform-changes.js +86 -0
- package/dist/guide/rendering/platform-changes.js.map +1 -0
- package/dist/guide/types.d.ts +100 -0
- package/dist/guide/types.d.ts.map +1 -0
- package/dist/guide/types.js +2 -0
- package/dist/guide/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +138 -0
- package/dist/index.js.map +1 -0
- package/dist/manifests/maven-settings.d.ts +7 -0
- package/dist/manifests/maven-settings.d.ts.map +1 -0
- package/dist/manifests/maven-settings.js +33 -0
- package/dist/manifests/maven-settings.js.map +1 -0
- package/dist/manifests/parent-properties.d.ts +12 -0
- package/dist/manifests/parent-properties.d.ts.map +1 -0
- package/dist/manifests/parent-properties.js +28 -0
- package/dist/manifests/parent-properties.js.map +1 -0
- package/dist/manifests/schema.json +198 -0
- package/dist/manifests/unreleased.yaml +3 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +13 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/resources/index.d.ts +32 -0
- package/dist/mcp/resources/index.d.ts.map +1 -0
- package/dist/mcp/resources/index.js +55 -0
- package/dist/mcp/resources/index.js.map +1 -0
- package/dist/mcp/server.d.ts +9 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +162 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/complete-step.d.ts +26 -0
- package/dist/mcp/tools/complete-step.d.ts.map +1 -0
- package/dist/mcp/tools/complete-step.js +73 -0
- package/dist/mcp/tools/complete-step.js.map +1 -0
- package/dist/mcp/tools/create-upgrade-plan.d.ts +36 -0
- package/dist/mcp/tools/create-upgrade-plan.d.ts.map +1 -0
- package/dist/mcp/tools/create-upgrade-plan.js +143 -0
- package/dist/mcp/tools/create-upgrade-plan.js.map +1 -0
- package/dist/mcp/tools/discover-project.d.ts +33 -0
- package/dist/mcp/tools/discover-project.d.ts.map +1 -0
- package/dist/mcp/tools/discover-project.js +96 -0
- package/dist/mcp/tools/discover-project.js.map +1 -0
- package/dist/mcp/tools/get-next-step.d.ts +54 -0
- package/dist/mcp/tools/get-next-step.d.ts.map +1 -0
- package/dist/mcp/tools/get-next-step.js +110 -0
- package/dist/mcp/tools/get-next-step.js.map +1 -0
- package/dist/mcp/tools/get-upgrade-status.d.ts +25 -0
- package/dist/mcp/tools/get-upgrade-status.d.ts.map +1 -0
- package/dist/mcp/tools/get-upgrade-status.js +79 -0
- package/dist/mcp/tools/get-upgrade-status.js.map +1 -0
- package/dist/mcp/tools/upgrade-targets.d.ts +19 -0
- package/dist/mcp/tools/upgrade-targets.d.ts.map +1 -0
- package/dist/mcp/tools/upgrade-targets.js +132 -0
- package/dist/mcp/tools/upgrade-targets.js.map +1 -0
- package/dist/planning/ai-analyzer.d.ts +20 -0
- package/dist/planning/ai-analyzer.d.ts.map +1 -0
- package/dist/planning/ai-analyzer.js +97 -0
- package/dist/planning/ai-analyzer.js.map +1 -0
- package/dist/planning/index.d.ts +8 -0
- package/dist/planning/index.d.ts.map +1 -0
- package/dist/planning/index.js +13 -0
- package/dist/planning/index.js.map +1 -0
- package/dist/planning/manifest-loader.d.ts +54 -0
- package/dist/planning/manifest-loader.d.ts.map +1 -0
- package/dist/planning/manifest-loader.js +233 -0
- package/dist/planning/manifest-loader.js.map +1 -0
- package/dist/planning/manifest-schema.d.ts +41 -0
- package/dist/planning/manifest-schema.d.ts.map +1 -0
- package/dist/planning/manifest-schema.js +71 -0
- package/dist/planning/manifest-schema.js.map +1 -0
- package/dist/planning/override-analyzer.d.ts +12 -0
- package/dist/planning/override-analyzer.d.ts.map +1 -0
- package/dist/planning/override-analyzer.js +42 -0
- package/dist/planning/override-analyzer.js.map +1 -0
- package/dist/planning/plan-generator.d.ts +15 -0
- package/dist/planning/plan-generator.d.ts.map +1 -0
- package/dist/planning/plan-generator.js +250 -0
- package/dist/planning/plan-generator.js.map +1 -0
- package/dist/planning/project-matcher.d.ts +65 -0
- package/dist/planning/project-matcher.d.ts.map +1 -0
- package/dist/planning/project-matcher.js +265 -0
- package/dist/planning/project-matcher.js.map +1 -0
- package/dist/planning/types.d.ts +237 -0
- package/dist/planning/types.d.ts.map +1 -0
- package/dist/planning/types.js +2 -0
- package/dist/planning/types.js.map +1 -0
- package/dist/types/index.d.ts +90 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/command-helpers.d.ts +14 -0
- package/dist/utils/command-helpers.d.ts.map +1 -0
- package/dist/utils/command-helpers.js +18 -0
- package/dist/utils/command-helpers.js.map +1 -0
- package/dist/utils/diff.d.ts +42 -0
- package/dist/utils/diff.d.ts.map +1 -0
- package/dist/utils/diff.js +80 -0
- package/dist/utils/diff.js.map +1 -0
- package/dist/utils/error.d.ts +5 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +8 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/fs.d.ts +50 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +117 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +31 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +62 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/output-writer.d.ts +26 -0
- package/dist/utils/output-writer.d.ts.map +1 -0
- package/dist/utils/output-writer.js +62 -0
- package/dist/utils/output-writer.js.map +1 -0
- package/dist/utils/pom-parser.d.ts +94 -0
- package/dist/utils/pom-parser.d.ts.map +1 -0
- package/dist/utils/pom-parser.js +120 -0
- package/dist/utils/pom-parser.js.map +1 -0
- package/dist/utils/spinner.d.ts +35 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +46 -0
- package/dist/utils/spinner.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { PlanStep, AutomationLevel } from '../planning/types.js';
|
|
2
|
+
import type { CVScanResult } from '../discovery/scanners/cv-scanner.js';
|
|
3
|
+
/**
|
|
4
|
+
* User decision for a step.
|
|
5
|
+
*/
|
|
6
|
+
export type StepDecision = 'accept' | 'reject' | 'skip' | 'view_diff' | 'edit';
|
|
7
|
+
/**
|
|
8
|
+
* Result of executing a single step.
|
|
9
|
+
*/
|
|
10
|
+
export interface StepExecutionResult {
|
|
11
|
+
stepNumber: number;
|
|
12
|
+
entryId: string;
|
|
13
|
+
success: boolean;
|
|
14
|
+
decision: StepDecision;
|
|
15
|
+
modifiedFiles: string[];
|
|
16
|
+
modifiedFileCount: number;
|
|
17
|
+
error?: string;
|
|
18
|
+
duration: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A file change to be applied.
|
|
22
|
+
*/
|
|
23
|
+
export interface FileChange {
|
|
24
|
+
filePath: string;
|
|
25
|
+
originalContent: string;
|
|
26
|
+
modifiedContent: string;
|
|
27
|
+
isNew: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Prepared changes for a step before execution.
|
|
31
|
+
*/
|
|
32
|
+
export interface PreparedChanges {
|
|
33
|
+
step: PlanStep;
|
|
34
|
+
changes: FileChange[];
|
|
35
|
+
totalFiles: number;
|
|
36
|
+
aiAnalysis?: string;
|
|
37
|
+
isValid: boolean;
|
|
38
|
+
validationErrors?: string[];
|
|
39
|
+
message?: string;
|
|
40
|
+
fallbackToManual?: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Execution state persisted between runs.
|
|
44
|
+
*/
|
|
45
|
+
export interface ExecutionState {
|
|
46
|
+
planFile: string;
|
|
47
|
+
planGeneratedAt: string;
|
|
48
|
+
currentStep: number;
|
|
49
|
+
completedSteps: number[];
|
|
50
|
+
skippedSteps: number[];
|
|
51
|
+
failedSteps: number[];
|
|
52
|
+
startedAt: string;
|
|
53
|
+
updatedAt: string;
|
|
54
|
+
isComplete: boolean;
|
|
55
|
+
/** CV pre-check scan result, stored for post-check comparison */
|
|
56
|
+
cvPreCheckResult?: CVScanResult;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Options for executing the upgrade plan.
|
|
60
|
+
*/
|
|
61
|
+
export interface ExecuteOptions {
|
|
62
|
+
planPath?: string;
|
|
63
|
+
resumeFromStep?: number;
|
|
64
|
+
nonInteractive?: boolean;
|
|
65
|
+
dryRun?: boolean;
|
|
66
|
+
verbose?: boolean;
|
|
67
|
+
autoAcceptAutomated?: boolean;
|
|
68
|
+
skipAI?: boolean;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Progress callback for execution UI.
|
|
72
|
+
*/
|
|
73
|
+
export interface ExecutionProgress {
|
|
74
|
+
currentStep: number;
|
|
75
|
+
totalSteps: number;
|
|
76
|
+
currentDescription: string;
|
|
77
|
+
phase: 'preparing' | 'executing' | 'confirming' | 'complete';
|
|
78
|
+
percentComplete: number;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Callback type for progress updates.
|
|
82
|
+
*/
|
|
83
|
+
export type ProgressCallback = (progress: ExecutionProgress) => void;
|
|
84
|
+
/**
|
|
85
|
+
* Interface for step executors (strategy pattern).
|
|
86
|
+
*/
|
|
87
|
+
export interface IStepExecutor {
|
|
88
|
+
readonly automationLevel: AutomationLevel;
|
|
89
|
+
prepare(step: PlanStep, projectRoot: string): Promise<PreparedChanges>;
|
|
90
|
+
apply(prepared: PreparedChanges, projectRoot: string): Promise<FileChange[]>;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/execution/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAExE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAE/E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,YAAY,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC;IAC7D,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACvE,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CAC9E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/execution/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { AIClient } from '../ai/types.js';
|
|
2
|
+
import type { BrxmUpgradeConfig } from '../config/index.js';
|
|
3
|
+
import type { ManifestLoadOptions } from '../planning/types.js';
|
|
4
|
+
import type { GuideSummary } from './types.js';
|
|
5
|
+
import type { DocsClient } from '../docs/docs-client.js';
|
|
6
|
+
/**
|
|
7
|
+
* Main orchestrator for the guided upgrade experience.
|
|
8
|
+
*
|
|
9
|
+
* Creates and runs the three upgrade phases in order (Discovery,
|
|
10
|
+
* Planning, Execution), with resume detection, error handling
|
|
11
|
+
* with retry/exit prompts, and optional AI chat breaks between phases.
|
|
12
|
+
*/
|
|
13
|
+
export declare class GuideRunner {
|
|
14
|
+
private readonly projectRoot;
|
|
15
|
+
private readonly config;
|
|
16
|
+
private readonly manifestOptions;
|
|
17
|
+
private readonly ai?;
|
|
18
|
+
private readonly docsClient?;
|
|
19
|
+
constructor(projectRoot: string, config: BrxmUpgradeConfig, manifestOptions: ManifestLoadOptions, ai?: AIClient | undefined, docsClient?: DocsClient | undefined);
|
|
20
|
+
/**
|
|
21
|
+
* Run the guided upgrade from start to finish (or from a resumed checkpoint).
|
|
22
|
+
*
|
|
23
|
+
* @returns Summary of the upgrade run including completed/skipped step counts
|
|
24
|
+
*/
|
|
25
|
+
run(): Promise<GuideSummary>;
|
|
26
|
+
/**
|
|
27
|
+
* Create the initial shared context for all phases.
|
|
28
|
+
*/
|
|
29
|
+
private createContext;
|
|
30
|
+
/**
|
|
31
|
+
* Check for existing upgrade artifacts on disk to detect a previous session.
|
|
32
|
+
*/
|
|
33
|
+
private detectResumeState;
|
|
34
|
+
/**
|
|
35
|
+
* Show resume banner and prompt the user to resume or start fresh.
|
|
36
|
+
*
|
|
37
|
+
* @returns The phase index to start from (0 = fresh start)
|
|
38
|
+
*/
|
|
39
|
+
private handleResume;
|
|
40
|
+
/**
|
|
41
|
+
* Prompt the user to retry a failed phase or exit.
|
|
42
|
+
*
|
|
43
|
+
* @returns true if the user chose to retry
|
|
44
|
+
*/
|
|
45
|
+
private promptRetryOrExit;
|
|
46
|
+
/**
|
|
47
|
+
* Pause between phases so the user can review output.
|
|
48
|
+
* When AI is available, offers a chat option; otherwise a simple continue prompt.
|
|
49
|
+
* Uses transitionMessage from the phase result when available.
|
|
50
|
+
*/
|
|
51
|
+
private offerPhasePause;
|
|
52
|
+
/**
|
|
53
|
+
* Export the upgrade plan as a markdown file for use by an AI agent.
|
|
54
|
+
*/
|
|
55
|
+
private exportPlan;
|
|
56
|
+
/**
|
|
57
|
+
* Build a fallback GuideSummary when the ExecutionPhase did not provide one
|
|
58
|
+
* (e.g., early exit due to failure).
|
|
59
|
+
*/
|
|
60
|
+
private buildFallbackSummary;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=GuideRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GuideRunner.d.ts","sourceRoot":"","sources":["../../src/guide/GuideRunner.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,OAAO,KAAK,EAA4B,YAAY,EAA4B,MAAM,YAAY,CAAC;AACnG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAezD;;;;;;GAMG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAJX,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,mBAAmB,EACpC,EAAE,CAAC,EAAE,QAAQ,YAAA,EACb,UAAU,CAAC,EAAE,UAAU,YAAA;IAG1C;;;;OAIG;IACG,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC;IAmFlC;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;YACW,iBAAiB;IA0D/B;;;;OAIG;YACW,YAAY;IA+C1B;;;;OAIG;YACW,iBAAiB;IAiB/B;;;;OAIG;YACW,eAAe;IA4H7B;;OAEG;YACW,UAAU;IAiBxB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAiB7B"}
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { getAvailableVersions } from '../planning/manifest-loader.js';
|
|
5
|
+
import { DiscoveryPhase } from './phases/DiscoveryPhase.js';
|
|
6
|
+
import { PlanPhase } from './phases/PlanPhase.js';
|
|
7
|
+
import { ExecutionPhase } from './phases/ExecutionPhase.js';
|
|
8
|
+
import { formatWelcomeBanner, formatIntroExplanation, formatResumeBanner, formatTransition, } from './rendering/formatters.js';
|
|
9
|
+
import { ChatContextBuilder } from './chat/ChatContextBuilder.js';
|
|
10
|
+
import { ChatLoop } from './chat/ChatLoop.js';
|
|
11
|
+
import { pathExists, readTextFile, writeTextFile, joinPaths } from '../utils/fs.js';
|
|
12
|
+
import { generateExportMarkdown } from '../commands/export.js';
|
|
13
|
+
/**
|
|
14
|
+
* Main orchestrator for the guided upgrade experience.
|
|
15
|
+
*
|
|
16
|
+
* Creates and runs the three upgrade phases in order (Discovery,
|
|
17
|
+
* Planning, Execution), with resume detection, error handling
|
|
18
|
+
* with retry/exit prompts, and optional AI chat breaks between phases.
|
|
19
|
+
*/
|
|
20
|
+
export class GuideRunner {
|
|
21
|
+
projectRoot;
|
|
22
|
+
config;
|
|
23
|
+
manifestOptions;
|
|
24
|
+
ai;
|
|
25
|
+
docsClient;
|
|
26
|
+
constructor(projectRoot, config, manifestOptions, ai, docsClient) {
|
|
27
|
+
this.projectRoot = projectRoot;
|
|
28
|
+
this.config = config;
|
|
29
|
+
this.manifestOptions = manifestOptions;
|
|
30
|
+
this.ai = ai;
|
|
31
|
+
this.docsClient = docsClient;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Run the guided upgrade from start to finish (or from a resumed checkpoint).
|
|
35
|
+
*
|
|
36
|
+
* @returns Summary of the upgrade run including completed/skipped step counts
|
|
37
|
+
*/
|
|
38
|
+
async run() {
|
|
39
|
+
try {
|
|
40
|
+
const context = this.createContext();
|
|
41
|
+
const resumeState = await this.detectResumeState();
|
|
42
|
+
let startPhaseIndex = 0;
|
|
43
|
+
const hasResumeState = resumeState.hasDiscovery || resumeState.hasPlan || resumeState.hasExecution;
|
|
44
|
+
if (hasResumeState) {
|
|
45
|
+
startPhaseIndex = await this.handleResume(resumeState, context);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
console.log(formatWelcomeBanner());
|
|
49
|
+
console.log(formatIntroExplanation());
|
|
50
|
+
// Fail fast if no manifests are available — the tool can't plan or
|
|
51
|
+
// execute without them, so there's no point starting discovery.
|
|
52
|
+
const versions = await getAvailableVersions(this.manifestOptions);
|
|
53
|
+
if (versions.length === 0) {
|
|
54
|
+
console.log(chalk.yellow('No upgrade manifests found.'));
|
|
55
|
+
console.log('');
|
|
56
|
+
console.log('Manifests are distributed separately. To set them up:');
|
|
57
|
+
console.log('');
|
|
58
|
+
console.log(` ${chalk.bold('brxm-upgrade setup-manifests')}`);
|
|
59
|
+
console.log('');
|
|
60
|
+
console.log('Or manually:');
|
|
61
|
+
console.log(' mvn dependency:copy \\');
|
|
62
|
+
console.log(' -Dartifact=com.bloomreach.xm:brxm-upgrade-manifests:RELEASE:zip \\');
|
|
63
|
+
console.log(' -DoutputDirectory=.brxm-upgrade/ \\');
|
|
64
|
+
console.log(' -Dtransitive=false -q');
|
|
65
|
+
console.log(' unzip .brxm-upgrade/brxm-upgrade-manifests-*.zip \\');
|
|
66
|
+
console.log(' -d .brxm-upgrade/manifests/');
|
|
67
|
+
console.log('');
|
|
68
|
+
console.log('Then add to .brxmrc:');
|
|
69
|
+
console.log(' upgrade:');
|
|
70
|
+
console.log(' source: local');
|
|
71
|
+
console.log(' localPath: .brxm-upgrade/manifests');
|
|
72
|
+
console.log('');
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const phases = [
|
|
77
|
+
new DiscoveryPhase(),
|
|
78
|
+
new PlanPhase(),
|
|
79
|
+
new ExecutionPhase(),
|
|
80
|
+
];
|
|
81
|
+
const startTime = Date.now();
|
|
82
|
+
for (let i = startPhaseIndex; i < phases.length; i++) {
|
|
83
|
+
const phase = phases[i];
|
|
84
|
+
const result = await phase.run(context);
|
|
85
|
+
if (!result.success) {
|
|
86
|
+
const shouldRetry = await this.promptRetryOrExit(phase.name, result);
|
|
87
|
+
if (shouldRetry) {
|
|
88
|
+
i--; // will increment back to the same index
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
// Exit early with partial summary
|
|
92
|
+
return this.buildFallbackSummary(context, startTime);
|
|
93
|
+
}
|
|
94
|
+
// Extract GuideSummary from ExecutionPhase data if available
|
|
95
|
+
if (phase.name === 'Execution' && result.data) {
|
|
96
|
+
return result.data;
|
|
97
|
+
}
|
|
98
|
+
// Pause between phases so the user can review output before continuing
|
|
99
|
+
if (phase.canChat && i < phases.length - 1) {
|
|
100
|
+
const exitRequested = await this.offerPhasePause(phase, result, context);
|
|
101
|
+
if (exitRequested) {
|
|
102
|
+
return this.buildFallbackSummary(context, startTime);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return this.buildFallbackSummary(context, startTime);
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
await this.docsClient?.disconnect();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Create the initial shared context for all phases.
|
|
114
|
+
*/
|
|
115
|
+
createContext() {
|
|
116
|
+
return {
|
|
117
|
+
projectRoot: this.projectRoot,
|
|
118
|
+
config: this.config,
|
|
119
|
+
manifestOptions: this.manifestOptions,
|
|
120
|
+
ai: this.ai,
|
|
121
|
+
docsClient: this.docsClient,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Check for existing upgrade artifacts on disk to detect a previous session.
|
|
126
|
+
*/
|
|
127
|
+
async detectResumeState() {
|
|
128
|
+
const baseDir = joinPaths(this.projectRoot, '.brxm-upgrade');
|
|
129
|
+
const state = {
|
|
130
|
+
hasDiscovery: false,
|
|
131
|
+
hasPlan: false,
|
|
132
|
+
hasExecution: false,
|
|
133
|
+
};
|
|
134
|
+
// Check for discovery.json
|
|
135
|
+
const discoveryPath = joinPaths(baseDir, 'discovery.json');
|
|
136
|
+
if (await pathExists(discoveryPath)) {
|
|
137
|
+
try {
|
|
138
|
+
const content = await readTextFile(discoveryPath);
|
|
139
|
+
state.discovery = JSON.parse(content);
|
|
140
|
+
state.hasDiscovery = true;
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
/* ignore corrupt files */
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Check for plan.json
|
|
147
|
+
const planPath = joinPaths(baseDir, 'plan.json');
|
|
148
|
+
if (await pathExists(planPath)) {
|
|
149
|
+
try {
|
|
150
|
+
const content = await readTextFile(planPath);
|
|
151
|
+
state.plan = JSON.parse(content);
|
|
152
|
+
state.hasPlan = true;
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
/* ignore corrupt files */
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Check for execution-state.json
|
|
159
|
+
const execPath = joinPaths(baseDir, 'execution-state.json');
|
|
160
|
+
if (await pathExists(execPath)) {
|
|
161
|
+
try {
|
|
162
|
+
const content = await readTextFile(execPath);
|
|
163
|
+
state.executionState = JSON.parse(content);
|
|
164
|
+
state.hasExecution = true;
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
/* ignore corrupt files */
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// Check for upgrade-state.json
|
|
171
|
+
const upgradePath = joinPaths(baseDir, 'upgrade-state.json');
|
|
172
|
+
if (await pathExists(upgradePath)) {
|
|
173
|
+
try {
|
|
174
|
+
const content = await readTextFile(upgradePath);
|
|
175
|
+
state.upgradeState = JSON.parse(content);
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
/* ignore corrupt files */
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return state;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Show resume banner and prompt the user to resume or start fresh.
|
|
185
|
+
*
|
|
186
|
+
* @returns The phase index to start from (0 = fresh start)
|
|
187
|
+
*/
|
|
188
|
+
async handleResume(resumeState, context) {
|
|
189
|
+
console.log(formatResumeBanner(resumeState));
|
|
190
|
+
const { choice } = (await inquirer.prompt([
|
|
191
|
+
{
|
|
192
|
+
type: 'select',
|
|
193
|
+
name: 'choice',
|
|
194
|
+
message: 'Would you like to resume or start fresh?',
|
|
195
|
+
choices: [
|
|
196
|
+
{ name: 'Resume from where I left off', value: 'resume' },
|
|
197
|
+
{ name: 'Start fresh (discard previous progress)', value: 'fresh' },
|
|
198
|
+
],
|
|
199
|
+
},
|
|
200
|
+
]));
|
|
201
|
+
if (choice === 'fresh')
|
|
202
|
+
return 0;
|
|
203
|
+
// Populate context from resume state and determine start phase
|
|
204
|
+
if (resumeState.hasExecution && resumeState.executionState && resumeState.plan) {
|
|
205
|
+
context.discovery = resumeState.discovery;
|
|
206
|
+
context.plan = resumeState.plan;
|
|
207
|
+
context.executionState = resumeState.executionState;
|
|
208
|
+
context.currentVersion = resumeState.plan.fromVersion;
|
|
209
|
+
context.targetVersion = resumeState.plan.toVersion;
|
|
210
|
+
return 2; // skip to ExecutionPhase
|
|
211
|
+
}
|
|
212
|
+
if (resumeState.hasPlan && resumeState.plan) {
|
|
213
|
+
context.discovery = resumeState.discovery;
|
|
214
|
+
context.plan = resumeState.plan;
|
|
215
|
+
context.currentVersion = resumeState.plan.fromVersion;
|
|
216
|
+
context.targetVersion = resumeState.plan.toVersion;
|
|
217
|
+
return 2; // skip to ExecutionPhase
|
|
218
|
+
}
|
|
219
|
+
if (resumeState.hasDiscovery && resumeState.discovery) {
|
|
220
|
+
context.discovery = resumeState.discovery;
|
|
221
|
+
context.currentVersion = resumeState.upgradeState?.currentVersion
|
|
222
|
+
?? resumeState.discovery.build.brxmVersion;
|
|
223
|
+
if (resumeState.upgradeState?.targetVersion) {
|
|
224
|
+
context.targetVersion = resumeState.upgradeState.targetVersion;
|
|
225
|
+
return 1; // skip to PlanPhase
|
|
226
|
+
}
|
|
227
|
+
return 0;
|
|
228
|
+
}
|
|
229
|
+
return 0;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Prompt the user to retry a failed phase or exit.
|
|
233
|
+
*
|
|
234
|
+
* @returns true if the user chose to retry
|
|
235
|
+
*/
|
|
236
|
+
async promptRetryOrExit(phaseName, result) {
|
|
237
|
+
const errorDetail = result.error ?? result.summary;
|
|
238
|
+
const { choice } = (await inquirer.prompt([
|
|
239
|
+
{
|
|
240
|
+
type: 'select',
|
|
241
|
+
name: 'choice',
|
|
242
|
+
message: `Phase "${phaseName}" failed: ${errorDetail}. What would you like to do?`,
|
|
243
|
+
choices: [
|
|
244
|
+
{ name: 'Retry this phase', value: 'retry' },
|
|
245
|
+
{ name: 'Exit', value: 'exit' },
|
|
246
|
+
],
|
|
247
|
+
},
|
|
248
|
+
]));
|
|
249
|
+
return choice === 'retry';
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Pause between phases so the user can review output.
|
|
253
|
+
* When AI is available, offers a chat option; otherwise a simple continue prompt.
|
|
254
|
+
* Uses transitionMessage from the phase result when available.
|
|
255
|
+
*/
|
|
256
|
+
async offerPhasePause(phase, result, context) {
|
|
257
|
+
console.log('');
|
|
258
|
+
if (result.transitionMessage) {
|
|
259
|
+
console.log(formatTransition(result.transitionMessage));
|
|
260
|
+
}
|
|
261
|
+
// Use transitionMessage.continuePrompt if available
|
|
262
|
+
const promptMessage = result.transitionMessage
|
|
263
|
+
? result.transitionMessage.continuePrompt
|
|
264
|
+
: `${phase.name} phase complete. ${result.summary}`;
|
|
265
|
+
const canExport = phase.name === 'Plan' && context.plan && context.discovery;
|
|
266
|
+
if (this.ai) {
|
|
267
|
+
// Loop so user can export or chat and then return to the same menu
|
|
268
|
+
while (true) {
|
|
269
|
+
const choices = [
|
|
270
|
+
{ name: 'Continue to next phase', value: 'continue' },
|
|
271
|
+
];
|
|
272
|
+
if (canExport) {
|
|
273
|
+
choices.push({ name: 'Export plan for AI agent', value: 'export' });
|
|
274
|
+
}
|
|
275
|
+
choices.push({ name: 'Ask questions about the results first', value: 'chat' });
|
|
276
|
+
choices.push({ name: 'Exit', value: 'exit' });
|
|
277
|
+
const { choice } = (await inquirer.prompt([
|
|
278
|
+
{
|
|
279
|
+
type: 'select',
|
|
280
|
+
name: 'choice',
|
|
281
|
+
message: promptMessage,
|
|
282
|
+
choices,
|
|
283
|
+
},
|
|
284
|
+
]));
|
|
285
|
+
if (choice === 'continue') {
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
if (choice === 'export') {
|
|
289
|
+
try {
|
|
290
|
+
await this.exportPlan(context);
|
|
291
|
+
}
|
|
292
|
+
catch (err) {
|
|
293
|
+
console.log(chalk.red(` Export failed: ${err instanceof Error ? err.message : String(err)}`));
|
|
294
|
+
}
|
|
295
|
+
continue;
|
|
296
|
+
}
|
|
297
|
+
if (choice === 'chat') {
|
|
298
|
+
const contextBuilder = new ChatContextBuilder();
|
|
299
|
+
const chatContext = contextBuilder.buildPhaseContext(phase.name, result.summary, context.discovery, context.plan);
|
|
300
|
+
const chatLoop = new ChatLoop(this.ai);
|
|
301
|
+
await chatLoop.run(chatContext, contextBuilder.buildSystemPrompt());
|
|
302
|
+
continue;
|
|
303
|
+
}
|
|
304
|
+
if (choice === 'exit') {
|
|
305
|
+
console.log(chalk.dim(' Take your time — re-run when you\'re ready.'));
|
|
306
|
+
return true;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
else if (canExport) {
|
|
312
|
+
// Without AI but with exportable plan: offer a select menu
|
|
313
|
+
while (true) {
|
|
314
|
+
const { choice } = (await inquirer.prompt([
|
|
315
|
+
{
|
|
316
|
+
type: 'select',
|
|
317
|
+
name: 'choice',
|
|
318
|
+
message: promptMessage,
|
|
319
|
+
choices: [
|
|
320
|
+
{ name: 'Continue to execution', value: 'continue' },
|
|
321
|
+
{ name: 'Export plan for AI agent', value: 'export' },
|
|
322
|
+
{ name: 'Exit', value: 'exit' },
|
|
323
|
+
],
|
|
324
|
+
},
|
|
325
|
+
]));
|
|
326
|
+
if (choice === 'continue') {
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
if (choice === 'export') {
|
|
330
|
+
try {
|
|
331
|
+
await this.exportPlan(context);
|
|
332
|
+
}
|
|
333
|
+
catch (err) {
|
|
334
|
+
console.log(chalk.red(` Export failed: ${err instanceof Error ? err.message : String(err)}`));
|
|
335
|
+
}
|
|
336
|
+
continue;
|
|
337
|
+
}
|
|
338
|
+
if (choice === 'exit') {
|
|
339
|
+
console.log(chalk.dim(' Take your time — re-run when you\'re ready.'));
|
|
340
|
+
return true;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
const { ready } = (await inquirer.prompt([
|
|
346
|
+
{
|
|
347
|
+
type: 'confirm',
|
|
348
|
+
name: 'ready',
|
|
349
|
+
message: `${promptMessage} Ready to continue?`,
|
|
350
|
+
default: true,
|
|
351
|
+
},
|
|
352
|
+
]));
|
|
353
|
+
if (!ready) {
|
|
354
|
+
console.log(chalk.dim(' Take your time — re-run when you\'re ready.'));
|
|
355
|
+
return true;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return false;
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Export the upgrade plan as a markdown file for use by an AI agent.
|
|
362
|
+
*/
|
|
363
|
+
async exportPlan(context) {
|
|
364
|
+
if (!context.plan || !context.discovery)
|
|
365
|
+
return;
|
|
366
|
+
const outputPath = joinPaths(context.projectRoot, context.config.output.exportPath, 'upgrade-plan.md');
|
|
367
|
+
const markdown = generateExportMarkdown(context.plan, context.discovery);
|
|
368
|
+
await writeTextFile(outputPath, markdown);
|
|
369
|
+
console.log('');
|
|
370
|
+
console.log(chalk.green('\u2714')
|
|
371
|
+
+ ` Exported upgrade plan to ${context.config.output.exportPath}/upgrade-plan.md (${context.plan.summary.totalSteps} steps)`);
|
|
372
|
+
console.log('');
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Build a fallback GuideSummary when the ExecutionPhase did not provide one
|
|
376
|
+
* (e.g., early exit due to failure).
|
|
377
|
+
*/
|
|
378
|
+
buildFallbackSummary(context, startTime) {
|
|
379
|
+
const results = context.executionResults ?? [];
|
|
380
|
+
return {
|
|
381
|
+
fromVersion: context.currentVersion ?? 'unknown',
|
|
382
|
+
toVersion: context.targetVersion ?? 'unknown',
|
|
383
|
+
completedSteps: results.filter((r) => r.success && r.decision === 'accept').length,
|
|
384
|
+
skippedSteps: results.filter((r) => r.decision === 'skip').length,
|
|
385
|
+
manualStepsRemaining: context.plan?.steps.filter((s) => !results.some((r) => r.stepNumber === s.stepNumber && r.success && r.decision === 'accept') && s.automatable === 'false') ?? [],
|
|
386
|
+
duration: Date.now() - startTime,
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
//# sourceMappingURL=GuideRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GuideRunner.js","sourceRoot":"","sources":["../../src/guide/GuideRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ProjectContext } from '../../discovery/types.js';
|
|
2
|
+
import type { PlanStep, UpgradePlan } from '../../planning/types.js';
|
|
3
|
+
interface FileContent {
|
|
4
|
+
path: string;
|
|
5
|
+
content: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Builds focused AI context windows for guide interactions.
|
|
9
|
+
* Each method composes a context string from relevant artifacts,
|
|
10
|
+
* keeping token usage bounded per interaction type.
|
|
11
|
+
*/
|
|
12
|
+
export declare class ChatContextBuilder {
|
|
13
|
+
/**
|
|
14
|
+
* System prompt that defines the AI's role.
|
|
15
|
+
*/
|
|
16
|
+
buildSystemPrompt(): string;
|
|
17
|
+
/**
|
|
18
|
+
* Build context for phase-level chat (between phases).
|
|
19
|
+
*/
|
|
20
|
+
buildPhaseContext(phaseName: string, phaseSummary: string, discovery?: ProjectContext, plan?: UpgradePlan): string;
|
|
21
|
+
/**
|
|
22
|
+
* Build context for step-level coaching (during execution).
|
|
23
|
+
*/
|
|
24
|
+
buildStepContext(step: PlanStep, discovery?: ProjectContext): string;
|
|
25
|
+
/**
|
|
26
|
+
* Build context for AI fix generation.
|
|
27
|
+
*/
|
|
28
|
+
buildFixContext(step: PlanStep, discovery: ProjectContext | undefined, files: FileContent[]): string;
|
|
29
|
+
/**
|
|
30
|
+
* Build a prompt for AI-generated version summary in a customer-friendly format.
|
|
31
|
+
*
|
|
32
|
+
* @param manifestDescriptions - List of manifest entry description strings to summarize
|
|
33
|
+
* @returns A prompt string that instructs the AI to respond with JSON in the form:
|
|
34
|
+
* `{ "headline": string, "bullets": string[] }` (up to 4 bullets).
|
|
35
|
+
* Callers such as {@link DiscoveryPhase.buildSummary} must `JSON.parse()` the
|
|
36
|
+
* response and handle parse failures, as the AI may occasionally deviate from
|
|
37
|
+
* the requested format.
|
|
38
|
+
*/
|
|
39
|
+
buildVersionSummaryPrompt(manifestDescriptions: string[]): string;
|
|
40
|
+
private condensedDiscovery;
|
|
41
|
+
private condensedPlan;
|
|
42
|
+
}
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=ChatContextBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatContextBuilder.d.ts","sourceRoot":"","sources":["../../../src/guide/chat/ChatContextBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAErE,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,qBAAa,kBAAkB;IAC7B;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAU3B;;OAEG;IACH,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,cAAc,EAC1B,IAAI,CAAC,EAAE,WAAW,GACjB,MAAM;IAaT;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,cAAc,GAAG,MAAM;IA6BpE;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,GAAG,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM;IAapG;;;;;;;;;OASG;IACH,yBAAyB,CAAC,oBAAoB,EAAE,MAAM,EAAE,GAAG,MAAM;IAYjE,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,aAAa;CAOtB"}
|