specweave 0.22.0 → 0.22.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.
Files changed (220) hide show
  1. package/CLAUDE.md +373 -13
  2. package/README.md +5 -5
  3. package/bin/specweave.js +5 -8
  4. package/dist/plugins/specweave-github/lib/CodeValidator.d.ts +1 -1
  5. package/dist/plugins/specweave-github/lib/CodeValidator.js +1 -1
  6. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts +10 -0
  7. package/dist/plugins/specweave-github/lib/github-client-v2.d.ts.map +1 -1
  8. package/dist/plugins/specweave-github/lib/github-client-v2.js +26 -0
  9. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  10. package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +1 -1
  11. package/dist/plugins/specweave-github/lib/task-sync.js +7 -0
  12. package/dist/plugins/specweave-github/lib/task-sync.js.map +1 -1
  13. package/dist/src/cli/commands/migrate-to-profiles.d.ts +1 -0
  14. package/dist/src/cli/commands/migrate-to-profiles.d.ts.map +1 -1
  15. package/dist/src/cli/commands/migrate-to-profiles.js +12 -1
  16. package/dist/src/cli/commands/migrate-to-profiles.js.map +1 -1
  17. package/dist/src/cli/commands/next-command.d.ts +52 -0
  18. package/dist/src/cli/commands/next-command.d.ts.map +1 -0
  19. package/dist/src/cli/commands/next-command.js +204 -0
  20. package/dist/src/cli/commands/next-command.js.map +1 -0
  21. package/dist/src/cli/commands/repair-status-desync.d.ts +69 -0
  22. package/dist/src/cli/commands/repair-status-desync.d.ts.map +1 -0
  23. package/dist/src/cli/commands/repair-status-desync.js +221 -0
  24. package/dist/src/cli/commands/repair-status-desync.js.map +1 -0
  25. package/dist/src/cli/commands/sync-specs.d.ts +16 -0
  26. package/dist/src/cli/commands/sync-specs.d.ts.map +1 -0
  27. package/dist/src/cli/commands/sync-specs.js +130 -0
  28. package/dist/src/cli/commands/sync-specs.js.map +1 -0
  29. package/dist/src/cli/commands/validate-status-sync.d.ts +52 -0
  30. package/dist/src/cli/commands/validate-status-sync.d.ts.map +1 -0
  31. package/dist/src/cli/commands/validate-status-sync.js +176 -0
  32. package/dist/src/cli/commands/validate-status-sync.js.map +1 -0
  33. package/dist/src/cli/count-tasks.d.ts +20 -0
  34. package/dist/src/cli/count-tasks.d.ts.map +1 -0
  35. package/dist/src/cli/count-tasks.js +50 -0
  36. package/dist/src/cli/count-tasks.js.map +1 -0
  37. package/dist/src/cli/update-status-line.d.ts +16 -0
  38. package/dist/src/cli/update-status-line.d.ts.map +1 -0
  39. package/dist/src/cli/update-status-line.js +44 -0
  40. package/dist/src/cli/update-status-line.js.map +1 -0
  41. package/dist/src/config/ConfigManager.d.ts.map +1 -1
  42. package/dist/src/config/ConfigManager.js +2 -1
  43. package/dist/src/config/ConfigManager.js.map +1 -1
  44. package/dist/src/config/types.d.ts +50 -50
  45. package/dist/src/core/cicd/state-manager.d.ts +8 -0
  46. package/dist/src/core/cicd/state-manager.d.ts.map +1 -1
  47. package/dist/src/core/cicd/state-manager.js +60 -15
  48. package/dist/src/core/cicd/state-manager.js.map +1 -1
  49. package/dist/src/core/cost-tracker.d.ts.map +1 -1
  50. package/dist/src/core/cost-tracker.js +2 -1
  51. package/dist/src/core/cost-tracker.js.map +1 -1
  52. package/dist/src/core/iac/template-engine.d.ts.map +1 -1
  53. package/dist/src/core/iac/template-engine.js +28 -0
  54. package/dist/src/core/iac/template-engine.js.map +1 -1
  55. package/dist/src/core/iac/template-generator.d.ts +53 -0
  56. package/dist/src/core/iac/template-generator.d.ts.map +1 -0
  57. package/dist/src/core/iac/template-generator.js +125 -0
  58. package/dist/src/core/iac/template-generator.js.map +1 -0
  59. package/dist/src/core/increment/completion-validator.d.ts +56 -0
  60. package/dist/src/core/increment/completion-validator.d.ts.map +1 -0
  61. package/dist/src/core/increment/completion-validator.js +102 -0
  62. package/dist/src/core/increment/completion-validator.js.map +1 -0
  63. package/dist/src/core/increment/metadata-manager.d.ts.map +1 -1
  64. package/dist/src/core/increment/metadata-manager.js +10 -0
  65. package/dist/src/core/increment/metadata-manager.js.map +1 -1
  66. package/dist/src/core/increment/spec-frontmatter-updater.d.ts +78 -0
  67. package/dist/src/core/increment/spec-frontmatter-updater.d.ts.map +1 -0
  68. package/dist/src/core/increment/spec-frontmatter-updater.js +152 -0
  69. package/dist/src/core/increment/spec-frontmatter-updater.js.map +1 -0
  70. package/dist/src/core/increment/status-auto-transition.js +3 -3
  71. package/dist/src/core/increment/status-auto-transition.js.map +1 -1
  72. package/dist/src/core/living-docs/CodeValidator.js +1 -1
  73. package/dist/src/core/living-docs/CodeValidator.js.map +1 -1
  74. package/dist/src/core/living-docs/content-distributor.d.ts.map +1 -1
  75. package/dist/src/core/living-docs/content-distributor.js +11 -1
  76. package/dist/src/core/living-docs/content-distributor.js.map +1 -1
  77. package/dist/src/core/living-docs/living-docs-sync.d.ts +166 -0
  78. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -0
  79. package/dist/src/core/living-docs/living-docs-sync.js +727 -0
  80. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -0
  81. package/dist/src/core/living-docs/task-project-specific-generator.d.ts +7 -3
  82. package/dist/src/core/living-docs/task-project-specific-generator.d.ts.map +1 -1
  83. package/dist/src/core/living-docs/task-project-specific-generator.js +40 -24
  84. package/dist/src/core/living-docs/task-project-specific-generator.js.map +1 -1
  85. package/dist/src/core/plugin-loader.d.ts +7 -0
  86. package/dist/src/core/plugin-loader.d.ts.map +1 -1
  87. package/dist/src/core/plugin-loader.js +18 -1
  88. package/dist/src/core/plugin-loader.js.map +1 -1
  89. package/dist/src/core/serverless/platform-data-loader.d.ts +8 -0
  90. package/dist/src/core/serverless/platform-data-loader.d.ts.map +1 -1
  91. package/dist/src/core/serverless/platform-data-loader.js +14 -0
  92. package/dist/src/core/serverless/platform-data-loader.js.map +1 -1
  93. package/dist/src/core/serverless/types.d.ts +1 -1
  94. package/dist/src/core/serverless/types.d.ts.map +1 -1
  95. package/dist/src/core/status-line/status-line-manager.d.ts +7 -2
  96. package/dist/src/core/status-line/status-line-manager.d.ts.map +1 -1
  97. package/dist/src/core/status-line/status-line-manager.js +47 -18
  98. package/dist/src/core/status-line/status-line-manager.js.map +1 -1
  99. package/dist/src/core/status-line/status-line-updater.d.ts +67 -0
  100. package/dist/src/core/status-line/status-line-updater.d.ts.map +1 -0
  101. package/dist/src/core/status-line/status-line-updater.js +203 -0
  102. package/dist/src/core/status-line/status-line-updater.js.map +1 -0
  103. package/dist/src/core/status-line/task-counter.d.ts +69 -0
  104. package/dist/src/core/status-line/task-counter.d.ts.map +1 -0
  105. package/dist/src/core/status-line/task-counter.js +107 -0
  106. package/dist/src/core/status-line/task-counter.js.map +1 -0
  107. package/dist/src/core/status-line/types.d.ts +19 -5
  108. package/dist/src/core/status-line/types.d.ts.map +1 -1
  109. package/dist/src/core/status-line/types.js +3 -3
  110. package/dist/src/core/status-line/types.js.map +1 -1
  111. package/dist/src/core/workflow/autonomous-executor.d.ts +111 -0
  112. package/dist/src/core/workflow/autonomous-executor.d.ts.map +1 -0
  113. package/dist/src/core/workflow/autonomous-executor.js +275 -0
  114. package/dist/src/core/workflow/autonomous-executor.js.map +1 -0
  115. package/dist/src/core/workflow/backlog-scanner.d.ts +94 -0
  116. package/dist/src/core/workflow/backlog-scanner.d.ts.map +1 -0
  117. package/dist/src/core/workflow/backlog-scanner.js +170 -0
  118. package/dist/src/core/workflow/backlog-scanner.js.map +1 -0
  119. package/dist/src/core/workflow/command-invoker.d.ts +86 -0
  120. package/dist/src/core/workflow/command-invoker.d.ts.map +1 -0
  121. package/dist/src/core/workflow/command-invoker.js +131 -0
  122. package/dist/src/core/workflow/command-invoker.js.map +1 -0
  123. package/dist/src/core/workflow/cost-estimator.d.ts +120 -0
  124. package/dist/src/core/workflow/cost-estimator.d.ts.map +1 -0
  125. package/dist/src/core/workflow/cost-estimator.js +222 -0
  126. package/dist/src/core/workflow/cost-estimator.js.map +1 -0
  127. package/dist/src/core/workflow/index.d.ts +20 -0
  128. package/dist/src/core/workflow/index.d.ts.map +1 -0
  129. package/dist/src/core/workflow/index.js +24 -0
  130. package/dist/src/core/workflow/index.js.map +1 -0
  131. package/dist/src/core/workflow/state-manager.d.ts +107 -0
  132. package/dist/src/core/workflow/state-manager.d.ts.map +1 -0
  133. package/dist/src/core/workflow/state-manager.js +126 -0
  134. package/dist/src/core/workflow/state-manager.js.map +1 -0
  135. package/dist/src/core/workflow/workflow-orchestrator.d.ts +93 -0
  136. package/dist/src/core/workflow/workflow-orchestrator.d.ts.map +1 -0
  137. package/dist/src/core/workflow/workflow-orchestrator.js +195 -0
  138. package/dist/src/core/workflow/workflow-orchestrator.js.map +1 -0
  139. package/dist/src/init/architecture/types.d.ts +10 -10
  140. package/dist/src/metrics/dora-calculator.js +2 -2
  141. package/dist/src/metrics/dora-calculator.js.map +1 -1
  142. package/dist/src/utils/pricing-constants.d.ts +5 -2
  143. package/dist/src/utils/pricing-constants.d.ts.map +1 -1
  144. package/dist/src/utils/pricing-constants.js +3 -2
  145. package/dist/src/utils/pricing-constants.js.map +1 -1
  146. package/package.json +4 -4
  147. package/plugins/specweave/agents/infrastructure/AGENT.md +88 -46
  148. package/plugins/specweave/agents/pm/AGENT.md +58 -1
  149. package/plugins/specweave/commands/specweave-archive-features.md +1 -1
  150. package/plugins/specweave/commands/specweave-archive-increments.md +1 -1
  151. package/plugins/specweave/commands/specweave-check-hooks.md +5 -0
  152. package/plugins/specweave/commands/specweave-done.md +72 -4
  153. package/plugins/specweave/commands/specweave-plan.md +1 -1
  154. package/plugins/specweave/commands/specweave-progress.md +108 -379
  155. package/plugins/specweave/commands/specweave-reopen.md +30 -3
  156. package/plugins/specweave/commands/specweave-restore-feature.md +1 -1
  157. package/plugins/specweave/commands/specweave-sync-docs.md +71 -4
  158. package/plugins/specweave/commands/specweave-sync-specs.md +20 -48
  159. package/plugins/specweave/commands/specweave-update-status.md +151 -0
  160. package/plugins/specweave/hooks/lib/update-status-line.sh +78 -41
  161. package/plugins/specweave/hooks/lib/validate-spec-status.sh +163 -0
  162. package/plugins/specweave/hooks/user-prompt-submit.sh +38 -35
  163. package/plugins/specweave/hooks/validate-increment-completion.sh +113 -0
  164. package/plugins/specweave/lib/hooks/update-tasks-md.js +52 -9
  165. package/plugins/specweave/lib/hooks/update-tasks-md.ts +77 -16
  166. package/plugins/specweave/templates/iac/aws-lambda/defaults.json +24 -0
  167. package/plugins/specweave/templates/iac/aws-lambda/templates/README.md.hbs +260 -0
  168. package/plugins/specweave/templates/iac/aws-lambda/templates/environments/dev.tfvars.hbs +34 -0
  169. package/plugins/specweave/templates/iac/aws-lambda/templates/environments/prod.tfvars.hbs +37 -0
  170. package/plugins/specweave/templates/iac/aws-lambda/templates/environments/staging.tfvars.hbs +35 -0
  171. package/plugins/specweave/templates/iac/aws-lambda/templates/outputs.tf.hbs +77 -0
  172. package/plugins/specweave/templates/iac/aws-lambda/templates/providers.tf.hbs +36 -0
  173. package/plugins/specweave/templates/iac/aws-lambda/templates/variables.tf.hbs +115 -0
  174. package/plugins/specweave/templates/iac/azure-functions/defaults.json +25 -0
  175. package/plugins/specweave/templates/iac/azure-functions/templates/README.md.hbs +268 -0
  176. package/plugins/specweave/templates/iac/azure-functions/templates/environments/dev.tfvars.hbs +34 -0
  177. package/plugins/specweave/templates/iac/azure-functions/templates/environments/prod.tfvars.hbs +46 -0
  178. package/plugins/specweave/templates/iac/azure-functions/templates/environments/staging.tfvars.hbs +34 -0
  179. package/plugins/specweave/templates/iac/azure-functions/templates/main.tf.hbs +225 -0
  180. package/plugins/specweave/templates/iac/azure-functions/templates/outputs.tf.hbs +89 -0
  181. package/plugins/specweave/templates/iac/azure-functions/templates/provider.tf.hbs +27 -0
  182. package/plugins/specweave/templates/iac/azure-functions/templates/providers.tf.hbs +35 -0
  183. package/plugins/specweave/templates/iac/azure-functions/templates/variables.tf.hbs +124 -0
  184. package/plugins/specweave/templates/iac/firebase/defaults.json +29 -0
  185. package/plugins/specweave/templates/iac/firebase/templates/README.md.hbs +35 -0
  186. package/plugins/specweave/templates/iac/firebase/templates/environments/dev.tfvars.hbs +7 -0
  187. package/plugins/specweave/templates/iac/firebase/templates/environments/prod.tfvars.hbs +7 -0
  188. package/plugins/specweave/templates/iac/firebase/templates/environments/staging.tfvars.hbs +7 -0
  189. package/plugins/specweave/templates/iac/firebase/templates/main.tf.hbs +90 -0
  190. package/plugins/specweave/templates/iac/firebase/templates/outputs.tf.hbs +15 -0
  191. package/plugins/specweave/templates/iac/firebase/templates/providers.tf.hbs +23 -0
  192. package/plugins/specweave/templates/iac/firebase/templates/variables.tf.hbs +42 -0
  193. package/plugins/specweave/templates/iac/gcp-cloud-functions/defaults.json +26 -0
  194. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/README.md.hbs +299 -0
  195. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/environments/dev.tfvars.hbs +36 -0
  196. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/environments/prod.tfvars.hbs +48 -0
  197. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/environments/staging.tfvars.hbs +41 -0
  198. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/main.tf.hbs +192 -0
  199. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/outputs.tf.hbs +66 -0
  200. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/providers.tf.hbs +25 -0
  201. package/plugins/specweave/templates/iac/gcp-cloud-functions/templates/variables.tf.hbs +119 -0
  202. package/plugins/specweave/templates/iac/supabase/defaults.json +15 -0
  203. package/plugins/specweave/templates/iac/supabase/templates/README.md.hbs +46 -0
  204. package/plugins/specweave/templates/iac/supabase/templates/main.tf.hbs +50 -0
  205. package/plugins/specweave-ado/lib/ado-multi-project-sync.js +0 -1
  206. package/plugins/specweave-github/agents/github-manager/AGENT.md +39 -7
  207. package/plugins/specweave-github/commands/specweave-github-cleanup-duplicates.md +21 -0
  208. package/plugins/specweave-github/commands/specweave-github-create-issue.md +5 -5
  209. package/plugins/specweave-github/lib/CodeValidator.ts +1 -1
  210. package/plugins/specweave-github/lib/github-client-v2.js +29 -0
  211. package/plugins/specweave-github/lib/github-client-v2.ts +30 -0
  212. package/plugins/specweave-github/lib/task-sync.js +4 -0
  213. package/plugins/specweave-github/lib/task-sync.ts +7 -0
  214. package/src/templates/CLAUDE.md.template +31 -0
  215. package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts +0 -116
  216. package/dist/src/core/living-docs/ThreeLayerSyncManager.d.ts.map +0 -1
  217. package/dist/src/core/living-docs/ThreeLayerSyncManager.js +0 -356
  218. package/dist/src/core/living-docs/ThreeLayerSyncManager.js.map +0 -1
  219. package/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -170
  220. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +0 -1200
@@ -0,0 +1,131 @@
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
+ import { exec } from 'child_process';
13
+ import { promisify } from 'util';
14
+ const execAsync = promisify(exec);
15
+ /**
16
+ * Error severity level
17
+ */
18
+ export var ErrorSeverity;
19
+ (function (ErrorSeverity) {
20
+ ErrorSeverity["INFO"] = "info";
21
+ ErrorSeverity["WARNING"] = "warning";
22
+ ErrorSeverity["ERROR"] = "error";
23
+ ErrorSeverity["CRITICAL"] = "critical";
24
+ })(ErrorSeverity || (ErrorSeverity = {}));
25
+ /**
26
+ * Command Invoker - Execute SpecWeave commands programmatically
27
+ */
28
+ export class CommandInvoker {
29
+ /**
30
+ * Invoke a SpecWeave command
31
+ *
32
+ * @param command - Command name (e.g., 'plan', 'do', 'validate')
33
+ * @param options - Invocation options
34
+ * @returns Command execution result
35
+ */
36
+ async invoke(command, options = {}) {
37
+ const startTime = Date.now();
38
+ try {
39
+ // Build command string
40
+ const args = options.args || [];
41
+ const commandString = `npx specweave ${command} ${args.join(' ')}`;
42
+ // Execute command
43
+ const { stdout, stderr } = await execAsync(commandString, {
44
+ cwd: options.cwd || process.cwd(),
45
+ timeout: options.timeout || 300000, // 5 min default
46
+ maxBuffer: 10 * 1024 * 1024 // 10MB
47
+ });
48
+ const executionTime = Date.now() - startTime;
49
+ return {
50
+ success: true,
51
+ exitCode: 0,
52
+ stdout: options.captureOutput ? stdout : undefined,
53
+ stderr: stderr || undefined,
54
+ executionTime
55
+ };
56
+ }
57
+ catch (error) {
58
+ const executionTime = Date.now() - startTime;
59
+ return {
60
+ success: false,
61
+ exitCode: error.code || 1,
62
+ stdout: options.captureOutput ? error.stdout : undefined,
63
+ stderr: error.stderr || undefined,
64
+ error: error.message,
65
+ executionTime
66
+ };
67
+ }
68
+ }
69
+ /**
70
+ * Invoke command with automatic retry on transient failures
71
+ *
72
+ * @param command - Command name
73
+ * @param options - Invocation options
74
+ * @param maxRetries - Maximum retry attempts (default: 3)
75
+ * @returns Command execution result
76
+ */
77
+ async invokeWithRetry(command, options = {}, maxRetries = 3) {
78
+ let lastResult = null;
79
+ let attempt = 0;
80
+ while (attempt < maxRetries) {
81
+ attempt++;
82
+ const result = await this.invoke(command, options);
83
+ if (result.success) {
84
+ return result;
85
+ }
86
+ // Check if error is retryable
87
+ const severity = this.classifyError(result);
88
+ if (severity === ErrorSeverity.CRITICAL) {
89
+ // Don't retry critical errors
90
+ return result;
91
+ }
92
+ lastResult = result;
93
+ // Wait before retry (exponential backoff)
94
+ if (attempt < maxRetries) {
95
+ await this.delay(Math.pow(2, attempt) * 1000);
96
+ }
97
+ }
98
+ return lastResult;
99
+ }
100
+ /**
101
+ * Classify error severity
102
+ *
103
+ * @param result - Command result
104
+ * @returns Error severity level
105
+ */
106
+ classifyError(result) {
107
+ const error = result.error || result.stderr || '';
108
+ // Critical errors (don't retry)
109
+ if (error.includes('ENOENT') || error.includes('command not found')) {
110
+ return ErrorSeverity.CRITICAL;
111
+ }
112
+ if (error.includes('permission denied') || error.includes('EACCES')) {
113
+ return ErrorSeverity.CRITICAL;
114
+ }
115
+ // Transient errors (retry)
116
+ if (error.includes('ECONNREFUSED') || error.includes('ETIMEDOUT')) {
117
+ return ErrorSeverity.WARNING;
118
+ }
119
+ // Default to error
120
+ return ErrorSeverity.ERROR;
121
+ }
122
+ /**
123
+ * Delay execution
124
+ *
125
+ * @param ms - Milliseconds to delay
126
+ */
127
+ delay(ms) {
128
+ return new Promise(resolve => setTimeout(resolve, ms));
129
+ }
130
+ }
131
+ //# sourceMappingURL=command-invoker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-invoker.js","sourceRoot":"","sources":["../../../../src/core/workflow/command-invoker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Cost Estimator - AI execution cost estimation
3
+ *
4
+ * Estimates the cost of autonomous workflow execution based on
5
+ * AI API calls, task count, and complexity.
6
+ *
7
+ * Part of increment 0039: Ultra-Smart Next Command
8
+ *
9
+ * @module core/workflow/cost-estimator
10
+ * @since v0.22.0
11
+ */
12
+ /**
13
+ * Cost estimate for workflow execution
14
+ */
15
+ export interface CostEstimate {
16
+ /** Estimated cost in USD */
17
+ estimatedCost: number;
18
+ /** Cost breakdown by phase */
19
+ breakdown: CostBreakdown[];
20
+ /** Risk level */
21
+ riskLevel: RiskLevel;
22
+ /** Explanation */
23
+ explanation: string;
24
+ /** Confidence in estimate (0.0-1.0) */
25
+ confidence: number;
26
+ }
27
+ /**
28
+ * Cost breakdown by phase
29
+ */
30
+ export interface CostBreakdown {
31
+ /** Phase name */
32
+ phase: string;
33
+ /** Number of AI calls */
34
+ aiCalls: number;
35
+ /** Estimated cost */
36
+ cost: number;
37
+ }
38
+ /**
39
+ * Risk level for cost
40
+ */
41
+ export declare enum RiskLevel {
42
+ /** < $1 */
43
+ LOW = "low",
44
+ /** $1 - $5 */
45
+ MEDIUM = "medium",
46
+ /** $5 - $20 */
47
+ HIGH = "high",
48
+ /** > $20 */
49
+ CRITICAL = "critical"
50
+ }
51
+ /**
52
+ * Cost estimation configuration
53
+ */
54
+ export interface CostEstimatorConfig {
55
+ /** Cost per AI call (default: $0.01) */
56
+ costPerCall?: number;
57
+ /** Low risk threshold (default: $1) */
58
+ lowThreshold?: number;
59
+ /** Medium risk threshold (default: $5) */
60
+ mediumThreshold?: number;
61
+ /** High risk threshold (default: $20) */
62
+ highThreshold?: number;
63
+ }
64
+ /**
65
+ * Cost Estimator - Estimate autonomous execution costs
66
+ */
67
+ export declare class CostEstimator {
68
+ private costPerCall;
69
+ private lowThreshold;
70
+ private mediumThreshold;
71
+ private highThreshold;
72
+ constructor(config?: CostEstimatorConfig);
73
+ /**
74
+ * Estimate cost for increment execution
75
+ *
76
+ * @param incrementPath - Path to increment directory
77
+ * @returns Cost estimate
78
+ */
79
+ estimateIncrement(incrementPath: string): Promise<CostEstimate>;
80
+ /**
81
+ * Estimate planning cost
82
+ */
83
+ private estimatePlanning;
84
+ /**
85
+ * Estimate execution cost based on task count
86
+ */
87
+ private estimateExecution;
88
+ /**
89
+ * Estimate task count from spec.md
90
+ */
91
+ private estimateTasksFromSpec;
92
+ /**
93
+ * Estimate validation cost
94
+ */
95
+ private estimateValidation;
96
+ /**
97
+ * Estimate QA cost
98
+ */
99
+ private estimateQA;
100
+ /**
101
+ * Determine risk level based on total cost
102
+ */
103
+ private determineRiskLevel;
104
+ /**
105
+ * Calculate confidence in estimate
106
+ */
107
+ private calculateConfidence;
108
+ /**
109
+ * Generate human-readable explanation
110
+ */
111
+ private generateExplanation;
112
+ /**
113
+ * Check if cost exceeds threshold
114
+ *
115
+ * @param estimate - Cost estimate
116
+ * @returns True if cost exceeds HIGH threshold
117
+ */
118
+ checkThreshold(estimate: CostEstimate): boolean;
119
+ }
120
+ //# sourceMappingURL=cost-estimator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-estimator.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/cost-estimator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,8BAA8B;IAC9B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,iBAAiB;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,oBAAY,SAAS;IACnB,WAAW;IACX,GAAG,QAAQ;IACX,cAAc;IACd,MAAM,WAAW;IACjB,eAAe;IACf,IAAI,SAAS;IACb,YAAY;IACZ,QAAQ,aAAa;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAS;gBAElB,MAAM,GAAE,mBAAwB;IAO5C;;;;;OAKG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAuCrE;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;YACW,iBAAiB;IA8B/B;;OAEG;YACW,qBAAqB;IAqBnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;YACW,mBAAmB;IAejC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuB3B;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO;CAGhD"}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Cost Estimator - AI execution cost estimation
3
+ *
4
+ * Estimates the cost of autonomous workflow execution based on
5
+ * AI API calls, task count, and complexity.
6
+ *
7
+ * Part of increment 0039: Ultra-Smart Next Command
8
+ *
9
+ * @module core/workflow/cost-estimator
10
+ * @since v0.22.0
11
+ */
12
+ import * as fs from 'fs-extra';
13
+ import * as path from 'path';
14
+ /**
15
+ * Risk level for cost
16
+ */
17
+ export var RiskLevel;
18
+ (function (RiskLevel) {
19
+ /** < $1 */
20
+ RiskLevel["LOW"] = "low";
21
+ /** $1 - $5 */
22
+ RiskLevel["MEDIUM"] = "medium";
23
+ /** $5 - $20 */
24
+ RiskLevel["HIGH"] = "high";
25
+ /** > $20 */
26
+ RiskLevel["CRITICAL"] = "critical";
27
+ })(RiskLevel || (RiskLevel = {}));
28
+ /**
29
+ * Cost Estimator - Estimate autonomous execution costs
30
+ */
31
+ export class CostEstimator {
32
+ constructor(config = {}) {
33
+ this.costPerCall = config.costPerCall || 0.01;
34
+ this.lowThreshold = config.lowThreshold || 1.0;
35
+ this.mediumThreshold = config.mediumThreshold || 5.0;
36
+ this.highThreshold = config.highThreshold || 20.0;
37
+ }
38
+ /**
39
+ * Estimate cost for increment execution
40
+ *
41
+ * @param incrementPath - Path to increment directory
42
+ * @returns Cost estimate
43
+ */
44
+ async estimateIncrement(incrementPath) {
45
+ const breakdown = [];
46
+ let totalCost = 0;
47
+ // Planning phase: 2 AI calls (Architect + test-aware-planner)
48
+ const planningCost = this.estimatePlanning(incrementPath);
49
+ breakdown.push(planningCost);
50
+ totalCost += planningCost.cost;
51
+ // Execution phase: Based on task count
52
+ const executionCost = await this.estimateExecution(incrementPath);
53
+ breakdown.push(executionCost);
54
+ totalCost += executionCost.cost;
55
+ // Validation phase: 1 AI call (PM validation)
56
+ const validationCost = this.estimateValidation();
57
+ breakdown.push(validationCost);
58
+ totalCost += validationCost.cost;
59
+ // QA phase: 1 AI call (judge LLM)
60
+ const qaCost = this.estimateQA();
61
+ breakdown.push(qaCost);
62
+ totalCost += qaCost.cost;
63
+ // Determine risk level
64
+ const riskLevel = this.determineRiskLevel(totalCost);
65
+ // Calculate confidence based on data availability
66
+ const confidence = await this.calculateConfidence(incrementPath);
67
+ return {
68
+ estimatedCost: totalCost,
69
+ breakdown,
70
+ riskLevel,
71
+ explanation: this.generateExplanation(totalCost, riskLevel, breakdown),
72
+ confidence
73
+ };
74
+ }
75
+ /**
76
+ * Estimate planning cost
77
+ */
78
+ estimatePlanning(incrementPath) {
79
+ // Planning = Architect + test-aware-planner = 2 calls
80
+ return {
81
+ phase: 'Planning',
82
+ aiCalls: 2,
83
+ cost: 2 * this.costPerCall
84
+ };
85
+ }
86
+ /**
87
+ * Estimate execution cost based on task count
88
+ */
89
+ async estimateExecution(incrementPath) {
90
+ const tasksPath = path.join(incrementPath, 'tasks.md');
91
+ let taskCount = 0;
92
+ // Try to count tasks from tasks.md
93
+ if (await fs.pathExists(tasksPath)) {
94
+ try {
95
+ const content = await fs.readFile(tasksPath, 'utf-8');
96
+ // Count task headers (#### T-XXX:)
97
+ const taskMatches = content.match(/^####\s+T-\d+:/gm);
98
+ taskCount = taskMatches ? taskMatches.length : 0;
99
+ }
100
+ catch (error) {
101
+ // If can't read tasks, estimate based on spec
102
+ taskCount = 10; // Default estimate
103
+ }
104
+ }
105
+ else {
106
+ // No tasks.md yet, estimate from spec.md
107
+ taskCount = await this.estimateTasksFromSpec(incrementPath);
108
+ }
109
+ // Assume 3 AI calls per task (avg: simple=1, medium=3, complex=5)
110
+ const aiCalls = taskCount * 3;
111
+ return {
112
+ phase: 'Execution',
113
+ aiCalls,
114
+ cost: aiCalls * this.costPerCall
115
+ };
116
+ }
117
+ /**
118
+ * Estimate task count from spec.md
119
+ */
120
+ async estimateTasksFromSpec(incrementPath) {
121
+ const specPath = path.join(incrementPath, 'spec.md');
122
+ if (!await fs.pathExists(specPath)) {
123
+ return 10; // Default estimate
124
+ }
125
+ try {
126
+ const content = await fs.readFile(specPath, 'utf-8');
127
+ // Count acceptance criteria as rough proxy for tasks
128
+ const acMatches = content.match(/^- \[.\] AC-/gm);
129
+ const acCount = acMatches ? acMatches.length : 0;
130
+ // Rough heuristic: 2 ACs ≈ 1 task
131
+ return Math.max(Math.floor(acCount / 2), 5);
132
+ }
133
+ catch (error) {
134
+ return 10;
135
+ }
136
+ }
137
+ /**
138
+ * Estimate validation cost
139
+ */
140
+ estimateValidation() {
141
+ // Validation = 1 PM validation call
142
+ return {
143
+ phase: 'Validation',
144
+ aiCalls: 1,
145
+ cost: 1 * this.costPerCall
146
+ };
147
+ }
148
+ /**
149
+ * Estimate QA cost
150
+ */
151
+ estimateQA() {
152
+ // QA = 1 judge LLM call
153
+ return {
154
+ phase: 'QA',
155
+ aiCalls: 1,
156
+ cost: 1 * this.costPerCall
157
+ };
158
+ }
159
+ /**
160
+ * Determine risk level based on total cost
161
+ */
162
+ determineRiskLevel(cost) {
163
+ if (cost < this.lowThreshold) {
164
+ return RiskLevel.LOW;
165
+ }
166
+ else if (cost < this.mediumThreshold) {
167
+ return RiskLevel.MEDIUM;
168
+ }
169
+ else if (cost < this.highThreshold) {
170
+ return RiskLevel.HIGH;
171
+ }
172
+ else {
173
+ return RiskLevel.CRITICAL;
174
+ }
175
+ }
176
+ /**
177
+ * Calculate confidence in estimate
178
+ */
179
+ async calculateConfidence(incrementPath) {
180
+ // Higher confidence if tasks.md exists
181
+ const tasksExists = await fs.pathExists(path.join(incrementPath, 'tasks.md'));
182
+ const planExists = await fs.pathExists(path.join(incrementPath, 'plan.md'));
183
+ const specExists = await fs.pathExists(path.join(incrementPath, 'spec.md'));
184
+ if (tasksExists && planExists) {
185
+ return 0.9; // High confidence (tasks are defined)
186
+ }
187
+ else if (specExists) {
188
+ return 0.6; // Medium confidence (only spec exists)
189
+ }
190
+ else {
191
+ return 0.3; // Low confidence (estimating blindly)
192
+ }
193
+ }
194
+ /**
195
+ * Generate human-readable explanation
196
+ */
197
+ generateExplanation(totalCost, riskLevel, breakdown) {
198
+ const parts = [];
199
+ parts.push(`Estimated cost: $${totalCost.toFixed(2)} (Risk: ${riskLevel.toUpperCase()})`);
200
+ parts.push('\nBreakdown:');
201
+ breakdown.forEach(item => {
202
+ parts.push(` - ${item.phase}: ${item.aiCalls} AI calls ($${item.cost.toFixed(2)})`);
203
+ });
204
+ if (riskLevel === RiskLevel.CRITICAL) {
205
+ parts.push('\n⚠️ CRITICAL: Cost exceeds $20. Consider manual execution or splitting work.');
206
+ }
207
+ else if (riskLevel === RiskLevel.HIGH) {
208
+ parts.push('\n⚠️ HIGH: Cost is significant ($5-$20). Confirm before proceeding.');
209
+ }
210
+ return parts.join('\n');
211
+ }
212
+ /**
213
+ * Check if cost exceeds threshold
214
+ *
215
+ * @param estimate - Cost estimate
216
+ * @returns True if cost exceeds HIGH threshold
217
+ */
218
+ checkThreshold(estimate) {
219
+ return estimate.riskLevel === RiskLevel.HIGH || estimate.riskLevel === RiskLevel.CRITICAL;
220
+ }
221
+ }
222
+ //# sourceMappingURL=cost-estimator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost-estimator.js","sourceRoot":"","sources":["../../../../src/core/workflow/cost-estimator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Workflow Orchestration Module
3
+ *
4
+ * Provides intelligent workflow orchestration for SpecWeave,
5
+ * enabling autonomous and semi-autonomous workflow execution.
6
+ *
7
+ * Part of increment 0039: Ultra-Smart Next Command
8
+ *
9
+ * @module core/workflow
10
+ * @since v0.22.0
11
+ */
12
+ export { WorkflowOrchestrator, WorkflowExecuteOptions, WorkflowExecutionResult } from './workflow-orchestrator.js';
13
+ export { AutonomousExecutor, AutonomousConfig, AutonomousResult } from './autonomous-executor.js';
14
+ export { PhaseDetector } from './phase-detector.js';
15
+ export { WorkflowPhase, PhaseDetectionResult, DetectionContext, PhaseEvidence } from './types.js';
16
+ export { BacklogScanner, BacklogItem, RankedBacklogItem, BacklogRecommendation } from './backlog-scanner.js';
17
+ export { CostEstimator, CostEstimate, CostBreakdown, RiskLevel, CostEstimatorConfig } from './cost-estimator.js';
18
+ export { CommandInvoker, InvokeOptions, InvokeResult, ErrorSeverity } from './command-invoker.js';
19
+ export { StateManager, Checkpoint } from './state-manager.js';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACnH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGlG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,SAAS,EACT,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Workflow Orchestration Module
3
+ *
4
+ * Provides intelligent workflow orchestration for SpecWeave,
5
+ * enabling autonomous and semi-autonomous workflow execution.
6
+ *
7
+ * Part of increment 0039: Ultra-Smart Next Command
8
+ *
9
+ * @module core/workflow
10
+ * @since v0.22.0
11
+ */
12
+ // Core orchestration
13
+ export { WorkflowOrchestrator } from './workflow-orchestrator.js';
14
+ export { AutonomousExecutor } from './autonomous-executor.js';
15
+ // Phase detection
16
+ export { PhaseDetector } from './phase-detector.js';
17
+ export { WorkflowPhase } from './types.js';
18
+ // Intelligence
19
+ export { BacklogScanner } from './backlog-scanner.js';
20
+ export { CostEstimator, RiskLevel } from './cost-estimator.js';
21
+ // Execution infrastructure
22
+ export { CommandInvoker, ErrorSeverity } from './command-invoker.js';
23
+ export { StateManager } from './state-manager.js';
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/workflow/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,qBAAqB;AACrB,OAAO,EAAE,oBAAoB,EAAmD,MAAM,4BAA4B,CAAC;AACnH,OAAO,EAAE,kBAAkB,EAAsC,MAAM,0BAA0B,CAAC;AAElG,kBAAkB;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,aAAa,EAId,MAAM,YAAY,CAAC;AAEpB,eAAe;AACf,OAAO,EACL,cAAc,EAIf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,aAAa,EAGb,SAAS,EAEV,MAAM,qBAAqB,CAAC;AAE7B,2BAA2B;AAC3B,OAAO,EAAE,cAAc,EAA+B,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,YAAY,EAAc,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * State Manager - Workflow state tracking and checkpointing
3
+ *
4
+ * Manages workflow state, checkpoints, and recovery for autonomous execution.
5
+ *
6
+ * Part of increment 0039: Ultra-Smart Next Command
7
+ *
8
+ * @module core/workflow/state-manager
9
+ * @since v0.22.0
10
+ */
11
+ import { WorkflowPhase } from './types.js';
12
+ /**
13
+ * Checkpoint - Saved workflow state
14
+ */
15
+ export interface Checkpoint {
16
+ /** Unique checkpoint ID */
17
+ id: string;
18
+ /** Timestamp */
19
+ timestamp: number;
20
+ /** Increment ID */
21
+ incrementId: string;
22
+ /** Current workflow phase */
23
+ phase: WorkflowPhase;
24
+ /** Iteration count */
25
+ iteration: number;
26
+ /** Actions taken */
27
+ actions: string[];
28
+ /** Last successful action */
29
+ lastAction?: string;
30
+ /** Custom metadata */
31
+ metadata?: Record<string, any>;
32
+ }
33
+ /**
34
+ * State transition record
35
+ */
36
+ export interface StateTransition {
37
+ /** From phase */
38
+ from: WorkflowPhase;
39
+ /** To phase */
40
+ to: WorkflowPhase;
41
+ /** Timestamp */
42
+ timestamp: number;
43
+ /** Action that caused transition */
44
+ action: string;
45
+ /** Success flag */
46
+ success: boolean;
47
+ }
48
+ /**
49
+ * State Manager - Track workflow state and checkpoints
50
+ */
51
+ export declare class StateManager {
52
+ private checkpointDir;
53
+ private maxCheckpoints;
54
+ constructor(checkpointDir?: string, maxCheckpoints?: number);
55
+ /**
56
+ * Save checkpoint
57
+ *
58
+ * @param checkpoint - Checkpoint data
59
+ */
60
+ saveCheckpoint(checkpoint: Checkpoint): Promise<void>;
61
+ /**
62
+ * Load checkpoints for increment
63
+ *
64
+ * @param incrementId - Increment ID
65
+ * @returns Array of checkpoints (sorted by timestamp, newest first)
66
+ */
67
+ loadCheckpoints(incrementId: string): Promise<Checkpoint[]>;
68
+ /**
69
+ * Get latest checkpoint for increment
70
+ *
71
+ * @param incrementId - Increment ID
72
+ * @returns Latest checkpoint or null
73
+ */
74
+ getLatestCheckpoint(incrementId: string): Promise<Checkpoint | null>;
75
+ /**
76
+ * Delete checkpoint
77
+ *
78
+ * @param incrementId - Increment ID
79
+ * @param checkpointId - Checkpoint ID
80
+ */
81
+ deleteCheckpoint(incrementId: string, checkpointId: string): Promise<void>;
82
+ /**
83
+ * Cleanup old checkpoints (keep only N most recent)
84
+ *
85
+ * @param incrementId - Increment ID
86
+ */
87
+ private cleanupOldCheckpoints;
88
+ /**
89
+ * Detect infinite loop in phase history
90
+ *
91
+ * Checks if the same phase has been visited too many times in a row.
92
+ *
93
+ * @param phaseHistory - Recent phase history
94
+ * @param threshold - Max same-phase repetitions (default: 3)
95
+ * @returns True if loop detected
96
+ */
97
+ detectLoop(phaseHistory: WorkflowPhase[], threshold?: number): boolean;
98
+ /**
99
+ * Record state transition
100
+ *
101
+ * (For now, this is a no-op - will be used for analytics/debugging)
102
+ *
103
+ * @param transition - State transition record
104
+ */
105
+ recordTransition(transition: StateTransition): void;
106
+ }
107
+ //# sourceMappingURL=state-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-manager.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/state-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,2BAA2B;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iBAAiB;IACjB,IAAI,EAAE,aAAa,CAAC;IACpB,eAAe;IACf,EAAE,EAAE,aAAa,CAAC;IAClB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAS;gBAEnB,aAAa,CAAC,EAAE,MAAM,EAAE,cAAc,GAAE,MAAW;IAK/D;;;;OAIG;IACG,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3D;;;;;OAKG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAyBjE;;;;;OAKG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAK1E;;;;;OAKG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWhF;;;;OAIG;YACW,qBAAqB;IAYnC;;;;;;;;OAQG;IACH,UAAU,CAAC,YAAY,EAAE,aAAa,EAAE,EAAE,SAAS,GAAE,MAAU,GAAG,OAAO;IAYzE;;;;;;OAMG;IACH,gBAAgB,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI;CAKpD"}