@sylphx/flow 0.1.1 → 0.1.2

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/dist/index.js CHANGED
@@ -608,10 +608,10 @@ $toast = New-Object Windows.UI.Notifications.ToastNotification $xml
608
608
  `),I=Math.max(...E.map((X)=>X.length),D.stops.length),G=oEA(D,Q,I),J=[];for(let X of E){let W=G.slice(0),U="";for(let z of X)U+=FA.hex(W.shift()?.toHex()||"#000")(z);J.push(U)}return J.join(`
609
609
  `)}function OV(A){let D={interpolation:"rgb",hsvSpin:"short",...A};if(A!==void 0&&typeof A!=="object")throw TypeError(`Expected \`options\` to be an \`object\`, got \`${typeof A}\``);if(typeof D.interpolation!=="string")throw TypeError(`Expected \`options.interpolation\` to be \`rgb\` or \`hsv\`, got \`${typeof D.interpolation}\``);if(D.interpolation.toLowerCase()==="hsv"&&typeof D.hsvSpin!=="string")throw TypeError(`Expected \`options.hsvSpin\` to be a \`short\` or \`long\`, got \`${typeof D.hsvSpin}\``);return D}var wI={atlas:{colors:["#feac5e","#c779d0","#4bc0c8"],options:{}},cristal:{colors:["#bdfff3","#4ac29a"],options:{}},teen:{colors:["#77a1d3","#79cbca","#e684ae"],options:{}},mind:{colors:["#473b7b","#3584a7","#30d2be"],options:{}},morning:{colors:["#ff5f6d","#ffc371"],options:{interpolation:"hsv"}},vice:{colors:["#5ee7df","#b490ca"],options:{interpolation:"hsv"}},passion:{colors:["#f43b47","#453a94"],options:{}},fruit:{colors:["#ff4e50","#f9d423"],options:{}},instagram:{colors:["#833ab4","#fd1d1d","#fcb045"],options:{}},retro:{colors:["#3f51b1","#5a55ae","#7b5fac","#8f6aae","#a86aa4","#cc6b8e","#f18271","#f3a469","#f7c978"],options:{}},summer:{colors:["#fdbb2d","#22c1c3"],options:{}},rainbow:{colors:["#ff0000","#ff0100"],options:{interpolation:"hsv",hsvSpin:"long"}},pastel:{colors:["#74ebd5","#74ecd5"],options:{interpolation:"hsv",hsvSpin:"long"}}};function ZI(A){let D=(B)=>KE(...A.colors)(B,A.options);return D.multiline=(B="")=>KE(...A.colors).multiline(B,A.options),D}var rEA=KE,VdA=ZI(wI.atlas),OdA=ZI(wI.cristal),jdA=ZI(wI.teen),PdA=ZI(wI.mind),TdA=ZI(wI.morning),kdA=ZI(wI.vice),SdA=ZI(wI.passion),vdA=ZI(wI.fruit),gdA=ZI(wI.instagram),_dA=ZI(wI.retro),fdA=ZI(wI.summer),ydA=ZI(wI.rainbow),xdA=ZI(wI.pastel);KE.atlas=VdA;KE.cristal=OdA;KE.teen=jdA;KE.mind=PdA;KE.morning=TdA;KE.vice=kdA;KE.passion=SdA;KE.fruit=vdA;KE.instagram=gdA;KE.retro=_dA;KE.summer=fdA;KE.rainbow=ydA;KE.pastel=xdA;var tEA=(A)=>({_tag:"Some",value:A}),eEA={_tag:"None"};var e7=(A)=>A._tag==="Some";var AIA=(A)=>(D)=>{if(e7(D))return D.value;return A};import{spawn as pdA}from"node:child_process";import cdA from"node:fs";import vV from"node:fs/promises";import VC from"node:path";import CE from"node:fs";import p4 from"node:path";import EIA from"node:path";import RC from"node:fs/promises";import DIA from"node:path";async function PV(A,D={}){let{encoding:B="utf8",fallback:Q}=D;try{return await RC.readFile(A,B)}catch(E){if(E.code==="ENOENT"&&Q!==void 0)return Q;throw E}}async function BIA(A){try{return await RC.access(A),!0}catch{return!1}}async function oW(A){try{let D=await RC.stat(A);return{exists:!0,isFile:D.isFile(),isDirectory:D.isDirectory(),size:D.size,mtime:D.mtime,atime:D.atime,ctime:D.ctime}}catch{return{exists:!1,isFile:!1,isDirectory:!1}}}async function QIA(A){if(jV.validatePath(A),!await BIA(A))return;if((await oW(A)).isDirectory)await RC.rm(A,{recursive:!0,force:!0});else await RC.unlink(A)}async function rW(A,D={}){let{recursive:B=!1,includeFiles:Q=!0,includeDirectories:E=!0}=D;if(jV.validatePath(A),!await BIA(A))throw Error(`Directory does not exist: ${A}`);if(!(await oW(A)).isDirectory)throw Error(`Path is not a directory: ${A}`);if(B){let J=[],X=await RC.readdir(A,{withFileTypes:!0});for(let W of X){let U=DIA.join(A,W.name);if(W.isDirectory()&&E){J.push(U);let z=await rW(U,D);J.push(...z)}else if(W.isFile()&&Q)J.push(U)}return J}return(await RC.readdir(A,{withFileTypes:!0})).filter((J)=>{if(J.isFile()&&Q)return!0;if(J.isDirectory()&&E)return!0;return!1}).map((J)=>DIA.join(A,J.name))}async function TV(A,D){try{return(await rW(A,{recursive:!0,includeFiles:!0,includeDirectories:!1})).filter((Q)=>D.some((E)=>Q.endsWith(E))).map((Q)=>EIA.relative(A,Q)).sort()}catch{return[]}}async function AJ(A){let D=await oW(A);if(!D.exists||!D.isFile)return null;let B=await PV(A);if(B===null)return null;return{content:B,mtime:D.mtime}}async function kV(A,D,B,Q){try{let E=await rW(A,{recursive:!1,includeFiles:!0,includeDirectories:!1});for(let I of E){let G=EIA.basename(I);if(B.some((X)=>G.endsWith(X))&&!D.has(G))await QIA(I),Q.push({file:G,status:"skipped",action:"Removed obsolete file"})}}catch{}}async function IIA(A,D){if(!CE.existsSync(A))return[];let B=[],Q=CE.readdirSync(A,{withFileTypes:!0}).filter((I)=>I.isFile()&&I.name.endsWith(D)).map((I)=>I.name);B.push(...Q);let E=CE.readdirSync(A,{withFileTypes:!0}).filter((I)=>I.isDirectory()&&I.name!=="archived").map((I)=>I.name);for(let I of E){let G=p4.join(A,I),J=await TV(G,[D]);B.push(...J.map((X)=>p4.join(I,X)))}return B}async function bdA(A,D,B,Q={}){let E=[],I=await IIA(A,Q.extension||".md");if(I.length===0)return E;if(Q.clear&&CE.existsSync(D)){let J=new Set(I.map((X)=>{if(Q.flatten){let W=p4.parse(X),U=W.name,z=W.dir;return`${z?`${z.replace(/[/\\]/g,"-")}-${U}`:U}${Q.extension||".md"}`}return X}));kV(D,J,[Q.extension||".md"],E)}if(CE.mkdirSync(D,{recursive:!0}),Q.showProgress&&!Q.quiet)console.log(`Installing ${I.length} file${I.length>1?"s":""} to ${D.replace(`${process.cwd()}/`,"")}`),console.log("");if(Q.dryRun){if(!Q.quiet)console.log("✓ Dry run completed - no files were modified");return E}let G=I.map(async(J)=>{let X=p4.join(A,J),W=p4.join(D,J),U=p4.dirname(W);if(!CE.existsSync(U))CE.mkdirSync(U,{recursive:!0});let z=await AJ(W),w=CE.readFileSync(X,"utf8");w=await B(w,J);let $=z?await B(z.content,J):"";if(!z||$!==w)CE.writeFileSync(W,w,"utf8"),E.push({file:J,status:z?"updated":"added",action:z?"Updated":"Created"});else E.push({file:J,status:"current",action:"Already current"})});return await Promise.all(G),E}async function udA(A,D,B,Q={}){let E=await IIA(A,Q.extension||".md");if(E.length===0)return;if(Q.dryRun){if(!Q.quiet)console.log(`Dry run: Would append ${E.length} file${E.length>1?"s":""} to ${D.replace(`${process.cwd()}/`,"")}`);return}let I="";if(CE.existsSync(D))I=CE.readFileSync(D,"utf8");let G="";for(let J of E){let X=p4.join(A,J),W=CE.readFileSync(X,"utf8");W=await B(W,J),G+=`${W}
610
610
 
611
- `}if(CE.writeFileSync(D,I+G,"utf8"),Q.showProgress&&!Q.quiet)console.log(`Appended ${E.length} file${E.length>1?"s":""} to ${D.replace(`${process.cwd()}/`,"")}`)}async function mdA(A,D,B,Q={}){if(Q.dryRun){if(!Q.quiet)console.log(`Dry run: Would install file to ${D.replace(`${process.cwd()}/`,"")}`);return}if(!CE.existsSync(A)){if(!Q.quiet)console.warn(`Source file not found: ${A}`);return}let E=p4.dirname(D);CE.mkdirSync(E,{recursive:!0});let I=await AJ(D),G=CE.readFileSync(A,"utf8");if(G=await B(G),I&&I.content===G){if(!Q.quiet)console.log(`File already current: ${D.replace(`${process.cwd()}/`,"")}`);return}if(CE.writeFileSync(D,G,"utf8"),Q.showProgress&&!Q.quiet)console.log(`${I?"Updated":"Created"} file: ${D.replace(`${process.cwd()}/`,"")}`)}class c4{async installToDirectory(A,D,B,Q={}){return bdA(A,D,B,Q)}async appendToFile(A,D,B,Q={}){return udA(A,D,B,Q)}async installFile(A,D,B,Q={}){return mdA(A,D,B,Q)}}async function FIA(){let A=await fB.resolveTarget({allowSelection:!1});try{let D=fB.getTarget(A);if(D._tag==="None")return;return D.value.mcpServerConfig}catch{return}}var x0={"sylphx-flow":{id:"sylphx-flow",name:"sylphx-flow",description:"Sylphx Flow MCP server for agent coordination and memory management",config:{type:"stdio",command:"sylphx-flow",args:async()=>{let A=["mcp","start"],D=await FIA();if(D?.disableMemory)A.push("--disable-memory");if(D?.disableTime)A.push("--disable-time");if(D?.disableProjectStartup)A.push("--disable-project-startup");if(D?.disableKnowledge)A.push("--disable-knowledge");if(D?.disableCodebase)A.push("--disable-codebase");return A},env:{OPENAI_API_KEY:"",OPENAI_BASE_URL:"https://api.openai.com/v1",EMBEDDING_MODEL:"text-embedding-3-small"}},envVars:{OPENAI_API_KEY:{description:"OpenAI API key for vector search embeddings",required:!1,secret:!0},OPENAI_BASE_URL:{description:"Base URL for OpenAI-compatible embedding API",required:!1,default:"https://api.openai.com/v1"},EMBEDDING_MODEL:{description:"Embedding model to use for vector search",required:!1,default:"text-embedding-3-small",dependsOn:["OPENAI_API_KEY","OPENAI_BASE_URL"],fetchChoices:async()=>{let A=zF.getEnvVar("OPENAI_BASE_URL","https://api.openai.com/v1"),D=zF.getEnvVar("OPENAI_API_KEY");if(!D)throw Error("OPENAI_API_KEY is required to fetch embedding models");try{a7.apiKey.parse(D)}catch(I){throw Error("Invalid OPENAI_API_KEY format")}let B=await fetch(`${A}/models`,{headers:{Authorization:`Bearer ${D}`},timeout:1e4});if(!B.ok)throw Error(`Failed to fetch models: ${B.statusText}`);let E=(await B.json()).data.filter((I)=>I.id.includes("embedding")).map((I)=>I.id).sort();if(E.length===0)throw Error("No embedding models found");return E}}},category:"core",defaultInInit:!0,required:!0},"gpt-image":{id:"gpt-image",name:"gpt-image-1-mcp",description:"GPT Image generation MCP server",config:{type:"stdio",command:"npx",args:["@napolab/gpt-image-1-mcp"],env:{OPENAI_API_KEY:""}},envVars:{OPENAI_API_KEY:{description:"OpenAI API key for image generation",required:!0,secret:!0}},category:"ai",defaultInInit:!1},perplexity:{id:"perplexity",name:"perplexity-ask",description:"Perplexity Ask MCP server for search and queries",config:{type:"stdio",command:"npx",args:["-y","server-perplexity-ask"],env:{PERPLEXITY_API_KEY:""}},envVars:{PERPLEXITY_API_KEY:{description:"Perplexity API key for search and queries",required:!0,secret:!0}},category:"ai",defaultInInit:!1},context7:{id:"context7",name:"context7",description:"Context7 HTTP MCP server for documentation retrieval",config:{type:"http",url:"https://mcp.context7.com/mcp"},envVars:{CONTEXT7_API_KEY:{description:"Context7 API key for enhanced documentation access",required:!1,secret:!0}},category:"external",defaultInInit:!0},"gemini-search":{id:"gemini-search",name:"gemini-google-search",description:"Gemini Google Search MCP server",config:{type:"stdio",command:"npx",args:["-y","mcp-gemini-google-search"],env:{GEMINI_API_KEY:"",GEMINI_MODEL:"gemini-2.5-flash"}},envVars:{GEMINI_API_KEY:{description:"Google Gemini API key for search functionality",required:!0,secret:!0},GEMINI_MODEL:{description:"Gemini model to use for search",required:!1,default:"gemini-2.5-flash"}},category:"ai",defaultInInit:!1},grep:{id:"grep",name:"grep",description:"GitHub grep MCP server for searching GitHub repositories",config:{type:"http",url:"https://mcp.grep.app"},category:"external",defaultInInit:!0}};var CIA=(A)=>A.type==="stdio";var tW=(A)=>CIA(A);function SV(A){if(typeof A==="function"){let D=A();return Promise.resolve(D)}return Promise.resolve(A)}var R2=(A)=>{let D=()=>{return Object.keys(x0)},B=async()=>{let w=await Q();return D().filter(($)=>!w.includes($))},Q=async()=>{try{let w=await A.target.readConfig(process.cwd()),$=A.target.config.mcpConfigPath,q=U(w,$)||{},L=Object.keys(q);return Object.values(x0).filter((Z)=>L.includes(Z.name)).map((Z)=>Z.id)}catch(w){return[]}},E=(w)=>{return w.filter(($)=>{return!!x0[$].envVars})},I=(w,$)=>{let q=x0[w];if(!q?.envVars)return{isValid:!0,missingRequired:[],invalidValues:[]};let L=[],Z=[];for(let[R,O]of Object.entries(q.envVars)){let V=$[R]||process.env[R]||"";if(O.required&&(!V||V===""))L.push(R)}return{isValid:L.length===0&&Z.length===0,missingRequired:L,invalidValues:Z}},G=async(w,$={})=>{let q=x0[w],L={};if(!q.envVars)return L;console.log(""),console.log(FA.cyan(`▸ ${q.name}`)),console.log(FA.gray(` ${q.description}`)),console.log("");for(let[Z,R]of Object.entries(q.envVars)){if(R.dependsOn){if(R.dependsOn.filter((h)=>!($[h]||process.env[h])).length>0)continue}let O=$[Z]||process.env[Z],V;if(O&&O.trim()!=="")V=O;else if(R.fetchChoices){let P=kE("Fetching options...").start();for(let[h,u]of Object.entries($))if(u)process.env[h]=u;try{let h=await R.fetchChoices();P.stop(),V=(await FQ.prompt({type:"list",name:"value",message:`${Z}${R.required?" *":""}`,choices:h,default:R.default||h[0]})).value}catch(h){let u=h instanceof Error?h.message:String(h);P.fail(FA.red(`Failed to fetch options: ${u}`)),V=(await FQ.prompt({type:"input",name:"value",message:`${Z}${R.required?" *":""}`,default:R.default})).value}}else if(Z==="GEMINI_MODEL")V=(await FQ.prompt({type:"list",name:"model",message:`${Z}${R.required?" *":""}`,choices:["gemini-2.5-flash","gemini-2.5-pro","gemini-1.5-flash","gemini-1.5-pro"],default:R.default||"gemini-2.5-flash"})).model;else V=(await FQ.prompt({type:R.secret?"password":"input",name:"value",message:`${Z}${R.required?" *":""}`,default:R.default,mask:R.secret?"•":void 0})).value;if(V)L[Z]=V,$[Z]=V}return console.log(FA.green("✓ Configured")),console.log(""),L},J=async(w,$={})=>{if(w.length===0)return;try{let q=await A.target.readConfig(process.cwd()),L=A.target.config.mcpConfigPath,R={...U(q,L)||{}};for(let O of w){let V=x0[O],P=$[O]||{},h={...V.config},u,y;if(tW(V.config))u=V.config.command?await SV(V.config.command):void 0,y=V.config.args?await SV(V.config.args):[];if(tW(V.config))h={...V.config,command:u,args:y};if(Object.keys(P).length>0){let d={...V.config.type==="local"?V.config.environment:V.config.type==="stdio"?V.config.env:{}};for(let[o,r]of Object.entries(P))if(r&&r.trim()!=="")d[o]=r;if(h.type==="local")h.environment=d;else if(h.type==="stdio")h.env=d}let a=A.target.transformMCPConfig(h,O);R[V.name]=a}if(z(q,L,R),await A.target.writeConfig(process.cwd(),q),A.target.approveMCPServers){let O=w.map((V)=>x0[V].name);await A.target.approveMCPServers(process.cwd(),O)}}catch(q){throw Error(`Failed to install MCP servers: ${q instanceof Error?q.message:String(q)}`)}},X=async()=>{try{return await A.target.readConfig(process.cwd())}catch(w){return{settings:{}}}},W=async(w)=>{await A.target.writeConfig(process.cwd(),w)},U=(w,$)=>{return $.split(".").reduce((q,L)=>{if(typeof q==="object"&&q!==null)return q[L];return},w)},z=(w,$,q)=>{let L=$.split("."),Z=L.pop();if(!Z)return;let R=L.reduce((O,V)=>{if(!O[V])O[V]={};return O[V]},w);R[Z]=q};return{getAllServerIds:D,getAvailableServers:B,getInstalledServerIds:Q,getRequiringConfiguration:E,validateServer:I,configureServer:G,installServers:J,readConfig:X,writeConfig:W}};function ddA(A){let D=fB.getTarget(A);if(D._tag==="None")throw Error(`Target not found: ${A}`);let B=D.value,Q=R2({target:B}),E=async(X={})=>{let W=Q.getAllServerIds(),U=await Q.getInstalledServerIds();if(!X.quiet)console.log(FA.cyan.bold(`━━━ Configure MCP Tools ━━━
611
+ `}if(CE.writeFileSync(D,I+G,"utf8"),Q.showProgress&&!Q.quiet)console.log(`Appended ${E.length} file${E.length>1?"s":""} to ${D.replace(`${process.cwd()}/`,"")}`)}async function mdA(A,D,B,Q={}){if(Q.dryRun){if(!Q.quiet)console.log(`Dry run: Would install file to ${D.replace(`${process.cwd()}/`,"")}`);return}if(!CE.existsSync(A)){if(!Q.quiet)console.warn(`Source file not found: ${A}`);return}let E=p4.dirname(D);CE.mkdirSync(E,{recursive:!0});let I=await AJ(D),G=CE.readFileSync(A,"utf8");if(G=await B(G),I&&I.content===G){if(!Q.quiet)console.log(`File already current: ${D.replace(`${process.cwd()}/`,"")}`);return}if(CE.writeFileSync(D,G,"utf8"),Q.showProgress&&!Q.quiet)console.log(`${I?"Updated":"Created"} file: ${D.replace(`${process.cwd()}/`,"")}`)}class c4{async installToDirectory(A,D,B,Q={}){return bdA(A,D,B,Q)}async appendToFile(A,D,B,Q={}){return udA(A,D,B,Q)}async installFile(A,D,B,Q={}){return mdA(A,D,B,Q)}}async function FIA(){let A=await fB.resolveTarget({allowSelection:!1});try{let D=fB.getTarget(A);if(D._tag==="None")return;return D.value.mcpServerConfig}catch{return}}var x0={"sylphx-flow":{id:"sylphx-flow",name:"sylphx-flow",description:"Sylphx Flow MCP server for agent coordination and memory management",config:{type:"stdio",command:"sylphx-flow",args:async()=>{let A=["mcp","start"],D=await FIA();if(D?.disableTime)A.push("--disable-time");if(D?.disableKnowledge)A.push("--disable-knowledge");if(D?.disableCodebase)A.push("--disable-codebase");return A},env:{OPENAI_API_KEY:"",OPENAI_BASE_URL:"https://api.openai.com/v1",EMBEDDING_MODEL:"text-embedding-3-small"}},envVars:{OPENAI_API_KEY:{description:"OpenAI API key for vector search embeddings",required:!1,secret:!0},OPENAI_BASE_URL:{description:"Base URL for OpenAI-compatible embedding API",required:!1,default:"https://api.openai.com/v1"},EMBEDDING_MODEL:{description:"Embedding model to use for vector search",required:!1,default:"text-embedding-3-small",dependsOn:["OPENAI_API_KEY","OPENAI_BASE_URL"],fetchChoices:async()=>{let A=zF.getEnvVar("OPENAI_BASE_URL","https://api.openai.com/v1"),D=zF.getEnvVar("OPENAI_API_KEY");if(!D)throw Error("OPENAI_API_KEY is required to fetch embedding models");try{a7.apiKey.parse(D)}catch(I){throw Error("Invalid OPENAI_API_KEY format")}let B=await fetch(`${A}/models`,{headers:{Authorization:`Bearer ${D}`},timeout:1e4});if(!B.ok)throw Error(`Failed to fetch models: ${B.statusText}`);let E=(await B.json()).data.filter((I)=>I.id.includes("embedding")).map((I)=>I.id).sort();if(E.length===0)throw Error("No embedding models found");return E}}},category:"core",defaultInInit:!0,required:!0},"gpt-image":{id:"gpt-image",name:"gpt-image-1-mcp",description:"GPT Image generation MCP server",config:{type:"stdio",command:"npx",args:["@napolab/gpt-image-1-mcp"],env:{OPENAI_API_KEY:""}},envVars:{OPENAI_API_KEY:{description:"OpenAI API key for image generation",required:!0,secret:!0}},category:"ai",defaultInInit:!1},perplexity:{id:"perplexity",name:"perplexity-ask",description:"Perplexity Ask MCP server for search and queries",config:{type:"stdio",command:"npx",args:["-y","server-perplexity-ask"],env:{PERPLEXITY_API_KEY:""}},envVars:{PERPLEXITY_API_KEY:{description:"Perplexity API key for search and queries",required:!0,secret:!0}},category:"ai",defaultInInit:!1},context7:{id:"context7",name:"context7",description:"Context7 HTTP MCP server for documentation retrieval",config:{type:"http",url:"https://mcp.context7.com/mcp"},envVars:{CONTEXT7_API_KEY:{description:"Context7 API key for enhanced documentation access",required:!1,secret:!0}},category:"external",defaultInInit:!0},"gemini-search":{id:"gemini-search",name:"gemini-google-search",description:"Gemini Google Search MCP server",config:{type:"stdio",command:"npx",args:["-y","mcp-gemini-google-search"],env:{GEMINI_API_KEY:"",GEMINI_MODEL:"gemini-2.5-flash"}},envVars:{GEMINI_API_KEY:{description:"Google Gemini API key for search functionality",required:!0,secret:!0},GEMINI_MODEL:{description:"Gemini model to use for search",required:!1,default:"gemini-2.5-flash"}},category:"ai",defaultInInit:!1},grep:{id:"grep",name:"grep",description:"GitHub grep MCP server for searching GitHub repositories",config:{type:"http",url:"https://mcp.grep.app"},category:"external",defaultInInit:!0}};var CIA=(A)=>A.type==="stdio";var tW=(A)=>CIA(A);function SV(A){if(typeof A==="function"){let D=A();return Promise.resolve(D)}return Promise.resolve(A)}var R2=(A)=>{let D=()=>{return Object.keys(x0)},B=async()=>{let w=await Q();return D().filter(($)=>!w.includes($))},Q=async()=>{try{let w=await A.target.readConfig(process.cwd()),$=A.target.config.mcpConfigPath,q=U(w,$)||{},L=Object.keys(q);return Object.values(x0).filter((Z)=>L.includes(Z.name)).map((Z)=>Z.id)}catch(w){return[]}},E=(w)=>{return w.filter(($)=>{return!!x0[$].envVars})},I=(w,$)=>{let q=x0[w];if(!q?.envVars)return{isValid:!0,missingRequired:[],invalidValues:[]};let L=[],Z=[];for(let[R,O]of Object.entries(q.envVars)){let V=$[R]||process.env[R]||"";if(O.required&&(!V||V===""))L.push(R)}return{isValid:L.length===0&&Z.length===0,missingRequired:L,invalidValues:Z}},G=async(w,$={})=>{let q=x0[w],L={};if(!q.envVars)return L;console.log(""),console.log(FA.cyan(`▸ ${q.name}`)),console.log(FA.gray(` ${q.description}`)),console.log("");for(let[Z,R]of Object.entries(q.envVars)){if(R.dependsOn){if(R.dependsOn.filter((h)=>!($[h]||process.env[h])).length>0)continue}let O=$[Z]||process.env[Z],V;if(O&&O.trim()!=="")V=O;else if(R.fetchChoices){let P=kE("Fetching options...").start();for(let[h,u]of Object.entries($))if(u)process.env[h]=u;try{let h=await R.fetchChoices();P.stop(),V=(await FQ.prompt({type:"list",name:"value",message:`${Z}${R.required?" *":""}`,choices:h,default:R.default||h[0]})).value}catch(h){let u=h instanceof Error?h.message:String(h);P.fail(FA.red(`Failed to fetch options: ${u}`)),V=(await FQ.prompt({type:"input",name:"value",message:`${Z}${R.required?" *":""}`,default:R.default})).value}}else if(Z==="GEMINI_MODEL")V=(await FQ.prompt({type:"list",name:"model",message:`${Z}${R.required?" *":""}`,choices:["gemini-2.5-flash","gemini-2.5-pro","gemini-1.5-flash","gemini-1.5-pro"],default:R.default||"gemini-2.5-flash"})).model;else V=(await FQ.prompt({type:R.secret?"password":"input",name:"value",message:`${Z}${R.required?" *":""}`,default:R.default,mask:R.secret?"•":void 0})).value;if(V)L[Z]=V,$[Z]=V}return console.log(FA.green("✓ Configured")),console.log(""),L},J=async(w,$={})=>{if(w.length===0)return;try{let q=await A.target.readConfig(process.cwd()),L=A.target.config.mcpConfigPath,R={...U(q,L)||{}};for(let O of w){let V=x0[O],P=$[O]||{},h={...V.config},u,y;if(tW(V.config))u=V.config.command?await SV(V.config.command):void 0,y=V.config.args?await SV(V.config.args):[];if(tW(V.config))h={...V.config,command:u,args:y};if(Object.keys(P).length>0){let d={...V.config.type==="local"?V.config.environment:V.config.type==="stdio"?V.config.env:{}};for(let[o,r]of Object.entries(P))if(r&&r.trim()!=="")d[o]=r;if(h.type==="local")h.environment=d;else if(h.type==="stdio")h.env=d}let a=A.target.transformMCPConfig(h,O);R[V.name]=a}if(z(q,L,R),await A.target.writeConfig(process.cwd(),q),A.target.approveMCPServers){let O=w.map((V)=>x0[V].name);await A.target.approveMCPServers(process.cwd(),O)}}catch(q){throw Error(`Failed to install MCP servers: ${q instanceof Error?q.message:String(q)}`)}},X=async()=>{try{return await A.target.readConfig(process.cwd())}catch(w){return{settings:{}}}},W=async(w)=>{await A.target.writeConfig(process.cwd(),w)},U=(w,$)=>{return $.split(".").reduce((q,L)=>{if(typeof q==="object"&&q!==null)return q[L];return},w)},z=(w,$,q)=>{let L=$.split("."),Z=L.pop();if(!Z)return;let R=L.reduce((O,V)=>{if(!O[V])O[V]={};return O[V]},w);R[Z]=q};return{getAllServerIds:D,getAvailableServers:B,getInstalledServerIds:Q,getRequiringConfiguration:E,validateServer:I,configureServer:G,installServers:J,readConfig:X,writeConfig:W}};function ddA(A){let D=fB.getTarget(A);if(D._tag==="None")throw Error(`Target not found: ${A}`);let B=D.value,Q=R2({target:B}),E=async(X={})=>{let W=Q.getAllServerIds(),U=await Q.getInstalledServerIds();if(!X.quiet)console.log(FA.cyan.bold(`━━━ Configure MCP Tools ━━━
612
612
  `));let w=(await FQ.prompt([{type:"checkbox",name:"selectedServers",message:"Select MCP tools to install:",choices:W.map((q)=>{let L=x0[q],Z=U.includes(q);return{name:`${L.name} - ${L.description}`,value:q,checked:L.required||Z||L.defaultInInit||!1,disabled:L.required?"(required)":!1}})}])).selectedServers,$=W.filter((q)=>x0[q].required);return w=[...new Set([...$,...w])],w},I=async(X,W={})=>{let U=X.filter((w)=>{let $=x0[w];return $.envVars&&Object.keys($.envVars).length>0}),z={};if(U.length>0){if(!W.quiet)console.log(FA.cyan.bold(`
613
613
  ━━━ Server Configuration ━━━
614
- `));let w={};for(let $ of U){let q=await Q.configureServer($,w);z[$]=q}}return z},G=async(X,W,U={})=>{if(X.length===0)return;let z=U.quiet?null:kE({text:`Installing ${X.length} MCP server${X.length>1?"s":""}`,color:"cyan"}).start();try{if(await Q.installServers(X,W),z)z.succeed(FA.green(`Installed ${FA.cyan(X.length)} MCP server${X.length>1?"s":""}`))}catch(w){if(z)z.fail(FA.red("Failed to install MCP servers"));throw w}};return{selectServers:E,configureServers:I,installServers:G,setupMCP:async(X={})=>{let W=await E(X);if(W.length===0)return{selectedServers:[],serverConfigsMap:{}};let U=await I(W,X);if(!X.dryRun)await G(W,U,X);return{selectedServers:W,serverConfigsMap:U}}}}class DJ{installer;constructor(A){this.installer=ddA(A)}async selectServers(A={}){return this.installer.selectServers(A)}async configureServers(A,D={}){return this.installer.configureServers(A,D)}async installServers(A,D,B={}){return this.installer.installServers(A,D,B)}async setupMCP(A={}){return this.installer.setupMCP(A)}}var OC={id:"claude-code",name:"Claude Code",description:"Claude Code CLI with YAML front matter agents (.claude/agents/*.md)",category:"cli",isImplemented:!0,isDefault:!1,mcpServerConfig:{disableMemory:!0,disableTime:!0,disableProjectStartup:!1,disableKnowledge:!1,disableCodebase:!0},config:{agentDir:".claude/agents",agentExtension:".md",agentFormat:"yaml-frontmatter",stripYaml:!1,flatten:!1,configFile:".mcp.json",configSchema:null,mcpConfigPath:"mcpServers",rulesFile:void 0,outputStylesDir:void 0,slashCommandsDir:".claude/commands",installation:{createAgentDir:!0,createConfigFile:!0,useSecretFiles:!1}},async transformAgentContent(A,D,B){let{metadata:Q,content:E}=await MF.extractFrontMatter(A),I=ldA(Q,E,B);if(D)Object.assign(I,D);return MF.addFrontMatter(E,I)},transformMCPConfig(A,D){if(A.type==="local"){let[B,...Q]=A.command;return{type:"stdio",command:B,...Q&&Q.length>0&&{args:Q},...A.environment&&{env:A.environment}}}if(A.type==="stdio")return{type:"stdio",command:A.command,...A.args&&A.args.length>0&&{args:A.args},...A.env&&{env:A.env}};if(A.type==="remote")return{type:"http",url:A.url,...A.headers&&{headers:A.headers}};if(A.type==="http")return{type:"http",url:A.url,...A.headers&&{headers:A.headers}};return A},getConfigPath:(A)=>Promise.resolve(N1.getConfigPath(OC.config,A)),async readConfig(A){let D=await N1.readConfig(OC.config,A);if(!D.mcpServers)D.mcpServers={};return D},async writeConfig(A,D){if(!D.mcpServers)D.mcpServers={};await N1.writeConfig(OC.config,A,D)},validateRequirements:(A)=>N1.validateRequirements(OC.config,A),getHelpText(){let A=AK(OC.config);return A+=`Claude Code-Specific Information:
614
+ `));let w={};for(let $ of U){let q=await Q.configureServer($,w);z[$]=q}}return z},G=async(X,W,U={})=>{if(X.length===0)return;let z=U.quiet?null:kE({text:`Installing ${X.length} MCP server${X.length>1?"s":""}`,color:"cyan"}).start();try{if(await Q.installServers(X,W),z)z.succeed(FA.green(`Installed ${FA.cyan(X.length)} MCP server${X.length>1?"s":""}`))}catch(w){if(z)z.fail(FA.red("Failed to install MCP servers"));throw w}};return{selectServers:E,configureServers:I,installServers:G,setupMCP:async(X={})=>{let W=await E(X);if(W.length===0)return{selectedServers:[],serverConfigsMap:{}};let U=await I(W,X);if(!X.dryRun)await G(W,U,X);return{selectedServers:W,serverConfigsMap:U}}}}class DJ{installer;constructor(A){this.installer=ddA(A)}async selectServers(A={}){return this.installer.selectServers(A)}async configureServers(A,D={}){return this.installer.configureServers(A,D)}async installServers(A,D,B={}){return this.installer.installServers(A,D,B)}async setupMCP(A={}){return this.installer.setupMCP(A)}}var OC={id:"claude-code",name:"Claude Code",description:"Claude Code CLI with YAML front matter agents (.claude/agents/*.md)",category:"cli",isImplemented:!0,isDefault:!1,mcpServerConfig:{disableTime:!0,disableKnowledge:!1,disableCodebase:!0},config:{agentDir:".claude/agents",agentExtension:".md",agentFormat:"yaml-frontmatter",stripYaml:!1,flatten:!1,configFile:".mcp.json",configSchema:null,mcpConfigPath:"mcpServers",rulesFile:void 0,outputStylesDir:void 0,slashCommandsDir:".claude/commands",installation:{createAgentDir:!0,createConfigFile:!0,useSecretFiles:!1}},async transformAgentContent(A,D,B){let{metadata:Q,content:E}=await MF.extractFrontMatter(A),I=ldA(Q,E,B);if(D)Object.assign(I,D);return MF.addFrontMatter(E,I)},transformMCPConfig(A,D){if(A.type==="local"){let[B,...Q]=A.command;return{type:"stdio",command:B,...Q&&Q.length>0&&{args:Q},...A.environment&&{env:A.environment}}}if(A.type==="stdio")return{type:"stdio",command:A.command,...A.args&&A.args.length>0&&{args:A.args},...A.env&&{env:A.env}};if(A.type==="remote")return{type:"http",url:A.url,...A.headers&&{headers:A.headers}};if(A.type==="http")return{type:"http",url:A.url,...A.headers&&{headers:A.headers}};return A},getConfigPath:(A)=>Promise.resolve(N1.getConfigPath(OC.config,A)),async readConfig(A){let D=await N1.readConfig(OC.config,A);if(!D.mcpServers)D.mcpServers={};return D},async writeConfig(A,D){if(!D.mcpServers)D.mcpServers={};await N1.writeConfig(OC.config,A,D)},validateRequirements:(A)=>N1.validateRequirements(OC.config,A),getHelpText(){let A=AK(OC.config);return A+=`Claude Code-Specific Information:
615
615
  `,A+=` Configuration File: .mcp.json
616
616
  `,A+=` Agent Format: Markdown with YAML front matter
617
617
  `,A+=` MCP Integration: Full server support
@@ -659,7 +659,7 @@ $toast = New-Object Windows.UI.Notifications.ToastNotification $xml
659
659
  `,A},async executeCommand(A,D,B={}){let Q=GIA.yamlContent(A),E=D.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,""),I=`${Q}
660
660
 
661
661
  Please begin your response with a comprehensive summary of all the instructions and context provided above.`;if(B.dryRun){console.log("Dry run: Would execute Claude Code with --system-prompt"),console.log("System prompt to append length:",I.length,"characters"),console.log("User prompt length:",E.length,"characters"),console.log("✓ Dry run completed successfully");return}try{let G=["--dangerously-skip-permissions"];if(G.push("--system-prompt",I),B.verbose)console.log("\uD83D\uDE80 Executing Claude Code"),console.log(`\uD83D\uDCDD System prompt length: ${I.length} characters`);if(E.trim()!=="")G.push(E);if(B.verbose)console.log(`\uD83D\uDCDD User prompt length: ${E.length} characters`);await new Promise((J,X)=>{let W=pdA("claude",G,{stdio:"inherit",shell:!1});W.on("close",(U)=>{if(U===0)J();else{let z=Error(`Claude Code exited with code ${U}`);z.code=U,X(z)}}),W.on("error",(U)=>{X(U)})})}catch(G){if(G.code==="ENOENT")throw new PB("Claude Code not found. Please install it first.","CLAUDE_NOT_FOUND");if(G.code)throw new PB(`Claude Code exited with code ${G.code}`,"CLAUDE_ERROR");throw new PB(`Failed to execute Claude Code: ${G.message}`,"CLAUDE_ERROR")}},detectFromEnvironment(){try{let A=process.cwd();return cdA.existsSync(VC.join(A,".mcp.json"))}catch{return!1}},async approveMCPServers(A,D){let B=VC.join(A,".claude","settings.local.json");try{let Q={};try{let G=await vV.readFile(B,"utf8");Q=JSON.parse(G)}catch(G){if(G.code!=="ENOENT")throw G}let E=Array.isArray(Q.enabledMcpjsonServers)?Q.enabledMcpjsonServers:[],I=[...new Set([...E,...D])];Q.enabledMcpjsonServers=I,await vV.mkdir(VC.dirname(B),{recursive:!0}),await vV.writeFile(B,`${JSON.stringify(Q,null,2)}
662
- `,"utf8")}catch(Q){throw Error(`Failed to approve MCP servers: ${Q instanceof Error?Q.message:String(Q)}`)}},async transformRulesContent(A){return MF.stripFrontMatter(A)},async setupHooks(A,D){let{processSettings:B,generateHookCommands:Q}=await import("./chunk-zwsaqnr2.js"),{pathExists:E,createDirectory:I,readFile:G,writeFile:J}=await import("./chunk-7d3pwe6x.js"),X=VC.join(A,".claude"),W=VC.join(X,"settings.json"),U=await E(X);if(U._tag==="Success"&&!U.value){let Z=await I(X,{recursive:!0});if(Z._tag==="Failure")throw Error(`Failed to create .claude directory: ${Z.error.message}`)}let z=null,w=await E(W);if(w._tag==="Success"&&w.value){let Z=await G(W);if(Z._tag==="Success")z=Z.value}let $=await Q("claude-code"),q=B(z,$);if(q._tag==="Failure")throw Error(`Failed to process settings: ${q.error.message}`);let L=await J(W,q.value);if(L._tag==="Failure")throw Error(`Failed to write settings: ${L.error.message}`);return{count:3,message:"Configured session, message, and notification hooks"}},async setupAgents(A,D){let{enhanceAgentContent:B}=await import("./chunk-bmfd3jzw.js"),Q=new c4,E=VC.join(A,this.config.agentDir);return{count:(await Q.installToDirectory(V2(),E,async(G,J)=>{let X=await this.transformAgentContent(G,void 0,J);return await B(X)},{...D,showProgress:!1})).length}},async setupOutputStyles(A,D){return{count:0,message:"Output styles included in agent files"}},async setupRules(A,D){return{count:0,message:"Rules included in agent files"}},async setupMCP(A,D){let Q=await new DJ(this.id).setupMCP({...D,quiet:!0});if(Q.selectedServers.length>0&&!D.dryRun){if(this.approveMCPServers)await this.approveMCPServers(A,Q.selectedServers)}return{count:Q.selectedServers.length}},async setupSlashCommands(A,D){if(!this.config.slashCommandsDir)return{count:0};let B=new c4,Q=VC.join(A,this.config.slashCommandsDir);return{count:(await B.installToDirectory(eW(),Q,async(I)=>{return I},{...D,showProgress:!1})).length}}};function ldA(A,D,B){let Q=A.name||gV.extractAgentName(D,A,B),E=A.description||gV.extractDescription(D),I={name:Q,description:E};if(A.model&&A.model!=="inherit")I.model=A.model;return I}import jC from"node:fs";import O2 from"node:path";var idA={core:"core.md"};function _V(A="core"){return JIA(idA[A])}function HIA(A){try{return _V(A),!0}catch{return!1}}var l4={id:"opencode",name:"OpenCode",description:"OpenCode IDE with YAML front matter agents (.opencode/agent/*.md)",category:"ide",isImplemented:!0,isDefault:!0,mcpServerConfig:{disableMemory:!0,disableTime:!1,disableProjectStartup:!1,disableKnowledge:!1,disableCodebase:!1},config:{agentDir:".opencode/agent",agentExtension:".md",agentFormat:"yaml-frontmatter",stripYaml:!1,flatten:!1,configFile:"opencode.jsonc",configSchema:"https://opencode.ai/config.json",mcpConfigPath:"mcp",rulesFile:"AGENTS.md",outputStylesDir:void 0,slashCommandsDir:".opencode/commands",installation:{createAgentDir:!0,createConfigFile:!0,useSecretFiles:!0}},async transformAgentContent(A,D,B){let{metadata:Q,content:E}=await MF.extractFrontMatter(A),{name:I,...G}=Q;if(D){let{name:J,...X}=D,W={...G,...X};return MF.addFrontMatter(E,W)}return MF.addFrontMatter(E,G)},transformMCPConfig(A,D){if(A.type==="stdio"){let B={type:"local",command:[A.command]};if(A.args&&A.args.length>0)B.command.push(...A.args);if(A.env)B.environment=A.env;return B}if(A.type==="http")return{type:"remote",url:A.url,...A.headers&&{headers:A.headers}};if(A.type==="local"||A.type==="remote")return A;return A},getConfigPath:(A)=>Promise.resolve(N1.getConfigPath(l4.config,A)),async readConfig(A){let D=await N1.readConfig(l4.config,A),B=await pQ.resolveFileReferences(A,D);if(!B.mcp)B.mcp={};return B},async writeConfig(A,D){if(!D.mcp)D.mcp={};if(l4.config.installation?.useSecretFiles){for(let[B,Q]of Object.entries(D.mcp||{}))if(Q&&typeof Q==="object"&&"environment"in Q){let E=Q.environment;if(E&&typeof E==="object"){let I=Object.values(x0).find((G)=>G.name===B);if(I?.envVars){let G={},J={};for(let[W,U]of Object.entries(E))if(I.envVars[W]?.secret&&U&&!pQ.isFileReference(U))G[W]=U;else J[W]=U;let X=await pQ.convertSecretsToFileReferences(A,G);Q.environment={...J,...X}}}}}await N1.writeConfig(l4.config,A,D)},validateRequirements:(A)=>N1.validateRequirements(l4.config,A),getHelpText(){let A=AK(l4.config);return A+=`OpenCode-Specific Information:
662
+ `,"utf8")}catch(Q){throw Error(`Failed to approve MCP servers: ${Q instanceof Error?Q.message:String(Q)}`)}},async transformRulesContent(A){return MF.stripFrontMatter(A)},async setupHooks(A,D){let{processSettings:B,generateHookCommands:Q}=await import("./chunk-zwsaqnr2.js"),{pathExists:E,createDirectory:I,readFile:G,writeFile:J}=await import("./chunk-7d3pwe6x.js"),X=VC.join(A,".claude"),W=VC.join(X,"settings.json"),U=await E(X);if(U._tag==="Success"&&!U.value){let Z=await I(X,{recursive:!0});if(Z._tag==="Failure")throw Error(`Failed to create .claude directory: ${Z.error.message}`)}let z=null,w=await E(W);if(w._tag==="Success"&&w.value){let Z=await G(W);if(Z._tag==="Success")z=Z.value}let $=await Q("claude-code"),q=B(z,$);if(q._tag==="Failure")throw Error(`Failed to process settings: ${q.error.message}`);let L=await J(W,q.value);if(L._tag==="Failure")throw Error(`Failed to write settings: ${L.error.message}`);return{count:3,message:"Configured session, message, and notification hooks"}},async setupAgents(A,D){let{enhanceAgentContent:B}=await import("./chunk-bmfd3jzw.js"),Q=new c4,E=VC.join(A,this.config.agentDir);return{count:(await Q.installToDirectory(V2(),E,async(G,J)=>{let X=await this.transformAgentContent(G,void 0,J);return await B(X)},{...D,showProgress:!1})).length}},async setupOutputStyles(A,D){return{count:0,message:"Output styles included in agent files"}},async setupRules(A,D){return{count:0,message:"Rules included in agent files"}},async setupMCP(A,D){let Q=await new DJ(this.id).setupMCP({...D,quiet:!0});if(Q.selectedServers.length>0&&!D.dryRun){if(this.approveMCPServers)await this.approveMCPServers(A,Q.selectedServers)}return{count:Q.selectedServers.length}},async setupSlashCommands(A,D){if(!this.config.slashCommandsDir)return{count:0};let B=new c4,Q=VC.join(A,this.config.slashCommandsDir);return{count:(await B.installToDirectory(eW(),Q,async(I)=>{return I},{...D,showProgress:!1})).length}}};function ldA(A,D,B){let Q=A.name||gV.extractAgentName(D,A,B),E=A.description||gV.extractDescription(D),I={name:Q,description:E};if(A.model&&A.model!=="inherit")I.model=A.model;return I}import jC from"node:fs";import O2 from"node:path";var idA={core:"core.md"};function _V(A="core"){return JIA(idA[A])}function HIA(A){try{return _V(A),!0}catch{return!1}}var l4={id:"opencode",name:"OpenCode",description:"OpenCode IDE with YAML front matter agents (.opencode/agent/*.md)",category:"ide",isImplemented:!0,isDefault:!0,mcpServerConfig:{disableTime:!1,disableKnowledge:!1,disableCodebase:!1},config:{agentDir:".opencode/agent",agentExtension:".md",agentFormat:"yaml-frontmatter",stripYaml:!1,flatten:!1,configFile:"opencode.jsonc",configSchema:"https://opencode.ai/config.json",mcpConfigPath:"mcp",rulesFile:"AGENTS.md",outputStylesDir:void 0,slashCommandsDir:".opencode/commands",installation:{createAgentDir:!0,createConfigFile:!0,useSecretFiles:!0}},async transformAgentContent(A,D,B){let{metadata:Q,content:E}=await MF.extractFrontMatter(A),{name:I,...G}=Q;if(D){let{name:J,...X}=D,W={...G,...X};return MF.addFrontMatter(E,W)}return MF.addFrontMatter(E,G)},transformMCPConfig(A,D){if(A.type==="stdio"){let B={type:"local",command:[A.command]};if(A.args&&A.args.length>0)B.command.push(...A.args);if(A.env)B.environment=A.env;return B}if(A.type==="http")return{type:"remote",url:A.url,...A.headers&&{headers:A.headers}};if(A.type==="local"||A.type==="remote")return A;return A},getConfigPath:(A)=>Promise.resolve(N1.getConfigPath(l4.config,A)),async readConfig(A){let D=await N1.readConfig(l4.config,A),B=await pQ.resolveFileReferences(A,D);if(!B.mcp)B.mcp={};return B},async writeConfig(A,D){if(!D.mcp)D.mcp={};if(l4.config.installation?.useSecretFiles){for(let[B,Q]of Object.entries(D.mcp||{}))if(Q&&typeof Q==="object"&&"environment"in Q){let E=Q.environment;if(E&&typeof E==="object"){let I=Object.values(x0).find((G)=>G.name===B);if(I?.envVars){let G={},J={};for(let[W,U]of Object.entries(E))if(I.envVars[W]?.secret&&U&&!pQ.isFileReference(U))G[W]=U;else J[W]=U;let X=await pQ.convertSecretsToFileReferences(A,G);Q.environment={...J,...X}}}}}await N1.writeConfig(l4.config,A,D)},validateRequirements:(A)=>N1.validateRequirements(l4.config,A),getHelpText(){let A=AK(l4.config);return A+=`OpenCode-Specific Information:
663
663
  `,A+=` Configuration File: opencode.jsonc
664
664
  `,A+=` Schema: https://opencode.ai/config.json
665
665
  `,A+=` Agent Format: Markdown with YAML front matter
@@ -843,7 +843,7 @@ search-cache/
843
843
  cache/
844
844
  sessions/
845
845
  coordination/
846
- `;try{if((await rK.readFile(B,"utf8")).trim()===Q.trim())return}catch{}await rK.writeFile(B,Q,"utf8"),yC.info(`✓ Created ${fO.join(uFA,".gitignore")}`)}catch(B){yC.error("Failed to initialize .sylphx-flow directory",B)}}var tK={name:"sylphx-flow",version:"1.0.0",description:"Sylphx Flow MCP server providing coordination tools for AI agents. Persistent SQLite-based storage with namespace support for agent coordination and state management."},yC={info:(A)=>console.error(`[INFO] ${A}`),success:(A)=>console.error(`[SUCCESS] ${A}`),error:(A,D)=>{if(console.error(`[ERROR] ${A}`),D)console.error(D)}};async function mFA(A={}){process.env.MCP_SERVER_MODE="true",console.log("\uD83D\uDE80 Starting Sylphx Flow MCP Server..."),console.log("\uD83D\uDCCD Database: .sylphx-flow/memory.db"),await QnA();let D=vE();console.log("\uD83D\uDD0D Initializing embedding provider...");try{let E=await qC();console.log(`✓ Embedding provider initialized: ${E.name}`),await D.initialize(),console.log("✓ Search service initialized with embeddings")}catch(E){console.log("⚠️ Failed to initialize embeddings, using TF-IDF only:",E),await D.initialize()}yC.info(`\uD83D\uDCCB Description: ${tK.description.substring(0,100)}...`);let B=new SO({name:tK.name,version:tK.version,description:tK.description}),Q=[];if(!A.disableTime)bFA(B),Q.push("time_get_current, time_format, time_parse");if(!A.disableCodebase)yC.info("\uD83D\uDD0D Registering codebase tools"),xFA(B),Q.push("codebase_search"),D.startCodebaseWatching(),console.log("\uD83D\uDD0D Codebase Tools: Enabled (with file watching)");if(!A.disableKnowledge)yC.info("\uD83D\uDCDA Registering knowledge tools"),hFA(B),Q.push("knowledge_search","knowledge_get"),console.log("\uD83D\uDCDA Knowledge Tools: Enabled");if(Q.length>0)console.log(`\uD83D\uDD27 Enabled tools: ${Q.join(", ")}`);else console.log("\uD83D\uDD27 All tools disabled");try{let E=new gO;return await B.connect(E),yC.success("✓ MCP Server connected and ready"),console.log("\uD83D\uDCA1 Press Ctrl+C to stop the server"),B}catch(E){throw yC.error("Failed to start MCP server",E),E}}var xC=new xQ("mcp").description("Manage MCP (Model Context Protocol) servers").option("--target <type>",`Force specific target (${fB.getImplementedTargetIDs().join(", ")}, default: auto-detect)`);xC.command("start").description("Start Sylphx Flow MCP server with specific configuration").option("--disable-memory","Disable memory functionality").option("--disable-time","Disable time functionality").option("--disable-project-startup","Disable project startup functionality").option("--disable-knowledge","Disable knowledge functionality").option("--disable-codebase","Disable codebase search functionality").action(async(A)=>{let D={disableMemory:A.disableMemory===!0,disableTime:A.disableTime===!0,disableProjectStartup:A.disableProjectStartup===!0,disableKnowledge:A.disableKnowledge===!0,disableCodebase:A.disableCodebase===!0};try{console.log(FA.blue("\uD83D\uDE80 Starting Sylphx Flow MCP Server...")),await mFA(D)}catch(B){throw new PB(`Failed to start MCP server: ${B instanceof Error?B.message:String(B)}`,"MCP_START_ERROR")}});xC.command("config").description("Configure MCP server settings").option("--server <name>","Configure specific server (shows selection if not provided)").action(async(A)=>{let D=A.server,B=await fB.resolveTarget({target:A.target,allowSelection:!0});if(!EJ(B))throw new PB(`Target ${B} does not support MCP servers`,"UNSUPPORTED_TARGET");console.log(""),console.log(FA.cyan.bold("▸ Configure MCP Server")),console.log(FA.gray(` Target: ${B}`));let Q=fB.getTarget(B);if(Q._tag==="None")throw new PB(`Target not found: ${B}`,"TARGET_NOT_FOUND");let E=Q.value,I=R2({target:E}),G;if(D){if(!I.getAllServerIds().includes(D))throw new PB(`Invalid MCP server: ${D}. Available: ${I.getAllServerIds().join(", ")}`,"INVALID_MCP_SERVER");G=D}else G=(await FQ.prompt([{type:"list",name:"server",message:"Select server to configure:",choices:I.getAllServerIds().map((U)=>{let z=x0[U];return{name:`${z.name} - ${z.description}`,value:U}})}])).server;let J=x0[G];if(console.log(FA.cyan(`
846
+ `;try{if((await rK.readFile(B,"utf8")).trim()===Q.trim())return}catch{}await rK.writeFile(B,Q,"utf8"),yC.info(`✓ Created ${fO.join(uFA,".gitignore")}`)}catch(B){yC.error("Failed to initialize .sylphx-flow directory",B)}}var tK={name:"sylphx-flow",version:"1.0.0",description:"Sylphx Flow MCP server providing coordination tools for AI agents. Persistent SQLite-based storage with namespace support for agent coordination and state management."},yC={info:(A)=>console.error(`[INFO] ${A}`),success:(A)=>console.error(`[SUCCESS] ${A}`),error:(A,D)=>{if(console.error(`[ERROR] ${A}`),D)console.error(D)}};async function mFA(A={}){process.env.MCP_SERVER_MODE="true",console.log("\uD83D\uDE80 Starting Sylphx Flow MCP Server..."),console.log("\uD83D\uDCCD Database: .sylphx-flow/memory.db"),await QnA();let D=vE();console.log("\uD83D\uDD0D Initializing embedding provider...");try{let E=await qC();console.log(`✓ Embedding provider initialized: ${E.name}`),await D.initialize(),console.log("✓ Search service initialized with embeddings")}catch(E){console.log("⚠️ Failed to initialize embeddings, using TF-IDF only:",E),await D.initialize()}yC.info(`\uD83D\uDCCB Description: ${tK.description.substring(0,100)}...`);let B=new SO({name:tK.name,version:tK.version,description:tK.description}),Q=[];if(!A.disableTime)bFA(B),Q.push("time_get_current, time_format, time_parse");if(!A.disableCodebase)yC.info("\uD83D\uDD0D Registering codebase tools"),xFA(B),Q.push("codebase_search"),D.startCodebaseWatching(),console.log("\uD83D\uDD0D Codebase Tools: Enabled (with file watching)");if(!A.disableKnowledge)yC.info("\uD83D\uDCDA Registering knowledge tools"),hFA(B),Q.push("knowledge_search","knowledge_get"),console.log("\uD83D\uDCDA Knowledge Tools: Enabled");if(Q.length>0)console.log(`\uD83D\uDD27 Enabled tools: ${Q.join(", ")}`);else console.log("\uD83D\uDD27 All tools disabled");try{let E=new gO;return await B.connect(E),yC.success("✓ MCP Server connected and ready"),console.log("\uD83D\uDCA1 Press Ctrl+C to stop the server"),B}catch(E){throw yC.error("Failed to start MCP server",E),E}}var xC=new xQ("mcp").description("Manage MCP (Model Context Protocol) servers").option("--target <type>",`Force specific target (${fB.getImplementedTargetIDs().join(", ")}, default: auto-detect)`);xC.command("start").description("Start Sylphx Flow MCP server with specific configuration").option("--disable-time","Disable time functionality").option("--disable-knowledge","Disable knowledge functionality").option("--disable-codebase","Disable codebase search functionality").action(async(A)=>{let D={disableTime:A.disableTime===!0,disableKnowledge:A.disableKnowledge===!0,disableCodebase:A.disableCodebase===!0};try{console.log(FA.blue("\uD83D\uDE80 Starting Sylphx Flow MCP Server...")),await mFA(D)}catch(B){throw new PB(`Failed to start MCP server: ${B instanceof Error?B.message:String(B)}`,"MCP_START_ERROR")}});xC.command("config").description("Configure MCP server settings").option("--server <name>","Configure specific server (shows selection if not provided)").action(async(A)=>{let D=A.server,B=await fB.resolveTarget({target:A.target,allowSelection:!0});if(!EJ(B))throw new PB(`Target ${B} does not support MCP servers`,"UNSUPPORTED_TARGET");console.log(""),console.log(FA.cyan.bold("▸ Configure MCP Server")),console.log(FA.gray(` Target: ${B}`));let Q=fB.getTarget(B);if(Q._tag==="None")throw new PB(`Target not found: ${B}`,"TARGET_NOT_FOUND");let E=Q.value,I=R2({target:E}),G;if(D){if(!I.getAllServerIds().includes(D))throw new PB(`Invalid MCP server: ${D}. Available: ${I.getAllServerIds().join(", ")}`,"INVALID_MCP_SERVER");G=D}else G=(await FQ.prompt([{type:"list",name:"server",message:"Select server to configure:",choices:I.getAllServerIds().map((U)=>{let z=x0[U];return{name:`${z.name} - ${z.description}`,value:U}})}])).server;let J=x0[G];if(console.log(FA.cyan(`
847
847
  ▸ ${J.name}`)),console.log(FA.gray(` ${J.description}`)),!J.envVars){console.log(FA.gray(`
848
848
  No configuration needed`));return}await I.configureServer(G);let X=kE("Saving configuration...").start();try{await I.installServers([G]),X.succeed(FA.green("✓ Configuration saved"))}catch(W){throw X.fail(FA.red("Failed to save configuration")),W}});xC.command("list").description("List installed MCP servers").action(async(A)=>{let D=await fB.resolveTarget({target:A.target,allowSelection:!0});if(!EJ(D))throw new PB(`Target ${D} does not support MCP servers`,"UNSUPPORTED_TARGET");await MIA(process.cwd(),D)});xC.command("add").description("Add MCP servers").argument("<servers...>","Server names to add (comma-separated or space-separated)").action(async(A,D)=>{let B=await fB.resolveTarget({target:D.target,allowSelection:!0});if(!EJ(B))throw new PB(`Target ${B} does not support MCP servers`,"UNSUPPORTED_TARGET");if(!A||A.length===0)throw new PB("No servers specified. Provide server names as arguments","NO_SERVERS_SPECIFIED");let Q=A.flatMap((U)=>U.split(",")).map((U)=>U.trim()).filter(Boolean),E=fB.getTarget(B);if(E._tag==="None")throw new PB(`Target not found: ${B}`,"TARGET_NOT_FOUND");let I=E.value,G=R2({target:I}),J=G.getAllServerIds(),X=Q.filter((U)=>!J.includes(U));if(X.length>0)throw new PB(`Invalid MCP servers: ${X.join(", ")}. Available: ${J.join(", ")}`,"INVALID_MCP_SERVERS");let W=Q;await G.installServers(W)});xC.command("remove").description("Remove MCP servers").argument("<servers...>","Server names to remove (comma-separated or space-separated)").action(async(A,D)=>{let B=await fB.resolveTarget({target:D.target,allowSelection:!0});if(!EJ(B))throw new PB(`Target ${B} does not support MCP servers`,"UNSUPPORTED_TARGET");if(!A||A.length===0)throw new PB("No servers specified. Provide server names as arguments","NO_SERVERS_SPECIFIED");let Q=A.flatMap((W)=>W.split(",")).map((W)=>W.trim()).filter(Boolean),E=fB.getTarget(B);if(E._tag==="None")throw new PB(`Target not found: ${B}`,"TARGET_NOT_FOUND");let I=E.value,J=R2({target:I}).getInstalledServerIds(),X=Q.filter((W)=>!J.includes(W));if(X.length>0)throw new PB(`MCP servers not installed: ${X.join(", ")}. Installed: ${J.join(", ")}`,"SERVERS_NOT_INSTALLED");console.log(FA.yellow("Remove functionality not yet implemented"))});import eK from"node:fs/promises";import AU from"node:path";async function EnA(A,D){let{enhanceAgentContent:B}=await import("./chunk-bmfd3jzw.js");try{if(D)return await eK.readFile(AU.resolve(D),"utf-8");let Q=AU.join(process.cwd(),".claude","agents",`${A}.md`);try{return await eK.readFile(Q,"utf-8")}catch(E){let I=AU.join(process.cwd(),"agents",`${A}.md`);try{let G=await eK.readFile(I,"utf-8");return await B(G)}catch(G){let J=V2(),X=AU.join(J,`${A}.md`),W=await eK.readFile(X,"utf-8");return await B(W)}}}catch(Q){throw new PB(`Agent '${A}' not found${D?` at ${D}`:""}`,"AGENT_NOT_FOUND")}}function InA(A){let D=/^---\s*\n[\s\S]*?\n---\s*\n/,B=A.match(D);if(B)return A.substring(B[0].length).trim();return A.trim()}function FnA(A,D,B,Q){let E=fB.getTarget(A);if(E._tag==="None")throw new PB(`Target not found: ${A}`,"TARGET_NOT_FOUND");let I=E.value;if(!I.isImplemented)throw new PB(`Target '${A}' is not implemented. Supported targets: ${dFA().join(", ")}`,"TARGET_NOT_IMPLEMENTED");if(!I.executeCommand)throw new PB(`Target '${A}' does not support command execution. Supported targets: ${dFA().join(", ")}`,"EXECUTION_NOT_SUPPORTED");return I.executeCommand(D,B,Q)}function dFA(){return fB.getImplementedTargetIDs().filter((A)=>{let D=fB.getTarget(A);if(D._tag==="None")return!1;return D.value.executeCommand!==void 0})}var pFA=new xQ("run").description("Run a prompt with a specific agent (default: coder) using the detected or specified target").option("--target <name>",`Target platform (${fB.getImplementedTargetIDs().join(", ")}, default: auto-detect)`).option("--agent <name>","Agent to use (default: coder)").option("--agent-file <path>","Load agent from specific file path (overrides --agent)").option("--verbose","Show detailed output").option("--dry-run","Show what would be done without executing the command").argument("[prompt]","The prompt to execute with the agent (optional - if not provided, will start Claude Code interactively)").action(async(A,D)=>{if(D.prompt=A,!D.agent)D.agent="coder";D.target=await fB.resolveTarget({target:D.target,allowSelection:!0});let{verbose:B}=D;if(B){if(console.log("\uD83D\uDE80 Sylphx Flow Run"),console.log("===================="),console.log(`\uD83C\uDFAF Target: ${D.target}`),console.log(`\uD83E\uDD16 Agent: ${D.agent}`),A)console.log(`\uD83D\uDCAC Prompt: ${A}`);else console.log("\uD83D\uDCAC Prompt: [Interactive mode]");console.log("")}let Q=await EnA(D.agent,D.agentFile),I=`AGENT INSTRUCTIONS:
849
849
  ${InA(Q)}`;if(B){let J=D.agentFile?`file: ${D.agentFile}`:`agent: ${D.agent}`;console.log(`\uD83D\uDCDD Using agent content from ${J} (${I.length} chars)`)}let G="";if(A&&A.trim()!=="")G=A;if(B)if(console.log("\uD83D\uDCDD System Prompt:"),console.log("================"),console.log(I.substring(0,500)+(I.length>500?"...":"")),console.log(""),G.trim()!=="")console.log("\uD83D\uDCDD User Prompt:"),console.log("=============="),console.log(G.substring(0,500)+(G.length>500?"...":"")),console.log("");else console.log("\uD83D\uDCDD User Prompt: [Interactive mode - Claude will greet the user]"),console.log("");await FnA(D.target,I,G,D)});function cFA(){console.log("\uD83D\uDE80 Sylphx Flow CLI - Type-safe development flow"),console.log("========================================="),console.log(""),console.log("Available commands:"),console.log(" init Initialize project with Sylphx Flow"),console.log(" mcp Manage MCP tools"),console.log(" run Run workflows and flows"),console.log(" codebase Search and analyze codebase"),console.log(" knowledge Manage knowledge base"),console.log(""),console.log("Examples:"),console.log(" sylphx-flow init"),console.log(" sylphx-flow init --target opencode"),console.log(" sylphx-flow mcp install --all"),console.log(' sylphx-flow codebase search "function"'),console.log(' sylphx-flow knowledge search "React patterns"'),console.log(""),console.log('Run "sylphx-flow <command> --help" for more information about a command.')}var YnA=HnA(import.meta.url),XnA=GnA(YnA),WnA=JnA(XnA,"..","package.json"),KnA=JSON.parse(CnA(WnA,"utf8")),UnA=KnA.version;function $nA(){let A=new xQ;return A.name("sylphx-flow").description("Sylphx Flow - Type-safe development flow CLI").version(UnA,"-v, --version","Show version number").helpOption("-h, --help","Display help for command").configureHelp({sortSubcommands:!0,showGlobalOptions:!0}),A.configureOutput({writeErr:(D)=>process.stderr.write(D),writeOut:(D)=>process.stdout.write(D)}),A.addCommand(ZIA),A.addCommand(xC),A.addCommand(pFA),A.addCommand(Nq),A.addCommand(XEA),A.addCommand(P2),A.addCommand(MEA),A.action(()=>{cFA()}),A}function lFA(){let A=$nA();NnA();try{A.parse(process.argv)}catch(D){znA(D)}}function NnA(){process.on("uncaughtException",(A)=>{console.error("✗ Uncaught Exception:"),console.error(` ${A.message}`),console.error(" Stack trace:",A.stack),process.exit(1)}),process.on("unhandledRejection",(A,D)=>{console.error("✗ Unhandled Promise Rejection:"),console.error(` Reason: ${A}`),console.error(" Promise:",D),process.exit(1)}),process.on("SIGINT",()=>{console.log(`
@@ -851,4 +851,4 @@ ${InA(Q)}`;if(B){let J=D.agentFile?`file: ${D.agentFile}`:`agent: ${D.agent}`;co
851
851
  \uD83D\uDC4B Sylphx Flow CLI terminated`),process.exit(0)})}function znA(A){if(A instanceof Error){if(A.name==="CommanderError"){let D=A;if(D.code==="commander.help"||D.code==="commander.version")return;console.error(`✗ ${D.message}`),process.exit(D.exitCode||1)}if(console.error(`✗ Error: ${A.message}`),A.stack)console.error(`
852
852
  Stack trace:`),console.error(A.stack)}else console.error(`✗ Unknown error: ${String(A)}`);process.exit(1)}lFA();
853
853
 
854
- //# debugId=D171BD2B5B0C3DC364756E2164756E21
854
+ //# debugId=1224A93248ED699364756E2164756E21