clavix 2.7.0 → 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 +22 -8
- 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 +12 -7
- 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,70 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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");
|
|
1
|
+
import * as os from 'os';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { BaseAdapter } from './base-adapter.js';
|
|
4
|
+
import { FileSystem } from '../../utils/file-system.js';
|
|
41
5
|
/**
|
|
42
6
|
* Qwen Code CLI adapter
|
|
43
7
|
* Commands stored as TOML files under .qwen/commands/clavix by default
|
|
44
8
|
*/
|
|
45
|
-
class QwenAdapter extends
|
|
9
|
+
export class QwenAdapter extends BaseAdapter {
|
|
10
|
+
options;
|
|
11
|
+
name = 'qwen';
|
|
12
|
+
displayName = 'Qwen Code';
|
|
13
|
+
fileExtension = '.toml';
|
|
14
|
+
features = {
|
|
15
|
+
supportsSubdirectories: true,
|
|
16
|
+
supportsFrontmatter: false,
|
|
17
|
+
argumentPlaceholder: '{{args}}',
|
|
18
|
+
};
|
|
46
19
|
constructor(options = {}) {
|
|
47
20
|
super();
|
|
48
21
|
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
22
|
}
|
|
58
23
|
get directory() {
|
|
59
24
|
const useNamespace = this.options.useNamespace ?? true;
|
|
60
25
|
return useNamespace ? path.join('.qwen', 'commands', 'clavix') : path.join('.qwen', 'commands');
|
|
61
26
|
}
|
|
62
27
|
async detectProject() {
|
|
63
|
-
if (await
|
|
28
|
+
if (await FileSystem.exists('.qwen')) {
|
|
64
29
|
return true;
|
|
65
30
|
}
|
|
66
31
|
const homePath = path.join(this.getHomeDir(), '.qwen');
|
|
67
|
-
return await
|
|
32
|
+
return await FileSystem.exists(homePath);
|
|
68
33
|
}
|
|
69
34
|
getCommandPath() {
|
|
70
35
|
return this.directory;
|
|
@@ -86,5 +51,4 @@ class QwenAdapter extends base_adapter_1.BaseAdapter {
|
|
|
86
51
|
return process.env.CLAVIX_HOME_OVERRIDE || os.homedir();
|
|
87
52
|
}
|
|
88
53
|
}
|
|
89
|
-
exports.QwenAdapter = QwenAdapter;
|
|
90
54
|
//# sourceMappingURL=qwen-adapter.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BaseAdapter } from './base-adapter';
|
|
2
|
-
import { CommandTemplate } from '../../types/agent';
|
|
1
|
+
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
+
import { CommandTemplate } from '../../types/agent.js';
|
|
3
3
|
/**
|
|
4
4
|
* Roocode adapter
|
|
5
5
|
* Commands stored in .roo/commands/ (flat structure, no subdirectories)
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.RoocodeAdapter = void 0;
|
|
4
|
-
const base_adapter_1 = require("./base-adapter");
|
|
5
|
-
const file_system_1 = require("../../utils/file-system");
|
|
1
|
+
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
+
import { FileSystem } from '../../utils/file-system.js';
|
|
6
3
|
/**
|
|
7
4
|
* Roocode adapter
|
|
8
5
|
* Commands stored in .roo/commands/ (flat structure, no subdirectories)
|
|
@@ -15,24 +12,21 @@ const file_system_1 = require("../../utils/file-system");
|
|
|
15
12
|
*
|
|
16
13
|
* Reference: https://docs.roocode.com/features/slash-commands
|
|
17
14
|
*/
|
|
18
|
-
class RoocodeAdapter extends
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
supportsFrontmatter: true,
|
|
28
|
-
};
|
|
29
|
-
}
|
|
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
|
+
};
|
|
30
24
|
/**
|
|
31
25
|
* Detect if Roocode is available in the project
|
|
32
26
|
* Checks for .roo directory
|
|
33
27
|
*/
|
|
34
28
|
async detectProject() {
|
|
35
|
-
return await
|
|
29
|
+
return await FileSystem.exists('.roo');
|
|
36
30
|
}
|
|
37
31
|
/**
|
|
38
32
|
* Get command path for Roocode
|
|
@@ -64,5 +58,4 @@ argument-hint: <prompt>
|
|
|
64
58
|
return frontmatter + content;
|
|
65
59
|
}
|
|
66
60
|
}
|
|
67
|
-
exports.RoocodeAdapter = RoocodeAdapter;
|
|
68
61
|
//# sourceMappingURL=roocode-adapter.js.map
|
|
@@ -1,61 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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"));
|
|
1
|
+
import { FileSystem } from '../../utils/file-system.js';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import { dirname } from 'path';
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = dirname(__filename);
|
|
39
7
|
/**
|
|
40
8
|
* Generator for Warp WARP.md file
|
|
41
9
|
* Provides workflow instructions optimized for Warp users
|
|
42
10
|
*/
|
|
43
|
-
class WarpMdGenerator {
|
|
11
|
+
export class WarpMdGenerator {
|
|
12
|
+
static TARGET_FILE = 'WARP.md';
|
|
13
|
+
static START_MARKER = '<!-- CLAVIX:START -->';
|
|
14
|
+
static END_MARKER = '<!-- CLAVIX:END -->';
|
|
44
15
|
/**
|
|
45
16
|
* Generate or update WARP.md with Clavix workflows
|
|
46
17
|
*/
|
|
47
18
|
static async generate() {
|
|
48
19
|
const templatePath = path.join(__dirname, '../../templates/agents/warp.md');
|
|
49
|
-
if (!(await
|
|
20
|
+
if (!(await FileSystem.exists(templatePath))) {
|
|
50
21
|
throw new Error(`WARP.md template not found at ${templatePath}`);
|
|
51
22
|
}
|
|
52
|
-
const template = await
|
|
23
|
+
const template = await FileSystem.readFile(templatePath);
|
|
53
24
|
await this.injectManagedBlock(this.TARGET_FILE, template);
|
|
54
25
|
}
|
|
55
26
|
static async injectManagedBlock(filePath, content) {
|
|
56
27
|
let fileContent = '';
|
|
57
|
-
if (await
|
|
58
|
-
fileContent = await
|
|
28
|
+
if (await FileSystem.exists(filePath)) {
|
|
29
|
+
fileContent = await FileSystem.readFile(filePath);
|
|
59
30
|
}
|
|
60
31
|
const blockRegex = new RegExp(`${this.escapeRegex(this.START_MARKER)}[\\s\\S]*?${this.escapeRegex(this.END_MARKER)}`, 'g');
|
|
61
32
|
const wrappedContent = `${this.START_MARKER}\n${content}\n${this.END_MARKER}`;
|
|
@@ -68,21 +39,17 @@ class WarpMdGenerator {
|
|
|
68
39
|
}
|
|
69
40
|
fileContent += wrappedContent + '\n';
|
|
70
41
|
}
|
|
71
|
-
await
|
|
42
|
+
await FileSystem.writeFileAtomic(filePath, fileContent);
|
|
72
43
|
}
|
|
73
44
|
static escapeRegex(str) {
|
|
74
45
|
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
75
46
|
}
|
|
76
47
|
static async hasClavixBlock() {
|
|
77
|
-
if (!(await
|
|
48
|
+
if (!(await FileSystem.exists(this.TARGET_FILE))) {
|
|
78
49
|
return false;
|
|
79
50
|
}
|
|
80
|
-
const content = await
|
|
51
|
+
const content = await FileSystem.readFile(this.TARGET_FILE);
|
|
81
52
|
return content.includes(this.START_MARKER);
|
|
82
53
|
}
|
|
83
54
|
}
|
|
84
|
-
exports.WarpMdGenerator = WarpMdGenerator;
|
|
85
|
-
WarpMdGenerator.TARGET_FILE = 'WARP.md';
|
|
86
|
-
WarpMdGenerator.START_MARKER = '<!-- CLAVIX:START -->';
|
|
87
|
-
WarpMdGenerator.END_MARKER = '<!-- CLAVIX:END -->';
|
|
88
55
|
//# sourceMappingURL=warp-md-generator.js.map
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.WindsurfAdapter = void 0;
|
|
4
|
-
const base_adapter_1 = require("./base-adapter");
|
|
5
|
-
const file_system_1 = require("../../utils/file-system");
|
|
1
|
+
import { BaseAdapter } from './base-adapter.js';
|
|
2
|
+
import { FileSystem } from '../../utils/file-system.js';
|
|
6
3
|
/**
|
|
7
4
|
* Windsurf adapter
|
|
8
5
|
* Workflows stored in .windsurf/workflows/ (supports subdirectories)
|
|
@@ -15,25 +12,21 @@ const file_system_1 = require("../../utils/file-system");
|
|
|
15
12
|
*
|
|
16
13
|
* Reference: https://docs.windsurf.com/windsurf/cascade/workflows
|
|
17
14
|
*/
|
|
18
|
-
class WindsurfAdapter extends
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
supportsFrontmatter: false,
|
|
28
|
-
};
|
|
29
|
-
// Uses default formatCommand and generateCommands from BaseAdapter
|
|
30
|
-
}
|
|
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
|
+
};
|
|
31
24
|
/**
|
|
32
25
|
* Detect if Windsurf is available in the project
|
|
33
26
|
* Checks for .windsurf directory
|
|
34
27
|
*/
|
|
35
28
|
async detectProject() {
|
|
36
|
-
return await
|
|
29
|
+
return await FileSystem.exists('.windsurf');
|
|
37
30
|
}
|
|
38
31
|
/**
|
|
39
32
|
* Get command path for Windsurf
|
|
@@ -45,5 +38,4 @@ class WindsurfAdapter extends base_adapter_1.BaseAdapter {
|
|
|
45
38
|
return `clavix-${name}${this.fileExtension}`;
|
|
46
39
|
}
|
|
47
40
|
}
|
|
48
|
-
exports.WindsurfAdapter = WindsurfAdapter;
|
|
49
41
|
//# sourceMappingURL=windsurf-adapter.js.map
|
|
@@ -1,44 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const qwen_adapter_1 = require("./adapters/qwen-adapter");
|
|
18
|
-
const codex_adapter_1 = require("./adapters/codex-adapter");
|
|
19
|
-
const augment_adapter_1 = require("./adapters/augment-adapter");
|
|
1
|
+
import { ClaudeCodeAdapter } from './adapters/claude-code-adapter.js';
|
|
2
|
+
import { CursorAdapter } from './adapters/cursor-adapter.js';
|
|
3
|
+
import { DroidAdapter } from './adapters/droid-adapter.js';
|
|
4
|
+
import { OpenCodeAdapter } from './adapters/opencode-adapter.js';
|
|
5
|
+
import { AmpAdapter } from './adapters/amp-adapter.js';
|
|
6
|
+
import { CrushAdapter } from './adapters/crush-adapter.js';
|
|
7
|
+
import { WindsurfAdapter } from './adapters/windsurf-adapter.js';
|
|
8
|
+
import { KilocodeAdapter } from './adapters/kilocode-adapter.js';
|
|
9
|
+
import { ClineAdapter } from './adapters/cline-adapter.js';
|
|
10
|
+
import { RoocodeAdapter } from './adapters/roocode-adapter.js';
|
|
11
|
+
import { IntegrationError } from '../types/errors.js';
|
|
12
|
+
import { CodeBuddyAdapter } from './adapters/codebuddy-adapter.js';
|
|
13
|
+
import { GeminiAdapter } from './adapters/gemini-adapter.js';
|
|
14
|
+
import { QwenAdapter } from './adapters/qwen-adapter.js';
|
|
15
|
+
import { CodexAdapter } from './adapters/codex-adapter.js';
|
|
16
|
+
import { AugmentAdapter } from './adapters/augment-adapter.js';
|
|
20
17
|
/**
|
|
21
18
|
* Agent Manager - handles agent detection and registration
|
|
22
19
|
*/
|
|
23
|
-
class AgentManager {
|
|
20
|
+
export class AgentManager {
|
|
21
|
+
adapters = new Map();
|
|
24
22
|
constructor() {
|
|
25
|
-
this.adapters = new Map();
|
|
26
23
|
// Register all built-in adapters
|
|
27
|
-
this.registerAdapter(new
|
|
28
|
-
this.registerAdapter(new
|
|
29
|
-
this.registerAdapter(new
|
|
30
|
-
this.registerAdapter(new
|
|
31
|
-
this.registerAdapter(new
|
|
32
|
-
this.registerAdapter(new
|
|
33
|
-
this.registerAdapter(new
|
|
34
|
-
this.registerAdapter(new
|
|
35
|
-
this.registerAdapter(new
|
|
36
|
-
this.registerAdapter(new
|
|
37
|
-
this.registerAdapter(new
|
|
38
|
-
this.registerAdapter(new
|
|
39
|
-
this.registerAdapter(new
|
|
40
|
-
this.registerAdapter(new
|
|
41
|
-
this.registerAdapter(new
|
|
24
|
+
this.registerAdapter(new ClaudeCodeAdapter());
|
|
25
|
+
this.registerAdapter(new CursorAdapter());
|
|
26
|
+
this.registerAdapter(new DroidAdapter());
|
|
27
|
+
this.registerAdapter(new OpenCodeAdapter());
|
|
28
|
+
this.registerAdapter(new AmpAdapter());
|
|
29
|
+
this.registerAdapter(new CrushAdapter());
|
|
30
|
+
this.registerAdapter(new WindsurfAdapter());
|
|
31
|
+
this.registerAdapter(new KilocodeAdapter());
|
|
32
|
+
this.registerAdapter(new ClineAdapter());
|
|
33
|
+
this.registerAdapter(new RoocodeAdapter());
|
|
34
|
+
this.registerAdapter(new AugmentAdapter());
|
|
35
|
+
this.registerAdapter(new CodeBuddyAdapter());
|
|
36
|
+
this.registerAdapter(new GeminiAdapter());
|
|
37
|
+
this.registerAdapter(new QwenAdapter());
|
|
38
|
+
this.registerAdapter(new CodexAdapter());
|
|
42
39
|
}
|
|
43
40
|
/**
|
|
44
41
|
* Register a new agent adapter
|
|
@@ -76,7 +73,7 @@ class AgentManager {
|
|
|
76
73
|
requireAdapter(name) {
|
|
77
74
|
const adapter = this.getAdapter(name);
|
|
78
75
|
if (!adapter) {
|
|
79
|
-
throw new
|
|
76
|
+
throw new IntegrationError(`Agent "${name}" is not registered`, `Available agents: ${Array.from(this.adapters.keys()).join(', ')}`);
|
|
80
77
|
}
|
|
81
78
|
return adapter;
|
|
82
79
|
}
|
|
@@ -122,5 +119,4 @@ class AgentManager {
|
|
|
122
119
|
}));
|
|
123
120
|
}
|
|
124
121
|
}
|
|
125
|
-
exports.AgentManager = AgentManager;
|
|
126
122
|
//# sourceMappingURL=agent-manager.js.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* ArchiveManager - Manages archival of completed PRD projects
|
|
4
3
|
*
|
|
@@ -8,54 +7,20 @@
|
|
|
8
7
|
* - Moving completed projects to archive
|
|
9
8
|
* - Managing archive directory structure
|
|
10
9
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
-
}
|
|
17
|
-
Object.defineProperty(o, k2, desc);
|
|
18
|
-
}) : (function(o, m, k, k2) {
|
|
19
|
-
if (k2 === undefined) k2 = k;
|
|
20
|
-
o[k2] = m[k];
|
|
21
|
-
}));
|
|
22
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
-
}) : function(o, v) {
|
|
25
|
-
o["default"] = v;
|
|
26
|
-
});
|
|
27
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
-
var ownKeys = function(o) {
|
|
29
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
-
var ar = [];
|
|
31
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
-
return ar;
|
|
33
|
-
};
|
|
34
|
-
return ownKeys(o);
|
|
35
|
-
};
|
|
36
|
-
return function (mod) {
|
|
37
|
-
if (mod && mod.__esModule) return mod;
|
|
38
|
-
var result = {};
|
|
39
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
-
__setModuleDefault(result, mod);
|
|
41
|
-
return result;
|
|
42
|
-
};
|
|
43
|
-
})();
|
|
44
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
-
exports.ArchiveManager = void 0;
|
|
46
|
-
const fs = __importStar(require("fs-extra"));
|
|
47
|
-
const path = __importStar(require("path"));
|
|
48
|
-
const task_manager_1 = require("./task-manager");
|
|
10
|
+
import fs from 'fs-extra';
|
|
11
|
+
import * as path from 'path';
|
|
12
|
+
import { TaskManager } from './task-manager.js';
|
|
49
13
|
/**
|
|
50
14
|
* ArchiveManager class
|
|
51
15
|
*
|
|
52
16
|
* Manages archival of completed PRD projects
|
|
53
17
|
*/
|
|
54
|
-
class ArchiveManager {
|
|
18
|
+
export class ArchiveManager {
|
|
19
|
+
taskManager;
|
|
20
|
+
outputsDir = '.clavix/outputs';
|
|
21
|
+
archiveDir = '.clavix/outputs/archive';
|
|
55
22
|
constructor() {
|
|
56
|
-
this.
|
|
57
|
-
this.archiveDir = '.clavix/outputs/archive';
|
|
58
|
-
this.taskManager = new task_manager_1.TaskManager();
|
|
23
|
+
this.taskManager = new TaskManager();
|
|
59
24
|
}
|
|
60
25
|
/**
|
|
61
26
|
* List all PRD projects in outputs directory
|
|
@@ -241,7 +206,7 @@ class ArchiveManager {
|
|
|
241
206
|
};
|
|
242
207
|
}
|
|
243
208
|
catch (error) {
|
|
244
|
-
const { getErrorMessage } = await
|
|
209
|
+
const { getErrorMessage } = await import('../utils/error-utils.js');
|
|
245
210
|
return {
|
|
246
211
|
success: false,
|
|
247
212
|
message: `Failed to archive project: ${getErrorMessage(error)}`,
|
|
@@ -279,7 +244,7 @@ class ArchiveManager {
|
|
|
279
244
|
};
|
|
280
245
|
}
|
|
281
246
|
catch (error) {
|
|
282
|
-
const { getErrorMessage } = await
|
|
247
|
+
const { getErrorMessage } = await import('../utils/error-utils.js');
|
|
283
248
|
return {
|
|
284
249
|
success: false,
|
|
285
250
|
message: `Failed to restore project: ${getErrorMessage(error)}`,
|
|
@@ -334,5 +299,4 @@ class ArchiveManager {
|
|
|
334
299
|
}
|
|
335
300
|
}
|
|
336
301
|
}
|
|
337
|
-
exports.ArchiveManager = ArchiveManager;
|
|
338
302
|
//# sourceMappingURL=archive-manager.js.map
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* - Managing resume checkpoints
|
|
8
8
|
* - Storing git commit strategy preferences
|
|
9
9
|
*/
|
|
10
|
-
import { Task } from './task-manager';
|
|
11
|
-
import { CommitStrategy } from './git-manager';
|
|
10
|
+
import { Task } from './task-manager.js';
|
|
11
|
+
import { CommitStrategy } from './git-manager.js';
|
|
12
12
|
/**
|
|
13
13
|
* Configuration for task implementation
|
|
14
14
|
*/
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* ConfigManager - Manages .clavix-implement-config.json
|
|
4
3
|
*
|
|
@@ -8,49 +7,14 @@
|
|
|
8
7
|
* - Managing resume checkpoints
|
|
9
8
|
* - Storing git commit strategy preferences
|
|
10
9
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
-
}
|
|
17
|
-
Object.defineProperty(o, k2, desc);
|
|
18
|
-
}) : (function(o, m, k, k2) {
|
|
19
|
-
if (k2 === undefined) k2 = k;
|
|
20
|
-
o[k2] = m[k];
|
|
21
|
-
}));
|
|
22
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
-
}) : function(o, v) {
|
|
25
|
-
o["default"] = v;
|
|
26
|
-
});
|
|
27
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
-
var ownKeys = function(o) {
|
|
29
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
-
var ar = [];
|
|
31
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
-
return ar;
|
|
33
|
-
};
|
|
34
|
-
return ownKeys(o);
|
|
35
|
-
};
|
|
36
|
-
return function (mod) {
|
|
37
|
-
if (mod && mod.__esModule) return mod;
|
|
38
|
-
var result = {};
|
|
39
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
-
__setModuleDefault(result, mod);
|
|
41
|
-
return result;
|
|
42
|
-
};
|
|
43
|
-
})();
|
|
44
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
-
exports.ConfigManager = void 0;
|
|
46
|
-
const fs = __importStar(require("fs-extra"));
|
|
47
|
-
const path = __importStar(require("path"));
|
|
10
|
+
import fs from 'fs-extra';
|
|
11
|
+
import * as path from 'path';
|
|
48
12
|
/**
|
|
49
13
|
* ConfigManager class
|
|
50
14
|
*
|
|
51
15
|
* Manages implementation configuration and task tracking state
|
|
52
16
|
*/
|
|
53
|
-
class ConfigManager {
|
|
17
|
+
export class ConfigManager {
|
|
54
18
|
/**
|
|
55
19
|
* Read implementation config from file
|
|
56
20
|
* @param configPath - Path to config file (.clavix-implement-config.json)
|
|
@@ -263,5 +227,4 @@ class ConfigManager {
|
|
|
263
227
|
return path.join(prdPath, '.clavix-implement-config.json');
|
|
264
228
|
}
|
|
265
229
|
}
|
|
266
|
-
exports.ConfigManager = ConfigManager;
|
|
267
230
|
//# sourceMappingURL=config-manager.js.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* ConversationAnalyzer - Analyzes conversation sessions and extracts structured requirements
|
|
4
3
|
*
|
|
@@ -9,15 +8,13 @@
|
|
|
9
8
|
* - Success criteria identification
|
|
10
9
|
* - Mini-PRD and optimized prompt generation
|
|
11
10
|
*/
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.ConversationAnalyzer = void 0;
|
|
14
11
|
/**
|
|
15
12
|
* ConversationAnalyzer class
|
|
16
13
|
*
|
|
17
14
|
* Analyzes conversational sessions to extract structured requirements
|
|
18
15
|
* suitable for PRD generation or AI prompting
|
|
19
16
|
*/
|
|
20
|
-
class ConversationAnalyzer {
|
|
17
|
+
export class ConversationAnalyzer {
|
|
21
18
|
/**
|
|
22
19
|
* Analyze a conversation session
|
|
23
20
|
*
|
|
@@ -387,5 +384,4 @@ class ConversationAnalyzer {
|
|
|
387
384
|
return false;
|
|
388
385
|
}
|
|
389
386
|
}
|
|
390
|
-
exports.ConversationAnalyzer = ConversationAnalyzer;
|
|
391
387
|
//# sourceMappingURL=conversation-analyzer.js.map
|