conductor-install 0.1.0 → 0.1.1
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 +32 -6
- package/dist/conductor/conductor/CHANGELOG.md +39 -0
- package/dist/conductor/conductor/CONTRIBUTING.md +33 -0
- package/dist/conductor/conductor/GEMINI.md +41 -0
- package/dist/conductor/conductor/LICENSE +202 -0
- package/dist/conductor/conductor/README.md +128 -0
- package/dist/conductor/conductor/commands/conductor/implement.toml +179 -0
- package/dist/conductor/conductor/commands/conductor/newTrack.toml +154 -0
- package/dist/conductor/conductor/commands/conductor/revert.toml +130 -0
- package/dist/conductor/conductor/commands/conductor/review.toml +158 -0
- package/dist/conductor/conductor/commands/conductor/setup.toml +456 -0
- package/dist/conductor/conductor/commands/conductor/status.toml +57 -0
- package/dist/conductor/conductor/gemini-extension.json +5 -0
- package/dist/conductor/conductor/release-please-config.json +11 -0
- package/dist/conductor/conductor/templates/code_styleguides/cpp.md +113 -0
- package/dist/conductor/conductor/templates/code_styleguides/csharp.md +115 -0
- package/dist/conductor/conductor/templates/code_styleguides/dart.md +238 -0
- package/dist/conductor/conductor/templates/code_styleguides/general.md +23 -0
- package/dist/conductor/conductor/templates/code_styleguides/go.md +48 -0
- package/dist/conductor/conductor/templates/code_styleguides/html-css.md +49 -0
- package/dist/conductor/conductor/templates/code_styleguides/javascript.md +51 -0
- package/dist/conductor/conductor/templates/code_styleguides/python.md +37 -0
- package/dist/conductor/conductor/templates/code_styleguides/typescript.md +43 -0
- package/dist/conductor/conductor/templates/workflow.md +333 -0
- package/dist/conductor-install.cjs +242 -246
- package/dist/conductor-install.js +241 -245
- package/dist/index.cjs +242 -246
- package/dist/index.js +241 -245
- package/package.json +2 -2
|
@@ -6,75 +6,48 @@ import { hideBin } from "yargs/helpers";
|
|
|
6
6
|
|
|
7
7
|
// src/cli/prompt.ts
|
|
8
8
|
import select from "@inquirer/select";
|
|
9
|
-
async function promptForInstallScope(agent) {
|
|
10
|
-
const isCodex = agent === "codex";
|
|
11
|
-
const isCline = agent === "cline";
|
|
12
|
-
const choices = isCodex ? [{ name: "Global (User Home Directory)", value: "global" }] : [{ name: "Project (Current Directory)", value: "project" }];
|
|
13
|
-
const answer = await select({
|
|
14
|
-
message: "Select installation method:",
|
|
15
|
-
choices,
|
|
16
|
-
default: isCodex ? "global" : "project"
|
|
17
|
-
});
|
|
18
|
-
return answer;
|
|
19
|
-
}
|
|
20
|
-
async function promptForAgent() {
|
|
21
|
-
const answer = await select({
|
|
22
|
-
message: "Select your coding agent:",
|
|
23
|
-
choices: [
|
|
24
|
-
{
|
|
25
|
-
name: "OpenCode",
|
|
26
|
-
value: "opencode",
|
|
27
|
-
description: "The open source AI coding agent"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
name: "Claude Code",
|
|
31
|
-
value: "claude-code",
|
|
32
|
-
description: "Anthropic's coding assistant"
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
name: "Antigravity",
|
|
36
|
-
value: "antigravity",
|
|
37
|
-
description: "Google's agentic coding assistant"
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
name: "Cursor",
|
|
41
|
-
value: "cursor",
|
|
42
|
-
description: "Cursor IDE's AI agent"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
name: "VS Code Copilot",
|
|
46
|
-
value: "vscode-copilot",
|
|
47
|
-
description: "VS Code Copilot's Prompt Files"
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: "Codex",
|
|
51
|
-
value: "codex",
|
|
52
|
-
description: "OpenAI Codex Agent"
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
name: "Windsurf",
|
|
56
|
-
value: "windsurf",
|
|
57
|
-
description: "Windsurf Cascade AI Agent"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
name: "Cline",
|
|
61
|
-
value: "cline",
|
|
62
|
-
description: "Cline AI coding assistant"
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
name: "Gemini CLI",
|
|
66
|
-
value: "gemini",
|
|
67
|
-
description: "Google Gemini CLI agent"
|
|
68
|
-
}
|
|
69
|
-
],
|
|
70
|
-
default: "opencode"
|
|
71
|
-
});
|
|
72
|
-
return answer;
|
|
73
|
-
}
|
|
74
9
|
|
|
75
|
-
// src/generators/
|
|
76
|
-
|
|
77
|
-
|
|
10
|
+
// src/generators/opencode/config.ts
|
|
11
|
+
var opencodeConfig = {
|
|
12
|
+
agentType: "opencode",
|
|
13
|
+
agentDir: ".opencode",
|
|
14
|
+
commandsDir: "commands",
|
|
15
|
+
displayName: "OpenCode",
|
|
16
|
+
protocolFilename: "AGENTS.md",
|
|
17
|
+
description: "The open source AI coding agent"
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// src/generators/claude-code/config.ts
|
|
21
|
+
var claudeCodeConfig = {
|
|
22
|
+
agentType: "claude-code",
|
|
23
|
+
agentDir: ".claude",
|
|
24
|
+
commandsDir: "commands",
|
|
25
|
+
displayName: "Claude Code",
|
|
26
|
+
protocolFilename: "CLAUDE.md",
|
|
27
|
+
description: "Anthropic's coding assistant"
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// src/generators/antigravity/config.ts
|
|
31
|
+
var antigravityConfig = {
|
|
32
|
+
agentType: "antigravity",
|
|
33
|
+
agentDir: ".agent",
|
|
34
|
+
commandsDir: "workflows",
|
|
35
|
+
displayName: "Antigravity",
|
|
36
|
+
protocolFilename: "GEMINI.md",
|
|
37
|
+
description: "Google's agentic coding assistant"
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// src/generators/cursor/config.ts
|
|
41
|
+
var cursorConfig = {
|
|
42
|
+
agentType: "cursor",
|
|
43
|
+
agentDir: ".cursor",
|
|
44
|
+
commandsDir: "commands",
|
|
45
|
+
displayName: "Cursor",
|
|
46
|
+
protocolFilename: "AGENTS.md",
|
|
47
|
+
description: "Cursor IDE's AI agent"
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// src/generators/vscode-copilot/strategy.ts
|
|
78
51
|
import { parse } from "smol-toml";
|
|
79
52
|
|
|
80
53
|
// src/utils/template.ts
|
|
@@ -165,12 +138,196 @@ async function loadTemplate(templatePath, repo, branch) {
|
|
|
165
138
|
return readFile(fullPath, "utf-8");
|
|
166
139
|
}
|
|
167
140
|
|
|
168
|
-
// src/generators/
|
|
141
|
+
// src/generators/vscode-copilot/strategy.ts
|
|
142
|
+
var VsCodeCopilotContentStrategy = class {
|
|
143
|
+
process(templateContent, options) {
|
|
144
|
+
const { installPath, agentType, fixedAgent } = options;
|
|
145
|
+
const parsed = parse(templateContent);
|
|
146
|
+
if (!parsed.prompt) {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
let prompt = parsed.prompt;
|
|
150
|
+
prompt = prompt.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g, installPath);
|
|
151
|
+
const finalContent = substituteVariables(prompt, { agent_type: agentType });
|
|
152
|
+
return `---
|
|
153
|
+
description: ${parsed.description || ""}
|
|
154
|
+
agent: ${fixedAgent}
|
|
155
|
+
---
|
|
156
|
+
${finalContent}`;
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
var vscodeCopilotContentStrategy = new VsCodeCopilotContentStrategy();
|
|
160
|
+
|
|
161
|
+
// src/generators/vscode-copilot/config.ts
|
|
162
|
+
var vscodeCopilotConfig = {
|
|
163
|
+
agentType: "vscode-copilot",
|
|
164
|
+
agentDir: ".github",
|
|
165
|
+
commandsDir: "prompts",
|
|
166
|
+
displayName: "VS Code Copilot",
|
|
167
|
+
protocolFilename: "AGENTS.md",
|
|
168
|
+
description: "VS Code Copilot's Prompt Files",
|
|
169
|
+
extension: ".prompt.md",
|
|
170
|
+
fixedAgent: "agent",
|
|
171
|
+
strategy: {
|
|
172
|
+
content: vscodeCopilotContentStrategy
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
// src/generators/codex/config.ts
|
|
177
|
+
var codexConfig = {
|
|
178
|
+
agentType: "codex",
|
|
179
|
+
agentDir: ".codex",
|
|
180
|
+
commandsDir: "prompts",
|
|
181
|
+
displayName: "Codex",
|
|
182
|
+
protocolFilename: "AGENTS.md",
|
|
183
|
+
description: "OpenAI Codex Agent",
|
|
184
|
+
extension: ".md"
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
// src/generators/windsurf/config.ts
|
|
188
|
+
var windsurfConfig = {
|
|
189
|
+
agentType: "windsurf",
|
|
190
|
+
agentDir: ".windsurf",
|
|
191
|
+
commandsDir: "workflows",
|
|
192
|
+
displayName: "Windsurf",
|
|
193
|
+
protocolFilename: "AGENTS.md",
|
|
194
|
+
description: "Windsurf Cascade AI Agent"
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
// src/generators/cline/strategy.ts
|
|
198
|
+
import { parse as parse2 } from "smol-toml";
|
|
199
|
+
var ClineContentStrategy = class {
|
|
200
|
+
process(templateContent, options) {
|
|
201
|
+
const { installPath, agentType, commandName } = options;
|
|
202
|
+
const parsed = parse2(templateContent);
|
|
203
|
+
if (!parsed.prompt) {
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
let prompt = parsed.prompt;
|
|
207
|
+
prompt = prompt.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g, installPath);
|
|
208
|
+
const finalContent = substituteVariables(prompt, { agent_type: agentType });
|
|
209
|
+
const title = commandName ? commandName.charAt(0).toUpperCase() + commandName.slice(1) : "Command";
|
|
210
|
+
return `# Conductor ${title}${parsed.description ? "\n\n" + parsed.description + "\n\n" : "\n\n"}${finalContent}`;
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
var clineContentStrategy = new ClineContentStrategy();
|
|
214
|
+
|
|
215
|
+
// src/generators/cline/config.ts
|
|
216
|
+
var clineConfig = {
|
|
217
|
+
agentType: "cline",
|
|
218
|
+
agentDir: ".clinerules",
|
|
219
|
+
commandsDir: "workflows",
|
|
220
|
+
displayName: "Cline",
|
|
221
|
+
protocolFilename: "AGENTS.md",
|
|
222
|
+
description: "Cline AI coding assistant",
|
|
223
|
+
strategy: {
|
|
224
|
+
content: clineContentStrategy
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
|
|
228
|
+
// src/generators/gemini/strategy.ts
|
|
229
|
+
import { join as join2 } from "path";
|
|
230
|
+
import fs2 from "fs-extra";
|
|
231
|
+
import { parse as parse3 } from "smol-toml";
|
|
169
232
|
var { writeFile } = fs2;
|
|
233
|
+
var GeminiContentStrategy = class {
|
|
234
|
+
process(templateContent, options) {
|
|
235
|
+
const { installPath, agentType } = options;
|
|
236
|
+
const parsed = parse3(templateContent);
|
|
237
|
+
if (!parsed.prompt) {
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
const content = templateContent.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g, installPath);
|
|
241
|
+
return substituteVariables(content, { agent_type: agentType });
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
var GeminiFileStrategy = class {
|
|
245
|
+
async write(options) {
|
|
246
|
+
const { targetDir, agentDir, commandsDir, commandName, extension, content } = options;
|
|
247
|
+
const fileName = `${commandName}${extension}`;
|
|
248
|
+
await writeFile(join2(targetDir, agentDir, commandsDir, fileName), content);
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
var geminiContentStrategy = new GeminiContentStrategy();
|
|
252
|
+
var geminiFileStrategy = new GeminiFileStrategy();
|
|
253
|
+
|
|
254
|
+
// src/generators/gemini/config.ts
|
|
255
|
+
var geminiConfig = {
|
|
256
|
+
agentType: "gemini",
|
|
257
|
+
agentDir: ".gemini",
|
|
258
|
+
commandsDir: "commands/conductor",
|
|
259
|
+
displayName: "Gemini CLI",
|
|
260
|
+
protocolFilename: "GEMINI.md",
|
|
261
|
+
description: "Google Gemini CLI agent",
|
|
262
|
+
extension: ".toml",
|
|
263
|
+
usesPrefix: false,
|
|
264
|
+
strategy: {
|
|
265
|
+
content: geminiContentStrategy,
|
|
266
|
+
file: geminiFileStrategy
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
// src/generators/registry.ts
|
|
271
|
+
var ALL_AGENT_CONFIGS = [
|
|
272
|
+
opencodeConfig,
|
|
273
|
+
claudeCodeConfig,
|
|
274
|
+
antigravityConfig,
|
|
275
|
+
cursorConfig,
|
|
276
|
+
vscodeCopilotConfig,
|
|
277
|
+
codexConfig,
|
|
278
|
+
windsurfConfig,
|
|
279
|
+
clineConfig,
|
|
280
|
+
geminiConfig
|
|
281
|
+
];
|
|
282
|
+
|
|
283
|
+
// src/cli/prompt.ts
|
|
284
|
+
async function promptForInstallScope(agent) {
|
|
285
|
+
const isCodex = agent === "codex";
|
|
286
|
+
const isCline = agent === "cline";
|
|
287
|
+
const choices = isCodex ? [{ name: "Global (User Home Directory)", value: "global" }] : [{ name: "Project (Current Directory)", value: "project" }];
|
|
288
|
+
const answer = await select({
|
|
289
|
+
message: "Select installation method:",
|
|
290
|
+
choices,
|
|
291
|
+
default: isCodex ? "global" : "project"
|
|
292
|
+
});
|
|
293
|
+
return answer;
|
|
294
|
+
}
|
|
295
|
+
async function promptForAgent() {
|
|
296
|
+
const choices = ALL_AGENT_CONFIGS.map((config) => {
|
|
297
|
+
const {
|
|
298
|
+
displayName,
|
|
299
|
+
agentType,
|
|
300
|
+
protocolFilename,
|
|
301
|
+
agentDir,
|
|
302
|
+
commandsDir,
|
|
303
|
+
description
|
|
304
|
+
} = config;
|
|
305
|
+
const finalDescription = description || `${displayName} agent`;
|
|
306
|
+
const pathInfo = `\x1B[90m(${protocolFilename}, ${agentDir}/${commandsDir})\x1B[0m`;
|
|
307
|
+
return {
|
|
308
|
+
name: `${displayName} ${pathInfo}`,
|
|
309
|
+
value: agentType,
|
|
310
|
+
description: finalDescription
|
|
311
|
+
};
|
|
312
|
+
});
|
|
313
|
+
const answer = await select({
|
|
314
|
+
message: "Select your coding agent:",
|
|
315
|
+
choices,
|
|
316
|
+
default: "opencode",
|
|
317
|
+
loop: true
|
|
318
|
+
});
|
|
319
|
+
return answer;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
// src/generators/default/strategy.ts
|
|
323
|
+
import { join as join3 } from "path";
|
|
324
|
+
import fs3 from "fs-extra";
|
|
325
|
+
import { parse as parse4 } from "smol-toml";
|
|
326
|
+
var { writeFile: writeFile2 } = fs3;
|
|
170
327
|
var DefaultContentStrategy = class {
|
|
171
328
|
process(templateContent, options) {
|
|
172
329
|
const { installPath, agentType } = options;
|
|
173
|
-
const parsed =
|
|
330
|
+
const parsed = parse4(templateContent);
|
|
174
331
|
if (!parsed.prompt) {
|
|
175
332
|
return null;
|
|
176
333
|
}
|
|
@@ -190,26 +347,17 @@ var DefaultFileStrategy = class {
|
|
|
190
347
|
async write(options) {
|
|
191
348
|
const { targetDir, agentDir, commandsDir, commandName, extension, content } = options;
|
|
192
349
|
const fileName = `conductor:${commandName}${extension}`;
|
|
193
|
-
await
|
|
350
|
+
await writeFile2(join3(targetDir, agentDir, commandsDir, fileName), content);
|
|
194
351
|
}
|
|
195
352
|
};
|
|
196
353
|
var defaultContentStrategy = new DefaultContentStrategy();
|
|
197
354
|
var defaultFileStrategy = new DefaultFileStrategy();
|
|
198
355
|
|
|
199
|
-
// src/generators/opencode/config.ts
|
|
200
|
-
var opencodeConfig = {
|
|
201
|
-
agentType: "opencode",
|
|
202
|
-
agentDir: ".opencode",
|
|
203
|
-
commandsDir: "commands",
|
|
204
|
-
displayName: "OpenCode",
|
|
205
|
-
protocolFilename: "AGENTS.md"
|
|
206
|
-
};
|
|
207
|
-
|
|
208
356
|
// src/generators/ConfigurableGenerator.ts
|
|
209
|
-
import { join as
|
|
357
|
+
import { join as join4 } from "path";
|
|
210
358
|
import select2 from "@inquirer/select";
|
|
211
|
-
import
|
|
212
|
-
var { existsSync, ensureDir, writeFile:
|
|
359
|
+
import fs4 from "fs-extra";
|
|
360
|
+
var { existsSync, ensureDir, writeFile: writeFile3, copy } = fs4;
|
|
213
361
|
var ConfigurableGenerator = class {
|
|
214
362
|
constructor(config) {
|
|
215
363
|
this.config = config;
|
|
@@ -222,8 +370,8 @@ var ConfigurableGenerator = class {
|
|
|
222
370
|
const ext = extension || ".md";
|
|
223
371
|
const prefix = usesPrefix !== false ? "conductor:" : "";
|
|
224
372
|
const setupFileName = `${prefix}setup${ext}`;
|
|
225
|
-
const setupFile =
|
|
226
|
-
const conductorPath =
|
|
373
|
+
const setupFile = join4(targetDir, agentDir, commandsDir, setupFileName);
|
|
374
|
+
const conductorPath = join4(targetDir, agentDir, "conductor");
|
|
227
375
|
if (existsSync(conductorPath) && existsSync(setupFile)) {
|
|
228
376
|
throw new Error(
|
|
229
377
|
`Conductor (${displayName}) is already installed in: ${targetDir}`
|
|
@@ -233,18 +381,18 @@ var ConfigurableGenerator = class {
|
|
|
233
381
|
}
|
|
234
382
|
async generate(targetDir, scope, repo, branch, force) {
|
|
235
383
|
const { agentDir, commandsDir, agentType } = this.config;
|
|
236
|
-
const agentPath =
|
|
237
|
-
const targetCommandsDir =
|
|
238
|
-
let installPath =
|
|
384
|
+
const agentPath = join4(targetDir, agentDir);
|
|
385
|
+
const targetCommandsDir = join4(agentPath, commandsDir);
|
|
386
|
+
let installPath = join4(agentDir, "conductor");
|
|
239
387
|
if (scope === "global") {
|
|
240
388
|
installPath = `~/${agentDir}/conductor`;
|
|
241
389
|
}
|
|
242
390
|
await ensureDir(targetCommandsDir);
|
|
243
|
-
await ensureDir(
|
|
391
|
+
await ensureDir(join4(agentPath, "conductor"));
|
|
244
392
|
const templateRoot = await getTemplateRoot(repo, branch);
|
|
245
393
|
try {
|
|
246
|
-
const templateSource =
|
|
247
|
-
const templateDest =
|
|
394
|
+
const templateSource = join4(templateRoot, "templates");
|
|
395
|
+
const templateDest = join4(agentPath, "conductor", "templates");
|
|
248
396
|
await copy(templateSource, templateDest);
|
|
249
397
|
} catch (e) {
|
|
250
398
|
console.warn("Failed to copy templates directory:", e);
|
|
@@ -252,8 +400,8 @@ var ConfigurableGenerator = class {
|
|
|
252
400
|
const { protocolFilename } = this.config;
|
|
253
401
|
if (protocolFilename) {
|
|
254
402
|
try {
|
|
255
|
-
const protocolSource =
|
|
256
|
-
const protocolDest =
|
|
403
|
+
const protocolSource = join4(templateRoot, "GEMINI.md");
|
|
404
|
+
const protocolDest = join4(targetDir, protocolFilename);
|
|
257
405
|
if (existsSync(protocolSource)) {
|
|
258
406
|
let shouldCopy = true;
|
|
259
407
|
if (existsSync(protocolDest) && !force) {
|
|
@@ -331,15 +479,6 @@ var OpenCodeGenerator = class {
|
|
|
331
479
|
}
|
|
332
480
|
};
|
|
333
481
|
|
|
334
|
-
// src/generators/claude-code/config.ts
|
|
335
|
-
var claudeCodeConfig = {
|
|
336
|
-
agentType: "claude-code",
|
|
337
|
-
agentDir: ".claude",
|
|
338
|
-
commandsDir: "commands",
|
|
339
|
-
displayName: "Claude Code",
|
|
340
|
-
protocolFilename: "CLAUDE.md"
|
|
341
|
-
};
|
|
342
|
-
|
|
343
482
|
// src/generators/claude-code/generator.ts
|
|
344
483
|
var ClaudeCodeGenerator = class {
|
|
345
484
|
generator = createGenerator(claudeCodeConfig);
|
|
@@ -351,15 +490,6 @@ var ClaudeCodeGenerator = class {
|
|
|
351
490
|
}
|
|
352
491
|
};
|
|
353
492
|
|
|
354
|
-
// src/generators/antigravity/config.ts
|
|
355
|
-
var antigravityConfig = {
|
|
356
|
-
agentType: "antigravity",
|
|
357
|
-
agentDir: ".agent",
|
|
358
|
-
commandsDir: "workflows",
|
|
359
|
-
displayName: "Antigravity",
|
|
360
|
-
protocolFilename: "GEMINI.md"
|
|
361
|
-
};
|
|
362
|
-
|
|
363
493
|
// src/generators/antigravity/generator.ts
|
|
364
494
|
var AntigravityGenerator = class {
|
|
365
495
|
generator = createGenerator(antigravityConfig);
|
|
@@ -371,15 +501,6 @@ var AntigravityGenerator = class {
|
|
|
371
501
|
}
|
|
372
502
|
};
|
|
373
503
|
|
|
374
|
-
// src/generators/cursor/config.ts
|
|
375
|
-
var cursorConfig = {
|
|
376
|
-
agentType: "cursor",
|
|
377
|
-
agentDir: ".cursor",
|
|
378
|
-
commandsDir: "commands",
|
|
379
|
-
displayName: "Cursor",
|
|
380
|
-
protocolFilename: "AGENTS.md"
|
|
381
|
-
};
|
|
382
|
-
|
|
383
504
|
// src/generators/cursor/generator.ts
|
|
384
505
|
var CursorGenerator = class {
|
|
385
506
|
generator = createGenerator(cursorConfig);
|
|
@@ -391,41 +512,6 @@ var CursorGenerator = class {
|
|
|
391
512
|
}
|
|
392
513
|
};
|
|
393
514
|
|
|
394
|
-
// src/generators/vscode-copilot/strategy.ts
|
|
395
|
-
import { parse as parse2 } from "smol-toml";
|
|
396
|
-
var VsCodeCopilotContentStrategy = class {
|
|
397
|
-
process(templateContent, options) {
|
|
398
|
-
const { installPath, agentType, fixedAgent } = options;
|
|
399
|
-
const parsed = parse2(templateContent);
|
|
400
|
-
if (!parsed.prompt) {
|
|
401
|
-
return null;
|
|
402
|
-
}
|
|
403
|
-
let prompt = parsed.prompt;
|
|
404
|
-
prompt = prompt.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g, installPath);
|
|
405
|
-
const finalContent = substituteVariables(prompt, { agent_type: agentType });
|
|
406
|
-
return `---
|
|
407
|
-
description: ${parsed.description || ""}
|
|
408
|
-
agent: ${fixedAgent}
|
|
409
|
-
---
|
|
410
|
-
${finalContent}`;
|
|
411
|
-
}
|
|
412
|
-
};
|
|
413
|
-
var vscodeCopilotContentStrategy = new VsCodeCopilotContentStrategy();
|
|
414
|
-
|
|
415
|
-
// src/generators/vscode-copilot/config.ts
|
|
416
|
-
var vscodeCopilotConfig = {
|
|
417
|
-
agentType: "vscode-copilot",
|
|
418
|
-
agentDir: ".github",
|
|
419
|
-
commandsDir: "prompts",
|
|
420
|
-
displayName: "VS Code Copilot",
|
|
421
|
-
protocolFilename: "AGENTS.md",
|
|
422
|
-
extension: ".prompt.md",
|
|
423
|
-
fixedAgent: "agent",
|
|
424
|
-
strategy: {
|
|
425
|
-
content: vscodeCopilotContentStrategy
|
|
426
|
-
}
|
|
427
|
-
};
|
|
428
|
-
|
|
429
515
|
// src/generators/vscode-copilot/generator.ts
|
|
430
516
|
var VSCodeCopilotGenerator = class {
|
|
431
517
|
generator = createGenerator(vscodeCopilotConfig);
|
|
@@ -437,16 +523,6 @@ var VSCodeCopilotGenerator = class {
|
|
|
437
523
|
}
|
|
438
524
|
};
|
|
439
525
|
|
|
440
|
-
// src/generators/codex/config.ts
|
|
441
|
-
var codexConfig = {
|
|
442
|
-
agentType: "codex",
|
|
443
|
-
agentDir: ".codex",
|
|
444
|
-
commandsDir: "prompts",
|
|
445
|
-
displayName: "Codex",
|
|
446
|
-
protocolFilename: "AGENTS.md",
|
|
447
|
-
extension: ".md"
|
|
448
|
-
};
|
|
449
|
-
|
|
450
526
|
// src/generators/codex/generator.ts
|
|
451
527
|
import { homedir as homedir2 } from "os";
|
|
452
528
|
var CodexGenerator = class {
|
|
@@ -465,15 +541,6 @@ var CodexGenerator = class {
|
|
|
465
541
|
}
|
|
466
542
|
};
|
|
467
543
|
|
|
468
|
-
// src/generators/windsurf/config.ts
|
|
469
|
-
var windsurfConfig = {
|
|
470
|
-
agentType: "windsurf",
|
|
471
|
-
agentDir: ".windsurf",
|
|
472
|
-
commandsDir: "workflows",
|
|
473
|
-
displayName: "Windsurf",
|
|
474
|
-
protocolFilename: "AGENTS.md"
|
|
475
|
-
};
|
|
476
|
-
|
|
477
544
|
// src/generators/windsurf/generator.ts
|
|
478
545
|
var WindsurfGenerator = class {
|
|
479
546
|
generator = createGenerator(windsurfConfig);
|
|
@@ -485,36 +552,6 @@ var WindsurfGenerator = class {
|
|
|
485
552
|
}
|
|
486
553
|
};
|
|
487
554
|
|
|
488
|
-
// src/generators/cline/strategy.ts
|
|
489
|
-
import { parse as parse3 } from "smol-toml";
|
|
490
|
-
var ClineContentStrategy = class {
|
|
491
|
-
process(templateContent, options) {
|
|
492
|
-
const { installPath, agentType, commandName } = options;
|
|
493
|
-
const parsed = parse3(templateContent);
|
|
494
|
-
if (!parsed.prompt) {
|
|
495
|
-
return null;
|
|
496
|
-
}
|
|
497
|
-
let prompt = parsed.prompt;
|
|
498
|
-
prompt = prompt.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g, installPath);
|
|
499
|
-
const finalContent = substituteVariables(prompt, { agent_type: agentType });
|
|
500
|
-
const title = commandName ? commandName.charAt(0).toUpperCase() + commandName.slice(1) : "Command";
|
|
501
|
-
return `# Conductor ${title}${parsed.description ? "\n\n" + parsed.description + "\n\n" : "\n\n"}${finalContent}`;
|
|
502
|
-
}
|
|
503
|
-
};
|
|
504
|
-
var clineContentStrategy = new ClineContentStrategy();
|
|
505
|
-
|
|
506
|
-
// src/generators/cline/config.ts
|
|
507
|
-
var clineConfig = {
|
|
508
|
-
agentType: "cline",
|
|
509
|
-
agentDir: ".clinerules",
|
|
510
|
-
commandsDir: "workflows",
|
|
511
|
-
displayName: "Cline",
|
|
512
|
-
protocolFilename: "AGENTS.md",
|
|
513
|
-
strategy: {
|
|
514
|
-
content: clineContentStrategy
|
|
515
|
-
}
|
|
516
|
-
};
|
|
517
|
-
|
|
518
555
|
// src/generators/cline/generator.ts
|
|
519
556
|
var ClineGenerator = class {
|
|
520
557
|
generator = createGenerator(clineConfig);
|
|
@@ -526,47 +563,6 @@ var ClineGenerator = class {
|
|
|
526
563
|
}
|
|
527
564
|
};
|
|
528
565
|
|
|
529
|
-
// src/generators/gemini/strategy.ts
|
|
530
|
-
import { join as join4 } from "path";
|
|
531
|
-
import fs4 from "fs-extra";
|
|
532
|
-
import { parse as parse4 } from "smol-toml";
|
|
533
|
-
var { writeFile: writeFile3 } = fs4;
|
|
534
|
-
var GeminiContentStrategy = class {
|
|
535
|
-
process(templateContent, options) {
|
|
536
|
-
const { installPath, agentType } = options;
|
|
537
|
-
const parsed = parse4(templateContent);
|
|
538
|
-
if (!parsed.prompt) {
|
|
539
|
-
return null;
|
|
540
|
-
}
|
|
541
|
-
const content = templateContent.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g, installPath);
|
|
542
|
-
return substituteVariables(content, { agent_type: agentType });
|
|
543
|
-
}
|
|
544
|
-
};
|
|
545
|
-
var GeminiFileStrategy = class {
|
|
546
|
-
async write(options) {
|
|
547
|
-
const { targetDir, agentDir, commandsDir, commandName, extension, content } = options;
|
|
548
|
-
const fileName = `${commandName}${extension}`;
|
|
549
|
-
await writeFile3(join4(targetDir, agentDir, commandsDir, fileName), content);
|
|
550
|
-
}
|
|
551
|
-
};
|
|
552
|
-
var geminiContentStrategy = new GeminiContentStrategy();
|
|
553
|
-
var geminiFileStrategy = new GeminiFileStrategy();
|
|
554
|
-
|
|
555
|
-
// src/generators/gemini/config.ts
|
|
556
|
-
var geminiConfig = {
|
|
557
|
-
agentType: "gemini",
|
|
558
|
-
agentDir: ".gemini",
|
|
559
|
-
commandsDir: "commands/conductor",
|
|
560
|
-
displayName: "Gemini CLI",
|
|
561
|
-
protocolFilename: "GEMINI.md",
|
|
562
|
-
extension: ".toml",
|
|
563
|
-
usesPrefix: false,
|
|
564
|
-
strategy: {
|
|
565
|
-
content: geminiContentStrategy,
|
|
566
|
-
file: geminiFileStrategy
|
|
567
|
-
}
|
|
568
|
-
};
|
|
569
|
-
|
|
570
566
|
// src/generators/gemini/generator.ts
|
|
571
567
|
var GeminiGenerator = class {
|
|
572
568
|
generator = createGenerator(geminiConfig);
|