@sylphx/flow 0.0.5 → 0.0.6

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=nEA(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 LV(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 aEA=KE,zdA=ZI(wI.atlas),MdA=ZI(wI.cristal),wdA=ZI(wI.teen),ZdA=ZI(wI.mind),qdA=ZI(wI.morning),LdA=ZI(wI.vice),RdA=ZI(wI.passion),VdA=ZI(wI.fruit),OdA=ZI(wI.instagram),jdA=ZI(wI.retro),PdA=ZI(wI.summer),TdA=ZI(wI.rainbow),kdA=ZI(wI.pastel);KE.atlas=zdA;KE.cristal=MdA;KE.teen=wdA;KE.mind=ZdA;KE.morning=qdA;KE.vice=LdA;KE.passion=RdA;KE.fruit=VdA;KE.instagram=OdA;KE.retro=jdA;KE.summer=PdA;KE.rainbow=TdA;KE.pastel=kdA;var sEA=(A)=>({_tag:"Some",value:A}),oEA={_tag:"None"};var t7=(A)=>A._tag==="Some";var rEA=(A)=>(D)=>{if(t7(D))return D.value;return A};import{spawn as ydA}from"node:child_process";import xdA from"node:fs";import TV from"node:fs/promises";import VC from"node:path";import CE from"node:fs";import p4 from"node:path";import DIA from"node:path";import RC from"node:fs/promises";import tEA from"node:path";async function VV(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 eEA(A){try{return await RC.access(A),!0}catch{return!1}}async function aW(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 AIA(A){if(RV.validatePath(A),!await eEA(A))return;if((await aW(A)).isDirectory)await RC.rm(A,{recursive:!0,force:!0});else await RC.unlink(A)}async function sW(A,D={}){let{recursive:B=!1,includeFiles:Q=!0,includeDirectories:E=!0}=D;if(RV.validatePath(A),!await eEA(A))throw Error(`Directory does not exist: ${A}`);if(!(await aW(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=tEA.join(A,W.name);if(W.isDirectory()&&E){J.push(U);let z=await sW(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)=>tEA.join(A,J.name))}async function OV(A,D){try{return(await sW(A,{recursive:!0,includeFiles:!0,includeDirectories:!1})).filter((Q)=>D.some((E)=>Q.endsWith(E))).map((Q)=>DIA.relative(A,Q)).sort()}catch{return[]}}async function e7(A){let D=await aW(A);if(!D.exists||!D.isFile)return null;let B=await VV(A);if(B===null)return null;return{content:B,mtime:D.mtime}}async function jV(A,D,B,Q){try{let E=await sW(A,{recursive:!1,includeFiles:!0,includeDirectories:!1});for(let I of E){let G=DIA.basename(I);if(B.some((X)=>G.endsWith(X))&&!D.has(G))await AIA(I),Q.push({file:G,status:"skipped",action:"Removed obsolete file"})}}catch{}}async function BIA(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 OV(G,[D]);B.push(...J.map((X)=>p4.join(I,X)))}return B}async function vdA(A,D,B,Q={}){let E=[],I=await BIA(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}));jV(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 e7(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 gdA(A,D,B,Q={}){let E=await BIA(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 _dA(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 e7(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 vdA(A,D,B,Q)}async appendToFile(A,D,B,Q={}){return gdA(A,D,B,Q)}async installFile(A,D,B,Q={}){return _dA(A,D,B,Q)}}async function QIA(){let A=await fB.resolveTarget({allowSelection:!1});try{return fB.getTarget(A)?.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:async()=>{let{getMCPServerCommand:A,loadInvocationMethod:D,detectInvocation:B}=await import("./chunk-7wd1res1.js"),Q=await D()||B();return A(Q)},args:async()=>{let{getMCPServerArgs:A,loadInvocationMethod:D,detectInvocation:B}=await import("./chunk-7wd1res1.js"),Q=await D()||B(),E=A(Q),I=await QIA();if(I?.disableMemory)E.push("--disable-memory");if(I?.disableTime)E.push("--disable-time");if(I?.disableProjectStartup)E.push("--disable-project-startup");if(I?.disableKnowledge)E.push("--disable-knowledge");if(I?.disableCodebase)E.push("--disable-codebase");return E},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{n7.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 EIA=(A)=>A.type==="stdio";var oW=(A)=>EIA(A);function PV(A){if(typeof A==="function"){let D=A();return Promise.resolve(D)}return Promise.resolve(A)}var L2=(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(oW(V.config))u=V.config.command?await PV(V.config.command):void 0,y=V.config.args?await PV(V.config.args):[];if(oW(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 fdA(A){let D=fB.getTarget(A);if(!D)throw Error(`Target not found: ${A}`);let B=L2({target:D}),Q=async(J={})=>{let X=B.getAllServerIds(),W=await B.getInstalledServerIds();if(!J.quiet)console.log(FA.cyan.bold(`━━━ Configure MCP Tools ━━━
612
- `));let z=(await FQ.prompt([{type:"checkbox",name:"selectedServers",message:"Select MCP tools to install:",choices:X.map(($)=>{let q=x0[$],L=W.includes($);return{name:`${q.name} - ${q.description}`,value:$,checked:q.required||L||q.defaultInInit||!1,disabled:q.required?"(required)":!1}})}])).selectedServers,w=X.filter(($)=>x0[$].required);return z=[...new Set([...w,...z])],z},E=async(J,X={})=>{let W=J.filter((z)=>{let w=x0[z];return w.envVars&&Object.keys(w.envVars).length>0}),U={};if(W.length>0){if(!X.quiet)console.log(FA.cyan.bold(`
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 _dA(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 e7(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 vdA(A,D,B,Q)}async appendToFile(A,D,B,Q={}){return gdA(A,D,B,Q)}async installFile(A,D,B,Q={}){return _dA(A,D,B,Q)}}async function QIA(){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:async()=>{let{getMCPServerCommand:A,loadInvocationMethod:D,detectInvocation:B}=await import("./chunk-7wd1res1.js"),Q=await D()||B();return A(Q)},args:async()=>{let{getMCPServerArgs:A,loadInvocationMethod:D,detectInvocation:B}=await import("./chunk-7wd1res1.js"),Q=await D()||B(),E=A(Q),I=await QIA();if(I?.disableMemory)E.push("--disable-memory");if(I?.disableTime)E.push("--disable-time");if(I?.disableProjectStartup)E.push("--disable-project-startup");if(I?.disableKnowledge)E.push("--disable-knowledge");if(I?.disableCodebase)E.push("--disable-codebase");return E},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{n7.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 EIA=(A)=>A.type==="stdio";var oW=(A)=>EIA(A);function PV(A){if(typeof A==="function"){let D=A();return Promise.resolve(D)}return Promise.resolve(A)}var L2=(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(oW(V.config))u=V.config.command?await PV(V.config.command):void 0,y=V.config.args?await PV(V.config.args):[];if(oW(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 fdA(A){let D=fB.getTarget(A);if(D._tag==="None")throw Error(`Target not found: ${A}`);let B=D.value,Q=L2({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
+ `));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 z={};for(let w of W){let $=await B.configureServer(w,z);U[w]=$}}return U},I=async(J,X,W={})=>{if(J.length===0)return;let U=W.quiet?null:kE({text:`Installing ${J.length} MCP server${J.length>1?"s":""}`,color:"cyan"}).start();try{if(await B.installServers(J,X),U)U.succeed(FA.green(`Installed ${FA.cyan(J.length)} MCP server${J.length>1?"s":""}`))}catch(z){if(U)U.fail(FA.red("Failed to install MCP servers"));throw z}};return{selectServers:Q,configureServers:E,installServers:I,setupMCP:async(J={})=>{let X=await Q(J);if(X.length===0)return{selectedServers:[],serverConfigsMap:{}};let W=await E(X,J);if(!J.dryRun)await I(X,W,J);return{selectedServers:X,serverConfigsMap:W}}}}class AJ{installer;constructor(A){this.installer=fdA(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=hdA(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=tW(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 AJ{installer;constructor(A){this.installer=fdA(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=hdA(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=tW(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
@@ -703,7 +703,7 @@ Hooks:`)),console.log(FA.dim(" ✓ Hooks will be configured"));console.log(`
703
703
  ⚠️ MCP setup cancelled, continuing with other components
704
704
  `));else throw console.error(FA.red("✖ Failed to setup MCP servers")),W}if(console.log(FA.cyan.bold(`
705
705
  ━━━ Installing Core Components ━━━
706
- `)),J.setupAgents&&A.agents!==!1){let W=kE({text:"Installing agents",color:"cyan"}).start();try{let U=await J.setupAgents(process.cwd(),{...A,quiet:!0});W.succeed(FA.green(`Installed ${FA.cyan(U.count)} agent${U.count!==1?"s":""}`))}catch(U){throw W.fail(FA.red("Failed to install agents")),U}}if(J.setupOutputStyles&&A.outputStyles!==!1){let W=kE({text:"Installing output styles",color:"cyan"}).start();try{let U=await J.setupOutputStyles(process.cwd(),{...A,quiet:!0});if(U.count>0)W.succeed(FA.green(`Installed ${FA.cyan(U.count)} output style${U.count!==1?"s":""}`));else if(U.message)W.info(FA.dim(U.message));else W.info(FA.dim("No output styles to install"))}catch(U){throw W.fail(FA.red("Failed to install output styles")),U}}if(J.setupRules&&A.rules!==!1){let W=kE({text:"Installing rules",color:"cyan"}).start();try{let U=await J.setupRules(process.cwd(),{...A,quiet:!0});if(U.count>0)W.succeed(FA.green(`Installed ${FA.cyan(U.count)} rule${U.count!==1?"s":""}`));else if(U.message)W.info(FA.dim(U.message));else W.info(FA.dim("No rules to install"))}catch(U){throw W.fail(FA.red("Failed to install rules")),U}}if(J.setupSlashCommands&&A.slashCommands!==!1){let W=kE({text:"Installing slash commands",color:"cyan"}).start();try{let U=await J.setupSlashCommands(process.cwd(),{...A,quiet:!0});if(U.count>0)W.succeed(FA.green(`Installed ${FA.cyan(U.count)} slash command${U.count!==1?"s":""}`));else if(U.message)W.info(FA.dim(U.message));else W.info(FA.dim("No slash commands to install"))}catch(U){throw W.fail(FA.red("Failed to install slash commands")),U}}if(J.setupHooks&&A.hooks!==!1){let W=kE({text:"Setting up hooks",color:"cyan"}).start();try{let U=await J.setupHooks(process.cwd(),{...A,quiet:!0});if(U.count>0){let z=U.message?`Configured ${FA.cyan(U.count)} hook${U.count!==1?"s":""} - ${U.message}`:`Configured ${FA.cyan(U.count)} hook${U.count!==1?"s":""}`;W.succeed(FA.green(z))}else W.info(FA.dim(U.message||"No hooks to configure"))}catch(U){W.warn(FA.yellow("Could not setup hooks")),console.warn(FA.dim(` ${U instanceof Error?U.message:String(U)}`))}}let X=[];try{await BJ.setDefaultTarget(D);let W=fB.getTarget(D)?.name||D;X.push(`Target: ${W}`)}catch(W){console.warn(FA.yellow(`⚠ Warning: Could not save default target: ${W instanceof Error?W.message:String(W)}`))}console.log(`
706
+ `)),J.setupAgents&&A.agents!==!1){let W=kE({text:"Installing agents",color:"cyan"}).start();try{let U=await J.setupAgents(process.cwd(),{...A,quiet:!0});W.succeed(FA.green(`Installed ${FA.cyan(U.count)} agent${U.count!==1?"s":""}`))}catch(U){throw W.fail(FA.red("Failed to install agents")),U}}if(J.setupOutputStyles&&A.outputStyles!==!1){let W=kE({text:"Installing output styles",color:"cyan"}).start();try{let U=await J.setupOutputStyles(process.cwd(),{...A,quiet:!0});if(U.count>0)W.succeed(FA.green(`Installed ${FA.cyan(U.count)} output style${U.count!==1?"s":""}`));else if(U.message)W.info(FA.dim(U.message));else W.info(FA.dim("No output styles to install"))}catch(U){throw W.fail(FA.red("Failed to install output styles")),U}}if(J.setupRules&&A.rules!==!1){let W=kE({text:"Installing rules",color:"cyan"}).start();try{let U=await J.setupRules(process.cwd(),{...A,quiet:!0});if(U.count>0)W.succeed(FA.green(`Installed ${FA.cyan(U.count)} rule${U.count!==1?"s":""}`));else if(U.message)W.info(FA.dim(U.message));else W.info(FA.dim("No rules to install"))}catch(U){throw W.fail(FA.red("Failed to install rules")),U}}if(J.setupSlashCommands&&A.slashCommands!==!1){let W=kE({text:"Installing slash commands",color:"cyan"}).start();try{let U=await J.setupSlashCommands(process.cwd(),{...A,quiet:!0});if(U.count>0)W.succeed(FA.green(`Installed ${FA.cyan(U.count)} slash command${U.count!==1?"s":""}`));else if(U.message)W.info(FA.dim(U.message));else W.info(FA.dim("No slash commands to install"))}catch(U){throw W.fail(FA.red("Failed to install slash commands")),U}}if(J.setupHooks&&A.hooks!==!1){let W=kE({text:"Setting up hooks",color:"cyan"}).start();try{let U=await J.setupHooks(process.cwd(),{...A,quiet:!0});if(U.count>0){let z=U.message?`Configured ${FA.cyan(U.count)} hook${U.count!==1?"s":""} - ${U.message}`:`Configured ${FA.cyan(U.count)} hook${U.count!==1?"s":""}`;W.succeed(FA.green(z))}else W.info(FA.dim(U.message||"No hooks to configure"))}catch(U){W.warn(FA.yellow("Could not setup hooks")),console.warn(FA.dim(` ${U instanceof Error?U.message:String(U)}`))}}let X=[];try{await BJ.setDefaultTarget(D);let W=fB.getTarget(D),U=W._tag==="Some"?W.value.name:D;X.push(`Target: ${U}`)}catch(W){console.warn(FA.yellow(`⚠ Warning: Could not save default target: ${W instanceof Error?W.message:String(W)}`))}console.log(`
707
707
  `+o7(FA.green.bold("✓ Setup complete!")+`
708
708
 
709
709
  `+FA.dim(X.join(`
@@ -842,12 +842,12 @@ search-cache/
842
842
  cache/
843
843
  sessions/
844
844
  coordination/
845
- `;try{if((await nK.readFile(B,"utf8")).trim()===Q.trim())return}catch{}await nK.writeFile(B,Q,"utf8"),yC.info(`✓ Created ${SO.join(gFA,".gitignore")}`)}catch(B){yC.error("Failed to initialize .sylphx-flow directory",B)}}var aK={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 _FA(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 liA();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: ${aK.description.substring(0,100)}...`);let B=new jO({name:aK.name,version:aK.version,description:aK.description}),Q=[];if(!A.disableTime)vFA(B),Q.push("time_get_current, time_format, time_parse");if(!A.disableCodebase)yC.info("\uD83D\uDD0D Registering codebase tools"),kFA(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"),SFA(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 TO;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 _FA(D)}catch(B){throw new TB(`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(!QJ(B))throw new TB(`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)throw new TB(`Target not found: ${B}`,"TARGET_NOT_FOUND");let E=L2({target:Q}),I;if(D){if(!E.getAllServerIds().includes(D))throw new TB(`Invalid MCP server: ${D}. Available: ${E.getAllServerIds().join(", ")}`,"INVALID_MCP_SERVER");I=D}else I=(await FQ.prompt([{type:"list",name:"server",message:"Select server to configure:",choices:E.getAllServerIds().map((W)=>{let U=x0[W];return{name:`${U.name} - ${U.description}`,value:W}})}])).server;let G=x0[I];if(console.log(FA.cyan(`
846
- ▸ ${G.name}`)),console.log(FA.gray(` ${G.description}`)),!G.envVars){console.log(FA.gray(`
847
- No configuration needed`));return}await E.configureServer(I);let J=kE("Saving configuration...").start();try{await E.installServers([I]),J.succeed(FA.green("✓ Configuration saved"))}catch(X){throw J.fail(FA.red("Failed to save configuration")),X}});xC.command("list").description("List installed MCP servers").action(async(A)=>{let D=await fB.resolveTarget({target:A.target,allowSelection:!0});if(!QJ(D))throw new TB(`Target ${D} does not support MCP servers`,"UNSUPPORTED_TARGET");await XIA(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(!QJ(B))throw new TB(`Target ${B} does not support MCP servers`,"UNSUPPORTED_TARGET");if(!A||A.length===0)throw new TB("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)throw new TB(`Target not found: ${B}`,"TARGET_NOT_FOUND");let I=L2({target:E}),G=I.getAllServerIds(),J=Q.filter((W)=>!G.includes(W));if(J.length>0)throw new TB(`Invalid MCP servers: ${J.join(", ")}. Available: ${G.join(", ")}`,"INVALID_MCP_SERVERS");let X=Q;await I.installServers(X)});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(!QJ(B))throw new TB(`Target ${B} does not support MCP servers`,"UNSUPPORTED_TARGET");if(!A||A.length===0)throw new TB("No servers specified. Provide server names as arguments","NO_SERVERS_SPECIFIED");let Q=A.flatMap((X)=>X.split(",")).map((X)=>X.trim()).filter(Boolean),E=fB.getTarget(B);if(!E)throw new TB(`Target not found: ${B}`,"TARGET_NOT_FOUND");let G=L2({target:E}).getInstalledServerIds(),J=Q.filter((X)=>!G.includes(X));if(J.length>0)throw new TB(`MCP servers not installed: ${J.join(", ")}. Installed: ${G.join(", ")}`,"SERVERS_NOT_INSTALLED");console.log(FA.yellow("Remove functionality not yet implemented"))});import sK from"node:fs/promises";import oK from"node:path";async function iiA(A,D){let{enhanceAgentContent:B}=await import("./chunk-3nkp0s1j.js");try{if(D)return await sK.readFile(oK.resolve(D),"utf-8");let Q=oK.join(process.cwd(),".claude","agents",`${A}.md`);try{return await sK.readFile(Q,"utf-8")}catch(E){let I=oK.join(process.cwd(),"agents",`${A}.md`);try{let G=await sK.readFile(I,"utf-8");return await B(G)}catch(G){let J=R2(),X=oK.join(J,`${A}.md`),W=await sK.readFile(X,"utf-8");return await B(W)}}}catch(Q){throw new TB(`Agent '${A}' not found${D?` at ${D}`:""}`,"AGENT_NOT_FOUND")}}function niA(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 aiA(A,D,B,Q){let E=fB.getTarget(A);if(E._tag==="None")throw new TB(`Target not found: ${A}`,"TARGET_NOT_FOUND");let I=E.value;if(!I.isImplemented)throw new TB(`Target '${A}' is not implemented. Supported targets: ${fFA().join(", ")}`,"TARGET_NOT_IMPLEMENTED");if(!I.executeCommand)throw new TB(`Target '${A}' does not support command execution. Supported targets: ${fFA().join(", ")}`,"EXECUTION_NOT_SUPPORTED");return I.executeCommand(D,B,Q)}function fFA(){return fB.getImplementedTargetIDs().filter((A)=>{let D=fB.getTarget(A);if(D._tag==="None")return!1;return D.value.executeCommand!==void 0})}var yFA=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 iiA(D.agent,D.agentFile),I=`AGENT INSTRUCTIONS:
845
+ `;try{if((await nK.readFile(B,"utf8")).trim()===Q.trim())return}catch{}await nK.writeFile(B,Q,"utf8"),yC.info(`✓ Created ${SO.join(gFA,".gitignore")}`)}catch(B){yC.error("Failed to initialize .sylphx-flow directory",B)}}var aK={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 _FA(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 liA();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: ${aK.description.substring(0,100)}...`);let B=new jO({name:aK.name,version:aK.version,description:aK.description}),Q=[];if(!A.disableTime)vFA(B),Q.push("time_get_current, time_format, time_parse");if(!A.disableCodebase)yC.info("\uD83D\uDD0D Registering codebase tools"),kFA(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"),SFA(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 TO;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 _FA(D)}catch(B){throw new TB(`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(!QJ(B))throw new TB(`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 TB(`Target not found: ${B}`,"TARGET_NOT_FOUND");let E=Q.value,I=L2({target:E}),G;if(D){if(!I.getAllServerIds().includes(D))throw new TB(`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
+ ▸ ${J.name}`)),console.log(FA.gray(` ${J.description}`)),!J.envVars){console.log(FA.gray(`
847
+ 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(!QJ(D))throw new TB(`Target ${D} does not support MCP servers`,"UNSUPPORTED_TARGET");await XIA(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(!QJ(B))throw new TB(`Target ${B} does not support MCP servers`,"UNSUPPORTED_TARGET");if(!A||A.length===0)throw new TB("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 TB(`Target not found: ${B}`,"TARGET_NOT_FOUND");let I=E.value,G=L2({target:I}),J=G.getAllServerIds(),X=Q.filter((U)=>!J.includes(U));if(X.length>0)throw new TB(`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(!QJ(B))throw new TB(`Target ${B} does not support MCP servers`,"UNSUPPORTED_TARGET");if(!A||A.length===0)throw new TB("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 TB(`Target not found: ${B}`,"TARGET_NOT_FOUND");let I=E.value,J=L2({target:I}).getInstalledServerIds(),X=Q.filter((W)=>!J.includes(W));if(X.length>0)throw new TB(`MCP servers not installed: ${X.join(", ")}. Installed: ${J.join(", ")}`,"SERVERS_NOT_INSTALLED");console.log(FA.yellow("Remove functionality not yet implemented"))});import sK from"node:fs/promises";import oK from"node:path";async function iiA(A,D){let{enhanceAgentContent:B}=await import("./chunk-3nkp0s1j.js");try{if(D)return await sK.readFile(oK.resolve(D),"utf-8");let Q=oK.join(process.cwd(),".claude","agents",`${A}.md`);try{return await sK.readFile(Q,"utf-8")}catch(E){let I=oK.join(process.cwd(),"agents",`${A}.md`);try{let G=await sK.readFile(I,"utf-8");return await B(G)}catch(G){let J=R2(),X=oK.join(J,`${A}.md`),W=await sK.readFile(X,"utf-8");return await B(W)}}}catch(Q){throw new TB(`Agent '${A}' not found${D?` at ${D}`:""}`,"AGENT_NOT_FOUND")}}function niA(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 aiA(A,D,B,Q){let E=fB.getTarget(A);if(E._tag==="None")throw new TB(`Target not found: ${A}`,"TARGET_NOT_FOUND");let I=E.value;if(!I.isImplemented)throw new TB(`Target '${A}' is not implemented. Supported targets: ${fFA().join(", ")}`,"TARGET_NOT_IMPLEMENTED");if(!I.executeCommand)throw new TB(`Target '${A}' does not support command execution. Supported targets: ${fFA().join(", ")}`,"EXECUTION_NOT_SUPPORTED");return I.executeCommand(D,B,Q)}function fFA(){return fB.getImplementedTargetIDs().filter((A)=>{let D=fB.getTarget(A);if(D._tag==="None")return!1;return D.value.executeCommand!==void 0})}var yFA=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 iiA(D.agent,D.agentFile),I=`AGENT INSTRUCTIONS:
848
848
  ${niA(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 aiA(D.target,I,G,D)});function xFA(){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 eiA=tiA(import.meta.url),AnA=oiA(eiA),DnA=riA(AnA,"..","package.json"),BnA=JSON.parse(siA(DnA,"utf8")),QnA=BnA.version;function EnA(){let A=new xQ;return A.name("sylphx-flow").description("Sylphx Flow - Type-safe development flow CLI").version(QnA,"-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(KIA),A.addCommand(xC),A.addCommand(yFA),A.addCommand(Kq),A.addCommand(JEA),A.addCommand(j2),A.addCommand($EA),A.action(()=>{xFA()}),A}function hFA(){let A=EnA();InA();try{A.parse(process.argv)}catch(D){FnA(D)}}function InA(){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(`
849
849
  \uD83D\uDC4B Sylphx Flow CLI terminated by user`),process.exit(0)}),process.on("SIGTERM",()=>{console.log(`
850
850
  \uD83D\uDC4B Sylphx Flow CLI terminated`),process.exit(0)})}function FnA(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(`
851
851
  Stack trace:`),console.error(A.stack)}else console.error(`✗ Unknown error: ${String(A)}`);process.exit(1)}hFA();
852
852
 
853
- //# debugId=2E8B3D3F854B3CAA64756E2164756E21
853
+ //# debugId=D971A97F655182B664756E2164756E21