@slope-dev/slope 1.13.0 → 1.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/adapters.d.ts +12 -0
  2. package/dist/adapters.d.ts.map +1 -0
  3. package/dist/adapters.js +15 -0
  4. package/dist/adapters.js.map +1 -0
  5. package/dist/cli/commands/guard.d.ts.map +1 -1
  6. package/dist/cli/commands/guard.js +2 -0
  7. package/dist/cli/commands/guard.js.map +1 -1
  8. package/dist/cli/commands/hook.d.ts +4 -0
  9. package/dist/cli/commands/hook.d.ts.map +1 -1
  10. package/dist/cli/commands/hook.js +57 -83
  11. package/dist/cli/commands/hook.js.map +1 -1
  12. package/dist/cli/commands/init.d.ts +10 -3
  13. package/dist/cli/commands/init.d.ts.map +1 -1
  14. package/dist/cli/commands/init.js +78 -9
  15. package/dist/cli/commands/init.js.map +1 -1
  16. package/dist/cli/commands/roadmap.d.ts.map +1 -1
  17. package/dist/cli/commands/roadmap.js +94 -1
  18. package/dist/cli/commands/roadmap.js.map +1 -1
  19. package/dist/cli/guards/branch-before-commit.d.ts +7 -0
  20. package/dist/cli/guards/branch-before-commit.d.ts.map +1 -0
  21. package/dist/cli/guards/branch-before-commit.js +43 -0
  22. package/dist/cli/guards/branch-before-commit.js.map +1 -0
  23. package/dist/cli/guards/stop-check.d.ts +4 -0
  24. package/dist/cli/guards/stop-check.d.ts.map +1 -1
  25. package/dist/cli/guards/stop-check.js +50 -16
  26. package/dist/cli/guards/stop-check.js.map +1 -1
  27. package/dist/core/adapters/claude-code.d.ts +25 -0
  28. package/dist/core/adapters/claude-code.d.ts.map +1 -0
  29. package/dist/core/adapters/claude-code.js +133 -0
  30. package/dist/core/adapters/claude-code.js.map +1 -0
  31. package/dist/core/adapters/cursor.d.ts +35 -0
  32. package/dist/core/adapters/cursor.d.ts.map +1 -0
  33. package/dist/core/adapters/cursor.js +138 -0
  34. package/dist/core/adapters/cursor.js.map +1 -0
  35. package/dist/core/adapters/generic.d.ts +26 -0
  36. package/dist/core/adapters/generic.d.ts.map +1 -0
  37. package/dist/core/adapters/generic.js +137 -0
  38. package/dist/core/adapters/generic.js.map +1 -0
  39. package/dist/core/adapters/windsurf.d.ts +34 -0
  40. package/dist/core/adapters/windsurf.d.ts.map +1 -0
  41. package/dist/core/adapters/windsurf.js +165 -0
  42. package/dist/core/adapters/windsurf.js.map +1 -0
  43. package/dist/core/config.d.ts +1 -0
  44. package/dist/core/config.d.ts.map +1 -1
  45. package/dist/core/config.js.map +1 -1
  46. package/dist/core/guard.d.ts +10 -3
  47. package/dist/core/guard.d.ts.map +1 -1
  48. package/dist/core/guard.js +33 -59
  49. package/dist/core/guard.js.map +1 -1
  50. package/dist/core/harness.d.ts +55 -0
  51. package/dist/core/harness.d.ts.map +1 -0
  52. package/dist/core/harness.js +88 -0
  53. package/dist/core/harness.js.map +1 -0
  54. package/dist/core/index.d.ts +7 -0
  55. package/dist/core/index.d.ts.map +1 -1
  56. package/dist/core/index.js +7 -0
  57. package/dist/core/index.js.map +1 -1
  58. package/package.json +5 -1
@@ -0,0 +1,12 @@
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';
5
+ export { registerAdapter, getAdapter, listAdapters, detectAdapter, clearAdapters, resolveToolMatcher, ADAPTER_PRIORITY, TOOL_CATEGORIES, CLAUDE_CODE_TOOLS } from './core/harness.js';
6
+ export type { HarnessAdapter, HarnessId, ToolCategory, ToolNameMap } from './core/harness.js';
7
+ export { ClaudeCodeAdapter, claudeCodeAdapter } from './core/adapters/claude-code.js';
8
+ export { CursorAdapter, cursorAdapter } from './core/adapters/cursor.js';
9
+ export { WindsurfAdapter, windsurfAdapter } from './core/adapters/windsurf.js';
10
+ export { GenericAdapter, genericAdapter } from './core/adapters/generic.js';
11
+ export type { GuardManifestEntry } from './core/adapters/generic.js';
12
+ //# sourceMappingURL=adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AAIA,OAAO,gCAAgC,CAAC;AACxC,OAAO,2BAA2B,CAAC;AACnC,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AAGpC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGtL,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG9F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG5E,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,15 @@
1
+ // SLOPE Adapter Barrel — lightweight subpath export for `@slope-dev/slope/adapters`.
2
+ // Consumers can import adapter framework functions + types without pulling in the entire core.
3
+ // Side-effect imports: ensure all adapters are registered
4
+ import './core/adapters/claude-code.js';
5
+ import './core/adapters/cursor.js';
6
+ import './core/adapters/windsurf.js';
7
+ import './core/adapters/generic.js';
8
+ // Framework functions
9
+ export { registerAdapter, getAdapter, listAdapters, detectAdapter, clearAdapters, resolveToolMatcher, ADAPTER_PRIORITY, TOOL_CATEGORIES, CLAUDE_CODE_TOOLS } from './core/harness.js';
10
+ // Adapter classes + singletons
11
+ export { ClaudeCodeAdapter, claudeCodeAdapter } from './core/adapters/claude-code.js';
12
+ export { CursorAdapter, cursorAdapter } from './core/adapters/cursor.js';
13
+ export { WindsurfAdapter, windsurfAdapter } from './core/adapters/windsurf.js';
14
+ export { GenericAdapter, genericAdapter } from './core/adapters/generic.js';
15
+ //# sourceMappingURL=adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../src/adapters.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,+FAA+F;AAE/F,0DAA0D;AAC1D,OAAO,gCAAgC,CAAC;AACxC,OAAO,2BAA2B,CAAC;AACnC,OAAO,6BAA6B,CAAC;AACrC,OAAO,4BAA4B,CAAC;AAEpC,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAKtL,+BAA+B;AAC/B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/guard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAsB,MAAM,qBAAqB,CAAC;AAkBjG,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAoB5E,+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,CA0FhE;AAuCD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDtE"}
1
+ {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/guard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAsB,MAAM,qBAAqB,CAAC;AAmBjG,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAqB5E,+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,CA0FhE;AAuCD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDtE"}
@@ -14,6 +14,7 @@ import { versionCheckGuard } from '../guards/version-check.js';
14
14
  import { nextActionGuard } from '../guards/next-action.js';
15
15
  import { prReviewGuard } from '../guards/pr-review.js';
16
16
  import { transcriptGuard } from '../guards/transcript.js';
17
+ import { branchBeforeCommitGuard } from '../guards/branch-before-commit.js';
17
18
  import { execSync } from 'node:child_process';
18
19
  /** Registry of guard handler implementations */
19
20
  const handlers = {
@@ -31,6 +32,7 @@ const handlers = {
31
32
  'next-action': nextActionGuard,
32
33
  'pr-review': prReviewGuard,
33
34
  transcript: transcriptGuard,
35
+ 'branch-before-commit': branchBeforeCommitGuard,
34
36
  };
35
37
  /** Register a guard handler */
36
38
  export function registerGuard(name, handler) {
@@ -1 +1 @@
1
- {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../../src/cli/commands/guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../../src/cli/commands/guard.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,6 @@
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 declare function hookCommand(args: string[]): Promise<void>;
2
6
  //# sourceMappingURL=hook.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/hook.ts"],"names":[],"mappings":"AAqFA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC/D"}
1
+ {"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/hook.ts"],"names":[],"mappings":"AAMA,OAAO,oCAAoC,CAAC;AAC5C,OAAO,+BAA+B,CAAC;AACvC,OAAO,iCAAiC,CAAC;AACzC,OAAO,gCAAgC,CAAC;AAkFxC,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC/D"}
@@ -1,7 +1,12 @@
1
1
  import { writeFileSync, readFileSync, existsSync, unlinkSync, mkdirSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { loadHooksConfig, saveHooksConfig } from '../hooks-config.js';
4
- import { getAllGuardDefinitions, generateClaudeCodeHooksConfig, loadPluginGuards, loadConfig } from '../../core/index.js';
4
+ import { getAllGuardDefinitions, loadPluginGuards, loadConfig, detectAdapter, getAdapter, listAdapters } from '../../core/index.js';
5
+ // Import to trigger auto-registration of adapters
6
+ import '../../core/adapters/claude-code.js';
7
+ import '../../core/adapters/cursor.js';
8
+ import '../../core/adapters/windsurf.js';
9
+ import '../../core/adapters/generic.js';
5
10
  const HOOK_TEMPLATES = {
6
11
  'session-start': {
7
12
  description: 'Start a SLOPE session and show a compact briefing',
@@ -33,21 +38,22 @@ const HOOK_TEMPLATES = {
33
38
  managed: ['slope auto-card --sprint="$1" --dry-run'],
34
39
  },
35
40
  };
36
- function detectProvider(cwd) {
37
- if (existsSync(join(cwd, '.claude')))
38
- return 'claude-code';
39
- if (existsSync(join(cwd, '.cursor')))
40
- return 'cursor';
41
- return 'claude-code'; // default
42
- }
43
- function getHooksDir(cwd, provider) {
44
- switch (provider) {
41
+ /** Map harness adapter id to its hooks directory */
42
+ function getHooksDir(cwd, harnessId) {
43
+ switch (harnessId) {
45
44
  case 'claude-code': return join(cwd, '.claude', 'hooks');
46
45
  case 'cursor': return join(cwd, '.cursor', 'hooks');
46
+ case 'windsurf': return join(cwd, '.windsurf', 'hooks');
47
+ default: return join(cwd, '.slope', 'hooks');
47
48
  }
48
49
  }
49
- function hookFilePath(cwd, provider, name) {
50
- return join(getHooksDir(cwd, provider), `slope-${name}.sh`);
50
+ /** Resolve harness id for lifecycle hooks — uses adapter framework detection */
51
+ function resolveHarnessId(cwd) {
52
+ const adapter = detectAdapter(cwd);
53
+ return adapter?.id ?? 'claude-code';
54
+ }
55
+ function hookFilePath(cwd, harnessId, name) {
56
+ return join(getHooksDir(cwd, harnessId), `slope-${name}.sh`);
51
57
  }
52
58
  function generateHookScript(name) {
53
59
  const template = HOOK_TEMPLATES[name];
@@ -84,7 +90,7 @@ export async function hookCommand(args) {
84
90
  switch (sub) {
85
91
  case 'add':
86
92
  if (flags.level === 'full' || flags.level === 'scoring') {
87
- installGuardHooks(cwd, flags.level);
93
+ installGuardHooks(cwd, flags.level, flags.harness);
88
94
  }
89
95
  else {
90
96
  addHook(hookName, cwd);
@@ -104,10 +110,13 @@ export async function hookCommand(args) {
104
110
  slope hook — Manage SLOPE lifecycle hooks
105
111
 
106
112
  Usage:
107
- slope hook add <name> Install a hook from the catalog
108
- slope hook remove <name> Remove an installed hook
109
- slope hook list [--available] Show installed hooks (or full catalog)
110
- slope hook show <name> Display hook file contents
113
+ slope hook add <name> Install a hook from the catalog
114
+ slope hook add --level=full [--harness=<id>] Install guard hooks (auto-detect or specify harness)
115
+ slope hook remove <name> Remove an installed hook
116
+ slope hook list [--available] Show installed hooks (or full catalog)
117
+ slope hook show <name> Display hook file contents
118
+
119
+ Harness adapters: ${listAdapters().join(', ') || '(none registered)'}
111
120
 
112
121
  Available hooks:
113
122
  ${Object.entries(HOOK_TEMPLATES).map(([k, v]) => ` ${k.padEnd(20)} ${v.description}`).join('\n')}
@@ -125,10 +134,10 @@ function addHook(name, cwd) {
125
134
  console.error(`Error: unknown hook "${name}". Available: ${Object.keys(HOOK_TEMPLATES).join(', ')}`);
126
135
  process.exit(1);
127
136
  }
128
- const provider = detectProvider(cwd);
129
- const dir = getHooksDir(cwd, provider);
137
+ const harnessId = resolveHarnessId(cwd);
138
+ const dir = getHooksDir(cwd, harnessId);
130
139
  mkdirSync(dir, { recursive: true });
131
- const filePath = hookFilePath(cwd, provider, name);
140
+ const filePath = hookFilePath(cwd, harnessId, name);
132
141
  if (existsSync(filePath)) {
133
142
  console.error(`Hook "${name}" already installed at ${filePath}`);
134
143
  console.error('Remove it first with: slope hook remove ' + name);
@@ -137,11 +146,11 @@ function addHook(name, cwd) {
137
146
  const script = generateHookScript(name);
138
147
  writeFileSync(filePath, script, { mode: 0o755 });
139
148
  const config = loadHooksConfig(cwd);
140
- config.installed[name] = { provider, installed_at: new Date().toISOString() };
149
+ config.installed[name] = { provider: harnessId, installed_at: new Date().toISOString() };
141
150
  saveHooksConfig(cwd, config);
142
151
  console.log(`\nInstalled hook: ${name}`);
143
152
  console.log(` File: ${filePath}`);
144
- console.log(` Provider: ${provider}`);
153
+ console.log(` Harness: ${harnessId}`);
145
154
  console.log(`\nEdit the file to add custom commands below the SLOPE END marker.\n`);
146
155
  }
147
156
  function removeHook(name, cwd) {
@@ -211,8 +220,7 @@ function showHook(name, cwd) {
211
220
  console.error(`Unknown hook: "${name}"`);
212
221
  process.exit(1);
213
222
  }
214
- function installGuardHooks(cwd, level) {
215
- const provider = detectProvider(cwd);
223
+ function installGuardHooks(cwd, level, harnessId) {
216
224
  // Load custom guard plugins
217
225
  const config = loadConfig(cwd);
218
226
  loadPluginGuards(cwd, config.plugins);
@@ -222,74 +230,40 @@ function installGuardHooks(cwd, level) {
222
230
  console.log('\n No guards to install for this level.\n');
223
231
  return;
224
232
  }
225
- if (provider === 'claude-code') {
226
- installClaudeCodeGuards(cwd, guards);
227
- }
228
- else {
229
- console.log(`\n Guard hooks for ${provider} are not yet supported.`);
230
- console.log(' Guards are currently available for Claude Code.\n');
231
- }
232
- }
233
- function installClaudeCodeGuards(cwd, guards) {
234
- const hooksDir = join(cwd, '.claude', 'hooks');
235
- mkdirSync(hooksDir, { recursive: true });
236
- // Create the guard dispatcher script
237
- const dispatcherPath = join(hooksDir, 'slope-guard.sh');
238
- if (!existsSync(dispatcherPath)) {
239
- const script = [
240
- '#!/usr/bin/env bash',
241
- '# SLOPE guard dispatcher — routes hook events to slope guard handlers',
242
- '# Auto-generated by slope hook add --level=full',
243
- '',
244
- '# === SLOPE MANAGED (do not edit above this line) ===',
245
- 'slope guard "$@"',
246
- '# === SLOPE END ===',
247
- '',
248
- ].join('\n');
249
- writeFileSync(dispatcherPath, script, { mode: 0o755 });
250
- console.log(` Created ${dispatcherPath}`);
233
+ // Safety check: ensure at least one adapter is registered
234
+ if (listAdapters().length === 0) {
235
+ console.error('\n No harness adapters registered. This is a bug — adapters should auto-register on import.\n');
236
+ process.exit(1);
251
237
  }
252
- // Generate the hooks config for .claude/settings.json
253
- const guardScript = '"$CLAUDE_PROJECT_DIR"/.claude/hooks/slope-guard.sh';
254
- const hooksConfig = generateClaudeCodeHooksConfig(guards, guardScript);
255
- // Read and merge into .claude/settings.json
256
- const settingsPath = join(cwd, '.claude', 'settings.json');
257
- let settings = {};
258
- if (existsSync(settingsPath)) {
259
- try {
260
- settings = JSON.parse(readFileSync(settingsPath, 'utf8'));
238
+ // Resolve adapter: explicit --harness flag, auto-detect, or error
239
+ let adapter;
240
+ if (harnessId) {
241
+ adapter = getAdapter(harnessId);
242
+ if (!adapter) {
243
+ const available = listAdapters().join(', ');
244
+ console.error(`\n Unknown harness: "${harnessId}". Available: ${available}\n`);
245
+ process.exit(1);
261
246
  }
262
- catch { /* start fresh */ }
263
247
  }
264
- // Merge hooks — preserve existing non-SLOPE hooks
265
- const existingHooks = (settings.hooks ?? {});
266
- for (const [event, entries] of Object.entries(hooksConfig)) {
267
- if (!existingHooks[event]) {
268
- existingHooks[event] = [];
269
- }
270
- // Add SLOPE guard entries (avoid duplicates by checking command + matcher)
271
- for (const entry of entries) {
272
- const entryWithMatcher = entry;
273
- const existing = existingHooks[event];
274
- const isDuplicate = existing.some(e => e.matcher === entryWithMatcher.matcher &&
275
- e.hooks?.some(h => h.command?.includes('slope-guard.sh')));
276
- if (!isDuplicate) {
277
- existingHooks[event].push(entry);
278
- }
279
- }
248
+ else {
249
+ adapter = detectAdapter(cwd);
280
250
  }
281
- settings.hooks = existingHooks;
282
- writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
283
- console.log(` Updated ${settingsPath} with guard hooks`);
251
+ if (!adapter) {
252
+ console.log('\n No harness adapter detected.');
253
+ console.log(' Use --harness=<id> to specify one. Available: ' + listAdapters().join(', ') + '\n');
254
+ return;
255
+ }
256
+ // Delegate installation to the adapter
257
+ adapter.installGuards(cwd, guards);
284
258
  // Update hooks registry
285
- const config = loadHooksConfig(cwd);
259
+ const hooksConfig = loadHooksConfig(cwd);
286
260
  for (const g of guards) {
287
- config.installed[`guard-${g.name}`] = {
288
- provider: 'claude-code',
261
+ hooksConfig.installed[`guard-${g.name}`] = {
262
+ provider: adapter.id,
289
263
  installed_at: new Date().toISOString(),
290
264
  };
291
265
  }
292
- saveHooksConfig(cwd, config);
266
+ saveHooksConfig(cwd, hooksConfig);
293
267
  console.log(`\n Installed ${guards.length} guard hooks (level: ${guards.some(g => g.level === 'full') ? 'full' : 'scoring'}):`);
294
268
  for (const g of guards) {
295
269
  console.log(` ${g.name.padEnd(16)} [${g.hookEvent}] ${g.description}`);
@@ -1 +1 @@
1
- {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../src/cli/commands/hook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../src/cli/commands/hook.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,13 @@
1
- type Provider = 'claude-code' | 'cursor' | 'opencode' | 'generic';
2
- /** Detect platforms present in the project directory */
3
- export declare function detectPlatforms(cwd: string): Provider[];
1
+ import type { HarnessId } from '../../core/harness.js';
2
+ import '../../core/adapters/claude-code.js';
3
+ import '../../core/adapters/cursor.js';
4
+ import '../../core/adapters/windsurf.js';
5
+ import '../../core/adapters/generic.js';
6
+ /** Init supports all harness adapters plus OpenCode (template-only, no adapter) */
7
+ type InitProvider = HarnessId | 'opencode';
8
+ export declare function detectProvidersFromArgs(args: string[]): InitProvider[];
9
+ /** Detect platforms present in the project directory using the adapter framework */
10
+ export declare function detectPlatforms(cwd: string): InitProvider[];
4
11
  export declare function initCommand(args: string[]): Promise<void>;
5
12
  export {};
6
13
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAiHA,KAAK,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAYlE,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAYvD;AA6ZD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsG/D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,oCAAoC,CAAC;AAC5C,OAAO,+BAA+B,CAAC;AACvC,OAAO,iCAAiC,CAAC;AACzC,OAAO,gCAAgC,CAAC;AA0FxC,mFAAmF;AACnF,KAAK,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3C,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAYtE;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAa3D;AAydD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsG/D"}
@@ -6,6 +6,12 @@ import { saveHooksConfig } from '../hooks-config.js';
6
6
  import { resolveMetaphor } from '../metaphor.js';
7
7
  import { saveVision } from '../../core/vision.js';
8
8
  import { generateProjectContext, generateSprintChecklist, generateCommitDiscipline, generateReviewLoop, generateCodebaseContextRule, generateCursorSprintChecklist, generateCursorCommitDiscipline, generateCursorReviewLoop, generateCursorCodebaseContextRule, generateCursorrules, generateAgentsMd, generateOpenCodePlugin, generateGenericChecklist, } from '../template-generator.js';
9
+ import { getAdapter, ADAPTER_PRIORITY } from '../../core/harness.js';
10
+ // Side-effect imports: ensure all adapters are registered for detectPlatforms()
11
+ import '../../core/adapters/claude-code.js';
12
+ import '../../core/adapters/cursor.js';
13
+ import '../../core/adapters/windsurf.js';
14
+ import '../../core/adapters/generic.js';
9
15
  const __dirname = dirname(fileURLToPath(import.meta.url));
10
16
  const EXAMPLE_SCORECARD = {
11
17
  sprint_number: 1,
@@ -90,29 +96,38 @@ const STARTER_ROADMAP = {
90
96
  },
91
97
  ],
92
98
  };
93
- function detectProvidersFromArgs(args) {
99
+ export function detectProvidersFromArgs(args) {
94
100
  const providers = [];
95
101
  if (args.includes('--claude-code'))
96
102
  providers.push('claude-code');
97
103
  if (args.includes('--cursor'))
98
104
  providers.push('cursor');
105
+ if (args.includes('--windsurf'))
106
+ providers.push('windsurf');
99
107
  if (args.includes('--opencode'))
100
108
  providers.push('opencode');
101
109
  if (args.includes('--generic'))
102
110
  providers.push('generic');
111
+ // Unified --harness=<id> flag
112
+ const harnessArg = args.find(a => a.startsWith('--harness='));
113
+ if (harnessArg)
114
+ providers.push(harnessArg.slice('--harness='.length));
103
115
  if (args.includes('--all'))
104
- return ['claude-code', 'cursor', 'opencode'];
116
+ return ['claude-code', 'cursor', 'windsurf', 'opencode'];
105
117
  return providers;
106
118
  }
107
- /** Detect platforms present in the project directory */
119
+ /** Detect platforms present in the project directory using the adapter framework */
108
120
  export function detectPlatforms(cwd) {
109
121
  const detected = [];
110
- if (existsSync(join(cwd, '.claude')) || existsSync(join(cwd, 'CLAUDE.md'))) {
111
- detected.push('claude-code');
112
- }
113
- if (existsSync(join(cwd, '.cursor')) || existsSync(join(cwd, '.cursorrules'))) {
114
- detected.push('cursor');
122
+ // Check all registered adapters via ADAPTER_PRIORITY
123
+ for (const id of ADAPTER_PRIORITY) {
124
+ if (id === 'generic')
125
+ continue;
126
+ const a = getAdapter(id);
127
+ if (a?.detect(cwd))
128
+ detected.push(id);
115
129
  }
130
+ // OpenCode: no adapter, but has init templates
116
131
  if (existsSync(join(cwd, 'opencode.json')) || existsSync(join(cwd, 'AGENTS.md'))) {
117
132
  detected.push('opencode');
118
133
  }
@@ -184,6 +199,31 @@ function installCursorTemplates(cwd, metaphor) {
184
199
  }
185
200
  console.log('\n Cursor rules installed to .cursor/rules/ and .cursorrules');
186
201
  }
202
+ function installWindsurfTemplates(cwd, metaphor) {
203
+ const rulesDir = join(cwd, '.windsurf', 'rules');
204
+ mkdirSync(rulesDir, { recursive: true });
205
+ // Windsurf uses .mdc rule format (same as Cursor)
206
+ const ruleGenerators = {
207
+ 'slope-sprint-checklist.mdc': generateCursorSprintChecklist(metaphor),
208
+ 'slope-commit-discipline.mdc': generateCursorCommitDiscipline(metaphor),
209
+ 'slope-review-loop.mdc': generateCursorReviewLoop(),
210
+ 'slope-codebase-context.mdc': generateCursorCodebaseContextRule(),
211
+ };
212
+ for (const [file, content] of Object.entries(ruleGenerators)) {
213
+ const dest = join(rulesDir, file);
214
+ if (!existsSync(dest)) {
215
+ writeFileSync(dest, content);
216
+ console.log(` Created ${dest}`);
217
+ }
218
+ }
219
+ // Generate .windsurfrules (project root context file — same content as .cursorrules)
220
+ const windsurfrulesDest = join(cwd, '.windsurfrules');
221
+ if (!existsSync(windsurfrulesDest)) {
222
+ writeFileSync(windsurfrulesDest, generateCursorrules(metaphor));
223
+ console.log(` Created ${windsurfrulesDest}`);
224
+ }
225
+ console.log('\n Windsurf rules installed to .windsurf/rules/ and .windsurfrules');
226
+ }
187
227
  function installGenericTemplates(cwd, metaphor) {
188
228
  const dest = join(cwd, 'SLOPE-CHECKLIST.md');
189
229
  if (!existsSync(dest)) {
@@ -233,6 +273,25 @@ function installCursorMcpConfig(cwd) {
233
273
  writeFileSync(mcpPath, JSON.stringify(config, null, 2) + '\n');
234
274
  console.log(` Created/updated ${mcpPath} (slope MCP server)`);
235
275
  }
276
+ function installWindsurfMcpConfig(cwd) {
277
+ const mcpPath = join(cwd, '.windsurf', 'mcp.json');
278
+ let config = {};
279
+ if (existsSync(mcpPath)) {
280
+ try {
281
+ const raw = readFileSync(mcpPath, 'utf8');
282
+ config = JSON.parse(raw);
283
+ }
284
+ catch {
285
+ config = {};
286
+ }
287
+ }
288
+ if (!config.mcpServers)
289
+ config.mcpServers = {};
290
+ config.mcpServers.slope = SLOPE_MCP_ENTRY;
291
+ mkdirSync(join(cwd, '.windsurf'), { recursive: true });
292
+ writeFileSync(mcpPath, JSON.stringify(config, null, 2) + '\n');
293
+ console.log(` Created/updated ${mcpPath} (slope MCP server)`);
294
+ }
236
295
  function installOpenCodeTemplates(cwd, metaphor) {
237
296
  // Generate AGENTS.md (OpenCode's project context file)
238
297
  const agentsMdDest = join(cwd, 'AGENTS.md');
@@ -282,7 +341,9 @@ function installDefaultHooks(cwd, provider) {
282
341
  };
283
342
  const hooksDir = provider === 'claude-code'
284
343
  ? join(cwd, '.claude', 'hooks')
285
- : join(cwd, '.cursor', 'hooks');
344
+ : provider === 'windsurf'
345
+ ? join(cwd, '.windsurf', 'hooks')
346
+ : join(cwd, '.cursor', 'hooks');
286
347
  mkdirSync(hooksDir, { recursive: true });
287
348
  const { loadHooksConfig } = { loadHooksConfig: (c) => {
288
349
  try {
@@ -326,6 +387,11 @@ function installForProvider(cwd, provider, metaphor) {
326
387
  installCursorMcpConfig(cwd);
327
388
  installDefaultHooks(cwd, 'cursor');
328
389
  break;
390
+ case 'windsurf':
391
+ installWindsurfTemplates(cwd, metaphor);
392
+ installWindsurfMcpConfig(cwd);
393
+ installDefaultHooks(cwd, 'windsurf');
394
+ break;
329
395
  case 'opencode':
330
396
  installOpenCodeTemplates(cwd, metaphor);
331
397
  installOpenCodeMcpConfig(cwd);
@@ -334,6 +400,9 @@ function installForProvider(cwd, provider, metaphor) {
334
400
  case 'generic':
335
401
  installGenericTemplates(cwd, metaphor);
336
402
  break;
403
+ default:
404
+ console.warn(` Warning: no templates for provider "${provider}". Use --generic for a basic setup.`);
405
+ break;
337
406
  }
338
407
  }
339
408
  async function runInteractiveInit(cwd, args) {