@entelligentsia/forgecli 0.10.1 → 0.11.2
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/CHANGELOG.md +78 -0
- package/README.md +21 -3
- package/dist/CHANGELOG-forge-plugin.md +22 -0
- package/dist/extensions/forgecli/add-pipeline.d.ts +19 -0
- package/dist/extensions/forgecli/add-pipeline.js +143 -0
- package/dist/extensions/forgecli/add-pipeline.js.map +1 -0
- package/dist/extensions/forgecli/add-task.d.ts +20 -0
- package/dist/extensions/forgecli/add-task.js +154 -0
- package/dist/extensions/forgecli/add-task.js.map +1 -0
- package/dist/extensions/forgecli/calibrate.d.ts +61 -0
- package/dist/extensions/forgecli/calibrate.js +488 -0
- package/dist/extensions/forgecli/calibrate.js.map +1 -0
- package/dist/extensions/forgecli/fix-bug.d.ts +9 -1
- package/dist/extensions/forgecli/fix-bug.js +70 -8
- package/dist/extensions/forgecli/fix-bug.js.map +1 -1
- package/dist/extensions/forgecli/forge-commands.js +15 -22
- package/dist/extensions/forgecli/forge-commands.js.map +1 -1
- package/dist/extensions/forgecli/forge-subagent.js +34 -7
- package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
- package/dist/extensions/forgecli/forge-update-command.d.ts +9 -0
- package/dist/extensions/forgecli/forge-update-command.js +106 -7
- package/dist/extensions/forgecli/forge-update-command.js.map +1 -1
- package/dist/extensions/forgecli/health-check.d.ts +22 -1
- package/dist/extensions/forgecli/health-check.js +177 -4
- package/dist/extensions/forgecli/health-check.js.map +1 -1
- package/dist/extensions/forgecli/hook-dispatcher.d.ts +25 -1
- package/dist/extensions/forgecli/hook-dispatcher.js +104 -9
- package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
- package/dist/extensions/forgecli/hooks/check-update.d.ts +81 -0
- package/dist/extensions/forgecli/hooks/check-update.js +308 -0
- package/dist/extensions/forgecli/hooks/check-update.js.map +1 -0
- package/dist/extensions/forgecli/hooks/forge-permissions.d.ts +32 -0
- package/dist/extensions/forgecli/hooks/forge-permissions.js +119 -0
- package/dist/extensions/forgecli/hooks/forge-permissions.js.map +1 -0
- package/dist/extensions/forgecli/hooks/triage-error.d.ts +23 -0
- package/dist/extensions/forgecli/hooks/triage-error.js +62 -0
- package/dist/extensions/forgecli/hooks/triage-error.js.map +1 -0
- package/dist/extensions/forgecli/hooks/write-guard.d.ts +28 -0
- package/dist/extensions/forgecli/hooks/write-guard.js +225 -0
- package/dist/extensions/forgecli/hooks/write-guard.js.map +1 -0
- package/dist/extensions/forgecli/index.js +60 -0
- package/dist/extensions/forgecli/index.js.map +1 -1
- package/dist/extensions/forgecli/init-context.d.ts +1 -1
- package/dist/extensions/forgecli/init-context.js +21 -6
- package/dist/extensions/forgecli/init-context.js.map +1 -1
- package/dist/extensions/forgecli/materialize.d.ts +16 -0
- package/dist/extensions/forgecli/materialize.js +195 -0
- package/dist/extensions/forgecli/materialize.js.map +1 -0
- package/dist/extensions/forgecli/migrate.d.ts +19 -0
- package/dist/extensions/forgecli/migrate.js +258 -0
- package/dist/extensions/forgecli/migrate.js.map +1 -0
- package/dist/extensions/forgecli/migration-engine.d.ts +111 -0
- package/dist/extensions/forgecli/migration-engine.js +533 -0
- package/dist/extensions/forgecli/migration-engine.js.map +1 -0
- package/dist/extensions/forgecli/quiz-agent.d.ts +17 -0
- package/dist/extensions/forgecli/quiz-agent.js +98 -0
- package/dist/extensions/forgecli/quiz-agent.js.map +1 -0
- package/dist/extensions/forgecli/remove-command.d.ts +17 -0
- package/dist/extensions/forgecli/remove-command.js +124 -0
- package/dist/extensions/forgecli/remove-command.js.map +1 -0
- package/dist/extensions/forgecli/report-bug.d.ts +25 -0
- package/dist/extensions/forgecli/report-bug.js +159 -0
- package/dist/extensions/forgecli/report-bug.js.map +1 -0
- package/dist/extensions/forgecli/retrospective.d.ts +19 -0
- package/dist/extensions/forgecli/retrospective.js +156 -0
- package/dist/extensions/forgecli/retrospective.js.map +1 -0
- package/dist/extensions/forgecli/run-sprint.js +34 -0
- package/dist/extensions/forgecli/run-sprint.js.map +1 -1
- package/dist/extensions/forgecli/run-task.d.ts +9 -1
- package/dist/extensions/forgecli/run-task.js +64 -10
- package/dist/extensions/forgecli/run-task.js.map +1 -1
- package/dist/extensions/forgecli/session-registry.d.ts +27 -2
- package/dist/extensions/forgecli/session-registry.js +52 -1
- package/dist/extensions/forgecli/session-registry.js.map +1 -1
- package/dist/extensions/forgecli/status-command.d.ts +19 -0
- package/dist/extensions/forgecli/status-command.js +140 -0
- package/dist/extensions/forgecli/status-command.js.map +1 -0
- package/dist/extensions/forgecli/store-query.d.ts +22 -0
- package/dist/extensions/forgecli/store-query.js +107 -0
- package/dist/extensions/forgecli/store-query.js.map +1 -0
- package/dist/extensions/forgecli/store-repair.d.ts +17 -0
- package/dist/extensions/forgecli/store-repair.js +123 -0
- package/dist/extensions/forgecli/store-repair.js.map +1 -0
- package/dist/extensions/forgecli/thread-switcher.js +213 -28
- package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
- package/dist/extensions/forgecli/update-tools.d.ts +23 -0
- package/dist/extensions/forgecli/update-tools.js +136 -0
- package/dist/extensions/forgecli/update-tools.js.map +1 -0
- package/dist/extensions/forgecli/viewport-theme.js +4 -0
- package/dist/extensions/forgecli/viewport-theme.js.map +1 -1
- package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
- package/dist/forge-payload/.schemas/config.schema.json +83 -0
- package/dist/forge-payload/.schemas/migrations.json +2049 -0
- package/dist/forge-payload/commands/regenerate.md +17 -1
- package/dist/forge-payload/meta/personas/README.md +16 -0
- package/dist/forge-payload/meta/personas/meta-architect.md +70 -0
- package/dist/forge-payload/meta/personas/meta-bug-fixer.md +73 -0
- package/dist/forge-payload/meta/personas/meta-collator.md +72 -0
- package/dist/forge-payload/meta/personas/meta-engineer.md +70 -0
- package/dist/forge-payload/meta/personas/meta-orchestrator.md +71 -0
- package/dist/forge-payload/meta/personas/meta-product-manager.md +82 -0
- package/dist/forge-payload/meta/personas/meta-qa-engineer.md +91 -0
- package/dist/forge-payload/meta/personas/meta-supervisor.md +92 -0
- package/dist/forge-payload/meta/skill-recommendations.md +154 -0
- package/dist/forge-payload/meta/skills/meta-architect-skills.md +43 -0
- package/dist/forge-payload/meta/skills/meta-bug-fixer-skills.md +43 -0
- package/dist/forge-payload/meta/skills/meta-collator-skills.md +41 -0
- package/dist/forge-payload/meta/skills/meta-engineer-skills.md +43 -0
- package/dist/forge-payload/meta/skills/meta-generic-skills.md +58 -0
- package/dist/forge-payload/meta/skills/meta-qa-engineer-skills.md +46 -0
- package/dist/forge-payload/meta/skills/meta-supervisor-skills.md +43 -0
- package/dist/forge-payload/meta/store-schema/bug.schema.md +71 -0
- package/dist/forge-payload/meta/store-schema/event.schema.md +76 -0
- package/dist/forge-payload/meta/store-schema/feature.schema.md +65 -0
- package/dist/forge-payload/meta/store-schema/sprint.schema.md +64 -0
- package/dist/forge-payload/meta/store-schema/task.schema.md +78 -0
- package/dist/forge-payload/meta/templates/meta-code-review.md +26 -0
- package/dist/forge-payload/meta/templates/meta-plan-review.md +28 -0
- package/dist/forge-payload/meta/templates/meta-plan.md +28 -0
- package/dist/forge-payload/meta/templates/meta-progress.md +25 -0
- package/dist/forge-payload/meta/templates/meta-retrospective.md +28 -0
- package/dist/forge-payload/meta/templates/meta-sprint-manifest.md +26 -0
- package/dist/forge-payload/meta/templates/meta-sprint-requirements.md +91 -0
- package/dist/forge-payload/meta/templates/meta-task-prompt.md +26 -0
- package/dist/forge-payload/meta/tool-specs/collate.spec.md +88 -0
- package/dist/forge-payload/meta/tool-specs/generation-manifest.spec.md +139 -0
- package/dist/forge-payload/meta/tool-specs/manage-config.spec.md +143 -0
- package/dist/forge-payload/meta/tool-specs/seed-store.spec.md +91 -0
- package/dist/forge-payload/meta/tool-specs/store-cli.spec.md +328 -0
- package/dist/forge-payload/meta/tool-specs/validate-store.spec.md +191 -0
- package/dist/forge-payload/meta/workflows/_fragments/context-injection.md +75 -0
- package/dist/forge-payload/meta/workflows/_fragments/event-emission-schema.md +73 -0
- package/dist/forge-payload/meta/workflows/_fragments/finalize.md +13 -0
- package/dist/forge-payload/meta/workflows/_fragments/friction-emit.md +73 -0
- package/dist/forge-payload/meta/workflows/_fragments/progress-reporting.md +38 -0
- package/dist/forge-payload/meta/workflows/_fragments/store-cli-verbs.md +39 -0
- package/dist/forge-payload/meta/workflows/meta-approve.md +119 -0
- package/dist/forge-payload/meta/workflows/meta-collate.md +89 -0
- package/dist/forge-payload/meta/workflows/meta-commit.md +93 -0
- package/dist/forge-payload/meta/workflows/meta-enhance.md +286 -0
- package/dist/forge-payload/meta/workflows/meta-fix-bug.md +501 -0
- package/dist/forge-payload/meta/workflows/meta-implement.md +132 -0
- package/dist/forge-payload/meta/workflows/meta-migrate.md +455 -0
- package/dist/forge-payload/meta/workflows/meta-orchestrate.md +993 -0
- package/dist/forge-payload/meta/workflows/meta-plan-task.md +133 -0
- package/dist/forge-payload/meta/workflows/meta-quiz-agent.md +135 -0
- package/dist/forge-payload/meta/workflows/meta-retrospective.md +65 -0
- package/dist/forge-payload/meta/workflows/meta-review-implementation.md +119 -0
- package/dist/forge-payload/meta/workflows/meta-review-plan.md +108 -0
- package/dist/forge-payload/meta/workflows/meta-review-sprint-completion.md +65 -0
- package/dist/forge-payload/meta/workflows/meta-sprint-intake.md +76 -0
- package/dist/forge-payload/meta/workflows/meta-sprint-plan.md +147 -0
- package/dist/forge-payload/meta/workflows/meta-update-implementation.md +76 -0
- package/dist/forge-payload/meta/workflows/meta-update-plan.md +76 -0
- package/dist/forge-payload/meta/workflows/meta-validate.md +111 -0
- package/dist/forge-payload/tools/check-structure.cjs +344 -0
- package/dist/forge-payload/tools/list-skills.js +76 -0
- package/dist/forge-payload/tools/store-cli.cjs +27 -1
- package/dist/forge-payload/tools/substitute-placeholders.cjs +60 -8
- package/dist/forge-payload/tools/verify-integrity.cjs +86 -0
- package/package.json +2 -2
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
// Guided /forge:update command + bundled-forge drift prompt — FORGE-S16-T15.
|
|
2
|
+
// Migration apply integration — FORGE-S23-T01.
|
|
2
3
|
//
|
|
3
4
|
// Single update path: detect npm install method, refuse non-global, show
|
|
4
5
|
// changelog from GitHub releases (Entelligentsia/forge-cli), confirm via
|
|
5
6
|
// ctx.ui.confirm, then spawn `npm i -g @entelligentsia/forgecli@latest` via
|
|
6
|
-
// execFile (argv array — no shell).
|
|
7
|
-
//
|
|
8
|
-
// prompt (Q7 detect+prompt; never auto-applies).
|
|
7
|
+
// execFile (argv array — no shell). After upgrade, prompt to run migrations
|
|
8
|
+
// from the old bundled-forge version to the new one.
|
|
9
9
|
//
|
|
10
10
|
// Version detection uses the npm registry (authoritative); GitHub releases are
|
|
11
11
|
// used only for the changelog body via a tag-specific URL.
|
|
12
12
|
import { execFile } from "node:child_process";
|
|
13
|
-
import { promises as fs } from "node:fs";
|
|
13
|
+
import { promises as fs, existsSync, readFileSync } from "node:fs";
|
|
14
14
|
import * as path from "node:path";
|
|
15
15
|
import { promisify } from "node:util";
|
|
16
16
|
import { getUserCacheDir } from "./paths/paths.js";
|
|
17
|
+
import { getBundledPayloadRoot } from "./forge-init.js";
|
|
18
|
+
import { runMigrations } from "./migration-engine.js";
|
|
17
19
|
const execFileAsync = promisify(execFile);
|
|
18
20
|
const PKG_NAME = "@entelligentsia/forgecli";
|
|
19
21
|
const NPM_DIST_TAGS_URL = "https://registry.npmjs.org/@entelligentsia/forgecli";
|
|
@@ -193,7 +195,7 @@ export async function checkBundledForgeDrift(opts) {
|
|
|
193
195
|
const last = cache.lastSeenBundledForgeVersion;
|
|
194
196
|
if (last && last !== current && !cache.promptedForVersions.includes(current)) {
|
|
195
197
|
opts.notify(`forge: bundled forge plugin changed (${last} → ${current}). ` +
|
|
196
|
-
|
|
198
|
+
`Run /forge:update to apply project migrations from v${last} to v${current}.`, "info");
|
|
197
199
|
cache.promptedForVersions = [...cache.promptedForVersions, current];
|
|
198
200
|
}
|
|
199
201
|
cache.lastSeenBundledForgeVersion = current;
|
|
@@ -251,8 +253,105 @@ export function registerForgeUpdateCommand(pi, opts) {
|
|
|
251
253
|
return;
|
|
252
254
|
}
|
|
253
255
|
ctx.ui.notify(`forge:update — installed ${PKG_NAME}@${release.version}. ` +
|
|
254
|
-
"Restart your forge session for the new version to take effect. "
|
|
255
|
-
|
|
256
|
+
"Restart your forge session for the new version to take effect.", "info");
|
|
257
|
+
// 5. Migration prompt — offer to apply project migrations (§2A, §2D)
|
|
258
|
+
// Only runs when the caller has opted into migration support by providing
|
|
259
|
+
// migrationRunner or currentBundledForgeVersion. Without those the command
|
|
260
|
+
// was invoked in a context where migrations are not wired (e.g. tests for
|
|
261
|
+
// the base upgrade flow, or environments without a bundled payload).
|
|
262
|
+
if (opts.migrationRunner === undefined && opts.currentBundledForgeVersion === undefined) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
// fromVersion comes from the drift cache (what the bundle was before upgrade).
|
|
266
|
+
// toVersion comes from the newly installed bundle's plugin.json.
|
|
267
|
+
const cacheDir = opts.driftCacheDir ?? defaultCacheDir();
|
|
268
|
+
const driftCache = await readDriftCache(cacheDir);
|
|
269
|
+
const fromVersion = driftCache.lastSeenBundledForgeVersion;
|
|
270
|
+
// Read toVersion from the newly installed bundle's plugin.json
|
|
271
|
+
let toVersion = opts.currentBundledForgeVersion ?? null;
|
|
272
|
+
if (!toVersion) {
|
|
273
|
+
try {
|
|
274
|
+
const bundleRoot = getBundledPayloadRoot();
|
|
275
|
+
const pluginJsonPath = path.join(bundleRoot, ".claude-plugin", "plugin.json");
|
|
276
|
+
if (existsSync(pluginJsonPath)) {
|
|
277
|
+
const pluginJson = JSON.parse(readFileSync(pluginJsonPath, "utf8"));
|
|
278
|
+
toVersion = pluginJson.version ?? null;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
// Unable to read plugin.json — skip migration prompt
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
if (fromVersion && toVersion && fromVersion !== toVersion) {
|
|
286
|
+
// Determine whether to auto-apply (FORGE_NON_INTERACTIVE=1) or prompt
|
|
287
|
+
const nonInteractive = process.env["FORGE_NON_INTERACTIVE"] === "1";
|
|
288
|
+
let applyMigrations = nonInteractive;
|
|
289
|
+
if (!nonInteractive) {
|
|
290
|
+
applyMigrations = await ctx.ui.confirm(`Run migrations from v${fromVersion} to v${toVersion}?`, `The bundled forge plugin was updated from v${fromVersion} to v${toVersion}.\n` +
|
|
291
|
+
`Applying migrations will regenerate any changed .forge/ files to match the new version.`);
|
|
292
|
+
}
|
|
293
|
+
if (applyMigrations) {
|
|
294
|
+
ctx.ui.setStatus("forge:update", `Applying migrations v${fromVersion} → v${toVersion}…`);
|
|
295
|
+
try {
|
|
296
|
+
const migRunner = opts.migrationRunner ?? runMigrations;
|
|
297
|
+
const bundleRoot = getBundledPayloadRoot();
|
|
298
|
+
const projectRoot = opts.migrationProjectRoot ?? process.cwd();
|
|
299
|
+
const migResult = await migRunner({
|
|
300
|
+
bundleRoot,
|
|
301
|
+
projectRoot,
|
|
302
|
+
fromVersion,
|
|
303
|
+
toVersion,
|
|
304
|
+
});
|
|
305
|
+
ctx.ui.setStatus("forge:update", undefined);
|
|
306
|
+
// Emit SYS-migration event for each applied version (mandatory per §2D)
|
|
307
|
+
// These are informational store events that survive post-session analysis.
|
|
308
|
+
for (const applied of migResult.applied) {
|
|
309
|
+
try {
|
|
310
|
+
const payload = JSON.stringify({
|
|
311
|
+
fromVersion: applied.fromVersion,
|
|
312
|
+
toVersion: applied.toVersion,
|
|
313
|
+
appliedCategories: applied.categories,
|
|
314
|
+
timestamp: new Date().toISOString(),
|
|
315
|
+
});
|
|
316
|
+
await execFileAsync("node", [
|
|
317
|
+
path.join(bundleRoot, "tools", "store-cli.cjs"),
|
|
318
|
+
"emit",
|
|
319
|
+
"SYS-migration",
|
|
320
|
+
payload,
|
|
321
|
+
], { cwd: projectRoot }).catch(() => {
|
|
322
|
+
// store-cli not available or project not initialized — non-fatal
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
// Non-fatal: event emission failure doesn't block migration result
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
// Report results
|
|
330
|
+
if (migResult.applied.length > 0) {
|
|
331
|
+
ctx.ui.notify(`forge:update — applied ${migResult.applied.length} migration(s) from v${fromVersion} to v${toVersion}. ` +
|
|
332
|
+
`${migResult.schemasRefreshed.length} schema file(s) refreshed.`, "info");
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
ctx.ui.notify(`forge:update — no migrations needed from v${fromVersion} to v${toVersion}.`, "info");
|
|
336
|
+
}
|
|
337
|
+
if (migResult.skippedBreaking.length > 0) {
|
|
338
|
+
ctx.ui.notify(`forge:update — ${migResult.skippedBreaking.length} breaking migration(s) skipped. Manual review required.`, "warning");
|
|
339
|
+
}
|
|
340
|
+
if (migResult.manualSteps.length > 0) {
|
|
341
|
+
const steps = migResult.manualSteps.flatMap((m) => m.steps);
|
|
342
|
+
ctx.ui.notify(`forge:update — manual steps required:\n${steps.map((s) => ` • ${s}`).join("\n")}`, "warning");
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
catch (err) {
|
|
346
|
+
ctx.ui.setStatus("forge:update", undefined);
|
|
347
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
348
|
+
ctx.ui.notify(`forge:update — migration failed: ${msg}. Check .forge/ state manually.`, "error");
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
else if (!nonInteractive) {
|
|
352
|
+
ctx.ui.notify(`forge:update — migrations skipped. Run /forge:update again to apply migrations from v${fromVersion} to v${toVersion}.`, "info");
|
|
353
|
+
}
|
|
354
|
+
}
|
|
256
355
|
},
|
|
257
356
|
});
|
|
258
357
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge-update-command.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/forge-update-command.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"forge-update-command.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/forge-update-command.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,+CAA+C;AAC/C,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,4EAA4E;AAC5E,4EAA4E;AAC5E,qDAAqD;AACrD,EAAE;AACF,+EAA+E;AAC/E,2DAA2D;AAE3D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,QAAQ,GAAG,0BAA0B,CAAC;AAC5C,MAAM,iBAAiB,GAAG,qDAAqD,CAAC;AAChF,SAAS,eAAe,CAAC,OAAe;IACvC,OAAO,wEAAwE,OAAO,EAAE,CAAC;AAC1F,CAAC;AACD,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,kBAAkB,GAAG,OAAO,CAAC;AACnC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACjC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAS9B;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA0B;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9C,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvF,OAAO,WAAW,CAAC;AACpB,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAsB;IAC5D,MAAM,GAAG,GAAG,MAAM,IAAK,aAA+B,CAAC;IACvD,IAAI,CAAC;QACJ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACtF,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAuB;IAC3D,iFAAiF;IACjF,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACpE,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,iBAAiB,EAAE;YAC9C,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;SACvC,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA2C,CAAC;YAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;YACtC,UAAU,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,8BAA8B;IAC/B,CAAC;YAAS,CAAC;QACV,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IAE9E,gFAAgF;IAChF,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAClE,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YACrD,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,EAAE,MAAM,EAAE,6BAA6B,EAAE;SAClD,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAC;YACtD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;QAC5D,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,kDAAkD;IACnD,CAAC;YAAS,CAAC;QACV,YAAY,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC7B,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,MAAc;IACxD,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE;YAAE,OAAO,IAAI,CAAC;QAC/B,IAAI,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAC,CAAE;YAAE,OAAO,KAAK,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAe,EAAE,MAAc,EAAE,IAAY;IACpF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;IACvG,OAAO;QACN,YAAY,OAAO,EAAE;QACrB,YAAY,MAAM,EAAE;QACpB,EAAE;QACF,gBAAgB;QAChB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB;QACrD,EAAE;QACF,2BAA2B,QAAQ,IAAI,MAAM,EAAE;KAC/C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,MAAsB;IACpE,MAAM,GAAG,GAAG,MAAM,IAAK,aAA+B,CAAC;IACvD,IAAI,CAAC;QACJ,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAChG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,GAA6D,CAAC;QACxE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC;IAChG,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS,EAAE,GAAW;IACvC,OAAO,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,4EAA4E;AAC5E,2EAA2E;AAC3E,2EAA2E;AAC3E,gCAAgC;AAEhC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAO3C,SAAS,eAAe;IACvB,OAAO,eAAe,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;AACzC,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC;QACtD,OAAO;YACN,2BAA2B,EAC1B,OAAO,MAAM,CAAC,2BAA2B,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI;YACnG,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBAC7D,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;gBAC9E,CAAC,CAAC,EAAE;SACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,2BAA2B,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC;IACvE,CAAC;AACF,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,KAAiB;IAC5D,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,GAAG,GAAG,GAAG,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IACxD,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAChE,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7B,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAuB;IACnE,MAAM,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC;IAChD,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,eAAe,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,KAAK,CAAC,2BAA2B,CAAC;IAC/C,IAAI,IAAI,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9E,IAAI,CAAC,MAAM,CACV,wCAAwC,IAAI,MAAM,OAAO,KAAK;YAC7D,uDAAuD,IAAI,QAAQ,OAAO,GAAG,EAC9E,MAAM,CACN,CAAC;QACF,KAAK,CAAC,mBAAmB,GAAG,CAAC,GAAG,KAAK,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,CAAC,2BAA2B,GAAG,OAAO,CAAC;IAC5C,IAAI,CAAC;QACJ,MAAM,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACR,mDAAmD;IACpD,CAAC;AACF,CAAC;AAoBD,MAAM,UAAU,0BAA0B,CAAC,EAAgB,EAAE,IAAkC;IAC9F,EAAE,CAAC,eAAe,CAAC,cAAc,EAAE;QAClC,WAAW,EAAE,0EAA0E;QACvF,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;YAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,IAAI,CAAC,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAE3E,qCAAqC;YACrC,MAAM,UAAU,GAAG,MAAM,aAAa,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;YAC1E,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzB,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,kCAAkC,MAAM,wCAAwC;oBAC/E,iDAAiD;oBACjD,iCAAiC,QAAQ,SAAS,EACnD,SAAS,CACT,CAAC;gBACF,OAAO;YACR,CAAC;YAED,mCAAmC;YACnC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,gCAAgC,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;YAChD,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,wEAAwE;oBACvE,+DAA+D,QAAQ,SAAS,EACjF,OAAO,CACP,CAAC;gBACF,OAAO;YACR,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,iDAAiD,OAAO,uBAAuB,OAAO,CAAC,OAAO,IAAI,EAClG,MAAM,CACN,CAAC;gBACF,OAAO;YACR,CAAC;YAED,qCAAqC;YACrC,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAChF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,oBAAoB,OAAO,MAAM,OAAO,CAAC,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC;YACnG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;gBACnD,OAAO;YACR,CAAC;YAED,gDAAgD;YAChD,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,gBAAgB,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBAChB,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,mCAAmC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI;oBAClE,+EAA+E,EAChF,OAAO,CACP,CAAC;gBACF,OAAO;YACR,CAAC;YAED,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,4BAA4B,QAAQ,IAAI,OAAO,CAAC,OAAO,IAAI;gBAC1D,gEAAgE,EACjE,MAAM,CACN,CAAC;YAEF,qEAAqE;YACrE,0EAA0E;YAC1E,2EAA2E;YAC3E,0EAA0E;YAC1E,qEAAqE;YACrE,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,IAAI,IAAI,CAAC,0BAA0B,KAAK,SAAS,EAAE,CAAC;gBACzF,OAAO;YACR,CAAC;YAED,+EAA+E;YAC/E,iEAAiE;YACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,IAAI,eAAe,EAAE,CAAC;YACzD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,WAAW,GAAG,UAAU,CAAC,2BAA2B,CAAC;YAE3D,+DAA+D;YAC/D,IAAI,SAAS,GAAkB,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC;YACvE,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACJ,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;oBAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;oBAC9E,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;wBAChC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAEjE,CAAC;wBACF,SAAS,GAAG,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC;oBACxC,CAAC;gBACF,CAAC;gBAAC,MAAM,CAAC;oBACR,qDAAqD;gBACtD,CAAC;YACF,CAAC;YAED,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC3D,sEAAsE;gBACtE,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,GAAG,CAAC;gBACpE,IAAI,eAAe,GAAG,cAAc,CAAC;gBAErC,IAAI,CAAC,cAAc,EAAE,CAAC;oBACrB,eAAe,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,OAAO,CACrC,wBAAwB,WAAW,QAAQ,SAAS,GAAG,EACvD,8CAA8C,WAAW,QAAQ,SAAS,KAAK;wBAC9E,yFAAyF,CAC1F,CAAC;gBACH,CAAC;gBAED,IAAI,eAAe,EAAE,CAAC;oBACrB,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,wBAAwB,WAAW,OAAO,SAAS,GAAG,CAAC,CAAC;oBACzF,IAAI,CAAC;wBACJ,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,IAAI,aAAa,CAAC;wBACxD,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;wBAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC/D,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC;4BACjC,UAAU;4BACV,WAAW;4BACX,WAAW;4BACX,SAAS;yBACT,CAAC,CAAC;wBACH,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;wBAE5C,wEAAwE;wBACxE,2EAA2E;wBAC3E,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;4BACzC,IAAI,CAAC;gCACJ,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;oCAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;oCAChC,SAAS,EAAE,OAAO,CAAC,SAAS;oCAC5B,iBAAiB,EAAE,OAAO,CAAC,UAAU;oCACrC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iCACnC,CAAC,CAAC;gCACH,MAAM,aAAa,CAAC,MAAM,EAAE;oCAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,CAAC;oCAC/C,MAAM;oCACN,eAAe;oCACf,OAAO;iCACP,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;oCACnC,iEAAiE;gCAClE,CAAC,CAAC,CAAC;4BACJ,CAAC;4BAAC,MAAM,CAAC;gCACR,mEAAmE;4BACpE,CAAC;wBACF,CAAC;wBAED,iBAAiB;wBACjB,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAClC,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,0BAA0B,SAAS,CAAC,OAAO,CAAC,MAAM,uBAAuB,WAAW,QAAQ,SAAS,IAAI;gCACxG,GAAG,SAAS,CAAC,gBAAgB,CAAC,MAAM,4BAA4B,EACjE,MAAM,CACN,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACP,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,6CAA6C,WAAW,QAAQ,SAAS,GAAG,EAC5E,MAAM,CACN,CAAC;wBACH,CAAC;wBAED,IAAI,SAAS,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC1C,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,kBAAkB,SAAS,CAAC,eAAe,CAAC,MAAM,yDAAyD,EAC3G,SAAS,CACT,CAAC;wBACH,CAAC;wBAED,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BACtC,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;4BAC5D,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,0CAA0C,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACnF,SAAS,CACT,CAAC;wBACH,CAAC;oBACF,CAAC;oBAAC,OAAO,GAAY,EAAE,CAAC;wBACvB,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;wBAC5C,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC7D,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,oCAAoC,GAAG,iCAAiC,EACxE,OAAO,CACP,CAAC;oBACH,CAAC;gBACF,CAAC;qBAAM,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,CACZ,wFAAwF,WAAW,QAAQ,SAAS,GAAG,EACvH,MAAM,CACN,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACvB,WAAW;IACX,cAAc;IACd,cAAc;IACd,eAAe;IACf,eAAe;IACf,QAAQ;IACR,iBAAiB;IACjB,eAAe;IACf,kBAAkB;IAClB,mBAAmB;IACnB,gBAAgB;CAChB,CAAC"}
|
|
@@ -14,5 +14,26 @@ export interface HealthCheckResult {
|
|
|
14
14
|
*
|
|
15
15
|
* @param cwd - project working directory (where .forge/ lives)
|
|
16
16
|
* @param bundleRoot - path to dist/forge-payload/ (contains tools/)
|
|
17
|
+
* @param forgeRoot - optional path to the installed Forge plugin root (for plugin integrity check)
|
|
17
18
|
*/
|
|
18
|
-
export declare function runHealthCheck(cwd: string, bundleRoot: string): Promise<HealthCheckResult>;
|
|
19
|
+
export declare function runHealthCheck(cwd: string, bundleRoot: string, forgeRoot?: string): Promise<HealthCheckResult>;
|
|
20
|
+
/**
|
|
21
|
+
* Check for architecture docs not updated in over 90 days.
|
|
22
|
+
* Returns one HealthGap per stale file.
|
|
23
|
+
* Silently returns [] if the architecture directory does not exist.
|
|
24
|
+
*/
|
|
25
|
+
export declare function checkStaleDocs(cwd: string, config: Record<string, unknown>): HealthGap[];
|
|
26
|
+
/**
|
|
27
|
+
* Check for generated files that have been manually edited.
|
|
28
|
+
* Spawns generation-manifest.cjs list --modified from the bundled tools.
|
|
29
|
+
* Returns one HealthGap per modified/missing file.
|
|
30
|
+
* Silently returns [] if the tool is absent.
|
|
31
|
+
*/
|
|
32
|
+
export declare function checkModifiedGeneratedFiles(cwd: string, bundleRoot: string): HealthGap[];
|
|
33
|
+
/**
|
|
34
|
+
* Check plugin files against the integrity.json manifest.
|
|
35
|
+
* Natively implemented in TypeScript — no subprocess required.
|
|
36
|
+
* Returns one HealthGap per modified or missing file.
|
|
37
|
+
* Silently returns [] if forgeRoot is not provided or integrity.json is missing.
|
|
38
|
+
*/
|
|
39
|
+
export declare function checkPluginIntegrity(forgeRoot: string): HealthGap[];
|
|
@@ -6,13 +6,23 @@
|
|
|
6
6
|
// function directly. sendUserMessage is NOT used here (skill §198 pitfall).
|
|
7
7
|
//
|
|
8
8
|
// Implements a programmatic subset of the checks listed in
|
|
9
|
-
// forge/forge/commands/health.md
|
|
10
|
-
//
|
|
11
|
-
//
|
|
9
|
+
// forge/forge/commands/health.md. As of FORGE-S23-T07, covers 6/15 checks:
|
|
10
|
+
// 1. Config completeness
|
|
11
|
+
// 2. KB freshness
|
|
12
|
+
// 3. Stale docs (NEW — architecture/*.md files older than STALE_DOCS_THRESHOLD_MS)
|
|
13
|
+
// 8. Store integrity
|
|
14
|
+
// 9. Modified generated files (NEW — generation-manifest.cjs list --modified)
|
|
15
|
+
// 15. Plugin integrity (NEW — native TS hash check against forgeRoot/integrity.json)
|
|
16
|
+
//
|
|
17
|
+
// Full check output is returned as structured data; the caller formats it for
|
|
18
|
+
// display. See forge-cli/doc/health-parity-audit.md for the full parity table.
|
|
12
19
|
import { execFileSync } from "node:child_process";
|
|
13
20
|
import * as crypto from "node:crypto";
|
|
14
21
|
import * as fs from "node:fs";
|
|
15
22
|
import * as path from "node:path";
|
|
23
|
+
// ── Constants ──────────────────────────────────────────────────────────────
|
|
24
|
+
/** Architecture docs older than this are flagged as stale (90 days). */
|
|
25
|
+
const STALE_DOCS_THRESHOLD_MS = 90 * 24 * 60 * 60 * 1000;
|
|
16
26
|
// ── Required config fields ─────────────────────────────────────────────────
|
|
17
27
|
const REQUIRED_TOP_LEVEL = ["version", "project", "stack", "commands", "paths"];
|
|
18
28
|
const REQUIRED_PROJECT = ["name", "prefix"];
|
|
@@ -24,8 +34,9 @@ const REQUIRED_PATHS = ["engineering", "store", "workflows", "commands", "templa
|
|
|
24
34
|
*
|
|
25
35
|
* @param cwd - project working directory (where .forge/ lives)
|
|
26
36
|
* @param bundleRoot - path to dist/forge-payload/ (contains tools/)
|
|
37
|
+
* @param forgeRoot - optional path to the installed Forge plugin root (for plugin integrity check)
|
|
27
38
|
*/
|
|
28
|
-
export async function runHealthCheck(cwd, bundleRoot) {
|
|
39
|
+
export async function runHealthCheck(cwd, bundleRoot, forgeRoot) {
|
|
29
40
|
const gaps = [];
|
|
30
41
|
// 1. Config-completeness check
|
|
31
42
|
const configPath = path.join(cwd, ".forge", "config.json");
|
|
@@ -142,6 +153,17 @@ export async function runHealthCheck(cwd, bundleRoot) {
|
|
|
142
153
|
});
|
|
143
154
|
}
|
|
144
155
|
}
|
|
156
|
+
// 4. Stale docs check — engineering/architecture/*.md files older than 90 days
|
|
157
|
+
// This check runs regardless of .forge/ presence (only needs cwd + engPath).
|
|
158
|
+
gaps.push(...checkStaleDocs(cwd, configRecord));
|
|
159
|
+
// 5. Modified generated files check — generation-manifest.cjs list --modified
|
|
160
|
+
// Only runs when config is present (manifest lives in .forge/).
|
|
161
|
+
gaps.push(...checkModifiedGeneratedFiles(cwd, bundleRoot));
|
|
162
|
+
// 6. Plugin integrity check — native TS hash check against forgeRoot/integrity.json
|
|
163
|
+
// Only runs when forgeRoot is provided.
|
|
164
|
+
if (forgeRoot) {
|
|
165
|
+
gaps.push(...checkPluginIntegrity(forgeRoot));
|
|
166
|
+
}
|
|
145
167
|
const clean = gaps.length === 0;
|
|
146
168
|
const summary = clean ? "〇 /forge:health: clean." : `△ /forge:health: ${gaps.length} gap(s) detected.`;
|
|
147
169
|
return {
|
|
@@ -151,4 +173,155 @@ export async function runHealthCheck(cwd, bundleRoot) {
|
|
|
151
173
|
summary,
|
|
152
174
|
};
|
|
153
175
|
}
|
|
176
|
+
// ── Check: Stale docs ──────────────────────────────────────────────────────
|
|
177
|
+
/**
|
|
178
|
+
* Check for architecture docs not updated in over 90 days.
|
|
179
|
+
* Returns one HealthGap per stale file.
|
|
180
|
+
* Silently returns [] if the architecture directory does not exist.
|
|
181
|
+
*/
|
|
182
|
+
export function checkStaleDocs(cwd, config) {
|
|
183
|
+
const gaps = [];
|
|
184
|
+
const engPath = config.paths?.engineering ?? "engineering";
|
|
185
|
+
const archDir = path.join(cwd, engPath, "architecture");
|
|
186
|
+
if (!fs.existsSync(archDir)) {
|
|
187
|
+
return gaps;
|
|
188
|
+
}
|
|
189
|
+
let files;
|
|
190
|
+
try {
|
|
191
|
+
files = fs.readdirSync(archDir).filter((f) => f.endsWith(".md"));
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
return gaps;
|
|
195
|
+
}
|
|
196
|
+
const now = Date.now();
|
|
197
|
+
for (const file of files) {
|
|
198
|
+
const filePath = path.join(archDir, file);
|
|
199
|
+
try {
|
|
200
|
+
const stat = fs.statSync(filePath);
|
|
201
|
+
const ageMs = now - stat.mtimeMs;
|
|
202
|
+
if (ageMs > STALE_DOCS_THRESHOLD_MS) {
|
|
203
|
+
const ageDays = Math.floor(ageMs / (24 * 60 * 60 * 1000));
|
|
204
|
+
gaps.push({
|
|
205
|
+
check: "stale-docs",
|
|
206
|
+
severity: "warning",
|
|
207
|
+
message: `${engPath}/architecture/${file} not updated in ${ageDays} days — may be stale. Run /forge:collate to refresh.`,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
// Skip files we can't stat
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return gaps;
|
|
216
|
+
}
|
|
217
|
+
// ── Check: Modified generated files ───────────────────────────────────────
|
|
218
|
+
/**
|
|
219
|
+
* Check for generated files that have been manually edited.
|
|
220
|
+
* Spawns generation-manifest.cjs list --modified from the bundled tools.
|
|
221
|
+
* Returns one HealthGap per modified/missing file.
|
|
222
|
+
* Silently returns [] if the tool is absent.
|
|
223
|
+
*/
|
|
224
|
+
export function checkModifiedGeneratedFiles(cwd, bundleRoot) {
|
|
225
|
+
const gaps = [];
|
|
226
|
+
const genManifestTool = path.join(bundleRoot, "tools", "generation-manifest.cjs");
|
|
227
|
+
if (!fs.existsSync(genManifestTool)) {
|
|
228
|
+
return gaps;
|
|
229
|
+
}
|
|
230
|
+
let stdout = "";
|
|
231
|
+
try {
|
|
232
|
+
stdout = execFileSync("node", [genManifestTool, "list", "--modified"], {
|
|
233
|
+
cwd,
|
|
234
|
+
encoding: "utf8",
|
|
235
|
+
timeout: 10000,
|
|
236
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
catch (err) {
|
|
240
|
+
// generation-manifest exits non-zero when modifications are found.
|
|
241
|
+
// Parse stdout from the error object.
|
|
242
|
+
const e = err;
|
|
243
|
+
stdout = e.stdout ?? "";
|
|
244
|
+
}
|
|
245
|
+
const lines = stdout
|
|
246
|
+
.split("\n")
|
|
247
|
+
.map((l) => l.trim())
|
|
248
|
+
.filter((l) => l.length > 0 && !l.startsWith("#"));
|
|
249
|
+
for (const line of lines) {
|
|
250
|
+
gaps.push({
|
|
251
|
+
check: "modified-generated-files",
|
|
252
|
+
severity: "warning",
|
|
253
|
+
message: `Generated file modified: ${line} — regeneration will warn before overwriting. Run /forge:regenerate to review.`,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
return gaps;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Check plugin files against the integrity.json manifest.
|
|
260
|
+
* Natively implemented in TypeScript — no subprocess required.
|
|
261
|
+
* Returns one HealthGap per modified or missing file.
|
|
262
|
+
* Silently returns [] if forgeRoot is not provided or integrity.json is missing.
|
|
263
|
+
*/
|
|
264
|
+
export function checkPluginIntegrity(forgeRoot) {
|
|
265
|
+
const gaps = [];
|
|
266
|
+
const integrityPath = path.join(forgeRoot, "integrity.json");
|
|
267
|
+
if (!fs.existsSync(integrityPath)) {
|
|
268
|
+
gaps.push({
|
|
269
|
+
check: "plugin-integrity",
|
|
270
|
+
severity: "warning",
|
|
271
|
+
message: "integrity.json not found in forge plugin root — run /forge:update to restore.",
|
|
272
|
+
});
|
|
273
|
+
return gaps;
|
|
274
|
+
}
|
|
275
|
+
let manifest;
|
|
276
|
+
try {
|
|
277
|
+
manifest = JSON.parse(fs.readFileSync(integrityPath, "utf8"));
|
|
278
|
+
}
|
|
279
|
+
catch (err) {
|
|
280
|
+
const e = err;
|
|
281
|
+
gaps.push({
|
|
282
|
+
check: "plugin-integrity",
|
|
283
|
+
severity: "warning",
|
|
284
|
+
message: `integrity.json is not valid JSON: ${e.message}`,
|
|
285
|
+
});
|
|
286
|
+
return gaps;
|
|
287
|
+
}
|
|
288
|
+
if (!manifest.files || typeof manifest.files !== "object") {
|
|
289
|
+
gaps.push({
|
|
290
|
+
check: "plugin-integrity",
|
|
291
|
+
severity: "warning",
|
|
292
|
+
message: "integrity.json has no files section — run /forge:update to restore.",
|
|
293
|
+
});
|
|
294
|
+
return gaps;
|
|
295
|
+
}
|
|
296
|
+
for (const [relativePath, expectedHash] of Object.entries(manifest.files)) {
|
|
297
|
+
const absolutePath = path.join(forgeRoot, relativePath);
|
|
298
|
+
if (!fs.existsSync(absolutePath)) {
|
|
299
|
+
gaps.push({
|
|
300
|
+
check: "plugin-integrity",
|
|
301
|
+
severity: "warning",
|
|
302
|
+
message: `Plugin file missing: ${relativePath} — run /forge:update to restore.`,
|
|
303
|
+
});
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
try {
|
|
307
|
+
const content = fs.readFileSync(absolutePath);
|
|
308
|
+
const actualHash = crypto.createHash("sha256").update(content).digest("hex");
|
|
309
|
+
if (actualHash !== expectedHash) {
|
|
310
|
+
gaps.push({
|
|
311
|
+
check: "plugin-integrity",
|
|
312
|
+
severity: "warning",
|
|
313
|
+
message: `Plugin file modified: ${relativePath} — run /forge:update to restore.`,
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
catch {
|
|
318
|
+
gaps.push({
|
|
319
|
+
check: "plugin-integrity",
|
|
320
|
+
severity: "warning",
|
|
321
|
+
message: `Cannot read plugin file: ${relativePath} — permission or I/O error.`,
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return gaps;
|
|
326
|
+
}
|
|
154
327
|
//# sourceMappingURL=health-check.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/health-check.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,oDAAoD;AACpD,EAAE;AACF,yEAAyE;AACzE,2EAA2E;AAC3E,4EAA4E;AAC5E,EAAE;AACF,2DAA2D;AAC3D,
|
|
1
|
+
{"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/health-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,8 +26,32 @@ export interface SprintCollateCompleteEvent {
|
|
|
26
26
|
/** Absolute path to the project root (process.cwd() at emit time). */
|
|
27
27
|
cwd: string;
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Payload for the migration-applied synthetic event (FORGE-S23-T01).
|
|
31
|
+
*
|
|
32
|
+
* Emitted by forge-update-command.ts after runMigrations() completes
|
|
33
|
+
* successfully. Enables future hook handlers to react to migration completion
|
|
34
|
+
* (e.g. trigger /forge:health checks, update-check resets).
|
|
35
|
+
*
|
|
36
|
+
* NOTE: No emitSyntheticEvent call is wired in this task — the event type is
|
|
37
|
+
* added to the union for forward compatibility. The interim emit path uses
|
|
38
|
+
* `store-cli emit SYS-migration` directly from forge-update-command.ts.
|
|
39
|
+
* event.schema.json is NOT modified in this task (system-migration type deferred
|
|
40
|
+
* to a follow-on task per PLAN.md §1D).
|
|
41
|
+
*/
|
|
42
|
+
export interface MigrationAppliedEvent {
|
|
43
|
+
type: "migration-applied";
|
|
44
|
+
/** Version the user was running before migration */
|
|
45
|
+
fromVersion: string;
|
|
46
|
+
/** Version the user upgraded to */
|
|
47
|
+
toVersion: string;
|
|
48
|
+
/** Number of migration entries applied */
|
|
49
|
+
appliedCount: number;
|
|
50
|
+
/** Absolute path to the project root */
|
|
51
|
+
cwd: string;
|
|
52
|
+
}
|
|
29
53
|
/** Union of all synthetic event payloads. Extend here as new events are added. */
|
|
30
|
-
export type SyntheticEvent = InitCompleteEvent | SprintCollateCompleteEvent;
|
|
54
|
+
export type SyntheticEvent = InitCompleteEvent | SprintCollateCompleteEvent | MigrationAppliedEvent;
|
|
31
55
|
/**
|
|
32
56
|
* Handler signature for synthetic events.
|
|
33
57
|
* ctx is the ExtensionCommandContext of the emitting phase — callers must
|