@blockspool/cli 0.4.0 → 0.4.1

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 (149) hide show
  1. package/package.json +1 -1
  2. package/dist/bin/blockspool.d.ts +0 -16
  3. package/dist/bin/blockspool.d.ts.map +0 -1
  4. package/dist/bin/blockspool.js +0 -45
  5. package/dist/bin/blockspool.js.map +0 -1
  6. package/dist/commands/solo-auto.d.ts +0 -6
  7. package/dist/commands/solo-auto.d.ts.map +0 -1
  8. package/dist/commands/solo-auto.js +0 -418
  9. package/dist/commands/solo-auto.js.map +0 -1
  10. package/dist/commands/solo-exec.d.ts +0 -6
  11. package/dist/commands/solo-exec.d.ts.map +0 -1
  12. package/dist/commands/solo-exec.js +0 -656
  13. package/dist/commands/solo-exec.js.map +0 -1
  14. package/dist/commands/solo-inspect.d.ts +0 -6
  15. package/dist/commands/solo-inspect.d.ts.map +0 -1
  16. package/dist/commands/solo-inspect.js +0 -690
  17. package/dist/commands/solo-inspect.js.map +0 -1
  18. package/dist/commands/solo-lifecycle.d.ts +0 -6
  19. package/dist/commands/solo-lifecycle.d.ts.map +0 -1
  20. package/dist/commands/solo-lifecycle.js +0 -188
  21. package/dist/commands/solo-lifecycle.js.map +0 -1
  22. package/dist/commands/solo-nudge.d.ts +0 -6
  23. package/dist/commands/solo-nudge.d.ts.map +0 -1
  24. package/dist/commands/solo-nudge.js +0 -49
  25. package/dist/commands/solo-nudge.js.map +0 -1
  26. package/dist/commands/solo-qa.d.ts +0 -6
  27. package/dist/commands/solo-qa.d.ts.map +0 -1
  28. package/dist/commands/solo-qa.js +0 -254
  29. package/dist/commands/solo-qa.js.map +0 -1
  30. package/dist/commands/solo.d.ts +0 -11
  31. package/dist/commands/solo.d.ts.map +0 -1
  32. package/dist/commands/solo.js +0 -43
  33. package/dist/commands/solo.js.map +0 -1
  34. package/dist/index.d.ts +0 -18
  35. package/dist/index.d.ts.map +0 -1
  36. package/dist/index.js +0 -18
  37. package/dist/index.js.map +0 -1
  38. package/dist/lib/artifacts.d.ts +0 -136
  39. package/dist/lib/artifacts.d.ts.map +0 -1
  40. package/dist/lib/artifacts.js +0 -146
  41. package/dist/lib/artifacts.js.map +0 -1
  42. package/dist/lib/doctor.d.ts +0 -45
  43. package/dist/lib/doctor.d.ts.map +0 -1
  44. package/dist/lib/doctor.js +0 -383
  45. package/dist/lib/doctor.js.map +0 -1
  46. package/dist/lib/exec.d.ts +0 -24
  47. package/dist/lib/exec.d.ts.map +0 -1
  48. package/dist/lib/exec.js +0 -295
  49. package/dist/lib/exec.js.map +0 -1
  50. package/dist/lib/formulas.d.ts +0 -78
  51. package/dist/lib/formulas.d.ts.map +0 -1
  52. package/dist/lib/formulas.js +0 -295
  53. package/dist/lib/formulas.js.map +0 -1
  54. package/dist/lib/git.d.ts +0 -9
  55. package/dist/lib/git.d.ts.map +0 -1
  56. package/dist/lib/git.js +0 -60
  57. package/dist/lib/git.js.map +0 -1
  58. package/dist/lib/guidelines.d.ts +0 -43
  59. package/dist/lib/guidelines.d.ts.map +0 -1
  60. package/dist/lib/guidelines.js +0 -195
  61. package/dist/lib/guidelines.js.map +0 -1
  62. package/dist/lib/logger.d.ts +0 -17
  63. package/dist/lib/logger.d.ts.map +0 -1
  64. package/dist/lib/logger.js +0 -42
  65. package/dist/lib/logger.js.map +0 -1
  66. package/dist/lib/retention.d.ts +0 -62
  67. package/dist/lib/retention.d.ts.map +0 -1
  68. package/dist/lib/retention.js +0 -285
  69. package/dist/lib/retention.js.map +0 -1
  70. package/dist/lib/run-history.d.ts +0 -52
  71. package/dist/lib/run-history.d.ts.map +0 -1
  72. package/dist/lib/run-history.js +0 -116
  73. package/dist/lib/run-history.js.map +0 -1
  74. package/dist/lib/run-state.d.ts +0 -58
  75. package/dist/lib/run-state.d.ts.map +0 -1
  76. package/dist/lib/run-state.js +0 -119
  77. package/dist/lib/run-state.js.map +0 -1
  78. package/dist/lib/scope.d.ts +0 -95
  79. package/dist/lib/scope.d.ts.map +0 -1
  80. package/dist/lib/scope.js +0 -291
  81. package/dist/lib/scope.js.map +0 -1
  82. package/dist/lib/selection.d.ts +0 -35
  83. package/dist/lib/selection.d.ts.map +0 -1
  84. package/dist/lib/selection.js +0 -110
  85. package/dist/lib/selection.js.map +0 -1
  86. package/dist/lib/solo-auto.d.ts +0 -87
  87. package/dist/lib/solo-auto.d.ts.map +0 -1
  88. package/dist/lib/solo-auto.js +0 -1230
  89. package/dist/lib/solo-auto.js.map +0 -1
  90. package/dist/lib/solo-ci.d.ts +0 -84
  91. package/dist/lib/solo-ci.d.ts.map +0 -1
  92. package/dist/lib/solo-ci.js +0 -300
  93. package/dist/lib/solo-ci.js.map +0 -1
  94. package/dist/lib/solo-config.d.ts +0 -155
  95. package/dist/lib/solo-config.d.ts.map +0 -1
  96. package/dist/lib/solo-config.js +0 -236
  97. package/dist/lib/solo-config.js.map +0 -1
  98. package/dist/lib/solo-git.d.ts +0 -44
  99. package/dist/lib/solo-git.d.ts.map +0 -1
  100. package/dist/lib/solo-git.js +0 -174
  101. package/dist/lib/solo-git.js.map +0 -1
  102. package/dist/lib/solo-hints.d.ts +0 -32
  103. package/dist/lib/solo-hints.d.ts.map +0 -1
  104. package/dist/lib/solo-hints.js +0 -98
  105. package/dist/lib/solo-hints.js.map +0 -1
  106. package/dist/lib/solo-remote.d.ts +0 -14
  107. package/dist/lib/solo-remote.d.ts.map +0 -1
  108. package/dist/lib/solo-remote.js +0 -48
  109. package/dist/lib/solo-remote.js.map +0 -1
  110. package/dist/lib/solo-stdin.d.ts +0 -13
  111. package/dist/lib/solo-stdin.d.ts.map +0 -1
  112. package/dist/lib/solo-stdin.js +0 -33
  113. package/dist/lib/solo-stdin.js.map +0 -1
  114. package/dist/lib/solo-ticket.d.ts +0 -213
  115. package/dist/lib/solo-ticket.d.ts.map +0 -1
  116. package/dist/lib/solo-ticket.js +0 -850
  117. package/dist/lib/solo-ticket.js.map +0 -1
  118. package/dist/lib/solo-utils.d.ts +0 -133
  119. package/dist/lib/solo-utils.d.ts.map +0 -1
  120. package/dist/lib/solo-utils.js +0 -300
  121. package/dist/lib/solo-utils.js.map +0 -1
  122. package/dist/lib/spindle.d.ts +0 -144
  123. package/dist/lib/spindle.d.ts.map +0 -1
  124. package/dist/lib/spindle.js +0 -388
  125. package/dist/lib/spindle.js.map +0 -1
  126. package/dist/tui/app.d.ts +0 -17
  127. package/dist/tui/app.d.ts.map +0 -1
  128. package/dist/tui/app.js +0 -139
  129. package/dist/tui/app.js.map +0 -1
  130. package/dist/tui/index.d.ts +0 -8
  131. package/dist/tui/index.d.ts.map +0 -1
  132. package/dist/tui/index.js +0 -7
  133. package/dist/tui/index.js.map +0 -1
  134. package/dist/tui/poller.d.ts +0 -42
  135. package/dist/tui/poller.d.ts.map +0 -1
  136. package/dist/tui/poller.js +0 -62
  137. package/dist/tui/poller.js.map +0 -1
  138. package/dist/tui/screens/overview.d.ts +0 -9
  139. package/dist/tui/screens/overview.d.ts.map +0 -1
  140. package/dist/tui/screens/overview.js +0 -189
  141. package/dist/tui/screens/overview.js.map +0 -1
  142. package/dist/tui/state.d.ts +0 -93
  143. package/dist/tui/state.d.ts.map +0 -1
  144. package/dist/tui/state.js +0 -169
  145. package/dist/tui/state.js.map +0 -1
  146. package/dist/tui/types.d.ts +0 -18
  147. package/dist/tui/types.d.ts.map +0 -1
  148. package/dist/tui/types.js +0 -5
  149. package/dist/tui/types.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blockspool/cli",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "BlockSpool CLI - Continuous codebase improvement tool",
5
5
  "author": "BlockSpool",
6
6
  "homepage": "https://blockspool.com",
@@ -1,16 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * BlockSpool CLI entry point
4
- *
5
- * `blockspool` with no subcommand runs auto mode.
6
- * All solo subcommands are available at the top level:
7
- *
8
- * blockspool # auto mode (scout → fix → PR)
9
- * blockspool --codex # Full Codex (no Anthropic key)
10
- * blockspool ci # Fix CI failures
11
- * blockspool scout . # Scan for improvements
12
- * blockspool status # Show local state
13
- * blockspool solo auto # Explicit (backwards compat)
14
- */
15
- export {};
16
- //# sourceMappingURL=blockspool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"blockspool.d.ts","sourceRoot":"","sources":["../../src/bin/blockspool.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG"}
@@ -1,45 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * BlockSpool CLI entry point
4
- *
5
- * `blockspool` with no subcommand runs auto mode.
6
- * All solo subcommands are available at the top level:
7
- *
8
- * blockspool # auto mode (scout → fix → PR)
9
- * blockspool --codex # Full Codex (no Anthropic key)
10
- * blockspool ci # Fix CI failures
11
- * blockspool scout . # Scan for improvements
12
- * blockspool status # Show local state
13
- * blockspool solo auto # Explicit (backwards compat)
14
- */
15
- import { Command } from 'commander';
16
- import { soloCommand } from '../commands/solo.js';
17
- const program = new Command();
18
- program
19
- .name('blockspool')
20
- .description('Continuous codebase improvement tool')
21
- .version('0.2.0');
22
- // `blockspool solo <cmd>` — backwards compat
23
- program.addCommand(soloCommand);
24
- // Detect if argv[2] is a known solo subcommand name — if so, lift it.
25
- // Otherwise, treat everything as flags for `auto`.
26
- const knownSubs = new Set(soloCommand.commands.map(c => c.name()));
27
- const firstArg = process.argv[2];
28
- const isSubcommand = firstArg && knownSubs.has(firstArg) && firstArg !== 'solo';
29
- if (isSubcommand) {
30
- // `blockspool scout .` → delegate to `solo scout .`
31
- // Insert 'solo' so Commander routes correctly
32
- process.argv.splice(2, 0, 'solo');
33
- program.parse();
34
- }
35
- else if (firstArg === 'solo' || firstArg === '--help' || firstArg === '-h' || firstArg === '--version' || firstArg === '-V') {
36
- // Explicit `blockspool solo ...` or help/version
37
- program.parse();
38
- }
39
- else {
40
- // `blockspool [flags...]` → `solo auto [flags...]`
41
- // Insert 'solo auto' before the flags
42
- process.argv.splice(2, 0, 'solo', 'auto');
43
- program.parse();
44
- }
45
- //# sourceMappingURL=blockspool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"blockspool.js","sourceRoot":"","sources":["../../src/bin/blockspool.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,sCAAsC,CAAC;KACnD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,6CAA6C;AAC7C,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAEhC,sEAAsE;AACtE,mDAAmD;AACnD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,MAAM,YAAY,GAAG,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,KAAK,MAAM,CAAC;AAEhF,IAAI,YAAY,EAAE,CAAC;IACjB,oDAAoD;IACpD,8CAA8C;IAC9C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;KAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;IAC9H,iDAAiD;IACjD,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC;KAAM,CAAC;IACN,mDAAmD;IACnD,sCAAsC;IACtC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Solo auto commands: auto (default, ci, work modes)
3
- */
4
- import { Command } from 'commander';
5
- export declare function registerAutoCommands(solo: Command): void;
6
- //# sourceMappingURL=solo-auto.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solo-auto.d.ts","sourceRoot":"","sources":["../../src/commands/solo-auto.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAodxD"}
@@ -1,418 +0,0 @@
1
- /**
2
- * Solo auto commands: auto (default, ci, work modes)
3
- */
4
- import * as path from 'node:path';
5
- import chalk from 'chalk';
6
- import { projects, tickets } from '@blockspool/core/repos';
7
- import { createGitService } from '../lib/git.js';
8
- import { isInitialized, loadConfig, getAdapter, } from '../lib/solo-config.js';
9
- import { soloRunTicket } from '../lib/solo-ticket.js';
10
- import { spawnSyncSafe, getCurrentBranch, getCIStatus, getFailureLogs, parseFailure, extractFailureScope, generateCIFixDescription } from '../lib/solo-ci.js';
11
- import { runAutoMode, runAutoWorkMode } from '../lib/solo-auto.js';
12
- export function registerAutoCommands(solo) {
13
- /**
14
- * solo auto - Automated improvement workflow
15
- */
16
- solo
17
- .command('auto [mode]')
18
- .description('Scout, fix, and create PRs automatically')
19
- .addHelpText('after', `
20
- Modes:
21
- (default) Scout → auto-approve safe changes → run → create draft PRs
22
- ci Fix CI failures automatically
23
- work Process existing ready tickets
24
-
25
- The default mode is the full "just run it" experience:
26
- 1. Scouts your codebase for improvements
27
- 2. Auto-approves low-risk changes (refactor, tests, docs)
28
- 3. Runs tickets one at a time with QA verification
29
- 4. Creates draft PRs for review
30
- 5. Stops after reaching PR limit (default: 3)
31
-
32
- Trust Ladder (use --aggressive for more):
33
- Default: refactor, test, docs, types, perf (safe categories only)
34
- Aggressive: + security fixes (still excludes deps, migrations)
35
-
36
- Backend Lanes:
37
- --claude (default): scout + execute with Claude (ANTHROPIC_API_KEY)
38
- --codex: scout + execute with Codex (CODEX_API_KEY or codex login)
39
- Hybrid: --scout-backend codex (CODEX_API_KEY + ANTHROPIC_API_KEY)
40
-
41
- Examples:
42
- blockspool # Scout + fix + PR (Claude, default)
43
- blockspool --codex # Full Codex mode (no Anthropic key)
44
- blockspool --codex --hours 4 # Codex overnight run
45
- blockspool --dry-run # Show what would be done
46
- blockspool --scope src/api # Scout specific directory
47
- blockspool --formula security-audit # Run a predefined formula
48
- blockspool --scout-backend codex # Hybrid: Codex scouts, Claude executes
49
- blockspool ci # Fix failing CI
50
- blockspool work # Process existing tickets
51
- `)
52
- .option('--dry-run', 'Show what would be done without making changes')
53
- .option('--scope <path>', 'Directory to scout (default: src, rotates in continuous mode)')
54
- .option('--max-prs <n>', 'Maximum PRs to create (default: 3, or 20 in continuous mode)')
55
- .option('--min-confidence <n>', 'Minimum confidence for auto-approve (default: 70)')
56
- .option('--aggressive', 'Include more categories (security fixes, etc.)')
57
- .option('--no-draft', 'Create regular PRs instead of drafts')
58
- .option('--yes', 'Skip confirmation prompt')
59
- .option('--minutes <n>', 'Run for N minutes (enables continuous mode)')
60
- .option('--hours <n>', 'Run for N hours (enables continuous mode)')
61
- .option('--cycles <n>', 'Number of scout→execute cycles (default: 1)')
62
- .option('--continuous', 'Run continuously until stopped or PR limit reached')
63
- .option('-v, --verbose', 'Show detailed output')
64
- .option('--branch <name>', 'Target branch (default: current)')
65
- .option('--parallel <n>', 'Number of tickets to run concurrently (default: 3)', '3')
66
- .option('--formula <name>', 'Use a predefined formula (e.g., security-audit, test-coverage, cleanup, deep)')
67
- .option('--deep', 'Deep architectural review (shortcut for --formula deep)')
68
- .option('--eco', 'Use sonnet model for scouting (cheaper, faster, less thorough)')
69
- .option('--batch-size <n>', 'Milestone mode: merge N tickets into one PR (default: off)')
70
- .option('--codex', 'Use Codex for both scouting and execution (no Anthropic key needed)')
71
- .option('--claude', 'Use Claude for both scouting and execution (default)')
72
- .option('--scout-backend <name>', 'LLM for scouting: claude | codex (default: claude)')
73
- .option('--execute-backend <name>', 'LLM for execution: claude | codex (default: claude)')
74
- .option('--codex-model <model>', 'Model for Codex backend (default: codex-mini)')
75
- .option('--codex-unsafe-full-access', 'Use --dangerously-bypass-approvals-and-sandbox for Codex execution (requires isolated runner)')
76
- .option('--include-claude-md', 'Allow the scout to propose changes to CLAUDE.md and .claude/ (excluded by default)')
77
- .option('--no-docs-audit', 'Disable automatic docs-audit cycles')
78
- .option('--docs-audit-interval <n>', 'Run docs-audit every N cycles (default: 3)')
79
- .action(async (mode, options) => {
80
- if (options.deep && !options.formula) {
81
- options.formula = 'deep';
82
- }
83
- // --codex / --claude shorthands expand to both backends
84
- if (options.codex && options.claude) {
85
- console.error(chalk.red('✗ Cannot use --codex and --claude together'));
86
- process.exit(1);
87
- }
88
- if (options.codex) {
89
- options.scoutBackend = options.scoutBackend ?? 'codex';
90
- options.executeBackend = options.executeBackend ?? 'codex';
91
- }
92
- const scoutBackendName = options.scoutBackend ?? 'claude';
93
- const executeBackendName = options.executeBackend ?? 'claude';
94
- const needsClaude = scoutBackendName === 'claude' || executeBackendName === 'claude';
95
- const needsCodex = scoutBackendName === 'codex' || executeBackendName === 'codex';
96
- const insideClaudeCode = process.env.CLAUDECODE === '1';
97
- // Validate backend names
98
- for (const [flag, value] of [['--scout-backend', scoutBackendName], ['--execute-backend', executeBackendName]]) {
99
- if (value !== 'claude' && value !== 'codex') {
100
- console.error(chalk.red(`✗ Invalid ${flag}: ${value}`));
101
- console.error(chalk.gray(' Valid values: claude, codex'));
102
- process.exit(1);
103
- }
104
- }
105
- // Detect running inside Claude Code session
106
- if (insideClaudeCode) {
107
- if (needsClaude) {
108
- // Block: spawning `claude -p` inside Claude Code either fails (no key)
109
- // or double-charges (subscription + API).
110
- console.error(chalk.red('✗ Cannot run Claude backend inside Claude Code'));
111
- console.error();
112
- console.error(chalk.gray(' The CLI spawns Claude as subprocesses (requires ANTHROPIC_API_KEY).'));
113
- console.error(chalk.gray(' Inside Claude Code, use the plugin instead:'));
114
- console.error();
115
- console.error(chalk.white(' /blockspool:run'));
116
- console.error();
117
- console.error(chalk.gray(' Or run from a regular terminal:'));
118
- console.error();
119
- console.error(chalk.white(' blockspool # Claude (needs ANTHROPIC_API_KEY)'));
120
- console.error(chalk.white(' blockspool --codex # Codex (needs CODEX_API_KEY)'));
121
- console.error();
122
- process.exit(1);
123
- }
124
- else {
125
- // Codex backend inside Claude Code — technically works but wasteful.
126
- // The outer Claude Code session is running (and billing) while Codex
127
- // does all the work. Better to run from a regular terminal.
128
- console.log(chalk.yellow('⚠ Running inside Claude Code session'));
129
- console.log(chalk.yellow(' This works, but you\'re paying for an idle Claude Code session.'));
130
- console.log(chalk.yellow(' Consider running from a regular terminal instead:'));
131
- console.log(chalk.white(' blockspool --codex'));
132
- console.log();
133
- }
134
- }
135
- // Auth: Claude lane
136
- if (needsClaude && !process.env.ANTHROPIC_API_KEY) {
137
- console.error(chalk.red('✗ ANTHROPIC_API_KEY not set'));
138
- console.error(chalk.gray(' Required for Claude backend. Set the env var, or use:'));
139
- console.error(chalk.gray(' blockspool --codex (uses CODEX_API_KEY or codex login)'));
140
- console.error(chalk.gray(' /blockspool:run (inside Claude Code, uses subscription)'));
141
- process.exit(1);
142
- }
143
- // Auth: Codex lane
144
- if (needsCodex) {
145
- if (process.env.CODEX_API_KEY) {
146
- // Good — env var present
147
- }
148
- else {
149
- const { spawnSync } = await import('node:child_process');
150
- const loginCheck = spawnSync('codex', ['login', 'status'], { encoding: 'utf-8', timeout: 10000 });
151
- if (loginCheck.status !== 0) {
152
- console.error(chalk.red('✗ Codex not authenticated'));
153
- console.error(chalk.gray(' Set CODEX_API_KEY or run: codex login'));
154
- process.exit(1);
155
- }
156
- }
157
- }
158
- // Model selection for Codex
159
- if (needsCodex && !options.codexModel) {
160
- const CODEX_MODELS = [
161
- { key: '1', name: 'gpt-5.2-codex', desc: 'Latest (default reasoning)' },
162
- { key: '2', name: 'gpt-5.2-codex-high', desc: 'High reasoning effort' },
163
- { key: '3', name: 'gpt-5.2-codex-xhigh', desc: 'Max reasoning effort' },
164
- { key: '4', name: 'gpt-5.2', desc: 'General-purpose (default reasoning)' },
165
- { key: '5', name: 'gpt-5.2-high', desc: 'General-purpose, high reasoning' },
166
- { key: '6', name: 'gpt-5.2-xhigh', desc: 'General-purpose, max reasoning' },
167
- { key: '7', name: 'gpt-5.1-codex-mini', desc: 'Fast, cost-effective' },
168
- { key: '8', name: 'gpt-5.1-codex-max', desc: 'Extended agentic tasks' },
169
- ];
170
- console.log(chalk.white('\nSelect Codex model:'));
171
- for (const m of CODEX_MODELS) {
172
- console.log(chalk.gray(` ${m.key}) ${m.name} — ${m.desc}`));
173
- }
174
- const readline = await import('readline');
175
- const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
176
- const answer = await new Promise((resolve) => {
177
- rl.question(chalk.white('Choice [1]: '), (a) => { rl.close(); resolve(a.trim() || '1'); });
178
- });
179
- const picked = CODEX_MODELS.find(m => m.key === answer || m.name === answer);
180
- options.codexModel = picked?.name ?? answer;
181
- console.log(chalk.gray(`Model: ${options.codexModel}`));
182
- console.log();
183
- }
184
- // Print auth summary
185
- if (scoutBackendName === executeBackendName) {
186
- const authSource = scoutBackendName === 'claude'
187
- ? 'ANTHROPIC_API_KEY (env)'
188
- : (process.env.CODEX_API_KEY ? 'CODEX_API_KEY (env)' : 'codex login');
189
- console.log(chalk.gray(`Auth: ${authSource}`));
190
- }
191
- else {
192
- const scoutAuth = scoutBackendName === 'claude'
193
- ? 'ANTHROPIC_API_KEY (env)'
194
- : (process.env.CODEX_API_KEY ? 'CODEX_API_KEY (env)' : 'codex login');
195
- const execAuth = executeBackendName === 'claude'
196
- ? 'ANTHROPIC_API_KEY (env)'
197
- : (process.env.CODEX_API_KEY ? 'CODEX_API_KEY (env)' : 'codex login');
198
- console.log(chalk.gray(`Auth (scout): ${scoutAuth}`));
199
- console.log(chalk.gray(`Auth (execute): ${execAuth}`));
200
- }
201
- // Warn about unsafe flag
202
- if (options.codexUnsafeFullAccess) {
203
- if (executeBackendName !== 'codex') {
204
- console.error(chalk.red('✗ --codex-unsafe-full-access only applies with --execute-backend codex'));
205
- process.exit(1);
206
- }
207
- console.log(chalk.yellow('⚠ --codex-unsafe-full-access: sandbox disabled for Codex execution'));
208
- console.log(chalk.yellow(' Only use this inside an externally hardened/isolated runner'));
209
- }
210
- // Periodic billing reminder
211
- try {
212
- const { getBillingReminder } = await import('../lib/run-history.js');
213
- const git = createGitService();
214
- const root = await git.findRepoRoot(process.cwd());
215
- const reminder = root ? getBillingReminder(root) : null;
216
- if (reminder) {
217
- console.log();
218
- console.log(chalk.yellow(reminder));
219
- console.log();
220
- }
221
- }
222
- catch {
223
- // Non-fatal
224
- }
225
- const effectiveMode = mode || 'auto';
226
- if (effectiveMode !== 'ci' && effectiveMode !== 'work' && effectiveMode !== 'auto') {
227
- console.error(chalk.red(`✗ Unknown auto mode: ${effectiveMode}`));
228
- console.error(chalk.gray(' Available modes: (default), ci, work'));
229
- process.exit(1);
230
- }
231
- if (effectiveMode === 'auto') {
232
- await runAutoMode({
233
- ...options,
234
- formula: options.formula,
235
- batchSize: options.batchSize,
236
- scoutBackend: scoutBackendName,
237
- executeBackend: executeBackendName,
238
- codexModel: options.codexModel,
239
- codexUnsafeFullAccess: options.codexUnsafeFullAccess,
240
- });
241
- return;
242
- }
243
- if (effectiveMode === 'work') {
244
- await runAutoWorkMode({
245
- dryRun: options.dryRun,
246
- pr: true,
247
- verbose: options.verbose,
248
- parallel: options.parallel,
249
- });
250
- return;
251
- }
252
- // CI mode
253
- console.log(chalk.blue('🧵 BlockSpool Auto - CI Fix'));
254
- console.log();
255
- const git = createGitService();
256
- const repoRoot = await git.findRepoRoot(process.cwd());
257
- if (!repoRoot) {
258
- console.error(chalk.red('✗ Not a git repository'));
259
- process.exit(1);
260
- }
261
- if (!isInitialized(repoRoot)) {
262
- console.error(chalk.red('✗ BlockSpool not initialized'));
263
- console.error(chalk.gray(' Run: blockspool solo init'));
264
- process.exit(1);
265
- }
266
- const ghResult = spawnSyncSafe('gh', ['--version']);
267
- if (!ghResult.ok) {
268
- console.error(chalk.red('✗ GitHub CLI (gh) not found'));
269
- console.error(chalk.gray(' Install: https://cli.github.com/'));
270
- process.exit(1);
271
- }
272
- const targetBranch = options.branch || await getCurrentBranch(repoRoot);
273
- console.log(chalk.gray(`Branch: ${targetBranch}`));
274
- console.log(chalk.gray('Checking CI status...'));
275
- const ciStatus = await getCIStatus(repoRoot, targetBranch);
276
- if (ciStatus.status === 'success') {
277
- console.log(chalk.green('✓ CI is passing. Nothing to fix.'));
278
- process.exit(0);
279
- }
280
- if (ciStatus.status === 'pending') {
281
- console.log(chalk.yellow('⏳ CI is still running. Wait for it to complete.'));
282
- process.exit(0);
283
- }
284
- if (ciStatus.status === 'unknown') {
285
- console.log(chalk.yellow('? Could not determine CI status'));
286
- console.log(chalk.gray(' Make sure gh is authenticated and the repo has GitHub Actions'));
287
- process.exit(1);
288
- }
289
- console.log(chalk.red(`✗ CI failed: ${ciStatus.conclusion || 'failure'}`));
290
- console.log();
291
- if (ciStatus.failedJobs.length === 0) {
292
- console.log(chalk.yellow('Could not identify failed jobs'));
293
- console.log(chalk.gray(' Check GitHub Actions manually'));
294
- process.exit(1);
295
- }
296
- console.log(chalk.bold('Failed jobs:'));
297
- for (const job of ciStatus.failedJobs) {
298
- console.log(chalk.red(` • ${job.name}`));
299
- }
300
- console.log();
301
- console.log(chalk.gray('Fetching failure logs...'));
302
- const logs = await getFailureLogs(ciStatus.runId, ciStatus.failedJobs[0].id);
303
- if (!logs) {
304
- console.log(chalk.yellow('Could not fetch failure logs'));
305
- process.exit(1);
306
- }
307
- const failure = parseFailure(logs);
308
- if (!failure) {
309
- console.log(chalk.yellow('Could not parse failure from logs'));
310
- console.log(chalk.gray(' The failure format may not be supported yet'));
311
- if (options.verbose) {
312
- console.log();
313
- console.log(chalk.gray('--- Last 50 lines of logs ---'));
314
- console.log(logs.split('\n').slice(-50).join('\n'));
315
- }
316
- process.exit(1);
317
- }
318
- console.log(chalk.bold('Detected failure:'));
319
- console.log(` Type: ${failure.type}`);
320
- if (failure.framework)
321
- console.log(` Framework: ${failure.framework}`);
322
- console.log(` Message: ${failure.message}`);
323
- if (failure.file)
324
- console.log(` File: ${failure.file}${failure.line ? `:${failure.line}` : ''}`);
325
- console.log();
326
- const scope = extractFailureScope(failure);
327
- console.log(chalk.bold('Affected files:'));
328
- for (const file of scope) {
329
- console.log(chalk.gray(` • ${file}`));
330
- }
331
- console.log();
332
- if (options.dryRun) {
333
- console.log(chalk.yellow('Dry run - no changes made'));
334
- console.log();
335
- console.log(chalk.bold('Would create ticket:'));
336
- console.log(` Title: Fix ${failure.type} failure${failure.file ? ` in ${failure.file}` : ''}`);
337
- console.log(` Scope: ${scope.join(', ')}`);
338
- console.log();
339
- console.log('Run without --dry-run to fix the issue.');
340
- process.exit(0);
341
- }
342
- const adapter = await getAdapter(repoRoot);
343
- const project = await projects.ensureForRepo(adapter, {
344
- name: path.basename(repoRoot),
345
- rootPath: repoRoot,
346
- });
347
- const title = `Fix ${failure.type} failure${failure.file ? ` in ${failure.file}` : ''}`;
348
- const description = generateCIFixDescription(failure, scope, ciStatus);
349
- const ticket = await tickets.create(adapter, {
350
- projectId: project.id,
351
- title,
352
- description,
353
- priority: 1,
354
- allowedPaths: scope.length > 0 ? scope : undefined,
355
- forbiddenPaths: ['node_modules', '.git', 'dist', 'build'],
356
- });
357
- const ciTicketId = ticket.id;
358
- console.log(chalk.green(`✓ Created ticket: ${ciTicketId}`));
359
- console.log(chalk.gray(` Title: ${title}`));
360
- console.log();
361
- console.log(chalk.bold('Running ticket...'));
362
- const config = loadConfig(repoRoot);
363
- const runId = `run_${Date.now().toString(36)}`;
364
- const result = await soloRunTicket({
365
- ticket,
366
- repoRoot,
367
- config,
368
- adapter,
369
- runId,
370
- skipQa: false,
371
- createPr: true,
372
- draftPr: true,
373
- timeoutMs: 600000,
374
- verbose: options.verbose ?? false,
375
- onProgress: (msg) => {
376
- if (options.verbose) {
377
- console.log(chalk.gray(` ${msg}`));
378
- }
379
- },
380
- });
381
- await adapter.close();
382
- console.log();
383
- if (result.success) {
384
- console.log(chalk.green('✓ CI failure fixed!'));
385
- if (result.branchName) {
386
- console.log(chalk.gray(` Branch: ${result.branchName}`));
387
- }
388
- if (result.prUrl) {
389
- console.log(chalk.cyan(` PR: ${result.prUrl}`));
390
- }
391
- console.log();
392
- console.log('Next steps:');
393
- if (!result.prUrl) {
394
- console.log(' • Review the changes on the branch');
395
- console.log(' • Create a PR: blockspool solo run ' + ciTicketId + ' --pr');
396
- }
397
- else {
398
- console.log(' • Review and merge the PR');
399
- }
400
- }
401
- else {
402
- console.log(chalk.red('✗ Could not fix CI failure'));
403
- if (result.error) {
404
- console.log(chalk.gray(` Error: ${result.error}`));
405
- }
406
- if (result.failureReason === 'spindle_abort') {
407
- console.log(chalk.yellow(' Agent stopped by Spindle (loop protection)'));
408
- console.log(chalk.gray(' The issue may be too complex for automated fixing'));
409
- }
410
- console.log();
411
- console.log("Here's what I tried:");
412
- console.log(chalk.gray(` Ticket: ${ciTicketId}`));
413
- console.log(chalk.gray(` View: blockspool solo artifacts --run ${runId}`));
414
- }
415
- process.exit(result.success ? 0 : 1);
416
- });
417
- }
418
- //# sourceMappingURL=solo-auto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solo-auto.js","sourceRoot":"","sources":["../../src/commands/solo-auto.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Solo execution commands: run, retry, pr
3
- */
4
- import { Command } from 'commander';
5
- export declare function registerExecCommands(solo: Command): void;
6
- //# sourceMappingURL=solo-exec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solo-exec.d.ts","sourceRoot":"","sources":["../../src/commands/solo-exec.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAwsBxD"}