@slope-dev/slope 1.25.3 → 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 (100) 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/loop/aider-executor.js +28 -2
  44. package/dist/cli/loop/aider-executor.js.map +1 -1
  45. package/dist/cli/loop/executor.d.ts.map +1 -1
  46. package/dist/cli/loop/executor.js +9 -5
  47. package/dist/cli/loop/executor.js.map +1 -1
  48. package/dist/cli/loop/types.d.ts +1 -0
  49. package/dist/cli/loop/types.d.ts.map +1 -1
  50. package/dist/cli/loop/types.js +2 -0
  51. package/dist/cli/loop/types.js.map +1 -1
  52. package/dist/cli/registry.d.ts.map +1 -1
  53. package/dist/cli/registry.js +23 -0
  54. package/dist/cli/registry.js.map +1 -1
  55. package/dist/cli/template-generator.d.ts.map +1 -1
  56. package/dist/cli/template-generator.js +20 -4
  57. package/dist/cli/template-generator.js.map +1 -1
  58. package/dist/core/adapters/claude-code.d.ts.map +1 -1
  59. package/dist/core/adapters/claude-code.js +17 -20
  60. package/dist/core/adapters/claude-code.js.map +1 -1
  61. package/dist/core/adapters/cline.d.ts.map +1 -1
  62. package/dist/core/adapters/cline.js +19 -17
  63. package/dist/core/adapters/cline.js.map +1 -1
  64. package/dist/core/adapters/cursor.d.ts.map +1 -1
  65. package/dist/core/adapters/cursor.js +19 -17
  66. package/dist/core/adapters/cursor.js.map +1 -1
  67. package/dist/core/adapters/generic.d.ts.map +1 -1
  68. package/dist/core/adapters/generic.js +21 -19
  69. package/dist/core/adapters/generic.js.map +1 -1
  70. package/dist/core/adapters/ob1.d.ts.map +1 -1
  71. package/dist/core/adapters/ob1.js +19 -17
  72. package/dist/core/adapters/ob1.js.map +1 -1
  73. package/dist/core/adapters/windsurf.d.ts.map +1 -1
  74. package/dist/core/adapters/windsurf.js +32 -31
  75. package/dist/core/adapters/windsurf.js.map +1 -1
  76. package/dist/core/config.d.ts +7 -0
  77. package/dist/core/config.d.ts.map +1 -1
  78. package/dist/core/config.js.map +1 -1
  79. package/dist/core/guard.d.ts +1 -1
  80. package/dist/core/guard.d.ts.map +1 -1
  81. package/dist/core/guard.js +8 -0
  82. package/dist/core/guard.js.map +1 -1
  83. package/dist/core/harness.d.ts +18 -0
  84. package/dist/core/harness.d.ts.map +1 -1
  85. package/dist/core/harness.js +59 -0
  86. package/dist/core/harness.js.map +1 -1
  87. package/dist/core/index.d.ts +1 -1
  88. package/dist/core/index.d.ts.map +1 -1
  89. package/dist/core/index.js +1 -1
  90. package/dist/core/index.js.map +1 -1
  91. package/dist/core/prep.d.ts +10 -0
  92. package/dist/core/prep.d.ts.map +1 -1
  93. package/dist/core/prep.js +28 -0
  94. package/dist/core/prep.js.map +1 -1
  95. package/dist/store/index.d.ts.map +1 -1
  96. package/dist/store/index.js +5 -2
  97. package/dist/store/index.js.map +1 -1
  98. package/dist/store-pg/index.js +1 -1
  99. package/dist/store-pg/index.js.map +1 -1
  100. package/package.json +1 -1
@@ -3,16 +3,20 @@
3
3
  import { loadConfig } from '../../core/config.js';
4
4
  import { hasEmbeddingSupport } from '../../core/embedding-store.js';
5
5
  import { loadScorecards } from '../../core/loader.js';
6
- import { generatePrepPlan, formatPrepPlan } from '../../core/prep.js';
6
+ import { generatePrepPlan, formatPrepPlan, resolveTicket, findSimilarTickets, extractHazards, formatLitePrepPlan } from '../../core/prep.js';
7
7
  import { SqliteSlopeStore } from '../../store/index.js';
8
8
  function parseArgs(args) {
9
9
  let ticketId = null;
10
10
  let json = false;
11
+ let lite = false;
11
12
  let top = 5;
12
13
  for (const arg of args) {
13
14
  if (arg === '--json') {
14
15
  json = true;
15
16
  }
17
+ else if (arg === '--lite') {
18
+ lite = true;
19
+ }
16
20
  else if (arg.startsWith('--top=')) {
17
21
  top = parseInt(arg.slice('--top='.length), 10) || 5;
18
22
  }
@@ -20,7 +24,7 @@ function parseArgs(args) {
20
24
  ticketId = arg;
21
25
  }
22
26
  }
23
- return { ticketId, json, top };
27
+ return { ticketId, json, lite, top };
24
28
  }
25
29
  export async function prepCommand(args) {
26
30
  const cwd = process.cwd();
@@ -34,6 +38,19 @@ export async function prepCommand(args) {
34
38
  console.error('Error: Provide a ticket ID. Usage: slope prep <ticket-id>');
35
39
  process.exit(1);
36
40
  }
41
+ // --lite mode: hazards + similar tickets only (no embedding required)
42
+ if (flags.lite) {
43
+ const ticket = resolveTicket(flags.ticketId, cwd, undefined, config.roadmapPath);
44
+ if (!ticket) {
45
+ console.error(`Ticket not found: ${flags.ticketId}`);
46
+ process.exit(1);
47
+ }
48
+ const scorecards = loadScorecards(config, cwd);
49
+ const similarTickets = findSimilarTickets(ticket.title, scorecards);
50
+ const hazards = extractHazards(ticket.modules, scorecards);
51
+ console.log(formatLitePrepPlan(flags.ticketId, ticket.title, similarTickets, hazards));
52
+ return;
53
+ }
37
54
  // Resolve embedding config
38
55
  const emb = config.embedding;
39
56
  if (!emb) {
@@ -85,9 +102,11 @@ slope prep — Generate execution plan for a ticket
85
102
  Usage:
86
103
  slope prep <ticket-id> Generate execution plan
87
104
  slope prep <ticket-id> --json Output as JSON
105
+ slope prep <ticket-id> --lite Hazards + similar tickets only (no embedding)
88
106
  slope prep <ticket-id> --top=5 Max context files (default: 5)
89
107
 
90
- Requires a built semantic index. Run \`slope index\` first.
108
+ Full mode requires a built semantic index. Run \`slope index\` first.
109
+ --lite mode works without embeddings (uses scorecard keyword matching).
91
110
  Looks up ticket in roadmap.json and slope-loop/backlog.json.
92
111
  `);
93
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prep.js","sourceRoot":"","sources":["../../../src/cli/commands/prep.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prep.js","sourceRoot":"","sources":["../../../src/cli/commands/prep.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * slope quickstart — Interactive tutorial for new users.
3
+ * Walks through the core SLOPE workflow, checking current state along the way.
4
+ */
5
+ export declare function quickstartCommand(args: string[]): Promise<void>;
6
+ //# sourceMappingURL=quickstart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quickstart.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/quickstart.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiIrE"}
@@ -0,0 +1,103 @@
1
+ import { existsSync, readdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import * as p from '@clack/prompts';
4
+ /**
5
+ * slope quickstart — Interactive tutorial for new users.
6
+ * Walks through the core SLOPE workflow, checking current state along the way.
7
+ */
8
+ export async function quickstartCommand(args) {
9
+ if (args.includes('--help') || args.includes('-h')) {
10
+ console.log(`
11
+ slope quickstart — Interactive SLOPE tutorial
12
+
13
+ Usage:
14
+ slope quickstart Walk through the core SLOPE workflow step by step
15
+
16
+ Non-destructive — shows commands to run, does not modify your project.
17
+ `);
18
+ return;
19
+ }
20
+ const cwd = process.cwd();
21
+ p.intro('SLOPE Quickstart');
22
+ console.log(`
23
+ SLOPE (Sprint Lifecycle & Operational Performance Engine) helps you
24
+ track, score, and improve your sprint execution over time.
25
+
26
+ This guide walks through the core workflow. No files will be modified.
27
+ `);
28
+ // ── Step 0: Check prerequisites ──────────────────────────────────
29
+ const slopeDir = join(cwd, '.slope');
30
+ const hasSlope = existsSync(join(slopeDir, 'config.json'));
31
+ const retrosDir = join(cwd, 'docs', 'retros');
32
+ const hasScorecards = existsSync(retrosDir) && readdirSync(retrosDir).some(f => f.endsWith('.json'));
33
+ if (!hasSlope) {
34
+ p.note('Your project has not been initialized with SLOPE yet.\n\n' +
35
+ 'Run one of:\n' +
36
+ ' slope init Basic setup\n' +
37
+ ' slope init --interactive Guided wizard\n' +
38
+ ' slope init --claude-code Setup with Claude Code hooks\n' +
39
+ ' slope init --cursor Setup with Cursor IDE rules', 'Step 0 — Initialize');
40
+ const shouldContinue = await p.confirm({
41
+ message: 'Continue the tutorial anyway?',
42
+ initialValue: true,
43
+ });
44
+ if (p.isCancel(shouldContinue) || !shouldContinue) {
45
+ p.outro('Run `slope init` first, then `slope quickstart` again.');
46
+ return;
47
+ }
48
+ }
49
+ else {
50
+ p.log.success('Project initialized — .slope/config.json found');
51
+ }
52
+ // ── Step 1: Pre-Sprint Briefing ──────────────────────────────────
53
+ p.note('Before starting a sprint, get a briefing on your current state:\n\n' +
54
+ ' slope briefing\n\n' +
55
+ 'This shows:\n' +
56
+ ' - Handicap snapshot (trending performance)\n' +
57
+ ' - Hazard index (known gotchas in your code areas)\n' +
58
+ ' - Session continuity (active claims, unfinished work)\n\n' +
59
+ 'Filter by area: slope briefing --categories=testing,api\n' +
60
+ 'Filter by keyword: slope briefing --keywords=migration', 'Step 1 — Pre-Sprint Briefing');
61
+ // ── Step 2: Sprint Planning ──────────────────────────────────────
62
+ p.note('Plan each ticket before writing code:\n\n' +
63
+ ' slope plan --complexity=medium\n\n' +
64
+ 'This recommends:\n' +
65
+ ' - Club selection (approach complexity: putter → driver)\n' +
66
+ ' - Known hazards for the code areas you\'ll touch\n' +
67
+ ' - Training tips based on your miss patterns\n\n' +
68
+ 'Claim tickets to avoid conflicts in multi-agent setups:\n' +
69
+ ' slope claim --target=S1-1 --sprint=1', 'Step 2 — Planning & Claims');
70
+ // ── Step 3: Scoring ──────────────────────────────────────────────
71
+ p.note('After completing sprint work, score and validate:\n\n' +
72
+ ' slope validate docs/retros/sprint-1.json\n' +
73
+ ' slope review docs/retros/sprint-1.json\n\n' +
74
+ 'Or auto-generate a scorecard from git history:\n' +
75
+ ' slope auto-card --sprint=1\n\n' +
76
+ 'View your performance trend:\n' +
77
+ ' slope card', 'Step 3 — Scoring & Review');
78
+ // ── Step 4: Guards & Hooks ───────────────────────────────────────
79
+ p.note('Guards are hooks that guide your agent during coding:\n\n' +
80
+ ' slope hook add --level=full Install all guards\n' +
81
+ ' slope guard list See available guards\n' +
82
+ ' slope guard status Check installation state\n' +
83
+ ' slope guard docs Detailed guard documentation\n\n' +
84
+ 'Guards can:\n' +
85
+ ' - Nudge you to commit/push regularly\n' +
86
+ ' - Warn about known hazards in files you\'re editing\n' +
87
+ ' - Block commits on main (branch discipline)\n' +
88
+ ' - Detect scope drift outside your claimed tickets', 'Step 4 — Guards & Hooks');
89
+ // ── Next Steps ───────────────────────────────────────────────────
90
+ const nextSteps = [];
91
+ if (!hasSlope) {
92
+ nextSteps.push('slope init --interactive Initialize SLOPE for this project');
93
+ }
94
+ if (!hasScorecards) {
95
+ nextSteps.push('slope auto-card --sprint=1 Generate your first scorecard from git');
96
+ }
97
+ nextSteps.push('slope briefing Get a pre-sprint briefing');
98
+ nextSteps.push('slope help Browse all commands');
99
+ nextSteps.push('slope doctor Check repo health');
100
+ p.note(nextSteps.join('\n'), 'Next Steps');
101
+ p.outro('Ready to score your sprints!');
102
+ }
103
+ //# sourceMappingURL=quickstart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../../src/cli/commands/quickstart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAc;IACpD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC;;;;;;;CAOf,CAAC,CAAC;QACC,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC;;;;;CAKb,CAAC,CAAC;IAED,oEAAoE;IAEpE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAErG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,CAAC,CAAC,IAAI,CACJ,2DAA2D;YAC3D,eAAe;YACf,kDAAkD;YAClD,oDAAoD;YACpD,mEAAmE;YACnE,gEAAgE,EAChE,qBAAqB,CACtB,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;YACrC,OAAO,EAAE,+BAA+B;YACxC,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAClD,CAAC,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;IACH,CAAC;SAAM,CAAC;QACN,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC;IAClE,CAAC;IAED,oEAAoE;IAEpE,CAAC,CAAC,IAAI,CACJ,qEAAqE;QACrE,sBAAsB;QACtB,eAAe;QACf,gDAAgD;QAChD,uDAAuD;QACvD,6DAA6D;QAC7D,4DAA4D;QAC5D,wDAAwD,EACxD,8BAA8B,CAC/B,CAAC;IAEF,oEAAoE;IAEpE,CAAC,CAAC,IAAI,CACJ,2CAA2C;QAC3C,sCAAsC;QACtC,oBAAoB;QACpB,6DAA6D;QAC7D,sDAAsD;QACtD,mDAAmD;QACnD,2DAA2D;QAC3D,wCAAwC,EACxC,4BAA4B,CAC7B,CAAC;IAEF,oEAAoE;IAEpE,CAAC,CAAC,IAAI,CACJ,uDAAuD;QACvD,8CAA8C;QAC9C,8CAA8C;QAC9C,kDAAkD;QAClD,kCAAkC;QAClC,gCAAgC;QAChC,cAAc,EACd,2BAA2B,CAC5B,CAAC;IAEF,oEAAoE;IAEpE,CAAC,CAAC,IAAI,CACJ,2DAA2D;QAC3D,wDAAwD;QACxD,0DAA0D;QAC1D,8DAA8D;QAC9D,oEAAoE;QACpE,eAAe;QACf,0CAA0C;QAC1C,yDAAyD;QACzD,iDAAiD;QACjD,qDAAqD,EACrD,yBAAyB,CAC1B,CAAC;IAEF,oEAAoE;IAEpE,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,SAAS,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,SAAS,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IACxF,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACzE,SAAS,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IACnE,SAAS,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAEjE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;IAE3C,CAAC,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function worktreeCommand(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=worktree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/worktree.ts"],"names":[],"mappings":"AA0NA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BnE"}
@@ -0,0 +1,224 @@
1
+ // slope worktree cleanup — Clean up stale git worktrees
2
+ // Usage: slope worktree cleanup [--path=<path>] [--all] [--dry-run]
3
+ import { execSync } from 'node:child_process';
4
+ function parseArgs(args) {
5
+ let subcommand = null;
6
+ let targetPath = null;
7
+ let all = false;
8
+ let dryRun = false;
9
+ for (const arg of args) {
10
+ if (arg === '--all') {
11
+ all = true;
12
+ }
13
+ else if (arg === '--dry-run') {
14
+ dryRun = true;
15
+ }
16
+ else if (arg.startsWith('--path=')) {
17
+ targetPath = arg.slice('--path='.length);
18
+ }
19
+ else if (!arg.startsWith('-')) {
20
+ subcommand = arg;
21
+ }
22
+ }
23
+ return { subcommand, targetPath, all, dryRun };
24
+ }
25
+ /** Parse `git worktree list --porcelain` output */
26
+ function listWorktrees(cwd) {
27
+ let output;
28
+ try {
29
+ output = execSync('git worktree list --porcelain', { cwd, encoding: 'utf8' });
30
+ }
31
+ catch {
32
+ return [];
33
+ }
34
+ const worktrees = [];
35
+ let current = {};
36
+ for (const line of output.split('\n')) {
37
+ if (line.startsWith('worktree ')) {
38
+ if (current.path)
39
+ worktrees.push(current);
40
+ current = { path: line.slice('worktree '.length) };
41
+ }
42
+ else if (line.startsWith('HEAD ')) {
43
+ current.head = line.slice('HEAD '.length);
44
+ }
45
+ else if (line.startsWith('branch ')) {
46
+ // refs/heads/feat/foo → feat/foo
47
+ current.branch = line.slice('branch '.length).replace('refs/heads/', '');
48
+ }
49
+ else if (line === '') {
50
+ if (current.path)
51
+ worktrees.push(current);
52
+ current = {};
53
+ }
54
+ }
55
+ if (current.path)
56
+ worktrees.push(current);
57
+ return worktrees;
58
+ }
59
+ /** Check if we're currently inside a worktree */
60
+ function isInsideWorktree(cwd) {
61
+ try {
62
+ const commonDir = execSync('git rev-parse --git-common-dir 2>/dev/null', { cwd, encoding: 'utf8' }).trim();
63
+ const gitDir = execSync('git rev-parse --git-dir 2>/dev/null', { cwd, encoding: 'utf8' }).trim();
64
+ return gitDir !== commonDir && gitDir !== '.git';
65
+ }
66
+ catch {
67
+ return false;
68
+ }
69
+ }
70
+ /** Check if gh CLI is available */
71
+ function hasGhCli() {
72
+ try {
73
+ execSync('gh --version', { encoding: 'utf8', stdio: 'pipe' });
74
+ return true;
75
+ }
76
+ catch {
77
+ return false;
78
+ }
79
+ }
80
+ /** Check if a branch's PR is merged */
81
+ function isPrMerged(branch) {
82
+ try {
83
+ const result = execSync(`gh pr list --head "${branch}" --state merged --json url --limit 1`, { encoding: 'utf8', stdio: 'pipe' });
84
+ const prs = JSON.parse(result);
85
+ return Array.isArray(prs) && prs.length > 0;
86
+ }
87
+ catch {
88
+ return false;
89
+ }
90
+ }
91
+ function cleanupWorktree(wt, dryRun, ghAvailable) {
92
+ const branch = wt.branch || '';
93
+ if (ghAvailable && branch) {
94
+ const merged = isPrMerged(branch);
95
+ if (!merged) {
96
+ console.log(` Skip: ${wt.path} (branch "${branch}" — PR not merged)`);
97
+ return false;
98
+ }
99
+ }
100
+ if (dryRun) {
101
+ console.log(` [dry-run] Would remove worktree: ${wt.path}`);
102
+ if (branch) {
103
+ console.log(` [dry-run] Would delete branch: ${branch}`);
104
+ console.log(` [dry-run] Would delete remote branch: origin/${branch}`);
105
+ }
106
+ return true;
107
+ }
108
+ // Remove worktree
109
+ try {
110
+ execSync(`git worktree remove "${wt.path}" --force`, { encoding: 'utf8', stdio: 'pipe' });
111
+ console.log(` Removed worktree: ${wt.path}`);
112
+ }
113
+ catch (err) {
114
+ console.error(` Error removing worktree ${wt.path}: ${err.message}`);
115
+ return false;
116
+ }
117
+ // Delete local branch
118
+ if (branch) {
119
+ try {
120
+ execSync(`git branch -d "${branch}"`, { encoding: 'utf8', stdio: 'pipe' });
121
+ console.log(` Deleted branch: ${branch}`);
122
+ }
123
+ catch { /* branch already deleted or not fully merged — ignore */ }
124
+ // Delete remote branch
125
+ try {
126
+ execSync(`git push origin --delete "${branch}"`, { encoding: 'utf8', stdio: 'pipe' });
127
+ console.log(` Deleted remote branch: origin/${branch}`);
128
+ }
129
+ catch { /* remote branch already gone — ignore */ }
130
+ }
131
+ return true;
132
+ }
133
+ async function cleanupCommand(args) {
134
+ const flags = parseArgs(args);
135
+ const cwd = process.cwd();
136
+ // Safety: block if running from inside a worktree
137
+ if (isInsideWorktree(cwd)) {
138
+ console.error('Error: Cannot run worktree cleanup from inside a worktree.');
139
+ console.error('Call ExitWorktree first to return to the main repo, then retry.');
140
+ process.exit(1);
141
+ }
142
+ const allWorktrees = listWorktrees(cwd);
143
+ if (allWorktrees.length === 0) {
144
+ console.log('No worktrees found.');
145
+ return;
146
+ }
147
+ // First entry is the main worktree — skip it
148
+ const mainPath = allWorktrees[0]?.path;
149
+ const secondaryWorktrees = allWorktrees.filter(wt => wt.path !== mainPath);
150
+ if (secondaryWorktrees.length === 0) {
151
+ console.log('No secondary worktrees to clean up.');
152
+ return;
153
+ }
154
+ // Determine targets
155
+ let targets;
156
+ if (flags.targetPath) {
157
+ const found = secondaryWorktrees.find(wt => wt.path === flags.targetPath || wt.path.endsWith(flags.targetPath));
158
+ if (!found) {
159
+ console.error(`Worktree not found: ${flags.targetPath}`);
160
+ console.error('Available worktrees:');
161
+ for (const wt of secondaryWorktrees) {
162
+ console.error(` ${wt.path} [${wt.branch || 'detached'}]`);
163
+ }
164
+ process.exit(1);
165
+ }
166
+ targets = [found];
167
+ }
168
+ else if (flags.all) {
169
+ targets = secondaryWorktrees;
170
+ }
171
+ else {
172
+ console.error('Error: Specify --path=<path> or --all');
173
+ console.error('Available worktrees:');
174
+ for (const wt of secondaryWorktrees) {
175
+ console.error(` ${wt.path} [${wt.branch || 'detached'}]`);
176
+ }
177
+ process.exit(1);
178
+ }
179
+ const ghAvailable = hasGhCli();
180
+ if (!ghAvailable) {
181
+ console.log('Note: gh CLI not found — skipping PR merge checks');
182
+ }
183
+ let cleaned = 0;
184
+ for (const wt of targets) {
185
+ if (cleanupWorktree(wt, flags.dryRun, ghAvailable)) {
186
+ cleaned++;
187
+ }
188
+ }
189
+ if (flags.dryRun) {
190
+ console.log(`\n${cleaned} worktree(s) would be cleaned.`);
191
+ }
192
+ else {
193
+ console.log(`\nCleaned ${cleaned} worktree(s).`);
194
+ }
195
+ }
196
+ export async function worktreeCommand(args) {
197
+ const sub = args[0];
198
+ if (sub === 'cleanup') {
199
+ return cleanupCommand(args.slice(1));
200
+ }
201
+ if (args.includes('--help') || args.includes('-h') || !sub) {
202
+ console.log(`
203
+ slope worktree — Manage git worktrees
204
+
205
+ Usage:
206
+ slope worktree cleanup [--path=<path>] [--all] [--dry-run]
207
+
208
+ Options:
209
+ --path=<path> Target a specific worktree
210
+ --all Clean up all secondary worktrees
211
+ --dry-run Preview what would happen without making changes
212
+
213
+ For each worktree, cleanup will:
214
+ 1. Check if the branch's PR is merged (requires gh CLI)
215
+ 2. Remove the worktree (git worktree remove)
216
+ 3. Delete the local branch (git branch -d)
217
+ 4. Delete the remote branch (git push origin --delete)
218
+ `);
219
+ return;
220
+ }
221
+ console.error(`Unknown subcommand: ${sub}. Run slope worktree --help for usage.`);
222
+ process.exit(1);
223
+ }
224
+ //# sourceMappingURL=worktree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../../src/cli/commands/worktree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export interface GuardDoc {
2
+ /** What problem this guard solves */
3
+ purpose: string;
4
+ /** Hook event + matcher (what tools/actions fire it) */
5
+ triggers: string;
6
+ /** What it does when fired (block vs advisory vs context injection) */
7
+ behavior: string;
8
+ /** How to enable/disable, relevant config.json fields */
9
+ configuration: string;
10
+ /** Which --level installs it */
11
+ level: 'scoring' | 'full';
12
+ }
13
+ export declare const GUARD_DOCS: Record<string, GuardDoc>;
14
+ /**
15
+ * Format guard documentation for console output.
16
+ * @param name — specific guard name, or undefined for all guards
17
+ */
18
+ export declare function formatGuardDocs(name?: string): void;
19
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../src/cli/guards/docs.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACvB,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAsI/C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAuCnD"}