@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/dist/lib/doctor.js
DELETED
|
@@ -1,383 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Doctor checks for BlockSpool prerequisites
|
|
3
|
-
*
|
|
4
|
-
* Detects missing tools, auth issues, and configuration problems
|
|
5
|
-
* before users hit cryptic errors mid-workflow.
|
|
6
|
-
*/
|
|
7
|
-
import { spawnSync } from 'node:child_process';
|
|
8
|
-
import * as fs from 'node:fs';
|
|
9
|
-
import * as path from 'node:path';
|
|
10
|
-
/**
|
|
11
|
-
* Helper to create CheckResult objects consistently
|
|
12
|
-
*/
|
|
13
|
-
function createCheckResult(name, status, message, options) {
|
|
14
|
-
const result = { name, status, message };
|
|
15
|
-
if (options?.fix)
|
|
16
|
-
result.fix = options.fix;
|
|
17
|
-
if (options?.details)
|
|
18
|
-
result.details = options.details;
|
|
19
|
-
return result;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Run all doctor checks
|
|
23
|
-
*/
|
|
24
|
-
export async function runDoctorChecks(options) {
|
|
25
|
-
const checks = [];
|
|
26
|
-
// 1. Git installed
|
|
27
|
-
checks.push(checkGitInstalled());
|
|
28
|
-
// 2. In a git repo
|
|
29
|
-
checks.push(checkIsGitRepo(options.repoRoot));
|
|
30
|
-
// 3. Node version
|
|
31
|
-
checks.push(checkNodeVersion());
|
|
32
|
-
// 4. Claude CLI installed
|
|
33
|
-
checks.push(checkClaudeInstalled());
|
|
34
|
-
// 5. Claude CLI authenticated
|
|
35
|
-
checks.push(await checkClaudeAuthenticated());
|
|
36
|
-
// 6. gh CLI installed (for --pr)
|
|
37
|
-
checks.push(checkGhInstalled());
|
|
38
|
-
// 7. gh CLI authenticated (for --pr)
|
|
39
|
-
checks.push(await checkGhAuthenticated());
|
|
40
|
-
// 8. .blockspool/ writable
|
|
41
|
-
checks.push(checkBlockspoolWritable(options.repoRoot));
|
|
42
|
-
// 9. Optional: ripgrep for faster scanning
|
|
43
|
-
checks.push(checkRipgrepInstalled());
|
|
44
|
-
// 10. SQLite native module
|
|
45
|
-
checks.push(await checkSqliteModule());
|
|
46
|
-
// Determine capabilities
|
|
47
|
-
const hasGit = checks.find(c => c.name === 'git')?.status === 'pass';
|
|
48
|
-
const isRepo = checks.find(c => c.name === 'git-repo')?.status === 'pass';
|
|
49
|
-
const hasClaude = checks.find(c => c.name === 'claude')?.status === 'pass';
|
|
50
|
-
const claudeAuth = checks.find(c => c.name === 'claude-auth')?.status === 'pass';
|
|
51
|
-
const hasGh = checks.find(c => c.name === 'gh')?.status === 'pass';
|
|
52
|
-
const ghAuth = checks.find(c => c.name === 'gh-auth')?.status === 'pass';
|
|
53
|
-
const writable = checks.find(c => c.name === 'blockspool-dir')?.status !== 'fail';
|
|
54
|
-
const hasSqlite = checks.find(c => c.name === 'sqlite')?.status === 'pass';
|
|
55
|
-
return {
|
|
56
|
-
checks,
|
|
57
|
-
canScout: hasGit && isRepo && writable && hasSqlite,
|
|
58
|
-
canRun: hasGit && isRepo && hasClaude && claudeAuth && writable && hasSqlite,
|
|
59
|
-
canPr: hasGit && isRepo && hasClaude && claudeAuth && hasGh && ghAuth && writable && hasSqlite,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Check: git installed
|
|
64
|
-
*/
|
|
65
|
-
function checkGitInstalled() {
|
|
66
|
-
try {
|
|
67
|
-
const result = spawnSync('git', ['--version'], { encoding: 'utf-8' });
|
|
68
|
-
if (result.status === 0) {
|
|
69
|
-
const version = result.stdout.trim().replace('git version ', '');
|
|
70
|
-
return createCheckResult('git', 'pass', `git found (${version})`);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
// Fall through to fail
|
|
75
|
-
}
|
|
76
|
-
return createCheckResult('git', 'fail', 'git not found', {
|
|
77
|
-
fix: 'Install git: https://git-scm.com/downloads',
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Check: current directory is a git repo
|
|
82
|
-
*/
|
|
83
|
-
function checkIsGitRepo(repoRoot) {
|
|
84
|
-
const cwd = repoRoot ?? process.cwd();
|
|
85
|
-
try {
|
|
86
|
-
const result = spawnSync('git', ['rev-parse', '--git-dir'], {
|
|
87
|
-
cwd,
|
|
88
|
-
encoding: 'utf-8',
|
|
89
|
-
});
|
|
90
|
-
if (result.status === 0) {
|
|
91
|
-
return createCheckResult('git-repo', 'pass', 'Inside a git repository');
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
// Fall through to fail
|
|
96
|
-
}
|
|
97
|
-
return createCheckResult('git-repo', 'fail', 'Not a git repository', {
|
|
98
|
-
fix: 'Run `git init` or cd into an existing repo',
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Check: Node version is supported
|
|
103
|
-
*/
|
|
104
|
-
function checkNodeVersion() {
|
|
105
|
-
const version = process.version;
|
|
106
|
-
const major = parseInt(version.slice(1).split('.')[0], 10);
|
|
107
|
-
// Require Node 18+ for ESM and modern features
|
|
108
|
-
if (major >= 18) {
|
|
109
|
-
return createCheckResult('node', 'pass', `Node ${version} (supported)`);
|
|
110
|
-
}
|
|
111
|
-
if (major >= 16) {
|
|
112
|
-
return createCheckResult('node', 'warn', `Node ${version} (may work, but 18+ recommended)`, {
|
|
113
|
-
fix: 'Upgrade to Node 18+: https://nodejs.org/',
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
return createCheckResult('node', 'fail', `Node ${version} (too old)`, {
|
|
117
|
-
fix: 'Upgrade to Node 18+: https://nodejs.org/',
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Check: Claude CLI installed
|
|
122
|
-
*/
|
|
123
|
-
function checkClaudeInstalled() {
|
|
124
|
-
try {
|
|
125
|
-
const result = spawnSync('claude', ['--version'], {
|
|
126
|
-
encoding: 'utf-8',
|
|
127
|
-
timeout: 5000,
|
|
128
|
-
});
|
|
129
|
-
if (result.status === 0) {
|
|
130
|
-
const version = result.stdout.trim();
|
|
131
|
-
return createCheckResult('claude', 'pass', `Claude CLI found (${version})`);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
// Fall through to fail
|
|
136
|
-
}
|
|
137
|
-
return createCheckResult('claude', 'fail', 'Claude CLI not found', {
|
|
138
|
-
fix: 'Install Claude Code: https://claude.ai/code',
|
|
139
|
-
details: 'Required for `solo run` to execute tickets',
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Check: Claude CLI authenticated
|
|
144
|
-
*/
|
|
145
|
-
async function checkClaudeAuthenticated() {
|
|
146
|
-
try {
|
|
147
|
-
// Try a simple command that requires auth
|
|
148
|
-
const result = spawnSync('claude', ['--help'], {
|
|
149
|
-
encoding: 'utf-8',
|
|
150
|
-
timeout: 10000,
|
|
151
|
-
});
|
|
152
|
-
// If claude is installed, assume it handles its own auth
|
|
153
|
-
// We can't easily test auth without making an API call
|
|
154
|
-
if (result.status === 0) {
|
|
155
|
-
return createCheckResult('claude-auth', 'pass', 'Claude CLI accessible', {
|
|
156
|
-
details: 'Auth will be checked on first run',
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
catch {
|
|
161
|
-
// Fall through
|
|
162
|
-
}
|
|
163
|
-
// If Claude isn't installed, skip this check
|
|
164
|
-
return createCheckResult('claude-auth', 'warn', 'Could not verify Claude authentication', {
|
|
165
|
-
fix: 'Run `claude` and complete authentication',
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Check: gh CLI installed
|
|
170
|
-
*/
|
|
171
|
-
function checkGhInstalled() {
|
|
172
|
-
try {
|
|
173
|
-
const result = spawnSync('gh', ['--version'], {
|
|
174
|
-
encoding: 'utf-8',
|
|
175
|
-
timeout: 5000,
|
|
176
|
-
});
|
|
177
|
-
if (result.status === 0) {
|
|
178
|
-
const firstLine = result.stdout.split('\n')[0];
|
|
179
|
-
const version = firstLine.replace('gh version ', '').split(' ')[0];
|
|
180
|
-
return createCheckResult('gh', 'pass', `GitHub CLI found (${version})`);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
catch {
|
|
184
|
-
// Fall through
|
|
185
|
-
}
|
|
186
|
-
return createCheckResult('gh', 'warn', 'GitHub CLI not found', {
|
|
187
|
-
fix: 'Install gh: https://cli.github.com/',
|
|
188
|
-
details: 'Only needed for `solo run --pr` to create PRs',
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Check: gh CLI authenticated
|
|
193
|
-
*/
|
|
194
|
-
async function checkGhAuthenticated() {
|
|
195
|
-
try {
|
|
196
|
-
const result = spawnSync('gh', ['auth', 'status'], {
|
|
197
|
-
encoding: 'utf-8',
|
|
198
|
-
timeout: 10000,
|
|
199
|
-
});
|
|
200
|
-
if (result.status === 0) {
|
|
201
|
-
// Parse the output to get the account
|
|
202
|
-
const match = result.stdout.match(/Logged in to .* as (\S+)/);
|
|
203
|
-
const account = match ? match[1] : 'authenticated';
|
|
204
|
-
return createCheckResult('gh-auth', 'pass', `GitHub CLI authenticated (${account})`);
|
|
205
|
-
}
|
|
206
|
-
// Check stderr for more info
|
|
207
|
-
if (result.stderr?.includes('not logged in')) {
|
|
208
|
-
return createCheckResult('gh-auth', 'warn', 'GitHub CLI not authenticated', {
|
|
209
|
-
fix: 'Run `gh auth login`',
|
|
210
|
-
details: 'Only needed for `solo run --pr` to create PRs',
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
catch {
|
|
215
|
-
// Fall through
|
|
216
|
-
}
|
|
217
|
-
return createCheckResult('gh-auth', 'warn', 'Could not verify GitHub authentication', {
|
|
218
|
-
fix: 'Run `gh auth login`',
|
|
219
|
-
details: 'Only needed for `solo run --pr` to create PRs',
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
/**
|
|
223
|
-
* Check: .blockspool/ directory is writable
|
|
224
|
-
*/
|
|
225
|
-
function checkBlockspoolWritable(repoRoot) {
|
|
226
|
-
const cwd = repoRoot ?? process.cwd();
|
|
227
|
-
const blockspoolDir = path.join(cwd, '.blockspool');
|
|
228
|
-
try {
|
|
229
|
-
// Check if directory exists
|
|
230
|
-
if (fs.existsSync(blockspoolDir)) {
|
|
231
|
-
// Check if writable
|
|
232
|
-
fs.accessSync(blockspoolDir, fs.constants.W_OK);
|
|
233
|
-
return createCheckResult('blockspool-dir', 'pass', '.blockspool/ exists and is writable');
|
|
234
|
-
}
|
|
235
|
-
// Directory doesn't exist - check if we can create it
|
|
236
|
-
fs.accessSync(cwd, fs.constants.W_OK);
|
|
237
|
-
return createCheckResult('blockspool-dir', 'pass', '.blockspool/ can be created');
|
|
238
|
-
}
|
|
239
|
-
catch {
|
|
240
|
-
return createCheckResult('blockspool-dir', 'fail', 'Cannot write to .blockspool/', {
|
|
241
|
-
fix: 'Check directory permissions or run with appropriate access',
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
/**
|
|
246
|
-
* Check: ripgrep installed (optional, for faster scanning)
|
|
247
|
-
*/
|
|
248
|
-
function checkRipgrepInstalled() {
|
|
249
|
-
try {
|
|
250
|
-
const result = spawnSync('rg', ['--version'], {
|
|
251
|
-
encoding: 'utf-8',
|
|
252
|
-
timeout: 5000,
|
|
253
|
-
});
|
|
254
|
-
if (result.status === 0) {
|
|
255
|
-
const version = result.stdout.split('\n')[0].replace('ripgrep ', '');
|
|
256
|
-
return createCheckResult('ripgrep', 'pass', `ripgrep found (${version})`, {
|
|
257
|
-
details: 'Enables faster code scanning',
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
catch {
|
|
262
|
-
// Fall through
|
|
263
|
-
}
|
|
264
|
-
return createCheckResult('ripgrep', 'warn', 'ripgrep not found (optional)', {
|
|
265
|
-
fix: 'Install rg: https://github.com/BurntSushi/ripgrep#installation',
|
|
266
|
-
details: 'Scanning will work but may be slower on large repos',
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* Check: SQLite native module
|
|
271
|
-
*
|
|
272
|
-
* better-sqlite3 is a native module that requires either:
|
|
273
|
-
* 1. Prebuild binary for the platform (automatic via prebuild-install)
|
|
274
|
-
* 2. Node-gyp build tools (python, c++ compiler)
|
|
275
|
-
*/
|
|
276
|
-
async function checkSqliteModule() {
|
|
277
|
-
try {
|
|
278
|
-
// Try to import better-sqlite3 - this will fail if native module isn't built
|
|
279
|
-
const { default: Database } = await import('better-sqlite3');
|
|
280
|
-
// Try to create a temporary in-memory database
|
|
281
|
-
const db = new Database(':memory:');
|
|
282
|
-
db.exec('SELECT 1');
|
|
283
|
-
db.close();
|
|
284
|
-
return createCheckResult('sqlite', 'pass', 'SQLite native module loaded', {
|
|
285
|
-
details: 'better-sqlite3 working correctly',
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
catch (err) {
|
|
289
|
-
const error = err;
|
|
290
|
-
const message = error.message || String(err);
|
|
291
|
-
// Check for common native module errors
|
|
292
|
-
if (message.includes('Could not locate the bindings file') ||
|
|
293
|
-
message.includes('was compiled against a different Node.js version') ||
|
|
294
|
-
message.includes('NODE_MODULE_VERSION')) {
|
|
295
|
-
return createCheckResult('sqlite', 'fail', 'SQLite native module needs rebuild', {
|
|
296
|
-
fix: 'Run: npm rebuild better-sqlite3',
|
|
297
|
-
details: message,
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
if (message.includes('Cannot find module')) {
|
|
301
|
-
return createCheckResult('sqlite', 'fail', 'SQLite native module not installed', {
|
|
302
|
-
fix: 'Run: npm install better-sqlite3',
|
|
303
|
-
details: message,
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
// Generic failure
|
|
307
|
-
return createCheckResult('sqlite', 'fail', 'SQLite native module failed to load', {
|
|
308
|
-
fix: 'Try: npm rebuild better-sqlite3. If that fails, ensure you have build tools (python, c++ compiler)',
|
|
309
|
-
details: message,
|
|
310
|
-
});
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* Format doctor report for human-readable output
|
|
315
|
-
*/
|
|
316
|
-
export function formatDoctorReport(report) {
|
|
317
|
-
const lines = [];
|
|
318
|
-
// Status icons
|
|
319
|
-
const icons = {
|
|
320
|
-
pass: '✅',
|
|
321
|
-
warn: '⚠️',
|
|
322
|
-
fail: '❌',
|
|
323
|
-
};
|
|
324
|
-
lines.push('BlockSpool Doctor\n');
|
|
325
|
-
// Group checks by status
|
|
326
|
-
const failed = report.checks.filter(c => c.status === 'fail');
|
|
327
|
-
const warned = report.checks.filter(c => c.status === 'warn');
|
|
328
|
-
const passed = report.checks.filter(c => c.status === 'pass');
|
|
329
|
-
// Show all checks
|
|
330
|
-
for (const check of report.checks) {
|
|
331
|
-
lines.push(`${icons[check.status]} ${check.message}`);
|
|
332
|
-
if (check.fix && check.status !== 'pass') {
|
|
333
|
-
lines.push(` fix: ${check.fix}`);
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
lines.push('');
|
|
337
|
-
// Summary
|
|
338
|
-
lines.push('Capabilities:');
|
|
339
|
-
lines.push(` ${report.canScout ? '✅' : '❌'} solo scout — Find improvement opportunities`);
|
|
340
|
-
lines.push(` ${report.canRun ? '✅' : '❌'} solo run — Execute tickets with Claude`);
|
|
341
|
-
lines.push(` ${report.canPr ? '✅' : '❌'} solo run --pr — Create PRs on GitHub`);
|
|
342
|
-
// Action items if there are failures
|
|
343
|
-
if (failed.length > 0) {
|
|
344
|
-
lines.push('');
|
|
345
|
-
lines.push('Action required:');
|
|
346
|
-
for (const check of failed) {
|
|
347
|
-
if (check.fix) {
|
|
348
|
-
lines.push(` • ${check.fix}`);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
// Warnings that might affect workflow
|
|
353
|
-
if (warned.length > 0 && failed.length === 0) {
|
|
354
|
-
lines.push('');
|
|
355
|
-
lines.push('Optional improvements:');
|
|
356
|
-
for (const check of warned) {
|
|
357
|
-
if (check.fix) {
|
|
358
|
-
lines.push(` • ${check.fix}`);
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
return lines.join('\n');
|
|
363
|
-
}
|
|
364
|
-
/**
|
|
365
|
-
* Format doctor report as JSON
|
|
366
|
-
*/
|
|
367
|
-
export function formatDoctorReportJson(report) {
|
|
368
|
-
return JSON.stringify({
|
|
369
|
-
checks: report.checks.map(c => ({
|
|
370
|
-
name: c.name,
|
|
371
|
-
status: c.status,
|
|
372
|
-
message: c.message,
|
|
373
|
-
fix: c.fix,
|
|
374
|
-
details: c.details,
|
|
375
|
-
})),
|
|
376
|
-
capabilities: {
|
|
377
|
-
scout: report.canScout,
|
|
378
|
-
run: report.canRun,
|
|
379
|
-
pr: report.canPr,
|
|
380
|
-
},
|
|
381
|
-
}, null, 2);
|
|
382
|
-
}
|
|
383
|
-
//# sourceMappingURL=doctor.js.map
|
package/dist/lib/doctor.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/lib/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/exec.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Node.js ExecRunner implementation
|
|
3
|
-
*
|
|
4
|
-
* Spawns commands, captures output to artifact files,
|
|
5
|
-
* handles timeout/cancellation, and returns structured results.
|
|
6
|
-
*/
|
|
7
|
-
import type { ExecRunner, ExecSpec, ExecResult } from '@blockspool/core';
|
|
8
|
-
export interface NodeExecRunnerOptions {
|
|
9
|
-
defaultMaxLogBytes?: number;
|
|
10
|
-
defaultTailBytes?: number;
|
|
11
|
-
killGraceMs?: number;
|
|
12
|
-
}
|
|
13
|
-
export declare class NodeExecRunner implements ExecRunner {
|
|
14
|
-
private readonly defaultMaxLogBytes;
|
|
15
|
-
private readonly defaultTailBytes;
|
|
16
|
-
private readonly killGraceMs;
|
|
17
|
-
constructor(opts?: NodeExecRunnerOptions);
|
|
18
|
-
run(spec: ExecSpec): Promise<ExecResult>;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Create a Node exec runner with default options
|
|
22
|
-
*/
|
|
23
|
-
export declare function createExecRunner(opts?: NodeExecRunnerOptions): ExecRunner;
|
|
24
|
-
//# sourceMappingURL=exec.d.ts.map
|
package/dist/lib/exec.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/lib/exec.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,UAAU,EAGX,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA0FD,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,IAAI,GAAE,qBAA0B;IAMtC,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;CA8N/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,qBAAqB,GAAG,UAAU,CAEzE"}
|