@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,44 @@
|
|
|
1
|
+
import type { DocsServerConfig } from '../types/index.js';
|
|
2
|
+
import type { DocSearchResult } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Thin MCP client for the brxm-docs documentation server.
|
|
5
|
+
* Provides semantic search and page retrieval with graceful degradation.
|
|
6
|
+
* When the server is unreachable, operations return empty results instead of throwing.
|
|
7
|
+
*/
|
|
8
|
+
export declare class DocsClient {
|
|
9
|
+
private client;
|
|
10
|
+
private connected;
|
|
11
|
+
private unavailable;
|
|
12
|
+
private readonly config;
|
|
13
|
+
private readonly searchCache;
|
|
14
|
+
private readonly logger;
|
|
15
|
+
constructor(config?: Partial<DocsServerConfig>, verbose?: boolean);
|
|
16
|
+
/**
|
|
17
|
+
* Search documentation for pages relevant to the given query.
|
|
18
|
+
*
|
|
19
|
+
* @param query - Natural language search query
|
|
20
|
+
* @param limit - Maximum number of results to return (default: 3)
|
|
21
|
+
* @returns Array of search results, or empty array on failure
|
|
22
|
+
*/
|
|
23
|
+
search(query: string, limit?: number): Promise<DocSearchResult[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Get a summary for a specific documentation page.
|
|
26
|
+
*
|
|
27
|
+
* @param url - The documentation page URL
|
|
28
|
+
* @returns Summary text, or null on failure
|
|
29
|
+
*/
|
|
30
|
+
getPageSummary(url: string): Promise<string | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Whether dynamic (AI-initiated) searches are enabled and the server is reachable.
|
|
33
|
+
*/
|
|
34
|
+
get isDynamicSearchEnabled(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Gracefully close the MCP connection.
|
|
37
|
+
*/
|
|
38
|
+
disconnect(): Promise<void>;
|
|
39
|
+
private ensureConnected;
|
|
40
|
+
private callWithTimeout;
|
|
41
|
+
private parseSearchResults;
|
|
42
|
+
private markUnavailable;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=docs-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-client.d.ts","sourceRoot":"","sources":["../../src/docs/docs-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAwC;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAAE,OAAO,UAAQ;IASnE;;;;;;OAMG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA+BlE;;;;;OAKG;IACG,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiBzD;;OAEG;IACH,IAAI,sBAAsB,IAAI,OAAO,CAEpC;IAED;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAYnB,eAAe;YAqBf,eAAe;IAY7B,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,eAAe;CAMxB"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
2
|
+
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
|
|
3
|
+
import { createLogger } from '../utils/logger.js';
|
|
4
|
+
const CONNECTION_TIMEOUT_MS = 5_000;
|
|
5
|
+
const REQUEST_TIMEOUT_MS = 10_000;
|
|
6
|
+
/**
|
|
7
|
+
* Thin MCP client for the brxm-docs documentation server.
|
|
8
|
+
* Provides semantic search and page retrieval with graceful degradation.
|
|
9
|
+
* When the server is unreachable, operations return empty results instead of throwing.
|
|
10
|
+
*/
|
|
11
|
+
export class DocsClient {
|
|
12
|
+
client = null;
|
|
13
|
+
connected = false;
|
|
14
|
+
unavailable = false;
|
|
15
|
+
config;
|
|
16
|
+
searchCache = new Map();
|
|
17
|
+
logger;
|
|
18
|
+
constructor(config = {}, verbose = false) {
|
|
19
|
+
this.config = {
|
|
20
|
+
url: config.url ?? 'https://brxm-docs.bloomreach.works/mcp',
|
|
21
|
+
enabled: config.enabled ?? true,
|
|
22
|
+
dynamicSearch: config.dynamicSearch ?? true,
|
|
23
|
+
};
|
|
24
|
+
this.logger = createLogger({ prefix: 'docs', verbose });
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Search documentation for pages relevant to the given query.
|
|
28
|
+
*
|
|
29
|
+
* @param query - Natural language search query
|
|
30
|
+
* @param limit - Maximum number of results to return (default: 3)
|
|
31
|
+
* @returns Array of search results, or empty array on failure
|
|
32
|
+
*/
|
|
33
|
+
async search(query, limit = 3) {
|
|
34
|
+
if (!this.config.enabled || this.unavailable)
|
|
35
|
+
return [];
|
|
36
|
+
const cacheKey = `${query}:${limit}`;
|
|
37
|
+
const cached = this.searchCache.get(cacheKey);
|
|
38
|
+
if (cached) {
|
|
39
|
+
this.logger.debug(`Cache hit for "${query}" (${cached.length} results)`);
|
|
40
|
+
return cached;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
await this.ensureConnected();
|
|
44
|
+
this.logger.debug(`Searching: "${query}"`);
|
|
45
|
+
const result = await this.callWithTimeout('semantic_search', { query, limit });
|
|
46
|
+
const results = this.parseSearchResults(result);
|
|
47
|
+
this.searchCache.set(cacheKey, results);
|
|
48
|
+
if (results.length > 0) {
|
|
49
|
+
this.logger.debug(`Found ${results.length} result(s):`);
|
|
50
|
+
for (const r of results) {
|
|
51
|
+
this.logger.debug(` - ${r.title} (${r.url})`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this.logger.debug(`No results for "${query}"`);
|
|
56
|
+
}
|
|
57
|
+
return results;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
this.markUnavailable();
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get a summary for a specific documentation page.
|
|
66
|
+
*
|
|
67
|
+
* @param url - The documentation page URL
|
|
68
|
+
* @returns Summary text, or null on failure
|
|
69
|
+
*/
|
|
70
|
+
async getPageSummary(url) {
|
|
71
|
+
if (!this.config.enabled || this.unavailable)
|
|
72
|
+
return null;
|
|
73
|
+
try {
|
|
74
|
+
await this.ensureConnected();
|
|
75
|
+
this.logger.debug(`Fetching summary for ${url}`);
|
|
76
|
+
const result = await this.callWithTimeout('get_summary', { url });
|
|
77
|
+
if (result && typeof result === 'object' && 'text' in result) {
|
|
78
|
+
return String(result.text);
|
|
79
|
+
}
|
|
80
|
+
return typeof result === 'string' ? result : null;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
this.markUnavailable();
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Whether dynamic (AI-initiated) searches are enabled and the server is reachable.
|
|
89
|
+
*/
|
|
90
|
+
get isDynamicSearchEnabled() {
|
|
91
|
+
return this.config.enabled && this.config.dynamicSearch && !this.unavailable;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Gracefully close the MCP connection.
|
|
95
|
+
*/
|
|
96
|
+
async disconnect() {
|
|
97
|
+
if (this.client) {
|
|
98
|
+
try {
|
|
99
|
+
await this.client.close();
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
/* ignore close errors */
|
|
103
|
+
}
|
|
104
|
+
this.client = null;
|
|
105
|
+
this.connected = false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async ensureConnected() {
|
|
109
|
+
if (this.connected)
|
|
110
|
+
return;
|
|
111
|
+
if (this.unavailable)
|
|
112
|
+
throw new Error('Docs server unavailable');
|
|
113
|
+
const transport = new StreamableHTTPClientTransport(new URL(this.config.url));
|
|
114
|
+
this.client = new Client({ name: 'brxm-upgrade', version: '0.1.0' }, { capabilities: {} });
|
|
115
|
+
const connectPromise = this.client.connect(transport);
|
|
116
|
+
const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error('Connection timeout')), CONNECTION_TIMEOUT_MS));
|
|
117
|
+
await Promise.race([connectPromise, timeoutPromise]);
|
|
118
|
+
this.connected = true;
|
|
119
|
+
this.logger.debug(`Connected to documentation server at ${new URL(this.config.url).host}`);
|
|
120
|
+
}
|
|
121
|
+
async callWithTimeout(tool, args) {
|
|
122
|
+
if (!this.client)
|
|
123
|
+
throw new Error('Not connected');
|
|
124
|
+
const callPromise = this.client.callTool({ name: tool, arguments: args });
|
|
125
|
+
const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error('Request timeout')), REQUEST_TIMEOUT_MS));
|
|
126
|
+
const result = await Promise.race([callPromise, timeoutPromise]);
|
|
127
|
+
return result?.content?.[0] ?? null;
|
|
128
|
+
}
|
|
129
|
+
parseSearchResults(raw) {
|
|
130
|
+
if (!raw || typeof raw !== 'object')
|
|
131
|
+
return [];
|
|
132
|
+
const text = raw.text;
|
|
133
|
+
if (!text)
|
|
134
|
+
return [];
|
|
135
|
+
try {
|
|
136
|
+
const parsed = JSON.parse(text);
|
|
137
|
+
if (Array.isArray(parsed)) {
|
|
138
|
+
return parsed.map((item) => {
|
|
139
|
+
const r = item;
|
|
140
|
+
return {
|
|
141
|
+
title: typeof r.title === 'string' ? r.title : '',
|
|
142
|
+
url: typeof r.url === 'string' ? r.url : '',
|
|
143
|
+
snippet: typeof r.snippet === 'string' ? r.snippet : (typeof r.summary === 'string' ? r.summary : ''),
|
|
144
|
+
score: typeof r.score === 'number' ? r.score : undefined,
|
|
145
|
+
};
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
/* not JSON, treat as plain text — return empty */
|
|
151
|
+
}
|
|
152
|
+
return [];
|
|
153
|
+
}
|
|
154
|
+
markUnavailable() {
|
|
155
|
+
if (!this.unavailable) {
|
|
156
|
+
this.unavailable = true;
|
|
157
|
+
this.logger.info('Documentation server unavailable, continuing without doc context.');
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=docs-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-client.js","sourceRoot":"","sources":["../../src/docs/docs-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { DocSearchResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builds documentation context strings for injection into AI prompts.
|
|
4
|
+
*/
|
|
5
|
+
export declare class DocsContext {
|
|
6
|
+
/**
|
|
7
|
+
* Format search results into a context block for AI prompts.
|
|
8
|
+
* Returns empty string if no results.
|
|
9
|
+
*/
|
|
10
|
+
static buildDocContext(results: DocSearchResult[]): string;
|
|
11
|
+
/**
|
|
12
|
+
* Build a concise search query from manifest entry metadata.
|
|
13
|
+
* Prefers doc_search_keywords when available (generated during manifest creation).
|
|
14
|
+
* Falls back to deriving keywords from the entry id slug.
|
|
15
|
+
* Uses only generic brXM terms — never customer-specific data.
|
|
16
|
+
*/
|
|
17
|
+
static buildSearchQuery(entry: {
|
|
18
|
+
id: string;
|
|
19
|
+
type: string;
|
|
20
|
+
doc_search_keywords?: string[];
|
|
21
|
+
}): string;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=docs-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-context.d.ts","sourceRoot":"","sources":["../../src/docs/docs-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAKlD;;GAEG;AACH,qBAAa,WAAW;IACtB;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM;IAc1D;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,MAAM;CAYrG"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const MAX_RESULTS_IN_CONTEXT = 3;
|
|
2
|
+
const MAX_SNIPPET_LENGTH = 500;
|
|
3
|
+
/**
|
|
4
|
+
* Builds documentation context strings for injection into AI prompts.
|
|
5
|
+
*/
|
|
6
|
+
export class DocsContext {
|
|
7
|
+
/**
|
|
8
|
+
* Format search results into a context block for AI prompts.
|
|
9
|
+
* Returns empty string if no results.
|
|
10
|
+
*/
|
|
11
|
+
static buildDocContext(results) {
|
|
12
|
+
if (results.length === 0)
|
|
13
|
+
return '';
|
|
14
|
+
const limited = results.slice(0, MAX_RESULTS_IN_CONTEXT);
|
|
15
|
+
const sections = limited.map((r) => {
|
|
16
|
+
const snippet = r.snippet.length > MAX_SNIPPET_LENGTH
|
|
17
|
+
? r.snippet.substring(0, MAX_SNIPPET_LENGTH) + '...'
|
|
18
|
+
: r.snippet;
|
|
19
|
+
return `**${r.title}** (${r.url})\n${snippet}`;
|
|
20
|
+
});
|
|
21
|
+
return `Relevant brXM documentation:\n\n${sections.join('\n\n---\n\n')}`;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Build a concise search query from manifest entry metadata.
|
|
25
|
+
* Prefers doc_search_keywords when available (generated during manifest creation).
|
|
26
|
+
* Falls back to deriving keywords from the entry id slug.
|
|
27
|
+
* Uses only generic brXM terms — never customer-specific data.
|
|
28
|
+
*/
|
|
29
|
+
static buildSearchQuery(entry) {
|
|
30
|
+
if (entry.doc_search_keywords && entry.doc_search_keywords.length > 0) {
|
|
31
|
+
return `brXM ${entry.doc_search_keywords.join(' ')}`;
|
|
32
|
+
}
|
|
33
|
+
// Fallback: derive from id slug like "cms-18005-cmyk-rgb-conversion-fix" → "cmyk rgb conversion fix"
|
|
34
|
+
const idWords = entry.id
|
|
35
|
+
.replace(/^[a-z]+-\d+-/, '') // strip ticket prefix (e.g. "cms-18005-")
|
|
36
|
+
.replace(/-/g, ' ');
|
|
37
|
+
const type = entry.type.replace(/_/g, ' ');
|
|
38
|
+
return `brXM ${idWords} ${type}`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=docs-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-context.js","sourceRoot":"","sources":["../../src/docs/docs-context.ts"],"names":[],"mappings":"AAEA,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B;;GAEG;AACH,MAAM,OAAO,WAAW;IACtB;;;OAGG;IACH,MAAM,CAAC,eAAe,CAAC,OAA0B;QAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEpC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACjC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,kBAAkB;gBACnD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,KAAK;gBACpD,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACd,OAAO,KAAK,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,MAAM,OAAO,EAAE,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,OAAO,mCAAmC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAmE;QACzF,IAAI,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtE,OAAO,QAAQ,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,CAAC;QAED,qGAAqG;QACrG,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE;aACrB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,0CAA0C;aACtE,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3C,OAAO,QAAQ,OAAO,IAAI,IAAI,EAAE,CAAC;IACnC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A single search result from the docs MCP server.
|
|
3
|
+
*/
|
|
4
|
+
export interface DocSearchResult {
|
|
5
|
+
/** Page title */
|
|
6
|
+
title: string;
|
|
7
|
+
/** Page URL on the documentation site */
|
|
8
|
+
url: string;
|
|
9
|
+
/** Relevant snippet or summary */
|
|
10
|
+
snippet: string;
|
|
11
|
+
/** Relevance score (0-1) */
|
|
12
|
+
score?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Full page content from the docs MCP server.
|
|
16
|
+
*/
|
|
17
|
+
export interface DocPage {
|
|
18
|
+
/** Page title */
|
|
19
|
+
title: string;
|
|
20
|
+
/** Page URL */
|
|
21
|
+
url: string;
|
|
22
|
+
/** Full page content (markdown) */
|
|
23
|
+
content: string;
|
|
24
|
+
/** AI-generated summary */
|
|
25
|
+
summary?: string;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/docs/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/docs/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { PlanStep } from '../planning/types.js';
|
|
2
|
+
import type { PreparedChanges, StepDecision } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Presents diffs and step details to the user and collects their decisions
|
|
5
|
+
* via interactive inquirer prompts.
|
|
6
|
+
*/
|
|
7
|
+
export declare class DiffPresenter {
|
|
8
|
+
/**
|
|
9
|
+
* Formats a step header with metadata badges for terminal display.
|
|
10
|
+
*
|
|
11
|
+
* @param step - The plan step to format
|
|
12
|
+
* @param totalSteps - Total number of steps in the plan
|
|
13
|
+
* @returns Formatted header string with ANSI color codes
|
|
14
|
+
*/
|
|
15
|
+
formatStepHeader(step: PlanStep, totalSteps: number): string;
|
|
16
|
+
/**
|
|
17
|
+
* Presents prepared changes to the user with a diff summary and optional
|
|
18
|
+
* AI analysis, then prompts for a decision.
|
|
19
|
+
*
|
|
20
|
+
* @param prepared - The prepared changes to present
|
|
21
|
+
* @returns The user's decision for this step
|
|
22
|
+
*/
|
|
23
|
+
presentChanges(prepared: PreparedChanges): Promise<StepDecision>;
|
|
24
|
+
/**
|
|
25
|
+
* Displays the full colorized diff for all changes in a prepared set.
|
|
26
|
+
*
|
|
27
|
+
* @param prepared - The prepared changes to display diffs for
|
|
28
|
+
*/
|
|
29
|
+
showFullDiff(prepared: PreparedChanges): void;
|
|
30
|
+
/**
|
|
31
|
+
* Presents a manual step with instructions and prompts the user to confirm
|
|
32
|
+
* whether they have completed the steps.
|
|
33
|
+
*
|
|
34
|
+
* @param step - The manual plan step to present
|
|
35
|
+
* @returns 'accept' if the user confirms completion, 'skip' otherwise
|
|
36
|
+
*/
|
|
37
|
+
presentManualStep(step: PlanStep): Promise<StepDecision>;
|
|
38
|
+
/**
|
|
39
|
+
* Prompts the user for a decision on prepared changes. If the user chooses
|
|
40
|
+
* to view the full diff, shows it and re-prompts.
|
|
41
|
+
*/
|
|
42
|
+
private promptForDecision;
|
|
43
|
+
/**
|
|
44
|
+
* Returns a colorized badge string for the automation level.
|
|
45
|
+
*/
|
|
46
|
+
private getAutomationBadge;
|
|
47
|
+
/**
|
|
48
|
+
* Returns a human-readable label for a numeric risk level (1-5).
|
|
49
|
+
*/
|
|
50
|
+
private getRiskBadge;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=diff-presenter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-presenter.d.ts","sourceRoot":"","sources":["../../src/execution/diff-presenter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGhE;;;GAGG;AACH,qBAAa,aAAa;IACxB;;;;;;OAMG;IACH,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAwB5D;;;;;;OAMG;IACG,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IAgBtE;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAO7C;;;;;;OAMG;IACG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;IA8B9D;;;OAGG;YACW,iBAAiB;IA2B/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,YAAY;CAKrB"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import inquirer from 'inquirer';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { generateDiff, formatDiffForTerminal, summarizeDiffs } from '../utils/diff.js';
|
|
5
|
+
/**
|
|
6
|
+
* Presents diffs and step details to the user and collects their decisions
|
|
7
|
+
* via interactive inquirer prompts.
|
|
8
|
+
*/
|
|
9
|
+
export class DiffPresenter {
|
|
10
|
+
/**
|
|
11
|
+
* Formats a step header with metadata badges for terminal display.
|
|
12
|
+
*
|
|
13
|
+
* @param step - The plan step to format
|
|
14
|
+
* @param totalSteps - Total number of steps in the plan
|
|
15
|
+
* @returns Formatted header string with ANSI color codes
|
|
16
|
+
*/
|
|
17
|
+
formatStepHeader(step, totalSteps) {
|
|
18
|
+
const automationBadge = this.getAutomationBadge(step.automatable);
|
|
19
|
+
const riskBadge = this.getRiskBadge(step.riskLevel);
|
|
20
|
+
const lines = [
|
|
21
|
+
'',
|
|
22
|
+
chalk.bold('\u2501'.repeat(70)),
|
|
23
|
+
chalk.bold(`Step ${step.stepNumber}/${totalSteps}: ${step.entryId}`),
|
|
24
|
+
chalk.bold('\u2501'.repeat(70)),
|
|
25
|
+
'',
|
|
26
|
+
`${chalk.cyan('Description:')} ${step.description}`,
|
|
27
|
+
`${chalk.cyan('Type:')} ${step.type}`,
|
|
28
|
+
`${chalk.cyan('Automation:')} ${automationBadge}`,
|
|
29
|
+
`${chalk.cyan('Risk Level:')} ${riskBadge}`,
|
|
30
|
+
`${chalk.cyan('Files Affected:')} ${step.affectedFileCount}`,
|
|
31
|
+
];
|
|
32
|
+
if (step.documentationUrl) {
|
|
33
|
+
lines.push(`${chalk.cyan('Documentation:')} ${step.documentationUrl}`);
|
|
34
|
+
}
|
|
35
|
+
lines.push('');
|
|
36
|
+
return lines.join('\n');
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Presents prepared changes to the user with a diff summary and optional
|
|
40
|
+
* AI analysis, then prompts for a decision.
|
|
41
|
+
*
|
|
42
|
+
* @param prepared - The prepared changes to present
|
|
43
|
+
* @returns The user's decision for this step
|
|
44
|
+
*/
|
|
45
|
+
async presentChanges(prepared) {
|
|
46
|
+
const diffs = prepared.changes.map((change) => generateDiff(change.originalContent, change.modifiedContent, change.filePath));
|
|
47
|
+
console.log(summarizeDiffs(diffs));
|
|
48
|
+
if (prepared.aiAnalysis) {
|
|
49
|
+
console.log('');
|
|
50
|
+
console.log(chalk.yellow('AI Analysis:'));
|
|
51
|
+
console.log(prepared.aiAnalysis);
|
|
52
|
+
}
|
|
53
|
+
return this.promptForDecision(prepared);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Displays the full colorized diff for all changes in a prepared set.
|
|
57
|
+
*
|
|
58
|
+
* @param prepared - The prepared changes to display diffs for
|
|
59
|
+
*/
|
|
60
|
+
showFullDiff(prepared) {
|
|
61
|
+
for (const change of prepared.changes) {
|
|
62
|
+
const diff = generateDiff(change.originalContent, change.modifiedContent, change.filePath);
|
|
63
|
+
console.log(formatDiffForTerminal(diff));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Presents a manual step with instructions and prompts the user to confirm
|
|
68
|
+
* whether they have completed the steps.
|
|
69
|
+
*
|
|
70
|
+
* @param step - The manual plan step to present
|
|
71
|
+
* @returns 'accept' if the user confirms completion, 'skip' otherwise
|
|
72
|
+
*/
|
|
73
|
+
async presentManualStep(step) {
|
|
74
|
+
console.log('');
|
|
75
|
+
console.log(chalk.yellow('Manual Steps Required:'));
|
|
76
|
+
console.log('');
|
|
77
|
+
if (step.manualSteps) {
|
|
78
|
+
step.manualSteps.forEach((s, i) => {
|
|
79
|
+
console.log(` ${chalk.cyan(`${i + 1}.`)} ${s}`);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
if (step.documentationUrl) {
|
|
83
|
+
console.log('');
|
|
84
|
+
console.log(`${chalk.cyan('Documentation:')} ${step.documentationUrl}`);
|
|
85
|
+
}
|
|
86
|
+
console.log('');
|
|
87
|
+
const { completed } = (await inquirer.prompt([
|
|
88
|
+
{
|
|
89
|
+
type: 'confirm',
|
|
90
|
+
name: 'completed',
|
|
91
|
+
message: 'Have you completed these manual steps?',
|
|
92
|
+
default: false,
|
|
93
|
+
},
|
|
94
|
+
]));
|
|
95
|
+
return completed ? 'accept' : 'skip';
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Prompts the user for a decision on prepared changes. If the user chooses
|
|
99
|
+
* to view the full diff, shows it and re-prompts.
|
|
100
|
+
*/
|
|
101
|
+
async promptForDecision(prepared) {
|
|
102
|
+
const choices = [
|
|
103
|
+
{ name: 'Accept changes', value: 'accept' },
|
|
104
|
+
...(prepared.changes.length > 0
|
|
105
|
+
? [{ name: 'View full diff', value: 'view_diff' }]
|
|
106
|
+
: []),
|
|
107
|
+
{ name: 'Skip this step', value: 'skip' },
|
|
108
|
+
{ name: 'Reject and rollback', value: 'reject' },
|
|
109
|
+
];
|
|
110
|
+
const { action } = (await inquirer.prompt([
|
|
111
|
+
{
|
|
112
|
+
type: 'select',
|
|
113
|
+
name: 'action',
|
|
114
|
+
message: 'What would you like to do?',
|
|
115
|
+
choices,
|
|
116
|
+
},
|
|
117
|
+
]));
|
|
118
|
+
if (action === 'view_diff') {
|
|
119
|
+
this.showFullDiff(prepared);
|
|
120
|
+
return this.promptForDecision(prepared);
|
|
121
|
+
}
|
|
122
|
+
return action;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Returns a colorized badge string for the automation level.
|
|
126
|
+
*/
|
|
127
|
+
getAutomationBadge(level) {
|
|
128
|
+
switch (level) {
|
|
129
|
+
case 'true':
|
|
130
|
+
return chalk.green('Automated');
|
|
131
|
+
case 'partial':
|
|
132
|
+
return chalk.yellow('AI-Assisted');
|
|
133
|
+
case 'false':
|
|
134
|
+
return chalk.red('Manual');
|
|
135
|
+
default:
|
|
136
|
+
return level;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Returns a human-readable label for a numeric risk level (1-5).
|
|
141
|
+
*/
|
|
142
|
+
getRiskBadge(level) {
|
|
143
|
+
const labels = ['Very Low', 'Low', 'Medium', 'High', 'Critical'];
|
|
144
|
+
const idx = Math.min(Math.max(level - 1, 0), labels.length - 1);
|
|
145
|
+
return labels[idx];
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=diff-presenter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff-presenter.js","sourceRoot":"","sources":["../../src/execution/diff-presenter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { PlanStep, AutomationLevel } from '../../planning/types.js';
|
|
2
|
+
import type { AIClient } from '../../ai/types.js';
|
|
3
|
+
import type { IStepExecutor, PreparedChanges, FileChange } from '../types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Executor for AI-assisted steps (automatable === 'partial').
|
|
6
|
+
*
|
|
7
|
+
* Uses the AI client to propose concrete file edits against a bounded set of
|
|
8
|
+
* candidate files. The user can review the diff, ask the AI to revise the
|
|
9
|
+
* proposal, and then decide whether to apply it.
|
|
10
|
+
*/
|
|
11
|
+
export declare class AIAssistedExecutor implements IStepExecutor {
|
|
12
|
+
readonly automationLevel: AutomationLevel;
|
|
13
|
+
private readonly aiClient;
|
|
14
|
+
constructor(aiClient: AIClient);
|
|
15
|
+
prepare(step: PlanStep, projectRoot: string): Promise<PreparedChanges>;
|
|
16
|
+
revise(step: PlanStep, projectRoot: string, previousProposal: PreparedChanges, revisionRequest: string): Promise<PreparedChanges>;
|
|
17
|
+
apply(prepared: PreparedChanges, _projectRoot: string): Promise<FileChange[]>;
|
|
18
|
+
private proposeChanges;
|
|
19
|
+
private resolveCandidateFiles;
|
|
20
|
+
private resolveDirectFiles;
|
|
21
|
+
private readCandidateFiles;
|
|
22
|
+
private truncateContent;
|
|
23
|
+
private matchesPattern;
|
|
24
|
+
private buildProposalPrompt;
|
|
25
|
+
private parseProposalResponse;
|
|
26
|
+
private extractJsonObject;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=ai-assisted.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-assisted.d.ts","sourceRoot":"","sources":["../../../src/execution/executors/ai-assisted.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAwB9E;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAa;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAExB,QAAQ,EAAE,QAAQ;IAIxB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAItE,MAAM,CACV,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,eAAe,EACjC,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,eAAe,CAAC;IAOrB,KAAK,CAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YAYrE,cAAc;YAgEd,qBAAqB;IA2BnC,OAAO,CAAC,kBAAkB;YAWZ,kBAAkB;IAgBhC,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,mBAAmB;IA2D3B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,iBAAiB;CAQ1B"}
|