openspec-cn 0.23.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/LICENSE +22 -0
- package/README.md +153 -0
- package/bin/openspec.js +3 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +480 -0
- package/dist/commands/change.d.ts +35 -0
- package/dist/commands/change.js +277 -0
- package/dist/commands/completion.d.ts +72 -0
- package/dist/commands/completion.js +257 -0
- package/dist/commands/config.d.ts +8 -0
- package/dist/commands/config.js +198 -0
- package/dist/commands/feedback.d.ts +9 -0
- package/dist/commands/feedback.js +183 -0
- package/dist/commands/schema.d.ts +6 -0
- package/dist/commands/schema.js +869 -0
- package/dist/commands/show.d.ts +14 -0
- package/dist/commands/show.js +132 -0
- package/dist/commands/spec.d.ts +15 -0
- package/dist/commands/spec.js +225 -0
- package/dist/commands/validate.d.ts +24 -0
- package/dist/commands/validate.js +294 -0
- 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/archive.d.ts +11 -0
- package/dist/core/archive.js +280 -0
- package/dist/core/artifact-graph/graph.d.ts +56 -0
- package/dist/core/artifact-graph/graph.js +141 -0
- package/dist/core/artifact-graph/index.d.ts +7 -0
- package/dist/core/artifact-graph/index.js +13 -0
- package/dist/core/artifact-graph/instruction-loader.d.ts +143 -0
- package/dist/core/artifact-graph/instruction-loader.js +214 -0
- package/dist/core/artifact-graph/resolver.d.ts +81 -0
- package/dist/core/artifact-graph/resolver.js +257 -0
- package/dist/core/artifact-graph/schema.d.ts +13 -0
- package/dist/core/artifact-graph/schema.js +108 -0
- package/dist/core/artifact-graph/state.d.ts +12 -0
- package/dist/core/artifact-graph/state.js +54 -0
- package/dist/core/artifact-graph/types.d.ts +45 -0
- package/dist/core/artifact-graph/types.js +43 -0
- 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/completions/command-registry.d.ts +7 -0
- package/dist/core/completions/command-registry.js +456 -0
- package/dist/core/completions/completion-provider.d.ts +60 -0
- package/dist/core/completions/completion-provider.js +102 -0
- package/dist/core/completions/factory.d.ts +64 -0
- package/dist/core/completions/factory.js +75 -0
- package/dist/core/completions/generators/bash-generator.d.ts +32 -0
- package/dist/core/completions/generators/bash-generator.js +174 -0
- package/dist/core/completions/generators/fish-generator.d.ts +32 -0
- package/dist/core/completions/generators/fish-generator.js +157 -0
- package/dist/core/completions/generators/powershell-generator.d.ts +33 -0
- package/dist/core/completions/generators/powershell-generator.js +207 -0
- package/dist/core/completions/generators/zsh-generator.d.ts +44 -0
- package/dist/core/completions/generators/zsh-generator.js +250 -0
- package/dist/core/completions/installers/bash-installer.d.ts +87 -0
- package/dist/core/completions/installers/bash-installer.js +318 -0
- package/dist/core/completions/installers/fish-installer.d.ts +43 -0
- package/dist/core/completions/installers/fish-installer.js +143 -0
- package/dist/core/completions/installers/powershell-installer.d.ts +88 -0
- package/dist/core/completions/installers/powershell-installer.js +327 -0
- package/dist/core/completions/installers/zsh-installer.d.ts +125 -0
- package/dist/core/completions/installers/zsh-installer.js +449 -0
- package/dist/core/completions/templates/bash-templates.d.ts +6 -0
- package/dist/core/completions/templates/bash-templates.js +24 -0
- package/dist/core/completions/templates/fish-templates.d.ts +7 -0
- package/dist/core/completions/templates/fish-templates.js +39 -0
- package/dist/core/completions/templates/powershell-templates.d.ts +6 -0
- package/dist/core/completions/templates/powershell-templates.js +25 -0
- package/dist/core/completions/templates/zsh-templates.d.ts +6 -0
- package/dist/core/completions/templates/zsh-templates.js +36 -0
- package/dist/core/completions/types.d.ts +79 -0
- package/dist/core/completions/types.js +2 -0
- package/dist/core/config-prompts.d.ts +9 -0
- package/dist/core/config-prompts.js +34 -0
- package/dist/core/config-schema.d.ts +76 -0
- package/dist/core/config-schema.js +200 -0
- package/dist/core/config.d.ts +17 -0
- package/dist/core/config.js +30 -0
- package/dist/core/converters/json-converter.d.ts +6 -0
- package/dist/core/converters/json-converter.js +51 -0
- package/dist/core/global-config.d.ts +39 -0
- package/dist/core/global-config.js +115 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +3 -0
- package/dist/core/init.d.ts +32 -0
- package/dist/core/init.js +433 -0
- package/dist/core/legacy-cleanup.d.ts +162 -0
- package/dist/core/legacy-cleanup.js +501 -0
- package/dist/core/list.d.ts +9 -0
- package/dist/core/list.js +171 -0
- package/dist/core/parsers/change-parser.d.ts +13 -0
- package/dist/core/parsers/change-parser.js +193 -0
- package/dist/core/parsers/markdown-parser.d.ts +22 -0
- package/dist/core/parsers/markdown-parser.js +187 -0
- package/dist/core/parsers/requirement-blocks.d.ts +37 -0
- package/dist/core/parsers/requirement-blocks.js +201 -0
- package/dist/core/project-config.d.ts +64 -0
- package/dist/core/project-config.js +223 -0
- package/dist/core/schemas/base.schema.d.ts +13 -0
- package/dist/core/schemas/base.schema.js +13 -0
- package/dist/core/schemas/change.schema.d.ts +73 -0
- package/dist/core/schemas/change.schema.js +31 -0
- package/dist/core/schemas/index.d.ts +4 -0
- package/dist/core/schemas/index.js +4 -0
- package/dist/core/schemas/spec.schema.d.ts +18 -0
- package/dist/core/schemas/spec.schema.js +15 -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 +74 -0
- package/dist/core/shared/tool-detection.d.ts +66 -0
- package/dist/core/shared/tool-detection.js +140 -0
- package/dist/core/specs-apply.d.ts +73 -0
- package/dist/core/specs-apply.js +384 -0
- package/dist/core/styles/palette.d.ts +7 -0
- package/dist/core/styles/palette.js +8 -0
- package/dist/core/templates/index.d.ts +8 -0
- package/dist/core/templates/index.js +9 -0
- package/dist/core/templates/skill-templates.d.ts +112 -0
- package/dist/core/templates/skill-templates.js +2893 -0
- package/dist/core/update.d.ts +42 -0
- package/dist/core/update.js +306 -0
- package/dist/core/validation/constants.d.ts +34 -0
- package/dist/core/validation/constants.js +40 -0
- package/dist/core/validation/types.d.ts +18 -0
- package/dist/core/validation/types.js +2 -0
- package/dist/core/validation/validator.d.ts +33 -0
- package/dist/core/validation/validator.js +409 -0
- package/dist/core/view.d.ts +8 -0
- package/dist/core/view.js +168 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/prompts/searchable-multi-select.d.ts +27 -0
- package/dist/prompts/searchable-multi-select.js +149 -0
- package/dist/telemetry/config.d.ts +32 -0
- package/dist/telemetry/config.js +68 -0
- package/dist/telemetry/index.d.ts +31 -0
- package/dist/telemetry/index.js +145 -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/change-metadata.d.ts +51 -0
- package/dist/utils/change-metadata.js +147 -0
- package/dist/utils/change-utils.d.ts +62 -0
- package/dist/utils/change-utils.js +121 -0
- package/dist/utils/file-system.d.ts +36 -0
- package/dist/utils/file-system.js +281 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/interactive.d.ts +18 -0
- package/dist/utils/interactive.js +21 -0
- package/dist/utils/item-discovery.d.ts +4 -0
- package/dist/utils/item-discovery.js +72 -0
- package/dist/utils/match.d.ts +3 -0
- package/dist/utils/match.js +22 -0
- package/dist/utils/shell-detection.d.ts +20 -0
- package/dist/utils/shell-detection.js +41 -0
- package/dist/utils/task-progress.d.ts +8 -0
- package/dist/utils/task-progress.js +36 -0
- package/package.json +84 -0
- package/schemas/spec-driven/schema.yaml +148 -0
- package/schemas/spec-driven/templates/design.md +19 -0
- package/schemas/spec-driven/templates/proposal.md +23 -0
- package/schemas/spec-driven/templates/spec.md +8 -0
- package/schemas/spec-driven/templates/tasks.md +9 -0
- package/schemas/tdd/schema.yaml +213 -0
- package/schemas/tdd/templates/docs.md +15 -0
- package/schemas/tdd/templates/implementation.md +11 -0
- package/schemas/tdd/templates/spec.md +11 -0
- package/schemas/tdd/templates/test.md +11 -0
- package/scripts/postinstall.js +147 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CoStrict Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for CoStrict following its frontmatter specification.
|
|
5
|
+
*/
|
|
6
|
+
import path from 'path';
|
|
7
|
+
/**
|
|
8
|
+
* CoStrict adapter for command generation.
|
|
9
|
+
* File path: .cospec/openspec/commands/opsx-<id>.md
|
|
10
|
+
* Frontmatter: description, argument-hint
|
|
11
|
+
*/
|
|
12
|
+
export const costrictAdapter = {
|
|
13
|
+
toolId: 'costrict',
|
|
14
|
+
getFilePath(commandId) {
|
|
15
|
+
return path.join('.cospec', 'openspec', 'commands', `opsx-${commandId}.md`);
|
|
16
|
+
},
|
|
17
|
+
formatFile(content) {
|
|
18
|
+
return `---
|
|
19
|
+
description: "${content.description}"
|
|
20
|
+
argument-hint: command arguments
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
${content.body}
|
|
24
|
+
`;
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=costrict.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crush Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Crush following its frontmatter specification.
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolCommandAdapter } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Crush adapter for command generation.
|
|
9
|
+
* File path: .crush/commands/opsx/<id>.md
|
|
10
|
+
* Frontmatter: name, description, category, tags
|
|
11
|
+
*/
|
|
12
|
+
export declare const crushAdapter: ToolCommandAdapter;
|
|
13
|
+
//# sourceMappingURL=crush.d.ts.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crush Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Crush following its frontmatter specification.
|
|
5
|
+
*/
|
|
6
|
+
import path from 'path';
|
|
7
|
+
/**
|
|
8
|
+
* Crush adapter for command generation.
|
|
9
|
+
* File path: .crush/commands/opsx/<id>.md
|
|
10
|
+
* Frontmatter: name, description, category, tags
|
|
11
|
+
*/
|
|
12
|
+
export const crushAdapter = {
|
|
13
|
+
toolId: 'crush',
|
|
14
|
+
getFilePath(commandId) {
|
|
15
|
+
return path.join('.crush', 'commands', 'opsx', `${commandId}.md`);
|
|
16
|
+
},
|
|
17
|
+
formatFile(content) {
|
|
18
|
+
const tagsStr = content.tags.join(', ');
|
|
19
|
+
return `---
|
|
20
|
+
name: ${content.name}
|
|
21
|
+
description: ${content.description}
|
|
22
|
+
category: ${content.category}
|
|
23
|
+
tags: [${tagsStr}]
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
${content.body}
|
|
27
|
+
`;
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=crush.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Cursor following its frontmatter specification.
|
|
5
|
+
* Cursor uses a different frontmatter format and file naming convention.
|
|
6
|
+
*/
|
|
7
|
+
import type { ToolCommandAdapter } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Cursor adapter for command generation.
|
|
10
|
+
* File path: .cursor/commands/opsx-<id>.md
|
|
11
|
+
* Frontmatter: name (as /opsx-<id>), id, category, description
|
|
12
|
+
*/
|
|
13
|
+
export declare const cursorAdapter: ToolCommandAdapter;
|
|
14
|
+
//# sourceMappingURL=cursor.d.ts.map
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Cursor following its frontmatter specification.
|
|
5
|
+
* Cursor uses a different frontmatter format and file naming convention.
|
|
6
|
+
*/
|
|
7
|
+
import path from 'path';
|
|
8
|
+
/**
|
|
9
|
+
* Escapes a string value for safe YAML output.
|
|
10
|
+
* Quotes the string if it contains special YAML characters.
|
|
11
|
+
*/
|
|
12
|
+
function escapeYamlValue(value) {
|
|
13
|
+
// Check if value needs quoting (contains special YAML characters or starts/ends with whitespace)
|
|
14
|
+
const needsQuoting = /[:\n\r#{}[\],&*!|>'"%@`]|^\s|\s$/.test(value);
|
|
15
|
+
if (needsQuoting) {
|
|
16
|
+
// Use double quotes and escape internal double quotes and backslashes
|
|
17
|
+
const escaped = value.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n');
|
|
18
|
+
return `"${escaped}"`;
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Cursor adapter for command generation.
|
|
24
|
+
* File path: .cursor/commands/opsx-<id>.md
|
|
25
|
+
* Frontmatter: name (as /opsx-<id>), id, category, description
|
|
26
|
+
*/
|
|
27
|
+
export const cursorAdapter = {
|
|
28
|
+
toolId: 'cursor',
|
|
29
|
+
getFilePath(commandId) {
|
|
30
|
+
return path.join('.cursor', 'commands', `opsx-${commandId}.md`);
|
|
31
|
+
},
|
|
32
|
+
formatFile(content) {
|
|
33
|
+
return `---
|
|
34
|
+
name: /opsx-${content.id}
|
|
35
|
+
id: opsx-${content.id}
|
|
36
|
+
category: ${escapeYamlValue(content.category)}
|
|
37
|
+
description: ${escapeYamlValue(content.description)}
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
${content.body}
|
|
41
|
+
`;
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory Droid Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Factory Droid following its frontmatter specification.
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolCommandAdapter } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Factory adapter for command generation.
|
|
9
|
+
* File path: .factory/commands/opsx-<id>.md
|
|
10
|
+
* Frontmatter: description, argument-hint
|
|
11
|
+
*/
|
|
12
|
+
export declare const factoryAdapter: ToolCommandAdapter;
|
|
13
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory Droid Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Factory Droid following its frontmatter specification.
|
|
5
|
+
*/
|
|
6
|
+
import path from 'path';
|
|
7
|
+
/**
|
|
8
|
+
* Factory adapter for command generation.
|
|
9
|
+
* File path: .factory/commands/opsx-<id>.md
|
|
10
|
+
* Frontmatter: description, argument-hint
|
|
11
|
+
*/
|
|
12
|
+
export const factoryAdapter = {
|
|
13
|
+
toolId: 'factory',
|
|
14
|
+
getFilePath(commandId) {
|
|
15
|
+
return path.join('.factory', 'commands', `opsx-${commandId}.md`);
|
|
16
|
+
},
|
|
17
|
+
formatFile(content) {
|
|
18
|
+
return `---
|
|
19
|
+
description: ${content.description}
|
|
20
|
+
argument-hint: command arguments
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
${content.body}
|
|
24
|
+
`;
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gemini CLI Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Gemini CLI following its TOML specification.
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolCommandAdapter } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Gemini adapter for command generation.
|
|
9
|
+
* File path: .gemini/commands/opsx/<id>.toml
|
|
10
|
+
* Format: TOML with description and prompt fields
|
|
11
|
+
*/
|
|
12
|
+
export declare const geminiAdapter: ToolCommandAdapter;
|
|
13
|
+
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gemini CLI Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Gemini CLI following its TOML specification.
|
|
5
|
+
*/
|
|
6
|
+
import path from 'path';
|
|
7
|
+
/**
|
|
8
|
+
* Gemini adapter for command generation.
|
|
9
|
+
* File path: .gemini/commands/opsx/<id>.toml
|
|
10
|
+
* Format: TOML with description and prompt fields
|
|
11
|
+
*/
|
|
12
|
+
export const geminiAdapter = {
|
|
13
|
+
toolId: 'gemini',
|
|
14
|
+
getFilePath(commandId) {
|
|
15
|
+
return path.join('.gemini', 'commands', 'opsx', `${commandId}.toml`);
|
|
16
|
+
},
|
|
17
|
+
formatFile(content) {
|
|
18
|
+
return `description = "${content.description}"
|
|
19
|
+
|
|
20
|
+
prompt = """
|
|
21
|
+
${content.body}
|
|
22
|
+
"""
|
|
23
|
+
`;
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=gemini.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Copilot Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for GitHub Copilot following its .prompt.md specification.
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolCommandAdapter } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* GitHub Copilot adapter for command generation.
|
|
9
|
+
* File path: .github/prompts/opsx-<id>.prompt.md
|
|
10
|
+
* Frontmatter: description
|
|
11
|
+
*/
|
|
12
|
+
export declare const githubCopilotAdapter: ToolCommandAdapter;
|
|
13
|
+
//# sourceMappingURL=github-copilot.d.ts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Copilot Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for GitHub Copilot following its .prompt.md specification.
|
|
5
|
+
*/
|
|
6
|
+
import path from 'path';
|
|
7
|
+
/**
|
|
8
|
+
* GitHub Copilot adapter for command generation.
|
|
9
|
+
* File path: .github/prompts/opsx-<id>.prompt.md
|
|
10
|
+
* Frontmatter: description
|
|
11
|
+
*/
|
|
12
|
+
export const githubCopilotAdapter = {
|
|
13
|
+
toolId: 'github-copilot',
|
|
14
|
+
getFilePath(commandId) {
|
|
15
|
+
return path.join('.github', 'prompts', `opsx-${commandId}.prompt.md`);
|
|
16
|
+
},
|
|
17
|
+
formatFile(content) {
|
|
18
|
+
return `---
|
|
19
|
+
description: ${content.description}
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
${content.body}
|
|
23
|
+
`;
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=github-copilot.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* iFlow Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for iFlow following its frontmatter specification.
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolCommandAdapter } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* iFlow adapter for command generation.
|
|
9
|
+
* File path: .iflow/commands/opsx-<id>.md
|
|
10
|
+
* Frontmatter: name, id, category, description
|
|
11
|
+
*/
|
|
12
|
+
export declare const iflowAdapter: ToolCommandAdapter;
|
|
13
|
+
//# sourceMappingURL=iflow.d.ts.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* iFlow Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for iFlow following its frontmatter specification.
|
|
5
|
+
*/
|
|
6
|
+
import path from 'path';
|
|
7
|
+
/**
|
|
8
|
+
* iFlow adapter for command generation.
|
|
9
|
+
* File path: .iflow/commands/opsx-<id>.md
|
|
10
|
+
* Frontmatter: name, id, category, description
|
|
11
|
+
*/
|
|
12
|
+
export const iflowAdapter = {
|
|
13
|
+
toolId: 'iflow',
|
|
14
|
+
getFilePath(commandId) {
|
|
15
|
+
return path.join('.iflow', 'commands', `opsx-${commandId}.md`);
|
|
16
|
+
},
|
|
17
|
+
formatFile(content) {
|
|
18
|
+
return `---
|
|
19
|
+
name: /opsx-${content.id}
|
|
20
|
+
id: opsx-${content.id}
|
|
21
|
+
category: ${content.category}
|
|
22
|
+
description: ${content.description}
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
${content.body}
|
|
26
|
+
`;
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=iflow.js.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command Adapters Index
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all tool command adapters.
|
|
5
|
+
*/
|
|
6
|
+
export { amazonQAdapter } from './amazon-q.js';
|
|
7
|
+
export { antigravityAdapter } from './antigravity.js';
|
|
8
|
+
export { auggieAdapter } from './auggie.js';
|
|
9
|
+
export { claudeAdapter } from './claude.js';
|
|
10
|
+
export { clineAdapter } from './cline.js';
|
|
11
|
+
export { codexAdapter } from './codex.js';
|
|
12
|
+
export { codebuddyAdapter } from './codebuddy.js';
|
|
13
|
+
export { continueAdapter } from './continue.js';
|
|
14
|
+
export { costrictAdapter } from './costrict.js';
|
|
15
|
+
export { crushAdapter } from './crush.js';
|
|
16
|
+
export { cursorAdapter } from './cursor.js';
|
|
17
|
+
export { factoryAdapter } from './factory.js';
|
|
18
|
+
export { geminiAdapter } from './gemini.js';
|
|
19
|
+
export { githubCopilotAdapter } from './github-copilot.js';
|
|
20
|
+
export { iflowAdapter } from './iflow.js';
|
|
21
|
+
export { kilocodeAdapter } from './kilocode.js';
|
|
22
|
+
export { opencodeAdapter } from './opencode.js';
|
|
23
|
+
export { qoderAdapter } from './qoder.js';
|
|
24
|
+
export { qwenAdapter } from './qwen.js';
|
|
25
|
+
export { roocodeAdapter } from './roocode.js';
|
|
26
|
+
export { windsurfAdapter } from './windsurf.js';
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command Adapters Index
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all tool command adapters.
|
|
5
|
+
*/
|
|
6
|
+
export { amazonQAdapter } from './amazon-q.js';
|
|
7
|
+
export { antigravityAdapter } from './antigravity.js';
|
|
8
|
+
export { auggieAdapter } from './auggie.js';
|
|
9
|
+
export { claudeAdapter } from './claude.js';
|
|
10
|
+
export { clineAdapter } from './cline.js';
|
|
11
|
+
export { codexAdapter } from './codex.js';
|
|
12
|
+
export { codebuddyAdapter } from './codebuddy.js';
|
|
13
|
+
export { continueAdapter } from './continue.js';
|
|
14
|
+
export { costrictAdapter } from './costrict.js';
|
|
15
|
+
export { crushAdapter } from './crush.js';
|
|
16
|
+
export { cursorAdapter } from './cursor.js';
|
|
17
|
+
export { factoryAdapter } from './factory.js';
|
|
18
|
+
export { geminiAdapter } from './gemini.js';
|
|
19
|
+
export { githubCopilotAdapter } from './github-copilot.js';
|
|
20
|
+
export { iflowAdapter } from './iflow.js';
|
|
21
|
+
export { kilocodeAdapter } from './kilocode.js';
|
|
22
|
+
export { opencodeAdapter } from './opencode.js';
|
|
23
|
+
export { qoderAdapter } from './qoder.js';
|
|
24
|
+
export { qwenAdapter } from './qwen.js';
|
|
25
|
+
export { roocodeAdapter } from './roocode.js';
|
|
26
|
+
export { windsurfAdapter } from './windsurf.js';
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kilo Code Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Kilo Code following its workflow specification.
|
|
5
|
+
* Kilo Code workflows don't use frontmatter.
|
|
6
|
+
*/
|
|
7
|
+
import type { ToolCommandAdapter } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Kilo Code adapter for command generation.
|
|
10
|
+
* File path: .kilocode/workflows/opsx-<id>.md
|
|
11
|
+
* Format: Plain markdown without frontmatter
|
|
12
|
+
*/
|
|
13
|
+
export declare const kilocodeAdapter: ToolCommandAdapter;
|
|
14
|
+
//# sourceMappingURL=kilocode.d.ts.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kilo Code Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Kilo Code following its workflow specification.
|
|
5
|
+
* Kilo Code workflows don't use frontmatter.
|
|
6
|
+
*/
|
|
7
|
+
import path from 'path';
|
|
8
|
+
/**
|
|
9
|
+
* Kilo Code adapter for command generation.
|
|
10
|
+
* File path: .kilocode/workflows/opsx-<id>.md
|
|
11
|
+
* Format: Plain markdown without frontmatter
|
|
12
|
+
*/
|
|
13
|
+
export const kilocodeAdapter = {
|
|
14
|
+
toolId: 'kilocode',
|
|
15
|
+
getFilePath(commandId) {
|
|
16
|
+
return path.join('.kilocode', 'workflows', `opsx-${commandId}.md`);
|
|
17
|
+
},
|
|
18
|
+
formatFile(content) {
|
|
19
|
+
return `${content.body}
|
|
20
|
+
`;
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=kilocode.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenCode Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for OpenCode following its frontmatter specification.
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolCommandAdapter } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* OpenCode adapter for command generation.
|
|
9
|
+
* File path: .opencode/command/opsx-<id>.md
|
|
10
|
+
* Frontmatter: description
|
|
11
|
+
*/
|
|
12
|
+
export declare const opencodeAdapter: ToolCommandAdapter;
|
|
13
|
+
//# sourceMappingURL=opencode.d.ts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenCode Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for OpenCode following its frontmatter specification.
|
|
5
|
+
*/
|
|
6
|
+
import path from 'path';
|
|
7
|
+
/**
|
|
8
|
+
* OpenCode adapter for command generation.
|
|
9
|
+
* File path: .opencode/command/opsx-<id>.md
|
|
10
|
+
* Frontmatter: description
|
|
11
|
+
*/
|
|
12
|
+
export const opencodeAdapter = {
|
|
13
|
+
toolId: 'opencode',
|
|
14
|
+
getFilePath(commandId) {
|
|
15
|
+
return path.join('.opencode', 'command', `opsx-${commandId}.md`);
|
|
16
|
+
},
|
|
17
|
+
formatFile(content) {
|
|
18
|
+
return `---
|
|
19
|
+
description: ${content.description}
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
${content.body}
|
|
23
|
+
`;
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=opencode.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Qoder Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Qoder following its frontmatter specification.
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolCommandAdapter } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Qoder adapter for command generation.
|
|
9
|
+
* File path: .qoder/commands/opsx/<id>.md
|
|
10
|
+
* Frontmatter: name, description, category, tags
|
|
11
|
+
*/
|
|
12
|
+
export declare const qoderAdapter: ToolCommandAdapter;
|
|
13
|
+
//# sourceMappingURL=qoder.d.ts.map
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Qoder Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Qoder following its frontmatter specification.
|
|
5
|
+
*/
|
|
6
|
+
import path from 'path';
|
|
7
|
+
/**
|
|
8
|
+
* Qoder adapter for command generation.
|
|
9
|
+
* File path: .qoder/commands/opsx/<id>.md
|
|
10
|
+
* Frontmatter: name, description, category, tags
|
|
11
|
+
*/
|
|
12
|
+
export const qoderAdapter = {
|
|
13
|
+
toolId: 'qoder',
|
|
14
|
+
getFilePath(commandId) {
|
|
15
|
+
return path.join('.qoder', 'commands', 'opsx', `${commandId}.md`);
|
|
16
|
+
},
|
|
17
|
+
formatFile(content) {
|
|
18
|
+
const tagsStr = content.tags.join(', ');
|
|
19
|
+
return `---
|
|
20
|
+
name: ${content.name}
|
|
21
|
+
description: ${content.description}
|
|
22
|
+
category: ${content.category}
|
|
23
|
+
tags: [${tagsStr}]
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
${content.body}
|
|
27
|
+
`;
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=qoder.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Qwen Code Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Qwen Code following its TOML specification.
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolCommandAdapter } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Qwen adapter for command generation.
|
|
9
|
+
* File path: .qwen/commands/opsx-<id>.toml
|
|
10
|
+
* Format: TOML with description and prompt fields
|
|
11
|
+
*/
|
|
12
|
+
export declare const qwenAdapter: ToolCommandAdapter;
|
|
13
|
+
//# sourceMappingURL=qwen.d.ts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Qwen Code Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Qwen Code following its TOML specification.
|
|
5
|
+
*/
|
|
6
|
+
import path from 'path';
|
|
7
|
+
/**
|
|
8
|
+
* Qwen adapter for command generation.
|
|
9
|
+
* File path: .qwen/commands/opsx-<id>.toml
|
|
10
|
+
* Format: TOML with description and prompt fields
|
|
11
|
+
*/
|
|
12
|
+
export const qwenAdapter = {
|
|
13
|
+
toolId: 'qwen',
|
|
14
|
+
getFilePath(commandId) {
|
|
15
|
+
return path.join('.qwen', 'commands', `opsx-${commandId}.toml`);
|
|
16
|
+
},
|
|
17
|
+
formatFile(content) {
|
|
18
|
+
return `description = "${content.description}"
|
|
19
|
+
|
|
20
|
+
prompt = """
|
|
21
|
+
${content.body}
|
|
22
|
+
"""
|
|
23
|
+
`;
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=qwen.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RooCode Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for RooCode following its workflow specification.
|
|
5
|
+
* RooCode uses markdown headers instead of YAML frontmatter.
|
|
6
|
+
*/
|
|
7
|
+
import type { ToolCommandAdapter } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* RooCode adapter for command generation.
|
|
10
|
+
* File path: .roo/commands/opsx-<id>.md
|
|
11
|
+
* Format: Markdown header with description
|
|
12
|
+
*/
|
|
13
|
+
export declare const roocodeAdapter: ToolCommandAdapter;
|
|
14
|
+
//# sourceMappingURL=roocode.d.ts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RooCode Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for RooCode following its workflow specification.
|
|
5
|
+
* RooCode uses markdown headers instead of YAML frontmatter.
|
|
6
|
+
*/
|
|
7
|
+
import path from 'path';
|
|
8
|
+
/**
|
|
9
|
+
* RooCode adapter for command generation.
|
|
10
|
+
* File path: .roo/commands/opsx-<id>.md
|
|
11
|
+
* Format: Markdown header with description
|
|
12
|
+
*/
|
|
13
|
+
export const roocodeAdapter = {
|
|
14
|
+
toolId: 'roocode',
|
|
15
|
+
getFilePath(commandId) {
|
|
16
|
+
return path.join('.roo', 'commands', `opsx-${commandId}.md`);
|
|
17
|
+
},
|
|
18
|
+
formatFile(content) {
|
|
19
|
+
return `# ${content.name}
|
|
20
|
+
|
|
21
|
+
${content.description}
|
|
22
|
+
|
|
23
|
+
${content.body}
|
|
24
|
+
`;
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=roocode.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Windsurf Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Windsurf following its frontmatter specification.
|
|
5
|
+
* Windsurf uses a similar format to Claude but may have different conventions.
|
|
6
|
+
*/
|
|
7
|
+
import type { ToolCommandAdapter } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Windsurf adapter for command generation.
|
|
10
|
+
* File path: .windsurf/commands/opsx/<id>.md
|
|
11
|
+
* Frontmatter: name, description, category, tags
|
|
12
|
+
*/
|
|
13
|
+
export declare const windsurfAdapter: ToolCommandAdapter;
|
|
14
|
+
//# sourceMappingURL=windsurf.d.ts.map
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Windsurf Command Adapter
|
|
3
|
+
*
|
|
4
|
+
* Formats commands for Windsurf following its frontmatter specification.
|
|
5
|
+
* Windsurf uses a similar format to Claude but may have different conventions.
|
|
6
|
+
*/
|
|
7
|
+
import path from 'path';
|
|
8
|
+
/**
|
|
9
|
+
* Escapes a string value for safe YAML output.
|
|
10
|
+
* Quotes the string if it contains special YAML characters.
|
|
11
|
+
*/
|
|
12
|
+
function escapeYamlValue(value) {
|
|
13
|
+
// Check if value needs quoting (contains special YAML characters or starts/ends with whitespace)
|
|
14
|
+
const needsQuoting = /[:\n\r#{}[\],&*!|>'"%@`]|^\s|\s$/.test(value);
|
|
15
|
+
if (needsQuoting) {
|
|
16
|
+
// Use double quotes and escape internal double quotes and backslashes
|
|
17
|
+
const escaped = value.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n');
|
|
18
|
+
return `"${escaped}"`;
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Formats a tags array as a YAML array with proper escaping.
|
|
24
|
+
*/
|
|
25
|
+
function formatTagsArray(tags) {
|
|
26
|
+
const escapedTags = tags.map((tag) => escapeYamlValue(tag));
|
|
27
|
+
return `[${escapedTags.join(', ')}]`;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Windsurf adapter for command generation.
|
|
31
|
+
* File path: .windsurf/commands/opsx/<id>.md
|
|
32
|
+
* Frontmatter: name, description, category, tags
|
|
33
|
+
*/
|
|
34
|
+
export const windsurfAdapter = {
|
|
35
|
+
toolId: 'windsurf',
|
|
36
|
+
getFilePath(commandId) {
|
|
37
|
+
return path.join('.windsurf', 'commands', 'opsx', `${commandId}.md`);
|
|
38
|
+
},
|
|
39
|
+
formatFile(content) {
|
|
40
|
+
return `---
|
|
41
|
+
name: ${escapeYamlValue(content.name)}
|
|
42
|
+
description: ${escapeYamlValue(content.description)}
|
|
43
|
+
category: ${escapeYamlValue(content.category)}
|
|
44
|
+
tags: ${formatTagsArray(content.tags)}
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
${content.body}
|
|
48
|
+
`;
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=windsurf.js.map
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command Generator
|
|
3
|
+
*
|
|
4
|
+
* Functions for generating command files using tool adapters.
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandContent, ToolCommandAdapter, GeneratedCommand } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Generate a single command file using the provided adapter.
|
|
9
|
+
* @param content - The tool-agnostic command content
|
|
10
|
+
* @param adapter - The tool-specific adapter
|
|
11
|
+
* @returns Generated command with path and file content
|
|
12
|
+
*/
|
|
13
|
+
export declare function generateCommand(content: CommandContent, adapter: ToolCommandAdapter): GeneratedCommand;
|
|
14
|
+
/**
|
|
15
|
+
* Generate multiple command files using the provided adapter.
|
|
16
|
+
* @param contents - Array of tool-agnostic command contents
|
|
17
|
+
* @param adapter - The tool-specific adapter
|
|
18
|
+
* @returns Array of generated commands with paths and file contents
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateCommands(contents: CommandContent[], adapter: ToolCommandAdapter): GeneratedCommand[];
|
|
21
|
+
//# sourceMappingURL=generator.d.ts.map
|