fluxflow-cli 4.37.2 → 4.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/chunks/{9router-CKETGMBB.js → 9router-E4LQZ5XF.js} +1 -1
  2. package/dist/chunks/{addMemScore-76XLEW3K.js → addMemScore-PBVNSFPN.js} +1 -1
  3. package/dist/chunks/{ai-Y4PSJN4G.js → ai-YQJYUPXQ.js} +1 -1
  4. package/dist/chunks/{aihubmix-YSGVPUM4.js → aihubmix-UBV5ARET.js} +1 -1
  5. package/dist/chunks/{apinex-VI576FVJ.js → apinex-L3Y6BP6J.js} +1 -1
  6. package/dist/chunks/{app-JOSLEEMJ.js → app-SIXVPE6Z.js} +5 -5
  7. package/dist/chunks/{chat-RLEHK3MX.js → chat-C7HYXKVZ.js} +1 -1
  8. package/dist/chunks/chunk-26BQ45XP.js +2 -0
  9. package/dist/chunks/{chunk-T4ZG2WCV.js → chunk-4BLSASW6.js} +1 -1
  10. package/dist/chunks/{chunk-QOT4BYHM.js → chunk-52STSLCN.js} +1 -1
  11. package/dist/chunks/{chunk-3JI2CRXK.js → chunk-6EYQQ7GQ.js} +1 -1
  12. package/dist/chunks/{chunk-HOZQBBAO.js → chunk-6H2P5XUL.js} +1 -1
  13. package/dist/chunks/{chunk-MJL6DHQM.js → chunk-77QN4HDY.js} +1 -1
  14. package/dist/chunks/{chunk-CBFC5KUU.js → chunk-CZK3QF2C.js} +1 -1
  15. package/dist/chunks/{chunk-2VV5ZE53.js → chunk-EYTM4NZD.js} +1 -1
  16. package/dist/chunks/{chunk-ET66XVIM.js → chunk-FXRFFNRK.js} +1 -1
  17. package/dist/chunks/{chunk-FAEB3V5R.js → chunk-HFTI3R3Q.js} +1 -1
  18. package/dist/chunks/{chunk-BTMPM5BT.js → chunk-IHDJDAG3.js} +1 -1
  19. package/dist/chunks/{chunk-FSE4BZZZ.js → chunk-IZQAF6KJ.js} +1 -1
  20. package/dist/chunks/{chunk-PRTGV2R4.js → chunk-KMOTPBF5.js} +1 -1
  21. package/dist/chunks/{chunk-LTX2IUDV.js → chunk-MQCO3GXM.js} +1 -1
  22. package/dist/chunks/{chunk-JTTVSAKS.js → chunk-ODBYCQHC.js} +1 -1
  23. package/dist/chunks/chunk-P5HBJA23.js +1 -0
  24. package/dist/chunks/{chunk-K4AZXTU6.js → chunk-QW6IGMYV.js} +1 -1
  25. package/dist/chunks/{chunk-XDIU4OX7.js → chunk-ZCXQPXVK.js} +172 -172
  26. package/dist/chunks/{click-B4ZRHV4Z.js → click-J7DMHVDU.js} +2 -2
  27. package/dist/chunks/{computer_action-2RYMIFAM.js → computer_action-D52LLX3E.js} +1 -1
  28. package/dist/chunks/{custom_openai-TLPPKENJ.js → custom_openai-S6YIOHQN.js} +1 -1
  29. package/dist/chunks/{deepseek-2GJCWFSR.js → deepseek-CQRKTOL6.js} +1 -1
  30. package/dist/chunks/{drag-RNGTIO2V.js → drag-CMUD2ZB5.js} +1 -1
  31. package/dist/chunks/{emergency_rollback-NXD2JKBG.js → emergency_rollback-ZHQXCIHW.js} +1 -1
  32. package/dist/chunks/{exec_command-KLASTN6U.js → exec_command-A5JWE55Q.js} +1 -1
  33. package/dist/chunks/{explabs-YICY4AMR.js → explabs-6TWS34VQ.js} +1 -1
  34. package/dist/chunks/{export-C6VVIYP5.js → export-RU6LCZUB.js} +1 -1
  35. package/dist/chunks/{file_map-T5FHB3F6.js → file_map-UA4BA5OH.js} +1 -1
  36. package/dist/chunks/{find_file-LZR7NET3.js → find_file-HYHHFHUJ.js} +1 -1
  37. package/dist/chunks/{generate_image-75IV5P3L.js → generate_image-5D57XGLP.js} +1 -1
  38. package/dist/chunks/{inferx-YMU7LMOQ.js → inferx-A42H43ZV.js} +1 -1
  39. package/dist/chunks/{infron-A4BOV2AA.js → infron-NZI2FQFA.js} +1 -1
  40. package/dist/chunks/{invoke-P3ZC5CJV.js → invoke-4P5QQPCF.js} +2 -2
  41. package/dist/chunks/{invokeSync-E4SXIRIH.js → invokeSync-BSFWXLD7.js} +2 -2
  42. package/dist/chunks/{key_press-3VU6SHNQ.js → key_press-LWJGR25H.js} +1 -1
  43. package/dist/chunks/{keyboard_typing-PCW3ISET.js → keyboard_typing-A72GI7EW.js} +1 -1
  44. package/dist/chunks/{memory-4DXO4K5C.js → memory-7YOYCOXE.js} +1 -1
  45. package/dist/chunks/{mistral-2CZKHKDT.js → mistral-OXTDZX3G.js} +1 -1
  46. package/dist/chunks/{model_config-VYWFV55M.js → model_config-32SB7PTZ.js} +1 -1
  47. package/dist/chunks/{nvidia-EOLGFGFZ.js → nvidia-5DDRU422.js} +1 -1
  48. package/dist/chunks/{ollama-OHD5BFI7.js → ollama-4PI2BDMM.js} +1 -1
  49. package/dist/chunks/{openrouter-SK7LO52I.js → openrouter-YU3RE7RH.js} +1 -1
  50. package/dist/chunks/{paths-EQFOJDZC.js → paths-RQRI2XRY.js} +1 -1
  51. package/dist/chunks/{poolside-SAAXTNGR.js → poolside-H2NCP5XT.js} +1 -1
  52. package/dist/chunks/{saveSummary-ZSJ2UKLG.js → saveSummary-W2JMDVZJ.js} +1 -1
  53. package/dist/chunks/{screen_grid-Z2S4GMN5.js → screen_grid-4Z2EBIB2.js} +1 -1
  54. package/dist/chunks/{scroll-YSFTTROP.js → scroll-LXQJ25NK.js} +1 -1
  55. package/dist/chunks/search_keyword-ABVAWJKX.js +8 -0
  56. package/dist/chunks/{secrets-GHW6AWRR.js → secrets-5TCTEPEV.js} +1 -1
  57. package/dist/chunks/{sensenova-MQKZ7TNO.js → sensenova-UT5CZFCW.js} +1 -1
  58. package/dist/chunks/settings-ZBXCJL25.js +1 -0
  59. package/dist/chunks/{todo-KQCKHQBJ.js → todo-CJLWLWJB.js} +1 -1
  60. package/dist/chunks/{tokenharbor-QL33UGF4.js → tokenharbor-S66MGK52.js} +1 -1
  61. package/dist/chunks/{update_file-OQMKLO6R.js → update_file-6F64CFSU.js} +1 -1
  62. package/dist/chunks/{usage-2WRVNL44.js → usage-WOYKJLZL.js} +1 -1
  63. package/dist/chunks/{usageServer-6XH36WK3.js → usageServer-3KLDOFIX.js} +1 -1
  64. package/dist/chunks/view_file-I77KYUO5.js +1 -0
  65. package/dist/chunks/{web_scrape-KBKSNVBI.js → web_scrape-MW6YSZ7L.js} +1 -1
  66. package/dist/chunks/{web_search-HACFAHXR.js → web_search-NT3HXUO3.js} +1 -1
  67. package/dist/chunks/{write_docx-M5RMUI4W.js → write_docx-E3MTFXTQ.js} +1 -1
  68. package/dist/chunks/{write_file-2ZFCDYSW.js → write_file-JDMRLJKT.js} +1 -1
  69. package/dist/chunks/{write_pdf-E5HQYOTR.js → write_pdf-26OQPNEP.js} +1 -1
  70. package/dist/cli.js +8 -8
  71. package/dist/package.json +1 -1
  72. package/flux-flow.cjs +17 -17
  73. package/package.json +1 -1
  74. package/dist/chunks/chunk-L3W2X74K.js +0 -1
  75. package/dist/chunks/chunk-M2ULCOL3.js +0 -2
  76. package/dist/chunks/search_keyword-G3PCZR3C.js +0 -8
  77. package/dist/chunks/settings-5R5ADGXX.js +0 -1
  78. package/dist/chunks/view_file-TZD6DAER.js +0 -1
@@ -1,2 +1,2 @@
1
- import{a as M}from"./chunk-NL4MAQSB.js";import{a as R}from"./chunk-FAEB3V5R.js";import"./chunk-M2ULCOL3.js";var P=async function*(m,_,N,D,d,j,b,O,$=1){let y=[];D&&y.push({role:"system",content:D});for(let r of N){let x=r.role==="user"?"user":"assistant",e=[];if(Array.isArray(r.parts)){for(let o of r.parts)if(o.text)e.push({type:"text",text:o.text});else if(o.inlineData&&b){let i=o.inlineData.mimeType,c=o.inlineData.data;i.startsWith("image/")&&e.push({type:"image_url",image_url:{url:`data:${i};base64,${c}`}})}}else{let o=r.text||"";o&&e.push({type:"text",text:o})}y.push({role:x,content:e.length===1&&e[0].type==="text"?e[0].text:e})}let k=R("9router",_,d)||R("9Router",_,d),w=k!==null?k:{Fast:"none",Low:"low",Medium:"medium",Standard:"medium",High:"high",xHigh:"high"}[d],U={model:_,messages:y,stream:!0,stream_options:{include_usage:!0},temperature:$,tools:[],tool_choice:"none"};w&&w!=="none"&&(k!==null||d!=="Fast")&&(U.reasoning_effort=w);let v=(process.env["9ROUTER_URL"]||process.env.NINEROUTER_URL||"http://127.0.0.1:20128/v1").trim(),l=v.replace(/\/+$/,"");if(!l.endsWith("/v1")&&!l.endsWith("/v1/chat/completions"))throw new Error(`Invalid 9Router URL: "${v}". Endpoint URL MUST end with /v1 (e.g. http://127.0.0.1:20128/v1 or https://.../v1).`);let A=l.endsWith("/chat/completions")?l:`${l}/chat/completions`,C={"Content-Type":"application/json"},L=m&&m!=="LOCAL"?m:process.env.NINEROUTER_KEY||"dummy-key";C.Authorization=`Bearer ${L}`;let u=await M(A,{method:"POST",headers:C,body:JSON.stringify(U),signal:O});if(!u.ok){let r=await u.json().catch(()=>({}));throw new Error(`9router Error (${u.status}): ${r.error?.message||u.statusText}`)}let S=u.body.getReader(),W=new TextDecoder,T="",t=[],p=null,h=Date.now(),a=!1;for(;;){let{done:r,value:x}=await S.read();if(r){a&&(t.length>0||p)&&(yield{candidates:t.length>0?[{content:{parts:t}}]:[],usageMetadata:p});break}T+=W.decode(x,{stream:!0});let e=T.split(`
1
+ import{a as M}from"./chunk-NL4MAQSB.js";import{a as R}from"./chunk-HFTI3R3Q.js";import"./chunk-26BQ45XP.js";var P=async function*(m,_,N,D,d,j,b,O,$=1){let y=[];D&&y.push({role:"system",content:D});for(let r of N){let x=r.role==="user"?"user":"assistant",e=[];if(Array.isArray(r.parts)){for(let o of r.parts)if(o.text)e.push({type:"text",text:o.text});else if(o.inlineData&&b){let i=o.inlineData.mimeType,c=o.inlineData.data;i.startsWith("image/")&&e.push({type:"image_url",image_url:{url:`data:${i};base64,${c}`}})}}else{let o=r.text||"";o&&e.push({type:"text",text:o})}y.push({role:x,content:e.length===1&&e[0].type==="text"?e[0].text:e})}let k=R("9router",_,d)||R("9Router",_,d),w=k!==null?k:{Fast:"none",Low:"low",Medium:"medium",Standard:"medium",High:"high",xHigh:"high"}[d],U={model:_,messages:y,stream:!0,stream_options:{include_usage:!0},temperature:$,tools:[],tool_choice:"none"};w&&w!=="none"&&(k!==null||d!=="Fast")&&(U.reasoning_effort=w);let v=(process.env["9ROUTER_URL"]||process.env.NINEROUTER_URL||"http://127.0.0.1:20128/v1").trim(),l=v.replace(/\/+$/,"");if(!l.endsWith("/v1")&&!l.endsWith("/v1/chat/completions"))throw new Error(`Invalid 9Router URL: "${v}". Endpoint URL MUST end with /v1 (e.g. http://127.0.0.1:20128/v1 or https://.../v1).`);let A=l.endsWith("/chat/completions")?l:`${l}/chat/completions`,C={"Content-Type":"application/json"},L=m&&m!=="LOCAL"?m:process.env.NINEROUTER_KEY||"dummy-key";C.Authorization=`Bearer ${L}`;let u=await M(A,{method:"POST",headers:C,body:JSON.stringify(U),signal:O});if(!u.ok){let r=await u.json().catch(()=>({}));throw new Error(`9router Error (${u.status}): ${r.error?.message||u.statusText}`)}let S=u.body.getReader(),W=new TextDecoder,T="",t=[],p=null,h=Date.now(),a=!1;for(;;){let{done:r,value:x}=await S.read();if(r){a&&(t.length>0||p)&&(yield{candidates:t.length>0?[{content:{parts:t}}]:[],usageMetadata:p});break}T+=W.decode(x,{stream:!0});let e=T.split(`
2
2
  `);T=e.pop();for(let o of e){let i=o.trim();if(!i||!i.startsWith("data: "))continue;let c=!1;if(i==="data: [DONE]")c=!0;else try{let f=JSON.parse(i.substring(6)),n=f.choices?.[0]?.delta,s=f.usage;if(f.choices?.[0]?.finish_reason&&(c=!0),s&&(p={totalTokenCount:s.total_tokens||(s.prompt_tokens||0)+(s.completion_tokens||0),promptTokenCount:s.prompt_tokens||0,candidatesTokenCount:s.completion_tokens||0,cachedContentTokenCount:s.prompt_tokens_details?.cached_tokens||0,thoughtsTokenCount:s.completion_tokens_details?.reasoning_tokens||s.reasoning_tokens||0},a=!0),n){let g=n.reasoning_content||n.reasoning||n.thinking||null;!g&&Array.isArray(n.reasoning_details)&&n.reasoning_details.length>0&&(g=n.reasoning_details.map(E=>typeof E=="string"?E:E?.text||"").filter(Boolean).join("")),g&&(t.push({text:g,thought:!0}),a=!0),n.content&&(t.push({text:n.content}),a=!0)}}catch{}if((c||Date.now()-h>=150)&&a&&(yield{candidates:t.length>0?[{content:{parts:[...t]}}]:[],usageMetadata:p},t=[],h=Date.now(),a=!1),c)break}Date.now()-h>=150&&a&&(yield{candidates:t.length>0?[{content:{parts:[...t]}}]:[],usageMetadata:p},t=[],h=Date.now(),a=!1)}};export{P as getNineRouterStream};
@@ -1 +1 @@
1
- import{c as i,d as m}from"./chunk-L3W2X74K.js";import{k as n}from"./chunk-M2ULCOL3.js";var y=async(a,u={})=>{let s=(r=>{let t=new RegExp(`${r}\\s*[:=]\\s*(["'])(.*?)\\1(?=\\s*[,)]|\\s+\\w+\\s*[:=]|$)`,"s"),o=a.match(t);return o?o[2].trim():null})("id");if(!s)return"ERROR: Missing 'id' parameter for addMemScore tool.";try{let r=i(n,[]),t=!1,o=[];for(let e of r)e.score===void 0&&(e.score=.5),e.id===s?(e.score=Math.min(2,e.score+.2),t=!0):(e.score*=.98,e.score<.05&&(e.score=0)),e.score=Math.round(e.score*1e5)/1e5,e.score>0&&o.push(e);if(m(n,o),!t)return`WARNING: Memory ID [${s}] not found. Other memories decayed by -0.01.`;let c=o.find(e=>e.id===s),f=c?c.score.toFixed(2):"deleted (score <= 0)",d=r.length-o.length;return`Adjusted memory scores. Target [${s}] is now ${f}.${d>0?` Purged ${d} decayed memories.`:""}`}catch(r){let t=r instanceof Error?r.message:String(r);return`ERROR: Failed to adjust memory score for [${s}]: ${t}`}};export{y as addMemScore};
1
+ import{c as i,d as m}from"./chunk-P5HBJA23.js";import{k as n}from"./chunk-26BQ45XP.js";var y=async(a,u={})=>{let s=(r=>{let t=new RegExp(`${r}\\s*[:=]\\s*(["'])(.*?)\\1(?=\\s*[,)]|\\s+\\w+\\s*[:=]|$)`,"s"),o=a.match(t);return o?o[2].trim():null})("id");if(!s)return"ERROR: Missing 'id' parameter for addMemScore tool.";try{let r=i(n,[]),t=!1,o=[];for(let e of r)e.score===void 0&&(e.score=.5),e.id===s?(e.score=Math.min(2,e.score+.2),t=!0):(e.score*=.98,e.score<.05&&(e.score=0)),e.score=Math.round(e.score*1e5)/1e5,e.score>0&&o.push(e);if(m(n,o),!t)return`WARNING: Memory ID [${s}] not found. Other memories decayed by -0.01.`;let c=o.find(e=>e.id===s),f=c?c.score.toFixed(2):"deleted (score <= 0)",d=r.length-o.length;return`Adjusted memory scores. Target [${s}] is now ${f}.${d>0?` Purged ${d} decayed memories.`:""}`}catch(r){let t=r instanceof Error?r.message:String(r);return`ERROR: Failed to adjust memory score for [${s}]: ${t}`}};export{y as addMemScore};
@@ -1 +1 @@
1
- import{A as s,B as t,j as b,k as c,l as d,m as e,n as f,o as g,p as h,q as i,r as j,s as k,t as l,u as m,v as n,w as o,x as p,y as q,z as r}from"./chunk-XDIU4OX7.js";import"./chunk-FAEB3V5R.js";import"./chunk-QOT4BYHM.js";import"./chunk-56EJGQU3.js";import"./chunk-2VV5ZE53.js";import"./chunk-LTX2IUDV.js";import"./chunk-HOZQBBAO.js";import"./chunk-T4ZG2WCV.js";import"./chunk-3JI2CRXK.js";import"./chunk-Y5JU726N.js";import"./chunk-ET66XVIM.js";import"./chunk-K4AZXTU6.js";import"./chunk-FSE4BZZZ.js";import{l as a}from"./chunk-PRTGV2R4.js";import"./chunk-L3W2X74K.js";import"./chunk-M2ULCOL3.js";export{c as RE_LEADING_THINK,q as compressHistory,b as convertChannelThinkTags,r as deleteChatSummary,e as findGenuineThinkClose,p as generateSimpleContent,s as getAIStream,j as getCleanGroupedLength,m as getGoogleClient,f as getLeadingThinkBlock,o as initAI,d as isInsideBacktick,a as isModelMultimodal,l as isTerminationSignaled,n as runJanitorTask,t as runSubagent,k as signalTermination,g as stripLeadingThinking,h as stripNakedXmlTags,i as stripTrailingFluffAfterTools};
1
+ import{A as s,B as t,j as b,k as c,l as d,m as e,n as f,o as g,p as h,q as i,r as j,s as k,t as l,u as m,v as n,w as o,x as p,y as q,z as r}from"./chunk-ZCXQPXVK.js";import"./chunk-HFTI3R3Q.js";import"./chunk-52STSLCN.js";import"./chunk-56EJGQU3.js";import"./chunk-EYTM4NZD.js";import"./chunk-MQCO3GXM.js";import"./chunk-6H2P5XUL.js";import"./chunk-4BLSASW6.js";import"./chunk-6EYQQ7GQ.js";import"./chunk-Y5JU726N.js";import"./chunk-FXRFFNRK.js";import"./chunk-QW6IGMYV.js";import"./chunk-IZQAF6KJ.js";import{l as a}from"./chunk-KMOTPBF5.js";import"./chunk-P5HBJA23.js";import"./chunk-26BQ45XP.js";export{c as RE_LEADING_THINK,q as compressHistory,b as convertChannelThinkTags,r as deleteChatSummary,e as findGenuineThinkClose,p as generateSimpleContent,s as getAIStream,j as getCleanGroupedLength,m as getGoogleClient,f as getLeadingThinkBlock,o as initAI,d as isInsideBacktick,a as isModelMultimodal,l as isTerminationSignaled,n as runJanitorTask,t as runSubagent,k as signalTermination,g as stripLeadingThinking,h as stripNakedXmlTags,i as stripTrailingFluffAfterTools};
@@ -1,2 +1,2 @@
1
- import{a as b}from"./chunk-NL4MAQSB.js";import{a as T}from"./chunk-FAEB3V5R.js";import"./chunk-M2ULCOL3.js";var P=async function*(M,g,C,_,k,I,A,E,H=1){let d=[];_&&d.push({role:"system",content:_});for(let s of C){let m=s.role==="user"?"user":"assistant",e=[];if(Array.isArray(s.parts)){for(let o of s.parts)if(o.text)e.push({type:"text",text:o.text});else if(o.inlineData&&A){let i=o.inlineData.mimeType,r=o.inlineData.data;i.startsWith("image/")&&e.push({type:"image_url",image_url:{url:`data:${i};base64,${r}`}})}}else{let o=s.text||"";o&&e.push({type:"text",text:o})}d.push({role:m,content:e.length===1&&e[0].type==="text"?e[0].text:e})}let x=T("AIHubMix",g,k),y=x!==null?x:{Fast:"minimal",Low:"low",Medium:"medium",Standard:"medium",High:"high",xHigh:"high"}[k],w={model:g,messages:d,stream:!0,stream_options:{include_usage:!0},temperature:H,tools:[],tool_choice:"none"};y&&(w.reasoning_effort=y);let c=await b("https://aihubmix.com/v1/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${M}`,"Content-Type":"application/json"},body:JSON.stringify(w),signal:E});if(!c.ok){let s=await c.json().catch(()=>({}));throw new Error(`AIHubMix Error (${c.status}): ${s.error?.message||c.statusText}`)}let S=c.body.getReader(),$=new TextDecoder,h="",t=[],l=null,f=Date.now(),a=!1;for(;;){let{done:s,value:m}=await S.read();if(s){a&&(t.length>0||l)&&(yield{candidates:t.length>0?[{content:{parts:t}}]:[],usageMetadata:l});break}h+=$.decode(m,{stream:!0});let e=h.split(`
1
+ import{a as b}from"./chunk-NL4MAQSB.js";import{a as T}from"./chunk-HFTI3R3Q.js";import"./chunk-26BQ45XP.js";var P=async function*(M,g,C,_,k,I,A,E,H=1){let d=[];_&&d.push({role:"system",content:_});for(let s of C){let m=s.role==="user"?"user":"assistant",e=[];if(Array.isArray(s.parts)){for(let o of s.parts)if(o.text)e.push({type:"text",text:o.text});else if(o.inlineData&&A){let i=o.inlineData.mimeType,r=o.inlineData.data;i.startsWith("image/")&&e.push({type:"image_url",image_url:{url:`data:${i};base64,${r}`}})}}else{let o=s.text||"";o&&e.push({type:"text",text:o})}d.push({role:m,content:e.length===1&&e[0].type==="text"?e[0].text:e})}let x=T("AIHubMix",g,k),y=x!==null?x:{Fast:"minimal",Low:"low",Medium:"medium",Standard:"medium",High:"high",xHigh:"high"}[k],w={model:g,messages:d,stream:!0,stream_options:{include_usage:!0},temperature:H,tools:[],tool_choice:"none"};y&&(w.reasoning_effort=y);let c=await b("https://aihubmix.com/v1/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${M}`,"Content-Type":"application/json"},body:JSON.stringify(w),signal:E});if(!c.ok){let s=await c.json().catch(()=>({}));throw new Error(`AIHubMix Error (${c.status}): ${s.error?.message||c.statusText}`)}let S=c.body.getReader(),$=new TextDecoder,h="",t=[],l=null,f=Date.now(),a=!1;for(;;){let{done:s,value:m}=await S.read();if(s){a&&(t.length>0||l)&&(yield{candidates:t.length>0?[{content:{parts:t}}]:[],usageMetadata:l});break}h+=$.decode(m,{stream:!0});let e=h.split(`
2
2
  `);h=e.pop();for(let o of e){let i=o.trim();if(!i||!i.startsWith("data: "))continue;let r=!1;if(i==="data: [DONE]")r=!0;else try{let u=JSON.parse(i.substring(6)),p=u.choices?.[0]?.delta,n=u.usage;if(u.choices?.[0]?.finish_reason&&(r=!0),n&&(l={totalTokenCount:n.total_tokens||(n.prompt_tokens||0)+(n.completion_tokens||0),promptTokenCount:n.prompt_tokens||0,candidatesTokenCount:n.completion_tokens||0,cachedContentTokenCount:n.prompt_tokens_details?.cached_tokens||0,thoughtsTokenCount:n.completion_tokens_details?.reasoning_tokens||n.reasoning_tokens||0},a=!0),p){let D=p.reasoning_content||null;D&&(t.push({text:D,thought:!0}),a=!0),p.content&&(t.push({text:p.content}),a=!0)}}catch{}if((r||Date.now()-f>=150)&&a&&(yield{candidates:t.length>0?[{content:{parts:[...t]}}]:[],usageMetadata:l},t=[],f=Date.now(),a=!1),r)break}Date.now()-f>=150&&a&&(yield{candidates:t.length>0?[{content:{parts:[...t]}}]:[],usageMetadata:l},t=[],f=Date.now(),a=!1)}};export{P as getAIHubMixStream};
@@ -1,2 +1,2 @@
1
- import{a as P}from"./chunk-NL4MAQSB.js";import{a as A}from"./chunk-FAEB3V5R.js";import"./chunk-M2ULCOL3.js";var H=async function*(b,_,E,x,y,j,C,M,I=1){let g=[];x&&g.push({role:"system",content:x});for(let o of E){let m=o.role==="user"?"user":"assistant",e=[];if(Array.isArray(o.parts)){for(let n of o.parts)if(n.text)e.push({type:"text",text:n.text});else if(n.inlineData&&C){let i=n.inlineData.mimeType,p=n.inlineData.data;i.startsWith("image/")&&e.push({type:"image_url",image_url:{url:`data:${i};base64,${p}`}})}}else{let n=o.text||"";n&&e.push({type:"text",text:n})}g.push({role:m,content:e.length===1&&e[0].type==="text"?e[0].text:e})}let k=A("APInex",_,y),w=k!==null?k:{Fast:"low",Low:"low",Medium:"medium",Standard:"medium",High:"high",xHigh:"high"}[y],T={model:_,messages:g,stream:!0,stream_options:{include_usage:!0},temperature:I,tools:[],tool_choice:"none"};w&&(T.reasoning_effort=w);let F=process.env.APINEX_URL||"https://api.apinex.bond/v1/chat/completions",D={"Content-Type":"application/json","X-Title":"Flux-Flow","User-Agent":"Flux-Flow","HTTP-Referer":"https://fluxflow-cli.onrender.com/"},N=b||process.env.APINEX_API_KEY||"";D.Authorization=`Bearer ${N}`;let l=await P(F,{method:"POST",headers:D,body:JSON.stringify(T),signal:M});if(!l.ok){let o=await l.json().catch(()=>({}));throw new Error(`APInex Error (${l.status}): ${o.error?.message||o.message||l.statusText}`)}let v=l.body.getReader(),S=new TextDecoder,h="",t=[],c=null,u=Date.now(),s=!1;for(;;){let{done:o,value:m}=await v.read();if(o){s&&(t.length>0||c)&&(yield{candidates:t.length>0?[{content:{parts:t}}]:[],usageMetadata:c});break}h+=S.decode(m,{stream:!0});let e=h.split(`
1
+ import{a as P}from"./chunk-NL4MAQSB.js";import{a as A}from"./chunk-HFTI3R3Q.js";import"./chunk-26BQ45XP.js";var H=async function*(b,_,E,x,y,j,C,M,I=1){let g=[];x&&g.push({role:"system",content:x});for(let o of E){let m=o.role==="user"?"user":"assistant",e=[];if(Array.isArray(o.parts)){for(let n of o.parts)if(n.text)e.push({type:"text",text:n.text});else if(n.inlineData&&C){let i=n.inlineData.mimeType,p=n.inlineData.data;i.startsWith("image/")&&e.push({type:"image_url",image_url:{url:`data:${i};base64,${p}`}})}}else{let n=o.text||"";n&&e.push({type:"text",text:n})}g.push({role:m,content:e.length===1&&e[0].type==="text"?e[0].text:e})}let k=A("APInex",_,y),w=k!==null?k:{Fast:"low",Low:"low",Medium:"medium",Standard:"medium",High:"high",xHigh:"high"}[y],T={model:_,messages:g,stream:!0,stream_options:{include_usage:!0},temperature:I,tools:[],tool_choice:"none"};w&&(T.reasoning_effort=w);let F=process.env.APINEX_URL||"https://api.apinex.bond/v1/chat/completions",D={"Content-Type":"application/json","X-Title":"Flux-Flow","User-Agent":"Flux-Flow","HTTP-Referer":"https://fluxflow-cli.onrender.com/"},N=b||process.env.APINEX_API_KEY||"";D.Authorization=`Bearer ${N}`;let l=await P(F,{method:"POST",headers:D,body:JSON.stringify(T),signal:M});if(!l.ok){let o=await l.json().catch(()=>({}));throw new Error(`APInex Error (${l.status}): ${o.error?.message||o.message||l.statusText}`)}let v=l.body.getReader(),S=new TextDecoder,h="",t=[],c=null,u=Date.now(),s=!1;for(;;){let{done:o,value:m}=await v.read();if(o){s&&(t.length>0||c)&&(yield{candidates:t.length>0?[{content:{parts:t}}]:[],usageMetadata:c});break}h+=S.decode(m,{stream:!0});let e=h.split(`
2
2
  `);h=e.pop();for(let n of e){let i=n.trim();if(!i||!i.startsWith("data: "))continue;let p=!1;if(i==="data: [DONE]")p=!0;else try{let d=JSON.parse(i.substring(6)),r=d.choices?.[0]?.delta,a=d.usage;if(a&&(c={totalTokenCount:a.total_tokens||(a.prompt_tokens||0)+(a.completion_tokens||0),promptTokenCount:a.prompt_tokens||0,candidatesTokenCount:a.completion_tokens||0,cachedContentTokenCount:a.prompt_tokens_details?.cached_tokens||0,thoughtsTokenCount:a.completion_tokens_details?.reasoning_tokens||a.reasoning_tokens||0},s=!0),r){let f=r.reasoning_content||r.reasoning||null;!f&&Array.isArray(r.reasoning_details)&&r.reasoning_details.length>0&&(f=r.reasoning_details.map($=>$.text||"").filter(Boolean).join("")),f&&(t.push({text:f,thought:!0}),s=!0),r.content&&(t.push({text:r.content}),s=!0)}}catch{}if((p||Date.now()-u>=150)&&s&&(yield{candidates:t.length>0?[{content:{parts:[...t]}}]:[],usageMetadata:c},t=[],u=Date.now(),s=!1),p)break}Date.now()-u>=150&&s&&(yield{candidates:t.length>0?[{content:{parts:[...t]}}]:[],usageMetadata:c},t=[],u=Date.now(),s=!1)}};export{H as getAPInexStream};
@@ -1,4 +1,4 @@
1
- import{A as xl,a as zi,b as lt,c as ft,d as Or,e as Pr,f as tl,g as Ls,h as mn,i as Fr,s as dl,v as cl,w as $o,y as ul,z as ml}from"./chunk-XDIU4OX7.js";import{a as fl}from"./chunk-UEV335RW.js";import{a as qt,b as Ri,c as el}from"./chunk-FAEB3V5R.js";import"./chunk-QOT4BYHM.js";import{b as sl,c as il,d as ll}from"./chunk-BTMPM5BT.js";import{a as al}from"./chunk-56EJGQU3.js";import{a as Pt,b as Ct,d as Ki,e as Mt,f as qi,j as Is,k as ks,l as nr,m as Qi,n as Fo}from"./chunk-2VV5ZE53.js";import{c as Ji,e as Pn,f as to,g as Zi}from"./chunk-JTTVSAKS.js";import"./chunk-LTX2IUDV.js";import{a as rl}from"./chunk-A73NNVCZ.js";import{a as Qo,b as Nn,d as Nr,e as As,f as ol,h as nl,i as ir}from"./chunk-HOZQBBAO.js";import"./chunk-T4ZG2WCV.js";import{a as sr}from"./chunk-3JI2CRXK.js";import{a as rr}from"./chunk-Y5JU726N.js";import{b as qo,c as Bs,k as Gi}from"./chunk-ET66XVIM.js";import{a as Wi,b as Vi,i as Yi,j as Ar,k as Lr,m as wt,n as un,o as Ds,u as ji}from"./chunk-K4AZXTU6.js";import{a as vs,b as Nt}from"./chunk-FSE4BZZZ.js";import{d as Ni,e as Es,f as Fi,g as $i,h as Ui,i as _i,j as Hi,l as kr,n as Ko,o as eo,p as or,q as Xi}from"./chunk-PRTGV2R4.js";import{c as Dr,d as Pi,e as Ir}from"./chunk-L3W2X74K.js";import{a as go,b as cn,c as Co,d as Ms,e as Ss,k as tr,y as Oi}from"./chunk-M2ULCOL3.js";import zs from"os";import e,{useState as R,useEffect as xt,useRef as rt,useMemo as Hn}from"react";import{Box as u,Text as i,useInput as rc,useStdout as sc,Static as ic}from"ink";import lc from"ink-spinner";import mt from"fs-extra";import At from"path";import{exec as Io}from"child_process";import{fileURLToPath as ac}from"url";import Wt,{useState as $r,useEffect as Os,useMemo as lr,useCallback as Ia,useRef as Uo}from"react";import{Box as ka,Text as ho,useInput as Aa}from"ink";function La(t,f){return t.replace(/\t/g," ".repeat(f))}function Ur(t){return t==null?"":t.replace(/\r\n/g,`
1
+ import{A as xl,a as zi,b as lt,c as ft,d as Or,e as Pr,f as tl,g as Ls,h as mn,i as Fr,s as dl,v as cl,w as $o,y as ul,z as ml}from"./chunk-ZCXQPXVK.js";import{a as fl}from"./chunk-UEV335RW.js";import{a as qt,b as Ri,c as el}from"./chunk-HFTI3R3Q.js";import"./chunk-52STSLCN.js";import{b as sl,c as il,d as ll}from"./chunk-IHDJDAG3.js";import{a as al}from"./chunk-56EJGQU3.js";import{a as Pt,b as Ct,d as Ki,e as Mt,f as qi,j as Is,k as ks,l as nr,m as Qi,n as Fo}from"./chunk-EYTM4NZD.js";import{c as Ji,e as Pn,f as to,g as Zi}from"./chunk-ODBYCQHC.js";import"./chunk-MQCO3GXM.js";import{a as rl}from"./chunk-A73NNVCZ.js";import{a as Qo,b as Nn,d as Nr,e as As,f as ol,h as nl,i as ir}from"./chunk-6H2P5XUL.js";import"./chunk-4BLSASW6.js";import{a as sr}from"./chunk-6EYQQ7GQ.js";import{a as rr}from"./chunk-Y5JU726N.js";import{b as qo,c as Bs,k as Gi}from"./chunk-FXRFFNRK.js";import{a as Wi,b as Vi,i as Yi,j as Ar,k as Lr,m as wt,n as un,o as Ds,u as ji}from"./chunk-QW6IGMYV.js";import{a as vs,b as Nt}from"./chunk-IZQAF6KJ.js";import{d as Ni,e as Es,f as Fi,g as $i,h as Ui,i as _i,j as Hi,l as kr,n as Ko,o as eo,p as or,q as Xi}from"./chunk-KMOTPBF5.js";import{c as Dr,d as Pi,e as Ir}from"./chunk-P5HBJA23.js";import{a as go,b as cn,c as Co,d as Ms,e as Ss,k as tr,y as Oi}from"./chunk-26BQ45XP.js";import zs from"os";import e,{useState as R,useEffect as xt,useRef as rt,useMemo as Hn}from"react";import{Box as u,Text as i,useInput as rc,useStdout as sc,Static as ic}from"ink";import lc from"ink-spinner";import mt from"fs-extra";import At from"path";import{exec as Io}from"child_process";import{fileURLToPath as ac}from"url";import Wt,{useState as $r,useEffect as Os,useMemo as lr,useCallback as Ia,useRef as Uo}from"react";import{Box as ka,Text as ho,useInput as Aa}from"ink";function La(t,f){return t.replace(/\t/g," ".repeat(f))}function Ur(t){return t==null?"":t.replace(/\r\n/g,`
2
2
  `).replace(/\r/g,`
3
3
  `)}function xn(t,f,g){let S=t,w=[...f].sort((a,T)=>a.start-T.start),p=0;for(let a of w){let T=a.start-p,b=Ur(a.text).split(`
4
4
  `).length,M=a.text.length,N=(b>3?`[Pasted ${b} lines]`:`[Pasted ${M} chars]`).length,O=T+N;if(t<=T)break;if(t<O){S=a.end;break}else{let E=a.text.length-N;S+=E,p+=E}}return Math.min(S,g.length)}function Ps(t,f,g,S,w=[]){let p=(t||"").slice(0,f),a=S(p).length,T=S(t||""),b=[...w].sort(($,L)=>L.start-$.start);for(let $ of b){let L=S(t.slice(0,$.start)).length,Y=S($.text),K=L+Y.length,ce=Ur($.text).split(`
@@ -41,7 +41,7 @@ import{A as xl,a as zi,b as lt,c as ft,d as Or,e as Pr,f as tl,g as Ls,h as mn,i
41
41
  `),terminalWidth:f,theme:p}));if(b==="diff-line"){let{isFirstLine:E,isLastLine:D}=t,F=($=!1)=>s.createElement(I,{backgroundColor:a.codeBg,paddingX:1,width:f,marginBottom:$?1:0},s.createElement(I,{width:3,flexShrink:0}),s.createElement(I,{width:1,flexShrink:0,marginLeft:1}),s.createElement(I,{flexGrow:1,marginLeft:1},s.createElement(se,null," ")));return s.createElement(I,{flexDirection:"column"},E&&F(!1),s.createElement(Cl,{line:M,pairContent:t.pairContent,parentText:void 0,columns:f,theme:p}),D&&F(!0))}if(b==="code-fence-open"){let E={paddingLeft:2,width:"100%"};return s.createElement(I,{flexDirection:"column",marginTop:0,marginBottom:0,width:"100%"},s.createElement(I,{flexDirection:"row",...E},s.createElement(se,null," ")),s.createElement(I,{flexDirection:"row",...E},s.createElement(se,{color:"gray",bold:!0},"\u25B6_ ",(M||"TEXT").toUpperCase())))}if(b==="code-line"){let{lineNum:E,lang:D}=t,F=f-12,$=(M||"").replaceAll(" "," "),Y=Ct($,Math.max(10,F)).split(`
42
42
  `);return s.createElement(I,{flexDirection:"column",width:"100%"},Y.map((K,ce)=>s.createElement(I,{key:ce,flexDirection:"row",borderColor:a.codeBorder,paddingLeft:2,width:"100%"},s.createElement(I,{width:5,flexShrink:0},s.createElement(se,{color:"gray",dimColor:!0},ce===0?String(E).padStart(4," ")+" ":" ")),s.createElement(I,{flexGrow:1},bt(K,D,a.text)))))}if(b==="code-fence-close")return s.createElement(I,{flexDirection:"row",paddingLeft:2,marginBottom:1,width:"100%"},s.createElement(se,null," "));if(b==="write-header")return s.createElement(I,{flexDirection:"column",paddingX:1,width:f},s.createElement($n,{text:M,columns:f,theme:p}));if(b==="write-line"){let{gutterWidth:E,lineNum:D,isFirstLine:F,isLastLine:$,extension:L,wrappedLines:Y}=t,K=(ce=!1)=>s.createElement(I,{flexDirection:"row",width:f,borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:a.codeBorder,paddingLeft:2,paddingRight:0,backgroundColor:a.codeBg,marginBottom:ce?1:0},s.createElement(I,{width:E+2,flexShrink:0},s.createElement(se,null," ".repeat(E+2))),s.createElement(I,{flexGrow:1},s.createElement(se,null," ")));return s.createElement(I,{flexDirection:"column"},F&&K(!1),s.createElement(I,{flexDirection:"row",width:f,borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,borderColor:a.codeBorder,paddingLeft:2,paddingRight:0,backgroundColor:a.codeBg},s.createElement(I,{width:E+2,flexShrink:0},s.createElement(se,{color:"gray",dimColor:!0},String(D).padStart(E," ")," ")),s.createElement(I,{flexGrow:1,flexDirection:"column"},(Y||[M]).map((ce,ue)=>s.createElement(I,{key:ue},bt((ce||"").replaceAll(" "," "),L,a.text))))),$&&K(!0))}return b==="write-footer"?s.createElement(I,{flexDirection:"column",paddingX:1,width:f,marginTop:1,marginBottom:1},s.createElement($n,{text:M,columns:f,theme:p})):b==="worked-duration"?s.createElement(I,{marginTop:1,marginBottom:2,paddingX:1,width:"100%"},s.createElement(se,{color:a.textMuted},"["),s.createElement(se,{color:a.textMuted},"Worked for ",s.createElement(se,{bold:!0,color:a.text},Xr(O))),s.createElement(se,{color:a.textMuted},"]")):null}),eu=s.memo(({messages:t,showFullThinking:f,columns:g=80,aiProvider:S,version:w,theme:p="Dark"})=>s.createElement(I,{flexDirection:"column",width:"100%"},t.map((a,T)=>s.createElement(Ml,{key:a.id||T,msg:a,showFullThinking:f,columns:g,aiProvider:S,version:w,theme:p}))));import St from"react";import{Box as zo,Text as Mo}from"ink";import{useState as dr,useEffect as cr,useRef as Wr}from"react";var ur=null;function Sl(){ur&&ur()}var vd=t=>{if(t<=370)return"#00a564";if(t>=5e3)return"#ff0000";let f=[{t:370,r:0,g:165,b:100},{t:550,r:40,g:195,b:80},{t:800,r:120,g:220,b:50},{t:1100,r:190,g:225,b:20},{t:1500,r:250,g:210,b:15},{t:2e3,r:255,g:170,b:0},{t:2800,r:255,g:110,b:0},{t:3800,r:255,g:50,b:0},{t:5e3,r:255,g:0,b:0}];for(let g=0;g<f.length-1;g++){let S=f[g],w=f[g+1];if(t>=S.t&&t<=w.t){let p=(t-S.t)/(w.t-S.t);p=p*p*(3-2*p);let a=Math.round(S.r+(w.r-S.r)*p),T=Math.round(S.g+(w.g-S.g)*p),b=Math.round(S.b+(w.b-S.b)*p);return`#${((1<<24)+(a<<16)+(T<<8)+b).toString(16).slice(1)}`}}return"#ff0000"},Dd=St.memo(({mode:t,thinkingLevel:f,tokens:g="0.0k",tokensTotal:S="0.0k",cachedTokens:w=0,promptTokens:p=0,chatId:a="NEW-SESSION",isMemoryEnabled:T=!0,apiTier:b="Free",aiProvider:M="Google",activeModel:N="",isProcessing:O=!1,lastChunkTime:E=0,theme:D="Dark",wps:F=0,showTPMEstimate:$=!1})=>{let L=lt(D),Y="",[K,ce]=dr(0),[ue,z]=dr(0),[oe,xe]=dr("MB"),[Ee,_e]=dr("green"),[We,pe]=dr(0),we=Wr([]),ye=Wr(370),ae=Wr([]),Ke=Wr(E);cr(()=>{Ke.current=E},[E]),cr(()=>{if(!O){ae.current=[];return}if(F>0){let j=ae.current;j.push(F),j.length>3&&j.shift()}},[O,F,E]),cr(()=>{if(!O){pe(0);return}let j=setInterval(()=>{let ne=Ke.current,ee=ne>0?Date.now()-ne:0;if(ne>0&&ee>=1e3)ae.current=[],pe(0);else if(ne>0&&ee>500){ae.current.length>0&&ae.current.shift();let de=ae.current;if(de.length>0){let Se=de.reduce((Me,Le)=>Me+Le,0);pe(Math.round(Se/de.length))}else pe(0)}else{let de=ae.current;if(de.length>0){let Se=de.reduce((Me,Le)=>Me+Le,0);pe(Math.round(Se/de.length))}else F>0&&pe(Math.round(F))}},750);return()=>clearInterval(j)},[O]),cr(()=>{if(!O){we.current=[];return}if(E>0){let ee=we.current;(ee.length===0||ee[ee.length-1]!==E)&&(ee.push(E),ee.length>10&&ee.shift())}let j=()=>{if(!E){_e("#00a564");return}let ee=we.current,de=0;if(ee.length>1){let le=0;for(let ge=1;ge<ee.length;ge++)le+=ee[ge]-ee[ge-1];de=le/(ee.length-1)}let Se=Date.now()-E,Le=Se>=2500,ot=!Le&&de>0?Math.min(Se,de*3):Se,dt=Math.max(de,ot),Ie=Le?.4:.2;ye.current=ye.current*(1-Ie)+dt*Ie,_e(vd(ye.current))};j();let ne=setInterval(j,100);return()=>clearInterval(ne)},[O,E]);let He=()=>{let j=process.memoryUsage(),ne=j.heapTotal/(1024*1024)>=1024,ee=ne?"GB":"MB",de=(Se,Me)=>{let Le=Se/(1048576*(Me?1024:1));return Me?parseFloat(Le.toFixed(2)):Math.round(Le)};xe(ee),z(de(j.heapTotal,ne)),ce(de(j.heapUsed,ne))};return cr(()=>{ur=He,He();let j=setInterval(()=>{He()},6e4);return()=>{clearInterval(j),ur===He&&(ur=null)}},[]),St.createElement(zo,{flexDirection:"row",justifyContent:"space-between",paddingX:1,width:"100%"},St.createElement(zo,null,St.createElement(zo,{marginRight:1},St.createElement(Mo,{color:L.textMuted},t.toLowerCase()==="flow"?"Studio":t.toLowerCase()==="icu"?"Computer Use":t.toLowerCase()==="flux"?"Workspace":"Omni")),St.createElement(Mo,{color:L.textMuted,dimColor:!0},"\u2503 "),St.createElement(zo,null,St.createElement(Mo,{color:L.text,italic:!0},qi(process.cwd(),35)))),St.createElement(zo,null,O&&!$?St.createElement(zo,null,St.createElement(Mo,{color:Ee},"\u25CF ")):null,O&&$&&St.createElement(St.Fragment,null,St.createElement(Mo,{color:L.textMuted},"~",We," tok/s"),St.createElement(Mo,{color:L.textMuted,dimColor:!0}," \u2503")),g>0&&St.createElement(St.Fragment,null,St.createElement(zo,{marginX:1},St.createElement(Mo,{color:L.text},Mt(S)," tok",(()=>{let j=typeof p=="number"?p:0,ne=typeof w=="number"?w:0,ee=j>0?ne/j*100:0;return ee<1?null:St.createElement(Mo,{color:L.success||"green",dimColor:!0}," [",ee.toFixed(0),"% cached]")})())),St.createElement(Mo,{color:L.textMuted,dimColor:!0},"\u2503")),St.createElement(zo,{marginLeft:1},St.createElement(Mo,{color:L.textMuted,bold:!0},K," ",oe))))}),El=Dd;import ct,{useState as Vr,useMemo as Id,useEffect as Bl}from"react";import{Box as Yt,Text as jt,useInput as kd}from"ink";import Ad from"ink-select-input";var Ld=({label:t,isSelected:f,theme:g="Dark"})=>{let S=lt(g),w=t==="Cancel"||t==="Back"||t.toLowerCase().includes("exit")||t.toLowerCase().includes("back");return ct.createElement(Yt,{marginTop:w?1:0,backgroundColor:f?S.highlightBg:void 0,paddingX:1,width:"100%"},ct.createElement(jt,{color:f?S.text:S.textMuted,bold:f},f?"\u276F ":" ",t))},Od=8;function Et({title:t,subtitle:f,items:g=[],onSelect:S,theme:w="Dark",searchable:p=!1,maxVisible:a=Od}){let T=lt(w),[b,M]=Vr(""),[N,O]=Vr(0),[E,D]=Vr("list"),F=Id(()=>{if(!p||!b.trim())return g;let ue=b.toLowerCase().trim();return g.filter(z=>z.label&&z.label.toLowerCase().includes(ue))},[g,b,p]);Bl(()=>{O(0)},[b]);let[$,L]=Vr(0);Bl(()=>{L(ue=>F.length<=a?0:N<ue?N:N>=ue+a?N-a+1:ue)},[N,F.length,a]),kd((ue,z)=>{if(p){if(z.upArrow){D("list"),O(oe=>F.length===0?0:oe>0?oe-1:F.length-1);return}if(z.downArrow){D("list"),O(oe=>F.length===0?0:oe<F.length-1?oe+1:0);return}if(z.return){F.length>0&&F[N]&&S(F[N]);return}if(z.escape){if(b)M(""),D("list"),O(0);else{let oe=g.find(xe=>xe.value==="Back"||xe.label==="Back"||xe.value==="Cancel"||xe.label==="Cancel");oe&&S(oe)}return}if(z.backspace||z.delete){D("search"),M(oe=>oe.slice(0,-1));return}if(ue&&!z.ctrl&&!z.meta&&!z.tab){D("search"),M(oe=>oe+ue);return}}},{isActive:p});let Y=F.length,K=$;Y<=a?K=0:K=Math.max(0,Math.min($,Y-a));let ce=F.slice(K,K+a);return p?ct.createElement(Yt,{flexDirection:"column",borderStyle:"round",borderColor:T.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},ct.createElement(Yt,{paddingX:1,paddingY:0,marginBottom:0,flexDirection:"row",justifyContent:"space-between"},t?ct.createElement(jt,{color:T.text,bold:!0},typeof t=="string"?t.toUpperCase():t):ct.createElement(Yt,null),Y>0&&ct.createElement(jt,{color:T.textMuted},N+1,"/",Y)),f&&ct.createElement(Yt,{paddingX:1,marginBottom:0},ct.createElement(jt,{color:T.textMuted,italic:!0}," ",f)),ct.createElement(Yt,{paddingX:1,marginTop:1,marginBottom:1,flexDirection:"row"},ct.createElement(jt,{color:E==="search"?T.primary||"cyan":T.textMuted,bold:E==="search"},"\u{1F50D} Search:"),ct.createElement(jt,{color:T.text,bold:!0}," ",b),E==="search"?ct.createElement(jt,{color:T.primary||"cyan"},"\u2588"):b?null:ct.createElement(jt,{color:T.textMuted,italic:!0}," (type to search...)")),ct.createElement(Yt,{flexDirection:"column",width:"100%"},F.length===0?ct.createElement(Yt,{paddingX:1,marginY:0},ct.createElement(jt,{color:T.warning||"yellow",italic:!0}," No matching items found")):ce.map((ue,z)=>{let oe=K+z,xe=oe===N,Ee=ue.label==="Cancel"||ue.label==="Back"||ue.label.toLowerCase().includes("exit")||ue.label.toLowerCase().includes("back");return ct.createElement(Yt,{key:ue.value??ue.label??oe,marginTop:Ee?1:0,backgroundColor:xe?T.highlightBg:void 0,paddingX:1,width:"100%"},ct.createElement(jt,{color:xe?T.text:T.textMuted,bold:xe},xe?"\u276F ":" ",ue.label))})),ct.createElement(Yt,{paddingX:1,marginTop:1},ct.createElement(jt,{color:T.textMuted,italic:!0},E==="search"?"(Type letters to search \u2022 Arrows for list mode \u2022 Enter to select)":"(Arrows to navigate \u2022 Type letters to search \u2022 Enter to select)"))):ct.createElement(Yt,{flexDirection:"column",borderStyle:"round",borderColor:T.borderMuted,padding:0,marginTop:0,flexShrink:0,width:"100%"},t&&ct.createElement(Yt,{paddingX:1,paddingY:0,marginBottom:f?0:1,flexDirection:"row",justifyContent:"space-between"},ct.createElement(jt,{color:T.text,bold:!0},typeof t=="string"?t.toUpperCase():t),g.length>a&&ct.createElement(jt,{color:T.textMuted,italic:!0},g.length," options")),f&&ct.createElement(Yt,{paddingX:1,marginBottom:1},ct.createElement(jt,{color:T.textMuted,italic:!0}," ",f)),ct.createElement(Yt,{flexDirection:"column",width:"100%"},ct.createElement(Ad,{items:g,onSelect:S,limit:a,itemComponent:ue=>ct.createElement(Ld,{...ue,theme:w}),indicatorComponent:()=>null})),ct.createElement(Yt,{paddingX:1,marginTop:1},ct.createElement(jt,{color:T.textMuted,italic:!0},"(Arrows to select \u2022 Enter to confirm)")))}import A,{useState as Ut,useEffect as mr}from"react";import{Box as Ue,Text as Z,useInput as Pd}from"ink";import Nd from"ink-text-input";import Fd from"v8";import vl from"os";var So=[...Object.keys(zi),"Mystery"],Eo=[{id:"appearance",label:"Appearance",desc:"Customize UI theme & rendering options"},{id:"memory",label:"Memory",desc:"Manage system context & agent's memory"},{id:"other",label:"Miscellaneous",desc:"Miscellaneous preferences"},{id:"providers",label:"Providers",desc:"Configure AI models"},{id:"security",label:"Security",desc:"Configure permissions & data safety"},{id:"updater",label:"Updater",desc:"Manage application updates"},{id:"exit",label:"Exit Settings",desc:"Return to chat view"}],Dl=t=>{let f=t.autoApproveCommands||"",g=t.autoDisallowCommands||"",S=t.alwaysAskCommands||"",w=t.autoExec===!1&&t.allowExternalAccess===!1&&t.networkAccess===!1&&f===""&&g==="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c"&&S==="killall, pkill, taskkill, shutdown, reboot, init 0, init 6, Stop-Process, Stop-Service, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, netsh advfirewall, iptables -F, ufw disable, git reset --hard, git clean -fd, npm r, npm uninstall"&&t.autoApproveGit===!1,p=t.autoExec===!0&&t.allowExternalAccess===!1&&t.networkAccess!==!1&&f==="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time, mkdir"&&g==="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c"&&S==="killall, pkill, taskkill, Stop-Process, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, shutdown, reboot, init 0, init 6, git reset --hard, git clean -fd, npm r, npm uninstall"&&t.autoApproveGit===!1,a=t.autoExec===!0&&t.allowExternalAccess===!0&&t.networkAccess!==!1&&f==="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time, mkdir"&&g===""&&S==="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c"&&t.autoApproveGit===!0;return w?"Strict":p?"Balanced":a?"Autonomous":t.sandboxPreset||"Custom"},Yr=t=>!t||t.trim()===""?"None":t.length>40?t.substring(0,40)+"...":t;function jr({systemSettings:t,setSystemSettings:f,apiTier:g,setActiveView:S,setInputConfig:w,saveSettings:p,quotas:a,setMessages:T,aiProvider:b,initialSelectingTheme:M=!1,onCloseTheme:N=null,setProviderReturnView:O=null}){let E=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",D=So.indexOf(E),[F,$]=Ut("categories"),[L,Y]=Ut(0),[K,ce]=Ut(0),[ue,z]=Ut(null),[oe,xe]=Ut(""),[Ee,_e]=Ut(M),[We,pe]=Ut(D>=0?D:0),[we,ye]=Ut(t.theme||"Dark"),[ae,Ke]=Ut(!1),[He,j]=Ut(0),[ne,ee]=Ut(0),[de,Se]=Ut(""),[Me,Le]=Ut("list"),[ot,dt]=Ut({});mr(()=>{(async()=>{let C=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","InferX","SenseNova","AIHubMix","Poolside","9router","ExpLabs","TokenHarbor","Infron","APInex","c_openai"],P={};for(let ke of C)try{await qo(ke)&&(P[ke]=!0)}catch{}dt(P)})()},[]);let Ie=A.useMemo(()=>{let he=["Google","DeepSeek","OpenRouter","NVIDIA","Mistral","Ollama","InferX","SenseNova","AIHubMix","Poolside","9router","ExpLabs","TokenHarbor","Infron","APInex","c_openai"],P=!!(process.env.SUBAGENT_MODEL&&process.env.SUBAGENT_MODEL.trim())?`ENV (${process.env.SUBAGENT_MODEL.trim()})`:"ENV",ke=[{label:"Default (use the current model)",value:"Default",isHeader:!1},{label:P,value:"ENV",isHeader:!1}],Ve=a?.providerTiers?.[b]||g||"Free",ut=Ko(b,Ve)||[];ut.length>0&&(ke.push({label:`\u2500\u2500 ${b.toUpperCase()}${Ve!=="Free"?` (${Ve})`:""} \u2500\u2500`,isHeader:!0}),ut.forEach(gt=>{let ze=typeof gt=="string"?gt:gt.cmd||gt.name||gt.id||String(gt);ze&&!ze.trim().startsWith("---")&&!ze.startsWith(`
43
43
  ---`)&&ke.push({label:ze,value:ze,isHeader:!1,provider:b})}));for(let gt of he)if(gt!==b&&ot[gt]){let ze=a?.providerTiers?.[gt]||"Free",oo=Ko(gt,ze)||[];oo.length>0&&(ke.push({label:`\u2500\u2500 ${gt.toUpperCase()}${ze!=="Free"?` (${ze})`:""} \u2500\u2500`,isHeader:!0}),oo.forEach(Re=>{let $t=typeof Re=="string"?Re:Re.cmd||Re.name||Re.id||String(Re);$t&&!$t.trim().startsWith("---")&&!$t.startsWith(`
44
- ---`)&&ke.push({label:$t,value:$t,isHeader:!1,provider:gt})}))}return ke},[b,g,a,ot]),le=A.useMemo(()=>{if(!de.trim())return Ie;let he=de.trim().toLowerCase(),C=[],P=null;for(let ke of Ie)ke.isHeader?P=ke:(ke.label.toLowerCase().includes(he)||ke.value&&ke.value.toLowerCase().includes(he))&&(P&&!C.includes(P)&&C.push(P),C.push(ke));return C},[Ie,de]);mr(()=>{if(ae){let he=le.findIndex(C=>!C.isHeader);j(he>=0?he:0),ee(0)}},[de]),mr(()=>{if(ae){if(le.length===0){j(0),ee(0);return}if(He>=le.length||le[He]?.isHeader){let he=le.findIndex(C=>!C.isHeader);j(he>=0?he:0)}}},[le,ae]);let[ge,Oe]=Ut(0),[v,Ne]=Ut(0),[st,Lt]=Ut("MB"),[zt,Rr]=Ut(!1);mr(()=>{let he=!1;return import("./exec_command-KLASTN6U.js").then(C=>{he||Rr(!!C.isPtyAvailable)}).catch(()=>{}),()=>{he=!0}},[]),mr(()=>{let he=Fd.getHeapStatistics().heap_size_limit,C=he>=1024*1024*1024,P=C?"GB":"MB",ke=C?1024*1024*1024:1024*1024;Ne(parseFloat((he/ke).toFixed(2))),Lt(P);let Ve=()=>{let oo=process.memoryUsage().rss/ke,Re=C?parseFloat(oo.toFixed(2)):Math.round(oo);Oe(Re)};Ve();let ut=setInterval(()=>{Ve()},3e4);return()=>clearInterval(ut)},[]);let tn=he=>{switch(he){case"providers":{let P=[{label:"Current Provider",value:"aiProvider",status:b==="c_openai"?"Custom (OpenAI)":b}];return b==="Ollama"&&P.push({label:"Endpoint",value:"ollamaEndpoint",status:t.ollamaEndpoint||"Cloud"}),(b==="c_openai"||b==="Custom (OpenAI)")&&(P.push({label:"Base URL",value:"customOpenAIBaseUrl",status:t.customOpenAIBaseUrl||"Not Configured"}),P.push({label:"API Key (if needed)",value:"customOpenAIKey",status:ot.c_openai?"Set":"None"})),P}case"appearance":return[{label:"Theme",value:"theme",status:t.theme||"Dark"},{label:"Loading Phrases",value:"loadingPhrases",status:t.loadingPhrases!==!1?"ON":"OFF"},{label:"Progressive Rendering [EXPERIMENTAL]",value:"progressiveRendering",status:t.progressiveRendering?"ON":"OFF"},{label:"Show TPM Estimate",value:"showTPMEstimate",status:t.showTPMEstimate?"ON":"OFF"},{label:"Verbose Thinking",value:"preserveThinking",status:t.preserveThinking!==!1?"ON":"OFF"}];case"memory":return[{label:"Toggle Memory [Legacy]",value:"memory",status:t.memory?"ON":"OFF"}];case"security":return[{label:"Sandbox Preset",value:"sandboxPreset",status:Dl(t),section:"Sandbox"},{label:"YOLO Mode",value:"autoExec",status:t.autoExec?"ON":"OFF",section:"Sandbox"},{label:"External Workspace Access",value:"externalAccess",status:t.allowExternalAccess?"ON":"OFF",section:"Sandbox"},{label:"Network Access (Terminal)",value:"networkAccess",status:t.networkAccess!==!1?"ON":"OFF",section:"Sandbox"},{label:"Always Ask Commands",value:"alwaysAsk",status:Yr(t.alwaysAskCommands),section:"Sandbox"},{label:"Always Ask Files/Paths",value:"alwaysAskFiles",status:Yr(t.alwaysAskFiles||".env, .env.*, *.env"),section:"Sandbox"},{label:"Auto Approve Commands",value:"autoApprove",status:Yr(t.autoApproveCommands),section:"Sandbox"},{label:"Auto Disapprove Commands",value:"autoDisallow",status:Yr(t.autoDisallowCommands),section:"Sandbox"},{label:"Auto Approve Git Commits",value:"autoApproveGit",status:t.autoApproveGit?"ON":"OFF",section:"Sandbox"},{label:"Advanced Recovery [EXPERIMENTAL]",value:"advanceRollback",status:t.advanceRollback?"ON":"OFF",section:"Other"},{label:"Auto-Delete History",value:"autoDelete",status:t.autoDeleteHistory||"30d",section:"Other"},{label:"Save AppData Externally",value:"externalData",status:t.useExternalData?"ON":"OFF",section:"Other"}];case"updater":return[{label:"Auto-Update",value:"autoUpdate",status:t.autoUpdate?"ON":"OFF"},{label:"Preferred Package Manager",value:"updateManager",status:(t.updateManager||"npm")==="custom"?"Custom":(t.updateManager||"npm").toUpperCase()}];case"other":return[{label:"Sub-Agents",value:"subAgents",status:t.subAgents!==!1?"ON":"OFF"},{label:"Sub-Agent Model",value:"subAgentModel",status:t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default"},{label:"Directory Tree Design",value:"indentationTree",status:t.indentationTree!==!1?"Modern":"Legacy"},{label:"Compact Large Tool Results",value:"compressToolResults",status:t.compressToolResults?"ON":"OFF"},{label:"Auto Truncate Results",value:"autoTruncateResults",status:t.autoTruncateResults?"ON":"OFF"},{label:"Image History for CU",value:"imageHistoryCU",status:t.imageHistoryCU||"Standard"},{label:"Context Length",value:"contextLength",status:t.contextLength||"256k"},{label:"Keep Reasoning Context",value:"keepReasoningContext",status:t.keepReasoningContext?"ON":"OFF"},{label:"Auto Exclude Metadata",value:"autoExcludeMetadata",status:t.autoExcludeMetadata?"ON":"OFF"},{label:"Disable Todo",value:"disableTodo",status:t.disableTodo?"ON":"OFF"}];default:return[]}},gn=Eo[L].id,qe=tn(gn);Pd((he,C)=>{if(ae){if(C.tab){Le(P=>P==="search"?"list":"search");return}if(Me==="search"){C.escape?Ke(!1):C.downArrow||C.return?Le("list"):C.backspace||C.delete?Se(P=>P.slice(0,-1)):he&&!C.ctrl&&!C.meta&&he.length===1&&Se(P=>P+he);return}if(C.upArrow)j(P=>{if(le.length===0)return 0;let ke=(P-1+le.length)%le.length,Ve=0;for(;le[ke]?.isHeader&&Ve<le.length;)ke=(ke-1+le.length)%le.length,Ve++;return ke});else if(C.downArrow)j(P=>{if(le.length===0)return 0;let ke=(P+1)%le.length,Ve=0;for(;le[ke]?.isHeader&&Ve<le.length;)ke=(ke+1)%le.length,Ve++;return ke});else if(C.return){let P=le[He];P&&!P.isHeader&&(f(ke=>{let Ve=P.value==="Default",ut={...ke,CustomSubAgent:!Ve,SubAgentModel:P.value,SubAgentProvider:Ve?"":P.provider||""};return p({systemSettings:ut,apiTier:g,quotas:a}),ut}),Ke(!1))}else C.escape?Ke(!1):he&&!C.ctrl&&!C.meta&&he.length===1&&(Se(P=>P+he),Le("search"));return}if(Ee){if(C.upArrow){let P=(We-1+So.length)%So.length;pe(P)}else if(C.downArrow){let P=(We+1)%So.length;pe(P)}else if(C.return){let P=So[We];f(ke=>{let Ve={...ke,theme:P};return p({systemSettings:Ve,apiTier:g,quotas:a}),Ve}),N?N():_e(!1)}else C.escape&&(N?N():_e(!1));return}if(ue){C.escape&&z(null);return}if(F==="categories")C.upArrow?Y(P=>(P-1+Eo.length)%Eo.length):C.downArrow?Y(P=>(P+1)%Eo.length):C.return||C.rightArrow?Eo[L].id==="exit"?S("chat"):($("items"),ce(0)):C.escape&&S("chat");else if(F==="items"){if(C.upArrow)ce(P=>(P-1+qe.length)%qe.length);else if(C.downArrow)ce(P=>(P+1)%qe.length);else if(C.leftArrow||C.escape)$("categories");else if(C.return){let P=qe[K];Kt(P)}}});let Kt=he=>{if(he.value==="memory")f(C=>({...C,memory:!C.memory}));else if(he.value==="sandboxPreset"){let C=Dl(t),P=["Autonomous","Balanced","Strict"],Ve=(P.indexOf(C)+1)%P.length,ut=P[Ve];f(gt=>{let ze={...gt,sandboxPreset:ut};return ut==="Strict"?(ze.autoExec=!1,ze.allowExternalAccess=!1,ze.networkAccess=!1,ze.autoApproveCommands="",ze.autoDisallowCommands="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c",ze.alwaysAskCommands="killall, pkill, taskkill, shutdown, reboot, init 0, init 6, Stop-Process, Stop-Service, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, netsh advfirewall, iptables -F, ufw disable, git reset --hard, git clean -fd, npm r, npm uninstall",ze.autoApproveGit=!1):ut==="Balanced"?(ze.autoExec=!0,ze.allowExternalAccess=!1,ze.networkAccess=!0,ze.autoApproveCommands="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time",ze.autoDisallowCommands="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c",ze.alwaysAskCommands="killall, pkill, taskkill, Stop-Process, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, shutdown, reboot, init 0, init 6, git reset --hard, git clean -fd, npm r, npm uninstall",ze.autoApproveGit=!1):ut==="Autonomous"&&(ze.autoExec=!0,ze.allowExternalAccess=!0,ze.networkAccess=!0,ze.autoApproveCommands="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time",ze.autoDisallowCommands="",ze.alwaysAskCommands="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c",ze.autoApproveGit=!0),ze})}else if(he.value==="autoExec")t.autoExec?f(C=>({...C,autoExec:!1,sandboxPreset:"Custom"})):t.allowExternalAccess?S("doubleDanger"):S("autoExecDanger");else if(he.value==="externalAccess")t.allowExternalAccess?f(C=>({...C,allowExternalAccess:!1,sandboxPreset:"Custom"})):t.autoExec?S("doubleDanger"):S("externalDanger");else if(he.value==="networkAccess")f(C=>({...C,networkAccess:C.networkAccess===!1,sandboxPreset:"Custom"}));else if(he.value==="alwaysAsk")z("alwaysAskCommands"),xe(t.alwaysAskCommands||"");else if(he.value==="alwaysAskFiles")z("alwaysAskFiles"),xe(t.alwaysAskFiles||".env, .env.*, *.env");else if(he.value==="autoApprove")z("autoApproveCommands"),xe(t.autoApproveCommands||"");else if(he.value==="autoApproveGit")f(C=>({...C,autoApproveGit:!C.autoApproveGit,sandboxPreset:"Custom"}));else if(he.value==="customOpenAIBaseUrl")z("customOpenAIBaseUrl"),xe(t.customOpenAIBaseUrl||"");else if(he.value==="customOpenAIKey")z("customOpenAIKey"),xe("");else if(he.value==="ollamaEndpoint")f(C=>{let P=C.ollamaEndpoint==="Local"?"Cloud":"Local",ke={...C,ollamaEndpoint:P};return p({systemSettings:ke,apiTier:g,quotas:a}),ke});else if(he.value==="apiTier")S("apiTier");else if(he.value==="aiProvider")O&&O("settings"),S("selectProvider");else if(he.value==="advanceRollback")t.advanceRollback?f(C=>{let P={...C,advanceRollback:!1};return p({systemSettings:P,apiTier:g,quotas:a}),P}):S("advanceRollbackDanger");else if(he.value==="autoDelete"){let C=["1d","7d","30d"],ke=(C.indexOf(t.autoDeleteHistory||"30d")+1)%C.length;f(Ve=>({...Ve,autoDeleteHistory:C[ke]}))}else if(he.value==="autoUpdate")f(C=>({...C,autoUpdate:!C.autoUpdate}));else if(he.value==="externalData")if(!t.useExternalData)w({label:"Enter absolute path for External AppData:",note:"All history, logs and secrets will be stored here. ~/.fluxflow/settings.json stays as anchor.",key:"externalDataPath",value:t.externalDataPath||""}),S("input");else{let C={...t,useExternalData:!1};f(C),p({systemSettings:C,apiTier:g,quotas:a}),T(P=>[...P,{id:Date.now(),role:"system",text:"[STORAGE RESET] Flux Flow will return to default ~/.fluxflow after restart."}]),S("chat")}else if(he.value==="updateManager")S("updateManager");else if(he.value==="parserDownload")S("parserDownload");else if(he.value==="indentationTree")f(C=>{let P={...C,indentationTree:C.indentationTree===!1};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="compressToolResults")f(C=>{let P={...C,compressToolResults:!C.compressToolResults};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="autoTruncateResults")f(C=>{let P={...C,autoTruncateResults:!C.autoTruncateResults};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="imageHistoryCU"){let C=["Low","Standard","Extended","Max"],ke=(C.indexOf(t.imageHistoryCU||"Standard")+1)%C.length;f(Ve=>{let ut={...Ve,imageHistoryCU:C[ke]};return p({systemSettings:ut,apiTier:g,quotas:a}),ut})}else if(he.value==="contextLength"){let C=["16k","32k","64k","128k","256k","512k","1M"],ke=(C.indexOf(t.contextLength||"256k")+1)%C.length;f(Ve=>{let ut={...Ve,contextLength:C[ke]};return p({systemSettings:ut,apiTier:g,quotas:a}),ut})}else if(he.value==="keepReasoningContext")f(C=>{let P={...C,keepReasoningContext:!C.keepReasoningContext};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="autoExcludeMetadata")f(C=>{let P={...C,autoExcludeMetadata:!C.autoExcludeMetadata};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="disableTodo")f(C=>{let P={...C,disableTodo:!C.disableTodo};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="subAgents")f(C=>{let P={...C,subAgents:C.subAgents===!1};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="subAgentModel"){let C=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",P=le.findIndex(ke=>ke.value===C);j(P>=0?P:0),Ke(!0)}else if(he.value==="preserveThinking")f(C=>{let P={...C,preserveThinking:C.preserveThinking===!1};return Tl(P.preserveThinking),p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="loadingPhrases")f(C=>{let P={...C,loadingPhrases:C.loadingPhrases===!1};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="progressiveRendering")f(C=>{let P={...C,progressiveRendering:!C.progressiveRendering};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="showTPMEstimate")f(C=>{let P={...C,showTPMEstimate:!C.showTPMEstimate};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="theme"){let C=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",P=So.indexOf(C);pe(P>=0?P:0),ye(t.theme||"Dark"),_e(!0)}},Be=lt(t.theme);if(ae){let he=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",C=15,P=ne;He<P?P=He:He>=P+C&&(P=He-C+1),P=Math.max(0,Math.min(P,Math.max(0,le.length-C))),P!==ne&&ee(P);let ke=le.slice(P,P+C);return A.createElement(Ue,{flexDirection:"column",borderStyle:"round",borderColor:Be.border,padding:1,width:"100%",minHeight:32},A.createElement(Ue,{marginBottom:1,flexDirection:"row",justifyContent:"space-between"},A.createElement(Z,{color:Be.text,bold:!0,underline:!0},"Select Sub-Agent Model:"),le.length>0&&A.createElement(Z,{color:"gray"},He+1,"/",le.length)),A.createElement(Ue,{borderStyle:"single",borderColor:Me==="search"?Be.primary||"cyan":"gray",paddingX:1,marginBottom:1},A.createElement(Z,{color:Me==="search"?Be.primary||"cyan":"gray",bold:!0},"\u{1F50D} Search: "," "),A.createElement(Z,{color:Be.text},de),Me==="search"&&A.createElement(Z,{color:Be.primary||"cyan"},"\u2588"),!de&&Me!=="search"&&A.createElement(Z,{color:"gray",italic:!0},"(Press TAB or type to filter models...)")),A.createElement(Ue,{flexDirection:"column",flexGrow:1,height:C},ke.length>0?ke.map((Ve,ut)=>{let gt=P+ut;if(Ve.isHeader)return A.createElement(Ue,{key:`hdr-${gt}`,paddingX:1},A.createElement(Z,{color:"gray",bold:!0,underline:!0},Ve.label));let ze=He===gt&&Me==="list",oo=he===Ve.value;return A.createElement(Ue,{key:`item-${Ve.value}-${gt}`,paddingX:1,backgroundColor:ze?Be.highlightBg:void 0},A.createElement(Z,{color:ze?Be.text:Be.textDim,bold:ze},ze?"\u276F ":" ",Ve.label,oo?A.createElement(Z,{color:Be.primary||"cyan",italic:!0}," (active)"):""))}):A.createElement(Ue,{paddingX:1},A.createElement(Z,{color:"gray",italic:!0},'No models matching "',de,'"'))),A.createElement(Ue,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},A.createElement(Z,{color:"gray",italic:!0},"TAB to switch search/list \u2022 \u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),A.createElement(Z,{color:Me==="search"?Be.primary||"cyan":"gray",bold:!0},"[",Me.toUpperCase()," MODE]")))}if(Ee){let he=So[We],C=lt(he);return A.createElement(Ue,{flexDirection:"column",borderStyle:"round",borderColor:C.border,padding:1,width:"100%",minHeight:32},A.createElement(Ue,{marginBottom:1},A.createElement(Z,{color:C.text,bold:!0},"Choose your color scheme:")),A.createElement(Ue,{flexDirection:"row",width:"100%",flexGrow:1},A.createElement(Ue,{flexDirection:"column",width:"30%",paddingRight:1},So.map((P,ke)=>{let Ve=We===ke,ut=(t.theme||"Dark")===P,gt=P==="Forest Sprite"||P==="Spookfest";return A.createElement(Ue,{key:P,paddingX:0},A.createElement(Z,{color:Ve?C.text:C.textDim,bold:Ve},Ve?"> ":" ",P,gt&&A.createElement(Z,{color:Ve?C.success||"#52b788":"green",bold:!0}," \u2605"),ut?A.createElement(Z,{color:C.primary||"cyan",italic:!0}," (saved)"):""))})),A.createElement(Ue,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:C.borderMuted,paddingX:2,paddingY:1,backgroundColor:C.cardBg},A.createElement(Ue,{marginBottom:1},A.createElement(Z,{color:C.secondary||"cyan",bold:!0},"> ","you: "),A.createElement(Z,{color:C.text},"add a greeting function")),A.createElement(Ue,{marginBottom:1},A.createElement(Z,{color:C.success||"green"}," Here's the change:")),A.createElement(Ue,{flexDirection:"column",marginLeft:2,marginBottom:1},A.createElement(Z,null,A.createElement(Z,{color:C.textDim},"3 "),bt(' import "fmt"',".go",void 0)),A.createElement(Z,{color:C.textDim},"4"),A.createElement(Ue,{backgroundColor:C.diffRemovalBg},A.createElement(Z,null,A.createElement(Z,{color:C.diffRemovalNum||C.diffRemovalText},"5 "),A.createElement(Z,{color:C.diffRemovalPrefix||C.diffRemovalText},"- "),bt("func ",".go",void 0),bt("main()",".go",void 0,C.diffRemovalHighlightBg),bt(" {",".go",void 0))),A.createElement(Ue,{backgroundColor:C.diffAdditionBg},A.createElement(Z,null,A.createElement(Z,{color:C.diffAdditionNum||C.diffAdditionText},"5 "),A.createElement(Z,{color:C.diffAdditionPrefix||C.diffAdditionText},"+ "),bt("func ",".go",void 0),bt("greet(name string)",".go",void 0,C.diffAdditionHighlightBg),bt(" {",".go",void 0))),A.createElement(Ue,{backgroundColor:C.diffAdditionBg},A.createElement(Z,null,A.createElement(Z,{color:C.diffAdditionNum||C.diffAdditionText},"6 "),A.createElement(Z,{color:C.diffAdditionPrefix||C.diffAdditionText},"+ "),A.createElement(Z,null," "),bt('fmt.Printf("Hello, %s!\\n", name)',".go",void 0,C.diffAdditionHighlightBg))),A.createElement(Z,null,"7 }")),A.createElement(Ue,{flexDirection:"column",marginTop:1,marginBottom:1},A.createElement(Z,{color:C.textDim},"\u25BE Thought Process"),A.createElement(Z,{color:C.textMuted}," I need to add a greeting function. I'll use fmt.Printf.")),A.createElement(Ue,{flexDirection:"column"},A.createElement(Z,null,A.createElement(Z,{color:C.warning||"yellow"},"\u2699 tool: "),A.createElement(Z,{color:C.text},"write_file main.go")),A.createElement(Z,null,A.createElement(Z,{color:C.accent||"magenta"},"\u29BF task: "),A.createElement(Z,{color:C.text},"Implementing greeting")),A.createElement(Z,null,A.createElement(Z,{color:C.danger||"red"},"X error: "),A.createElement(Z,{color:C.text},"compilation failed")),A.createElement(Z,null,A.createElement(Z,{color:C.warning||"yellow"},"\u26A0 warning: "),A.createElement(Z,{color:C.text},"deprecation warning")),A.createElement(Z,null,A.createElement(Z,{color:C.info||"blue"},"\u2192 link: "),A.createElement(Z,{color:C.info||"blue",underline:!0},"file:///path/to/main.go")),A.createElement(Z,null,A.createElement(Z,{color:C.accent||"magenta"},"\u2605 accent: "),A.createElement(Z,{color:C.text},"highlighted text")),A.createElement(Z,{color:C.textDim},"\xB7 dim: press Enter to continue")))),A.createElement(Ue,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},A.createElement(Z,{color:"gray",italic:!0},"\u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),A.createElement(Z,{color:"gray"},"Previewing: ",So[We],So[We]==="Forest Sprite"?" \u2605":"")))}return A.createElement(Ue,{flexDirection:"column",borderStyle:"round",borderColor:Be.border,padding:0,width:"100%",minHeight:32},A.createElement(Ue,{paddingX:1,paddingY:0,marginBottom:0,borderStyle:"single",borderColor:Be.borderMuted,width:"100%"},A.createElement(Z,{color:Be.text,bold:!0},"SYSTEM CONFIGURATION")),A.createElement(Ue,{flexDirection:"row",width:"100%",minHeight:26},A.createElement(Ue,{flexDirection:"column",width:"30%",maxWidth:40,borderStyle:"round",borderColor:F==="categories"?Be.border:Be.borderMuted,padding:1,paddingY:0},A.createElement(Ue,{marginBottom:1},A.createElement(Z,{color:F==="categories"?Be.text:Be.textDim,bold:!0,underline:!0},"CATEGORIES")),Eo.map((he,C)=>{let P=L===C,ke=he.id==="exit";return A.createElement(Ue,{key:he.id,marginTop:ke?15:0,backgroundColor:P?F==="categories"?Be.highlightBg:Be.cardBg:void 0,paddingX:1},A.createElement(Z,{color:P&&F==="categories"?Be.text:Be.textDim,bold:P},P?"\u276F ":" ",he.label))})),A.createElement(Ue,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:F==="items"?Be.border:Be.borderMuted,paddingX:1,marginLeft:1,paddingY:0},A.createElement(Ue,{marginBottom:1},A.createElement(Z,{color:F==="items"?Be.text:Be.textDim,bold:!0,underline:!0},Eo[L].label.toUpperCase().includes("EXIT")?"Runtime Information":`${Eo[L].label} Settings`)),qe.length>0?(()=>{let he=null,C=[],P=Re=>(Re||"").split(",").map($t=>$t.trim().toLowerCase()).filter(Boolean),ke=P(t.autoApproveCommands),Ve=P(t.autoDisallowCommands),ut=P(t.alwaysAskCommands),gt=[...ke,...Ve,...ut],ze=new Set(gt),oo=gn==="security"&&gt.length!==ze.size;return qe.forEach((Re,$t)=>{let Ht=F==="items"&&K===$t,es=Re.label.length,on=Math.max(2,38-es),ts=".".repeat(on),Tt=Gt=>gn==="security"?(Gt.value==="autoExec"||Gt.value==="externalAccess")&&Gt.status==="ON"?Be.statusOn:Be.statusOff:Gt.status?.startsWith("\u2713")?Be.statusOn:Gt.status?.startsWith("\u26A0")?Be.statusOff:Gt.status==="ON"?Be.statusOn:Gt.status==="OFF"?Be.statusOff:Be.text;Re.section&&Re.section!==he&&(he=Re.section,C.push(A.createElement(Ue,{key:`sec-hdr-${Re.section}`,marginTop:C.length>0?1:0,marginBottom:0,paddingX:1},A.createElement(Z,{color:"gray",bold:!0,underline:!0},Re.section.toUpperCase()))));let Q=Ht&&ue&&(ue==="alwaysAskCommands"&&Re.value==="alwaysAsk"||ue==="alwaysAskFiles"&&Re.value==="alwaysAskFiles"||ue==="autoApproveCommands"&&Re.value==="autoApprove"||ue==="autoDisallowCommands"&&Re.value==="autoDisallow"||ue==="customOpenAIBaseUrl"&&Re.value==="customOpenAIBaseUrl"||ue==="customOpenAIKey"&&Re.value==="customOpenAIKey"),Wn=Re.value==="alwaysAsk"||Re.value==="alwaysAskFiles"||Re.value==="autoApprove"||Re.value==="autoDisallow",os=Re.value==="parserDownload";C.push(A.createElement(Ue,{key:Re.value,flexDirection:"column"},A.createElement(Ue,{backgroundColor:Ht&&!Q?Be.highlightBg:void 0,paddingX:2},A.createElement(Z,{color:Ht?Be.text:Be.textDim,bold:Ht},Ht?"\u276F ":" ",Re.label),!Wn&&!os&&A.createElement(A.Fragment,null,A.createElement(Z,{color:"gray"},ts),A.createElement(Z,{color:Tt(Re),bold:!0},Re.value==="aiProvider"?Re.status:`[ ${Re.status} ]`))),Wn&&!Q&&Re.status!=="None"&&A.createElement(Ue,{paddingX:4,marginBottom:1},A.createElement(Z,{color:"gray"},"\u21B3 ",Re.status)),Q&&A.createElement(Ue,{flexDirection:"column",marginLeft:4,marginBottom:1},A.createElement(Ue,{paddingX:1,borderStyle:"single",borderColor:"gray",flexDirection:"row"},A.createElement(Z,{color:"gray",bold:!0},"> "," "),A.createElement(Nd,{value:oe,onChange:xe,onSubmit:async Gt=>{if(ue==="customOpenAIBaseUrl"){let at=Gt.trim().replace(/\/+$/,""),no={...t,customOpenAIBaseUrl:at};f(no),p({systemSettings:no,apiTier:g,quotas:a})}else if(ue==="customOpenAIKey"){let{saveProviderAPIKey:at}=await import("./secrets-GHW6AWRR.js");await at("c_openai",Gt.trim()),dt(no=>({...no,c_openai:!!Gt.trim()}))}else{let at={...t,[ue]:Gt.trim(),sandboxPreset:"Custom"};f(at),p({systemSettings:at,apiTier:g,quotas:a})}z(null)}})),A.createElement(Z,{color:"gray",italic:!0}," ",ue==="customOpenAIBaseUrl"?"Enter Base URL (.../v1) \u2022 Press Enter to save, Esc to cancel \u2022 Restart Required":ue==="customOpenAIKey"?"Enter API Key \u2022 Press Enter to save, Esc to cancel \u2022 Restart Required":"Comma separated \u2022 Press Enter to save, Esc to cancel"))))}),oo&&C.push(A.createElement(Ue,{key:"conflict-warning",marginTop:1,paddingX:1},A.createElement(Z,{color:Be.text,italic:!0},"* Conflicting commands will be ignored and defaulted to highest priority"))),C})():A.createElement(Ue,{paddingX:1,flexDirection:"column",width:"100%"},gn==="exit"?A.createElement(A.Fragment,null,A.createElement(Ue,{flexDirection:"column",marginBottom:1},A.createElement(Ue,{flexDirection:"row"},A.createElement(Z,{color:Be.textDim},"OS"," "),A.createElement(Z,{color:"gray"},"..................... "),A.createElement(Z,{color:Be.text},process.env.OS||process.platform||"N/A")),A.createElement(Ue,{flexDirection:"row"},A.createElement(Z,{color:Be.textDim},"Computer Name"," "),A.createElement(Z,{color:"gray"},".......... "),A.createElement(Z,{color:Be.text},process.env.COMPUTERNAME||process.env.HOSTNAME||"N/A")),A.createElement(Ue,{flexDirection:"row"},A.createElement(Z,{color:Be.textDim},"Processor Count"," "),A.createElement(Z,{color:"gray"},"........ "),A.createElement(Z,{color:Be.text},process.env.NUMBER_OF_PROCESSORS||"N/A")),A.createElement(Ue,{flexDirection:"row"},A.createElement(Z,{color:Be.textDim},"Node.js Version"," "),A.createElement(Z,{color:"gray"},"........ "),A.createElement(Z,{color:Be.text},"v",process.versions.node)),A.createElement(Ue,{flexDirection:"row"},A.createElement(Z,{color:Be.textDim},"V8 Version"," "),A.createElement(Z,{color:"gray"},"...... ...... "),A.createElement(Z,{color:Be.text},"v",process.versions.v8)),A.createElement(Ue,{flexDirection:"row"},A.createElement(Z,{color:Be.textDim},"Data Directory"," "),A.createElement(Z,{color:"gray"},"......... "),go===Co?"":A.createElement(Z,{color:Be.text},go.replaceAll(vl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"),", "),A.createElement(Z,{color:Be.text},Co.replaceAll(vl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"))),A.createElement(Ue,{flexDirection:"row"},A.createElement(Z,{color:Be.textDim},"Viewport"," "),A.createElement(Z,{color:"gray"},"............... "),A.createElement(Z,{color:Be.text},process.stdout.rows||"?"," rows \xD7 ",process.stdout.columns||"?"," cols ",process.stdout.columns<90?"(too small width)":"")),A.createElement(Ue,{flexDirection:"row",marginBottom:0},A.createElement(Z,{color:Be.textDim},"Memory Load"," "),A.createElement(Z,{color:"gray"},"............ "),A.createElement(Z,{color:Be.text},ge,"/",v," ",st))),A.createElement(Ue,{key:"pty-notice",paddingX:0,marginTop:0},A.createElement(Z,{color:zt?Be.statusOn:Be.warning},zt?"\u2713 Advance Interactive Terminal Supported":"\u26A0 Interactive Terminal is Limited"))):A.createElement(Z,{color:"gray",italic:!0},Eo[L].desc)))),A.createElement(Ue,{paddingX:1,marginTop:0,flexDirection:"row",justifyContent:"space-between"},A.createElement(Z,{color:"gray",italic:!0},F==="categories"?"\u25B2\u25BC Select Category \u2022 Enter/\u25BA to configure":"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 \u25C4/ESC to go back"),F==="categories"&&A.createElement(Z,{color:"gray"},Eo[L].desc)))}import io,{useState as $s,useEffect as $d}from"react";import{Box as Un,Text as xr}from"ink";import Ud from"ink-text-input";function Us({initialData:t,onSave:f,onCancel:g,theme:S="Dark"}){let w=lt(S),[p,a]=$s(0),[T,b]=$s(""),[M,N]=$s(()=>({name:t?.name||"",nickname:t?.nickname||"",instructions:t?.instructions||""})),O=[{key:"nickname",label:"Enter a Nickname: ",maxLength:20},{key:"instructions",label:"System Instructions: ",maxLength:200}],E=O[p];$d(()=>{let L=O[p].key;b((M[L]||"").slice(0,O[p].maxLength))},[p,M]);let D=L=>{L.length>E.maxLength?b(L.slice(0,E.maxLength)):b(L)},F=L=>{if(L.trim().toLowerCase()==="/cancel"){g();return}let Y=E.key,K={...M,[Y]:L.trim().slice(0,E.maxLength)};N(K),b(""),p<O.length-1?a(p+1):f(K)},$=T.length>=E.maxLength;return io.createElement(Un,{borderStyle:"round",borderColor:w.borderMuted,padding:0,marginTop:1,flexShrink:0,flexDirection:"column",width:"100%"},io.createElement(Un,{paddingX:1,marginBottom:1},io.createElement(xr,{color:w.text,bold:!0},"USER PROFILE CONFIGURATION")),io.createElement(Un,{paddingX:1,flexDirection:"column"},io.createElement(Un,null,io.createElement(xr,{color:w.text,bold:!0},E.label),io.createElement(Ud,{value:T,onChange:D,onSubmit:F})),io.createElement(Un,{marginTop:1,justifyContent:"space-between"},io.createElement(xr,{color:w.textMuted,italic:!0},"Step ",p+1," of ",O.length),io.createElement(xr,{color:$?w.warning||"yellow":w.textMuted},"[",T.length,"/",E.maxLength,"]"))),io.createElement(Un,{paddingX:1,marginTop:1},io.createElement(xr,{color:w.textMuted,italic:!0},"(Enter to submit \u2022 Type /cancel to abort)")))}import It,{useState as _s}from"react";import{Box as lo,Text as Jo,useInput as _d}from"ink";import Hd from"ink-text-input";var Xd=({question:t,options:f,onResolve:g,theme:S="Dark"})=>{let w=lt(S),[p,a]=_s(!1),[T,b]=_s(""),[M,N]=_s(0),O=!1,E=[],D=Array.isArray(f)&&f.length>0,F=t==="Agent has been running for a long time. Do you want to continue execution?";try{F&&D?E=[...f]:E=[...D?f:[],D?{id:"CUSTOM",label:"Suggest something else...",description:"Provide a custom response"}:{id:"CUSTOM",label:"Your Answer",description:""}]}catch{O=!0}_d((L,Y)=>{if(!p&&((Y.leftArrow||Y.upArrow)&&N(K=>Math.max(0,K-1)),(Y.rightArrow||Y.downArrow)&&N(K=>Math.min(E.length-1,K+1)),Y.return)){let K=E[M];K?.id==="CUSTOM"?a(!0):g(O?"Selected Nothing":K.label)}});let $=ft(2);return p?It.createElement(lo,{flexDirection:"column",borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,backgroundColor:w.codeBg,width:"100%"},It.createElement(lo,{paddingX:1},It.createElement(Jo,{color:w.text,bold:!0},"SUGGEST SOMETHING")),It.createElement(lo,{marginTop:1,paddingX:1},It.createElement(Jo,{italic:!0,color:w.textMuted},"Replying to: ",t)),It.createElement(lo,{marginTop:1,paddingX:1,flexDirection:"row"},It.createElement(Hd,{value:T,onChange:b,onSubmit:()=>g(T)})),It.createElement(lo,{marginTop:1,paddingX:1,marginBottom:1},It.createElement(Jo,{color:w.textMuted,italic:!0},"(Press Enter to send)"))):It.createElement(lo,{flexDirection:"column",border:!0,borderStyle:"round",borderColor:w.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,marginY:1,marginRight:1,width:"100%"},It.createElement(lo,{paddingX:1,marginBottom:1},It.createElement(Jo,{color:"yellow",bold:!0},F?"TURN SAFETY SYSTEM: EXECUTION LIMIT":"AGENT REQUEST: ACTION REQUIRED")),It.createElement(lo,{paddingX:1,marginBottom:1},It.createElement(Jo,{color:w.text},t)),It.createElement(lo,{flexDirection:"column",width:"100%"},E.map((L,Y)=>{let K=Y===M;return It.createElement(lo,{key:L.id,flexDirection:"column",width:"100%",backgroundColor:K?w.highlightBg:void 0,paddingX:1,marginBottom:Y===E.length-1?0:1},It.createElement(Jo,{color:K?w.text:w.textMuted,bold:K},K?"\u276F ":" ",L.label),L.description&&It.createElement(lo,{marginLeft:4},It.createElement(Jo,{color:w.textMuted,italic:!0},L.description)))})),It.createElement(lo,{paddingX:1,marginTop:1,marginBottom:1},It.createElement(Jo,{color:w.textMuted,italic:!0},"(Use Arrows to navigate, Enter to confirm)")))},Il=Xd;import dc from"gradient-string";import _t,{useState as Hs,useEffect as Gd}from"react";import{Box as Bo,Text as Zo,useInput as Wd}from"ink";function Xs({onSelect:t,onDelete:f,onClose:g,theme:S="Dark"}){let w=lt(S),[p,a]=Hs({}),[T,b]=Hs([]),[M,N]=Hs(0);Gd(()=>{(async()=>{let L=await Qo();a(L),b(Object.keys(L).sort((Y,K)=>(L[K].updatedAt||0)-(L[Y].updatedAt||0)))})()},[]),Wd(($,L)=>{if(L.escape&&g(),L.upArrow&&N(Y=>Math.max(0,Y-1)),L.downArrow&&N(Y=>Math.min(T.length-1,Y+1)),L.return&&T[M]&&t(T[M]),$==="x"&&T[M]){let Y=T[M];f(Y).then(K=>{let ce=K||{};a(ce);let ue=Object.keys(ce).sort((z,oe)=>(ce[oe]?.updatedAt||0)-(ce[z]?.updatedAt||0));b(ue),N(z=>Math.max(0,Math.min(ue.length-1,z)))})}});let O=ft(2),E=15,D=0;if(T.length>E){let $=Math.floor(E/2);D=M-$,D<0?D=0:D+E>T.length&&(D=T.length-E)}let F=T.slice(D,D+E);return _t.createElement(Bo,{flexDirection:"column",borderStyle:"round",borderColor:w.borderMuted,padding:0,width:"100%"},_t.createElement(Bo,{paddingX:1,marginBottom:1},_t.createElement(Zo,{color:w.text,bold:!0},"CHAT HISTORY: RESUME CONVERSATION")),T.length===0?_t.createElement(Bo,{paddingX:2,paddingY:1},_t.createElement(Zo,{italic:!0,color:w.textMuted},"No saved chats found.")):_t.createElement(Bo,{flexDirection:"column",width:"100%"},D>0&&_t.createElement(Bo,{paddingX:2,marginBottom:1},_t.createElement(Zo,{color:w.textMuted},"\u25B2 (+",D," more chats above)")),F.map(($,L)=>{let Y=p[$],ce=D+L===M,ue=Vd(Y?.updatedAt);return _t.createElement(Bo,{key:$,paddingX:1,backgroundColor:ce?w.highlightBg:void 0,width:"100%"},_t.createElement(Bo,{flexGrow:1},_t.createElement(Zo,{color:ce?w.text:w.textMuted,bold:ce},ce?"\u276F ":" ",(()=>{let z=oe=>(oe||"").replace(/\[\/?(?:STEERING HINT|QUESTION)(?::\s*\w+)?\]/gi,"").trim();return Y?.name&&!Y.name.startsWith("Session")?z(Y.name):Y?.prompt?z(Y.prompt):z(Y?.name)||$})(),_t.createElement(Zo,{color:w.textMuted}," [",ue," \u2022 ",$,"]"))),ce&&_t.createElement(Bo,{flexShrink:0},_t.createElement(Zo,{color:w.danger,bold:!0},"[X] DELETE ")))}),D+E<T.length&&_t.createElement(Bo,{paddingX:2,marginTop:1},_t.createElement(Zo,{color:w.textMuted},"\u25BC (+",T.length-(D+E)," more chats below)"))),_t.createElement(Bo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:w.borderMuted},_t.createElement(Zo,{color:w.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 Enter select \u2022 x delete \u2022 Esc close")))}function Vd(t){if(!t)return"N/A";let f=new Date(t);if(isNaN(f.getTime()))return"N/A";let g=T=>String(T).padStart(2,"0"),S=g(f.getMonth()+1),w=g(f.getDate()),p=g(f.getHours()),a=g(f.getMinutes());return`${S}-${w} ${p}:${a}`}import kt,{useState as Gs,useEffect as Yd}from"react";import{Box as vo,Text as bo,useInput as jd,useStdout as Kd}from"ink";function Ws({onClose:t,theme:f="Dark"}){let g=lt(f),{stdout:S}=Kd(),w=S?.columns||80,[p,a]=Gs([]),[T,b]=Gs(0),[M,N]=Gs(!0),O=()=>{let z=Dr(tr,[]);a(z);try{let xe=Ir(cn,{}).systemSettings?.memory!==!1;N(xe)}catch{N(!0)}};Yd(()=>{O()},[]),jd((z,oe)=>{if(oe.escape&&t(),oe.upArrow&&b(xe=>Math.max(0,xe-1)),oe.downArrow&&b(xe=>Math.min(p.length-1,xe+1)),z==="x"&&p.length>0){let xe=p[T].id,Ee=p.filter(_e=>_e.id!==xe);Pi(tr,Ee),a(Ee),T>=Ee.length&&Ee.length>0&&b(Ee.length-1)}});let E=(z,oe,xe)=>{if(!z)return"";let Ee=z.replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim(),We=`${xe?"\u276F ":" "}${oe+1}. `.length,pe=xe?22:2;return Ee.split(`
44
+ ---`)&&ke.push({label:$t,value:$t,isHeader:!1,provider:gt})}))}return ke},[b,g,a,ot]),le=A.useMemo(()=>{if(!de.trim())return Ie;let he=de.trim().toLowerCase(),C=[],P=null;for(let ke of Ie)ke.isHeader?P=ke:(ke.label.toLowerCase().includes(he)||ke.value&&ke.value.toLowerCase().includes(he))&&(P&&!C.includes(P)&&C.push(P),C.push(ke));return C},[Ie,de]);mr(()=>{if(ae){let he=le.findIndex(C=>!C.isHeader);j(he>=0?he:0),ee(0)}},[de]),mr(()=>{if(ae){if(le.length===0){j(0),ee(0);return}if(He>=le.length||le[He]?.isHeader){let he=le.findIndex(C=>!C.isHeader);j(he>=0?he:0)}}},[le,ae]);let[ge,Oe]=Ut(0),[v,Ne]=Ut(0),[st,Lt]=Ut("MB"),[zt,Rr]=Ut(!1);mr(()=>{let he=!1;return import("./exec_command-A5JWE55Q.js").then(C=>{he||Rr(!!C.isPtyAvailable)}).catch(()=>{}),()=>{he=!0}},[]),mr(()=>{let he=Fd.getHeapStatistics().heap_size_limit,C=he>=1024*1024*1024,P=C?"GB":"MB",ke=C?1024*1024*1024:1024*1024;Ne(parseFloat((he/ke).toFixed(2))),Lt(P);let Ve=()=>{let oo=process.memoryUsage().rss/ke,Re=C?parseFloat(oo.toFixed(2)):Math.round(oo);Oe(Re)};Ve();let ut=setInterval(()=>{Ve()},3e4);return()=>clearInterval(ut)},[]);let tn=he=>{switch(he){case"providers":{let P=[{label:"Current Provider",value:"aiProvider",status:b==="c_openai"?"Custom (OpenAI)":b}];return b==="Ollama"&&P.push({label:"Endpoint",value:"ollamaEndpoint",status:t.ollamaEndpoint||"Cloud"}),(b==="c_openai"||b==="Custom (OpenAI)")&&(P.push({label:"Base URL",value:"customOpenAIBaseUrl",status:t.customOpenAIBaseUrl||"Not Configured"}),P.push({label:"API Key (if needed)",value:"customOpenAIKey",status:ot.c_openai?"Set":"None"})),P}case"appearance":return[{label:"Theme",value:"theme",status:t.theme||"Dark"},{label:"Loading Phrases",value:"loadingPhrases",status:t.loadingPhrases!==!1?"ON":"OFF"},{label:"Progressive Rendering [EXPERIMENTAL]",value:"progressiveRendering",status:t.progressiveRendering?"ON":"OFF"},{label:"Show TPM Estimate",value:"showTPMEstimate",status:t.showTPMEstimate?"ON":"OFF"},{label:"Verbose Thinking",value:"preserveThinking",status:t.preserveThinking!==!1?"ON":"OFF"}];case"memory":return[{label:"Toggle Memory [Legacy]",value:"memory",status:t.memory?"ON":"OFF"}];case"security":return[{label:"Sandbox Preset",value:"sandboxPreset",status:Dl(t),section:"Sandbox"},{label:"YOLO Mode",value:"autoExec",status:t.autoExec?"ON":"OFF",section:"Sandbox"},{label:"External Workspace Access",value:"externalAccess",status:t.allowExternalAccess?"ON":"OFF",section:"Sandbox"},{label:"Network Access (Terminal)",value:"networkAccess",status:t.networkAccess!==!1?"ON":"OFF",section:"Sandbox"},{label:"Always Ask Commands",value:"alwaysAsk",status:Yr(t.alwaysAskCommands),section:"Sandbox"},{label:"Always Ask Files/Paths",value:"alwaysAskFiles",status:Yr(t.alwaysAskFiles||".env, .env.*, *.env"),section:"Sandbox"},{label:"Auto Approve Commands",value:"autoApprove",status:Yr(t.autoApproveCommands),section:"Sandbox"},{label:"Auto Disapprove Commands",value:"autoDisallow",status:Yr(t.autoDisallowCommands),section:"Sandbox"},{label:"Auto Approve Git Commits",value:"autoApproveGit",status:t.autoApproveGit?"ON":"OFF",section:"Sandbox"},{label:"Advanced Recovery [EXPERIMENTAL]",value:"advanceRollback",status:t.advanceRollback?"ON":"OFF",section:"Other"},{label:"Auto-Delete History",value:"autoDelete",status:t.autoDeleteHistory||"30d",section:"Other"},{label:"Save AppData Externally",value:"externalData",status:t.useExternalData?"ON":"OFF",section:"Other"}];case"updater":return[{label:"Auto-Update",value:"autoUpdate",status:t.autoUpdate?"ON":"OFF"},{label:"Preferred Package Manager",value:"updateManager",status:(t.updateManager||"npm")==="custom"?"Custom":(t.updateManager||"npm").toUpperCase()}];case"other":return[{label:"Sub-Agents",value:"subAgents",status:t.subAgents!==!1?"ON":"OFF"},{label:"Sub-Agent Model",value:"subAgentModel",status:t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default"},{label:"Directory Tree Design",value:"indentationTree",status:t.indentationTree!==!1?"Modern":"Legacy"},{label:"Compact Large Tool Results",value:"compressToolResults",status:t.compressToolResults?"ON":"OFF"},{label:"Auto Truncate Results",value:"autoTruncateResults",status:t.autoTruncateResults?"ON":"OFF"},{label:"Image History for CU",value:"imageHistoryCU",status:t.imageHistoryCU||"Standard"},{label:"Context Length",value:"contextLength",status:t.contextLength||"256k"},{label:"Keep Reasoning Context",value:"keepReasoningContext",status:t.keepReasoningContext?"ON":"OFF"},{label:"Auto Exclude Metadata",value:"autoExcludeMetadata",status:t.autoExcludeMetadata?"ON":"OFF"},{label:"Disable Todo",value:"disableTodo",status:t.disableTodo?"ON":"OFF"}];default:return[]}},gn=Eo[L].id,qe=tn(gn);Pd((he,C)=>{if(ae){if(C.tab){Le(P=>P==="search"?"list":"search");return}if(Me==="search"){C.escape?Ke(!1):C.downArrow||C.return?Le("list"):C.backspace||C.delete?Se(P=>P.slice(0,-1)):he&&!C.ctrl&&!C.meta&&he.length===1&&Se(P=>P+he);return}if(C.upArrow)j(P=>{if(le.length===0)return 0;let ke=(P-1+le.length)%le.length,Ve=0;for(;le[ke]?.isHeader&&Ve<le.length;)ke=(ke-1+le.length)%le.length,Ve++;return ke});else if(C.downArrow)j(P=>{if(le.length===0)return 0;let ke=(P+1)%le.length,Ve=0;for(;le[ke]?.isHeader&&Ve<le.length;)ke=(ke+1)%le.length,Ve++;return ke});else if(C.return){let P=le[He];P&&!P.isHeader&&(f(ke=>{let Ve=P.value==="Default",ut={...ke,CustomSubAgent:!Ve,SubAgentModel:P.value,SubAgentProvider:Ve?"":P.provider||""};return p({systemSettings:ut,apiTier:g,quotas:a}),ut}),Ke(!1))}else C.escape?Ke(!1):he&&!C.ctrl&&!C.meta&&he.length===1&&(Se(P=>P+he),Le("search"));return}if(Ee){if(C.upArrow){let P=(We-1+So.length)%So.length;pe(P)}else if(C.downArrow){let P=(We+1)%So.length;pe(P)}else if(C.return){let P=So[We];f(ke=>{let Ve={...ke,theme:P};return p({systemSettings:Ve,apiTier:g,quotas:a}),Ve}),N?N():_e(!1)}else C.escape&&(N?N():_e(!1));return}if(ue){C.escape&&z(null);return}if(F==="categories")C.upArrow?Y(P=>(P-1+Eo.length)%Eo.length):C.downArrow?Y(P=>(P+1)%Eo.length):C.return||C.rightArrow?Eo[L].id==="exit"?S("chat"):($("items"),ce(0)):C.escape&&S("chat");else if(F==="items"){if(C.upArrow)ce(P=>(P-1+qe.length)%qe.length);else if(C.downArrow)ce(P=>(P+1)%qe.length);else if(C.leftArrow||C.escape)$("categories");else if(C.return){let P=qe[K];Kt(P)}}});let Kt=he=>{if(he.value==="memory")f(C=>({...C,memory:!C.memory}));else if(he.value==="sandboxPreset"){let C=Dl(t),P=["Autonomous","Balanced","Strict"],Ve=(P.indexOf(C)+1)%P.length,ut=P[Ve];f(gt=>{let ze={...gt,sandboxPreset:ut};return ut==="Strict"?(ze.autoExec=!1,ze.allowExternalAccess=!1,ze.networkAccess=!1,ze.autoApproveCommands="",ze.autoDisallowCommands="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c",ze.alwaysAskCommands="killall, pkill, taskkill, shutdown, reboot, init 0, init 6, Stop-Process, Stop-Service, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, netsh advfirewall, iptables -F, ufw disable, git reset --hard, git clean -fd, npm r, npm uninstall",ze.autoApproveGit=!1):ut==="Balanced"?(ze.autoExec=!0,ze.allowExternalAccess=!1,ze.networkAccess=!0,ze.autoApproveCommands="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time",ze.autoDisallowCommands="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c",ze.alwaysAskCommands="killall, pkill, taskkill, Stop-Process, mv /*, move c:\\*, chmod 000, chmod -R 777, chown, icacls, shutdown, reboot, init 0, init 6, git reset --hard, git clean -fd, npm r, npm uninstall",ze.autoApproveGit=!1):ut==="Autonomous"&&(ze.autoExec=!0,ze.allowExternalAccess=!0,ze.networkAccess=!0,ze.autoApproveCommands="ls, dir, cat, type, echo, pwd, cd, git status, git log, git diff, git branch, git show, help, mkdir, touch, md, whoami, hostname, ps, Get-Process, date, time",ze.autoDisallowCommands="",ze.alwaysAskCommands="rm -rf, rm -f, del /f, del /q, rd /s, rmdir /s, format, mkfs, dd if=/dev, shred, srm, Remove-Item -Recurse -Force, Initialize-Disk, Clear-Disk, format c:, flashrom, nvram -c",ze.autoApproveGit=!0),ze})}else if(he.value==="autoExec")t.autoExec?f(C=>({...C,autoExec:!1,sandboxPreset:"Custom"})):t.allowExternalAccess?S("doubleDanger"):S("autoExecDanger");else if(he.value==="externalAccess")t.allowExternalAccess?f(C=>({...C,allowExternalAccess:!1,sandboxPreset:"Custom"})):t.autoExec?S("doubleDanger"):S("externalDanger");else if(he.value==="networkAccess")f(C=>({...C,networkAccess:C.networkAccess===!1,sandboxPreset:"Custom"}));else if(he.value==="alwaysAsk")z("alwaysAskCommands"),xe(t.alwaysAskCommands||"");else if(he.value==="alwaysAskFiles")z("alwaysAskFiles"),xe(t.alwaysAskFiles||".env, .env.*, *.env");else if(he.value==="autoApprove")z("autoApproveCommands"),xe(t.autoApproveCommands||"");else if(he.value==="autoApproveGit")f(C=>({...C,autoApproveGit:!C.autoApproveGit,sandboxPreset:"Custom"}));else if(he.value==="customOpenAIBaseUrl")z("customOpenAIBaseUrl"),xe(t.customOpenAIBaseUrl||"");else if(he.value==="customOpenAIKey")z("customOpenAIKey"),xe("");else if(he.value==="ollamaEndpoint")f(C=>{let P=C.ollamaEndpoint==="Local"?"Cloud":"Local",ke={...C,ollamaEndpoint:P};return p({systemSettings:ke,apiTier:g,quotas:a}),ke});else if(he.value==="apiTier")S("apiTier");else if(he.value==="aiProvider")O&&O("settings"),S("selectProvider");else if(he.value==="advanceRollback")t.advanceRollback?f(C=>{let P={...C,advanceRollback:!1};return p({systemSettings:P,apiTier:g,quotas:a}),P}):S("advanceRollbackDanger");else if(he.value==="autoDelete"){let C=["1d","7d","30d"],ke=(C.indexOf(t.autoDeleteHistory||"30d")+1)%C.length;f(Ve=>({...Ve,autoDeleteHistory:C[ke]}))}else if(he.value==="autoUpdate")f(C=>({...C,autoUpdate:!C.autoUpdate}));else if(he.value==="externalData")if(!t.useExternalData)w({label:"Enter absolute path for External AppData:",note:"All history, logs and secrets will be stored here. ~/.fluxflow/settings.json stays as anchor.",key:"externalDataPath",value:t.externalDataPath||""}),S("input");else{let C={...t,useExternalData:!1};f(C),p({systemSettings:C,apiTier:g,quotas:a}),T(P=>[...P,{id:Date.now(),role:"system",text:"[STORAGE RESET] Flux Flow will return to default ~/.fluxflow after restart."}]),S("chat")}else if(he.value==="updateManager")S("updateManager");else if(he.value==="parserDownload")S("parserDownload");else if(he.value==="indentationTree")f(C=>{let P={...C,indentationTree:C.indentationTree===!1};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="compressToolResults")f(C=>{let P={...C,compressToolResults:!C.compressToolResults};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="autoTruncateResults")f(C=>{let P={...C,autoTruncateResults:!C.autoTruncateResults};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="imageHistoryCU"){let C=["Low","Standard","Extended","Max"],ke=(C.indexOf(t.imageHistoryCU||"Standard")+1)%C.length;f(Ve=>{let ut={...Ve,imageHistoryCU:C[ke]};return p({systemSettings:ut,apiTier:g,quotas:a}),ut})}else if(he.value==="contextLength"){let C=["16k","32k","64k","128k","256k","512k","1M"],ke=(C.indexOf(t.contextLength||"256k")+1)%C.length;f(Ve=>{let ut={...Ve,contextLength:C[ke]};return p({systemSettings:ut,apiTier:g,quotas:a}),ut})}else if(he.value==="keepReasoningContext")f(C=>{let P={...C,keepReasoningContext:!C.keepReasoningContext};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="autoExcludeMetadata")f(C=>{let P={...C,autoExcludeMetadata:!C.autoExcludeMetadata};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="disableTodo")f(C=>{let P={...C,disableTodo:!C.disableTodo};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="subAgents")f(C=>{let P={...C,subAgents:C.subAgents===!1};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="subAgentModel"){let C=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",P=le.findIndex(ke=>ke.value===C);j(P>=0?P:0),Ke(!0)}else if(he.value==="preserveThinking")f(C=>{let P={...C,preserveThinking:C.preserveThinking===!1};return Tl(P.preserveThinking),p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="loadingPhrases")f(C=>{let P={...C,loadingPhrases:C.loadingPhrases===!1};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="progressiveRendering")f(C=>{let P={...C,progressiveRendering:!C.progressiveRendering};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="showTPMEstimate")f(C=>{let P={...C,showTPMEstimate:!C.showTPMEstimate};return p({systemSettings:P,apiTier:g,quotas:a}),P});else if(he.value==="theme"){let C=t.theme==="Chaos"||t.theme==="Mystery"?"Mystery":t.theme||"Dark",P=So.indexOf(C);pe(P>=0?P:0),ye(t.theme||"Dark"),_e(!0)}},Be=lt(t.theme);if(ae){let he=t.CustomSubAgent&&t.SubAgentModel?t.SubAgentModel:"Default",C=15,P=ne;He<P?P=He:He>=P+C&&(P=He-C+1),P=Math.max(0,Math.min(P,Math.max(0,le.length-C))),P!==ne&&ee(P);let ke=le.slice(P,P+C);return A.createElement(Ue,{flexDirection:"column",borderStyle:"round",borderColor:Be.border,padding:1,width:"100%",minHeight:32},A.createElement(Ue,{marginBottom:1,flexDirection:"row",justifyContent:"space-between"},A.createElement(Z,{color:Be.text,bold:!0,underline:!0},"Select Sub-Agent Model:"),le.length>0&&A.createElement(Z,{color:"gray"},He+1,"/",le.length)),A.createElement(Ue,{borderStyle:"single",borderColor:Me==="search"?Be.primary||"cyan":"gray",paddingX:1,marginBottom:1},A.createElement(Z,{color:Me==="search"?Be.primary||"cyan":"gray",bold:!0},"\u{1F50D} Search: "," "),A.createElement(Z,{color:Be.text},de),Me==="search"&&A.createElement(Z,{color:Be.primary||"cyan"},"\u2588"),!de&&Me!=="search"&&A.createElement(Z,{color:"gray",italic:!0},"(Press TAB or type to filter models...)")),A.createElement(Ue,{flexDirection:"column",flexGrow:1,height:C},ke.length>0?ke.map((Ve,ut)=>{let gt=P+ut;if(Ve.isHeader)return A.createElement(Ue,{key:`hdr-${gt}`,paddingX:1},A.createElement(Z,{color:"gray",bold:!0,underline:!0},Ve.label));let ze=He===gt&&Me==="list",oo=he===Ve.value;return A.createElement(Ue,{key:`item-${Ve.value}-${gt}`,paddingX:1,backgroundColor:ze?Be.highlightBg:void 0},A.createElement(Z,{color:ze?Be.text:Be.textDim,bold:ze},ze?"\u276F ":" ",Ve.label,oo?A.createElement(Z,{color:Be.primary||"cyan",italic:!0}," (active)"):""))}):A.createElement(Ue,{paddingX:1},A.createElement(Z,{color:"gray",italic:!0},'No models matching "',de,'"'))),A.createElement(Ue,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},A.createElement(Z,{color:"gray",italic:!0},"TAB to switch search/list \u2022 \u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),A.createElement(Z,{color:Me==="search"?Be.primary||"cyan":"gray",bold:!0},"[",Me.toUpperCase()," MODE]")))}if(Ee){let he=So[We],C=lt(he);return A.createElement(Ue,{flexDirection:"column",borderStyle:"round",borderColor:C.border,padding:1,width:"100%",minHeight:32},A.createElement(Ue,{marginBottom:1},A.createElement(Z,{color:C.text,bold:!0},"Choose your color scheme:")),A.createElement(Ue,{flexDirection:"row",width:"100%",flexGrow:1},A.createElement(Ue,{flexDirection:"column",width:"30%",paddingRight:1},So.map((P,ke)=>{let Ve=We===ke,ut=(t.theme||"Dark")===P,gt=P==="Forest Sprite"||P==="Spookfest";return A.createElement(Ue,{key:P,paddingX:0},A.createElement(Z,{color:Ve?C.text:C.textDim,bold:Ve},Ve?"> ":" ",P,gt&&A.createElement(Z,{color:Ve?C.success||"#52b788":"green",bold:!0}," \u2605"),ut?A.createElement(Z,{color:C.primary||"cyan",italic:!0}," (saved)"):""))})),A.createElement(Ue,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:C.borderMuted,paddingX:2,paddingY:1,backgroundColor:C.cardBg},A.createElement(Ue,{marginBottom:1},A.createElement(Z,{color:C.secondary||"cyan",bold:!0},"> ","you: "),A.createElement(Z,{color:C.text},"add a greeting function")),A.createElement(Ue,{marginBottom:1},A.createElement(Z,{color:C.success||"green"}," Here's the change:")),A.createElement(Ue,{flexDirection:"column",marginLeft:2,marginBottom:1},A.createElement(Z,null,A.createElement(Z,{color:C.textDim},"3 "),bt(' import "fmt"',".go",void 0)),A.createElement(Z,{color:C.textDim},"4"),A.createElement(Ue,{backgroundColor:C.diffRemovalBg},A.createElement(Z,null,A.createElement(Z,{color:C.diffRemovalNum||C.diffRemovalText},"5 "),A.createElement(Z,{color:C.diffRemovalPrefix||C.diffRemovalText},"- "),bt("func ",".go",void 0),bt("main()",".go",void 0,C.diffRemovalHighlightBg),bt(" {",".go",void 0))),A.createElement(Ue,{backgroundColor:C.diffAdditionBg},A.createElement(Z,null,A.createElement(Z,{color:C.diffAdditionNum||C.diffAdditionText},"5 "),A.createElement(Z,{color:C.diffAdditionPrefix||C.diffAdditionText},"+ "),bt("func ",".go",void 0),bt("greet(name string)",".go",void 0,C.diffAdditionHighlightBg),bt(" {",".go",void 0))),A.createElement(Ue,{backgroundColor:C.diffAdditionBg},A.createElement(Z,null,A.createElement(Z,{color:C.diffAdditionNum||C.diffAdditionText},"6 "),A.createElement(Z,{color:C.diffAdditionPrefix||C.diffAdditionText},"+ "),A.createElement(Z,null," "),bt('fmt.Printf("Hello, %s!\\n", name)',".go",void 0,C.diffAdditionHighlightBg))),A.createElement(Z,null,"7 }")),A.createElement(Ue,{flexDirection:"column",marginTop:1,marginBottom:1},A.createElement(Z,{color:C.textDim},"\u25BE Thought Process"),A.createElement(Z,{color:C.textMuted}," I need to add a greeting function. I'll use fmt.Printf.")),A.createElement(Ue,{flexDirection:"column"},A.createElement(Z,null,A.createElement(Z,{color:C.warning||"yellow"},"\u2699 tool: "),A.createElement(Z,{color:C.text},"write_file main.go")),A.createElement(Z,null,A.createElement(Z,{color:C.accent||"magenta"},"\u29BF task: "),A.createElement(Z,{color:C.text},"Implementing greeting")),A.createElement(Z,null,A.createElement(Z,{color:C.danger||"red"},"X error: "),A.createElement(Z,{color:C.text},"compilation failed")),A.createElement(Z,null,A.createElement(Z,{color:C.warning||"yellow"},"\u26A0 warning: "),A.createElement(Z,{color:C.text},"deprecation warning")),A.createElement(Z,null,A.createElement(Z,{color:C.info||"blue"},"\u2192 link: "),A.createElement(Z,{color:C.info||"blue",underline:!0},"file:///path/to/main.go")),A.createElement(Z,null,A.createElement(Z,{color:C.accent||"magenta"},"\u2605 accent: "),A.createElement(Z,{color:C.text},"highlighted text")),A.createElement(Z,{color:C.textDim},"\xB7 dim: press Enter to continue")))),A.createElement(Ue,{paddingX:1,marginTop:1,flexDirection:"row",justifyContent:"space-between"},A.createElement(Z,{color:"gray",italic:!0},"\u25B2\u25BC Navigate \u2022 ENTER to Select \u2022 ESC to Cancel"),A.createElement(Z,{color:"gray"},"Previewing: ",So[We],So[We]==="Forest Sprite"?" \u2605":"")))}return A.createElement(Ue,{flexDirection:"column",borderStyle:"round",borderColor:Be.border,padding:0,width:"100%",minHeight:32},A.createElement(Ue,{paddingX:1,paddingY:0,marginBottom:0,borderStyle:"single",borderColor:Be.borderMuted,width:"100%"},A.createElement(Z,{color:Be.text,bold:!0},"SYSTEM CONFIGURATION")),A.createElement(Ue,{flexDirection:"row",width:"100%",minHeight:26},A.createElement(Ue,{flexDirection:"column",width:"30%",maxWidth:40,borderStyle:"round",borderColor:F==="categories"?Be.border:Be.borderMuted,padding:1,paddingY:0},A.createElement(Ue,{marginBottom:1},A.createElement(Z,{color:F==="categories"?Be.text:Be.textDim,bold:!0,underline:!0},"CATEGORIES")),Eo.map((he,C)=>{let P=L===C,ke=he.id==="exit";return A.createElement(Ue,{key:he.id,marginTop:ke?15:0,backgroundColor:P?F==="categories"?Be.highlightBg:Be.cardBg:void 0,paddingX:1},A.createElement(Z,{color:P&&F==="categories"?Be.text:Be.textDim,bold:P},P?"\u276F ":" ",he.label))})),A.createElement(Ue,{flexDirection:"column",flexGrow:1,borderStyle:"round",borderColor:F==="items"?Be.border:Be.borderMuted,paddingX:1,marginLeft:1,paddingY:0},A.createElement(Ue,{marginBottom:1},A.createElement(Z,{color:F==="items"?Be.text:Be.textDim,bold:!0,underline:!0},Eo[L].label.toUpperCase().includes("EXIT")?"Runtime Information":`${Eo[L].label} Settings`)),qe.length>0?(()=>{let he=null,C=[],P=Re=>(Re||"").split(",").map($t=>$t.trim().toLowerCase()).filter(Boolean),ke=P(t.autoApproveCommands),Ve=P(t.autoDisallowCommands),ut=P(t.alwaysAskCommands),gt=[...ke,...Ve,...ut],ze=new Set(gt),oo=gn==="security"&&gt.length!==ze.size;return qe.forEach((Re,$t)=>{let Ht=F==="items"&&K===$t,es=Re.label.length,on=Math.max(2,38-es),ts=".".repeat(on),Tt=Gt=>gn==="security"?(Gt.value==="autoExec"||Gt.value==="externalAccess")&&Gt.status==="ON"?Be.statusOn:Be.statusOff:Gt.status?.startsWith("\u2713")?Be.statusOn:Gt.status?.startsWith("\u26A0")?Be.statusOff:Gt.status==="ON"?Be.statusOn:Gt.status==="OFF"?Be.statusOff:Be.text;Re.section&&Re.section!==he&&(he=Re.section,C.push(A.createElement(Ue,{key:`sec-hdr-${Re.section}`,marginTop:C.length>0?1:0,marginBottom:0,paddingX:1},A.createElement(Z,{color:"gray",bold:!0,underline:!0},Re.section.toUpperCase()))));let Q=Ht&&ue&&(ue==="alwaysAskCommands"&&Re.value==="alwaysAsk"||ue==="alwaysAskFiles"&&Re.value==="alwaysAskFiles"||ue==="autoApproveCommands"&&Re.value==="autoApprove"||ue==="autoDisallowCommands"&&Re.value==="autoDisallow"||ue==="customOpenAIBaseUrl"&&Re.value==="customOpenAIBaseUrl"||ue==="customOpenAIKey"&&Re.value==="customOpenAIKey"),Wn=Re.value==="alwaysAsk"||Re.value==="alwaysAskFiles"||Re.value==="autoApprove"||Re.value==="autoDisallow",os=Re.value==="parserDownload";C.push(A.createElement(Ue,{key:Re.value,flexDirection:"column"},A.createElement(Ue,{backgroundColor:Ht&&!Q?Be.highlightBg:void 0,paddingX:2},A.createElement(Z,{color:Ht?Be.text:Be.textDim,bold:Ht},Ht?"\u276F ":" ",Re.label),!Wn&&!os&&A.createElement(A.Fragment,null,A.createElement(Z,{color:"gray"},ts),A.createElement(Z,{color:Tt(Re),bold:!0},Re.value==="aiProvider"?Re.status:`[ ${Re.status} ]`))),Wn&&!Q&&Re.status!=="None"&&A.createElement(Ue,{paddingX:4,marginBottom:1},A.createElement(Z,{color:"gray"},"\u21B3 ",Re.status)),Q&&A.createElement(Ue,{flexDirection:"column",marginLeft:4,marginBottom:1},A.createElement(Ue,{paddingX:1,borderStyle:"single",borderColor:"gray",flexDirection:"row"},A.createElement(Z,{color:"gray",bold:!0},"> "," "),A.createElement(Nd,{value:oe,onChange:xe,onSubmit:async Gt=>{if(ue==="customOpenAIBaseUrl"){let at=Gt.trim().replace(/\/+$/,""),no={...t,customOpenAIBaseUrl:at};f(no),p({systemSettings:no,apiTier:g,quotas:a})}else if(ue==="customOpenAIKey"){let{saveProviderAPIKey:at}=await import("./secrets-5TCTEPEV.js");await at("c_openai",Gt.trim()),dt(no=>({...no,c_openai:!!Gt.trim()}))}else{let at={...t,[ue]:Gt.trim(),sandboxPreset:"Custom"};f(at),p({systemSettings:at,apiTier:g,quotas:a})}z(null)}})),A.createElement(Z,{color:"gray",italic:!0}," ",ue==="customOpenAIBaseUrl"?"Enter Base URL (.../v1) \u2022 Press Enter to save, Esc to cancel \u2022 Restart Required":ue==="customOpenAIKey"?"Enter API Key \u2022 Press Enter to save, Esc to cancel \u2022 Restart Required":"Comma separated \u2022 Press Enter to save, Esc to cancel"))))}),oo&&C.push(A.createElement(Ue,{key:"conflict-warning",marginTop:1,paddingX:1},A.createElement(Z,{color:Be.text,italic:!0},"* Conflicting commands will be ignored and defaulted to highest priority"))),C})():A.createElement(Ue,{paddingX:1,flexDirection:"column",width:"100%"},gn==="exit"?A.createElement(A.Fragment,null,A.createElement(Ue,{flexDirection:"column",marginBottom:1},A.createElement(Ue,{flexDirection:"row"},A.createElement(Z,{color:Be.textDim},"OS"," "),A.createElement(Z,{color:"gray"},"..................... "),A.createElement(Z,{color:Be.text},process.env.OS||process.platform||"N/A")),A.createElement(Ue,{flexDirection:"row"},A.createElement(Z,{color:Be.textDim},"Computer Name"," "),A.createElement(Z,{color:"gray"},".......... "),A.createElement(Z,{color:Be.text},process.env.COMPUTERNAME||process.env.HOSTNAME||"N/A")),A.createElement(Ue,{flexDirection:"row"},A.createElement(Z,{color:Be.textDim},"Processor Count"," "),A.createElement(Z,{color:"gray"},"........ "),A.createElement(Z,{color:Be.text},process.env.NUMBER_OF_PROCESSORS||"N/A")),A.createElement(Ue,{flexDirection:"row"},A.createElement(Z,{color:Be.textDim},"Node.js Version"," "),A.createElement(Z,{color:"gray"},"........ "),A.createElement(Z,{color:Be.text},"v",process.versions.node)),A.createElement(Ue,{flexDirection:"row"},A.createElement(Z,{color:Be.textDim},"V8 Version"," "),A.createElement(Z,{color:"gray"},"...... ...... "),A.createElement(Z,{color:Be.text},"v",process.versions.v8)),A.createElement(Ue,{flexDirection:"row"},A.createElement(Z,{color:Be.textDim},"Data Directory"," "),A.createElement(Z,{color:"gray"},"......... "),go===Co?"":A.createElement(Z,{color:Be.text},go.replaceAll(vl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"),", "),A.createElement(Z,{color:Be.text},Co.replaceAll(vl.homedir(),"~").replaceAll("\\\\","/").replaceAll("\\","/"))),A.createElement(Ue,{flexDirection:"row"},A.createElement(Z,{color:Be.textDim},"Viewport"," "),A.createElement(Z,{color:"gray"},"............... "),A.createElement(Z,{color:Be.text},process.stdout.rows||"?"," rows \xD7 ",process.stdout.columns||"?"," cols ",process.stdout.columns<90?"(too small width)":"")),A.createElement(Ue,{flexDirection:"row",marginBottom:0},A.createElement(Z,{color:Be.textDim},"Memory Load"," "),A.createElement(Z,{color:"gray"},"............ "),A.createElement(Z,{color:Be.text},ge,"/",v," ",st))),A.createElement(Ue,{key:"pty-notice",paddingX:0,marginTop:0},A.createElement(Z,{color:zt?Be.statusOn:Be.warning},zt?"\u2713 Advance Interactive Terminal Supported":"\u26A0 Interactive Terminal is Limited"))):A.createElement(Z,{color:"gray",italic:!0},Eo[L].desc)))),A.createElement(Ue,{paddingX:1,marginTop:0,flexDirection:"row",justifyContent:"space-between"},A.createElement(Z,{color:"gray",italic:!0},F==="categories"?"\u25B2\u25BC Select Category \u2022 Enter/\u25BA to configure":"\u25B2\u25BC Select Option \u2022 Enter to Toggle \u2022 \u25C4/ESC to go back"),F==="categories"&&A.createElement(Z,{color:"gray"},Eo[L].desc)))}import io,{useState as $s,useEffect as $d}from"react";import{Box as Un,Text as xr}from"ink";import Ud from"ink-text-input";function Us({initialData:t,onSave:f,onCancel:g,theme:S="Dark"}){let w=lt(S),[p,a]=$s(0),[T,b]=$s(""),[M,N]=$s(()=>({name:t?.name||"",nickname:t?.nickname||"",instructions:t?.instructions||""})),O=[{key:"nickname",label:"Enter a Nickname: ",maxLength:20},{key:"instructions",label:"System Instructions: ",maxLength:200}],E=O[p];$d(()=>{let L=O[p].key;b((M[L]||"").slice(0,O[p].maxLength))},[p,M]);let D=L=>{L.length>E.maxLength?b(L.slice(0,E.maxLength)):b(L)},F=L=>{if(L.trim().toLowerCase()==="/cancel"){g();return}let Y=E.key,K={...M,[Y]:L.trim().slice(0,E.maxLength)};N(K),b(""),p<O.length-1?a(p+1):f(K)},$=T.length>=E.maxLength;return io.createElement(Un,{borderStyle:"round",borderColor:w.borderMuted,padding:0,marginTop:1,flexShrink:0,flexDirection:"column",width:"100%"},io.createElement(Un,{paddingX:1,marginBottom:1},io.createElement(xr,{color:w.text,bold:!0},"USER PROFILE CONFIGURATION")),io.createElement(Un,{paddingX:1,flexDirection:"column"},io.createElement(Un,null,io.createElement(xr,{color:w.text,bold:!0},E.label),io.createElement(Ud,{value:T,onChange:D,onSubmit:F})),io.createElement(Un,{marginTop:1,justifyContent:"space-between"},io.createElement(xr,{color:w.textMuted,italic:!0},"Step ",p+1," of ",O.length),io.createElement(xr,{color:$?w.warning||"yellow":w.textMuted},"[",T.length,"/",E.maxLength,"]"))),io.createElement(Un,{paddingX:1,marginTop:1},io.createElement(xr,{color:w.textMuted,italic:!0},"(Enter to submit \u2022 Type /cancel to abort)")))}import It,{useState as _s}from"react";import{Box as lo,Text as Jo,useInput as _d}from"ink";import Hd from"ink-text-input";var Xd=({question:t,options:f,onResolve:g,theme:S="Dark"})=>{let w=lt(S),[p,a]=_s(!1),[T,b]=_s(""),[M,N]=_s(0),O=!1,E=[],D=Array.isArray(f)&&f.length>0,F=t==="Agent has been running for a long time. Do you want to continue execution?";try{F&&D?E=[...f]:E=[...D?f:[],D?{id:"CUSTOM",label:"Suggest something else...",description:"Provide a custom response"}:{id:"CUSTOM",label:"Your Answer",description:""}]}catch{O=!0}_d((L,Y)=>{if(!p&&((Y.leftArrow||Y.upArrow)&&N(K=>Math.max(0,K-1)),(Y.rightArrow||Y.downArrow)&&N(K=>Math.min(E.length-1,K+1)),Y.return)){let K=E[M];K?.id==="CUSTOM"?a(!0):g(O?"Selected Nothing":K.label)}});let $=ft(2);return p?It.createElement(lo,{flexDirection:"column",borderStyle:"single",borderLeft:!1,borderRight:!1,borderTop:!1,borderBottom:!1,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,backgroundColor:w.codeBg,width:"100%"},It.createElement(lo,{paddingX:1},It.createElement(Jo,{color:w.text,bold:!0},"SUGGEST SOMETHING")),It.createElement(lo,{marginTop:1,paddingX:1},It.createElement(Jo,{italic:!0,color:w.textMuted},"Replying to: ",t)),It.createElement(lo,{marginTop:1,paddingX:1,flexDirection:"row"},It.createElement(Hd,{value:T,onChange:b,onSubmit:()=>g(T)})),It.createElement(lo,{marginTop:1,paddingX:1,marginBottom:1},It.createElement(Jo,{color:w.textMuted,italic:!0},"(Press Enter to send)"))):It.createElement(lo,{flexDirection:"column",border:!0,borderStyle:"round",borderColor:w.codeBorder,paddingLeft:2,paddingRight:0,paddingTop:1,paddingBottom:1,marginY:1,marginRight:1,width:"100%"},It.createElement(lo,{paddingX:1,marginBottom:1},It.createElement(Jo,{color:"yellow",bold:!0},F?"TURN SAFETY SYSTEM: EXECUTION LIMIT":"AGENT REQUEST: ACTION REQUIRED")),It.createElement(lo,{paddingX:1,marginBottom:1},It.createElement(Jo,{color:w.text},t)),It.createElement(lo,{flexDirection:"column",width:"100%"},E.map((L,Y)=>{let K=Y===M;return It.createElement(lo,{key:L.id,flexDirection:"column",width:"100%",backgroundColor:K?w.highlightBg:void 0,paddingX:1,marginBottom:Y===E.length-1?0:1},It.createElement(Jo,{color:K?w.text:w.textMuted,bold:K},K?"\u276F ":" ",L.label),L.description&&It.createElement(lo,{marginLeft:4},It.createElement(Jo,{color:w.textMuted,italic:!0},L.description)))})),It.createElement(lo,{paddingX:1,marginTop:1,marginBottom:1},It.createElement(Jo,{color:w.textMuted,italic:!0},"(Use Arrows to navigate, Enter to confirm)")))},Il=Xd;import dc from"gradient-string";import _t,{useState as Hs,useEffect as Gd}from"react";import{Box as Bo,Text as Zo,useInput as Wd}from"ink";function Xs({onSelect:t,onDelete:f,onClose:g,theme:S="Dark"}){let w=lt(S),[p,a]=Hs({}),[T,b]=Hs([]),[M,N]=Hs(0);Gd(()=>{(async()=>{let L=await Qo();a(L),b(Object.keys(L).sort((Y,K)=>(L[K].updatedAt||0)-(L[Y].updatedAt||0)))})()},[]),Wd(($,L)=>{if(L.escape&&g(),L.upArrow&&N(Y=>Math.max(0,Y-1)),L.downArrow&&N(Y=>Math.min(T.length-1,Y+1)),L.return&&T[M]&&t(T[M]),$==="x"&&T[M]){let Y=T[M];f(Y).then(K=>{let ce=K||{};a(ce);let ue=Object.keys(ce).sort((z,oe)=>(ce[oe]?.updatedAt||0)-(ce[z]?.updatedAt||0));b(ue),N(z=>Math.max(0,Math.min(ue.length-1,z)))})}});let O=ft(2),E=15,D=0;if(T.length>E){let $=Math.floor(E/2);D=M-$,D<0?D=0:D+E>T.length&&(D=T.length-E)}let F=T.slice(D,D+E);return _t.createElement(Bo,{flexDirection:"column",borderStyle:"round",borderColor:w.borderMuted,padding:0,width:"100%"},_t.createElement(Bo,{paddingX:1,marginBottom:1},_t.createElement(Zo,{color:w.text,bold:!0},"CHAT HISTORY: RESUME CONVERSATION")),T.length===0?_t.createElement(Bo,{paddingX:2,paddingY:1},_t.createElement(Zo,{italic:!0,color:w.textMuted},"No saved chats found.")):_t.createElement(Bo,{flexDirection:"column",width:"100%"},D>0&&_t.createElement(Bo,{paddingX:2,marginBottom:1},_t.createElement(Zo,{color:w.textMuted},"\u25B2 (+",D," more chats above)")),F.map(($,L)=>{let Y=p[$],ce=D+L===M,ue=Vd(Y?.updatedAt);return _t.createElement(Bo,{key:$,paddingX:1,backgroundColor:ce?w.highlightBg:void 0,width:"100%"},_t.createElement(Bo,{flexGrow:1},_t.createElement(Zo,{color:ce?w.text:w.textMuted,bold:ce},ce?"\u276F ":" ",(()=>{let z=oe=>(oe||"").replace(/\[\/?(?:STEERING HINT|QUESTION)(?::\s*\w+)?\]/gi,"").trim();return Y?.name&&!Y.name.startsWith("Session")?z(Y.name):Y?.prompt?z(Y.prompt):z(Y?.name)||$})(),_t.createElement(Zo,{color:w.textMuted}," [",ue," \u2022 ",$,"]"))),ce&&_t.createElement(Bo,{flexShrink:0},_t.createElement(Zo,{color:w.danger,bold:!0},"[X] DELETE ")))}),D+E<T.length&&_t.createElement(Bo,{paddingX:2,marginTop:1},_t.createElement(Zo,{color:w.textMuted},"\u25BC (+",T.length-(D+E)," more chats below)"))),_t.createElement(Bo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:w.borderMuted},_t.createElement(Zo,{color:w.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 Enter select \u2022 x delete \u2022 Esc close")))}function Vd(t){if(!t)return"N/A";let f=new Date(t);if(isNaN(f.getTime()))return"N/A";let g=T=>String(T).padStart(2,"0"),S=g(f.getMonth()+1),w=g(f.getDate()),p=g(f.getHours()),a=g(f.getMinutes());return`${S}-${w} ${p}:${a}`}import kt,{useState as Gs,useEffect as Yd}from"react";import{Box as vo,Text as bo,useInput as jd,useStdout as Kd}from"ink";function Ws({onClose:t,theme:f="Dark"}){let g=lt(f),{stdout:S}=Kd(),w=S?.columns||80,[p,a]=Gs([]),[T,b]=Gs(0),[M,N]=Gs(!0),O=()=>{let z=Dr(tr,[]);a(z);try{let xe=Ir(cn,{}).systemSettings?.memory!==!1;N(xe)}catch{N(!0)}};Yd(()=>{O()},[]),jd((z,oe)=>{if(oe.escape&&t(),oe.upArrow&&b(xe=>Math.max(0,xe-1)),oe.downArrow&&b(xe=>Math.min(p.length-1,xe+1)),z==="x"&&p.length>0){let xe=p[T].id,Ee=p.filter(_e=>_e.id!==xe);Pi(tr,Ee),a(Ee),T>=Ee.length&&Ee.length>0&&b(Ee.length-1)}});let E=(z,oe,xe)=>{if(!z)return"";let Ee=z.replace(/\[Saved on: .*?\]/g,"").replace(/\\+'/g,"'").trim(),We=`${xe?"\u276F ":" "}${oe+1}. `.length,pe=xe?22:2;return Ee.split(`
45
45
  `).map((ye,ae)=>{let Ke=ae===0,He=Math.max(10,w-4-(Ke?We:3)-pe),j=Math.max(10,w-4-3-pe),ne=ye.split(/(\s+)/),ee=[],de="";if(ne.forEach(Me=>{if(Me.length===0)return;let Le=ee.length===0?He:j;de.length+Me.length>Le?de.trim().length>0?(ee.push(de.trimEnd()),de=Me):(ee.push(Me.substring(0,Le)),de=Me.substring(Le)):de+=Me}),de.trimEnd().length>0&&ee.push(de.trimEnd()),ee.length===0)return"";let Se=ee.join(`
46
46
  `);return Ke?Se:" "+Se}).join(`
47
47
  `)},D=4*1024*2,F=p.reduce((z,oe)=>z+(oe.memory?.length||0),0),$=Math.min(100,Math.round(F/D*100)),L=12,Y=Math.round($/100*L),K="\u2588".repeat(Y)+"\u2591".repeat(Math.max(0,L-Y)),ce=()=>$<50?g.textMuted:$<90?g.warning:g.danger,ue=ft(2);return kt.createElement(vo,{flexDirection:"column",borderStyle:"round",borderColor:g.borderMuted,padding:0,width:"100%"},kt.createElement(vo,{paddingX:1,marginBottom:1,justifyContent:"space-between"},kt.createElement(bo,{color:g.text,bold:!0},"SAVED MEMORIES"),kt.createElement(vo,null,kt.createElement(bo,{color:g.textMuted},"Vault: "),kt.createElement(bo,{color:ce()},K),kt.createElement(bo,{color:g.text,bold:!0}," ",$,"%"))),!M&&p.length>0?kt.createElement(vo,{paddingX:2,paddingY:1},kt.createElement(bo,{italic:!0,color:g.textMuted},"Memory is currently Off...")):p.length===0?kt.createElement(vo,{paddingX:2,paddingY:1},kt.createElement(bo,{italic:!0,color:g.textMuted},M?"Learning...":"Memory not available...")):kt.createElement(vo,{flexDirection:"column"},p.map((z,oe)=>{let xe=oe===T;return kt.createElement(vo,{key:z.id,paddingX:1,backgroundColor:xe?g.highlightBg:void 0,width:"100%"},kt.createElement(vo,{flexGrow:1},kt.createElement(bo,{color:xe?g.text:g.textMuted,bold:xe},xe?"\u276F ":" ",oe+1,". ",E(z.memory,oe,xe))),xe&&kt.createElement(vo,{flexShrink:0},kt.createElement(bo,{color:g.textMuted,dimColor:!0}," [",kt.createElement(bo,{italic:!0},z.score),"] "),kt.createElement(bo,{color:g.danger,bold:!0},"[X] WIPE ")))})),kt.createElement(vo,{marginTop:1,paddingX:1,borderStyle:"single",borderLeft:!1,borderRight:!1,borderBottom:!1,borderColor:g.borderMuted},kt.createElement(bo,{color:g.textMuted,italic:!0},"\u2191\u2193 navigate \u2022 x wipe memory \u2022 Esc close")))}import yt,{useState as Kr,useEffect as kl}from"react";import{Box as Ro,Text as Xt}from"ink";import{spawn as Al}from"child_process";var Ll=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],qd=({latest:t,current:f,settings:g,theme:S="Dark",onClose:w,onUpdateSettings:p,onSuccess:a})=>{let T=lt(S),[b,M]=Kr("initializing"),[N,O]=Kr(""),[E,D]=Kr(null),[F,$]=Kr(0);if(kl(()=>{let L=setInterval(()=>{$(Y=>(Y+1)%1e3)},33);return()=>clearInterval(L)},[]),kl(()=>{let L;return(async()=>{let K=g?.updateManager||"npm";if(!g?.updateManager){p();return}let ce="";K==="pnpm"?ce=`pnpm add -g fluxflow-cli@${t}`:K==="bun"?ce=`bun add -g fluxflow-cli@${t}`:K==="yarn"?ce=`yarn global add fluxflow-cli@${t}`:K==="custom"?ce=g.customUpdateCommand:ce=`npm install -g fluxflow-cli@${t}`,M("downloading"),O(`Running: ${ce}...`);let ue=process.platform==="win32",z=xe=>new Promise(Ee=>{let _e=ue?xe?"powershell.exe":"cmd.exe":process.env.SHELL||"bash",We=ue?xe?["-NoProfile","-Command",ce]:["/c",ce]:["-c",ce],pe=ye=>{let Ke=ye.toString().replace(/\x1B\[[0-?]*[ -/]*[@-~]|\x1B\][^\x07\x1B]*[\x07\x1B]|\b|\x07/g,"").replace(/\r/g,"").trim();Ke&&O(He=>{let j=He.split(`
@@ -188,14 +188,14 @@ ${q} \u2800`,isMeta:!0}]))}}else Q("thinking");break}case"/model":{if(m[1]){let
188
188
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Status: ${l?"Enabled":"Disabled"}
189
189
  \u2800`,isMeta:!0}])),l});break}case"/wildercard-tooling":{P(c=>{let l=!c;return k(h=>(U(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Wildercard Tooling:
190
190
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Status: ${l?"Enabled":"Disabled"}
191
- \u2800`,isMeta:!0}])),l});break}case"/settings":{Q("settings");break}case"/provider":case"/providers":{ns("chat"),Q("selectProvider");break}case"/theme":{Q("theme");break}case"/key":{Q("key");break}case"/profile":{Q("profile");break}case"/stats":{(async()=>{let l=await Ar(),h=await Lr();ls(l),as(h),Kn("daily"),Q("stats")})();break}case"/usage":{(async()=>{try{let{openUsageDashboard:l}=await import("./usageServer-6XH36WK3.js"),{url:h}=await l();k(y=>(U(y.length+1),[...y,{id:Date.now(),role:"system",text:`\u2726 Launching Token Analytics Dashboard
191
+ \u2800`,isMeta:!0}])),l});break}case"/settings":{Q("settings");break}case"/provider":case"/providers":{ns("chat"),Q("selectProvider");break}case"/theme":{Q("theme");break}case"/key":{Q("key");break}case"/profile":{Q("profile");break}case"/stats":{(async()=>{let l=await Ar(),h=await Lr();ls(l),as(h),Kn("daily"),Q("stats")})();break}case"/usage":{(async()=>{try{let{openUsageDashboard:l}=await import("./usageServer-3KLDOFIX.js"),{url:h}=await l();k(y=>(U(y.length+1),[...y,{id:Date.now(),role:"system",text:`\u2726 Launching Token Analytics Dashboard
192
192
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Serving at ${h}
193
193
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Opening in your default browser...
194
194
  \u2800`,isMeta:!0}]))}catch(l){k(h=>(U(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 ERROR
195
195
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Failed to launch dashboard: ${l.message}
196
196
  \u2800`,isMeta:!0}]))}})();break}case"/save":{let c,l=Bt.find(y=>y.role==="user");if(l&&l.text){let y=l.text.replace(/\s*\n+\s*\[Prompted on:.*?\]/g,"").trim(),X=y.split(/\s+/),_;X.length>7?_=X.slice(0,7).join(" ")+"...":y.length>45?_=y.substring(0,45).trimEnd()+"...":_=y,c=_}let h=m.slice(1).join(" ")||c||`Session ${new Date().toLocaleTimeString()}`;Nn(pt,h,Bt),k(y=>(U(y.length+1),[...y,{id:Date.now(),role:"system",text:`\u2726 Saved
197
197
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m "${h}" (ID: ${pt})
198
- \u2800`,isMeta:!0}]));break}case"/export":{(async()=>{try{let{handleExport:l}=await import("./export-C6VVIYP5.js"),h=await l(m,{chatId:pt,messages:Bt});k(y=>(U(y.length+1),[...y,{id:Date.now(),role:"system",text:h.message,isMeta:!0}]))}catch(l){k(h=>(U(h.length+1),[...h,{id:Date.now(),role:"system",text:`[EXPORT ERROR] Failed to export: ${l.message}`,isMeta:!0}]))}})();break}case"/chats":{(async()=>{let l=await Qo(),h=Object.entries(l).sort((y,X)=>(X[1].updatedAt||0)-(y[1].updatedAt||0)).map(([y,X])=>`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${y}: ${X.name}${y===pt?" (current)":""}`).join(`
198
+ \u2800`,isMeta:!0}]));break}case"/export":{(async()=>{try{let{handleExport:l}=await import("./export-RU6LCZUB.js"),h=await l(m,{chatId:pt,messages:Bt});k(y=>(U(y.length+1),[...y,{id:Date.now(),role:"system",text:h.message,isMeta:!0}]))}catch(l){k(h=>(U(h.length+1),[...h,{id:Date.now(),role:"system",text:`[EXPORT ERROR] Failed to export: ${l.message}`,isMeta:!0}]))}})();break}case"/chats":{(async()=>{let l=await Qo(),h=Object.entries(l).sort((y,X)=>(X[1].updatedAt||0)-(y[1].updatedAt||0)).map(([y,X])=>`\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${y}: ${X.name}${y===pt?" (current)":""}`).join(`
199
199
  `);k(y=>(U(y.length+1),[...y,{id:Date.now(),role:"system",text:`\u2726 Saved Chats:
200
200
  ${h||"\u2800\u2800\x1B[2m\u2514\u2500\x1B[22m No saved chats found."}
201
201
  \u2800`,isMeta:!0}]))})();break}case"/memory":{if((m[1]||"view").toLowerCase()==="migrate")try{let l=Dr(tr,[]);if(!l||l.length===0){k(J=>(U(J.length+1),[...J,{id:Date.now(),role:"system",text:`\u2726 Memory Migration
@@ -223,7 +223,7 @@ ${h}
223
223
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${jl}.`,isMeta:!0}]));break}case"/docs":{if(!Qs){k(h=>(U(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 ERROR
224
224
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m Documentation URL is not configured.`,isMeta:!0}]));break}let c=process.platform;Io(`${c==="win32"?"start":c==="darwin"?"open":"xdg-open"} ${Qs}`),k(h=>(U(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Opening Documentation
225
225
  \u2800\u2800\x1B[2m\u2514\u2500\x1B[22m ${Qs}.
226
- \u2800`,isMeta:!0}]));break}case"/budget":{let c=m[1]?.toLowerCase();if(c==="web"||c==="gui"||c==="dashboard")(async()=>{try{let{openUsageDashboard:h}=await import("./usageServer-6XH36WK3.js"),{url:y}=await h();k(X=>(U(X.length+1),[...X,{id:Date.now(),role:"system",text:`\u2726 Token Usage & Budget Dashboard
226
+ \u2800`,isMeta:!0}]));break}case"/budget":{let c=m[1]?.toLowerCase();if(c==="web"||c==="gui"||c==="dashboard")(async()=>{try{let{openUsageDashboard:h}=await import("./usageServer-3KLDOFIX.js"),{url:y}=await h();k(X=>(U(X.length+1),[...X,{id:Date.now(),role:"system",text:`\u2726 Token Usage & Budget Dashboard
227
227
  \u2800\u2800\u2514\u2500 Opened at ${y}
228
228
  \u2800`,isMeta:!0}]))}catch(h){k(y=>(U(y.length+1),[...y,{id:Date.now(),role:"system",text:`\u2726 ERROR: Failed to launch dashboard: ${h.message}
229
229
  \u2800`,isMeta:!0}]))}})();else if(c==="set")Ql("chat"),Q("budgetTypeSelect");else if(c==="view")(async()=>{let h=await Ar(),y=await Lr(),X=await Ds(Fe.resetDay||1);ls(h),as(y),ci(X),Q("budgetView")})();else if(c==="reset"){let l={limitMode:"Daily",agentLimit:99999999,tokenLimit:99999999999999,backgroundLimit:999999,searchLimit:100,customModelId:"",customLimit:0,providerBudgets:{},providerTiers:{Google:"Free",DeepSeek:"Free",NVIDIA:"Free",OpenRouter:"Free",InferX:"Free",SenseNova:"Free",AIHubMix:"Free",Poolside:"Free",ExpLabs:"Free",TokenHarbor:"Free",Infron:"Free",APInex:"Free"}};co(l),no("Free"),Nt({apiTier:"Free",quotas:l}),k(h=>(U(h.length+1),[...h,{id:Date.now(),role:"system",text:`\u2726 Budgets reset successfully.
@@ -1 +1 @@
1
- import{c as a}from"./chunk-HOZQBBAO.js";import"./chunk-3JI2CRXK.js";import{a as s}from"./chunk-Y5JU726N.js";import"./chunk-L3W2X74K.js";import"./chunk-M2ULCOL3.js";var R=async(i,o={})=>{let t=s(i).title,r=o.chatId||o.sessionId;if(!r)return"ERROR: No active chatId found in tool context.";if(!t)return"ERROR: Missing 'title' argument.";try{return await a(r,t),`Chat title updated to [${t}] for session [${r}].`}catch(e){return`ERROR: Failed to update chat title: ${e instanceof Error?e.message:String(e)}`}};export{R as chat};
1
+ import{c as a}from"./chunk-6H2P5XUL.js";import"./chunk-6EYQQ7GQ.js";import{a as s}from"./chunk-Y5JU726N.js";import"./chunk-P5HBJA23.js";import"./chunk-26BQ45XP.js";var R=async(i,o={})=>{let t=s(i).title,r=o.chatId||o.sessionId;if(!r)return"ERROR: No active chatId found in tool context.";if(!t)return"ERROR: Missing 'title' argument.";try{return await a(r,t),`Chat title updated to [${t}] for session [${r}].`}catch(e){return`ERROR: Failed to update chat title: ${e instanceof Error?e.message:String(e)}`}};export{R as chat};
@@ -0,0 +1,2 @@
1
+ import E from"os";import e from"path";import l from"fs";import d from"crypto";import{minimatch as h}from"minimatch";var u=e.join(E.homedir(),".fluxflow"),x=e.join(u,"settings.json"),_=null;try{if(l.existsSync(x)){let a=l.readFileSync(x,"utf8").trim(),c;if(a.startsWith("{"))c=JSON.parse(a);else{let s=a.split(":");if(s.length===2){let t=Buffer.from(s[0],"hex"),f=s[1],i=null;try{let n=e.join(u,".token");if(l.existsSync(n)){let o=l.readFileSync(n,"utf8").trim();if(o){let m=d.createHash("sha256").update(o).digest(),p=d.createDecipheriv("aes-256-cbc",m,t);i=p.update(f,"hex","utf8")+p.final("utf8")}}}catch{}if(!i)try{let n=d.createHash("sha256").update("fluxflow-cli-sanctuary-key").digest(),o=d.createDecipheriv("aes-256-cbc",n,t);i=o.update(f,"hex","utf8")+o.final("utf8")}catch{}i&&(c=JSON.parse(i))}}if(c){let s=c.systemSettings||{};s.useExternalData&&s.externalDataPath&&(_=e.normalize(s.externalDataPath.trim()))}}}catch{}var g=_||u,L=e.join(g,"logs"),r=e.join(g,"secret"),v=e.join(r,"history.json"),C=e.join(r,"history"),b=e.join(u,"usage.json"),F=e.join(r,"usage.json"),T=e.join(r,"timed_usage"),k=e.join(r,"memories.json"),A=e.join(r,"memory-temp.json"),R=e.join(r,"temp-memory-chat.json"),w=e.join(g,"backups"),O=e.join(r,"ledger.json"),W=e.join(r,"ledgerAdvance.json"),N=e.join(r,"active_tx.json"),P=e.join(r,"path.json"),G=e.join(r,"context.json"),M=e.join(g,"parsers"),B=e.join(u,".cache","CU"),U=e.join(u,"thinking_config.json"),$=[".git","node_modules",".gemini","dist","build",".next","out",".cache","bin","obj","vendor","venv",".idea",".gradle",".terraform","target","coverage",".vscode",".svn",".hg",".fslckout",".github",".gitlab",".circleci",".gitea",".gitee",".lerna",".changeset",".nx",".npm",".yarn",".pnpm-store",".pnpm",".expo",".nuxt",".svelte-kit",".docusaurus",".turbo",".vercel","bower_components",".netlify",".vuepress",".quasar",".output",".angular","jspm_packages",".parcel-cache",".rollup.cache",".rspack",".vitepress","__pycache__",".pytest_cache",".mypy_cache",".tox",".poetry","env","vhdl",".ipynb_checkpoints",".jupyter",".conda",".pdm-build",".bundle",".yardoc",".metadata","App_Data","ClientBin",".cargo",".rustc_info",".go","Godeps","_vendor",".rake_tasks","CMakefiles",".wakatime",".dart_tool",".fvm",".cocoapods","Pods",".pub-cache",".symlinks","DerivedData",".xcworkspace",".serverless",".aws",".gcloud",".azure",".kube",".vagrant",".docker","postgres-data","redis-data","mongo-data",".Spotlight-V100",".Trashes","$RECYCLE.BIN","System Volume Information",".DocumentRevisions-V100",".fseventsd","AppData","Application Data","Local","LocalLow","Roaming","$WinREAgent","$WINDOWS.~BT","$WINDOWS.~WS","scw","System32","SysWOW64",".AppleDouble",".AppleDB",".AppleDesktop","_CodeSignature",".cmio",".LSOverride",".localized",".TemporaryItems",".Trash",".Trash-0",".Trash-1000",".gvfs",".local",".config",".dbus",".fontconfig",".snap",".var",".lost+found","lost+found",".thumb",".thumbnails","EFI","boot","grub","logs","log",".nyc_output",".sonar",".ruff_cache",".VSCodeCounter",".exe",".dll",".so",".dylib",".png",".jpg",".jpeg",".gif",".ico",".svg",".webp",".mp3",".mp4",".avi",".zip",".tgz",".tar",".gz",".7z",".rar",".pdf",".docx",".xlsx",".pptx",".woff",".woff2",".ttf",".eot",".skills","skills"],H=(a=process.cwd())=>{try{let c=e.join(a,".gitignore");if(l.existsSync(c))return l.readFileSync(c,"utf8").split(`
2
+ `).map(t=>t.trim()).filter(t=>t&&!t.startsWith("#")&&!t.startsWith("!")).map(t=>t.replace(/^[\/\\]+/,"").replace(/[\/\\]+$/,"").replace(/\/\*+$/,"")).filter(Boolean)}catch{}return[]},z=(a,c)=>{if(!a||!c)return!1;let s=a.replace(/\\/g,"/"),t=e.basename(a),f=c.split(",").map(n=>n.trim()).filter(Boolean),i=null;try{let n=typeof h<"u"?h:null;n&&(i=n)}catch{}for(let n of f){let o=n.replace(/\\/g,"/");if(t.toLowerCase()===o.toLowerCase()||s.toLowerCase()===o.toLowerCase()||s.toLowerCase().endsWith("/"+o.toLowerCase()))return!0;try{if(i&&(i(s,o,{dot:!0,nocase:!0,matchBase:!0})||i(t,o,{dot:!0,nocase:!0})))return!0}catch{}if(o.includes("*")||o.includes("?")){let m="^"+o.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*/g,".*").replace(/\*/g,"[^/]*").replace(/\?/g,".")+"$";try{let p=new RegExp(m,"i");if(p.test(t)||p.test(s))return!0}catch{}}}return!1};export{u as a,x as b,g as c,L as d,r as e,v as f,C as g,b as h,F as i,T as j,k,A as l,R as m,w as n,O as o,W as p,N as q,P as r,G as s,M as t,B as u,U as v,$ as w,H as x,z as y};
@@ -1,4 +1,4 @@
1
- import{a as T}from"./chunk-Y5JU726N.js";import{a as I}from"./chunk-M2ULCOL3.js";import s from"fs";import g from"path";var X=i=>{if(!i)return null;let o=i.match(/^\s*---\r?\n([\s\S]*?)\r?\n---(?:\r?\n)?([\s\S]*)$/);if(!o)return null;let e=o[1];if((o[2]||"").trim().length===0)return null;let r="",a=e.match(/^name:\s*(.+)$/m);return a&&(r=a[1].trim().replace(/^["']|["']$/g,"")),r?{name:r}:null},Y=i=>{let o=[];if(!i||!s.existsSync(i))return o;let e=(u,r=0)=>{if(!(r>5))try{let a=s.readdirSync(u,{withFileTypes:!0});for(let n of a){let c=g.join(u,n.name),f=n.name.toLowerCase();n.isFile()?f==="skill.md"&&o.push(c):n.isDirectory()&&(r===0?(f==="skills"||f===".skills"||f==="skill"||f===".skill")&&e(c,r+1):e(c,r+1))}}catch{}};return e(i,0),o},q=i=>i.replace(/^\s*---\r?\n[\s\S]*?\r?\n---\s*(\r?\n)?/,""),U=(i,o)=>{if(!o)return null;let e=g.join(i,o);if(s.existsSync(e))try{if(s.statSync(e).isFile())return e}catch{}if(!o.toLowerCase().endsWith(".md")){let n=g.join(i,`${o}.md`);if(s.existsSync(n))try{if(s.statSync(n).isFile())return n}catch{}}let u=o.replace(/\\/g,"/").split("/").filter(Boolean),r=i,a=!0;for(let n=0;n<u.length;n++){let c=u[n].toLowerCase(),f=n===u.length-1;try{if(!s.existsSync(r)||!s.statSync(r).isDirectory()){a=!1;break}let F=s.readdirSync(r).find(M=>{let R=M.toLowerCase();return!!(R===c||f&&!c.endsWith(".md")&&R===`${c}.md`)});if(!F){a=!1;break}let $=g.join(r,F);if(f){if(s.statSync($).isFile())return $;a=!1}else r=$}catch{a=!1;break}}if(u.length===1){let n=u[0],c=["references","reference","scripts","script","examples","example","resources","resource"];for(let f of c){let y=g.join(i,f);if(s.existsSync(y)){let F=U(y,n);if(F)return F}}}return null},Q=async(i,o={})=>{let{path:e,StartLine:u,EndLine:r,start_line:a,end_line:n,startLine:c,endLine:f}=T(i),y=parseInt(u||a||c),F=parseInt(r||n||f),$=!isNaN(y),M=!isNaN(F),R=y||1,N=F||(y?y+800:800);if(!e)return'ERROR: Missing "path" argument for ReadFile.';if(e.trim().toLowerCase().startsWith("#skill")){let d=e.trim().replace(/\\/g,"/").replace(/^#skills?\/?/i,"").split("/").filter(Boolean),C=null,p="",m="";if(d[0]?.toLowerCase()==="global"||d[0]?.toLowerCase()==="project"?(C=d[0].toLowerCase(),p=d[1],m=d.slice(2).join("/")):(p=d[0],m=d.slice(1).join("/")),!p)return`ERROR: Missing skill name in path [${e}].`;let k=t=>{let l=Y(t);for(let h of l)try{let x=s.readFileSync(h,"utf8"),L=X(x),D=g.basename(g.dirname(h)).toLowerCase();if(L?.name&&L.name.toLowerCase()===p.toLowerCase()||D===p.toLowerCase()||h.toLowerCase()===g.join(t,"skill.md").toLowerCase()&&p.toLowerCase()==="skill")return h}catch{}return null},w=null,b=!1;if(C){let t=C==="global"?I:process.cwd();w=k(t)}else{let t=k(process.cwd()),l=k(I);t&&l&&(b=!0),w=t||l}if(!w)return`No '${p}' exist in given scope.`;let E=g.dirname(w),j=w,v=!0;if(m){let t=U(E,m);if(!t)return`No such file or reference '${m}' exist for skill '${p}'. It could be standard file path?`;j=t,v=!1}try{let t=s.readFileSync(j,"utf8");t.startsWith("\uFEFF")&&(t=t.slice(1)),t=t.replace(/\r\n/g,`
1
+ import{a as T}from"./chunk-Y5JU726N.js";import{a as I}from"./chunk-26BQ45XP.js";import s from"fs";import g from"path";var X=i=>{if(!i)return null;let o=i.match(/^\s*---\r?\n([\s\S]*?)\r?\n---(?:\r?\n)?([\s\S]*)$/);if(!o)return null;let e=o[1];if((o[2]||"").trim().length===0)return null;let r="",a=e.match(/^name:\s*(.+)$/m);return a&&(r=a[1].trim().replace(/^["']|["']$/g,"")),r?{name:r}:null},Y=i=>{let o=[];if(!i||!s.existsSync(i))return o;let e=(u,r=0)=>{if(!(r>5))try{let a=s.readdirSync(u,{withFileTypes:!0});for(let n of a){let c=g.join(u,n.name),f=n.name.toLowerCase();n.isFile()?f==="skill.md"&&o.push(c):n.isDirectory()&&(r===0?(f==="skills"||f===".skills"||f==="skill"||f===".skill")&&e(c,r+1):e(c,r+1))}}catch{}};return e(i,0),o},q=i=>i.replace(/^\s*---\r?\n[\s\S]*?\r?\n---\s*(\r?\n)?/,""),U=(i,o)=>{if(!o)return null;let e=g.join(i,o);if(s.existsSync(e))try{if(s.statSync(e).isFile())return e}catch{}if(!o.toLowerCase().endsWith(".md")){let n=g.join(i,`${o}.md`);if(s.existsSync(n))try{if(s.statSync(n).isFile())return n}catch{}}let u=o.replace(/\\/g,"/").split("/").filter(Boolean),r=i,a=!0;for(let n=0;n<u.length;n++){let c=u[n].toLowerCase(),f=n===u.length-1;try{if(!s.existsSync(r)||!s.statSync(r).isDirectory()){a=!1;break}let F=s.readdirSync(r).find(M=>{let R=M.toLowerCase();return!!(R===c||f&&!c.endsWith(".md")&&R===`${c}.md`)});if(!F){a=!1;break}let $=g.join(r,F);if(f){if(s.statSync($).isFile())return $;a=!1}else r=$}catch{a=!1;break}}if(u.length===1){let n=u[0],c=["references","reference","scripts","script","examples","example","resources","resource"];for(let f of c){let y=g.join(i,f);if(s.existsSync(y)){let F=U(y,n);if(F)return F}}}return null},Q=async(i,o={})=>{let{path:e,StartLine:u,EndLine:r,start_line:a,end_line:n,startLine:c,endLine:f}=T(i),y=parseInt(u||a||c),F=parseInt(r||n||f),$=!isNaN(y),M=!isNaN(F),R=y||1,N=F||(y?y+800:800);if(!e)return'ERROR: Missing "path" argument for ReadFile.';if(e.trim().toLowerCase().startsWith("#skill")){let d=e.trim().replace(/\\/g,"/").replace(/^#skills?\/?/i,"").split("/").filter(Boolean),C=null,p="",m="";if(d[0]?.toLowerCase()==="global"||d[0]?.toLowerCase()==="project"?(C=d[0].toLowerCase(),p=d[1],m=d.slice(2).join("/")):(p=d[0],m=d.slice(1).join("/")),!p)return`ERROR: Missing skill name in path [${e}].`;let k=t=>{let l=Y(t);for(let h of l)try{let x=s.readFileSync(h,"utf8"),L=X(x),D=g.basename(g.dirname(h)).toLowerCase();if(L?.name&&L.name.toLowerCase()===p.toLowerCase()||D===p.toLowerCase()||h.toLowerCase()===g.join(t,"skill.md").toLowerCase()&&p.toLowerCase()==="skill")return h}catch{}return null},w=null,b=!1;if(C){let t=C==="global"?I:process.cwd();w=k(t)}else{let t=k(process.cwd()),l=k(I);t&&l&&(b=!0),w=t||l}if(!w)return`No '${p}' exist in given scope.`;let E=g.dirname(w),j=w,v=!0;if(m){let t=U(E,m);if(!t)return`No such file or reference '${m}' exist for skill '${p}'. It could be standard file path?`;j=t,v=!1}try{let t=s.readFileSync(j,"utf8");t.startsWith("\uFEFF")&&(t=t.slice(1)),t=t.replace(/\r\n/g,`
2
2
  `).replace(/\r/g,`
3
3
  `),v&&(t=q(t));let l=t.split(`
4
4
  `),h=l.length,x=$?Math.max(0,R-1):0,L=M?Math.min(h,N):h,D=l.slice(x,L),P=e.replace(/\\/g,"/").toLowerCase(),W=P.includes("#skill/global/fluxflow")||P.includes("#skills/global/fluxflow"),_=b?` (Found ${e} in both global & project scope. Loaded [project] as default fallback. Use '#skills/global/...' if needed global)`:"",B=`${W?"DOCs":"Skill"}: [${e.replace(/\\/g,"/")}]${_}`,z=D.map(A=>A.trimEnd()).join(`
@@ -1 +1 @@
1
- import{c as F,d as y}from"./chunk-L3W2X74K.js";import{c as g,p as h}from"./chunk-M2ULCOL3.js";import o from"fs-extra";import a from"path";var P=["node_modules","dist","bin","logs",".git",".fluxflow","secret",".gemini",".agents","tmp","temp","build","out","snapshots"];async function k(t,s=t){let e={},i=await o.readdir(t,{withFileTypes:!0}).catch(()=>[]);for(let c of i){if(P.includes(c.name))continue;let l=a.join(t,c.name),d=a.relative(s,l).replace(/\\/g,"/");if(c.isDirectory()){let n=await k(l,s);Object.assign(e,n)}else{let n=await o.stat(l).catch(()=>null);n&&(e[d]={size:n.size,mtime:n.mtimeMs})}}return e}async function E(t,s){await o.ensureDir(t);for(let e of Object.keys(s)){let i=a.join(process.cwd(),e),c=a.join(t,e);await o.ensureDir(a.dirname(c)),await o.copyFile(i,c).catch(()=>{})}}async function j(t,s,e=null,i=null){if(!await o.pathExists(t))return;i||(i=t);let c=await o.readdir(t,{withFileTypes:!0}).catch(()=>[]);for(let l of c){let d=a.join(t,l.name),n=a.join(s,l.name);if(l.isDirectory())await j(d,n,e,i);else{let u=a.relative(i,d).replace(/\\/g,"/"),p=await o.pathExists(n);p&&await o.chmod(n,438).catch(()=>{}),await o.ensureDir(a.dirname(n));let f=await o.copyFile(d,n).then(()=>!0).catch(()=>!1);await o.chmod(n,438).catch(()=>{}),e&&(f?p?e.replaced++:e.restored++:e.failed.push(u))}}}var C={async takeInitialSnapshot(t){try{let s=a.join(g,"snapshots",t);await o.remove(s).catch(()=>{}),await o.ensureDir(s);let e=await k(process.cwd());await E(a.join(s,"initial"),e);let i=F(h,{});i[t]={initialManifest:e,currentManifest:e,checkpoints:[{id:"initial",timestamp:new Date().toISOString(),newFiles:[],modifiedFiles:[],deletedFiles:[],toolsUsed:[]}]},y(h,i)}catch{}},async recordTurnDelta(t,s,e=[]){try{let i=F(h,{}),c=i[t];if(!c)return;let l=c.currentManifest||c.initialManifest,d=await k(process.cwd()),n=[],u=[],p=[];for(let[r,m]of Object.entries(d)){let w=l[r];w?(w.size!==m.size||w.mtime!==m.mtime)&&u.push(r):n.push(r)}for(let r of Object.keys(l))d[r]||p.push(r);let f=[...n,...u];if(f.length>0||p.length>0){let r={};for(let w of f)r[w]=d[w];let m=a.join(g,"snapshots",t,`turn_${s}`);await E(m,r)}c.checkpoints.push({id:`turn_${s}`,timestamp:new Date().toISOString(),newFiles:n,modifiedFiles:u,deletedFiles:p,toolsUsed:e}),c.currentManifest=d,y(h,i)}catch{}},async getCheckpoints(t){try{let e=F(h,{})[t];return e?e.checkpoints||[]:[]}catch{return[]}},async rollbackToCheckpoint(t,s){try{let e=F(h,{}),i=e[t];if(!i)throw new Error("No session active for Advance Rollback.");let c=i.checkpoints||[],l=c.findIndex(f=>f.id===s);if(l===-1)throw new Error(`Checkpoint [${s}] not found.`);let d=a.join(g,"snapshots",t),n={restored:0,replaced:0,failed:[]},u=await k(process.cwd());for(let f of Object.keys(u)){let r=a.join(process.cwd(),f);await o.chmod(r,438).catch(()=>{}),await o.remove(r).catch(()=>{})}let p=a.join(d,"initial");await j(p,process.cwd(),n,p);for(let f=1;f<=l;f++){let r=c[f],m=a.join(d,r.id);if(await j(m,process.cwd(),n,m),r.deletedFiles&&r.deletedFiles.length>0)for(let w of r.deletedFiles){let D=a.join(process.cwd(),w);await o.chmod(D,438).catch(()=>{}),await o.remove(D).catch(()=>{})}}return i.checkpoints=c.slice(0,l+1),i.currentManifest=await k(process.cwd()),y(h,e),{checkpointId:s,stats:n}}catch(e){throw new Error(`Rollback failed: ${e.message}`)}},async getLatestFileChanges(t){try{let e=F(h,{})[t];if(!e||!e.checkpoints||e.checkpoints.length===0)return{newFiles:[],modifiedFiles:[],deletedFiles:[]};let i=e.checkpoints[e.checkpoints.length-1];return{newFiles:i.newFiles||[],modifiedFiles:i.modifiedFiles||[],deletedFiles:i.deletedFiles||[]}}catch{return{newFiles:[],modifiedFiles:[],deletedFiles:[]}}},async cleanup(t){try{let s=a.join(g,"snapshots",t);await o.remove(s).catch(()=>{});let e=F(h,{});e[t]&&(delete e[t],y(h,e))}catch{}}};export{C as a};
1
+ import{c as F,d as y}from"./chunk-P5HBJA23.js";import{c as g,p as h}from"./chunk-26BQ45XP.js";import o from"fs-extra";import a from"path";var P=["node_modules","dist","bin","logs",".git",".fluxflow","secret",".gemini",".agents","tmp","temp","build","out","snapshots"];async function k(t,s=t){let e={},i=await o.readdir(t,{withFileTypes:!0}).catch(()=>[]);for(let c of i){if(P.includes(c.name))continue;let l=a.join(t,c.name),d=a.relative(s,l).replace(/\\/g,"/");if(c.isDirectory()){let n=await k(l,s);Object.assign(e,n)}else{let n=await o.stat(l).catch(()=>null);n&&(e[d]={size:n.size,mtime:n.mtimeMs})}}return e}async function E(t,s){await o.ensureDir(t);for(let e of Object.keys(s)){let i=a.join(process.cwd(),e),c=a.join(t,e);await o.ensureDir(a.dirname(c)),await o.copyFile(i,c).catch(()=>{})}}async function j(t,s,e=null,i=null){if(!await o.pathExists(t))return;i||(i=t);let c=await o.readdir(t,{withFileTypes:!0}).catch(()=>[]);for(let l of c){let d=a.join(t,l.name),n=a.join(s,l.name);if(l.isDirectory())await j(d,n,e,i);else{let u=a.relative(i,d).replace(/\\/g,"/"),p=await o.pathExists(n);p&&await o.chmod(n,438).catch(()=>{}),await o.ensureDir(a.dirname(n));let f=await o.copyFile(d,n).then(()=>!0).catch(()=>!1);await o.chmod(n,438).catch(()=>{}),e&&(f?p?e.replaced++:e.restored++:e.failed.push(u))}}}var C={async takeInitialSnapshot(t){try{let s=a.join(g,"snapshots",t);await o.remove(s).catch(()=>{}),await o.ensureDir(s);let e=await k(process.cwd());await E(a.join(s,"initial"),e);let i=F(h,{});i[t]={initialManifest:e,currentManifest:e,checkpoints:[{id:"initial",timestamp:new Date().toISOString(),newFiles:[],modifiedFiles:[],deletedFiles:[],toolsUsed:[]}]},y(h,i)}catch{}},async recordTurnDelta(t,s,e=[]){try{let i=F(h,{}),c=i[t];if(!c)return;let l=c.currentManifest||c.initialManifest,d=await k(process.cwd()),n=[],u=[],p=[];for(let[r,m]of Object.entries(d)){let w=l[r];w?(w.size!==m.size||w.mtime!==m.mtime)&&u.push(r):n.push(r)}for(let r of Object.keys(l))d[r]||p.push(r);let f=[...n,...u];if(f.length>0||p.length>0){let r={};for(let w of f)r[w]=d[w];let m=a.join(g,"snapshots",t,`turn_${s}`);await E(m,r)}c.checkpoints.push({id:`turn_${s}`,timestamp:new Date().toISOString(),newFiles:n,modifiedFiles:u,deletedFiles:p,toolsUsed:e}),c.currentManifest=d,y(h,i)}catch{}},async getCheckpoints(t){try{let e=F(h,{})[t];return e?e.checkpoints||[]:[]}catch{return[]}},async rollbackToCheckpoint(t,s){try{let e=F(h,{}),i=e[t];if(!i)throw new Error("No session active for Advance Rollback.");let c=i.checkpoints||[],l=c.findIndex(f=>f.id===s);if(l===-1)throw new Error(`Checkpoint [${s}] not found.`);let d=a.join(g,"snapshots",t),n={restored:0,replaced:0,failed:[]},u=await k(process.cwd());for(let f of Object.keys(u)){let r=a.join(process.cwd(),f);await o.chmod(r,438).catch(()=>{}),await o.remove(r).catch(()=>{})}let p=a.join(d,"initial");await j(p,process.cwd(),n,p);for(let f=1;f<=l;f++){let r=c[f],m=a.join(d,r.id);if(await j(m,process.cwd(),n,m),r.deletedFiles&&r.deletedFiles.length>0)for(let w of r.deletedFiles){let D=a.join(process.cwd(),w);await o.chmod(D,438).catch(()=>{}),await o.remove(D).catch(()=>{})}}return i.checkpoints=c.slice(0,l+1),i.currentManifest=await k(process.cwd()),y(h,e),{checkpointId:s,stats:n}}catch(e){throw new Error(`Rollback failed: ${e.message}`)}},async getLatestFileChanges(t){try{let e=F(h,{})[t];if(!e||!e.checkpoints||e.checkpoints.length===0)return{newFiles:[],modifiedFiles:[],deletedFiles:[]};let i=e.checkpoints[e.checkpoints.length-1];return{newFiles:i.newFiles||[],modifiedFiles:i.modifiedFiles||[],deletedFiles:i.deletedFiles||[]}}catch{return{newFiles:[],modifiedFiles:[],deletedFiles:[]}}},async cleanup(t){try{let s=a.join(g,"snapshots",t);await o.remove(s).catch(()=>{});let e=F(h,{});e[t]&&(delete e[t],y(h,e))}catch{}}};export{C as a};
@@ -1 +1 @@
1
- import{a as v,b,c as h,d as f}from"./chunk-L3W2X74K.js";import{n as u,o as s,q as m}from"./chunk-M2ULCOL3.js";import r from"fs-extra";import o from"path";r.ensureDirSync(u);var l=null;async function B(e,t){try{if(e.type==="create")await r.pathExists(e.filePath)&&(await r.chmod(e.filePath,438).catch(()=>{}),await r.remove(e.filePath));else if(e.type==="update"){if(!e.backupFile)return;let a=o.join(u,t.chatId,e.backupFile);if(await r.pathExists(a)){let n=h(a,null);if(!n||!n.data)throw new Error(`Backup container corrupt or empty for ${o.basename(e.filePath)}`);let p=b(n.data);await r.pathExists(e.filePath)&&await r.chmod(e.filePath,438).catch(()=>{}),await r.writeFile(e.filePath,p,"utf8")}}}catch(a){throw new Error(`Restoration failed for ${o.basename(e.filePath)}: ${a.message}`)}}async function P(e,t,a=7){let n=0;for(;n<a;)try{return await B(e,t),!0}catch{if(n++,n>=a)return!1;let d=Math.min(100*Math.pow(2,n-1),5e3);await new Promise(i=>setTimeout(i,d))}return!1}var I=null,R={async startTransaction(e,t){I=e,l={id:`tx_prompt_${Date.now()}`,chatId:e,timestamp:new Date().toISOString(),prompt:t.trim(),changes:[],reverted:!1},f(m,l)},async recordFileChange(e,t=null){try{if(!l){if(I){let i=h(s,[]),c=[...i].reverse().find(w=>w.chatId===I);if(c){if(c.changes.some(E=>E.filePath===e))return;let g=await r.pathExists(e)||t?"update":"create",y=null;if(g==="update"){let E=o.basename(e);y=`${c.id}_${E}.bak`;let x=o.join(u,c.chatId);await r.ensureDir(x);let T=o.join(x,y),F=t!==null?t:await r.readFile(e,"utf8").catch(()=>null);F!==null?f(T,{data:v(F)}):(g="create",y=null)}c.changes.push({filePath:e,type:g,backupFile:y}),f(s,i)}}return}if(l.changes.some(i=>i.filePath===e))return;let p=await r.pathExists(e)||t?"update":"create",d=null;if(p==="update"){let i=o.basename(e);d=`${l.id}_${i}.bak`;let c=o.join(u,l.chatId);await r.ensureDir(c);let w=o.join(c,d),k=t!==null?t:await r.readFile(e,"utf8").catch(()=>null);k!==null?f(w,{data:v(k)}):(p="create",d=null)}l.changes.push({filePath:e,type:p,backupFile:d}),f(m,l)}catch{}},async commitTransaction(){if(l)try{let e=h(s,[]);if(e.push(l),e.length>512e3){let t=e.shift();if(t.changes)for(let a of t.changes)a.backupFile&&await r.remove(o.join(u,t.chatId,a.backupFile)).catch(()=>{})}f(s,e),await r.remove(m).catch(()=>{})}catch{}finally{l=null}},async recoverCrashedTransaction(){try{if(await r.pathExists(m)){let e=h(m,null);if(e?.changes?.length>0){let t=h(s,[]);t.some(a=>a.id===e.id)||(t.push(e),f(s,t))}await r.remove(m).catch(()=>{})}}catch{}},async rollbackToBefore(e){let t=h(s,null);if(!t)throw new Error("No transaction ledger found.");let a=t.findIndex(i=>i.id===e);if(a===-1)throw new Error(`Transaction [${e}] not found.`);let n=t[a].chatId,p=t[a].prompt,d=t.slice(a).filter(i=>i.chatId===n&&!i.reverted).reverse();for(let i of d){for(let c of[...i.changes].reverse())await P(c,i);for(let c of i.changes)if(c.backupFile){let w=o.join(u,i.chatId,c.backupFile);await r.remove(w).catch(()=>{})}t=t.filter(c=>c.id!==i.id),f(s,t)}return{success:!0,chatId:n,targetPrompt:p}},async getChatHistory(e){try{return h(s,[]).filter(a=>a.chatId===e&&!a.reverted)}catch{return[]}},async deleteChatBackups(e){try{await r.remove(o.join(u,e));let t=h(s,[]),a=t.filter(n=>n.chatId!==e);t.length!==a.length&&f(s,a)}catch{}}};export{R as a};
1
+ import{a as v,b,c as h,d as f}from"./chunk-P5HBJA23.js";import{n as u,o as s,q as m}from"./chunk-26BQ45XP.js";import r from"fs-extra";import o from"path";r.ensureDirSync(u);var l=null;async function B(e,t){try{if(e.type==="create")await r.pathExists(e.filePath)&&(await r.chmod(e.filePath,438).catch(()=>{}),await r.remove(e.filePath));else if(e.type==="update"){if(!e.backupFile)return;let a=o.join(u,t.chatId,e.backupFile);if(await r.pathExists(a)){let n=h(a,null);if(!n||!n.data)throw new Error(`Backup container corrupt or empty for ${o.basename(e.filePath)}`);let p=b(n.data);await r.pathExists(e.filePath)&&await r.chmod(e.filePath,438).catch(()=>{}),await r.writeFile(e.filePath,p,"utf8")}}}catch(a){throw new Error(`Restoration failed for ${o.basename(e.filePath)}: ${a.message}`)}}async function P(e,t,a=7){let n=0;for(;n<a;)try{return await B(e,t),!0}catch{if(n++,n>=a)return!1;let d=Math.min(100*Math.pow(2,n-1),5e3);await new Promise(i=>setTimeout(i,d))}return!1}var I=null,R={async startTransaction(e,t){I=e,l={id:`tx_prompt_${Date.now()}`,chatId:e,timestamp:new Date().toISOString(),prompt:t.trim(),changes:[],reverted:!1},f(m,l)},async recordFileChange(e,t=null){try{if(!l){if(I){let i=h(s,[]),c=[...i].reverse().find(w=>w.chatId===I);if(c){if(c.changes.some(E=>E.filePath===e))return;let g=await r.pathExists(e)||t?"update":"create",y=null;if(g==="update"){let E=o.basename(e);y=`${c.id}_${E}.bak`;let x=o.join(u,c.chatId);await r.ensureDir(x);let T=o.join(x,y),F=t!==null?t:await r.readFile(e,"utf8").catch(()=>null);F!==null?f(T,{data:v(F)}):(g="create",y=null)}c.changes.push({filePath:e,type:g,backupFile:y}),f(s,i)}}return}if(l.changes.some(i=>i.filePath===e))return;let p=await r.pathExists(e)||t?"update":"create",d=null;if(p==="update"){let i=o.basename(e);d=`${l.id}_${i}.bak`;let c=o.join(u,l.chatId);await r.ensureDir(c);let w=o.join(c,d),k=t!==null?t:await r.readFile(e,"utf8").catch(()=>null);k!==null?f(w,{data:v(k)}):(p="create",d=null)}l.changes.push({filePath:e,type:p,backupFile:d}),f(m,l)}catch{}},async commitTransaction(){if(l)try{let e=h(s,[]);if(e.push(l),e.length>512e3){let t=e.shift();if(t.changes)for(let a of t.changes)a.backupFile&&await r.remove(o.join(u,t.chatId,a.backupFile)).catch(()=>{})}f(s,e),await r.remove(m).catch(()=>{})}catch{}finally{l=null}},async recoverCrashedTransaction(){try{if(await r.pathExists(m)){let e=h(m,null);if(e?.changes?.length>0){let t=h(s,[]);t.some(a=>a.id===e.id)||(t.push(e),f(s,t))}await r.remove(m).catch(()=>{})}}catch{}},async rollbackToBefore(e){let t=h(s,null);if(!t)throw new Error("No transaction ledger found.");let a=t.findIndex(i=>i.id===e);if(a===-1)throw new Error(`Transaction [${e}] not found.`);let n=t[a].chatId,p=t[a].prompt,d=t.slice(a).filter(i=>i.chatId===n&&!i.reverted).reverse();for(let i of d){for(let c of[...i.changes].reverse())await P(c,i);for(let c of i.changes)if(c.backupFile){let w=o.join(u,i.chatId,c.backupFile);await r.remove(w).catch(()=>{})}t=t.filter(c=>c.id!==i.id),f(s,t)}return{success:!0,chatId:n,targetPrompt:p}},async getChatHistory(e){try{return h(s,[]).filter(a=>a.chatId===e&&!a.reverted)}catch{return[]}},async deleteChatBackups(e){try{await r.remove(o.join(u,e));let t=h(s,[]),a=t.filter(n=>n.chatId!==e);t.length!==a.length&&f(s,a)}catch{}}};export{R as a};
@@ -1 +1 @@
1
- import{a as b}from"./chunk-3JI2CRXK.js";import{c as d,d as l}from"./chunk-L3W2X74K.js";import{f as h,g as m,l as C,m as M,s as f}from"./chunk-M2ULCOL3.js";import u from"fs-extra";import j from"path";import{nanoid as L}from"nanoid";var D=Promise.resolve(),A=t=>{let r=D.then(async()=>{try{return await t()}catch(e){throw console.error("Lock Operation Failed:",e),e}});return D=r.catch(()=>{}),r},T=async()=>{await u.ensureDir(m);let t={};if(await u.pathExists(h))try{t=d(h,{})}catch{t={}}for(let r in t){let e=j.join(m,`${r}.json`);Object.defineProperty(t[r],"messages",{get:()=>{if(u.existsSync(e))try{return d(e,[])}catch{return[]}return[]},set:n=>{try{l(e,n)}catch{}},enumerable:!1,configurable:!0})}return t},B=async(t,r,e)=>A(async()=>{await u.ensureDir(m);let n=await T(),s=n[t],i=(e||[]).filter(a=>!a.isUpdateNotification&&(!a.isMeta||a.text&&a.text.includes("Request Cancelled"))),o=a=>{if(!a)return;let I=typeof a=="string"?a:a.text||a.content||"";if(!I||typeof I!="string")return;let w=I.replace(/\s*\n+\s*\[Prompted on:.*?\]/g,"").replace(/\[\/?(?:STEERING HINT|QUESTION)(?::\s*\w+)?\]/gi,"").trim();if(!w)return;let O=w.split(/\s+/),E;return O.length>7?E=O.slice(0,7).join(" ")+"...":w.length>45?E=w.substring(0,45).trimEnd()+"...":E=w,E},c,y=i.filter(a=>a.role==="user"),p=y[0],g=y[y.length-1],x=o(g),H=o(p);s&&s.prompt?Math.random()<.3&&x?c=x:c=s.prompt:c=H||x;let S=r||(s?s.name:`Session ${t.slice(-6)}`),F=j.join(m,`${t}.json`);l(F,i),n[t]={name:S,prompt:c||void 0,updatedAt:Date.now()};let k={};for(let a in n)k[a]={name:n[a].name,prompt:n[a].prompt||void 0,updatedAt:n[a].updatedAt};l(h,k)}),J=async(t,r)=>A(async()=>{let e=await T();e[t]?(e[t].name=r,e[t].updatedAt=Date.now()):e[t]={name:r,updatedAt:Date.now()};let n={};for(let s in e)n[s]={name:e[s].name,prompt:e[s].prompt||void 0,updatedAt:e[s].updatedAt};l(h,n)}),N=async t=>A(async()=>{let r=await T();delete r[t];let e={};for(let o in r)e[o]={name:r[o].name,prompt:r[o].prompt||void 0,updatedAt:r[o].updatedAt};if(l(h,e),await u.pathExists(f))try{let o=d(f,[]);if(Array.isArray(o)){let c=o.filter(y=>Object.keys(y)[0]!==String(t));l(f,c)}}catch{}let n=d(C,{});n[t]&&(delete n[t],l(C,n));let s=d(M,{});s[t]&&(delete s[t],l(M,s)),await b.deleteChatBackups(t);let i=j.join(m,`${t}.json`);if(await u.pathExists(i))try{await u.remove(i)}catch{}return r}),Y=()=>`flow-${L(6)}`,q=async t=>{if(!t||t==="Never")return;let r=parseInt(t);if(isNaN(r))return;let e=await T(),n=Date.now(),s=r*24*60*60*1e3,i=0;for(let o in e){let c=e[o];c.updatedAt&&n-c.updatedAt>s&&(await N(o),i++)}return i},G=(t,r=4)=>{if(t.length<=1)return t;let e=t[0],n=t.slice(1),s=r*2,i=n.slice(s);return[e,...i]};var K=async(t,r,e)=>A(async()=>{let n=d(f,[]);Array.isArray(n)||(n=[]);let s=r||0,i=e||0,o={total:s,context:i},c=n.findIndex(p=>Object.keys(p)[0]===String(t));s===0&&i===0?c!==-1&&n.splice(c,1):c!==-1?n[c]={[String(t)]:o}:n.push({[String(t)]:o});let y=n.filter(p=>{if(!p||typeof p!="object")return!1;let g=Object.keys(p)[0];if(!g)return!1;let x=p[g];return x&&((x.total||0)>0||(x.context||0)>0)});l(f,y)}),Q=async t=>{try{if(!await u.pathExists(f))return{total:0,context:0};let r=d(f,[]);if(!Array.isArray(r))return{total:0,context:0};let e=r.find(n=>Object.keys(n)[0]===String(t));return e?{total:0,context:0,...e[String(t)]}:{total:0,context:0}}catch{return{total:0,context:0}}};export{T as a,B as b,J as c,N as d,Y as e,q as f,G as g,K as h,Q as i};
1
+ import{a as b}from"./chunk-6EYQQ7GQ.js";import{c as d,d as l}from"./chunk-P5HBJA23.js";import{f as h,g as m,l as C,m as M,s as f}from"./chunk-26BQ45XP.js";import u from"fs-extra";import j from"path";import{nanoid as L}from"nanoid";var D=Promise.resolve(),A=t=>{let r=D.then(async()=>{try{return await t()}catch(e){throw console.error("Lock Operation Failed:",e),e}});return D=r.catch(()=>{}),r},T=async()=>{await u.ensureDir(m);let t={};if(await u.pathExists(h))try{t=d(h,{})}catch{t={}}for(let r in t){let e=j.join(m,`${r}.json`);Object.defineProperty(t[r],"messages",{get:()=>{if(u.existsSync(e))try{return d(e,[])}catch{return[]}return[]},set:n=>{try{l(e,n)}catch{}},enumerable:!1,configurable:!0})}return t},B=async(t,r,e)=>A(async()=>{await u.ensureDir(m);let n=await T(),s=n[t],i=(e||[]).filter(a=>!a.isUpdateNotification&&(!a.isMeta||a.text&&a.text.includes("Request Cancelled"))),o=a=>{if(!a)return;let I=typeof a=="string"?a:a.text||a.content||"";if(!I||typeof I!="string")return;let w=I.replace(/\s*\n+\s*\[Prompted on:.*?\]/g,"").replace(/\[\/?(?:STEERING HINT|QUESTION)(?::\s*\w+)?\]/gi,"").trim();if(!w)return;let O=w.split(/\s+/),E;return O.length>7?E=O.slice(0,7).join(" ")+"...":w.length>45?E=w.substring(0,45).trimEnd()+"...":E=w,E},c,y=i.filter(a=>a.role==="user"),p=y[0],g=y[y.length-1],x=o(g),H=o(p);s&&s.prompt?Math.random()<.3&&x?c=x:c=s.prompt:c=H||x;let S=r||(s?s.name:`Session ${t.slice(-6)}`),F=j.join(m,`${t}.json`);l(F,i),n[t]={name:S,prompt:c||void 0,updatedAt:Date.now()};let k={};for(let a in n)k[a]={name:n[a].name,prompt:n[a].prompt||void 0,updatedAt:n[a].updatedAt};l(h,k)}),J=async(t,r)=>A(async()=>{let e=await T();e[t]?(e[t].name=r,e[t].updatedAt=Date.now()):e[t]={name:r,updatedAt:Date.now()};let n={};for(let s in e)n[s]={name:e[s].name,prompt:e[s].prompt||void 0,updatedAt:e[s].updatedAt};l(h,n)}),N=async t=>A(async()=>{let r=await T();delete r[t];let e={};for(let o in r)e[o]={name:r[o].name,prompt:r[o].prompt||void 0,updatedAt:r[o].updatedAt};if(l(h,e),await u.pathExists(f))try{let o=d(f,[]);if(Array.isArray(o)){let c=o.filter(y=>Object.keys(y)[0]!==String(t));l(f,c)}}catch{}let n=d(C,{});n[t]&&(delete n[t],l(C,n));let s=d(M,{});s[t]&&(delete s[t],l(M,s)),await b.deleteChatBackups(t);let i=j.join(m,`${t}.json`);if(await u.pathExists(i))try{await u.remove(i)}catch{}return r}),Y=()=>`flow-${L(6)}`,q=async t=>{if(!t||t==="Never")return;let r=parseInt(t);if(isNaN(r))return;let e=await T(),n=Date.now(),s=r*24*60*60*1e3,i=0;for(let o in e){let c=e[o];c.updatedAt&&n-c.updatedAt>s&&(await N(o),i++)}return i},G=(t,r=4)=>{if(t.length<=1)return t;let e=t[0],n=t.slice(1),s=r*2,i=n.slice(s);return[e,...i]};var K=async(t,r,e)=>A(async()=>{let n=d(f,[]);Array.isArray(n)||(n=[]);let s=r||0,i=e||0,o={total:s,context:i},c=n.findIndex(p=>Object.keys(p)[0]===String(t));s===0&&i===0?c!==-1&&n.splice(c,1):c!==-1?n[c]={[String(t)]:o}:n.push({[String(t)]:o});let y=n.filter(p=>{if(!p||typeof p!="object")return!1;let g=Object.keys(p)[0];if(!g)return!1;let x=p[g];return x&&((x.total||0)>0||(x.context||0)>0)});l(f,y)}),Q=async t=>{try{if(!await u.pathExists(f))return{total:0,context:0};let r=d(f,[]);if(!Array.isArray(r))return{total:0,context:0};let e=r.find(n=>Object.keys(n)[0]===String(t));return e?{total:0,context:0,...e[String(t)]}:{total:0,context:0}}catch{return{total:0,context:0}}};export{T as a,B as b,J as c,N as d,Y as e,q as f,G as g,K as h,Q as i};
@@ -2,4 +2,4 @@ import{screen as V}from"@nut-tree-fork/nut-js";import P from"screenshot-desktop"
2
2
  <rect x="${M+1}" y="${m+1}" width="${X-2}" height="${a-2}" fill="rgba(0, 255, 255, 0.015)" stroke="rgba(255, 255, 0, 0.3)" stroke-width="1.1" rx="2"/>
3
3
  `;let x=s.some(t=>t!==n&&t.startY+t.cellH>=m-6&&t.startY<m&&Math.max(0,Math.min(M+X,t.startX+t.cellW)-Math.max(M,t.startX))>10),T=s.some(t=>t!==n&&t.startY<=m+a+6&&t.startY>m&&Math.max(0,Math.min(M+X,t.startX+t.cellW)-Math.max(M,t.startX))>10),u;if(n.isCustomY)u=f,!x&&u<m+11&&(u=Math.max(10,Math.min(u,m+4)));else{let t=n.yOffset!==void 0?n.yOffset:3;!x&&t<0&&(t=Math.min(t,-12));let w=f+t,W=!x&&(t<0||w<m+11)?Math.max(10,m+4):m+11,I=!T&&(t>0||w>m+a-2)?Math.min(o-2,m+a+6):m+a+3;u=Math.max(W,Math.min(I,w))}p+=`
4
4
  <text x="${l}" y="${u}" font-family="'Segoe UI', Roboto, sans-serif" font-size="14" font-weight="600" fill="#FFFF00" stroke="#000000" stroke-width="2" paint-order="stroke fill" stroke-linejoin="round" opacity="0.8" text-anchor="middle">${y}</text>
5
- `}return`<svg width="${e}" height="${o}" xmlns="http://www.w3.org/2000/svg">${p}</svg>`}var tt=1,j=e=>new Promise(o=>setTimeout(o,e));async function et(){try{let{loadSettings:e}=await import("./settings-5R5ADGXX.js"),o=await e();return Number(o.display||0)}catch{return 0}}async function lt(){let e=await et();try{let o=await P.listDisplays();if(o&&o.length>0)return{format:"png",screen:(o[e]||o[0]).id}}catch{}return{format:"png"}}async function ct(){let e=0,o=await lt();for(;e<2;){let C=await P(o);await j(500);let Y=await P(o);if(C.equals(Y))return Y;e++,e<2&&await j(3e3)}return await j(3e3),await P(o)}function at(e=[],o=[]){if(!e||e.length===0)return o||[];if(!o||o.length===0)return e;let C=[...e],Y=typeof e.getModelConfidence=="function"?e.getModelConfidence.bind(e):null;for(let s of o){if(Y&&Y(s.startX,s.startY,s.cellW,s.cellH)<.01)continue;let c=s.startX,i=s.startX+s.cellW,p=s.startY,n=s.startY+s.cellH;for(let y of e){let x=y.startX,T=y.startY,u=y.startX+y.cellW,t=y.startY+y.cellH;if(Math.max(0,Math.min(n,t)-Math.max(p,T))>s.cellH*.4&&x<i&&u>c){let W=(x+u)/2,I=(c+i)/2;W<=I?c=Math.max(c,u):i=Math.min(i,x)}}let r=i-c;if(r<18)continue;let g=c,M=p,m=i,X=n,a=Math.floor(c+r/2),l=s.cy,f=!1;for(let y of e){let x=y.startX,T=y.startY,u=y.startX+y.cellW,t=y.startY+y.cellH;if(a>=x&&a<=u&&l>=T&&l<=t){f=!0;break}let w=Math.max(g,x),W=Math.max(M,T),I=Math.min(m,u),v=Math.min(X,t),H=Math.max(0,I-w)*Math.max(0,v-W),d=(m-g)*(X-M);if(H/(d||1)>=.25){f=!0;break}}f||C.push({...s,startX:g,cellW:r,cx:a})}return C.sort((s,c)=>Math.abs(s.startY-c.startY)>18?s.startY-c.startY:s.startX-c.startX),C.forEach((s,c)=>{s.badgeId=c+1}),C}async function yt(){try{let e=await ct(),o=null;if(st){let n=(async()=>{try{let{detectUIBoxesONNX:r}=await import("./ui_detector_onnx-XRKXFWLG.js");return await r(e,h.TARGET_WIDTH,h.TARGET_HEIGHT)}catch{return null}})();if(nt)o=await n||[];else{let r=z(e,!0),[g,M]=await Promise.all([n,r]);o=g&&g.length>0?at(g,M):await z(e,!1)}}else o=await z(e,!1);L=o;let C=rt(h.TARGET_WIDTH,h.TARGET_HEIGHT,h.COLS,h.ROWS,o),Y=await Z(e).resize(h.TARGET_WIDTH,h.TARGET_HEIGHT,{fit:"fill"}).composite([{input:Buffer.from(C),top:0,left:0}]).png({quality:100}).toBuffer();if(process.env.SHOW_DEBUG_GRID)try{let n=Q.resolve(process.cwd(),"screenshots");await K.ensureDir(n);let r=Q.join(n,`${tt}.png`);await K.writeFile(r,Y),tt++}catch{}let s=Y.toString("base64"),c=o.length,i=e,p=Y;return i=null,p=null,{base64:s,mimeType:"image/png",width:h.TARGET_WIDTH,height:h.TARGET_HEIGHT,detectedCount:c}}catch(e){return console.error("Failed to capture gridded screenshot:",e),null}}function it(e){if(e==null)return null;let o=null;if(typeof e=="number")o=e;else if(typeof e=="string"){let g=e.trim();if(/^\d+$/.test(g))o=parseInt(g,10);else{let M=g.match(/^([A-Z])([0-9]{1,2})$/i);if(M){let m=M[1].toUpperCase().charCodeAt(0)-65,X=parseInt(M[2],10)-1;o=m*h.COLS+X+1}}}if(o===null||isNaN(o))return null;if(L&&L.length>0){let g=L.find(M=>M.badgeId===o)||L.find(M=>M.cellNum===o);if(g){let M=Math.floor((g.cellNum-1)%h.COLS),m=Math.floor((g.cellNum-1)/h.COLS);return{x:g.cx,y:g.cy,colIdx:M>=0?M:0,rowIdx:m>=0?m:0,cellNum:o}}}let C=h.COLS*h.ROWS;if(o<1||o>C)return null;let Y=o-1,s=Math.floor(Y/h.COLS),c=Y%h.COLS,i=h.TARGET_WIDTH/h.COLS,p=h.TARGET_HEIGHT/h.ROWS,n=Math.floor(c*i+i/2),r=Math.floor(s*p+p/2);return{x:n,y:r,colIdx:c,rowIdx:s,cellNum:o}}async function Mt(e,o,C){let Y=null;if(typeof e=="number"||typeof e=="string"?Y=it(e):e&&typeof e.x=="number"&&typeof e.y=="number"&&(Y=e),!Y)return null;let s=o,c=C,i=0,p=0,n=await et();try{let X=await P.listDisplays();if(X&&X.length>0){let a=X[n]||X[0];a.width&&a.height&&(s=a.width,c=a.height),a.left!==void 0&&(i=a.left),a.top!==void 0&&(p=a.top)}}catch{}if(!s||!c)try{let X=await P({}),a=await Z(X).metadata();a&&a.width&&a.height?(s=a.width,c=a.height):(s=await V.width(),c=await V.height())}catch{(!s||!c)&&(s=await V.width(),c=await V.height())}let r=s/h.TARGET_WIDTH,g=c/h.TARGET_HEIGHT,M=Math.round(Y.x*r)+i,m=Math.round(Y.y*g)+p;return{x:M,y:m,screenW:s,screenH:c,offsetX:i,offsetY:p}}function pt(e){if(!e||typeof e.x!="number"||typeof e.y!="number")return null;if(L&&L.length>0){let c=L.find(n=>e.x>=n.startX&&e.x<=n.startX+n.cellW&&e.y>=n.startY&&e.y<=n.startY+n.cellH);if(c)return c.badgeId!==void 0?c.badgeId:c.cellNum;let i=null,p=1/0;for(let n of L){let r=e.x-n.cx,g=e.y-n.cy,M=r*r+g*g;M<p&&(p=M,i=n)}if(i&&p<=2025)return i.badgeId!==void 0?i.badgeId:i.cellNum}let o=h.TARGET_WIDTH/h.COLS,C=h.TARGET_HEIGHT/h.ROWS,Y=Math.max(0,Math.min(h.COLS-1,Math.floor(e.x/o)));return Math.max(0,Math.min(h.ROWS-1,Math.floor(e.y/C)))*h.COLS+Y+1}export{h as a,st as b,nt as c,et as d,yt as e,it as f,Mt as g,pt as h};
5
+ `}return`<svg width="${e}" height="${o}" xmlns="http://www.w3.org/2000/svg">${p}</svg>`}var tt=1,j=e=>new Promise(o=>setTimeout(o,e));async function et(){try{let{loadSettings:e}=await import("./settings-ZBXCJL25.js"),o=await e();return Number(o.display||0)}catch{return 0}}async function lt(){let e=await et();try{let o=await P.listDisplays();if(o&&o.length>0)return{format:"png",screen:(o[e]||o[0]).id}}catch{}return{format:"png"}}async function ct(){let e=0,o=await lt();for(;e<2;){let C=await P(o);await j(500);let Y=await P(o);if(C.equals(Y))return Y;e++,e<2&&await j(3e3)}return await j(3e3),await P(o)}function at(e=[],o=[]){if(!e||e.length===0)return o||[];if(!o||o.length===0)return e;let C=[...e],Y=typeof e.getModelConfidence=="function"?e.getModelConfidence.bind(e):null;for(let s of o){if(Y&&Y(s.startX,s.startY,s.cellW,s.cellH)<.01)continue;let c=s.startX,i=s.startX+s.cellW,p=s.startY,n=s.startY+s.cellH;for(let y of e){let x=y.startX,T=y.startY,u=y.startX+y.cellW,t=y.startY+y.cellH;if(Math.max(0,Math.min(n,t)-Math.max(p,T))>s.cellH*.4&&x<i&&u>c){let W=(x+u)/2,I=(c+i)/2;W<=I?c=Math.max(c,u):i=Math.min(i,x)}}let r=i-c;if(r<18)continue;let g=c,M=p,m=i,X=n,a=Math.floor(c+r/2),l=s.cy,f=!1;for(let y of e){let x=y.startX,T=y.startY,u=y.startX+y.cellW,t=y.startY+y.cellH;if(a>=x&&a<=u&&l>=T&&l<=t){f=!0;break}let w=Math.max(g,x),W=Math.max(M,T),I=Math.min(m,u),v=Math.min(X,t),H=Math.max(0,I-w)*Math.max(0,v-W),d=(m-g)*(X-M);if(H/(d||1)>=.25){f=!0;break}}f||C.push({...s,startX:g,cellW:r,cx:a})}return C.sort((s,c)=>Math.abs(s.startY-c.startY)>18?s.startY-c.startY:s.startX-c.startX),C.forEach((s,c)=>{s.badgeId=c+1}),C}async function yt(){try{let e=await ct(),o=null;if(st){let n=(async()=>{try{let{detectUIBoxesONNX:r}=await import("./ui_detector_onnx-XRKXFWLG.js");return await r(e,h.TARGET_WIDTH,h.TARGET_HEIGHT)}catch{return null}})();if(nt)o=await n||[];else{let r=z(e,!0),[g,M]=await Promise.all([n,r]);o=g&&g.length>0?at(g,M):await z(e,!1)}}else o=await z(e,!1);L=o;let C=rt(h.TARGET_WIDTH,h.TARGET_HEIGHT,h.COLS,h.ROWS,o),Y=await Z(e).resize(h.TARGET_WIDTH,h.TARGET_HEIGHT,{fit:"fill"}).composite([{input:Buffer.from(C),top:0,left:0}]).png({quality:100}).toBuffer();if(process.env.SHOW_DEBUG_GRID)try{let n=Q.resolve(process.cwd(),"screenshots");await K.ensureDir(n);let r=Q.join(n,`${tt}.png`);await K.writeFile(r,Y),tt++}catch{}let s=Y.toString("base64"),c=o.length,i=e,p=Y;return i=null,p=null,{base64:s,mimeType:"image/png",width:h.TARGET_WIDTH,height:h.TARGET_HEIGHT,detectedCount:c}}catch(e){return console.error("Failed to capture gridded screenshot:",e),null}}function it(e){if(e==null)return null;let o=null;if(typeof e=="number")o=e;else if(typeof e=="string"){let g=e.trim();if(/^\d+$/.test(g))o=parseInt(g,10);else{let M=g.match(/^([A-Z])([0-9]{1,2})$/i);if(M){let m=M[1].toUpperCase().charCodeAt(0)-65,X=parseInt(M[2],10)-1;o=m*h.COLS+X+1}}}if(o===null||isNaN(o))return null;if(L&&L.length>0){let g=L.find(M=>M.badgeId===o)||L.find(M=>M.cellNum===o);if(g){let M=Math.floor((g.cellNum-1)%h.COLS),m=Math.floor((g.cellNum-1)/h.COLS);return{x:g.cx,y:g.cy,colIdx:M>=0?M:0,rowIdx:m>=0?m:0,cellNum:o}}}let C=h.COLS*h.ROWS;if(o<1||o>C)return null;let Y=o-1,s=Math.floor(Y/h.COLS),c=Y%h.COLS,i=h.TARGET_WIDTH/h.COLS,p=h.TARGET_HEIGHT/h.ROWS,n=Math.floor(c*i+i/2),r=Math.floor(s*p+p/2);return{x:n,y:r,colIdx:c,rowIdx:s,cellNum:o}}async function Mt(e,o,C){let Y=null;if(typeof e=="number"||typeof e=="string"?Y=it(e):e&&typeof e.x=="number"&&typeof e.y=="number"&&(Y=e),!Y)return null;let s=o,c=C,i=0,p=0,n=await et();try{let X=await P.listDisplays();if(X&&X.length>0){let a=X[n]||X[0];a.width&&a.height&&(s=a.width,c=a.height),a.left!==void 0&&(i=a.left),a.top!==void 0&&(p=a.top)}}catch{}if(!s||!c)try{let X=await P({}),a=await Z(X).metadata();a&&a.width&&a.height?(s=a.width,c=a.height):(s=await V.width(),c=await V.height())}catch{(!s||!c)&&(s=await V.width(),c=await V.height())}let r=s/h.TARGET_WIDTH,g=c/h.TARGET_HEIGHT,M=Math.round(Y.x*r)+i,m=Math.round(Y.y*g)+p;return{x:M,y:m,screenW:s,screenH:c,offsetX:i,offsetY:p}}function pt(e){if(!e||typeof e.x!="number"||typeof e.y!="number")return null;if(L&&L.length>0){let c=L.find(n=>e.x>=n.startX&&e.x<=n.startX+n.cellW&&e.y>=n.startY&&e.y<=n.startY+n.cellH);if(c)return c.badgeId!==void 0?c.badgeId:c.cellNum;let i=null,p=1/0;for(let n of L){let r=e.x-n.cx,g=e.y-n.cy,M=r*r+g*g;M<p&&(p=M,i=n)}if(i&&p<=2025)return i.badgeId!==void 0?i.badgeId:i.cellNum}let o=h.TARGET_WIDTH/h.COLS,C=h.TARGET_HEIGHT/h.ROWS,Y=Math.max(0,Math.min(h.COLS-1,Math.floor(e.x/o)));return Math.max(0,Math.min(h.ROWS-1,Math.floor(e.y/C)))*h.COLS+Y+1}export{h as a,st as b,nt as c,et as d,yt as e,it as f,Mt as g,pt as h};
@@ -1 +1 @@
1
- import{g as f}from"./chunk-MJL6DHQM.js";import{mouse as c,keyboard as i,Button as u,Key as e,Point as l,clipboard as g}from"@nut-tree-fork/nut-js";c.config.autoDelayMs=50;i.config.autoDelayMs=50;async function w(){try{await i.releaseKey(e.LeftControl,e.RightControl,e.LeftAlt,e.RightAlt,e.LeftShift,e.RightShift,e.LeftSuper,e.RightSuper)}catch{}}async function h(n,t,s={}){let r=await f(t);if(!r&&(n==="move"||n==="click"||n==="drag"))return`ERROR: Invalid target location specified: ${JSON.stringify(t)}`;try{switch(n.toLowerCase()){case"move":return await c.setPosition(new l(r.x,r.y)),`Moved mouse to grid target ${typeof t=="string"?t:`(${r.x}, ${r.y})`}`;case"click":{await c.setPosition(new l(r.x,r.y));let a=s.button==="right"?u.RIGHT:s.button==="middle"?u.MIDDLE:u.LEFT;return s.clickType==="double"?await c.doubleClick(a):await c.click(a),`${s.clickType||"Single"} clicked ${s.button||"left"} button at ${typeof t=="string"?t:`(${r.x}, ${r.y})`}`}case"drag":{let a=await f(s.from||t),o=await f(s.to);return!a||!o?'ERROR: Drag requires valid "from" and "to" target coordinates/grid codes.':(await c.setPosition(new l(a.x,a.y)),await c.pressButton(u.LEFT),await c.setPosition(new l(o.x,o.y)),await c.releaseButton(u.LEFT),`Dragged mouse from (${a.x}, ${a.y}) to (${o.x}, ${o.y})`)}case"scroll":{let a=r||await f({x:640,y:360});a&&(await c.setPosition(new l(a.x,a.y)),await new Promise(d=>setTimeout(d,60)));let o=parseInt(s.amount,10);(isNaN(o)||o<=0)&&(o=5);let y=o>50?Math.min(20,Math.max(1,Math.round(o/100))):Math.min(20,o),R=s.direction==="up";for(let d=0;d<y;d++)R?await c.scrollUp(120):await c.scrollDown(120),await new Promise(L=>setTimeout(L,20));return`Scrolled ${s.direction||"down"} (${y} notches${r?` at target (${r.x}, ${r.y})`:" at screen center"})`}default:return`ERROR: Unsupported mouse action "${n}"`}}catch(a){return`ERROR: Mouse action failed: ${a.message}`}}var m={enter:e.Enter,return:e.Return,escape:e.Escape,esc:e.Escape,backspace:e.Backspace,tab:e.Tab,space:e.Space,up:e.Up,down:e.Down,left:e.Left,right:e.Right,ctrl:e.LeftControl,control:e.LeftControl,alt:e.LeftAlt,shift:e.LeftShift,cmd:e.LeftCmd,win:e.LeftWin,meta:e.LeftWin,super:e.LeftSuper,a:e.A,b:e.B,c:e.C,d:e.D,e:e.E,f:e.F,g:e.G,h:e.H,i:e.I,j:e.J,k:e.K,l:e.L,m:e.M,n:e.N,o:e.O,p:e.P,q:e.Q,r:e.R,s:e.S,t:e.T,u:e.U,v:e.V,w:e.W,x:e.X,y:e.Y,z:e.Z,0:e.Num0,1:e.Num1,2:e.Num2,3:e.Num3,4:e.Num4,5:e.Num5,6:e.Num6,7:e.Num7,8:e.Num8,9:e.Num9,f1:e.F1,f2:e.F2,f3:e.F3,f4:e.F4,f5:e.F5,f6:e.F6,f7:e.F7,f8:e.F8,f9:e.F9,f10:e.F10,f11:e.F11,f12:e.F12},p=n=>{if(!n)return;let t=String(n).toLowerCase().trim();if(m[t]!==void 0)return m[t];if(e[n]!==void 0)return e[n];if(e[t.toUpperCase()]!==void 0)return e[t.toUpperCase()]};async function E(n,t,s={}){try{switch(n.toLowerCase()){case"type":{if(typeof t!="string")return"ERROR: Type action requires a valid string input";await w(),await g.setContent(t);let a=process.platform==="darwin"?e.LeftSuper:e.LeftControl;return await i.pressKey(a,e.V),await i.releaseKey(a,e.V),await w(),s.autoPressEnter?(await new Promise(o=>setTimeout(o,50)),await i.type(e.Enter),`Typed text input ("${t.length>20?t.substring(0,20)+"...":t}") and pressed Enter`):`Typed text input ("${t.length>20?t.substring(0,20)+"...":t}")`}case"key_press":{let r=p(t);return r===void 0?`ERROR: Unknown key name "${t}"`:(await i.type(r),`Pressed key ${t}`)}case"key_combination":{if(!Array.isArray(t))return'ERROR: key_combination requires an array of keys (e.g. ["ctrl", "c"])';let r=t.map(a=>p(a)).filter(a=>a!==void 0);return r.length===0?"ERROR: Invalid key combination":(await i.pressKey(...r),await i.releaseKey(...r),`Executed key combination [${t.join(" + ")}]`)}case"clear_input":return await i.pressKey(e.LeftControl,e.A),await i.releaseKey(e.LeftControl,e.A),await i.type(e.Backspace),"Cleared active text input (Select All + Backspace)";case"browser_back":{let r=process.platform==="darwin";return r?(await i.pressKey(e.LeftSuper,e.Left),await i.releaseKey(e.LeftSuper,e.Left)):(await i.pressKey(e.LeftAlt,e.Left),await i.releaseKey(e.LeftAlt,e.Left)),await w(),`Browser back navigation (${r?"Cmd+Left":"Alt+Left"})`}default:return`ERROR: Unsupported keyboard action "${n}"`}}catch(r){return`ERROR: Keyboard action failed: ${r.message}`}}export{h as a,E as b};
1
+ import{g as f}from"./chunk-77QN4HDY.js";import{mouse as c,keyboard as i,Button as u,Key as e,Point as l,clipboard as g}from"@nut-tree-fork/nut-js";c.config.autoDelayMs=50;i.config.autoDelayMs=50;async function w(){try{await i.releaseKey(e.LeftControl,e.RightControl,e.LeftAlt,e.RightAlt,e.LeftShift,e.RightShift,e.LeftSuper,e.RightSuper)}catch{}}async function h(n,t,s={}){let r=await f(t);if(!r&&(n==="move"||n==="click"||n==="drag"))return`ERROR: Invalid target location specified: ${JSON.stringify(t)}`;try{switch(n.toLowerCase()){case"move":return await c.setPosition(new l(r.x,r.y)),`Moved mouse to grid target ${typeof t=="string"?t:`(${r.x}, ${r.y})`}`;case"click":{await c.setPosition(new l(r.x,r.y));let a=s.button==="right"?u.RIGHT:s.button==="middle"?u.MIDDLE:u.LEFT;return s.clickType==="double"?await c.doubleClick(a):await c.click(a),`${s.clickType||"Single"} clicked ${s.button||"left"} button at ${typeof t=="string"?t:`(${r.x}, ${r.y})`}`}case"drag":{let a=await f(s.from||t),o=await f(s.to);return!a||!o?'ERROR: Drag requires valid "from" and "to" target coordinates/grid codes.':(await c.setPosition(new l(a.x,a.y)),await c.pressButton(u.LEFT),await c.setPosition(new l(o.x,o.y)),await c.releaseButton(u.LEFT),`Dragged mouse from (${a.x}, ${a.y}) to (${o.x}, ${o.y})`)}case"scroll":{let a=r||await f({x:640,y:360});a&&(await c.setPosition(new l(a.x,a.y)),await new Promise(d=>setTimeout(d,60)));let o=parseInt(s.amount,10);(isNaN(o)||o<=0)&&(o=5);let y=o>50?Math.min(20,Math.max(1,Math.round(o/100))):Math.min(20,o),R=s.direction==="up";for(let d=0;d<y;d++)R?await c.scrollUp(120):await c.scrollDown(120),await new Promise(L=>setTimeout(L,20));return`Scrolled ${s.direction||"down"} (${y} notches${r?` at target (${r.x}, ${r.y})`:" at screen center"})`}default:return`ERROR: Unsupported mouse action "${n}"`}}catch(a){return`ERROR: Mouse action failed: ${a.message}`}}var m={enter:e.Enter,return:e.Return,escape:e.Escape,esc:e.Escape,backspace:e.Backspace,tab:e.Tab,space:e.Space,up:e.Up,down:e.Down,left:e.Left,right:e.Right,ctrl:e.LeftControl,control:e.LeftControl,alt:e.LeftAlt,shift:e.LeftShift,cmd:e.LeftCmd,win:e.LeftWin,meta:e.LeftWin,super:e.LeftSuper,a:e.A,b:e.B,c:e.C,d:e.D,e:e.E,f:e.F,g:e.G,h:e.H,i:e.I,j:e.J,k:e.K,l:e.L,m:e.M,n:e.N,o:e.O,p:e.P,q:e.Q,r:e.R,s:e.S,t:e.T,u:e.U,v:e.V,w:e.W,x:e.X,y:e.Y,z:e.Z,0:e.Num0,1:e.Num1,2:e.Num2,3:e.Num3,4:e.Num4,5:e.Num5,6:e.Num6,7:e.Num7,8:e.Num8,9:e.Num9,f1:e.F1,f2:e.F2,f3:e.F3,f4:e.F4,f5:e.F5,f6:e.F6,f7:e.F7,f8:e.F8,f9:e.F9,f10:e.F10,f11:e.F11,f12:e.F12},p=n=>{if(!n)return;let t=String(n).toLowerCase().trim();if(m[t]!==void 0)return m[t];if(e[n]!==void 0)return e[n];if(e[t.toUpperCase()]!==void 0)return e[t.toUpperCase()]};async function E(n,t,s={}){try{switch(n.toLowerCase()){case"type":{if(typeof t!="string")return"ERROR: Type action requires a valid string input";await w(),await g.setContent(t);let a=process.platform==="darwin"?e.LeftSuper:e.LeftControl;return await i.pressKey(a,e.V),await i.releaseKey(a,e.V),await w(),s.autoPressEnter?(await new Promise(o=>setTimeout(o,50)),await i.type(e.Enter),`Typed text input ("${t.length>20?t.substring(0,20)+"...":t}") and pressed Enter`):`Typed text input ("${t.length>20?t.substring(0,20)+"...":t}")`}case"key_press":{let r=p(t);return r===void 0?`ERROR: Unknown key name "${t}"`:(await i.type(r),`Pressed key ${t}`)}case"key_combination":{if(!Array.isArray(t))return'ERROR: key_combination requires an array of keys (e.g. ["ctrl", "c"])';let r=t.map(a=>p(a)).filter(a=>a!==void 0);return r.length===0?"ERROR: Invalid key combination":(await i.pressKey(...r),await i.releaseKey(...r),`Executed key combination [${t.join(" + ")}]`)}case"clear_input":return await i.pressKey(e.LeftControl,e.A),await i.releaseKey(e.LeftControl,e.A),await i.type(e.Backspace),"Cleared active text input (Select All + Backspace)";case"browser_back":{let r=process.platform==="darwin";return r?(await i.pressKey(e.LeftSuper,e.Left),await i.releaseKey(e.LeftSuper,e.Left)):(await i.pressKey(e.LeftAlt,e.Left),await i.releaseKey(e.LeftAlt,e.Left)),await w(),`Browser back navigation (${r?"Cmd+Left":"Alt+Left"})`}default:return`ERROR: Unsupported keyboard action "${n}"`}}catch(r){return`ERROR: Keyboard action failed: ${r.message}`}}export{h as a,E as b};
@@ -1,4 +1,4 @@
1
- import{c as z}from"./chunk-M2ULCOL3.js";import G from"os";import{structuredPatch as V}from"diff";var R=t=>typeof t!="string"?t:t.length>12?(t+"").replace("",""):t,v=(t,r)=>{if(!t)return"";let d=/\x1B\[[0-?]*[ -/]*[@-~]/g,p=t.split(`
1
+ import{c as z}from"./chunk-26BQ45XP.js";import G from"os";import{structuredPatch as V}from"diff";var R=t=>typeof t!="string"?t:t.length>12?(t+"").replace("",""):t,v=(t,r)=>{if(!t)return"";let d=/\x1B\[[0-?]*[ -/]*[@-~]/g,p=t.split(`
2
2
  `),c=[];if(r<=5)return t;let l=e=>e<32||e>=127&&e<160||e>=768&&e<=879||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071?0:e>=4352&&e<=4447||e>=9001&&e<=9002||e>=11904&&e<=12350||e>=12352&&e<=42191||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=127744&&e<=128591||e>=128640&&e<=128767||e>=131072&&e<=262141?2:1,x=e=>{let i=e.replace(d,""),s=0;for(let o=0;o<i.length;o++){let u=i.codePointAt(o);u>65535&&o++,s+=l(u)}return s},C=(e,i)=>{let s=0,o=e.length,u=!1;for(let g=0;g<e.length;g++){if(e[g]==="\x1B"&&e[g+1]==="["&&(u=!0),u){(e[g]==="m"||e[g]>="@"&&e[g]<="~"&&e[g]!=="[")&&(u=!1);continue}let F=e.codePointAt(g);F>65535&&g++;let L=l(F);if(s+L>i){o=F>65535?g-1:g;break}if(s+=L,s>=i){o=g+1;break}}return{head:e.substring(0,o),tail:e.substring(o)}};return p.forEach(e=>{if(x(e)<=r){c.push(e);return}let s=e.split(/(\s+)/),o="",u=0,g=e.match(/^(\s*)/),F=g?g[1]:"";s.forEach(L=>{if(L.length===0)return;let h=L;for(;h.length>0;){let $=x(h);if(u+$<=r){o+=h,u+=$;break}o.trim().length>0&&(c.push(o.trimEnd()),o=F.substring(0,Math.min(F.length,8)),u=x(o));let n=Math.max(1,r-u);if(x(h)>n){let{head:a,tail:f}=C(h,n);c.push((o+a).trimEnd()),o=F.substring(0,Math.min(F.length,8)),u=x(o),h=f}else o+=h,u+=x(h),h=""}}),(o.trimEnd().length>0||o===F)&&c.push(o.trimEnd())}),R(c.join(`
3
3
  `))},ot=t=>{if(!t)return 0;let r=0,d=t.match(/[\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af]/g);d&&(r+=d.length*.55);let p=t.replace(/[\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af]/g," "),c=p.match(/[<>/\._@#$%^&*+=`~|\\:;!?'"()\[\]{}-]+/g);c&&(r+=c.length);let l=p.split(/[\s<>/\._@#$%^&*+=`~|\\:;!?'"()\[\]{}-]+/g).filter(Boolean);return r+=l.length,Math.max(.1,r)},lt=t=>t?t.match(/[\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af]|\s+|[<>/\._@#$%^&*+=`~|\\:;!?'"()\[\]{}-]+|[^\s<>/\._@#$%^&*+=`~|\\:;!?'"()\[\]{}\-\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\uac00-\ud7af]+/g)||[t]:[],ct=t=>{if(!t&&t!==0)return"0.0k";let r=typeof t=="string"?parseFloat(t):t;return r>=1e6?`${(r/1e6).toFixed(1)}m`:r>=1e3?`${(r/1e3).toFixed(1)}k`:r.toString()},at=(t,r=40)=>{let d=z.replaceAll("\\\\","\\");if(t=t.replace(G.homedir(),"~").replace(d,"FluxFlow").replaceAll("\\","/"),!t||t.length<=r)return R(t);let p=Math.floor((r-3)/2);return R(t.substring(0,p)+"..."+t.substring(t.length-p).replaceAll("\\","/"))},ft=t=>{let r=[],d=new Set,p=t.allowMultiple===!0||String(t.allowMultiple).toLowerCase()==="true";Object.keys(t).forEach(e=>{let i=e.match(/^(searchContent|search_content|replaceContent|replace_content|newContent|new_content|content_to_replace|content_to_add|searchBlock|search_block|newBlock|new_block)_?(\d+)?$/i);if(i){let s=i[2]?parseInt(i[2],10):1;d.add(s)}});let c=Array.from(d).sort((e,i)=>e-i),l=["searchContent","search_content","replaceContent","replace_content","content_to_replace","searchBlock","search_block"],x=["newContent","new_content","content_to_add","newBlock","new_block"],C=(e,i,s)=>{let o,u;for(let g of i){let F=e===1?[`${g}1`,g,`${g}_1`]:[`${g}${e}`,`${g}_${e}`];for(let L of F)if(t[L]!==void 0){o=t[L];break}if(o!==void 0)break}for(let g of s){let F=e===1?[`${g}1`,g,`${g}_1`]:[`${g}${e}`,`${g}_${e}`];for(let L of F)if(t[L]!==void 0){u=t[L];break}if(u!==void 0)break}return{r:o,n:u}};for(let e of c){let{r:i,n:s}=C(e,l,x);if(i!==void 0&&s!==void 0)r.push({replace:i,new:s});else if(i!==void 0||s!==void 0)return{error:`Mismatched replacement pair for index ${e}. Both replacement and new content must be provided.`,allowMultiple:p}}return{patchPairs:r,allowMultiple:p}},K=t=>{if(!t)return null;let r="",d=0,p=t.length;for(;d<p;){let c=t[d];if(c==="\\"){for(;d<p&&t[d]==="\\";)d++;r+="\\\\*"}else if(c===`
4
4
  `)r+="(?:\\r?\\n|\\\\*n|\\\\*r|\\s*)",d++;else if(c==="\r")r+="(?:\\r|\\\\*r)?",d++;else if(c===" ")r+="(?:\\t|\\\\*t|\\s*)",d++;else if(c==='"'||c==="'"||c==="`")r.endsWith("\\\\*")||(r+="\\\\*"),r+=c,d++;else if(/[.*+?^${}()|[\]]/.test(c))r+="\\"+c,d++;else if(/\s/.test(c)){for(;d<p&&/\s/.test(t[d])&&t[d]!==`