@electriccitizen/bolt 0.2.2 → 0.3.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 +43 -1
- package/dist/ai/prompts/status-assessment.d.ts +25 -0
- package/dist/ai/prompts/status-assessment.js +49 -0
- package/dist/ai/prompts/status-assessment.js.map +1 -0
- package/dist/ai/schemas/status-assessment.d.ts +18 -0
- package/dist/ai/schemas/status-assessment.js +44 -0
- package/dist/ai/schemas/status-assessment.js.map +1 -0
- package/dist/cli.js +14 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/status.d.ts +16 -0
- package/dist/commands/status.js +363 -0
- package/dist/commands/status.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -310,6 +310,48 @@ Other developers on the same project just run `composer install` — the module
|
|
|
310
310
|
|
|
311
311
|
Idempotent — safe to re-run.
|
|
312
312
|
|
|
313
|
+
### `bolt status`
|
|
314
|
+
|
|
315
|
+
AI-enhanced site status overview — git state, available updates with risk assessment, recommended update order.
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
bolt status [options]
|
|
319
|
+
--no-ai Disable AI risk assessment
|
|
320
|
+
--output <format> text | json (default: text)
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
Example output:
|
|
324
|
+
|
|
325
|
+
```
|
|
326
|
+
Git:
|
|
327
|
+
✓ Branch: main
|
|
328
|
+
✓ Working tree clean
|
|
329
|
+
|
|
330
|
+
Site:
|
|
331
|
+
✓ DDEV running: https://acme.ddev.site
|
|
332
|
+
✓ Drupal 11.1.5, PHP 8.3
|
|
333
|
+
✓ 6 content types, 25 paragraph bundles
|
|
334
|
+
|
|
335
|
+
Available updates:
|
|
336
|
+
✗ 1 security update(s):
|
|
337
|
+
drupal/core: 11.1.3 → 11.1.5 [SECURITY]
|
|
338
|
+
! 3 other update(s):
|
|
339
|
+
drupal/webform: 6.2-beta8 → 6.2-beta9 (patch)
|
|
340
|
+
drupal/token: 1.14.0 → 1.15.0 (minor/major)
|
|
341
|
+
drupal/paragraphs: 1.17.0 → 1.18.0 (minor/major)
|
|
342
|
+
|
|
343
|
+
AI assessment:
|
|
344
|
+
! Risk: medium — Security fix plus minor version bumps
|
|
345
|
+
Recommended update order:
|
|
346
|
+
1. drupal/core — Security fix, apply first
|
|
347
|
+
2. drupal/paragraphs — Dependency of multiple content types
|
|
348
|
+
3. drupal/webform — Patch update, low risk
|
|
349
|
+
4. drupal/token — Leaf dependency, safe last
|
|
350
|
+
Next steps:
|
|
351
|
+
→ Run bolt update --security-only first
|
|
352
|
+
→ Run bolt test after core update before proceeding
|
|
353
|
+
```
|
|
354
|
+
|
|
313
355
|
### `bolt doctor`
|
|
314
356
|
|
|
315
357
|
Validate the environment.
|
|
@@ -318,7 +360,7 @@ Validate the environment.
|
|
|
318
360
|
bolt doctor
|
|
319
361
|
```
|
|
320
362
|
|
|
321
|
-
Checks: bolt version, Node.js, Playwright, DDEV, module status, CLI/module version compatibility, `.bolt.yml` validity.
|
|
363
|
+
Checks: bolt version, Node.js, Playwright, DDEV, module status, CLI/module version compatibility, `.bolt.yml` validity, full test coverage report (content types, fields, paragraph bundles, plugins).
|
|
322
364
|
|
|
323
365
|
## Test Plugins
|
|
324
366
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt builder for bolt status AI assessment.
|
|
3
|
+
*
|
|
4
|
+
* Claude analyzes available updates and provides:
|
|
5
|
+
* - Risk level for the update batch
|
|
6
|
+
* - Recommended update order
|
|
7
|
+
* - Warnings about known compatibility issues
|
|
8
|
+
* - Suggested next steps
|
|
9
|
+
*/
|
|
10
|
+
import type { AgentTask } from '../agent.js';
|
|
11
|
+
export interface StatusContext {
|
|
12
|
+
outdatedPackages: Array<{
|
|
13
|
+
name: string;
|
|
14
|
+
currentVersion: string;
|
|
15
|
+
latestVersion: string;
|
|
16
|
+
updateType: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
isSecurityUpdate: boolean;
|
|
19
|
+
}>;
|
|
20
|
+
drupalVersion: string;
|
|
21
|
+
phpVersion: string;
|
|
22
|
+
enabledModules: string[];
|
|
23
|
+
securityAdvisories: string[];
|
|
24
|
+
}
|
|
25
|
+
export declare function buildStatusAssessmentTask(context: StatusContext): AgentTask;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt builder for bolt status AI assessment.
|
|
3
|
+
*
|
|
4
|
+
* Claude analyzes available updates and provides:
|
|
5
|
+
* - Risk level for the update batch
|
|
6
|
+
* - Recommended update order
|
|
7
|
+
* - Warnings about known compatibility issues
|
|
8
|
+
* - Suggested next steps
|
|
9
|
+
*/
|
|
10
|
+
export function buildStatusAssessmentTask(context) {
|
|
11
|
+
const securityCount = context.outdatedPackages.filter((p) => p.isSecurityUpdate).length;
|
|
12
|
+
return {
|
|
13
|
+
goal: `Assess the risk and recommend an update strategy for ${context.outdatedPackages.length} outdated packages (${securityCount} security) on a Drupal ${context.drupalVersion} site running PHP ${context.phpVersion}.`,
|
|
14
|
+
context: {
|
|
15
|
+
outdatedPackages: context.outdatedPackages,
|
|
16
|
+
drupalVersion: context.drupalVersion,
|
|
17
|
+
phpVersion: context.phpVersion,
|
|
18
|
+
enabledModules: context.enabledModules,
|
|
19
|
+
securityAdvisoryPackages: context.securityAdvisories,
|
|
20
|
+
},
|
|
21
|
+
knowledge: ['drupal-updates', 'composer'],
|
|
22
|
+
outputFormat: `Return a JSON object with this exact structure:
|
|
23
|
+
{
|
|
24
|
+
"riskLevel": "low" | "medium" | "high",
|
|
25
|
+
"riskSummary": "One sentence explaining the overall risk level",
|
|
26
|
+
"recommendedOrder": [
|
|
27
|
+
{ "package": "drupal/core", "reason": "Security fix, apply first" }
|
|
28
|
+
],
|
|
29
|
+
"warnings": [
|
|
30
|
+
"drupal/webform major version jump — check migration guide"
|
|
31
|
+
],
|
|
32
|
+
"nextSteps": [
|
|
33
|
+
"Run bolt update --security-only first",
|
|
34
|
+
"Back up database before drupal/core update"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
Guidelines:
|
|
39
|
+
- riskLevel: "low" = all patch/security updates; "medium" = minor version bumps or many packages; "high" = major version jumps, core updates, or known breaking changes
|
|
40
|
+
- recommendedOrder: list packages in the order they should be updated (security first, then dependencies, then leaf packages)
|
|
41
|
+
- warnings: flag known compatibility issues, major version jumps, deprecated packages, or packages that commonly break things
|
|
42
|
+
- nextSteps: concrete commands the developer should run next
|
|
43
|
+
- Be concise — this is a status report, not a full analysis`,
|
|
44
|
+
maxTurns: 1,
|
|
45
|
+
timeout: 30_000,
|
|
46
|
+
allowedTools: [],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=status-assessment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-assessment.js","sourceRoot":"","sources":["../../../src/ai/prompts/status-assessment.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmBH,MAAM,UAAU,yBAAyB,CAAC,OAAsB;IAC9D,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC;IAExF,OAAO;QACL,IAAI,EAAE,wDAAwD,OAAO,CAAC,gBAAgB,CAAC,MAAM,uBAAuB,aAAa,0BAA0B,OAAO,CAAC,aAAa,qBAAqB,OAAO,CAAC,UAAU,GAAG;QAE1N,OAAO,EAAE;YACP,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,wBAAwB,EAAE,OAAO,CAAC,kBAAkB;SACrD;QAED,SAAS,EAAE,CAAC,gBAAgB,EAAE,UAAU,CAAsB;QAE9D,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;4DAqB0C;QAExD,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,MAAM;QACf,YAAY,EAAE,EAAE;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema validation for bolt status AI assessment output.
|
|
3
|
+
*/
|
|
4
|
+
export interface StatusAssessment {
|
|
5
|
+
riskLevel: 'low' | 'medium' | 'high';
|
|
6
|
+
riskSummary: string;
|
|
7
|
+
recommendedOrder: Array<{
|
|
8
|
+
package: string;
|
|
9
|
+
reason: string;
|
|
10
|
+
}>;
|
|
11
|
+
warnings: string[];
|
|
12
|
+
nextSteps: string[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Validate and extract a StatusAssessment from raw agent output.
|
|
16
|
+
* Returns null if the output doesn't match the expected schema.
|
|
17
|
+
*/
|
|
18
|
+
export declare function validateStatusOutput(raw: Record<string, unknown>): StatusAssessment | null;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema validation for bolt status AI assessment output.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Validate and extract a StatusAssessment from raw agent output.
|
|
6
|
+
* Returns null if the output doesn't match the expected schema.
|
|
7
|
+
*/
|
|
8
|
+
export function validateStatusOutput(raw) {
|
|
9
|
+
const riskLevel = raw.riskLevel;
|
|
10
|
+
if (riskLevel !== 'low' && riskLevel !== 'medium' && riskLevel !== 'high') {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
const riskSummary = raw.riskSummary;
|
|
14
|
+
if (typeof riskSummary !== 'string' || riskSummary.length === 0) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const recommendedOrder = raw.recommendedOrder;
|
|
18
|
+
if (!Array.isArray(recommendedOrder)) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const validOrder = recommendedOrder
|
|
22
|
+
.filter((item) => typeof item === 'object' &&
|
|
23
|
+
item !== null &&
|
|
24
|
+
typeof item.package === 'string' &&
|
|
25
|
+
typeof item.reason === 'string')
|
|
26
|
+
.map((item) => ({
|
|
27
|
+
package: item.package,
|
|
28
|
+
reason: item.reason,
|
|
29
|
+
}));
|
|
30
|
+
const warnings = Array.isArray(raw.warnings)
|
|
31
|
+
? raw.warnings.filter((w) => typeof w === 'string')
|
|
32
|
+
: [];
|
|
33
|
+
const nextSteps = Array.isArray(raw.nextSteps)
|
|
34
|
+
? raw.nextSteps.filter((s) => typeof s === 'string')
|
|
35
|
+
: [];
|
|
36
|
+
return {
|
|
37
|
+
riskLevel,
|
|
38
|
+
riskSummary,
|
|
39
|
+
recommendedOrder: validOrder,
|
|
40
|
+
warnings,
|
|
41
|
+
nextSteps,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=status-assessment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-assessment.js","sourceRoot":"","sources":["../../../src/ai/schemas/status-assessment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAA4B;IAE5B,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IAChC,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IACpC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,CAAC;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB;SAChC,MAAM,CACL,CAAC,IAAI,EAA+C,EAAE,CACpD,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,OAAQ,IAAgC,CAAC,OAAO,KAAK,QAAQ;QAC7D,OAAQ,IAAgC,CAAC,MAAM,KAAK,QAAQ,CAC/D;SACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACd,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC,CAAC;IAEN,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC1C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QAChE,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QAC5C,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QACjE,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;QACL,SAAS;QACT,WAAW;QACX,gBAAgB,EAAE,UAAU;QAC5B,QAAQ;QACR,SAAS;KACV,CAAC;AACJ,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -12,6 +12,7 @@ import { updateCommand } from './commands/update.js';
|
|
|
12
12
|
import { prCommand } from './commands/pr.js';
|
|
13
13
|
import { analyzeCommand } from './commands/analyze.js';
|
|
14
14
|
import { fixCommand } from './commands/fix.js';
|
|
15
|
+
import { statusCommand } from './commands/status.js';
|
|
15
16
|
import { loadConfig } from './config.js';
|
|
16
17
|
const __filename = fileURLToPath(import.meta.url);
|
|
17
18
|
const __dirname = dirname(__filename);
|
|
@@ -225,5 +226,18 @@ program
|
|
|
225
226
|
boltConfig: config,
|
|
226
227
|
});
|
|
227
228
|
});
|
|
229
|
+
program
|
|
230
|
+
.command('status')
|
|
231
|
+
.description('AI-enhanced site status — git state, available updates, risk assessment')
|
|
232
|
+
.option('--no-ai', 'Disable AI risk assessment')
|
|
233
|
+
.option('--output <format>', 'Output format: text, json', 'text')
|
|
234
|
+
.action(async (opts) => {
|
|
235
|
+
const config = loadConfig();
|
|
236
|
+
await statusCommand({
|
|
237
|
+
noAi: opts.ai === false,
|
|
238
|
+
output: opts.output,
|
|
239
|
+
boltConfig: config,
|
|
240
|
+
});
|
|
241
|
+
});
|
|
228
242
|
program.parse();
|
|
229
243
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bolt status — AI-enhanced site status overview.
|
|
3
|
+
*
|
|
4
|
+
* Shows: git state, site health, available updates (with AI risk assessment),
|
|
5
|
+
* and pending Jira tickets. The "what do I need to know?" command.
|
|
6
|
+
*/
|
|
7
|
+
import type { BoltConfig } from '../config.js';
|
|
8
|
+
export interface StatusOptions {
|
|
9
|
+
/** Disable AI reasoning. */
|
|
10
|
+
noAi: boolean;
|
|
11
|
+
/** Output format. */
|
|
12
|
+
output: 'text' | 'json';
|
|
13
|
+
/** Bolt config. */
|
|
14
|
+
boltConfig: BoltConfig;
|
|
15
|
+
}
|
|
16
|
+
export declare function statusCommand(options: StatusOptions): Promise<void>;
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* bolt status — AI-enhanced site status overview.
|
|
3
|
+
*
|
|
4
|
+
* Shows: git state, site health, available updates (with AI risk assessment),
|
|
5
|
+
* and pending Jira tickets. The "what do I need to know?" command.
|
|
6
|
+
*/
|
|
7
|
+
import { execFile } from 'child_process';
|
|
8
|
+
import { promisify } from 'util';
|
|
9
|
+
import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
|
|
10
|
+
import { join } from 'path';
|
|
11
|
+
import { checkGitState } from '../safety.js';
|
|
12
|
+
import { isClaudeAvailable, runAgent } from '../ai/agent.js';
|
|
13
|
+
import { buildStatusAssessmentTask } from '../ai/prompts/status-assessment.js';
|
|
14
|
+
import { validateStatusOutput } from '../ai/schemas/status-assessment.js';
|
|
15
|
+
const execFileAsync = promisify(execFile);
|
|
16
|
+
// --- Logging helpers (stderr) ---
|
|
17
|
+
function log(msg) {
|
|
18
|
+
process.stderr.write(` ${msg}\n`);
|
|
19
|
+
}
|
|
20
|
+
function logOk(msg) {
|
|
21
|
+
process.stderr.write(` ✓ ${msg}\n`);
|
|
22
|
+
}
|
|
23
|
+
function logWarn(msg) {
|
|
24
|
+
process.stderr.write(` ! ${msg}\n`);
|
|
25
|
+
}
|
|
26
|
+
function logFail(msg) {
|
|
27
|
+
process.stderr.write(` ✗ ${msg}\n`);
|
|
28
|
+
}
|
|
29
|
+
function logSection(title) {
|
|
30
|
+
process.stderr.write(`\n${title}:\n`);
|
|
31
|
+
}
|
|
32
|
+
/** Run a command, return stdout/stderr/exitCode. */
|
|
33
|
+
async function exec(command, args, timeout = 30_000) {
|
|
34
|
+
try {
|
|
35
|
+
const { stdout, stderr } = await execFileAsync(command, args, {
|
|
36
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
37
|
+
timeout,
|
|
38
|
+
});
|
|
39
|
+
return { stdout, stderr, exitCode: 0 };
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
if (err instanceof Error) {
|
|
43
|
+
const execErr = err;
|
|
44
|
+
return {
|
|
45
|
+
stdout: execErr.stdout ?? '',
|
|
46
|
+
stderr: execErr.stderr ?? err.message,
|
|
47
|
+
exitCode: typeof execErr.code === 'number' ? execErr.code : 1,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return { stdout: '', stderr: String(err), exitCode: 1 };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// --- Data gathering ---
|
|
54
|
+
async function getDdevStatus() {
|
|
55
|
+
const result = await exec('ddev', ['describe', '-j']);
|
|
56
|
+
if (result.exitCode !== 0) {
|
|
57
|
+
return { running: false, url: '' };
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const data = JSON.parse(result.stdout);
|
|
61
|
+
const raw = data.raw ?? data;
|
|
62
|
+
const url = raw.httpurl ?? raw.primary_url ?? '';
|
|
63
|
+
return { running: true, url: url.replace(/^http:/, 'https:') };
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return { running: true, url: '' };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async function getDrupalVersion() {
|
|
70
|
+
const result = await exec('ddev', ['drush', 'status', '--format=json'], 15_000);
|
|
71
|
+
try {
|
|
72
|
+
const data = JSON.parse(result.stdout);
|
|
73
|
+
return data['drupal-version'] ?? 'unknown';
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return 'unknown';
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async function getPhpVersion() {
|
|
80
|
+
const result = await exec('ddev', ['drush', 'status', '--format=json'], 15_000);
|
|
81
|
+
try {
|
|
82
|
+
const data = JSON.parse(result.stdout);
|
|
83
|
+
return data['php-version'] ?? 'unknown';
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return 'unknown';
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
async function getOutdatedPackages() {
|
|
90
|
+
const securityPackages = await getSecurityPackages();
|
|
91
|
+
const result = await exec('ddev', ['composer', 'outdated', '--format=json', '--direct'], 60_000);
|
|
92
|
+
let data;
|
|
93
|
+
try {
|
|
94
|
+
data = JSON.parse(result.stdout);
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
const installed = (data.installed ?? data);
|
|
100
|
+
if (!Array.isArray(installed))
|
|
101
|
+
return [];
|
|
102
|
+
return installed
|
|
103
|
+
.filter((pkg) => pkg.name && pkg.version && pkg.latest)
|
|
104
|
+
.map((pkg) => ({
|
|
105
|
+
name: pkg.name,
|
|
106
|
+
currentVersion: pkg.version,
|
|
107
|
+
latestVersion: pkg.latest,
|
|
108
|
+
updateType: pkg['latest-status'] ?? 'unknown',
|
|
109
|
+
description: pkg.description,
|
|
110
|
+
isSecurityUpdate: securityPackages.has(pkg.name),
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
async function getSecurityPackages() {
|
|
114
|
+
const result = await exec('ddev', ['composer', 'audit', '--format=json'], 60_000);
|
|
115
|
+
const packages = new Set();
|
|
116
|
+
try {
|
|
117
|
+
const data = JSON.parse(result.stdout);
|
|
118
|
+
const advisories = data.advisories;
|
|
119
|
+
if (advisories) {
|
|
120
|
+
for (const name of Object.keys(advisories)) {
|
|
121
|
+
packages.add(name);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// No advisories or parse error.
|
|
127
|
+
}
|
|
128
|
+
return packages;
|
|
129
|
+
}
|
|
130
|
+
async function getSiteProfile() {
|
|
131
|
+
const result = await exec('ddev', ['drush', 'bolt-inspect:profile'], 30_000);
|
|
132
|
+
if (result.exitCode !== 0)
|
|
133
|
+
return null;
|
|
134
|
+
try {
|
|
135
|
+
return JSON.parse(result.stdout);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function getLastTestResults(cwd) {
|
|
142
|
+
// Check for most recent test report in .bolt/logs/
|
|
143
|
+
const logDir = join(cwd, '.bolt', 'logs');
|
|
144
|
+
if (!existsSync(logDir))
|
|
145
|
+
return null;
|
|
146
|
+
try {
|
|
147
|
+
const files = readdirSync(logDir)
|
|
148
|
+
.filter((f) => f.endsWith('.json'))
|
|
149
|
+
.map((f) => ({
|
|
150
|
+
name: f,
|
|
151
|
+
mtime: statSync(join(logDir, f)).mtime.getTime(),
|
|
152
|
+
}))
|
|
153
|
+
.sort((a, b) => b.mtime - a.mtime);
|
|
154
|
+
if (files.length > 0) {
|
|
155
|
+
return readFileSync(join(logDir, files[0].name), 'utf-8');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// No logs available.
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
// --- Output formatting ---
|
|
164
|
+
function formatGitSection(git) {
|
|
165
|
+
logSection('Git');
|
|
166
|
+
if (!git.isGitRepo) {
|
|
167
|
+
logWarn('Not a git repository');
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
logOk(`Branch: ${git.currentBranch}`);
|
|
171
|
+
if (git.isDirty) {
|
|
172
|
+
logWarn(`${git.dirtyFileCount} uncommitted change(s)`);
|
|
173
|
+
for (const f of git.dirtyFiles) {
|
|
174
|
+
log(` ${f}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
logOk('Working tree clean');
|
|
179
|
+
}
|
|
180
|
+
if (git.hasUnpushedCommits) {
|
|
181
|
+
logWarn(`${git.unpushedCommits.length} unpushed commit(s)`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
function formatSiteSection(status) {
|
|
185
|
+
logSection('Site');
|
|
186
|
+
if (!status.ddevRunning) {
|
|
187
|
+
logFail('DDEV not running');
|
|
188
|
+
log('Run: ddev start');
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
logOk(`DDEV running: ${status.siteUrl}`);
|
|
192
|
+
if (status.drupalVersion !== 'unknown') {
|
|
193
|
+
logOk(`Drupal ${status.drupalVersion}, PHP ${status.phpVersion}`);
|
|
194
|
+
}
|
|
195
|
+
if (status.siteProfile) {
|
|
196
|
+
const ctCount = status.siteProfile.contentTypes?.length ?? 0;
|
|
197
|
+
const pgCount = status.siteProfile.paragraphBundles?.length ?? 0;
|
|
198
|
+
const parts = [`${ctCount} content types`];
|
|
199
|
+
if (pgCount > 0)
|
|
200
|
+
parts.push(`${pgCount} paragraph bundles`);
|
|
201
|
+
logOk(parts.join(', '));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function formatUpdatesSection(packages) {
|
|
205
|
+
logSection('Available updates');
|
|
206
|
+
if (packages.length === 0) {
|
|
207
|
+
logOk('All packages are up to date');
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const security = packages.filter((p) => p.isSecurityUpdate);
|
|
211
|
+
const regular = packages.filter((p) => !p.isSecurityUpdate);
|
|
212
|
+
if (security.length > 0) {
|
|
213
|
+
logFail(`${security.length} security update(s):`);
|
|
214
|
+
for (const pkg of security) {
|
|
215
|
+
log(` ${pkg.name}: ${pkg.currentVersion} → ${pkg.latestVersion} [SECURITY]`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (regular.length > 0) {
|
|
219
|
+
logWarn(`${regular.length} other update(s):`);
|
|
220
|
+
for (const pkg of regular) {
|
|
221
|
+
const type = pkg.updateType === 'semver-safe-update' ? 'patch'
|
|
222
|
+
: pkg.updateType === 'update-possible' ? 'minor/major'
|
|
223
|
+
: pkg.updateType;
|
|
224
|
+
log(` ${pkg.name}: ${pkg.currentVersion} → ${pkg.latestVersion} (${type})`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
function formatAiAssessment(assessment) {
|
|
229
|
+
logSection('AI assessment');
|
|
230
|
+
// Risk summary
|
|
231
|
+
if (assessment.riskLevel === 'low') {
|
|
232
|
+
logOk(`Risk: ${assessment.riskLevel} — ${assessment.riskSummary}`);
|
|
233
|
+
}
|
|
234
|
+
else if (assessment.riskLevel === 'medium') {
|
|
235
|
+
logWarn(`Risk: ${assessment.riskLevel} — ${assessment.riskSummary}`);
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
logFail(`Risk: ${assessment.riskLevel} — ${assessment.riskSummary}`);
|
|
239
|
+
}
|
|
240
|
+
// Recommended update order
|
|
241
|
+
if (assessment.recommendedOrder.length > 0) {
|
|
242
|
+
log('');
|
|
243
|
+
log(' Recommended update order:');
|
|
244
|
+
for (let i = 0; i < assessment.recommendedOrder.length; i++) {
|
|
245
|
+
const item = assessment.recommendedOrder[i];
|
|
246
|
+
log(` ${i + 1}. ${item.package} — ${item.reason}`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// Warnings
|
|
250
|
+
if (assessment.warnings.length > 0) {
|
|
251
|
+
log('');
|
|
252
|
+
for (const warning of assessment.warnings) {
|
|
253
|
+
logWarn(warning);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
// Suggested next steps
|
|
257
|
+
if (assessment.nextSteps.length > 0) {
|
|
258
|
+
log('');
|
|
259
|
+
log(' Next steps:');
|
|
260
|
+
for (const step of assessment.nextSteps) {
|
|
261
|
+
log(` → ${step}`);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
// --- Main command ---
|
|
266
|
+
export async function statusCommand(options) {
|
|
267
|
+
const cwd = process.cwd();
|
|
268
|
+
process.stderr.write('\nbolt status\n');
|
|
269
|
+
process.stderr.write('━'.repeat(50) + '\n');
|
|
270
|
+
// --- Gather data in parallel where possible ---
|
|
271
|
+
const gitState = await checkGitState();
|
|
272
|
+
formatGitSection(gitState);
|
|
273
|
+
const ddevStatus = await getDdevStatus();
|
|
274
|
+
if (!ddevStatus.running) {
|
|
275
|
+
logSection('Site');
|
|
276
|
+
logFail('DDEV not running — start DDEV to see full status');
|
|
277
|
+
log('Run: ddev start\n');
|
|
278
|
+
process.exit(0);
|
|
279
|
+
}
|
|
280
|
+
// Gather site data in parallel.
|
|
281
|
+
const [drupalVersion, phpVersion, outdatedPackages, siteProfile] = await Promise.all([
|
|
282
|
+
getDrupalVersion(),
|
|
283
|
+
getPhpVersion(),
|
|
284
|
+
getOutdatedPackages(),
|
|
285
|
+
getSiteProfile(),
|
|
286
|
+
]);
|
|
287
|
+
const status = {
|
|
288
|
+
git: gitState,
|
|
289
|
+
ddevRunning: ddevStatus.running,
|
|
290
|
+
siteUrl: ddevStatus.url,
|
|
291
|
+
drupalVersion,
|
|
292
|
+
phpVersion,
|
|
293
|
+
outdatedPackages,
|
|
294
|
+
securityAdvisories: outdatedPackages.filter((p) => p.isSecurityUpdate).map((p) => p.name),
|
|
295
|
+
siteProfile,
|
|
296
|
+
lastTestResults: getLastTestResults(cwd),
|
|
297
|
+
};
|
|
298
|
+
formatSiteSection(status);
|
|
299
|
+
formatUpdatesSection(status.outdatedPackages);
|
|
300
|
+
// --- AI assessment (if enabled and updates are available) ---
|
|
301
|
+
const useAi = !options.noAi && status.outdatedPackages.length > 0;
|
|
302
|
+
if (useAi) {
|
|
303
|
+
const claudeAvailable = await isClaudeAvailable();
|
|
304
|
+
if (claudeAvailable) {
|
|
305
|
+
log('');
|
|
306
|
+
log(' Analyzing updates...');
|
|
307
|
+
const task = buildStatusAssessmentTask({
|
|
308
|
+
outdatedPackages: status.outdatedPackages,
|
|
309
|
+
drupalVersion: status.drupalVersion,
|
|
310
|
+
phpVersion: status.phpVersion,
|
|
311
|
+
enabledModules: status.siteProfile?.enabledModules ?? [],
|
|
312
|
+
securityAdvisories: status.securityAdvisories,
|
|
313
|
+
});
|
|
314
|
+
const result = await runAgent(task);
|
|
315
|
+
if (result.success) {
|
|
316
|
+
const assessment = validateStatusOutput(result.output);
|
|
317
|
+
if (assessment) {
|
|
318
|
+
formatAiAssessment(assessment);
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
logWarn('AI returned unexpected format — showing raw assessment');
|
|
322
|
+
if (result.rawResponse) {
|
|
323
|
+
log(` ${result.rawResponse.slice(0, 500)}`);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
logWarn('AI assessment failed');
|
|
329
|
+
if (result.rawResponse) {
|
|
330
|
+
log(` ${result.rawResponse.slice(0, 200)}`);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
else if (!options.noAi) {
|
|
335
|
+
logWarn('Claude Code not available — skipping AI assessment');
|
|
336
|
+
log('Install Claude Code for risk analysis: https://claude.ai/code');
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// --- JSON output ---
|
|
340
|
+
if (options.output === 'json') {
|
|
341
|
+
const jsonOutput = {
|
|
342
|
+
git: {
|
|
343
|
+
branch: gitState.currentBranch,
|
|
344
|
+
dirty: gitState.isDirty,
|
|
345
|
+
dirtyFileCount: gitState.dirtyFileCount,
|
|
346
|
+
unpushedCommits: gitState.unpushedCommits.length,
|
|
347
|
+
},
|
|
348
|
+
site: {
|
|
349
|
+
url: status.siteUrl,
|
|
350
|
+
drupalVersion: status.drupalVersion,
|
|
351
|
+
phpVersion: status.phpVersion,
|
|
352
|
+
},
|
|
353
|
+
updates: {
|
|
354
|
+
total: status.outdatedPackages.length,
|
|
355
|
+
security: status.securityAdvisories.length,
|
|
356
|
+
packages: status.outdatedPackages,
|
|
357
|
+
},
|
|
358
|
+
};
|
|
359
|
+
process.stdout.write(JSON.stringify(jsonOutput, null, 2) + '\n');
|
|
360
|
+
}
|
|
361
|
+
process.stderr.write('\n');
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAA0B,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAiB,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAwB,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAyB,MAAM,oCAAoC,CAAC;AAEjG,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAW1C,mCAAmC;AAEnC,SAAS,GAAG,CAAC,GAAW;IACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,KAAK,CAAC,GAAW;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,OAAO,CAAC,GAAW;IAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AACxC,CAAC;AAED,oDAAoD;AACpD,KAAK,UAAU,IAAI,CACjB,OAAe,EACf,IAAc,EACd,OAAO,GAAG,MAAM;IAEhB,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE;YAC5D,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;YAC3B,OAAO;SACR,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACzC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,GAA+D,CAAC;YAChF,OAAO;gBACL,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;gBAC5B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO;gBACrC,QAAQ,EAAE,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC9D,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC1D,CAAC;AACH,CAAC;AAyBD,yBAAyB;AAEzB,KAAK,UAAU,aAAa;IAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IACpC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC;IAChF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,SAAS,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC;IAChF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,EAAE,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IAEjG,IAAI,IAA6B,CAAC;IAClC,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAkC,CAAC;IAC5E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IAEzC,OAAO,SAAS;SACb,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC;SACtD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACb,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,cAAc,EAAE,GAAG,CAAC,OAAO;QAC3B,aAAa,EAAE,GAAG,CAAC,MAAM;QACzB,UAAU,EAAE,GAAG,CAAC,eAAe,CAAC,IAAI,SAAS;QAC7C,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;KACjD,CAAC,CAAC,CAAC;AACR,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAmD,CAAC;QAC5E,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gCAAgC;IAClC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,sBAAsB,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7E,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACrC,mDAAmD;IACnD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;aAC9B,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAC1C,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC;YACnB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE;SACjD,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAoB,EAAE,CAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAE3E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4BAA4B;AAE5B,SAAS,gBAAgB,CAAC,GAAa;IACrC,UAAU,CAAC,KAAK,CAAC,CAAC;IAElB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,KAAK,CAAC,WAAW,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;IAEtC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,GAAG,CAAC,cAAc,wBAAwB,CAAC,CAAC;QACvD,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YAC/B,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM,qBAAqB,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAkB;IAC3C,UAAU,CAAC,MAAM,CAAC,CAAC;IAEnB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC5B,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IAED,KAAK,CAAC,iBAAiB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAEzC,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACvC,KAAK,CAAC,UAAU,MAAM,CAAC,aAAa,SAAS,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,OAAO,GAAI,MAAM,CAAC,WAAW,CAAC,YAA0B,EAAE,MAAM,IAAI,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAI,MAAM,CAAC,WAAW,CAAC,gBAA8B,EAAE,MAAM,IAAI,CAAC,CAAC;QAChF,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,gBAAgB,CAAC,CAAC;QAC3C,IAAI,OAAO,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,oBAAoB,CAAC,CAAC;QAC5D,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,QAA2B;IACvD,UAAU,CAAC,mBAAmB,CAAC,CAAC;IAEhC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAE5D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,sBAAsB,CAAC,CAAC;QAClD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,cAAc,MAAM,GAAG,CAAC,aAAa,aAAa,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,KAAK,oBAAoB,CAAC,CAAC,CAAC,OAAO;gBAC5D,CAAC,CAAC,GAAG,CAAC,UAAU,KAAK,iBAAiB,CAAC,CAAC,CAAC,aAAa;oBACtD,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;YACnB,GAAG,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,cAAc,MAAM,GAAG,CAAC,aAAa,KAAK,IAAI,GAAG,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,UAA4B;IACtD,UAAU,CAAC,eAAe,CAAC,CAAC;IAE5B,eAAe;IACf,IAAI,UAAU,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QACnC,KAAK,CAAC,SAAS,UAAU,CAAC,SAAS,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,UAAU,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC7C,OAAO,CAAC,SAAS,UAAU,CAAC,SAAS,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,SAAS,UAAU,CAAC,SAAS,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,2BAA2B;IAC3B,IAAI,UAAU,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,GAAG,CAAC,6BAA6B,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC5C,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,WAAW;IACX,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO,CAAC,OAAO,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,GAAG,CAAC,eAAe,CAAC,CAAC;QACrB,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;YACxC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC;AAED,uBAAuB;AAEvB,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAE5C,iDAAiD;IACjD,MAAM,QAAQ,GAAG,MAAM,aAAa,EAAE,CAAC;IACvC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE3B,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;IAEzC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QACxB,UAAU,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,CAAC,kDAAkD,CAAC,CAAC;QAC5D,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gCAAgC;IAChC,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnF,gBAAgB,EAAE;QAClB,aAAa,EAAE;QACf,mBAAmB,EAAE;QACrB,cAAc,EAAE;KACjB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAe;QACzB,GAAG,EAAE,QAAQ;QACb,WAAW,EAAE,UAAU,CAAC,OAAO;QAC/B,OAAO,EAAE,UAAU,CAAC,GAAG;QACvB,aAAa;QACb,UAAU;QACV,gBAAgB;QAChB,kBAAkB,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACzF,WAAW;QACX,eAAe,EAAE,kBAAkB,CAAC,GAAG,CAAC;KACzC,CAAC;IAEF,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAE9C,+DAA+D;IAC/D,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IAElE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,eAAe,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAClD,IAAI,eAAe,EAAE,CAAC;YACpB,GAAG,CAAC,EAAE,CAAC,CAAC;YACR,GAAG,CAAC,wBAAwB,CAAC,CAAC;YAE9B,MAAM,IAAI,GAAG,yBAAyB,CAAC;gBACrC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,cAAc,EAAG,MAAM,CAAC,WAAW,EAAE,cAA2B,IAAI,EAAE;gBACtE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;aAC9C,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,UAAU,GAAG,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACvD,IAAI,UAAU,EAAE,CAAC;oBACf,kBAAkB,CAAC,UAAU,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,wDAAwD,CAAC,CAAC;oBAClE,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;wBACvB,GAAG,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBACjD,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,sBAAsB,CAAC,CAAC;gBAChC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;oBACvB,GAAG,CAAC,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACzB,OAAO,CAAC,oDAAoD,CAAC,CAAC;YAC9D,GAAG,CAAC,+DAA+D,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG;YACjB,GAAG,EAAE;gBACH,MAAM,EAAE,QAAQ,CAAC,aAAa;gBAC9B,KAAK,EAAE,QAAQ,CAAC,OAAO;gBACvB,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAC,MAAM;aACjD;YACD,IAAI,EAAE;gBACJ,GAAG,EAAE,MAAM,CAAC,OAAO;gBACnB,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B;YACD,OAAO,EAAE;gBACP,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,MAAM;gBACrC,QAAQ,EAAE,MAAM,CAAC,kBAAkB,CAAC,MAAM;gBAC1C,QAAQ,EAAE,MAAM,CAAC,gBAAgB;aAClC;SACF,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
|