@easbot/agent 0.2.23 → 0.2.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/txt/tool/gateway-channel.txt +51 -12
- package/dist/chunks/acp-STZJ75XV.mjs +16 -0
- package/dist/chunks/adapter-loader-BLTYHARQ.mjs +1 -0
- package/dist/chunks/agent-4EMYYWV6.mjs +1 -0
- package/dist/chunks/agent-FF52NW42.mjs +1 -0
- package/dist/chunks/app-CGZZFC54.mjs +1 -0
- package/dist/chunks/auth-2I7U24YF.mjs +1 -0
- package/dist/chunks/bootstrap-GVMMOFUK.mjs +1 -0
- package/dist/chunks/build-program-43NDEGM2.mjs +11 -0
- package/dist/chunks/bus-PFFRRCH3.mjs +1 -0
- package/dist/chunks/chunk-2RSIOAZV.mjs +1 -0
- package/dist/chunks/chunk-AAJAKVQY.mjs +3 -0
- package/dist/chunks/chunk-ARCMKYQI.mjs +2 -0
- package/dist/chunks/chunk-CJTCCLW4.mjs +1 -0
- package/dist/chunks/chunk-CQVEAYYW.mjs +1 -0
- package/dist/chunks/chunk-CVTJJBGW.mjs +1 -0
- package/dist/chunks/chunk-DEZT7DOH.mjs +1 -0
- package/dist/chunks/chunk-EEWP2VV6.mjs +27 -0
- package/dist/chunks/chunk-FXOUIXIL.mjs +1 -0
- package/dist/chunks/chunk-GMEJX6PC.mjs +2 -0
- package/dist/chunks/chunk-I6MBTO75.mjs +2 -0
- package/dist/chunks/chunk-I7A5JGO5.mjs +2 -0
- package/dist/chunks/chunk-IHHFG47N.mjs +1 -0
- package/dist/chunks/chunk-KLJ7PPSA.mjs +2 -0
- package/dist/chunks/chunk-KY3H2HGJ.mjs +1056 -0
- package/dist/chunks/chunk-LAHYVX5K.mjs +1 -0
- package/dist/chunks/chunk-LFNGHYRC.mjs +1 -0
- package/dist/chunks/chunk-LFYBZHOI.mjs +2 -0
- package/dist/chunks/chunk-M3K32WJV.mjs +1 -0
- package/dist/chunks/chunk-QJ6QTASU.mjs +1 -0
- package/dist/chunks/chunk-TYD2M4SP.mjs +7 -0
- package/dist/chunks/chunk-VII7JKGB.mjs +1 -0
- package/dist/chunks/chunk-WN2HAJBB.mjs +59 -0
- package/dist/chunks/chunk-X6ISXWBN.mjs +1 -0
- package/dist/chunks/chunk-XPF2LJT2.mjs +1 -0
- package/dist/chunks/chunk-ZBRXNYEM.mjs +1 -0
- package/dist/chunks/command-H77IO5J2.mjs +1 -0
- package/dist/chunks/compaction-LQXOGRP7.mjs +1 -0
- package/dist/chunks/config-J54DTNPX.mjs +1 -0
- package/dist/chunks/confirm-dialog-AGHMTHWU.mjs +1 -0
- package/dist/chunks/copilot-I52DJYYX.mjs +2 -0
- package/dist/chunks/debug-55VJ74IW.mjs +3 -0
- package/dist/chunks/event-A4SSIBOT.mjs +1 -0
- package/dist/chunks/export-BGH24SO2.mjs +1 -0
- package/dist/chunks/file-KEMX6XWX.mjs +1 -0
- package/dist/chunks/gateway-45LKZAQS.mjs +16 -0
- package/dist/chunks/gateway-loader-6P6BTWQP.mjs +1 -0
- package/dist/chunks/generate-QMA5OAOD.mjs +2 -0
- package/dist/chunks/github-EJCNXJ6F.mjs +33 -0
- package/dist/chunks/global-KAF6JHVQ.mjs +1 -0
- package/dist/chunks/import-4TX5SVFQ.mjs +2 -0
- package/dist/chunks/input-validation-FWKKVCYC.mjs +1 -0
- package/dist/chunks/installation-CGMLIGLA.mjs +1 -0
- package/dist/chunks/instance-YUOFE3Q3.mjs +1 -0
- package/dist/chunks/is-tui-mode-TFK352KK.mjs +1 -0
- package/dist/chunks/loader-YOPK5OTL.mjs +1 -0
- package/dist/chunks/loader-ZTWTX2GS.mjs +1 -0
- package/dist/chunks/lsp-YNF5BCPV.mjs +1 -0
- package/dist/chunks/markdown-Z6UXVBNP.mjs +1 -0
- package/dist/chunks/mcp-BGU4XS34.mjs +1 -0
- package/dist/chunks/models-TN65RCBA.mjs +1 -0
- package/dist/chunks/models-snapshot-XTWYGG3T.mjs +2 -0
- package/dist/chunks/pr-XD7C7PDJ.mjs +3 -0
- package/dist/chunks/preferences-3HCTNG2J.mjs +1 -0
- package/dist/chunks/project-HH3IL3QQ.mjs +1 -0
- package/dist/chunks/prompt-W7772MHB.mjs +1 -0
- package/dist/chunks/provider-ULN4YD2M.mjs +1 -0
- package/dist/chunks/registry-TL5F5F7C.mjs +1 -0
- package/dist/chunks/revert-TZSK52JS.mjs +1 -0
- package/dist/chunks/ripgrep-E3GWWA2V.mjs +1 -0
- package/dist/chunks/run-KL5CA5M6.mjs +22 -0
- package/dist/chunks/scheduler-SCM4SRS2.mjs +1 -0
- package/dist/chunks/server-Z6BORWAL.mjs +1 -0
- package/dist/chunks/session-BHXYW2JD.mjs +1 -0
- package/dist/chunks/session-PMZOQPFQ.mjs +1 -0
- package/dist/chunks/session-REKMEA3V.mjs +1 -0
- package/dist/chunks/settings-panel-BWCVKC4G.mjs +1 -0
- package/dist/chunks/share-JFZ3O2BX.mjs +1 -0
- package/dist/chunks/snapshot-V23GRQBM.mjs +1 -0
- package/dist/chunks/stats-MILDLIZD.mjs +1 -0
- package/dist/chunks/storage-DKQ7S6QX.mjs +1 -0
- package/dist/chunks/tui-HU55FGHV.mjs +1 -0
- package/dist/chunks/tui-YGASP4NS.mjs +1 -0
- package/dist/chunks/types-GCXI5X7B.mjs +1 -0
- package/dist/chunks/types-WN4LZEB5.mjs +1 -0
- package/dist/chunks/update-IOQCRELU.mjs +2 -0
- package/dist/cli.mjs +9 -1235
- package/package.json +14 -24
- package/dist/cli.cjs +0 -1236
- package/dist/cli.d.cts +0 -1
- package/dist/index.cjs +0 -1345
- package/dist/index.d.cts +0 -34569
- package/dist/index.d.ts +0 -34569
- package/dist/index.mjs +0 -1345
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {a}from'./chunk-LFYBZHOI.mjs';import o from'path';import a$1 from'fs';import'os';var i=a.create({service:"cli-path-security"}),h=["C:\\Windows","C:\\Windows\\System32","C:\\Program Files","C:\\Program Files (x86)","/bin","/sbin","/usr/bin","/usr/sbin","/etc","/sys","/proc","/dev","/boot","/root","/System","/Library","/Applications","/private"];function s(e){let r=o.resolve(e);return o.normalize(r)}function l(e){let r=s(e);for(let t of h){let n=o.normalize(t);if(r===n||r.startsWith(n+o.sep))return i.warn("Attempted to access sensitive directory",{targetPath:r,sensitiveDir:n}),true}return false}function d(e){let r=["..","%2e%2e","%252e%252e","..\\","../","..%2f","..%5c"];for(let t of r)if(e.toLowerCase().includes(t))return i.warn("Path traversal attempt detected",{inputPath:e,pattern:t}),true;return false}function g(e){if(i.debug("Validating working directory",{directory:e}),!e||typeof e!="string")return {valid:false,error:"Directory path is empty or invalid"};if(d(e))return {valid:false,error:"Path traversal detected in directory path"};let r;try{r=s(e);}catch(t){return i.error("Failed to normalize path",{directory:e,error:t instanceof Error?t.message:String(t)}),{valid:false,error:"Failed to normalize directory path"}}if(l(r))return {valid:false,error:"Cannot use system directory as working directory",normalizedPath:r};try{if(!a$1.statSync(r).isDirectory())return i.warn("Path is not a directory",{normalizedPath:r}),{valid:!1,error:"Path is not a directory",normalizedPath:r}}catch(t){return t.code==="ENOENT"?(i.warn("Directory does not exist",{normalizedPath:r}),{valid:false,error:"Directory does not exist",normalizedPath:r}):t.code==="EACCES"?(i.warn("Directory access denied",{normalizedPath:r}),{valid:false,error:"Directory access denied",normalizedPath:r}):(i.error("Failed to check directory",{normalizedPath:r,error:t instanceof Error?t.message:String(t)}),{valid:false,error:"Failed to check directory",normalizedPath:r})}try{a$1.accessSync(r,a$1.constants.R_OK|a$1.constants.W_OK);}catch{i.warn("Directory is not writable",{normalizedPath:r});}return i.debug("Working directory validated successfully",{normalizedPath:r}),{valid:true,normalizedPath:r}}export{g as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {La}from'./chunk-KY3H2HGJ.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$1}from'./chunk-I6MBTO75.mjs';import {b as b$1}from'./chunk-X6ISXWBN.mjs';import d from'fs';import u from'path';var P=a.create({service:"cli-plugin"});function S(t,e,r){return {context:t,logger:a,config:r,registerCli(n,o){try{t._pluginCliRegistrations||(t._pluginCliRegistrations=[]),t._pluginCliRegistrations.push({pluginId:e,register:n,commands:o?.commands||[]}),P.debug("Plugin CLI registered",{pluginId:e,commands:o?.commands});}catch(a){throw P.error("Plugin CLI registration failed",{pluginId:e,error:a}),a}},registerCommand(n){try{if(t._pluginCommands||(t._pluginCommands=[]),!n.name||!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(n.name))throw new Error(`Invalid command name: ${n.name}`);let o=t._pluginCommands.find(s=>s.name.toLowerCase()===n.name.toLowerCase());if(o)throw new Error(`Command "${n.name}" is already registered by plugin "${o.pluginId}"`);let a=async s=>{try{return await n.handler(s)}catch(i){return P.error("Plugin command handler failed",{pluginId:e,commandName:n.name,error:i}),{text:`Command failed: ${i instanceof Error?i.message:String(i)}`}}};t._pluginCommands.push({...n,handler:a,pluginId:e}),P.debug("Plugin command registered",{pluginId:e,commandName:n.name});}catch(o){throw P.error("Plugin command registration failed",{pluginId:e,error:o}),o}}}}var g=a.create({service:"cli-plugin-discovery"});async function F(t){if(t.enabled===false)return g.debug("Plugin system is disabled"),[];let e=[],r=new Set;if(t.loadPaths)for(let s of t.loadPaths){let i=await I(s,"npm");for(let l of i)r.has(l.id)||(e.push(l),r.add(l.id));}let n=u.join(La.directory,".easbot","extensions");if(d.existsSync(n)){let s=await h(n,"workspace");for(let i of s)r.has(i.id)||(e.push(i),r.add(i.id));}let o=u.join(a$1.Path.config,"extensions");if(d.existsSync(o)){let s=await h(o,"global");for(let i of s)r.has(i.id)||(e.push(i),r.add(i.id));}let a=e.filter(s=>t.deny?.includes(s.id)?(g.debug("Plugin denied by blacklist",{pluginId:s.id}),false):t.allow&&t.allow.length>0&&!t.allow.includes(s.id)?(g.debug("Plugin not in whitelist",{pluginId:s.id}),false):true);return g.info("Discovered plugins",{count:a.length,plugins:a.map(s=>s.id)}),a}async function I(t,e){if(!d.existsSync(t))return g.debug("Plugin path does not exist",{pluginPath:t}),[];let r=d.statSync(t);return r.isFile()?A(t,e):r.isDirectory()?h(t,e):[]}async function A(t,e){let r=u.dirname(t),n=u.join(r,"easbot.plugin.json"),o;if(d.existsSync(n))try{o=JSON.parse(d.readFileSync(n,"utf-8"));}catch(s){return g.error("Failed to read plugin manifest",{manifestPath:n,error:s}),[]}let a=o?.id||u.basename(t,u.extname(t));return [{id:a,name:o?.name||a,version:o?.version||"0.0.0",description:o?.description,path:t,source:e,enabled:true,manifest:o}]}async function h(t,e){let r=[];try{let n=d.readdirSync(t,{withFileTypes:!0});for(let o of n){let a=u.join(t,o.name);if(o.isFile()&&(o.name.endsWith(".ts")||o.name.endsWith(".js"))){let s=await A(a,e);r.push(...s);}else if(o.isDirectory()){let s=u.join(a,"easbot.plugin.json");if(!d.existsSync(s)){g.debug("Plugin directory missing manifest",{entryPath:a});continue}let i;try{i=JSON.parse(d.readFileSync(s,"utf-8"));}catch(m){g.error("Failed to read plugin manifest",{manifestPath:s,error:m});continue}let l=i.main||"index.ts",f=u.join(a,l);if(d.existsSync(f))r.push({id:i.id,name:i.name||i.id,version:i.version||"0.0.0",description:i.description,path:f,source:e,enabled:!0,manifest:i});else {let m=["index.js","plugin.ts","plugin.js"],w=!1;for(let E of m){let C=u.join(a,E);if(d.existsSync(C)){r.push({id:i.id,name:i.name||i.id,version:i.version||"0.0.0",description:i.description,path:C,source:e,enabled:!0,manifest:i}),w=!0;break}}w||g.error("Plugin entry file not found",{entryPath:a,entryFile:l});}}}}catch(n){g.error("Failed to read plugin directory",{dirPath:t,error:n});}return r}var c=a.create({service:"cli-plugin-loader"}),b=class{constructor(e){b$1(this,"loadedPlugins",new Map);b$1(this,"context");this.context=e;}async loadAll(e){let r=await F(e),n=await Promise.allSettled(r.map(async i=>{let l=this.context.config.plugins,f=l&&typeof l=="object"&&"entries"in l&&l.entries&&typeof l.entries=="object"?l.entries[i.id]:void 0;if(f&&typeof f=="object"&&"enabled"in f&&f.enabled===false)return c.info("Plugin disabled in config",{pluginId:i.id}),{pluginId:i.id,status:"disabled"};try{return await this.loadPlugin(i),{pluginId:i.id,status:"loaded"}}catch(m){return c.error("Failed to load plugin",{pluginId:i.id,error:m}),{pluginId:i.id,status:"failed",error:m}}})),o=n.filter(i=>i.status==="fulfilled"&&i.value.status==="loaded").length,a=n.filter(i=>i.status==="fulfilled"&&i.value.status==="failed").length,s=n.filter(i=>i.status==="fulfilled"&&i.value.status==="disabled").length;c.info("All plugins processed",{total:r.length,loaded:o,failed:a,disabled:s});}async loadPlugin(e){if(this.loadedPlugins.has(e.id)){c.debug("Plugin already loaded",{pluginId:e.id});return}c.debug("Loading plugin",{pluginId:e.id,path:e.path});try{let r=await import(e.path),n=r.default||r.plugin;if(!n)throw new Error("Plugin module does not export a plugin definition");if(typeof n!="function"&&(typeof n!="object"||!n.register))throw new Error("Plugin must be a function or an object with a register method");this.loadedPlugins.set(e.id,n),await this.initializePlugin(e.id,n),c.info("Plugin loaded successfully",{pluginId:e.id,name:e.name});}catch(r){let n=r instanceof Error?r.message:String(r),o=r instanceof Error?r.stack:void 0;throw c.error("Failed to load plugin module",{pluginId:e.id,path:e.path,error:n,stack:o}),new Error(`Failed to load plugin "${e.id}" from ${e.path}: ${n}`)}}async initializePlugin(e,r){let n=this.context.config.plugins,o=n&&typeof n=="object"&&"entries"in n&&n.entries&&typeof n.entries=="object"?n.entries[e]:void 0,a=(o&&typeof o=="object"&&"config"in o?o.config:{})||{},s=S(this.context,e,a);try{if(typeof r=="function")await r(s);else {let i=r;i.id&&i.id!==e&&c.warn("Plugin ID mismatch",{expected:e,actual:i.id}),await i.register(s);}c.debug("Plugin initialized",{pluginId:e});}catch(i){throw c.error("Plugin initialization failed",{pluginId:e,error:i}),this.loadedPlugins.delete(e),new Error(`Plugin "${e}" initialization failed: ${i instanceof Error?i.message:String(i)}`)}}getPlugin(e){return this.loadedPlugins.get(e)}getLoadedPluginIds(){return Array.from(this.loadedPlugins.keys())}};function H(t){return new b(t)}export{b as a,H as b};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import w from'path';import h from'fs/promises';import {createWriteStream}from'fs';import j from'zod';import {glob}from'glob';import {initLog,formatLogTime}from'@easbot/utils';var I;(R=>{R.Level=j.enum(["DEBUG","INFO","WARN","ERROR"]).meta({ref:"LogLevel",description:"Log level"});let x={DEBUG:0,INFO:1,WARN:2,ERROR:3},y="INFO";function u(e){return x[e]>=x[y]}function U(){return y}R.getLevel=U;let L=new Map;R.Default=P({service:"default"});let m="";function z(){return m}R.file=z;let g,s,f=false,O=false,a=e=>{try{O&&process.stderr.write(e);}catch{}},c=false,p=false;async function H(e){if(f)return;e.level&&(y=e.level),e.print&&(O=e.print??false);let t=e.logDir||w.join(process.env.EASBOT_LOG_PATH??process.cwd(),"logs");if(S(t).catch(n=>{}),await initLog(e),e.print){f=true;return}if(e.logFile)m=w.join(t,e.logFile);else {let o=formatLogTime(new Date).replace(/:/g,"");m=w.join(t,e.dev?"dev.log":o+".log");}try{g=await h.open(m,"w"),s=createWriteStream("",{fd:g.fd,autoClose:!1}),a=n=>{if(!(c||p||!s||s.destroyed))try{if(!s.writable)return;s.write(n,o=>{if(o&&!c){let r=o;if(r.code==="EPIPE"||r.code==="EIO"){p=!0,s?.destroy();return}c=!0,setTimeout(()=>{c=!1;},1e3);}});}catch(o){let r=o;if(r.code==="EPIPE"||r.code==="EIO"){p=!0,s?.destroy();return}c||(c=!0,setTimeout(()=>{c=!1;},1e3));}},f=!0;}catch{a=o=>{try{process.stderr.write(o);}catch{}},f=true;}}R.init=H;async function J(){f&&(s&&!s.destroyed&&(await new Promise((e,t)=>{s.end(n=>{n?t(n):e();});}).catch(e=>{console.error("Failed to close log stream:",e);}),s=void 0),g&&(await g.close().catch(e=>{console.error("Failed to close log file handle:",e);}),g=void 0),a=e=>{try{process.stderr.write(e);}catch{}},f=false);}R.close=J;async function S(e){let t=await glob("????????T??????.log",{cwd:e,absolute:true});if(t.length<=5)return;let n=t.slice(0,-10);await Promise.all(n.map(o=>h.unlink(o).catch(()=>{})));}function b(e,t=0){let n=e.message;return e.cause instanceof Error&&t<10?n+" Caused by: "+b(e.cause,t+1):n}let D=Date.now();function P(e){e=e||{};let t=e.service;if(t&&typeof t=="string"){let r=L.get(t);if(r)return r}function n(r,i){let E=Object.entries({...e,...i}).filter(([F,l])=>l!=null).map(([F,l])=>{let v=`${F}=`;return l instanceof Error?v+b(l):typeof l=="object"?v+JSON.stringify(l):v+l}).join(" "),d=new Date,T=d.getTime()-D;return D=d.getTime(),[formatLogTime(d),"+"+T+"ms",E,r].filter(Boolean).join(" ")+`
|
|
2
|
+
`}let o={debug(r,i){u("DEBUG")&&a("DEBUG "+n(r,i));},info(r,i){u("INFO")&&a("INFO "+n(r,i));},error(r,i){u("ERROR")&&a("ERROR "+n(r,i));},warn(r,i){u("WARN")&&a("WARN "+n(r,i));},tag(r,i){return e&&(e[r]=i),o},clone(){return R.create({...e})},time(r,i){let E=Date.now();o.info(r,{status:"started",...i});function d(){o.info(r,{status:"completed",duration:Date.now()-E,...i});}return {stop:d,[Symbol.dispose](){d();}}}};return t&&typeof t=="string"&&L.set(t,o),o}R.create=P;})(I||(I={}));export{I as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import d,{Chalk}from'chalk';var n={accent:"#FF5A2D",accentBright:"#FF7A3D",accentDim:"#D14A22",info:"#FF8A5B",success:"#2FBF71",warn:"#FFB020",error:"#E23D2D",muted:"#8B7F77"};var l=typeof process.env.FORCE_COLOR=="string"&&process.env.FORCE_COLOR.trim().length>0&&process.env.FORCE_COLOR.trim()!=="0",u=process.env.NO_COLOR&&!l?new Chalk({level:0}):d,c=t=>u.hex(t),e={accent:c(n.accent),accentBright:c(n.accentBright),accentDim:c(n.accentDim),info:c(n.info),success:c(n.success),warn:c(n.warn),error:c(n.error),muted:c(n.muted),heading:u.bold.hex(n.accent),command:c(n.accentBright),option:c(n.warn)},s=()=>u.level>0,o=(t,r,i)=>t?r(i):i;function k(t){let r=s();return o(r,e.success,"\u2713")+` ${t}`}function b(t){let r=s();return o(r,e.error,"\u2717")+` ${t}`}function L(t){let r=s();return o(r,e.warn,"\u26A0")+` ${t}`}function D(t){let r=s();return o(r,e.info,"\u2139")+` ${t}`}function w(t){let r=s();return o(r,e.heading,t)}function T(t,r,i=15){let a=s(),g=t.padEnd(i);return `${o(a,e.muted,g)} ${r}`}function v(t,r,i){let a=s(),g=o(a,e.info,t),p=o(a,e.command,r),h=i?` ${o(a,e.muted,i)}`:"";return `${g} ${p}${h}`}function A(t=80,r="\u2500"){let i=s();return o(i,e.muted,r.repeat(t))}function S(t){let r=s();return o(r,e.muted,t)}export{e as a,s as b,o as c,k as d,b as e,L as f,D as g,w as h,T as i,v as j,A as k,S as l};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {La,nb}from'./chunk-KY3H2HGJ.mjs';import {a}from'./chunk-LFYBZHOI.mjs';var e=a.create({service:"cli-bootstrap"});async function f(o,i){let r=o||process.cwd();try{let{Global:t}=await import('./global-KAF6JHVQ.mjs');await t.init();}catch(t){throw e.error("Failed to initialize Global",{error:t instanceof Error?t.message:String(t)}),new Error(`Global initialization failed: ${t instanceof Error?t.message:String(t)}`)}try{return await La.provide({directory:r,init:nb,fn:async()=>await i()})}catch(t){throw e.error("Failed to execute in Instance context",{directory:r,error:t instanceof Error?t.message:String(t)}),t}}async function g(o={}){let i=o.directory??process.cwd();try{let{Global:r}=await import('./global-KAF6JHVQ.mjs');await r.init();}catch(r){throw e.error("Failed to initialize Global",{error:r instanceof Error?r.message:String(r)}),new Error(`Global initialization failed: ${r instanceof Error?r.message:String(r)}`)}try{return await La.provide({directory:i,init:nb,fn:async()=>{let{buildProgram:r}=await import('./build-program-43NDEGM2.mjs');return await r(o)}})}catch(r){throw e.error("Failed to build program in Instance context",{directory:i,error:r instanceof Error?r.message:String(r)}),r}}export{f as a,g as b};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import {b}from'./chunk-FXOUIXIL.mjs';import {b as b$1}from'./chunk-CQVEAYYW.mjs';function I(i,h){return !Number.isFinite(h)||h<=0?"":i.repeat(h)}function F(i,h,g){let a=b$1(i);if(a>=h)return i;let u=h-a;if(g==="right")return `${I(" ",u)}${i}`;if(g==="center"){let p=Math.floor(u/2),d=u-p;return `${I(" ",p)}${i}${I(" ",d)}`}return `${i}${I(" ",u)}`}function R(i,h){if(!i||i.length===0)return [""];if(!Number.isFinite(h)||h<=0)return [i];let g="\x1B",a=[];for(let n=0;n<i.length;){if(i[n]===g){if(i[n+1]==="["){let t=n+2;for(;t<i.length;){let l=i[t];if(l==="m")break;if(l&&l>="0"&&l<="9"){t+=1;continue}if(l===";"){t+=1;continue}break}if(i[t]==="m"){a.push({kind:"ansi",value:i.slice(n,t+1)}),n=t+1;continue}}if(i[n+1]==="]"&&i.slice(n+2,n+5)==="8;;"){let t=i.indexOf(`${g}\\`,n+5);if(t>=0){a.push({kind:"ansi",value:i.slice(n,t+2)}),n=t+2;continue}}}let e=i.codePointAt(n);if(!e)break;let r=String.fromCodePoint(e);a.push({kind:"char",value:r}),n+=r.length;}let u=a.findIndex(n=>n.kind==="char");if(u<0)return [i];let p=-1;for(let n=a.length-1;n>=0;n-=1){let e=a[n];if(e&&e.kind==="char"){p=n;break}}let d=a.slice(0,u).filter(n=>n.kind==="ansi").map(n=>n.value).join(""),b=a.slice(p+1).filter(n=>n.kind==="ansi").map(n=>n.value).join(""),j=a.slice(u,p+1),W=[],M=n=>n===" "||n===" "||n==="/"||n==="-"||n==="_"||n===".",y=n=>n===" "||n===" ",c=false,f=[],w=0,v=null,T=n=>(n??f).map(e=>e.value).join(""),k=n=>n.reduce((e,r)=>e+(r.kind==="char"?1:0),0),o=n=>{let e=n.replace(/\s+$/,"");e.trim().length!==0&&W.push(e);},s=n=>{if(f.length===0)return;if(n==null||n<=0){o(T()),f.length=0,w=0,v=null;return}let e=f.slice(0,n),r=f.slice(n);for(o(T(e));r.length>0;){let t=r[0];if(!t||t.kind!=="char"||!y(t.value))break;r.shift();}f.length=0,f.push(...r),w=k(f),v=null;};for(let n of j){if(n.kind==="ansi"){f.push(n);continue}let e=n.value;if(!(c&&(c=false,e===`
|
|
2
|
+
`))){if(e===`
|
|
3
|
+
`||e==="\r"){s(f.length),e==="\r"&&(c=true);continue}w+1>h&&w>0&&s(v),f.push(n),w+=1,M(e)&&(v=f.length);}}return s(f.length),W.length===0?[""]:!d&&!b?W:W.map(n=>n&&`${d}${n}${b}`)}function A(i){if(i!=null&&!(!Number.isFinite(i)||i<=0))return Math.floor(i)}function V(i){let h=i.rows.map(o=>{let s={};for(let[n,e]of Object.entries(o))s[n]=b(e);return s}),g=i.border??"unicode";if(g==="none"){let o=i.columns;return `${[o.map(e=>e.header).join(" | "),...h.map(e=>o.map(r=>e[r.key]??"").join(" | "))].join(`
|
|
4
|
+
`)}
|
|
5
|
+
`}let a=Math.max(0,i.padding??1),u=i.columns,p=u.map(o=>{let s=b$1(o.header),n=Math.max(0,...h.map(e=>b$1(e[o.key]??"")));return {headerW:s,cellW:n}}),d=u.map((o,s)=>{let n=p[s];if(!n)throw new Error(`Internal error: metrics[${s}] is undefined`);let e=Math.max(n.headerW,n.cellW)+a*2,r=o.maxWidth?Math.min(e,o.maxWidth):e;return Math.max(o.minWidth??3,r)}),b$2=A(i.width),j=u.length+1,W=d.reduce((o,s)=>o+s,0)+j,M=u.map((o,s)=>{let n=p[s];if(!n)throw new Error(`Internal error: metrics[${s}] is undefined`);return Math.max(o.minWidth??3,n.headerW+a*2,3)}),y=u.map((o,s)=>{let n=p[s];if(!n)throw new Error(`Internal error: metrics[${s}] is undefined`);return Math.max(n.headerW+a*2,3)});if(b$2&&W>b$2){let o=W-b$2,s=u.map((r,t)=>{let l=d[t];if(l===void 0)throw new Error(`Internal error: widths[${t}] is undefined`);return {i:t,w:l}}).filter(({i:r})=>!!u[r]?.flex).toSorted((r,t)=>t.w-r.w).map(r=>r.i),n=u.map((r,t)=>{let l=d[t];if(l===void 0)throw new Error(`Internal error: widths[${t}] is undefined`);return {i:t,w:l}}).filter(({i:r})=>!u[r]?.flex).toSorted((r,t)=>t.w-r.w).map(r=>r.i),e=(r,t)=>{for(;o>0;){let l=false;for(let m of r){let $=d[m],x=t[m];if(!($===void 0||x===void 0)&&!($<=x)&&(d[m]=$-1,o-=1,l=true,o<=0))break}if(!l)break}};e(s,M),e(s,y),e(n,M),e(n,y);}if(b$2){let o=u.length+1,s=d.reduce((e,r)=>e+r,0)+o,n=b$2-s;if(n>0){let e=u.map((r,t)=>({c:r,i:t})).filter(({c:r})=>!!r.flex).map(({i:r})=>r);if(e.length>0){let r=u.map(t=>typeof t.maxWidth=="number"&&t.maxWidth>0?Math.floor(t.maxWidth):Number.POSITIVE_INFINITY);for(;n>0;){let t=false;for(let l of e){let m=d[l],$=r[l];if(!(m===void 0||$===void 0)&&!(m>=$)&&(d[l]=m+1,n-=1,t=true,n<=0))break}if(!t)break}}}}let c=g==="ascii"?{tl:"+",tr:"+",bl:"+",br:"+",h:"-",v:"|",t:"+",ml:"+",m:"+",mr:"+",b:"+"}:{tl:"\u250C",tr:"\u2510",bl:"\u2514",br:"\u2518",h:"\u2500",v:"\u2502",t:"\u252C",ml:"\u251C",m:"\u253C",mr:"\u2524",b:"\u2534"},f=(o,s,n)=>`${o}${d.map(e=>{if(e===void 0)throw new Error("Internal error: width is undefined");return I(c.h,e)}).join(s)}${n}`,w=o=>{let s=d[o];if(s===void 0)throw new Error(`Internal error: widths[${o}] is undefined`);return Math.max(1,s-a*2)},v=I(" ",a),T=(o,s=false)=>{let e=u.map(l=>s?l.header:o[l.key]??"").map((l,m)=>R(l,w(m))),r=Math.max(...e.map(l=>l.length)),t=[];for(let l=0;l<r;l+=1){let m=e.map(($,x)=>{let N=$[l]??"",E=u[x];if(!E)throw new Error(`Internal error: columns[${x}] is undefined`);let O=F(N,w(x),E.align??"left");return `${v}${O}${v}`});t.push(`${c.v}${m.join(c.v)}${c.v}`);}return t},k=[];k.push(f(c.tl,c.t,c.tr)),k.push(...T({},true)),k.push(f(c.ml,c.m,c.mr));for(let o of h)k.push(...T(o,false));return k.push(f(c.bl,c.b,c.br)),`${k.join(`
|
|
6
|
+
`)}
|
|
7
|
+
`}export{V as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {a as a$1}from'./chunk-LFYBZHOI.mjs';var a=a$1.create({service:"cli-security"});function c(t){if(!t||typeof t!="string")return a.warn("Invalid agent ID: empty or not a string",{agentId:t}),false;let n=/^[a-zA-Z0-9_-]+$/.test(t);return n||a.warn("Invalid agent ID format",{agentId:t}),n}function p(t){if(!t||typeof t!="string")return a.warn("Invalid session ID: empty or not a string",{sessionId:t}),false;let r=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,n=/^[a-zA-Z0-9_-]+$/,e=r.test(t)||n.test(t);return e||a.warn("Invalid session ID format",{sessionId:t}),e}function d(t){if(!t||typeof t!="string")return a.warn("Invalid model name: empty or not a string",{model:t}),false;let n=/^[a-zA-Z0-9_-]+\/[a-zA-Z0-9_.-]+$/.test(t);return n||a.warn("Invalid model name format",{model:t}),n}function v(t){if(typeof t!="number"||Number.isNaN(t))return a.warn("Invalid port: not a number",{port:t}),false;let r=t>=1&&t<=65535;return r||a.warn("Invalid port: out of range",{port:t}),r}function w(t){if(!t||typeof t!="string")return a.warn("Invalid hostname: empty or not a string",{hostname:t}),false;let r=/^localhost$/i,n=/^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,e=/^(\d{1,3}\.){3}\d{1,3}$/,l=/^([0-9a-f]{0,4}:){2,7}[0-9a-f]{0,4}$/i,i=r.test(t)||n.test(t)||e.test(t)||l.test(t);return i||a.warn("Invalid hostname format",{hostname:t}),i}function y(t){if(!t||typeof t!="string")return "";let r=/[;|&$`\\"'<>(){}[\]\n\r]/g,n=t.replace(r,"");return n!==t&&a.warn("Input sanitized: dangerous characters removed",{original:t.substring(0,50),sanitized:n.substring(0,50)}),n}function s(t,r,n="input"){if(!t||typeof t!="string")return a.warn(`Invalid ${n}: empty or not a string`),false;let e=t.length<=r;return e||a.warn(`Invalid ${n}: exceeds maximum length`,{fieldName:n,length:t.length,maxLength:r}),e}function b(t){return s(t,1e4,"prompt")}function I(t){if(!t||typeof t!="string")return a.warn("Invalid agent name: empty or not a string",{name:t}),false;if(!s(t,100,"agent name"))return false;let n=/^[a-zA-Z0-9_-]+$/.test(t);return n||a.warn("Invalid agent name format",{name:t}),n}function m(t){if(!t||typeof t!="string")return a.warn("Invalid agent mode: empty or not a string",{mode:t}),false;let r=["subagent","primary","all"],n=r.includes(t);return n||a.warn("Invalid agent mode",{mode:t,validModes:r}),n}function z(t,r="json"){if(!t||typeof t!="string")return a.warn(`Invalid ${r}: empty or not a string`),null;try{let n=JSON.parse(t);return typeof n!="object"||n===null?(a.warn(`Invalid ${r}: not a JSON object`,{fieldName:r}),null):n}catch(n){return a.warn(`Invalid ${r}: JSON parse error`,{fieldName:r,error:n instanceof Error?n.message:String(n)}),null}}export{c as a,p as b,d as c,v as d,w as e,y as f,s as g,b as h,I as i,m as j,z as k};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import {a as a$2,b as b$1}from'./chunk-CQVEAYYW.mjs';import {la,qa,sa,ra,na,oa,pa,Ha,ma,fa}from'./chunk-KY3H2HGJ.mjs';import {c as c$1}from'./chunk-ZBRXNYEM.mjs';import {b as b$2}from'./chunk-IHHFG47N.mjs';import {c}from'./chunk-DEZT7DOH.mjs';import {a as a$1}from'./chunk-EEWP2VV6.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import {a as a$3}from'./chunk-I6MBTO75.mjs';import {b}from'./chunk-X6ISXWBN.mjs';import {Input,truncateToWidth,isKeyRelease,getKeybindings,Editor,matchesKey,Key,Container,Text,Markdown}from'@easbot/tui';import {loadTextFile,Shell,parseModelId,Fetch,Filesystem}from'@easbot/utils';import {randomUUID}from'crypto';import {readdirSync,existsSync}from'fs';import zt from'path';import {pathToFileURL}from'url';import {GatewayClient}from'@easbot/gateway';var _e=class extends Editor{constructor(t,n){super(t,n);b(this,"onEscape");b(this,"onCtrlC");b(this,"onCtrlD");b(this,"onCtrlG");b(this,"onCtrlL");b(this,"onCtrlO");b(this,"onCtrlP");b(this,"onCtrlT");b(this,"inputHandlerManager");}setInputHandlerManager(t){this.inputHandlerManager=t;}addToHistory(t){this.inputHandlerManager?.isHistoryBrowsing()||super.addToHistory(t);}handleInput(t){t.includes("\x1B")||t.includes("\r")||t.includes(`
|
|
2
|
+
`);let n=matchesKey(t,Key.up)||matchesKey(t,Key.down);if(n&&this.inputHandlerManager?this.inputHandlerManager.setHistoryBrowsing(true):this.inputHandlerManager&&!n&&(matchesKey(t,Key.ctrl("l"))||matchesKey(t,Key.ctrl("o"))||matchesKey(t,Key.ctrl("p"))||matchesKey(t,Key.ctrl("g"))||matchesKey(t,Key.ctrl("t"))||matchesKey(t,Key.escape)||matchesKey(t,Key.ctrl("c"))||matchesKey(t,Key.ctrl("d"))||this.inputHandlerManager.setHistoryBrowsing(false)),matchesKey(t,Key.ctrl("l"))&&this.onCtrlL){this.onCtrlL();return}if(matchesKey(t,Key.ctrl("o"))&&this.onCtrlO){this.onCtrlO();return}if(matchesKey(t,Key.ctrl("p"))&&this.onCtrlP){this.onCtrlP();return}if(matchesKey(t,Key.ctrl("g"))&&this.onCtrlG){this.onCtrlG();return}if(matchesKey(t,Key.ctrl("t"))&&this.onCtrlT){this.onCtrlT();return}if(matchesKey(t,Key.escape)){if(this.isShowingAutocomplete()){super.handleInput(t);return}if(this.onEscape){this.onEscape();return}}if(matchesKey(t,Key.ctrl("c"))&&this.onCtrlC){this.onCtrlC();return}if(matchesKey(t,Key.ctrl("d"))){this.getText().length===0&&this.onCtrlD&&this.onCtrlD();return}super.handleInput(t);}};var x={text:"#E8E3D5",dim:"#7B7F87",accent:"#F6C453",accentSoft:"#F2A65A",border:"#3C414B",userBg:"#2B2F36",userText:"#5A9F7A",userLabel:"#5A9F7A",systemText:"#9BA3B2",systemLabel:"#7B7F87",assistantLabel:"#B85C5C",subagentLabel:"#9B72CF",subagentBg:"#2A2535",toolPendingBg:"#1F2A2F",toolSuccessBg:"#1E2D23",toolErrorBg:"#2F1F1F",toolTitle:"#F6C453",toolOutput:"#E1DACB",quote:"#8CC8FF",quoteBorder:"#3B4D6B",code:"#F0C987",codeBorder:"#343A45",link:"#7DD3A5",error:"#F97066",success:"#7DD3A5"},I=s=>e=>`\x1B[38;2;${Lt(s)}m${e}\x1B[0m`,Ce=s=>e=>`\x1B[48;2;${Lt(s)}m${e}\x1B[0m`,ve=s=>`\x1B[1m${s}\x1B[0m`,rt=s=>`\x1B[3m${s}\x1B[0m`;function Lt(s){let e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(s);if(!e)return "255;255;255";let t=Number.parseInt(e[1]||"0",16),n=Number.parseInt(e[2]||"0",16),r=Number.parseInt(e[3]||"0",16);return `${t};${n};${r}`}var ts={selectedPrefix:s=>I(x.accent)(s),selectedText:s=>ve(I(x.accent)(s)),description:s=>I(x.dim)(s),scrollInfo:s=>I(x.dim)(s),noMatch:s=>I(x.dim)(s)},ee={fg:I(x.text),assistantText:s=>s,dim:I(x.dim),accent:I(x.accent),accentSoft:I(x.accentSoft),success:I(x.success),error:I(x.error),header:s=>ve(I(x.accent)(s)),system:I(x.systemText),userBg:Ce(x.userBg),userText:I(x.userText),userLabel:s=>I(x.userLabel)(s),systemLabel:s=>I(x.systemLabel)(s),assistantLabel:s=>I(x.assistantLabel)(s),subagentLabel:s=>I(x.subagentLabel)(s),subagentBg:Ce(x.subagentBg),subagent:s=>I(x.subagentLabel)(s),toolTitle:I(x.toolTitle),toolOutput:I(x.toolOutput),toolPendingBg:Ce(x.toolPendingBg),toolSuccessBg:Ce(x.toolSuccessBg),toolErrorBg:Ce(x.toolErrorBg),border:I(x.border),bold:ve,italic:rt,user:s=>I(x.userText)(s),assistant:s=>I(x.text)(s),code:I(x.code),quote:I(x.quote),link:I(x.link),tool:I(x.toolTitle),thinking:s=>rt(I(x.dim)(s)),warning:I(x.accentSoft),muted:I(x.dim),highlight:s=>ve(I(x.accent)(s))},ss=ts;function ns(s,e){let t=s.split(`
|
|
3
|
+
`);if(!e)return t.map(a=>I(x.code)(a));let n={keyword:I("#C586C0"),string:I("#CE9178"),comment:I("#6A9955"),number:I("#B5CEA8"),function:I("#DCDCAA"),type:I("#4EC9B0"),operator:I("#D4D4D4"),default:I(x.code)},r=e.toLowerCase();return r==="typescript"||r==="ts"||r==="javascript"||r==="js"?t.map(a=>is(a,n)):r==="python"||r==="py"?t.map(a=>rs(a,n)):r==="bash"||r==="sh"||r==="shell"?t.map(a=>os(a,n)):r==="json"?t.map(a=>as(a,n)):t.map(a=>n.default(a))}function is(s,e){if(s.trim().startsWith("//"))return e.comment?.(s)??s;let t=/\b(const|let|var|function|async|await|return|if|else|for|while|class|interface|type|import|export|from|default|new|this|super|extends|implements)\b/g,n=s.replace(t,r=>e.keyword?.(r)??r);return n=n.replace(/(['"`])(?:(?=(\\?))\2.)*?\1/g,r=>e.string?.(r)??r),n=n.replace(/\b\d+(\.\d+)?\b/g,r=>e.number?.(r)??r),n}function rs(s,e){if(s.trim().startsWith("#"))return e.comment?.(s)??s;let t=/\b(def|class|if|elif|else|for|while|return|import|from|as|try|except|finally|with|async|await|lambda|yield|pass|break|continue|None|True|False)\b/g,n=s.replace(t,r=>e.keyword?.(r)??r);return n=n.replace(/(['"])(?:(?=(\\?))\2.)*?\1/g,r=>e.string?.(r)??r),n=n.replace(/\b\d+(\.\d+)?\b/g,r=>e.number?.(r)??r),n}function os(s,e){if(s.trim().startsWith("#"))return e.comment?.(s)??s;let t=/\b(if|then|else|elif|fi|for|while|do|done|case|esac|function|return|exit|export|source|alias)\b/g,n=s.replace(t,r=>e.keyword?.(r)??r);return n=n.replace(/(['"])(?:(?=(\\?))\2.)*?\1/g,r=>e.string?.(r)??r),n=n.replace(/\$\{?[\w_]+\}?/g,r=>e.type?.(r)??r),n}function as(s,e){let t=s;return t=t.replace(/"([^"]+)":/g,(n,r)=>`${e.type?.(`"${r}"`)??`"${r}"`}: `),t=t.replace(/:\s*"([^"]+)"/g,(n,r)=>`: ${e.string?.(`"${r}"`)??`"${r}"`}`),t=t.replace(/:\s*(\d+(\.\d+)?)/g,(n,r)=>`: ${e.number?.(r)??r}`),t=t.replace(/:\s*(true|false|null)/g,(n,r)=>`: ${e.keyword?.(r)??r}`),t}var xe={heading:s=>ve(I(x.accent)(s)),link:s=>I(x.link)(s),linkUrl:s=>I(x.dim)(s),code:s=>I(x.code)(s),codeBlock:s=>I(x.code)(s),codeBlockBorder:s=>I(x.codeBorder)(s),quote:s=>I(x.quote)(s),quoteBorder:s=>I(x.quoteBorder)(s),hr:s=>I(x.border)(s),listBullet:s=>I(x.accentSoft)(s),bold:ve,italic:rt,strikethrough:s=>`\x1B[9m${s}\x1B[0m`,underline:s=>`\x1B[4m${s}\x1B[0m`,highlightCode:ns,codeBlockIndent:" "},Mt={borderColor:s=>I(x.border)(s),selectList:ss};var z=a.create({service:"cli-tui-chatlog"}),ot=null;function ds(){if(ot)return ot;let s=a$1("tui.system.tool_executing",{vars:{tool:""}}).split(":")[0]?.trim()||"",e=a$1("tui.system.tool_completed",{vars:{tool:""}}).split(":")[0]?.trim()||"",t=a$1("tui.system.tool_failed",{vars:{tool:""}}).split(":")[0]?.trim()||"",n=[],r=a=>a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return s&&s!=="tui.system.tool_executing"&&n.push(new RegExp(r(s),"i")),e&&e!=="tui.system.tool_completed"&&n.push(new RegExp(r(e),"i")),t&&t!=="tui.system.tool_failed"&&n.push(new RegExp(r(t),"i")),n.push(/[⚙🔧]\s*(执行工具|Executing tool)/iu,/[✓✅]\s*(工具完成|工具执行完成|Tool completed|Tool execution completed)/iu,/[✗❌]\s*(工具失败|工具执行失败|Tool failed|Tool execution failed)/iu),ot=n,n}var $e=class extends Container{constructor(){super();b(this,"messages",[]);b(this,"maxMessages",1e3);b(this,"containerWidth",80);b(this,"getState");b(this,"cachedProtocolMetadata",null);b(this,"_cachedPrimaryAgents",null);}setStateGetter(t){this.getState=t,this.loadProtocolMetadata();}async loadProtocolMetadata(){let t=this.getState?.();if(t?.sdk)try{let n=await t.sdk.app.context({});n.data?.protocolMetadata&&(this.cachedProtocolMetadata=n.data.protocolMetadata);}catch(n){z.debug("Failed to load protocol metadata",{error:n});}}setWidth(t){this.containerWidth=t;}addUser(t,n,r){this.addMessage("user",t,n,r);}addAssistant(t,n,r){this.addMessage("assistant",t,n,r);}addSystem(t,n,r){this.addMessage("system",t,n,r);}addMessage(t,n,r,a){if(z.debug("addMessage called",{type:t,content:n.substring(0,100),id:r,currentMessagesCount:this.messages.length}),r&&this.messages.findIndex(l=>l.id===r)!==-1){z.debug("Message with same ID already exists, skipping",{id:r});return}this.messages.push({type:t,content:n,timestamp:Date.now(),id:r,metadata:a}),z.debug("After push, messages count",{count:this.messages.length}),this.messages.length>this.maxMessages&&(this.messages=this.messages.slice(-this.maxMessages)),z.debug("Calling updateChildren"),this.updateChildren(),z.debug("updateChildren completed");}clear(){this.messages=[],this.updateChildren();}updateChildren(){let t=this.getState?.(),n=t?.toolsExpanded??false,r=t?.showThinking??false,a=t?.verboseLevel??"off",o=t?.messageLimit??50;z.debug("updateChildren called",{messagesCount:this.messages.length,childrenBeforeClear:this.children.length,toolsExpanded:n,showThinking:r,verboseLevel:a,messageLimit:o}),this.children=[],z.debug("Children cleared",{childrenAfterClear:this.children.length});let l=new Set,d=0,u=this.messages.slice(-o);z.debug("Applied message limit",{originalCount:this.messages.length,limitedCount:u.length,messageLimit:o});for(let c of u){if(c.id&&l.has(c.id)){z.debug("Skipping duplicate ID",{id:c.id});continue}if(!n&&this.shouldFilterToolMessage(c)){z.debug("Filtering tool message (tools collapsed)",{content:c.content.substring(0,50),metadata:c.metadata});continue}if(c.id&&!r&&this.shouldFilterThinkingMessage(c)){z.debug("Filtering thinking message (thinking mode off)",{content:c.content.substring(0,50),metadata:c.metadata});continue}if(c.id&&a==="off"&&this.shouldFilterBackgroundAgentMessage(c)){z.debug("Filtering background agent message (verbose off)",{content:c.content.substring(0,50),agent:c.metadata?.agent});continue}if(c.type==="assistant"&&this.shouldFilterAssistantMessage(c.content)){z.debug("Filtering assistant metadata",{content:c.content.substring(0,50)});continue}c.id&&l.add(c.id),z.debug("Rendering message",{type:c.type,content:c.content.substring(0,50),id:c.id,hasId:!!c.id,metadata:c.metadata}),this.renderMessage(c),d++;}z.debug("updateChildren completed",{childrenAfterRender:this.children.length,renderedCount:d}),this.invalidate();}shouldFilterSystemMessage(t){return ds().some(r=>r.test(t))}shouldFilterToolMessage(t){return t.metadata?.isTool===true?true:t.type==="system"?this.shouldFilterSystemMessage(t.content):false}shouldFilterThinkingMessage(t){return t.metadata?.isThinking===true}shouldFilterBackgroundAgentMessage(t){let n=t.metadata?.agent;if(!n)return false;let r=this.getState?.();if(!r?.sdk)return false;let a=async()=>{try{return ((await r.sdk.app.agents({})).data||[]).filter(d=>d.mode==="primary"&&d.hidden!==!0).map(d=>d.name)}catch{return []}};return this._cachedPrimaryAgents?!this._cachedPrimaryAgents.includes(n):(a().then(o=>{this._cachedPrimaryAgents=o,this.updateChildren();}),false)}shouldFilterAssistantMessage(t){return /^>\s+[\w-]+(\s+·\s+[\w-]+)?$/.test(t.trim())}renderMessage(t){let n=new Date(t.timestamp).toLocaleTimeString();switch(t.type){case "user":{if(t.metadata?.isSubagentResult){let l=t.metadata.agent||"SubAgent",d=ee.subagentLabel(`[${n}] ${l}: `),u=new Text(d,1,0);this.addChild(u);let p=new Markdown(t.content,0,0,xe).render(this.containerWidth-2);for(let _ of p){let $=new Text(_,1,0);this.addChild($);}break}let r=ee.userLabel(`[${n}] ${a$1("tui.chatlog.user_prefix")}: `),a=new Text(r,1,0);if(this.addChild(a),t.content.trim().startsWith("/")){let l=ee.accent(t.content),d=new Text(l,1,0);this.addChild(d);}else {let l=ee.userText(t.content),u=new Markdown(l,0,0,xe).render(this.containerWidth-2);for(let c of u){let p=new Text(c,1,0);this.addChild(p);}}break}case "assistant":{let r=a$1("tui.chatlog.assistant_prefix");this.cachedProtocolMetadata?.name?r=this.cachedProtocolMetadata.name:t.metadata?.agent&&(r=t.metadata.agent);let a=ee.assistantLabel(`[${n}] ${r}: `),o=new Text(a,1,0);this.addChild(o);let d=new Markdown(t.content,0,0,xe).render(this.containerWidth-2);for(let u of d){let c=new Text(u,1,0);this.addChild(c);}break}case "system":{let r=ee.systemLabel(`[${n}] ${a$1("tui.chatlog.system_prefix")}: `),a=new Text(r,1,0);this.addChild(a);let o=ee.system(t.content),d=new Markdown(o,0,0,xe).render(this.containerWidth-2);for(let u of d){let c=new Text(u,1,0);this.addChild(c);}break}}}};var cs={q:"exit",quit:"exit",h:"help",s:"status",a:"agent",m:"model",sess:"session",skills:"skill",commands:"command",mcps:"mcp",models:"model",agents:"agent",sessions:"session",btw:"command"},us=new Set(["btw","sync","abort","compact"]);function Dt(s){let e=s.replace(/^\//,"").trim();if(!e)return {name:"",args:""};let[t="",...n]=e.split(/\s+/),r=t.toLowerCase();return us.has(r)?{name:"command",args:e}:{name:cs[r]??r,args:n.join(" ").trim()}}var at=[{name:"help",description:a$1("tui.command.help.description")},{name:"status",description:a$1("tui.command.status.description")},{name:"command",description:a$1("tui.command.command.description")},{name:"agent",description:a$1("tui.command.agent.description")},{name:"session",description:a$1("tui.command.session.description")},{name:"new",description:a$1("tui.command.new.description")},{name:"fork",description:a$1("tui.command.fork.description")},{name:"reset",description:a$1("tui.command.reset.description")},{name:"model",description:a$1("tui.command.model.description")},{name:"settings",description:a$1("tui.command.settings.description")},{name:"verbose",description:a$1("tui.command.verbose.description")},{name:"thinking",description:a$1("tui.command.thinking.description")},{name:"abort",description:a$1("tui.command.abort.description")},{name:"clear",description:a$1("tui.command.clear.description")},{name:"compact",description:a$1("tui.command.compact.description")},{name:"skill",description:a$1("tui.command.skill.description")},{name:"mcp",description:a$1("tui.command.mcp.description")},{name:"exit",description:a$1("tui.command.exit.description")}];async function _t(s,e){let t=[...at];if(s)try{let r=(await s.command.list({contextMode:e})).data||[],a=new Set(at.map(o=>o.name));for(let o of r)a.has(o.name)||t.push({name:o.name,description:o.description||""});}catch(n){console.error("Failed to fetch dynamic commands:",n);}return t}function Rt(){return at}function $t(){let s=[];return s.push("# "+a$1("tui.help.title")),s.push(""),s.push("## "+a$1("tui.help.section.basic")),s.push("- `"+a$1("tui.help.command.help")+"`"),s.push("- `"+a$1("tui.help.command.status")+"`"),s.push("- `"+a$1("tui.help.command.command")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.agent")),s.push("- `"+a$1("tui.help.command.agent")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.session")),s.push("- `"+a$1("tui.help.command.session")+"`"),s.push("- `"+a$1("tui.help.command.new")+"`"),s.push("- `"+a$1("tui.help.command.fork")+"`"),s.push("- `"+a$1("tui.help.command.reset")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.model")),s.push("- `"+a$1("tui.help.command.model")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.settings")),s.push("- `"+a$1("tui.help.command.settings")+"`"),s.push("- `"+a$1("tui.help.command.verbose")+"`"),s.push("- `"+a$1("tui.help.command.thinking")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.operations")),s.push("- `"+a$1("tui.help.command.abort")+"`"),s.push("- `"+a$1("tui.help.command.clear")+"`"),s.push("- `"+a$1("tui.help.command.compact")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.skill")),s.push("- `"+a$1("tui.help.command.skill")+"`"),s.push("- `"+a$1("tui.help.command.mcp")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.exit")),s.push("- `"+a$1("tui.help.command.exit")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.local")),s.push("- `"+a$1("tui.help.command.local")+"`"),s.push(""),s.push("## "+a$1("tui.help.section.shortcuts")),s.push("- `"+a$1("tui.help.shortcut.ctrl_c")+"`"),s.push("- `"+a$1("tui.help.shortcut.ctrl_d")+"`"),s.push("- `"+a$1("tui.help.shortcut.ctrl_l")+"`"),s.push("- `"+a$1("tui.help.shortcut.ctrl_p")+"`"),s.push("- `"+a$1("tui.help.shortcut.ctrl_g")+"`"),s.push("- `"+a$1("tui.help.shortcut.esc")+"`"),s.join(`
|
|
4
|
+
`)}var ms=/[\s\-_./:#@]/;function Ht(s,e){return e===0||ms.test(s[e-1]??"")}function Ft(s,e){if(!e)return null;let t=s.toLowerCase(),n=e.toLowerCase(),r=t.length-n.length;if(r<0)return null;for(let a=0;a<=r;a++)if(t.startsWith(n,a)&&Ht(t,a))return a;return null}function gs(s,e){if(s.length===0)return 0;if(s.length>e.length)return null;let t=0,n=0,r=-1,a=0;for(let o=0;o<e.length&&t<s.length;o++)if(e[o]===s[t]){let l=Ht(e,o);r===o-1?(a++,n-=a*5):(a=0,r>=0&&(n+=(o-r-1)*2)),l&&(n-=10),n+=o*.1,r=o,t++;}return t<s.length?null:n}function qt(s,e){let t=e.trim();if(!t)return s;let n=t.split(/\s+/).filter(a=>a.length>0);if(n.length===0)return s;let r=[];for(let a of s){let o=a.searchTextLower??"",l=0,d=true;for(let u of n){let c=gs(u,o);if(c!==null)l+=c;else {d=false;break}}d&&r.push({item:a,score:l});}return r.sort((a,o)=>a.score-o.score),r.map(a=>a.item)}var ys="\x1B",Bt=new RegExp(`${ys}\\[[0-9;]*m`,"g"),se=class se{constructor(e,t,n){b(this,"items");b(this,"filteredItems");b(this,"selectedIndex",0);b(this,"maxVisible");b(this,"theme");b(this,"searchInput");b(this,"regexCache",new Map);b(this,"onSelect");b(this,"onCancel");b(this,"onSelectionChange");b(this,"compareByScore",(e,t)=>e.tier!==t.tier?e.tier-t.tier:e.score!==t.score?e.score-t.score:this.getItemLabel(e.item).localeCompare(this.getItemLabel(t.item)));this.items=e,this.filteredItems=e,this.maxVisible=t,this.theme=n,this.searchInput=new Input;}getCachedRegex(e){let t=this.regexCache.get(e);return t||(t=new RegExp(this.escapeRegex(e),"gi"),this.regexCache.set(e,t)),t}updateFilter(){let e=this.searchInput.getValue().trim();e?this.filteredItems=this.smartFilter(e):this.filteredItems=this.items,this.selectedIndex=0,this.notifySelectionChange();}smartFilter(e){let t=e.toLowerCase(),n=[],r=[];for(let o of this.items){let l=this.getItemLabel(o),d=o.description??"",u=a$2(l).toLowerCase(),c=a$2(d).toLowerCase(),p=u.indexOf(t);if(p!==-1){n.push({item:o,tier:0,score:p});continue}let _=Ft(u,t);if(_!==null){n.push({item:o,tier:1,score:_});continue}let $=c.indexOf(t);if($!==-1){n.push({item:o,tier:2,score:$});continue}let ne=o.searchText??"";r.push({item:o,searchTextLower:[l,d,ne].map(A=>a$2(A)).filter(Boolean).join(" ").toLowerCase()});}n.sort(this.compareByScore);let a=qt(r,t);return [...n.map(o=>o.item),...a.map(o=>o.item)]}escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}getItemLabel(e){return e.label||e.value}splitAnsiParts(e){let t=[];Bt.lastIndex=0;let n=0,r;for(;(r=Bt.exec(e))!==null;)r.index>n&&t.push({text:e.slice(n,r.index),isAnsi:false}),t.push({text:r[0],isAnsi:true}),n=r.index+r[0].length;return n<e.length&&t.push({text:e.slice(n),isAnsi:false}),t}highlightMatch(e,t){let n=t.trim().split(/\s+/).map(o=>o.toLowerCase()).filter(o=>o.length>0);if(n.length===0)return e;let r=Array.from(new Set(n)).toSorted((o,l)=>l.length-o.length),a=this.splitAnsiParts(e);for(let o of r){let l=this.getCachedRegex(o),d=[];for(let u of a){if(u.isAnsi){d.push(u);continue}l.lastIndex=0;let c=u.text.replace(l,p=>this.theme.matchHighlight(p));if(c===u.text){d.push(u);continue}d.push(...this.splitAnsiParts(c));}a=d;}return a.map(o=>o.text).join("")}setSelectedIndex(e){this.selectedIndex=Math.max(0,Math.min(e,this.filteredItems.length-1));}invalidate(){this.searchInput.invalidate();}render(e){let t=[],r=this.theme.searchPrompt("search: "),a=Math.max(1,e-b$1(r)),l=this.searchInput.render(a)[0]??"";t.push(`${r}${this.theme.searchInput(l)}`),t.push("");let d=this.searchInput.getValue().trim();if(this.filteredItems.length===0)return t.push(this.theme.noMatch(" No matches")),t;let u=Math.max(0,Math.min(this.selectedIndex-Math.floor(this.maxVisible/2),this.filteredItems.length-this.maxVisible)),c=Math.min(u+this.maxVisible,this.filteredItems.length);for(let p=u;p<c;p++){let _=this.filteredItems[p];if(!_)continue;let $=p===this.selectedIndex;t.push(this.renderItemLine(_,$,e,d));}if(this.filteredItems.length>this.maxVisible){let p=`${this.selectedIndex+1}/${this.filteredItems.length}`;t.push(this.theme.scrollInfo(` ${p}`));}return t}renderItemLine(e,t,n,r){let a=t?"\u2192 ":" ",o=a.length,l=this.getItemLabel(e),d=e.description;if(d){let $=this.getDescriptionLayout(n,o);if($){let ne=truncateToWidth(l,$.maxValueWidth,""),A=this.highlightMatch(ne,r),M=b$1(A),h=$.availableWidth-M-$.spacingWidth;if(h>=se.DESCRIPTION_MIN_WIDTH){let re=" ".repeat($.spacingWidth),H=truncateToWidth(d,h,""),w=this.highlightMatch(H,r),f=t?w:this.theme.description(w),g=`${a}${A}${re}${f}`;return t?this.theme.selectedText(g):g}}}let u=n-o-2,c=truncateToWidth(l,u,""),p=this.highlightMatch(c,r),_=`${a}${p}`;return t?this.theme.selectedText(_):_}getDescriptionLayout(e,t){if(e<=se.DESCRIPTION_LAYOUT_MIN_WIDTH)return null;let n=Math.max(1,e-t-se.RIGHT_MARGIN_WIDTH),r=n-se.DESCRIPTION_MIN_WIDTH-se.DESCRIPTION_SPACING_WIDTH;return r<1?null:{availableWidth:n,maxValueWidth:r,spacingWidth:se.DESCRIPTION_SPACING_WIDTH}}handleInput(e){if(isKeyRelease(e))return;let t=getKeybindings(),n=!this.searchInput.getValue().trim();if(t.matches(e,"tui.select.up")||t.matches(e,"tui.editor.cursorUp")||n&&e==="k"){this.selectedIndex=Math.max(0,this.selectedIndex-1),this.notifySelectionChange();return}if(t.matches(e,"tui.select.down")||t.matches(e,"tui.editor.cursorDown")||n&&e==="j"){this.selectedIndex=Math.min(this.filteredItems.length-1,this.selectedIndex+1),this.notifySelectionChange();return}if(t.matches(e,"tui.select.confirm")){let o=this.filteredItems[this.selectedIndex];o&&this.onSelect&&this.onSelect(o);return}if(t.matches(e,"tui.select.cancel")){this.onCancel&&this.onCancel();return}let r=this.searchInput.getValue();this.searchInput.handleInput(e);let a=this.searchInput.getValue();r!==a&&this.updateFilter();}notifySelectionChange(){let e=this.filteredItems[this.selectedIndex];e&&this.onSelectionChange&&this.onSelectionChange(e);}getSelectedItem(){return this.filteredItems[this.selectedIndex]??null}};b(se,"DESCRIPTION_LAYOUT_MIN_WIDTH",40),b(se,"DESCRIPTION_MIN_WIDTH",12),b(se,"DESCRIPTION_SPACING_WIDTH",2),b(se,"RIGHT_MARGIN_WIDTH",2);var He=se;var ge=a.create({service:"cli-tui-selectors"}),Ss={selectedPrefix:s=>`\x1B[36m${s}\x1B[0m`,selectedText:s=>`\x1B[1;36m${s}\x1B[0m`,description:s=>`\x1B[90m${s}\x1B[0m`,scrollInfo:s=>`\x1B[90m${s}\x1B[0m`,noMatch:s=>`\x1B[90m${s}\x1B[0m`,searchPrompt:s=>`\x1B[36m${s}\x1B[0m`,searchInput:s=>s,matchHighlight:s=>`\x1B[1;33m${s}\x1B[0m`};function pe(s,e){ge.debug("Creating searchable select list",{itemsCount:s.length,title:e.title});let t=e.maxVisible??10,n=new He(s,t,Ss);return e.onSelect&&(n.onSelect=e.onSelect),e.onCancel&&(n.onCancel=e.onCancel),n}function Fe(s,e){ge.info("Creating model selector with data");let t=[];for(let[n,r]of Object.entries(s))if(r?.models)for(let[a,o]of Object.entries(r.models))t.push({label:`${r.name} - ${o.name}`,value:`${n}/${a}`,description:o.family||""});return ge.debug("Model list loaded",{count:t.length}),pe(t,{title:e.title||a$1("tui.selector.model.title"),placeholder:e.placeholder||a$1("tui.selector.model.placeholder"),onSelect:e.onSelect,onCancel:e.onCancel})}function qe(s,e){ge.info("Creating session selector with data",{count:s.length});let t=s.map(n=>({label:n.title||n.id,value:n.id,description:`\u66F4\u65B0\u65F6\u95F4: ${n.time?.updated?new Date(n.time.updated).toLocaleString():"\u672A\u77E5"}`}));return ge.debug("Session list loaded",{count:t.length}),pe(t,{title:e.title||a$1("tui.selector.session.title"),placeholder:e.placeholder||a$1("tui.selector.session.placeholder"),onSelect:e.onSelect,onCancel:e.onCancel})}function Be(s,e){ge.info("Creating agent selector with data",{count:s.length});let t=s.map(n=>({label:n.name,value:n.name,description:n.description||(n.mode?`\u6A21\u5F0F: ${n.mode}`:"")}));return ge.debug("Agent list loaded",{count:t.length}),pe(t,{title:e.title||a$1("tui.selector.agent.title"),placeholder:e.placeholder||a$1("tui.selector.agent.placeholder"),onSelect:e.onSelect,onCancel:e.onCancel})}var T=a.create({service:"cli-tui-command-handlers"});async function vs(s,e){let t=[];t.push("## "+a$1("tui.handler.status.title")),t.push(""),t.push("### "+a$1("tui.handler.status.system_info")),t.push("- **"+a$1("tui.handler.status.system")+"**: "+a$1("tui.handler.status.ok")),t.push("- **"+a$1("tui.handler.status.directory")+"**: `"+e+"`"),t.push(""),t.push("### "+a$1("tui.handler.status.global_paths")),t.push("- **home**: `"+a$3.Path.home+"`"),t.push("- **data**: `"+a$3.Path.data+"`"),t.push("- **bin**: `"+a$3.Path.bin+"`"),t.push("- **log**: `"+a$3.Path.log+"`"),t.push("- **cache**: `"+a$3.Path.cache+"`"),t.push("- **config**: `"+a$3.Path.config+"`"),t.push("- **state**: `"+a$3.Path.state+"`"),t.push(""),t.push("### "+a$1("tui.handler.status.session_info")),t.push("- **"+a$1("tui.handler.status.agent_label")+"**: "+(s.agent||a$1("tui.handler.status.not_set"))),t.push("- **"+a$1("tui.handler.status.session_label")+"**: "+(s.currentSessionKey||a$1("tui.handler.status.not_set"))),t.push("- **"+a$1("tui.handler.status.model_label")+"**: "+(s.sessionInfo.model||a$1("tui.handler.status.not_set"))),t.push("");try{let r=(await s.sdk.command.list({})).data||[],a=r.filter(d=>d.source==="skill"),o=r.filter(d=>d.source==="mcp"),l=r.filter(d=>d.source==="command");if(t.push("### "+a$1("tui.handler.status.skills")+" ("+a.length+")"),a.length>0){let d=a.map(u=>u.name).join(", ");t.push(d);}t.push("");try{let u=(await s.sdk.mcp.status({})).data||{},p=(await s.sdk.mcp.tools({})).data||{},_=Object.entries(u).filter(([,$])=>$.status==="connected");if(t.push("### "+a$1("tui.handler.status.mcp")+" ("+_.length+")"),_.length>0)for(let[$]of _){let ne=p[$]||[];ne.length>0?t.push("- **"+$+"** ("+ne.length+"): "+ne.join(", ")):t.push("- **"+$+"**");}t.push("");}catch(d){T.error("Failed to get MCP status",{error:d}),t.push("### "+a$1("tui.handler.status.mcp")+" (0)"),t.push("");}if(t.push("### "+a$1("tui.handler.status.commands")+" ("+l.length+")"),l.length>0){let d=l.map(u=>u.name).join(", ");t.push(d);}t.push(""),t.push("### "+a$1("tui.handler.status.services"));try{if(!s.sdk?.lsp)T.warn("SDK or LSP API is not initialized"),t.push("- **LSP**: "+a$1("tui.handler.status.error_loading_lsp"));else {let d=await s.sdk.lsp.status({});if(!d||typeof d!="object")T.warn("LSP status response is not a valid object",{response:d,responseType:typeof d}),t.push("- **LSP**: "+a$1("tui.handler.status.error_loading_lsp"));else {let u=Array.isArray(d.data)?d.data:[];if(t.push("- **LSP ("+u.length+")**: "),u.length>0){let c=u.filter(p=>p&&typeof p=="object").map(p=>p?.name||"unknown").join(", ");t.push(" "+c);}else t.push(" "+a$1("tui.handler.status.no_lsp"));}}}catch(d){T.error("Failed to get LSP status",{error:d}),t.push("- **LSP**: "+a$1("tui.handler.status.error_loading_lsp"));}}catch(n){T.error("Failed to get command list for status",{error:n}),t.push(""),t.push("_"+a$1("tui.handler.status.error_loading")+"_");}return t.join(`
|
|
5
|
+
`)}function Ut(s,e){let{chatLog:t,tui:n,directory:r,openOverlay:a,closeOverlay:o,requestExit:l,setActivityStatus:d,updateFooter:u,refreshSessionInfo:c$1,loadHistory:p,setSession:_,refreshAgents:$,abortActive:ne}=s,A=()=>{o();},M=async(H,w,f,g)=>{try{if(!w){T.warn("Cannot publish command event: no session ID",{name:H});return}await ma(e,fa.Event.Executed,{name:H,sessionID:w,arguments:f,messageID:g}),T.debug("Command event published",{name:H,sessionId:w,messageId:g});}catch(k){T.error("Failed to publish command event",{name:H,sessionId:w,messageId:g,error:k instanceof Error?k.message:String(k),stack:k instanceof Error?k.stack:void 0});}},he=async H=>{T.debug("Handle command called",{raw:H});let{name:w,args:f}=Dt(H);if(T.debug("Parsed command",{name:w,args:f}),!w){T.debug("No command name, returning");return}try{switch(w){case "help":T.debug("Executing help command"),t.addSystem($t()),T.debug("Help text added to chatLog"),await M("help",e.currentSessionId||"",f||"",randomUUID());break;case "commands":case "command":case "cmds":case "cmd":{try{let b=((await e.sdk.command.list({})).data||[]).filter(y=>y.source==="command");if(b.length===0){t.addSystem(a$1("tui.handler.command.empty")),await M(w,e.currentSessionId||"",f||"",randomUUID());break}if(f){let y=f.split(/\s+/),G=y[0],te=y.slice(1).join(" ");b.some(ae=>ae.name===G)?await re("command",G,e,t,d,te||void 0):t.addSystem(a$1("tui.handler.command.not_found",{vars:{name:G}})),await M(w,e.currentSessionId||"",f,randomUUID());break}T.info("Opening command selector");let S=b.map(y=>({label:y.name,description:y.description||"",value:y.name})),E=pe(S,{onSelect:async y=>{A(),s.setInputText?s.setInputText(`/command ${y.value} `):await re("command",y.value,e,t,d);},onCancel:A});a(E),await M(w,e.currentSessionId||"","",randomUUID());}catch(g){T.error("Failed to handle command",{error:g}),t.addSystem(a$1("tui.handler.command.error",{vars:{error:String(g)}})),await M(w,e.currentSessionId||"",f||"",randomUUID());}break}case "status":t.addSystem(await vs(e,r)),await M("status",e.currentSessionId||"",f||"",randomUUID());break;case "agents":case "agent":if(f)e.agent=f,t.addSystem(a$1("tui.handler.agent.switched",{vars:{agentId:f}})),u(),await b$2(e),await M(w,e.currentSessionId||"",f,randomUUID());else {T.info("Opening agent selector");let k=(await qa(e)).filter(S=>S.mode==="primary"&&S.hidden!==!0),b=Be(k,{onSelect:async S=>{e.agent=S.value,t.addSystem(a$1("tui.handler.agent.switched",{vars:{agentId:S.value}})),u(),A(),await b$2(e);},onCancel:A});a(b),await M(w,e.currentSessionId||"","",randomUUID());}break;case "sessions":case "session":if(f&&_)await _(f),u(),await M(w,e.currentSessionId||"",f,randomUUID());else {T.info("Opening session selector");let g=await ra(e),k=qe(g,{onSelect:async b=>{_&&await _(b.value),u(),A();},onCancel:A});a(k),await M(w,e.currentSessionId||"","",randomUUID());}break;case "models":case "model":if(f)e.sessionInfo.model=f,t.addSystem(a$1("tui.handler.model.set",{vars:{model:f}})),u(),await b$2(e),await M(w,e.currentSessionId||"",f,randomUUID());else {T.info("Opening model selector");let g=await sa(e),k=Fe(g,{onSelect:async b=>{e.sessionInfo.model=b.value,t.addSystem(a$1("tui.handler.model.set",{vars:{model:b.value}})),u(),A(),await b$2(e);},onCancel:A});a(k),await M(w,e.currentSessionId||"","",randomUUID());}break;case "fork":{try{d(a$1("tui.handler.fork.begin"));let g=e.currentSessionId;if(g&&e.activeChatRunId)try{await e.sdk.session.abort({sessionID:g}),e.activeChatRunId=null,T.info("Aborted running agent before forking session",{sessionId:g});}catch(k){T.warn("Failed to abort agent before forking, continuing anyway",{error:k});}if(t.clear(),g){let b=(await e.sdk.session.fork({sessionID:g})).data;b&&(e.currentSessionId=b.id,e.currentSessionKey=b.title||b.slug||b.id,e.sessionInfo={model:e.sessionInfo.model},await b$2(e));}p&&await p(),u(),d(a$1("tui.status.ready"));}catch(g){T.error("Failed to fork session",{error:g}),t.addSystem(a$1("tui.handler.fork.error",{vars:{error:String(g)}})),d(a$1("tui.status.error"));}await M("fork",e.currentSessionId||"",f||"",randomUUID());break}case "new":{try{d(a$1("tui.handler.new.begin"));let g=e.currentSessionId;if(g&&e.activeChatRunId)try{await e.sdk.session.abort({sessionID:g}),e.activeChatRunId=null,T.info("Aborted running agent before creating new session",{sessionId:g});}catch(E){T.warn("Failed to abort agent before creating new session, continuing anyway",{error:E});}t.clear();let k=e.instanceContext.directory,S=(await e.sdk.session.create({directory:k})).data;S&&(e.currentSessionId=S.id,e.currentSessionKey=S.title||S.slug||S.id,e.sessionInfo={model:e.sessionInfo.model},await b$2(e)),u(),d(a$1("tui.status.ready"));}catch(g){T.error("Failed to create new session",{error:g}),t.addSystem(a$1("tui.handler.new.error",{vars:{error:String(g)}})),d(a$1("tui.status.error"));}await M("new",e.currentSessionId||"",f||"",randomUUID());break}case "reset":{try{let g=e.currentSessionId;if(g&&e.activeChatRunId)try{await e.sdk.session.abort({sessionID:g}),e.activeChatRunId=null,T.info("Aborted running agent before reset",{sessionId:g});}catch(k){T.warn("Failed to abort agent before reset, continuing anyway",{error:k});}t.clear(),t.addSystem(a$1("tui.handler.session.reset")),p&&await p();}catch(g){T.error("Failed to reset session",{error:g}),t.addSystem(a$1("tui.handler.session.reset_error",{vars:{error:String(g)}}));}await M("reset",e.currentSessionId||"",f||"",randomUUID());break}case "settings":{T.info("Opening settings panel");let{createSettingsPanel:g}=await import('./settings-panel-BWCVKC4G.mjs'),k=g({currentSettings:{thinkingLevel:e.thinkingLevel,showThinking:e.showThinking,verboseLevel:e.verboseLevel,messageLimit:e.messageLimit,toolsExpanded:e.toolsExpanded,localShellPermission:e.localShellPermission,contextMode:e.contextMode},onChange:(b,S)=>{switch(b){case "thinkingLevel":e.thinkingLevel=S,t.addSystem(a$1("tui.handler.thinking_level.set",{vars:{level:S}}));break;case "showThinking":e.showThinking=S==="true",T.info("showThinking changed",{newValue:S,showThinking:e.showThinking}),t.addSystem(e.showThinking?a$1("tui.hint.show_thinking_on"):a$1("tui.hint.show_thinking_off"));break;case "verboseLevel":e.verboseLevel=S,t.addSystem(a$1("tui.handler.verbose_level.set",{vars:{level:S}}));break;case "messageLimit":e.messageLimit=Number.parseInt(S,10),t.addSystem(a$1("tui.handler.message_limit.set",{vars:{limit:S}}));break;case "toolsExpanded":e.toolsExpanded=S==="true",T.info("toolsExpanded changed",{newValue:S,toolsExpanded:e.toolsExpanded}),t.addSystem(e.toolsExpanded?a$1("tui.hint.tools_expanded"):a$1("tui.hint.tools_collapsed"));break;case "localShellPermission":e.localShellPermission=S,T.info("localShellPermission changed",{newValue:S,localShellPermission:e.localShellPermission}),t.addSystem(a$1("tui.shell.permission.updated",{vars:{permission:S}}));break;case "contextMode":{let E=S;e.contextMode=E,T.info("contextMode changed",{newValue:S,contextMode:E}),t.addSystem(a$1("tui.handler.context_mode.set",{vars:{mode:E}})),e.currentSessionId&&e.sdk.session.contextMode.set({sessionID:e.currentSessionId,mode:E}).catch(y=>{T.error("Failed to update session contextMode",{error:y,sessionId:e.currentSessionId});});break}}b$2(e).then(async()=>{try{T.info("Publishing HeaderRefresh event",{id:b,newValue:S}),await ma(e,c.StatusBarRefresh,{reason:`settings changed: ${b}`});}catch(E){T.error("Failed to publish HeaderRefresh event",{error:E});}}).catch(E=>{T.error("Failed to save TUI state after settings change",{error:E,id:b});});},onCancel:A});a(k),await M("settings",e.currentSessionId||"",f||"",randomUUID());break}case "verbose":if(!f){t.addSystem(a$1("tui.handler.verbose.usage")),await M(w,e.currentSessionId||"","",randomUUID());break}if(f!=="on"&&f!=="off"){t.addSystem(a$1("tui.handler.verbose.invalid",{vars:{value:f}})),await M(w,e.currentSessionId||"",f,randomUUID());break}e.verboseLevel=f,t.addSystem(a$1("tui.handler.verbose.set",{vars:{level:f}})),await b$2(e),await M(w,e.currentSessionId||"",f,randomUUID());break;case "thinking":if(!f){t.addSystem(a$1("tui.handler.thinking.usage"));break}e.thinkingLevel=f,t.addSystem(a$1("tui.handler.thinking.set",{vars:{level:f}})),await b$2(e),await M("thinking",e.currentSessionId||"",f||"",randomUUID());break;case "clear":{T.info("Opening clear confirmation dialog");let{createConfirmDialog:g}=await import('./confirm-dialog-AGHMTHWU.mjs'),k=g({message:a$1("tui.dialog.clear.message"),onConfirm:async()=>{try{d(a$1("tui.handler.clear.begin")),A();let b=e.currentSessionId;if(b&&e.activeChatRunId)try{await e.sdk.session.abort({sessionID:b}),e.activeChatRunId=null,T.info("Aborted running agent before clearing session",{sessionId:b});}catch(y){T.warn("Failed to abort agent before clearing, continuing anyway",{error:y});}t.clear(),b&&await e.sdk.session.delete({sessionID:b});let E=(await e.sdk.session.create({directory:e.instanceContext.directory})).data;E&&(e.currentSessionId=E.id,e.currentSessionKey=E.title||E.slug||E.id,e.sessionInfo={model:e.sessionInfo.model},await b$2(e)),u(),t.addSystem(a$1("tui.handler.clear.success")),d(a$1("tui.status.ready")),await M("clear",e.currentSessionId||"",f||"",randomUUID());}catch(b){T.error("Failed to clear chat history",{error:b}),t.addSystem(a$1("tui.handler.clear.error",{vars:{error:String(b)}})),d(a$1("tui.status.error")),await M("clear",e.currentSessionId||"",f||"",randomUUID());}},onCancel:()=>{t.addSystem(a$1("tui.clear.cancel")),A();}});a(k);break}case "skills":case "skill":{try{let b=((await e.sdk.command.list({})).data||[]).filter(y=>y.source==="skill");if(b.length===0){t.addSystem(a$1("tui.handler.skill.empty")),await M(w,e.currentSessionId||"",f||"",randomUUID());break}if(f){let y=f.split(/\s+/),G=y[0],te=y.slice(1).join(" ");b.some(ae=>ae.name===G)?await re("skill",G,e,t,d,te||void 0):t.addSystem(a$1("tui.handler.skill.not_found",{vars:{name:G}})),await M(w,e.currentSessionId||"",f,randomUUID());break}T.info("Opening skill selector");let S=b.map(y=>({label:y.name,description:y.description||"",value:y.name})),E=pe(S,{onSelect:async y=>{A(),s.setInputText?s.setInputText(`/skill ${y.value} `):await re("skill",y.value,e,t,d);},onCancel:A});a(E),await M(w,e.currentSessionId||"","",randomUUID());}catch(g){T.error("Failed to handle skill",{error:g}),t.addSystem(a$1("tui.handler.skill.error",{vars:{error:String(g)}})),await M(w,e.currentSessionId||"",f||"",randomUUID());}break}case "mcps":case "mcp":{try{let b=((await e.sdk.command.list({})).data||[]).filter(y=>y.source==="mcp");if(b.length===0){t.addSystem(a$1("tui.handler.mcp.empty")),await M(w,e.currentSessionId||"",f||"",randomUUID());break}if(f){let y=f.split(/\s+/),G=y[0],te=y.slice(1).join(" ");b.some(ae=>ae.name===G)?await re("mcp",G,e,t,d,te||void 0):t.addSystem(a$1("tui.handler.mcp.not_found",{vars:{name:G}})),await M(w,e.currentSessionId||"",f,randomUUID());break}T.info("Opening MCP prompt selector");let S=b.map(y=>({label:y.name,description:y.description||"",value:y.name})),E=pe(S,{onSelect:async y=>{A(),s.setInputText?s.setInputText(`/mcp ${y.value} `):await re("mcp",y.value,e,t,d);},onCancel:A});a(E),await M(w,e.currentSessionId||"","",randomUUID());}catch(g){T.error("Failed to handle MCP prompt",{error:g}),t.addSystem(a$1("tui.handler.mcp.error",{vars:{error:String(g)}})),await M(w,e.currentSessionId||"",f||"",randomUUID());}break}case "exit":case "quit":await M(w,e.currentSessionId||"",f||"",randomUUID()),l();break;default:T.debug("Unknown command, sending as message"),await h(H);break}}catch(g){let k=g instanceof Error?g.message:String(g);T.error("Command execution failed",{command:w,args:f,error:k,stack:g instanceof Error?g.stack:void 0}),t.addSystem(a$1("tui.handler.command.error",{vars:{command:w,error:k}}));}T.debug("handleCommand completed");},h=async(H,w,f)=>{try{let g=randomUUID();if(e.activeChatRunId=g,d(a$1("tui.handler.send.sending")),!e.currentSessionId)throw new Error("No active session");let k;if(e.sessionInfo.model){let{provider:E,model:y}=parseModelId(e.sessionInfo.model);E&&y&&(k={providerID:E,modelID:y});}let b=[{type:"text",text:H}];if(w&&w.length>0)for(let E of w)b.push({type:"file",url:E.url,filename:E.filename,mime:E.mime});f&&b.push({type:"agent",name:f});let S=await e.sdk.session.prompt({sessionID:e.currentSessionId,parts:b,agent:e.agent||void 0,model:k,variant:e.thinkingLevel,contextMode:e.contextMode});if(S.data&&e.currentSessionId&&await M("message",e.currentSessionId,H,S.data.info?.id||randomUUID()),S.data){let E=S.data.parts?.filter(y=>y.type==="text")||[];for(let y of E)"text"in y&&y.text&&t.addAssistant(y.text,S.data.info?.id);}e.activeChatRunId=null,d("");}catch(g){e.activeChatRunId=null;let k=g instanceof Error?g.message:String(g),b=g instanceof Error?g.name:"Error";t.addSystem(a$1("tui.handler.send.error",{vars:{error:k}})),d(a$1("tui.handler.send.error_status")),T.error("Failed to send message",{error:k,errorName:b,sessionId:e.currentSessionId,hasModel:!!e.sessionInfo.model,stack:g instanceof Error?g.stack:void 0});}},re=async(H,w,f,g,k,b)=>{try{let S=H==="skill"?a$1("tui.handler.skill.executing"):H==="command"?a$1("tui.handler.command.executing"):a$1("tui.handler.mcp.executing");if(g.addSystem(S+`: ${w}`),k(a$1("tui.handler.executing",{vars:{command:w}})),!f.currentSessionId)throw new Error("No active session");let E;f.sessionInfo.model&&(E=f.sessionInfo.model);let y=b?[{type:"text",text:b}]:void 0,te=(await f.sdk.session.command({sessionID:f.currentSessionId,command:w,arguments:b??"",agent:f.agent||void 0,model:E,variant:f.thinkingLevel,contextMode:f.contextMode,parts:y})).data,ae=te?.metadata?.commandType;if(te?.success)ae==="local"&&g.addSystem(a$1("tui.handler.local.completed")+`: ${w}
|
|
6
|
+
`+a$1("tui.handler.local.output")+`:
|
|
7
|
+
`+te.output);else {let Je=te?.error??"Command execution failed",ke=H==="skill"?"tui.handler.skill.error":H==="command"?"tui.handler.command.error":"tui.handler.mcp.error";g.addSystem(a$1(ke,{vars:{command:w,error:Je}}));}k("");}catch(S){let E=S instanceof Error?S.message:String(S),y=S instanceof Error?S.name:"Error",G=H==="skill"?a$1("tui.handler.skill.error"):H==="command"?a$1("tui.handler.command.error"):a$1("tui.handler.mcp.error");g.addSystem(G+`: ${w}
|
|
8
|
+
${E}`),k(a$1("tui.status.error")),T.error("Failed to execute command",{type:H,name:w,error:E,errorName:y,sessionId:f.currentSessionId,stack:S instanceof Error?S.stack:void 0});}};return {handleCommand:he,sendMessage:h}}var L=a.create({service:"cli-tui-events"});function Ot(s){return e=>{try{if(e.type==="message.updated"){xs(s,e);return}if(e.type==="message.part.updated"){ws(s,e);return}if(e.type==="session.status"){Fs(s,e);return}if(e.type==="session.error"){qs(s,e);return}if(e.type==="agent.updated"){Bs(s,e);return}if(e.type==="session.updated"){Us(s,e);return}if(e.type==="permission.asked"){Os(s,e);return}if(e.type==="question.asked"){Ws(s,e);return}}catch(t){L.error("Event handling failed",{eventType:e.type,error:t instanceof Error?t.message:String(t)});}}}function xs(s,e){if(e.type!=="message.updated")return;let{properties:t}=e,{info:n}=t,r=s.state?.currentSessionId||s.sessionId;if(!(r&&n.sessionID!==r)&&(L.debug("Message updated",{role:n.role,agent:n.agent,sessionID:n.sessionID,messageId:n.id}),n.role,s.state&&"model"in n&&n.model)){let a=`${n.model.providerID}/${n.model.modelID}`;s.state.sessionInfo.model=a,L.debug("Model info updated",{model:a}),s.updateFooter&&s.updateFooter();}}function ws(s,e){if(e.type!=="message.part.updated")return;let{properties:t}=e,{part:n}=t;if(!n){L.warn("Message part is undefined",{event:e,properties:t,propertiesType:typeof t,propertiesKeys:t?Object.keys(t):[]});return}let r=s.state?.currentSessionId||s.sessionId;r&&n.sessionID!==r||(Ts(n),ks(s,n));}function Ts(s){L.debug("handleMessagePartUpdated",{type:s.type,status:"state"in s?s.state?.status:void 0,hasTimeEnd:"time"in s&&s.time&&"end"in s.time?!!s.time.end:false,timeEnd:"time"in s&&s.time&&"end"in s.time?s.time.end:void 0,hasText:"text"in s,textLength:"text"in s&&s.text?.length||0,textPreview:"text"in s?s.text?.substring(0,100):void 0,sessionID:s.sessionID});}function ks(s,e){if(e.type==="tool"){Rs(s,e);return}if(e.type==="text"){if("time"in e&&e.time&&"end"in e.time&&e.time.end){L.info("Calling handleTextPart",{hasText:"text"in e&&!!e.text,textLength:"text"in e&&e.text?.length||0}),$s(s,e);return}if(!("time"in e)){L.info("Calling handleUserTextPart for user message",{hasText:!!e.text,textLength:e.text?.length||0}),Ps(s,e);return}}if(e.type==="reasoning"&&"time"in e&&e.time&&"end"in e.time&&e.time.end){Hs(s,e);return}if(e.type==="step-start"){As(s);return}if(e.type==="step-finish"){Es(s,e);return}if(e.type==="subtask-result"){Ls(s,e);return}}function Ps(s,e){let t=e.text?.trim();t&&(L.debug("User text output",{length:t.length,messageId:e.messageID}),s.chatLog.addUser(t,e.messageID),s.tui.requestRender());}function As(s){s.setActivityStatus(a$1("tui.status.executing_step"));}function Es(s,e){s.setActivityStatus(a$1("tui.status.step_completed")),s.state&&e.tokens&&Ds(s,e.tokens);}function Ls(s,e){L.debug("handleSubagentResultPart called",{taskId:e.taskId,agent:e.agent,status:e.status});let t=Ha.formatSubtaskResultPart(e);L.debug("formattedContent",{content:t}),s.chatLog.addUser(t,e.id,{agent:e.agent,isSubagentResult:true,subtaskResultPart:{taskId:e.taskId,source:e.source,agent:e.agent,status:e.status,result:e.result,error:e.error,duration:e.duration,rounds:e.rounds,time:e.time,metadata:e.metadata}}),s.tui.requestRender();}async function Ms(s){let e=s.sessionInfo.model;if(!e)return null;let{provider:t,model:n}=parseModelId(e);if(!t||!n)return null;try{return ((await s.sdk.config.providers({})).data?.providers??[]).find(d=>d.id===t)?.models?.[n]?.limit?.context??null}catch(r){return L.warn("Failed to get context limit from model config",{error:r,providerID:t,modelID:n}),null}}function Ds(s,e){let t=e.input+e.output+e.reasoning+e.cache.read+e.cache.write;s.state.sessionInfo.totalTokens=t,s.state.sessionInfo.contextTokens||Ms(s.state).then(n=>{s.state.sessionInfo.contextTokens=n??2e5,L.debug("Context limit updated",{contextLimit:s.state.sessionInfo.contextTokens}),s.updateFooter&&s.updateFooter();}),L.debug("Token usage updated",{total:t,input:e.input,output:e.output,reasoning:e.reasoning,cacheRead:e.cache.read,cacheWrite:e.cache.write});}function _s(s){let e=s.state?.status==="running"||s.state?.status==="completed"?s.state.input:void 0;if(!e)return;let t=e.filePath??e.filepath??e.path,n=e.title;return t?n=Filesystem.normalize(t):e.url&&(n=e.url),n}function Rs(s,e){if(!e.state){L.warn("Tool part missing state",{tool:e.tool,partType:e.type});return}let t=_s(e),n=t?`${e.tool} ${t}`:e.tool;if(e.state.status==="running"&&(s.setActivityStatus(a$1("tui.status.executing_tool",{vars:{tool:e.tool}})),s.chatLog.addSystem(a$1("tui.system.tool_executing",{vars:{tool:n}}),e.id,{isTool:true,toolName:e.tool,toolCallId:e.callID,toolStatus:"executing",title:t}),s.updateChatLog&&s.updateChatLog()),e.state.status==="completed"){if(s.setActivityStatus(a$1("tui.status.tool_completed")),s.chatLog.addSystem(a$1("tui.system.tool_completed",{vars:{tool:n}}),e.id,{isTool:true,toolName:e.tool,toolCallId:e.callID,toolStatus:"completed",result:e.state.output,title:t}),s.state?.toolsExpanded&&s.state?.verboseLevel==="on"&&e.state.output){let a=(typeof e.state.output=="string"?e.state.output:JSON.stringify(e.state.output,null,2)).trim();a&&s.chatLog.addSystem(`Tool output:
|
|
9
|
+
`+a);}s.updateChatLog&&s.updateChatLog();}e.state.status==="error"&&(s.setActivityStatus(a$1("tui.status.tool_failed")),s.chatLog.addSystem(a$1("tui.system.tool_failed",{vars:{tool:n}}),e.id,{isTool:true,toolName:e.tool,toolCallId:e.callID,toolStatus:"failed",error:e.state.error,title:t}),s.updateChatLog&&s.updateChatLog());}function $s(s,e){let t=e.text?.trim();t&&(L.debug("Text output",{length:t.length,messageId:e.messageID}),s.chatLog.addAssistant(t,e.messageID),s.setActivityStatus(a$1("tui.status.receiving")));}function Hs(s,e){let t=e.text?.trim();if(!t){L.warn("Reasoning part has no text, skipping",{partId:e.id});return}if(t=t.replace("[REDACTED]","").trim(),!t){L.warn("Reasoning part is redacted, skipping",{partId:e.id});return}if(t=t.trim(),!t){L.warn("Reasoning part has no content after cleanup",{partId:e.id});return}if(L.info("Adding reasoning message to ChatLog",{textLength:t.length,partId:e.id,showThinking:s.state?.showThinking,hasTimeEnd:"time"in e&&e.time&&"end"in e.time?!!e.time.end:false}),s.chatLog.addSystem(a$1("tui.system.thinking",{vars:{text:t}}),e.id,{isThinking:true}),L.info("Reasoning message added, requesting render"),s.state?.pendingQuestion){s.state.questionDisplayTimer&&(clearTimeout(s.state.questionDisplayTimer),s.state.questionDisplayTimer=null,L.debug("Question display fallback timer cleared (reasoning-end)"));let n=s.state.pendingQuestion;if(n.questions.length>0){let r=n.questions[0];r&&(L.debug("Show first question after reasoning-end",{header:r.header,question:r.question,optionCount:r.options?.length||0}),Wt(s,r,0,n.questions.length));}}}function Fs(s,e){let{properties:t}=e,{sessionID:n,status:r}=t,a=s.state?.currentSessionId||s.sessionId;if(!(a&&n!==a)){if(L.debug("Session status",{status:r.type,sessionID:n}),r.type==="idle"){if(s.state){if(s.state.questionDisplayTimer&&(clearTimeout(s.state.questionDisplayTimer),s.state.questionDisplayTimer=null,L.debug("Question display fallback timer cleared (session idle)")),s.state.pendingQuestion){let o=s.state.pendingQuestion.id;L.info("Rejecting pending question due to session idle",{questionId:o,sessionID:n}),s.state.pendingQuestion=null,s.chatLog.addSystem(a$1("tui.question.cancelled")),s.state.sdk.question.reject({requestID:o}).catch(l=>{L.error("Failed to reject question",{error:l});});}if(s.state.pendingPermission){let o=s.state.pendingPermission.sessionID,l=s.state.pendingPermission.id;L.info("Rejecting pending permission due to session idle",{permissionId:l,sessionID:n}),s.state.pendingPermission=null,s.chatLog.addSystem(a$1("tui.permission.cancelled")),s.state.sdk.permission.respond({sessionID:o,permissionID:l,response:"reject"}).catch(d=>{L.error("Failed to reject permission",{error:d});});}}s.setActivityStatus(a$1("tui.status.ready"));}r.type==="running"&&s.setActivityStatus(a$1("tui.status.running")),r.type==="waiting"&&s.setActivityStatus(a$1("tui.status.waiting"));}}function qs(s,e){let{properties:t}=e,{sessionID:n,error:r}=t,a=s.state?.currentSessionId||s.sessionId;if(a&&n!==a)return;L.error("Session error",{error:r,sessionID:n});let o=String(r.name);"data"in r&&r.data&&"message"in r.data&&(o=String(r.data.message)),s.chatLog.addSystem(a$1("tui.system.error",{vars:{message:o}})),s.setActivityStatus(a$1("tui.status.error"));}function Bs(s,e){let{properties:t}=e,{agentId:n}=t;L.debug("Agent updated (backend event)",{agentId:n});}function Us(s,e){let{properties:t}=e,{info:n}=t,r=s.state?.currentSessionId||s.sessionId;r&&n.id!==r||(L.debug("Session updated",{sessionId:n.id,title:n.title}),s.state&&(s.state.currentSessionKey=n.title||n.id,n.model&&(s.state.sessionInfo.model=`${n.model.providerID}/${n.model.modelID}`)),s.updateFooter&&s.updateFooter());}function Os(s,e){let{properties:t}=e,n=t,r=s.state?.currentSessionId||s.sessionId;if(r&&n.sessionID!==r){L.debug("Ignore permission request from other session",{sessionID:n.sessionID,currentSessionId:r});return}L.info("Received permission request",{permission:n.permission,patterns:n.patterns,sessionID:n.sessionID}),s.state&&(s.state.pendingPermission={id:n.id,sessionID:n.sessionID,permission:n.permission,patterns:n.patterns});let a=`
|
|
10
|
+
`+a$1("tui.permission.request_header")+`
|
|
11
|
+
`;a+=a$1("tui.permission.type",{vars:{type:n.permission}})+`
|
|
12
|
+
`,a+=a$1("tui.permission.targets",{vars:{targets:n.patterns.join(", ")}})+`
|
|
13
|
+
`,a+=`
|
|
14
|
+
`+a$1("tui.permission.options")+`
|
|
15
|
+
`,a+=" [y] "+a$1("tui.permission.once")+`
|
|
16
|
+
`,a+=" [a] "+a$1("tui.permission.always")+`
|
|
17
|
+
`,a+=" [n] "+a$1("tui.permission.reject")+`
|
|
18
|
+
`,s.chatLog.addSystem(a),s.setActivityStatus(a$1("tui.status.waiting_permission"));}function Ws(s,e){let{properties:t}=e,n=t,r=s.state?.currentSessionId||s.sessionId;if(r&&n.sessionID!==r){L.debug("Ignore question request from other session",{sessionID:n.sessionID,currentSessionId:r});return}if(L.info("Received question request",{id:n.id,sessionID:n.sessionID,questionCount:n.questions.length,questions:n.questions.map(a=>({header:a.header,optionCount:a.options?.length||0}))}),s.state){s.state.pendingQuestion={id:n.id,sessionID:n.sessionID,questions:n.questions,currentQuestionIndex:0,collectedAnswers:[]},L.debug("pendingQuestion set to state (deferred display)",{id:n.id,questionCount:n.questions.length}),s.state.questionDisplayTimer&&(clearTimeout(s.state.questionDisplayTimer),L.debug("Cleared existing question display fallback timer"));let a=2e3;s.state.questionDisplayTimer=setTimeout(()=>{if(s.state?.pendingQuestion&&s.state.pendingQuestion.id===n.id){L.info("Question display fallback triggered (no reasoning-end)",{questionId:n.id,timeout:a});let o=s.state.pendingQuestion.questions[0];o&&Wt(s,o,0,s.state.pendingQuestion.questions.length),s.state&&(s.state.questionDisplayTimer=null);}},a),L.debug("Question display fallback timer started",{questionId:n.id,timeout:a});}s.setActivityStatus(a$1("tui.status.waiting_answer"));}function Wt(s,e,t,n){let r="tui.question.header",a={current:t+1,total:n},o=a$1(r,{vars:a});L.debug("displayQuestion - i18n translation test",{key:r,vars:a,result:o,isTranslated:o!==r,resultLength:o.length});let l=`
|
|
19
|
+
`+o+`
|
|
20
|
+
`;if(l+=e.header+`
|
|
21
|
+
`,l+=e.question+`
|
|
22
|
+
`,e.options&&e.options.length>0){let d=a$1("tui.question.options");L.debug("displayQuestion - options translation",{key:"tui.question.options",result:d,isTranslated:d!=="tui.question.options"}),l+=`
|
|
23
|
+
`+d+`
|
|
24
|
+
`;for(let u=0;u<e.options.length;u++){let c=e.options[u];c&&(l+=` [${u+1}] ${c.label}`,c.description&&(l+=` - ${c.description}`),l+=`
|
|
25
|
+
`);}e.custom!==false?e.multiple?l+=`
|
|
26
|
+
`+a$1("tui.question.hint.custom_enabled_multiple")+`
|
|
27
|
+
`:l+=`
|
|
28
|
+
`+a$1("tui.question.hint.custom_enabled")+`
|
|
29
|
+
`:e.multiple?l+=`
|
|
30
|
+
`+a$1("tui.question.hint.custom_disabled_multiple")+`
|
|
31
|
+
`:l+=`
|
|
32
|
+
`+a$1("tui.question.hint.custom_disabled")+`
|
|
33
|
+
`;}L.debug("displayQuestion - final message",{messageLength:l.length,messagePreview:l.substring(0,100)}),s.chatLog.addSystem(l);}var K=a.create({service:"cli-tui-session-actions"});async function Nt(s){K.info("Refreshing agent list");try{s.setActivityStatus(a$1("tui.session.loading_agents"));let n=((await s.sdk.app.agents({})).data||[]).map(r=>r.name);return K.info("Agent list loaded",{count:n.length}),s.setActivityStatus(a$1("tui.status.ready")),n}catch(e){return K.error("Failed to refresh agent list",{error:e}),s.chatLog.addSystem(a$1("tui.session.agents_failed",{vars:{error:String(e)}})),s.setActivityStatus(a$1("tui.status.error")),[]}}async function dt(s,e){K.info("Refreshing session info",{sessionId:e});try{s.setActivityStatus(a$1("tui.session.loading_info"));let n=(await s.sdk.session.get({sessionID:e})).data;return K.info("Session info loaded",{sessionId:e}),s.setActivityStatus(a$1("tui.status.ready")),n??null}catch(t){return K.error("Failed to refresh session info",{sessionId:e,error:t}),s.chatLog.addSystem(a$1("tui.session.info_failed",{vars:{error:String(t)}})),s.setActivityStatus(a$1("tui.status.error")),null}}async function Ue(s,e,t){K.info("Loading history",{sessionId:e,limit:t});try{s.setActivityStatus(a$1("tui.session.loading_history"));let r=(await s.sdk.session.messages({sessionID:e,limit:t})).data||[];K.info("History loaded",{sessionId:e,count:r.length});for(let a=0;a<r.length;a++){let o=r[a],l=o?.info?.role;if(l==="user"){let u=(o?.parts?.filter(p=>p.type==="text")||[]).map(p=>("text"in p?p.text:"")||"").join(`
|
|
34
|
+
`),c=o?.parts?.filter(p=>p.type==="subtask-result")||[];K.debug("loadHistory processing user message",{messageId:o?.info?.id,partCount:o?.parts?.length||0,subtaskPartCount:c.length});for(let p of c)if("agent"in p&&"taskId"in p){K.debug("loadHistory adding subtask-result",{messageId:o?.info?.id,agent:p.agent,taskId:p.taskId});let _=Ha.formatSubtaskResultPart(p);s.chatLog.addUser(_,o?.info?.id,{agent:p.agent||"SubAgent",isSubagentResult:!0,subtaskResultPart:{taskId:p.taskId,source:p.source,agent:p.agent,status:p.status,result:p.result,error:p.error,duration:p.duration,rounds:p.rounds,time:p.time,metadata:p.metadata}});}u&&s.chatLog.addUser(u,o?.info?.id,{agent:o?.info?.agent});}else if(l==="assistant"){let u=(o?.parts?.filter(c=>c.type==="text")||[]).map(c=>("text"in c?c.text:"")||"").join(`
|
|
35
|
+
`);u&&s.chatLog.addAssistant(u,o?.info?.id,{agent:o?.info?.agent});}else if(l==="system"){let u=(o?.parts?.filter(c=>c.type==="text")||[]).map(c=>("text"in c?c.text:"")||"").join(`
|
|
36
|
+
`);s.chatLog.addSystem(u,o?.info?.id,{agent:o?.info?.agent});}}return s.setActivityStatus(a$1("tui.status.ready")),r}catch(n){return K.error("Failed to load history",{sessionId:e,error:n}),s.chatLog.addSystem(a$1("tui.session.history_failed",{vars:{error:String(n)}})),s.setActivityStatus(a$1("tui.status.error")),[]}}async function Qt(s,e,t){K.info("Switching session",{sessionId:e});try{t.currentSessionId=e,t.currentSessionKey=e,t.historyLoaded=!1;let n=await dt(s,e);n&&(t.currentSessionKey=n.title||e,t.sessionInfo.model=n.model,t.sessionInfo.modelProvider=n.modelProvider);let{loadTuiState:r,saveTuiStateToStorage:a}=await import('./preferences-3HCTNG2J.mjs'),o=await r(e);t.toolsExpanded=o.toolsExpanded,t.showThinking=o.showThinking,t.thinkingLevel=o.thinkingLevel,t.verboseLevel=o.verboseLevel,t.messageLimit=o.messageLimit,t.localShellPermission=o.localShellPermission,o.model&&(t.sessionInfo.model=o.model),o.agent&&(t.agent=o.agent),K.debug("Session preferences loaded",{sessionId:e,model:t.sessionInfo.model,agent:t.agent,thinkingLevel:t.thinkingLevel}),await a(t),await Ue(s,e,t.messageLimit),t.historyLoaded=!0,s.chatLog.addSystem(a$1("tui.session.switched",{vars:{sessionId:e}}));}catch(n){K.error("Failed to switch session",{sessionId:e,error:n}),s.chatLog.addSystem(a$1("tui.session.switch_failed",{vars:{error:String(n)}})),s.setActivityStatus(a$1("tui.status.error"));}}async function Gt(s,e){K.info("Aborting current run",{sessionId:e});try{s.setActivityStatus(a$1("tui.session.aborting"));let t=s.sdk.session.abort({sessionID:e}),n=new Promise((r,a)=>{setTimeout(()=>a(new Error(a$1("tui.abort.timeout"))),5e3);});await Promise.race([t,n]),s.chatLog.addSystem(a$1("tui.session.aborted")),s.setActivityStatus(a$1("tui.status.ready"));}catch(t){K.error("Failed to abort",{sessionId:e,error:t}),s.chatLog.addSystem(a$1("tui.session.abort_failed",{vars:{error:String(t)}})),s.setActivityStatus(a$1("tui.status.error"));}}function jt(s,e){return {openOverlay:r=>{s.showOverlay(r);},closeOverlay:()=>{s.hasOverlay()&&s.hideOverlay(),s.setFocus(e);}}}var Oe=a.create({service:"tui-autocomplete"});function Kt(s){return new ct(s)}var ct=class{constructor(e){b(this,"basePath");b(this,"commands");b(this,"getAgents");this.basePath=e.basePath,this.commands=e.slashCommands,this.getAgents=e.getAgents;}updateCommands(e){this.commands=e;}setGetAgents(e){this.getAgents=e;}async getSuggestions(e,t,n,r){let o=(e[t]||"").slice(0,n),l=this.extractHashPrefix(o);if(l)return this.getFileSuggestions(l);let d=this.extractAtPrefix(o);return d?await this.getAgentSuggestions(d):o.startsWith("/")?this.getCommandSuggestions(o):null}applyCompletion(e,t,n,r,a){let o=e[t]||"",l=o.slice(0,n-a.length),d=o.slice(n);if(a.startsWith("#")){let u=r.label.endsWith("/"),c=u?r.value.replace(/\/$/,""):r.value,p=u?"":" ";return {lines:[...e.slice(0,t),l+c+p+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+c.length+p.length}}if(a.startsWith("@"))return {lines:[...e.slice(0,t),l+r.value+" "+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+r.value.length+1};if(a.startsWith("/")){let u="/"+r.value+" ";return {lines:[...e.slice(0,t),l+u+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+u.length}}return {lines:[...e.slice(0,t),l+r.value+" "+d,...e.slice(t+1)],cursorLine:t,cursorCol:l.length+r.value.length+1}}async getCommandSuggestions(e){let t=e.indexOf(" ");if(t===-1){let d=e.slice(1),u=this.commands.filter(c=>c.name.toLowerCase().includes(d.toLowerCase())).map(c=>({value:c.name,label:c.name,description:c.description}));return u.length===0?null:{items:u.slice(0,50),prefix:e}}let n=e.slice(1,t),r=e.slice(t+1),a=this.commands.find(d=>d.name===n);if(!a?.getArgumentCompletions)return null;let o=a.getArgumentCompletions(r),l=o instanceof Promise?await o:o;return !l||l.length===0?null:{items:l.slice(0,50),prefix:r}}getFileSuggestions(e){let t=e.startsWith('#"')?e.slice(2):e.slice(1),n=e.startsWith('#"'),r=t.replace(/\\/g,"/");if(this.isDrivePath(r))return Oe.debug("Drive path, skip autocomplete",{normalizedPath:r}),null;let{targetPath:a,searchQuery:o}=this.parsePath(r),l=this.resolveBaseDir(a);try{let d;try{d=readdirSync(l,{withFileTypes:!0});}catch{return Oe.debug("Directory not found",{baseDir:l}),null}let u=[];for(let c of d){if(o&&!c.name.toLowerCase().includes(o.toLowerCase()))continue;let p=c.isDirectory(),_=a?`${a}${c.name}`:c.name;if(u.push({value:n?`#"${_}${p?"/":""}"`:`#${_}${p?"/":""}`,label:p?`${c.name}/`:c.name,description:_}),u.length>=50)break}return u.sort((c,p)=>{let _=c.label.endsWith("/"),$=p.label.endsWith("/");return _&&!$?-1:!_&&$?1:c.label.localeCompare(p.label)}),u.length===0?null:{items:u,prefix:e}}catch(d){return Oe.debug("File search failed",{error:d,targetPath:a}),null}}async getAgentSuggestions(e){if(!this.getAgents)return null;let t=e.slice(1);try{let r=(await this.getAgents()).filter(a=>a.hidden!==!0).filter(a=>a.name.toLowerCase().includes(t.toLowerCase())).map(a=>({value:`@${a.name}`,label:a.name,description:a.description}));return r.length===0?null:{items:r.slice(0,50),prefix:e}}catch(n){return Oe.debug("Agent search failed",{error:n,prefix:e}),null}}extractAtPrefix(e){let t=new Set([" "," ",'"',"'","="]);for(let n=e.length-1;n>=0;n--)if(t.has(e[n]??"")){let r=n+1;return e[r]==="@"?e.slice(r):null}return e.startsWith("@")?e:null}extractHashPrefix(e){let t=new Set([" "," ",'"',"'","="]);for(let n=e.length-1;n>=0;n--)if(t.has(e[n]??"")){let r=n+1;return e[r]==="#"?e.slice(r):null}return e.startsWith("#")?e:null}isDrivePath(e){return /^[A-Za-z]:[/\\]?$/.test(e)}parsePath(e){let t=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\"));return t===-1?{targetPath:"",searchQuery:e}:{targetPath:e.slice(0,t+1),searchQuery:e.slice(t+1)}}resolveBaseDir(e){return e?zt.join(this.basePath,e):this.basePath}};function ut(s,e){let t=[],n=/(?<![\w`])#(\S+)/g,r;for(;(r=n.exec(s))!==null;){let a=r[1];if(!a)continue;let o=a.replace(/\\/g,"/"),l=js(o,e);existsSync(l)&&t.push({path:a,url:pathToFileURL(l).href,exists:true});}return {attachments:t,invalidPaths:[]}}function js(s,e){if(/^[A-Za-z]:[/\\]/.test(s))return s;let t=s.replace(/^[/\\]+/,"");return zt.join(e,t)}var U=a.create({service:"cli-tui-input-handlers"}),We=class{constructor(){b(this,"handlers",[]);b(this,"isBrowsingHistory",false);}register(e){this.handlers.push(e),U.debug("Register input handler",{name:e.name,total:this.handlers.length});}setHistoryBrowsing(e){this.isBrowsingHistory=e;}isHistoryBrowsing(){return this.isBrowsingHistory}async handle(e,t){let n=e.trim();if(n){this.isBrowsingHistory;for(let r of this.handlers)if(r.canHandle(n,t.state)){U.debug("Handle input with handler",{handler:r.name,input:n.substring(0,50)}),await r.handle(n,t);return}U.warn("No handler can process input",{input:n.substring(0,50)});}}getPrompt(e){for(let t of this.handlers)if(t.getPrompt&&t.canHandle("",e)){let n=t.getPrompt(e);if(n)return n}return "> "}},Ne=class{constructor(){b(this,"name","permission");}canHandle(e,t){return t.pendingPermission!==null}async handle(e,t){let{state:n,chatLog:r,tui:a}=t,o=n.pendingPermission;if(!o)return;let l=e.toLowerCase().trim(),d;if(l==="y"||l==="yes")d="once";else if(l==="a"||l==="always")d="always";else if(l==="n"||l==="no"||l==="reject")d="reject";else {r.addSystem(a$1("tui.permission.invalid_input"));return}try{await oa(n,{requestID:o.id,reply:d}),n.pendingPermission=null;let u=d==="once"?a$1("tui.permission.once"):d==="always"?a$1("tui.permission.always"):a$1("tui.permission.reject");r.addSystem(a$1("tui.permission.replied",{vars:{reply:u}})),U.info("Permission request replied",{requestID:o.id,reply:d});}catch(u){U.error("Failed to reply permission request",{error:u}),r.addSystem(a$1("tui.permission.error")),n.pendingPermission=null;}}getPrompt(e){return e.pendingPermission?a$1("tui.permission.prompt"):"> "}},Qe=class{constructor(){b(this,"name","question");}canHandle(e,t){return !(t.pendingQuestion===null||e.startsWith("/"))}async handle(e,t){let{state:n,chatLog:r,tui:a}=t,o=n.pendingQuestion;if(!o){U.warn("QuestionInputHandler.handle - no pending question");return}U.debug("QuestionInputHandler.handle - processing input",{input:e.substring(0,50),currentIndex:o.currentQuestionIndex,totalQuestions:o.questions.length,requestID:o.id});let l=o.currentQuestionIndex,d=o.questions[l];if(!d){U.error("Current question does not exist",{currentIndex:l,totalQuestions:o.questions.length}),n.pendingQuestion=null;return}let u=this.parseAnswer(e,d);if(!u){U.debug("QuestionInputHandler.handle - invalid input",{input:e}),r.addSystem(a$1("tui.question.invalid_input"));return}if(U.debug("QuestionInputHandler.handle - answer parsed",{answer:u,answerLength:u.length}),o.collectedAnswers.push(u),o.currentQuestionIndex++,o.currentQuestionIndex<o.questions.length){U.debug("QuestionInputHandler.handle - showing next question",{nextIndex:o.currentQuestionIndex,totalQuestions:o.questions.length});let c=o.questions[o.currentQuestionIndex];c&&this.displayQuestion(c,o.currentQuestionIndex,o.questions.length,r);}else {U.info("QuestionInputHandler.handle - all questions answered, calling API",{requestID:o.id,answerCount:o.collectedAnswers.length,answers:o.collectedAnswers});try{await pa(n,{requestID:o.id,answers:o.collectedAnswers}),n.pendingQuestion=null,r.addSystem(a$1("tui.question.completed",{vars:{count:o.collectedAnswers.length}})),U.info("Question request completed",{requestID:o.id});}catch(c){U.error("Failed to reply question request",{error:c instanceof Error?c.message:String(c),stack:c instanceof Error?c.stack:void 0,requestID:o.id,answers:o.collectedAnswers,errorType:c instanceof Error?c.constructor.name:typeof c});let p=c instanceof Error?c.message:String(c);r.addSystem(`${a$1("tui.question.error")}: ${p}`),n.pendingQuestion=null;}}}parseAnswer(e,t){let n=e.trim();if(!t.options||t.options.length===0)return [n];let r=n.match(/^(\d+(?:,\s*\d+)*)$/);if(r?.[1]){let o=r[1].split(",").map(l=>Number.parseInt(l.trim(),10)).filter(l=>l>0&&l<=t.options.length);if(o.length===0)return null;if(!t.multiple&&o.length>1){let l=o[0];if(l!==void 0){let d=t.options[l-1];if(d)return [d.label]}return null}return o.map(l=>{let d=t.options[l-1];return d?d.label:""}).filter(l=>l!=="")}return t.custom===false?null:[n]}displayQuestion(e,t,n,r){let a=`
|
|
37
|
+
${a$1("tui.question.header",{vars:{current:t+1,total:n}})}
|
|
38
|
+
`;if(a+=`${e.header}
|
|
39
|
+
`,a+=`${e.question}
|
|
40
|
+
`,e.options&&e.options.length>0){a+=`
|
|
41
|
+
`+a$1("tui.question.options")+`
|
|
42
|
+
`;for(let o=0;o<e.options.length;o++){let l=e.options[o];l&&(a+=` [${o+1}] ${l.label}`,l.description&&(a+=` - ${l.description}`),a+=`
|
|
43
|
+
`);}e.custom!==false?e.multiple?a+=`
|
|
44
|
+
`+a$1("tui.question.hint.custom_enabled_multiple")+`
|
|
45
|
+
`:a+=`
|
|
46
|
+
`+a$1("tui.question.hint.custom_enabled")+`
|
|
47
|
+
`:e.multiple?a+=`
|
|
48
|
+
`+a$1("tui.question.hint.custom_disabled_multiple")+`
|
|
49
|
+
`:a+=`
|
|
50
|
+
`+a$1("tui.question.hint.custom_disabled")+`
|
|
51
|
+
`;}r.addSystem(a);}getPrompt(e){let t=e.pendingQuestion;if(!t)return "> ";let n=t.currentQuestionIndex+1,r=t.questions.length;return a$1("tui.question.prompt",{vars:{current:n,total:r}})}},Ge=class{constructor(){b(this,"name","shell-permission");}canHandle(e,t){return t.pendingShellCommand!==null}async handle(e,t){let{state:n,chatLog:r,tui:a}=t,o=e.toLowerCase().trim();if(o==="y"||o==="yes"){n.localShellPermission="on",await b$2(n),r.addSystem(a$1("tui.shell.permission.updated",{vars:{permission:"on"}}));let l=n.pendingShellCommand;n.pendingShellCommand=null,await new we().executeCommand(l,t);}else o==="n"||o==="no"?(n.localShellPermission="off",await b$2(n),r.addSystem(a$1("tui.shell.permission.updated",{vars:{permission:"off"}})),n.pendingShellCommand=null):r.addSystem(a$1("tui.shell.permission.invalid"));}getPrompt(e){return a$1("tui.shell.permission.prompt")}},we=class{constructor(){b(this,"name","shell");}canHandle(e,t){return e.startsWith("!")}async handle(e,t){let{chatLog:n,tui:r,setActivityStatus:a,state:o}=t,l=e.slice(1).trim();if(!l){n.addSystem(a$1("tui.shell.empty"));return}switch(o.localShellPermission){case "on":await this.executeCommand(l,t);break;case "off":n.addSystem(a$1("tui.shell.permission.off"));break;case "ask":o.pendingShellCommand=l,n.addSystem(a$1("tui.shell.permission.ask"));break}}async executeCommand(e,t){let{chatLog:n,tui:r,setActivityStatus:a}=t;try{n.addSystem(`\u6B63\u5728\u6267\u884C Shell \u547D\u4EE4: ${e}`),a(a$1("tui.shell.executing",{vars:{command:e}})),U.debug("Executing shell command",{command:e});let o=await Shell.run(void 0,e,{cwd:process.cwd()}),l="";o.stdout?.trim()&&(l+=`
|
|
52
|
+
${o.stdout}`),o.stderr?.trim()&&(l+=`
|
|
53
|
+
${o.stderr}`),l&&n.addSystem(l),n.addSystem(a$1("tui.shell.success",{vars:{code:o.code}})),a(""),U.info("Shell command executed successfully",{command:e,exitCode:o.code,stdoutLength:o.stdout?.length||0,stderrLength:o.stderr?.length||0});}catch(o){U.error("Failed to execute shell command",{command:e,error:o instanceof Error?o.message:String(o)});let l=o instanceof Error?o.message:String(o);n.addSystem(a$1("tui.shell.error",{vars:{error:l}})),a("");}}getPrompt(e){return "$ "}},je=class{constructor(){b(this,"name","command");}canHandle(e,t){return e.startsWith("/")}async handle(e,t){t.handleCommand?await t.handleCommand(e):U.warn("handleCommand is not defined");}getPrompt(e){return "> "}},ze=class{constructor(){b(this,"name","normal");}canHandle(e,t){return true}async handle(e,t){t.sendMessage?await t.sendMessage(e):U.warn("sendMessage is not defined");}getPrompt(e){return "> "}},Ke=class{constructor(){b(this,"name","at-mention");}canHandle(e,t){if(e.startsWith("/")||e.startsWith("!"))return false;let n=e.trimStart();return n.startsWith("@")||n.startsWith("#")}async handle(e,t){let{chatLog:n,sendMessage:r,state:a}=t,o=e.trimStart();if(o.startsWith("@")){let l=o.slice(1).split(/\s+/)[0];if(!l)return;let d=e.replace(/@\S+/g,"").trim(),c=ut(e,a.instanceContext.directory).attachments.map(p=>({url:p.url,filename:p.path.split("/").pop()||p.path.split("\\").pop()||p.path,mime:"text/plain"}));r&&await r(d,c.length>0?c:void 0,l);return}if(o.startsWith("#")){let l=ut(e,a.instanceContext.directory);if(l.attachments.length===0)return;let d=e.replace(/#\S+/g,"").trim(),u=l.attachments.map(c=>({url:c.url,filename:c.path.split("/").pop()||c.path.split("\\").pop()||c.path,mime:"text/plain"}));r&&await r(d,u);return}}getPrompt(e){return "> "}};var Vs=loadTextFile("./banner.txt",import.meta.url),Js=Vs();function Vt(){try{let s=Js.replace("${Global.getVersion()}",a$3.getVersion());return s=s.replace("${t('tui.header.title')}",a$1("tui.header.title")),s}catch{return `EasBot v${a$3.getVersion()}
|
|
54
|
+
${a$1("tui.header.title")}
|
|
55
|
+
`}}var mt=class{constructor(e){b(this,"log");b(this,"client");b(this,"config");b(this,"connected",false);this.config=e,this.log=a.create({service:"tui-gateway-client"}),this.client=new GatewayClient({url:e.gatewayUrl,type:"tui",reconnect:{enabled:true,maxAttempts:5,delay:3e3},heartbeat:{enabled:true,interval:3e4}}),this.client.onMessage(async t=>{this.log.debug("received message from gateway",{messageId:t.id,sessionId:t.sessionId,type:t.type}),e.onMessage&&await e.onMessage(t);});}async connect(){if(this.connected){this.log.warn("already connected");return}this.log.info("connecting to gateway",{url:this.config.gatewayUrl});try{await this.client.connect(),this.connected=!0,await this.client.subscribe(this.config.sessionId,this.config.backendSessionId),this.log.info("connected to gateway",{sessionId:this.config.sessionId,backendSessionId:this.config.backendSessionId}),this.config.onStateChange?.("connected");}catch(e){throw this.log.error("failed to connect to gateway",{error:String(e)}),e}}async disconnect(){this.connected&&(this.log.info("disconnecting from gateway"),await this.client.unsubscribe(this.config.sessionId),await this.client.disconnect(),this.connected=false,this.config.onStateChange?.("disconnected"),this.log.info("disconnected from gateway"));}async sendMessage(e,t="output"){if(!this.connected)throw new Error("Not connected to gateway");let n={id:this.generateId(),sessionId:this.config.sessionId,type:t,content:[{type:"text",text:e}],metadata:{channel:{platform:"tui",channelId:this.client.getId()}},timestamp:Date.now()};await this.client.send(n),this.log.debug("message sent",{id:n.id,type:t});}async subscribeSession(e,t){if(!this.connected)throw new Error("Not connected to gateway");await this.client.subscribe(e,t||this.config.backendSessionId),this.log.info("subscribed to session",{sessionId:e,backendSessionId:t||this.config.backendSessionId});}async unsubscribeSession(e){if(!this.connected)throw new Error("Not connected to gateway");await this.client.unsubscribe(e),this.log.info("unsubscribed from session",{sessionId:e});}isConnected(){return this.connected}getClientId(){return this.client.getId()}getSubscribedSessions(){return this.client.getSubscriptions()}generateId(){return `tui_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}};function Jt(s){return new mt(s)}var C=a.create({service:"cli-tui-app"}),gt=null;function Xs(s){gt=s;}function en(){gt=null;}function Xi(){return gt}async function er(s,e){C.debug("Create TUI app component",{options:e}),process.env.EASBOT_TUI_MODE="1",C.debug("Set TUI mode environment variable",{EASBOT_TUI_MODE:process.env.EASBOT_TUI_MODE});let t=new Container,n=new Container,r=Vt(),a=new Text(ee.header(r),1,0);n.addChild(a),t.addChild(n);let o=new $e;t.addChild(o),o.setWidth(s.terminal.columns);let l=s.requestRender.bind(s);s.requestRender=()=>{o.setWidth(s.terminal.columns),l();},o.addSystem(a$1("tui.system.welcome")),o.addSystem(a$1("tui.system.help_hint"));let d=new Container;t.addChild(d);let u=null,c=null,p=()=>{u&&c||(d.clear(),u=new Text("",1,0),c=new Text("",1,0),d.addChild(u),d.addChild(c));},_=new Container,$=new Text("",1,0);_.addChild($),t.addChild(_);let ne=new Container,A=new _e(s,Mt);ne.addChild(A),t.addChild(ne);let M=Rt(),he=Kt({basePath:e.directory||process.cwd(),slashCommands:M});A.setAutocompleteProvider(he);let{state:h,unsubscribe:re}=await la({options:e,agent:e.agent,model:e.model,sessionId:e.sessionId},s,o,()=>{q();});C.debug("TUI state initialized",{agent:h.agent,model:h.sessionInfo.model,sessionId:h.currentSessionId}),he.setGetAgents(async()=>qa(h));try{M=await _t(h.sdk,h.contextMode),he.updateCommands?.(M),C.debug("Dynamic commands loaded with contextMode",{contextMode:h.contextMode,count:M.length});}catch(m){C.warn("Failed to load dynamic commands, using static commands only",{error:m});}o.setStateGetter(()=>h),C.debug("ChatLog state getter configured");let H="disconnected",w=async()=>{try{let{getGatewayServerConfig:m}=await import('./gateway-loader-6P6BTWQP.mjs'),P=await m(),R=`http://${P.hostname}:${P.port}`,F=new AbortController,j=setTimeout(()=>F.abort(),2e3);try{let Z=await Fetch.get(R,{signal:F.signal});return clearTimeout(j),Z.ok||Z.status===400||Z.status===404?"connected":"disconnected"}catch{return clearTimeout(j),"disconnected"}}catch{return "disconnected"}},f=async()=>{H=await w(),b=H==="connected"?a$1("tui.status.connection.gateway_connected"):a$1("tui.status.connection.local"),Y();},g=()=>{f(),setInterval(f,6e4);},k=a$1("tui.status.idle"),b=a$1("tui.status.connection.local"),S="",E=null,y=null,G=k,te=new Set([a$1("tui.handler.send.sending"),a$1("tui.status.thinking"),a$1("tui.status.receiving"),a$1("tui.status.running"),a$1("tui.status.waiting"),a$1("tui.status.executing_step"),a$1("tui.status.sending"),a$1("tui.status.waiting_permission"),a$1("tui.status.waiting_answer"),a$1("tui.status.step_completed"),a$1("tui.status.tool_completed")]),fe=m=>{if(te.has(m))return true;let P=a$1("tui.status.executing_tool",{vars:{tool:""}}).split(":")[0];if(m.startsWith(P))return true;let R=a$1("tui.handler.executing",{vars:{command:""}}).split(":")[0];return !!m.startsWith(R)},ae=m=>{let P=Math.max(0,Math.floor((Date.now()-m)/1e3));if(P<60)return `${P}s`;let R=Math.floor(P/60),F=P%60;return `${R}m ${F}s`},Je=()=>{y||(y=setInterval(()=>{!E||!fe(k)||(Y(),q());},1e3));},ke=()=>{y&&(clearInterval(y),y=null);},Y=()=>{if(p(),!u||!c)return;let m=fe(k);G!==k&&(m?(E=Date.now(),Je()):(E=null,ke()),G=k);let P=a$1("tui.status.label"),R=k;if(m&&E){let Ct=ae(E);R=`${R} \u2022 ${Ct}`;}let F=`${P} ${R} | ${b}`;u.setText(ee.header(F));let j=h.showThinking?a$1("tui.system.on"):a$1("tui.system.off"),Z=h.toolsExpanded?a$1("tui.system.on"):a$1("tui.system.off"),ue=[`ctrl+l: ${a$1("tui.keyhints.model")} | ctrl+g: ${a$1("tui.keyhints.agent")} | ctrl+p: ${a$1("tui.keyhints.session")} | ctrl+t: ${a$1("tui.keyhints.thinking")}(${j}) | ctrl+o: ${a$1("tui.keyhints.tools")}(${Z})`];S&&ue.push(S);let X=ue.join(" | ");c.setText(ee.header(X)),d.invalidate();},Ye=()=>{},oe=()=>{let m=h.agent||"unknown",P=h.sessionInfo.model||"unknown",R=h.currentSessionKey||"new",j=((Z,O)=>{if(!Z||Z===0)return "";let ue=Z.toLocaleString();if(O&&O>0){let X=Math.round(Z/O*100);return ` | Tokens: ${ue} (${X}%)`}return ` | Tokens: ${ue}`})(h.sessionInfo.totalTokens,h.sessionInfo.contextTokens);$.setText(ee.dim(a$1("tui.footer.info",{vars:{agent:m,model:P,session:R,tokens:j}}))),_.invalidate();};Y(),oe();let q=()=>{s.requestRender();},pt=setInterval(()=>{oe(),q();},1e3),Yt=()=>{pt&&clearInterval(pt),ke();},{openOverlay:Pe,closeOverlay:de}=jt(s,A),Ze=()=>{C.debug("Request TUI exit"),h.currentSessionId&&(console.log(`
|
|
56
|
+
|
|
57
|
+
`),console.log(a$1("tui.exit.resume_hint",{vars:{sessionId:h.currentSessionId}})),console.log("")),s.stop(),e.onExit&&e.onExit(),process.exit(0);},Ae=m=>{k=m||a$1("tui.status.idle"),Y(),q();},Xe=(m,P)=>{S=m,Y(),q(),P&&P>0&&setTimeout(()=>{S="",Y(),q();},P);},ye={tui:s,chatLog:o,setActivityStatus:Ae,sdk:h.sdk},et=Ut({chatLog:o,tui:s,directory:e.directory||process.cwd(),openOverlay:Pe,closeOverlay:de,requestExit:Ze,setActivityStatus:Ae,updateStatusBar:Y,updateFooter:oe,refreshSessionInfo:async()=>{h.currentSessionId&&await dt(ye,h.currentSessionId);},loadHistory:async()=>{h.currentSessionId&&await Ue(ye,h.currentSessionId,h.messageLimit);},setSession:async m=>{o.clear(),await Qt(ye,m,h),Y(),oe(),q();},refreshAgents:async()=>{await Nt(ye);},abortActive:async()=>{h.currentSessionId&&await Gt(ye,h.currentSessionId);},setInputText:m=>{A.setText(m),q();}},h),ce=new We;ce.register(new je),ce.register(new Ne),ce.register(new Qe),ce.register(new Ge),ce.register(new we),ce.register(new Ke),ce.register(new ze),A.onSubmit=async m=>{let R=m.trim();A.setText(""),R&&(C.debug("User input",{text:R}),A.addToHistory(R),await ce.handle(R,{chatLog:o,tui:s,state:h,setActivityStatus:Ae,updateStatusBar:Y,updateFooter:oe,sendMessage:et.sendMessage,handleCommand:et.handleCommand}));};let tt=0;A.onCtrlC=()=>{C.debug("User pressed Ctrl+C");let m=A.getText(),P=Date.now();m.trim()?(A.setText(""),Xe(a$1("tui.hint.input_cleared"),3e3),tt=P,s.requestRender()):P-tt<=1e3?Ze():(Xe(a$1("tui.hint.press_ctrlc_exit"),3e3),tt=P,s.requestRender());},A.onCtrlD=()=>{C.debug("User pressed Ctrl+D, exit TUI"),Ze();},A.onEscape=()=>{C.debug("[app.ts] onEscape callback called"),C.debug("User pressed Escape"),s.hasOverlay()?(C.debug("[app.ts] Overlay detected, closing overlay"),de(),C.debug("[app.ts] Calling tui.requestRender(true) for complete cleanup"),s.requestRender(true),C.debug("[app.ts] onEscape completed")):C.debug("[app.ts] No overlay, doing nothing");},A.onCtrlL=async()=>{C.debug("User pressed Ctrl+L, open model selector");try{let m=await sa(h),P=Fe(m,{onSelect:async R=>{h.sessionInfo.model=R.value,o.addSystem(a$1("tui.handler.model.set",{vars:{model:R.value}})),de(),b$2(h).catch(F=>{C.error("Failed to save TUI state after model change",{error:F});}),oe(),q();},onCancel:()=>{de();}});Pe(P);}catch(m){C.error("Failed to open model selector",{error:m}),o.addSystem(a$1("tui.selector.model.error",{vars:{error:String(m)}})),q();}},A.onCtrlP=async()=>{C.debug("User pressed Ctrl+P, open session selector");try{let m=await ra(h),P=qe(m,{onSelect:async R=>{h.currentSessionKey=R.value,o.addSystem(a$1("tui.handler.session.switched",{vars:{sessionKey:R.value}})),de(),oe(),q();},onCancel:()=>{de();}});Pe(P);}catch(m){C.error("Failed to open session selector",{error:m}),o.addSystem(a$1("tui.selector.session.error",{vars:{error:String(m)}})),q();}},A.onCtrlG=async()=>{C.debug("User pressed Ctrl+G, open agent selector");try{let P=(await qa(h)).filter(F=>F.mode==="primary"&&F.hidden!==!0),R=Be(P,{onSelect:async F=>{h.agent=F.value,o.addSystem(a$1("tui.handler.agent.switched",{vars:{agentId:F.value}})),de(),b$2(h).catch(j=>{C.error("Failed to save TUI state after agent change",{error:j});}),oe(),q();},onCancel:()=>{de();}});Pe(R);}catch(m){C.error("Failed to open agent selector",{error:m}),o.addSystem(a$1("tui.selector.agent.error",{vars:{error:String(m)}})),q();}},A.onCtrlT=()=>{C.debug("User pressed Ctrl+T"),h.showThinking=!h.showThinking,o.addSystem(a$1("tui.system.thinking_mode",{vars:{mode:h.showThinking?a$1("tui.system.on"):a$1("tui.system.off")}})),b$2(h).catch(m=>{C.error("Failed to save TUI state after Ctrl+T",{error:m});}),Y(),q();},A.onCtrlO=()=>{C.debug("User pressed Ctrl+O"),h.toolsExpanded=!h.toolsExpanded;let m=a$1("tui.system.tools_output",{vars:{mode:h.toolsExpanded?a$1("tui.system.expanded"):a$1("tui.system.collapsed")}});o.addSystem(m),Xe(h.toolsExpanded?a$1("tui.hint.tools_expanded"):a$1("tui.hint.tools_collapsed"),2e3),b$2(h).catch(P=>{C.error("Failed to save TUI state after Ctrl+O",{error:P});}),Y(),q();},s.setFocus(A);let Zt={tui:s,chatLog:o,sessionId:h.currentSessionId,setActivityStatus:Ae,updateStatusBar:Y,updateFooter:oe,updateChatLog:Ye,state:h},Xt=Ot(Zt),{TuiEvent:Se}=await import('./event-A4SSIBOT.mjs'),ht=()=>{},ft=()=>{},yt=()=>{},St=()=>{},bt=()=>{},vt=()=>{};ht=await na(h,Se.StatusBarRefresh,async m=>{C.debug("StatusBarRefresh event received",{reason:m.properties.reason}),Y(),q();}),ft=await na(h,Se.FooterBarRefresh,async m=>{C.debug("FooterBarRefresh event received",{reason:m.properties.reason}),oe(),q();}),yt=await na(h,Se.ChatLogRefresh,async m=>{C.debug("ChatLogRefresh event received",{reason:m.properties.reason}),q();}),St=await na(h,Se.CommandExecute,async m=>{C.debug("TUI CommandExecute event received",{command:m.properties.command}),await et.handleCommand(m.properties.command);}),bt=await na(h,Se.PromptAppend,async m=>{C.debug("TUI PromptAppend event received",{text:m.properties.text});let P=A.getText();A.setText(P+m.properties.text),q();}),vt=await na(h,Se.ToastShow,async m=>{C.debug("TUI ToastShow event received",{message:m.properties.message});let{title:P,message:R,variant:F}=m.properties,j=F==="error"?"\u274C ":F==="warning"?"\u26A0\uFE0F ":F==="success"?"\u2705 ":"\u2139\uFE0F ";o.addSystem(`${j}${P?`[${P}] `:""}${R}`),q();}),Xs((m,P)=>{let R=m instanceof Error?m.message:String(m),F=m instanceof Error?m.stack:void 0;C.error(`Global ${P} caught`,{type:P,message:R,stack:F,errorType:m instanceof Error?m.constructor.name:typeof m,fullError:m}),R.includes("No context found for instance")&&C.error("Instance context error detected",{currentSessionId:h.currentSessionId,instanceContext:h.instanceContext,stackTrace:F}),o.addSystem(a$1(`tui.error.global.${P}`,{vars:{error:R}})),q();});let It=new AbortController;return h.sdk.global.event({signal:It.signal}).then(async({stream:m})=>{C.debug("SDK event subscription successful"),g();let P=null;if(H==="connected"&&h.currentSessionId){let j=await c$1(),Z=`http://${j.hostname}:${j.port}`;P=Jt({gatewayUrl:Z,sessionId:h.currentSessionId,backendSessionId:h.currentSessionId,onMessage:async O=>{if(C.debug("Gateway message received in TUI",{messageId:O.id,sessionId:O.sessionId,type:O.type}),O.type==="input"&&h.currentSessionId){let ue=O.content.filter(X=>X.type==="text").map(X=>X.text||"").join(`
|
|
58
|
+
`);ue&&P&&(C.debug("Calling SDK prompt for Gateway message",{sessionId:O.sessionId}),h.sdk.session.prompt({sessionID:O.sessionId,parts:[{type:"text",text:ue}]}).then(X=>{if(X?.data?.parts){let xt=(Array.isArray(X.data.parts)?X.data.parts:[X.data.parts]).filter(be=>be.type==="text"&&be.time?.end);if(xt.length>0){let be=xt.map(st=>st.text||"").join(`
|
|
59
|
+
`);be&&(C.debug("Sending prompt result to Gateway",{sessionId:O.sessionId,textLength:be.length}),P?.sendMessage(be,"output").catch(st=>{C.error("Failed to send message to Gateway",{error:String(st)});}));}}}).catch(X=>{C.error("SDK prompt error",{error:String(X)});}));}},onStateChange:O=>{C.debug("Gateway client state changed",{state:O}),O==="connected"?b=a$1("tui.status.connection.gateway_connected"):b=a$1("tui.status.connection.local"),Y();}}),P.connect().catch(O=>{C.error("Failed to connect to gateway",{error:O});});}(async()=>{try{for await(let j of m){let Z=j.payload;Xt(Z);}}catch(j){C.debug("Event stream ended",{error:j});}})();let F=e.onExit;e.onExit=async()=>{C.debug("Unsubscribe events"),It.abort(),re(),ht(),ft(),yt(),St(),bt(),vt(),Yt(),en(),P&&(await P.disconnect(),C.debug("Gateway client disconnected")),delete process.env.EASBOT_TUI_MODE,C.debug("Cleared TUI mode environment variable"),F&&await F();};}).catch(m=>{C.error("SDK event subscription failed",{error:m});}),h.currentSessionId&&!h.historyLoaded&&(async()=>{try{await Ue(ye,h.currentSessionId,h.messageLimit),h.historyLoaded=!0;}catch(m){C.error("Failed to auto-load history messages",{error:m});}})(),e.prompt&&setTimeout(()=>{A.setText(e.prompt),A.onSubmit?.(e.prompt);},100),C.debug("TUI app component created"),t}export{_e as a,ee as b,ss as c,Mt as d,Xs as e,en as f,Xi as g,er as h};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var m=Object.defineProperty;var k=(b,a)=>(a=Symbol[b])?a:Symbol.for("Symbol."+b),l=b=>{throw TypeError(b)};var n=(b,a,c)=>a in b?m(b,a,{enumerable:true,configurable:true,writable:true,value:c}):b[a]=c;var o=(b,a)=>{for(var c in a)m(b,c,{get:a[c],enumerable:true});};var p=(b,a,c)=>n(b,typeof a!="symbol"?a+"":a,c);var q=(b,a,c)=>{if(a!=null){typeof a!="object"&&typeof a!="function"&&l("Object expected");var e,f;c&&(e=a[k("asyncDispose")]),e===void 0&&(e=a[k("dispose")],c&&(f=e)),typeof e!="function"&&l("Object not disposable"),f&&(e=function(){try{f.call(this);}catch(g){return Promise.reject(g)}}),b.push([c,e,a]);}else c&&b.push([c]);return a},r=(b,a,c)=>{var e=typeof SuppressedError=="function"?SuppressedError:function(d,j,h,i){return i=Error(h),i.name="SuppressedError",i.error=d,i.suppressed=j,i},f=d=>a=c?new e(d,a,"An error was suppressed during disposal"):(c=true,d),g=d=>{for(;d=b.pop();)try{var j=d[1]&&d[1].call(d[2]);if(d[0])return Promise.resolve(j).then(g,h=>(f(h),g()))}catch(h){f(h);}if(c)throw a};return g()};export{o as a,p as b,q as c,r as d};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {a}from'./chunk-LFYBZHOI.mjs';import {b}from'./chunk-X6ISXWBN.mjs';var e=a.create({service:"cli-resources"}),t=class{constructor(){b(this,"resources",[]);b(this,"tempData",new WeakMap);b(this,"initialized",false);b(this,"cleaning",false);}initialize(){if(this.initialized){e.warn("Resource manager already initialized");return}e.info("Initializing resource manager"),process.on("exit",()=>{this.cleanupSync();}),process.on("SIGINT",async()=>{e.info("Received SIGINT signal"),await this.cleanup(),process.exit(0);}),process.on("SIGTERM",async()=>{e.info("Received SIGTERM signal"),await this.cleanup(),process.exit(0);}),this.initialized=true,e.info("Resource manager initialized");}register(r,s){e.debug("Registering resource",{name:r}),this.resources.push({name:r,cleanup:s,registeredAt:new Date}),e.debug("Resource registered",{name:r,totalResources:this.resources.length});}unregister(r){e.debug("Unregistering resource",{name:r});let s=this.resources.findIndex(n=>n.name===r);s!==-1?(this.resources.splice(s,1),e.debug("Resource unregistered",{name:r,totalResources:this.resources.length})):e.warn("Resource not found for unregistration",{name:r});}setTempData(r,s){this.tempData.set(r,s);}getTempData(r){return this.tempData.get(r)}deleteTempData(r){this.tempData.delete(r);}async cleanup(){if(this.cleaning){e.warn("Cleanup already in progress");return}this.cleaning=true,e.info("Starting resource cleanup",{resourceCount:this.resources.length});let r=[...this.resources].reverse();for(let s of r)try{e.debug("Cleaning up resource",{name:s.name}),await s.cleanup(),e.debug("Resource cleaned up successfully",{name:s.name});}catch(n){e.error("Failed to clean up resource",{name:s.name,error:n instanceof Error?n.message:String(n)});}this.resources=[],e.info("Resource cleanup completed"),this.cleaning=false;}cleanupSync(){if(this.cleaning)return;this.cleaning=true,e.info("Starting synchronous resource cleanup",{resourceCount:this.resources.length});let r=[...this.resources].reverse();for(let s of r)try{e.debug("Cleaning up resource (sync)",{name:s.name}),s.cleanup()instanceof Promise&&e.warn("Resource cleanup returned Promise in sync context",{name:s.name}),e.debug("Resource cleaned up successfully (sync)",{name:s.name});}catch(n){e.error("Failed to clean up resource (sync)",{name:s.name,error:n instanceof Error?n.message:String(n)});}this.resources=[],e.info("Synchronous resource cleanup completed"),this.cleaning=false;}getResourceCount(){return this.resources.length}getResourceNames(){return this.resources.map(r=>r.name)}},p=new t;export{p as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {a}from'./chunk-LFYBZHOI.mjs';import {loadConfig,getServerConfig,getChannelConfig,getConnectionPoolConfig,getMessageQueueConfig,getCircuitBreakerConfig,getAgentRegistryConfig,getSessionConfig,getHTTPSConfig,getAuthConfig,getClusterConfig,getDefaultAgent}from'@easbot/gateway';export{GatewayConfigSchema as a}from'@easbot/gateway';var y=a.create({service:"config.gateway-loader"});async function p(e){return y.debug("Loading gateway config via gateway module",{directory:e}),loadConfig(e)}async function S(){return getServerConfig()}async function d(e){return getChannelConfig(e)}async function A(){return getConnectionPoolConfig()}async function N(){return getMessageQueueConfig()}async function x(){return getCircuitBreakerConfig()}async function T(){return getAgentRegistryConfig()}async function I(){return getSessionConfig()}async function b(){return getHTTPSConfig()}async function k(){return getAuthConfig()}async function v(){return getClusterConfig()}async function H(){return (await getClusterConfig())?.sync}async function B(){return getDefaultAgent()}export{p as b,S as c,d,A as e,N as f,x as g,T as h,I as i,b as j,k,v as l,H as m,B as n};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{a as CommandMetadataSchema,c as createCommandFromMarkdown,f as define,b as loadCommandFromFile,e as replaceTemplateVars,d as scanCommands}from'./chunk-CVTJJBGW.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{O as Compaction,o as CompactionCache,n as DEFAULT_CACHE_CONFIG,p as createCompactionCache,q as subscribeCacheEvents}from'./chunk-KY3H2HGJ.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CVTJJBGW.mjs';import'./chunk-IHHFG47N.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-ARCMKYQI.mjs';import'./chunk-EEWP2VV6.mjs';import'./chunk-GMEJX6PC.mjs';import'./chunk-KLJ7PPSA.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-I7A5JGO5.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-I6MBTO75.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{cb as Agent,ab as Command,mb as Config,lb as ConfigDirectoryTypoError,ib as Info,v as InvalidError,u as JsonError,db as Keybinds,gb as Layout,Xa as Mcp,Ua as McpLocal,Va as McpOAuth,Wa as McpRemote,Ta as ModelId,$a as Permission,Ya as PermissionAction,Za as PermissionObject,_a as PermissionRule,hb as Provider,fb as Server,bb as Skills,Pa as SubAgent,Qa as SubAgentConfigSchema,Oa as SubAgentModel,Ma as SubAgentRunMode,Na as SubAgentTransportType,eb as TUI,D as deduplicatePlugins,H as directories,G as get,T as getACPClientsConfig,S as getACPServerConfig,W as getAcpAgentName,U as getAcpAgentRuntimeConfig,V as getAcpModelConfig,ia as getFileCacheConfig,J as getGlobal,C as getPluginName,Sa as getSubAgentConfig,ja as getTokenEstimationConfig,I as global,t as installDependencies,L as isAutoCompactEnabled,N as isBackupEnabled,M as isPruneEnabled,x as load,R as loadACPConfig,z as loadAgent,ba as loadCodebase,A as loadCommand,ka as loadContextConfig,w as loadFile,da as loadKnowledge,ca as loadMemory,aa as loadNote,B as loadPlugin,Ra as loadSubAgentConfig,r as mergeConfigConcatArrays,s as needsInstall,y as parseConfig,E as state,jb as update,kb as updateGlobal,F as waitForDependencies}from'./chunk-KY3H2HGJ.mjs';export{h as getAgentRegistryConfig,m as getAgentSyncConfig,k as getAuthConfig,d as getChannelConfig,e as getConnectionPoolConfig,l as getGatewayClusterConfig,c as getGatewayServerConfig,j as getHTTPSConfig,f as getMessageQueueConfig,i as getSessionConfig,b as loadGatewayConfig}from'./chunk-ZBRXNYEM.mjs';import'./chunk-CVTJJBGW.mjs';import'./chunk-IHHFG47N.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-ARCMKYQI.mjs';import'./chunk-EEWP2VV6.mjs';import'./chunk-GMEJX6PC.mjs';import'./chunk-KLJ7PPSA.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-I7A5JGO5.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-I6MBTO75.mjs';import'./chunk-2RSIOAZV.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {a}from'./chunk-EEWP2VV6.mjs';import'./chunk-X6ISXWBN.mjs';import {SelectList}from'@easbot/tui';var x={selectedPrefix:e=>`\x1B[36m${e}\x1B[0m`,selectedText:e=>`\x1B[1;36m${e}\x1B[0m`,description:e=>`\x1B[90m${e}\x1B[0m`,scrollInfo:e=>`\x1B[90m${e}\x1B[0m`,noMatch:e=>`\x1B[90m${e}\x1B[0m`};function C(e){let{message:o,confirmText:c,cancelText:r,onConfirm:s,onCancel:i}=e,l=[{label:c||a("tui.dialog.confirm"),value:"confirm",description:o},{label:r||a("tui.dialog.cancel"),value:"cancel",description:""}],t=new SelectList(l,2,x);return t.onSelect=m=>{m.value==="confirm"?s():i();},t.onCancel=i,t}export{C as createConfirmDialog};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {b}from'./chunk-X6ISXWBN.mjs';import {createJsonErrorResponseHandler,createProviderToolFactoryWithOutputSchema,createProviderToolFactory,withoutTrailingSlash,parseProviderOptions,postJsonToApi,createJsonResponseHandler,combineHeaders,generateId,createEventSourceResponseHandler,isParsableJson,withUserAgentSuffix,convertToBase64}from'@ai-sdk/provider-utils';import {InvalidResponseDataError,APICallError,UnsupportedFunctionalityError}from'@ai-sdk/provider';import {z}from'zod';import {z as z$1}from'zod/v4';function W(n){return n?.providerOptions?.copilot??{}}function ie(n){let r=[];for(let{role:b,content:_,...k}of n){let h=W({...k});switch(b){case "system":{r.push({role:"system",content:_,...h});break}case "user":{let p=_[0];if(_.length===1&&p?.type==="text"){r.push({role:"user",content:p.text,...W(p)});break}r.push({role:"user",content:_.map(i=>{let d=W(i);switch(i.type){case "text":return {type:"text",text:i.text,...d};case "file":if(i.mediaType.startsWith("image/")){let m=i.mediaType==="image/*"?"image/jpeg":i.mediaType;return {type:"image_url",image_url:{url:i.data instanceof URL?i.data.toString():`data:${m};base64,${convertToBase64(i.data)}`},...d}}else throw new UnsupportedFunctionalityError({functionality:`file part media type ${i.mediaType}`});default:throw new UnsupportedFunctionalityError({functionality:`part type ${i.type}`})}}),...h});break}case "assistant":{let p="",i,d,m=[];for(let o of _){let C=W(o),u=o.providerOptions?.copilot?.reasoningOpaque;switch(u&&!d&&(d=u),o.type){case "text":{p+=o.text;break}case "reasoning":{o.text&&(i=o.text);break}case "tool-call":{m.push({id:o.toolCallId,type:"function",function:{name:o.toolName,arguments:JSON.stringify(o.input)},...C});break}}}r.push({role:"assistant",content:p||null,tool_calls:m.length>0?m:void 0,reasoning_text:d?i:void 0,reasoning_opaque:d,...h});break}case "tool":{for(let p of _){if(p.type==="tool-approval-response")continue;let i=p.output,d;switch(i.type){case "text":case "error-text":d=i.value;break;case "execution-denied":d=i.reason??"Tool execution denied.";break;case "content":case "json":case "error-json":d=JSON.stringify(i.value);break;default:{d=String(i.value);break}}let m=W(p);r.push({role:"tool",tool_call_id:p.toolCallId,content:d,...m});}break}default:{let p=b;throw new Error(`Unsupported role: ${p}`)}}}return r}function U({id:n,model:r,created:b}){return {id:n??void 0,modelId:r??void 0,timestamp:b!=null?new Date(b*1e3):void 0}}function K(n){switch(n){case "stop":return {unified:"stop",raw:n||void 0};case "length":return {unified:"length",raw:n||void 0};case "content_filter":return {unified:"content-filter",raw:n||void 0};case "function_call":case "tool_calls":return {unified:"tool-calls",raw:n||void 0};default:return {unified:"other",raw:n||void 0}}}var $=z.object({user:z.string().optional(),reasoningEffort:z.string().optional(),textVerbosity:z.string().optional(),thinking_budget:z.number().optional()});var De=z$1.object({error:z$1.object({message:z$1.string(),type:z$1.string().nullish(),param:z$1.any().nullish(),code:z$1.union([z$1.string(),z$1.number()]).nullish()})}),ae={errorSchema:De,errorToMessage:n=>n.error.message};function re({tools:n,toolChoice:r}){n=(n?.length??0)>0?n:void 0;let b=[];if(n==null)return {tools:void 0,toolChoice:void 0,toolWarnings:b};let _=[];for(let h of n)h.type==="provider"?b.push({type:"unsupported",feature:h.name||"unknown-tool"}):_.push({type:"function",function:{name:h.name,description:h.description,parameters:h.inputSchema}});if(r==null)return {tools:_,toolChoice:void 0,toolWarnings:b};let k=r.type;switch(k){case "auto":case "none":case "required":return {tools:_,toolChoice:k,toolWarnings:b};case "tool":return {tools:_,toolChoice:{type:"function",function:{name:r.toolName}},toolWarnings:b};default:{let h=k;throw new UnsupportedFunctionalityError({functionality:`tool choice type: ${h}`})}}}var J=class{constructor(r,b$1){b(this,"specificationVersion","v3");b(this,"supportsStructuredOutputs");b(this,"modelId");b(this,"config");b(this,"failedResponseHandler");b(this,"chunkSchema");this.modelId=r,this.config=b$1;let _=b$1.errorStructure??ae;this.chunkSchema=Je(_.errorSchema),this.failedResponseHandler=createJsonErrorResponseHandler(_),this.supportsStructuredOutputs=b$1.supportsStructuredOutputs??false;}get provider(){return this.config.provider}get providerOptionsName(){return this.config.provider.split(".")[0]?.trim()??"openai"}get supportedUrls(){return this.config.supportedUrls?.()??{}}async getArgs({prompt:r,maxOutputTokens:b,temperature:_,topP:k,topK:h,frequencyPenalty:p,presencePenalty:i,providerOptions:d,stopSequences:m,responseFormat:o,seed:C,toolChoice:u,tools:a}){let s=[],c=Object.assign(await parseProviderOptions({provider:"copilot",providerOptions:d,schema:$})??{},await parseProviderOptions({provider:this.providerOptionsName,providerOptions:d,schema:$})??{});h!=null&&s.push({type:"unsupported",feature:"topK"}),o?.type==="json"&&o.schema!=null&&!this.supportsStructuredOutputs&&s.push({type:"unsupported",feature:"responseFormat",details:"JSON response format schema is only supported with structuredOutputs"});let{tools:g,toolChoice:I,toolWarnings:l}=re({tools:a,toolChoice:u});return {args:{model:this.modelId,user:c.user,max_tokens:b,temperature:_,top_p:k,frequency_penalty:p,presence_penalty:i,response_format:o?.type==="json"?this.supportsStructuredOutputs===true&&o.schema!=null?{type:"json_schema",json_schema:{schema:o.schema,name:o.name??"response",description:o.description}}:{type:"json_object"}:void 0,stop:m,seed:C,...Object.fromEntries(Object.entries(d?.[this.providerOptionsName]??{}).filter(([t])=>!Object.keys($.shape).includes(t))),reasoning_effort:c.reasoningEffort,verbosity:c.textVerbosity,messages:ie(r),tools:g,tool_choice:I,thinking_budget:c.thinking_budget},warnings:[...s,...l]}}async doGenerate(r){let{args:b,warnings:_}=await this.getArgs({...r}),k=JSON.stringify(b),{responseHeaders:h,value:p,rawValue:i}=await postJsonToApi({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:combineHeaders(this.config.headers(),r.headers),body:b,failedResponseHandler:this.failedResponseHandler,successfulResponseHandler:createJsonResponseHandler(He),abortSignal:r.abortSignal,fetch:this.config.fetch}),d=p.choices?.[0];if(!d)return {content:[],finishReason:{unified:"error",raw:void 0},usage:{inputTokens:{total:p.usage?.prompt_tokens??void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:p.usage?.completion_tokens??void 0,text:p.usage?.completion_tokens??void 0,reasoning:void 0}},providerMetadata:{},request:{body:k},response:{...U(p),headers:h,body:i},warnings:_};let m=[],o=d.message.content;o!=null&&o.length>0&&m.push({type:"text",text:o,providerMetadata:d.message.reasoning_opaque?{copilot:{reasoningOpaque:d.message.reasoning_opaque}}:void 0});let C=d.message.reasoning_text;if(C!=null&&C.length>0&&m.push({type:"reasoning",text:C,providerMetadata:d.message.reasoning_opaque?{copilot:{reasoningOpaque:d.message.reasoning_opaque}}:void 0}),d.message.tool_calls!=null)for(let s of d.message.tool_calls)m.push({type:"tool-call",toolCallId:s.id??generateId(),toolName:s.function.name,input:s.function.arguments,providerMetadata:d.message.reasoning_opaque?{copilot:{reasoningOpaque:d.message.reasoning_opaque}}:void 0});let u={[this.providerOptionsName]:{},...await this.config.metadataExtractor?.extractMetadata?.({parsedBody:i})},a=p.usage?.completion_tokens_details;if(a?.accepted_prediction_tokens!=null){let s=this.providerOptionsName;u[s]&&(u[s].acceptedPredictionTokens=a?.accepted_prediction_tokens);}if(a?.rejected_prediction_tokens!=null){let s=this.providerOptionsName;u[s]&&(u[s].rejectedPredictionTokens=a?.rejected_prediction_tokens);}return {content:m,finishReason:K(d?.finish_reason),usage:{inputTokens:{total:p.usage?.prompt_tokens??void 0,noCache:void 0,cacheRead:p.usage?.prompt_tokens_details?.cached_tokens??void 0,cacheWrite:void 0},outputTokens:{total:p.usage?.completion_tokens??void 0,text:void 0,reasoning:p.usage?.completion_tokens_details?.reasoning_tokens??void 0},raw:p.usage??void 0},providerMetadata:u,request:{body:k},response:{...U(p),headers:h,body:i},warnings:_}}async doStream(r){let{args:b,warnings:_}=await this.getArgs({...r}),k={...b,stream:true,stream_options:this.config.includeUsage?{include_usage:true}:void 0},h=this.config.metadataExtractor?.createStreamExtractor(),{responseHeaders:p,value:i}=await postJsonToApi({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:combineHeaders(this.config.headers(),r.headers),body:k,failedResponseHandler:this.failedResponseHandler,successfulResponseHandler:createEventSourceResponseHandler(this.chunkSchema),abortSignal:r.abortSignal,fetch:this.config.fetch}),d=[],m={unified:"other",raw:void 0},o={completionTokens:void 0,completionTokensDetails:{reasoningTokens:void 0,acceptedPredictionTokens:void 0,rejectedPredictionTokens:void 0},promptTokens:void 0,promptTokensDetails:{cachedTokens:void 0},totalTokens:void 0},C=true,u=this.providerOptionsName,a=false,s=false,c;return {stream:i.pipeThrough(new TransformStream({start(g){g.enqueue({type:"stream-start",warnings:_});},transform(g,I){if(r.includeRawChunks&&I.enqueue({type:"raw",rawValue:g.rawValue}),!g.success){m={unified:"error",raw:void 0},I.enqueue({type:"error",error:g.error});return}let l=g.value;if(h?.processChunk(g.rawValue),"error"in l){m={unified:"error",raw:void 0},I.enqueue({type:"error",error:l.error.message});return}if(C&&(C=false,I.enqueue({type:"response-metadata",...U(l)})),l.usage!=null){let{prompt_tokens:R,completion_tokens:L,total_tokens:j,prompt_tokens_details:v,completion_tokens_details:z}=l.usage;o.promptTokens=R??void 0,o.completionTokens=L??void 0,o.totalTokens=j??void 0,z?.reasoning_tokens!=null&&(o.completionTokensDetails.reasoningTokens=z?.reasoning_tokens),z?.accepted_prediction_tokens!=null&&(o.completionTokensDetails.acceptedPredictionTokens=z?.accepted_prediction_tokens),z?.rejected_prediction_tokens!=null&&(o.completionTokensDetails.rejectedPredictionTokens=z?.rejected_prediction_tokens),v?.cached_tokens!=null&&(o.promptTokensDetails.cachedTokens=v?.cached_tokens);}let t=l.choices[0];if(t?.finish_reason!=null&&(m=K(t.finish_reason)),t?.delta==null)return;let y=t.delta;if(y.reasoning_opaque){if(c!=null)throw new InvalidResponseDataError({data:y,message:"Multiple reasoning_opaque values received in a single response. Only one thinking part per response is supported."});c=y.reasoning_opaque;}let N=y.reasoning_text;if(N&&(a||(I.enqueue({type:"reasoning-start",id:"reasoning-0"}),a=true),I.enqueue({type:"reasoning-delta",id:"reasoning-0",delta:N})),y.content&&(a&&!s&&(I.enqueue({type:"reasoning-end",id:"reasoning-0",providerMetadata:c?{copilot:{reasoningOpaque:c}}:void 0}),a=false),s||(I.enqueue({type:"text-start",id:"txt-0",providerMetadata:c?{copilot:{reasoningOpaque:c}}:void 0}),s=true),I.enqueue({type:"text-delta",id:"txt-0",delta:y.content})),y.tool_calls!=null){a&&(I.enqueue({type:"reasoning-end",id:"reasoning-0",providerMetadata:c?{copilot:{reasoningOpaque:c}}:void 0}),a=false);for(let R of y.tool_calls){let L=R.index;if(d[L]==null){if(R.id==null)throw new InvalidResponseDataError({data:R,message:"Expected 'id' to be a string."});if(R.function?.name==null)throw new InvalidResponseDataError({data:R,message:"Expected 'function.name' to be a string."});I.enqueue({type:"tool-input-start",id:R.id,toolName:R.function.name}),d[L]={id:R.id,type:"function",function:{name:R.function.name,arguments:R.function.arguments??""},hasFinished:false};let v=d[L];v.function?.name!=null&&v.function?.arguments!=null&&(v.function.arguments.length>0&&I.enqueue({type:"tool-input-delta",id:v.id,delta:v.function.arguments}),isParsableJson(v.function.arguments)&&(I.enqueue({type:"tool-input-end",id:v.id}),I.enqueue({type:"tool-call",toolCallId:v.id??generateId(),toolName:v.function.name,input:v.function.arguments,providerMetadata:c?{copilot:{reasoningOpaque:c}}:void 0}),v.hasFinished=true));continue}let j=d[L];j.hasFinished||(R.function?.arguments!=null&&(j.function.arguments+=R.function?.arguments??""),I.enqueue({type:"tool-input-delta",id:j.id,delta:R.function.arguments??""}),j.function?.name!=null&&j.function?.arguments!=null&&isParsableJson(j.function.arguments)&&(I.enqueue({type:"tool-input-end",id:j.id}),I.enqueue({type:"tool-call",toolCallId:j.id??generateId(),toolName:j.function.name,input:j.function.arguments,providerMetadata:c?{copilot:{reasoningOpaque:c}}:void 0}),j.hasFinished=true));}}},flush(g){a&&g.enqueue({type:"reasoning-end",id:"reasoning-0",providerMetadata:c?{copilot:{reasoningOpaque:c}}:void 0}),s&&g.enqueue({type:"text-end",id:"txt-0"});for(let l of d.filter(t=>!t.hasFinished))g.enqueue({type:"tool-input-end",id:l.id}),g.enqueue({type:"tool-call",toolCallId:l.id??generateId(),toolName:l.function.name,input:l.function.arguments});let I={[u]:{},...c?{copilot:{reasoningOpaque:c}}:{},...h?.buildMetadata()};o.completionTokensDetails.acceptedPredictionTokens!=null&&I[u]&&(I[u].acceptedPredictionTokens=o.completionTokensDetails.acceptedPredictionTokens),o.completionTokensDetails.rejectedPredictionTokens!=null&&I[u]&&(I[u].rejectedPredictionTokens=o.completionTokensDetails.rejectedPredictionTokens),g.enqueue({type:"finish",finishReason:m,usage:{inputTokens:{total:o.promptTokens,noCache:o.promptTokens!==void 0&&o.promptTokensDetails.cachedTokens!==void 0?o.promptTokens-o.promptTokensDetails.cachedTokens:void 0,cacheRead:o.promptTokensDetails.cachedTokens,cacheWrite:void 0},outputTokens:{total:o.completionTokens,text:void 0,reasoning:o.completionTokensDetails.reasoningTokens},raw:{prompt_tokens:o.promptTokens??null,completion_tokens:o.completionTokens??null,total_tokens:o.totalTokens??null}},providerMetadata:I});}})),request:{body:k},response:{headers:p}}}},de=z.object({prompt_tokens:z.number().nullish(),completion_tokens:z.number().nullish(),total_tokens:z.number().nullish(),prompt_tokens_details:z.object({cached_tokens:z.number().nullish()}).nullish(),completion_tokens_details:z.object({reasoning_tokens:z.number().nullish(),accepted_prediction_tokens:z.number().nullish(),rejected_prediction_tokens:z.number().nullish()}).nullish()}).nullish(),He=z.object({id:z.string().nullish(),created:z.number().nullish(),model:z.string().nullish(),choices:z.array(z.object({message:z.object({role:z.literal("assistant").nullish(),content:z.string().nullish(),reasoning_text:z.string().nullish(),reasoning_opaque:z.string().nullish(),tool_calls:z.array(z.object({id:z.string().nullish(),function:z.object({name:z.string(),arguments:z.string()})})).nullish()}),finish_reason:z.string().nullish()})),usage:de}),Je=n=>z.union([z.object({id:z.string().nullish(),created:z.number().nullish(),model:z.string().nullish(),choices:z.array(z.object({delta:z.object({role:z.enum(["assistant"]).nullish(),content:z.string().nullish(),reasoning_text:z.string().nullish(),reasoning_opaque:z.string().nullish(),tool_calls:z.array(z.object({index:z.number(),id:z.string().nullish(),function:z.object({name:z.string().nullish(),arguments:z.string().nullish()})})).nullish()}).nullish(),finish_reason:z.string().nullish()})),usage:de}),n]);var Be=z.object({error:z.object({message:z.string(),type:z.string().nullish(),param:z.any().nullish(),code:z.union([z.string(),z.number()]).nullish()})}),X=createJsonErrorResponseHandler({errorSchema:Be,errorToMessage:n=>n.error.message});var Ze=z.object({code:z.string().nullish(),containerId:z.string()}),Xe=z.object({outputs:z.array(z.discriminatedUnion("type",[z.object({type:z.literal("logs"),logs:z.string()}),z.object({type:z.literal("image"),url:z.string()})])).nullish()}),ce=z.object({container:z.union([z.string(),z.object({fileIds:z.array(z.string()).optional()})]).optional()});createProviderToolFactoryWithOutputSchema({id:"openai.code_interpreter",inputSchema:Ze,outputSchema:Xe});var me=z.object({key:z.string(),type:z.enum(["eq","ne","gt","gte","lt","lte"]),value:z.union([z.string(),z.number(),z.boolean()])}),ge=z.object({type:z.enum(["and","or"]),filters:z.array(z.union([me,z.lazy(()=>ge)]))}),fe=z.object({vectorStoreIds:z.array(z.string()),maxNumResults:z.number().optional(),ranking:z.object({ranker:z.string().optional(),scoreThreshold:z.number().optional()}).optional(),filters:z.union([me,ge]).optional()}),Ye=z.object({queries:z.array(z.string()),results:z.array(z.object({attributes:z.record(z.string(),z.unknown()),fileId:z.string(),filename:z.string(),score:z.number(),text:z.string()})).nullable()});createProviderToolFactoryWithOutputSchema({id:"openai.file_search",inputSchema:z.object({}),outputSchema:Ye});var he=z.object({background:z.enum(["auto","opaque","transparent"]).optional(),inputFidelity:z.enum(["low","high"]).optional(),inputImageMask:z.object({fileId:z.string().optional(),imageUrl:z.string().optional()}).optional(),model:z.string().optional(),moderation:z.enum(["auto"]).optional(),outputCompression:z.number().int().min(0).max(100).optional(),outputFormat:z.enum(["png","jpeg","webp"]).optional(),partialImages:z.number().int().min(0).max(3).optional(),quality:z.enum(["auto","low","medium","high"]).optional(),size:z.enum(["1024x1024","1024x1536","1536x1024","auto"]).optional()}).strict(),tt=z.object({result:z.string()});createProviderToolFactoryWithOutputSchema({id:"openai.image_generation",inputSchema:z.object({}),outputSchema:tt});var Q=z.object({action:z.object({type:z.literal("exec"),command:z.array(z.string()),timeoutMs:z.number().optional(),user:z.string().optional(),workingDirectory:z.string().optional(),env:z.record(z.string(),z.string()).optional()})}),Y=z.object({output:z.string()});createProviderToolFactoryWithOutputSchema({id:"openai.local_shell",inputSchema:Q,outputSchema:Y});function be(n,r){return r?r.some(b=>n.startsWith(b)):false}async function Ce({prompt:n,systemMessageMode:r,fileIdPrefixes:b,store:_,hasLocalShellTool:k=false}){let h=[],p=[],i=new Set;for(let{role:d,content:m}of n)switch(d){case "system":{switch(r){case "system":{h.push({role:"system",content:m});break}case "developer":{h.push({role:"developer",content:m});break}case "remove":{p.push({type:"other",message:"system messages are removed for this model"});break}default:{let o=r;throw new Error(`Unsupported system message mode: ${o}`)}}break}case "user":{h.push({role:"user",content:m.map((o,C)=>{switch(o.type){case "text":return {type:"input_text",text:o.text};case "file":if(o.mediaType.startsWith("image/")){let u=o.mediaType==="image/*"?"image/jpeg":o.mediaType;return {type:"input_image",...o.data instanceof URL?{image_url:o.data.toString()}:typeof o.data=="string"&&be(o.data,b)?{file_id:o.data}:{image_url:`data:${u};base64,${convertToBase64(o.data)}`},detail:o.providerOptions?.openai?.imageDetail}}else {if(o.mediaType==="application/pdf")return o.data instanceof URL?{type:"input_file",file_url:o.data.toString()}:{type:"input_file",...typeof o.data=="string"&&be(o.data,b)?{file_id:o.data}:{filename:o.filename??`part-${C}.pdf`,file_data:`data:application/pdf;base64,${convertToBase64(o.data)}`}};throw new UnsupportedFunctionalityError({functionality:`file part media type ${o.mediaType}`})}default:throw new UnsupportedFunctionalityError({functionality:`part type ${o.type}`})}})});break}case "assistant":{let o={},C={};for(let u of m)switch(u.type){case "text":{h.push({role:"assistant",content:[{type:"output_text",text:u.text}],id:u.providerOptions?.openai?.itemId??void 0});break}case "tool-call":{if(C[u.toolCallId]=u,u.providerExecuted)break;if(k&&u.toolName==="local_shell"){let a=Q.parse(u.input);h.push({type:"local_shell_call",call_id:u.toolCallId,id:u.providerOptions?.openai?.itemId??void 0,action:{type:"exec",command:a.action.command,timeout_ms:a.action.timeoutMs,user:a.action.user,working_directory:a.action.workingDirectory,env:a.action.env}});break}h.push({type:"function_call",call_id:u.toolCallId,name:u.toolName,arguments:JSON.stringify(u.input),id:u.providerOptions?.openai?.itemId??void 0});break}case "tool-result":{_?h.push({type:"item_reference",id:u.toolCallId}):p.push({type:"other",message:`Results for OpenAI tool ${u.toolName} are not sent to the API when store is false`});break}case "reasoning":{let a=await parseProviderOptions({provider:"copilot",providerOptions:u.providerOptions,schema:it}),s=a?.itemId;if(s!=null){let c=o[s];if(_)c===void 0&&(h.push({type:"item_reference",id:s}),o[s]={type:"reasoning",id:s,summary:[]});else {let g=[];u.text.length>0?g.push({type:"summary_text",text:u.text}):c!==void 0&&p.push({type:"other",message:`Cannot append empty reasoning part to existing reasoning sequence. Skipping reasoning part: ${JSON.stringify(u)}.`}),c===void 0?(o[s]={type:"reasoning",id:s,encrypted_content:a?.reasoningEncryptedContent,summary:g},h.push(o[s])):c.summary.push(...g);}}else p.push({type:"other",message:`Non-OpenAI reasoning parts are not supported. Skipping reasoning part: ${JSON.stringify(u)}.`});break}}break}case "tool":{for(let o of m){if(o.type==="tool-approval-response"){if(i.has(o.approvalId))continue;i.add(o.approvalId),_&&h.push({type:"item_reference",id:o.approvalId}),h.push({type:"mcp_approval_response",approval_request_id:o.approvalId,approve:o.approved});continue}let C=o.output;if(C.type==="execution-denied"&&C.providerOptions?.openai?.approvalId)continue;if(k&&o.toolName==="local_shell"&&C.type==="json"){h.push({type:"local_shell_call_output",call_id:o.toolCallId,output:Y.parse(o.output.value).output});break}let u="";switch(C.type){case "text":case "error-text":u=C.value;break;case "execution-denied":u=C.reason??"Tool execution denied.";break;case "content":case "json":case "error-json":u=JSON.stringify(C.value);break}h.push({type:"function_call_output",call_id:o.toolCallId,output:u});}break}default:{let o=d;throw new Error(`Unsupported role: ${o}`)}}return {input:h,warnings:p}}var it=z.object({itemId:z.string().nullish(),reasoningEncryptedContent:z.string().nullish()});function te({finishReason:n,hasFunctionCall:r}){switch(n){case void 0:case null:return {unified:r?"tool-calls":"stop",raw:n||void 0};case "max_output_tokens":return {unified:"length",raw:n};case "content_filter":return {unified:"content-filter",raw:n};default:return {unified:r?"tool-calls":"other",raw:n}}}var ke=z.object({filters:z.object({allowedDomains:z.array(z.string()).optional()}).optional(),searchContextSize:z.enum(["low","medium","high"]).optional(),userLocation:z.object({type:z.literal("approximate"),country:z.string().optional(),city:z.string().optional(),region:z.string().optional(),timezone:z.string().optional()}).optional()});createProviderToolFactory({id:"openai.web_search",inputSchema:z.object({action:z.discriminatedUnion("type",[z.object({type:z.literal("search"),query:z.string().nullish()}),z.object({type:z.literal("open_page"),url:z.string()}),z.object({type:z.literal("find"),url:z.string(),pattern:z.string()})]).nullish()})});var Ie=z.object({searchContextSize:z.enum(["low","medium","high"]).optional(),userLocation:z.object({type:z.literal("approximate"),country:z.string().optional(),city:z.string().optional(),region:z.string().optional(),timezone:z.string().optional()}).optional()});createProviderToolFactory({id:"openai.web_search_preview",inputSchema:z.object({action:z.discriminatedUnion("type",[z.object({type:z.literal("search"),query:z.string().nullish()}),z.object({type:z.literal("open_page"),url:z.string()}),z.object({type:z.literal("find"),url:z.string(),pattern:z.string()})]).nullish()})});function Se({tools:n,toolChoice:r,strictJsonSchema:b}){n=(n?.length??0)>0?n:void 0;let _=[];if(n==null)return {tools:void 0,toolChoice:void 0,toolWarnings:_};let k=[];for(let p of n)switch(p.type){case "function":k.push({type:"function",name:p.name,description:p.description,parameters:p.inputSchema,strict:b});break;case "provider":{switch(p.id){case "openai.file_search":{let i=fe.parse(p.args);k.push({type:"file_search",vector_store_ids:i.vectorStoreIds,max_num_results:i.maxNumResults,ranking_options:i.ranking?{ranker:i.ranking.ranker,score_threshold:i.ranking.scoreThreshold}:void 0,filters:i.filters});break}case "openai.local_shell":{k.push({type:"local_shell"});break}case "openai.web_search_preview":{let i=Ie.parse(p.args);k.push({type:"web_search_preview",search_context_size:i.searchContextSize,user_location:i.userLocation});break}case "openai.web_search":{let i=ke.parse(p.args);k.push({type:"web_search",filters:i.filters!=null?{allowed_domains:i.filters.allowedDomains}:void 0,search_context_size:i.searchContextSize,user_location:i.userLocation});break}case "openai.code_interpreter":{let i=ce.parse(p.args);k.push({type:"code_interpreter",container:i.container==null?{type:"auto",file_ids:void 0}:typeof i.container=="string"?i.container:{type:"auto",file_ids:i.container.fileIds}});break}case "openai.image_generation":{let i=he.parse(p.args);k.push({type:"image_generation",background:i.background,input_fidelity:i.inputFidelity,input_image_mask:i.inputImageMask?{file_id:i.inputImageMask.fileId,image_url:i.inputImageMask.imageUrl}:void 0,model:i.model,moderation:i.moderation,partial_images:i.partialImages,quality:i.quality,output_compression:i.outputCompression,output_format:i.outputFormat,size:i.size});break}}break}default:_.push({type:"unsupported",feature:"unknown-tool"});break}if(r==null)return {tools:k,toolChoice:void 0,toolWarnings:_};let h=r.type;switch(h){case "auto":case "none":case "required":return {tools:k,toolChoice:h,toolWarnings:_};case "tool":return {tools:k,toolChoice:r.toolName==="code_interpreter"||r.toolName==="file_search"||r.toolName==="image_generation"||r.toolName==="web_search_preview"||r.toolName==="web_search"?{type:r.toolName}:{type:"function",name:r.toolName},toolWarnings:_};default:{let p=h;throw new UnsupportedFunctionalityError({functionality:`tool choice type: ${p}`})}}}var Oe=z.object({type:z.literal("web_search_call"),id:z.string(),status:z.string(),action:z.discriminatedUnion("type",[z.object({type:z.literal("search"),query:z.string().nullish()}),z.object({type:z.literal("open_page"),url:z.string()}),z.object({type:z.literal("find"),url:z.string(),pattern:z.string()})]).nullish()}),Me=z.object({type:z.literal("file_search_call"),id:z.string(),queries:z.array(z.string()),results:z.array(z.object({attributes:z.record(z.string(),z.unknown()),file_id:z.string(),filename:z.string(),score:z.number(),text:z.string()})).nullish()}),we=z.object({type:z.literal("code_interpreter_call"),id:z.string(),code:z.string().nullable(),container_id:z.string(),outputs:z.array(z.discriminatedUnion("type",[z.object({type:z.literal("logs"),logs:z.string()}),z.object({type:z.literal("image"),url:z.string()})])).nullable()}),Re=z.object({type:z.literal("local_shell_call"),id:z.string(),call_id:z.string(),action:z.object({type:z.literal("exec"),command:z.array(z.string()),timeout_ms:z.number().optional(),user:z.string().optional(),working_directory:z.string().optional(),env:z.record(z.string(),z.string()).optional()})}),Te=z.object({type:z.literal("image_generation_call"),id:z.string(),result:z.string()}),je=20,Ae=z.array(z.object({token:z.string(),logprob:z.number(),top_logprobs:z.array(z.object({token:z.string(),logprob:z.number()}))})),B=class{constructor(r,b$1){b(this,"specificationVersion","v3");b(this,"modelId");b(this,"config");b(this,"supportedUrls",{"image/*":[/^https?:\/\/.*$/],"application/pdf":[/^https?:\/\/.*$/]});this.modelId=r,this.config=b$1;}get provider(){return this.config.provider}async getArgs({maxOutputTokens:r,temperature:b,stopSequences:_,topP:k,topK:h,presencePenalty:p,frequencyPenalty:i,seed:d,prompt:m,providerOptions:o,tools:C,toolChoice:u,responseFormat:a}){let s=[],c=Ft(this.modelId);h!=null&&s.push({type:"unsupported",feature:"topK"}),d!=null&&s.push({type:"unsupported",feature:"seed"}),p!=null&&s.push({type:"unsupported",feature:"presencePenalty"}),i!=null&&s.push({type:"unsupported",feature:"frequencyPenalty"}),_!=null&&s.push({type:"unsupported",feature:"stopSequences"});let g=await parseProviderOptions({provider:"copilot",providerOptions:o,schema:Dt}),{input:I,warnings:l}=await Ce({prompt:m,systemMessageMode:c.systemMessageMode,fileIdPrefixes:this.config.fileIdPrefixes,store:g?.store??true,hasLocalShellTool:R("openai.local_shell")});s.push(...l);let t=g?.strictJsonSchema??false,y=g?.include;function N(E){y=y!=null?[...y,E]:[E];}function R(E){return C?.find(ne=>ne.type==="provider"&&ne.id===E)!=null}let L=typeof g?.logprobs=="number"?g?.logprobs:g?.logprobs===true?je:void 0;L&&N("message.output_text.logprobs");let j=C?.find(E=>E.type==="provider"&&(E.id==="openai.web_search"||E.id==="openai.web_search_preview"))?.name;j&&N("web_search_call.action.sources"),R("openai.code_interpreter")&&N("code_interpreter_call.outputs");let v={model:this.modelId,input:I,temperature:b,top_p:k,max_output_tokens:r,...(a?.type==="json"||g?.textVerbosity)&&{text:{...a?.type==="json"&&{format:a.schema!=null?{type:"json_schema",strict:t,name:a.name??"response",description:a.description,schema:a.schema}:{type:"json_object"}},...g?.textVerbosity&&{verbosity:g.textVerbosity}}},max_tool_calls:g?.maxToolCalls,metadata:g?.metadata,parallel_tool_calls:g?.parallelToolCalls,previous_response_id:g?.previousResponseId,store:g?.store,user:g?.user,instructions:g?.instructions,service_tier:g?.serviceTier,include:y,prompt_cache_key:g?.promptCacheKey,safety_identifier:g?.safetyIdentifier,top_logprobs:L,...c.isReasoningModel&&(g?.reasoningEffort!=null||g?.reasoningSummary!=null)&&{reasoning:{...g?.reasoningEffort!=null&&{effort:g.reasoningEffort},...g?.reasoningSummary!=null&&{summary:g.reasoningSummary}}},...c.requiredAutoTruncation&&{truncation:"auto"}};c.isReasoningModel?(v.temperature!=null&&(v.temperature=void 0,s.push({type:"unsupported",feature:"temperature",details:"temperature is not supported for reasoning models"})),v.top_p!=null&&(v.top_p=void 0,s.push({type:"unsupported",feature:"topP",details:"topP is not supported for reasoning models"}))):(g?.reasoningEffort!=null&&s.push({type:"unsupported",feature:"reasoningEffort",details:"reasoningEffort is not supported for non-reasoning models"}),g?.reasoningSummary!=null&&s.push({type:"unsupported",feature:"reasoningSummary",details:"reasoningSummary is not supported for non-reasoning models"})),g?.serviceTier==="flex"&&!c.supportsFlexProcessing&&(s.push({type:"unsupported",feature:"serviceTier",details:"flex processing is only available for o3, o4-mini, and gpt-5 models"}),delete v.service_tier),g?.serviceTier==="priority"&&!c.supportsPriorityProcessing&&(s.push({type:"unsupported",feature:"serviceTier",details:"priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported"}),delete v.service_tier);let{tools:z,toolChoice:ze,toolWarnings:Ee}=Se({tools:C,toolChoice:u,strictJsonSchema:t});return {webSearchToolName:j,args:{...v,tools:z,tool_choice:ze},warnings:[...s,...Ee]}}async doGenerate(r){let{args:b,warnings:_,webSearchToolName:k}=await this.getArgs(r),h=this.config.url({path:"/responses",modelId:this.modelId}),{responseHeaders:p,value:i,rawValue:d}=await postJsonToApi({url:h,headers:combineHeaders(this.config.headers(),r.headers),body:b,failedResponseHandler:X,successfulResponseHandler:createJsonResponseHandler(z.object({id:z.string(),created_at:z.number(),error:z.object({code:z.string(),message:z.string()}).nullish(),model:z.string(),output:z.array(z.discriminatedUnion("type",[z.object({type:z.literal("message"),role:z.literal("assistant"),id:z.string(),content:z.array(z.object({type:z.literal("output_text"),text:z.string(),logprobs:Ae.nullish(),annotations:z.array(z.discriminatedUnion("type",[z.object({type:z.literal("url_citation"),start_index:z.number(),end_index:z.number(),url:z.string(),title:z.string()}),z.object({type:z.literal("file_citation"),file_id:z.string(),filename:z.string().nullish(),index:z.number().nullish(),start_index:z.number().nullish(),end_index:z.number().nullish(),quote:z.string().nullish()}),z.object({type:z.literal("container_file_citation")})]))}))}),Oe,Me,we,Te,Re,z.object({type:z.literal("function_call"),call_id:z.string(),name:z.string(),arguments:z.string(),id:z.string()}),z.object({type:z.literal("computer_call"),id:z.string(),status:z.string().optional()}),z.object({type:z.literal("reasoning"),id:z.string(),encrypted_content:z.string().nullish(),summary:z.array(z.object({type:z.literal("summary_text"),text:z.string()}))})])),service_tier:z.string().nullish(),incomplete_details:z.object({reason:z.string()}).nullish(),usage:Pe})),abortSignal:r.abortSignal,fetch:this.config.fetch});if(i.error)throw new APICallError({message:i.error.message,url:h,requestBodyValues:b,statusCode:400,responseHeaders:p,responseBody:d,isRetryable:false});let m=[],o=[],C=false;for(let a of i.output)switch(a.type){case "reasoning":{a.summary.length===0&&a.summary.push({type:"summary_text",text:""});for(let s of a.summary)m.push({type:"reasoning",text:s.text,providerMetadata:{openai:{itemId:a.id,reasoningEncryptedContent:a.encrypted_content??null}}});break}case "image_generation_call":{m.push({type:"tool-call",toolCallId:a.id,toolName:"image_generation",input:"{}"}),m.push({type:"tool-result",toolCallId:a.id,toolName:"image_generation",result:{result:a.result}});break}case "local_shell_call":{m.push({type:"tool-call",toolCallId:a.call_id,toolName:"local_shell",input:JSON.stringify({action:a.action}),providerMetadata:{openai:{itemId:a.id}}});break}case "message":{for(let s of a.content){r.providerOptions?.openai?.logprobs&&s.logprobs&&o.push(s.logprobs),m.push({type:"text",text:s.text,providerMetadata:{openai:{itemId:a.id}}});for(let c of s.annotations)c.type==="url_citation"?m.push({type:"source",sourceType:"url",id:generateId(),url:c.url,title:c.title}):c.type==="file_citation"&&m.push({type:"source",sourceType:"document",id:this.config.generateId?.()??generateId(),mediaType:"text/plain",title:c.quote??c.filename??"Document",filename:c.filename??c.file_id});}break}case "function_call":{C=true,m.push({type:"tool-call",toolCallId:a.call_id,toolName:a.name,input:a.arguments,providerMetadata:{openai:{itemId:a.id}}});break}case "web_search_call":{m.push({type:"tool-call",toolCallId:a.id,toolName:k??"web_search",input:JSON.stringify({action:a.action}),providerExecuted:true}),m.push({type:"tool-result",toolCallId:a.id,toolName:k??"web_search",result:{status:a.status}});break}case "computer_call":{m.push({type:"tool-call",toolCallId:a.id,toolName:"computer_use",input:"",providerExecuted:true}),m.push({type:"tool-result",toolCallId:a.id,toolName:"computer_use",result:{type:"computer_use_tool_result",status:a.status||"completed"}});break}case "file_search_call":{m.push({type:"tool-call",toolCallId:a.id,toolName:"file_search",input:"{}",providerExecuted:true}),m.push({type:"tool-result",toolCallId:a.id,toolName:"file_search",result:{queries:a.queries,results:a.results?.map(s=>({attributes:s.attributes,fileId:s.file_id,filename:s.filename,score:s.score,text:s.text}))??null}});break}case "code_interpreter_call":{m.push({type:"tool-call",toolCallId:a.id,toolName:"code_interpreter",input:JSON.stringify({code:a.code,containerId:a.container_id}),providerExecuted:true}),m.push({type:"tool-result",toolCallId:a.id,toolName:"code_interpreter",result:{outputs:a.outputs}});break}}let u={openai:{responseId:i.id}};return o.length>0&&u.openai&&(u.openai.logprobs=o),typeof i.service_tier=="string"&&u.openai&&(u.openai.serviceTier=i.service_tier),{content:m,finishReason:te({finishReason:i.incomplete_details?.reason,hasFunctionCall:C}),usage:{inputTokens:{total:i.usage.input_tokens,noCache:i.usage.input_tokens!==void 0&&i.usage.input_tokens_details?.cached_tokens!==void 0?i.usage.input_tokens-(i.usage.input_tokens_details?.cached_tokens??0):void 0,cacheRead:i.usage.input_tokens_details?.cached_tokens??void 0,cacheWrite:void 0},outputTokens:{total:i.usage.output_tokens,text:void 0,reasoning:i.usage.output_tokens_details?.reasoning_tokens??void 0},raw:i.usage},request:{body:b},response:{id:i.id,timestamp:new Date(i.created_at*1e3),modelId:i.model,headers:p,body:d},providerMetadata:u,warnings:_}}async doStream(r){let{args:b,warnings:_,webSearchToolName:k}=await this.getArgs(r),{responseHeaders:h,value:p}=await postJsonToApi({url:this.config.url({path:"/responses",modelId:this.modelId}),headers:combineHeaders(this.config.headers(),r.headers),body:{...b,stream:true},failedResponseHandler:X,successfulResponseHandler:createEventSourceResponseHandler(vt),abortSignal:r.abortSignal,fetch:this.config.fetch}),i={unified:"other",raw:void 0},d={inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0}},m=[],o=null,C={},u=false,a={},s=null,c=null,g;return {stream:p.pipeThrough(new TransformStream({start(I){I.enqueue({type:"stream-start",warnings:_});},transform(I,l){if(r.includeRawChunks&&l.enqueue({type:"raw",rawValue:I.rawValue}),!I.success){i={unified:"error",raw:void 0},l.enqueue({type:"error",error:I.error});return}let t=I.value;if(Le(t))t.item.type==="function_call"?(C[t.output_index]={toolName:t.item.name,toolCallId:t.item.call_id},l.enqueue({type:"tool-input-start",id:t.item.call_id,toolName:t.item.name})):t.item.type==="web_search_call"?(C[t.output_index]={toolName:k??"web_search",toolCallId:t.item.id},l.enqueue({type:"tool-input-start",id:t.item.id,toolName:k??"web_search"})):t.item.type==="computer_call"?(C[t.output_index]={toolName:"computer_use",toolCallId:t.item.id},l.enqueue({type:"tool-input-start",id:t.item.id,toolName:"computer_use"})):t.item.type==="code_interpreter_call"?(C[t.output_index]={toolName:"code_interpreter",toolCallId:t.item.id,codeInterpreter:{containerId:t.item.container_id}},l.enqueue({type:"tool-input-start",id:t.item.id,toolName:"code_interpreter"}),l.enqueue({type:"tool-input-delta",id:t.item.id,delta:`{"containerId":"${t.item.container_id}","code":"`})):t.item.type==="file_search_call"?l.enqueue({type:"tool-call",toolCallId:t.item.id,toolName:"file_search",input:"{}",providerExecuted:true}):t.item.type==="image_generation_call"?l.enqueue({type:"tool-call",toolCallId:t.item.id,toolName:"image_generation",input:"{}",providerExecuted:true}):t.item.type==="message"?(c=t.item.id,l.enqueue({type:"text-start",id:t.item.id,providerMetadata:{openai:{itemId:t.item.id}}})):qt(t)&&(a[t.output_index]={canonicalId:t.item.id,encryptedContent:t.item.encrypted_content,summaryParts:[0]},s=t.output_index,l.enqueue({type:"reasoning-start",id:`${t.item.id}:0`,providerMetadata:{openai:{itemId:t.item.id,reasoningEncryptedContent:t.item.encrypted_content??null}}}));else if(qe(t)){if(t.item.type==="function_call")C[t.output_index]=void 0,u=true,l.enqueue({type:"tool-input-end",id:t.item.call_id}),l.enqueue({type:"tool-call",toolCallId:t.item.call_id,toolName:t.item.name,input:t.item.arguments,providerMetadata:{openai:{itemId:t.item.id}}});else if(t.item.type==="web_search_call")C[t.output_index]=void 0,l.enqueue({type:"tool-input-end",id:t.item.id}),l.enqueue({type:"tool-call",toolCallId:t.item.id,toolName:"web_search",input:JSON.stringify({action:t.item.action}),providerExecuted:true}),l.enqueue({type:"tool-result",toolCallId:t.item.id,toolName:"web_search",result:{status:t.item.status}});else if(t.item.type==="computer_call")C[t.output_index]=void 0,l.enqueue({type:"tool-input-end",id:t.item.id}),l.enqueue({type:"tool-call",toolCallId:t.item.id,toolName:"computer_use",input:"",providerExecuted:true}),l.enqueue({type:"tool-result",toolCallId:t.item.id,toolName:"computer_use",result:{type:"computer_use_tool_result",status:t.item.status||"completed"}});else if(t.item.type==="file_search_call")C[t.output_index]=void 0,l.enqueue({type:"tool-result",toolCallId:t.item.id,toolName:"file_search",result:{queries:t.item.queries,results:t.item.results?.map(y=>({attributes:y.attributes,fileId:y.file_id,filename:y.filename,score:y.score,text:y.text}))??null}});else if(t.item.type==="code_interpreter_call")C[t.output_index]=void 0,l.enqueue({type:"tool-result",toolCallId:t.item.id,toolName:"code_interpreter",result:{outputs:t.item.outputs}});else if(t.item.type==="image_generation_call")l.enqueue({type:"tool-result",toolCallId:t.item.id,toolName:"image_generation",result:{result:t.item.result}});else if(t.item.type==="local_shell_call")C[t.output_index]=void 0,l.enqueue({type:"tool-call",toolCallId:t.item.call_id,toolName:"local_shell",input:JSON.stringify({action:{type:"exec",command:t.item.action.command,timeoutMs:t.item.action.timeout_ms,user:t.item.action.user,workingDirectory:t.item.action.working_directory,env:t.item.action.env}}),providerMetadata:{openai:{itemId:t.item.id}}});else if(t.item.type==="message")c&&(l.enqueue({type:"text-end",id:c}),c=null);else if(Mt(t)){let y=a[t.output_index];if(y){for(let N of y.summaryParts)l.enqueue({type:"reasoning-end",id:`${y.canonicalId}:${N}`,providerMetadata:{openai:{itemId:y.canonicalId,reasoningEncryptedContent:t.item.encrypted_content??null}}});delete a[t.output_index],s===t.output_index&&(s=null);}}}else if(Tt(t)){let y=C[t.output_index];y!=null&&l.enqueue({type:"tool-input-delta",id:y.toolCallId,delta:t.delta});}else if(jt(t))l.enqueue({type:"tool-result",toolCallId:t.item_id,toolName:"image_generation",result:{result:t.partial_image_b64}});else if(At(t)){let y=C[t.output_index];y!=null&&l.enqueue({type:"tool-input-delta",id:y.toolCallId,delta:JSON.stringify(t.delta).slice(1,-1)});}else if(Pt(t)){let y=C[t.output_index];y!=null&&(l.enqueue({type:"tool-input-delta",id:y.toolCallId,delta:'"}'}),l.enqueue({type:"tool-input-end",id:y.toolCallId}),l.enqueue({type:"tool-call",toolCallId:y.toolCallId,toolName:"code_interpreter",input:JSON.stringify({code:t.code,containerId:y.codeInterpreter.containerId})}));}else if(Rt(t))o=t.response.id,l.enqueue({type:"response-metadata",id:t.response.id,timestamp:new Date(t.response.created_at*1e3),modelId:t.response.model});else if(Ot(t))c||(c=t.item_id,l.enqueue({type:"text-start",id:c,providerMetadata:{openai:{itemId:t.item_id}}})),l.enqueue({type:"text-delta",id:c,delta:t.delta}),r.providerOptions?.openai?.logprobs&&t.logprobs&&m.push(t.logprobs);else if(Nt(t)){let y=s!==null?a[s]:null;y&&t.summary_index>0&&(y.summaryParts.push(t.summary_index),l.enqueue({type:"reasoning-start",id:`${y.canonicalId}:${t.summary_index}`,providerMetadata:{openai:{itemId:y.canonicalId,reasoningEncryptedContent:y.encryptedContent??null}}}));}else if(zt(t)){let y=s!==null?a[s]:null;y&&l.enqueue({type:"reasoning-delta",id:`${y.canonicalId}:${t.summary_index}`,delta:t.delta,providerMetadata:{openai:{itemId:y.canonicalId}}});}else wt(t)?(i=te({finishReason:t.response.incomplete_details?.reason,hasFunctionCall:u}),d={inputTokens:{total:t.response.usage.input_tokens,noCache:t.response.usage.input_tokens!==void 0&&t.response.usage.input_tokens_details?.cached_tokens!==void 0?t.response.usage.input_tokens-(t.response.usage.input_tokens_details?.cached_tokens??0):void 0,cacheRead:t.response.usage.input_tokens_details?.cached_tokens??void 0,cacheWrite:void 0},outputTokens:{total:t.response.usage.output_tokens,text:void 0,reasoning:t.response.usage.output_tokens_details?.reasoning_tokens??void 0},raw:t.response.usage},typeof t.response.service_tier=="string"&&(g=t.response.service_tier)):Lt(t)?t.annotation.type==="url_citation"?l.enqueue({type:"source",sourceType:"url",id:generateId(),url:t.annotation.url,title:t.annotation.title}):t.annotation.type==="file_citation"&&l.enqueue({type:"source",sourceType:"document",id:generateId(),mediaType:"text/plain",title:t.annotation.quote??t.annotation.filename??"Document",filename:t.annotation.filename??t.annotation.file_id}):Et(t)&&l.enqueue({type:"error",error:t});},flush(I){c&&(I.enqueue({type:"text-end",id:c}),c=null);let l={openai:{responseId:o}};m.length>0&&(l.openai.logprobs=m),g!==void 0&&(l.openai.serviceTier=g),I.enqueue({type:"finish",finishReason:i,usage:d,providerMetadata:l});}})),request:{body:b},response:{headers:h}}}},Pe=z.object({input_tokens:z.number(),input_tokens_details:z.object({cached_tokens:z.number().nullish()}).nullish(),output_tokens:z.number(),output_tokens_details:z.object({reasoning_tokens:z.number().nullish()}).nullish()}),ct=z.object({type:z.literal("response.output_text.delta"),item_id:z.string(),delta:z.string(),logprobs:Ae.nullish()}),mt=z.object({type:z.literal("error"),code:z.string(),message:z.string(),param:z.string().nullish(),sequence_number:z.number()}),gt=z.object({type:z.enum(["response.completed","response.incomplete"]),response:z.object({incomplete_details:z.object({reason:z.string()}).nullish(),usage:Pe,service_tier:z.string().nullish()})}),ft=z.object({type:z.literal("response.created"),response:z.object({id:z.string(),created_at:z.number(),model:z.string(),service_tier:z.string().nullish()})}),ht=z.object({type:z.literal("response.output_item.added"),output_index:z.number(),item:z.discriminatedUnion("type",[z.object({type:z.literal("message"),id:z.string()}),z.object({type:z.literal("reasoning"),id:z.string(),encrypted_content:z.string().nullish()}),z.object({type:z.literal("function_call"),id:z.string(),call_id:z.string(),name:z.string(),arguments:z.string()}),z.object({type:z.literal("web_search_call"),id:z.string(),status:z.string(),action:z.object({type:z.literal("search"),query:z.string().optional()}).nullish()}),z.object({type:z.literal("computer_call"),id:z.string(),status:z.string()}),z.object({type:z.literal("file_search_call"),id:z.string()}),z.object({type:z.literal("image_generation_call"),id:z.string()}),z.object({type:z.literal("code_interpreter_call"),id:z.string(),container_id:z.string(),code:z.string().nullable(),outputs:z.array(z.discriminatedUnion("type",[z.object({type:z.literal("logs"),logs:z.string()}),z.object({type:z.literal("image"),url:z.string()})])).nullable(),status:z.string()})])}),yt=z.object({type:z.literal("response.output_item.done"),output_index:z.number(),item:z.discriminatedUnion("type",[z.object({type:z.literal("message"),id:z.string()}),z.object({type:z.literal("reasoning"),id:z.string(),encrypted_content:z.string().nullish()}),z.object({type:z.literal("function_call"),id:z.string(),call_id:z.string(),name:z.string(),arguments:z.string(),status:z.literal("completed")}),we,Te,Oe,Me,Re,z.object({type:z.literal("computer_call"),id:z.string(),status:z.literal("completed")})])}),_t=z.object({type:z.literal("response.function_call_arguments.delta"),item_id:z.string(),output_index:z.number(),delta:z.string()}),bt=z.object({type:z.literal("response.image_generation_call.partial_image"),item_id:z.string(),output_index:z.number(),partial_image_b64:z.string()}),Ct=z.object({type:z.literal("response.code_interpreter_call_code.delta"),item_id:z.string(),output_index:z.number(),delta:z.string()}),kt=z.object({type:z.literal("response.code_interpreter_call_code.done"),item_id:z.string(),output_index:z.number(),code:z.string()}),It=z.object({type:z.literal("response.output_text.annotation.added"),annotation:z.discriminatedUnion("type",[z.object({type:z.literal("url_citation"),url:z.string(),title:z.string()}),z.object({type:z.literal("file_citation"),file_id:z.string(),filename:z.string().nullish(),index:z.number().nullish(),start_index:z.number().nullish(),end_index:z.number().nullish(),quote:z.string().nullish()})])}),St=z.object({type:z.literal("response.reasoning_summary_part.added"),item_id:z.string(),summary_index:z.number()}),xt=z.object({type:z.literal("response.reasoning_summary_text.delta"),item_id:z.string(),summary_index:z.number(),delta:z.string()}),vt=z.union([ct,gt,ft,ht,yt,_t,bt,Ct,kt,It,St,xt,mt,z.object({type:z.string()}).loose()]);function Ot(n){return n.type==="response.output_text.delta"}function qe(n){return n.type==="response.output_item.done"}function Mt(n){return qe(n)&&n.item.type==="reasoning"}function wt(n){return n.type==="response.completed"||n.type==="response.incomplete"}function Rt(n){return n.type==="response.created"}function Tt(n){return n.type==="response.function_call_arguments.delta"}function jt(n){return n.type==="response.image_generation_call.partial_image"}function At(n){return n.type==="response.code_interpreter_call_code.delta"}function Pt(n){return n.type==="response.code_interpreter_call_code.done"}function Le(n){return n.type==="response.output_item.added"}function qt(n){return Le(n)&&n.item.type==="reasoning"}function Lt(n){return n.type==="response.output_text.annotation.added"}function Nt(n){return n.type==="response.reasoning_summary_part.added"}function zt(n){return n.type==="response.reasoning_summary_text.delta"}function Et(n){return n.type==="error"}function Ft(n){let r=n.startsWith("o3")||n.startsWith("o4-mini")||n.startsWith("gpt-5")&&!n.startsWith("gpt-5-chat"),b=n.startsWith("gpt-4")||n.startsWith("gpt-5-mini")||n.startsWith("gpt-5")&&!n.startsWith("gpt-5-nano")&&!n.startsWith("gpt-5-chat")||n.startsWith("o3")||n.startsWith("o4-mini"),_={requiredAutoTruncation:false,systemMessageMode:"system",supportsFlexProcessing:r,supportsPriorityProcessing:b};return n.startsWith("gpt-5-chat")?{..._,isReasoningModel:false}:n.startsWith("o")||n.startsWith("gpt-5")||n.startsWith("codex-")||n.startsWith("computer-use")?n.startsWith("o1-mini")||n.startsWith("o1-preview")?{..._,isReasoningModel:true,systemMessageMode:"remove"}:{..._,isReasoningModel:true,systemMessageMode:"developer"}:{..._,isReasoningModel:false}}var Dt=z.object({include:z.array(z.enum(["reasoning.encrypted_content","file_search_call.results","message.output_text.logprobs"])).nullish(),instructions:z.string().nullish(),logprobs:z.union([z.boolean(),z.number().min(1).max(je)]).optional(),maxToolCalls:z.number().nullish(),metadata:z.any().nullish(),parallelToolCalls:z.boolean().nullish(),previousResponseId:z.string().nullish(),promptCacheKey:z.string().nullish(),reasoningEffort:z.string().nullish(),reasoningSummary:z.string().nullish(),safetyIdentifier:z.string().nullish(),serviceTier:z.enum(["auto","flex","priority"]).nullish(),store:z.boolean().nullish(),strictJsonSchema:z.boolean().nullish(),textVerbosity:z.enum(["low","medium","high"]).nullish(),user:z.string().nullish()});var Ut="0.1.0";function Ne(n={}){let r=withoutTrailingSlash(n.baseURL??"https://api.openai.com/v1");if(!r)throw new Error("baseURL is required");let b={...n.apiKey&&{Authorization:`Bearer ${n.apiKey}`},...n.headers},_=()=>withUserAgentSuffix(b,`ai-sdk/openai-compatible/${Ut}`),k=d=>new J(d,{provider:`${n.name??"openai-compatible"}.chat`,headers:_,url:({path:m})=>`${r}${m}`,fetch:n.fetch}),h=d=>new B(d,{provider:`${n.name??"openai-compatible"}.responses`,headers:_,url:({path:m})=>`${r}${m}`,fetch:n.fetch}),p=d=>k(d),i=function(d){return k(d)};return i.languageModel=p,i.chat=k,i.responses=h,i}var $t=Ne();
|
|
2
|
+
export{Ne as createOpenaiCompatible,$t as openaiCompatible};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import {a as a$2}from'./chunk-QJ6QTASU.mjs';import {e}from'./chunk-M3K32WJV.mjs';import'./chunk-KY3H2HGJ.mjs';import'./chunk-ZBRXNYEM.mjs';import'./chunk-CVTJJBGW.mjs';import'./chunk-IHHFG47N.mjs';import'./chunk-DEZT7DOH.mjs';import'./chunk-AAJAKVQY.mjs';import'./chunk-ARCMKYQI.mjs';import {a as a$1}from'./chunk-EEWP2VV6.mjs';import'./chunk-GMEJX6PC.mjs';import'./chunk-KLJ7PPSA.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-I7A5JGO5.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-I6MBTO75.mjs';import'./chunk-2RSIOAZV.mjs';import {c,d}from'./chunk-X6ISXWBN.mjs';import {PKG}from'@easbot/utils';var v=a.create({service:"debug.config"});function k(g,s){g.command("config").description(a$1("debug.config.command.describe")).action(async()=>{v.debug("Loading configuration");try{let r=await s.sdk.config.get();console.log(JSON.stringify(r.data,null,2));}catch(r){v.error("Failed to load configuration",{error:r instanceof Error?r.message:String(r)}),console.error(e(a$1("debug.config.error.load_failed",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});}var l=a.create({service:"debug.file"});function F(g,s){let n=g.command("file").description(a$1("debug.file.command.describe"));n.command("search <query>").description(a$1("debug.file.search.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{File:t}=await import('./file-KEMX6XWX.mjs');l.debug("Searching files",{query:r});try{let o=await t.search({query:r});console.log(o.join(`
|
|
2
|
+
`));}catch(o){l.error("File search failed",{query:r,error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("debug.file.search.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("read <path>").description(a$1("debug.file.read.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{File:t}=await import('./file-KEMX6XWX.mjs');l.debug("Reading file",{path:r});try{let o=await t.read(r);console.log(JSON.stringify(o,null,2));}catch(o){l.error("File read failed",{path:r,error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("debug.file.read.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("status").description(a$1("debug.file.status.command.describe")).action(async()=>{await a$2(s.config.directory,async()=>{let{File:r}=await import('./file-KEMX6XWX.mjs');l.debug("Getting file status");try{let t=await r.status();console.log(JSON.stringify(t,null,2));}catch(t){l.error("File status failed",{error:t instanceof Error?t.message:String(t)}),console.error(e(a$1("debug.file.status.error",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}});}),n.command("list <path>").description(a$1("debug.file.list.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{File:t}=await import('./file-KEMX6XWX.mjs');l.debug("Listing files",{path:r});try{let o=await t.list(r);console.log(JSON.stringify(o,null,2));}catch(o){l.error("File list failed",{path:r,error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("debug.file.list.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("tree [dir]").description(a$1("debug.file.tree.command.describe")).option("--limit <number>",a$1("debug.file.tree.option.limit.description")).action(async(r,t)=>{await a$2(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-E3GWWA2V.mjs'),{Instance:p}=await import('./instance-YUOFE3Q3.mjs');l.debug("Showing file tree",{dir:r});try{let i=await o.tree({cwd:r||p.directory,limit:t?.limit||200});console.log(JSON.stringify(i,null,2));}catch(i){l.error("File tree failed",{dir:r,error:i instanceof Error?i.message:String(i)}),console.error(e(a$1("debug.file.tree.error",{vars:{error:i instanceof Error?i.message:String(i)}}))),process.exit(1);}});});}var u=a.create({service:"debug.lsp"});function x(g,s){let n=g.command("lsp").description(a$1("debug.lsp.command.describe"));n.command("diagnostics <file>").description(a$1("debug.lsp.diagnostics.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{LSP:t}=await import('./lsp-YNF5BCPV.mjs');u.debug("Getting diagnostics",{file:r});try{await t.touchFile(r,!0),await PKG.sleep(1e3);let o=await t.diagnostics();console.log(JSON.stringify(o,null,2));}catch(o){u.error("Failed to get diagnostics",{file:r,error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("debug.lsp.diagnostics.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("symbols <query>").description(a$1("debug.lsp.symbols.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{LSP:t}=await import('./lsp-YNF5BCPV.mjs');u.debug("Searching workspace symbols",{query:r});try{var o=[];try{let d=c(o,a.Default.time("symbols"));let h=await t.workspaceSymbol(r);console.log(JSON.stringify(h,null,2));}catch(p){var i=p,S=!0;}finally{d(o,i,S);}}catch(d){u.error("Failed to search symbols",{query:r,error:d instanceof Error?d.message:String(d)}),console.error(e(a$1("debug.lsp.symbols.error",{vars:{error:d instanceof Error?d.message:String(d)}}))),process.exit(1);}});}),n.command("document-symbols <file>").description(a$1("debug.lsp.document_symbols.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{LSP:t}=await import('./lsp-YNF5BCPV.mjs');u.debug("Getting document symbols",{file:r});try{var o=[];try{let d=c(o,a.Default.time("document-symbols"));let h=await t.documentSymbol({file:r});console.log(JSON.stringify(h,null,2));}catch(p){var i=p,S=!0;}finally{d(o,i,S);}}catch(d){u.error("Failed to get document symbols",{file:r,error:d instanceof Error?d.message:String(d)}),console.error(e(a$1("debug.lsp.document_symbols.error",{vars:{error:d instanceof Error?d.message:String(d)}}))),process.exit(1);}});});}var y=a.create({service:"debug.ripgrep"});function L(g,s){let n=g.command("rg").description(a$1("debug.ripgrep.command.describe"));n.command("tree").description(a$1("debug.ripgrep.tree.command.describe")).option("--limit <number>",a$1("debug.ripgrep.tree.option.limit.description")).action(async(r,t)=>{await a$2(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-E3GWWA2V.mjs'),{Instance:p}=await import('./instance-YUOFE3Q3.mjs');y.debug("Showing file tree",{limit:t?.limit});try{let i=await o.tree({cwd:p.directory,limit:t?.limit});console.log(i);}catch(i){y.error("File tree failed",{error:i instanceof Error?i.message:String(i)}),console.error(e(a$1("debug.ripgrep.tree.error",{vars:{error:i instanceof Error?i.message:String(i)}}))),process.exit(1);}});}),n.command("files").description(a$1("debug.ripgrep.files.command.describe")).option("--query <string>",a$1("debug.ripgrep.files.option.query.description")).option("--glob <string>",a$1("debug.ripgrep.files.option.glob.description")).option("--limit <number>",a$1("debug.ripgrep.files.option.limit.description")).action(async(r,t)=>{await a$2(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-E3GWWA2V.mjs'),{Instance:p}=await import('./instance-YUOFE3Q3.mjs');y.debug("Listing files",{query:t?.query,glob:t?.glob,limit:t?.limit});try{let i=[];for await(let S of o.files({cwd:p.directory,glob:t?.glob?[t.glob]:void 0}))if(i.push(S),t?.limit&&i.length>=t.limit)break;console.log(i.join(`
|
|
3
|
+
`));}catch(i){y.error("File listing failed",{error:i instanceof Error?i.message:String(i)}),console.error(e(a$1("debug.ripgrep.files.error",{vars:{error:i instanceof Error?i.message:String(i)}}))),process.exit(1);}});}),n.command("search <pattern>").description(a$1("debug.ripgrep.search.command.describe")).option("--glob <glob...>",a$1("debug.ripgrep.search.option.glob.description")).option("--limit <number>",a$1("debug.ripgrep.search.option.limit.description")).action(async(r,t)=>{await a$2(s.config.directory,async()=>{let{Ripgrep:o}=await import('./ripgrep-E3GWWA2V.mjs'),{Instance:p}=await import('./instance-YUOFE3Q3.mjs');y.debug("Searching files",{pattern:r,glob:t?.glob,limit:t?.limit});try{let i=await o.search({cwd:p.directory,pattern:r,glob:t?.glob,limit:t?.limit});console.log(JSON.stringify(i,null,2));}catch(i){y.error("Search failed",{pattern:r,error:i instanceof Error?i.message:String(i)}),console.error(e(a$1("debug.ripgrep.search.error",{vars:{error:i instanceof Error?i.message:String(i)}}))),process.exit(1);}});});}var G=a.create({service:"debug.scrap"});function P(g,s){g.command("scrap").description(a$1("debug.scrap.command.describe")).action(async()=>{G.debug("Listing projects");let r=await s.sdk.project.list();console.log(JSON.stringify(r.data,null,2));});}var O=a.create({service:"debug.skill"});function J(g,s){g.command("skill").description(a$1("debug.skill.command.describe")).action(async()=>{O.debug("Listing skills");try{let r=await s.sdk.app.skills();console.log(JSON.stringify(r.data,null,2));}catch(r){O.error("Failed to list skills",{error:r instanceof Error?r.message:String(r)}),console.error(e(a$1("debug.skill.error.list_failed",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});}var w=a.create({service:"debug.snapshot"});function N(g,s){let n=g.command("snapshot").description(a$1("debug.snapshot.command.describe"));n.command("track").description(a$1("debug.snapshot.track.command.describe")).action(async()=>{await a$2(s.config.directory,async()=>{let{Snapshot:r}=await import('./snapshot-V23GRQBM.mjs');w.debug("Tracking snapshot");try{let t=await r.track();console.log(t);}catch(t){w.error("Snapshot track failed",{error:t instanceof Error?t.message:String(t)}),console.error(e(a$1("debug.snapshot.track.error",{vars:{error:t instanceof Error?t.message:String(t)}}))),process.exit(1);}});}),n.command("patch <hash>").description(a$1("debug.snapshot.patch.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{Snapshot:t}=await import('./snapshot-V23GRQBM.mjs');w.debug("Getting snapshot patch",{hash:r});try{let o=await t.patch(r);console.log(o);}catch(o){w.error("Snapshot patch failed",{hash:r,error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("debug.snapshot.patch.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});}),n.command("diff <hash>").description(a$1("debug.snapshot.diff.command.describe")).action(async r=>{await a$2(s.config.directory,async()=>{let{Snapshot:t}=await import('./snapshot-V23GRQBM.mjs');w.debug("Getting snapshot diff",{hash:r});try{let o=await t.diff(r);console.log(o);}catch(o){w.error("Snapshot diff failed",{hash:r,error:o instanceof Error?o.message:String(o)}),console.error(e(a$1("debug.snapshot.diff.error",{vars:{error:o instanceof Error?o.message:String(o)}}))),process.exit(1);}});});}a.create({service:"debug"});function Nr(g,s){let n=g.command("debug").description(a$1("debug.command.description"));k(n,s),F(n,s),x(n,s),L(n,s),P(n,s),J(n,s),N(n,s),n.command("agent <name>").description(a$1("debug.agent.command.describe")).option("--tool <tool-id>",a$1("debug.agent.option.tool.description")).option("--params <json>",a$1("debug.agent.option.params.description")).action(async(r,t)=>{let{registerAgentCommand:o}=await import('./agent-4EMYYWV6.mjs');o(s,r,t);}),n.command("paths").description(a$1("debug.paths.command.describe")).action(async()=>{let{Global:r}=await import('./global-KAF6JHVQ.mjs');for(let[t,o]of Object.entries(r.Path))console.log(`${t.padEnd(10)}${o}`);}),n.command("wait").description(a$1("debug.wait.command.describe")).action(async()=>{await a$2(s.config.directory,async()=>{await new Promise(r=>setTimeout(r,1e3*60*60*24));});});}export{Nr as registerDebugCommands};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{c as TuiEvent}from'./chunk-DEZT7DOH.mjs';import'./chunk-CJTCCLW4.mjs';import'./chunk-LFYBZHOI.mjs';import'./chunk-X6ISXWBN.mjs';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import {e,h}from'./chunk-M3K32WJV.mjs';import {a as a$1}from'./chunk-EEWP2VV6.mjs';import {a}from'./chunk-LFYBZHOI.mjs';import'./chunk-X6ISXWBN.mjs';var n=a.create({service:"cli-command-export"});function S(p,i){p.command("export [sessionID]").description(a$1("export.command.description")).action(async o=>{n.debug("Exporting session",{sessionId:o});try{if(!o){let{data:e$1}=await i.sdk.session.list({});(!e$1||e$1.length===0)&&(console.error(e(a$1("export.error.no_sessions"))),process.exit(1));let a=[...e$1].sort((f,l)=>l.time.updated-f.time.updated)[0];a||(console.error(e(a$1("export.error.no_sessions"))),process.exit(1)),o=a.id,n.debug("Using latest session",{sessionId:o});}console.log(h(a$1("export.exporting",{vars:{sessionId:o}})));let{data:r}=await i.sdk.session.get({sessionID:o}),{data:c}=await i.sdk.session.messages({sessionID:o}),g={info:r,messages:(c??[]).map(e=>({info:e.info,parts:e.parts}))};console.log(JSON.stringify(g,null,2)),n.debug("Session exported successfully",{sessionId:o});}catch(r){n.error("Failed to export session",{sessionId:o,error:r instanceof Error?r.message:String(r)}),console.error(e(a$1("export.error.failed",{vars:{error:r instanceof Error?r.message:String(r)}}))),process.exit(1);}});}export{S as registerExportCommand};
|