@electriccitizen/bolt 0.1.0 → 0.2.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/README.md +93 -14
- package/dist/ai/agent.d.ts +66 -0
- package/dist/ai/agent.js +232 -0
- package/dist/ai/agent.js.map +1 -0
- package/dist/ai/knowledge/composer.md +90 -0
- package/dist/ai/knowledge/config-safety.md +46 -0
- package/dist/ai/knowledge/ddev-operations.md +41 -0
- package/dist/ai/knowledge/drupal-internals.md +52 -0
- package/dist/ai/knowledge/drupal-updates.md +90 -0
- package/dist/ai/knowledge/knowledge/composer.md +90 -0
- package/dist/ai/knowledge/knowledge/config-safety.md +46 -0
- package/dist/ai/knowledge/knowledge/ddev-operations.md +41 -0
- package/dist/ai/knowledge/knowledge/drupal-debugging.md +89 -0
- package/dist/ai/knowledge/knowledge/drupal-internals.md +52 -0
- package/dist/ai/knowledge/knowledge/drupal-updates.md +90 -0
- package/dist/ai/prompts/analyze-ticket.d.ts +30 -0
- package/dist/ai/prompts/analyze-ticket.js +116 -0
- package/dist/ai/prompts/analyze-ticket.js.map +1 -0
- package/dist/ai/prompts/fix-ticket.d.ts +27 -0
- package/dist/ai/prompts/fix-ticket.js +129 -0
- package/dist/ai/prompts/fix-ticket.js.map +1 -0
- package/dist/ai/prompts/pr-description.d.ts +19 -0
- package/dist/ai/prompts/pr-description.js +56 -0
- package/dist/ai/prompts/pr-description.js.map +1 -0
- package/dist/ai/prompts/update-package.d.ts +25 -0
- package/dist/ai/prompts/update-package.js +87 -0
- package/dist/ai/prompts/update-package.js.map +1 -0
- package/dist/ai/prompts/update-plan.d.ts +20 -0
- package/dist/ai/prompts/update-plan.js +66 -0
- package/dist/ai/prompts/update-plan.js.map +1 -0
- package/dist/ai/schemas/analysis-result.d.ts +44 -0
- package/dist/ai/schemas/analysis-result.js +101 -0
- package/dist/ai/schemas/analysis-result.js.map +1 -0
- package/dist/ai/schemas/fix-result.d.ts +34 -0
- package/dist/ai/schemas/fix-result.js +55 -0
- package/dist/ai/schemas/fix-result.js.map +1 -0
- package/dist/ai/schemas/pr-body.d.ts +12 -0
- package/dist/ai/schemas/pr-body.js +18 -0
- package/dist/ai/schemas/pr-body.js.map +1 -0
- package/dist/ai/schemas/update-plan.d.ts +20 -0
- package/dist/ai/schemas/update-plan.js +33 -0
- package/dist/ai/schemas/update-plan.js.map +1 -0
- package/dist/ai/schemas/update-result.d.ts +22 -0
- package/dist/ai/schemas/update-result.js +30 -0
- package/dist/ai/schemas/update-result.js.map +1 -0
- package/dist/cli.js +63 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts +25 -0
- package/dist/commands/analyze.js +377 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/doctor.js +90 -17
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/fix.d.ts +35 -0
- package/dist/commands/fix.js +480 -0
- package/dist/commands/fix.js.map +1 -0
- package/dist/commands/init.d.ts +3 -2
- package/dist/commands/init.js +118 -160
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/pr.d.ts +4 -0
- package/dist/commands/pr.js +121 -3
- package/dist/commands/pr.js.map +1 -1
- package/dist/commands/refresh.js +10 -57
- package/dist/commands/refresh.js.map +1 -1
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.js +463 -64
- package/dist/commands/update.js.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.js +57 -0
- package/dist/config.js.map +1 -1
- package/dist/runner.js +12 -0
- package/dist/runner.js.map +1 -1
- package/dist/safety.d.ts +73 -0
- package/dist/safety.js +212 -0
- package/dist/safety.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/package.json +2 -3
- package/modules/bolt_inspect/bolt_inspect.info.yml +0 -6
- package/modules/bolt_inspect/bolt_inspect.services.yml +0 -22
- package/modules/bolt_inspect/composer.json +0 -16
- package/modules/bolt_inspect/drush.services.yml +0 -10
- package/modules/bolt_inspect/src/Drush/Commands/BoltInspectCommands.php +0 -203
- package/modules/bolt_inspect/src/Service/ContentGenerator.php +0 -586
- package/modules/bolt_inspect/src/Service/SiteProfiler.php +0 -362
- package/modules/bolt_inspect/src/Service/TestEntityTracker.php +0 -98
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bolt analyze — AI-powered ticket analysis.
|
|
3
|
+
*
|
|
4
|
+
* Reads a Jira ticket (or manual description), examines the site profile,
|
|
5
|
+
* and produces a detailed investigation plan with likely causes, specific
|
|
6
|
+
* commands, and a confidence assessment for autonomous fixing.
|
|
7
|
+
*/
|
|
8
|
+
import { execFile } from 'child_process';
|
|
9
|
+
import { promisify } from 'util';
|
|
10
|
+
import { writeFileSync } from 'fs';
|
|
11
|
+
import { isClaudeAvailable, runAgent } from '../ai/agent.js';
|
|
12
|
+
import { buildAnalyzeTicketTask } from '../ai/prompts/analyze-ticket.js';
|
|
13
|
+
import { validateAnalysisResult } from '../ai/schemas/analysis-result.js';
|
|
14
|
+
import { DdevAdapter } from '../adapters/ddev.js';
|
|
15
|
+
const execFileAsync = promisify(execFile);
|
|
16
|
+
function log(msg) {
|
|
17
|
+
process.stderr.write(` ${msg}\n`);
|
|
18
|
+
}
|
|
19
|
+
function logOk(msg) {
|
|
20
|
+
process.stderr.write(` ✓ ${msg}\n`);
|
|
21
|
+
}
|
|
22
|
+
function logFail(msg) {
|
|
23
|
+
process.stderr.write(` ✗ ${msg}\n`);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Fetch a Jira ticket via the Claude subprocess with MCP access.
|
|
27
|
+
* Returns ticket data or null if MCP is unavailable.
|
|
28
|
+
*/
|
|
29
|
+
async function fetchJiraTicket(ticketKey, cloudId) {
|
|
30
|
+
// Use Claude subprocess to access Jira MCP — the subprocess inherits MCP config.
|
|
31
|
+
const prompt = [
|
|
32
|
+
`Fetch Jira ticket ${ticketKey} and return the result as JSON.`,
|
|
33
|
+
'',
|
|
34
|
+
`Use the mcp__atlassian__getJiraIssue tool with cloudId "${cloudId}" and issueIdOrKey "${ticketKey}".`,
|
|
35
|
+
'',
|
|
36
|
+
'Return a JSON code block with this exact format:',
|
|
37
|
+
'```json',
|
|
38
|
+
'{',
|
|
39
|
+
' "summary": "ticket summary/title",',
|
|
40
|
+
' "description": "full ticket description text",',
|
|
41
|
+
' "type": "Bug/Task/Story/etc",',
|
|
42
|
+
' "priority": "High/Medium/Low/etc",',
|
|
43
|
+
' "comments": ["comment 1 text", "comment 2 text"]',
|
|
44
|
+
'}',
|
|
45
|
+
'```',
|
|
46
|
+
'',
|
|
47
|
+
'If the ticket has no description, use an empty string.',
|
|
48
|
+
'For comments, include the text body of each comment. If none, use an empty array.',
|
|
49
|
+
'Do not include any text after the JSON block.',
|
|
50
|
+
].join('\n');
|
|
51
|
+
try {
|
|
52
|
+
const result = await runAgent({
|
|
53
|
+
goal: prompt,
|
|
54
|
+
context: {},
|
|
55
|
+
knowledge: [],
|
|
56
|
+
outputFormat: '{ "summary": "string", "description": "string", "type": "string", "priority": "string", "comments": ["string"] }',
|
|
57
|
+
maxTurns: 5,
|
|
58
|
+
timeout: 30_000,
|
|
59
|
+
allowedTools: [
|
|
60
|
+
'mcp__atlassian__getJiraIssue',
|
|
61
|
+
'mcp__atlassian__getJiraIssueRemoteIssueLinks',
|
|
62
|
+
],
|
|
63
|
+
});
|
|
64
|
+
if (!result.success || !result.output)
|
|
65
|
+
return null;
|
|
66
|
+
const out = result.output;
|
|
67
|
+
return {
|
|
68
|
+
summary: String(out.summary ?? ''),
|
|
69
|
+
description: String(out.description ?? ''),
|
|
70
|
+
type: String(out.type ?? 'Bug'),
|
|
71
|
+
priority: String(out.priority ?? 'Medium'),
|
|
72
|
+
comments: Array.isArray(out.comments)
|
|
73
|
+
? out.comments.filter((c) => typeof c === 'string')
|
|
74
|
+
: [],
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get the site profile via DDEV adapter.
|
|
83
|
+
*/
|
|
84
|
+
async function getSiteProfile() {
|
|
85
|
+
const adapter = new DdevAdapter();
|
|
86
|
+
try {
|
|
87
|
+
const result = await adapter.drush('bolt-inspect:profile', []);
|
|
88
|
+
if (result.exitCode !== 0)
|
|
89
|
+
return null;
|
|
90
|
+
return JSON.parse(result.stdout);
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get recent git log.
|
|
98
|
+
*/
|
|
99
|
+
async function getRecentGitLog() {
|
|
100
|
+
try {
|
|
101
|
+
const { stdout } = await execFileAsync('git', ['log', '--oneline', '-20'], {
|
|
102
|
+
timeout: 10_000,
|
|
103
|
+
});
|
|
104
|
+
return stdout.trim();
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return '';
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Read stdin if piped (non-TTY).
|
|
112
|
+
*/
|
|
113
|
+
async function readStdin() {
|
|
114
|
+
if (process.stdin.isTTY)
|
|
115
|
+
return '';
|
|
116
|
+
return new Promise((resolve) => {
|
|
117
|
+
const chunks = [];
|
|
118
|
+
process.stdin.on('data', (chunk) => chunks.push(chunk));
|
|
119
|
+
process.stdin.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8').trim()));
|
|
120
|
+
// Timeout after 1s if nothing is piped.
|
|
121
|
+
setTimeout(() => resolve(''), 1_000);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Format analysis result as text output.
|
|
126
|
+
*/
|
|
127
|
+
function formatText(result) {
|
|
128
|
+
const lines = [];
|
|
129
|
+
// Header.
|
|
130
|
+
const key = result.ticket.key !== 'MANUAL' ? result.ticket.key : '';
|
|
131
|
+
const header = key
|
|
132
|
+
? `Ticket: ${key} — ${result.ticket.summary}`
|
|
133
|
+
: `Analysis: ${result.ticket.summary}`;
|
|
134
|
+
lines.push(header);
|
|
135
|
+
lines.push(`Priority: ${result.ticket.priority} | Type: ${result.ticket.type}`);
|
|
136
|
+
lines.push('');
|
|
137
|
+
// Problem summary.
|
|
138
|
+
lines.push('━━━ Problem Summary ━━━');
|
|
139
|
+
lines.push(result.problemSummary);
|
|
140
|
+
lines.push('');
|
|
141
|
+
// Likely causes.
|
|
142
|
+
lines.push('━━━ Likely Causes ━━━');
|
|
143
|
+
for (const cause of result.likelyCauses) {
|
|
144
|
+
lines.push(`${cause.probability.charAt(0).toUpperCase() + cause.probability.slice(1)} [${cause.category}]: ${cause.description}`);
|
|
145
|
+
}
|
|
146
|
+
lines.push('');
|
|
147
|
+
// Investigation steps.
|
|
148
|
+
lines.push('━━━ Investigation Steps ━━━');
|
|
149
|
+
for (const step of result.investigationSteps) {
|
|
150
|
+
lines.push(`${step.order}. ${step.description}`);
|
|
151
|
+
if (step.command)
|
|
152
|
+
lines.push(` $ ${step.command}`);
|
|
153
|
+
if (step.file)
|
|
154
|
+
lines.push(` → ${step.file}`);
|
|
155
|
+
}
|
|
156
|
+
lines.push('');
|
|
157
|
+
// Risk assessment.
|
|
158
|
+
if (result.riskAssessment) {
|
|
159
|
+
lines.push('━━━ Risk Assessment ━━━');
|
|
160
|
+
lines.push(result.riskAssessment);
|
|
161
|
+
lines.push('');
|
|
162
|
+
}
|
|
163
|
+
// Related modules.
|
|
164
|
+
if (result.relatedModules.length > 0) {
|
|
165
|
+
lines.push(`Related modules: ${result.relatedModules.join(', ')}`);
|
|
166
|
+
lines.push('');
|
|
167
|
+
}
|
|
168
|
+
// Suggested tests.
|
|
169
|
+
if (result.suggestedTests.plugins.length > 0) {
|
|
170
|
+
const cmd = ['bolt test'];
|
|
171
|
+
cmd.push(`--plugins=${result.suggestedTests.plugins.join(',')}`);
|
|
172
|
+
if (result.suggestedTests.contentTypes && result.suggestedTests.contentTypes.length > 0) {
|
|
173
|
+
cmd.push(`--content-types=${result.suggestedTests.contentTypes.join(',')}`);
|
|
174
|
+
}
|
|
175
|
+
if (result.suggestedTests.flags) {
|
|
176
|
+
cmd.push(...result.suggestedTests.flags);
|
|
177
|
+
}
|
|
178
|
+
lines.push('━━━ After Fix ━━━');
|
|
179
|
+
lines.push(`Run: ${cmd.join(' ')}`);
|
|
180
|
+
lines.push('');
|
|
181
|
+
}
|
|
182
|
+
// Confidence (for bolt fix integration).
|
|
183
|
+
if (result.confidence) {
|
|
184
|
+
const emoji = result.confidence.canFix === 'autonomous' ? '✓'
|
|
185
|
+
: result.confidence.canFix === 'needs-info' ? '?'
|
|
186
|
+
: '✗';
|
|
187
|
+
lines.push(`━━━ Fix Confidence ━━━`);
|
|
188
|
+
lines.push(`${emoji} ${result.confidence.canFix}: ${result.confidence.reason}`);
|
|
189
|
+
lines.push('');
|
|
190
|
+
}
|
|
191
|
+
return lines.join('\n');
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Format analysis result as markdown.
|
|
195
|
+
*/
|
|
196
|
+
function formatMarkdown(result) {
|
|
197
|
+
const lines = [];
|
|
198
|
+
const key = result.ticket.key !== 'MANUAL' ? result.ticket.key : '';
|
|
199
|
+
const header = key
|
|
200
|
+
? `# ${key}: ${result.ticket.summary}`
|
|
201
|
+
: `# ${result.ticket.summary}`;
|
|
202
|
+
lines.push(header);
|
|
203
|
+
lines.push(`**Priority:** ${result.ticket.priority} | **Type:** ${result.ticket.type}`);
|
|
204
|
+
lines.push('');
|
|
205
|
+
lines.push('## Problem Summary');
|
|
206
|
+
lines.push(result.problemSummary);
|
|
207
|
+
lines.push('');
|
|
208
|
+
lines.push('## Likely Causes');
|
|
209
|
+
for (const cause of result.likelyCauses) {
|
|
210
|
+
lines.push(`- **[${cause.probability}] ${cause.category}:** ${cause.description}`);
|
|
211
|
+
}
|
|
212
|
+
lines.push('');
|
|
213
|
+
lines.push('## Investigation Steps');
|
|
214
|
+
for (const step of result.investigationSteps) {
|
|
215
|
+
lines.push(`${step.order}. ${step.description}`);
|
|
216
|
+
if (step.command)
|
|
217
|
+
lines.push(` \`\`\`bash\n ${step.command}\n \`\`\``);
|
|
218
|
+
if (step.file)
|
|
219
|
+
lines.push(` *File:* \`${step.file}\``);
|
|
220
|
+
}
|
|
221
|
+
lines.push('');
|
|
222
|
+
if (result.riskAssessment) {
|
|
223
|
+
lines.push('## Risk Assessment');
|
|
224
|
+
lines.push(result.riskAssessment);
|
|
225
|
+
lines.push('');
|
|
226
|
+
}
|
|
227
|
+
if (result.relatedModules.length > 0) {
|
|
228
|
+
lines.push(`**Related modules:** ${result.relatedModules.map(m => `\`${m}\``).join(', ')}`);
|
|
229
|
+
lines.push('');
|
|
230
|
+
}
|
|
231
|
+
if (result.suggestedTests.plugins.length > 0) {
|
|
232
|
+
lines.push('## Verification');
|
|
233
|
+
const cmd = ['bolt test'];
|
|
234
|
+
cmd.push(`--plugins=${result.suggestedTests.plugins.join(',')}`);
|
|
235
|
+
if (result.suggestedTests.contentTypes && result.suggestedTests.contentTypes.length > 0) {
|
|
236
|
+
cmd.push(`--content-types=${result.suggestedTests.contentTypes.join(',')}`);
|
|
237
|
+
}
|
|
238
|
+
lines.push('```bash');
|
|
239
|
+
lines.push(cmd.join(' '));
|
|
240
|
+
lines.push('```');
|
|
241
|
+
lines.push('');
|
|
242
|
+
}
|
|
243
|
+
if (result.confidence) {
|
|
244
|
+
lines.push('## Fix Confidence');
|
|
245
|
+
lines.push(`**${result.confidence.canFix}:** ${result.confidence.reason}`);
|
|
246
|
+
lines.push('');
|
|
247
|
+
}
|
|
248
|
+
lines.push('---');
|
|
249
|
+
lines.push('*Generated by [Bolt](https://github.com/electriccitizen/bolt)*');
|
|
250
|
+
return lines.join('\n');
|
|
251
|
+
}
|
|
252
|
+
export async function analyzeCommand(options) {
|
|
253
|
+
process.stderr.write('\nbolt analyze\n');
|
|
254
|
+
process.stderr.write('━'.repeat(50) + '\n\n');
|
|
255
|
+
// --- Require AI ---
|
|
256
|
+
if (options.noAi) {
|
|
257
|
+
logFail('bolt analyze requires AI. This command IS the AI analysis — there is no scripted fallback.');
|
|
258
|
+
process.exit(2);
|
|
259
|
+
}
|
|
260
|
+
const available = await isClaudeAvailable();
|
|
261
|
+
if (!available) {
|
|
262
|
+
logFail('Claude Code not found. bolt analyze requires Claude Code to be installed.');
|
|
263
|
+
logFail('Install: https://claude.ai/claude-code');
|
|
264
|
+
process.exit(1);
|
|
265
|
+
}
|
|
266
|
+
// --- Gather ticket info ---
|
|
267
|
+
let ticketKey = '';
|
|
268
|
+
let ticketSummary = '';
|
|
269
|
+
let ticketDescription = '';
|
|
270
|
+
let ticketType = 'Bug';
|
|
271
|
+
let ticketPriority = 'Medium';
|
|
272
|
+
let ticketComments = [];
|
|
273
|
+
if (options.ticket) {
|
|
274
|
+
ticketKey = options.ticket;
|
|
275
|
+
log(`Fetching ticket ${ticketKey} from Jira...`);
|
|
276
|
+
// Determine cloud ID from config or default.
|
|
277
|
+
const cloudId = options.boltConfig?.analyze?.jira?.cloud_id ?? 'ecitizen.atlassian.net';
|
|
278
|
+
const jiraData = await fetchJiraTicket(ticketKey, cloudId);
|
|
279
|
+
if (jiraData) {
|
|
280
|
+
logOk(`Fetched: ${jiraData.summary}`);
|
|
281
|
+
ticketSummary = jiraData.summary;
|
|
282
|
+
ticketDescription = jiraData.description;
|
|
283
|
+
ticketType = jiraData.type;
|
|
284
|
+
ticketPriority = jiraData.priority;
|
|
285
|
+
ticketComments = jiraData.comments;
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
logFail('Could not fetch ticket from Jira (MCP unavailable or ticket not found).');
|
|
289
|
+
if (!options.description) {
|
|
290
|
+
logFail('Provide --description as fallback, or configure Jira MCP.');
|
|
291
|
+
process.exit(1);
|
|
292
|
+
}
|
|
293
|
+
log('Falling back to --description.');
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
if (options.description) {
|
|
297
|
+
ticketDescription = options.description;
|
|
298
|
+
if (!ticketSummary)
|
|
299
|
+
ticketSummary = options.description.slice(0, 100);
|
|
300
|
+
}
|
|
301
|
+
// Try stdin if no description yet.
|
|
302
|
+
if (!ticketDescription) {
|
|
303
|
+
const stdinText = await readStdin();
|
|
304
|
+
if (stdinText) {
|
|
305
|
+
ticketDescription = stdinText;
|
|
306
|
+
ticketSummary = stdinText.split('\n')[0].slice(0, 100);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
if (!ticketDescription) {
|
|
310
|
+
logFail('No ticket info provided. Use --ticket <key>, --description "...", or pipe via stdin.');
|
|
311
|
+
process.exit(2);
|
|
312
|
+
}
|
|
313
|
+
// --- Gather site context ---
|
|
314
|
+
log('Fetching site profile...');
|
|
315
|
+
const profile = await getSiteProfile();
|
|
316
|
+
if (!profile) {
|
|
317
|
+
logFail('Could not fetch site profile. Is DDEV running with bolt_inspect enabled?');
|
|
318
|
+
logFail('Run: bolt doctor');
|
|
319
|
+
process.exit(1);
|
|
320
|
+
}
|
|
321
|
+
logOk(`Site profile: ${profile.contentTypes.length} content types, ${profile.enabledModules.length} modules`);
|
|
322
|
+
// Git log for recent changes context.
|
|
323
|
+
const gitLog = await getRecentGitLog();
|
|
324
|
+
// --- Run AI analysis ---
|
|
325
|
+
log('Analyzing...');
|
|
326
|
+
process.stderr.write('\n');
|
|
327
|
+
const task = buildAnalyzeTicketTask({
|
|
328
|
+
ticketKey,
|
|
329
|
+
ticketSummary,
|
|
330
|
+
ticketDescription,
|
|
331
|
+
ticketType,
|
|
332
|
+
ticketPriority,
|
|
333
|
+
ticketComments: ticketComments.length > 0 ? ticketComments : undefined,
|
|
334
|
+
siteProfile: profile,
|
|
335
|
+
recentGitLog: gitLog || undefined,
|
|
336
|
+
});
|
|
337
|
+
const agentResult = await runAgent(task);
|
|
338
|
+
if (!agentResult.success) {
|
|
339
|
+
logFail('AI analysis failed.');
|
|
340
|
+
if (agentResult.output.error) {
|
|
341
|
+
logFail(String(agentResult.output.error));
|
|
342
|
+
}
|
|
343
|
+
process.exit(1);
|
|
344
|
+
}
|
|
345
|
+
const analysis = validateAnalysisResult(agentResult.output);
|
|
346
|
+
if (!analysis) {
|
|
347
|
+
logFail('AI returned invalid analysis format.');
|
|
348
|
+
process.stderr.write(` Raw output: ${agentResult.rawResponse.slice(0, 500)}\n`);
|
|
349
|
+
process.exit(1);
|
|
350
|
+
}
|
|
351
|
+
// --- Output ---
|
|
352
|
+
let output;
|
|
353
|
+
switch (options.output) {
|
|
354
|
+
case 'json':
|
|
355
|
+
output = JSON.stringify(analysis, null, 2);
|
|
356
|
+
break;
|
|
357
|
+
case 'markdown':
|
|
358
|
+
output = formatMarkdown(analysis);
|
|
359
|
+
break;
|
|
360
|
+
default:
|
|
361
|
+
output = formatText(analysis);
|
|
362
|
+
}
|
|
363
|
+
process.stdout.write(output + '\n');
|
|
364
|
+
// Write report file if requested.
|
|
365
|
+
if (options.report) {
|
|
366
|
+
writeFileSync(options.report, output, 'utf-8');
|
|
367
|
+
log(`Report written to ${options.report}`);
|
|
368
|
+
}
|
|
369
|
+
// Duration info.
|
|
370
|
+
const durationSec = (agentResult.duration / 1000).toFixed(1);
|
|
371
|
+
process.stderr.write(`\n Analysis complete (${durationSec}s, ${agentResult.numTurns} turns`);
|
|
372
|
+
if (agentResult.costUsd) {
|
|
373
|
+
process.stderr.write(`, $${agentResult.costUsd.toFixed(3)}`);
|
|
374
|
+
}
|
|
375
|
+
process.stderr.write(')\n\n');
|
|
376
|
+
}
|
|
377
|
+
//# sourceMappingURL=analyze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/doctor.js
CHANGED
|
@@ -8,7 +8,25 @@ import { promisify } from 'util';
|
|
|
8
8
|
import { fileURLToPath } from 'url';
|
|
9
9
|
import { dirname, resolve } from 'path';
|
|
10
10
|
import { loadConfig, validateConfig } from '../config.js';
|
|
11
|
+
import { getClaudeVersion } from '../ai/agent.js';
|
|
11
12
|
const execFileAsync = promisify(execFile);
|
|
13
|
+
/**
|
|
14
|
+
* Compare two semver version strings (e.g. "0.1.0" vs "0.2.0").
|
|
15
|
+
* Returns -1 if a < b, 0 if equal, 1 if a > b.
|
|
16
|
+
*/
|
|
17
|
+
function compareVersions(a, b) {
|
|
18
|
+
const pa = a.replace(/^v/, '').split('.').map(Number);
|
|
19
|
+
const pb = b.replace(/^v/, '').split('.').map(Number);
|
|
20
|
+
for (let i = 0; i < 3; i++) {
|
|
21
|
+
const va = pa[i] ?? 0;
|
|
22
|
+
const vb = pb[i] ?? 0;
|
|
23
|
+
if (va < vb)
|
|
24
|
+
return -1;
|
|
25
|
+
if (va > vb)
|
|
26
|
+
return 1;
|
|
27
|
+
}
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
12
30
|
/**
|
|
13
31
|
* Run a command and return stdout, or null on failure.
|
|
14
32
|
*/
|
|
@@ -110,40 +128,50 @@ export async function doctorCommand() {
|
|
|
110
128
|
});
|
|
111
129
|
issueCount++;
|
|
112
130
|
}
|
|
131
|
+
// Claude Code.
|
|
132
|
+
const claudeVersion = await getClaudeVersion();
|
|
133
|
+
if (claudeVersion) {
|
|
134
|
+
toolChecks.push({ label: `claude ${claudeVersion}`, status: 'pass' });
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
toolChecks.push({
|
|
138
|
+
label: 'claude',
|
|
139
|
+
status: 'warn',
|
|
140
|
+
detail: 'Claude Code not found. AI features (bolt update) will use scripted fallback.',
|
|
141
|
+
});
|
|
142
|
+
}
|
|
113
143
|
checks.push({ section: 'Local tools', results: toolChecks });
|
|
114
144
|
// --- Site section (only if in a DDEV project) ---
|
|
115
145
|
const ddevConfigPath = join(cwd, '.ddev', 'config.yaml');
|
|
116
146
|
const inProject = existsSync(ddevConfigPath);
|
|
147
|
+
// Track profile for coverage section.
|
|
148
|
+
let siteProfile = null;
|
|
117
149
|
if (inProject) {
|
|
118
150
|
const siteChecks = [];
|
|
119
151
|
// DDEV running?
|
|
120
152
|
const ddevDescribe = await tryExec('ddev', ['describe', '-j']);
|
|
121
153
|
if (ddevDescribe) {
|
|
122
154
|
siteChecks.push({ label: 'DDEV running', status: 'pass' });
|
|
123
|
-
// Volume mount?
|
|
124
|
-
const dockerComposePath = join(cwd, '.ddev', 'docker-compose.bolt.yaml');
|
|
125
|
-
if (existsSync(dockerComposePath)) {
|
|
126
|
-
siteChecks.push({ label: 'bolt volume mount configured', status: 'pass' });
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
siteChecks.push({
|
|
130
|
-
label: 'bolt volume mount',
|
|
131
|
-
status: 'fail',
|
|
132
|
-
detail: 'Run: bolt init',
|
|
133
|
-
});
|
|
134
|
-
issueCount++;
|
|
135
|
-
}
|
|
136
155
|
// bolt_inspect module enabled?
|
|
137
156
|
const profileResult = await tryExec('ddev', ['drush', 'bolt-inspect:profile']);
|
|
138
157
|
if (profileResult) {
|
|
139
158
|
try {
|
|
140
159
|
const profile = JSON.parse(profileResult);
|
|
160
|
+
siteProfile = profile;
|
|
141
161
|
const ctCount = profile.contentTypes?.length ?? 0;
|
|
162
|
+
const fieldCount = (profile.contentTypes ?? []).reduce((sum, ct) => sum + (ct.fields?.length ?? 0), 0);
|
|
163
|
+
const pgCount = (profile.paragraphBundles ?? []).length;
|
|
164
|
+
const summary = [`${ctCount} content types`, `${fieldCount} fields`];
|
|
165
|
+
if (pgCount > 0)
|
|
166
|
+
summary.push(`${pgCount} paragraph bundles`);
|
|
142
167
|
siteChecks.push({
|
|
143
|
-
label: `bolt_inspect module enabled (${
|
|
168
|
+
label: `bolt_inspect module enabled (${summary.join(', ')})`,
|
|
144
169
|
status: 'pass',
|
|
145
170
|
});
|
|
146
171
|
// Version compatibility check.
|
|
172
|
+
// CLI and module are separate packages with independent release cycles.
|
|
173
|
+
// Only warn if the module is below the minimum required version.
|
|
174
|
+
const MIN_MODULE_VERSION = '0.1.0';
|
|
147
175
|
const moduleVersion = profile.boltInspectVersion ?? 'unknown';
|
|
148
176
|
if (moduleVersion === 'unknown') {
|
|
149
177
|
siteChecks.push({
|
|
@@ -152,11 +180,11 @@ export async function doctorCommand() {
|
|
|
152
180
|
detail: `Module version unknown. Run: bolt init --upgrade`,
|
|
153
181
|
});
|
|
154
182
|
}
|
|
155
|
-
else if (moduleVersion
|
|
183
|
+
else if (compareVersions(moduleVersion, MIN_MODULE_VERSION) < 0) {
|
|
156
184
|
siteChecks.push({
|
|
157
|
-
label: `bolt_inspect version
|
|
185
|
+
label: `bolt_inspect version ${moduleVersion} too old`,
|
|
158
186
|
status: 'warn',
|
|
159
|
-
detail: `
|
|
187
|
+
detail: `Minimum required: ${MIN_MODULE_VERSION}. Run: bolt init --upgrade`,
|
|
160
188
|
});
|
|
161
189
|
}
|
|
162
190
|
else {
|
|
@@ -205,6 +233,51 @@ export async function doctorCommand() {
|
|
|
205
233
|
}
|
|
206
234
|
checks.push({ section: `Site (${projectName})`, results: siteChecks });
|
|
207
235
|
}
|
|
236
|
+
// --- Coverage section (when profile is available) ---
|
|
237
|
+
if (siteProfile) {
|
|
238
|
+
const coverageChecks = [];
|
|
239
|
+
const contentTypes = siteProfile.contentTypes ?? [];
|
|
240
|
+
const urls = siteProfile.representativeUrls ?? [];
|
|
241
|
+
const customRoutes = siteProfile.representativeUrls?.filter((u) => u.source === 'custom') ?? [];
|
|
242
|
+
coverageChecks.push({
|
|
243
|
+
label: `${contentTypes.length} content types: ${contentTypes.map((ct) => ct.id).join(', ')}`,
|
|
244
|
+
status: 'pass',
|
|
245
|
+
});
|
|
246
|
+
coverageChecks.push({
|
|
247
|
+
label: `${urls.length} representative URLs`,
|
|
248
|
+
status: urls.length > 0 ? 'pass' : 'warn',
|
|
249
|
+
detail: urls.length === 0 ? 'No URLs discovered. Check site content.' : undefined,
|
|
250
|
+
});
|
|
251
|
+
// Show URL breakdown by source.
|
|
252
|
+
const bySource = {};
|
|
253
|
+
for (const u of urls) {
|
|
254
|
+
bySource[u.source] = (bySource[u.source] ?? 0) + 1;
|
|
255
|
+
}
|
|
256
|
+
const sourceSummary = Object.entries(bySource).map(([s, c]) => `${c} ${s}`).join(', ');
|
|
257
|
+
coverageChecks.push({
|
|
258
|
+
label: `URL sources: ${sourceSummary}`,
|
|
259
|
+
status: 'pass',
|
|
260
|
+
});
|
|
261
|
+
// List each URL.
|
|
262
|
+
for (const u of urls) {
|
|
263
|
+
const source = u.source === 'homepage' ? 'home'
|
|
264
|
+
: u.source === 'content_type' ? u.contentType ?? 'content'
|
|
265
|
+
: u.source;
|
|
266
|
+
coverageChecks.push({
|
|
267
|
+
label: `${u.url} (${source})`,
|
|
268
|
+
status: 'pass',
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
// Hint about custom routes.
|
|
272
|
+
if (customRoutes.length === 0) {
|
|
273
|
+
coverageChecks.push({
|
|
274
|
+
label: 'custom_routes',
|
|
275
|
+
status: 'skip',
|
|
276
|
+
detail: 'Add pages to .bolt.yml custom_routes for broader coverage',
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
checks.push({ section: 'Test coverage', results: coverageChecks });
|
|
280
|
+
}
|
|
208
281
|
// --- Config section ---
|
|
209
282
|
const configChecks = [];
|
|
210
283
|
const boltYmlPath = join(cwd, '.bolt.yml');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bolt fix — autonomous ticket resolution.
|
|
3
|
+
*
|
|
4
|
+
* Runs bolt analyze internally (or reuses existing analysis), then hands
|
|
5
|
+
* the issue to Claude with full tool access to investigate and fix.
|
|
6
|
+
* Supports both autonomous (subprocess) and interactive (live session) modes.
|
|
7
|
+
*/
|
|
8
|
+
import type { BoltConfig } from '../config.js';
|
|
9
|
+
export interface FixOptions {
|
|
10
|
+
/** Jira ticket key. */
|
|
11
|
+
ticket?: string;
|
|
12
|
+
/** Manual bug description. */
|
|
13
|
+
description?: string;
|
|
14
|
+
/** Path to a saved bolt analyze report (JSON). */
|
|
15
|
+
analysis?: string;
|
|
16
|
+
/** Additional context (answers to questions from analyze). */
|
|
17
|
+
context?: string;
|
|
18
|
+
/** Show what would be changed without modifying files. */
|
|
19
|
+
dryRun: boolean;
|
|
20
|
+
/** Skip post-fix test run. */
|
|
21
|
+
skipTest: boolean;
|
|
22
|
+
/** Skip PR creation. */
|
|
23
|
+
skipPr: boolean;
|
|
24
|
+
/** Skip confirmation prompts. */
|
|
25
|
+
yes: boolean;
|
|
26
|
+
/** Branch name override. */
|
|
27
|
+
branch?: string;
|
|
28
|
+
/** Interactive mode — hand off to live Claude session. */
|
|
29
|
+
interactive: boolean;
|
|
30
|
+
/** Disable AI (this command requires AI). */
|
|
31
|
+
noAi?: boolean;
|
|
32
|
+
/** Resolved .bolt.yml config. */
|
|
33
|
+
boltConfig?: BoltConfig;
|
|
34
|
+
}
|
|
35
|
+
export declare function fixCommand(options: FixOptions): Promise<void>;
|