@tekyzinc/gsd-t 2.71.16 → 2.71.18

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,17 @@
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
+
11
+ ## [2.71.17] - 2026-04-08
12
+
13
+ ### Fixed (orchestrator — auto-review cycle limit)
14
+ - **Bumped maxAutoReviewCycles from 2 to 4** — 2 cycles was too conservative for complex components (e.g., charts with multiple contract properties). 4 cycles gives the reviewer/fixer loop enough iterations to converge.
15
+
5
16
  ## [2.71.16] - 2026-04-08
6
17
 
7
18
  ### Added (orchestrator — automated AI review loop)
@@ -438,7 +438,7 @@ const designBuildWorkflow = {
438
438
  timeout: 600_000,
439
439
  devServerTimeout: 30_000,
440
440
  maxReviewCycles: 3,
441
- maxAutoReviewCycles: 2,
441
+ maxAutoReviewCycles: 4,
442
442
  reviewTimeout: 300_000,
443
443
  },
444
444
  completionMessage: "All done. Run your app to verify: npm run dev",
@@ -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"],
@@ -579,7 +583,7 @@ ${BOLD}Phases:${RESET} ${this.wf.phases.join(" → ")}
579
583
  // 6d.5. Automated AI review loop (Term 2 equivalent)
580
584
  // Spawns an independent reviewer Claude that compares built output against contracts.
581
585
  // If issues found → spawn fixer Claude → re-measure → re-review until clean.
582
- const maxAutoReviewCycles = this.wf.defaults?.maxAutoReviewCycles || 2;
586
+ const maxAutoReviewCycles = this.wf.defaults?.maxAutoReviewCycles || 4;
583
587
  if (this.wf.buildReviewPrompt) {
584
588
  let autoReviewCycle = 0;
585
589
  let autoReviewClean = false;
@@ -629,7 +633,7 @@ ${BOLD}Phases:${RESET} ${this.wf.phases.join(" → ")}
629
633
  : this._defaultAutoFixPrompt(phase, issues);
630
634
 
631
635
  log(`\n${CYAN} ⚙${RESET} Spawning fixer Claude for ${issues.length} issue(s)...`);
632
- const fixResult = this.spawnClaude(projectDir, fixPrompt, 120_000);
636
+ const fixResult = this.spawnClaude(projectDir, fixPrompt, opts.timeout || 600_000);
633
637
  if (fixResult.exitCode === 0) success(`Fixer finished in ${fixResult.duration}s`);
634
638
  else warn(`Fixer exited with code ${fixResult.exitCode}`);
635
639
 
@@ -670,7 +674,7 @@ ${BOLD}Phases:${RESET} ${this.wf.phases.join(" → ")}
670
674
  ? this.wf.buildFixPrompt(phase, feedback.needsWork)
671
675
  : this._defaultFixPrompt(phase, feedback.needsWork);
672
676
  info(`Spawning Claude to apply ${feedback.needsWork.length} fixes...`);
673
- const fixResult = this.spawnClaude(projectDir, fixPrompt, 120_000);
677
+ const fixResult = this.spawnClaude(projectDir, fixPrompt, opts.timeout || 600_000);
674
678
  if (fixResult.exitCode === 0) success("Fixes applied");
675
679
  else warn(`Fix attempt returned code ${fixResult.exitCode}`);
676
680
  } else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tekyzinc/gsd-t",
3
- "version": "2.71.16",
3
+ "version": "2.71.18",
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",