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.
Files changed (29) hide show
  1. package/README.md +32 -6
  2. package/dist/conductor/conductor/CHANGELOG.md +39 -0
  3. package/dist/conductor/conductor/CONTRIBUTING.md +33 -0
  4. package/dist/conductor/conductor/GEMINI.md +41 -0
  5. package/dist/conductor/conductor/LICENSE +202 -0
  6. package/dist/conductor/conductor/README.md +128 -0
  7. package/dist/conductor/conductor/commands/conductor/implement.toml +179 -0
  8. package/dist/conductor/conductor/commands/conductor/newTrack.toml +154 -0
  9. package/dist/conductor/conductor/commands/conductor/revert.toml +130 -0
  10. package/dist/conductor/conductor/commands/conductor/review.toml +158 -0
  11. package/dist/conductor/conductor/commands/conductor/setup.toml +456 -0
  12. package/dist/conductor/conductor/commands/conductor/status.toml +57 -0
  13. package/dist/conductor/conductor/gemini-extension.json +5 -0
  14. package/dist/conductor/conductor/release-please-config.json +11 -0
  15. package/dist/conductor/conductor/templates/code_styleguides/cpp.md +113 -0
  16. package/dist/conductor/conductor/templates/code_styleguides/csharp.md +115 -0
  17. package/dist/conductor/conductor/templates/code_styleguides/dart.md +238 -0
  18. package/dist/conductor/conductor/templates/code_styleguides/general.md +23 -0
  19. package/dist/conductor/conductor/templates/code_styleguides/go.md +48 -0
  20. package/dist/conductor/conductor/templates/code_styleguides/html-css.md +49 -0
  21. package/dist/conductor/conductor/templates/code_styleguides/javascript.md +51 -0
  22. package/dist/conductor/conductor/templates/code_styleguides/python.md +37 -0
  23. package/dist/conductor/conductor/templates/code_styleguides/typescript.md +43 -0
  24. package/dist/conductor/conductor/templates/workflow.md +333 -0
  25. package/dist/conductor-install.cjs +242 -246
  26. package/dist/conductor-install.js +241 -245
  27. package/dist/index.cjs +242 -246
  28. package/dist/index.js +241 -245
  29. package/package.json +2 -2
@@ -23,7 +23,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
23
23
  mod
24
24
  ));
25
25
 
26
- // node_modules/.pnpm/tsup@8.5.1_postcss@8.5.6_tsx@4.21.0_typescript@5.9.3/node_modules/tsup/assets/cjs_shims.js
26
+ // node_modules/tsup/assets/cjs_shims.js
27
27
  var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
28
28
  var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
29
29
 
@@ -33,75 +33,48 @@ var import_helpers = require("yargs/helpers");
33
33
 
34
34
  // src/cli/prompt.ts
35
35
  var import_select = __toESM(require("@inquirer/select"), 1);
36
- async function promptForInstallScope(agent) {
37
- const isCodex = agent === "codex";
38
- const isCline = agent === "cline";
39
- const choices = isCodex ? [{ name: "Global (User Home Directory)", value: "global" }] : [{ name: "Project (Current Directory)", value: "project" }];
40
- const answer = await (0, import_select.default)({
41
- message: "Select installation method:",
42
- choices,
43
- default: isCodex ? "global" : "project"
44
- });
45
- return answer;
46
- }
47
- async function promptForAgent() {
48
- const answer = await (0, import_select.default)({
49
- message: "Select your coding agent:",
50
- choices: [
51
- {
52
- name: "OpenCode",
53
- value: "opencode",
54
- description: "The open source AI coding agent"
55
- },
56
- {
57
- name: "Claude Code",
58
- value: "claude-code",
59
- description: "Anthropic's coding assistant"
60
- },
61
- {
62
- name: "Antigravity",
63
- value: "antigravity",
64
- description: "Google's agentic coding assistant"
65
- },
66
- {
67
- name: "Cursor",
68
- value: "cursor",
69
- description: "Cursor IDE's AI agent"
70
- },
71
- {
72
- name: "VS Code Copilot",
73
- value: "vscode-copilot",
74
- description: "VS Code Copilot's Prompt Files"
75
- },
76
- {
77
- name: "Codex",
78
- value: "codex",
79
- description: "OpenAI Codex Agent"
80
- },
81
- {
82
- name: "Windsurf",
83
- value: "windsurf",
84
- description: "Windsurf Cascade AI Agent"
85
- },
86
- {
87
- name: "Cline",
88
- value: "cline",
89
- description: "Cline AI coding assistant"
90
- },
91
- {
92
- name: "Gemini CLI",
93
- value: "gemini",
94
- description: "Google Gemini CLI agent"
95
- }
96
- ],
97
- default: "opencode"
98
- });
99
- return answer;
100
- }
101
36
 
102
- // src/generators/default/strategy.ts
103
- var import_path2 = require("path");
104
- var import_fs_extra2 = __toESM(require("fs-extra"), 1);
37
+ // src/generators/opencode/config.ts
38
+ var opencodeConfig = {
39
+ agentType: "opencode",
40
+ agentDir: ".opencode",
41
+ commandsDir: "commands",
42
+ displayName: "OpenCode",
43
+ protocolFilename: "AGENTS.md",
44
+ description: "The open source AI coding agent"
45
+ };
46
+
47
+ // src/generators/claude-code/config.ts
48
+ var claudeCodeConfig = {
49
+ agentType: "claude-code",
50
+ agentDir: ".claude",
51
+ commandsDir: "commands",
52
+ displayName: "Claude Code",
53
+ protocolFilename: "CLAUDE.md",
54
+ description: "Anthropic's coding assistant"
55
+ };
56
+
57
+ // src/generators/antigravity/config.ts
58
+ var antigravityConfig = {
59
+ agentType: "antigravity",
60
+ agentDir: ".agent",
61
+ commandsDir: "workflows",
62
+ displayName: "Antigravity",
63
+ protocolFilename: "GEMINI.md",
64
+ description: "Google's agentic coding assistant"
65
+ };
66
+
67
+ // src/generators/cursor/config.ts
68
+ var cursorConfig = {
69
+ agentType: "cursor",
70
+ agentDir: ".cursor",
71
+ commandsDir: "commands",
72
+ displayName: "Cursor",
73
+ protocolFilename: "AGENTS.md",
74
+ description: "Cursor IDE's AI agent"
75
+ };
76
+
77
+ // src/generators/vscode-copilot/strategy.ts
105
78
  var import_smol_toml = require("smol-toml");
106
79
 
107
80
  // src/utils/template.ts
@@ -192,12 +165,196 @@ async function loadTemplate(templatePath, repo, branch) {
192
165
  return (0, import_promises.readFile)(fullPath, "utf-8");
193
166
  }
194
167
 
195
- // src/generators/default/strategy.ts
168
+ // src/generators/vscode-copilot/strategy.ts
169
+ var VsCodeCopilotContentStrategy = class {
170
+ process(templateContent, options) {
171
+ const { installPath, agentType, fixedAgent } = options;
172
+ const parsed = (0, import_smol_toml.parse)(templateContent);
173
+ if (!parsed.prompt) {
174
+ return null;
175
+ }
176
+ let prompt = parsed.prompt;
177
+ prompt = prompt.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g, installPath);
178
+ const finalContent = substituteVariables(prompt, { agent_type: agentType });
179
+ return `---
180
+ description: ${parsed.description || ""}
181
+ agent: ${fixedAgent}
182
+ ---
183
+ ${finalContent}`;
184
+ }
185
+ };
186
+ var vscodeCopilotContentStrategy = new VsCodeCopilotContentStrategy();
187
+
188
+ // src/generators/vscode-copilot/config.ts
189
+ var vscodeCopilotConfig = {
190
+ agentType: "vscode-copilot",
191
+ agentDir: ".github",
192
+ commandsDir: "prompts",
193
+ displayName: "VS Code Copilot",
194
+ protocolFilename: "AGENTS.md",
195
+ description: "VS Code Copilot's Prompt Files",
196
+ extension: ".prompt.md",
197
+ fixedAgent: "agent",
198
+ strategy: {
199
+ content: vscodeCopilotContentStrategy
200
+ }
201
+ };
202
+
203
+ // src/generators/codex/config.ts
204
+ var codexConfig = {
205
+ agentType: "codex",
206
+ agentDir: ".codex",
207
+ commandsDir: "prompts",
208
+ displayName: "Codex",
209
+ protocolFilename: "AGENTS.md",
210
+ description: "OpenAI Codex Agent",
211
+ extension: ".md"
212
+ };
213
+
214
+ // src/generators/windsurf/config.ts
215
+ var windsurfConfig = {
216
+ agentType: "windsurf",
217
+ agentDir: ".windsurf",
218
+ commandsDir: "workflows",
219
+ displayName: "Windsurf",
220
+ protocolFilename: "AGENTS.md",
221
+ description: "Windsurf Cascade AI Agent"
222
+ };
223
+
224
+ // src/generators/cline/strategy.ts
225
+ var import_smol_toml2 = require("smol-toml");
226
+ var ClineContentStrategy = class {
227
+ process(templateContent, options) {
228
+ const { installPath, agentType, commandName } = options;
229
+ const parsed = (0, import_smol_toml2.parse)(templateContent);
230
+ if (!parsed.prompt) {
231
+ return null;
232
+ }
233
+ let prompt = parsed.prompt;
234
+ prompt = prompt.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g, installPath);
235
+ const finalContent = substituteVariables(prompt, { agent_type: agentType });
236
+ const title = commandName ? commandName.charAt(0).toUpperCase() + commandName.slice(1) : "Command";
237
+ return `# Conductor ${title}${parsed.description ? "\n\n" + parsed.description + "\n\n" : "\n\n"}${finalContent}`;
238
+ }
239
+ };
240
+ var clineContentStrategy = new ClineContentStrategy();
241
+
242
+ // src/generators/cline/config.ts
243
+ var clineConfig = {
244
+ agentType: "cline",
245
+ agentDir: ".clinerules",
246
+ commandsDir: "workflows",
247
+ displayName: "Cline",
248
+ protocolFilename: "AGENTS.md",
249
+ description: "Cline AI coding assistant",
250
+ strategy: {
251
+ content: clineContentStrategy
252
+ }
253
+ };
254
+
255
+ // src/generators/gemini/strategy.ts
256
+ var import_path2 = require("path");
257
+ var import_fs_extra2 = __toESM(require("fs-extra"), 1);
258
+ var import_smol_toml3 = require("smol-toml");
196
259
  var { writeFile } = import_fs_extra2.default;
260
+ var GeminiContentStrategy = class {
261
+ process(templateContent, options) {
262
+ const { installPath, agentType } = options;
263
+ const parsed = (0, import_smol_toml3.parse)(templateContent);
264
+ if (!parsed.prompt) {
265
+ return null;
266
+ }
267
+ const content = templateContent.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g, installPath);
268
+ return substituteVariables(content, { agent_type: agentType });
269
+ }
270
+ };
271
+ var GeminiFileStrategy = class {
272
+ async write(options) {
273
+ const { targetDir, agentDir, commandsDir, commandName, extension, content } = options;
274
+ const fileName = `${commandName}${extension}`;
275
+ await writeFile((0, import_path2.join)(targetDir, agentDir, commandsDir, fileName), content);
276
+ }
277
+ };
278
+ var geminiContentStrategy = new GeminiContentStrategy();
279
+ var geminiFileStrategy = new GeminiFileStrategy();
280
+
281
+ // src/generators/gemini/config.ts
282
+ var geminiConfig = {
283
+ agentType: "gemini",
284
+ agentDir: ".gemini",
285
+ commandsDir: "commands/conductor",
286
+ displayName: "Gemini CLI",
287
+ protocolFilename: "GEMINI.md",
288
+ description: "Google Gemini CLI agent",
289
+ extension: ".toml",
290
+ usesPrefix: false,
291
+ strategy: {
292
+ content: geminiContentStrategy,
293
+ file: geminiFileStrategy
294
+ }
295
+ };
296
+
297
+ // src/generators/registry.ts
298
+ var ALL_AGENT_CONFIGS = [
299
+ opencodeConfig,
300
+ claudeCodeConfig,
301
+ antigravityConfig,
302
+ cursorConfig,
303
+ vscodeCopilotConfig,
304
+ codexConfig,
305
+ windsurfConfig,
306
+ clineConfig,
307
+ geminiConfig
308
+ ];
309
+
310
+ // src/cli/prompt.ts
311
+ async function promptForInstallScope(agent) {
312
+ const isCodex = agent === "codex";
313
+ const isCline = agent === "cline";
314
+ const choices = isCodex ? [{ name: "Global (User Home Directory)", value: "global" }] : [{ name: "Project (Current Directory)", value: "project" }];
315
+ const answer = await (0, import_select.default)({
316
+ message: "Select installation method:",
317
+ choices,
318
+ default: isCodex ? "global" : "project"
319
+ });
320
+ return answer;
321
+ }
322
+ async function promptForAgent() {
323
+ const choices = ALL_AGENT_CONFIGS.map((config) => {
324
+ const {
325
+ displayName,
326
+ agentType,
327
+ protocolFilename,
328
+ agentDir,
329
+ commandsDir,
330
+ description
331
+ } = config;
332
+ const finalDescription = description || `${displayName} agent`;
333
+ const pathInfo = `\x1B[90m(${protocolFilename}, ${agentDir}/${commandsDir})\x1B[0m`;
334
+ return {
335
+ name: `${displayName} ${pathInfo}`,
336
+ value: agentType,
337
+ description: finalDescription
338
+ };
339
+ });
340
+ const answer = await (0, import_select.default)({
341
+ message: "Select your coding agent:",
342
+ choices,
343
+ default: "opencode",
344
+ loop: true
345
+ });
346
+ return answer;
347
+ }
348
+
349
+ // src/generators/default/strategy.ts
350
+ var import_path3 = require("path");
351
+ var import_fs_extra3 = __toESM(require("fs-extra"), 1);
352
+ var import_smol_toml4 = require("smol-toml");
353
+ var { writeFile: writeFile2 } = import_fs_extra3.default;
197
354
  var DefaultContentStrategy = class {
198
355
  process(templateContent, options) {
199
356
  const { installPath, agentType } = options;
200
- const parsed = (0, import_smol_toml.parse)(templateContent);
357
+ const parsed = (0, import_smol_toml4.parse)(templateContent);
201
358
  if (!parsed.prompt) {
202
359
  return null;
203
360
  }
@@ -217,26 +374,17 @@ var DefaultFileStrategy = class {
217
374
  async write(options) {
218
375
  const { targetDir, agentDir, commandsDir, commandName, extension, content } = options;
219
376
  const fileName = `conductor:${commandName}${extension}`;
220
- await writeFile((0, import_path2.join)(targetDir, agentDir, commandsDir, fileName), content);
377
+ await writeFile2((0, import_path3.join)(targetDir, agentDir, commandsDir, fileName), content);
221
378
  }
222
379
  };
223
380
  var defaultContentStrategy = new DefaultContentStrategy();
224
381
  var defaultFileStrategy = new DefaultFileStrategy();
225
382
 
226
- // src/generators/opencode/config.ts
227
- var opencodeConfig = {
228
- agentType: "opencode",
229
- agentDir: ".opencode",
230
- commandsDir: "commands",
231
- displayName: "OpenCode",
232
- protocolFilename: "AGENTS.md"
233
- };
234
-
235
383
  // src/generators/ConfigurableGenerator.ts
236
- var import_path3 = require("path");
384
+ var import_path4 = require("path");
237
385
  var import_select2 = __toESM(require("@inquirer/select"), 1);
238
- var import_fs_extra3 = __toESM(require("fs-extra"), 1);
239
- var { existsSync, ensureDir, writeFile: writeFile2, copy } = import_fs_extra3.default;
386
+ var import_fs_extra4 = __toESM(require("fs-extra"), 1);
387
+ var { existsSync, ensureDir, writeFile: writeFile3, copy } = import_fs_extra4.default;
240
388
  var ConfigurableGenerator = class {
241
389
  constructor(config) {
242
390
  this.config = config;
@@ -249,8 +397,8 @@ var ConfigurableGenerator = class {
249
397
  const ext = extension || ".md";
250
398
  const prefix = usesPrefix !== false ? "conductor:" : "";
251
399
  const setupFileName = `${prefix}setup${ext}`;
252
- const setupFile = (0, import_path3.join)(targetDir, agentDir, commandsDir, setupFileName);
253
- const conductorPath = (0, import_path3.join)(targetDir, agentDir, "conductor");
400
+ const setupFile = (0, import_path4.join)(targetDir, agentDir, commandsDir, setupFileName);
401
+ const conductorPath = (0, import_path4.join)(targetDir, agentDir, "conductor");
254
402
  if (existsSync(conductorPath) && existsSync(setupFile)) {
255
403
  throw new Error(
256
404
  `Conductor (${displayName}) is already installed in: ${targetDir}`
@@ -260,18 +408,18 @@ var ConfigurableGenerator = class {
260
408
  }
261
409
  async generate(targetDir, scope, repo, branch, force) {
262
410
  const { agentDir, commandsDir, agentType } = this.config;
263
- const agentPath = (0, import_path3.join)(targetDir, agentDir);
264
- const targetCommandsDir = (0, import_path3.join)(agentPath, commandsDir);
265
- let installPath = (0, import_path3.join)(agentDir, "conductor");
411
+ const agentPath = (0, import_path4.join)(targetDir, agentDir);
412
+ const targetCommandsDir = (0, import_path4.join)(agentPath, commandsDir);
413
+ let installPath = (0, import_path4.join)(agentDir, "conductor");
266
414
  if (scope === "global") {
267
415
  installPath = `~/${agentDir}/conductor`;
268
416
  }
269
417
  await ensureDir(targetCommandsDir);
270
- await ensureDir((0, import_path3.join)(agentPath, "conductor"));
418
+ await ensureDir((0, import_path4.join)(agentPath, "conductor"));
271
419
  const templateRoot = await getTemplateRoot(repo, branch);
272
420
  try {
273
- const templateSource = (0, import_path3.join)(templateRoot, "templates");
274
- const templateDest = (0, import_path3.join)(agentPath, "conductor", "templates");
421
+ const templateSource = (0, import_path4.join)(templateRoot, "templates");
422
+ const templateDest = (0, import_path4.join)(agentPath, "conductor", "templates");
275
423
  await copy(templateSource, templateDest);
276
424
  } catch (e) {
277
425
  console.warn("Failed to copy templates directory:", e);
@@ -279,8 +427,8 @@ var ConfigurableGenerator = class {
279
427
  const { protocolFilename } = this.config;
280
428
  if (protocolFilename) {
281
429
  try {
282
- const protocolSource = (0, import_path3.join)(templateRoot, "GEMINI.md");
283
- const protocolDest = (0, import_path3.join)(targetDir, agentDir, protocolFilename);
430
+ const protocolSource = (0, import_path4.join)(templateRoot, "GEMINI.md");
431
+ const protocolDest = (0, import_path4.join)(targetDir, protocolFilename);
284
432
  if (existsSync(protocolSource)) {
285
433
  let shouldCopy = true;
286
434
  if (existsSync(protocolDest) && !force) {
@@ -358,15 +506,6 @@ var OpenCodeGenerator = class {
358
506
  }
359
507
  };
360
508
 
361
- // src/generators/claude-code/config.ts
362
- var claudeCodeConfig = {
363
- agentType: "claude-code",
364
- agentDir: ".claude",
365
- commandsDir: "commands",
366
- displayName: "Claude Code",
367
- protocolFilename: "CLAUDE.md"
368
- };
369
-
370
509
  // src/generators/claude-code/generator.ts
371
510
  var ClaudeCodeGenerator = class {
372
511
  generator = createGenerator(claudeCodeConfig);
@@ -378,15 +517,6 @@ var ClaudeCodeGenerator = class {
378
517
  }
379
518
  };
380
519
 
381
- // src/generators/antigravity/config.ts
382
- var antigravityConfig = {
383
- agentType: "antigravity",
384
- agentDir: ".agent",
385
- commandsDir: "workflows",
386
- displayName: "Antigravity",
387
- protocolFilename: "GEMINI.md"
388
- };
389
-
390
520
  // src/generators/antigravity/generator.ts
391
521
  var AntigravityGenerator = class {
392
522
  generator = createGenerator(antigravityConfig);
@@ -398,15 +528,6 @@ var AntigravityGenerator = class {
398
528
  }
399
529
  };
400
530
 
401
- // src/generators/cursor/config.ts
402
- var cursorConfig = {
403
- agentType: "cursor",
404
- agentDir: ".cursor",
405
- commandsDir: "commands",
406
- displayName: "Cursor",
407
- protocolFilename: "AGENTS.md"
408
- };
409
-
410
531
  // src/generators/cursor/generator.ts
411
532
  var CursorGenerator = class {
412
533
  generator = createGenerator(cursorConfig);
@@ -418,41 +539,6 @@ var CursorGenerator = class {
418
539
  }
419
540
  };
420
541
 
421
- // src/generators/vscode-copilot/strategy.ts
422
- var import_smol_toml2 = require("smol-toml");
423
- var VsCodeCopilotContentStrategy = class {
424
- process(templateContent, options) {
425
- const { installPath, agentType, fixedAgent } = options;
426
- const parsed = (0, import_smol_toml2.parse)(templateContent);
427
- if (!parsed.prompt) {
428
- return null;
429
- }
430
- let prompt = parsed.prompt;
431
- prompt = prompt.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g, installPath);
432
- const finalContent = substituteVariables(prompt, { agent_type: agentType });
433
- return `---
434
- description: ${parsed.description || ""}
435
- agent: ${fixedAgent}
436
- ---
437
- ${finalContent}`;
438
- }
439
- };
440
- var vscodeCopilotContentStrategy = new VsCodeCopilotContentStrategy();
441
-
442
- // src/generators/vscode-copilot/config.ts
443
- var vscodeCopilotConfig = {
444
- agentType: "vscode-copilot",
445
- agentDir: ".github",
446
- commandsDir: "prompts",
447
- displayName: "VS Code Copilot",
448
- protocolFilename: "AGENTS.md",
449
- extension: ".prompt.md",
450
- fixedAgent: "agent",
451
- strategy: {
452
- content: vscodeCopilotContentStrategy
453
- }
454
- };
455
-
456
542
  // src/generators/vscode-copilot/generator.ts
457
543
  var VSCodeCopilotGenerator = class {
458
544
  generator = createGenerator(vscodeCopilotConfig);
@@ -464,16 +550,6 @@ var VSCodeCopilotGenerator = class {
464
550
  }
465
551
  };
466
552
 
467
- // src/generators/codex/config.ts
468
- var codexConfig = {
469
- agentType: "codex",
470
- agentDir: ".codex",
471
- commandsDir: "prompts",
472
- displayName: "Codex",
473
- protocolFilename: "AGENTS.md",
474
- extension: ".md"
475
- };
476
-
477
553
  // src/generators/codex/generator.ts
478
554
  var import_os2 = require("os");
479
555
  var CodexGenerator = class {
@@ -492,15 +568,6 @@ var CodexGenerator = class {
492
568
  }
493
569
  };
494
570
 
495
- // src/generators/windsurf/config.ts
496
- var windsurfConfig = {
497
- agentType: "windsurf",
498
- agentDir: ".windsurf",
499
- commandsDir: "workflows",
500
- displayName: "Windsurf",
501
- protocolFilename: "AGENTS.md"
502
- };
503
-
504
571
  // src/generators/windsurf/generator.ts
505
572
  var WindsurfGenerator = class {
506
573
  generator = createGenerator(windsurfConfig);
@@ -512,36 +579,6 @@ var WindsurfGenerator = class {
512
579
  }
513
580
  };
514
581
 
515
- // src/generators/cline/strategy.ts
516
- var import_smol_toml3 = require("smol-toml");
517
- var ClineContentStrategy = class {
518
- process(templateContent, options) {
519
- const { installPath, agentType, commandName } = options;
520
- const parsed = (0, import_smol_toml3.parse)(templateContent);
521
- if (!parsed.prompt) {
522
- return null;
523
- }
524
- let prompt = parsed.prompt;
525
- prompt = prompt.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g, installPath);
526
- const finalContent = substituteVariables(prompt, { agent_type: agentType });
527
- const title = commandName ? commandName.charAt(0).toUpperCase() + commandName.slice(1) : "Command";
528
- return `# Conductor ${title}${parsed.description ? "\n\n" + parsed.description + "\n\n" : "\n\n"}${finalContent}`;
529
- }
530
- };
531
- var clineContentStrategy = new ClineContentStrategy();
532
-
533
- // src/generators/cline/config.ts
534
- var clineConfig = {
535
- agentType: "cline",
536
- agentDir: ".clinerules",
537
- commandsDir: "workflows",
538
- displayName: "Cline",
539
- protocolFilename: "AGENTS.md",
540
- strategy: {
541
- content: clineContentStrategy
542
- }
543
- };
544
-
545
582
  // src/generators/cline/generator.ts
546
583
  var ClineGenerator = class {
547
584
  generator = createGenerator(clineConfig);
@@ -553,47 +590,6 @@ var ClineGenerator = class {
553
590
  }
554
591
  };
555
592
 
556
- // src/generators/gemini/strategy.ts
557
- var import_path4 = require("path");
558
- var import_fs_extra4 = __toESM(require("fs-extra"), 1);
559
- var import_smol_toml4 = require("smol-toml");
560
- var { writeFile: writeFile3 } = import_fs_extra4.default;
561
- var GeminiContentStrategy = class {
562
- process(templateContent, options) {
563
- const { installPath, agentType } = options;
564
- const parsed = (0, import_smol_toml4.parse)(templateContent);
565
- if (!parsed.prompt) {
566
- return null;
567
- }
568
- const content = templateContent.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g, installPath);
569
- return substituteVariables(content, { agent_type: agentType });
570
- }
571
- };
572
- var GeminiFileStrategy = class {
573
- async write(options) {
574
- const { targetDir, agentDir, commandsDir, commandName, extension, content } = options;
575
- const fileName = `${commandName}${extension}`;
576
- await writeFile3((0, import_path4.join)(targetDir, agentDir, commandsDir, fileName), content);
577
- }
578
- };
579
- var geminiContentStrategy = new GeminiContentStrategy();
580
- var geminiFileStrategy = new GeminiFileStrategy();
581
-
582
- // src/generators/gemini/config.ts
583
- var geminiConfig = {
584
- agentType: "gemini",
585
- agentDir: ".gemini",
586
- commandsDir: "commands/conductor",
587
- displayName: "Gemini CLI",
588
- protocolFilename: "GEMINI.md",
589
- extension: ".toml",
590
- usesPrefix: false,
591
- strategy: {
592
- content: geminiContentStrategy,
593
- file: geminiFileStrategy
594
- }
595
- };
596
-
597
593
  // src/generators/gemini/generator.ts
598
594
  var GeminiGenerator = class {
599
595
  generator = createGenerator(geminiConfig);