mustard-claude 3.0.13 → 3.0.14

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.
Files changed (37) hide show
  1. package/README.md +15 -4
  2. package/dist/cli.js +1 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/init.d.ts +1 -0
  5. package/dist/commands/init.js +33 -0
  6. package/dist/commands/init.js.map +1 -1
  7. package/package.json +1 -1
  8. package/templates/adapters/cursor/README.md +75 -0
  9. package/templates/adapters/cursor/adapter.js +138 -0
  10. package/templates/commands/mustard/bugfix/SKILL.md +42 -0
  11. package/templates/commands/mustard/complete/SKILL.md +29 -0
  12. package/templates/commands/mustard/feature/SKILL.md +43 -0
  13. package/templates/commands/mustard/knowledge/SKILL.md +72 -0
  14. package/templates/commands/mustard/resume/SKILL.md +66 -7
  15. package/templates/commands/mustard/scan/SKILL.md +23 -0
  16. package/templates/commands/mustard/stats/SKILL.md +18 -2
  17. package/templates/hooks/_lib/hook-env.js +77 -0
  18. package/templates/hooks/auto-format.js +2 -0
  19. package/templates/hooks/bash-safety.js +3 -0
  20. package/templates/hooks/enforce-registry.js +2 -0
  21. package/templates/hooks/file-guard.js +2 -0
  22. package/templates/hooks/guard-verify.js +90 -2
  23. package/templates/hooks/mcp-budget.js +91 -0
  24. package/templates/hooks/metrics-tracker.js +8 -0
  25. package/templates/hooks/pre-compact.js +2 -0
  26. package/templates/hooks/review-gate.js +3 -1
  27. package/templates/hooks/rtk-rewrite.js +2 -0
  28. package/templates/hooks/session-cleanup.js +2 -0
  29. package/templates/hooks/session-knowledge.js +109 -0
  30. package/templates/hooks/session-memory.js +2 -0
  31. package/templates/hooks/subagent-tracker.js +3 -0
  32. package/templates/pipeline-config.md +89 -0
  33. package/templates/scripts/knowledge-update.js +16 -6
  34. package/templates/scripts/metrics-collect.js +21 -0
  35. package/templates/scripts/security-scan.js +203 -0
  36. package/templates/scripts/verify-pipeline.js +170 -0
  37. package/templates/settings.json +22 -0
package/README.md CHANGED
@@ -27,10 +27,12 @@
27
27
  Mustard sets up a `.claude/` folder that turns Claude Code into a structured development pipeline:
28
28
 
29
29
  - **15 pipeline skills** — feature, bugfix, scan, resume, approve, complete, git, maint, task, knowledge, skill, status, scan-format, agent-prompt template, stats
30
- - **12 enforcement hooks** — bash safety, file guard, registry validation, guard verification, auto-format, pre-compact, session cleanup, subagent tracking, RTK rewrite, session memory, review gate, metrics tracker
30
+ - **14 enforcement hooks** — bash safety, file guard, registry validation, guard verification, auto-format, pre-compact, session cleanup, subagent tracking, RTK rewrite, session memory, review gate, metrics tracker, MCP budget, session knowledge
31
31
  - **6 bundled skills** — design-craft, react-best-practices, senior-architect, skill-creator, commit-workflow, pipeline-execution
32
- - **8 utility scripts** — subproject detection, entity registry sync, statusline, memory persistence, diff context, knowledge base, metrics collection
32
+ - **10 utility scripts** — subproject detection, entity registry sync, statusline, memory persistence, diff context, knowledge base, metrics collection, security scan, pipeline verification
33
33
  - **Token economy** — auto-installs [RTK](https://github.com/rtk-ai/rtk) to reduce token consumption by 60-90% on CLI outputs
34
+ - **Hook profiles** — minimal/standard/strict profiles via `_lib/hook-env.js`, env-based hook disabling
35
+ - **Cursor IDE adapter** (experimental) — `mustard init --cursor` installs a Cursor-compatible hook adapter
34
36
  - **Monorepo + single repo** — works with any project structure
35
37
 
36
38
  ## Quick Start
@@ -112,6 +114,7 @@ The CLI is a **one-time setup tool**. All intelligence lives in the skills and h
112
114
  |--------|-------------|
113
115
  | `-f, --force` | Overwrite existing `.claude/` without backup |
114
116
  | `-y, --yes` | Skip confirmation prompts (merge mode: skip existing files) |
117
+ | `--cursor` | Install Cursor IDE adapter at `.cursor/hooks/adapter.js` |
115
118
 
116
119
  **Behavior:**
117
120
  - If `.claude/` doesn't exist → copies all templates
@@ -205,6 +208,7 @@ mustard review --ci --pr 42
205
208
  │ ├── stats/SKILL.md # /stats — pipeline metrics
206
209
  │ └── templates/agent-prompt/SKILL.md # Agent prompt template
207
210
  ├── hooks/ # Enforcement hooks
211
+ │ ├── _lib/hook-env.js # Shared runtime controls (profiles, env overrides)
208
212
  │ ├── rtk-rewrite.js # Rewrites Bash commands through RTK
209
213
  │ ├── bash-safety.js # Blocks dangerous commands
210
214
  │ ├── file-guard.js # Blocks sensitive file access
@@ -217,6 +221,8 @@ mustard review --ci --pr 42
217
221
  │ ├── session-memory.js # Injects persistent memory on session start
218
222
  │ ├── review-gate.js # Pre-commit validation (fail-open)
219
223
  │ ├── metrics-tracker.js # Tracks pipeline API calls and retries
224
+ │ ├── mcp-budget.js # Warns about excessive MCP tool counts
225
+ │ ├── session-knowledge.js # Extracts patterns from session before cleanup
220
226
  │ └── __tests__/hooks.test.js # Hook tests
221
227
  ├── scripts/
222
228
  │ ├── sync-detect.js # Detects subprojects + roles
@@ -226,12 +232,17 @@ mustard review --ci --pr 42
226
232
  │ ├── memory-write.js # Writes agent memory entries
227
233
  │ ├── diff-context.js # Generates git diff summary for agents
228
234
  │ ├── knowledge-update.js # Updates project knowledge base
229
- └── metrics-collect.js # Collects and displays pipeline metrics
235
+ ├── metrics-collect.js # Collects and displays pipeline metrics
236
+ │ ├── security-scan.js # Scans for secrets and security misconfigs
237
+ │ └── verify-pipeline.js # Runs build/test verification for pipeline
230
238
  ├── memory/ # Persistent memory (auto-created)
231
239
  │ ├── decisions.json # Decisions across pipelines
232
240
  │ └── lessons.json # Lessons learned
233
241
  ├── knowledge.json # Evolutionary knowledge base
234
242
  ├── metrics/ # Pipeline metrics archive
243
+ ├── adapters/cursor/ # Cursor IDE adapter (experimental)
244
+ │ ├── README.md # Setup and usage guide
245
+ │ └── adapter.js # Translates Cursor ↔ Claude Code hook protocol
235
246
  └── skills/ # Bundled skills
236
247
  ├── design-craft/ # UI design methodology
237
248
  ├── react-best-practices/ # React/Next.js optimization (40+ rules)
@@ -259,7 +270,7 @@ mustard review --ci --pr 42
259
270
 
260
271
  | Command | Description |
261
272
  |---------|-------------|
262
- | `/git <action>` | commit, push, merge, deploy (handles monorepo) |
273
+ | `/git <action>` | commit, push, merge, deploy (handles monorepo; `/git merge main` cascades from any branch) |
263
274
  | `/maint <action>` | deps, validate, sync |
264
275
  | `/status` | Git + pipeline + build + registry status |
265
276
 
package/dist/cli.js CHANGED
@@ -19,6 +19,7 @@ export function run() {
19
19
  .description('Copy .claude/ structure into the current project')
20
20
  .option('-f, --force', 'Overwrite existing .claude/ directory without backup')
21
21
  .option('-y, --yes', 'Skip confirmation prompts')
22
+ .option('--cursor', 'Install Cursor IDE adapter at .cursor/hooks/adapter.js (experimental)')
22
23
  .action(initCommand);
23
24
  program
24
25
  .command('update')
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,UAAU,GAAG;IACjB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CAAC,sDAAsD,CAAC;SACnE,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,aAAa,EAAE,sDAAsD,CAAC;SAC7E,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;SAChD,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvB,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2DAA2D,CAAC;SACxE,MAAM,CAAC,aAAa,EAAE,8BAA8B,CAAC;SACrD,MAAM,CAAC,aAAa,CAAC,CAAC;IAEzB,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,WAAW,EAAE,mCAAmC,CAAC;SACxD,MAAM,CAAC,aAAa,CAAC,CAAC;IAEzB,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,cAAc,EAAE,wCAAwC,CAAC;SAChE,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;SAChD,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE7B,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,6EAA6E,CAAC;SAC1F,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;SACjD,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtB,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,MAAM,EAAE,+DAA+D,CAAC;SAC/E,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;SAC9C,MAAM,CAAC,aAAa,CAAC,CAAC;IAEzB,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,MAAM,UAAU,GAAG;IACjB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CAAC,sDAAsD,CAAC;SACnE,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,aAAa,EAAE,sDAAsD,CAAC;SAC7E,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;SAChD,MAAM,CAAC,UAAU,EAAE,uEAAuE,CAAC;SAC3F,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvB,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2DAA2D,CAAC;SACxE,MAAM,CAAC,aAAa,EAAE,8BAA8B,CAAC;SACrD,MAAM,CAAC,aAAa,CAAC,CAAC;IAEzB,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,WAAW,EAAE,mCAAmC,CAAC;SACxD,MAAM,CAAC,aAAa,CAAC,CAAC;IAEzB,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,cAAc,EAAE,wCAAwC,CAAC;SAChE,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;SAChD,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE7B,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,6EAA6E,CAAC;SAC1F,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;SACjD,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtB,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,MAAM,EAAE,+DAA+D,CAAC;SAC/E,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;SAC9C,MAAM,CAAC,aAAa,CAAC,CAAC;IAEzB,OAAO,CAAC,KAAK,EAAE,CAAC;AAClB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export interface InitOptions {
2
2
  force?: boolean;
3
3
  yes?: boolean;
4
+ cursor?: boolean;
4
5
  }
5
6
  /**
6
7
  * mustard init — copies templates/ → .claude/
@@ -54,6 +54,8 @@ export async function initCommand(options) {
54
54
  spinner.succeed(`Copied ${count} new files (existing files preserved)`);
55
55
  await ensureGlobalPermissions();
56
56
  await ensureRtk();
57
+ if (options.cursor)
58
+ await installCursorAdapter(projectPath, claudePath);
57
59
  printNextSteps();
58
60
  return;
59
61
  }
@@ -91,6 +93,8 @@ export async function initCommand(options) {
91
93
  spinner.succeed(`Copied ${count} new files (existing files preserved)`);
92
94
  await ensureGlobalPermissions();
93
95
  await ensureRtk();
96
+ if (options.cursor)
97
+ await installCursorAdapter(projectPath, claudePath);
94
98
  printNextSteps();
95
99
  return;
96
100
  }
@@ -110,6 +114,9 @@ export async function initCommand(options) {
110
114
  // Ensure global permissions for Claude Code (Read, Write, Edit)
111
115
  await ensureGlobalPermissions();
112
116
  await ensureRtk();
117
+ // Install Cursor adapter if requested
118
+ if (options.cursor)
119
+ await installCursorAdapter(projectPath, claudePath);
113
120
  // Generate mustard.json (git flow config)
114
121
  await generateMustardJson(projectPath, options);
115
122
  printNextSteps();
@@ -405,6 +412,32 @@ async function ensureGlobalPermissions() {
405
412
  console.log(chalk.gray(' Global permissions: Read, Write, Edit already configured'));
406
413
  }
407
414
  }
415
+ /**
416
+ * Install the Cursor IDE adapter.
417
+ * Copies templates/adapters/cursor/ → {project}/.claude/adapters/cursor/
418
+ * and creates {project}/.cursor/hooks/adapter.js.
419
+ * Only runs when --cursor flag is passed.
420
+ */
421
+ async function installCursorAdapter(projectPath, claudePath) {
422
+ const templatesDir = getTemplatesDir();
423
+ const adapterSrc = join(templatesDir, 'adapters', 'cursor');
424
+ const adapterDest = join(claudePath, 'adapters', 'cursor');
425
+ const cursorHooksDir = join(projectPath, '.cursor', 'hooks');
426
+ const cursorAdapterDest = join(cursorHooksDir, 'adapter.js');
427
+ const spinner = ora('Installing Cursor adapter...').start();
428
+ try {
429
+ // Copy adapters/cursor/ into .claude/adapters/cursor/
430
+ await copyDir(adapterSrc, adapterDest, true);
431
+ // Create .cursor/hooks/ and copy adapter.js there
432
+ await mkdir(cursorHooksDir, { recursive: true });
433
+ await copyFile(join(adapterSrc, 'adapter.js'), cursorAdapterDest);
434
+ spinner.succeed('Cursor adapter installed at .cursor/hooks/adapter.js');
435
+ }
436
+ catch (err) {
437
+ spinner.warn('Cursor adapter install failed — see .claude/adapters/cursor/ for manual setup');
438
+ process.stderr.write('[mustard] cursor adapter: ' + err.message + '\n');
439
+ }
440
+ }
408
441
  function printNextSteps() {
409
442
  console.log(chalk.green.bold('\n✅ Done!\n'));
410
443
  console.log(chalk.white('Next: open Claude Code and run /scan to analyze your codebase.\n'));
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAY,YAAY,EAAE,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAU,EAAE,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAO,MAAM,MAAM,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAQhC,SAAS,eAAe;IACtB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,IAAY,EAAE,SAAS,GAAG,IAAI;IAChE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,IAAI,SAAS,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvC,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAClC,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IAEvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAE1C,2BAA2B;IAC3B,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,kCAAkC;QACpC,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC,CAAC;YACvF,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YAC7D,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK,uCAAuC,CAAC,CAAC;YACxE,MAAM,uBAAuB,EAAE,CAAC;YAChC,MAAM,SAAS,EAAE,CAAC;YAClB,IAAI,OAAO,CAAC,MAAM;gBAAE,MAAM,oBAAoB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACxE,cAAc,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAqB,CAAC;oBAC5D,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,0BAA0B;oBACnC,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,QAAQ,EAAE;wBACjD,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,OAAO,EAAE;wBACvD,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;qBACpC;iBACF,CAAC,CAAC,CAAC;YAEJ,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvE,MAAM,UAAU,GAAG,GAAG,UAAU,WAAW,EAAE,EAAE,CAAC;gBAChD,MAAM,aAAa,GAAG,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE,CAAC;gBACxD,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACtD,aAAa,CAAC,OAAO,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;gBACjD,CAAC;gBAAC,MAAM,CAAC;oBACP,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;oBACpC,OAAO;gBACT,CAAC;YACH,CAAC;YAED,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;gBACpD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;gBAC7D,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK,uCAAuC,CAAC,CAAC;gBACxE,MAAM,uBAAuB,EAAE,CAAC;gBAChC,MAAM,SAAS,EAAE,CAAC;gBAClB,IAAI,OAAO,CAAC,MAAM;oBAAE,MAAM,oBAAoB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;gBACxE,cAAc,EAAE,CAAC;gBACjB,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,aAAa;IACb,MAAM,OAAO,GAAG,GAAG,CAAC,+BAA+B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC7D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAE5D,oCAAoC;IACpC,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;IAC9D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7F,KAAK,CAAC,CAAC,kBAAkB;IAC3B,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK,oBAAoB,CAAC,CAAC;IAErD,gEAAgE;IAChE,MAAM,uBAAuB,EAAE,CAAC;IAChC,MAAM,SAAS,EAAE,CAAC;IAElB,sCAAsC;IACtC,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,oBAAoB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAExE,0CAA0C;IAC1C,MAAM,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEhD,cAAc,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,QAAQ,CAAC,uDAAuD,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5G,OAAO,GAAG,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,2CAA2C;YAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAClE,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAAE,OAAO,MAAM,CAAC;YACpD,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAAE,OAAO,QAAQ,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,iCAAiC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB;IAC3B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,2CAA2C,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5F,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB,EAAE,OAA0B;IACvF,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAErD,IAAI,cAAc,GAAyB,IAAI,CAAC;IAEhD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAkB,CAAC;QAClF,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;QAED,IAAI,cAAc,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YACnB,yBAAyB;YACzB,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACjD,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gBACrB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,cAAc,CAAC,GAAG,EAAE,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;YACrF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,cAAc,CAAC,GAAG,EAAE,UAAU,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,EAAE,CAAC;YAEd,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAA2B,CAAC;oBACvE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,uBAAuB;oBAChC,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC,CAAC;YAEJ,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;IAC5C,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;IAC5C,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;IAC5C,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE1F,0DAA0D;IAC1D,MAAM,YAAY,GAAG,cAAc,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC;IACrD,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAuB,CAAC;IAClE,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,iBAAiB,CAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;IACjH,MAAM,gBAAgB,GAAG,cAAc,EAAE,GAAG,EAAE,QAAQ,IAAI,QAAQ,CAAC;IAEnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAEzD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,aAAa,aAAa,aAAa,gBAAgB,aAAa,EAAE,CAAC,CAAC,CAAC;QACtH,IAAI,YAAY;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACvH,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,MAAqB,CAAC;IAE1B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,qCAAqC;QACrC,MAAM,IAAI,GAA2B,EAAE,CAAC;QACxC,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YACzE,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;YAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;QACtC,CAAC;QACD,MAAM,GAAG;YACP,GAAG,EAAE;gBACH,IAAI;gBACJ,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,aAAa;aAC1B;SACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,uEAAuE;QACvE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAIlC;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,oBAAoB;gBAC7B,OAAO,EAAE,kBAAkB,IAAI,aAAa;aAC7C;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,mDAAmD;gBAC5D,OAAO,EAAE,iBAAiB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aACzG;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,eAAe;gBACxB,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC;gBAC1C,OAAO,EAAE,gBAAgB;aAC1B;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,GAA2B,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;QAC/C,CAAC;QAED,MAAM,GAAG;YACP,GAAG,EAAE;gBACH,IAAI;gBACJ,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ;gBACtC,UAAU,EAAE,aAAa;aAC1B;SACF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACpE,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,SAAS;IACtB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAE3C,kCAAkC;IAClC,IAAI,CAAC;QACH,QAAQ,CAAC,GAAG,QAAQ,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,kDAAkD;QAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,OAAO,yBAAyB,CAAC,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,mCAAmC,CAAC,CAAC,KAAK,EAAE,CAAC;IACjE,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,iBAAiB,EAAE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,2FAA2F,EAAE;gBACpG,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,MAAM,EAAE,QAAQ;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvF,OAAO,CAAC,OAAO,CAAC,OAAO,OAAO,mCAAmC,CAAC,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAEhD,4DAA4D;IAC5D,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,QAAQ,CAC1B,2IAA2I,EAC3I,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CACrD,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACnH,IAAI,KAAK,EAAE,oBAAoB,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;YAC7D,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,QAAQ,CACN,2DAA2D,KAAK,CAAC,oBAAoB,eAAe,OAAO,IAAI,EAC/G,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACnC,CAAC;YACF,QAAQ,CACN,yDAAyD,OAAO,uBAAuB,MAAM,WAAW,EACxG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAClC,CAAC;YACF,eAAe;YACf,IAAI,CAAC;gBAAC,QAAQ,CAAC,QAAQ,OAAO,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAC/E,2DAA2D;YAC3D,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAEvC,4BAA4B;IAC5B,IAAI,CAAC;QACH,QAAQ,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3C,QAAQ,CAAC,mDAAmD,EAAE;YAC5D,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAE9B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc;IACtC,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC3C,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO;QAErE,8BAA8B;QAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,MAAM,IAAI,WAAW,EAAE,CAAC;QAE9C,oCAAoC;QACpC,QAAQ,CACN,2IAA2I,MAAM,aAAa,EAC9J,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAClC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC,CAAC,gEAAgE,CAAC,CAAC;AAC9E,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,uBAAuB;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEhD,IAAI,QAAQ,GAAwB,EAAE,CAAC;IAEvC,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6EAA6E,CAAC,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,WAAW;QAAE,QAAQ,CAAC,WAAW,GAAG,EAAE,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;QAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;IAEhF,MAAM,KAAK,GAAa,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,8FAA8F;QAC9F,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,mEAAmE;YACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;YAC9D,QAAQ,CAAC,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC;YACtC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAC3G,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,oBAAoB,CAAC,WAAmB,EAAE,UAAkB;IACzE,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG,GAAG,CAAC,8BAA8B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5D,IAAI,CAAC;QACH,sDAAsD;QACtD,MAAM,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAE7C,kDAAkD;QAClD,MAAM,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAElE,OAAO,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;QAC9F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,GAAI,GAAa,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC,CAAC;IAC7F,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mustard-claude",
3
- "version": "3.0.13",
3
+ "version": "3.0.14",
4
4
  "description": "Framework-agnostic CLI for Claude Code project setup",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,75 @@
1
+ # Cursor IDE Adapter
2
+
3
+ > **Status: EXPERIMENTAL** — Cursor's hook system is not yet standardized. This adapter may need updates as Cursor evolves.
4
+
5
+ ## Overview
6
+
7
+ This adapter allows Cursor IDE to reuse Mustard hooks without duplicating code. It translates between Cursor's hook format and Claude Code's hook protocol.
8
+
9
+ ## How It Works
10
+
11
+ ```
12
+ Cursor stdin (JSON) → adapter.js → translates → Mustard hook → translates back → Cursor response
13
+ ```
14
+
15
+ ## Setup
16
+
17
+ After running `mustard init`, copy the adapter to your Cursor config:
18
+
19
+ ```bash
20
+ mkdir -p .cursor/hooks
21
+ cp .claude/adapters/cursor/adapter.js .cursor/hooks/adapter.js
22
+ ```
23
+
24
+ Or pass `--cursor` to `mustard init` to do this automatically:
25
+
26
+ ```bash
27
+ mustard init --cursor
28
+ ```
29
+
30
+ ## Usage
31
+
32
+ In your Cursor hook configuration, reference the adapter with the hook name:
33
+
34
+ ```json
35
+ {
36
+ "hooks": {
37
+ "pre_tool": "node .cursor/hooks/adapter.js bash-safety",
38
+ "post_tool": "node .cursor/hooks/adapter.js auto-format"
39
+ }
40
+ }
41
+ ```
42
+
43
+ ## Available Hooks
44
+
45
+ All Mustard hooks are available through the adapter:
46
+
47
+ | Hook | Type | Description |
48
+ |------|------|-------------|
49
+ | bash-safety | PreToolUse | Blocks dangerous shell commands |
50
+ | file-guard | PreToolUse | Protects sensitive files |
51
+ | review-gate | PreToolUse | Validates git commits |
52
+ | enforce-registry | PreToolUse | Entity registry enforcement |
53
+ | auto-format | PostToolUse | Auto-formats edited files |
54
+ | guard-verify | PostToolUse | Architecture enforcement |
55
+
56
+ ## Event Mapping
57
+
58
+ | Cursor Event | Claude Code Event |
59
+ |-------------|-------------------|
60
+ | pre_tool | PreToolUse |
61
+ | post_tool | PostToolUse |
62
+ | session_start | SessionStart |
63
+ | session_end | SessionEnd |
64
+
65
+ ## Environment Variables
66
+
67
+ - `MUSTARD_HOOK` — Alternative to passing hook name as argument
68
+ - `MUSTARD_HOOK_PROFILE` — Controls which hooks run (minimal/standard/strict)
69
+ - `MUSTARD_DISABLED_HOOKS` — Comma-separated hooks to skip
70
+
71
+ ## Limitations
72
+
73
+ - Cursor's hook format is not yet standardized; this adapter may need updates
74
+ - Some hooks that rely on Claude Code-specific stdin fields may not work fully
75
+ - SessionStart hooks that inject `additionalContext` return it as `context` field
@@ -0,0 +1,138 @@
1
+ #!/usr/bin/env node
2
+ 'use strict';
3
+ /**
4
+ * CURSOR-ADAPTER: Translates Cursor IDE hook format to Claude Code hook protocol.
5
+ * Reuses existing Mustard hooks without duplication.
6
+ *
7
+ * Usage: node .cursor/hooks/adapter.js <hook-name>
8
+ * Example: node .cursor/hooks/adapter.js bash-safety
9
+ *
10
+ * Cursor sends its own JSON format on stdin; this adapter:
11
+ * 1. Maps Cursor event format → Claude Code hook protocol
12
+ * 2. Spawns the target Mustard hook with translated input
13
+ * 3. Maps the Claude Code response → Cursor response format
14
+ *
15
+ * Status: EXPERIMENTAL — Cursor hook format is not yet standardized.
16
+ * @version 1.0.0
17
+ */
18
+
19
+ var fs = require('fs');
20
+ var path = require('path');
21
+ var child_process = require('child_process');
22
+
23
+ // ── Event mapping ───────────────────────────────────────────────────
24
+ var EVENT_MAP = {
25
+ 'pre_tool': 'PreToolUse',
26
+ 'post_tool': 'PostToolUse',
27
+ 'pre_tool_use': 'PreToolUse',
28
+ 'post_tool_use': 'PostToolUse',
29
+ 'session_start': 'SessionStart',
30
+ 'session_end': 'SessionEnd',
31
+ 'pre_compact': 'PreCompact',
32
+ };
33
+
34
+ function mapEvent(cursorEvent) {
35
+ if (!cursorEvent) return 'PreToolUse';
36
+ return EVENT_MAP[cursorEvent.toLowerCase()] || cursorEvent;
37
+ }
38
+
39
+ // ── Format translation ──────────────────────────────────────────────
40
+ function cursorToClaudeCode(cursorData) {
41
+ return {
42
+ hook_event_name: mapEvent(cursorData.event || cursorData.hook_event_name),
43
+ tool_name: cursorData.tool || cursorData.tool_name || cursorData.action || '',
44
+ tool_input: cursorData.params || cursorData.input || cursorData.tool_input || {},
45
+ cwd: cursorData.workspace || cursorData.cwd || process.cwd(),
46
+ session_id: cursorData.session_id || cursorData.sessionId || '',
47
+ };
48
+ }
49
+
50
+ function claudeCodeToCursor(claudeResponse) {
51
+ if (!claudeResponse) return { action: 'allow' };
52
+
53
+ var hook = claudeResponse.hookSpecificOutput || {};
54
+
55
+ // PreToolUse response
56
+ if (hook.permissionDecision) {
57
+ return {
58
+ action: hook.permissionDecision === 'allow' ? 'allow' : 'block',
59
+ reason: hook.permissionDecisionReason || '',
60
+ updatedInput: hook.updatedInput || undefined,
61
+ };
62
+ }
63
+
64
+ // PostToolUse response
65
+ if (claudeResponse.decision) {
66
+ return {
67
+ action: claudeResponse.decision === 'approve' ? 'allow' : 'block',
68
+ reason: claudeResponse.reason || '',
69
+ };
70
+ }
71
+
72
+ // SessionStart/SubagentStart (additionalContext)
73
+ if (hook.additionalContext) {
74
+ return {
75
+ action: 'allow',
76
+ context: hook.additionalContext,
77
+ };
78
+ }
79
+
80
+ return { action: 'allow' };
81
+ }
82
+
83
+ // ── Main ────────────────────────────────────────────────────────────
84
+ var input = '';
85
+ process.stdin.setEncoding('utf8');
86
+ process.stdin.on('data', function (chunk) { input += chunk; });
87
+ process.stdin.on('end', function () {
88
+ try {
89
+ var hookName = process.env.MUSTARD_HOOK || process.argv[2];
90
+ if (!hookName) {
91
+ process.stderr.write('[cursor-adapter] No hook name specified. Usage: adapter.js <hook-name>\n');
92
+ process.exit(0);
93
+ }
94
+
95
+ // Resolve hook path — look in .claude/hooks/ relative to project
96
+ var cwd = process.cwd();
97
+ var hookPath = path.join(cwd, '.claude', 'hooks', hookName);
98
+ if (!hookPath.endsWith('.js')) hookPath += '.js';
99
+
100
+ if (!fs.existsSync(hookPath)) {
101
+ process.stderr.write('[cursor-adapter] Hook not found: ' + hookPath + '\n');
102
+ process.exit(0);
103
+ }
104
+
105
+ // Parse Cursor input
106
+ var cursorData = {};
107
+ if (input.trim()) {
108
+ try { cursorData = JSON.parse(input); } catch (e) { cursorData = {}; }
109
+ }
110
+
111
+ // Translate to Claude Code format
112
+ var claudeInput = cursorToClaudeCode(cursorData);
113
+
114
+ // Spawn the Mustard hook
115
+ var result = child_process.execFileSync(process.execPath, [hookPath], {
116
+ input: JSON.stringify(claudeInput),
117
+ encoding: 'utf8',
118
+ timeout: 15000,
119
+ stdio: ['pipe', 'pipe', 'pipe'],
120
+ env: Object.assign({}, process.env, {
121
+ CLAUDE_PROJECT_DIR: cwd,
122
+ }),
123
+ });
124
+
125
+ // Translate response back to Cursor format
126
+ if (result && result.trim()) {
127
+ var claudeResponse = JSON.parse(result.trim());
128
+ var cursorResponse = claudeCodeToCursor(claudeResponse);
129
+ process.stdout.write(JSON.stringify(cursorResponse) + '\n');
130
+ }
131
+
132
+ process.exit(0);
133
+ } catch (err) {
134
+ process.stderr.write('[cursor-adapter] ' + err.message + '\n');
135
+ process.exit(0); // fail-open
136
+ }
137
+ });
138
+ process.stdin.resume();
@@ -30,6 +30,22 @@ Run `node .claude/scripts/diff-context.js` to capture the current git state. Inc
30
30
  **Fast Path:** Go directly to EXECUTE.
31
31
  **Full Path:** Write brief spec in `.claude/spec/active/{date}-{name}/spec.md` → present to user → `/approve` → EXECUTE.
32
32
 
33
+ #### Spec Boundaries
34
+
35
+ When writing a Full Path spec (or noting files for Fast Path), record which files are in scope under a `## Boundaries` section:
36
+
37
+ ```
38
+ ## Boundaries
39
+ - `path/to/directory/` — directory scope (all files within)
40
+ - `path/to/file.ext` — exact file
41
+ - `**/*.controller.ts` — glob pattern
42
+ ```
43
+
44
+ Rules:
45
+ - List only files the fix **intentionally** touches (root cause + direct dependants)
46
+ - For Fast Path: boundaries are implicit from the ANALYZE output — no spec section required
47
+ - Out-of-boundary edits during EXECUTE will surface a `[BOUNDARY WARNING]` from guard-verify — re-evaluate scope before proceeding
48
+
33
49
  ### EXECUTE (fix + validate)
34
50
 
35
51
  Dispatch bugfix agent with:
@@ -44,6 +60,32 @@ Dispatch bugfix agent with:
44
60
  - No regression in adjacent code
45
61
  - If build fails: diagnose + fix (max 3 iterations)
46
62
 
63
+ #### Escalation Status Handling
64
+
65
+ After the bugfix agent returns, check for an escalation status before closing:
66
+
67
+ - `CONCERN` — record verbatim in the bugfix report under `## Concerns`; continue to CLOSE
68
+ - `BLOCKED` — stop immediately; use `AskUserQuestion` to report the exact blocker; do NOT close
69
+ - `PARTIAL` — agent fixed some but not all reported issues; resume from the last incomplete fix step (max 2 retries)
70
+ - `DEFERRED` — agent intentionally left a related issue unfixed with justification; confirm with user before closing
71
+
72
+ See `pipeline-config.md` Escalation Statuses for the full status table.
73
+
74
+ #### Retry Compact Advisory
75
+ If an agent fails and requires >2 retry attempts during EXECUTE:
76
+ - Suggest to user: _"Multiple retries detected — stale context may be contributing. Consider `/compact` to clear context, then `/resume` to continue the pipeline."_
77
+ - This is advisory only — continue fixing if user declines.
78
+
79
+ #### Failure Routing (Bugfix)
80
+
81
+ Before retrying a failed fix attempt, classify the failure:
82
+
83
+ 1. **Transient?** — Would re-running succeed without any change? (flaky test, cache, env) → Retry once immediately.
84
+ 2. **Resolvable?** — Is the fix clear and patchable in ≤3 lines without new reads? → Apply patch, retry (counts as retry 1).
85
+ 3. **Structural?** — Did the original ANALYZE misidentify the root cause? → Re-analyze: dispatch a focused Explore on the actual failure point, update root cause, re-dispatch bugfix agent. Does NOT count against the 2-retry cap.
86
+
87
+ Max 2 retries for Transient + Resolvable. Structural failures trigger a targeted re-ANALYZE, not a blind retry.
88
+
47
89
  ### CLOSE
48
90
 
49
91
  - `node .claude/scripts/sync-registry.js` (if entities changed)
@@ -16,8 +16,33 @@ Finalizes the current pipeline, either completing or canceling.
16
16
  4. **Zero CRITICAL issues**: review report shows zero CRITICAL violations (SOLID, design system, patterns, i18n, integration)
17
17
  5. **No regressions**: existing features still work
18
18
 
19
+ #### Verification Gate (automated)
20
+
21
+ Before finalizing, run build/test verification:
22
+
23
+ ```bash
24
+ node .claude/scripts/verify-pipeline.js "$PROJECT_DIR"
25
+ ```
26
+
27
+ - **Exit 0** (all passed): proceed to completion
28
+ - **Exit 1** (failures): report failed builds/tests to user, do NOT proceed
29
+ - Show: which subproject failed, which command, error excerpt
30
+ - Ask user: fix and retry, or force-complete anyway
31
+ - **Script missing/errors**: warn but continue (fail-open)
32
+
19
33
  If ANY gate fails: do NOT mark complete → report what failed + suggest fix. If review wasn't run → run it now before completing.
20
34
 
35
+ #### Surface Accumulated Concerns
36
+
37
+ Before finalizing, scan the active spec for any `## Concerns` section written during EXECUTE:
38
+
39
+ - If concerns exist: list them in the completion output under `## Concerns Surfaced`
40
+ - If any concern was classified `BLOCKED` or was never resolved: do NOT complete — report to user first
41
+ - If all concerns are `CONCERN` or `DEFERRED` (non-blocking): note them and proceed
42
+ - This step is a read-only scan — do NOT alter or dismiss concerns during CLOSE
43
+
44
+ See `pipeline-config.md` Escalation Statuses for concern classification rules.
45
+
21
46
  ## Action
22
47
 
23
48
  1. Locate active spec in `.claude/spec/active/`
@@ -57,10 +82,14 @@ If ANY gate fails: do NOT mark complete → report what failed + suggest fix. If
57
82
  "durationMs": "{calculated from startedAt to now}",
58
83
  "apiCalls": "{from metrics}",
59
84
  "retries": "{from metrics}",
85
+ "pass1": "{true if metrics.retries === 0, otherwise false}",
60
86
  "toolBreakdown": "{from metrics}",
87
+ "agentAttempts": "{from metrics, if present}",
61
88
  "rtkSavings": { "saved": N, "pct": N }
62
89
  }
63
90
  ```
91
+ - Set `"pass1": true` if `metrics.retries === 0`, otherwise `"pass1": false`
92
+ - Omit `agentAttempts` if not present in state metrics
64
93
  - If no metrics in state file, skip silently
65
94
  7. **Output — visual feedback:**
66
95
 
@@ -61,6 +61,11 @@ Record scope for PLAN phase branching.
61
61
 
62
62
  **HARD RULE:** If you already understand the change (which files, which pattern), STOP reading and write the spec. More reads ≠ better spec.
63
63
 
64
+ #### Compact Advisory
65
+ After ANALYZE completes, if the analysis required heavy exploration (>8 file reads, >3 Grep rounds, or multiple Explore agents):
66
+ - Suggest to user: _"Analysis complete. Context is heavy — consider `/compact` before we proceed to implementation, then `/resume`."_
67
+ - This is advisory only — proceed immediately if user declines or ignores.
68
+
64
69
  ### PLAN Phase
65
70
 
66
71
  #### Full Scope
@@ -102,6 +107,22 @@ Record scope for PLAN phase branching.
102
107
  - **"Approve for later"** → stop, user runs `/approve` + `/resume`
103
108
  - **"Adjust"** → user gives feedback
104
109
 
110
+ #### Spec Boundaries
111
+
112
+ Before writing spec tasks, identify and record which files/directories are in scope. Add a `## Boundaries` section to the spec:
113
+
114
+ ```
115
+ ## Boundaries
116
+ - `path/to/directory/` — directory scope (all files within)
117
+ - `path/to/file.ext` — exact file
118
+ - `**/*.controller.ts` — glob pattern
119
+ ```
120
+
121
+ Rules:
122
+ - Only list paths the feature **intentionally** touches
123
+ - Be specific: prefer exact files over broad directories when the change is known
124
+ - Out-of-boundary edits during EXECUTE will surface a `[BOUNDARY WARNING]` from guard-verify — treat as a signal to re-evaluate, not an error to suppress
125
+
105
126
  ### EXECUTE Phase (Light scope — same session)
106
127
 
107
128
  When user chooses "Approve and implement now":
@@ -114,10 +135,32 @@ When user chooses "Approve and implement now":
114
135
  7. Wave transitions between waves (from `pipeline-config.md`)
115
136
  8. On return: validate (build/type-check), update spec `[ ]` → `[x]` (line-by-line edits, NEVER copy entire spec blocks as old_string)
116
137
  8b. **Agent Memory:** After agents return and spec is updated, write agent memory: `echo '{"agent_type":"{type}","wave":{N},"pipeline":"{spec-name}","summary":"{what agent did}","details":{...}}' | node .claude/scripts/memory-write.js` — one per agent. Skip if single-wave pipeline (no downstream agents to benefit).
138
+
139
+ #### Escalation Status Handling
140
+
141
+ After each agent returns, check the return value for an escalation status before advancing:
142
+
143
+ - `CONCERN` — record verbatim under `## Concerns` in the spec; continue to next step
144
+ - `BLOCKED` — stop immediately; use `AskUserQuestion` to report the exact blocker; do NOT retry or advance
145
+ - `PARTIAL` — apply Granular Retry Protocol from the last completed step; do NOT restart from step 1
146
+ - `DEFERRED` — note in spec with agent justification; ask user if the deferred item is load-bearing before closing
147
+
148
+ If two or more agents in the same wave return `CONCERN`, surface all concerns together before starting the next wave. See `pipeline-config.md` Escalation Statuses for the full status table.
149
+
117
150
  9. **REVIEW** — dispatch review agent for each affected subproject (reads guards + relevant skills, runs 7-category checklist: SOLID, Design System, Patterns, i18n, Integration, Build, Elegance). REJECTED → fix + re-review (max 2 loops)
118
151
  10. All passed + APPROVED → CLOSE flow inline (sync registry, move spec, cleanup state)
119
152
  11. Failed → max 2 retries, then STOP + report
120
153
 
154
+ #### Failure Routing
155
+
156
+ Before retrying, classify the failure with 3 questions:
157
+
158
+ 1. **Transient?** — Would re-running succeed without any change? → Retry once immediately.
159
+ 2. **Resolvable?** — Is the fix clear and patchable in ≤3 lines without new reads? → Apply patch, retry (counts as retry 1).
160
+ 3. **Structural?** — Did the spec assume something false about structure or layer? → Re-analyze (read 1-2 key files), update spec, re-dispatch. Does NOT count against the 2-retry cap.
161
+
162
+ Retry cap applies to Transient + Resolvable only. Structural failures reset the attempt after spec correction.
163
+
121
164
  ## Visual Output
122
165
 
123
166
  Progress: `[v] ANALYZE [>] PLAN [ ] EXECUTE [ ] CLOSE`