@slope-dev/slope 1.25.4 → 1.26.0

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 (91) hide show
  1. package/dist/cli/commands/doctor.d.ts +4 -0
  2. package/dist/cli/commands/doctor.d.ts.map +1 -1
  3. package/dist/cli/commands/doctor.js +262 -3
  4. package/dist/cli/commands/doctor.js.map +1 -1
  5. package/dist/cli/commands/guard.d.ts.map +1 -1
  6. package/dist/cli/commands/guard.js +154 -0
  7. package/dist/cli/commands/guard.js.map +1 -1
  8. package/dist/cli/commands/help.d.ts +5 -0
  9. package/dist/cli/commands/help.d.ts.map +1 -0
  10. package/dist/cli/commands/help.js +98 -0
  11. package/dist/cli/commands/help.js.map +1 -0
  12. package/dist/cli/commands/hook.d.ts.map +1 -1
  13. package/dist/cli/commands/hook.js +10 -9
  14. package/dist/cli/commands/hook.js.map +1 -1
  15. package/dist/cli/commands/init.d.ts.map +1 -1
  16. package/dist/cli/commands/init.js +111 -15
  17. package/dist/cli/commands/init.js.map +1 -1
  18. package/dist/cli/commands/prep.d.ts.map +1 -1
  19. package/dist/cli/commands/prep.js +22 -3
  20. package/dist/cli/commands/prep.js.map +1 -1
  21. package/dist/cli/commands/quickstart.d.ts +6 -0
  22. package/dist/cli/commands/quickstart.d.ts.map +1 -0
  23. package/dist/cli/commands/quickstart.js +103 -0
  24. package/dist/cli/commands/quickstart.js.map +1 -0
  25. package/dist/cli/commands/worktree.d.ts +2 -0
  26. package/dist/cli/commands/worktree.d.ts.map +1 -0
  27. package/dist/cli/commands/worktree.js +224 -0
  28. package/dist/cli/commands/worktree.js.map +1 -0
  29. package/dist/cli/guards/docs.d.ts +19 -0
  30. package/dist/cli/guards/docs.d.ts.map +1 -0
  31. package/dist/cli/guards/docs.js +187 -0
  32. package/dist/cli/guards/docs.js.map +1 -0
  33. package/dist/cli/guards/next-action.d.ts +1 -1
  34. package/dist/cli/guards/next-action.d.ts.map +1 -1
  35. package/dist/cli/guards/next-action.js +7 -3
  36. package/dist/cli/guards/next-action.js.map +1 -1
  37. package/dist/cli/guards/worktree-self-remove.d.ts +8 -0
  38. package/dist/cli/guards/worktree-self-remove.d.ts.map +1 -0
  39. package/dist/cli/guards/worktree-self-remove.js +50 -0
  40. package/dist/cli/guards/worktree-self-remove.js.map +1 -0
  41. package/dist/cli/index.js +23 -1
  42. package/dist/cli/index.js.map +1 -1
  43. package/dist/cli/registry.d.ts.map +1 -1
  44. package/dist/cli/registry.js +23 -0
  45. package/dist/cli/registry.js.map +1 -1
  46. package/dist/cli/template-generator.d.ts.map +1 -1
  47. package/dist/cli/template-generator.js +20 -4
  48. package/dist/cli/template-generator.js.map +1 -1
  49. package/dist/core/adapters/claude-code.d.ts.map +1 -1
  50. package/dist/core/adapters/claude-code.js +17 -20
  51. package/dist/core/adapters/claude-code.js.map +1 -1
  52. package/dist/core/adapters/cline.d.ts.map +1 -1
  53. package/dist/core/adapters/cline.js +19 -17
  54. package/dist/core/adapters/cline.js.map +1 -1
  55. package/dist/core/adapters/cursor.d.ts.map +1 -1
  56. package/dist/core/adapters/cursor.js +19 -17
  57. package/dist/core/adapters/cursor.js.map +1 -1
  58. package/dist/core/adapters/generic.d.ts.map +1 -1
  59. package/dist/core/adapters/generic.js +21 -19
  60. package/dist/core/adapters/generic.js.map +1 -1
  61. package/dist/core/adapters/ob1.d.ts.map +1 -1
  62. package/dist/core/adapters/ob1.js +19 -17
  63. package/dist/core/adapters/ob1.js.map +1 -1
  64. package/dist/core/adapters/windsurf.d.ts.map +1 -1
  65. package/dist/core/adapters/windsurf.js +32 -31
  66. package/dist/core/adapters/windsurf.js.map +1 -1
  67. package/dist/core/config.d.ts +7 -0
  68. package/dist/core/config.d.ts.map +1 -1
  69. package/dist/core/config.js.map +1 -1
  70. package/dist/core/guard.d.ts +1 -1
  71. package/dist/core/guard.d.ts.map +1 -1
  72. package/dist/core/guard.js +8 -0
  73. package/dist/core/guard.js.map +1 -1
  74. package/dist/core/harness.d.ts +18 -0
  75. package/dist/core/harness.d.ts.map +1 -1
  76. package/dist/core/harness.js +59 -0
  77. package/dist/core/harness.js.map +1 -1
  78. package/dist/core/index.d.ts +1 -1
  79. package/dist/core/index.d.ts.map +1 -1
  80. package/dist/core/index.js +1 -1
  81. package/dist/core/index.js.map +1 -1
  82. package/dist/core/prep.d.ts +10 -0
  83. package/dist/core/prep.d.ts.map +1 -1
  84. package/dist/core/prep.js +28 -0
  85. package/dist/core/prep.js.map +1 -1
  86. package/dist/store/index.d.ts.map +1 -1
  87. package/dist/store/index.js +5 -2
  88. package/dist/store/index.js.map +1 -1
  89. package/dist/store-pg/index.js +1 -1
  90. package/dist/store-pg/index.js.map +1 -1
  91. package/package.json +1 -1
@@ -1,3 +1,7 @@
1
+ import '../../core/adapters/claude-code.js';
2
+ import '../../core/adapters/cursor.js';
3
+ import '../../core/adapters/windsurf.js';
4
+ import '../../core/adapters/generic.js';
1
5
  export interface DoctorCheck {
2
6
  name: string;
3
7
  status: 'ok' | 'warn' | 'fail';
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE,CA+B1D;AA0LD,2CAA2C;AAC3C,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA8E1F;AA0BD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BjE"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AASA,OAAO,oCAAoC,CAAC;AAC5C,OAAO,+BAA+B,CAAC;AACvC,OAAO,iCAAiC,CAAC;AACzC,OAAO,gCAAgC,CAAC;AAIxC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE,CAwC1D;AAmYD,2CAA2C;AAC3C,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgJ1F;AA0BD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BjE"}
@@ -1,7 +1,16 @@
1
1
  import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
2
- import { join } from 'node:path';
2
+ import { join, dirname } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
3
4
  import { detectPlatforms } from './init.js';
4
5
  import { GUARD_DEFINITIONS } from '../../core/guard.js';
6
+ import { hasMetaphor } from '../../core/metaphor.js';
7
+ import { detectAdapter, SLOPE_BIN_PREAMBLE, writeOrUpdateManagedScript } from '../../core/harness.js';
8
+ // Side-effect imports: ensure adapters are registered for detectAdapter()
9
+ import '../../core/adapters/claude-code.js';
10
+ import '../../core/adapters/cursor.js';
11
+ import '../../core/adapters/windsurf.js';
12
+ import '../../core/adapters/generic.js';
13
+ const __dirname = dirname(fileURLToPath(import.meta.url));
5
14
  /** Run all health checks on a SLOPE-configured repo. */
6
15
  export function runDoctorChecks(cwd) {
7
16
  const checks = [];
@@ -19,9 +28,15 @@ export function runDoctorChecks(cwd) {
19
28
  checks.push(checkRoadmap(cwd));
20
29
  // 7. Check CODEBASE.md exists and is not stale
21
30
  checks.push(checkCodebaseMap(cwd));
22
- // 8. Check guards are installed for detected platforms
31
+ // 8. Check version drift
32
+ checks.push(checkVersion(cwd));
33
+ // 9. Check config schema validity
34
+ checks.push(...checkConfigSchema(cwd));
35
+ // 10. Check guards are installed for detected platforms
23
36
  checks.push(...checkGuards(cwd));
24
- // 9. Check MCP config for detected platforms
37
+ // 11. Check hook script staleness
38
+ checks.push(...checkHookScripts(cwd));
39
+ // 12. Check MCP config for detected platforms
25
40
  checks.push(...checkMcpConfig(cwd));
26
41
  return checks;
27
42
  }
@@ -102,6 +117,175 @@ function checkCodebaseMap(cwd) {
102
117
  }
103
118
  return { name: 'codebase-map', status: 'ok', message: 'CODEBASE.md exists and is recent' };
104
119
  }
120
+ /** Read the current SLOPE package version from package.json */
121
+ function getPackageVersion() {
122
+ const pkgPath = join(__dirname, '..', '..', '..', 'package.json');
123
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
124
+ return pkg.version;
125
+ }
126
+ function checkVersion(cwd) {
127
+ const configPath = join(cwd, '.slope', 'config.json');
128
+ if (!existsSync(configPath)) {
129
+ return { name: 'version', status: 'warn', message: 'Cannot check version — .slope/config.json missing', fixable: false };
130
+ }
131
+ try {
132
+ const config = JSON.parse(readFileSync(configPath, 'utf8'));
133
+ const pkgVersion = getPackageVersion();
134
+ if (!config.slopeVersion) {
135
+ return { name: 'version', status: 'warn', message: `config.slopeVersion missing — should be ${pkgVersion}`, fixable: true };
136
+ }
137
+ if (config.slopeVersion !== pkgVersion) {
138
+ return { name: 'version', status: 'warn', message: `config.slopeVersion (${config.slopeVersion}) differs from package (${pkgVersion}) — run \`slope doctor --fix\``, fixable: true };
139
+ }
140
+ return { name: 'version', status: 'ok', message: `config.slopeVersion matches package (${pkgVersion})` };
141
+ }
142
+ catch {
143
+ return { name: 'version', status: 'warn', message: 'Cannot check version — .slope/config.json unreadable', fixable: false };
144
+ }
145
+ }
146
+ function checkConfigSchema(cwd) {
147
+ const checks = [];
148
+ const configPath = join(cwd, '.slope', 'config.json');
149
+ if (!existsSync(configPath))
150
+ return checks;
151
+ let config;
152
+ try {
153
+ config = JSON.parse(readFileSync(configPath, 'utf8'));
154
+ }
155
+ catch {
156
+ return checks; // JSON parse failure is already caught by checkConfig
157
+ }
158
+ // Required string fields
159
+ if (config.scorecardDir !== undefined && typeof config.scorecardDir !== 'string') {
160
+ checks.push({ name: 'config-schema', status: 'warn', message: 'config.scorecardDir should be a string', fixable: false });
161
+ }
162
+ if (config.scorecardPattern !== undefined && typeof config.scorecardPattern !== 'string') {
163
+ checks.push({ name: 'config-schema', status: 'warn', message: 'config.scorecardPattern should be a string', fixable: false });
164
+ }
165
+ // Metaphor validation
166
+ if (config.metaphor !== undefined) {
167
+ if (typeof config.metaphor !== 'string') {
168
+ checks.push({ name: 'config-schema', status: 'warn', message: 'config.metaphor should be a string — will reset to "golf"', fixable: true });
169
+ }
170
+ else if (!hasMetaphor(config.metaphor)) {
171
+ checks.push({ name: 'config-schema', status: 'warn', message: `config.metaphor "${config.metaphor}" is not a registered metaphor — will reset to "golf"`, fixable: true });
172
+ }
173
+ }
174
+ // slopeVersion type check
175
+ if (config.slopeVersion !== undefined && typeof config.slopeVersion !== 'string') {
176
+ checks.push({ name: 'config-schema', status: 'warn', message: 'config.slopeVersion should be a string', fixable: false });
177
+ }
178
+ // Optional detectedStack type checks
179
+ if (config.detectedStack !== undefined && typeof config.detectedStack === 'object' && config.detectedStack !== null) {
180
+ const stack = config.detectedStack;
181
+ if (stack.language !== undefined && typeof stack.language !== 'string') {
182
+ checks.push({ name: 'config-schema', status: 'warn', message: 'config.detectedStack.language should be a string', fixable: false });
183
+ }
184
+ if (stack.packageManager !== undefined && typeof stack.packageManager !== 'string') {
185
+ checks.push({ name: 'config-schema', status: 'warn', message: 'config.detectedStack.packageManager should be a string', fixable: false });
186
+ }
187
+ }
188
+ if (checks.length === 0) {
189
+ checks.push({ name: 'config-schema', status: 'ok', message: 'Config schema valid' });
190
+ }
191
+ return checks;
192
+ }
193
+ /** Generate the expected guard dispatcher script content */
194
+ function generateGuardDispatcherScript() {
195
+ return [
196
+ '#!/usr/bin/env bash',
197
+ '# SLOPE guard dispatcher — routes hook events to slope guard handlers',
198
+ '# Auto-generated by slope hook add --level=full',
199
+ '',
200
+ '# === SLOPE MANAGED (do not edit above this line) ===',
201
+ ...SLOPE_BIN_PREAMBLE,
202
+ '',
203
+ 'slope guard "$@"',
204
+ '# === SLOPE END ===',
205
+ '',
206
+ ].join('\n');
207
+ }
208
+ /** Generate the expected session hook script content */
209
+ function generateSessionHookScript(name, commands) {
210
+ return [
211
+ '#!/usr/bin/env bash',
212
+ `# SLOPE hook: ${name}`,
213
+ '',
214
+ '# === SLOPE MANAGED (do not edit above this line) ===',
215
+ ...SLOPE_BIN_PREAMBLE,
216
+ '',
217
+ ...commands,
218
+ '# === SLOPE END ===',
219
+ '',
220
+ '# Add your custom commands below:',
221
+ '',
222
+ ].join('\n');
223
+ }
224
+ const MANAGED_START = '# === SLOPE MANAGED (do not edit above this line) ===';
225
+ const MANAGED_END = '# === SLOPE END ===';
226
+ function checkHookScripts(cwd) {
227
+ const checks = [];
228
+ const adapter = detectAdapter(cwd);
229
+ if (!adapter)
230
+ return checks;
231
+ // Determine the hooks directory for this adapter
232
+ const hooksDirMap = {
233
+ 'claude-code': join(cwd, '.claude', 'hooks'),
234
+ cursor: join(cwd, '.cursor', 'hooks'),
235
+ windsurf: join(cwd, '.windsurf', 'hooks'),
236
+ cline: join(cwd, '.clinerules', 'hooks'),
237
+ ob1: join(cwd, '.ob1', 'hooks'),
238
+ };
239
+ const hooksDir = hooksDirMap[adapter.id];
240
+ if (!hooksDir)
241
+ return checks;
242
+ // Check guard dispatcher
243
+ const dispatcherPath = join(hooksDir, 'slope-guard.sh');
244
+ if (existsSync(dispatcherPath)) {
245
+ const existing = readFileSync(dispatcherPath, 'utf8');
246
+ if (existing.includes(MANAGED_START) && existing.includes(MANAGED_END)) {
247
+ const expected = generateGuardDispatcherScript();
248
+ const existingManaged = existing.slice(existing.indexOf(MANAGED_START) + MANAGED_START.length, existing.indexOf(MANAGED_END));
249
+ const expectedManaged = expected.slice(expected.indexOf(MANAGED_START) + MANAGED_START.length, expected.indexOf(MANAGED_END));
250
+ if (existingManaged !== expectedManaged) {
251
+ checks.push({
252
+ name: 'hook-scripts',
253
+ status: 'warn',
254
+ message: 'slope-guard.sh managed section is outdated — run `slope doctor --fix` to update',
255
+ fixable: true,
256
+ });
257
+ }
258
+ }
259
+ }
260
+ // Check session hooks
261
+ const sessionHooks = {
262
+ 'session-start': ['slope session start --ide="$SLOPE_IDE" --role=primary', 'slope briefing --compact'],
263
+ 'session-end': ['slope session end --session-id="$SLOPE_SESSION_ID"'],
264
+ };
265
+ for (const [name, commands] of Object.entries(sessionHooks)) {
266
+ const filePath = join(hooksDir, `slope-${name}.sh`);
267
+ if (!existsSync(filePath))
268
+ continue;
269
+ const existing = readFileSync(filePath, 'utf8');
270
+ if (existing.includes(MANAGED_START) && existing.includes(MANAGED_END)) {
271
+ const expected = generateSessionHookScript(name, commands);
272
+ const existingManaged = existing.slice(existing.indexOf(MANAGED_START) + MANAGED_START.length, existing.indexOf(MANAGED_END));
273
+ const expectedManaged = expected.slice(expected.indexOf(MANAGED_START) + MANAGED_START.length, expected.indexOf(MANAGED_END));
274
+ if (existingManaged !== expectedManaged) {
275
+ checks.push({
276
+ name: 'hook-scripts',
277
+ status: 'warn',
278
+ message: `slope-${name}.sh managed section is outdated — run \`slope doctor --fix\` to update`,
279
+ fixable: true,
280
+ });
281
+ }
282
+ }
283
+ }
284
+ if (checks.length === 0 && existsSync(dispatcherPath)) {
285
+ checks.push({ name: 'hook-scripts', status: 'ok', message: 'Hook scripts are up to date' });
286
+ }
287
+ return checks;
288
+ }
105
289
  function checkGuards(cwd) {
106
290
  const checks = [];
107
291
  const hooksPath = join(cwd, '.slope', 'hooks.json');
@@ -126,6 +310,13 @@ function checkGuards(cwd) {
126
310
  fixable: true,
127
311
  });
128
312
  }
313
+ else if (installedCount < totalGuards) {
314
+ checks.push({
315
+ name: 'guards',
316
+ status: 'ok',
317
+ message: `${installedCount} hooks installed (${totalGuards} guards available) — run \`slope guard recommend\` to see suggestions`,
318
+ });
319
+ }
129
320
  else {
130
321
  checks.push({
131
322
  name: 'guards',
@@ -263,6 +454,74 @@ export async function runDoctorFixes(cwd, checks) {
263
454
  }
264
455
  break;
265
456
  }
457
+ case 'version': {
458
+ const configPath = join(cwd, '.slope', 'config.json');
459
+ if (existsSync(configPath)) {
460
+ const config = JSON.parse(readFileSync(configPath, 'utf8'));
461
+ config.slopeVersion = getPackageVersion();
462
+ writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n');
463
+ fixed.push(`Updated config.slopeVersion to ${config.slopeVersion}`);
464
+ }
465
+ break;
466
+ }
467
+ case 'config-schema': {
468
+ const schemaConfigPath = join(cwd, '.slope', 'config.json');
469
+ if (existsSync(schemaConfigPath)) {
470
+ const config = JSON.parse(readFileSync(schemaConfigPath, 'utf8'));
471
+ let changed = false;
472
+ // Fix invalid metaphor
473
+ if (typeof config.metaphor !== 'string' || !hasMetaphor(config.metaphor)) {
474
+ config.metaphor = 'golf';
475
+ changed = true;
476
+ }
477
+ // Fix missing slopeVersion
478
+ if (!config.slopeVersion) {
479
+ config.slopeVersion = getPackageVersion();
480
+ changed = true;
481
+ }
482
+ if (changed) {
483
+ writeFileSync(schemaConfigPath, JSON.stringify(config, null, 2) + '\n');
484
+ fixed.push('Fixed config schema issues (metaphor/slopeVersion)');
485
+ }
486
+ }
487
+ break;
488
+ }
489
+ case 'hook-scripts': {
490
+ const adapter = detectAdapter(cwd);
491
+ if (!adapter)
492
+ break;
493
+ const hooksDirMap = {
494
+ 'claude-code': join(cwd, '.claude', 'hooks'),
495
+ cursor: join(cwd, '.cursor', 'hooks'),
496
+ windsurf: join(cwd, '.windsurf', 'hooks'),
497
+ cline: join(cwd, '.clinerules', 'hooks'),
498
+ ob1: join(cwd, '.ob1', 'hooks'),
499
+ };
500
+ const hooksDir = hooksDirMap[adapter.id];
501
+ if (!hooksDir)
502
+ break;
503
+ // Update guard dispatcher
504
+ const dispatcherPath = join(hooksDir, 'slope-guard.sh');
505
+ if (existsSync(dispatcherPath)) {
506
+ const result = writeOrUpdateManagedScript(dispatcherPath, generateGuardDispatcherScript());
507
+ if (result === 'updated')
508
+ fixed.push('Updated slope-guard.sh managed section');
509
+ }
510
+ // Update session hooks
511
+ const sessionHooks = {
512
+ 'session-start': ['slope session start --ide="$SLOPE_IDE" --role=primary', 'slope briefing --compact'],
513
+ 'session-end': ['slope session end --session-id="$SLOPE_SESSION_ID"'],
514
+ };
515
+ for (const [name, commands] of Object.entries(sessionHooks)) {
516
+ const filePath = join(hooksDir, `slope-${name}.sh`);
517
+ if (existsSync(filePath)) {
518
+ const result = writeOrUpdateManagedScript(filePath, generateSessionHookScript(name, commands));
519
+ if (result === 'updated')
520
+ fixed.push(`Updated slope-${name}.sh managed section`);
521
+ }
522
+ }
523
+ break;
524
+ }
266
525
  case 'guards': {
267
526
  fixed.push('Run `slope hook add --level=full` to install guards');
268
527
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAqB,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AASxD,wDAAwD;AACxD,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,uDAAuD;IACvD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9B,uCAAuC;IACvC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjC,+BAA+B;IAC/B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7B,qCAAqC;IACrC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpC,yCAAyC;IACzC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjC,4CAA4C;IAC5C,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/B,+CAA+C;IAC/C,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;IAEnC,uDAAuD;IACvD,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjC,6CAA6C;IAC7C,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,+CAA+C,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrH,CAAC;IACD,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;QACjE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kFAAkF,EAAE,CAAC;IACzI,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,qDAAqD,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC9H,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACpD,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;IAClF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,0DAA0D,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACnI,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mEAAmE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACxI,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mCAAmC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;AAC9F,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,sDAAsD,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAChI,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;AAC9E,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAC1D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mCAAmC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1G,CAAC;IACD,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;IACvF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;IACnG,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,uCAAuC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACnH,CAAC;IACD,2DAA2D;IAC3D,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACzD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1D,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAChB,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,OAAO,0CAA0C,EAAE,CAAC;QAChI,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;AAC7F,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAEpD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,gFAAgF;YACzF,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACvE,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC;QAE7C,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,qBAAqB,WAAW,mDAAmD;gBAC5F,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,GAAG,cAAc,qBAAqB,WAAW,oBAAoB;aAC/E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,0DAA0D;YACnE,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAA0C;QACtD,aAAa,EAAE,WAAW;QAC1B,MAAM,EAAE,kBAAkB;QAC1B,QAAQ,EAAE,oBAAoB;QAC9B,QAAQ,EAAE,eAAe;QACzB,GAAG,EAAE,eAAe;KACrB,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU;YAAE,SAAS,CAAC,4CAA4C;QAEvE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,OAAO,QAAQ,EAAE;gBACvB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,GAAG,QAAQ,iBAAiB,UAAU,iCAAiC,QAAQ,IAAI;gBAC5F,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;YACtD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,OAAO,QAAQ,EAAE;oBACvB,MAAM,EAAE,IAAI;oBACZ,OAAO,EAAE,GAAG,QAAQ,sBAAsB,UAAU,EAAE;iBACvD,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,OAAO,QAAQ,EAAE;oBACvB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,GAAG,UAAU,4DAA4D,QAAQ,IAAI;oBAC9F,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,OAAO,QAAQ,EAAE;gBACvB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,GAAG,UAAU,kBAAkB;gBACxC,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,2CAA2C;AAC3C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,MAAqB;IACrE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;IAEtG,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;gBACtD,YAAY,CAAC,GAAG,CAAC,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBACzC,MAAM;YACR,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;gBAC9C,IAAI,OAAO,GAAG,EAAE,CAAC;gBACjB,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC9B,OAAO,GAAG,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;gBAChD,CAAC;gBACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtC,aAAa,CAAC,aAAa,EAAE,OAAO,GAAG,yEAAyE,CAAC,CAAC;oBAClH,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBAC5C,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC;oBACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;oBAC7D,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC;oBACjE,KAAK,CAAC,KAAK,EAAE,CAAC;oBACd,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBACxC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,KAAK,CAAC,6BAA8B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvE,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpD,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,oBAAoB,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBACrH,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;gBAChD,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACnC,MAAM;YACR,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7D,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;gBACtD,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC7G,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;gBAChD,MAAM;YACR,CAAC;YACD,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC;oBACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;oBAChD,MAAM,UAAU,CAAC,EAAE,CAAC,CAAC;oBACrB,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBACtC,CAAC;gBAAC,MAAM,CAAC;oBACP,oDAAoD;gBACtD,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;gBAClE,MAAM;YACR,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACrC,KAAK,CAAC,IAAI,CAAC,sBAAsB,QAAQ,qBAAqB,CAAC,CAAC;gBAClE,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gDAAgD;AAChD,SAAS,aAAa,CAAC,MAAqB;IAC1C,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAE7D,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IAEpD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;IAEzD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,YAAY,KAAK,cAAc,KAAK,WAAW,CAAC,CAAC;IAErE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,4CAA4C,CAAC,CAAC;IACrH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,IAAI,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEzC,aAAa,CAAC,MAAM,CAAC,CAAC;IAEtB,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAChD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,uCAAuC;QACvC,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAC9B,aAAa,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED,4CAA4C;IAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/guard.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAsB,MAAM,qBAAqB,CAAC;AAwBjG,OAAO,oCAAoC,CAAC;AAC5C,OAAO,+BAA+B,CAAC;AACvC,OAAO,iCAAiC,CAAC;AACzC,OAAO,gCAAgC,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAK7D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAE9E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOhF;AAED,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAwB5E,+BAA+B;AAC/B,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAE1E;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyGhE;AAwCD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkHtE"}
1
+ {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/guard.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAsB,MAAM,qBAAqB,CAAC;AA0BjG,OAAO,oCAAoC,CAAC;AAC5C,OAAO,+BAA+B,CAAC;AACvC,OAAO,iCAAiC,CAAC;AACzC,OAAO,gCAAgC,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAK7D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAE9E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOhF;AAED,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAyB5E,+BAA+B;AAC/B,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAE1E;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyGhE;AAyCD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0HtE"}
@@ -20,6 +20,8 @@ import { branchBeforeCommitGuard } from '../guards/branch-before-commit.js';
20
20
  import { worktreeCheckGuard } from '../guards/worktree-check.js';
21
21
  import { sprintCompletionGuard } from '../guards/sprint-completion.js';
22
22
  import { worktreeMergeGuard } from '../guards/worktree-merge.js';
23
+ import { worktreeSelfRemoveGuard } from '../guards/worktree-self-remove.js';
24
+ import { formatGuardDocs } from '../guards/docs.js';
23
25
  import { recordBaseline } from '../guards/git-utils.js';
24
26
  import { execSync } from 'node:child_process';
25
27
  // Side-effect imports: ensure all adapters are registered for detectAdapter()
@@ -76,6 +78,7 @@ const handlers = {
76
78
  'worktree-check': worktreeCheckGuard,
77
79
  'sprint-completion': sprintCompletionGuard,
78
80
  'worktree-merge': worktreeMergeGuard,
81
+ 'worktree-self-remove': worktreeSelfRemoveGuard,
79
82
  };
80
83
  /** Register a guard handler */
81
84
  export function registerGuard(name, handler) {
@@ -211,6 +214,7 @@ Usage:
211
214
  slope guard <name> Run a guard (reads hook JSON from stdin)
212
215
  slope guard list Show all available guards
213
216
  slope guard status Show per-harness guard installation state
217
+ slope guard recommend Show missing guards with relevance
214
218
  slope guard enable <name> Enable a disabled guard
215
219
  slope guard disable <name> Disable a guard
216
220
 
@@ -308,6 +312,14 @@ export async function guardManageCommand(args) {
308
312
  console.log('\nLegend: [+] active [-] disabled [~] unsupported by harness\n');
309
313
  break;
310
314
  }
315
+ case 'recommend': {
316
+ guardRecommendCommand(cwd);
317
+ break;
318
+ }
319
+ case 'docs': {
320
+ formatGuardDocs(name);
321
+ break;
322
+ }
311
323
  case 'enable':
312
324
  case 'disable': {
313
325
  if (!name) {
@@ -329,4 +341,146 @@ export async function guardManageCommand(args) {
329
341
  printUsage();
330
342
  }
331
343
  }
344
+ /** Guard relevance metadata: when each guard is useful and why */
345
+ const GUARD_RELEVANCE = {
346
+ 'explore': { when: 'always', why: 'Prevents unnecessary codebase exploration when map is available' },
347
+ 'hazard': { when: 'always', why: 'Warns about known issues before editing affected files' },
348
+ 'commit-nudge': { when: 'always', why: 'Prevents lost work from uncommitted changes' },
349
+ 'branch-before-commit': { when: 'always', why: 'Enforces branch discipline — never commit to main' },
350
+ 'push-nudge': { when: 'always', why: 'Ensures work is pushed for recovery' },
351
+ 'stop-check': { when: 'always', why: 'Catches uncommitted/unpushed work before session end' },
352
+ 'worktree-check': { when: 'multi-session', why: 'Required for concurrent agent sessions' },
353
+ 'worktree-merge': { when: 'multi-session', why: 'Prevents gh pr merge failures in worktrees' },
354
+ 'worktree-self-remove': { when: 'multi-session', why: 'Prevents shell breakage from self-removing worktree' },
355
+ 'scope-drift': { when: 'sprint-workflow', why: 'Keeps work focused on claimed tickets' },
356
+ 'sprint-completion': { when: 'sprint-workflow', why: 'Blocks PR until tests pass and scorecard exists' },
357
+ 'review-tier': { when: 'sprint-workflow', why: 'Prompts for plan review after writing plan files' },
358
+ 'workflow-gate': { when: 'sprint-workflow', why: 'Blocks plan exit until review rounds complete' },
359
+ 'pr-review': { when: 'sprint-workflow', why: 'Prompts for implementation review after PR creation' },
360
+ 'next-action': { when: 'sprint-workflow', why: 'Suggests next steps at session end' },
361
+ 'version-check': { when: 'monorepo', why: 'Blocks push when package versions not bumped' },
362
+ 'stale-flows': { when: 'has-flows', why: 'Warns when editing files in stale flow definitions' },
363
+ 'subagent-gate': { when: 'always', why: 'Caps subagent model/turns to control cost' },
364
+ 'compaction': { when: 'always', why: 'Extracts events before context window compression' },
365
+ 'transcript': { when: 'always', why: 'Records tool call metadata for session replay' },
366
+ };
367
+ /** Detect which workflow profiles apply to this repo */
368
+ function detectWorkflowProfiles(cwd) {
369
+ const profiles = new Set();
370
+ // multi-session: worktree dirs exist
371
+ try {
372
+ const gitDir = join(cwd, '.git', 'worktrees');
373
+ if (existsSync(gitDir))
374
+ profiles.add('multi-session');
375
+ }
376
+ catch { /* ignore */ }
377
+ // sprint-workflow: roadmap.json + scorecards exist
378
+ if (existsSync(join(cwd, 'docs', 'backlog', 'roadmap.json')) &&
379
+ existsSync(join(cwd, 'docs', 'retros'))) {
380
+ profiles.add('sprint-workflow');
381
+ }
382
+ // monorepo: packages/ dir or workspaces in package.json
383
+ if (existsSync(join(cwd, 'packages'))) {
384
+ profiles.add('monorepo');
385
+ }
386
+ else {
387
+ try {
388
+ const pkg = JSON.parse(readFileSync(join(cwd, 'package.json'), 'utf8'));
389
+ if (pkg.workspaces)
390
+ profiles.add('monorepo');
391
+ }
392
+ catch { /* no package.json */ }
393
+ }
394
+ // has-flows: .slope/flows.json exists and non-empty
395
+ try {
396
+ const flowsPath = join(cwd, '.slope', 'flows.json');
397
+ if (existsSync(flowsPath)) {
398
+ const flows = JSON.parse(readFileSync(flowsPath, 'utf8'));
399
+ if (Array.isArray(flows) ? flows.length > 0 : Object.keys(flows).length > 0) {
400
+ profiles.add('has-flows');
401
+ }
402
+ }
403
+ }
404
+ catch { /* ignore */ }
405
+ return profiles;
406
+ }
407
+ /** slope guard recommend — show missing guards with relevance */
408
+ function guardRecommendCommand(cwd) {
409
+ const config = loadConfig();
410
+ const disabled = config.guidance?.disabled ?? [];
411
+ // Load custom guard plugins
412
+ loadPluginGuards(cwd, config.plugins);
413
+ // Detect workflow profiles
414
+ const profiles = detectWorkflowProfiles(cwd);
415
+ // Deduplicate guard names
416
+ const seen = new Set();
417
+ const allGuards = [];
418
+ for (const d of getAllGuardDefinitions()) {
419
+ if (seen.has(d.name))
420
+ continue;
421
+ seen.add(d.name);
422
+ allGuards.push({ name: d.name, description: d.description });
423
+ }
424
+ // Find missing guards with relevance
425
+ const missing = [];
426
+ for (const guard of allGuards) {
427
+ if (disabled.includes(guard.name))
428
+ continue;
429
+ const relevance = GUARD_RELEVANCE[guard.name];
430
+ if (!relevance)
431
+ continue;
432
+ // Check if installed — guard names in hooks.json may differ from guard names
433
+ // (hooks.json uses hook event names like "session-start", not guard names)
434
+ // Check if the guard is configured in the harness hooks config
435
+ const isInstalled = isGuardInstalled(cwd, guard.name);
436
+ if (isInstalled)
437
+ continue;
438
+ const relevant = relevance.when === 'always' || profiles.has(relevance.when);
439
+ missing.push({ name: guard.name, relevant, when: relevance.when, why: relevance.why });
440
+ }
441
+ if (missing.length === 0) {
442
+ console.log('\nAll relevant guards are installed. Nothing to recommend.\n');
443
+ return;
444
+ }
445
+ // Sort: relevant first, then alphabetical
446
+ missing.sort((a, b) => {
447
+ if (a.relevant !== b.relevant)
448
+ return a.relevant ? -1 : 1;
449
+ return a.name.localeCompare(b.name);
450
+ });
451
+ const profileList = profiles.size > 0 ? [...profiles].join(', ') : 'none detected';
452
+ console.log(`\nWorkflow profiles: ${profileList}\n`);
453
+ console.log('Missing guards:\n');
454
+ console.log(` ${'Guard'.padEnd(24)} ${'Relevant'.padEnd(10)} ${'When'.padEnd(18)} Why`);
455
+ console.log(` ${'─'.repeat(24)} ${'─'.repeat(10)} ${'─'.repeat(18)} ${'─'.repeat(40)}`);
456
+ for (const g of missing) {
457
+ const marker = g.relevant ? 'YES' : 'no';
458
+ console.log(` ${g.name.padEnd(24)} ${marker.padEnd(10)} ${g.when.padEnd(18)} ${g.why}`);
459
+ }
460
+ const relevantCount = missing.filter(g => g.relevant).length;
461
+ if (relevantCount > 0) {
462
+ console.log(`\n ${relevantCount} guard${relevantCount > 1 ? 's' : ''} recommended for your workflow.`);
463
+ console.log(' Run `slope hook add --level=full` to install all guards.\n');
464
+ }
465
+ else {
466
+ console.log('\n No guards are specifically recommended for your detected workflow.\n');
467
+ }
468
+ }
469
+ /** Check if a guard is installed in the harness hooks config */
470
+ function isGuardInstalled(cwd, guardName) {
471
+ const adapter = detectAdapter(cwd);
472
+ if (!adapter)
473
+ return false;
474
+ const configPath = adapter.hooksConfigPath(cwd);
475
+ if (!configPath || !existsSync(configPath))
476
+ return false;
477
+ try {
478
+ const raw = readFileSync(configPath, 'utf8');
479
+ // Check if the guard name appears in the hooks config (e.g. slope-guard.sh <name>)
480
+ return raw.includes(`slope-guard.sh ${guardName}`) || raw.includes(`guard ${guardName}`);
481
+ }
482
+ catch {
483
+ return false;
484
+ }
485
+ }
332
486
  //# sourceMappingURL=guard.js.map