clavix 5.6.3 → 5.6.5
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/dist/cli/commands/update.js +6 -0
- package/dist/cli/helpers/init/commands.d.ts +23 -0
- package/dist/cli/helpers/init/commands.js +39 -0
- package/dist/cli/helpers/init/config.d.ts +20 -0
- package/dist/cli/helpers/init/config.js +49 -0
- package/dist/cli/helpers/init/directories.d.ts +12 -0
- package/dist/cli/helpers/init/directories.js +17 -0
- package/dist/cli/helpers/init/documentation.d.ts +25 -0
- package/dist/cli/helpers/init/documentation.js +176 -0
- package/dist/cli/helpers/init/index.d.ts +20 -0
- package/dist/cli/helpers/init/index.js +20 -0
- package/dist/cli/helpers/init/integrations.d.ts +44 -0
- package/dist/cli/helpers/init/integrations.js +109 -0
- package/dist/cli/helpers/init/prompts.d.ts +31 -0
- package/dist/cli/helpers/init/prompts.js +97 -0
- package/dist/templates/agents/octo.md +1 -0
- package/dist/templates/agents/warp.md +1 -0
- package/dist/utils/schemas.d.ts +66 -0
- package/dist/utils/schemas.js +37 -1
- package/package.json +3 -2
- package/dist/core/adapters/amp-adapter.d.ts +0 -30
- package/dist/core/adapters/amp-adapter.js +0 -35
- package/dist/core/adapters/augment-adapter.d.ts +0 -22
- package/dist/core/adapters/augment-adapter.js +0 -37
- package/dist/core/adapters/cline-adapter.d.ts +0 -37
- package/dist/core/adapters/cline-adapter.js +0 -45
- package/dist/core/adapters/codebuddy-adapter.d.ts +0 -27
- package/dist/core/adapters/codebuddy-adapter.js +0 -43
- package/dist/core/adapters/codex-adapter.d.ts +0 -27
- package/dist/core/adapters/codex-adapter.js +0 -40
- package/dist/core/adapters/crush-adapter.d.ts +0 -35
- package/dist/core/adapters/crush-adapter.js +0 -42
- package/dist/core/adapters/cursor-adapter.d.ts +0 -28
- package/dist/core/adapters/cursor-adapter.js +0 -33
- package/dist/core/adapters/droid-adapter.d.ts +0 -36
- package/dist/core/adapters/droid-adapter.js +0 -51
- package/dist/core/adapters/kilocode-adapter.d.ts +0 -37
- package/dist/core/adapters/kilocode-adapter.js +0 -42
- package/dist/core/adapters/opencode-adapter.d.ts +0 -36
- package/dist/core/adapters/opencode-adapter.js +0 -50
- package/dist/core/adapters/roocode-adapter.d.ts +0 -43
- package/dist/core/adapters/roocode-adapter.js +0 -62
- package/dist/core/adapters/windsurf-adapter.d.ts +0 -37
- package/dist/core/adapters/windsurf-adapter.js +0 -42
- package/dist/index 2.js +0 -13
- package/dist/index.d 2.ts +0 -4
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
-
import { FileSystem } from '../../utils/file-system.js';
|
|
3
|
-
/**
|
|
4
|
-
* Crush CLI adapter
|
|
5
|
-
* Commands stored in .crush/commands/clavix/ (supports subdirectories)
|
|
6
|
-
* Uses $PROMPT placeholder for user input (Crush-specific syntax)
|
|
7
|
-
*
|
|
8
|
-
* Reference: https://github.com/charmbracelet/crush/blob/main/COMMANDS.md
|
|
9
|
-
*/
|
|
10
|
-
export class CrushAdapter extends BaseAdapter {
|
|
11
|
-
name = 'crush';
|
|
12
|
-
displayName = 'Crush CLI';
|
|
13
|
-
directory = '.crush/commands/clavix';
|
|
14
|
-
fileExtension = '.md';
|
|
15
|
-
features = {
|
|
16
|
-
supportsSubdirectories: true,
|
|
17
|
-
supportsFrontmatter: false,
|
|
18
|
-
argumentPlaceholder: '$PROMPT',
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Detect if Crush is available in the project
|
|
22
|
-
* Checks for .crush directory (project-level commands)
|
|
23
|
-
*/
|
|
24
|
-
async detectProject() {
|
|
25
|
-
return await FileSystem.exists('.crush');
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Get command path for Crush
|
|
29
|
-
*/
|
|
30
|
-
getCommandPath() {
|
|
31
|
-
return this.directory;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Format command content for Crush
|
|
35
|
-
* Replaces generic {{ARGS}} placeholder with Crush-specific $PROMPT
|
|
36
|
-
*/
|
|
37
|
-
formatCommand(template) {
|
|
38
|
-
// Replace Clavix generic placeholder with Crush placeholder
|
|
39
|
-
return template.content.replace(/\{\{ARGS\}\}/g, '$PROMPT');
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=crush-adapter.js.map
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
-
/**
|
|
3
|
-
* Cursor IDE adapter
|
|
4
|
-
* Commands are stored in .cursor/commands/ (flat structure, no subdirectories)
|
|
5
|
-
*/
|
|
6
|
-
export declare class CursorAdapter extends BaseAdapter {
|
|
7
|
-
readonly name = "cursor";
|
|
8
|
-
readonly displayName = "Cursor";
|
|
9
|
-
readonly directory = ".cursor/commands";
|
|
10
|
-
readonly fileExtension = ".md";
|
|
11
|
-
readonly features: {
|
|
12
|
-
supportsSubdirectories: boolean;
|
|
13
|
-
supportsFrontmatter: boolean;
|
|
14
|
-
commandFormat: {
|
|
15
|
-
separator: "-";
|
|
16
|
-
};
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* Detect if Cursor is available in the project
|
|
20
|
-
*/
|
|
21
|
-
detectProject(): Promise<boolean>;
|
|
22
|
-
/**
|
|
23
|
-
* Get command path for Cursor
|
|
24
|
-
*/
|
|
25
|
-
getCommandPath(): string;
|
|
26
|
-
getTargetFilename(name: string): string;
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=cursor-adapter.d.ts.map
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
-
import { FileSystem } from '../../utils/file-system.js';
|
|
3
|
-
/**
|
|
4
|
-
* Cursor IDE adapter
|
|
5
|
-
* Commands are stored in .cursor/commands/ (flat structure, no subdirectories)
|
|
6
|
-
*/
|
|
7
|
-
export class CursorAdapter extends BaseAdapter {
|
|
8
|
-
name = 'cursor';
|
|
9
|
-
displayName = 'Cursor';
|
|
10
|
-
directory = '.cursor/commands';
|
|
11
|
-
fileExtension = '.md';
|
|
12
|
-
features = {
|
|
13
|
-
supportsSubdirectories: false,
|
|
14
|
-
supportsFrontmatter: false,
|
|
15
|
-
commandFormat: { separator: '-' },
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* Detect if Cursor is available in the project
|
|
19
|
-
*/
|
|
20
|
-
async detectProject() {
|
|
21
|
-
return await FileSystem.exists('.cursor');
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Get command path for Cursor
|
|
25
|
-
*/
|
|
26
|
-
getCommandPath() {
|
|
27
|
-
return this.directory;
|
|
28
|
-
}
|
|
29
|
-
getTargetFilename(name) {
|
|
30
|
-
return `clavix-${name}${this.fileExtension}`;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=cursor-adapter.js.map
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
-
import { CommandTemplate } from '../../types/agent.js';
|
|
3
|
-
/**
|
|
4
|
-
* Droid CLI adapter (Factory.ai)
|
|
5
|
-
* Commands stored in .factory/commands/ with YAML frontmatter
|
|
6
|
-
* Uses $ARGUMENTS placeholder for command arguments
|
|
7
|
-
*/
|
|
8
|
-
export declare class DroidAdapter extends BaseAdapter {
|
|
9
|
-
readonly name = "droid";
|
|
10
|
-
readonly displayName = "Droid CLI";
|
|
11
|
-
readonly directory = ".factory/commands";
|
|
12
|
-
readonly fileExtension = ".md";
|
|
13
|
-
readonly features: {
|
|
14
|
-
supportsSubdirectories: boolean;
|
|
15
|
-
supportsFrontmatter: boolean;
|
|
16
|
-
frontmatterFields: string[];
|
|
17
|
-
argumentPlaceholder: string;
|
|
18
|
-
commandFormat: {
|
|
19
|
-
separator: "-";
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Detect if Droid CLI is available in the project
|
|
24
|
-
*/
|
|
25
|
-
detectProject(): Promise<boolean>;
|
|
26
|
-
/**
|
|
27
|
-
* Get command path for Droid CLI
|
|
28
|
-
*/
|
|
29
|
-
getCommandPath(): string;
|
|
30
|
-
getTargetFilename(name: string): string;
|
|
31
|
-
/**
|
|
32
|
-
* Format command with YAML frontmatter for Droid CLI
|
|
33
|
-
*/
|
|
34
|
-
protected formatCommand(template: CommandTemplate): string;
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=droid-adapter.d.ts.map
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
-
import { FileSystem } from '../../utils/file-system.js';
|
|
3
|
-
/**
|
|
4
|
-
* Droid CLI adapter (Factory.ai)
|
|
5
|
-
* Commands stored in .factory/commands/ with YAML frontmatter
|
|
6
|
-
* Uses $ARGUMENTS placeholder for command arguments
|
|
7
|
-
*/
|
|
8
|
-
export class DroidAdapter extends BaseAdapter {
|
|
9
|
-
name = 'droid';
|
|
10
|
-
displayName = 'Droid CLI';
|
|
11
|
-
directory = '.factory/commands';
|
|
12
|
-
fileExtension = '.md';
|
|
13
|
-
features = {
|
|
14
|
-
supportsSubdirectories: false,
|
|
15
|
-
supportsFrontmatter: true,
|
|
16
|
-
frontmatterFields: ['description', 'argument-hint'],
|
|
17
|
-
argumentPlaceholder: '$ARGUMENTS',
|
|
18
|
-
commandFormat: { separator: '-' },
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Detect if Droid CLI is available in the project
|
|
22
|
-
*/
|
|
23
|
-
async detectProject() {
|
|
24
|
-
return await FileSystem.exists('.factory');
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Get command path for Droid CLI
|
|
28
|
-
*/
|
|
29
|
-
getCommandPath() {
|
|
30
|
-
return this.directory;
|
|
31
|
-
}
|
|
32
|
-
getTargetFilename(name) {
|
|
33
|
-
return `clavix-${name}${this.fileExtension}`;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Format command with YAML frontmatter for Droid CLI
|
|
37
|
-
*/
|
|
38
|
-
formatCommand(template) {
|
|
39
|
-
// Add YAML frontmatter
|
|
40
|
-
const frontmatter = `---
|
|
41
|
-
description: ${template.description}
|
|
42
|
-
argument-hint: [prompt]
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
`;
|
|
46
|
-
// Replace generic argument placeholder with $ARGUMENTS
|
|
47
|
-
const content = template.content.replace(/\{\{ARGS\}\}/g, '$ARGUMENTS');
|
|
48
|
-
return frontmatter + content;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=droid-adapter.js.map
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
-
/**
|
|
3
|
-
* Kilocode adapter
|
|
4
|
-
* Workflows stored in .kilocode/workflows/ (flat structure, no subdirectories)
|
|
5
|
-
* Slash command format: /[name.md] (includes .md extension)
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Simple markdown with step-by-step instructions
|
|
9
|
-
* - Supports built-in tools and MCP integrations
|
|
10
|
-
* - Project-specific workflows only
|
|
11
|
-
*
|
|
12
|
-
* Reference: https://kilocode.ai/docs/features/slash-commands/workflows
|
|
13
|
-
*/
|
|
14
|
-
export declare class KilocodeAdapter extends BaseAdapter {
|
|
15
|
-
readonly name = "kilocode";
|
|
16
|
-
readonly displayName = "Kilocode";
|
|
17
|
-
readonly directory = ".kilocode/workflows";
|
|
18
|
-
readonly fileExtension = ".md";
|
|
19
|
-
readonly features: {
|
|
20
|
-
supportsSubdirectories: boolean;
|
|
21
|
-
supportsFrontmatter: boolean;
|
|
22
|
-
commandFormat: {
|
|
23
|
-
separator: "-";
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Detect if Kilocode is available in the project
|
|
28
|
-
* Checks for .kilocode directory
|
|
29
|
-
*/
|
|
30
|
-
detectProject(): Promise<boolean>;
|
|
31
|
-
/**
|
|
32
|
-
* Get command path for Kilocode
|
|
33
|
-
*/
|
|
34
|
-
getCommandPath(): string;
|
|
35
|
-
getTargetFilename(name: string): string;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=kilocode-adapter.d.ts.map
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
-
import { FileSystem } from '../../utils/file-system.js';
|
|
3
|
-
/**
|
|
4
|
-
* Kilocode adapter
|
|
5
|
-
* Workflows stored in .kilocode/workflows/ (flat structure, no subdirectories)
|
|
6
|
-
* Slash command format: /[name.md] (includes .md extension)
|
|
7
|
-
*
|
|
8
|
-
* Features:
|
|
9
|
-
* - Simple markdown with step-by-step instructions
|
|
10
|
-
* - Supports built-in tools and MCP integrations
|
|
11
|
-
* - Project-specific workflows only
|
|
12
|
-
*
|
|
13
|
-
* Reference: https://kilocode.ai/docs/features/slash-commands/workflows
|
|
14
|
-
*/
|
|
15
|
-
export class KilocodeAdapter extends BaseAdapter {
|
|
16
|
-
name = 'kilocode';
|
|
17
|
-
displayName = 'Kilocode';
|
|
18
|
-
directory = '.kilocode/workflows';
|
|
19
|
-
fileExtension = '.md';
|
|
20
|
-
features = {
|
|
21
|
-
supportsSubdirectories: false,
|
|
22
|
-
supportsFrontmatter: false,
|
|
23
|
-
commandFormat: { separator: '-' },
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Detect if Kilocode is available in the project
|
|
27
|
-
* Checks for .kilocode directory
|
|
28
|
-
*/
|
|
29
|
-
async detectProject() {
|
|
30
|
-
return await FileSystem.exists('.kilocode');
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Get command path for Kilocode
|
|
34
|
-
*/
|
|
35
|
-
getCommandPath() {
|
|
36
|
-
return this.directory;
|
|
37
|
-
}
|
|
38
|
-
getTargetFilename(name) {
|
|
39
|
-
return `clavix-${name}${this.fileExtension}`;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=kilocode-adapter.js.map
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
-
import { CommandTemplate } from '../../types/agent.js';
|
|
3
|
-
/**
|
|
4
|
-
* OpenCode adapter
|
|
5
|
-
* Commands stored in .opencode/command/ with frontmatter
|
|
6
|
-
* Uses $ARGUMENTS, $1, $2 placeholders
|
|
7
|
-
*/
|
|
8
|
-
export declare class OpenCodeAdapter extends BaseAdapter {
|
|
9
|
-
readonly name = "opencode";
|
|
10
|
-
readonly displayName = "OpenCode";
|
|
11
|
-
readonly directory = ".opencode/command";
|
|
12
|
-
readonly fileExtension = ".md";
|
|
13
|
-
readonly features: {
|
|
14
|
-
supportsSubdirectories: boolean;
|
|
15
|
-
supportsFrontmatter: boolean;
|
|
16
|
-
frontmatterFields: string[];
|
|
17
|
-
argumentPlaceholder: string;
|
|
18
|
-
commandFormat: {
|
|
19
|
-
separator: "-";
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Detect if OpenCode is available in the project
|
|
24
|
-
*/
|
|
25
|
-
detectProject(): Promise<boolean>;
|
|
26
|
-
/**
|
|
27
|
-
* Get command path for OpenCode
|
|
28
|
-
*/
|
|
29
|
-
getCommandPath(): string;
|
|
30
|
-
getTargetFilename(name: string): string;
|
|
31
|
-
/**
|
|
32
|
-
* Format command with frontmatter for OpenCode
|
|
33
|
-
*/
|
|
34
|
-
protected formatCommand(template: CommandTemplate): string;
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=opencode-adapter.d.ts.map
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
-
import { FileSystem } from '../../utils/file-system.js';
|
|
3
|
-
/**
|
|
4
|
-
* OpenCode adapter
|
|
5
|
-
* Commands stored in .opencode/command/ with frontmatter
|
|
6
|
-
* Uses $ARGUMENTS, $1, $2 placeholders
|
|
7
|
-
*/
|
|
8
|
-
export class OpenCodeAdapter extends BaseAdapter {
|
|
9
|
-
name = 'opencode';
|
|
10
|
-
displayName = 'OpenCode';
|
|
11
|
-
directory = '.opencode/command';
|
|
12
|
-
fileExtension = '.md';
|
|
13
|
-
features = {
|
|
14
|
-
supportsSubdirectories: false,
|
|
15
|
-
supportsFrontmatter: true,
|
|
16
|
-
frontmatterFields: ['description', 'agent', 'model'],
|
|
17
|
-
argumentPlaceholder: '$ARGUMENTS',
|
|
18
|
-
commandFormat: { separator: '-' },
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Detect if OpenCode is available in the project
|
|
22
|
-
*/
|
|
23
|
-
async detectProject() {
|
|
24
|
-
return await FileSystem.exists('.opencode');
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Get command path for OpenCode
|
|
28
|
-
*/
|
|
29
|
-
getCommandPath() {
|
|
30
|
-
return this.directory;
|
|
31
|
-
}
|
|
32
|
-
getTargetFilename(name) {
|
|
33
|
-
return `clavix-${name}${this.fileExtension}`;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Format command with frontmatter for OpenCode
|
|
37
|
-
*/
|
|
38
|
-
formatCommand(template) {
|
|
39
|
-
// Add frontmatter
|
|
40
|
-
const frontmatter = `---
|
|
41
|
-
description: ${template.description}
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
`;
|
|
45
|
-
// Replace generic argument placeholder with $ARGUMENTS
|
|
46
|
-
const content = template.content.replace(/\{\{ARGS\}\}/g, '$ARGUMENTS');
|
|
47
|
-
return frontmatter + content;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=opencode-adapter.js.map
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
-
import { CommandTemplate } from '../../types/agent.js';
|
|
3
|
-
/**
|
|
4
|
-
* Roocode adapter
|
|
5
|
-
* Commands stored in .roo/commands/ (flat structure, no subdirectories)
|
|
6
|
-
* Slash command format: /[name] (no .md extension, auto-converts to lowercase/dashes)
|
|
7
|
-
*
|
|
8
|
-
* Features:
|
|
9
|
-
* - Supports optional frontmatter (description, argument-hint)
|
|
10
|
-
* - Command names automatically processed: lowercase, spaces→dashes, special chars removed
|
|
11
|
-
* - Project commands override global commands
|
|
12
|
-
*
|
|
13
|
-
* Reference: https://docs.roocode.com/features/slash-commands
|
|
14
|
-
*/
|
|
15
|
-
export declare class RoocodeAdapter extends BaseAdapter {
|
|
16
|
-
readonly name = "roocode";
|
|
17
|
-
readonly displayName = "Roocode";
|
|
18
|
-
readonly directory = ".roo/commands";
|
|
19
|
-
readonly fileExtension = ".md";
|
|
20
|
-
readonly features: {
|
|
21
|
-
supportsSubdirectories: boolean;
|
|
22
|
-
supportsFrontmatter: boolean;
|
|
23
|
-
commandFormat: {
|
|
24
|
-
separator: "-";
|
|
25
|
-
};
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* Detect if Roocode is available in the project
|
|
29
|
-
* Checks for .roo directory
|
|
30
|
-
*/
|
|
31
|
-
detectProject(): Promise<boolean>;
|
|
32
|
-
/**
|
|
33
|
-
* Get command path for Roocode
|
|
34
|
-
*/
|
|
35
|
-
getCommandPath(): string;
|
|
36
|
-
getTargetFilename(name: string): string;
|
|
37
|
-
/**
|
|
38
|
-
* Format command content for Roocode
|
|
39
|
-
* Adds frontmatter with description and argument-hint if not already present
|
|
40
|
-
*/
|
|
41
|
-
protected formatCommand(template: CommandTemplate): string;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=roocode-adapter.d.ts.map
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
-
import { FileSystem } from '../../utils/file-system.js';
|
|
3
|
-
/**
|
|
4
|
-
* Roocode adapter
|
|
5
|
-
* Commands stored in .roo/commands/ (flat structure, no subdirectories)
|
|
6
|
-
* Slash command format: /[name] (no .md extension, auto-converts to lowercase/dashes)
|
|
7
|
-
*
|
|
8
|
-
* Features:
|
|
9
|
-
* - Supports optional frontmatter (description, argument-hint)
|
|
10
|
-
* - Command names automatically processed: lowercase, spaces→dashes, special chars removed
|
|
11
|
-
* - Project commands override global commands
|
|
12
|
-
*
|
|
13
|
-
* Reference: https://docs.roocode.com/features/slash-commands
|
|
14
|
-
*/
|
|
15
|
-
export class RoocodeAdapter extends BaseAdapter {
|
|
16
|
-
name = 'roocode';
|
|
17
|
-
displayName = 'Roocode';
|
|
18
|
-
directory = '.roo/commands';
|
|
19
|
-
fileExtension = '.md';
|
|
20
|
-
features = {
|
|
21
|
-
supportsSubdirectories: false,
|
|
22
|
-
supportsFrontmatter: true,
|
|
23
|
-
commandFormat: { separator: '-' },
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Detect if Roocode is available in the project
|
|
27
|
-
* Checks for .roo directory
|
|
28
|
-
*/
|
|
29
|
-
async detectProject() {
|
|
30
|
-
return await FileSystem.exists('.roo');
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Get command path for Roocode
|
|
34
|
-
*/
|
|
35
|
-
getCommandPath() {
|
|
36
|
-
return this.directory;
|
|
37
|
-
}
|
|
38
|
-
getTargetFilename(name) {
|
|
39
|
-
return `clavix-${name}${this.fileExtension}`;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Format command content for Roocode
|
|
43
|
-
* Adds frontmatter with description and argument-hint if not already present
|
|
44
|
-
*/
|
|
45
|
-
formatCommand(template) {
|
|
46
|
-
const content = template.content;
|
|
47
|
-
// Check if frontmatter already exists
|
|
48
|
-
if (content.trim().startsWith('---')) {
|
|
49
|
-
// Frontmatter already exists, use as-is
|
|
50
|
-
return content;
|
|
51
|
-
}
|
|
52
|
-
// Add Roocode-specific frontmatter
|
|
53
|
-
const frontmatter = `---
|
|
54
|
-
description: ${template.description || `Clavix ${template.name} command`}
|
|
55
|
-
argument-hint: <prompt>
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
`;
|
|
59
|
-
return frontmatter + content;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
//# sourceMappingURL=roocode-adapter.js.map
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
-
/**
|
|
3
|
-
* Windsurf adapter
|
|
4
|
-
* Workflows stored in .windsurf/workflows/ (supports subdirectories)
|
|
5
|
-
* Slash command format: /[name] (no .md extension)
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Supports subdirectories for workflow organization
|
|
9
|
-
* - 12,000 character limit per workflow file
|
|
10
|
-
* - Auto-discovers from workspace, subdirectories, and parent dirs up to git root
|
|
11
|
-
*
|
|
12
|
-
* Reference: https://docs.windsurf.com/windsurf/cascade/workflows
|
|
13
|
-
*/
|
|
14
|
-
export declare class WindsurfAdapter extends BaseAdapter {
|
|
15
|
-
readonly name = "windsurf";
|
|
16
|
-
readonly displayName = "Windsurf";
|
|
17
|
-
readonly directory = ".windsurf/workflows";
|
|
18
|
-
readonly fileExtension = ".md";
|
|
19
|
-
readonly features: {
|
|
20
|
-
supportsSubdirectories: boolean;
|
|
21
|
-
supportsFrontmatter: boolean;
|
|
22
|
-
commandFormat: {
|
|
23
|
-
separator: "-";
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Detect if Windsurf is available in the project
|
|
28
|
-
* Checks for .windsurf directory
|
|
29
|
-
*/
|
|
30
|
-
detectProject(): Promise<boolean>;
|
|
31
|
-
/**
|
|
32
|
-
* Get command path for Windsurf
|
|
33
|
-
*/
|
|
34
|
-
getCommandPath(): string;
|
|
35
|
-
getTargetFilename(name: string): string;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=windsurf-adapter.d.ts.map
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
-
import { FileSystem } from '../../utils/file-system.js';
|
|
3
|
-
/**
|
|
4
|
-
* Windsurf adapter
|
|
5
|
-
* Workflows stored in .windsurf/workflows/ (supports subdirectories)
|
|
6
|
-
* Slash command format: /[name] (no .md extension)
|
|
7
|
-
*
|
|
8
|
-
* Features:
|
|
9
|
-
* - Supports subdirectories for workflow organization
|
|
10
|
-
* - 12,000 character limit per workflow file
|
|
11
|
-
* - Auto-discovers from workspace, subdirectories, and parent dirs up to git root
|
|
12
|
-
*
|
|
13
|
-
* Reference: https://docs.windsurf.com/windsurf/cascade/workflows
|
|
14
|
-
*/
|
|
15
|
-
export class WindsurfAdapter extends BaseAdapter {
|
|
16
|
-
name = 'windsurf';
|
|
17
|
-
displayName = 'Windsurf';
|
|
18
|
-
directory = '.windsurf/workflows';
|
|
19
|
-
fileExtension = '.md';
|
|
20
|
-
features = {
|
|
21
|
-
supportsSubdirectories: true,
|
|
22
|
-
supportsFrontmatter: false,
|
|
23
|
-
commandFormat: { separator: '-' },
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Detect if Windsurf is available in the project
|
|
27
|
-
* Checks for .windsurf directory
|
|
28
|
-
*/
|
|
29
|
-
async detectProject() {
|
|
30
|
-
return await FileSystem.exists('.windsurf');
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Get command path for Windsurf
|
|
34
|
-
*/
|
|
35
|
-
getCommandPath() {
|
|
36
|
-
return this.directory;
|
|
37
|
-
}
|
|
38
|
-
getTargetFilename(name) {
|
|
39
|
-
return `clavix-${name}${this.fileExtension}`;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=windsurf-adapter.js.map
|
package/dist/index 2.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { run, handle, settings } from '@oclif/core';
|
|
3
|
-
// Disable debug mode (stack traces) unless explicitly requested via DEBUG env var
|
|
4
|
-
if (!process.env.DEBUG) {
|
|
5
|
-
settings.debug = false;
|
|
6
|
-
}
|
|
7
|
-
// Run if called directly
|
|
8
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
9
|
-
run().catch(handle);
|
|
10
|
-
}
|
|
11
|
-
// Export for testing
|
|
12
|
-
export { run };
|
|
13
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.d 2.ts
DELETED