@fission-ai/openspec 0.7.0 → 0.8.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.
package/README.md
CHANGED
|
@@ -85,6 +85,7 @@ These tools have built-in OpenSpec commands. Select the OpenSpec integration whe
|
|
|
85
85
|
| **Cursor** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` |
|
|
86
86
|
| **OpenCode** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` |
|
|
87
87
|
| **Kilo Code** | `/openspec-proposal.md`, `/openspec-apply.md`, `/openspec-archive.md` (`.kilocode/workflows/`) |
|
|
88
|
+
| **Windsurf** | `/openspec-proposal`, `/openspec-apply`, `/openspec-archive` (`.windsurf/workflows/`) |
|
|
88
89
|
|
|
89
90
|
Kilo Code discovers team workflows automatically. Save the generated files under `.kilocode/workflows/` and trigger them from the command palette with `/openspec-proposal.md`, `/openspec-apply.md`, or `/openspec-archive.md`.
|
|
90
91
|
|
package/dist/core/config.js
CHANGED
|
@@ -8,6 +8,7 @@ export const AI_TOOLS = [
|
|
|
8
8
|
{ name: 'Cursor', value: 'cursor', available: true, successLabel: 'Cursor' },
|
|
9
9
|
{ name: 'OpenCode', value: 'opencode', available: true, successLabel: 'OpenCode' },
|
|
10
10
|
{ name: 'Kilo Code', value: 'kilocode', available: true, successLabel: 'Kilo Code' },
|
|
11
|
+
{ name: 'Windsurf', value: 'windsurf', available: true, successLabel: 'Windsurf' },
|
|
11
12
|
{ name: 'AGENTS.md (works with Codex, Amp, VS Code, GitHub Copilot, …)', value: 'agents', available: false, successLabel: 'your AGENTS.md-compatible assistant' }
|
|
12
13
|
];
|
|
13
14
|
//# sourceMappingURL=config.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ClaudeSlashCommandConfigurator } from './claude.js';
|
|
2
2
|
import { CursorSlashCommandConfigurator } from './cursor.js';
|
|
3
|
+
import { WindsurfSlashCommandConfigurator } from './windsurf.js';
|
|
3
4
|
import { KiloCodeSlashCommandConfigurator } from './kilocode.js';
|
|
4
5
|
import { OpenCodeSlashCommandConfigurator } from './opencode.js';
|
|
5
6
|
export class SlashCommandRegistry {
|
|
@@ -7,10 +8,12 @@ export class SlashCommandRegistry {
|
|
|
7
8
|
static {
|
|
8
9
|
const claude = new ClaudeSlashCommandConfigurator();
|
|
9
10
|
const cursor = new CursorSlashCommandConfigurator();
|
|
11
|
+
const windsurf = new WindsurfSlashCommandConfigurator();
|
|
10
12
|
const kilocode = new KiloCodeSlashCommandConfigurator();
|
|
11
13
|
const opencode = new OpenCodeSlashCommandConfigurator();
|
|
12
14
|
this.configurators.set(claude.toolId, claude);
|
|
13
15
|
this.configurators.set(cursor.toolId, cursor);
|
|
16
|
+
this.configurators.set(windsurf.toolId, windsurf);
|
|
14
17
|
this.configurators.set(kilocode.toolId, kilocode);
|
|
15
18
|
this.configurators.set(opencode.toolId, opencode);
|
|
16
19
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
+
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
+
export declare class WindsurfSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
4
|
+
readonly toolId = "windsurf";
|
|
5
|
+
readonly isAvailable = true;
|
|
6
|
+
protected getRelativePath(id: SlashCommandId): string;
|
|
7
|
+
protected getFrontmatter(id: SlashCommandId): string | undefined;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=windsurf.d.ts.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
+
const FILE_PATHS = {
|
|
3
|
+
proposal: '.windsurf/workflows/openspec-proposal.md',
|
|
4
|
+
apply: '.windsurf/workflows/openspec-apply.md',
|
|
5
|
+
archive: '.windsurf/workflows/openspec-archive.md'
|
|
6
|
+
};
|
|
7
|
+
export class WindsurfSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
8
|
+
toolId = 'windsurf';
|
|
9
|
+
isAvailable = true;
|
|
10
|
+
getRelativePath(id) {
|
|
11
|
+
return FILE_PATHS[id];
|
|
12
|
+
}
|
|
13
|
+
getFrontmatter(id) {
|
|
14
|
+
const descriptions = {
|
|
15
|
+
proposal: 'Scaffold a new OpenSpec change and validate strictly.',
|
|
16
|
+
apply: 'Implement an approved OpenSpec change and keep tasks in sync.',
|
|
17
|
+
archive: 'Archive a deployed OpenSpec change and update specs.'
|
|
18
|
+
};
|
|
19
|
+
const description = descriptions[id];
|
|
20
|
+
return `---\ndescription: ${description}\nauto_execution_mode: 3\n---`;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=windsurf.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fission-ai/openspec",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "AI-native system for spec-driven development",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"openspec",
|
|
@@ -62,6 +62,10 @@
|
|
|
62
62
|
"test:watch": "vitest",
|
|
63
63
|
"test:ui": "vitest --ui",
|
|
64
64
|
"test:coverage": "vitest --coverage",
|
|
65
|
+
"check:pack-version": "node scripts/pack-version-check.mjs",
|
|
66
|
+
"release": "pnpm run release:ci",
|
|
67
|
+
"release:ci": "pnpm run check:pack-version && pnpm exec changeset publish",
|
|
68
|
+
"release:local": "pnpm exec changeset version && pnpm run check:pack-version && pnpm exec changeset publish",
|
|
65
69
|
"changeset": "changeset"
|
|
66
70
|
}
|
|
67
71
|
}
|