@fission-ai/openspec 0.22.0 → 1.0.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.
- package/README.md +111 -382
- package/dist/cli/index.js +120 -6
- package/dist/commands/workflow/index.d.ts +17 -0
- package/dist/commands/workflow/index.js +12 -0
- package/dist/commands/workflow/instructions.d.ts +29 -0
- package/dist/commands/workflow/instructions.js +381 -0
- package/dist/commands/workflow/new-change.d.ts +11 -0
- package/dist/commands/workflow/new-change.js +44 -0
- package/dist/commands/workflow/schemas.d.ts +10 -0
- package/dist/commands/workflow/schemas.js +34 -0
- package/dist/commands/workflow/shared.d.ts +52 -0
- package/dist/commands/workflow/shared.js +111 -0
- package/dist/commands/workflow/status.d.ts +14 -0
- package/dist/commands/workflow/status.js +58 -0
- package/dist/commands/workflow/templates.d.ts +16 -0
- package/dist/commands/workflow/templates.js +68 -0
- package/dist/core/artifact-graph/instruction-loader.d.ts +5 -1
- package/dist/core/artifact-graph/instruction-loader.js +8 -19
- package/dist/core/command-generation/adapters/amazon-q.d.ts +13 -0
- package/dist/core/command-generation/adapters/amazon-q.js +26 -0
- package/dist/core/command-generation/adapters/antigravity.d.ts +13 -0
- package/dist/core/command-generation/adapters/antigravity.js +26 -0
- package/dist/core/command-generation/adapters/auggie.d.ts +13 -0
- package/dist/core/command-generation/adapters/auggie.js +27 -0
- package/dist/core/command-generation/adapters/claude.d.ts +13 -0
- package/dist/core/command-generation/adapters/claude.js +50 -0
- package/dist/core/command-generation/adapters/cline.d.ts +14 -0
- package/dist/core/command-generation/adapters/cline.js +27 -0
- package/dist/core/command-generation/adapters/codebuddy.d.ts +13 -0
- package/dist/core/command-generation/adapters/codebuddy.js +28 -0
- package/dist/core/command-generation/adapters/codex.d.ts +13 -0
- package/dist/core/command-generation/adapters/codex.js +27 -0
- package/dist/core/command-generation/adapters/continue.d.ts +13 -0
- package/dist/core/command-generation/adapters/continue.js +28 -0
- package/dist/core/command-generation/adapters/costrict.d.ts +13 -0
- package/dist/core/command-generation/adapters/costrict.js +27 -0
- package/dist/core/command-generation/adapters/crush.d.ts +13 -0
- package/dist/core/command-generation/adapters/crush.js +30 -0
- package/dist/core/command-generation/adapters/cursor.d.ts +14 -0
- package/dist/core/command-generation/adapters/cursor.js +44 -0
- package/dist/core/command-generation/adapters/factory.d.ts +13 -0
- package/dist/core/command-generation/adapters/factory.js +27 -0
- package/dist/core/command-generation/adapters/gemini.d.ts +13 -0
- package/dist/core/command-generation/adapters/gemini.js +26 -0
- package/dist/core/command-generation/adapters/github-copilot.d.ts +13 -0
- package/dist/core/command-generation/adapters/github-copilot.js +26 -0
- package/dist/core/command-generation/adapters/iflow.d.ts +13 -0
- package/dist/core/command-generation/adapters/iflow.js +29 -0
- package/dist/core/command-generation/adapters/index.d.ts +27 -0
- package/dist/core/command-generation/adapters/index.js +27 -0
- package/dist/core/command-generation/adapters/kilocode.d.ts +14 -0
- package/dist/core/command-generation/adapters/kilocode.js +23 -0
- package/dist/core/command-generation/adapters/opencode.d.ts +13 -0
- package/dist/core/command-generation/adapters/opencode.js +26 -0
- package/dist/core/command-generation/adapters/qoder.d.ts +13 -0
- package/dist/core/command-generation/adapters/qoder.js +30 -0
- package/dist/core/command-generation/adapters/qwen.d.ts +13 -0
- package/dist/core/command-generation/adapters/qwen.js +26 -0
- package/dist/core/command-generation/adapters/roocode.d.ts +14 -0
- package/dist/core/command-generation/adapters/roocode.js +27 -0
- package/dist/core/command-generation/adapters/windsurf.d.ts +14 -0
- package/dist/core/command-generation/adapters/windsurf.js +51 -0
- package/dist/core/command-generation/generator.d.ts +21 -0
- package/dist/core/command-generation/generator.js +27 -0
- package/dist/core/command-generation/index.d.ts +22 -0
- package/dist/core/command-generation/index.js +24 -0
- package/dist/core/command-generation/registry.d.ts +36 -0
- package/dist/core/command-generation/registry.js +88 -0
- package/dist/core/command-generation/types.d.ts +55 -0
- package/dist/core/command-generation/types.js +8 -0
- package/dist/core/config-prompts.d.ts +1 -28
- package/dist/core/config-prompts.js +26 -143
- package/dist/core/config.d.ts +1 -0
- package/dist/core/config.js +21 -21
- package/dist/core/init.d.ts +16 -36
- package/dist/core/init.js +323 -534
- package/dist/core/legacy-cleanup.d.ts +162 -0
- package/dist/core/legacy-cleanup.js +501 -0
- package/dist/core/shared/index.d.ts +8 -0
- package/dist/core/shared/index.js +8 -0
- package/dist/core/shared/skill-generation.d.ts +41 -0
- package/dist/core/shared/skill-generation.js +76 -0
- package/dist/core/shared/tool-detection.d.ts +66 -0
- package/dist/core/shared/tool-detection.js +140 -0
- package/dist/core/templates/index.d.ts +7 -16
- package/dist/core/templates/index.js +8 -36
- package/dist/core/templates/skill-templates.d.ts +22 -0
- package/dist/core/templates/skill-templates.js +1117 -20
- package/dist/core/update.d.ts +38 -0
- package/dist/core/update.js +280 -62
- package/dist/prompts/searchable-multi-select.d.ts +27 -0
- package/dist/prompts/searchable-multi-select.js +149 -0
- package/dist/ui/ascii-patterns.d.ts +16 -0
- package/dist/ui/ascii-patterns.js +133 -0
- package/dist/ui/welcome-screen.d.ts +10 -0
- package/dist/ui/welcome-screen.js +146 -0
- package/dist/utils/file-system.d.ts +11 -0
- package/dist/utils/file-system.js +65 -2
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +2 -0
- package/package.json +1 -1
- package/dist/commands/artifact-workflow.d.ts +0 -17
- package/dist/commands/artifact-workflow.js +0 -961
- package/dist/core/configurators/agents.d.ts +0 -8
- package/dist/core/configurators/agents.js +0 -15
- package/dist/core/configurators/base.d.ts +0 -7
- package/dist/core/configurators/base.js +0 -2
- package/dist/core/configurators/claude.d.ts +0 -8
- package/dist/core/configurators/claude.js +0 -15
- package/dist/core/configurators/cline.d.ts +0 -8
- package/dist/core/configurators/cline.js +0 -15
- package/dist/core/configurators/codebuddy.d.ts +0 -8
- package/dist/core/configurators/codebuddy.js +0 -15
- package/dist/core/configurators/costrict.d.ts +0 -8
- package/dist/core/configurators/costrict.js +0 -15
- package/dist/core/configurators/iflow.d.ts +0 -8
- package/dist/core/configurators/iflow.js +0 -15
- package/dist/core/configurators/qoder.d.ts +0 -30
- package/dist/core/configurators/qoder.js +0 -42
- package/dist/core/configurators/qwen.d.ts +0 -24
- package/dist/core/configurators/qwen.js +0 -37
- package/dist/core/configurators/registry.d.ts +0 -9
- package/dist/core/configurators/registry.js +0 -43
- package/dist/core/configurators/slash/amazon-q.d.ts +0 -9
- package/dist/core/configurators/slash/amazon-q.js +0 -46
- package/dist/core/configurators/slash/antigravity.d.ts +0 -9
- package/dist/core/configurators/slash/antigravity.js +0 -23
- package/dist/core/configurators/slash/auggie.d.ts +0 -9
- package/dist/core/configurators/slash/auggie.js +0 -31
- package/dist/core/configurators/slash/base.d.ts +0 -19
- package/dist/core/configurators/slash/base.js +0 -69
- package/dist/core/configurators/slash/claude.d.ts +0 -9
- package/dist/core/configurators/slash/claude.js +0 -37
- package/dist/core/configurators/slash/cline.d.ts +0 -9
- package/dist/core/configurators/slash/cline.js +0 -23
- package/dist/core/configurators/slash/codebuddy.d.ts +0 -9
- package/dist/core/configurators/slash/codebuddy.js +0 -34
- package/dist/core/configurators/slash/codex.d.ts +0 -14
- package/dist/core/configurators/slash/codex.js +0 -109
- package/dist/core/configurators/slash/continue.d.ts +0 -9
- package/dist/core/configurators/slash/continue.js +0 -46
- package/dist/core/configurators/slash/costrict.d.ts +0 -9
- package/dist/core/configurators/slash/costrict.js +0 -31
- package/dist/core/configurators/slash/crush.d.ts +0 -9
- package/dist/core/configurators/slash/crush.js +0 -37
- package/dist/core/configurators/slash/cursor.d.ts +0 -9
- package/dist/core/configurators/slash/cursor.js +0 -37
- package/dist/core/configurators/slash/factory.d.ts +0 -10
- package/dist/core/configurators/slash/factory.js +0 -35
- package/dist/core/configurators/slash/gemini.d.ts +0 -9
- package/dist/core/configurators/slash/gemini.js +0 -22
- package/dist/core/configurators/slash/github-copilot.d.ts +0 -9
- package/dist/core/configurators/slash/github-copilot.js +0 -34
- package/dist/core/configurators/slash/iflow.d.ts +0 -9
- package/dist/core/configurators/slash/iflow.js +0 -37
- package/dist/core/configurators/slash/kilocode.d.ts +0 -9
- package/dist/core/configurators/slash/kilocode.js +0 -17
- package/dist/core/configurators/slash/opencode.d.ts +0 -12
- package/dist/core/configurators/slash/opencode.js +0 -72
- package/dist/core/configurators/slash/qoder.d.ts +0 -35
- package/dist/core/configurators/slash/qoder.js +0 -76
- package/dist/core/configurators/slash/qwen.d.ts +0 -32
- package/dist/core/configurators/slash/qwen.js +0 -49
- package/dist/core/configurators/slash/registry.d.ts +0 -8
- package/dist/core/configurators/slash/registry.js +0 -78
- package/dist/core/configurators/slash/roocode.d.ts +0 -9
- package/dist/core/configurators/slash/roocode.js +0 -23
- package/dist/core/configurators/slash/toml-base.d.ts +0 -10
- package/dist/core/configurators/slash/toml-base.js +0 -53
- package/dist/core/configurators/slash/windsurf.d.ts +0 -9
- package/dist/core/configurators/slash/windsurf.js +0 -23
- package/dist/core/templates/agents-root-stub.d.ts +0 -2
- package/dist/core/templates/agents-root-stub.js +0 -17
- package/dist/core/templates/agents-template.d.ts +0 -2
- package/dist/core/templates/agents-template.js +0 -458
- package/dist/core/templates/claude-template.d.ts +0 -2
- package/dist/core/templates/claude-template.js +0 -2
- package/dist/core/templates/cline-template.d.ts +0 -2
- package/dist/core/templates/cline-template.js +0 -2
- package/dist/core/templates/costrict-template.d.ts +0 -2
- package/dist/core/templates/costrict-template.js +0 -2
- package/dist/core/templates/project-template.d.ts +0 -8
- package/dist/core/templates/project-template.js +0 -32
- package/dist/core/templates/slash-command-templates.d.ts +0 -4
- package/dist/core/templates/slash-command-templates.js +0 -49
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
const FILE_PATHS = {
|
|
3
|
-
proposal: '.clinerules/workflows/openspec-proposal.md',
|
|
4
|
-
apply: '.clinerules/workflows/openspec-apply.md',
|
|
5
|
-
archive: '.clinerules/workflows/openspec-archive.md'
|
|
6
|
-
};
|
|
7
|
-
export class ClineSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
8
|
-
toolId = 'cline';
|
|
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 `# OpenSpec: ${id.charAt(0).toUpperCase() + id.slice(1)}\n\n${description}`;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=cline.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
export declare class CodeBuddySlashCommandConfigurator extends SlashCommandConfigurator {
|
|
4
|
-
readonly toolId = "codebuddy";
|
|
5
|
-
readonly isAvailable = true;
|
|
6
|
-
protected getRelativePath(id: SlashCommandId): string;
|
|
7
|
-
protected getFrontmatter(id: SlashCommandId): string;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=codebuddy.d.ts.map
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
const FILE_PATHS = {
|
|
3
|
-
proposal: '.codebuddy/commands/openspec/proposal.md',
|
|
4
|
-
apply: '.codebuddy/commands/openspec/apply.md',
|
|
5
|
-
archive: '.codebuddy/commands/openspec/archive.md'
|
|
6
|
-
};
|
|
7
|
-
const FRONTMATTER = {
|
|
8
|
-
proposal: `---
|
|
9
|
-
name: OpenSpec: Proposal
|
|
10
|
-
description: "Scaffold a new OpenSpec change and validate strictly."
|
|
11
|
-
argument-hint: "[feature description or request]"
|
|
12
|
-
---`,
|
|
13
|
-
apply: `---
|
|
14
|
-
name: OpenSpec: Apply
|
|
15
|
-
description: "Implement an approved OpenSpec change and keep tasks in sync."
|
|
16
|
-
argument-hint: "[change-id]"
|
|
17
|
-
---`,
|
|
18
|
-
archive: `---
|
|
19
|
-
name: OpenSpec: Archive
|
|
20
|
-
description: "Archive a deployed OpenSpec change and update specs."
|
|
21
|
-
argument-hint: "[change-id]"
|
|
22
|
-
---`
|
|
23
|
-
};
|
|
24
|
-
export class CodeBuddySlashCommandConfigurator extends SlashCommandConfigurator {
|
|
25
|
-
toolId = 'codebuddy';
|
|
26
|
-
isAvailable = true;
|
|
27
|
-
getRelativePath(id) {
|
|
28
|
-
return FILE_PATHS[id];
|
|
29
|
-
}
|
|
30
|
-
getFrontmatter(id) {
|
|
31
|
-
return FRONTMATTER[id];
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=codebuddy.js.map
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from "./base.js";
|
|
2
|
-
import { SlashCommandId } from "../../templates/index.js";
|
|
3
|
-
export declare class CodexSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
4
|
-
readonly toolId = "codex";
|
|
5
|
-
readonly isAvailable = true;
|
|
6
|
-
protected getRelativePath(id: SlashCommandId): string;
|
|
7
|
-
protected getFrontmatter(id: SlashCommandId): string | undefined;
|
|
8
|
-
private getGlobalPromptsDir;
|
|
9
|
-
generateAll(projectPath: string, _openspecDir: string): Promise<string[]>;
|
|
10
|
-
updateExisting(projectPath: string, _openspecDir: string): Promise<string[]>;
|
|
11
|
-
private updateFullFile;
|
|
12
|
-
resolveAbsolutePath(_projectPath: string, id: SlashCommandId): string;
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=codex.d.ts.map
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import path from "path";
|
|
2
|
-
import os from "os";
|
|
3
|
-
import { SlashCommandConfigurator } from "./base.js";
|
|
4
|
-
import { TemplateManager } from "../../templates/index.js";
|
|
5
|
-
import { FileSystemUtils } from "../../../utils/file-system.js";
|
|
6
|
-
import { OPENSPEC_MARKERS } from "../../config.js";
|
|
7
|
-
// Use POSIX-style paths for consistent logging across platforms.
|
|
8
|
-
const FILE_PATHS = {
|
|
9
|
-
proposal: ".codex/prompts/openspec-proposal.md",
|
|
10
|
-
apply: ".codex/prompts/openspec-apply.md",
|
|
11
|
-
archive: ".codex/prompts/openspec-archive.md",
|
|
12
|
-
};
|
|
13
|
-
export class CodexSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
14
|
-
toolId = "codex";
|
|
15
|
-
isAvailable = true;
|
|
16
|
-
getRelativePath(id) {
|
|
17
|
-
return FILE_PATHS[id];
|
|
18
|
-
}
|
|
19
|
-
getFrontmatter(id) {
|
|
20
|
-
// Codex supports YAML frontmatter with description and argument-hint fields,
|
|
21
|
-
// plus $ARGUMENTS to capture all arguments as a single string.
|
|
22
|
-
const frontmatter = {
|
|
23
|
-
proposal: `---
|
|
24
|
-
description: Scaffold a new OpenSpec change and validate strictly.
|
|
25
|
-
argument-hint: request or feature description
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
$ARGUMENTS`,
|
|
29
|
-
apply: `---
|
|
30
|
-
description: Implement an approved OpenSpec change and keep tasks in sync.
|
|
31
|
-
argument-hint: change-id
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
$ARGUMENTS`,
|
|
35
|
-
archive: `---
|
|
36
|
-
description: Archive a deployed OpenSpec change and update specs.
|
|
37
|
-
argument-hint: change-id
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
$ARGUMENTS`,
|
|
41
|
-
};
|
|
42
|
-
return frontmatter[id];
|
|
43
|
-
}
|
|
44
|
-
getGlobalPromptsDir() {
|
|
45
|
-
const home = (process.env.CODEX_HOME && process.env.CODEX_HOME.trim())
|
|
46
|
-
? process.env.CODEX_HOME.trim()
|
|
47
|
-
: FileSystemUtils.joinPath(os.homedir(), ".codex");
|
|
48
|
-
return FileSystemUtils.joinPath(home, "prompts");
|
|
49
|
-
}
|
|
50
|
-
// Codex discovers prompts globally. Generate directly in the global directory
|
|
51
|
-
// and wrap shared body with markers.
|
|
52
|
-
async generateAll(projectPath, _openspecDir) {
|
|
53
|
-
const createdOrUpdated = [];
|
|
54
|
-
for (const target of this.getTargets()) {
|
|
55
|
-
const body = TemplateManager.getSlashCommandBody(target.id).trim();
|
|
56
|
-
const promptsDir = this.getGlobalPromptsDir();
|
|
57
|
-
const filePath = FileSystemUtils.joinPath(promptsDir, path.basename(target.path));
|
|
58
|
-
await FileSystemUtils.createDirectory(path.dirname(filePath));
|
|
59
|
-
if (await FileSystemUtils.fileExists(filePath)) {
|
|
60
|
-
await this.updateFullFile(filePath, target.id, body);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
const frontmatter = this.getFrontmatter(target.id);
|
|
64
|
-
const sections = [];
|
|
65
|
-
if (frontmatter)
|
|
66
|
-
sections.push(frontmatter.trim());
|
|
67
|
-
sections.push(`${OPENSPEC_MARKERS.start}\n${body}\n${OPENSPEC_MARKERS.end}`);
|
|
68
|
-
await FileSystemUtils.writeFile(filePath, sections.join("\n") + "\n");
|
|
69
|
-
}
|
|
70
|
-
createdOrUpdated.push(target.path);
|
|
71
|
-
}
|
|
72
|
-
return createdOrUpdated;
|
|
73
|
-
}
|
|
74
|
-
async updateExisting(projectPath, _openspecDir) {
|
|
75
|
-
const updated = [];
|
|
76
|
-
for (const target of this.getTargets()) {
|
|
77
|
-
const promptsDir = this.getGlobalPromptsDir();
|
|
78
|
-
const filePath = FileSystemUtils.joinPath(promptsDir, path.basename(target.path));
|
|
79
|
-
if (await FileSystemUtils.fileExists(filePath)) {
|
|
80
|
-
const body = TemplateManager.getSlashCommandBody(target.id).trim();
|
|
81
|
-
await this.updateFullFile(filePath, target.id, body);
|
|
82
|
-
updated.push(target.path);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return updated;
|
|
86
|
-
}
|
|
87
|
-
// Update both frontmatter and body in an existing file
|
|
88
|
-
async updateFullFile(filePath, id, body) {
|
|
89
|
-
const content = await FileSystemUtils.readFile(filePath);
|
|
90
|
-
const startIndex = content.indexOf(OPENSPEC_MARKERS.start);
|
|
91
|
-
if (startIndex === -1) {
|
|
92
|
-
throw new Error(`Missing OpenSpec start marker in ${filePath}`);
|
|
93
|
-
}
|
|
94
|
-
// Replace everything before the start marker with the new frontmatter
|
|
95
|
-
const frontmatter = this.getFrontmatter(id);
|
|
96
|
-
const sections = [];
|
|
97
|
-
if (frontmatter)
|
|
98
|
-
sections.push(frontmatter.trim());
|
|
99
|
-
sections.push(`${OPENSPEC_MARKERS.start}\n${body}\n${OPENSPEC_MARKERS.end}`);
|
|
100
|
-
await FileSystemUtils.writeFile(filePath, sections.join("\n") + "\n");
|
|
101
|
-
}
|
|
102
|
-
// Resolve to the global prompts location for configuration detection
|
|
103
|
-
resolveAbsolutePath(_projectPath, id) {
|
|
104
|
-
const promptsDir = this.getGlobalPromptsDir();
|
|
105
|
-
const fileName = path.basename(FILE_PATHS[id]);
|
|
106
|
-
return FileSystemUtils.joinPath(promptsDir, fileName);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
//# sourceMappingURL=codex.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
export declare class ContinueSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
4
|
-
readonly toolId = "continue";
|
|
5
|
-
readonly isAvailable = true;
|
|
6
|
-
protected getRelativePath(id: SlashCommandId): string;
|
|
7
|
-
protected getFrontmatter(id: SlashCommandId): string;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=continue.d.ts.map
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
const FILE_PATHS = {
|
|
3
|
-
proposal: '.continue/prompts/openspec-proposal.prompt',
|
|
4
|
-
apply: '.continue/prompts/openspec-apply.prompt',
|
|
5
|
-
archive: '.continue/prompts/openspec-archive.prompt'
|
|
6
|
-
};
|
|
7
|
-
/*
|
|
8
|
-
* Continue .prompt format requires YAML frontmatter:
|
|
9
|
-
* ---
|
|
10
|
-
* name: commandName
|
|
11
|
-
* description: description
|
|
12
|
-
* invokable: true
|
|
13
|
-
* ---
|
|
14
|
-
* Body...
|
|
15
|
-
*
|
|
16
|
-
* The 'invokable: true' field is required to make the prompt available as a slash command.
|
|
17
|
-
* We use 'openspec-proposal' as the name so the command becomes /openspec-proposal.
|
|
18
|
-
*/
|
|
19
|
-
const FRONTMATTER = {
|
|
20
|
-
proposal: `---
|
|
21
|
-
name: openspec-proposal
|
|
22
|
-
description: Scaffold a new OpenSpec change and validate strictly.
|
|
23
|
-
invokable: true
|
|
24
|
-
---`,
|
|
25
|
-
apply: `---
|
|
26
|
-
name: openspec-apply
|
|
27
|
-
description: Implement an approved OpenSpec change and keep tasks in sync.
|
|
28
|
-
invokable: true
|
|
29
|
-
---`,
|
|
30
|
-
archive: `---
|
|
31
|
-
name: openspec-archive
|
|
32
|
-
description: Archive a deployed OpenSpec change and update specs.
|
|
33
|
-
invokable: true
|
|
34
|
-
---`
|
|
35
|
-
};
|
|
36
|
-
export class ContinueSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
37
|
-
toolId = 'continue';
|
|
38
|
-
isAvailable = true;
|
|
39
|
-
getRelativePath(id) {
|
|
40
|
-
return FILE_PATHS[id];
|
|
41
|
-
}
|
|
42
|
-
getFrontmatter(id) {
|
|
43
|
-
return FRONTMATTER[id];
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=continue.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
export declare class CostrictSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
4
|
-
readonly toolId = "costrict";
|
|
5
|
-
readonly isAvailable = true;
|
|
6
|
-
protected getRelativePath(id: SlashCommandId): string;
|
|
7
|
-
protected getFrontmatter(id: SlashCommandId): string | undefined;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=costrict.d.ts.map
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
const FILE_PATHS = {
|
|
3
|
-
proposal: '.cospec/openspec/commands/openspec-proposal.md',
|
|
4
|
-
apply: '.cospec/openspec/commands/openspec-apply.md',
|
|
5
|
-
archive: '.cospec/openspec/commands/openspec-archive.md',
|
|
6
|
-
};
|
|
7
|
-
const FRONTMATTER = {
|
|
8
|
-
proposal: `---
|
|
9
|
-
description: "Scaffold a new OpenSpec change and validate strictly."
|
|
10
|
-
argument-hint: feature description or request
|
|
11
|
-
---`,
|
|
12
|
-
apply: `---
|
|
13
|
-
description: "Implement an approved OpenSpec change and keep tasks in sync."
|
|
14
|
-
argument-hint: change-id
|
|
15
|
-
---`,
|
|
16
|
-
archive: `---
|
|
17
|
-
description: "Archive a deployed OpenSpec change and update specs."
|
|
18
|
-
argument-hint: change-id
|
|
19
|
-
---`
|
|
20
|
-
};
|
|
21
|
-
export class CostrictSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
22
|
-
toolId = 'costrict';
|
|
23
|
-
isAvailable = true;
|
|
24
|
-
getRelativePath(id) {
|
|
25
|
-
return FILE_PATHS[id];
|
|
26
|
-
}
|
|
27
|
-
getFrontmatter(id) {
|
|
28
|
-
return FRONTMATTER[id];
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=costrict.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
export declare class CrushSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
4
|
-
readonly toolId = "crush";
|
|
5
|
-
readonly isAvailable = true;
|
|
6
|
-
protected getRelativePath(id: SlashCommandId): string;
|
|
7
|
-
protected getFrontmatter(id: SlashCommandId): string;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=crush.d.ts.map
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
const FILE_PATHS = {
|
|
3
|
-
proposal: '.crush/commands/openspec/proposal.md',
|
|
4
|
-
apply: '.crush/commands/openspec/apply.md',
|
|
5
|
-
archive: '.crush/commands/openspec/archive.md'
|
|
6
|
-
};
|
|
7
|
-
const FRONTMATTER = {
|
|
8
|
-
proposal: `---
|
|
9
|
-
name: OpenSpec: Proposal
|
|
10
|
-
description: Scaffold a new OpenSpec change and validate strictly.
|
|
11
|
-
category: OpenSpec
|
|
12
|
-
tags: [openspec, change]
|
|
13
|
-
---`,
|
|
14
|
-
apply: `---
|
|
15
|
-
name: OpenSpec: Apply
|
|
16
|
-
description: Implement an approved OpenSpec change and keep tasks in sync.
|
|
17
|
-
category: OpenSpec
|
|
18
|
-
tags: [openspec, apply]
|
|
19
|
-
---`,
|
|
20
|
-
archive: `---
|
|
21
|
-
name: OpenSpec: Archive
|
|
22
|
-
description: Archive a deployed OpenSpec change and update specs.
|
|
23
|
-
category: OpenSpec
|
|
24
|
-
tags: [openspec, archive]
|
|
25
|
-
---`
|
|
26
|
-
};
|
|
27
|
-
export class CrushSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
28
|
-
toolId = 'crush';
|
|
29
|
-
isAvailable = true;
|
|
30
|
-
getRelativePath(id) {
|
|
31
|
-
return FILE_PATHS[id];
|
|
32
|
-
}
|
|
33
|
-
getFrontmatter(id) {
|
|
34
|
-
return FRONTMATTER[id];
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=crush.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
export declare class CursorSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
4
|
-
readonly toolId = "cursor";
|
|
5
|
-
readonly isAvailable = true;
|
|
6
|
-
protected getRelativePath(id: SlashCommandId): string;
|
|
7
|
-
protected getFrontmatter(id: SlashCommandId): string;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=cursor.d.ts.map
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
const FILE_PATHS = {
|
|
3
|
-
proposal: '.cursor/commands/openspec-proposal.md',
|
|
4
|
-
apply: '.cursor/commands/openspec-apply.md',
|
|
5
|
-
archive: '.cursor/commands/openspec-archive.md'
|
|
6
|
-
};
|
|
7
|
-
const FRONTMATTER = {
|
|
8
|
-
proposal: `---
|
|
9
|
-
name: /openspec-proposal
|
|
10
|
-
id: openspec-proposal
|
|
11
|
-
category: OpenSpec
|
|
12
|
-
description: Scaffold a new OpenSpec change and validate strictly.
|
|
13
|
-
---`,
|
|
14
|
-
apply: `---
|
|
15
|
-
name: /openspec-apply
|
|
16
|
-
id: openspec-apply
|
|
17
|
-
category: OpenSpec
|
|
18
|
-
description: Implement an approved OpenSpec change and keep tasks in sync.
|
|
19
|
-
---`,
|
|
20
|
-
archive: `---
|
|
21
|
-
name: /openspec-archive
|
|
22
|
-
id: openspec-archive
|
|
23
|
-
category: OpenSpec
|
|
24
|
-
description: Archive a deployed OpenSpec change and update specs.
|
|
25
|
-
---`
|
|
26
|
-
};
|
|
27
|
-
export class CursorSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
28
|
-
toolId = 'cursor';
|
|
29
|
-
isAvailable = true;
|
|
30
|
-
getRelativePath(id) {
|
|
31
|
-
return FILE_PATHS[id];
|
|
32
|
-
}
|
|
33
|
-
getFrontmatter(id) {
|
|
34
|
-
return FRONTMATTER[id];
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=cursor.js.map
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
export declare class FactorySlashCommandConfigurator extends SlashCommandConfigurator {
|
|
4
|
-
readonly toolId = "factory";
|
|
5
|
-
readonly isAvailable = true;
|
|
6
|
-
protected getRelativePath(id: SlashCommandId): string;
|
|
7
|
-
protected getFrontmatter(id: SlashCommandId): string;
|
|
8
|
-
protected getBody(id: SlashCommandId): string;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
const FILE_PATHS = {
|
|
3
|
-
proposal: '.factory/commands/openspec-proposal.md',
|
|
4
|
-
apply: '.factory/commands/openspec-apply.md',
|
|
5
|
-
archive: '.factory/commands/openspec-archive.md'
|
|
6
|
-
};
|
|
7
|
-
const FRONTMATTER = {
|
|
8
|
-
proposal: `---
|
|
9
|
-
description: Scaffold a new OpenSpec change and validate strictly.
|
|
10
|
-
argument-hint: request or feature description
|
|
11
|
-
---`,
|
|
12
|
-
apply: `---
|
|
13
|
-
description: Implement an approved OpenSpec change and keep tasks in sync.
|
|
14
|
-
argument-hint: change-id
|
|
15
|
-
---`,
|
|
16
|
-
archive: `---
|
|
17
|
-
description: Archive a deployed OpenSpec change and update specs.
|
|
18
|
-
argument-hint: change-id
|
|
19
|
-
---`
|
|
20
|
-
};
|
|
21
|
-
export class FactorySlashCommandConfigurator extends SlashCommandConfigurator {
|
|
22
|
-
toolId = 'factory';
|
|
23
|
-
isAvailable = true;
|
|
24
|
-
getRelativePath(id) {
|
|
25
|
-
return FILE_PATHS[id];
|
|
26
|
-
}
|
|
27
|
-
getFrontmatter(id) {
|
|
28
|
-
return FRONTMATTER[id];
|
|
29
|
-
}
|
|
30
|
-
getBody(id) {
|
|
31
|
-
const baseBody = super.getBody(id);
|
|
32
|
-
return `${baseBody}\n\n$ARGUMENTS`;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=factory.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { TomlSlashCommandConfigurator } from './toml-base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
export declare class GeminiSlashCommandConfigurator extends TomlSlashCommandConfigurator {
|
|
4
|
-
readonly toolId = "gemini";
|
|
5
|
-
readonly isAvailable = true;
|
|
6
|
-
protected getRelativePath(id: SlashCommandId): string;
|
|
7
|
-
protected getDescription(id: SlashCommandId): string;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { TomlSlashCommandConfigurator } from './toml-base.js';
|
|
2
|
-
const FILE_PATHS = {
|
|
3
|
-
proposal: '.gemini/commands/openspec/proposal.toml',
|
|
4
|
-
apply: '.gemini/commands/openspec/apply.toml',
|
|
5
|
-
archive: '.gemini/commands/openspec/archive.toml'
|
|
6
|
-
};
|
|
7
|
-
const DESCRIPTIONS = {
|
|
8
|
-
proposal: 'Scaffold a new OpenSpec change and validate strictly.',
|
|
9
|
-
apply: 'Implement an approved OpenSpec change and keep tasks in sync.',
|
|
10
|
-
archive: 'Archive a deployed OpenSpec change and update specs.'
|
|
11
|
-
};
|
|
12
|
-
export class GeminiSlashCommandConfigurator extends TomlSlashCommandConfigurator {
|
|
13
|
-
toolId = 'gemini';
|
|
14
|
-
isAvailable = true;
|
|
15
|
-
getRelativePath(id) {
|
|
16
|
-
return FILE_PATHS[id];
|
|
17
|
-
}
|
|
18
|
-
getDescription(id) {
|
|
19
|
-
return DESCRIPTIONS[id];
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=gemini.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
export declare class GitHubCopilotSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
4
|
-
readonly toolId = "github-copilot";
|
|
5
|
-
readonly isAvailable = true;
|
|
6
|
-
protected getRelativePath(id: SlashCommandId): string;
|
|
7
|
-
protected getFrontmatter(id: SlashCommandId): string;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=github-copilot.d.ts.map
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
const FILE_PATHS = {
|
|
3
|
-
proposal: '.github/prompts/openspec-proposal.prompt.md',
|
|
4
|
-
apply: '.github/prompts/openspec-apply.prompt.md',
|
|
5
|
-
archive: '.github/prompts/openspec-archive.prompt.md'
|
|
6
|
-
};
|
|
7
|
-
const FRONTMATTER = {
|
|
8
|
-
proposal: `---
|
|
9
|
-
description: Scaffold a new OpenSpec change and validate strictly.
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
$ARGUMENTS`,
|
|
13
|
-
apply: `---
|
|
14
|
-
description: Implement an approved OpenSpec change and keep tasks in sync.
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
$ARGUMENTS`,
|
|
18
|
-
archive: `---
|
|
19
|
-
description: Archive a deployed OpenSpec change and update specs.
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
$ARGUMENTS`
|
|
23
|
-
};
|
|
24
|
-
export class GitHubCopilotSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
25
|
-
toolId = 'github-copilot';
|
|
26
|
-
isAvailable = true;
|
|
27
|
-
getRelativePath(id) {
|
|
28
|
-
return FILE_PATHS[id];
|
|
29
|
-
}
|
|
30
|
-
getFrontmatter(id) {
|
|
31
|
-
return FRONTMATTER[id];
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=github-copilot.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
import { SlashCommandId } from '../../templates/index.js';
|
|
3
|
-
export declare class IflowSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
4
|
-
readonly toolId = "iflow";
|
|
5
|
-
readonly isAvailable = true;
|
|
6
|
-
protected getRelativePath(id: SlashCommandId): string;
|
|
7
|
-
protected getFrontmatter(id: SlashCommandId): string;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=iflow.d.ts.map
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from './base.js';
|
|
2
|
-
const FILE_PATHS = {
|
|
3
|
-
proposal: '.iflow/commands/openspec-proposal.md',
|
|
4
|
-
apply: '.iflow/commands/openspec-apply.md',
|
|
5
|
-
archive: '.iflow/commands/openspec-archive.md'
|
|
6
|
-
};
|
|
7
|
-
const FRONTMATTER = {
|
|
8
|
-
proposal: `---
|
|
9
|
-
name: /openspec-proposal
|
|
10
|
-
id: openspec-proposal
|
|
11
|
-
category: OpenSpec
|
|
12
|
-
description: Scaffold a new OpenSpec change and validate strictly.
|
|
13
|
-
---`,
|
|
14
|
-
apply: `---
|
|
15
|
-
name: /openspec-apply
|
|
16
|
-
id: openspec-apply
|
|
17
|
-
category: OpenSpec
|
|
18
|
-
description: Implement an approved OpenSpec change and keep tasks in sync.
|
|
19
|
-
---`,
|
|
20
|
-
archive: `---
|
|
21
|
-
name: /openspec-archive
|
|
22
|
-
id: openspec-archive
|
|
23
|
-
category: OpenSpec
|
|
24
|
-
description: Archive a deployed OpenSpec change and update specs.
|
|
25
|
-
---`
|
|
26
|
-
};
|
|
27
|
-
export class IflowSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
28
|
-
toolId = 'iflow';
|
|
29
|
-
isAvailable = true;
|
|
30
|
-
getRelativePath(id) {
|
|
31
|
-
return FILE_PATHS[id];
|
|
32
|
-
}
|
|
33
|
-
getFrontmatter(id) {
|
|
34
|
-
return FRONTMATTER[id];
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=iflow.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from "./base.js";
|
|
2
|
-
import { SlashCommandId } from "../../templates/index.js";
|
|
3
|
-
export declare class KiloCodeSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
4
|
-
readonly toolId = "kilocode";
|
|
5
|
-
readonly isAvailable = true;
|
|
6
|
-
protected getRelativePath(id: SlashCommandId): string;
|
|
7
|
-
protected getFrontmatter(_id: SlashCommandId): string | undefined;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=kilocode.d.ts.map
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from "./base.js";
|
|
2
|
-
const FILE_PATHS = {
|
|
3
|
-
proposal: ".kilocode/workflows/openspec-proposal.md",
|
|
4
|
-
apply: ".kilocode/workflows/openspec-apply.md",
|
|
5
|
-
archive: ".kilocode/workflows/openspec-archive.md"
|
|
6
|
-
};
|
|
7
|
-
export class KiloCodeSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
8
|
-
toolId = "kilocode";
|
|
9
|
-
isAvailable = true;
|
|
10
|
-
getRelativePath(id) {
|
|
11
|
-
return FILE_PATHS[id];
|
|
12
|
-
}
|
|
13
|
-
getFrontmatter(_id) {
|
|
14
|
-
return undefined;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=kilocode.js.map
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { SlashCommandConfigurator } from "./base.js";
|
|
2
|
-
import { SlashCommandId } from "../../templates/index.js";
|
|
3
|
-
export declare class OpenCodeSlashCommandConfigurator extends SlashCommandConfigurator {
|
|
4
|
-
readonly toolId = "opencode";
|
|
5
|
-
readonly isAvailable = true;
|
|
6
|
-
protected getRelativePath(id: SlashCommandId): string;
|
|
7
|
-
protected getFrontmatter(id: SlashCommandId): string | undefined;
|
|
8
|
-
generateAll(projectPath: string, _openspecDir: string): Promise<string[]>;
|
|
9
|
-
updateExisting(projectPath: string, _openspecDir: string): Promise<string[]>;
|
|
10
|
-
private rewriteArchiveFile;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=opencode.d.ts.map
|