@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,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds focused AI context windows for guide interactions.
|
|
3
|
+
* Each method composes a context string from relevant artifacts,
|
|
4
|
+
* keeping token usage bounded per interaction type.
|
|
5
|
+
*/
|
|
6
|
+
export class ChatContextBuilder {
|
|
7
|
+
/**
|
|
8
|
+
* System prompt that defines the AI's role.
|
|
9
|
+
*/
|
|
10
|
+
buildSystemPrompt() {
|
|
11
|
+
return [
|
|
12
|
+
'You are a brXM upgrade assistant helping a customer upgrade their Bloomreach Experience Manager project.',
|
|
13
|
+
'You explain technical changes in plain language. Be concise and helpful.',
|
|
14
|
+
'When discussing code changes, reference specific files and line numbers when possible.',
|
|
15
|
+
'If you are unsure about something, say so rather than guessing.',
|
|
16
|
+
'Format your responses for terminal display — use short paragraphs, no markdown headers.',
|
|
17
|
+
].join('\n');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Build context for phase-level chat (between phases).
|
|
21
|
+
*/
|
|
22
|
+
buildPhaseContext(phaseName, phaseSummary, discovery, plan) {
|
|
23
|
+
const sections = [];
|
|
24
|
+
sections.push(`Current phase: ${phaseName}`);
|
|
25
|
+
sections.push(`What just happened: ${phaseSummary}`);
|
|
26
|
+
if (discovery) {
|
|
27
|
+
sections.push(this.condensedDiscovery(discovery));
|
|
28
|
+
}
|
|
29
|
+
if (plan) {
|
|
30
|
+
sections.push(this.condensedPlan(plan));
|
|
31
|
+
}
|
|
32
|
+
return sections.join('\n\n');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Build context for step-level coaching (during execution).
|
|
36
|
+
*/
|
|
37
|
+
buildStepContext(step, discovery) {
|
|
38
|
+
const sections = [];
|
|
39
|
+
sections.push(`Current step: ${String(step.stepNumber)} — ${step.entryId}`);
|
|
40
|
+
sections.push(`Description: ${step.description}`);
|
|
41
|
+
sections.push(`Type: ${step.type}`);
|
|
42
|
+
sections.push(`Automation: ${step.automatable}`);
|
|
43
|
+
sections.push(`Risk level: ${String(step.riskLevel)}/5`);
|
|
44
|
+
if (step.affectedFiles.length > 0) {
|
|
45
|
+
const fileList = step.affectedFiles.length <= 10
|
|
46
|
+
? step.affectedFiles.join('\n ')
|
|
47
|
+
: step.affectedFiles.slice(0, 10).join('\n ') +
|
|
48
|
+
`\n ... and ${String(step.affectedFiles.length - 10)} more`;
|
|
49
|
+
sections.push(`Affected files:\n ${fileList}`);
|
|
50
|
+
}
|
|
51
|
+
if (step.analysis) {
|
|
52
|
+
sections.push(`AI analysis: ${step.analysis}`);
|
|
53
|
+
}
|
|
54
|
+
if (step.manualSteps) {
|
|
55
|
+
sections.push(`Manual steps:\n${step.manualSteps.map((s, i) => ` ${String(i + 1)}. ${s}`).join('\n')}`);
|
|
56
|
+
}
|
|
57
|
+
if (step.documentationUrl) {
|
|
58
|
+
sections.push(`Documentation: ${step.documentationUrl}`);
|
|
59
|
+
}
|
|
60
|
+
if (discovery) {
|
|
61
|
+
sections.push(this.condensedDiscovery(discovery));
|
|
62
|
+
}
|
|
63
|
+
return sections.join('\n\n');
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Build context for AI fix generation.
|
|
67
|
+
*/
|
|
68
|
+
buildFixContext(step, discovery, files) {
|
|
69
|
+
const sections = [];
|
|
70
|
+
sections.push(this.buildStepContext(step, discovery));
|
|
71
|
+
sections.push('File contents for reference:');
|
|
72
|
+
for (const file of files) {
|
|
73
|
+
const content = file.content.length > 3000
|
|
74
|
+
? file.content.substring(0, 3000) + '\n... (truncated)'
|
|
75
|
+
: file.content;
|
|
76
|
+
sections.push(`--- ${file.path} ---\n${content}`);
|
|
77
|
+
}
|
|
78
|
+
return sections.join('\n\n');
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Build a prompt for AI-generated version summary in a customer-friendly format.
|
|
82
|
+
*
|
|
83
|
+
* @param manifestDescriptions - List of manifest entry description strings to summarize
|
|
84
|
+
* @returns A prompt string that instructs the AI to respond with JSON in the form:
|
|
85
|
+
* `{ "headline": string, "bullets": string[] }` (up to 4 bullets).
|
|
86
|
+
* Callers such as {@link DiscoveryPhase.buildSummary} must `JSON.parse()` the
|
|
87
|
+
* response and handle parse failures, as the AI may occasionally deviate from
|
|
88
|
+
* the requested format.
|
|
89
|
+
*/
|
|
90
|
+
buildVersionSummaryPrompt(manifestDescriptions) {
|
|
91
|
+
return [
|
|
92
|
+
'Summarize these upgrade manifest entries into a customer-friendly changelog.',
|
|
93
|
+
'Group by theme. Mention the number of automated vs. manual steps.',
|
|
94
|
+
'Keep it under 4 bullet points. Write for a technical audience that may not know Bloomreach internals.',
|
|
95
|
+
'Return JSON: { "headline": "short title", "bullets": ["point1", "point2"] }',
|
|
96
|
+
'',
|
|
97
|
+
'Entries:',
|
|
98
|
+
...manifestDescriptions.map((d, i) => `${String(i + 1)}. ${d}`),
|
|
99
|
+
].join('\n');
|
|
100
|
+
}
|
|
101
|
+
condensedDiscovery(discovery) {
|
|
102
|
+
return [
|
|
103
|
+
'Project:',
|
|
104
|
+
` Version: ${discovery.build.brxmVersion}`,
|
|
105
|
+
` Modules: ${String(discovery.build.moduleCount)}`,
|
|
106
|
+
` Java files: ${String(discovery.build.totalJavaFiles)}`,
|
|
107
|
+
` Upgrade ready: ${discovery.isUpgradeReady ? 'yes' : 'no'}`,
|
|
108
|
+
discovery.validations.length > 0
|
|
109
|
+
? ` Warnings: ${String(discovery.validations.length)}`
|
|
110
|
+
: '',
|
|
111
|
+
].filter(Boolean).join('\n');
|
|
112
|
+
}
|
|
113
|
+
condensedPlan(plan) {
|
|
114
|
+
return [
|
|
115
|
+
'Plan:',
|
|
116
|
+
` ${plan.fromVersion} → ${plan.toVersion}`,
|
|
117
|
+
` Steps: ${String(plan.summary.totalSteps)} (${String(plan.summary.automatedSteps)} auto, ${String(plan.summary.aiAssistedSteps)} AI, ${String(plan.summary.manualSteps)} manual)`,
|
|
118
|
+
].join('\n');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=ChatContextBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatContextBuilder.js","sourceRoot":"","sources":["../../../src/guide/chat/ChatContextBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AIClient } from '../../ai/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Interactive Q&A loop. Prompts the user for free-text questions,
|
|
4
|
+
* sends them to the AI with the provided context, and displays responses.
|
|
5
|
+
* Loops until the user enters an empty string.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ChatLoop {
|
|
8
|
+
private readonly ai;
|
|
9
|
+
constructor(ai: AIClient);
|
|
10
|
+
/**
|
|
11
|
+
* Run the chat loop.
|
|
12
|
+
*
|
|
13
|
+
* @param contextPrompt - The context to include with each question
|
|
14
|
+
* @param systemPrompt - The system prompt for the AI
|
|
15
|
+
*/
|
|
16
|
+
run(contextPrompt: string, systemPrompt: string): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=ChatLoop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatLoop.d.ts","sourceRoot":"","sources":["../../../src/guide/chat/ChatLoop.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMlD;;;;GAIG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;gBAElB,EAAE,EAAE,QAAQ;IAIxB;;;;;OAKG;IACG,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAsCtE"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import inquirer from 'inquirer';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { createLogger } from '../../utils/logger.js';
|
|
5
|
+
import { createSpinner } from '../../utils/spinner.js';
|
|
6
|
+
const logger = createLogger({ prefix: 'ChatLoop' });
|
|
7
|
+
/**
|
|
8
|
+
* Interactive Q&A loop. Prompts the user for free-text questions,
|
|
9
|
+
* sends them to the AI with the provided context, and displays responses.
|
|
10
|
+
* Loops until the user enters an empty string.
|
|
11
|
+
*/
|
|
12
|
+
export class ChatLoop {
|
|
13
|
+
ai;
|
|
14
|
+
constructor(ai) {
|
|
15
|
+
this.ai = ai;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Run the chat loop.
|
|
19
|
+
*
|
|
20
|
+
* @param contextPrompt - The context to include with each question
|
|
21
|
+
* @param systemPrompt - The system prompt for the AI
|
|
22
|
+
*/
|
|
23
|
+
async run(contextPrompt, systemPrompt) {
|
|
24
|
+
while (true) {
|
|
25
|
+
const { question } = (await inquirer.prompt([
|
|
26
|
+
{
|
|
27
|
+
type: 'input',
|
|
28
|
+
name: 'question',
|
|
29
|
+
message: chalk.cyan('Your question (press Enter to continue):'),
|
|
30
|
+
},
|
|
31
|
+
]));
|
|
32
|
+
const trimmed = question.trim();
|
|
33
|
+
if (!trimmed) {
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
const spinner = createSpinner({ text: 'Thinking...', color: 'cyan' });
|
|
37
|
+
spinner.start();
|
|
38
|
+
try {
|
|
39
|
+
const fullPrompt = `Context:\n${contextPrompt}\n\nUser question: ${trimmed}`;
|
|
40
|
+
const result = await this.ai.generate(fullPrompt, {
|
|
41
|
+
system: systemPrompt,
|
|
42
|
+
maxTokens: 1000,
|
|
43
|
+
temperature: 0.3,
|
|
44
|
+
});
|
|
45
|
+
spinner.stop();
|
|
46
|
+
console.log('');
|
|
47
|
+
console.log(chalk.dim(' ') + result.text.split('\n').join('\n '));
|
|
48
|
+
console.log('');
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
spinner.fail('Failed to generate response');
|
|
52
|
+
logger.warn(`AI response failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
53
|
+
console.log(chalk.yellow(' Sorry, I couldn\'t generate a response. Try again or press Enter to continue.'));
|
|
54
|
+
console.log('');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=ChatLoop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatLoop.js","sourceRoot":"","sources":["../../../src/guide/chat/ChatLoop.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AAEpD;;;;GAIG;AACH,MAAM,OAAO,QAAQ;IACF,EAAE,CAAW;IAE9B,YAAY,EAAY;QACtB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAC,aAAqB,EAAE,YAAoB;QACnD,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC;gBAC1C;oBACE,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC;iBAChE;aACF,CAAC,CAAyB,CAAC;YAE5B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM;YACR,CAAC;YAED,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,KAAK,EAAE,CAAC;YAEhB,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,aAAa,aAAa,sBAAsB,OAAO,EAAE,CAAC;gBAC7E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE;oBAChD,MAAM,EAAE,YAAY;oBACpB,SAAS,EAAE,IAAI;oBACf,WAAW,EAAE,GAAG;iBACjB,CAAC,CAAC;gBAEH,OAAO,CAAC,IAAI,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAC5C,MAAM,CAAC,IAAI,CAAC,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;gBAC/F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iFAAiF,CAAC,CAAC,CAAC;gBAC7G,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AIClient } from '../../ai/types.js';
|
|
2
|
+
import type { PlanStep } from '../../planning/types.js';
|
|
3
|
+
import type { ProjectContext } from '../../discovery/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Provides per-step AI coaching during the execution phase.
|
|
6
|
+
* Generates briefings, handles Q&A, and supports "fix this for me" flows.
|
|
7
|
+
*/
|
|
8
|
+
export declare class StepCoach {
|
|
9
|
+
private readonly ai;
|
|
10
|
+
private readonly contextBuilder;
|
|
11
|
+
constructor(ai: AIClient);
|
|
12
|
+
/**
|
|
13
|
+
* Generate an AI briefing for a step in plain language.
|
|
14
|
+
* Falls back to the step description if AI fails.
|
|
15
|
+
*
|
|
16
|
+
* @param step - The plan step to generate a briefing for
|
|
17
|
+
* @param discovery - Optional project context for richer explanations
|
|
18
|
+
* @returns A plain-language briefing string
|
|
19
|
+
*/
|
|
20
|
+
generateBriefing(step: PlanStep, discovery?: ProjectContext): Promise<string>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=StepCoach.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepCoach.d.ts","sourceRoot":"","sources":["../../../src/guide/chat/StepCoach.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAM/D;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;gBAExC,EAAE,EAAE,QAAQ;IAKxB;;;;;;;OAOG;IACG,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAoBpF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ChatContextBuilder } from './ChatContextBuilder.js';
|
|
2
|
+
import { createLogger } from '../../utils/logger.js';
|
|
3
|
+
const logger = createLogger({ prefix: 'StepCoach' });
|
|
4
|
+
/**
|
|
5
|
+
* Provides per-step AI coaching during the execution phase.
|
|
6
|
+
* Generates briefings, handles Q&A, and supports "fix this for me" flows.
|
|
7
|
+
*/
|
|
8
|
+
export class StepCoach {
|
|
9
|
+
ai;
|
|
10
|
+
contextBuilder;
|
|
11
|
+
constructor(ai) {
|
|
12
|
+
this.ai = ai;
|
|
13
|
+
this.contextBuilder = new ChatContextBuilder();
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Generate an AI briefing for a step in plain language.
|
|
17
|
+
* Falls back to the step description if AI fails.
|
|
18
|
+
*
|
|
19
|
+
* @param step - The plan step to generate a briefing for
|
|
20
|
+
* @param discovery - Optional project context for richer explanations
|
|
21
|
+
* @returns A plain-language briefing string
|
|
22
|
+
*/
|
|
23
|
+
async generateBriefing(step, discovery) {
|
|
24
|
+
try {
|
|
25
|
+
const context = this.contextBuilder.buildStepContext(step, discovery);
|
|
26
|
+
const result = await this.ai.generate(`Explain this upgrade step in 2-3 sentences for a customer who may not know the platform internals:\n\n${context}`, {
|
|
27
|
+
system: this.contextBuilder.buildSystemPrompt(),
|
|
28
|
+
maxTokens: 300,
|
|
29
|
+
temperature: 0.3,
|
|
30
|
+
});
|
|
31
|
+
return result.text;
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
logger.warn(`Failed to generate briefing: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
35
|
+
return step.description;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=StepCoach.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepCoach.js","sourceRoot":"","sources":["../../../src/guide/chat/StepCoach.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;AAErD;;;GAGG;AACH,MAAM,OAAO,SAAS;IACH,EAAE,CAAW;IACb,cAAc,CAAqB;IAEpD,YAAY,EAAY;QACtB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACjD,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,gBAAgB,CAAC,IAAc,EAAE,SAA0B;QAC/D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CACnC,yGAAyG,OAAO,EAAE,EAClH;gBACE,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE;gBAC/C,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,GAAG;aACjB,CACF,CAAC;YACF,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CACT,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAC3F,CAAC;YACF,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;IACH,CAAC;CAEF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/guide/chat/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/guide/chat/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guide/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,WAAW,GACZ,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guide/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { GuidePhase, GuideContext, PhaseResult } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Discovery phase: scans the project using DiscoveryOrchestrator,
|
|
4
|
+
* presents findings with an AI summary (or raw validation list),
|
|
5
|
+
* and persists the result to disk.
|
|
6
|
+
*/
|
|
7
|
+
export declare class DiscoveryPhase implements GuidePhase {
|
|
8
|
+
readonly name = "Discovery";
|
|
9
|
+
readonly phaseNumber = 1;
|
|
10
|
+
readonly totalPhases = 3;
|
|
11
|
+
readonly canChat = true;
|
|
12
|
+
run(context: GuideContext): Promise<PhaseResult>;
|
|
13
|
+
/**
|
|
14
|
+
* Resolve the target version for a guided upgrade run.
|
|
15
|
+
*/
|
|
16
|
+
private selectTargetVersion;
|
|
17
|
+
/**
|
|
18
|
+
* Display validation issues grouped by severity.
|
|
19
|
+
*/
|
|
20
|
+
private showValidations;
|
|
21
|
+
/**
|
|
22
|
+
* Display file path and suggestion for a validation issue, if present.
|
|
23
|
+
*/
|
|
24
|
+
private showIssueDetails;
|
|
25
|
+
/**
|
|
26
|
+
* Generate and display an AI-powered summary of the discovery results.
|
|
27
|
+
*/
|
|
28
|
+
private showAiSummary;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=DiscoveryPhase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiscoveryPhase.d.ts","sourceRoot":"","sources":["../../../src/guide/phases/DiscoveryPhase.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAGzE;;;;GAIG;AACH,qBAAa,cAAe,YAAW,UAAU;IAC/C,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,WAAW,KAAK;IACzB,QAAQ,CAAC,WAAW,KAAK;IACzB,QAAQ,CAAC,OAAO,QAAQ;IAElB,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAyHtD;;OAEG;YACW,mBAAmB;IAyCjC;;OAEG;IACH,OAAO,CAAC,eAAe;IA4CvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;OAEG;YACW,aAAa;CA4B5B"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import semver from 'semver';
|
|
5
|
+
import { DiscoveryOrchestrator } from '../../discovery/orchestrator.js';
|
|
6
|
+
import { getAvailableVersions } from '../../planning/index.js';
|
|
7
|
+
import { saveUpgradeState } from '../../core/upgrade-state.js';
|
|
8
|
+
import { createSpinner } from '../../utils/spinner.js';
|
|
9
|
+
import { writeTextFile, joinPaths } from '../../utils/fs.js';
|
|
10
|
+
import { formatPhaseHeader } from '../rendering/formatters.js';
|
|
11
|
+
import { ChatContextBuilder } from '../chat/ChatContextBuilder.js';
|
|
12
|
+
/**
|
|
13
|
+
* Discovery phase: scans the project using DiscoveryOrchestrator,
|
|
14
|
+
* presents findings with an AI summary (or raw validation list),
|
|
15
|
+
* and persists the result to disk.
|
|
16
|
+
*/
|
|
17
|
+
export class DiscoveryPhase {
|
|
18
|
+
name = 'Discovery';
|
|
19
|
+
phaseNumber = 1;
|
|
20
|
+
totalPhases = 3;
|
|
21
|
+
canChat = true;
|
|
22
|
+
async run(context) {
|
|
23
|
+
console.log(formatPhaseHeader(this.phaseNumber, this.totalPhases, this.name));
|
|
24
|
+
console.log(chalk.dim(' Analyzing your project structure, Maven modules, and'));
|
|
25
|
+
console.log(chalk.dim(' configuration to determine upgrade readiness.'));
|
|
26
|
+
console.log('');
|
|
27
|
+
const spinner = createSpinner({ text: 'Scanning project...', color: 'cyan' });
|
|
28
|
+
spinner.start();
|
|
29
|
+
let result;
|
|
30
|
+
try {
|
|
31
|
+
const orchestrator = new DiscoveryOrchestrator();
|
|
32
|
+
result = await orchestrator.discover(context.projectRoot);
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
spinner.fail('Discovery failed');
|
|
36
|
+
const message = error instanceof Error ? error.message : 'Unknown error during discovery';
|
|
37
|
+
return {
|
|
38
|
+
success: false,
|
|
39
|
+
summary: 'Discovery failed unexpectedly',
|
|
40
|
+
error: message,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (!result.success || !result.context) {
|
|
44
|
+
spinner.fail('Discovery failed');
|
|
45
|
+
return {
|
|
46
|
+
success: false,
|
|
47
|
+
summary: 'Discovery failed',
|
|
48
|
+
error: result.error ?? 'Unknown discovery error',
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const projectContext = result.context;
|
|
52
|
+
context.discovery = projectContext;
|
|
53
|
+
context.currentVersion = projectContext.build.brxmVersion;
|
|
54
|
+
const moduleCount = String(projectContext.build.moduleCount);
|
|
55
|
+
const javaFiles = String(projectContext.build.totalJavaFiles);
|
|
56
|
+
spinner.succeed(`Scanned ${moduleCount} modules, ${javaFiles} Java files (${String(result.duration)}ms)`);
|
|
57
|
+
// Display warnings from the orchestrator
|
|
58
|
+
if (result.warnings && result.warnings.length > 0) {
|
|
59
|
+
for (const warning of result.warnings) {
|
|
60
|
+
console.log(chalk.yellow(` ⚠ ${warning}`));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Show validation results
|
|
64
|
+
this.showValidations(projectContext.validations, projectContext.isUpgradeReady);
|
|
65
|
+
// Show AI summary if available, or raw findings
|
|
66
|
+
if (context.ai) {
|
|
67
|
+
await this.showAiSummary(context);
|
|
68
|
+
}
|
|
69
|
+
// If there are errors, block progression — user must fix them first
|
|
70
|
+
if (!projectContext.isUpgradeReady) {
|
|
71
|
+
const errorCount = projectContext.validations.filter((v) => v.severity === 'error').length;
|
|
72
|
+
console.log('');
|
|
73
|
+
console.log(chalk.red(' Please fix the error(s) above and re-run the upgrade tool.'));
|
|
74
|
+
return {
|
|
75
|
+
success: false,
|
|
76
|
+
summary: `Discovery found ${String(errorCount)} error(s) that must be resolved before upgrading`,
|
|
77
|
+
error: 'Project has blocking errors that must be resolved before proceeding',
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// Select target version for the next phase
|
|
81
|
+
try {
|
|
82
|
+
context.targetVersion = await this.selectTargetVersion(context, projectContext.build.brxmVersion);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
spinner.fail('Target version selection failed');
|
|
86
|
+
const message = error instanceof Error ? error.message : 'Unable to resolve target version';
|
|
87
|
+
return {
|
|
88
|
+
success: false,
|
|
89
|
+
summary: 'Discovery completed but target selection failed',
|
|
90
|
+
error: message,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
// Persist discovery to disk
|
|
94
|
+
try {
|
|
95
|
+
const outputPath = joinPaths(context.projectRoot, '.brxm-upgrade', 'discovery.json');
|
|
96
|
+
await writeTextFile(outputPath, JSON.stringify(projectContext, null, 2));
|
|
97
|
+
if (context.config.output.verbose) {
|
|
98
|
+
console.log(chalk.dim(` Saved to .brxm-upgrade/discovery.json`));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// Non-critical: warn but don't fail the phase
|
|
103
|
+
console.log(chalk.yellow(' Could not save discovery.json'));
|
|
104
|
+
}
|
|
105
|
+
try {
|
|
106
|
+
await saveUpgradeState(context.projectRoot, {
|
|
107
|
+
currentVersion: context.currentVersion,
|
|
108
|
+
targetVersion: context.targetVersion,
|
|
109
|
+
});
|
|
110
|
+
if (context.config.output.verbose) {
|
|
111
|
+
console.log(chalk.dim(' Saved to .brxm-upgrade/upgrade-state.json'));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
console.log(chalk.yellow(' Could not save upgrade-state.json'));
|
|
116
|
+
}
|
|
117
|
+
const summary = projectContext.isUpgradeReady
|
|
118
|
+
? `Project is ready for upgrade (${moduleCount} modules, ${javaFiles} Java files)`
|
|
119
|
+
: `Project has issues to resolve before upgrade (${String(projectContext.validations.filter((v) => v.severity === 'error').length)} errors)`;
|
|
120
|
+
return {
|
|
121
|
+
success: true,
|
|
122
|
+
summary: `${summary}; target version ${context.targetVersion} selected`,
|
|
123
|
+
data: projectContext,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Resolve the target version for a guided upgrade run.
|
|
128
|
+
*/
|
|
129
|
+
async selectTargetVersion(context, currentVersion) {
|
|
130
|
+
const versions = await getAvailableVersions(context.manifestOptions);
|
|
131
|
+
if (versions.length === 0) {
|
|
132
|
+
throw new Error('No upgrade manifests found. Run `brxm-upgrade setup-manifests` to configure them.');
|
|
133
|
+
}
|
|
134
|
+
const newerVersions = versions.filter((version) => semver.gt(version, currentVersion));
|
|
135
|
+
if (newerVersions.length === 0) {
|
|
136
|
+
console.log(chalk.dim(` No newer manifests available; staying on ${currentVersion}`));
|
|
137
|
+
return currentVersion;
|
|
138
|
+
}
|
|
139
|
+
if (newerVersions.length === 1) {
|
|
140
|
+
console.log(chalk.dim(` Target version: ${newerVersions[0]}`));
|
|
141
|
+
return newerVersions[0];
|
|
142
|
+
}
|
|
143
|
+
const latestVersion = newerVersions[newerVersions.length - 1];
|
|
144
|
+
const { targetVersion } = (await inquirer.prompt([
|
|
145
|
+
{
|
|
146
|
+
type: 'select',
|
|
147
|
+
name: 'targetVersion',
|
|
148
|
+
message: 'Which version do you want to upgrade to?',
|
|
149
|
+
choices: newerVersions.map((version) => ({
|
|
150
|
+
name: version === latestVersion ? `${version} (latest)` : version,
|
|
151
|
+
value: version,
|
|
152
|
+
})),
|
|
153
|
+
default: latestVersion,
|
|
154
|
+
},
|
|
155
|
+
]));
|
|
156
|
+
return targetVersion;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Display validation issues grouped by severity.
|
|
160
|
+
*/
|
|
161
|
+
showValidations(validations, isUpgradeReady) {
|
|
162
|
+
if (validations.length === 0) {
|
|
163
|
+
console.log(chalk.green(' No validation issues found'));
|
|
164
|
+
console.log('');
|
|
165
|
+
console.log(chalk.green(' ✓ Project is ready for upgrade'));
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
console.log('');
|
|
169
|
+
const errors = validations.filter((v) => v.severity === 'error');
|
|
170
|
+
const warnings = validations.filter((v) => v.severity === 'warning');
|
|
171
|
+
const infos = validations.filter((v) => v.severity === 'info');
|
|
172
|
+
if (errors.length > 0) {
|
|
173
|
+
console.log(chalk.red(` ${String(errors.length)} error(s) — must be resolved before upgrading:`));
|
|
174
|
+
for (const err of errors) {
|
|
175
|
+
console.log(chalk.red(` ✗ ${err.message}`));
|
|
176
|
+
this.showIssueDetails(err);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (warnings.length > 0) {
|
|
180
|
+
console.log(chalk.yellow(` ${String(warnings.length)} warning(s) — may need attention during upgrade:`));
|
|
181
|
+
for (const warn of warnings) {
|
|
182
|
+
console.log(chalk.yellow(` ⚠ ${warn.message}`));
|
|
183
|
+
this.showIssueDetails(warn);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (infos.length > 0) {
|
|
187
|
+
console.log(chalk.dim(` ${String(infos.length)} info(s) — for your awareness:`));
|
|
188
|
+
for (const info of infos) {
|
|
189
|
+
console.log(chalk.dim(` ℹ ${info.message}`));
|
|
190
|
+
this.showIssueDetails(info);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
console.log('');
|
|
194
|
+
if (isUpgradeReady) {
|
|
195
|
+
console.log(chalk.green(' ✓ Project is ready for upgrade'));
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
console.log(chalk.yellow(' ⚠ Project has issues — upgrade may require manual fixes'));
|
|
199
|
+
console.log(chalk.dim(' Errors must be resolved before proceeding. Warnings are advisory.'));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Display file path and suggestion for a validation issue, if present.
|
|
204
|
+
*/
|
|
205
|
+
showIssueDetails(issue) {
|
|
206
|
+
if (issue.file) {
|
|
207
|
+
console.log(chalk.dim(` in ${issue.file}`));
|
|
208
|
+
}
|
|
209
|
+
const suggestion = issue.details?.['suggestion'];
|
|
210
|
+
if (typeof suggestion === 'string') {
|
|
211
|
+
console.log(chalk.dim(` ${suggestion}`));
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Generate and display an AI-powered summary of the discovery results.
|
|
216
|
+
*/
|
|
217
|
+
async showAiSummary(context) {
|
|
218
|
+
if (!context.ai || !context.discovery)
|
|
219
|
+
return;
|
|
220
|
+
try {
|
|
221
|
+
const chatBuilder = new ChatContextBuilder();
|
|
222
|
+
const discoveryContext = chatBuilder.buildPhaseContext(this.name, 'Project discovery completed. Summarize the findings for the user.', context.discovery);
|
|
223
|
+
const result = await context.ai.generate(`${discoveryContext}\n\nProvide a brief, plain-language summary of this project's readiness for upgrade. Mention key findings. Keep it to 2-3 sentences. Do not reference commands, reports, or features that are not part of this tool.`, {
|
|
224
|
+
system: chatBuilder.buildSystemPrompt(),
|
|
225
|
+
maxTokens: 300,
|
|
226
|
+
temperature: 0.3,
|
|
227
|
+
});
|
|
228
|
+
console.log('');
|
|
229
|
+
console.log(chalk.bold(' AI Summary:'));
|
|
230
|
+
console.log(' ' + result.text.split('\n').join('\n '));
|
|
231
|
+
console.log('');
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
// AI summary is nice-to-have — continue without it
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=DiscoveryPhase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiscoveryPhase.js","sourceRoot":"","sources":["../../../src/guide/phases/DiscoveryPhase.ts"],"names":[],"mappings":"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"}
|