specweave 0.21.3 → 0.22.2

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.
Files changed (235) hide show
  1. package/CLAUDE.md +409 -6
  2. package/README.md +38 -8
  3. package/bin/specweave.js +5 -8
  4. package/dist/plugins/specweave-github/lib/CodeValidator.d.ts +101 -0
  5. package/dist/plugins/specweave-github/lib/CodeValidator.d.ts.map +1 -0
  6. package/dist/plugins/specweave-github/lib/CodeValidator.js +219 -0
  7. package/dist/plugins/specweave-github/lib/CodeValidator.js.map +1 -0
  8. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts +182 -0
  9. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts.map +1 -0
  10. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js +603 -0
  11. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js.map +1 -0
  12. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +10 -0
  13. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
  14. package/dist/plugins/specweave-github/lib/github-client-v2.js +26 -0
  15. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  16. package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +1 -1
  17. package/dist/plugins/specweave-github/lib/task-sync.js +7 -0
  18. package/dist/plugins/specweave-github/lib/task-sync.js.map +1 -1
  19. package/dist/plugins/specweave-github/lib/types.d.ts +34 -0
  20. package/dist/plugins/specweave-github/lib/types.d.ts.map +1 -1
  21. package/dist/src/cli/commands/init.d.ts.map +1 -1
  22. package/dist/src/cli/commands/init.js +60 -5
  23. package/dist/src/cli/commands/init.js.map +1 -1
  24. package/dist/src/cli/commands/migrate-to-profiles.d.ts +1 -0
  25. package/dist/src/cli/commands/migrate-to-profiles.d.ts.map +1 -1
  26. package/dist/src/cli/commands/migrate-to-profiles.js +12 -1
  27. package/dist/src/cli/commands/migrate-to-profiles.js.map +1 -1
  28. package/dist/src/cli/commands/next-command.d.ts +52 -0
  29. package/dist/src/cli/commands/next-command.d.ts.map +1 -0
  30. package/dist/src/cli/commands/next-command.js +204 -0
  31. package/dist/src/cli/commands/next-command.js.map +1 -0
  32. package/dist/src/cli/commands/sync-specs.d.ts +16 -0
  33. package/dist/src/cli/commands/sync-specs.d.ts.map +1 -0
  34. package/dist/src/cli/commands/sync-specs.js +130 -0
  35. package/dist/src/cli/commands/sync-specs.js.map +1 -0
  36. package/dist/src/cli/count-tasks.d.ts +20 -0
  37. package/dist/src/cli/count-tasks.d.ts.map +1 -0
  38. package/dist/src/cli/count-tasks.js +50 -0
  39. package/dist/src/cli/count-tasks.js.map +1 -0
  40. package/dist/src/config/ConfigManager.d.ts.map +1 -1
  41. package/dist/src/config/ConfigManager.js +2 -1
  42. package/dist/src/config/ConfigManager.js.map +1 -1
  43. package/dist/src/config/types.d.ts +58 -58
  44. package/dist/src/core/cicd/state-manager.d.ts +8 -0
  45. package/dist/src/core/cicd/state-manager.d.ts.map +1 -1
  46. package/dist/src/core/cicd/state-manager.js +60 -15
  47. package/dist/src/core/cicd/state-manager.js.map +1 -1
  48. package/dist/src/core/cost-tracker.d.ts.map +1 -1
  49. package/dist/src/core/cost-tracker.js +2 -1
  50. package/dist/src/core/cost-tracker.js.map +1 -1
  51. package/dist/src/core/iac/template-engine.d.ts.map +1 -1
  52. package/dist/src/core/iac/template-engine.js +28 -0
  53. package/dist/src/core/iac/template-engine.js.map +1 -1
  54. package/dist/src/core/iac/template-generator.d.ts +53 -0
  55. package/dist/src/core/iac/template-generator.d.ts.map +1 -0
  56. package/dist/src/core/iac/template-generator.js +125 -0
  57. package/dist/src/core/iac/template-generator.js.map +1 -0
  58. package/dist/src/core/increment/status-auto-transition.js +3 -3
  59. package/dist/src/core/increment/status-auto-transition.js.map +1 -1
  60. package/dist/src/core/living-docs/CodeValidator.js +1 -1
  61. package/dist/src/core/living-docs/CodeValidator.js.map +1 -1
  62. package/dist/src/core/living-docs/CompletionPropagator.d.ts.map +1 -1
  63. package/dist/src/core/living-docs/CompletionPropagator.js +4 -3
  64. package/dist/src/core/living-docs/CompletionPropagator.js.map +1 -1
  65. package/dist/src/core/living-docs/SpecDistributor.d.ts +5 -0
  66. package/dist/src/core/living-docs/SpecDistributor.d.ts.map +1 -1
  67. package/dist/src/core/living-docs/SpecDistributor.js +12 -0
  68. package/dist/src/core/living-docs/SpecDistributor.js.map +1 -1
  69. package/dist/src/core/living-docs/content-distributor.d.ts.map +1 -1
  70. package/dist/src/core/living-docs/content-distributor.js +11 -1
  71. package/dist/src/core/living-docs/content-distributor.js.map +1 -1
  72. package/dist/src/core/living-docs/living-docs-sync.d.ts +166 -0
  73. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -0
  74. package/dist/src/core/living-docs/living-docs-sync.js +726 -0
  75. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -0
  76. package/dist/src/core/living-docs/project-detector.d.ts.map +1 -1
  77. package/dist/src/core/living-docs/project-detector.js +38 -0
  78. package/dist/src/core/living-docs/project-detector.js.map +1 -1
  79. package/dist/src/core/living-docs/task-project-specific-generator.d.ts +7 -3
  80. package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -1
  81. package/dist/src/core/living-docs/task-project-specific-generator.js +40 -24
  82. package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -1
  83. package/dist/src/core/plugin-loader.d.ts +7 -0
  84. package/dist/src/core/plugin-loader.d.ts.map +1 -1
  85. package/dist/src/core/plugin-loader.js +18 -1
  86. package/dist/src/core/plugin-loader.js.map +1 -1
  87. package/dist/src/core/serverless/platform-data-loader.d.ts +8 -0
  88. package/dist/src/core/serverless/platform-data-loader.d.ts.map +1 -1
  89. package/dist/src/core/serverless/platform-data-loader.js +14 -0
  90. package/dist/src/core/serverless/platform-data-loader.js.map +1 -1
  91. package/dist/src/core/serverless/types.d.ts +1 -1
  92. package/dist/src/core/serverless/types.d.ts.map +1 -1
  93. package/dist/src/core/status-line/status-line-manager.d.ts +6 -2
  94. package/dist/src/core/status-line/status-line-manager.d.ts.map +1 -1
  95. package/dist/src/core/status-line/status-line-manager.js +11 -5
  96. package/dist/src/core/status-line/status-line-manager.js.map +1 -1
  97. package/dist/src/core/status-line/task-counter.d.ts +69 -0
  98. package/dist/src/core/status-line/task-counter.d.ts.map +1 -0
  99. package/dist/src/core/status-line/task-counter.js +107 -0
  100. package/dist/src/core/status-line/task-counter.js.map +1 -0
  101. package/dist/src/core/types/config.d.ts +23 -0
  102. package/dist/src/core/types/config.d.ts.map +1 -1
  103. package/dist/src/core/types/config.js +10 -0
  104. package/dist/src/core/types/config.js.map +1 -1
  105. package/dist/src/core/workflow/autonomous-executor.d.ts +111 -0
  106. package/dist/src/core/workflow/autonomous-executor.d.ts.map +1 -0
  107. package/dist/src/core/workflow/autonomous-executor.js +275 -0
  108. package/dist/src/core/workflow/autonomous-executor.js.map +1 -0
  109. package/dist/src/core/workflow/backlog-scanner.d.ts +94 -0
  110. package/dist/src/core/workflow/backlog-scanner.d.ts.map +1 -0
  111. package/dist/src/core/workflow/backlog-scanner.js +170 -0
  112. package/dist/src/core/workflow/backlog-scanner.js.map +1 -0
  113. package/dist/src/core/workflow/command-invoker.d.ts +86 -0
  114. package/dist/src/core/workflow/command-invoker.d.ts.map +1 -0
  115. package/dist/src/core/workflow/command-invoker.js +131 -0
  116. package/dist/src/core/workflow/command-invoker.js.map +1 -0
  117. package/dist/src/core/workflow/cost-estimator.d.ts +120 -0
  118. package/dist/src/core/workflow/cost-estimator.d.ts.map +1 -0
  119. package/dist/src/core/workflow/cost-estimator.js +222 -0
  120. package/dist/src/core/workflow/cost-estimator.js.map +1 -0
  121. package/dist/src/core/workflow/index.d.ts +20 -0
  122. package/dist/src/core/workflow/index.d.ts.map +1 -0
  123. package/dist/src/core/workflow/index.js +24 -0
  124. package/dist/src/core/workflow/index.js.map +1 -0
  125. package/dist/src/core/workflow/state-manager.d.ts +107 -0
  126. package/dist/src/core/workflow/state-manager.d.ts.map +1 -0
  127. package/dist/src/core/workflow/state-manager.js +126 -0
  128. package/dist/src/core/workflow/state-manager.js.map +1 -0
  129. package/dist/src/core/workflow/workflow-orchestrator.d.ts +93 -0
  130. package/dist/src/core/workflow/workflow-orchestrator.d.ts.map +1 -0
  131. package/dist/src/core/workflow/workflow-orchestrator.js +195 -0
  132. package/dist/src/core/workflow/workflow-orchestrator.js.map +1 -0
  133. package/dist/src/init/ArchitecturePresenter.d.ts +47 -0
  134. package/dist/src/init/ArchitecturePresenter.d.ts.map +1 -0
  135. package/dist/src/init/ArchitecturePresenter.js +180 -0
  136. package/dist/src/init/ArchitecturePresenter.js.map +1 -0
  137. package/dist/src/init/InitFlow.d.ts.map +1 -1
  138. package/dist/src/init/InitFlow.js +30 -1
  139. package/dist/src/init/InitFlow.js.map +1 -1
  140. package/dist/src/init/architecture/CostEstimator.d.ts +52 -0
  141. package/dist/src/init/architecture/CostEstimator.d.ts.map +1 -0
  142. package/dist/src/init/architecture/CostEstimator.js +107 -0
  143. package/dist/src/init/architecture/CostEstimator.js.map +1 -0
  144. package/dist/src/init/architecture/InfrastructureMapper.d.ts +41 -0
  145. package/dist/src/init/architecture/InfrastructureMapper.d.ts.map +1 -0
  146. package/dist/src/init/architecture/InfrastructureMapper.js +140 -0
  147. package/dist/src/init/architecture/InfrastructureMapper.js.map +1 -0
  148. package/dist/src/init/architecture/ProjectGenerator.d.ts +44 -0
  149. package/dist/src/init/architecture/ProjectGenerator.d.ts.map +1 -0
  150. package/dist/src/init/architecture/ProjectGenerator.js +216 -0
  151. package/dist/src/init/architecture/ProjectGenerator.js.map +1 -0
  152. package/dist/src/init/architecture/types.d.ts +10 -10
  153. package/dist/src/init/research/src/config/types.d.ts +8 -8
  154. package/dist/src/metrics/dora-calculator.js +2 -2
  155. package/dist/src/metrics/dora-calculator.js.map +1 -1
  156. package/dist/src/utils/pricing-constants.d.ts +5 -2
  157. package/dist/src/utils/pricing-constants.d.ts.map +1 -1
  158. package/dist/src/utils/pricing-constants.js +3 -2
  159. package/dist/src/utils/pricing-constants.js.map +1 -1
  160. package/package.json +9 -8
  161. package/plugins/specweave/agents/infrastructure/AGENT.md +88 -46
  162. package/plugins/specweave/agents/pm/AGENT.md +58 -1
  163. package/plugins/specweave/commands/specweave-archive-features.md +1 -1
  164. package/plugins/specweave/commands/specweave-archive-increments.md +1 -1
  165. package/plugins/specweave/commands/specweave-check-hooks.md +5 -0
  166. package/plugins/specweave/commands/specweave-done.md +12 -0
  167. package/plugins/specweave/commands/specweave-plan.md +1 -1
  168. package/plugins/specweave/commands/specweave-progress.md +108 -379
  169. package/plugins/specweave/commands/specweave-reopen.md +1 -1
  170. package/plugins/specweave/commands/specweave-restore-feature.md +1 -1
  171. package/plugins/specweave/commands/specweave-sync-specs.md +20 -48
  172. package/plugins/specweave/hooks/lib/update-status-line.sh +44 -35
  173. package/plugins/specweave/hooks/lib/validate-spec-status.sh +163 -0
  174. package/plugins/specweave/hooks/user-prompt-submit.sh +17 -35
  175. package/plugins/specweave/lib/hooks/update-tasks-md.js +52 -9
  176. package/plugins/specweave/lib/hooks/update-tasks-md.ts +77 -16
  177. package/plugins/specweave/templates/iac/aws-lambda/defaults.json +24 -0
  178. package/plugins/specweave/templates/iac/aws-lambda/templates/README.md.hbs +260 -0
  179. package/plugins/specweave/templates/iac/aws-lambda/templates/environments/dev.tfvars.hbs +34 -0
  180. package/plugins/specweave/templates/iac/aws-lambda/templates/environments/prod.tfvars.hbs +37 -0
  181. package/plugins/specweave/templates/iac/aws-lambda/templates/environments/staging.tfvars.hbs +35 -0
  182. package/plugins/specweave/templates/iac/aws-lambda/templates/outputs.tf.hbs +77 -0
  183. package/plugins/specweave/templates/iac/aws-lambda/templates/providers.tf.hbs +36 -0
  184. package/plugins/specweave/templates/iac/aws-lambda/templates/variables.tf.hbs +115 -0
  185. package/plugins/specweave/templates/iac/azure-functions/defaults.json +25 -0
  186. package/plugins/specweave/templates/iac/azure-functions/templates/README.md.hbs +268 -0
  187. package/plugins/specweave/templates/iac/azure-functions/templates/environments/dev.tfvars.hbs +34 -0
  188. package/plugins/specweave/templates/iac/azure-functions/templates/environments/prod.tfvars.hbs +46 -0
  189. package/plugins/specweave/templates/iac/azure-functions/templates/environments/staging.tfvars.hbs +34 -0
  190. package/plugins/specweave/templates/iac/azure-functions/templates/main.tf.hbs +225 -0
  191. package/plugins/specweave/templates/iac/azure-functions/templates/outputs.tf.hbs +89 -0
  192. package/plugins/specweave/templates/iac/azure-functions/templates/provider.tf.hbs +27 -0
  193. package/plugins/specweave/templates/iac/azure-functions/templates/providers.tf.hbs +35 -0
  194. package/plugins/specweave/templates/iac/azure-functions/templates/variables.tf.hbs +124 -0
  195. package/plugins/specweave/templates/iac/firebase/defaults.json +29 -0
  196. package/plugins/specweave/templates/iac/firebase/templates/README.md.hbs +35 -0
  197. package/plugins/specweave/templates/iac/firebase/templates/environments/dev.tfvars.hbs +7 -0
  198. package/plugins/specweave/templates/iac/firebase/templates/environments/prod.tfvars.hbs +7 -0
  199. package/plugins/specweave/templates/iac/firebase/templates/environments/staging.tfvars.hbs +7 -0
  200. package/plugins/specweave/templates/iac/firebase/templates/main.tf.hbs +90 -0
  201. package/plugins/specweave/templates/iac/firebase/templates/outputs.tf.hbs +15 -0
  202. package/plugins/specweave/templates/iac/firebase/templates/providers.tf.hbs +23 -0
  203. package/plugins/specweave/templates/iac/firebase/templates/variables.tf.hbs +42 -0
  204. package/plugins/specweave/templates/iac/gcp-cloud-functions/defaults.json +26 -0
  205. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/README.md.hbs +299 -0
  206. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/environments/dev.tfvars.hbs +36 -0
  207. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/environments/prod.tfvars.hbs +48 -0
  208. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/environments/staging.tfvars.hbs +41 -0
  209. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/main.tf.hbs +192 -0
  210. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/outputs.tf.hbs +66 -0
  211. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/providers.tf.hbs +25 -0
  212. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/variables.tf.hbs +119 -0
  213. package/plugins/specweave/templates/iac/supabase/defaults.json +15 -0
  214. package/plugins/specweave/templates/iac/supabase/templates/README.md.hbs +46 -0
  215. package/plugins/specweave/templates/iac/supabase/templates/main.tf.hbs +50 -0
  216. package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
  217. package/plugins/specweave-github/agents/github-manager/AGENT.md +39 -7
  218. package/plugins/specweave-github/commands/specweave-github-create-issue.md +5 -5
  219. package/plugins/specweave-github/lib/CodeValidator.js +195 -0
  220. package/plugins/specweave-github/lib/CodeValidator.ts +284 -0
  221. package/plugins/specweave-github/lib/ThreeLayerSyncManager.js +545 -0
  222. package/plugins/specweave-github/lib/ThreeLayerSyncManager.ts +809 -0
  223. package/plugins/specweave-github/lib/github-client-v2.js +29 -0
  224. package/plugins/specweave-github/lib/github-client-v2.ts +30 -0
  225. package/plugins/specweave-github/lib/task-sync.js +4 -0
  226. package/plugins/specweave-github/lib/task-sync.ts +7 -0
  227. package/plugins/specweave-github/lib/types.ts +38 -0
  228. package/plugins/specweave-jira/lib/enhanced-jira-sync.js +3 -3
  229. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +3222 -0
  230. package/src/templates/AGENTS.md.template +22 -1
  231. package/src/templates/CLAUDE.md.template +31 -0
  232. package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts +0 -116
  233. package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts.map +0 -1
  234. package/dist/src/core/living-docs/ThreeLayerSyncManager.js +0 -356
  235. package/dist/src/core/living-docs/ThreeLayerSyncManager.js.map +0 -1
@@ -0,0 +1,275 @@
1
+ /**
2
+ * Autonomous Executor - Fully autonomous workflow execution
3
+ *
4
+ * Executes complete workflows without human intervention, with safety guardrails:
5
+ * - Max iteration limits
6
+ * - Infinite loop detection
7
+ * - Cost threshold enforcement
8
+ * - Checkpoint/recovery system
9
+ *
10
+ * Part of increment 0039: Ultra-Smart Next Command
11
+ *
12
+ * @module core/workflow/autonomous-executor
13
+ * @since v0.22.0
14
+ */
15
+ import { WorkflowOrchestrator } from './workflow-orchestrator.js';
16
+ import { StateManager } from './state-manager.js';
17
+ import { CostEstimator } from './cost-estimator.js';
18
+ import { CommandInvoker } from './command-invoker.js';
19
+ import { WorkflowPhase } from './types.js';
20
+ import * as path from 'path';
21
+ /**
22
+ * Autonomous Executor - Fully autonomous workflow execution with safety guardrails
23
+ */
24
+ export class AutonomousExecutor {
25
+ constructor(config = {}) {
26
+ this.config = config;
27
+ this.orchestrator = new WorkflowOrchestrator();
28
+ this.stateManager = new StateManager();
29
+ this.costEstimator = new CostEstimator();
30
+ this.commandInvoker = new CommandInvoker();
31
+ // Apply defaults
32
+ this.config.maxIterations = config.maxIterations || 50;
33
+ this.config.costThreshold = config.costThreshold || 20.0;
34
+ this.config.enableCheckpoints = config.enableCheckpoints !== false;
35
+ this.config.maxRetries = config.maxRetries || 3;
36
+ this.config.stopOnError = config.stopOnError || false;
37
+ this.config.verbose = config.verbose || false;
38
+ }
39
+ /**
40
+ * Execute workflow autonomously
41
+ *
42
+ * @param incrementId - Increment ID to execute
43
+ * @param resumeCheckpointId - Optional checkpoint to resume from
44
+ * @returns Autonomous execution result
45
+ */
46
+ async execute(incrementId, resumeCheckpointId) {
47
+ this.log(`🚀 Starting autonomous execution for increment ${incrementId}`);
48
+ // Initialize state
49
+ let state;
50
+ if (resumeCheckpointId) {
51
+ state = await this.resumeFromCheckpoint(incrementId, resumeCheckpointId);
52
+ this.log(`📂 Resumed from checkpoint ${resumeCheckpointId} (iteration ${state.iteration})`);
53
+ }
54
+ else {
55
+ state = this.initializeState(incrementId);
56
+ this.log(`🆕 Starting fresh execution`);
57
+ }
58
+ // Pre-flight checks
59
+ const preflightResult = await this.preflightCheck(incrementId);
60
+ if (!preflightResult.passed) {
61
+ return {
62
+ success: false,
63
+ incrementId,
64
+ iterations: 0,
65
+ commandsExecuted: [],
66
+ totalCost: 0,
67
+ finalPhase: WorkflowPhase.UNKNOWN,
68
+ reason: `Preflight check failed: ${preflightResult.reason}`,
69
+ error: preflightResult.reason
70
+ };
71
+ }
72
+ // Main execution loop
73
+ try {
74
+ while (state.iteration < this.config.maxIterations) {
75
+ this.log(`\n📍 Iteration ${state.iteration + 1}/${this.config.maxIterations}`);
76
+ // Safety checks
77
+ const safetyCheck = this.checkSafety(state);
78
+ if (!safetyCheck.safe) {
79
+ return this.terminateExecution(state, safetyCheck.reason, false);
80
+ }
81
+ // Execute next step
82
+ const result = await this.executeStep(state);
83
+ // Handle execution result
84
+ if (!result.success) {
85
+ if (this.config.stopOnError) {
86
+ return this.terminateExecution(state, `Step failed: ${result.error}`, false);
87
+ }
88
+ else {
89
+ this.log(`⚠️ Step failed (continuing): ${result.error}`);
90
+ }
91
+ }
92
+ // Update state
93
+ state.iteration++;
94
+ state.phase = result.phase;
95
+ state.phaseHistory.push(result.phase);
96
+ if (result.command) {
97
+ state.commandsExecuted.push(result.command);
98
+ }
99
+ // Save checkpoint
100
+ if (this.config.enableCheckpoints) {
101
+ await this.saveCheckpoint(state);
102
+ }
103
+ // Check completion
104
+ if (this.isComplete(state)) {
105
+ return this.terminateExecution(state, 'Workflow completed successfully', true);
106
+ }
107
+ }
108
+ // Max iterations reached
109
+ return this.terminateExecution(state, `Max iterations (${this.config.maxIterations}) reached`, false);
110
+ }
111
+ catch (error) {
112
+ return this.terminateExecution(state, `Fatal error: ${error instanceof Error ? error.message : String(error)}`, false);
113
+ }
114
+ }
115
+ /**
116
+ * Execute single step in workflow
117
+ */
118
+ async executeStep(state) {
119
+ this.log(`🔍 Detecting current phase...`);
120
+ // Use orchestrator to detect phase and determine action
121
+ const result = await this.orchestrator.executeNext(state.incrementId, {
122
+ autonomous: true,
123
+ verbose: this.config.verbose
124
+ });
125
+ this.log(`📊 Phase: ${result.phase} (confidence: ${(result.confidence * 100).toFixed(0)}%)`);
126
+ this.log(`🎯 Action: ${result.action}`);
127
+ // Execute command if suggested
128
+ if (result.command && result.success) {
129
+ this.log(`⚡ Executing: ${result.command}`);
130
+ const invokeResult = await this.commandInvoker.invokeWithRetry(result.command, {
131
+ captureOutput: true
132
+ }, this.config.maxRetries);
133
+ if (!invokeResult.success) {
134
+ this.log(`❌ Command failed: ${invokeResult.error}`);
135
+ return {
136
+ ...result,
137
+ success: false,
138
+ error: invokeResult.error
139
+ };
140
+ }
141
+ this.log(`✅ Command completed in ${(invokeResult.executionTime / 1000).toFixed(1)}s`);
142
+ }
143
+ return result;
144
+ }
145
+ /**
146
+ * Preflight check before execution
147
+ */
148
+ async preflightCheck(incrementId) {
149
+ // Check increment exists
150
+ const incrementPath = path.join(process.cwd(), '.specweave/increments', incrementId);
151
+ const fs = await import('fs-extra');
152
+ if (!await fs.pathExists(incrementPath)) {
153
+ return {
154
+ passed: false,
155
+ reason: `Increment ${incrementId} not found`
156
+ };
157
+ }
158
+ // Estimate cost
159
+ const estimate = await this.costEstimator.estimateIncrement(incrementPath);
160
+ this.log(`💰 Estimated cost: $${estimate.estimatedCost.toFixed(2)} (${estimate.riskLevel.toUpperCase()})`);
161
+ if (estimate.estimatedCost > this.config.costThreshold) {
162
+ return {
163
+ passed: false,
164
+ reason: `Estimated cost ($${estimate.estimatedCost.toFixed(2)}) exceeds threshold ($${this.config.costThreshold})`
165
+ };
166
+ }
167
+ return { passed: true };
168
+ }
169
+ /**
170
+ * Safety checks during execution
171
+ */
172
+ checkSafety(state) {
173
+ // Check for infinite loop
174
+ if (this.stateManager.detectLoop(state.phaseHistory)) {
175
+ return {
176
+ safe: false,
177
+ reason: 'Infinite loop detected (same phase repeated 3+ times)'
178
+ };
179
+ }
180
+ // Check cost threshold
181
+ if (state.totalCost > this.config.costThreshold) {
182
+ return {
183
+ safe: false,
184
+ reason: `Cost threshold ($${this.config.costThreshold}) exceeded (current: $${state.totalCost.toFixed(2)})`
185
+ };
186
+ }
187
+ return { safe: true };
188
+ }
189
+ /**
190
+ * Check if workflow is complete
191
+ */
192
+ isComplete(state) {
193
+ // Completion phase reached
194
+ if (state.phase === WorkflowPhase.COMPLETION) {
195
+ return true;
196
+ }
197
+ // Unknown phase with no further actions (stuck)
198
+ if (state.phase === WorkflowPhase.UNKNOWN && state.iteration > 5) {
199
+ return true;
200
+ }
201
+ return false;
202
+ }
203
+ /**
204
+ * Initialize execution state
205
+ */
206
+ initializeState(incrementId) {
207
+ return {
208
+ incrementId,
209
+ iteration: 0,
210
+ phase: WorkflowPhase.UNKNOWN,
211
+ commandsExecuted: [],
212
+ totalCost: 0,
213
+ phaseHistory: []
214
+ };
215
+ }
216
+ /**
217
+ * Resume from checkpoint
218
+ */
219
+ async resumeFromCheckpoint(incrementId, checkpointId) {
220
+ const checkpoints = await this.stateManager.loadCheckpoints(incrementId);
221
+ const checkpoint = checkpoints.find(c => c.id === checkpointId);
222
+ if (!checkpoint) {
223
+ throw new Error(`Checkpoint ${checkpointId} not found`);
224
+ }
225
+ return {
226
+ incrementId,
227
+ iteration: checkpoint.iteration,
228
+ phase: checkpoint.phase,
229
+ commandsExecuted: checkpoint.actions,
230
+ totalCost: 0, // Reset cost tracking
231
+ phaseHistory: [checkpoint.phase]
232
+ };
233
+ }
234
+ /**
235
+ * Save execution checkpoint
236
+ */
237
+ async saveCheckpoint(state) {
238
+ await this.stateManager.saveCheckpoint({
239
+ id: `autonomous-${Date.now()}`,
240
+ timestamp: Date.now(),
241
+ incrementId: state.incrementId,
242
+ phase: state.phase,
243
+ iteration: state.iteration,
244
+ actions: state.commandsExecuted
245
+ });
246
+ }
247
+ /**
248
+ * Terminate execution and return result
249
+ */
250
+ terminateExecution(state, reason, success) {
251
+ this.log(`\n${success ? '✅' : '❌'} ${reason}`);
252
+ this.log(`📊 Final stats:`);
253
+ this.log(` - Iterations: ${state.iteration}`);
254
+ this.log(` - Commands: ${state.commandsExecuted.length}`);
255
+ this.log(` - Cost: $${state.totalCost.toFixed(2)}`);
256
+ return {
257
+ success,
258
+ incrementId: state.incrementId,
259
+ iterations: state.iteration,
260
+ commandsExecuted: state.commandsExecuted,
261
+ totalCost: state.totalCost,
262
+ finalPhase: state.phase,
263
+ reason
264
+ };
265
+ }
266
+ /**
267
+ * Log message (if verbose enabled)
268
+ */
269
+ log(message) {
270
+ if (this.config.verbose) {
271
+ console.log(message);
272
+ }
273
+ }
274
+ }
275
+ //# sourceMappingURL=autonomous-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autonomous-executor.js","sourceRoot":"","sources":["../../../../src/core/workflow/autonomous-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Backlog Scanner - Intelligent backlog scanning and ranking
3
+ *
4
+ * Scans .specweave/increments/_backlog/ directory and ranks items
5
+ * by priority, dependencies, and project match.
6
+ *
7
+ * Part of increment 0039: Ultra-Smart Next Command
8
+ *
9
+ * @module core/workflow/backlog-scanner
10
+ * @since v0.22.0
11
+ */
12
+ /**
13
+ * Backlog item metadata
14
+ */
15
+ export interface BacklogItem {
16
+ /** Increment ID */
17
+ incrementId: string;
18
+ /** Full path to spec.md */
19
+ specPath: string;
20
+ /** Title */
21
+ title: string;
22
+ /** Priority (P0, P1, P2, P3) */
23
+ priority: string;
24
+ /** Project (if multi-project) */
25
+ project?: string;
26
+ /** Dependencies (other increment IDs) */
27
+ dependencies: string[];
28
+ /** Estimated effort (hours or weeks) */
29
+ estimatedEffort?: string;
30
+ /** Creation date */
31
+ created?: string;
32
+ }
33
+ /**
34
+ * Ranked backlog item with score
35
+ */
36
+ export interface RankedBacklogItem extends BacklogItem {
37
+ /** Ranking score (higher = better) */
38
+ score: number;
39
+ /** Ranking explanation */
40
+ reason: string;
41
+ }
42
+ /**
43
+ * Backlog recommendation
44
+ */
45
+ export interface BacklogRecommendation {
46
+ /** Recommended items (top N) */
47
+ items: RankedBacklogItem[];
48
+ /** Total backlog size */
49
+ totalItems: number;
50
+ /** Explanation */
51
+ summary: string;
52
+ }
53
+ /**
54
+ * Backlog Scanner - Scan and rank backlog items
55
+ */
56
+ export declare class BacklogScanner {
57
+ private backlogDir;
58
+ constructor(rootDir?: string);
59
+ /**
60
+ * Scan backlog directory
61
+ *
62
+ * @returns Array of backlog items
63
+ */
64
+ scanBacklog(): Promise<BacklogItem[]>;
65
+ /**
66
+ * Parse backlog item from spec.md
67
+ */
68
+ private parseBacklogItem;
69
+ /**
70
+ * Rank backlog items by priority, dependencies, and project match
71
+ *
72
+ * Ranking algorithm:
73
+ * - Priority: P0=10, P1=7, P2=5, P3=3
74
+ * - Dependencies met: +5
75
+ * - Project match: +3
76
+ * - Recently created: +2
77
+ *
78
+ * @param items - Backlog items to rank
79
+ * @param currentProject - Current project (for filtering)
80
+ * @param completedIncrements - List of completed increment IDs
81
+ * @returns Ranked items (sorted by score descending)
82
+ */
83
+ rankItems(items: BacklogItem[], currentProject?: string, completedIncrements?: string[]): RankedBacklogItem[];
84
+ /**
85
+ * Get top N recommendations
86
+ *
87
+ * @param n - Number of recommendations (default: 3)
88
+ * @param currentProject - Current project filter
89
+ * @param completedIncrements - Completed increments
90
+ * @returns Backlog recommendations
91
+ */
92
+ getTopRecommendations(n?: number, currentProject?: string, completedIncrements?: string[]): Promise<BacklogRecommendation>;
93
+ }
94
+ //# sourceMappingURL=backlog-scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backlog-scanner.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/backlog-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wCAAwC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,GAAE,MAAsB;IAI3C;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAmC3C;;OAEG;YACW,gBAAgB;IA2B9B;;;;;;;;;;;;;OAaG;IACH,SAAS,CACP,KAAK,EAAE,WAAW,EAAE,EACpB,cAAc,CAAC,EAAE,MAAM,EACvB,mBAAmB,GAAE,MAAM,EAAO,GACjC,iBAAiB,EAAE;IAoDtB;;;;;;;OAOG;IACG,qBAAqB,CACzB,CAAC,GAAE,MAAU,EACb,cAAc,CAAC,EAAE,MAAM,EACvB,mBAAmB,GAAE,MAAM,EAAO,GACjC,OAAO,CAAC,qBAAqB,CAAC;CAoBlC"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Backlog Scanner - Intelligent backlog scanning and ranking
3
+ *
4
+ * Scans .specweave/increments/_backlog/ directory and ranks items
5
+ * by priority, dependencies, and project match.
6
+ *
7
+ * Part of increment 0039: Ultra-Smart Next Command
8
+ *
9
+ * @module core/workflow/backlog-scanner
10
+ * @since v0.22.0
11
+ */
12
+ import * as fs from 'fs-extra';
13
+ import * as path from 'path';
14
+ import * as yaml from 'js-yaml';
15
+ /**
16
+ * Backlog Scanner - Scan and rank backlog items
17
+ */
18
+ export class BacklogScanner {
19
+ constructor(rootDir = process.cwd()) {
20
+ this.backlogDir = path.join(rootDir, '.specweave/increments/_backlog');
21
+ }
22
+ /**
23
+ * Scan backlog directory
24
+ *
25
+ * @returns Array of backlog items
26
+ */
27
+ async scanBacklog() {
28
+ // Check if backlog directory exists
29
+ if (!await fs.pathExists(this.backlogDir)) {
30
+ return [];
31
+ }
32
+ const items = [];
33
+ const dirs = await fs.readdir(this.backlogDir);
34
+ for (const dir of dirs) {
35
+ const dirPath = path.join(this.backlogDir, dir);
36
+ const stat = await fs.stat(dirPath);
37
+ if (!stat.isDirectory()) {
38
+ continue;
39
+ }
40
+ // Check if spec.md exists
41
+ const specPath = path.join(dirPath, 'spec.md');
42
+ if (!await fs.pathExists(specPath)) {
43
+ continue;
44
+ }
45
+ // Parse spec.md frontmatter
46
+ try {
47
+ const item = await this.parseBacklogItem(dir, specPath);
48
+ items.push(item);
49
+ }
50
+ catch (error) {
51
+ console.warn(`Failed to parse backlog item ${dir}:`, error);
52
+ }
53
+ }
54
+ return items;
55
+ }
56
+ /**
57
+ * Parse backlog item from spec.md
58
+ */
59
+ async parseBacklogItem(incrementId, specPath) {
60
+ const content = await fs.readFile(specPath, 'utf-8');
61
+ // Extract YAML frontmatter
62
+ const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
63
+ if (!frontmatterMatch) {
64
+ throw new Error('No YAML frontmatter found in spec.md');
65
+ }
66
+ const frontmatter = yaml.load(frontmatterMatch[1]);
67
+ // Extract title from first heading
68
+ const titleMatch = content.match(/^#\s+(.+)$/m);
69
+ const title = titleMatch ? titleMatch[1] : frontmatter.title || incrementId;
70
+ return {
71
+ incrementId,
72
+ specPath,
73
+ title,
74
+ priority: frontmatter.priority || 'P2',
75
+ project: frontmatter.project,
76
+ dependencies: frontmatter.dependencies || [],
77
+ estimatedEffort: frontmatter.estimated_effort || frontmatter.estimatedEffort,
78
+ created: frontmatter.created
79
+ };
80
+ }
81
+ /**
82
+ * Rank backlog items by priority, dependencies, and project match
83
+ *
84
+ * Ranking algorithm:
85
+ * - Priority: P0=10, P1=7, P2=5, P3=3
86
+ * - Dependencies met: +5
87
+ * - Project match: +3
88
+ * - Recently created: +2
89
+ *
90
+ * @param items - Backlog items to rank
91
+ * @param currentProject - Current project (for filtering)
92
+ * @param completedIncrements - List of completed increment IDs
93
+ * @returns Ranked items (sorted by score descending)
94
+ */
95
+ rankItems(items, currentProject, completedIncrements = []) {
96
+ const ranked = items.map(item => {
97
+ let score = 0;
98
+ const reasons = [];
99
+ // Priority score
100
+ const priorityScores = {
101
+ 'P0': 10,
102
+ 'P1': 7,
103
+ 'P2': 5,
104
+ 'P3': 3
105
+ };
106
+ const priorityScore = priorityScores[item.priority] || 3;
107
+ score += priorityScore;
108
+ reasons.push(`Priority ${item.priority} (${priorityScore} pts)`);
109
+ // Dependencies met
110
+ const unmetDeps = item.dependencies.filter(dep => !completedIncrements.includes(dep));
111
+ if (unmetDeps.length === 0 && item.dependencies.length > 0) {
112
+ score += 5;
113
+ reasons.push('All dependencies met (+5 pts)');
114
+ }
115
+ else if (unmetDeps.length > 0) {
116
+ reasons.push(`Blocked by: ${unmetDeps.join(', ')}`);
117
+ }
118
+ // Project match
119
+ if (currentProject && item.project === currentProject) {
120
+ score += 3;
121
+ reasons.push(`Project match: ${currentProject} (+3 pts)`);
122
+ }
123
+ // Recently created (bonus for new items)
124
+ if (item.created) {
125
+ const createdDate = new Date(item.created);
126
+ const daysSinceCreated = (Date.now() - createdDate.getTime()) / (1000 * 60 * 60 * 24);
127
+ if (daysSinceCreated < 7) {
128
+ score += 2;
129
+ reasons.push('Recently created (+2 pts)');
130
+ }
131
+ }
132
+ return {
133
+ ...item,
134
+ score,
135
+ reason: reasons.join('; ')
136
+ };
137
+ });
138
+ // Sort by score (descending)
139
+ return ranked.sort((a, b) => b.score - a.score);
140
+ }
141
+ /**
142
+ * Get top N recommendations
143
+ *
144
+ * @param n - Number of recommendations (default: 3)
145
+ * @param currentProject - Current project filter
146
+ * @param completedIncrements - Completed increments
147
+ * @returns Backlog recommendations
148
+ */
149
+ async getTopRecommendations(n = 3, currentProject, completedIncrements = []) {
150
+ const items = await this.scanBacklog();
151
+ const ranked = this.rankItems(items, currentProject, completedIncrements);
152
+ const topItems = ranked.slice(0, n);
153
+ let summary = '';
154
+ if (items.length === 0) {
155
+ summary = 'No items in backlog. Use /specweave:increment to create new work.';
156
+ }
157
+ else if (topItems.length === 0) {
158
+ summary = 'No actionable items found (all blocked by dependencies).';
159
+ }
160
+ else {
161
+ summary = `Found ${items.length} items in backlog. Top ${topItems.length} recommendations based on priority and dependencies.`;
162
+ }
163
+ return {
164
+ items: topItems,
165
+ totalItems: items.length,
166
+ summary
167
+ };
168
+ }
169
+ }
170
+ //# sourceMappingURL=backlog-scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backlog-scanner.js","sourceRoot":"","sources":["../../../../src/core/workflow/backlog-scanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Command Invoker - Programmatic command execution
3
+ *
4
+ * Provides utilities to invoke SpecWeave commands programmatically
5
+ * from within the workflow orchestration system.
6
+ *
7
+ * Part of increment 0039: Ultra-Smart Next Command
8
+ *
9
+ * @module core/workflow/command-invoker
10
+ * @since v0.22.0
11
+ */
12
+ /**
13
+ * Command invocation options
14
+ */
15
+ export interface InvokeOptions {
16
+ /** Command arguments */
17
+ args?: string[];
18
+ /** Working directory */
19
+ cwd?: string;
20
+ /** Timeout in milliseconds */
21
+ timeout?: number;
22
+ /** Capture stdout */
23
+ captureOutput?: boolean;
24
+ }
25
+ /**
26
+ * Command invocation result
27
+ */
28
+ export interface InvokeResult {
29
+ /** Command succeeded */
30
+ success: boolean;
31
+ /** Exit code */
32
+ exitCode: number;
33
+ /** Standard output */
34
+ stdout?: string;
35
+ /** Standard error */
36
+ stderr?: string;
37
+ /** Error message */
38
+ error?: string;
39
+ /** Execution time in milliseconds */
40
+ executionTime: number;
41
+ }
42
+ /**
43
+ * Error severity level
44
+ */
45
+ export declare enum ErrorSeverity {
46
+ INFO = "info",
47
+ WARNING = "warning",
48
+ ERROR = "error",
49
+ CRITICAL = "critical"
50
+ }
51
+ /**
52
+ * Command Invoker - Execute SpecWeave commands programmatically
53
+ */
54
+ export declare class CommandInvoker {
55
+ /**
56
+ * Invoke a SpecWeave command
57
+ *
58
+ * @param command - Command name (e.g., 'plan', 'do', 'validate')
59
+ * @param options - Invocation options
60
+ * @returns Command execution result
61
+ */
62
+ invoke(command: string, options?: InvokeOptions): Promise<InvokeResult>;
63
+ /**
64
+ * Invoke command with automatic retry on transient failures
65
+ *
66
+ * @param command - Command name
67
+ * @param options - Invocation options
68
+ * @param maxRetries - Maximum retry attempts (default: 3)
69
+ * @returns Command execution result
70
+ */
71
+ invokeWithRetry(command: string, options?: InvokeOptions, maxRetries?: number): Promise<InvokeResult>;
72
+ /**
73
+ * Classify error severity
74
+ *
75
+ * @param result - Command result
76
+ * @returns Error severity level
77
+ */
78
+ classifyError(result: InvokeResult): ErrorSeverity;
79
+ /**
80
+ * Delay execution
81
+ *
82
+ * @param ms - Milliseconds to delay
83
+ */
84
+ private delay;
85
+ }
86
+ //# sourceMappingURL=command-invoker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-invoker.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/command-invoker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,oBAAY,aAAa;IACvB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAsCjF;;;;;;;OAOG;IACG,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,aAAkB,EAC3B,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,YAAY,CAAC;IA+BxB;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa;IAqBlD;;;;OAIG;IACH,OAAO,CAAC,KAAK;CAGd"}