conductor-init 1.0.0-6 → 1.0.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 CHANGED
@@ -17,7 +17,7 @@
17
17
  </a>
18
18
  </p>
19
19
  <p>
20
- <strong>English</strong> | <a href="./README.zh-CN.md">简体中文</a> | <a href="./README.ja.md">日本語</a> | <a href="./README_ko.md">한국어</a>
20
+ <strong>English</strong> | <a href="./README_zh.md">简体中文</a> | <a href="./README_ja.md">日本語</a> | <a href="./README_ko.md">한국어</a>
21
21
  </p>
22
22
  <br>
23
23
  <blockquote>
@@ -38,10 +38,10 @@ npm create conductor-flow
38
38
  - **Claude Code**
39
39
  - **Antigravity**
40
40
  - **Cursor**
41
- - **Github Copilot**,
41
+ - **Github Copilot**
42
42
  - **Codex**
43
43
  - **Windsurf**
44
- - **Cline**,
44
+ - **Cline**
45
45
  - **Kilo Code**
46
46
  - **Roo Code**
47
47
  - **Qwen Code**
@@ -84,7 +84,7 @@ You will be prompted to select your target environment:
84
84
  Claude Code (CLAUDE.md, .claude/commands)
85
85
  Antigravity (GEMINI.md, .agent/workflows)
86
86
  Cursor (AGENTS.md, .cursor/commands)
87
- VS Code Copilot (AGENTS.md, .github/prompts)
87
+ Github Copilot (AGENTS.md, .github/prompts)
88
88
  Codex (AGENTS.md, .codex/prompts)
89
89
  Windsurf (AGENTS.md, .windsurf/workflows)
90
90
  ? Select installation method:
@@ -117,7 +117,7 @@ Positionals:
117
117
  Options:
118
118
  -a, --agent Specify the coding agent
119
119
  [string] [choices: "opencode", "claude-code", "antigravity", "cursor",
120
- "vscode-copilot", "codex", "windsurf", "cline", "kilo-code", "roo-code",
120
+ "github-copilot", "codex", "windsurf", "cline", "kilo-code", "roo-code",
121
121
  "qwen-code", "factory-droid", "gemini"]
122
122
  -r, --repo Git repository URL for conductor. If used without value,
123
123
  defaults to official repository. [string]
@@ -1,61 +1,61 @@
1
- import To from"yargs";import{hideBin as Io}from"yargs/helpers";import Se from"@inquirer/select";var D={agentType:"opencode",agentDir:".opencode",commandsDir:"commands",displayName:"OpenCode",protocolFilename:"AGENTS.md",description:"The open source AI coding agent"};var L={agentType:"claude-code",agentDir:".claude",commandsDir:"commands",displayName:"Claude Code",protocolFilename:"CLAUDE.md",description:"Anthropic's coding assistant"};var k={agentType:"antigravity",agentDir:".agent",commandsDir:"workflows",displayName:"Antigravity",protocolFilename:"GEMINI.md",description:"Google's agentic coding assistant"};var M={agentType:"cursor",agentDir:".cursor",commandsDir:"commands",displayName:"Cursor",protocolFilename:"AGENTS.md",description:"Cursor IDE's AI agent"};import{parse as Dt}from"smol-toml";import{readFile as Gt}from"fs/promises";import{join as Be,resolve as Le}from"path";import{fileURLToPath as $t}from"url";import{homedir as Ft}from"os";import{execSync as ke}from"child_process";import{createHash as Rt}from"crypto";import $ from"fs-extra";var Me=$t(new URL(".",import.meta.url)),B="https://github.com/gemini-cli-extensions/conductor",U="main";function Ue(o=B,e=U){let t=Rt("md5").update(`${o}#${e}`).digest("hex");return Be(Ft(),".gemini/cache/conductor",t)}async function Pt(o=B,e=U){let t=Ue(o,e);if($.existsSync(t))try{console.log(`Updating templates from ${o} [${e}]...`),ke("git pull --rebase",{cwd:t,stdio:["ignore","ignore","pipe"]})}catch(r){console.warn(`Failed to update templates (using cached version): ${r instanceof Error?r.message:String(r)}`)}else{await $.ensureDir(t),console.log(`Downloading templates from ${o} [${e}]...`);try{ke(`git clone ${o} --branch ${e} --depth 1 .`,{cwd:t,stdio:["ignore","ignore","pipe"]})}catch(r){throw await $.remove(t),new Error(`Failed to clone templates: ${r instanceof Error?r.message:String(r)}`)}}}function u(o,e){return o.replace(/\{(\w+)\}/g,(t,r)=>Object.prototype.hasOwnProperty.call(e,r)?e[r]:t)}function jt(){let o=Le(Me,"conductor");return $.existsSync(o)?o:Le(Me,"../conductor")}async function Ve(o,e){if(!o){let t=jt();if(await $.pathExists(t))return console.log("use bundled Conductor templates"),t}return await Pt(o,e),Ue(o,e)}async function He(o,e){let t=Be(e,o);return Gt(t,"utf-8")}var de=class{process(e,t){let{installPath:r,agentType:n,fixedAgent:i}=t,s=Dt(e);if(!s.prompt)return null;let c=s.prompt;c=c.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g,r);let p=u(c,{agent_type:n});return`---
1
+ import To from"yargs";import{hideBin as vo}from"yargs/helpers";import Se from"@inquirer/select";var D={agentType:"opencode",agentDir:".opencode",commandsDir:"commands",displayName:"OpenCode",protocolFilename:"AGENTS.md",description:"The open source AI coding agent"};var L={agentType:"claude-code",agentDir:".claude",commandsDir:"commands",displayName:"Claude Code",protocolFilename:"CLAUDE.md",description:"Anthropic's coding assistant"};var k={agentType:"antigravity",agentDir:".agent",commandsDir:"workflows",displayName:"Antigravity",protocolFilename:"GEMINI.md",description:"Google's agentic coding assistant"};var M={agentType:"cursor",agentDir:".cursor",commandsDir:"commands",displayName:"Cursor",protocolFilename:"AGENTS.md",description:"Cursor IDE's AI agent"};import{parse as Dt}from"smol-toml";import{readFile as Gt}from"fs/promises";import{join as Be,resolve as Le}from"path";import{fileURLToPath as $t}from"url";import{homedir as Ft}from"os";import{execSync as ke}from"child_process";import{createHash as Rt}from"crypto";import $ from"fs-extra";var Me=$t(new URL(".",import.meta.url)),B="https://github.com/gemini-cli-extensions/conductor",U="main";function Ue(o=B,e=U){let t=Rt("md5").update(`${o}#${e}`).digest("hex");return Be(Ft(),".gemini/cache/conductor",t)}async function Pt(o=B,e=U){let t=Ue(o,e);if($.existsSync(t))try{console.log(`Updating templates from ${o} [${e}]...`),ke("git pull --rebase",{cwd:t,stdio:["ignore","ignore","pipe"]})}catch(r){console.warn(`Failed to update templates (using cached version): ${r instanceof Error?r.message:String(r)}`)}else{await $.ensureDir(t),console.log(`Downloading templates from ${o} [${e}]...`);try{ke(`git clone ${o} --branch ${e} --depth 1 .`,{cwd:t,stdio:["ignore","ignore","pipe"]})}catch(r){throw await $.remove(t),new Error(`Failed to clone templates: ${r instanceof Error?r.message:String(r)}`)}}}function u(o,e){return o.replace(/\{(\w+)\}/g,(t,r)=>Object.prototype.hasOwnProperty.call(e,r)?e[r]:t)}function jt(){let o=Le(Me,"conductor");return $.existsSync(o)?o:Le(Me,"../conductor")}async function Ve(o,e){if(!o){let t=jt();if(await $.pathExists(t))return console.log("use bundled Conductor templates"),t}return await Pt(o,e),Ue(o,e)}async function He(o,e){let t=Be(e,o);return Gt(t,"utf-8")}var de=class{process(e,t){let{installPath:r,agentType:n,fixedAgent:i}=t,s=Dt(e);if(!s.prompt)return null;let p=s.prompt;p=p.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g,r);let c=u(p,{agent_type:n});return`---
2
2
  description: ${s.description||""}
3
3
  agent: ${i}
4
4
  ---
5
- ${p}`}},Ye=new de;var V={agentType:"vscode-copilot",agentDir:".github",commandsDir:"prompts",displayName:"VS Code Copilot",protocolFilename:"AGENTS.md",description:"VS Code Copilot's Prompt Files",extension:".prompt.md",fixedAgent:"agent",strategy:{content:Ye}};var H={agentType:"codex",agentDir:".codex",commandsDir:"prompts",displayName:"Codex",protocolFilename:"AGENTS.md",description:"OpenAI Codex Agent",extension:".md"};var Y={agentType:"windsurf",agentDir:".windsurf",commandsDir:"workflows",displayName:"Windsurf",protocolFilename:"AGENTS.md",description:"Windsurf Cascade AI Agent"};import{parse as Lt}from"smol-toml";var ue=class{process(e,t){let{installPath:r,agentType:n,commandName:i}=t,s=Lt(e);if(!s.prompt)return null;let c=s.prompt;c=c.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g,r);let p=u(c,{agent_type:n});return`# Conductor ${i?i.charAt(0).toUpperCase()+i.slice(1):"Command"}${s.description?`
5
+ ${c}`}},Ye=new de;var V={agentType:"github-copilot",agentDir:".github",commandsDir:"prompts",displayName:"Github Copilot",protocolFilename:"AGENTS.md",description:"Github Copilot's Prompt Files",extension:".prompt.md",fixedAgent:"agent",strategy:{content:Ye}};var H={agentType:"codex",agentDir:".codex",commandsDir:"prompts",displayName:"Codex",protocolFilename:"AGENTS.md",description:"OpenAI Codex Agent",extension:".md"};var Y={agentType:"windsurf",agentDir:".windsurf",commandsDir:"workflows",displayName:"Windsurf",protocolFilename:"AGENTS.md",description:"Windsurf Cascade AI Agent"};import{parse as Lt}from"smol-toml";var ue=class{process(e,t){let{installPath:r,agentType:n,commandName:i}=t,s=Lt(e);if(!s.prompt)return null;let p=s.prompt;p=p.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g,r);let c=u(p,{agent_type:n});return`# Conductor ${i?i.charAt(0).toUpperCase()+i.slice(1):"Command"}${s.description?`
6
6
 
7
7
  `+s.description+`
8
8
 
9
9
  `:`
10
10
 
11
- `}${p}`}},We=new ue;var W={agentType:"cline",agentDir:".clinerules",commandsDir:"workflows",displayName:"Cline",protocolFilename:"AGENTS.md",description:"Cline AI coding assistant",strategy:{content:We}};import{join as kt}from"path";import Mt from"fs-extra";import{parse as Ut}from"smol-toml";var{writeFile:Bt}=Mt,ye=class{process(e,t){let{installPath:r,agentType:n}=t;if(!Ut(e).prompt)return null;let s=e.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g,r);return u(s,{agent_type:n})}},Ce=class{async write(e){let{targetDir:t,agentDir:r,commandsDir:n,commandName:i,extension:s,content:c}=e,p=`${i}${s}`;await Bt(kt(t,r,n,p),c)}},qe=new ye,ze=new Ce;var q={agentType:"gemini",agentDir:".gemini",commandsDir:"commands/conductor",displayName:"Gemini CLI",protocolFilename:"GEMINI.md",description:"Google Gemini CLI agent",extension:".toml",usesPrefix:!1,strategy:{content:qe,file:ze}};import{parse as Vt}from"smol-toml";var xe=class{process(e,t){let{installPath:r,agentType:n,commandName:i}=t,s=Vt(e);if(!s.prompt)return null;let c=s.prompt;c=c.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g,r);let p=u(c,{agent_type:n});return`# Conductor ${i?i.charAt(0).toUpperCase()+i.slice(1):"Command"}${s.description?`
11
+ `}${c}`}},We=new ue;var W={agentType:"cline",agentDir:".clinerules",commandsDir:"workflows",displayName:"Cline",protocolFilename:"AGENTS.md",description:"Cline AI coding assistant",strategy:{content:We}};import{join as kt}from"path";import Mt from"fs-extra";import{parse as Ut}from"smol-toml";var{writeFile:Bt}=Mt,ye=class{process(e,t){let{installPath:r,agentType:n}=t;if(!Ut(e).prompt)return null;let s=e.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g,r);return u(s,{agent_type:n})}},Ce=class{async write(e){let{targetDir:t,agentDir:r,commandsDir:n,commandName:i,extension:s,content:p}=e,c=`${i}${s}`;await Bt(kt(t,r,n,c),p)}},qe=new ye,ze=new Ce;var q={agentType:"gemini",agentDir:".gemini",commandsDir:"commands/conductor",displayName:"Gemini CLI",protocolFilename:"GEMINI.md",description:"Google Gemini CLI agent",extension:".toml",usesPrefix:!1,strategy:{content:qe,file:ze}};import{parse as Vt}from"smol-toml";var xe=class{process(e,t){let{installPath:r,agentType:n,commandName:i}=t,s=Vt(e);if(!s.prompt)return null;let p=s.prompt;p=p.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g,r);let c=u(p,{agent_type:n});return`# Conductor ${i?i.charAt(0).toUpperCase()+i.slice(1):"Command"}${s.description?`
12
12
 
13
13
  `+s.description+`
14
14
 
15
15
  `:`
16
16
 
17
- `}${p}`}},Ke=new xe;var z={agentType:"kilo-code",agentDir:".kilocode",commandsDir:"workflows",displayName:"Kilo Code",protocolFilename:"AGENTS.md",description:"Kilo Code AI coding assistant",strategy:{content:Ke}};import{parse as Ht}from"smol-toml";var _e=class{process(e,t){let{installPath:r,agentType:n,commandName:i}=t,s=Ht(e);if(!s.prompt)return null;let c=s.prompt;c=c.replace("__$$CODE_AGENT_INSTALL_PATH$$__",r);let p=u(c,{agent_type:n});return`# Conductor ${i?i.charAt(0).toUpperCase()+i.slice(1):"Command"}${s.description?`
17
+ `}${c}`}},Ke=new xe;var z={agentType:"kilo-code",agentDir:".kilocode",commandsDir:"workflows",displayName:"Kilo Code",protocolFilename:"AGENTS.md",description:"Kilo Code AI coding assistant",strategy:{content:Ke}};import{parse as Ht}from"smol-toml";var _e=class{process(e,t){let{installPath:r,agentType:n,commandName:i}=t,s=Ht(e);if(!s.prompt)return null;let p=s.prompt;p=p.replace("__$$CODE_AGENT_INSTALL_PATH$$__",r);let c=u(p,{agent_type:n});return`# Conductor ${i?i.charAt(0).toUpperCase()+i.slice(1):"Command"}${s.description?`
18
18
 
19
19
  `+s.description+`
20
20
 
21
21
  `:`
22
22
 
23
- `}${p}`}},Xe=new _e;var K={agentType:"roo-code",agentDir:".roo",commandsDir:"commands",displayName:"Roo Code",protocolFilename:"AGENTS.md",description:"Roo Code AI coding assistant",strategy:{content:Xe}};import{parse as Yt}from"smol-toml";var he=class{process(e,t){let{installPath:r,agentType:n}=t,i=Yt(e);if(!i.prompt)return null;let s=i.prompt;s=s.replace("__$$CODE_AGENT_INSTALL_PATH$$__",r);let c=u(s,{agent_type:n}),p="";return i.description&&(p=`---
23
+ `}${c}`}},Xe=new _e;var K={agentType:"roo-code",agentDir:".roo",commandsDir:"commands",displayName:"Roo Code",protocolFilename:"AGENTS.md",description:"Roo Code AI coding assistant",strategy:{content:Xe}};import{parse as Yt}from"smol-toml";var he=class{process(e,t){let{installPath:r,agentType:n}=t,i=Yt(e);if(!i.prompt)return null;let s=i.prompt;s=s.replace("__$$CODE_AGENT_INSTALL_PATH$$__",r);let p=u(s,{agent_type:n}),c="";return i.description&&(c=`---
24
24
  description: "${i.description.replace(/"/g,'\\"')}"
25
25
  ---
26
26
 
27
- `),`${p}${c}`}},Je=new he;var X={agentType:"qwen-code",agentDir:".qwen",commandsDir:"commands",displayName:"Qwen Code",protocolFilename:"AGENTS.md",description:"Qwen Code AI coding assistant",strategy:{content:Je}};import{parse as Wt}from"smol-toml";var Ae=class{process(e,t){let{installPath:r,agentType:n}=t,i=Wt(e);if(!i.prompt)return null;let s=i.prompt;s=s.replace("__$$CODE_AGENT_INSTALL_PATH$$__",r);let c=u(s,{agent_type:n}),p="";return i.description&&(p=`---
27
+ `),`${c}${p}`}},Je=new he;var X={agentType:"qwen-code",agentDir:".qwen",commandsDir:"commands",displayName:"Qwen Code",protocolFilename:"AGENTS.md",description:"Qwen Code AI coding assistant",strategy:{content:Je}};import{parse as Wt}from"smol-toml";var Ae=class{process(e,t){let{installPath:r,agentType:n}=t,i=Wt(e);if(!i.prompt)return null;let s=i.prompt;s=s.replace("__$$CODE_AGENT_INSTALL_PATH$$__",r);let p=u(s,{agent_type:n}),c="";return i.description&&(c=`---
28
28
  description: "${i.description.replace(/"/g,'\\"')}"
29
29
  ---
30
30
 
31
- `),`${p}${c}`}},Qe=new Ae;var J={agentType:"factory-droid",agentDir:".factory",commandsDir:"commands",displayName:"Factory Droid",protocolFilename:"AGENTS.md",description:"Factory Droid AI coding assistant",strategy:{content:Qe}};var b=[D,L,k,M,V,H,Y,W,z,K,X,J,q];async function Ze(o){let e=o==="codex",t=o==="cline";return await Se({message:"Select installation method:",choices:e?[{name:"Global (User Home Directory)",value:"global"}]:[{name:"Project (Current Directory)",value:"project"}],default:e?"global":"project"})}async function et(){let o=b.map(t=>{let{displayName:r,agentType:n,protocolFilename:i,agentDir:s,commandsDir:c,description:p}=t,y=p||`${r} agent`,_=`\x1B[90m(${i}, ${s}/${c})\x1B[0m`;return{name:`${r} ${_}`,value:n,description:y}});return await Se({message:"Select your coding agent:",choices:o,default:"opencode",loop:!0})}async function tt(){return await Se({message:"Configure git ignore for Conductor files?",choices:[{name:"Add to .gitignore",value:"gitignore",description:"Add Conductor entries to the project's .gitignore file"},{name:"Add to .git/info/exclude",value:"exclude",description:"Add Conductor entries to .git/info/exclude (local only, not shared)"},{name:"Remove existing entries",value:"none",description:"Remove Conductor entries from both .gitignore and .git/info/exclude"},{name:"Don't configure git ignore",value:void 0,description:"Skip git ignore configuration"}],default:void 0})}import{join as qt}from"path";import zt from"fs-extra";import{parse as Xt}from"smol-toml";var F="conductor-";var{writeFile:Kt}=zt,we=class{process(e,t){let{installPath:r,agentType:n}=t,i=Xt(e);if(!i.prompt)return null;let s=i.prompt;s=s.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g,r),s=s.replace(/\/conductor:/g,`/${F}`);let c=u(s,{agent_type:n});return i.description?`---
31
+ `),`${c}${p}`}},Qe=new Ae;var J={agentType:"factory-droid",agentDir:".factory",commandsDir:"commands",displayName:"Factory Droid",protocolFilename:"AGENTS.md",description:"Factory Droid AI coding assistant",strategy:{content:Qe}};var I=[D,L,k,M,V,H,Y,W,z,K,X,J,q];async function Ze(o){let e=o==="codex",t=o==="cline";return await Se({message:"Select installation method:",choices:e?[{name:"Global (User Home Directory)",value:"global"}]:[{name:"Project (Current Directory)",value:"project"}],default:e?"global":"project"})}async function et(){let o=I.map(t=>{let{displayName:r,agentType:n,protocolFilename:i,agentDir:s,commandsDir:p,description:c}=t,y=c||`${r} agent`,_=`\x1B[90m(${i}, ${s}/${p})\x1B[0m`;return{name:`${r} ${_}`,value:n,description:y}});return await Se({message:"Select your coding agent:",choices:o,default:"opencode",loop:!0})}async function tt(){return await Se({message:"Configure git ignore for Conductor files?",choices:[{name:"Add to .gitignore",value:"gitignore",description:"Add Conductor entries to the project's .gitignore file"},{name:"Add to .git/info/exclude",value:"exclude",description:"Add Conductor entries to .git/info/exclude (local only, not shared)"},{name:"Remove existing entries",value:"none",description:"Remove Conductor entries from both .gitignore and .git/info/exclude"},{name:"Don't configure git ignore",value:void 0,description:"Skip git ignore configuration"}],default:void 0})}import{join as qt}from"path";import zt from"fs-extra";import{parse as Xt}from"smol-toml";var F="conductor-";var{writeFile:Kt}=zt,we=class{process(e,t){let{installPath:r,agentType:n}=t,i=Xt(e);if(!i.prompt)return null;let s=i.prompt;s=s.replace(/__\$\$CODE_AGENT_INSTALL_PATH\$\$__/g,r),s=s.replace(/\/conductor:/g,`/${F}`);let p=u(s,{agent_type:n});return i.description?`---
32
32
  description: ${i.description}
33
33
  ---
34
- ${c}`:c}},ve=class{async write(e){let{targetDir:t,agentDir:r,commandsDir:n,commandName:i,extension:s,content:c}=e,p=`${F}${i}${s}`;await Kt(qt(t,r,n,p),c)}},ot=new we,rt=new ve;import{join as C}from"path";import Jt from"@inquirer/select";import it from"fs-extra";var{existsSync:T,ensureDir:nt,copy:Te}=it,v=class{constructor(e){this.config=e}async validate(e,t){if(!T(e))throw new Error(`Target directory does not exist: ${e}`);let{agentDir:r,commandsDir:n,displayName:i,extension:s,usesPrefix:c}=this.config,_=`${c!==!1?F:""}setup${s||".md"}`,h=C(e,r,n,_),A=C(e,r,"conductor");if(T(A)&&T(h))throw new Error(`Conductor (${i}) is already installed in: ${e}`);return e}async generate(e,t,r,n,i){let{agentDir:s,commandsDir:c,agentType:p}=this.config,y=C(e,s),_=C(y,c),h=C(s,"conductor");t==="global"&&(h=`~/${s}/conductor`),await nt(_),await nt(C(y,"conductor"));let A=await Ve(r,n);try{let f=C(A,"templates"),S=C(y,"conductor","templates");await Te(f,S)}catch(f){console.warn("Failed to copy templates directory:",f)}let{protocolFilename:N}=this.config;if(N)try{let f=C(A,"GEMINI.md"),S=C(e,N);if(T(f)){let I=!0;T(S)&&!i&&(I=await Jt({message:`The protocol file '${N}' already exists. Do you want to overwrite it?`,choices:[{value:!0,name:"Overwrite"},{value:!1,name:"Skip"}]})),I&&await Te(f,S)}}catch(f){console.warn("Failed to handle protocol file:",f)}let G=[];try{let f=C(A,"commands/conductor");if(T(f)){let S=await it.readdir(f);Array.isArray(S)&&(G=S.filter(I=>I.endsWith(".toml")).map(I=>I.replace(/\.toml$/,"")))}}catch(f){console.warn("Failed to discover commands:",f)}G.length===0?(console.log("No commands discovered, using default commands"),G=["setup","newTrack","implement","status","revert","review"]):console.log(`Discovered commands: ${G.join(", ")}`);let Ot=this.config.extension||".md",Nt=this.config.fixedAgent;for(let f of G)try{let S=await He(C("commands","conductor",`${f}.toml`),A),De=(this.config.strategy?.content||ot).process(S,{installPath:h,agentType:p,fixedAgent:Nt,commandName:f});De&&await(this.config.strategy?.file||rt).write({targetDir:e,agentDir:s,commandsDir:c,commandName:f,extension:Ot,content:De})}catch(S){console.warn(`Failed to process ${f}:`,S)}let Pe=C(A,"templates/workflow.md"),je=C(e,"conductor/workflow.md");if(T(je)&&T(Pe))try{await Te(Pe,je),console.log("\u2714 conductor/workflow.md synced")}catch(f){console.warn("Failed to handle workflow file:",f)}else console.warn("Workflow template not found, skipping workflow file sync")}};function d(o){return new v(o)}var Q=class{generator=d(D);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};var Z=class{generator=d(L);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};var ee=class{generator=d(k);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};var te=class{generator=d(M);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};var oe=class{generator=d(V);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};import{homedir as st}from"os";var re=class{generator=d(H);validate(e,t){return t==="global"&&(e=st()),this.generator.validate(e,t)}generate(e,t,r,n,i){return t==="global"&&(e=st()),this.generator.generate(e,t,r,n,i)}};var ne=class{generator=d(Y);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};var ie=class{generator=d(W);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};var se=class{generator=d(q);async validate(e,t){if(t==="global")throw new Error("Gemini CLI agent only supports project-level installation");return this.generator.validate(e,t)}async generate(e,t,r,n,i){if(t==="global")throw new Error("Gemini CLI agent only supports project-level installation");return this.generator.generate(e,t,r,n,i)}};var ae=class{generator=d(z);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};var le=class extends v{constructor(){super(K)}};var ce=class extends v{constructor(){super(X)}};var pe=class extends v{constructor(){super(J)}};function at(o){switch(o){case"claude-code":return new Z;case"antigravity":return new ee;case"cursor":return new te;case"vscode-copilot":return new oe;case"codex":return new re;case"windsurf":return new ne;case"cline":return new ie;case"kilo-code":return new ae;case"roo-code":return new le;case"qwen-code":return new ce;case"factory-droid":return new pe;case"gemini":return new se;default:return new Q}}import{resolve as no}from"path";import io from"@inquirer/select";import{join as Ie}from"path";import{readFile as be,writeFile as lt,access as Qt,mkdir as Zt}from"fs/promises";import{constants as eo}from"fs";var ct="# Conductor";function pt(o){let e=b.find(r=>r.agentType===o);if(!e)return[];let t=[];return e.agentDir&&t.push(e.agentDir),e.protocolFilename&&t.push(e.protocolFilename),t}function R(o){return o.replace(/\/+$/,"")}async function Ee(o){try{return await Qt(o,eo.F_OK),!0}catch{return!1}}async function to(o,e){let t=[],r=[];if(!await Ee(o))return{existing:[],missing:[...e]};let i=(await be(o,"utf-8")).split(`
35
- `).map(s=>R(s.trim()));for(let s of e){let c=R(s);i.includes(c)?t.push(s):r.push(s)}return{existing:t,missing:r}}async function mt(o,e){let{existing:t,missing:r}=await to(o,e);if(r.length===0)return{added:[],skipped:t};let n="";await Ee(o)&&(n=await be(o,"utf-8")),n.length>0&&!n.endsWith(`
34
+ ${p}`:p}},be=class{async write(e){let{targetDir:t,agentDir:r,commandsDir:n,commandName:i,extension:s,content:p}=e,c=`${F}${i}${s}`;await Kt(qt(t,r,n,c),p)}},ot=new we,rt=new be;import{join as C}from"path";import Jt from"@inquirer/select";import it from"fs-extra";var{existsSync:T,ensureDir:nt,copy:Te}=it,b=class{constructor(e){this.config=e}async validate(e,t){if(!T(e))throw new Error(`Target directory does not exist: ${e}`);let{agentDir:r,commandsDir:n,displayName:i,extension:s,usesPrefix:p}=this.config,_=`${p!==!1?F:""}setup${s||".md"}`,h=C(e,r,n,_),A=C(e,r,"conductor");if(T(A)&&T(h))throw new Error(`Conductor (${i}) is already installed in: ${e}`);return e}async generate(e,t,r,n,i){let{agentDir:s,commandsDir:p,agentType:c}=this.config,y=C(e,s),_=C(y,p),h=C(s,"conductor");t==="global"&&(h=`~/${s}/conductor`),await nt(_),await nt(C(y,"conductor"));let A=await Ve(r,n);try{let f=C(A,"templates"),S=C(y,"conductor","templates");await Te(f,S)}catch(f){console.warn("Failed to copy templates directory:",f)}let{protocolFilename:N}=this.config;if(N)try{let f=C(A,"GEMINI.md"),S=C(e,N);if(T(f)){let v=!0;T(S)&&!i&&(v=await Jt({message:`The protocol file '${N}' already exists. Do you want to overwrite it?`,choices:[{value:!0,name:"Overwrite"},{value:!1,name:"Skip"}]})),v&&await Te(f,S)}}catch(f){console.warn("Failed to handle protocol file:",f)}let G=[];try{let f=C(A,"commands/conductor");if(T(f)){let S=await it.readdir(f);Array.isArray(S)&&(G=S.filter(v=>v.endsWith(".toml")).map(v=>v.replace(/\.toml$/,"")))}}catch(f){console.warn("Failed to discover commands:",f)}G.length===0?(console.log("No commands discovered, using default commands"),G=["setup","newTrack","implement","status","revert","review"]):console.log(`Discovered commands: ${G.join(", ")}`);let Ot=this.config.extension||".md",Nt=this.config.fixedAgent;for(let f of G)try{let S=await He(C("commands","conductor",`${f}.toml`),A),De=(this.config.strategy?.content||ot).process(S,{installPath:h,agentType:c,fixedAgent:Nt,commandName:f});De&&await(this.config.strategy?.file||rt).write({targetDir:e,agentDir:s,commandsDir:p,commandName:f,extension:Ot,content:De})}catch(S){console.warn(`Failed to process ${f}:`,S)}let Pe=C(A,"templates/workflow.md"),je=C(e,"conductor/workflow.md");if(T(je)&&T(Pe))try{await Te(Pe,je),console.log("\u2714 conductor/workflow.md synced")}catch(f){console.warn("Failed to handle workflow file:",f)}else console.warn("Workflow template not found, skipping workflow file sync")}};function d(o){return new b(o)}var Q=class{generator=d(D);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};var Z=class{generator=d(L);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};var ee=class{generator=d(k);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};var te=class{generator=d(M);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};var oe=class{generator=d(V);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};import{homedir as st}from"os";var re=class{generator=d(H);validate(e,t){return t==="global"&&(e=st()),this.generator.validate(e,t)}generate(e,t,r,n,i){return t==="global"&&(e=st()),this.generator.generate(e,t,r,n,i)}};var ne=class{generator=d(Y);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};var ie=class{generator=d(W);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};var se=class{generator=d(q);async validate(e,t){if(t==="global")throw new Error("Gemini CLI agent only supports project-level installation");return this.generator.validate(e,t)}async generate(e,t,r,n,i){if(t==="global")throw new Error("Gemini CLI agent only supports project-level installation");return this.generator.generate(e,t,r,n,i)}};var ae=class{generator=d(z);validate(e,t){return this.generator.validate(e,t)}generate(e,t,r,n,i){return this.generator.generate(e,t,r,n,i)}};var le=class extends b{constructor(){super(K)}};var pe=class extends b{constructor(){super(X)}};var ce=class extends b{constructor(){super(J)}};function at(o){switch(o){case"claude-code":return new Z;case"antigravity":return new ee;case"cursor":return new te;case"github-copilot":return new oe;case"codex":return new re;case"windsurf":return new ne;case"cline":return new ie;case"kilo-code":return new ae;case"roo-code":return new le;case"qwen-code":return new pe;case"factory-droid":return new ce;case"gemini":return new se;default:return new Q}}import{resolve as no}from"path";import io from"@inquirer/select";import{join as ve}from"path";import{readFile as Ie,writeFile as lt,access as Qt,mkdir as Zt}from"fs/promises";import{constants as eo}from"fs";var pt="# Conductor";function ct(o){let e=I.find(r=>r.agentType===o);if(!e)return[];let t=[];return e.agentDir&&t.push(e.agentDir),e.protocolFilename&&t.push(e.protocolFilename),t}function R(o){return o.replace(/\/+$/,"")}async function Ee(o){try{return await Qt(o,eo.F_OK),!0}catch{return!1}}async function to(o,e){let t=[],r=[];if(!await Ee(o))return{existing:[],missing:[...e]};let i=(await Ie(o,"utf-8")).split(`
35
+ `).map(s=>R(s.trim()));for(let s of e){let p=R(s);i.includes(p)?t.push(s):r.push(s)}return{existing:t,missing:r}}async function gt(o,e){let{existing:t,missing:r}=await to(o,e);if(r.length===0)return{added:[],skipped:t};let n="";await Ee(o)&&(n=await Ie(o,"utf-8")),n.length>0&&!n.endsWith(`
36
36
  `)&&(n+=`
37
37
  `),n+=`
38
- ${ct}
38
+ ${pt}
39
39
  `;for(let s of r)n+=`${s}
40
- `;let i=Ie(o,"..");return await Zt(i,{recursive:!0}),await lt(o,n,"utf-8"),{added:r,skipped:t}}async function Oe(o,e){if(!await Ee(o))return{removed:[]};let r=(await be(o,"utf-8")).split(`
41
- `),n=e.map(R),i=[],s=[];for(let _ of r){let h=R(_.trim());if(h!==ct){if(n.includes(h)){let A=e.find(N=>R(N)===h);A&&!i.includes(A)&&i.push(A);continue}s.push(_)}}let c=[],p=!1;for(let _ of s){let h=_.trim()==="";h&&p||(c.push(_),p=h)}for(;c.length>0&&c[c.length-1].trim()==="";)c.pop();let y=c.length>0?c.join(`
40
+ `;let i=ve(o,"..");return await Zt(i,{recursive:!0}),await lt(o,n,"utf-8"),{added:r,skipped:t}}async function Oe(o,e){if(!await Ee(o))return{removed:[]};let r=(await Ie(o,"utf-8")).split(`
41
+ `),n=e.map(R),i=[],s=[];for(let _ of r){let h=R(_.trim());if(h!==pt){if(n.includes(h)){let A=e.find(N=>R(N)===h);A&&!i.includes(A)&&i.push(A);continue}s.push(_)}}let p=[],c=!1;for(let _ of s){let h=_.trim()==="";h&&c||(p.push(_),c=h)}for(;p.length>0&&p[p.length-1].trim()==="";)p.pop();let y=p.length>0?p.join(`
42
42
  `)+`
43
- `:"";return await lt(o,y,"utf-8"),{removed:i}}function me(o,e){return e==="gitignore"?Ie(o,".gitignore"):Ie(o,".git","info","exclude")}async function gt(o,e,t){let r=pt(t);return r.length===0?{action:"none",entries:[],message:`No git ignore entries found for agent ${t}`}:e==="none"?await ro(o,r):await oo(o,e,r)}async function oo(o,e,t){let r=me(o,e),n=await mt(r,t);if(n.added.length===0)return{action:"skipped",entries:n.skipped,message:"Git ignore entries already present, skipping.",targetFiles:[r]};let i=e==="gitignore"?".gitignore":".git/info/exclude";return{action:"added",entries:n.added,message:`Added ${n.added.length} entries to ${i}: ${n.added.join(", ")}`,targetFiles:[r]}}async function ro(o,e){let t=me(o,"gitignore"),r=me(o,"exclude"),n=await Oe(t,e),i=await Oe(r,e),s=[...new Set([...n.removed,...i.removed])];if(s.length===0)return{action:"none",entries:[],message:"No Conductor git ignore entries found."};let c=[],p=[];return n.removed.length>0&&(c.push(t),p.push(`.gitignore (${n.removed.length})`)),i.removed.length>0&&(c.push(r),p.push(`.git/info/exclude (${i.removed.length})`)),{action:"removed",entries:s,message:`Removed entries from: ${p.join(", ")}`,targetFiles:c}}async function ft(o){let e=no(process.cwd(),o.path),t=o.force??!1;try{console.log(`Initializing Conductor in: ${e}`);let r;o.agent?(r=o.agent,console.log(`Using provided agent: ${r}`)):(console.log("Step 1: Prompting for agent selection..."),r=await et(),console.log(`\u2714 Selected agent: ${r}`));let n;o.scope?(n=o.scope,console.log(`Using provided scope: ${n}`)):n=await Ze(r),console.log(`\u2714 Selected scope: ${n}`);let i=o.gitIgnore;o.gitIgnore&&n==="global"?(console.warn("\u26A0 --git-ignore flag is only supported for project scope. Skipping git ignore configuration."),i=void 0):!o.gitIgnore&&n==="project"&&(i=await tt());let s=at(r);console.log(`
44
- Step 3: Validating project directory...`);let c;try{c=await s.validate(e,n)}catch(p){if(p instanceof Error&&p.message.includes("already installed"))if(t)console.log("\u26A0 Force mode: Overwriting existing installation"),c=e;else if(await io({message:`${p.message}
45
- Do you want to overwrite the existing installation?`,choices:[{value:!0,name:"Yes, overwrite"},{value:!1,name:"No, cancel"}]}))console.log("Overwriting existing installation..."),c=e;else{console.log("Installation cancelled.");return}else throw p}if(console.log(`\u2714 Validation complete: ${c}`),console.log(`
46
- Step 4: Generating files...`),await s.generate(c,n,o.repo,o.branch,t),console.log("\u2714 Files generated"),i){console.log(`
47
- Step 5: Configuring git ignore...`);let p=await gt(c,i,r);console.log(`\u2714 ${p.message}`)}console.log(`
43
+ `:"";return await lt(o,y,"utf-8"),{removed:i}}function ge(o,e){return e==="gitignore"?ve(o,".gitignore"):ve(o,".git","info","exclude")}async function mt(o,e,t){let r=ct(t);return r.length===0?{action:"none",entries:[],message:`No git ignore entries found for agent ${t}`}:e==="none"?await ro(o,r):await oo(o,e,r)}async function oo(o,e,t){let r=ge(o,e),n=await gt(r,t);if(n.added.length===0)return{action:"skipped",entries:n.skipped,message:"Git ignore entries already present, skipping.",targetFiles:[r]};let i=e==="gitignore"?".gitignore":".git/info/exclude";return{action:"added",entries:n.added,message:`Added ${n.added.length} entries to ${i}: ${n.added.join(", ")}`,targetFiles:[r]}}async function ro(o,e){let t=ge(o,"gitignore"),r=ge(o,"exclude"),n=await Oe(t,e),i=await Oe(r,e),s=[...new Set([...n.removed,...i.removed])];if(s.length===0)return{action:"none",entries:[],message:"No Conductor git ignore entries found."};let p=[],c=[];return n.removed.length>0&&(p.push(t),c.push(`.gitignore (${n.removed.length})`)),i.removed.length>0&&(p.push(r),c.push(`.git/info/exclude (${i.removed.length})`)),{action:"removed",entries:s,message:`Removed entries from: ${c.join(", ")}`,targetFiles:p}}async function ft(o){let e=no(process.cwd(),o.path),t=o.force??!1;try{console.log(`Initializing Conductor in: ${e}`);let r;o.agent?(r=o.agent,console.log(`Using provided agent: ${r}`)):(console.log("Step 1: Prompting for agent selection..."),r=await et(),console.log(`\u2714 Selected agent: ${r}`));let n;o.scope?(n=o.scope,console.log(`Using provided scope: ${n}`)):n=await Ze(r),console.log(`\u2714 Selected scope: ${n}`);let i=o.gitIgnore;o.gitIgnore&&n==="global"?(console.warn("\u26A0 --git-ignore flag is only supported for project scope. Skipping git ignore configuration."),i=void 0):!o.gitIgnore&&n==="project"&&(i=await tt());let s=at(r);console.log(`
44
+ Step 3: Validating project directory...`);let p;try{p=await s.validate(e,n)}catch(c){if(c instanceof Error&&c.message.includes("already installed"))if(t)console.log("\u26A0 Force mode: Overwriting existing installation"),p=e;else if(await io({message:`${c.message}
45
+ Do you want to overwrite the existing installation?`,choices:[{value:!0,name:"Yes, overwrite"},{value:!1,name:"No, cancel"}]}))console.log("Overwriting existing installation..."),p=e;else{console.log("Installation cancelled.");return}else throw c}if(console.log(`\u2714 Validation complete: ${p}`),console.log(`
46
+ Step 4: Generating files...`),await s.generate(p,n,o.repo,o.branch,t),console.log("\u2714 Files generated"),i){console.log(`
47
+ Step 5: Configuring git ignore...`);let c=await mt(p,i,r);console.log(`\u2714 ${c.message}`)}console.log(`
48
48
  \u2714 Conductor initialized successfully!`)}catch(r){console.error(`
49
- \u2718 Installation failed:`,r instanceof Error?r.message:r),process.exit(1)}}import So from"gradient-string";var dt=(o=0)=>e=>`\x1B[${e+o}m`,ut=(o=0)=>e=>`\x1B[${38+o};5;${e}m`,yt=(o=0)=>(e,t,r)=>`\x1B[${38+o};2;${e};${t};${r}m`,m={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},rl=Object.keys(m.modifier),so=Object.keys(m.color),ao=Object.keys(m.bgColor),nl=[...so,...ao];function lo(){let o=new Map;for(let[e,t]of Object.entries(m)){for(let[r,n]of Object.entries(t))m[r]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},t[r]=m[r],o.set(n[0],n[1]);Object.defineProperty(m,e,{value:t,enumerable:!1})}return Object.defineProperty(m,"codes",{value:o,enumerable:!1}),m.color.close="\x1B[39m",m.bgColor.close="\x1B[49m",m.color.ansi=dt(),m.color.ansi256=ut(),m.color.ansi16m=yt(),m.bgColor.ansi=dt(10),m.bgColor.ansi256=ut(10),m.bgColor.ansi16m=yt(10),Object.defineProperties(m,{rgbToAnsi256:{value(e,t,r){return e===t&&t===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(r/255*5)},enumerable:!1},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[r]=t;r.length===3&&(r=[...r].map(i=>i+i).join(""));let n=Number.parseInt(r,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:e=>m.rgbToAnsi256(...m.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,r,n;if(e>=232)t=((e-232)*10+8)/255,r=t,n=t;else{e-=16;let c=e%36;t=Math.floor(e/36)/5,r=Math.floor(c/6)/5,n=c%6/5}let i=Math.max(t,r,n)*2;if(i===0)return 30;let s=30+(Math.round(n)<<2|Math.round(r)<<1|Math.round(t));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(e,t,r)=>m.ansi256ToAnsi(m.rgbToAnsi256(e,t,r)),enumerable:!1},hexToAnsi:{value:e=>m.ansi256ToAnsi(m.hexToAnsi256(e)),enumerable:!1}}),m}var co=lo(),w=co;import Ne from"process";import po from"os";import Ct from"tty";function x(o,e=globalThis.Deno?globalThis.Deno.args:Ne.argv){let t=o.startsWith("-")?"":o.length===1?"-":"--",r=e.indexOf(t+o),n=e.indexOf("--");return r!==-1&&(n===-1||r<n)}var{env:g}=Ne,ge;x("no-color")||x("no-colors")||x("color=false")||x("color=never")?ge=0:(x("color")||x("colors")||x("color=true")||x("color=always"))&&(ge=1);function mo(){if("FORCE_COLOR"in g)return g.FORCE_COLOR==="true"?1:g.FORCE_COLOR==="false"?0:g.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(g.FORCE_COLOR,10),3)}function go(o){return o===0?!1:{level:o,hasBasic:!0,has256:o>=2,has16m:o>=3}}function fo(o,{streamIsTTY:e,sniffFlags:t=!0}={}){let r=mo();r!==void 0&&(ge=r);let n=t?ge:r;if(n===0)return 0;if(t){if(x("color=16m")||x("color=full")||x("color=truecolor"))return 3;if(x("color=256"))return 2}if("TF_BUILD"in g&&"AGENT_NAME"in g)return 1;if(o&&!e&&n===void 0)return 0;let i=n||0;if(g.TERM==="dumb")return i;if(Ne.platform==="win32"){let s=po.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in g)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in g)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in g)||g.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in g)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(g.TEAMCITY_VERSION)?1:0;if(g.COLORTERM==="truecolor"||g.TERM==="xterm-kitty"||g.TERM==="xterm-ghostty"||g.TERM==="wezterm")return 3;if("TERM_PROGRAM"in g){let s=Number.parseInt((g.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(g.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(g.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(g.TERM)||"COLORTERM"in g?1:i}function xt(o,e={}){let t=fo(o,{streamIsTTY:o&&o.isTTY,...e});return go(t)}var uo={stdout:xt({isTTY:Ct.isatty(1)}),stderr:xt({isTTY:Ct.isatty(2)})},_t=uo;function ht(o,e,t){let r=o.indexOf(e);if(r===-1)return o;let n=e.length,i=0,s="";do s+=o.slice(i,r)+e+t,i=r+n,r=o.indexOf(e,i);while(r!==-1);return s+=o.slice(i),s}function At(o,e,t,r){let n=0,i="";do{let s=o[r-1]==="\r";i+=o.slice(n,s?r-1:r)+e+(s?`\r
49
+ \u2718 Installation failed:`,r instanceof Error?r.message:r),process.exit(1)}}import So from"gradient-string";var dt=(o=0)=>e=>`\x1B[${e+o}m`,ut=(o=0)=>e=>`\x1B[${38+o};5;${e}m`,yt=(o=0)=>(e,t,r)=>`\x1B[${38+o};2;${e};${t};${r}m`,g={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},rl=Object.keys(g.modifier),so=Object.keys(g.color),ao=Object.keys(g.bgColor),nl=[...so,...ao];function lo(){let o=new Map;for(let[e,t]of Object.entries(g)){for(let[r,n]of Object.entries(t))g[r]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},t[r]=g[r],o.set(n[0],n[1]);Object.defineProperty(g,e,{value:t,enumerable:!1})}return Object.defineProperty(g,"codes",{value:o,enumerable:!1}),g.color.close="\x1B[39m",g.bgColor.close="\x1B[49m",g.color.ansi=dt(),g.color.ansi256=ut(),g.color.ansi16m=yt(),g.bgColor.ansi=dt(10),g.bgColor.ansi256=ut(10),g.bgColor.ansi16m=yt(10),Object.defineProperties(g,{rgbToAnsi256:{value(e,t,r){return e===t&&t===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(r/255*5)},enumerable:!1},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[r]=t;r.length===3&&(r=[...r].map(i=>i+i).join(""));let n=Number.parseInt(r,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:e=>g.rgbToAnsi256(...g.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,r,n;if(e>=232)t=((e-232)*10+8)/255,r=t,n=t;else{e-=16;let p=e%36;t=Math.floor(e/36)/5,r=Math.floor(p/6)/5,n=p%6/5}let i=Math.max(t,r,n)*2;if(i===0)return 30;let s=30+(Math.round(n)<<2|Math.round(r)<<1|Math.round(t));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(e,t,r)=>g.ansi256ToAnsi(g.rgbToAnsi256(e,t,r)),enumerable:!1},hexToAnsi:{value:e=>g.ansi256ToAnsi(g.hexToAnsi256(e)),enumerable:!1}}),g}var po=lo(),w=po;import Ne from"process";import co from"os";import Ct from"tty";function x(o,e=globalThis.Deno?globalThis.Deno.args:Ne.argv){let t=o.startsWith("-")?"":o.length===1?"-":"--",r=e.indexOf(t+o),n=e.indexOf("--");return r!==-1&&(n===-1||r<n)}var{env:m}=Ne,me;x("no-color")||x("no-colors")||x("color=false")||x("color=never")?me=0:(x("color")||x("colors")||x("color=true")||x("color=always"))&&(me=1);function go(){if("FORCE_COLOR"in m)return m.FORCE_COLOR==="true"?1:m.FORCE_COLOR==="false"?0:m.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(m.FORCE_COLOR,10),3)}function mo(o){return o===0?!1:{level:o,hasBasic:!0,has256:o>=2,has16m:o>=3}}function fo(o,{streamIsTTY:e,sniffFlags:t=!0}={}){let r=go();r!==void 0&&(me=r);let n=t?me:r;if(n===0)return 0;if(t){if(x("color=16m")||x("color=full")||x("color=truecolor"))return 3;if(x("color=256"))return 2}if("TF_BUILD"in m&&"AGENT_NAME"in m)return 1;if(o&&!e&&n===void 0)return 0;let i=n||0;if(m.TERM==="dumb")return i;if(Ne.platform==="win32"){let s=co.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in m)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in m)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in m)||m.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in m)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(m.TEAMCITY_VERSION)?1:0;if(m.COLORTERM==="truecolor"||m.TERM==="xterm-kitty"||m.TERM==="xterm-ghostty"||m.TERM==="wezterm")return 3;if("TERM_PROGRAM"in m){let s=Number.parseInt((m.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(m.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(m.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(m.TERM)||"COLORTERM"in m?1:i}function xt(o,e={}){let t=fo(o,{streamIsTTY:o&&o.isTTY,...e});return mo(t)}var uo={stdout:xt({isTTY:Ct.isatty(1)}),stderr:xt({isTTY:Ct.isatty(2)})},_t=uo;function ht(o,e,t){let r=o.indexOf(e);if(r===-1)return o;let n=e.length,i=0,s="";do s+=o.slice(i,r)+e+t,i=r+n,r=o.indexOf(e,i);while(r!==-1);return s+=o.slice(i),s}function At(o,e,t,r){let n=0,i="";do{let s=o[r-1]==="\r";i+=o.slice(n,s?r-1:r)+e+(s?`\r
50
50
  `:`
51
51
  `)+t,n=r+1,r=o.indexOf(`
52
- `,n)}while(r!==-1);return i+=o.slice(n),i}var{stdout:St,stderr:wt}=_t,Ge=Symbol("GENERATOR"),E=Symbol("STYLER"),P=Symbol("IS_EMPTY"),vt=["ansi","ansi","ansi256","ansi16m"],O=Object.create(null),yo=(o,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let t=St?St.level:0;o.level=e.level===void 0?t:e.level};var Co=o=>{let e=(...t)=>t.join(" ");return yo(e,o),Object.setPrototypeOf(e,j.prototype),e};function j(o){return Co(o)}Object.setPrototypeOf(j.prototype,Function.prototype);for(let[o,e]of Object.entries(w))O[o]={get(){let t=fe(this,Fe(e.open,e.close,this[E]),this[P]);return Object.defineProperty(this,o,{value:t}),t}};O.visible={get(){let o=fe(this,this[E],!0);return Object.defineProperty(this,"visible",{value:o}),o}};var $e=(o,e,t,...r)=>o==="rgb"?e==="ansi16m"?w[t].ansi16m(...r):e==="ansi256"?w[t].ansi256(w.rgbToAnsi256(...r)):w[t].ansi(w.rgbToAnsi(...r)):o==="hex"?$e("rgb",e,t,...w.hexToRgb(...r)):w[t][o](...r),xo=["rgb","hex","ansi256"];for(let o of xo){O[o]={get(){let{level:t}=this;return function(...r){let n=Fe($e(o,vt[t],"color",...r),w.color.close,this[E]);return fe(this,n,this[P])}}};let e="bg"+o[0].toUpperCase()+o.slice(1);O[e]={get(){let{level:t}=this;return function(...r){let n=Fe($e(o,vt[t],"bgColor",...r),w.bgColor.close,this[E]);return fe(this,n,this[P])}}}}var _o=Object.defineProperties(()=>{},{...O,level:{enumerable:!0,get(){return this[Ge].level},set(o){this[Ge].level=o}}}),Fe=(o,e,t)=>{let r,n;return t===void 0?(r=o,n=e):(r=t.openAll+o,n=e+t.closeAll),{open:o,close:e,openAll:r,closeAll:n,parent:t}},fe=(o,e,t)=>{let r=(...n)=>ho(r,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(r,_o),r[Ge]=o,r[E]=e,r[P]=t,r},ho=(o,e)=>{if(o.level<=0||!e)return o[P]?"":e;let t=o[E];if(t===void 0)return e;let{openAll:r,closeAll:n}=t;if(e.includes("\x1B"))for(;t!==void 0;)e=ht(e,t.close,t.open),t=t.parent;let i=e.indexOf(`
53
- `);return i!==-1&&(e=At(e,n,r,i)),r+e+n};Object.defineProperties(j.prototype,O);var Ao=j(),Cl=j({level:wt?wt.level:0});var Tt=Ao;import It from"fs";import Re from"path";import{fileURLToPath as wo}from"url";var vo=`
52
+ `,n)}while(r!==-1);return i+=o.slice(n),i}var{stdout:St,stderr:wt}=_t,Ge=Symbol("GENERATOR"),E=Symbol("STYLER"),P=Symbol("IS_EMPTY"),bt=["ansi","ansi","ansi256","ansi16m"],O=Object.create(null),yo=(o,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let t=St?St.level:0;o.level=e.level===void 0?t:e.level};var Co=o=>{let e=(...t)=>t.join(" ");return yo(e,o),Object.setPrototypeOf(e,j.prototype),e};function j(o){return Co(o)}Object.setPrototypeOf(j.prototype,Function.prototype);for(let[o,e]of Object.entries(w))O[o]={get(){let t=fe(this,Fe(e.open,e.close,this[E]),this[P]);return Object.defineProperty(this,o,{value:t}),t}};O.visible={get(){let o=fe(this,this[E],!0);return Object.defineProperty(this,"visible",{value:o}),o}};var $e=(o,e,t,...r)=>o==="rgb"?e==="ansi16m"?w[t].ansi16m(...r):e==="ansi256"?w[t].ansi256(w.rgbToAnsi256(...r)):w[t].ansi(w.rgbToAnsi(...r)):o==="hex"?$e("rgb",e,t,...w.hexToRgb(...r)):w[t][o](...r),xo=["rgb","hex","ansi256"];for(let o of xo){O[o]={get(){let{level:t}=this;return function(...r){let n=Fe($e(o,bt[t],"color",...r),w.color.close,this[E]);return fe(this,n,this[P])}}};let e="bg"+o[0].toUpperCase()+o.slice(1);O[e]={get(){let{level:t}=this;return function(...r){let n=Fe($e(o,bt[t],"bgColor",...r),w.bgColor.close,this[E]);return fe(this,n,this[P])}}}}var _o=Object.defineProperties(()=>{},{...O,level:{enumerable:!0,get(){return this[Ge].level},set(o){this[Ge].level=o}}}),Fe=(o,e,t)=>{let r,n;return t===void 0?(r=o,n=e):(r=t.openAll+o,n=e+t.closeAll),{open:o,close:e,openAll:r,closeAll:n,parent:t}},fe=(o,e,t)=>{let r=(...n)=>ho(r,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(r,_o),r[Ge]=o,r[E]=e,r[P]=t,r},ho=(o,e)=>{if(o.level<=0||!e)return o[P]?"":e;let t=o[E];if(t===void 0)return e;let{openAll:r,closeAll:n}=t;if(e.includes("\x1B"))for(;t!==void 0;)e=ht(e,t.close,t.open),t=t.parent;let i=e.indexOf(`
53
+ `);return i!==-1&&(e=At(e,n,r,i)),r+e+n};Object.defineProperties(j.prototype,O);var Ao=j(),Cl=j({level:wt?wt.level:0});var Tt=Ao;import vt from"fs";import Re from"path";import{fileURLToPath as wo}from"url";var bo=`
54
54
  __________ _ ______ __ __________________ ____ ________ ____ _ __
55
55
  / ____/ __ \\/ | / / __ \\/ / / / ____/_ __/ __ \\/ __ \\ / ____/ / / __ \\| | / /
56
56
  / / / / / / |/ / / / / / / / / / / / / / / /_/ / / /_ / / / / / /| | /| / /
57
57
  / /___/ /_/ / /| / /_/ / /_/ / /___ / / / /_/ / _, _/ / __/ / /___/ /_/ / | |/ |/ /
58
58
  \\____/\\____/_/ |_/_____/\\____/\\____/ /_/ \\____/_/ |_| /_/ /_____/\\____/ |__/|__/
59
59
 
60
- `;function bt(){let o=Re.dirname(wo(import.meta.url)),e=Re.join(o,"../package.json");It.existsSync(e)||(e=Re.join(o,"../../package.json"));let r=JSON.parse(It.readFileSync(e,"utf-8")).version;console.log(Tt.dim(` v${r} | Scaffolding for Gemini Conductor
61
- `))}function Et(){console.log(So("cyan","green")(vo))}async function bo(o){return await To(Io(process.argv)).scriptName(o).usage("$0 [path] [options]").positional("path",{describe:"Directory to install Conductor",default:".",type:"string"}).option("agent",{alias:"a",describe:"Specify the coding agent",type:"string",choices:b.map(e=>e.agentType)}).option("repo",{alias:"r",describe:"Git repository URL for conductor. If used without value, defaults to official repository.",type:"string"}).coerce("repo",e=>e===""?B:e).option("branch",{alias:"b",describe:"Branch name for conductor repository",type:"string",default:U}).option("scope",{alias:"s",describe:"Installation scope (project or global)",type:"string",choices:["project","global"]}).option("git-ignore",{alias:"g",describe:"Configure git ignore for Conductor files (gitignore: add to .gitignore, exclude: add to .git/info/exclude, none: remove entries)",type:"string",choices:["gitignore","exclude","none"]}).coerce("git-ignore",e=>e===""?"exclude":e).option("force",{alias:"f",describe:"Force overwrite existing installation",type:"boolean",default:!1}).example("$0","Install with interactive prompts").example("$0 --agent claude-code","Install for Claude Code agent").example("$0 --git-ignore gitignore","Add Conductor files to .gitignore").example("$0 --git-ignore exclude","Add Conductor files to .git/info/exclude").example("$0 --git-ignore none","Remove Conductor entries from git ignore").help().alias("h","help").version().alias("v","version").completion("completion",!1).parseAsync()}async function Fl(o){!process.env.CONDUCTOR_NO_BANNER&&!process.argv.includes("completion")&&!process.argv.includes("--get-yargs-completions")&&(Et(),bt());let e=await bo(o),t=e._[0];process.argv.includes("completion")||process.argv.includes("--get-yargs-completions")||await ft({...e,path:t||e.path||".",gitIgnore:e["git-ignore"],$0:"conductor-init",_:e._})}export{Fl as a};
60
+ `;function It(){let o=Re.dirname(wo(import.meta.url)),e=Re.join(o,"../package.json");vt.existsSync(e)||(e=Re.join(o,"../../package.json"));let r=JSON.parse(vt.readFileSync(e,"utf-8")).version;console.log(Tt.dim(` v${r} | Scaffolding for Gemini Conductor
61
+ `))}function Et(){console.log(So("cyan","green")(bo))}async function Io(o){return await To(vo(process.argv)).scriptName(o).usage("$0 [path] [options]").positional("path",{describe:"Directory to install Conductor",default:".",type:"string"}).option("agent",{alias:"a",describe:"Specify the coding agent",type:"string",choices:I.map(e=>e.agentType)}).option("repo",{alias:"r",describe:"Git repository URL for conductor. If used without value, defaults to official repository.",type:"string"}).coerce("repo",e=>e===""?B:e).option("branch",{alias:"b",describe:"Branch name for conductor repository",type:"string",default:U}).option("scope",{alias:"s",describe:"Installation scope (project or global)",type:"string",choices:["project","global"]}).option("git-ignore",{alias:"g",describe:"Configure git ignore for Conductor files (gitignore: add to .gitignore, exclude: add to .git/info/exclude, none: remove entries)",type:"string",choices:["gitignore","exclude","none"]}).coerce("git-ignore",e=>e===""?"exclude":e).option("force",{alias:"f",describe:"Force overwrite existing installation",type:"boolean",default:!1}).example("$0","Install with interactive prompts").example("$0 --agent claude-code","Install for Claude Code agent").example("$0 --git-ignore gitignore","Add Conductor files to .gitignore").example("$0 --git-ignore exclude","Add Conductor files to .git/info/exclude").example("$0 --git-ignore none","Remove Conductor entries from git ignore").help().alias("h","help").version().alias("v","version").completion("completion",!1).parseAsync()}async function Fl(o){!process.env.CONDUCTOR_NO_BANNER&&!process.argv.includes("completion")&&!process.argv.includes("--get-yargs-completions")&&(Et(),It());let e=await Io(o),t=e._[0];process.argv.includes("completion")||process.argv.includes("--get-yargs-completions")||await ft({...e,path:t||e.path||".",gitIgnore:e["git-ignore"],$0:"conductor-init",_:e._})}export{Fl as a};
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{a as r}from"./chunk-DHVVT5SY.js";r("conductor-init").catch(o=>{console.error("Error:",o instanceof Error?o.message:o),process.exit(1)});
2
+ import{a as r}from"./chunk-FDWC7342.js";r("conductor-init").catch(o=>{console.error("Error:",o instanceof Error?o.message:o),process.exit(1)});
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{a as r}from"./chunk-DHVVT5SY.js";r("npm create conductor-flow").catch(o=>{console.error("Error:",o instanceof Error?o.message:o),process.exit(1)});
2
+ import{a as r}from"./chunk-FDWC7342.js";r("npm create conductor-flow").catch(o=>{console.error("Error:",o instanceof Error?o.message:o),process.exit(1)});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "conductor-init",
3
- "version": "1.0.0-6",
3
+ "version": "1.0.0",
4
4
  "description": "Conductor Scaffolding CLI - Generate spec-driven, portable Gemini Conductor workflows for any coding agent",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -64,6 +64,7 @@
64
64
  "release": "tsx scripts/double-publish.ts"
65
65
  },
66
66
  "devDependencies": {
67
+ "@release-it/conventional-changelog": "^10.0.5",
67
68
  "@types/fs-extra": "^11.0.4",
68
69
  "@types/gradient-string": "^1.1.6",
69
70
  "@types/node": "^25.1.0",