@haoyiyin/workflow 0.2.0

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 (223) hide show
  1. package/README.md +168 -0
  2. package/SETUP.md +71 -0
  3. package/SKILL.md +68 -0
  4. package/USAGE.md +152 -0
  5. package/dist/bin/yi-workflow.d.ts +3 -0
  6. package/dist/bin/yi-workflow.d.ts.map +1 -0
  7. package/dist/bin/yi-workflow.js +39 -0
  8. package/dist/bin/yi-workflow.js.map +1 -0
  9. package/dist/src/agents/contracts.d.ts +120 -0
  10. package/dist/src/agents/contracts.d.ts.map +1 -0
  11. package/dist/src/agents/contracts.js +431 -0
  12. package/dist/src/agents/contracts.js.map +1 -0
  13. package/dist/src/agents/dispatcher-enhanced.d.ts +68 -0
  14. package/dist/src/agents/dispatcher-enhanced.d.ts.map +1 -0
  15. package/dist/src/agents/dispatcher-enhanced.js +290 -0
  16. package/dist/src/agents/dispatcher-enhanced.js.map +1 -0
  17. package/dist/src/agents/dispatcher.d.ts +107 -0
  18. package/dist/src/agents/dispatcher.d.ts.map +1 -0
  19. package/dist/src/agents/dispatcher.js +454 -0
  20. package/dist/src/agents/dispatcher.js.map +1 -0
  21. package/dist/src/agents/index.d.ts +11 -0
  22. package/dist/src/agents/index.d.ts.map +1 -0
  23. package/dist/src/agents/index.js +10 -0
  24. package/dist/src/agents/index.js.map +1 -0
  25. package/dist/src/agents/resilience.d.ts +86 -0
  26. package/dist/src/agents/resilience.d.ts.map +1 -0
  27. package/dist/src/agents/resilience.js +183 -0
  28. package/dist/src/agents/resilience.js.map +1 -0
  29. package/dist/src/agents/token-budget.d.ts +47 -0
  30. package/dist/src/agents/token-budget.d.ts.map +1 -0
  31. package/dist/src/agents/token-budget.js +63 -0
  32. package/dist/src/agents/token-budget.js.map +1 -0
  33. package/dist/src/agents/types.d.ts +59 -0
  34. package/dist/src/agents/types.d.ts.map +1 -0
  35. package/dist/src/agents/types.js +5 -0
  36. package/dist/src/agents/types.js.map +1 -0
  37. package/dist/src/guard/main-agent.d.ts +72 -0
  38. package/dist/src/guard/main-agent.d.ts.map +1 -0
  39. package/dist/src/guard/main-agent.js +184 -0
  40. package/dist/src/guard/main-agent.js.map +1 -0
  41. package/dist/src/hooks/builtin/index.d.ts +9 -0
  42. package/dist/src/hooks/builtin/index.d.ts.map +1 -0
  43. package/dist/src/hooks/builtin/index.js +9 -0
  44. package/dist/src/hooks/builtin/index.js.map +1 -0
  45. package/dist/src/hooks/builtin/on-error.d.ts +7 -0
  46. package/dist/src/hooks/builtin/on-error.d.ts.map +1 -0
  47. package/dist/src/hooks/builtin/on-error.js +15 -0
  48. package/dist/src/hooks/builtin/on-error.js.map +1 -0
  49. package/dist/src/hooks/builtin/post-execute.d.ts +7 -0
  50. package/dist/src/hooks/builtin/post-execute.d.ts.map +1 -0
  51. package/dist/src/hooks/builtin/post-execute.js +30 -0
  52. package/dist/src/hooks/builtin/post-execute.js.map +1 -0
  53. package/dist/src/hooks/builtin/post-plan.d.ts +7 -0
  54. package/dist/src/hooks/builtin/post-plan.d.ts.map +1 -0
  55. package/dist/src/hooks/builtin/post-plan.js +15 -0
  56. package/dist/src/hooks/builtin/post-plan.js.map +1 -0
  57. package/dist/src/hooks/builtin/pre-execute.d.ts +7 -0
  58. package/dist/src/hooks/builtin/pre-execute.d.ts.map +1 -0
  59. package/dist/src/hooks/builtin/pre-execute.js +22 -0
  60. package/dist/src/hooks/builtin/pre-execute.js.map +1 -0
  61. package/dist/src/hooks/builtin/pre-plan.d.ts +7 -0
  62. package/dist/src/hooks/builtin/pre-plan.d.ts.map +1 -0
  63. package/dist/src/hooks/builtin/pre-plan.js +19 -0
  64. package/dist/src/hooks/builtin/pre-plan.js.map +1 -0
  65. package/dist/src/hooks/index.d.ts +8 -0
  66. package/dist/src/hooks/index.d.ts.map +1 -0
  67. package/dist/src/hooks/index.js +4 -0
  68. package/dist/src/hooks/index.js.map +1 -0
  69. package/dist/src/hooks/loader.d.ts +16 -0
  70. package/dist/src/hooks/loader.d.ts.map +1 -0
  71. package/dist/src/hooks/loader.js +77 -0
  72. package/dist/src/hooks/loader.js.map +1 -0
  73. package/dist/src/hooks/manager.d.ts +20 -0
  74. package/dist/src/hooks/manager.d.ts.map +1 -0
  75. package/dist/src/hooks/manager.js +76 -0
  76. package/dist/src/hooks/manager.js.map +1 -0
  77. package/dist/src/hooks/types-enhanced.d.ts +30 -0
  78. package/dist/src/hooks/types-enhanced.d.ts.map +1 -0
  79. package/dist/src/hooks/types-enhanced.js +22 -0
  80. package/dist/src/hooks/types-enhanced.js.map +1 -0
  81. package/dist/src/hooks/types.d.ts +27 -0
  82. package/dist/src/hooks/types.d.ts.map +1 -0
  83. package/dist/src/hooks/types.js +2 -0
  84. package/dist/src/hooks/types.js.map +1 -0
  85. package/dist/src/index.d.ts +43 -0
  86. package/dist/src/index.d.ts.map +1 -0
  87. package/dist/src/index.js +41 -0
  88. package/dist/src/index.js.map +1 -0
  89. package/dist/src/persistence/index.d.ts +7 -0
  90. package/dist/src/persistence/index.d.ts.map +1 -0
  91. package/dist/src/persistence/index.js +6 -0
  92. package/dist/src/persistence/index.js.map +1 -0
  93. package/dist/src/persistence/plan-md.d.ts +11 -0
  94. package/dist/src/persistence/plan-md.d.ts.map +1 -0
  95. package/dist/src/persistence/plan-md.js +125 -0
  96. package/dist/src/persistence/plan-md.js.map +1 -0
  97. package/dist/src/persistence/state-md.d.ts +17 -0
  98. package/dist/src/persistence/state-md.d.ts.map +1 -0
  99. package/dist/src/persistence/state-md.js +143 -0
  100. package/dist/src/persistence/state-md.js.map +1 -0
  101. package/dist/src/persistence/types.d.ts +85 -0
  102. package/dist/src/persistence/types.d.ts.map +1 -0
  103. package/dist/src/persistence/types.js +5 -0
  104. package/dist/src/persistence/types.js.map +1 -0
  105. package/dist/src/router/classifier.d.ts +108 -0
  106. package/dist/src/router/classifier.d.ts.map +1 -0
  107. package/dist/src/router/classifier.js +476 -0
  108. package/dist/src/router/classifier.js.map +1 -0
  109. package/dist/src/router/guard.d.ts +128 -0
  110. package/dist/src/router/guard.d.ts.map +1 -0
  111. package/dist/src/router/guard.js +370 -0
  112. package/dist/src/router/guard.js.map +1 -0
  113. package/dist/src/router/index.d.ts +10 -0
  114. package/dist/src/router/index.d.ts.map +1 -0
  115. package/dist/src/router/index.js +8 -0
  116. package/dist/src/router/index.js.map +1 -0
  117. package/dist/src/router/router.d.ts +58 -0
  118. package/dist/src/router/router.d.ts.map +1 -0
  119. package/dist/src/router/router.js +78 -0
  120. package/dist/src/router/router.js.map +1 -0
  121. package/dist/src/router/types.d.ts +100 -0
  122. package/dist/src/router/types.d.ts.map +1 -0
  123. package/dist/src/router/types.js +24 -0
  124. package/dist/src/router/types.js.map +1 -0
  125. package/dist/src/skills/agents-md/index.d.ts +9 -0
  126. package/dist/src/skills/agents-md/index.d.ts.map +1 -0
  127. package/dist/src/skills/agents-md/index.js +28 -0
  128. package/dist/src/skills/agents-md/index.js.map +1 -0
  129. package/dist/src/skills/execute-plan/index.d.ts +141 -0
  130. package/dist/src/skills/execute-plan/index.d.ts.map +1 -0
  131. package/dist/src/skills/execute-plan/index.js +784 -0
  132. package/dist/src/skills/execute-plan/index.js.map +1 -0
  133. package/dist/src/skills/index.d.ts +14 -0
  134. package/dist/src/skills/index.d.ts.map +1 -0
  135. package/dist/src/skills/index.js +10 -0
  136. package/dist/src/skills/index.js.map +1 -0
  137. package/dist/src/skills/quick-task/index.d.ts +75 -0
  138. package/dist/src/skills/quick-task/index.d.ts.map +1 -0
  139. package/dist/src/skills/quick-task/index.js +284 -0
  140. package/dist/src/skills/quick-task/index.js.map +1 -0
  141. package/dist/src/skills/registry.d.ts +15 -0
  142. package/dist/src/skills/registry.d.ts.map +1 -0
  143. package/dist/src/skills/registry.js +44 -0
  144. package/dist/src/skills/registry.js.map +1 -0
  145. package/dist/src/skills/review-diff/index.d.ts +96 -0
  146. package/dist/src/skills/review-diff/index.d.ts.map +1 -0
  147. package/dist/src/skills/review-diff/index.js +316 -0
  148. package/dist/src/skills/review-diff/index.js.map +1 -0
  149. package/dist/src/skills/skill.d.ts +24 -0
  150. package/dist/src/skills/skill.d.ts.map +1 -0
  151. package/dist/src/skills/skill.js +39 -0
  152. package/dist/src/skills/skill.js.map +1 -0
  153. package/dist/src/skills/systematic-debugging/index.d.ts +90 -0
  154. package/dist/src/skills/systematic-debugging/index.d.ts.map +1 -0
  155. package/dist/src/skills/systematic-debugging/index.js +305 -0
  156. package/dist/src/skills/systematic-debugging/index.js.map +1 -0
  157. package/dist/src/skills/tdd/index.d.ts +103 -0
  158. package/dist/src/skills/tdd/index.d.ts.map +1 -0
  159. package/dist/src/skills/tdd/index.js +338 -0
  160. package/dist/src/skills/tdd/index.js.map +1 -0
  161. package/dist/src/skills/to-plan/index-enhanced.d.ts +100 -0
  162. package/dist/src/skills/to-plan/index-enhanced.d.ts.map +1 -0
  163. package/dist/src/skills/to-plan/index-enhanced.js +452 -0
  164. package/dist/src/skills/to-plan/index-enhanced.js.map +1 -0
  165. package/dist/src/skills/to-plan/index.d.ts +131 -0
  166. package/dist/src/skills/to-plan/index.d.ts.map +1 -0
  167. package/dist/src/skills/to-plan/index.js +460 -0
  168. package/dist/src/skills/to-plan/index.js.map +1 -0
  169. package/dist/src/skills/types.d.ts +44 -0
  170. package/dist/src/skills/types.d.ts.map +1 -0
  171. package/dist/src/skills/types.js +2 -0
  172. package/dist/src/skills/types.js.map +1 -0
  173. package/dist/src/state/cleanup.d.ts +22 -0
  174. package/dist/src/state/cleanup.d.ts.map +1 -0
  175. package/dist/src/state/cleanup.js +87 -0
  176. package/dist/src/state/cleanup.js.map +1 -0
  177. package/dist/src/state/index.d.ts +9 -0
  178. package/dist/src/state/index.d.ts.map +1 -0
  179. package/dist/src/state/index.js +5 -0
  180. package/dist/src/state/index.js.map +1 -0
  181. package/dist/src/state/manager.d.ts +15 -0
  182. package/dist/src/state/manager.d.ts.map +1 -0
  183. package/dist/src/state/manager.js +73 -0
  184. package/dist/src/state/manager.js.map +1 -0
  185. package/dist/src/state/persistence.d.ts +13 -0
  186. package/dist/src/state/persistence.d.ts.map +1 -0
  187. package/dist/src/state/persistence.js +68 -0
  188. package/dist/src/state/persistence.js.map +1 -0
  189. package/dist/src/state/types.d.ts +26 -0
  190. package/dist/src/state/types.d.ts.map +1 -0
  191. package/dist/src/state/types.js +2 -0
  192. package/dist/src/state/types.js.map +1 -0
  193. package/dist/src/state/validator.d.ts +12 -0
  194. package/dist/src/state/validator.d.ts.map +1 -0
  195. package/dist/src/state/validator.js +56 -0
  196. package/dist/src/state/validator.js.map +1 -0
  197. package/dist/src/types.d.ts +83 -0
  198. package/dist/src/types.d.ts.map +1 -0
  199. package/dist/src/types.js +5 -0
  200. package/dist/src/types.js.map +1 -0
  201. package/dist/src/utils/compress.d.ts +37 -0
  202. package/dist/src/utils/compress.d.ts.map +1 -0
  203. package/dist/src/utils/compress.js +298 -0
  204. package/dist/src/utils/compress.js.map +1 -0
  205. package/dist/src/utils/git.d.ts +9 -0
  206. package/dist/src/utils/git.d.ts.map +1 -0
  207. package/dist/src/utils/git.js +81 -0
  208. package/dist/src/utils/git.js.map +1 -0
  209. package/dist/src/utils/index.d.ts +7 -0
  210. package/dist/src/utils/index.d.ts.map +1 -0
  211. package/dist/src/utils/index.js +7 -0
  212. package/dist/src/utils/index.js.map +1 -0
  213. package/dist/src/utils/logger.d.ts +6 -0
  214. package/dist/src/utils/logger.d.ts.map +1 -0
  215. package/dist/src/utils/logger.js +19 -0
  216. package/dist/src/utils/logger.js.map +1 -0
  217. package/dist/src/utils/paths.d.ts +12 -0
  218. package/dist/src/utils/paths.d.ts.map +1 -0
  219. package/dist/src/utils/paths.js +44 -0
  220. package/dist/src/utils/paths.js.map +1 -0
  221. package/package.json +76 -0
  222. package/scripts/postinstall.js +69 -0
  223. package/yi-workflow.js +17 -0
@@ -0,0 +1,305 @@
1
+ /**
2
+ * Systematic Debugging Skill - Find root cause before fixing
3
+ *
4
+ * Use case: Bug investigation, test failure, unexpected behavior
5
+ * Pattern: Reproduce → Gather Evidence → Diagnose (hypothesize + test) →
6
+ * Apply Fix → Verify
7
+ *
8
+ * CRITICAL RULE: No fix before root cause is confirmed.
9
+ * Spawns debugger subagent(s) for each phase.
10
+ * Prevents the "fix-first-ask-questions-later" anti-pattern.
11
+ */
12
+ import { z } from 'zod';
13
+ import { Skill } from '../skill.js';
14
+ import { createDispatcher } from '../../agents/dispatcher.js';
15
+ import { researcherContract } from '../../agents/contracts.js';
16
+ import { createMainAgentGuard } from '../../guard/main-agent.js';
17
+ // ---------------------------------------------------------------------------
18
+ // Schemas
19
+ // ---------------------------------------------------------------------------
20
+ const DebugInputSchema = z.object({
21
+ symptom: z.string().min(1, 'Symptom description is required'),
22
+ reproduceCommand: z.string().optional(),
23
+ logs: z.string().optional(),
24
+ recentChanges: z.string().optional(),
25
+ model: z.string().optional(),
26
+ });
27
+ const DebugOutputSchema = z.object({
28
+ rootCause: z.string(),
29
+ confidence: z.enum(['high', 'medium', 'low']),
30
+ location: z.object({
31
+ file: z.string().optional(),
32
+ line: z.number().optional(),
33
+ function: z.string().optional(),
34
+ }),
35
+ fixApplied: z.boolean(),
36
+ fixDescription: z.string().optional(),
37
+ verification: z.string(),
38
+ risks: z.array(z.string()),
39
+ tokensUsed: z.number(),
40
+ });
41
+ // ---------------------------------------------------------------------------
42
+ // Prompt builders (pure functions)
43
+ // ---------------------------------------------------------------------------
44
+ function buildReproducePrompt(symptom, reproduceCommand, logs) {
45
+ const sections = [
46
+ `## Reproduce the Issue`,
47
+ '',
48
+ `**Symptom**: ${symptom}`,
49
+ ];
50
+ if (reproduceCommand) {
51
+ sections.push('', `**Command**: \`${reproduceCommand}\``);
52
+ }
53
+ if (logs) {
54
+ sections.push('', '## Logs', '', logs.slice(0, 2000));
55
+ }
56
+ sections.push('', 'Confirm reproduction. Report exact steps, observed vs expected.');
57
+ return sections.join('\n');
58
+ }
59
+ function buildEvidencePrompt(symptom, reproOutput, recentChanges) {
60
+ return [
61
+ `## Gather Evidence`,
62
+ '',
63
+ `**Symptom**: ${symptom}`,
64
+ '',
65
+ '## Reproduction',
66
+ reproOutput.slice(0, 2000),
67
+ '',
68
+ recentChanges
69
+ ? `## Recent Changes\n${recentChanges}`
70
+ : '## Recent Changes\nCheck git log for related commits.',
71
+ '',
72
+ 'Identify suspect files, key functions, failure points.',
73
+ 'Trace execution path. Look for error handling gaps, state issues, race conditions.',
74
+ ].join('\n');
75
+ }
76
+ function buildDiagnosePrompt(symptom, evidenceOutput, knownIssues) {
77
+ return [
78
+ `## Diagnose Root Cause`,
79
+ '',
80
+ `**Symptom**: ${symptom}`,
81
+ '',
82
+ '## Evidence',
83
+ evidenceOutput.slice(0, 3000),
84
+ ...(knownIssues ? ['', '## Known Issues (from research)', knownIssues.slice(0, 1000)] : []),
85
+ '',
86
+ '## Process',
87
+ '1. Form 2-3 hypotheses, rank by likelihood',
88
+ '2. Test top hypothesis with targeted checks',
89
+ '3. Eliminate incorrect hypotheses',
90
+ '4. Confirm root cause with evidence',
91
+ '',
92
+ '## CRITICAL: Diagnosis Only — NO Fix Yet',
93
+ 'Do NOT write any code changes in this phase.',
94
+ 'You are confirming the root cause, not fixing it.',
95
+ '',
96
+ '## Output Format',
97
+ '',
98
+ '```',
99
+ 'Root Cause: <description>',
100
+ 'Confidence: high|medium|low',
101
+ 'File: <path>',
102
+ 'Line: <number>',
103
+ 'Function: <name>',
104
+ 'Evidence: <proof>',
105
+ 'Eliminated: <hypotheses ruled out>',
106
+ 'Fix: <proposed fix description>',
107
+ '```',
108
+ ].join('\n');
109
+ }
110
+ function buildApplyFixPrompt(diagnosis) {
111
+ return [
112
+ `## Apply Fix`,
113
+ '',
114
+ `**Root Cause**: ${diagnosis.rootCause}`,
115
+ `**Confidence**: ${diagnosis.confidence}`,
116
+ diagnosis.file ? `**File**: ${diagnosis.file}` : '',
117
+ diagnosis.line ? `**Line**: ${diagnosis.line}` : '',
118
+ '',
119
+ 'Apply ONE minimal fix targeting the confirmed root cause.',
120
+ 'Run reproduction test to confirm fix works.',
121
+ 'Do NOT refactor unrelated code.',
122
+ diagnosis.confidence === 'low'
123
+ ? 'Low confidence: prefer a safer, more conservative fix.'
124
+ : '',
125
+ ]
126
+ .filter(Boolean)
127
+ .join('\n');
128
+ }
129
+ function buildVerifyPrompt(symptom, fixOutput) {
130
+ return [
131
+ `## Verify Fix`,
132
+ '',
133
+ `**Original**: ${symptom}`,
134
+ '',
135
+ '## Fix Applied',
136
+ fixOutput.slice(0, 2000),
137
+ '',
138
+ 'Re-run reproduction steps. Run full test suite.',
139
+ 'Return PASS or FAIL with details.',
140
+ ].join('\n');
141
+ }
142
+ function parseDiagnosis(output) {
143
+ const rootCauseMatch = output.match(/root cause:?\s*(.+)/i);
144
+ const confidenceMatch = output.match(/confidence:?\s*(high|medium|low)/i);
145
+ const fileMatch = output.match(/file:?\s*(\S+\.\w+)/i);
146
+ const lineMatch = output.match(/line:?\s*(\d+)/i);
147
+ const funcMatch = output.match(/function:?\s*(\S+)/i);
148
+ const fixMatch = output.match(/fix:?\s*(.+)/i);
149
+ let confidence = 'medium';
150
+ if (confidenceMatch) {
151
+ const c = confidenceMatch[1].toLowerCase();
152
+ if (c === 'high' || c === 'medium' || c === 'low')
153
+ confidence = c;
154
+ }
155
+ return {
156
+ rootCause: rootCauseMatch?.[1]?.trim() ?? output.slice(0, 200),
157
+ confidence,
158
+ file: fileMatch?.[1]?.trim(),
159
+ line: lineMatch ? parseInt(lineMatch[1], 10) : undefined,
160
+ func: funcMatch?.[1]?.trim(),
161
+ fixDescription: fixMatch?.[1]?.trim(),
162
+ };
163
+ }
164
+ // ---------------------------------------------------------------------------
165
+ // Skill class
166
+ // ---------------------------------------------------------------------------
167
+ export class SystematicDebuggingSkill extends Skill {
168
+ constructor() {
169
+ super({
170
+ name: 'systematic-debugging',
171
+ description: 'Find root cause before fixing. Spawns debugger subagent for systematic diagnosis.',
172
+ requires: ['tdd'],
173
+ inputSchema: DebugInputSchema,
174
+ outputSchema: DebugOutputSchema,
175
+ });
176
+ }
177
+ async execute(input, context) {
178
+ const { config, logger } = context;
179
+ const dispatcher = createDispatcher(logger);
180
+ const guard = createMainAgentGuard({}, logger);
181
+ let totalTokens = 0;
182
+ guard.activateEmbargo();
183
+ try {
184
+ // Step 1: Reproduce
185
+ logger.info(`[debug] Reproducing: ${input.symptom.slice(0, 80)}`);
186
+ const reproResult = await dispatcher.dispatch({ role: 'debugger', model: input.model || config.defaultModel }, {
187
+ permissions: {
188
+ readFiles: true,
189
+ searchCode: false,
190
+ runCommands: true,
191
+ writeFiles: false,
192
+ gitOperations: false,
193
+ },
194
+ prompt: buildReproducePrompt(input.symptom, input.reproduceCommand, input.logs),
195
+ owns: [],
196
+ reads: [],
197
+ });
198
+ totalTokens += reproResult.tokensUsed;
199
+ // Step 2: Gather evidence (read-only)
200
+ logger.info('[debug] Gathering evidence');
201
+ const evidenceResult = await dispatcher.dispatch({ role: 'explorer', model: input.model || config.defaultModel }, {
202
+ permissions: {
203
+ readFiles: true,
204
+ searchCode: true,
205
+ runCommands: false,
206
+ writeFiles: false,
207
+ gitOperations: false,
208
+ },
209
+ prompt: buildEvidencePrompt(input.symptom, reproResult.output, input.recentChanges),
210
+ owns: [],
211
+ reads: [],
212
+ });
213
+ totalTokens += evidenceResult.tokensUsed;
214
+ // Step 2b: Research known issues (optional)
215
+ let knownIssuesContext = '';
216
+ const shouldResearch = /npm|yarn|package|version|error|fail|crash|exception/i.test(input.symptom);
217
+ if (shouldResearch) {
218
+ logger.info('[debug] Step 2b: Researching known issues...');
219
+ const researchResult = await dispatcher.dispatch({ role: 'researcher', model: input.model || config.defaultModel }, researcherContract({
220
+ topic: input.symptom,
221
+ scope: 'technical',
222
+ questions: [
223
+ 'Are there known issues or bug reports?',
224
+ 'Any recent breaking changes or deprecations?',
225
+ 'What are common solutions or workarounds?'
226
+ ],
227
+ timeRange: '1y'
228
+ }));
229
+ totalTokens += researchResult.tokensUsed;
230
+ knownIssuesContext = researchResult.output.slice(0, 1200);
231
+ logger.info(`[debug] Research complete: ${knownIssuesContext ? 'found known issues' : 'no relevant results'}`);
232
+ }
233
+ // Step 3: Diagnose (NO FIX YET)
234
+ logger.info('[debug] Diagnosing root cause (no fix yet)');
235
+ const diagnoseResult = await dispatcher.dispatch({ role: 'debugger', model: input.model || config.defaultModel }, {
236
+ permissions: {
237
+ readFiles: true,
238
+ searchCode: false,
239
+ runCommands: true,
240
+ writeFiles: false,
241
+ gitOperations: false,
242
+ },
243
+ prompt: buildDiagnosePrompt(input.symptom, evidenceResult.output, knownIssuesContext),
244
+ owns: [],
245
+ reads: [],
246
+ });
247
+ totalTokens += diagnoseResult.tokensUsed;
248
+ const diagnosis = parseDiagnosis(diagnoseResult.output);
249
+ // Step 4: Apply fix (only after root cause confirmed)
250
+ logger.info(`[debug] Applying fix (confidence: ${diagnosis.confidence})`);
251
+ const fixResult = await dispatcher.dispatch({
252
+ role: 'debugger',
253
+ model: input.model || config.defaultModel,
254
+ isolation: 'worktree',
255
+ }, {
256
+ permissions: {
257
+ readFiles: true,
258
+ searchCode: false,
259
+ runCommands: true,
260
+ writeFiles: true,
261
+ gitOperations: false,
262
+ },
263
+ prompt: buildApplyFixPrompt(diagnosis),
264
+ owns: diagnosis.file ? [diagnosis.file] : [],
265
+ reads: [],
266
+ });
267
+ totalTokens += fixResult.tokensUsed;
268
+ // Step 5: Verify
269
+ logger.info('[debug] Verifying fix');
270
+ const verifyResult = await dispatcher.dispatch({ role: 'verifier', model: input.model || config.defaultModel }, {
271
+ permissions: {
272
+ readFiles: false,
273
+ searchCode: false,
274
+ runCommands: true,
275
+ writeFiles: false,
276
+ gitOperations: false,
277
+ },
278
+ prompt: buildVerifyPrompt(input.symptom, fixResult.output),
279
+ owns: [],
280
+ reads: [],
281
+ });
282
+ totalTokens += verifyResult.tokensUsed;
283
+ return {
284
+ rootCause: diagnosis.rootCause,
285
+ confidence: diagnosis.confidence,
286
+ location: {
287
+ file: diagnosis.file,
288
+ line: diagnosis.line,
289
+ function: diagnosis.func,
290
+ },
291
+ fixApplied: fixResult.status === 'success',
292
+ fixDescription: diagnosis.fixDescription ?? fixResult.output.slice(0, 500),
293
+ verification: verifyResult.output.slice(0, 500),
294
+ risks: [],
295
+ tokensUsed: totalTokens,
296
+ };
297
+ }
298
+ finally {
299
+ guard.deactivateEmbargo();
300
+ }
301
+ }
302
+ }
303
+ export const systematicDebuggingSkill = new SystematicDebuggingSkill();
304
+ export default systematicDebuggingSkill;
305
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/skills/systematic-debugging/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * TDD Skill - Enforces RED/GREEN/REFACTOR cycle via subagent dispatch
3
+ *
4
+ * Use case: Implement feature with test-first approach
5
+ * Pattern: RED (write failing test) → GREEN (minimal implementation) →
6
+ * REFACTOR (improve while green) → VERIFY (full suite)
7
+ *
8
+ * Spawns implementer subagent with TDD contract at each phase.
9
+ * Enforces the cycle: no implementation before a failing test exists.
10
+ */
11
+ import { z } from 'zod';
12
+ import { Skill } from '../skill.js';
13
+ import type { SkillContext } from '../types.js';
14
+ declare const TDDInputSchema: z.ZodObject<{
15
+ behavior: z.ZodString;
16
+ testFile: z.ZodOptional<z.ZodString>;
17
+ targetFile: z.ZodString;
18
+ testLevel: z.ZodDefault<z.ZodEnum<["unit", "integration", "e2e", "contract"]>>;
19
+ model: z.ZodOptional<z.ZodString>;
20
+ }, "strip", z.ZodTypeAny, {
21
+ behavior: string;
22
+ targetFile: string;
23
+ testLevel: "contract" | "unit" | "integration" | "e2e";
24
+ model?: string | undefined;
25
+ testFile?: string | undefined;
26
+ }, {
27
+ behavior: string;
28
+ targetFile: string;
29
+ model?: string | undefined;
30
+ testFile?: string | undefined;
31
+ testLevel?: "contract" | "unit" | "integration" | "e2e" | undefined;
32
+ }>;
33
+ declare const TDDOutputSchema: z.ZodObject<{
34
+ status: z.ZodEnum<["success", "failure", "invalid-red"]>;
35
+ phases: z.ZodArray<z.ZodObject<{
36
+ phase: z.ZodEnum<["red", "green", "refactor"]>;
37
+ status: z.ZodEnum<["pass", "fail", "skipped"]>;
38
+ command: z.ZodString;
39
+ evidence: z.ZodString;
40
+ }, "strip", z.ZodTypeAny, {
41
+ status: "pass" | "fail" | "skipped";
42
+ phase: "refactor" | "red" | "green";
43
+ command: string;
44
+ evidence: string;
45
+ }, {
46
+ status: "pass" | "fail" | "skipped";
47
+ phase: "refactor" | "red" | "green";
48
+ command: string;
49
+ evidence: string;
50
+ }>, "many">;
51
+ broaderVerification: z.ZodObject<{
52
+ command: z.ZodString;
53
+ result: z.ZodEnum<["PASS", "FAIL", "NOT_RUN"]>;
54
+ }, "strip", z.ZodTypeAny, {
55
+ command: string;
56
+ result: "PASS" | "FAIL" | "NOT_RUN";
57
+ }, {
58
+ command: string;
59
+ result: "PASS" | "FAIL" | "NOT_RUN";
60
+ }>;
61
+ filesModified: z.ZodArray<z.ZodString, "many">;
62
+ summary: z.ZodString;
63
+ tokensUsed: z.ZodNumber;
64
+ }, "strip", z.ZodTypeAny, {
65
+ status: "success" | "failure" | "invalid-red";
66
+ tokensUsed: number;
67
+ summary: string;
68
+ phases: {
69
+ status: "pass" | "fail" | "skipped";
70
+ phase: "refactor" | "red" | "green";
71
+ command: string;
72
+ evidence: string;
73
+ }[];
74
+ filesModified: string[];
75
+ broaderVerification: {
76
+ command: string;
77
+ result: "PASS" | "FAIL" | "NOT_RUN";
78
+ };
79
+ }, {
80
+ status: "success" | "failure" | "invalid-red";
81
+ tokensUsed: number;
82
+ summary: string;
83
+ phases: {
84
+ status: "pass" | "fail" | "skipped";
85
+ phase: "refactor" | "red" | "green";
86
+ command: string;
87
+ evidence: string;
88
+ }[];
89
+ filesModified: string[];
90
+ broaderVerification: {
91
+ command: string;
92
+ result: "PASS" | "FAIL" | "NOT_RUN";
93
+ };
94
+ }>;
95
+ type TDDInput = z.infer<typeof TDDInputSchema>;
96
+ type TDDOutput = z.infer<typeof TDDOutputSchema>;
97
+ export declare class TDDSkill extends Skill<TDDInput, TDDOutput> {
98
+ constructor();
99
+ execute(input: TDDInput, context: SkillContext): Promise<TDDOutput>;
100
+ }
101
+ export declare const tddSkill: TDDSkill;
102
+ export default tddSkill;
103
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/skills/tdd/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAQ/C,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;EAQlB,CAAA;AASF,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUnB,CAAA;AAEF,KAAK,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAC9C,KAAK,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AA4HhD,qBAAa,QAAS,SAAQ,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC;;IAYhD,OAAO,CACX,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,SAAS,CAAC;CAuNtB;AAED,eAAO,MAAM,QAAQ,UAAiB,CAAA;AACtC,eAAe,QAAQ,CAAA"}