clavix 2.7.1 → 2.8.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 +18 -4
- package/bin/clavix.js +12 -5
- package/dist/cli/commands/archive.d.ts +5 -4
- package/dist/cli/commands/archive.js +135 -161
- package/dist/cli/commands/config.d.ts +4 -4
- package/dist/cli/commands/config.js +66 -105
- package/dist/cli/commands/deep.d.ts +3 -3
- package/dist/cli/commands/deep.js +97 -103
- package/dist/cli/commands/execute.d.ts +4 -4
- package/dist/cli/commands/execute.js +57 -63
- package/dist/cli/commands/fast.d.ts +3 -3
- package/dist/cli/commands/fast.js +122 -128
- package/dist/cli/commands/implement.d.ts +4 -4
- package/dist/cli/commands/implement.js +84 -148
- package/dist/cli/commands/init.js +87 -126
- package/dist/cli/commands/list.d.ts +5 -5
- package/dist/cli/commands/list.js +72 -111
- package/dist/cli/commands/plan.d.ts +7 -7
- package/dist/cli/commands/plan.js +92 -131
- package/dist/cli/commands/prd.d.ts +4 -4
- package/dist/cli/commands/prd.js +76 -111
- package/dist/cli/commands/prompts/clear.d.ts +6 -6
- package/dist/cli/commands/prompts/clear.js +70 -76
- package/dist/cli/commands/prompts/list.js +37 -43
- package/dist/cli/commands/show.d.ts +4 -4
- package/dist/cli/commands/show.js +72 -111
- package/dist/cli/commands/start.d.ts +3 -3
- package/dist/cli/commands/start.js +63 -101
- package/dist/cli/commands/summarize.d.ts +4 -4
- package/dist/cli/commands/summarize.js +81 -120
- package/dist/cli/commands/task-complete.d.ts +4 -4
- package/dist/cli/commands/task-complete.js +86 -123
- package/dist/cli/commands/update.d.ts +3 -3
- package/dist/cli/commands/update.js +97 -130
- package/dist/cli/commands/version.js +13 -48
- package/dist/core/adapters/agents-md-generator.js +17 -50
- package/dist/core/adapters/amp-adapter.d.ts +1 -1
- package/dist/core/adapters/amp-adapter.js +13 -21
- package/dist/core/adapters/augment-adapter.d.ts +2 -2
- package/dist/core/adapters/augment-adapter.js +16 -56
- package/dist/core/adapters/base-adapter.d.ts +1 -1
- package/dist/core/adapters/base-adapter.js +11 -47
- package/dist/core/adapters/claude-code-adapter.d.ts +2 -2
- package/dist/core/adapters/claude-code-adapter.js +19 -60
- package/dist/core/adapters/cline-adapter.d.ts +1 -1
- package/dist/core/adapters/cline-adapter.js +13 -21
- package/dist/core/adapters/codebuddy-adapter.d.ts +2 -2
- package/dist/core/adapters/codebuddy-adapter.js +17 -57
- package/dist/core/adapters/codex-adapter.d.ts +2 -2
- package/dist/core/adapters/codex-adapter.js +16 -56
- package/dist/core/adapters/copilot-instructions-generator.js +18 -51
- package/dist/core/adapters/crush-adapter.d.ts +2 -2
- package/dist/core/adapters/crush-adapter.js +13 -20
- package/dist/core/adapters/cursor-adapter.d.ts +1 -1
- package/dist/core/adapters/cursor-adapter.js +12 -20
- package/dist/core/adapters/droid-adapter.d.ts +2 -2
- package/dist/core/adapters/droid-adapter.js +14 -21
- package/dist/core/adapters/gemini-adapter.d.ts +2 -2
- package/dist/core/adapters/gemini-adapter.js +16 -52
- package/dist/core/adapters/kilocode-adapter.d.ts +1 -1
- package/dist/core/adapters/kilocode-adapter.js +12 -20
- package/dist/core/adapters/octo-md-generator.js +17 -50
- package/dist/core/adapters/opencode-adapter.d.ts +2 -2
- package/dist/core/adapters/opencode-adapter.js +14 -21
- package/dist/core/adapters/qwen-adapter.d.ts +2 -2
- package/dist/core/adapters/qwen-adapter.js +16 -52
- package/dist/core/adapters/roocode-adapter.d.ts +2 -2
- package/dist/core/adapters/roocode-adapter.js +12 -19
- package/dist/core/adapters/warp-md-generator.js +17 -50
- package/dist/core/adapters/windsurf-adapter.d.ts +1 -1
- package/dist/core/adapters/windsurf-adapter.js +12 -20
- package/dist/core/agent-manager.d.ts +1 -1
- package/dist/core/agent-manager.js +34 -38
- package/dist/core/archive-manager.js +10 -46
- package/dist/core/config-manager.d.ts +2 -2
- package/dist/core/config-manager.js +3 -40
- package/dist/core/conversation-analyzer.d.ts +1 -1
- package/dist/core/conversation-analyzer.js +1 -5
- package/dist/core/doc-injector.js +23 -60
- package/dist/core/git-manager.js +11 -48
- package/dist/core/prd-generator.js +16 -51
- package/dist/core/prompt-manager.js +6 -42
- package/dist/core/prompt-optimizer.js +1 -5
- package/dist/core/question-engine.js +6 -45
- package/dist/core/session-manager.d.ts +1 -1
- package/dist/core/session-manager.js +11 -49
- package/dist/core/task-manager.d.ts +26 -0
- package/dist/core/task-manager.js +243 -101
- package/dist/index.d.ts +2 -1
- package/dist/index.js +8 -12
- package/dist/templates/agents/agents.md +31 -2
- package/dist/templates/agents/copilot-instructions.md +1 -1
- package/dist/templates/agents/octo.md +20 -1
- package/dist/templates/agents/warp.md +1 -1
- package/dist/templates/slash-commands/_canonical/implement.md +33 -11
- package/dist/types/agent.js +1 -2
- package/dist/types/config.js +3 -8
- package/dist/types/errors.js +7 -13
- package/dist/types/session.js +1 -2
- package/dist/utils/agent-error-messages.js +1 -5
- package/dist/utils/error-utils.js +5 -12
- package/dist/utils/file-system.js +20 -57
- package/dist/utils/legacy-command-cleanup.d.ts +1 -1
- package/dist/utils/legacy-command-cleanup.js +9 -45
- package/dist/utils/template-loader.d.ts +1 -1
- package/dist/utils/template-loader.js +9 -41
- package/dist/utils/toml-templates.js +1 -4
- package/package.json +9 -4
- package/dist/core/adapters 2/agents-md-generator.d.ts +0 -26
- package/dist/core/adapters 2/agents-md-generator.js +0 -102
- package/dist/core/adapters 2/amp-adapter.d.ts +0 -27
- package/dist/core/adapters 2/amp-adapter.js +0 -42
- package/dist/core/adapters 2/augment-adapter.d.ts +0 -22
- package/dist/core/adapters 2/augment-adapter.js +0 -77
- package/dist/core/adapters 2/base-adapter.d.ts +0 -45
- package/dist/core/adapters 2/base-adapter.js +0 -142
- package/dist/core/adapters 2/claude-code-adapter.d.ts +0 -32
- package/dist/core/adapters 2/claude-code-adapter.js +0 -116
- package/dist/core/adapters 2/cline-adapter.d.ts +0 -34
- package/dist/core/adapters 2/cline-adapter.js +0 -52
- package/dist/core/adapters 2/codebuddy-adapter.d.ts +0 -24
- package/dist/core/adapters 2/codebuddy-adapter.js +0 -82
- package/dist/core/adapters 2/codex-adapter.d.ts +0 -24
- package/dist/core/adapters 2/codex-adapter.js +0 -79
- package/dist/core/adapters 2/copilot-instructions-generator.d.ts +0 -26
- package/dist/core/adapters 2/copilot-instructions-generator.js +0 -104
- package/dist/core/adapters 2/crush-adapter.d.ts +0 -35
- package/dist/core/adapters 2/crush-adapter.js +0 -49
- package/dist/core/adapters 2/cursor-adapter.d.ts +0 -25
- package/dist/core/adapters 2/cursor-adapter.js +0 -40
- package/dist/core/adapters 2/droid-adapter.d.ts +0 -33
- package/dist/core/adapters 2/droid-adapter.js +0 -57
- package/dist/core/adapters 2/gemini-adapter.d.ts +0 -27
- package/dist/core/adapters 2/gemini-adapter.js +0 -90
- package/dist/core/adapters 2/kilocode-adapter.d.ts +0 -34
- package/dist/core/adapters 2/kilocode-adapter.js +0 -49
- package/dist/core/adapters 2/octo-md-generator.d.ts +0 -26
- package/dist/core/adapters 2/octo-md-generator.js +0 -102
- package/dist/core/adapters 2/opencode-adapter.d.ts +0 -33
- package/dist/core/adapters 2/opencode-adapter.js +0 -56
- package/dist/core/adapters 2/qwen-adapter.d.ts +0 -27
- package/dist/core/adapters 2/qwen-adapter.js +0 -90
- package/dist/core/adapters 2/roocode-adapter.d.ts +0 -40
- package/dist/core/adapters 2/roocode-adapter.js +0 -68
- package/dist/core/adapters 2/warp-md-generator.d.ts +0 -17
- package/dist/core/adapters 2/warp-md-generator.js +0 -88
- package/dist/core/adapters 2/windsurf-adapter.d.ts +0 -34
- package/dist/core/adapters 2/windsurf-adapter.js +0 -49
- package/dist/core/agent-manager 2.js +0 -126
- package/dist/core/agent-manager.d 2.ts +0 -51
- package/dist/core/archive-manager 2.js +0 -338
- package/dist/core/archive-manager.d 2.ts +0 -100
- package/dist/core/conversation-analyzer.d 2.ts +0 -86
- package/dist/core/doc-injector 2.js +0 -236
- package/dist/core/doc-injector.d 2.ts +0 -51
- package/dist/core/git-manager 2.js +0 -214
- package/dist/core/git-manager.d 2.ts +0 -100
- package/dist/core/prompt-optimizer 2.js +0 -963
- package/dist/core/prompt-optimizer.d 2.ts +0 -268
- package/dist/core/question-engine 2.js +0 -395
- package/dist/core/question-engine.d 2.ts +0 -167
- package/dist/core/session-manager 2.js +0 -403
- package/dist/core/session-manager.d 2.ts +0 -139
- package/dist/core/task-manager 2.js +0 -689
- package/dist/core/task-manager.d 2.ts +0 -155
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter';
|
|
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
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Detect if Kilocode is available in the project
|
|
25
|
-
* Checks for .kilocode directory
|
|
26
|
-
*/
|
|
27
|
-
detectProject(): Promise<boolean>;
|
|
28
|
-
/**
|
|
29
|
-
* Get command path for Kilocode
|
|
30
|
-
*/
|
|
31
|
-
getCommandPath(): string;
|
|
32
|
-
getTargetFilename(name: string): string;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=kilocode-adapter.d.ts.map
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.KilocodeAdapter = void 0;
|
|
4
|
-
const base_adapter_1 = require("./base-adapter");
|
|
5
|
-
const file_system_1 = require("../../utils/file-system");
|
|
6
|
-
/**
|
|
7
|
-
* Kilocode adapter
|
|
8
|
-
* Workflows stored in .kilocode/workflows/ (flat structure, no subdirectories)
|
|
9
|
-
* Slash command format: /[name.md] (includes .md extension)
|
|
10
|
-
*
|
|
11
|
-
* Features:
|
|
12
|
-
* - Simple markdown with step-by-step instructions
|
|
13
|
-
* - Supports built-in tools and MCP integrations
|
|
14
|
-
* - Project-specific workflows only
|
|
15
|
-
*
|
|
16
|
-
* Reference: https://kilocode.ai/docs/features/slash-commands/workflows
|
|
17
|
-
*/
|
|
18
|
-
class KilocodeAdapter extends base_adapter_1.BaseAdapter {
|
|
19
|
-
constructor() {
|
|
20
|
-
super(...arguments);
|
|
21
|
-
this.name = 'kilocode';
|
|
22
|
-
this.displayName = 'Kilocode';
|
|
23
|
-
this.directory = '.kilocode/workflows';
|
|
24
|
-
this.fileExtension = '.md';
|
|
25
|
-
this.features = {
|
|
26
|
-
supportsSubdirectories: false,
|
|
27
|
-
supportsFrontmatter: false,
|
|
28
|
-
};
|
|
29
|
-
// Uses default formatCommand and generateCommands from BaseAdapter
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Detect if Kilocode is available in the project
|
|
33
|
-
* Checks for .kilocode directory
|
|
34
|
-
*/
|
|
35
|
-
async detectProject() {
|
|
36
|
-
return await file_system_1.FileSystem.exists('.kilocode');
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Get command path for Kilocode
|
|
40
|
-
*/
|
|
41
|
-
getCommandPath() {
|
|
42
|
-
return this.directory;
|
|
43
|
-
}
|
|
44
|
-
getTargetFilename(name) {
|
|
45
|
-
return `clavix-${name}${this.fileExtension}`;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
exports.KilocodeAdapter = KilocodeAdapter;
|
|
49
|
-
//# sourceMappingURL=kilocode-adapter.js.map
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generator for Octofriend OCTO.md file
|
|
3
|
-
* Provides workflow instructions optimized for Octofriend capabilities
|
|
4
|
-
*/
|
|
5
|
-
export declare class OctoMdGenerator {
|
|
6
|
-
static readonly TARGET_FILE = "OCTO.md";
|
|
7
|
-
static readonly START_MARKER = "<!-- CLAVIX:START -->";
|
|
8
|
-
static readonly END_MARKER = "<!-- CLAVIX:END -->";
|
|
9
|
-
/**
|
|
10
|
-
* Generate or update OCTO.md with Clavix workflows
|
|
11
|
-
*/
|
|
12
|
-
static generate(): Promise<void>;
|
|
13
|
-
/**
|
|
14
|
-
* Inject or update managed block in OCTO.md
|
|
15
|
-
*/
|
|
16
|
-
private static injectManagedBlock;
|
|
17
|
-
/**
|
|
18
|
-
* Escape special regex characters
|
|
19
|
-
*/
|
|
20
|
-
private static escapeRegex;
|
|
21
|
-
/**
|
|
22
|
-
* Check if OCTO.md has Clavix block
|
|
23
|
-
*/
|
|
24
|
-
static hasClavixBlock(): Promise<boolean>;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=octo-md-generator.d.ts.map
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.OctoMdGenerator = void 0;
|
|
37
|
-
const file_system_1 = require("../../utils/file-system");
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
/**
|
|
40
|
-
* Generator for Octofriend OCTO.md file
|
|
41
|
-
* Provides workflow instructions optimized for Octofriend capabilities
|
|
42
|
-
*/
|
|
43
|
-
class OctoMdGenerator {
|
|
44
|
-
/**
|
|
45
|
-
* Generate or update OCTO.md with Clavix workflows
|
|
46
|
-
*/
|
|
47
|
-
static async generate() {
|
|
48
|
-
const templatePath = path.join(__dirname, '../../templates/agents/octo.md');
|
|
49
|
-
// Check if template exists
|
|
50
|
-
if (!(await file_system_1.FileSystem.exists(templatePath))) {
|
|
51
|
-
throw new Error(`OCTO.md template not found at ${templatePath}`);
|
|
52
|
-
}
|
|
53
|
-
const template = await file_system_1.FileSystem.readFile(templatePath);
|
|
54
|
-
// Inject into OCTO.md using managed blocks
|
|
55
|
-
await this.injectManagedBlock(this.TARGET_FILE, template);
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Inject or update managed block in OCTO.md
|
|
59
|
-
*/
|
|
60
|
-
static async injectManagedBlock(filePath, content) {
|
|
61
|
-
let fileContent = '';
|
|
62
|
-
// Read existing file or start with empty content
|
|
63
|
-
if (await file_system_1.FileSystem.exists(filePath)) {
|
|
64
|
-
fileContent = await file_system_1.FileSystem.readFile(filePath);
|
|
65
|
-
}
|
|
66
|
-
const blockRegex = new RegExp(`${this.escapeRegex(this.START_MARKER)}[\\s\\S]*?${this.escapeRegex(this.END_MARKER)}`, 'g');
|
|
67
|
-
const wrappedContent = `${this.START_MARKER}\n${content}\n${this.END_MARKER}`;
|
|
68
|
-
if (blockRegex.test(fileContent)) {
|
|
69
|
-
// Replace existing block
|
|
70
|
-
fileContent = fileContent.replace(blockRegex, wrappedContent);
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
// Append new block
|
|
74
|
-
if (fileContent && !fileContent.endsWith('\n\n')) {
|
|
75
|
-
fileContent += '\n\n';
|
|
76
|
-
}
|
|
77
|
-
fileContent += wrappedContent + '\n';
|
|
78
|
-
}
|
|
79
|
-
await file_system_1.FileSystem.writeFileAtomic(filePath, fileContent);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Escape special regex characters
|
|
83
|
-
*/
|
|
84
|
-
static escapeRegex(str) {
|
|
85
|
-
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Check if OCTO.md has Clavix block
|
|
89
|
-
*/
|
|
90
|
-
static async hasClavixBlock() {
|
|
91
|
-
if (!(await file_system_1.FileSystem.exists(this.TARGET_FILE))) {
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
94
|
-
const content = await file_system_1.FileSystem.readFile(this.TARGET_FILE);
|
|
95
|
-
return content.includes(this.START_MARKER);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
exports.OctoMdGenerator = OctoMdGenerator;
|
|
99
|
-
OctoMdGenerator.TARGET_FILE = 'OCTO.md';
|
|
100
|
-
OctoMdGenerator.START_MARKER = '<!-- CLAVIX:START -->';
|
|
101
|
-
OctoMdGenerator.END_MARKER = '<!-- CLAVIX:END -->';
|
|
102
|
-
//# sourceMappingURL=octo-md-generator.js.map
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter';
|
|
2
|
-
import { CommandTemplate } from '../../types/agent';
|
|
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
|
-
};
|
|
19
|
-
/**
|
|
20
|
-
* Detect if OpenCode is available in the project
|
|
21
|
-
*/
|
|
22
|
-
detectProject(): Promise<boolean>;
|
|
23
|
-
/**
|
|
24
|
-
* Get command path for OpenCode
|
|
25
|
-
*/
|
|
26
|
-
getCommandPath(): string;
|
|
27
|
-
getTargetFilename(name: string): string;
|
|
28
|
-
/**
|
|
29
|
-
* Format command with frontmatter for OpenCode
|
|
30
|
-
*/
|
|
31
|
-
protected formatCommand(template: CommandTemplate): string;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=opencode-adapter.d.ts.map
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OpenCodeAdapter = void 0;
|
|
4
|
-
const base_adapter_1 = require("./base-adapter");
|
|
5
|
-
const file_system_1 = require("../../utils/file-system");
|
|
6
|
-
/**
|
|
7
|
-
* OpenCode adapter
|
|
8
|
-
* Commands stored in .opencode/command/ with frontmatter
|
|
9
|
-
* Uses $ARGUMENTS, $1, $2 placeholders
|
|
10
|
-
*/
|
|
11
|
-
class OpenCodeAdapter extends base_adapter_1.BaseAdapter {
|
|
12
|
-
constructor() {
|
|
13
|
-
super(...arguments);
|
|
14
|
-
this.name = 'opencode';
|
|
15
|
-
this.displayName = 'OpenCode';
|
|
16
|
-
this.directory = '.opencode/command';
|
|
17
|
-
this.fileExtension = '.md';
|
|
18
|
-
this.features = {
|
|
19
|
-
supportsSubdirectories: false,
|
|
20
|
-
supportsFrontmatter: true,
|
|
21
|
-
frontmatterFields: ['description', 'agent', 'model'],
|
|
22
|
-
argumentPlaceholder: '$ARGUMENTS',
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Detect if OpenCode is available in the project
|
|
27
|
-
*/
|
|
28
|
-
async detectProject() {
|
|
29
|
-
return await file_system_1.FileSystem.exists('.opencode');
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Get command path for OpenCode
|
|
33
|
-
*/
|
|
34
|
-
getCommandPath() {
|
|
35
|
-
return this.directory;
|
|
36
|
-
}
|
|
37
|
-
getTargetFilename(name) {
|
|
38
|
-
return `clavix-${name}${this.fileExtension}`;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Format command with frontmatter for OpenCode
|
|
42
|
-
*/
|
|
43
|
-
formatCommand(template) {
|
|
44
|
-
// Add frontmatter
|
|
45
|
-
const frontmatter = `---
|
|
46
|
-
description: ${template.description}
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
`;
|
|
50
|
-
// Replace generic argument placeholder with $ARGUMENTS
|
|
51
|
-
const content = template.content.replace(/\{\{ARGS\}\}/g, '$ARGUMENTS');
|
|
52
|
-
return frontmatter + content;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
exports.OpenCodeAdapter = OpenCodeAdapter;
|
|
56
|
-
//# sourceMappingURL=opencode-adapter.js.map
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter';
|
|
2
|
-
import { CommandTemplate } from '../../types/agent';
|
|
3
|
-
/**
|
|
4
|
-
* Qwen Code CLI adapter
|
|
5
|
-
* Commands stored as TOML files under .qwen/commands/clavix by default
|
|
6
|
-
*/
|
|
7
|
-
export declare class QwenAdapter extends BaseAdapter {
|
|
8
|
-
private readonly options;
|
|
9
|
-
readonly name = "qwen";
|
|
10
|
-
readonly displayName = "Qwen Code";
|
|
11
|
-
readonly fileExtension = ".toml";
|
|
12
|
-
readonly features: {
|
|
13
|
-
supportsSubdirectories: boolean;
|
|
14
|
-
supportsFrontmatter: boolean;
|
|
15
|
-
argumentPlaceholder: string;
|
|
16
|
-
};
|
|
17
|
-
constructor(options?: {
|
|
18
|
-
useNamespace?: boolean;
|
|
19
|
-
});
|
|
20
|
-
get directory(): string;
|
|
21
|
-
detectProject(): Promise<boolean>;
|
|
22
|
-
getCommandPath(): string;
|
|
23
|
-
getTargetFilename(name: string): string;
|
|
24
|
-
protected formatCommand(template: CommandTemplate): string;
|
|
25
|
-
private getHomeDir;
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=qwen-adapter.d.ts.map
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.QwenAdapter = void 0;
|
|
37
|
-
const os = __importStar(require("os"));
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
const base_adapter_1 = require("./base-adapter");
|
|
40
|
-
const file_system_1 = require("../../utils/file-system");
|
|
41
|
-
/**
|
|
42
|
-
* Qwen Code CLI adapter
|
|
43
|
-
* Commands stored as TOML files under .qwen/commands/clavix by default
|
|
44
|
-
*/
|
|
45
|
-
class QwenAdapter extends base_adapter_1.BaseAdapter {
|
|
46
|
-
constructor(options = {}) {
|
|
47
|
-
super();
|
|
48
|
-
this.options = options;
|
|
49
|
-
this.name = 'qwen';
|
|
50
|
-
this.displayName = 'Qwen Code';
|
|
51
|
-
this.fileExtension = '.toml';
|
|
52
|
-
this.features = {
|
|
53
|
-
supportsSubdirectories: true,
|
|
54
|
-
supportsFrontmatter: false,
|
|
55
|
-
argumentPlaceholder: '{{args}}',
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
get directory() {
|
|
59
|
-
const useNamespace = this.options.useNamespace ?? true;
|
|
60
|
-
return useNamespace ? path.join('.qwen', 'commands', 'clavix') : path.join('.qwen', 'commands');
|
|
61
|
-
}
|
|
62
|
-
async detectProject() {
|
|
63
|
-
if (await file_system_1.FileSystem.exists('.qwen')) {
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
const homePath = path.join(this.getHomeDir(), '.qwen');
|
|
67
|
-
return await file_system_1.FileSystem.exists(homePath);
|
|
68
|
-
}
|
|
69
|
-
getCommandPath() {
|
|
70
|
-
return this.directory;
|
|
71
|
-
}
|
|
72
|
-
getTargetFilename(name) {
|
|
73
|
-
const commandPath = this.getCommandPath();
|
|
74
|
-
const namespaced = commandPath.endsWith(path.join('commands', 'clavix'));
|
|
75
|
-
const baseName = namespaced ? name : `clavix-${name}`;
|
|
76
|
-
return `${baseName}${this.fileExtension}`;
|
|
77
|
-
}
|
|
78
|
-
formatCommand(template) {
|
|
79
|
-
const description = template.description.trim().length > 0
|
|
80
|
-
? `description = ${JSON.stringify(template.description)}\n\n`
|
|
81
|
-
: '';
|
|
82
|
-
const content = template.content.replace(/\{\{ARGS\}\}/g, '{{args}}');
|
|
83
|
-
return `${description}prompt = """\n${content}\n"""\n`;
|
|
84
|
-
}
|
|
85
|
-
getHomeDir() {
|
|
86
|
-
return process.env.CLAVIX_HOME_OVERRIDE || os.homedir();
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
exports.QwenAdapter = QwenAdapter;
|
|
90
|
-
//# sourceMappingURL=qwen-adapter.js.map
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter';
|
|
2
|
-
import { CommandTemplate } from '../../types/agent';
|
|
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
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Detect if Roocode is available in the project
|
|
26
|
-
* Checks for .roo directory
|
|
27
|
-
*/
|
|
28
|
-
detectProject(): Promise<boolean>;
|
|
29
|
-
/**
|
|
30
|
-
* Get command path for Roocode
|
|
31
|
-
*/
|
|
32
|
-
getCommandPath(): string;
|
|
33
|
-
getTargetFilename(name: string): string;
|
|
34
|
-
/**
|
|
35
|
-
* Format command content for Roocode
|
|
36
|
-
* Adds frontmatter with description and argument-hint if not already present
|
|
37
|
-
*/
|
|
38
|
-
protected formatCommand(template: CommandTemplate): string;
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=roocode-adapter.d.ts.map
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RoocodeAdapter = void 0;
|
|
4
|
-
const base_adapter_1 = require("./base-adapter");
|
|
5
|
-
const file_system_1 = require("../../utils/file-system");
|
|
6
|
-
/**
|
|
7
|
-
* Roocode adapter
|
|
8
|
-
* Commands stored in .roo/commands/ (flat structure, no subdirectories)
|
|
9
|
-
* Slash command format: /[name] (no .md extension, auto-converts to lowercase/dashes)
|
|
10
|
-
*
|
|
11
|
-
* Features:
|
|
12
|
-
* - Supports optional frontmatter (description, argument-hint)
|
|
13
|
-
* - Command names automatically processed: lowercase, spaces→dashes, special chars removed
|
|
14
|
-
* - Project commands override global commands
|
|
15
|
-
*
|
|
16
|
-
* Reference: https://docs.roocode.com/features/slash-commands
|
|
17
|
-
*/
|
|
18
|
-
class RoocodeAdapter extends base_adapter_1.BaseAdapter {
|
|
19
|
-
constructor() {
|
|
20
|
-
super(...arguments);
|
|
21
|
-
this.name = 'roocode';
|
|
22
|
-
this.displayName = 'Roocode';
|
|
23
|
-
this.directory = '.roo/commands';
|
|
24
|
-
this.fileExtension = '.md';
|
|
25
|
-
this.features = {
|
|
26
|
-
supportsSubdirectories: false,
|
|
27
|
-
supportsFrontmatter: true,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Detect if Roocode is available in the project
|
|
32
|
-
* Checks for .roo directory
|
|
33
|
-
*/
|
|
34
|
-
async detectProject() {
|
|
35
|
-
return await file_system_1.FileSystem.exists('.roo');
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Get command path for Roocode
|
|
39
|
-
*/
|
|
40
|
-
getCommandPath() {
|
|
41
|
-
return this.directory;
|
|
42
|
-
}
|
|
43
|
-
getTargetFilename(name) {
|
|
44
|
-
return `clavix-${name}${this.fileExtension}`;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Format command content for Roocode
|
|
48
|
-
* Adds frontmatter with description and argument-hint if not already present
|
|
49
|
-
*/
|
|
50
|
-
formatCommand(template) {
|
|
51
|
-
const content = template.content;
|
|
52
|
-
// Check if frontmatter already exists
|
|
53
|
-
if (content.trim().startsWith('---')) {
|
|
54
|
-
// Frontmatter already exists, use as-is
|
|
55
|
-
return content;
|
|
56
|
-
}
|
|
57
|
-
// Add Roocode-specific frontmatter
|
|
58
|
-
const frontmatter = `---
|
|
59
|
-
description: ${template.description || `Clavix ${template.name} command`}
|
|
60
|
-
argument-hint: <prompt>
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
`;
|
|
64
|
-
return frontmatter + content;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
exports.RoocodeAdapter = RoocodeAdapter;
|
|
68
|
-
//# sourceMappingURL=roocode-adapter.js.map
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generator for Warp WARP.md file
|
|
3
|
-
* Provides workflow instructions optimized for Warp users
|
|
4
|
-
*/
|
|
5
|
-
export declare class WarpMdGenerator {
|
|
6
|
-
static readonly TARGET_FILE = "WARP.md";
|
|
7
|
-
static readonly START_MARKER = "<!-- CLAVIX:START -->";
|
|
8
|
-
static readonly END_MARKER = "<!-- CLAVIX:END -->";
|
|
9
|
-
/**
|
|
10
|
-
* Generate or update WARP.md with Clavix workflows
|
|
11
|
-
*/
|
|
12
|
-
static generate(): Promise<void>;
|
|
13
|
-
private static injectManagedBlock;
|
|
14
|
-
private static escapeRegex;
|
|
15
|
-
static hasClavixBlock(): Promise<boolean>;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=warp-md-generator.d.ts.map
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.WarpMdGenerator = void 0;
|
|
37
|
-
const file_system_1 = require("../../utils/file-system");
|
|
38
|
-
const path = __importStar(require("path"));
|
|
39
|
-
/**
|
|
40
|
-
* Generator for Warp WARP.md file
|
|
41
|
-
* Provides workflow instructions optimized for Warp users
|
|
42
|
-
*/
|
|
43
|
-
class WarpMdGenerator {
|
|
44
|
-
/**
|
|
45
|
-
* Generate or update WARP.md with Clavix workflows
|
|
46
|
-
*/
|
|
47
|
-
static async generate() {
|
|
48
|
-
const templatePath = path.join(__dirname, '../../templates/agents/warp.md');
|
|
49
|
-
if (!(await file_system_1.FileSystem.exists(templatePath))) {
|
|
50
|
-
throw new Error(`WARP.md template not found at ${templatePath}`);
|
|
51
|
-
}
|
|
52
|
-
const template = await file_system_1.FileSystem.readFile(templatePath);
|
|
53
|
-
await this.injectManagedBlock(this.TARGET_FILE, template);
|
|
54
|
-
}
|
|
55
|
-
static async injectManagedBlock(filePath, content) {
|
|
56
|
-
let fileContent = '';
|
|
57
|
-
if (await file_system_1.FileSystem.exists(filePath)) {
|
|
58
|
-
fileContent = await file_system_1.FileSystem.readFile(filePath);
|
|
59
|
-
}
|
|
60
|
-
const blockRegex = new RegExp(`${this.escapeRegex(this.START_MARKER)}[\\s\\S]*?${this.escapeRegex(this.END_MARKER)}`, 'g');
|
|
61
|
-
const wrappedContent = `${this.START_MARKER}\n${content}\n${this.END_MARKER}`;
|
|
62
|
-
if (blockRegex.test(fileContent)) {
|
|
63
|
-
fileContent = fileContent.replace(blockRegex, wrappedContent);
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
if (fileContent && !fileContent.endsWith('\n\n')) {
|
|
67
|
-
fileContent += '\n\n';
|
|
68
|
-
}
|
|
69
|
-
fileContent += wrappedContent + '\n';
|
|
70
|
-
}
|
|
71
|
-
await file_system_1.FileSystem.writeFileAtomic(filePath, fileContent);
|
|
72
|
-
}
|
|
73
|
-
static escapeRegex(str) {
|
|
74
|
-
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
75
|
-
}
|
|
76
|
-
static async hasClavixBlock() {
|
|
77
|
-
if (!(await file_system_1.FileSystem.exists(this.TARGET_FILE))) {
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
const content = await file_system_1.FileSystem.readFile(this.TARGET_FILE);
|
|
81
|
-
return content.includes(this.START_MARKER);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
exports.WarpMdGenerator = WarpMdGenerator;
|
|
85
|
-
WarpMdGenerator.TARGET_FILE = 'WARP.md';
|
|
86
|
-
WarpMdGenerator.START_MARKER = '<!-- CLAVIX:START -->';
|
|
87
|
-
WarpMdGenerator.END_MARKER = '<!-- CLAVIX:END -->';
|
|
88
|
-
//# sourceMappingURL=warp-md-generator.js.map
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter';
|
|
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
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Detect if Windsurf is available in the project
|
|
25
|
-
* Checks for .windsurf directory
|
|
26
|
-
*/
|
|
27
|
-
detectProject(): Promise<boolean>;
|
|
28
|
-
/**
|
|
29
|
-
* Get command path for Windsurf
|
|
30
|
-
*/
|
|
31
|
-
getCommandPath(): string;
|
|
32
|
-
getTargetFilename(name: string): string;
|
|
33
|
-
}
|
|
34
|
-
//# sourceMappingURL=windsurf-adapter.d.ts.map
|