sequant 1.0.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.
- package/LICENSE +21 -0
- package/README.md +237 -0
- package/dist/bin/cli.d.ts +8 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +70 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/src/commands/doctor.d.ts +8 -0
- package/dist/src/commands/doctor.d.ts.map +1 -0
- package/dist/src/commands/doctor.js +171 -0
- package/dist/src/commands/doctor.js.map +1 -0
- package/dist/src/commands/init.d.ts +11 -0
- package/dist/src/commands/init.d.ts.map +1 -0
- package/dist/src/commands/init.js +124 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/run.d.ts +18 -0
- package/dist/src/commands/run.d.ts.map +1 -0
- package/dist/src/commands/run.js +229 -0
- package/dist/src/commands/run.js.map +1 -0
- package/dist/src/commands/status.d.ts +5 -0
- package/dist/src/commands/status.d.ts.map +1 -0
- package/dist/src/commands/status.js +45 -0
- package/dist/src/commands/status.js.map +1 -0
- package/dist/src/commands/update.d.ts +10 -0
- package/dist/src/commands/update.d.ts.map +1 -0
- package/dist/src/commands/update.js +124 -0
- package/dist/src/commands/update.js.map +1 -0
- package/dist/src/index.d.ts +15 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +13 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/fs.d.ts +10 -0
- package/dist/src/lib/fs.d.ts.map +1 -0
- package/dist/src/lib/fs.js +44 -0
- package/dist/src/lib/fs.js.map +1 -0
- package/dist/src/lib/manifest.d.ts +14 -0
- package/dist/src/lib/manifest.d.ts.map +1 -0
- package/dist/src/lib/manifest.js +37 -0
- package/dist/src/lib/manifest.js.map +1 -0
- package/dist/src/lib/stacks.d.ts +22 -0
- package/dist/src/lib/stacks.d.ts.map +1 -0
- package/dist/src/lib/stacks.js +131 -0
- package/dist/src/lib/stacks.js.map +1 -0
- package/dist/src/lib/templates.d.ts +16 -0
- package/dist/src/lib/templates.d.ts.map +1 -0
- package/dist/src/lib/templates.js +118 -0
- package/dist/src/lib/templates.js.map +1 -0
- package/dist/src/lib/workflow/cli-args.d.ts +138 -0
- package/dist/src/lib/workflow/cli-args.d.ts.map +1 -0
- package/dist/src/lib/workflow/cli-args.js +210 -0
- package/dist/src/lib/workflow/cli-args.js.map +1 -0
- package/dist/src/lib/workflow/execute-issues.d.ts +42 -0
- package/dist/src/lib/workflow/execute-issues.d.ts.map +1 -0
- package/dist/src/lib/workflow/execute-issues.js +463 -0
- package/dist/src/lib/workflow/execute-issues.js.map +1 -0
- package/dist/src/lib/workflow/logger.d.ts +168 -0
- package/dist/src/lib/workflow/logger.d.ts.map +1 -0
- package/dist/src/lib/workflow/logger.js +249 -0
- package/dist/src/lib/workflow/logger.js.map +1 -0
- package/dist/src/lib/workflow/types.d.ts +89 -0
- package/dist/src/lib/workflow/types.d.ts.map +1 -0
- package/dist/src/lib/workflow/types.js +23 -0
- package/dist/src/lib/workflow/types.js.map +1 -0
- package/package.json +69 -0
- package/stacks/go.yaml +22 -0
- package/stacks/nextjs.yaml +28 -0
- package/stacks/python.yaml +24 -0
- package/stacks/rust.yaml +23 -0
- package/templates/hooks/post-tool.sh +301 -0
- package/templates/hooks/pre-tool.sh +350 -0
- package/templates/memory/constitution.md +60 -0
- package/templates/scripts/cleanup-worktree.sh +78 -0
- package/templates/scripts/list-worktrees.sh +50 -0
- package/templates/scripts/new-feature.sh +156 -0
- package/templates/settings.json +26 -0
- package/templates/skills/assess/SKILL.md +428 -0
- package/templates/skills/clean/SKILL.md +196 -0
- package/templates/skills/docs/SKILL.md +323 -0
- package/templates/skills/exec/SKILL.md +426 -0
- package/templates/skills/fullsolve/SKILL.md +479 -0
- package/templates/skills/loop/SKILL.md +310 -0
- package/templates/skills/qa/SKILL.md +261 -0
- package/templates/skills/qa/references/code-quality-exemplars.md +112 -0
- package/templates/skills/qa/references/code-review-checklist.md +77 -0
- package/templates/skills/qa/references/quality-gates.md +95 -0
- package/templates/skills/qa/references/testing-requirements.md +109 -0
- package/templates/skills/qa/scripts/quality-checks.sh +109 -0
- package/templates/skills/reflect/SKILL.md +159 -0
- package/templates/skills/reflect/references/documentation-tiers.md +70 -0
- package/templates/skills/reflect/references/phase-reflection.md +95 -0
- package/templates/skills/reflect/scripts/workflow-queries.ts +165 -0
- package/templates/skills/security-review/SKILL.md +344 -0
- package/templates/skills/security-review/references/security-checklists.md +377 -0
- package/templates/skills/solve/SKILL.md +242 -0
- package/templates/skills/spec/SKILL.md +169 -0
- package/templates/skills/spec/references/parallel-groups.md +72 -0
- package/templates/skills/spec/references/verification-criteria.md +104 -0
- package/templates/skills/test/SKILL.md +508 -0
- package/templates/skills/testgen/SKILL.md +561 -0
- package/templates/skills/verify/SKILL.md +266 -0
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* execute-issues.ts - TypeScript Claude Code Workflow Automation
|
|
4
|
+
*
|
|
5
|
+
* Executes /spec → /exec → /test → /qa workflow for GitHub issues.
|
|
6
|
+
* TypeScript port of scripts/execute-issues.sh with added features.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* npx tsx --env-file=.env.local scripts/dev/execute-issues.ts 123 # Single issue
|
|
10
|
+
* npx tsx --env-file=.env.local scripts/dev/execute-issues.ts 123 124 125 # Multiple parallel
|
|
11
|
+
* PHASES=exec,qa npx tsx --env-file=.env.local scripts/dev/execute-issues.ts 123 # Custom phases
|
|
12
|
+
* PHASES=spec,testgen,exec,qa npx tsx --env-file=.env.local scripts/dev/execute-issues.ts 123 # With test generation
|
|
13
|
+
* npx tsx --env-file=.env.local scripts/dev/execute-issues.ts --batch "123 124" --batch "125 126"
|
|
14
|
+
* npx tsx --env-file=.env.local scripts/dev/execute-issues.ts --sequential 123 124 125 # Respect dependencies
|
|
15
|
+
* QUALITY_LOOP=true npx tsx --env-file=.env.local scripts/dev/execute-issues.ts 123 # Auto-iterate
|
|
16
|
+
* npx tsx scripts/dev/execute-issues.ts --test # Run quick validation tests
|
|
17
|
+
* npx tsx scripts/dev/execute-issues.ts --cleanup-orphans # Clean stale runs
|
|
18
|
+
*
|
|
19
|
+
* Important:
|
|
20
|
+
* Use --env-file=.env.local to enable database logging to workflow_runs table.
|
|
21
|
+
* Without this flag, workflow runs will not be recorded (warning shown at startup).
|
|
22
|
+
*
|
|
23
|
+
* Environment Variables:
|
|
24
|
+
* PHASES - Comma-separated phases (default: spec,exec,qa)
|
|
25
|
+
* Available: spec, testgen, exec, test, qa, loop
|
|
26
|
+
* Note: testgen requires /spec to have run first with verification criteria
|
|
27
|
+
* PHASE_TIMEOUT - Timeout in seconds per phase (default: 1800)
|
|
28
|
+
* QUALITY_LOOP - Enable auto-iteration (default: false). Auto-includes testgen phase.
|
|
29
|
+
* MAX_ITERATIONS - Max fix iterations per phase (default: 3)
|
|
30
|
+
* SKIP_VERIFICATION - Skip /exec verification (default: false)
|
|
31
|
+
*
|
|
32
|
+
* Features:
|
|
33
|
+
* - Auto-detect UI issues for /test inclusion
|
|
34
|
+
* - Optional /testgen phase for shift-left testing (requires /spec comment)
|
|
35
|
+
* - Dependency detection and sequential execution (#355)
|
|
36
|
+
* - Quality loop mode with /loop iterations
|
|
37
|
+
* - Post-exec verification to catch hallucinated implementations
|
|
38
|
+
* - Structured logging to workflow_runs table
|
|
39
|
+
* - Crash cleanup for orphaned runs
|
|
40
|
+
*/
|
|
41
|
+
import { createLogger } from "../lib/logger";
|
|
42
|
+
import { isHelpRequested, printUsage } from "../lib/cli-args";
|
|
43
|
+
import { DEFAULT_CONFIG } from "./lib/types";
|
|
44
|
+
import { runIssue, formatDuration } from "./lib/issue-executor";
|
|
45
|
+
import { cleanupOrphanedRuns, markAllActiveRunsFailed, canLogToSupabase, } from "./lib/workflow-tracker";
|
|
46
|
+
import { buildDependencyGraph, hasInterdependencies, formatDependencyGraph, } from "./lib/dependency-detector";
|
|
47
|
+
import { runWithListr, isTTY } from "./lib/task-renderer";
|
|
48
|
+
// =====================================================
|
|
49
|
+
// CLI PARSING
|
|
50
|
+
// =====================================================
|
|
51
|
+
/**
|
|
52
|
+
* Parse CLI arguments
|
|
53
|
+
*/
|
|
54
|
+
function parseExecuteIssuesArgs(argv) {
|
|
55
|
+
const args = {
|
|
56
|
+
issues: [],
|
|
57
|
+
batches: [],
|
|
58
|
+
test: false,
|
|
59
|
+
help: false,
|
|
60
|
+
sequential: false,
|
|
61
|
+
forceParallel: false,
|
|
62
|
+
qualityLoop: process.env.QUALITY_LOOP === "true",
|
|
63
|
+
skipVerification: process.env.SKIP_VERIFICATION === "true",
|
|
64
|
+
verbose: false,
|
|
65
|
+
noSmartTests: false,
|
|
66
|
+
};
|
|
67
|
+
let i = 0;
|
|
68
|
+
while (i < argv.length) {
|
|
69
|
+
const arg = argv[i];
|
|
70
|
+
if (arg === "--help" || arg === "-h") {
|
|
71
|
+
args.help = true;
|
|
72
|
+
i++;
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (arg === "--test") {
|
|
76
|
+
args.test = true;
|
|
77
|
+
i++;
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (arg === "--cleanup-orphans") {
|
|
81
|
+
const next = argv[i + 1];
|
|
82
|
+
if (next && !next.startsWith("-") && /^\d+$/.test(next)) {
|
|
83
|
+
args.cleanupOrphans = parseInt(next, 10);
|
|
84
|
+
i += 2;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
args.cleanupOrphans = true;
|
|
88
|
+
i++;
|
|
89
|
+
}
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (arg === "--batch") {
|
|
93
|
+
const next = argv[i + 1];
|
|
94
|
+
if (!next) {
|
|
95
|
+
console.error("Error: --batch requires an argument");
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
const issues = next
|
|
99
|
+
.split(/\s+/)
|
|
100
|
+
.map((n) => parseInt(n, 10))
|
|
101
|
+
.filter((n) => !isNaN(n));
|
|
102
|
+
args.batches.push({
|
|
103
|
+
batchNumber: args.batches.length + 1,
|
|
104
|
+
issues,
|
|
105
|
+
});
|
|
106
|
+
i += 2;
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (arg === "--sequential") {
|
|
110
|
+
args.sequential = true;
|
|
111
|
+
i++;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (arg === "--force-parallel") {
|
|
115
|
+
args.forceParallel = true;
|
|
116
|
+
i++;
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
if (arg === "--phases") {
|
|
120
|
+
const next = argv[i + 1];
|
|
121
|
+
if (next) {
|
|
122
|
+
args.phases = next.split(",").map((p) => p.trim());
|
|
123
|
+
i += 2;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
i++;
|
|
127
|
+
}
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (arg === "--timeout") {
|
|
131
|
+
const next = argv[i + 1];
|
|
132
|
+
if (next && /^\d+$/.test(next)) {
|
|
133
|
+
args.timeout = parseInt(next, 10);
|
|
134
|
+
i += 2;
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
i++;
|
|
138
|
+
}
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (arg === "--max-iterations") {
|
|
142
|
+
const next = argv[i + 1];
|
|
143
|
+
if (next && /^\d+$/.test(next)) {
|
|
144
|
+
args.maxIterations = parseInt(next, 10);
|
|
145
|
+
i += 2;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
i++;
|
|
149
|
+
}
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (arg === "--quality-loop") {
|
|
153
|
+
args.qualityLoop = true;
|
|
154
|
+
i++;
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (arg === "--skip-verification") {
|
|
158
|
+
args.skipVerification = true;
|
|
159
|
+
i++;
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
if (arg === "--no-smart-tests") {
|
|
163
|
+
args.noSmartTests = true;
|
|
164
|
+
i++;
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
if (arg === "--verbose" || arg === "-v") {
|
|
168
|
+
args.verbose = true;
|
|
169
|
+
i++;
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
// Positional - issue number
|
|
173
|
+
const issueNum = parseInt(arg, 10);
|
|
174
|
+
if (!isNaN(issueNum)) {
|
|
175
|
+
args.issues.push(issueNum);
|
|
176
|
+
}
|
|
177
|
+
i++;
|
|
178
|
+
}
|
|
179
|
+
return args;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Build config from args and environment
|
|
183
|
+
*/
|
|
184
|
+
function buildConfig(args) {
|
|
185
|
+
const config = { ...DEFAULT_CONFIG };
|
|
186
|
+
// Phases from args or env
|
|
187
|
+
if (args.phases) {
|
|
188
|
+
config.phases = args.phases;
|
|
189
|
+
}
|
|
190
|
+
else if (process.env.PHASES) {
|
|
191
|
+
config.phases = process.env.PHASES.split(",").map((p) => p.trim());
|
|
192
|
+
}
|
|
193
|
+
// Timeout
|
|
194
|
+
if (args.timeout !== undefined) {
|
|
195
|
+
config.phaseTimeout = args.timeout;
|
|
196
|
+
}
|
|
197
|
+
else if (process.env.PHASE_TIMEOUT) {
|
|
198
|
+
config.phaseTimeout = parseInt(process.env.PHASE_TIMEOUT, 10);
|
|
199
|
+
}
|
|
200
|
+
// Quality loop
|
|
201
|
+
config.qualityLoop = args.qualityLoop;
|
|
202
|
+
// If quality loop enabled, auto-include testgen after spec phase
|
|
203
|
+
if (config.qualityLoop && !config.phases.includes("testgen")) {
|
|
204
|
+
const specIndex = config.phases.indexOf("spec");
|
|
205
|
+
if (specIndex !== -1) {
|
|
206
|
+
config.phases.splice(specIndex + 1, 0, "testgen");
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Max iterations
|
|
210
|
+
if (args.maxIterations !== undefined) {
|
|
211
|
+
config.maxIterations = args.maxIterations;
|
|
212
|
+
}
|
|
213
|
+
else if (process.env.MAX_ITERATIONS) {
|
|
214
|
+
config.maxIterations = parseInt(process.env.MAX_ITERATIONS, 10);
|
|
215
|
+
}
|
|
216
|
+
// Skip verification
|
|
217
|
+
config.skipVerification = args.skipVerification;
|
|
218
|
+
// Sequential mode
|
|
219
|
+
config.sequential = args.sequential;
|
|
220
|
+
config.forceParallel = args.forceParallel;
|
|
221
|
+
// Verbose
|
|
222
|
+
config.verbose = args.verbose;
|
|
223
|
+
// Smart tests (enabled by default, --no-smart-tests disables)
|
|
224
|
+
config.noSmartTests = args.noSmartTests;
|
|
225
|
+
return config;
|
|
226
|
+
}
|
|
227
|
+
// =====================================================
|
|
228
|
+
// EXECUTION MODES
|
|
229
|
+
// =====================================================
|
|
230
|
+
/**
|
|
231
|
+
* Run issues in parallel with listr2 rendering
|
|
232
|
+
*
|
|
233
|
+
* Uses listr2 for TTY environments to provide:
|
|
234
|
+
* - Spinner animation while tasks are running
|
|
235
|
+
* - Checkmark/X when tasks complete
|
|
236
|
+
* - Duration display after completion
|
|
237
|
+
* - Non-interleaved output in parallel execution
|
|
238
|
+
*
|
|
239
|
+
* Falls back to simple renderer for non-TTY (CI) environments.
|
|
240
|
+
*/
|
|
241
|
+
async function runParallel(issues, config, log) {
|
|
242
|
+
// Use listr2 for parallel execution with proper rendering
|
|
243
|
+
const results = await runWithListr(issues, async (issueNumber, execConfig) => {
|
|
244
|
+
// Create a silent logger for listr2 execution
|
|
245
|
+
// (listr2 handles the visual output, we suppress console logs)
|
|
246
|
+
const silentLog = createLogger({ silent: true });
|
|
247
|
+
return runIssue(issueNumber, execConfig, silentLog);
|
|
248
|
+
}, config, {
|
|
249
|
+
verbose: config.verbose,
|
|
250
|
+
forceNonTTY: !isTTY(),
|
|
251
|
+
});
|
|
252
|
+
return results;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Run issues sequentially (respecting dependencies)
|
|
256
|
+
*/
|
|
257
|
+
async function runSequential(issues, config, log) {
|
|
258
|
+
const graph = await buildDependencyGraph(issues);
|
|
259
|
+
if (graph.hasCycles) {
|
|
260
|
+
log.error("Dependency cycle detected! Cannot run sequentially.");
|
|
261
|
+
log.error(formatDependencyGraph(graph));
|
|
262
|
+
return [];
|
|
263
|
+
}
|
|
264
|
+
const order = graph.sortedOrder ?? issues;
|
|
265
|
+
log.info(`Sequential execution order: ${order.map((n) => `#${n}`).join(" → ")}`);
|
|
266
|
+
const results = [];
|
|
267
|
+
for (const issue of order) {
|
|
268
|
+
log.info(`\n${"─".repeat(40)}`);
|
|
269
|
+
const result = await runIssue(issue, config, log);
|
|
270
|
+
results.push(result);
|
|
271
|
+
// If this issue failed and others depend on it, warn
|
|
272
|
+
if (!result.success) {
|
|
273
|
+
const dependents = issues.filter((i) => {
|
|
274
|
+
const deps = graph.edges.get(i);
|
|
275
|
+
return deps && deps.includes(issue);
|
|
276
|
+
});
|
|
277
|
+
if (dependents.length > 0) {
|
|
278
|
+
log.warn(`Issue #${issue} failed. Dependent issues affected: ${dependents.map((d) => `#${d}`).join(", ")}`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
return results;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Run batches sequentially, issues within batch in parallel
|
|
286
|
+
*/
|
|
287
|
+
async function runBatches(batches, config, log) {
|
|
288
|
+
const results = [];
|
|
289
|
+
for (const batch of batches) {
|
|
290
|
+
log.info(`\n${"━".repeat(40)}`);
|
|
291
|
+
log.info(`BATCH ${batch.batchNumber}`);
|
|
292
|
+
log.info(`${"━".repeat(40)}`);
|
|
293
|
+
const issueResults = await runParallel(batch.issues, config, log);
|
|
294
|
+
results.push({
|
|
295
|
+
batchNumber: batch.batchNumber,
|
|
296
|
+
issueResults,
|
|
297
|
+
success: issueResults.every((r) => r.success),
|
|
298
|
+
});
|
|
299
|
+
log.info(`\n⏳ Waiting for BATCH ${batch.batchNumber} to complete...`);
|
|
300
|
+
log.success(`✓ BATCH ${batch.batchNumber} Complete`);
|
|
301
|
+
}
|
|
302
|
+
return results;
|
|
303
|
+
}
|
|
304
|
+
// =====================================================
|
|
305
|
+
// MAIN
|
|
306
|
+
// =====================================================
|
|
307
|
+
async function main() {
|
|
308
|
+
const argv = process.argv.slice(2);
|
|
309
|
+
const args = parseExecuteIssuesArgs(argv);
|
|
310
|
+
// Help
|
|
311
|
+
if (args.help || isHelpRequested(argv)) {
|
|
312
|
+
printUsage("execute-issues.ts", "Execute Claude Code workflow (/spec → /exec → /qa) for GitHub issues.", {
|
|
313
|
+
"<issue_numbers>": "Issue numbers to process (space-separated)",
|
|
314
|
+
'--batch "N M"': "Run issues N and M as a batch (repeatable)",
|
|
315
|
+
"--sequential": "Run issues sequentially, respecting dependencies (#355)",
|
|
316
|
+
"--force-parallel": "Force parallel even if dependencies detected",
|
|
317
|
+
"--cleanup-orphans [hours]": "Mark stale runs (>N hours old) as failed (default: 2)",
|
|
318
|
+
"--test": "Run quick validation tests (no Claude calls)",
|
|
319
|
+
"--phases <list>": "Phases to run (default: spec,exec,qa). Available: spec,testgen,exec,test,qa,loop",
|
|
320
|
+
"--timeout <seconds>": "Timeout per phase (default: 1800)",
|
|
321
|
+
"--quality-loop": "Enable auto-iteration with /loop (auto-includes testgen phase)",
|
|
322
|
+
"--max-iterations <n>": "Max fix iterations per phase (default: 3)",
|
|
323
|
+
"--skip-verification": "Skip /exec verification",
|
|
324
|
+
"--no-smart-tests": "Disable smart tests (auto-run tests after file edits)",
|
|
325
|
+
"--verbose, -v": "Verbose output",
|
|
326
|
+
"--help, -h": "Show this help message",
|
|
327
|
+
}, [
|
|
328
|
+
"npx tsx --env-file=.env.local scripts/dev/execute-issues.ts 123",
|
|
329
|
+
"npx tsx --env-file=.env.local scripts/dev/execute-issues.ts 123 124 125",
|
|
330
|
+
"PHASES=exec,qa npx tsx --env-file=.env.local scripts/dev/execute-issues.ts 123",
|
|
331
|
+
"PHASES=spec,testgen,exec,qa npx tsx --env-file=.env.local scripts/dev/execute-issues.ts 123 # With test stubs",
|
|
332
|
+
'npx tsx --env-file=.env.local scripts/dev/execute-issues.ts --batch "123 124" --batch "125 126"',
|
|
333
|
+
"npx tsx --env-file=.env.local scripts/dev/execute-issues.ts --sequential 123 124 125",
|
|
334
|
+
"QUALITY_LOOP=true npx tsx --env-file=.env.local scripts/dev/execute-issues.ts 123 # Runs spec,testgen,exec,qa",
|
|
335
|
+
"npx tsx scripts/dev/execute-issues.ts --cleanup-orphans",
|
|
336
|
+
"npx tsx scripts/dev/execute-issues.ts --test",
|
|
337
|
+
]);
|
|
338
|
+
process.exit(0);
|
|
339
|
+
}
|
|
340
|
+
const config = buildConfig(args);
|
|
341
|
+
const log = createLogger({ verbose: config.verbose });
|
|
342
|
+
// Register crash cleanup
|
|
343
|
+
const cleanup = async () => {
|
|
344
|
+
await markAllActiveRunsFailed("process_crash", "Script interrupted");
|
|
345
|
+
process.exit(1);
|
|
346
|
+
};
|
|
347
|
+
process.on("SIGINT", cleanup);
|
|
348
|
+
process.on("SIGTERM", cleanup);
|
|
349
|
+
// Test mode
|
|
350
|
+
if (args.test) {
|
|
351
|
+
log.info("🧪 Running validation tests...");
|
|
352
|
+
// Import and run tests dynamically
|
|
353
|
+
try {
|
|
354
|
+
const { runWorkflowTests } = await import("./lib/test-runner");
|
|
355
|
+
const passed = await runWorkflowTests();
|
|
356
|
+
process.exit(passed ? 0 : 1);
|
|
357
|
+
}
|
|
358
|
+
catch {
|
|
359
|
+
log.warn("Test runner not implemented yet");
|
|
360
|
+
process.exit(0);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
// Cleanup orphans mode
|
|
364
|
+
if (args.cleanupOrphans !== undefined) {
|
|
365
|
+
const hours = typeof args.cleanupOrphans === "number" ? args.cleanupOrphans : 2;
|
|
366
|
+
await cleanupOrphanedRuns(hours);
|
|
367
|
+
process.exit(0);
|
|
368
|
+
}
|
|
369
|
+
// Validate we have issues
|
|
370
|
+
const allIssues = args.batches.length > 0
|
|
371
|
+
? args.batches.flatMap((b) => b.issues)
|
|
372
|
+
: args.issues;
|
|
373
|
+
if (allIssues.length === 0) {
|
|
374
|
+
log.error("Error: No issues specified\n");
|
|
375
|
+
printUsage("execute-issues.ts", "", {}, []);
|
|
376
|
+
process.exit(1);
|
|
377
|
+
}
|
|
378
|
+
log.success("🚀 Claude Code Workflow Execution\n");
|
|
379
|
+
// Warn if database logging is disabled
|
|
380
|
+
if (!canLogToSupabase()) {
|
|
381
|
+
log.warn("⚠️ Database logging disabled (missing SUPABASE_SERVICE_ROLE_KEY)");
|
|
382
|
+
console.log("");
|
|
383
|
+
}
|
|
384
|
+
// Always cleanup orphans first
|
|
385
|
+
if (canLogToSupabase()) {
|
|
386
|
+
await cleanupOrphanedRuns();
|
|
387
|
+
console.log("");
|
|
388
|
+
}
|
|
389
|
+
// Check for dependencies if running multiple issues
|
|
390
|
+
if (allIssues.length > 1 && !config.sequential && !config.forceParallel) {
|
|
391
|
+
const graph = await buildDependencyGraph(allIssues);
|
|
392
|
+
if (hasInterdependencies(graph)) {
|
|
393
|
+
log.warn("⚠️ Dependencies detected between issues!");
|
|
394
|
+
log.info(formatDependencyGraph(graph));
|
|
395
|
+
log.info("");
|
|
396
|
+
if (graph.hasCycles) {
|
|
397
|
+
log.error("Cannot proceed: dependency cycle detected.");
|
|
398
|
+
log.info("Please resolve the cycle or use --force-parallel to ignore.");
|
|
399
|
+
process.exit(1);
|
|
400
|
+
}
|
|
401
|
+
log.info("Options:");
|
|
402
|
+
log.info(" 1. Use --sequential to respect dependency order");
|
|
403
|
+
log.info(" 2. Use --force-parallel to ignore dependencies");
|
|
404
|
+
log.info("");
|
|
405
|
+
log.info("Exiting. Re-run with one of the above options.");
|
|
406
|
+
process.exit(1);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
// Execute
|
|
410
|
+
let results;
|
|
411
|
+
if (args.batches.length > 0) {
|
|
412
|
+
// Batch mode
|
|
413
|
+
const batchResults = await runBatches(args.batches, config, log);
|
|
414
|
+
results = batchResults.flatMap((b) => b.issueResults);
|
|
415
|
+
}
|
|
416
|
+
else if (config.sequential) {
|
|
417
|
+
// Sequential mode
|
|
418
|
+
results = await runSequential(args.issues, config, log);
|
|
419
|
+
}
|
|
420
|
+
else {
|
|
421
|
+
// Parallel mode
|
|
422
|
+
results = await runParallel(args.issues, config, log);
|
|
423
|
+
}
|
|
424
|
+
// Summary
|
|
425
|
+
console.log("");
|
|
426
|
+
log.success("━".repeat(60));
|
|
427
|
+
log.success("✓ All Issues Processed!");
|
|
428
|
+
log.success("━".repeat(60));
|
|
429
|
+
console.log("");
|
|
430
|
+
// Show results summary
|
|
431
|
+
const passed = results.filter((r) => r.success).length;
|
|
432
|
+
const failed = results.filter((r) => !r.success).length;
|
|
433
|
+
log.info(`Results: ${passed} passed, ${failed} failed`);
|
|
434
|
+
for (const result of results) {
|
|
435
|
+
const status = result.success ? "✅" : "❌";
|
|
436
|
+
const phases = result.phaseResults
|
|
437
|
+
.map((p) => {
|
|
438
|
+
const pStatus = p.success ? "✓" : "✗";
|
|
439
|
+
const duration = p.durationSeconds
|
|
440
|
+
? `(${formatDuration(p.durationSeconds)})`
|
|
441
|
+
: "";
|
|
442
|
+
return `${p.phase}:${pStatus}${duration}`;
|
|
443
|
+
})
|
|
444
|
+
.join(" ");
|
|
445
|
+
log.info(` ${status} #${result.issueNumber}: ${phases}`);
|
|
446
|
+
if (result.abortReason) {
|
|
447
|
+
log.info(` Abort: ${result.abortReason}`);
|
|
448
|
+
}
|
|
449
|
+
if (result.loopTriggered) {
|
|
450
|
+
log.info(` Quality loop triggered`);
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
console.log("");
|
|
454
|
+
log.info("📝 Logs: /tmp/claude-issue-*.log | 📦 Archived: /tmp/claude-logs/");
|
|
455
|
+
log.info("Next: Review logs → Check GitHub comments → Review and merge PRs");
|
|
456
|
+
// Exit with error if any failed
|
|
457
|
+
process.exit(failed > 0 ? 1 : 0);
|
|
458
|
+
}
|
|
459
|
+
main().catch((err) => {
|
|
460
|
+
console.error("Fatal error:", err);
|
|
461
|
+
markAllActiveRunsFailed("process_crash", err.message).then(() => process.exit(1));
|
|
462
|
+
});
|
|
463
|
+
//# sourceMappingURL=execute-issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-issues.js","sourceRoot":"","sources":["../../../../src/lib/workflow/execute-issues.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured Logger for Pipeline Scripts
|
|
3
|
+
*
|
|
4
|
+
* Provides log levels with emoji prefixes for visual scanning in terminal output.
|
|
5
|
+
* Supports verbose mode integration with CLI arguments.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { createLogger } from './lib/logger'
|
|
10
|
+
*
|
|
11
|
+
* const log = createLogger({ verbose: args.verbose })
|
|
12
|
+
*
|
|
13
|
+
* log.debug('Processing item', { id: 123 }) // Only shown in verbose mode
|
|
14
|
+
* log.info('Starting process')
|
|
15
|
+
* log.success('Completed successfully')
|
|
16
|
+
* log.warn('Missing optional field')
|
|
17
|
+
* log.error('Failed to connect', error)
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Log levels in order of severity.
|
|
22
|
+
*/
|
|
23
|
+
export type LogLevel = "debug" | "info" | "success" | "warn" | "error";
|
|
24
|
+
/**
|
|
25
|
+
* Logger configuration options.
|
|
26
|
+
*/
|
|
27
|
+
export interface LoggerOptions {
|
|
28
|
+
/** Enable debug level logging (default: false) */
|
|
29
|
+
verbose?: boolean;
|
|
30
|
+
/** Suppress all console output (default: false). Useful when another renderer (e.g., listr2) controls the terminal. */
|
|
31
|
+
silent?: boolean;
|
|
32
|
+
/** Custom output function (default: console.log) */
|
|
33
|
+
output?: (message: string) => void;
|
|
34
|
+
/** Custom error output function (default: console.error) */
|
|
35
|
+
errorOutput?: (message: string) => void;
|
|
36
|
+
/** Include timestamps in log messages (default: false) */
|
|
37
|
+
timestamps?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Logger interface with methods for each log level.
|
|
41
|
+
*/
|
|
42
|
+
export interface Logger {
|
|
43
|
+
/** Debug-level logging (only shown when verbose is true) */
|
|
44
|
+
debug(message: string, data?: unknown): void;
|
|
45
|
+
/** Info-level logging */
|
|
46
|
+
info(message: string, data?: unknown): void;
|
|
47
|
+
/** Success-level logging */
|
|
48
|
+
success(message: string, data?: unknown): void;
|
|
49
|
+
/** Warning-level logging */
|
|
50
|
+
warn(message: string, data?: unknown): void;
|
|
51
|
+
/** Error-level logging */
|
|
52
|
+
error(message: string, data?: unknown): void;
|
|
53
|
+
/** Log at a specific level */
|
|
54
|
+
log(level: LogLevel, message: string, data?: unknown): void;
|
|
55
|
+
/** Create a child logger with a prefix */
|
|
56
|
+
child(prefix: string): Logger;
|
|
57
|
+
/** Check if verbose mode is enabled */
|
|
58
|
+
isVerbose(): boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create a structured logger with configurable options.
|
|
62
|
+
*
|
|
63
|
+
* @param options - Logger configuration
|
|
64
|
+
* @returns A Logger instance
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* // Basic usage
|
|
69
|
+
* const log = createLogger()
|
|
70
|
+
* log.info('Hello')
|
|
71
|
+
*
|
|
72
|
+
* // With verbose mode
|
|
73
|
+
* const verboseLog = createLogger({ verbose: true })
|
|
74
|
+
* verboseLog.debug('Debug info') // Now visible
|
|
75
|
+
*
|
|
76
|
+
* // With timestamps
|
|
77
|
+
* const timedLog = createLogger({ timestamps: true })
|
|
78
|
+
* timedLog.info('With time') // [12:34:56] ℹ️ With time
|
|
79
|
+
*
|
|
80
|
+
* // Child logger with prefix
|
|
81
|
+
* const childLog = log.child('discovery')
|
|
82
|
+
* childLog.info('Finding shops') // ℹ️ [discovery] Finding shops
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare function createLogger(options?: LoggerOptions): Logger;
|
|
86
|
+
/**
|
|
87
|
+
* Default logger instance (non-verbose).
|
|
88
|
+
* Use `createLogger({ verbose: true })` for verbose mode.
|
|
89
|
+
*/
|
|
90
|
+
export declare const defaultLogger: Logger;
|
|
91
|
+
/**
|
|
92
|
+
* Quick logging functions using the default logger.
|
|
93
|
+
* For scripts that don't need verbose mode configuration.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* import { log } from './lib/logger'
|
|
98
|
+
*
|
|
99
|
+
* log.info('Starting')
|
|
100
|
+
* log.success('Done')
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
export declare const log: Logger;
|
|
104
|
+
/**
|
|
105
|
+
* Create a logger that logs to an array for testing.
|
|
106
|
+
*
|
|
107
|
+
* @returns Object with logger and captured messages
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* const { logger, messages } = createTestLogger()
|
|
112
|
+
* logger.info('test')
|
|
113
|
+
* expect(messages).toContain(expect.stringContaining('test'))
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export declare function createTestLogger(options?: Omit<LoggerOptions, "output" | "errorOutput">): {
|
|
117
|
+
logger: Logger;
|
|
118
|
+
messages: string[];
|
|
119
|
+
errors: string[];
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Log a step in a multi-step process.
|
|
123
|
+
*
|
|
124
|
+
* @param step - Current step number
|
|
125
|
+
* @param total - Total number of steps
|
|
126
|
+
* @param message - Step description
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* logStep(1, 3, 'Fetching data')
|
|
131
|
+
* // Output: ℹ️ [1/3] Fetching data
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
export declare function logStep(step: number, total: number, message: string): void;
|
|
135
|
+
/**
|
|
136
|
+
* Log a progress update within a step.
|
|
137
|
+
*
|
|
138
|
+
* @param current - Current progress
|
|
139
|
+
* @param total - Total items
|
|
140
|
+
* @param message - Progress description
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```typescript
|
|
144
|
+
* logProgress(5, 10, 'Processing shops')
|
|
145
|
+
* // Output: → 5/10 Processing shops
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
export declare function logProgress(current: number, total: number, message: string): void;
|
|
149
|
+
/**
|
|
150
|
+
* Log a section header for visual organization.
|
|
151
|
+
*
|
|
152
|
+
* @param title - Section title
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* logSection('Discovery Results')
|
|
157
|
+
* // Output:
|
|
158
|
+
* // ════════════════════════════════════════
|
|
159
|
+
* // Discovery Results
|
|
160
|
+
* // ════════════════════════════════════════
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
export declare function logSection(title: string): void;
|
|
164
|
+
/**
|
|
165
|
+
* Log a divider line.
|
|
166
|
+
*/
|
|
167
|
+
export declare function logDivider(): void;
|
|
168
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/lib/workflow/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uHAAuH;IACvH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,4DAA4D;IAC5D,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,0DAA0D;IAC1D,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,4DAA4D;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,yBAAyB;IACzB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,4BAA4B;IAC5B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/C,4BAA4B;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,0BAA0B;IAC1B,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7C,8BAA8B;IAC9B,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5D,0CAA0C;IAC1C,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,uCAAuC;IACvC,SAAS,IAAI,OAAO,CAAC;CACtB;AAgED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CA0EhE;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,QAAiB,CAAC;AAE5C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,GAAG,QAAgB,CAAC;AAEjC;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,aAAa,CAAM,GAC1D;IACD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAWA;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,IAAI,CAEN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAK9C;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC"}
|