@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.
- package/package.json +1 -1
- package/dist/bin/blockspool.d.ts +0 -16
- package/dist/bin/blockspool.d.ts.map +0 -1
- package/dist/bin/blockspool.js +0 -45
- package/dist/bin/blockspool.js.map +0 -1
- package/dist/commands/solo-auto.d.ts +0 -6
- package/dist/commands/solo-auto.d.ts.map +0 -1
- package/dist/commands/solo-auto.js +0 -418
- package/dist/commands/solo-auto.js.map +0 -1
- package/dist/commands/solo-exec.d.ts +0 -6
- package/dist/commands/solo-exec.d.ts.map +0 -1
- package/dist/commands/solo-exec.js +0 -656
- package/dist/commands/solo-exec.js.map +0 -1
- package/dist/commands/solo-inspect.d.ts +0 -6
- package/dist/commands/solo-inspect.d.ts.map +0 -1
- package/dist/commands/solo-inspect.js +0 -690
- package/dist/commands/solo-inspect.js.map +0 -1
- package/dist/commands/solo-lifecycle.d.ts +0 -6
- package/dist/commands/solo-lifecycle.d.ts.map +0 -1
- package/dist/commands/solo-lifecycle.js +0 -188
- package/dist/commands/solo-lifecycle.js.map +0 -1
- package/dist/commands/solo-nudge.d.ts +0 -6
- package/dist/commands/solo-nudge.d.ts.map +0 -1
- package/dist/commands/solo-nudge.js +0 -49
- package/dist/commands/solo-nudge.js.map +0 -1
- package/dist/commands/solo-qa.d.ts +0 -6
- package/dist/commands/solo-qa.d.ts.map +0 -1
- package/dist/commands/solo-qa.js +0 -254
- package/dist/commands/solo-qa.js.map +0 -1
- package/dist/commands/solo.d.ts +0 -11
- package/dist/commands/solo.d.ts.map +0 -1
- package/dist/commands/solo.js +0 -43
- package/dist/commands/solo.js.map +0 -1
- package/dist/index.d.ts +0 -18
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -18
- package/dist/index.js.map +0 -1
- package/dist/lib/artifacts.d.ts +0 -136
- package/dist/lib/artifacts.d.ts.map +0 -1
- package/dist/lib/artifacts.js +0 -146
- package/dist/lib/artifacts.js.map +0 -1
- package/dist/lib/doctor.d.ts +0 -45
- package/dist/lib/doctor.d.ts.map +0 -1
- package/dist/lib/doctor.js +0 -383
- package/dist/lib/doctor.js.map +0 -1
- package/dist/lib/exec.d.ts +0 -24
- package/dist/lib/exec.d.ts.map +0 -1
- package/dist/lib/exec.js +0 -295
- package/dist/lib/exec.js.map +0 -1
- package/dist/lib/formulas.d.ts +0 -78
- package/dist/lib/formulas.d.ts.map +0 -1
- package/dist/lib/formulas.js +0 -295
- package/dist/lib/formulas.js.map +0 -1
- package/dist/lib/git.d.ts +0 -9
- package/dist/lib/git.d.ts.map +0 -1
- package/dist/lib/git.js +0 -60
- package/dist/lib/git.js.map +0 -1
- package/dist/lib/guidelines.d.ts +0 -43
- package/dist/lib/guidelines.d.ts.map +0 -1
- package/dist/lib/guidelines.js +0 -195
- package/dist/lib/guidelines.js.map +0 -1
- package/dist/lib/logger.d.ts +0 -17
- package/dist/lib/logger.d.ts.map +0 -1
- package/dist/lib/logger.js +0 -42
- package/dist/lib/logger.js.map +0 -1
- package/dist/lib/retention.d.ts +0 -62
- package/dist/lib/retention.d.ts.map +0 -1
- package/dist/lib/retention.js +0 -285
- package/dist/lib/retention.js.map +0 -1
- package/dist/lib/run-history.d.ts +0 -52
- package/dist/lib/run-history.d.ts.map +0 -1
- package/dist/lib/run-history.js +0 -116
- package/dist/lib/run-history.js.map +0 -1
- package/dist/lib/run-state.d.ts +0 -58
- package/dist/lib/run-state.d.ts.map +0 -1
- package/dist/lib/run-state.js +0 -119
- package/dist/lib/run-state.js.map +0 -1
- package/dist/lib/scope.d.ts +0 -95
- package/dist/lib/scope.d.ts.map +0 -1
- package/dist/lib/scope.js +0 -291
- package/dist/lib/scope.js.map +0 -1
- package/dist/lib/selection.d.ts +0 -35
- package/dist/lib/selection.d.ts.map +0 -1
- package/dist/lib/selection.js +0 -110
- package/dist/lib/selection.js.map +0 -1
- package/dist/lib/solo-auto.d.ts +0 -87
- package/dist/lib/solo-auto.d.ts.map +0 -1
- package/dist/lib/solo-auto.js +0 -1230
- package/dist/lib/solo-auto.js.map +0 -1
- package/dist/lib/solo-ci.d.ts +0 -84
- package/dist/lib/solo-ci.d.ts.map +0 -1
- package/dist/lib/solo-ci.js +0 -300
- package/dist/lib/solo-ci.js.map +0 -1
- package/dist/lib/solo-config.d.ts +0 -155
- package/dist/lib/solo-config.d.ts.map +0 -1
- package/dist/lib/solo-config.js +0 -236
- package/dist/lib/solo-config.js.map +0 -1
- package/dist/lib/solo-git.d.ts +0 -44
- package/dist/lib/solo-git.d.ts.map +0 -1
- package/dist/lib/solo-git.js +0 -174
- package/dist/lib/solo-git.js.map +0 -1
- package/dist/lib/solo-hints.d.ts +0 -32
- package/dist/lib/solo-hints.d.ts.map +0 -1
- package/dist/lib/solo-hints.js +0 -98
- package/dist/lib/solo-hints.js.map +0 -1
- package/dist/lib/solo-remote.d.ts +0 -14
- package/dist/lib/solo-remote.d.ts.map +0 -1
- package/dist/lib/solo-remote.js +0 -48
- package/dist/lib/solo-remote.js.map +0 -1
- package/dist/lib/solo-stdin.d.ts +0 -13
- package/dist/lib/solo-stdin.d.ts.map +0 -1
- package/dist/lib/solo-stdin.js +0 -33
- package/dist/lib/solo-stdin.js.map +0 -1
- package/dist/lib/solo-ticket.d.ts +0 -213
- package/dist/lib/solo-ticket.d.ts.map +0 -1
- package/dist/lib/solo-ticket.js +0 -850
- package/dist/lib/solo-ticket.js.map +0 -1
- package/dist/lib/solo-utils.d.ts +0 -133
- package/dist/lib/solo-utils.d.ts.map +0 -1
- package/dist/lib/solo-utils.js +0 -300
- package/dist/lib/solo-utils.js.map +0 -1
- package/dist/lib/spindle.d.ts +0 -144
- package/dist/lib/spindle.d.ts.map +0 -1
- package/dist/lib/spindle.js +0 -388
- package/dist/lib/spindle.js.map +0 -1
- package/dist/tui/app.d.ts +0 -17
- package/dist/tui/app.d.ts.map +0 -1
- package/dist/tui/app.js +0 -139
- package/dist/tui/app.js.map +0 -1
- package/dist/tui/index.d.ts +0 -8
- package/dist/tui/index.d.ts.map +0 -1
- package/dist/tui/index.js +0 -7
- package/dist/tui/index.js.map +0 -1
- package/dist/tui/poller.d.ts +0 -42
- package/dist/tui/poller.d.ts.map +0 -1
- package/dist/tui/poller.js +0 -62
- package/dist/tui/poller.js.map +0 -1
- package/dist/tui/screens/overview.d.ts +0 -9
- package/dist/tui/screens/overview.d.ts.map +0 -1
- package/dist/tui/screens/overview.js +0 -189
- package/dist/tui/screens/overview.js.map +0 -1
- package/dist/tui/state.d.ts +0 -93
- package/dist/tui/state.d.ts.map +0 -1
- package/dist/tui/state.js +0 -169
- package/dist/tui/state.js.map +0 -1
- package/dist/tui/types.d.ts +0 -18
- package/dist/tui/types.d.ts.map +0 -1
- package/dist/tui/types.js +0 -5
- package/dist/tui/types.js.map +0 -1
package/package.json
CHANGED
package/dist/bin/blockspool.d.ts
DELETED
|
@@ -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"}
|
package/dist/bin/blockspool.js
DELETED
|
@@ -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 +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 +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"}
|