@sylphx/flow 0.0.5 → 0.0.7
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/chunk-b2zeg2wa.js +3 -0
- package/dist/chunk-b2zeg2wa.js.map +10 -0
- package/dist/{chunk-pcm6twpw.js → chunk-qctnd9ga.js} +1 -1
- package/dist/index.js +10 -10
- package/dist/index.js.map +6 -6
- package/package.json +1 -1
- package/dist/chunk-7wd1res1.js +0 -3
- package/dist/chunk-7wd1res1.js.map +0 -10
- /package/dist/{chunk-pcm6twpw.js.map → chunk-qctnd9ga.js.map} +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{F as B,I as D}from"./chunk-x46tzzn9.js";var A=()=>{let q=process.argv,b=q[0],w=q[1];if(w.includes("/_npx/")&&w.includes("github"))return{type:"github",repo:"github:sylphxltd/flow"};if(w.includes("/_npx/")){let z=w.match(/@sylphx\/flow|@sylphxltd\/flow/);return{type:"npm",package:z?z[0]:"@sylphx/flow"}}if(w.includes("/.bun/install/cache/")||w.includes("/bun/install/cache/"))return{type:"bunx",package:"@sylphx/flow"};if(b.includes("bun")&&!w.includes(process.cwd()))return{type:"bunx",package:"@sylphx/flow"};if(w.includes(process.cwd())){if(b.includes("bun"))return{type:"local-dev",script:"bun run dev"};return{type:"local-dev",script:"npm run dev"}}if(w.includes("node_modules/.bin")||w.includes("/bin/sylphx-flow"))return{type:"global",command:"sylphx-flow"};return{type:"unknown"}},E=(q)=>{let b=q||A();switch(b.type){case"npm":return`npx -y ${b.package}`;case"github":return`npx -y ${b.repo}`;case"bunx":return`bunx ${b.package}`;case"local-dev":return b.script;case"global":return b.command;case"unknown":return"npx -y @sylphx/flow"}},F=(q)=>{let b=q||A();switch(b.type){case"npm":return["-y",b.package,"mcp","start"];case"github":return["-y",b.repo,"mcp","start"];case"bunx":return[b.package,"mcp","start"];case"local-dev":return["./dist/index.js","mcp","start"];case"global":return[b.command,"mcp","start"];case"unknown":return["-y","@sylphx/flow","mcp","start"]}},G=(q)=>{switch((q||A()).type){case"npm":case"github":return"npx";case"bunx":return"bunx";case"local-dev":return process.execPath.includes("bun")?"bun":"node";case"global":case"unknown":return"npx"}},H=(q,b,w)=>{return`${E(w)} hook --type ${q} --target ${b}`},J=async(q)=>{let{updateSettings:b}=await import("./chunk-02jj9ahn.js");await b({invocationMethod:q})},K=async()=>{let{loadSettings:q}=await import("./chunk-02jj9ahn.js"),b=await q();if(b._tag==="Success")return b.value.invocationMethod;return};export{J as saveInvocationMethod,K as loadInvocationMethod,G as getMCPServerCommand,F as getMCPServerArgs,E as getCommandPrefix,H as generateHookCommand,A as detectInvocation};
|
|
2
|
+
|
|
3
|
+
//# debugId=AE5BA2434A51019C64756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/utils/cli-invocation.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * CLI Invocation Detection\n * Detects how the CLI was invoked and generates appropriate commands\n *\n * Supports common invocation methods:\n * - npm/npx (most common)\n * - GitHub direct (for bleeding edge)\n * - Bun/bunx (emerging)\n * - Local development (bun/npm run dev)\n * - Global installation\n * - Unknown methods fallback to npm (safe default)\n */\n\n/**\n * Invocation method types\n */\nexport type InvocationMethod =\n | { type: 'npm'; package: string }\n | { type: 'github'; repo: string }\n | { type: 'bunx'; package: string }\n | { type: 'local-dev'; script: string }\n | { type: 'global'; command: string }\n | { type: 'unknown' };\n\n/**\n * Detect how the CLI was invoked\n * Examines process.argv to determine invocation method\n */\nexport const detectInvocation = (): InvocationMethod => {\n const argv = process.argv;\n const execPath = argv[0]; // node/bun executable path\n const scriptPath = argv[1]; // script being executed\n\n // Check if running via npx with github\n if (scriptPath.includes('/_npx/') && scriptPath.includes('github')) {\n return { type: 'github', repo: 'github:sylphxltd/flow' };\n }\n\n // Check if running via npx with npm package\n if (scriptPath.includes('/_npx/')) {\n // Extract package name from path\n const match = scriptPath.match(/@sylphx\\/flow|@sylphxltd\\/flow/);\n return { type: 'npm', package: match ? match[0] : '@sylphx/flow' };\n }\n\n // Check if running via bunx (bun's cache directory)\n // Note: bunx uses #!/usr/bin/env node shebang, so execPath won't be bun\n // Instead, check for bun's install cache directory structure\n if (\n scriptPath.includes('/.bun/install/cache/') ||\n scriptPath.includes('/bun/install/cache/')\n ) {\n return { type: 'bunx', package: '@sylphx/flow' };\n }\n\n // Check if running via bunx (old detection using execPath)\n if (execPath.includes('bun') && !scriptPath.includes(process.cwd())) {\n return { type: 'bunx', package: '@sylphx/flow' };\n }\n\n // Check if running locally in development\n if (scriptPath.includes(process.cwd())) {\n // Check if using bun run dev or npm run dev\n if (execPath.includes('bun')) {\n return { type: 'local-dev', script: 'bun run dev' };\n }\n return { type: 'local-dev', script: 'npm run dev' };\n }\n\n // Check if globally installed\n if (scriptPath.includes('node_modules/.bin') || scriptPath.includes('/bin/sylphx-flow')) {\n return { type: 'global', command: 'sylphx-flow' };\n }\n\n return { type: 'unknown' };\n};\n\n/**\n * Generate command prefix based on invocation method\n * Used for generating hook commands, MCP configs, etc.\n */\nexport const getCommandPrefix = (method?: InvocationMethod): string => {\n const invocation = method || detectInvocation();\n\n switch (invocation.type) {\n case 'npm':\n return `npx -y ${invocation.package}`;\n\n case 'github':\n return `npx -y ${invocation.repo}`;\n\n case 'bunx':\n return `bunx ${invocation.package}`;\n\n case 'local-dev':\n return invocation.script;\n\n case 'global':\n return invocation.command;\n\n case 'unknown':\n // Fallback to npm package (safe default)\n return 'npx -y @sylphx/flow';\n }\n};\n\n/**\n * Generate MCP server args array based on invocation\n */\nexport const getMCPServerArgs = (method?: InvocationMethod): string[] => {\n const invocation = method || detectInvocation();\n\n switch (invocation.type) {\n case 'npm':\n return ['-y', invocation.package, 'mcp', 'start'];\n\n case 'github':\n return ['-y', invocation.repo, 'mcp', 'start'];\n\n case 'bunx':\n return [invocation.package, 'mcp', 'start'];\n\n case 'local-dev':\n // For local dev, use the built dist\n return ['./dist/index.js', 'mcp', 'start'];\n\n case 'global':\n return [invocation.command, 'mcp', 'start'];\n\n case 'unknown':\n // Fallback to npm\n return ['-y', '@sylphx/flow', 'mcp', 'start'];\n }\n};\n\n/**\n * Get MCP server command based on invocation\n */\nexport const getMCPServerCommand = (method?: InvocationMethod): string => {\n const invocation = method || detectInvocation();\n\n switch (invocation.type) {\n case 'npm':\n case 'github':\n return 'npx';\n\n case 'bunx':\n return 'bunx';\n\n case 'local-dev':\n // Use node or bun depending on what's running\n return process.execPath.includes('bun') ? 'bun' : 'node';\n\n case 'global':\n case 'unknown':\n return 'npx';\n }\n};\n\n/**\n * Generate hook command for specific hook type\n */\nexport const generateHookCommand = (\n hookType: 'session' | 'message' | 'notification',\n targetId: string,\n method?: InvocationMethod\n): string => {\n const prefix = getCommandPrefix(method);\n return `${prefix} hook --type ${hookType} --target ${targetId}`;\n};\n\n/**\n * Save invocation method to settings for future use\n */\nexport const saveInvocationMethod = async (method: InvocationMethod): Promise<void> => {\n const { updateSettings } = await import('./settings.js');\n await updateSettings({\n invocationMethod: method as any,\n });\n};\n\n/**\n * Load saved invocation method from settings\n */\nexport const loadInvocationMethod = async (): Promise<InvocationMethod | undefined> => {\n const { loadSettings } = await import('./settings.js');\n const result = await loadSettings();\n if (result._tag === 'Success') {\n return (result.value as any).invocationMethod;\n }\n return undefined;\n};\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": "+CA4BO,IAAM,EAAmB,IAAwB,CACtD,IAAM,EAAO,QAAQ,KACf,EAAW,EAAK,GAChB,EAAa,EAAK,GAGxB,GAAI,EAAW,SAAS,QAAQ,GAAK,EAAW,SAAS,QAAQ,EAC/D,MAAO,CAAE,KAAM,SAAU,KAAM,uBAAwB,EAIzD,GAAI,EAAW,SAAS,QAAQ,EAAG,CAEjC,IAAM,EAAQ,EAAW,MAAM,gCAAgC,EAC/D,MAAO,CAAE,KAAM,MAAO,QAAS,EAAQ,EAAM,GAAK,cAAe,EAMnE,GACE,EAAW,SAAS,sBAAsB,GAC1C,EAAW,SAAS,qBAAqB,EAEzC,MAAO,CAAE,KAAM,OAAQ,QAAS,cAAe,EAIjD,GAAI,EAAS,SAAS,KAAK,GAAK,CAAC,EAAW,SAAS,QAAQ,IAAI,CAAC,EAChE,MAAO,CAAE,KAAM,OAAQ,QAAS,cAAe,EAIjD,GAAI,EAAW,SAAS,QAAQ,IAAI,CAAC,EAAG,CAEtC,GAAI,EAAS,SAAS,KAAK,EACzB,MAAO,CAAE,KAAM,YAAa,OAAQ,aAAc,EAEpD,MAAO,CAAE,KAAM,YAAa,OAAQ,aAAc,EAIpD,GAAI,EAAW,SAAS,mBAAmB,GAAK,EAAW,SAAS,kBAAkB,EACpF,MAAO,CAAE,KAAM,SAAU,QAAS,aAAc,EAGlD,MAAO,CAAE,KAAM,SAAU,GAOd,EAAmB,CAAC,IAAsC,CACrE,IAAM,EAAa,GAAU,EAAiB,EAE9C,OAAQ,EAAW,UACZ,MACH,MAAO,UAAU,EAAW,cAEzB,SACH,MAAO,UAAU,EAAW,WAEzB,OACH,MAAO,QAAQ,EAAW,cAEvB,YACH,OAAO,EAAW,WAEf,SACH,OAAO,EAAW,YAEf,UAEH,MAAO,wBAOA,EAAmB,CAAC,IAAwC,CACvE,IAAM,EAAa,GAAU,EAAiB,EAE9C,OAAQ,EAAW,UACZ,MACH,MAAO,CAAC,KAAM,EAAW,QAAS,MAAO,OAAO,MAE7C,SACH,MAAO,CAAC,KAAM,EAAW,KAAM,MAAO,OAAO,MAE1C,OACH,MAAO,CAAC,EAAW,QAAS,MAAO,OAAO,MAEvC,YAEH,MAAO,CAAC,kBAAmB,MAAO,OAAO,MAEtC,SACH,MAAO,CAAC,EAAW,QAAS,MAAO,OAAO,MAEvC,UAEH,MAAO,CAAC,KAAM,eAAgB,MAAO,OAAO,IAOrC,EAAsB,CAAC,IAAsC,CAGxE,QAFmB,GAAU,EAAiB,GAE3B,UACZ,UACA,SACH,MAAO,UAEJ,OACH,MAAO,WAEJ,YAEH,OAAO,QAAQ,SAAS,SAAS,KAAK,EAAI,MAAQ,WAE/C,aACA,UACH,MAAO,QAOA,EAAsB,CACjC,EACA,EACA,IACW,CAEX,MAAO,GADQ,EAAiB,CAAM,iBACN,cAAqB,KAM1C,EAAuB,MAAO,IAA4C,CACrF,IAAQ,kBAAmB,KAAa,+BACxC,MAAM,EAAe,CACnB,iBAAkB,CACpB,CAAC,GAMU,EAAuB,SAAmD,CACrF,IAAQ,gBAAiB,KAAa,+BAChC,EAAS,MAAM,EAAa,EAClC,GAAI,EAAO,OAAS,UAClB,OAAQ,EAAO,MAAc,iBAE/B",
|
|
8
|
+
"debugId": "AE5BA2434A51019C64756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{z as V}from"./chunk-h9kssnyy.js";import{B as P,C as Y,D as $}from"./chunk-j08f9mnk.js";import{F as M,I as b}from"./chunk-x46tzzn9.js";var z=async(q)=>{let{detectInvocation:B,generateHookCommand:G,loadInvocationMethod:N}=await import("./chunk-
|
|
1
|
+
import{z as V}from"./chunk-h9kssnyy.js";import{B as P,C as Y,D as $}from"./chunk-j08f9mnk.js";import{F as M,I as b}from"./chunk-x46tzzn9.js";var z=async(q)=>{let{detectInvocation:B,generateHookCommand:G,loadInvocationMethod:N}=await import("./chunk-b2zeg2wa.js"),W=await N()||B();return{sessionCommand:G("session",q,W),messageCommand:G("message",q,W),notificationCommand:G("notification",q,W)}},J={sessionCommand:"npx -y @sylphx/flow hook --type session --target claude-code",messageCommand:"npx -y @sylphx/flow hook --type message --target claude-code",notificationCommand:"npx -y @sylphx/flow hook --type notification --target claude-code"},y=(q)=>{return $(()=>JSON.parse(q),(B)=>V("Failed to parse Claude Code settings",{cause:B instanceof Error?B:void 0}))},w=(q=J)=>{let B=q.sessionCommand||J.sessionCommand,G=q.messageCommand||J.messageCommand,N=q.notificationCommand||J.notificationCommand;return{SessionStart:[{hooks:[{type:"command",command:B}]}],UserPromptSubmit:[{hooks:[{type:"command",command:G}]}],Notification:[{matcher:"",hooks:[{type:"command",command:N}]}]}},R=(q,B=J)=>{let G=w(B);return{...q,hooks:{...q.hooks||{},...G}}},Z=(q=J)=>{return{hooks:w(q)}},X=(q)=>{return JSON.stringify(q,null,2)},p=()=>{return"Claude Code hooks configured: SessionStart (static info) + UserPromptSubmit (dynamic info)"},A=(q,B=J)=>{if(q===null||q.trim()===""){let Q=Z(B);return P(X(Q))}let G=y(q);if(G._tag==="Failure"){let Q=Z(B);return P(X(Q))}let N=R(G.value,B);return P(X(N))},D=(q)=>{if(q.sessionCommand!==void 0&&q.sessionCommand.trim()==="")return Y(V("Session command cannot be empty"));if(q.messageCommand!==void 0&&q.messageCommand.trim()==="")return Y(V("Message command cannot be empty"));return P(q)};export{D as validateHookConfig,X as serializeSettings,A as processSettings,y as parseSettings,R as mergeSettings,p as getSuccessMessage,z as generateHookCommands,Z as createSettings,w as buildHookConfiguration,J as DEFAULT_HOOKS};
|
|
2
2
|
|
|
3
3
|
//# debugId=FAAB79DEE5BF095C64756E2164756E21
|
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{
|
|
612
|
-
`));let
|
|
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-b2zeg2wa.js"),Q=await D()||B();return A(Q)},args:async()=>{let{getMCPServerArgs:A,loadInvocationMethod:D,detectInvocation:B}=await import("./chunk-b2zeg2wa.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
|
|
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
|
|
@@ -659,7 +659,7 @@ $toast = New-Object Windows.UI.Notifications.ToastNotification $xml
|
|
|
659
659
|
`,A},async executeCommand(A,D,B={}){let Q=IIA.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=ydA("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 TB("Claude Code not found. Please install it first.","CLAUDE_NOT_FOUND");if(G.code)throw new TB(`Claude Code exited with code ${G.code}`,"CLAUDE_ERROR");throw new TB(`Failed to execute Claude Code: ${G.message}`,"CLAUDE_ERROR")}},detectFromEnvironment(){try{let A=process.cwd();return xdA.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 TV.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 TV.mkdir(VC.dirname(B),{recursive:!0}),await TV.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-
|
|
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-qctnd9ga.js"),{pathExists:E,createDirectory:I,readFile:G,writeFile:J}=await import("./chunk-zn6bhyhc.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-3nkp0s1j.js"),Q=new c4,E=VC.join(A,this.config.agentDir);return{count:(await Q.installToDirectory(R2(),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 AJ(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(rW(),Q,async(I)=>{return I},{...D,showProgress:!1})).length}}};function hdA(A,D,B){let Q=A.name||kV.extractAgentName(D,A,B),E=A.description||kV.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 V2 from"node:path";var bdA={core:"core.md"};function SV(A="core"){return FIA(bdA[A])}function CIA(A){try{return SV(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=tW(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
|
|
@@ -691,7 +691,7 @@ Please begin your response with a comprehensive summary of all the instructions
|
|
|
691
691
|
███████║ ██║ ███████╗██║ ██║ ██║██╔╝ ██╗ ██║ ███████╗╚██████╔╝╚███╔███╔╝
|
|
692
692
|
╚══════╝ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚══════╝ ╚═════╝ ╚══╝╚══╝
|
|
693
693
|
`;if(console.log(aEA(["cyan","blue"])(B)),console.log(FA.dim.cyan(` Project Initialization
|
|
694
|
-
`)),!D)D=await fB.promptForTargetSelection(),A.target=D;if(D){try{WIA(D)}catch(W){if(W instanceof Error)throw new TB(W.message,"UNSUPPORTED_TARGET");throw W}if(A.merge)throw new TB("The --merge option is not supported with init command.","INVALID_OPTION")}if(!D)throw Error("Target ID not set");let{detectInvocation:Q,saveInvocationMethod:E}=await import("./chunk-
|
|
694
|
+
`)),!D)D=await fB.promptForTargetSelection(),A.target=D;if(D){try{WIA(D)}catch(W){if(W instanceof Error)throw new TB(W.message,"UNSUPPORTED_TARGET");throw W}if(A.merge)throw new TB("The --merge option is not supported with init command.","INVALID_OPTION")}if(!D)throw Error("Target ID not set");let{detectInvocation:Q,saveInvocationMethod:E}=await import("./chunk-b2zeg2wa.js"),I=Q();if(await E(I),A.dryRun){console.log(o7(FA.yellow("⚠ Dry Run Mode")+FA.dim(`
|
|
695
695
|
No changes will be made to your project`),{padding:1,margin:{top:0,bottom:1,left:0,right:0},borderStyle:"round",borderColor:"yellow"}));let W=fB.getTarget(D);if(W._tag==="None")throw Error(`Target not found: ${D}`);let U=W.value;if(A.mcp!==!1&&U.setupMCP)console.log(FA.cyan.bold("MCP Tools:")),console.log(FA.dim(" ✓ MCP servers will be configured"));if(A.agents!==!1&&U.setupAgents)console.log(FA.cyan.bold(`
|
|
696
696
|
Agents:`)),console.log(FA.dim(" ✓ Development agents will be installed"));if(A.outputStyles!==!1&&U.setupOutputStyles)console.log(FA.cyan.bold(`
|
|
697
697
|
Output Styles:`)),console.log(FA.dim(" ✓ Output styles will be installed"));if(A.rules!==!1&&U.setupRules)console.log(FA.cyan.bold(`
|
|
@@ -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)
|
|
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(
|
|
846
|
-
▸ ${
|
|
847
|
-
No configuration needed`));return}await
|
|
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=
|
|
853
|
+
//# debugId=D971A97F655182B664756E2164756E21
|