sequant 1.1.2 → 1.1.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 (39) hide show
  1. package/dist/bin/cli.js +2 -1
  2. package/dist/bin/cli.js.map +1 -1
  3. package/dist/src/commands/init.d.ts.map +1 -1
  4. package/dist/src/commands/init.js +38 -2
  5. package/dist/src/commands/init.js.map +1 -1
  6. package/dist/src/commands/init.test.js +37 -1
  7. package/dist/src/commands/init.test.js.map +1 -1
  8. package/dist/src/commands/run.d.ts +2 -0
  9. package/dist/src/commands/run.d.ts.map +1 -1
  10. package/dist/src/commands/run.js +219 -18
  11. package/dist/src/commands/run.js.map +1 -1
  12. package/dist/src/commands/update.d.ts.map +1 -1
  13. package/dist/src/commands/update.js +50 -2
  14. package/dist/src/commands/update.js.map +1 -1
  15. package/dist/src/index.d.ts +3 -1
  16. package/dist/src/index.d.ts.map +1 -1
  17. package/dist/src/index.js +2 -1
  18. package/dist/src/index.js.map +1 -1
  19. package/dist/src/lib/config.d.ts +19 -0
  20. package/dist/src/lib/config.d.ts.map +1 -0
  21. package/dist/src/lib/config.js +31 -0
  22. package/dist/src/lib/config.js.map +1 -0
  23. package/dist/src/lib/settings.d.ts +69 -0
  24. package/dist/src/lib/settings.d.ts.map +1 -0
  25. package/dist/src/lib/settings.js +79 -0
  26. package/dist/src/lib/settings.js.map +1 -0
  27. package/dist/src/lib/stacks.d.ts +1 -0
  28. package/dist/src/lib/stacks.d.ts.map +1 -1
  29. package/dist/src/lib/stacks.js +6 -0
  30. package/dist/src/lib/stacks.js.map +1 -1
  31. package/dist/src/lib/templates.d.ts +5 -1
  32. package/dist/src/lib/templates.d.ts.map +1 -1
  33. package/dist/src/lib/templates.js +3 -2
  34. package/dist/src/lib/templates.js.map +1 -1
  35. package/dist/src/lib/workflow/types.d.ts +2 -0
  36. package/dist/src/lib/workflow/types.d.ts.map +1 -1
  37. package/package.json +1 -1
  38. package/templates/skills/solve/SKILL.md +27 -11
  39. package/templates/skills/spec/SKILL.md +30 -2
package/dist/bin/cli.js CHANGED
@@ -52,7 +52,8 @@ program
52
52
  .option("-d, --dry-run", "Preview without execution")
53
53
  .option("-v, --verbose", "Verbose output with streaming")
54
54
  .option("--timeout <seconds>", "Timeout per phase in seconds", parseInt)
55
- .option("--log-json", "Enable structured JSON logging")
55
+ .option("--log-json", "Enable structured JSON logging (default: true)")
56
+ .option("--no-log", "Disable JSON logging for this run")
56
57
  .option("--log-path <path>", "Custom log directory path")
57
58
  .option("-q, --quality-loop", "Enable quality loop with auto-retry")
58
59
  .option("--max-iterations <n>", "Max iterations for quality loop (default: 3)", parseInt)
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0CH,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA+JrE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4CH,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoMrE"}
@@ -3,9 +3,11 @@
3
3
  */
4
4
  import chalk from "chalk";
5
5
  import inquirer from "inquirer";
6
- import { detectStack } from "../lib/stacks.js";
6
+ import { detectStack, getStackConfig } from "../lib/stacks.js";
7
7
  import { copyTemplates } from "../lib/templates.js";
8
8
  import { createManifest } from "../lib/manifest.js";
9
+ import { saveConfig } from "../lib/config.js";
10
+ import { createDefaultSettings } from "../lib/settings.js";
9
11
  import { fileExists, ensureDir } from "../lib/fs.js";
10
12
  import { commandExists, isGhAuthenticated, getInstallHint, } from "../lib/system.js";
11
13
  /**
@@ -104,6 +106,24 @@ export async function initCommand(options) {
104
106
  }
105
107
  }
106
108
  console.log(chalk.blue(`\nšŸ“‹ Stack: ${stack}`));
109
+ // Get stack config for default dev URL
110
+ const stackConfig = getStackConfig(stack);
111
+ let devUrl = stackConfig.devUrl;
112
+ // Prompt for dev URL
113
+ if (options.yes) {
114
+ console.log(chalk.blue(`🌐 Dev URL: ${devUrl} (default)`));
115
+ }
116
+ else {
117
+ const { inputDevUrl } = await inquirer.prompt([
118
+ {
119
+ type: "input",
120
+ name: "inputDevUrl",
121
+ message: "Development server URL:",
122
+ default: devUrl,
123
+ },
124
+ ]);
125
+ devUrl = inputDevUrl;
126
+ }
107
127
  // Show what will be created
108
128
  console.log(chalk.gray("\nWill create:"));
109
129
  console.log(chalk.gray(" .claude/"));
@@ -111,6 +131,9 @@ export async function initCommand(options) {
111
131
  console.log(chalk.gray(" ā”œā”€ā”€ hooks/ (pre/post tool hooks)"));
112
132
  console.log(chalk.gray(" ā”œā”€ā”€ memory/ (constitution & context)"));
113
133
  console.log(chalk.gray(" └── settings.json (hooks configuration)"));
134
+ console.log(chalk.gray(" .sequant/"));
135
+ console.log(chalk.gray(" ā”œā”€ā”€ settings.json (run preferences)"));
136
+ console.log(chalk.gray(" └── logs/ (workflow run logs)"));
114
137
  console.log(chalk.gray(" scripts/dev/"));
115
138
  console.log(chalk.gray(" └── *.sh (worktree helpers)"));
116
139
  if (!options.yes) {
@@ -132,10 +155,23 @@ export async function initCommand(options) {
132
155
  await ensureDir(".claude/skills");
133
156
  await ensureDir(".claude/hooks");
134
157
  await ensureDir(".claude/memory");
158
+ await ensureDir(".claude/.sequant");
159
+ await ensureDir(".sequant/logs");
135
160
  await ensureDir("scripts/dev");
161
+ // Save config with tokens
162
+ console.log(chalk.blue("šŸ’¾ Saving configuration..."));
163
+ const tokens = { DEV_URL: devUrl };
164
+ await saveConfig({
165
+ tokens,
166
+ stack: stack,
167
+ initialized: new Date().toISOString(),
168
+ });
169
+ // Create default settings
170
+ console.log(chalk.blue("āš™ļø Creating default settings..."));
171
+ await createDefaultSettings();
136
172
  // Copy templates
137
173
  console.log(chalk.blue("šŸ“„ Copying templates..."));
138
- await copyTemplates(stack);
174
+ await copyTemplates(stack, tokens);
139
175
  // Create manifest
140
176
  console.log(chalk.blue("šŸ“‹ Creating manifest..."));
141
177
  await createManifest(stack);
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,31 @@ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
3
3
  vi.mock("../lib/fs.js", () => ({
4
4
  fileExists: vi.fn(),
5
5
  ensureDir: vi.fn(),
6
+ writeFile: vi.fn(),
7
+ readFile: vi.fn(),
8
+ }));
9
+ // Mock settings
10
+ vi.mock("../lib/settings.js", () => ({
11
+ createDefaultSettings: vi.fn(),
12
+ SETTINGS_PATH: ".sequant/settings.json",
6
13
  }));
7
14
  // Mock stacks
8
15
  vi.mock("../lib/stacks.js", () => ({
9
16
  detectStack: vi.fn(),
17
+ getStackConfig: vi.fn(() => ({
18
+ name: "generic",
19
+ displayName: "Generic",
20
+ devUrl: "http://localhost:3000",
21
+ variables: {
22
+ TEST_COMMAND: "npm test",
23
+ BUILD_COMMAND: "npm run build",
24
+ LINT_COMMAND: "npm run lint",
25
+ },
26
+ })),
27
+ }));
28
+ // Mock config
29
+ vi.mock("../lib/config.js", () => ({
30
+ saveConfig: vi.fn(),
10
31
  }));
11
32
  // Mock templates
12
33
  vi.mock("../lib/templates.js", () => ({
@@ -39,12 +60,16 @@ import { fileExists, ensureDir } from "../lib/fs.js";
39
60
  import { detectStack } from "../lib/stacks.js";
40
61
  import { copyTemplates } from "../lib/templates.js";
41
62
  import { createManifest } from "../lib/manifest.js";
63
+ import { saveConfig } from "../lib/config.js";
64
+ import { createDefaultSettings } from "../lib/settings.js";
42
65
  import { commandExists, isGhAuthenticated } from "../lib/system.js";
43
66
  const mockFileExists = vi.mocked(fileExists);
44
67
  const mockEnsureDir = vi.mocked(ensureDir);
45
68
  const mockDetectStack = vi.mocked(detectStack);
46
69
  const mockCopyTemplates = vi.mocked(copyTemplates);
47
70
  const mockCreateManifest = vi.mocked(createManifest);
71
+ const mockSaveConfig = vi.mocked(saveConfig);
72
+ const mockCreateDefaultSettings = vi.mocked(createDefaultSettings);
48
73
  const mockCommandExists = vi.mocked(commandExists);
49
74
  const mockIsGhAuthenticated = vi.mocked(isGhAuthenticated);
50
75
  describe("init command", () => {
@@ -58,6 +83,8 @@ describe("init command", () => {
58
83
  mockDetectStack.mockResolvedValue(null);
59
84
  mockCopyTemplates.mockResolvedValue(undefined);
60
85
  mockCreateManifest.mockResolvedValue(undefined);
86
+ mockSaveConfig.mockResolvedValue(undefined);
87
+ mockCreateDefaultSettings.mockResolvedValue(undefined);
61
88
  mockCommandExists.mockReturnValue(true);
62
89
  mockIsGhAuthenticated.mockReturnValue(true);
63
90
  });
@@ -131,8 +158,17 @@ describe("init command", () => {
131
158
  expect(mockEnsureDir).toHaveBeenCalledWith(".claude/skills");
132
159
  expect(mockEnsureDir).toHaveBeenCalledWith(".claude/hooks");
133
160
  expect(mockEnsureDir).toHaveBeenCalledWith(".claude/memory");
161
+ expect(mockEnsureDir).toHaveBeenCalledWith(".claude/.sequant");
162
+ expect(mockEnsureDir).toHaveBeenCalledWith(".sequant/logs");
134
163
  expect(mockEnsureDir).toHaveBeenCalledWith("scripts/dev");
135
- expect(mockCopyTemplates).toHaveBeenCalledWith("nextjs");
164
+ expect(mockCreateDefaultSettings).toHaveBeenCalled();
165
+ expect(mockSaveConfig).toHaveBeenCalledWith(expect.objectContaining({
166
+ tokens: { DEV_URL: "http://localhost:3000" },
167
+ stack: "nextjs",
168
+ }));
169
+ expect(mockCopyTemplates).toHaveBeenCalledWith("nextjs", {
170
+ DEV_URL: "http://localhost:3000",
171
+ });
136
172
  expect(mockCreateManifest).toHaveBeenCalledWith("nextjs");
137
173
  const output = consoleLogSpy.mock.calls.map((c) => c[0]).join("\n");
138
174
  expect(output).toContain("Sequant initialized successfully");
@@ -1 +1 @@
1
- {"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../../src/commands/init.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEzE,oBAAoB;AACpB,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;IACnB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;CACnB,CAAC,CAAC,CAAC;AAEJ,cAAc;AACd,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;CACrB,CAAC,CAAC,CAAC;AAEJ,iBAAiB;AACjB,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;CACvB,CAAC,CAAC,CAAC;AAEJ,gBAAgB;AAChB,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;CACxB,CAAC,CAAC,CAAC;AAEJ,wBAAwB;AACxB,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;IACtB,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC1B,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE;QACpC,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,iBAAiB,CAAC;QAC3C,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,iBAAiB,CAAC;QAC3C,OAAO,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,gBAAgB;AAChB,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IACzB,OAAO,EAAE;QACP,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;KAChB;CACF,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEpE,MAAM,cAAc,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC7C,MAAM,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3C,MAAM,eAAe,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/C,MAAM,iBAAiB,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACnD,MAAM,kBAAkB,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACrD,MAAM,iBAAiB,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACnD,MAAM,qBAAqB,GAAG,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE3D,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,aAA0C,CAAC;IAE/C,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,aAAa,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEtE,8CAA8C;QAC9C,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACxC,aAAa,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC3C,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxC,iBAAiB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC/C,kBAAkB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAChD,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxC,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,CAAC,WAAW,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACxC,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE5C,MAAM,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAEnD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;YACpE,qBAAqB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAE7C,MAAM,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAEnD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACxC,qBAAqB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAE7C,MAAM,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAEnD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;YACpE,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE5C,MAAM,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAEnD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;YAC/D,6DAA6D;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACzC,qBAAqB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAE7C,MAAM,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAEnD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;YAEpE,MAAM,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAEnD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,4DAA4D;YAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACxC,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE5C,MAAM,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YAElD,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;YAC7D,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YAC5D,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;YAC7D,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;YAC1D,MAAM,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAE1D,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;gBACvD,OAAO,IAAI,KAAK,uBAAuB,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACxC,qBAAqB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAE5C,MAAM,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAEnD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../../src/commands/init.test.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ interface RunOptions {
11
11
  verbose?: boolean;
12
12
  timeout?: number;
13
13
  logJson?: boolean;
14
+ noLog?: boolean;
14
15
  logPath?: string;
15
16
  qualityLoop?: boolean;
16
17
  maxIterations?: number;
@@ -18,6 +19,7 @@ interface RunOptions {
18
19
  smartTests?: boolean;
19
20
  noSmartTests?: boolean;
20
21
  testgen?: boolean;
22
+ autoDetectPhases?: boolean;
21
23
  }
22
24
  /**
23
25
  * Main run command
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwCH,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA2SD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC,CA6Pf"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAyJH,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAiTD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC,IAAI,CAAC,CA8Rf"}
@@ -8,6 +8,7 @@ import chalk from "chalk";
8
8
  import { spawnSync } from "child_process";
9
9
  import { query } from "@anthropic-ai/claude-agent-sdk";
10
10
  import { getManifest } from "../lib/manifest.js";
11
+ import { getSettings } from "../lib/settings.js";
11
12
  import { LogWriter, createPhaseLogFromTiming, } from "../lib/workflow/log-writer.js";
12
13
  import { DEFAULT_PHASES, DEFAULT_CONFIG, } from "../lib/workflow/types.js";
13
14
  /**
@@ -26,6 +27,84 @@ const PHASE_PROMPTS = {
26
27
  * UI-related labels that trigger automatic test phase
27
28
  */
28
29
  const UI_LABELS = ["ui", "frontend", "admin", "web", "browser"];
30
+ /**
31
+ * Bug-related labels that skip spec phase
32
+ */
33
+ const BUG_LABELS = ["bug", "fix", "hotfix", "patch"];
34
+ /**
35
+ * Documentation labels that skip spec phase
36
+ */
37
+ const DOCS_LABELS = ["docs", "documentation", "readme"];
38
+ /**
39
+ * Complex labels that enable quality loop
40
+ */
41
+ const COMPLEX_LABELS = ["complex", "refactor", "breaking", "major"];
42
+ /**
43
+ * Detect phases based on issue labels (like /solve logic)
44
+ */
45
+ function detectPhasesFromLabels(labels) {
46
+ const lowerLabels = labels.map((l) => l.toLowerCase());
47
+ // Check for bug/fix labels → exec → qa (skip spec)
48
+ const isBugFix = lowerLabels.some((label) => BUG_LABELS.some((bugLabel) => label.includes(bugLabel)));
49
+ // Check for docs labels → exec → qa (skip spec)
50
+ const isDocs = lowerLabels.some((label) => DOCS_LABELS.some((docsLabel) => label.includes(docsLabel)));
51
+ // Check for UI labels → add test phase
52
+ const isUI = lowerLabels.some((label) => UI_LABELS.some((uiLabel) => label.includes(uiLabel)));
53
+ // Check for complex labels → enable quality loop
54
+ const isComplex = lowerLabels.some((label) => COMPLEX_LABELS.some((complexLabel) => label.includes(complexLabel)));
55
+ // Build phase list
56
+ let phases;
57
+ if (isBugFix || isDocs) {
58
+ // Simple workflow: exec → qa
59
+ phases = ["exec", "qa"];
60
+ }
61
+ else if (isUI) {
62
+ // UI workflow: spec → exec → test → qa
63
+ phases = ["spec", "exec", "test", "qa"];
64
+ }
65
+ else {
66
+ // Standard workflow: spec → exec → qa
67
+ phases = ["spec", "exec", "qa"];
68
+ }
69
+ return { phases, qualityLoop: isComplex };
70
+ }
71
+ /**
72
+ * Parse recommended workflow from /spec output
73
+ *
74
+ * Looks for:
75
+ * ## Recommended Workflow
76
+ * **Phases:** exec → qa
77
+ * **Quality Loop:** enabled|disabled
78
+ */
79
+ function parseRecommendedWorkflow(output) {
80
+ // Find the Recommended Workflow section
81
+ const workflowMatch = output.match(/## Recommended Workflow[\s\S]*?\*\*Phases:\*\*\s*([^\n]+)/i);
82
+ if (!workflowMatch) {
83
+ return null;
84
+ }
85
+ // Parse phases from "exec → qa" or "spec → exec → test → qa" format
86
+ const phasesStr = workflowMatch[1].trim();
87
+ const phaseNames = phasesStr
88
+ .split(/\s*→\s*|\s*->\s*|\s*,\s*/)
89
+ .map((p) => p.trim().toLowerCase())
90
+ .filter((p) => p.length > 0);
91
+ // Validate and convert to Phase type
92
+ const validPhases = [];
93
+ for (const name of phaseNames) {
94
+ if (["spec", "testgen", "exec", "test", "qa", "loop"].includes(name)) {
95
+ validPhases.push(name);
96
+ }
97
+ }
98
+ if (validPhases.length === 0) {
99
+ return null;
100
+ }
101
+ // Parse quality loop setting
102
+ const qualityLoopMatch = output.match(/\*\*Quality Loop:\*\*\s*(enabled|disabled|true|false|yes|no)/i);
103
+ const qualityLoop = qualityLoopMatch
104
+ ? ["enabled", "true", "yes"].includes(qualityLoopMatch[1].toLowerCase())
105
+ : false;
106
+ return { phases: validPhases, qualityLoop };
107
+ }
29
108
  /**
30
109
  * Format duration in human-readable format
31
110
  */
@@ -72,6 +151,7 @@ async function executePhase(issueNumber, phase, config, sessionId) {
72
151
  let resultSessionId;
73
152
  let resultMessage;
74
153
  let lastError;
154
+ let capturedOutput = "";
75
155
  // Execute using Claude Agent SDK
76
156
  const queryInstance = query({
77
157
  prompt,
@@ -101,8 +181,8 @@ async function executePhase(issueNumber, phase, config, sessionId) {
101
181
  if (message.type === "system" && message.subtype === "init") {
102
182
  resultSessionId = message.session_id;
103
183
  }
104
- // Show streaming output in verbose mode
105
- if (config.verbose && message.type === "assistant") {
184
+ // Capture output from assistant messages
185
+ if (message.type === "assistant") {
106
186
  // Extract text content from the message
107
187
  const content = message.message.content;
108
188
  const textContent = content
@@ -110,7 +190,11 @@ async function executePhase(issueNumber, phase, config, sessionId) {
110
190
  .map((c) => c.text)
111
191
  .join("");
112
192
  if (textContent) {
113
- process.stdout.write(chalk.gray(textContent));
193
+ capturedOutput += textContent;
194
+ // Show streaming output in verbose mode
195
+ if (config.verbose) {
196
+ process.stdout.write(chalk.gray(textContent));
197
+ }
114
198
  }
115
199
  }
116
200
  // Capture the final result
@@ -128,6 +212,7 @@ async function executePhase(issueNumber, phase, config, sessionId) {
128
212
  success: true,
129
213
  durationSeconds,
130
214
  sessionId: resultSessionId,
215
+ output: capturedOutput,
131
216
  };
132
217
  }
133
218
  else {
@@ -278,16 +363,34 @@ function parseBatches(batchArgs) {
278
363
  * Main run command
279
364
  */
280
365
  export async function runCommand(issues, options) {
281
- console.log(chalk.blue("\nšŸš€ Sequant Workflow Execution\n"));
366
+ console.log(chalk.blue("\n🌐 Sequant Workflow Execution\n"));
282
367
  // Check if initialized
283
368
  const manifest = await getManifest();
284
369
  if (!manifest) {
285
370
  console.log(chalk.red("āŒ Sequant is not initialized. Run `sequant init` first."));
286
371
  return;
287
372
  }
288
- // Merge environment config with CLI options
373
+ // Load settings and merge with environment config and CLI options
374
+ const settings = await getSettings();
289
375
  const envConfig = getEnvConfig();
290
- const mergedOptions = { ...envConfig, ...options };
376
+ // Settings provide defaults, env overrides settings, CLI overrides all
377
+ // Note: phases are auto-detected per-issue unless --phases is explicitly set
378
+ const mergedOptions = {
379
+ // Settings defaults (phases removed - now auto-detected)
380
+ sequential: options.sequential ?? settings.run.sequential,
381
+ timeout: options.timeout ?? settings.run.timeout,
382
+ logPath: options.logPath ?? settings.run.logPath,
383
+ qualityLoop: options.qualityLoop ?? settings.run.qualityLoop,
384
+ maxIterations: options.maxIterations ?? settings.run.maxIterations,
385
+ noSmartTests: options.noSmartTests ?? !settings.run.smartTests,
386
+ // Env overrides
387
+ ...envConfig,
388
+ // CLI explicit options override all
389
+ ...options,
390
+ };
391
+ // Determine if we should auto-detect phases from labels
392
+ const autoDetectPhases = !options.phases && settings.run.autoDetectPhases;
393
+ mergedOptions.autoDetectPhases = autoDetectPhases;
291
394
  // Parse issue numbers (or use batch mode)
292
395
  let issueNumbers;
293
396
  let batches = null;
@@ -307,11 +410,13 @@ export async function runCommand(issues, options) {
307
410
  return;
308
411
  }
309
412
  // Build config
413
+ // Note: config.phases is only used when --phases is explicitly set or autoDetect fails
414
+ const explicitPhases = mergedOptions.phases
415
+ ? mergedOptions.phases.split(",").map((p) => p.trim())
416
+ : null;
310
417
  const config = {
311
418
  ...DEFAULT_CONFIG,
312
- phases: mergedOptions.phases
313
- ? mergedOptions.phases.split(",").map((p) => p.trim())
314
- : DEFAULT_PHASES,
419
+ phases: explicitPhases ?? DEFAULT_PHASES,
315
420
  sequential: mergedOptions.sequential ?? false,
316
421
  dryRun: mergedOptions.dryRun ?? false,
317
422
  verbose: mergedOptions.verbose ?? false,
@@ -321,8 +426,12 @@ export async function runCommand(issues, options) {
321
426
  noSmartTests: mergedOptions.noSmartTests ?? false,
322
427
  };
323
428
  // Initialize log writer if JSON logging enabled
429
+ // Default: enabled via settings (logJson: true), can be disabled with --no-log
324
430
  let logWriter = null;
325
- if (mergedOptions.logJson && !config.dryRun) {
431
+ const shouldLog = !mergedOptions.noLog &&
432
+ !config.dryRun &&
433
+ (mergedOptions.logJson ?? settings.run.logJson);
434
+ if (shouldLog) {
326
435
  const runConfig = {
327
436
  phases: config.phases,
328
437
  sequential: config.sequential,
@@ -330,14 +439,19 @@ export async function runCommand(issues, options) {
330
439
  maxIterations: config.maxIterations,
331
440
  };
332
441
  logWriter = new LogWriter({
333
- logPath: mergedOptions.logPath,
442
+ logPath: mergedOptions.logPath ?? settings.run.logPath,
334
443
  verbose: config.verbose,
335
444
  });
336
445
  await logWriter.initialize(runConfig);
337
446
  }
338
447
  // Display configuration
339
448
  console.log(chalk.gray(` Stack: ${manifest.stack}`));
340
- console.log(chalk.gray(` Phases: ${config.phases.join(" → ")}`));
449
+ if (autoDetectPhases) {
450
+ console.log(chalk.gray(` Phases: auto-detect from labels`));
451
+ }
452
+ else {
453
+ console.log(chalk.gray(` Phases: ${config.phases.join(" → ")}`));
454
+ }
341
455
  console.log(chalk.gray(` Mode: ${config.sequential ? "sequential" : "parallel"}`));
342
456
  if (config.qualityLoop) {
343
457
  console.log(chalk.gray(` Quality loop: enabled (max ${config.maxIterations} iterations)`));
@@ -476,15 +590,102 @@ async function runIssueWithLogging(issueNumber, config, logWriter, labels, optio
476
590
  let sessionId;
477
591
  console.log(chalk.blue(`\n Issue #${issueNumber}`));
478
592
  // Determine phases for this specific issue
479
- const phases = determinePhasesForIssue(config.phases, labels, options);
480
- if (phases.length !== config.phases.length) {
481
- console.log(chalk.gray(` Phases adjusted: ${phases.join(" → ")}`));
593
+ let phases;
594
+ let detectedQualityLoop = false;
595
+ let specAlreadyRan = false;
596
+ if (options.autoDetectPhases) {
597
+ // Check if labels indicate a simple bug/fix (skip spec entirely)
598
+ const lowerLabels = labels.map((l) => l.toLowerCase());
599
+ const isSimpleBugFix = lowerLabels.some((label) => BUG_LABELS.some((bugLabel) => label.includes(bugLabel)));
600
+ if (isSimpleBugFix) {
601
+ // Simple bug fix: skip spec, go straight to exec → qa
602
+ phases = ["exec", "qa"];
603
+ console.log(chalk.gray(` Bug fix detected: ${phases.join(" → ")}`));
604
+ }
605
+ else {
606
+ // Run spec first to get recommended workflow
607
+ console.log(chalk.gray(` Running spec to determine workflow...`));
608
+ console.log(chalk.gray(` ā³ spec...`));
609
+ const specStartTime = new Date();
610
+ const specResult = await executePhase(issueNumber, "spec", config, sessionId);
611
+ const specEndTime = new Date();
612
+ if (specResult.sessionId) {
613
+ sessionId = specResult.sessionId;
614
+ }
615
+ phaseResults.push(specResult);
616
+ specAlreadyRan = true;
617
+ // Log spec phase result
618
+ if (logWriter) {
619
+ const phaseLog = createPhaseLogFromTiming("spec", issueNumber, specStartTime, specEndTime, specResult.success
620
+ ? "success"
621
+ : specResult.error?.includes("Timeout")
622
+ ? "timeout"
623
+ : "failure", { error: specResult.error });
624
+ logWriter.logPhase(phaseLog);
625
+ }
626
+ if (!specResult.success) {
627
+ console.log(chalk.red(` āœ— spec: ${specResult.error}`));
628
+ const durationSeconds = (Date.now() - startTime) / 1000;
629
+ return {
630
+ issueNumber,
631
+ success: false,
632
+ phaseResults,
633
+ durationSeconds,
634
+ loopTriggered: false,
635
+ };
636
+ }
637
+ const duration = specResult.durationSeconds
638
+ ? ` (${formatDuration(specResult.durationSeconds)})`
639
+ : "";
640
+ console.log(chalk.green(` āœ“ spec${duration}`));
641
+ // Parse recommended workflow from spec output
642
+ let parsedWorkflow = specResult.output
643
+ ? parseRecommendedWorkflow(specResult.output)
644
+ : null;
645
+ if (parsedWorkflow) {
646
+ // Remove spec from phases since we already ran it
647
+ phases = parsedWorkflow.phases.filter((p) => p !== "spec");
648
+ detectedQualityLoop = parsedWorkflow.qualityLoop;
649
+ console.log(chalk.gray(` Spec recommends: ${phases.join(" → ")}${detectedQualityLoop ? " (quality loop)" : ""}`));
650
+ }
651
+ else {
652
+ // Fall back to label-based detection
653
+ console.log(chalk.yellow(` Could not parse spec recommendation, using label-based detection`));
654
+ const detected = detectPhasesFromLabels(labels);
655
+ phases = detected.phases.filter((p) => p !== "spec");
656
+ detectedQualityLoop = detected.qualityLoop;
657
+ console.log(chalk.gray(` Fallback: ${phases.join(" → ")}`));
658
+ }
659
+ }
660
+ }
661
+ else {
662
+ // Use explicit phases with adjustments
663
+ phases = determinePhasesForIssue(config.phases, labels, options);
664
+ if (phases.length !== config.phases.length) {
665
+ console.log(chalk.gray(` Phases adjusted: ${phases.join(" → ")}`));
666
+ }
667
+ }
668
+ // Add testgen phase if requested (and spec was in the phases)
669
+ if (options.testgen &&
670
+ (phases.includes("spec") || specAlreadyRan) &&
671
+ !phases.includes("testgen")) {
672
+ // Insert testgen at the beginning if spec already ran, otherwise after spec
673
+ if (specAlreadyRan) {
674
+ phases.unshift("testgen");
675
+ }
676
+ else {
677
+ const specIndex = phases.indexOf("spec");
678
+ if (specIndex !== -1) {
679
+ phases.splice(specIndex + 1, 0, "testgen");
680
+ }
681
+ }
482
682
  }
483
683
  let iteration = 0;
484
- const maxIterations = config.qualityLoop ? config.maxIterations : 1;
684
+ const useQualityLoop = config.qualityLoop || detectedQualityLoop;
685
+ const maxIterations = useQualityLoop ? config.maxIterations : 1;
485
686
  while (iteration < maxIterations) {
486
687
  iteration++;
487
- if (config.qualityLoop && iteration > 1) {
688
+ if (useQualityLoop && iteration > 1) {
488
689
  console.log(chalk.yellow(` Quality loop iteration ${iteration}/${maxIterations}`));
489
690
  loopTriggered = true;
490
691
  }
@@ -518,7 +719,7 @@ async function runIssueWithLogging(issueNumber, config, logWriter, labels, optio
518
719
  console.log(chalk.red(` āœ— ${phase}: ${result.error}`));
519
720
  phasesFailed = true;
520
721
  // If quality loop enabled, run loop phase to fix issues
521
- if (config.qualityLoop && iteration < maxIterations) {
722
+ if (useQualityLoop && iteration < maxIterations) {
522
723
  console.log(chalk.yellow(` Running /loop to fix issues...`));
523
724
  const loopResult = await executePhase(issueNumber, "loop", config, sessionId);
524
725
  phaseResults.push(loopResult);