@tekyzinc/gsd-t 2.71.17 → 2.71.19

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/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to GSD-T are documented here. Updated with each release.
4
4
 
5
+ ## [2.71.18] - 2026-04-08
6
+
7
+ ### Fixed (orchestrator — Claude permissions and timeouts)
8
+ - **Added `--dangerously-skip-permissions` to Claude spawns** — builder, reviewer, and fixer Claude instances couldn't write files in non-interactive `-p` mode. They ran successfully but produced zero output files because permission prompts can't be answered in piped mode.
9
+ - **Increased fixer timeout from 2min to 10min** — fixer was getting SIGTERM'd (exit code 143) trying to create 15 components in 120s. Now uses the same timeout as the builder (default 600s).
10
+
5
11
  ## [2.71.17] - 2026-04-08
6
12
 
7
13
  ### Fixed (orchestrator — auto-review cycle limit)
@@ -179,13 +179,17 @@ ${BOLD}Phases:${RESET} ${this.wf.phases.join(" → ")}
179
179
  }
180
180
  }
181
181
 
182
- spawnClaude(projectDir, prompt, timeout) {
182
+ spawnClaude(projectDir, prompt, timeout, opts = {}) {
183
183
  const start = Date.now();
184
184
  let output = "";
185
185
  let exitCode = 0;
186
186
 
187
+ // Build args: -p for print mode, --dangerously-skip-permissions so spawned
188
+ // Claude can write files without interactive permission prompts
189
+ const args = ["-p", "--dangerously-skip-permissions", prompt];
190
+
187
191
  try {
188
- output = execFileSync("claude", ["-p", prompt], {
192
+ output = execFileSync("claude", args, {
189
193
  encoding: "utf8",
190
194
  timeout: timeout || this.wf.defaults?.timeout || 600_000,
191
195
  stdio: ["pipe", "pipe", "pipe"],
@@ -565,6 +569,14 @@ ${BOLD}Phases:${RESET} ${this.wf.phases.join(" → ")}
565
569
  warn(`Claude exited with code ${buildResult.exitCode} after ${buildResult.duration}s`);
566
570
  }
567
571
 
572
+ // Log build output for debugging
573
+ const buildLogDir = path.join(this.getReviewDir(projectDir), "build-logs");
574
+ ensureDir(buildLogDir);
575
+ fs.writeFileSync(
576
+ path.join(buildLogDir, `${phase}-build.log`),
577
+ `Exit code: ${buildResult.exitCode}\nDuration: ${buildResult.duration}s\nPrompt length: ${prompt.length}\n\n--- OUTPUT ---\n${buildResult.output.slice(0, 20000)}`
578
+ );
579
+
568
580
  // 6c. Collect built paths
569
581
  const builtPaths = items.map(item =>
570
582
  item.sourcePath || (this.wf.guessPaths ? this.wf.guessPaths(phase, item) : "")
@@ -629,7 +641,7 @@ ${BOLD}Phases:${RESET} ${this.wf.phases.join(" → ")}
629
641
  : this._defaultAutoFixPrompt(phase, issues);
630
642
 
631
643
  log(`\n${CYAN} ⚙${RESET} Spawning fixer Claude for ${issues.length} issue(s)...`);
632
- const fixResult = this.spawnClaude(projectDir, fixPrompt, 120_000);
644
+ const fixResult = this.spawnClaude(projectDir, fixPrompt, opts.timeout || 600_000);
633
645
  if (fixResult.exitCode === 0) success(`Fixer finished in ${fixResult.duration}s`);
634
646
  else warn(`Fixer exited with code ${fixResult.exitCode}`);
635
647
 
@@ -670,7 +682,7 @@ ${BOLD}Phases:${RESET} ${this.wf.phases.join(" → ")}
670
682
  ? this.wf.buildFixPrompt(phase, feedback.needsWork)
671
683
  : this._defaultFixPrompt(phase, feedback.needsWork);
672
684
  info(`Spawning Claude to apply ${feedback.needsWork.length} fixes...`);
673
- const fixResult = this.spawnClaude(projectDir, fixPrompt, 120_000);
685
+ const fixResult = this.spawnClaude(projectDir, fixPrompt, opts.timeout || 600_000);
674
686
  if (fixResult.exitCode === 0) success("Fixes applied");
675
687
  else warn(`Fix attempt returned code ${fixResult.exitCode}`);
676
688
  } else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tekyzinc/gsd-t",
3
- "version": "2.71.17",
3
+ "version": "2.71.19",
4
4
  "description": "GSD-T: Contract-Driven Development for Claude Code — 56 slash commands with headless CI/CD mode, graph-powered code analysis, real-time agent dashboard, execution intelligence, task telemetry, doc-ripple enforcement, backlog management, impact analysis, test sync, milestone archival, and PRD generation",
5
5
  "author": "Tekyz, Inc.",
6
6
  "license": "MIT",