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
@@ -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/default/strategy.ts
76
- import { join as join2 } from "path";
77
- import fs2 from "fs-extra";
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/default/strategy.ts
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 = parse(templateContent);
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 writeFile(join2(targetDir, agentDir, commandsDir, fileName), content);
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 join3 } from "path";
357
+ import { join as join4 } from "path";
210
358
  import select2 from "@inquirer/select";
211
- import fs3 from "fs-extra";
212
- var { existsSync, ensureDir, writeFile: writeFile2, copy } = fs3;
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 = join3(targetDir, agentDir, commandsDir, setupFileName);
226
- const conductorPath = join3(targetDir, agentDir, "conductor");
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 = join3(targetDir, agentDir);
237
- const targetCommandsDir = join3(agentPath, commandsDir);
238
- let installPath = join3(agentDir, "conductor");
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(join3(agentPath, "conductor"));
391
+ await ensureDir(join4(agentPath, "conductor"));
244
392
  const templateRoot = await getTemplateRoot(repo, branch);
245
393
  try {
246
- const templateSource = join3(templateRoot, "templates");
247
- const templateDest = join3(agentPath, "conductor", "templates");
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 = join3(templateRoot, "GEMINI.md");
256
- const protocolDest = join3(targetDir, agentDir, protocolFilename);
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);