specweave 0.21.2 → 0.21.3
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/CLAUDE.md +232 -5
- package/dist/plugins/specweave-github/lib/IssueStateManager.d.ts +98 -0
- package/dist/plugins/specweave-github/lib/IssueStateManager.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/IssueStateManager.js +146 -0
- package/dist/plugins/specweave-github/lib/IssueStateManager.js.map +1 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.d.ts.map +1 -1
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js +6 -0
- package/dist/plugins/specweave-github/lib/user-story-issue-builder.js.map +1 -1
- package/dist/src/cli/commands/check-hooks.d.ts +11 -0
- package/dist/src/cli/commands/check-hooks.d.ts.map +1 -0
- package/dist/src/cli/commands/check-hooks.js +144 -0
- package/dist/src/cli/commands/check-hooks.js.map +1 -0
- package/dist/src/cli/commands/cicd-monitor.js +3 -3
- package/dist/src/cli/commands/cicd-monitor.js.map +1 -1
- package/dist/src/cli/commands/import-docs.js +2 -2
- package/dist/src/cli/commands/import-docs.js.map +1 -1
- package/dist/src/cli/commands/init-multiproject.js +4 -4
- package/dist/src/cli/commands/init-multiproject.js.map +1 -1
- package/dist/src/cli/commands/migrate-to-multiproject.js +3 -3
- package/dist/src/cli/commands/migrate-to-multiproject.js.map +1 -1
- package/dist/src/cli/commands/plan/agent-invoker.d.ts +79 -0
- package/dist/src/cli/commands/plan/agent-invoker.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/agent-invoker.js +383 -0
- package/dist/src/cli/commands/plan/agent-invoker.js.map +1 -0
- package/dist/src/cli/commands/plan/increment-detector.d.ts +27 -0
- package/dist/src/cli/commands/plan/increment-detector.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/increment-detector.js +159 -0
- package/dist/src/cli/commands/plan/increment-detector.js.map +1 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.d.ts +45 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.js +229 -0
- package/dist/src/cli/commands/plan/plan-orchestrator.js.map +1 -0
- package/dist/src/cli/commands/plan/plan-validator.d.ts +36 -0
- package/dist/src/cli/commands/plan/plan-validator.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/plan-validator.js +174 -0
- package/dist/src/cli/commands/plan/plan-validator.js.map +1 -0
- package/dist/src/cli/commands/plan/types.d.ts +170 -0
- package/dist/src/cli/commands/plan/types.d.ts.map +1 -0
- package/dist/src/cli/commands/plan/types.js +42 -0
- package/dist/src/cli/commands/plan/types.js.map +1 -0
- package/dist/src/cli/commands/plan-command.d.ts +16 -0
- package/dist/src/cli/commands/plan-command.d.ts.map +1 -0
- package/dist/src/cli/commands/plan-command.js +127 -0
- package/dist/src/cli/commands/plan-command.js.map +1 -0
- package/dist/src/cli/commands/switch-project.js +3 -3
- package/dist/src/cli/commands/switch-project.js.map +1 -1
- package/dist/src/cli/commands/validate-parent-repo.js +1 -1
- package/dist/src/cli/commands/validate-parent-repo.js.map +1 -1
- package/dist/src/config/ConfigManager.d.ts +69 -0
- package/dist/src/config/ConfigManager.d.ts.map +1 -0
- package/dist/src/config/ConfigManager.js +130 -0
- package/dist/src/config/ConfigManager.js.map +1 -0
- package/dist/src/config/types.d.ts +1357 -0
- package/dist/src/config/types.d.ts.map +1 -0
- package/dist/src/config/types.js +67 -0
- package/dist/src/config/types.js.map +1 -0
- package/dist/src/core/brownfield/importer.d.ts +1 -1
- package/dist/src/core/brownfield/importer.d.ts.map +1 -1
- package/dist/src/core/brownfield/importer.js +3 -3
- package/dist/src/core/brownfield/importer.js.map +1 -1
- package/dist/src/core/cicd/config-loader.d.ts +1 -1
- package/dist/src/core/cicd/config-loader.d.ts.map +1 -1
- package/dist/src/core/cicd/index.d.ts +6 -6
- package/dist/src/core/cicd/index.d.ts.map +1 -1
- package/dist/src/core/cicd/index.js +6 -6
- package/dist/src/core/cicd/index.js.map +1 -1
- package/dist/src/core/cicd/monitor-service.d.ts +3 -3
- package/dist/src/core/cicd/monitor-service.d.ts.map +1 -1
- package/dist/src/core/cicd/monitor-service.js +3 -3
- package/dist/src/core/cicd/monitor-service.js.map +1 -1
- package/dist/src/core/cicd/notifier.d.ts +1 -1
- package/dist/src/core/cicd/notifier.d.ts.map +1 -1
- package/dist/src/core/cicd/state-manager.d.ts +1 -1
- package/dist/src/core/cicd/state-manager.d.ts.map +1 -1
- package/dist/src/core/cicd/state-manager.js +1 -1
- package/dist/src/core/cicd/state-manager.js.map +1 -1
- package/dist/src/core/cicd/workflow-monitor.d.ts +1 -1
- package/dist/src/core/cicd/workflow-monitor.d.ts.map +1 -1
- package/dist/src/core/cicd/workflow-monitor.js +1 -1
- package/dist/src/core/cicd/workflow-monitor.js.map +1 -1
- package/dist/src/core/cost-tracker.d.ts +2 -2
- package/dist/src/core/cost-tracker.d.ts.map +1 -1
- package/dist/src/core/cost-tracker.js +1 -1
- package/dist/src/core/cost-tracker.js.map +1 -1
- package/dist/src/core/hooks/HealthReporter.d.ts +55 -0
- package/dist/src/core/hooks/HealthReporter.d.ts.map +1 -0
- package/dist/src/core/hooks/HealthReporter.js +268 -0
- package/dist/src/core/hooks/HealthReporter.js.map +1 -0
- package/dist/src/core/hooks/HookAutoFixer.d.ts +41 -0
- package/dist/src/core/hooks/HookAutoFixer.d.ts.map +1 -0
- package/dist/src/core/hooks/HookAutoFixer.js +222 -0
- package/dist/src/core/hooks/HookAutoFixer.js.map +1 -0
- package/dist/src/core/hooks/HookExecutor.d.ts +57 -0
- package/dist/src/core/hooks/HookExecutor.d.ts.map +1 -0
- package/dist/src/core/hooks/HookExecutor.js +287 -0
- package/dist/src/core/hooks/HookExecutor.js.map +1 -0
- package/dist/src/core/hooks/HookHealthChecker.d.ts +51 -0
- package/dist/src/core/hooks/HookHealthChecker.d.ts.map +1 -0
- package/dist/src/core/hooks/HookHealthChecker.js +212 -0
- package/dist/src/core/hooks/HookHealthChecker.js.map +1 -0
- package/dist/src/core/hooks/HookScanner.d.ts +65 -0
- package/dist/src/core/hooks/HookScanner.d.ts.map +1 -0
- package/dist/src/core/hooks/HookScanner.js +214 -0
- package/dist/src/core/hooks/HookScanner.js.map +1 -0
- package/dist/src/core/hooks/types.d.ts +281 -0
- package/dist/src/core/hooks/types.d.ts.map +1 -0
- package/dist/src/core/hooks/types.js +10 -0
- package/dist/src/core/hooks/types.js.map +1 -0
- package/dist/src/core/iac/index.d.ts +10 -0
- package/dist/src/core/iac/index.d.ts.map +1 -0
- package/dist/src/core/iac/index.js +11 -0
- package/dist/src/core/iac/index.js.map +1 -0
- package/dist/src/core/iac/template-engine.d.ts +77 -0
- package/dist/src/core/iac/template-engine.d.ts.map +1 -0
- package/dist/src/core/iac/template-engine.js +182 -0
- package/dist/src/core/iac/template-engine.js.map +1 -0
- package/dist/src/core/increment/ac-status-manager.d.ts +115 -0
- package/dist/src/core/increment/ac-status-manager.d.ts.map +1 -0
- package/dist/src/core/increment/ac-status-manager.js +343 -0
- package/dist/src/core/increment/ac-status-manager.js.map +1 -0
- package/dist/src/core/increment/auto-transition-manager.d.ts +60 -0
- package/dist/src/core/increment/auto-transition-manager.d.ts.map +1 -0
- package/dist/src/core/increment/auto-transition-manager.js +192 -0
- package/dist/src/core/increment/auto-transition-manager.js.map +1 -0
- package/dist/src/core/increment/limits.d.ts +1 -1
- package/dist/src/core/increment/limits.d.ts.map +1 -1
- package/dist/src/core/increment/limits.js +2 -2
- package/dist/src/core/increment/limits.js.map +1 -1
- package/dist/src/core/increment/spec-sync-manager.d.ts +177 -0
- package/dist/src/core/increment/spec-sync-manager.d.ts.map +1 -0
- package/dist/src/core/increment/spec-sync-manager.js +496 -0
- package/dist/src/core/increment/spec-sync-manager.js.map +1 -0
- package/dist/src/core/increment/status-auto-transition.d.ts +46 -0
- package/dist/src/core/increment/status-auto-transition.d.ts.map +1 -0
- package/dist/src/core/increment/status-auto-transition.js +178 -0
- package/dist/src/core/increment/status-auto-transition.js.map +1 -0
- package/dist/src/core/increment/task-state-manager.d.ts +75 -0
- package/dist/src/core/increment/task-state-manager.d.ts.map +1 -0
- package/dist/src/core/increment/task-state-manager.js +117 -0
- package/dist/src/core/increment/task-state-manager.js.map +1 -0
- package/dist/src/core/living-docs/CodeValidator.d.ts +68 -0
- package/dist/src/core/living-docs/CodeValidator.d.ts.map +1 -0
- package/dist/src/core/living-docs/CodeValidator.js +160 -0
- package/dist/src/core/living-docs/CodeValidator.js.map +1 -0
- package/dist/src/core/living-docs/CompletionPropagator.d.ts +84 -0
- package/dist/src/core/living-docs/CompletionPropagator.d.ts.map +1 -0
- package/dist/src/core/living-docs/CompletionPropagator.js +205 -0
- package/dist/src/core/living-docs/CompletionPropagator.js.map +1 -0
- package/dist/src/core/living-docs/ProjectDetector.d.ts +29 -0
- package/dist/src/core/living-docs/ProjectDetector.d.ts.map +1 -0
- package/dist/src/core/living-docs/ProjectDetector.js +94 -0
- package/dist/src/core/living-docs/ProjectDetector.js.map +1 -0
- package/dist/src/core/living-docs/SpecDistributor.d.ts +55 -0
- package/dist/src/core/living-docs/SpecDistributor.d.ts.map +1 -0
- package/dist/src/core/living-docs/SpecDistributor.js +216 -0
- package/dist/src/core/living-docs/SpecDistributor.js.map +1 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts +116 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts.map +1 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.js +356 -0
- package/dist/src/core/living-docs/ThreeLayerSyncManager.js.map +1 -0
- package/dist/src/core/living-docs/hierarchy-mapper.d.ts.map +1 -1
- package/dist/src/core/living-docs/hierarchy-mapper.js +2 -1
- package/dist/src/core/living-docs/hierarchy-mapper.js.map +1 -1
- package/dist/src/core/living-docs/index.d.ts +1 -1
- package/dist/src/core/living-docs/index.d.ts.map +1 -1
- package/dist/src/core/living-docs/index.js +5 -1
- package/dist/src/core/living-docs/index.js.map +1 -1
- package/dist/src/core/living-docs/types.d.ts +70 -300
- package/dist/src/core/living-docs/types.d.ts.map +1 -1
- package/dist/src/core/living-docs/types.js +2 -10
- package/dist/src/core/living-docs/types.js.map +1 -1
- package/dist/src/core/project-manager.d.ts +1 -1
- package/dist/src/core/project-manager.d.ts.map +1 -1
- package/dist/src/core/project-manager.js +2 -2
- package/dist/src/core/project-manager.js.map +1 -1
- package/dist/src/core/qa/quality-gate-decider.d.ts +1 -1
- package/dist/src/core/qa/quality-gate-decider.d.ts.map +1 -1
- package/dist/src/core/qa/risk-calculator.d.ts +1 -1
- package/dist/src/core/qa/risk-calculator.d.ts.map +1 -1
- package/dist/src/core/repo-structure/setup-summary.d.ts +1 -1
- package/dist/src/core/repo-structure/setup-summary.d.ts.map +1 -1
- package/dist/src/core/rfc-generator-v2.d.ts +1 -1
- package/dist/src/core/rfc-generator-v2.d.ts.map +1 -1
- package/dist/src/core/rfc-generator-v2.js +1 -1
- package/dist/src/core/rfc-generator-v2.js.map +1 -1
- package/dist/src/core/serverless/context-detector.d.ts +12 -0
- package/dist/src/core/serverless/context-detector.d.ts.map +1 -0
- package/dist/src/core/serverless/context-detector.js +213 -0
- package/dist/src/core/serverless/context-detector.js.map +1 -0
- package/dist/src/core/serverless/cost-comparison.d.ts +73 -0
- package/dist/src/core/serverless/cost-comparison.d.ts.map +1 -0
- package/dist/src/core/serverless/cost-comparison.js +198 -0
- package/dist/src/core/serverless/cost-comparison.js.map +1 -0
- package/dist/src/core/serverless/cost-estimator.d.ts +69 -0
- package/dist/src/core/serverless/cost-estimator.d.ts.map +1 -0
- package/dist/src/core/serverless/cost-estimator.js +127 -0
- package/dist/src/core/serverless/cost-estimator.js.map +1 -0
- package/dist/src/core/serverless/cost-optimizer.d.ts +57 -0
- package/dist/src/core/serverless/cost-optimizer.d.ts.map +1 -0
- package/dist/src/core/serverless/cost-optimizer.js +221 -0
- package/dist/src/core/serverless/cost-optimizer.js.map +1 -0
- package/dist/src/core/serverless/index.d.ts +20 -0
- package/dist/src/core/serverless/index.d.ts.map +1 -0
- package/dist/src/core/serverless/index.js +26 -0
- package/dist/src/core/serverless/index.js.map +1 -0
- package/dist/src/core/serverless/learning-path-recommender.d.ts +152 -0
- package/dist/src/core/serverless/learning-path-recommender.d.ts.map +1 -0
- package/dist/src/core/serverless/learning-path-recommender.js +389 -0
- package/dist/src/core/serverless/learning-path-recommender.js.map +1 -0
- package/dist/src/core/serverless/platform-data-loader.d.ts +22 -0
- package/dist/src/core/serverless/platform-data-loader.d.ts.map +1 -0
- package/dist/src/core/serverless/platform-data-loader.js +49 -0
- package/dist/src/core/serverless/platform-data-loader.js.map +1 -0
- package/dist/src/core/serverless/platform-selector.d.ts +20 -0
- package/dist/src/core/serverless/platform-selector.d.ts.map +1 -0
- package/dist/src/core/serverless/platform-selector.js +279 -0
- package/dist/src/core/serverless/platform-selector.js.map +1 -0
- package/dist/src/core/serverless/recommendation-formatter.d.ts +24 -0
- package/dist/src/core/serverless/recommendation-formatter.d.ts.map +1 -0
- package/dist/src/core/serverless/recommendation-formatter.js +70 -0
- package/dist/src/core/serverless/recommendation-formatter.js.map +1 -0
- package/dist/src/core/serverless/suitability-analyzer.d.ts +22 -0
- package/dist/src/core/serverless/suitability-analyzer.d.ts.map +1 -0
- package/dist/src/core/serverless/suitability-analyzer.js +262 -0
- package/dist/src/core/serverless/suitability-analyzer.js.map +1 -0
- package/dist/src/core/serverless/types.d.ts +96 -0
- package/dist/src/core/serverless/types.d.ts.map +1 -0
- package/dist/src/core/serverless/types.js +5 -0
- package/dist/src/core/serverless/types.js.map +1 -0
- package/dist/src/core/sync/bidirectional-engine.d.ts +1 -1
- package/dist/src/core/sync/bidirectional-engine.d.ts.map +1 -1
- package/dist/src/core/sync/enhanced-content-builder.d.ts +1 -1
- package/dist/src/core/sync/enhanced-content-builder.d.ts.map +1 -1
- package/dist/src/core/sync/profile-manager.d.ts +1 -1
- package/dist/src/core/sync/profile-manager.d.ts.map +1 -1
- package/dist/src/core/sync/profile-selector.d.ts +1 -1
- package/dist/src/core/sync/profile-selector.d.ts.map +1 -1
- package/dist/src/core/sync/profile-selector.js +1 -1
- package/dist/src/core/sync/profile-selector.js.map +1 -1
- package/dist/src/core/sync/project-context.d.ts +1 -1
- package/dist/src/core/sync/project-context.d.ts.map +1 -1
- package/dist/src/core/sync/rate-limiter.d.ts +1 -1
- package/dist/src/core/sync/rate-limiter.d.ts.map +1 -1
- package/dist/src/core/sync/status-sync-engine.d.ts +2 -2
- package/dist/src/core/sync/status-sync-engine.d.ts.map +1 -1
- package/dist/src/core/sync/status-sync-engine.js +2 -2
- package/dist/src/core/sync/status-sync-engine.js.map +1 -1
- package/dist/src/core/sync/time-range-selector.d.ts +1 -1
- package/dist/src/core/sync/time-range-selector.d.ts.map +1 -1
- package/dist/src/core/sync/time-range-selector.js +1 -1
- package/dist/src/core/sync/time-range-selector.js.map +1 -1
- package/dist/src/core/types/increment-metadata.d.ts +27 -0
- package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
- package/dist/src/core/types/increment-metadata.js +45 -1
- package/dist/src/core/types/increment-metadata.js.map +1 -1
- package/dist/src/core/types/sync-profile.d.ts +2 -0
- package/dist/src/core/types/sync-profile.d.ts.map +1 -1
- package/dist/src/core/types/sync-profile.js.map +1 -1
- package/dist/src/core/validation/increment-structure-validator.d.ts +47 -0
- package/dist/src/core/validation/increment-structure-validator.d.ts.map +1 -0
- package/dist/src/core/validation/increment-structure-validator.js +187 -0
- package/dist/src/core/validation/increment-structure-validator.js.map +1 -0
- package/dist/src/core/validation/three-file-validator.d.ts +82 -0
- package/dist/src/core/validation/three-file-validator.d.ts.map +1 -0
- package/dist/src/core/validation/three-file-validator.js +320 -0
- package/dist/src/core/validation/three-file-validator.js.map +1 -0
- package/dist/src/core/workflow/phase-detector.d.ts +103 -0
- package/dist/src/core/workflow/phase-detector.d.ts.map +1 -0
- package/dist/src/core/workflow/phase-detector.js +704 -0
- package/dist/src/core/workflow/phase-detector.js.map +1 -0
- package/dist/src/core/workflow/types.d.ts +153 -0
- package/dist/src/core/workflow/types.d.ts.map +1 -0
- package/dist/src/core/workflow/types.js +47 -0
- package/dist/src/core/workflow/types.js.map +1 -0
- package/dist/src/init/InitFlow.d.ts +37 -0
- package/dist/src/init/InitFlow.d.ts.map +1 -0
- package/dist/src/init/InitFlow.js +209 -0
- package/dist/src/init/InitFlow.js.map +1 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.d.ts +107 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.d.ts.map +1 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.js +405 -0
- package/dist/src/init/architecture/ArchitectureDecisionEngine.js.map +1 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.d.ts +11 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.d.ts.map +1 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.js +92 -0
- package/dist/src/init/architecture/CloudCreditsDatabase.js.map +1 -0
- package/dist/src/init/architecture/types.d.ts +251 -0
- package/dist/src/init/architecture/types.d.ts.map +1 -0
- package/dist/src/init/architecture/types.js +54 -0
- package/dist/src/init/architecture/types.js.map +1 -0
- package/dist/src/init/compliance/ComplianceDetector.d.ts +17 -0
- package/dist/src/init/compliance/ComplianceDetector.d.ts.map +1 -0
- package/dist/src/init/compliance/ComplianceDetector.js +64 -0
- package/dist/src/init/compliance/ComplianceDetector.js.map +1 -0
- package/dist/src/init/compliance/standards-database.d.ts +48 -0
- package/dist/src/init/compliance/standards-database.d.ts.map +1 -0
- package/dist/src/init/compliance/standards-database.js +506 -0
- package/dist/src/init/compliance/standards-database.js.map +1 -0
- package/dist/src/init/compliance/types.d.ts +91 -0
- package/dist/src/init/compliance/types.d.ts.map +1 -0
- package/dist/src/init/compliance/types.js +43 -0
- package/dist/src/init/compliance/types.js.map +1 -0
- package/dist/src/init/repo/GitHubAPIClient.d.ts +51 -0
- package/dist/src/init/repo/GitHubAPIClient.d.ts.map +1 -0
- package/dist/src/init/repo/GitHubAPIClient.js +144 -0
- package/dist/src/init/repo/GitHubAPIClient.js.map +1 -0
- package/dist/src/init/repo/RepositorySelector.d.ts +45 -0
- package/dist/src/init/repo/RepositorySelector.d.ts.map +1 -0
- package/dist/src/init/repo/RepositorySelector.js +106 -0
- package/dist/src/init/repo/RepositorySelector.js.map +1 -0
- package/dist/src/init/repo/types.d.ts +95 -0
- package/dist/src/init/repo/types.d.ts.map +1 -0
- package/dist/src/init/repo/types.js +25 -0
- package/dist/src/init/repo/types.js.map +1 -0
- package/dist/src/init/research/CompetitorAnalyzer.d.ts +79 -0
- package/dist/src/init/research/CompetitorAnalyzer.d.ts.map +1 -0
- package/dist/src/init/research/CompetitorAnalyzer.js +265 -0
- package/dist/src/init/research/CompetitorAnalyzer.js.map +1 -0
- package/dist/src/init/research/MarketDetector.d.ts +62 -0
- package/dist/src/init/research/MarketDetector.d.ts.map +1 -0
- package/dist/src/init/research/MarketDetector.js +247 -0
- package/dist/src/init/research/MarketDetector.js.map +1 -0
- package/dist/src/init/research/OpportunityScorer.d.ts +58 -0
- package/dist/src/init/research/OpportunityScorer.d.ts.map +1 -0
- package/dist/src/init/research/OpportunityScorer.js +194 -0
- package/dist/src/init/research/OpportunityScorer.js.map +1 -0
- package/dist/src/init/research/QuestionGenerator.d.ts +68 -0
- package/dist/src/init/research/QuestionGenerator.d.ts.map +1 -0
- package/dist/src/init/research/QuestionGenerator.js +244 -0
- package/dist/src/init/research/QuestionGenerator.js.map +1 -0
- package/dist/src/init/research/ReportGenerator.d.ts +36 -0
- package/dist/src/init/research/ReportGenerator.d.ts.map +1 -0
- package/dist/src/init/research/ReportGenerator.js +125 -0
- package/dist/src/init/research/ReportGenerator.js.map +1 -0
- package/dist/src/init/research/VisionAnalyzer.d.ts +129 -0
- package/dist/src/init/research/VisionAnalyzer.d.ts.map +1 -0
- package/dist/src/init/research/VisionAnalyzer.js +212 -0
- package/dist/src/init/research/VisionAnalyzer.js.map +1 -0
- package/dist/src/init/research/keyword-extractor.d.ts +78 -0
- package/dist/src/init/research/keyword-extractor.d.ts.map +1 -0
- package/dist/src/init/research/keyword-extractor.js +230 -0
- package/dist/src/init/research/keyword-extractor.js.map +1 -0
- package/dist/src/init/research/src/config/ConfigManager.d.ts +14 -0
- package/dist/src/init/research/src/config/ConfigManager.d.ts.map +1 -0
- package/dist/src/init/research/src/config/ConfigManager.js +45 -0
- package/dist/src/init/research/src/config/ConfigManager.js.map +1 -0
- package/dist/src/init/research/src/config/types.d.ts +102 -0
- package/dist/src/init/research/src/config/types.d.ts.map +1 -0
- package/dist/src/init/research/src/config/types.js +24 -0
- package/dist/src/init/research/src/config/types.js.map +1 -0
- package/dist/src/init/research/types.d.ts +183 -0
- package/dist/src/init/research/types.d.ts.map +1 -0
- package/dist/src/init/research/types.js +65 -0
- package/dist/src/init/research/types.js.map +1 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.d.ts +136 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.d.ts.map +1 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.js +360 -0
- package/dist/src/init/team/ServerlessSavingsCalculator.js.map +1 -0
- package/dist/src/init/team/TeamRecommender.d.ts +122 -0
- package/dist/src/init/team/TeamRecommender.d.ts.map +1 -0
- package/dist/src/init/team/TeamRecommender.js +405 -0
- package/dist/src/init/team/TeamRecommender.js.map +1 -0
- package/dist/src/init/team/types.d.ts +95 -0
- package/dist/src/init/team/types.d.ts.map +1 -0
- package/dist/src/init/team/types.js +23 -0
- package/dist/src/init/team/types.js.map +1 -0
- package/dist/src/integrations/jira/jira-mapper.d.ts +1 -1
- package/dist/src/integrations/jira/jira-mapper.d.ts.map +1 -1
- package/dist/src/types/cost-tracking.d.ts +1 -1
- package/dist/src/types/cost-tracking.d.ts.map +1 -1
- package/dist/src/utils/cost-reporter.d.ts +2 -2
- package/dist/src/utils/cost-reporter.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/config-generator.d.ts +1 -1
- package/dist/src/utils/docs-preview/config-generator.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/config-generator.js +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/docusaurus-setup.js +4 -4
- package/dist/src/utils/docs-preview/docusaurus-setup.js.map +1 -1
- package/dist/src/utils/docs-preview/index.d.ts +6 -6
- package/dist/src/utils/docs-preview/index.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/index.js +6 -6
- package/dist/src/utils/docs-preview/index.js.map +1 -1
- package/dist/src/utils/docs-preview/package-installer.d.ts +1 -1
- package/dist/src/utils/docs-preview/package-installer.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/package-installer.js +1 -1
- package/dist/src/utils/docs-preview/package-installer.js.map +1 -1
- package/dist/src/utils/docs-preview/server-manager.d.ts +1 -1
- package/dist/src/utils/docs-preview/server-manager.d.ts.map +1 -1
- package/dist/src/utils/docs-preview/server-manager.js +1 -1
- package/dist/src/utils/docs-preview/server-manager.js.map +1 -1
- package/dist/src/utils/docs-preview/sidebar-builder.d.ts +1 -1
- package/dist/src/utils/docs-preview/sidebar-builder.d.ts.map +1 -1
- package/dist/src/utils/generate-skills-index.d.ts +1 -1
- package/dist/src/utils/generate-skills-index.js +1 -1
- package/dist/src/utils/project-detection.js +1 -1
- package/dist/src/utils/project-detection.js.map +1 -1
- package/package.json +9 -3
- package/plugins/specweave/agents/architect/AGENT.md +605 -0
- package/plugins/specweave/agents/infrastructure/AGENT.md +760 -0
- package/plugins/specweave/agents/pm/AGENT.md +14 -13
- package/plugins/specweave/commands/specweave-check-hooks.md +186 -0
- package/plugins/specweave/commands/specweave-plan.md +151 -0
- package/plugins/specweave/commands/specweave-sync-acs.md +342 -0
- package/plugins/specweave/commands/specweave-validate.md +60 -11
- package/plugins/specweave/hooks/lib/update-status-line.sh +8 -4
- package/plugins/specweave/hooks/post-increment-change.sh +4 -0
- package/plugins/specweave/hooks/post-increment-completion.sh +7 -1
- package/plugins/specweave/hooks/post-increment-planning.sh +4 -0
- package/plugins/specweave/hooks/post-increment-status-change.sh +4 -0
- package/plugins/specweave/hooks/user-prompt-submit.sh +78 -0
- package/plugins/specweave/iac-templates/aws-lambda/README.md.hbs +280 -0
- package/plugins/specweave/iac-templates/aws-lambda/defaults.json +118 -0
- package/plugins/specweave/iac-templates/aws-lambda/environments/dev.defaults.json +46 -0
- package/plugins/specweave/iac-templates/aws-lambda/environments/prod.defaults.json +67 -0
- package/plugins/specweave/iac-templates/aws-lambda/environments/staging.defaults.json +47 -0
- package/plugins/specweave/iac-templates/aws-lambda/main.tf.hbs +241 -0
- package/plugins/specweave/iac-templates/aws-lambda/outputs.tf.hbs +61 -0
- package/plugins/specweave/iac-templates/aws-lambda/provider.tf.hbs +15 -0
- package/plugins/specweave/iac-templates/aws-lambda/variables.tf.hbs +88 -0
- package/plugins/specweave/iac-templates/azure-functions/README.md.hbs +315 -0
- package/plugins/specweave/iac-templates/azure-functions/defaults.json +65 -0
- package/plugins/specweave/iac-templates/azure-functions/environments/dev.defaults.json +30 -0
- package/plugins/specweave/iac-templates/azure-functions/environments/prod.defaults.json +34 -0
- package/plugins/specweave/iac-templates/azure-functions/environments/staging.defaults.json +31 -0
- package/plugins/specweave/iac-templates/azure-functions/iam.tf.hbs +34 -0
- package/plugins/specweave/iac-templates/azure-functions/main.tf.hbs +247 -0
- package/plugins/specweave/iac-templates/azure-functions/outputs.tf.hbs +72 -0
- package/plugins/specweave/iac-templates/azure-functions/provider.tf.hbs +14 -0
- package/plugins/specweave/iac-templates/azure-functions/variables.tf.hbs +64 -0
- package/plugins/specweave/iac-templates/firebase/README.md.hbs +487 -0
- package/plugins/specweave/iac-templates/firebase/defaults.json +55 -0
- package/plugins/specweave/iac-templates/firebase/environments/dev.defaults.json +44 -0
- package/plugins/specweave/iac-templates/firebase/environments/prod.defaults.json +52 -0
- package/plugins/specweave/iac-templates/firebase/environments/staging.defaults.json +43 -0
- package/plugins/specweave/iac-templates/firebase/iam.tf.hbs +75 -0
- package/plugins/specweave/iac-templates/firebase/main.tf.hbs +297 -0
- package/plugins/specweave/iac-templates/firebase/outputs.tf.hbs +67 -0
- package/plugins/specweave/iac-templates/firebase/provider.tf.hbs +26 -0
- package/plugins/specweave/iac-templates/firebase/variables.tf.hbs +68 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/README.md.hbs +330 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/defaults.json +69 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/dev.defaults.json +33 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/prod.defaults.json +40 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/environments/staging.defaults.json +33 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/iam.tf.hbs +54 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/main.tf.hbs +211 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/outputs.tf.hbs +44 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/provider.tf.hbs +14 -0
- package/plugins/specweave/iac-templates/gcp-cloud-functions/variables.tf.hbs +82 -0
- package/plugins/specweave/iac-templates/supabase/README.md.hbs +534 -0
- package/plugins/specweave/iac-templates/supabase/defaults.json +69 -0
- package/plugins/specweave/iac-templates/supabase/environments/dev.defaults.json +55 -0
- package/plugins/specweave/iac-templates/supabase/environments/prod.defaults.json +75 -0
- package/plugins/specweave/iac-templates/supabase/environments/staging.defaults.json +54 -0
- package/plugins/specweave/iac-templates/supabase/iam.tf.hbs +146 -0
- package/plugins/specweave/iac-templates/supabase/main.tf.hbs +310 -0
- package/plugins/specweave/iac-templates/supabase/outputs.tf.hbs +74 -0
- package/plugins/specweave/iac-templates/supabase/provider.tf.hbs +19 -0
- package/plugins/specweave/iac-templates/supabase/variables.tf.hbs +78 -0
- package/plugins/specweave/knowledge-base/serverless/FRESHNESS.md +69 -0
- package/plugins/specweave/knowledge-base/serverless/learning-paths.json +865 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/aws-lambda.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/azure-functions.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/firebase.json +46 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/gcp-cloud-functions.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/platforms/supabase.json +41 -0
- package/plugins/specweave/knowledge-base/serverless/schema.json +155 -0
- package/plugins/specweave/lib/hooks/auto-transition.js +50 -0
- package/plugins/specweave/lib/hooks/auto-transition.ts +84 -0
- package/plugins/specweave/lib/hooks/invoke-translator-skill.js +1 -1
- package/plugins/specweave/lib/hooks/invoke-translator-skill.ts +1 -1
- package/plugins/specweave/lib/hooks/sync-living-docs.js +4 -31
- package/plugins/specweave/lib/hooks/{sync-living-docs.ts → sync-living-docs.ts.DISABLED} +9 -48
- package/plugins/specweave/lib/hooks/translate-file.js +1 -1
- package/plugins/specweave/lib/hooks/translate-file.ts +1 -1
- package/plugins/specweave/lib/hooks/update-ac-status.js +24 -75
- package/plugins/specweave/lib/hooks/update-ac-status.ts +46 -135
- package/plugins/specweave/lib/hooks/update-tasks-md.js +115 -3
- package/plugins/specweave/lib/hooks/update-tasks-md.ts +182 -10
- package/plugins/specweave/lib/utils/validate-dev-setup.sh +133 -0
- package/plugins/specweave/skills/increment-planner/SKILL.md +25 -15
- package/plugins/specweave/skills/serverless-recommender/SKILL.md +368 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/iam.tf.hbs +137 -0
- package/plugins/specweave/templates/iac/aws-lambda/templates/main.tf.hbs +216 -0
- package/plugins/specweave-github/lib/IssueStateManager.js +117 -0
- package/plugins/specweave-github/lib/IssueStateManager.ts +231 -0
- package/plugins/specweave-github/lib/user-story-issue-builder.js +7 -0
- package/plugins/specweave-github/lib/user-story-issue-builder.ts +11 -0
- package/plugins/specweave-ui/.mcp.json +0 -10
- package/plugins/specweave-ui/README.md +26 -26
- package/plugins/specweave-ui/skills/browser-automation/SKILL.md +31 -18
- package/src/templates/tasks.md.template +51 -33
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts +0 -89
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js +0 -226
- package/dist/plugins/specweave/lib/hooks/git-diff-analyzer.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts +0 -60
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js +0 -201
- package/dist/plugins/specweave/lib/hooks/invoke-translator-skill.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts +0 -42
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js +0 -123
- package/dist/plugins/specweave/lib/hooks/prepare-reflection-context.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts +0 -45
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js +0 -132
- package/dist/plugins/specweave/lib/hooks/reflection-config-loader.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts +0 -33
- package/dist/plugins/specweave/lib/hooks/reflection-parser.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-parser.js +0 -419
- package/dist/plugins/specweave/lib/hooks/reflection-parser.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts +0 -56
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js +0 -239
- package/dist/plugins/specweave/lib/hooks/reflection-prompt-builder.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts +0 -64
- package/dist/plugins/specweave/lib/hooks/reflection-storage.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/reflection-storage.js +0 -305
- package/dist/plugins/specweave/lib/hooks/reflection-storage.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts +0 -43
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.js +0 -203
- package/dist/plugins/specweave/lib/hooks/run-self-reflection.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts +0 -32
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js +0 -405
- package/dist/plugins/specweave/lib/hooks/sync-living-docs.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-file.d.ts +0 -59
- package/dist/plugins/specweave/lib/hooks/translate-file.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-file.js +0 -350
- package/dist/plugins/specweave/lib/hooks/translate-file.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts +0 -13
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.js +0 -175
- package/dist/plugins/specweave/lib/hooks/translate-living-docs.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts +0 -164
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.js +0 -73
- package/dist/plugins/specweave/lib/hooks/types/reflection-types.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts +0 -21
- package/dist/plugins/specweave/lib/hooks/update-ac-status.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-ac-status.js +0 -162
- package/dist/plugins/specweave/lib/hooks/update-ac-status.js.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts +0 -29
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.d.ts.map +0 -1
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.js +0 -203
- package/dist/plugins/specweave/lib/hooks/update-tasks-md.js.map +0 -1
- package/dist/src/core/living-docs/spec-distributor.d.ts +0 -180
- package/dist/src/core/living-docs/spec-distributor.d.ts.map +0 -1
- package/dist/src/core/living-docs/spec-distributor.js +0 -1840
- package/dist/src/core/living-docs/spec-distributor.js.map +0 -1
|
@@ -0,0 +1,496 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpecSyncManager - Automatic synchronization of plan.md and tasks.md when spec.md changes
|
|
3
|
+
*
|
|
4
|
+
* Purpose: Maintain consistency in spec-driven development by automatically regenerating
|
|
5
|
+
* downstream artifacts (plan.md, tasks.md) when the source of truth (spec.md) is modified.
|
|
6
|
+
*
|
|
7
|
+
* This enforces the SpecWeave principle: spec.md is the source of truth, all other files derive from it.
|
|
8
|
+
*
|
|
9
|
+
* @module spec-sync-manager
|
|
10
|
+
*/
|
|
11
|
+
import * as fs from 'fs';
|
|
12
|
+
import * as path from 'path';
|
|
13
|
+
import { MetadataManager } from './metadata-manager.js';
|
|
14
|
+
export class SpecSyncManager {
|
|
15
|
+
constructor(projectRoot) {
|
|
16
|
+
this.projectRoot = projectRoot;
|
|
17
|
+
this.incrementsDir = path.join(projectRoot, '.specweave', 'increments');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Detect if spec.md was modified after plan.md or tasks.md
|
|
21
|
+
*
|
|
22
|
+
* @param incrementId - Increment to check (e.g., "0039-ultra-smart-next-command")
|
|
23
|
+
* @returns Detection result with modification times and reasoning
|
|
24
|
+
*/
|
|
25
|
+
detectSpecChange(incrementId) {
|
|
26
|
+
const incrementDir = path.join(this.incrementsDir, incrementId);
|
|
27
|
+
const specPath = path.join(incrementDir, 'spec.md');
|
|
28
|
+
const planPath = path.join(incrementDir, 'plan.md');
|
|
29
|
+
const tasksPath = path.join(incrementDir, 'tasks.md');
|
|
30
|
+
// Check if spec.md exists
|
|
31
|
+
if (!fs.existsSync(specPath)) {
|
|
32
|
+
return {
|
|
33
|
+
specChanged: false,
|
|
34
|
+
specModTime: 0,
|
|
35
|
+
planModTime: 0,
|
|
36
|
+
tasksModTime: 0,
|
|
37
|
+
incrementId,
|
|
38
|
+
reason: 'spec.md does not exist'
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// Get modification times
|
|
42
|
+
const specStat = fs.statSync(specPath);
|
|
43
|
+
const specModTime = specStat.mtimeMs;
|
|
44
|
+
// If plan.md doesn't exist, no sync needed (planning phase)
|
|
45
|
+
if (!fs.existsSync(planPath)) {
|
|
46
|
+
return {
|
|
47
|
+
specChanged: false,
|
|
48
|
+
specModTime,
|
|
49
|
+
planModTime: 0,
|
|
50
|
+
tasksModTime: 0,
|
|
51
|
+
incrementId,
|
|
52
|
+
reason: 'plan.md does not exist yet (planning phase)'
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const planStat = fs.statSync(planPath);
|
|
56
|
+
const planModTime = planStat.mtimeMs;
|
|
57
|
+
// Check if tasks.md exists
|
|
58
|
+
const tasksModTime = fs.existsSync(tasksPath)
|
|
59
|
+
? fs.statSync(tasksPath).mtimeMs
|
|
60
|
+
: 0;
|
|
61
|
+
// Spec changed if it's newer than plan.md
|
|
62
|
+
const specChanged = specModTime > planModTime;
|
|
63
|
+
return {
|
|
64
|
+
specChanged,
|
|
65
|
+
specModTime,
|
|
66
|
+
planModTime,
|
|
67
|
+
tasksModTime,
|
|
68
|
+
incrementId,
|
|
69
|
+
reason: specChanged
|
|
70
|
+
? `spec.md modified after plan.md (spec: ${new Date(specModTime).toISOString()}, plan: ${new Date(planModTime).toISOString()})`
|
|
71
|
+
: 'spec.md has not changed since plan.md was created'
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get the currently active increment ID
|
|
76
|
+
*
|
|
77
|
+
* @returns Active increment ID or null if none active
|
|
78
|
+
*/
|
|
79
|
+
getActiveIncrementId() {
|
|
80
|
+
try {
|
|
81
|
+
const activeIncrements = MetadataManager.getActive();
|
|
82
|
+
if (activeIncrements.length === 0) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
// Return the first active increment (should only be 1 due to WIP limits)
|
|
86
|
+
return activeIncrements[0].id;
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
console.error('Error getting active increment:', error);
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Extract manual annotations from markdown content
|
|
95
|
+
*
|
|
96
|
+
* Detects HTML comments with keywords: MANUAL NOTE, TODO, NOTE
|
|
97
|
+
*
|
|
98
|
+
* @param content - Markdown content to analyze
|
|
99
|
+
* @param filePath - File path for context
|
|
100
|
+
* @returns Array of manual annotations
|
|
101
|
+
*/
|
|
102
|
+
extractManualAnnotations(content, filePath) {
|
|
103
|
+
const annotations = [];
|
|
104
|
+
const lines = content.split('\n');
|
|
105
|
+
lines.forEach((line, index) => {
|
|
106
|
+
// Match HTML comments with manual keywords
|
|
107
|
+
const commentMatch = line.match(/<!--\s*(MANUAL NOTE|TODO|NOTE):\s*([^>]+)\s*-->/);
|
|
108
|
+
if (commentMatch) {
|
|
109
|
+
const keyword = commentMatch[1];
|
|
110
|
+
const text = commentMatch[2].trim();
|
|
111
|
+
annotations.push({
|
|
112
|
+
type: keyword === 'MANUAL NOTE' ? 'note' : keyword.toLowerCase(),
|
|
113
|
+
line: index + 1,
|
|
114
|
+
content: text,
|
|
115
|
+
context: this.getLineContext(lines, index)
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
return annotations;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get surrounding context for a line (3 lines before and after)
|
|
123
|
+
*
|
|
124
|
+
* @param lines - All file lines
|
|
125
|
+
* @param lineIndex - Index of target line
|
|
126
|
+
* @returns Context string
|
|
127
|
+
*/
|
|
128
|
+
getLineContext(lines, lineIndex) {
|
|
129
|
+
const start = Math.max(0, lineIndex - 3);
|
|
130
|
+
const end = Math.min(lines.length, lineIndex + 4);
|
|
131
|
+
return lines.slice(start, end).join('\n');
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Prepare regeneration context for plan.md and tasks.md
|
|
135
|
+
*
|
|
136
|
+
* @param incrementId - Increment ID
|
|
137
|
+
* @returns Regeneration context with all necessary information
|
|
138
|
+
*/
|
|
139
|
+
prepareRegenerationContext(incrementId) {
|
|
140
|
+
const incrementDir = path.join(this.incrementsDir, incrementId);
|
|
141
|
+
const specPath = path.join(incrementDir, 'spec.md');
|
|
142
|
+
const planPath = path.join(incrementDir, 'plan.md');
|
|
143
|
+
const tasksPath = path.join(incrementDir, 'tasks.md');
|
|
144
|
+
// Verify spec.md exists
|
|
145
|
+
if (!fs.existsSync(specPath)) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
// Read spec content
|
|
149
|
+
const specContent = fs.readFileSync(specPath, 'utf-8');
|
|
150
|
+
// Read old plan and tasks if they exist
|
|
151
|
+
const oldPlanContent = fs.existsSync(planPath)
|
|
152
|
+
? fs.readFileSync(planPath, 'utf-8')
|
|
153
|
+
: undefined;
|
|
154
|
+
const oldTasksContent = fs.existsSync(tasksPath)
|
|
155
|
+
? fs.readFileSync(tasksPath, 'utf-8')
|
|
156
|
+
: undefined;
|
|
157
|
+
// Extract manual annotations from plan.md
|
|
158
|
+
const manualAnnotations = oldPlanContent
|
|
159
|
+
? this.extractManualAnnotations(oldPlanContent, planPath)
|
|
160
|
+
: [];
|
|
161
|
+
return {
|
|
162
|
+
incrementId,
|
|
163
|
+
specPath,
|
|
164
|
+
planPath,
|
|
165
|
+
tasksPath,
|
|
166
|
+
specContent,
|
|
167
|
+
oldPlanContent,
|
|
168
|
+
oldTasksContent,
|
|
169
|
+
manualAnnotations
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Generate diff between old and new plan.md
|
|
174
|
+
*
|
|
175
|
+
* @param oldContent - Original plan.md content
|
|
176
|
+
* @param newContent - Regenerated plan.md content
|
|
177
|
+
* @returns Diff summary with line changes
|
|
178
|
+
*/
|
|
179
|
+
generatePlanDiff(oldContent, newContent) {
|
|
180
|
+
const oldLines = oldContent.split('\n');
|
|
181
|
+
const newLines = newContent.split('\n');
|
|
182
|
+
const changes = [];
|
|
183
|
+
// Simple line-based diff
|
|
184
|
+
const maxLines = Math.max(oldLines.length, newLines.length);
|
|
185
|
+
for (let i = 0; i < maxLines; i++) {
|
|
186
|
+
const oldLine = oldLines[i] || '';
|
|
187
|
+
const newLine = newLines[i] || '';
|
|
188
|
+
if (oldLine !== newLine) {
|
|
189
|
+
if (!oldLine) {
|
|
190
|
+
changes.push(`+ Line ${i + 1}: ${newLine}`);
|
|
191
|
+
}
|
|
192
|
+
else if (!newLine) {
|
|
193
|
+
changes.push(`- Line ${i + 1}: ${oldLine}`);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
changes.push(`~ Line ${i + 1}: ${oldLine} → ${newLine}`);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return changes;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Parse task completion status from tasks.md
|
|
204
|
+
*
|
|
205
|
+
* Extracts which tasks and subtasks are completed
|
|
206
|
+
*
|
|
207
|
+
* @param tasksContent - tasks.md content
|
|
208
|
+
* @returns Array of task completion records
|
|
209
|
+
*/
|
|
210
|
+
parseTaskCompletion(tasksContent) {
|
|
211
|
+
const completions = [];
|
|
212
|
+
const lines = tasksContent.split('\n');
|
|
213
|
+
let currentTask = null;
|
|
214
|
+
lines.forEach((line, index) => {
|
|
215
|
+
// Match task headers: ## T-001: Task name
|
|
216
|
+
const taskHeaderMatch = line.match(/^##\s+(T-\d+):/);
|
|
217
|
+
if (taskHeaderMatch) {
|
|
218
|
+
// Save previous task if exists
|
|
219
|
+
if (currentTask) {
|
|
220
|
+
completions.push(currentTask);
|
|
221
|
+
}
|
|
222
|
+
// Start new task
|
|
223
|
+
currentTask = {
|
|
224
|
+
taskId: taskHeaderMatch[1],
|
|
225
|
+
completed: false,
|
|
226
|
+
subtasks: []
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
// Match subtasks: - [x] or - [ ]
|
|
230
|
+
const subtaskMatch = line.match(/^-\s+\[(x| )\]\s+(.+)$/);
|
|
231
|
+
if (subtaskMatch && currentTask) {
|
|
232
|
+
const isCompleted = subtaskMatch[1] === 'x';
|
|
233
|
+
const text = subtaskMatch[2].trim();
|
|
234
|
+
currentTask.subtasks.push({
|
|
235
|
+
text,
|
|
236
|
+
completed: isCompleted,
|
|
237
|
+
line: index + 1
|
|
238
|
+
});
|
|
239
|
+
// Mark task as completed if all subtasks are completed
|
|
240
|
+
if (currentTask.subtasks.every(s => s.completed)) {
|
|
241
|
+
currentTask.completed = true;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
// Add last task
|
|
246
|
+
if (currentTask) {
|
|
247
|
+
completions.push(currentTask);
|
|
248
|
+
}
|
|
249
|
+
return completions;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Generate diff between old and new tasks.md
|
|
253
|
+
*
|
|
254
|
+
* @param oldContent - Original tasks.md content
|
|
255
|
+
* @param newContent - Regenerated tasks.md content
|
|
256
|
+
* @returns Diff summary with task changes
|
|
257
|
+
*/
|
|
258
|
+
generateTasksDiff(oldContent, newContent) {
|
|
259
|
+
const changes = [];
|
|
260
|
+
// Extract task IDs from both versions
|
|
261
|
+
const oldTaskIds = (oldContent.match(/^## (T-\d+):/gm) || []).map(h => h.replace(/^## (T-\d+):/, '$1'));
|
|
262
|
+
const newTaskIds = (newContent.match(/^## (T-\d+):/gm) || []).map(h => h.replace(/^## (T-\d+):/, '$1'));
|
|
263
|
+
// Find added tasks
|
|
264
|
+
const addedTasks = newTaskIds.filter(id => !oldTaskIds.includes(id));
|
|
265
|
+
if (addedTasks.length > 0) {
|
|
266
|
+
changes.push(`+ Added ${addedTasks.length} tasks: ${addedTasks.join(', ')}`);
|
|
267
|
+
}
|
|
268
|
+
// Find removed tasks
|
|
269
|
+
const removedTasks = oldTaskIds.filter(id => !newTaskIds.includes(id));
|
|
270
|
+
if (removedTasks.length > 0) {
|
|
271
|
+
changes.push(`- Removed ${removedTasks.length} tasks: ${removedTasks.join(', ')}`);
|
|
272
|
+
}
|
|
273
|
+
// Find preserved tasks
|
|
274
|
+
const preservedTasks = oldTaskIds.filter(id => newTaskIds.includes(id));
|
|
275
|
+
if (preservedTasks.length > 0) {
|
|
276
|
+
changes.push(`~ Preserved ${preservedTasks.length} tasks: ${preservedTasks.join(', ')}`);
|
|
277
|
+
}
|
|
278
|
+
return changes;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Apply completion status from old tasks to new tasks
|
|
282
|
+
*
|
|
283
|
+
* Matches tasks by ID and text similarity, preserves completed checkboxes
|
|
284
|
+
*
|
|
285
|
+
* @param newTasksContent - Regenerated tasks.md content
|
|
286
|
+
* @param oldCompletions - Completion status from old tasks.md
|
|
287
|
+
* @returns Updated tasks.md content with completion status preserved
|
|
288
|
+
*/
|
|
289
|
+
applyTaskCompletion(newTasksContent, oldCompletions) {
|
|
290
|
+
const lines = newTasksContent.split('\n');
|
|
291
|
+
let currentTaskId = null;
|
|
292
|
+
const updatedLines = lines.map(line => {
|
|
293
|
+
// Track current task
|
|
294
|
+
const taskHeaderMatch = line.match(/^##\s+(T-\d+):/);
|
|
295
|
+
if (taskHeaderMatch) {
|
|
296
|
+
currentTaskId = taskHeaderMatch[1];
|
|
297
|
+
return line;
|
|
298
|
+
}
|
|
299
|
+
// Update subtask completion status
|
|
300
|
+
const subtaskMatch = line.match(/^(-\s+)\[(x| )\]\s+(.+)$/);
|
|
301
|
+
if (subtaskMatch && currentTaskId) {
|
|
302
|
+
const prefix = subtaskMatch[1];
|
|
303
|
+
const text = subtaskMatch[3].trim();
|
|
304
|
+
// Find old completion for this task
|
|
305
|
+
const oldTask = oldCompletions.find(t => t.taskId === currentTaskId);
|
|
306
|
+
if (oldTask) {
|
|
307
|
+
// Find matching subtask by text similarity
|
|
308
|
+
const matchingSubtask = oldTask.subtasks.find(s => this.isTextSimilar(s.text, text));
|
|
309
|
+
if (matchingSubtask && matchingSubtask.completed) {
|
|
310
|
+
// Preserve completion status
|
|
311
|
+
return `${prefix}[x] ${text}`;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return line;
|
|
316
|
+
});
|
|
317
|
+
return updatedLines.join('\n');
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Check if two text strings are similar (for matching subtasks)
|
|
321
|
+
*
|
|
322
|
+
* Uses simple comparison: exact match or contains
|
|
323
|
+
*
|
|
324
|
+
* @param text1 - First text
|
|
325
|
+
* @param text2 - Second text
|
|
326
|
+
* @returns True if texts are similar
|
|
327
|
+
*/
|
|
328
|
+
isTextSimilar(text1, text2) {
|
|
329
|
+
const normalized1 = text1.toLowerCase().trim();
|
|
330
|
+
const normalized2 = text2.toLowerCase().trim();
|
|
331
|
+
// Exact match
|
|
332
|
+
if (normalized1 === normalized2) {
|
|
333
|
+
return true;
|
|
334
|
+
}
|
|
335
|
+
// Check if one contains the other (for renamed but similar tasks)
|
|
336
|
+
if (normalized1.includes(normalized2) ||
|
|
337
|
+
normalized2.includes(normalized1)) {
|
|
338
|
+
return true;
|
|
339
|
+
}
|
|
340
|
+
return false;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Synchronize plan.md and tasks.md based on spec.md changes
|
|
344
|
+
*
|
|
345
|
+
* This method:
|
|
346
|
+
* 1. Detects if spec.md changed
|
|
347
|
+
* 2. Prepares regeneration context
|
|
348
|
+
* 3. Returns context for Claude Code to invoke Architect Agent
|
|
349
|
+
* 4. Preserves manual annotations
|
|
350
|
+
* 5. Logs changes to metadata
|
|
351
|
+
*
|
|
352
|
+
* @param incrementId - Increment to sync
|
|
353
|
+
* @param skipSync - Skip sync even if spec changed (user override)
|
|
354
|
+
* @returns Sync result with regeneration context
|
|
355
|
+
*/
|
|
356
|
+
async syncIncrement(incrementId, skipSync = false) {
|
|
357
|
+
const detection = this.detectSpecChange(incrementId);
|
|
358
|
+
// No sync needed if spec hasn't changed
|
|
359
|
+
if (!detection.specChanged) {
|
|
360
|
+
return {
|
|
361
|
+
synced: false,
|
|
362
|
+
reason: detection.reason,
|
|
363
|
+
planRegenerated: false,
|
|
364
|
+
tasksRegenerated: false,
|
|
365
|
+
changes: []
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
// User requested skip
|
|
369
|
+
if (skipSync) {
|
|
370
|
+
return {
|
|
371
|
+
synced: false,
|
|
372
|
+
reason: 'Sync skipped by user (--skip-sync flag)',
|
|
373
|
+
planRegenerated: false,
|
|
374
|
+
tasksRegenerated: false,
|
|
375
|
+
changes: []
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
// Perform sync
|
|
379
|
+
const changes = [];
|
|
380
|
+
try {
|
|
381
|
+
changes.push('spec.md detected as modified');
|
|
382
|
+
// Prepare regeneration context
|
|
383
|
+
const context = this.prepareRegenerationContext(incrementId);
|
|
384
|
+
if (!context) {
|
|
385
|
+
return {
|
|
386
|
+
synced: false,
|
|
387
|
+
reason: 'Failed to prepare regeneration context',
|
|
388
|
+
planRegenerated: false,
|
|
389
|
+
tasksRegenerated: false,
|
|
390
|
+
changes
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
changes.push('Regeneration context prepared');
|
|
394
|
+
if (context.manualAnnotations.length > 0) {
|
|
395
|
+
changes.push(`Found ${context.manualAnnotations.length} manual annotations to preserve`);
|
|
396
|
+
}
|
|
397
|
+
// Log sync event to metadata
|
|
398
|
+
this.logSyncEvent(incrementId, detection);
|
|
399
|
+
return {
|
|
400
|
+
synced: true,
|
|
401
|
+
reason: 'Spec changed, regeneration context prepared',
|
|
402
|
+
planRegenerated: false, // Will be set by command after agent invocation
|
|
403
|
+
tasksRegenerated: false, // Will be set by command after agent invocation
|
|
404
|
+
changes,
|
|
405
|
+
regenerationContext: context
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
catch (error) {
|
|
409
|
+
return {
|
|
410
|
+
synced: false,
|
|
411
|
+
reason: 'Sync failed',
|
|
412
|
+
planRegenerated: false,
|
|
413
|
+
tasksRegenerated: false,
|
|
414
|
+
changes,
|
|
415
|
+
error: error instanceof Error ? error.message : String(error)
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Log sync event to increment metadata
|
|
421
|
+
*
|
|
422
|
+
* @param incrementId - Increment ID
|
|
423
|
+
* @param detection - Detection result
|
|
424
|
+
*/
|
|
425
|
+
logSyncEvent(incrementId, detection) {
|
|
426
|
+
try {
|
|
427
|
+
const metadataPath = path.join(this.incrementsDir, incrementId, 'metadata.json');
|
|
428
|
+
if (!fs.existsSync(metadataPath)) {
|
|
429
|
+
return;
|
|
430
|
+
}
|
|
431
|
+
const metadata = JSON.parse(fs.readFileSync(metadataPath, 'utf-8'));
|
|
432
|
+
// Add sync log entry
|
|
433
|
+
if (!metadata.syncEvents) {
|
|
434
|
+
metadata.syncEvents = [];
|
|
435
|
+
}
|
|
436
|
+
metadata.syncEvents.push({
|
|
437
|
+
timestamp: new Date().toISOString(),
|
|
438
|
+
type: 'spec-change-detected',
|
|
439
|
+
specModTime: detection.specModTime,
|
|
440
|
+
planModTime: detection.planModTime,
|
|
441
|
+
tasksModTime: detection.tasksModTime,
|
|
442
|
+
reason: detection.reason
|
|
443
|
+
});
|
|
444
|
+
// Keep only last 10 sync events
|
|
445
|
+
if (metadata.syncEvents.length > 10) {
|
|
446
|
+
metadata.syncEvents = metadata.syncEvents.slice(-10);
|
|
447
|
+
}
|
|
448
|
+
fs.writeFileSync(metadataPath, JSON.stringify(metadata, null, 2));
|
|
449
|
+
}
|
|
450
|
+
catch (error) {
|
|
451
|
+
console.error('Failed to log sync event:', error);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Check if spec sync is needed for the active increment
|
|
456
|
+
*
|
|
457
|
+
* @returns Detection result or null if no active increment
|
|
458
|
+
*/
|
|
459
|
+
checkActiveIncrement() {
|
|
460
|
+
const activeId = this.getActiveIncrementId();
|
|
461
|
+
if (!activeId) {
|
|
462
|
+
return null;
|
|
463
|
+
}
|
|
464
|
+
return this.detectSpecChange(activeId);
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Get human-readable sync status message
|
|
468
|
+
*
|
|
469
|
+
* @param detection - Detection result
|
|
470
|
+
* @returns Formatted message for user
|
|
471
|
+
*/
|
|
472
|
+
formatSyncMessage(detection) {
|
|
473
|
+
if (!detection.specChanged) {
|
|
474
|
+
return ''; // No message needed
|
|
475
|
+
}
|
|
476
|
+
const specTime = new Date(detection.specModTime).toLocaleString();
|
|
477
|
+
const planTime = new Date(detection.planModTime).toLocaleString();
|
|
478
|
+
return `⚠️ SPEC CHANGED - SYNC REQUIRED
|
|
479
|
+
|
|
480
|
+
Increment: ${detection.incrementId}
|
|
481
|
+
|
|
482
|
+
📝 spec.md was modified AFTER plan.md was created:
|
|
483
|
+
- spec.md: ${specTime}
|
|
484
|
+
- plan.md: ${planTime}
|
|
485
|
+
|
|
486
|
+
🔄 Automatic sync will regenerate:
|
|
487
|
+
1. plan.md (using Architect Agent)
|
|
488
|
+
2. tasks.md (using test-aware-planner)
|
|
489
|
+
|
|
490
|
+
⚡ Task completion status will be preserved
|
|
491
|
+
|
|
492
|
+
💡 To skip sync: Add --skip-sync flag to your command
|
|
493
|
+
📖 Learn more: /specweave:help sync`;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
//# sourceMappingURL=spec-sync-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-sync-manager.js","sourceRoot":"","sources":["../../../../src/core/increment/spec-sync-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status Auto-Transition Module
|
|
3
|
+
*
|
|
4
|
+
* Automatically transitions increment status based on file activity:
|
|
5
|
+
* - When spec.md created → status = PLANNING (if not already set)
|
|
6
|
+
* - When tasks.md created → status = ACTIVE (if currently PLANNING)
|
|
7
|
+
* - When first task marked in-progress → status = ACTIVE (if not already)
|
|
8
|
+
*
|
|
9
|
+
* Part of increment 0039: Ultra-Smart Next Command
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Auto-transition increment status based on file activity
|
|
13
|
+
*
|
|
14
|
+
* Transition Rules:
|
|
15
|
+
* 1. PLANNING → ACTIVE: When tasks.md created or first task in-progress
|
|
16
|
+
* 2. BACKLOG → PLANNING: When spec.md created (resume planning)
|
|
17
|
+
* 3. Any status → ACTIVE: When first task in-progress (override)
|
|
18
|
+
*
|
|
19
|
+
* @param incrementId - Increment ID to check
|
|
20
|
+
* @param triggerFile - File that triggered the check (optional, for logging)
|
|
21
|
+
* @returns true if status was transitioned, false otherwise
|
|
22
|
+
*/
|
|
23
|
+
export declare function autoTransitionStatus(incrementId: string, triggerFile?: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Auto-transition based on specific file creation
|
|
26
|
+
*
|
|
27
|
+
* This is called by file watchers or post-write hooks
|
|
28
|
+
*
|
|
29
|
+
* @param incrementId - Increment ID
|
|
30
|
+
* @param createdFile - File that was just created
|
|
31
|
+
*/
|
|
32
|
+
export declare function onFileCreated(incrementId: string, createdFile: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* Check if increment should auto-transition to ACTIVE
|
|
35
|
+
*
|
|
36
|
+
* Used by /specweave:do command before execution
|
|
37
|
+
*/
|
|
38
|
+
export declare function shouldTransitionToActive(incrementId: string): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Validate and fix "planned" vs "planning" inconsistency
|
|
41
|
+
*
|
|
42
|
+
* Legacy increments may have "planned" status (not in enum).
|
|
43
|
+
* This migrates them to "planning" (valid enum value).
|
|
44
|
+
*/
|
|
45
|
+
export declare function migrateLegacyStatuses(): number;
|
|
46
|
+
//# sourceMappingURL=status-auto-transition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-auto-transition.d.ts","sourceRoot":"","sources":["../../../../src/core/increment/status-auto-transition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmDH;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAgCvF;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAS5E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAuBrE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAwC9C"}
|