zen-code 4.7.3 → 4.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.js +271 -0
- package/dist/chunk-0fhpz98a.js +2 -0
- package/dist/chunk-15smn69q.js +31 -0
- package/dist/chunk-3ep2tag7.js +2 -0
- package/dist/chunk-3jek9sxm.js +2 -0
- package/dist/chunk-3n2b4eb4.js +2 -0
- package/dist/chunk-3znrwnd8.js +1 -0
- package/dist/chunk-4b8yaknt.js +1 -0
- package/dist/chunk-5fqt5yg1.js +81 -0
- package/dist/chunk-5nzs0q25.js +1 -0
- package/dist/chunk-5wn1nfqy.js +6 -0
- package/dist/chunk-6ty22kkt.js +4 -0
- package/dist/chunk-70a0e941.js +1 -0
- package/dist/chunk-7dp8kq2f.js +2 -0
- package/dist/chunk-8nhayyat.js +1 -0
- package/dist/chunk-9k57afdm.js +2 -0
- package/dist/chunk-9kc9cea3.js +7 -0
- package/dist/chunk-bgpcx3bm.js +2 -0
- package/dist/chunk-bjywwcgn.js +26 -0
- package/dist/chunk-c9q11tk2.js +88 -0
- package/dist/chunk-cga0m5sy.js +1 -0
- package/dist/chunk-cze71w02.js +2 -0
- package/dist/chunk-czz2fs2w.js +7 -0
- package/dist/chunk-dh3jz71n.js +1 -0
- package/dist/chunk-e0sqjq2h.js +1 -0
- package/dist/chunk-efhkdw2z.js +1 -0
- package/dist/chunk-ew7249h9.js +1 -0
- package/dist/chunk-h5nnz4dy.js +1 -0
- package/dist/chunk-hww94vjn.js +1 -0
- package/dist/chunk-j1n8jp1w.js +253 -0
- package/dist/chunk-j204fejq.js +1 -0
- package/dist/chunk-jkbtx9va.js +2 -0
- package/dist/chunk-k67epfhc.js +1 -0
- package/dist/chunk-kbs4px1b.js +6 -0
- package/dist/chunk-keqk70wm.js +2 -0
- package/dist/chunk-kxk71nn0.js +1 -0
- package/dist/chunk-mg8zpgaz.js +1 -0
- package/dist/chunk-n1d8xx5k.js +2 -0
- package/dist/chunk-ndtwq2zx.js +2 -0
- package/dist/chunk-pdkbrds7.js +1 -0
- package/dist/chunk-q8arjxg1.js +23 -0
- package/dist/chunk-rdc9pxf6.js +1 -0
- package/dist/chunk-rrkzfahh.js +91 -0
- package/dist/chunk-s3fyfrka.js +2 -0
- package/dist/chunk-sft6ep0c.js +310 -0
- package/dist/chunk-vc384abg.js +3 -0
- package/dist/chunk-vjj00e3e.js +6 -0
- package/dist/chunk-vkng13p1.js +424 -0
- package/dist/chunk-wbn1hbxf.js +1 -0
- package/dist/chunk-wwn7gw8g.js +274 -0
- package/dist/chunk-yaa4eesd.js +2 -0
- package/dist/chunk-yvhq458c.js +25 -0
- package/dist/cli.js +2 -0
- package/dist/nonInteractive.js +4 -0
- package/dist/zen-keyboard.js +3 -0
- package/package.json +88 -87
- package/LICENSE +0 -201
- package/dist/FileSystemPluginStore-ChortK7z.mjs +0 -64
- package/dist/FileSystemSkillStore-Dl5briBv.mjs +0 -108
- package/dist/MultiLineTextInput-CL8nm9nv.mjs +0 -24492
- package/dist/_commonjsHelpers-DQNKXVTB.mjs +0 -33
- package/dist/app-CK3nD8Gj.mjs +0 -22428
- package/dist/checkpoint-C5AFBYE--CczNxXBB.mjs +0 -355
- package/dist/checkpoint-DxiUsHMy-B5iaccT2.mjs +0 -394
- package/dist/cli.mjs +0 -57
- package/dist/devtools-CzaVuYnh.mjs +0 -2667
- package/dist/graphBuilder-DJoMXf6J.mjs +0 -28909
- package/dist/index-BPG5Np-8.mjs +0 -144
- package/dist/index-Dxfhvdx8.mjs +0 -23
- package/dist/index-F6_SKYUd.mjs +0 -463
- package/dist/load-iYJqYrjn.mjs +0 -119
- package/dist/memories-CaHDnBK1.mjs +0 -115
- package/dist/metadata-XVTVXthy.mjs +0 -6
- package/dist/nonInteractive.mjs +0 -55
- package/dist/pg-adapter-BFtir1GE-BbUXBpaX.mjs +0 -60
- package/dist/queue-DySatFkr-CG2GdO4P.mjs +0 -106
- package/dist/remote-threads-CrG03ZS7-C9duTCnB.mjs +0 -157
- package/dist/shallow-G4eKoZ7M.mjs +0 -331
- package/dist/shallow-checkpoint-BEhTdp7z-DfHxnfoU.mjs +0 -383
- package/dist/sqlite-adapter-oBA95xba-BrBWorSV.mjs +0 -82
- package/dist/subTasks-DNjIN4eU.mjs +0 -18
- package/dist/zen-code.mjs +0 -3
- package/dist/zen-keyboard.mjs +0 -13
package/dist/app.js
ADDED
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import{e as g1,f as KY,g as BZ,i as PZ,j as WY,k as cZ}from"./chunk-ndtwq2zx.js";import{l as zY,m as u,n as d,o as e,p as s0,q as o,r as Y$}from"./chunk-vjj00e3e.js";import"./chunk-s3fyfrka.js";import{A as ZY,B as MZ,C as m1,t as M0,u as B0,v as X2,w as zZ,x as o1,y as $$,z as V2}from"./chunk-5nzs0q25.js";import{D as p0,E as m0}from"./chunk-3jek9sxm.js";import{F as _0,G as SY,H as A0,J as E2,K as y2,L as FZ}from"./chunk-3n2b4eb4.js";import{M as n,N as X$}from"./chunk-keqk70wm.js";import{O as jY,Q as EY,R as t1,T as e1}from"./chunk-9kc9cea3.js";import"./chunk-bgpcx3bm.js";import{aa as dZ,ba as EZ}from"./chunk-kxk71nn0.js";import{ca as T,da as _,ea as K,fa as yY,ga as s1,ia as z0,ja as jZ,ka as qZ,la as M,ma as CZ,oa as K1,qa as e2,ra as n0}from"./chunk-wwn7gw8g.js";import{ya as iY}from"./chunk-j1n8jp1w.js";import{Aa as k0,Ba as lY,Ca as S0,Da as b0,Ea as C0,za as RY}from"./chunk-vkng13p1.js";import"./chunk-bjywwcgn.js";import"./chunk-sft6ep0c.js";import"./chunk-dh3jz71n.js";import"./chunk-yaa4eesd.js";import"./chunk-jkbtx9va.js";import"./chunk-kbs4px1b.js";import"./chunk-9k57afdm.js";import{nb as H,qb as P3,rb as Y1}from"./chunk-cze71w02.js";class W0{renderers=new Map;register(Z,$){this.renderers.set(Z,$)}get(Z){return this.renderers.get(Z)}has(Z){return this.renderers.has(Z)}list(){return Array.from(this.renderers.keys())}unregister(Z){this.renderers.delete(Z)}clear(){this.renderers.clear()}}var eZ;var d1=P3(()=>{eZ=new W0});var gY=H(M(),1),J$=new jY({defaultOptions:{queries:{retry:(Z,$)=>{if($ instanceof TypeError&&$.message.includes("fetch"))return Z<2;return!1},refetchOnWindowFocus:!1,refetchOnMount:!0,refetchOnReconnect:!1,staleTime:300000,gcTime:600000,networkMode:"online"},mutations:{retry:1,networkMode:"online"}}});function VY({children:Z}){return gY.jsxDEV(EY,{client:J$,children:Z},void 0,!1,void 0,this)}var pY={async search(Z){let $=Object.entries(g1).map(([Q,W])=>({assistant_id:Q,graph_id:Q,config:{},metadata:{},version:1,name:Q,description:"",created_at:new Date().toISOString(),updated_at:new Date().toISOString()}));if(Z?.graphId)$=$.filter((Q)=>Q.graph_id===Z.graphId);if(Z?.metadata&&Object.keys(Z.metadata).length>0)$=$.filter((Q)=>{return Object.entries(Z.metadata).every(([W,O])=>{return Q.metadata&&Q.metadata[W]===O})});if(Z?.sortBy)$.sort((Q,W)=>{let O=Q[Z.sortBy],N=W[Z.sortBy],G=O<N?-1:O>N?1:0;return Z.sortOrder==="desc"?-G:G});let Y=Z?.offset??0,X=Z?.limit;return X?$.slice(Y,Y+X):$.slice(Y)},async count(Z){return(await this.search(Z)).length},async get(Z){if(!Object.entries(g1).find(([Y,X])=>Y===Z))throw Error(`Assistant not found: ${Z}`);return{assistant_id:Z,graph_id:Z,config:{},created_at:new Date().toISOString(),updated_at:new Date().toISOString(),metadata:{},version:1,name:Z,description:""}},async delete(Z){throw Error("Deleting assistants is not supported. Assistants are generated from registered graphs.")},async update(Z,$){throw Error("Updating assistants is not supported. Assistants are generated from registered graphs.")},async getGraph(Z,$){let Y={};return(await(await BZ(Z,Y)).getGraphAsync({...Y,xray:$?.xray??void 0})).toJSON()},async getSchemas(Z){let Y=(await BZ(Z,{})).builder;return console.log(Y),{graph_id:Z,state_schema:Y._inputDefinition,input_schema:Y._inputDefinition,output_schema:Y._outputDefinition,config_schema:Y._configSchema,context_schema:Y._configSchema}},async getVersions(Z,$){let Y=await this.get(Z),X=$?.offset??0,J=$?.limit;return J?[Y].slice(X,X+J):[Y].slice(X)},async setLatest(Z,$){let Y=await this.get(Z);return Y.version=$,Y},async create(Z){if(console.warn("⚠️ Creating assistants is not supported. Assistants are generated from registered graphs. Returning mock data."),!Object.keys(g1).includes(Z.graphId)){if(Z.ifExists==="raise")throw Error(`Graph not found: ${Z.graphId}`)}return{assistant_id:Z.assistantId||Z.graphId,graph_id:Z.graphId,name:Z.name||Z.graphId,description:Z.description||"",metadata:Z.metadata||{},config:Z.config||{},version:1,created_at:new Date().toISOString(),updated_at:new Date().toISOString()}}},QY=()=>{let Z=()=>{return PZ.globalThreadsManager};return{assistants:pY,get threads(){return PZ.globalThreadsManager},runs:{list($,Y){return Z().listRuns($,Y)},async cancel($,Y,X,J){return await PZ.globalMessageQueue.cancelQueue(Y)},async*stream($,Y,X){X.config={...X.config??{},configurable:{...X.config?.configurable??{},graph_id:Y,thread_id:$}};let J=Z();for await(let Q of cZ(J,J.createRun($,Y,X),X,{attempt:0,getGraph:BZ}))yield Q},async*joinStream($,Y,X){let J=X&&typeof X==="object"&&"signal"in X?X:{},Q=(X instanceof AbortSignal?X:J.signal)||new AbortController().signal,W=null,O=null;try{W=await PZ.globalMessageQueue.getQueue(Y);let N=await W.getAll();for(let G of N){if(Q.aborted)return;if(yield{id:G.id,event:G.event,data:G.data},G.event==="__stream_end__"||G.event==="__stream_error__"||G.event==="__stream_cancel__")return}O=W.onDataReceive();for await(let G of O){if(Q.aborted)break;let{event:F,data:U}=G;if(yield{id:G.id,event:F,data:U},G.event==="__stream_end__"||G.event==="__stream_error__"||G.event==="__stream_cancel__")break}}catch(N){if(!(N instanceof Error)||!N.message.includes("does not exist"))console.warn("Join stream failed:",N)}finally{if(O)try{await O.return(void 0)}catch(N){}}}}}};import{entrypoint as NX,getPreviousState as zX,getConfig as UX,Command as FX}from"@langchain/langgraph";import{schemaMetaRegistry as AX}from"@langchain/langgraph/zod";import{z as l}from"zod";var J1=(Z,$)=>Z.constructor.name===$.name,KZ=new Map;KZ.set(l.ZodBoolean.name,()=>!1),KZ.set(l.ZodNumber.name,()=>0),KZ.set(l.ZodString.name,()=>""),KZ.set(l.ZodArray.name,()=>[]),KZ.set(l.ZodRecord.name,()=>({})),KZ.set(l.ZodDefault.name,(Z)=>Z.def.defaultValue),KZ.set(l.ZodPipe.name,(Z)=>k1(Z.def.in)),KZ.set(l.ZodOptional.name,(Z)=>J1(Z.def.innerType,l.ZodDefault)?Z.def.innerType.def.defaultValue:void 0),KZ.set(l.ZodTuple.name,(Z)=>{let $=[];for(let Y of Z.def.items)$.push(k1(Y));return $}),KZ.set(l.ZodPipe.name,(Z)=>k1(Z.def.in)),KZ.set(l.ZodUnion.name,(Z)=>k1(Z.def.options[0])),KZ.set(l.ZodObject.name,(Z)=>Q1(Z)),KZ.set(l.ZodRecord.name,(Z)=>Q1(Z)),KZ.set(l.ZodIntersection.name,(Z)=>Q1(Z));function k1(Z){let $=Z.constructor.name;if(!KZ.has($)){console.warn("getSchemaDefaultForField: Unhandled type",Z.constructor.name);return}return KZ.get($)(Z)}function Q1(Z){if(J1(Z,l.ZodRecord))return{};if(J1(Z,l.ZodPipe))return Q1(Z.def.in);if(J1(Z,l.ZodIntersection))return{...Q1(Z.def.left),...Q1(Z.def.right)};if(J1(Z,l.ZodUnion)){for(let $ of Z.def.options)if(J1($,l.ZodObject))return Q1($);return console.warn("getSchemaDefaultObject: No object found in union, returning empty object"),{}}return J1(Z,l.ZodObject)?Object.fromEntries(Object.entries(Z.shape).map(([$,Y])=>[$,k1(Y)]).filter(($)=>$[1]!==void 0)):(console.warn(`getSchemaDefaultObject: Expected object schema, got ${Z.constructor.name}`),{})}import{tool as MX,HumanMessage as qX}from"langchain";import{z as xZ}from"zod";var PX=xZ.object({task_store:xZ.record(xZ.string(),xZ.any()).default({})}),BX=xZ.object({task_id:xZ.string().optional().describe("The task id to ask the subagent, if not provided, will use the tool call id"),subagent_id:xZ.string(),task_description:xZ.string().describe("Describe the user state and what you want the subagent to do."),data_transfer:xZ.any().optional().describe("Data to transfer to the subagent.")});import z from"zod";var f=QY(),Q$=z.object({thread_id:z.string().optional(),thread_ts:z.string().optional()}).catchall(z.unknown()),w1=z.object({tags:z.array(z.string()).optional(),recursion_limit:z.number().int().optional(),configurable:Q$.optional()}).catchall(z.unknown()).describe("The configuration of an assistant.");z.object({assistant_id:z.string(),graph_id:z.string(),config:w1,created_at:z.string(),updated_at:z.string(),metadata:z.object({}).catchall(z.any())});var hZ=z.object({source:z.union([z.literal("input"),z.literal("loop"),z.literal("update"),z.string()]).optional(),step:z.number().optional(),writes:z.any().nullable().optional(),parents:z.any().optional()}).catchall(z.unknown()),mY=z.object({node:z.string(),input:z.unknown().optional()}),_Y=z.object({update:z.union([z.any(),z.array(z.tuple([z.string(),z.any()]))]).nullable().optional(),resume:z.unknown().optional(),goto:z.union([mY,z.array(mY),z.string(),z.array(z.string())]).optional()});z.object({limit:z.number().int().optional(),offset:z.number().int().optional()});var GZ=z.object({thread_id:z.string()}),T1=z.object({thread_id:z.string(),run_id:z.string()}),K$=z.object({graph_id:z.string().optional(),metadata:hZ.optional(),limit:z.number().int().optional(),offset:z.number().int().optional(),sort_by:z.enum(["assistant_id","graph_id","name","created_at","updated_at"]).optional(),sort_order:z.enum(["asc","desc"]).optional()}),W$=z.object({graph_id:z.string().optional(),metadata:hZ.optional()}),_$=z.object({xray:z.union([z.string(),z.boolean(),z.number()]).optional()}),uY=z.object({name:z.string().optional(),description:z.string().optional(),metadata:hZ.optional(),config:w1.optional()}).optional(),O$=z.object({assistant_id:z.string().optional(),graph_id:z.string().describe("The ID of graph to create an assistant from."),name:z.string().optional(),description:z.string().optional(),metadata:hZ.optional(),config:w1.optional(),if_exists:z.enum(["raise","do_nothing"]).optional()}),G$=z.object({assistant_id:z.union([z.string(),z.string()]),checkpoint_id:z.string().optional(),input:z.any().optional(),command:_Y.optional(),metadata:hZ.optional(),config:w1.optional(),webhook:z.string().optional(),interrupt_before:z.union([z.literal("*"),z.array(z.string())]).optional(),interrupt_after:z.union([z.literal("*"),z.array(z.string())]).optional(),on_disconnect:z.enum(["cancel","continue"]).optional().default("continue"),multitask_strategy:z.enum(["reject","rollback","interrupt","enqueue"]).optional(),stream_mode:z.array(z.enum(["values","messages","messages-tuple","updates","events","debug","custom"])).optional(),stream_subgraphs:z.boolean().optional(),stream_resumable:z.boolean().optional(),after_seconds:z.number().optional(),if_not_exists:z.enum(["create","reject"]).optional(),on_completion:z.enum(["complete","continue"]).optional(),feedback_keys:z.array(z.string()).optional(),langsmith_tracer:z.unknown().optional()}).describe("Payload for creating a stateful run."),N$=z.object({limit:z.coerce.number().int().optional().default(10),offset:z.coerce.number().int().optional().default(0),status:z.enum(["pending","running","error","success","timeout","interrupted"]).optional()}),z$=z.object({wait:z.coerce.boolean().optional().default(!1),action:z.enum(["interrupt","rollback"]).optional().default("interrupt")}),U$=z.object({cancel_on_disconnect:z.coerce.boolean().optional().default(!1),last_event_id:z.string().optional(),stream_mode:z.enum(["values","messages","messages-tuple","updates","events","debug","custom"]).optional()}),F$=z.object({thread_id:z.string().describe("The ID of thread. If not provided, an ID is generated.").optional(),metadata:hZ.optional(),if_exists:z.union([z.literal("raise"),z.literal("do_nothing")]).optional()}).describe("Payload for creating a thread."),cY=z.object({ids:z.array(z.string()).describe("List of thread IDs to include. Others are excluded.").optional(),metadata:hZ.describe("Metadata to search for.").optional(),status:z.enum(["idle","busy","interrupted","error"]).describe("Filter by thread status.").optional(),values:z.any().describe("Filter by thread values.").optional(),limit:z.number().int().gte(1).lte(1000).describe("Maximum number to return.").optional(),offset:z.number().int().gte(0).describe("Offset to start from.").optional(),sort_by:z.enum(["thread_id","status","created_at","updated_at"]).describe("Sort by field.").optional(),sort_order:z.enum(["asc","desc"]).describe("Sort order.").optional(),select:z.array(z.enum(["thread_id","created_at","updated_at","metadata","config","context","status","values","interrupts"])).describe("Specify which fields to return. If not provided, all fields are returned.").optional(),without_details:z.boolean().describe("Whether to return values.").optional()}).describe("Payload for listing threads.");z.object({values:z.union([z.record(z.string(),z.unknown()),z.array(z.record(z.string(),z.unknown()))]).nullish()}).describe("Payload for adding state to a thread.");var H$=z.object({metadata:hZ.optional(),status:z.enum(["idle","busy","interrupted","error"]).optional(),values:z.any().optional()}).describe("Payload for patching a thread."),xY=z.object({assistant_id:z.string(),input:z.any().optional(),command:_Y.optional(),metadata:hZ.optional(),config:w1.optional(),webhook:z.string().optional(),interrupt_before:z.union([z.literal("*"),z.array(z.string())]).optional(),interrupt_after:z.union([z.literal("*"),z.array(z.string())]).optional(),on_disconnect:z.enum(["cancel","continue"]).optional().default("continue"),multitask_strategy:z.enum(["reject","rollback","interrupt","enqueue"]).optional(),stream_mode:z.array(z.enum(["values","messages","messages-tuple","updates","events","debug","custom"])).optional(),stream_subgraphs:z.boolean().optional(),stream_resumable:z.boolean().optional(),after_seconds:z.number().optional(),if_not_exists:z.enum(["create","reject"]).optional(),on_completion:z.enum(["complete","continue"]).optional(),feedback_keys:z.array(z.string()).optional(),langsmith_tracer:z.unknown().optional()}).describe("Payload for creating a run (background/wait)."),A$=z.object({cancel_on_disconnect:z.coerce.boolean().optional().default(!1)}),L$=z.object({cancel_on_disconnect:z.coerce.boolean().optional().default(!1)}),p1=z.object({assistant_id:z.string().describe("The assistant ID or graph name to run."),input:z.any().optional().describe("The input to the graph."),command:_Y.optional(),metadata:hZ.optional().describe("Metadata to assign to the run."),config:w1.optional(),context:z.object({}).catchall(z.any()).optional().describe("Static context added to the assistant."),webhook:z.string().optional(),interrupt_before:z.union([z.literal("*"),z.array(z.string())]).optional(),interrupt_after:z.union([z.literal("*"),z.array(z.string())]).optional(),stream_mode:z.union([z.enum(["values","messages","messages-tuple","tasks","checkpoints","updates","events","debug","custom"]),z.array(z.enum(["values","messages","messages-tuple","tasks","checkpoints","updates","events","debug","custom"]))]).optional().default(["values"]),feedback_keys:z.array(z.string()).optional(),stream_subgraphs:z.boolean().optional().default(!1),stream_resumable:z.boolean().optional().default(!1)}).describe("Payload for creating a stateless run."),w$=z.array(p1).min(1).describe("Payload for creating a batch of stateless runs."),M$=z.object({action:z.enum(["interrupt","rollback"]).optional().default("interrupt").describe("Action to take when cancelling the run."),wait:z.coerce.boolean().optional().default(!1)}),q$=z.union([z.object({status:z.enum(["pending","running","all"]).describe("Filter runs by status to cancel.")}),z.object({thread_id:z.string().describe("The ID of the thread containing runs to cancel.")}),z.object({run_ids:z.array(z.string()).min(1).describe("List of run IDs to cancel.")})]);function i(Z,$){let Y=$.split("/").filter((Q)=>Q),X=new URL(Z).pathname.split("/").filter((Q)=>Q),J={};return Y.forEach((Q,W)=>{if(Q.startsWith(":")){let O=Q.slice(1);J[O]=X[W]}}),J}function bZ(Z){let $=new URL(Z).searchParams,Y={};return $.forEach((X,J)=>{if(!isNaN(Number(X))&&X!=="")Y[J]=Number(X);else if(X==="true"||X==="false")Y[J]=X==="true";else Y[J]=X}),Y}function C(Z,$){let Y=Z.safeParse($);if(!Y.success)throw new OY(Y.error.issues);return Y.data}class OY extends Error{errors;constructor(Z){super("Validation failed");this.name="ValidationError",this.errors=Z}}function h(Z,$=200,Y){return new Response(JSON.stringify(Z),{status:$,headers:{"Content-Type":"application/json",...Y}})}function I(Z,$=500){if(Z instanceof OY)return h({error:"Validation Error",details:Z.errors},400);return h({error:Z instanceof Error?Z.message:"Unknown error"},$)}function GY(Z){let $,Y=!1,X=new AbortController,J=new ReadableStream({async start(Q){$=Q;let W=new TextEncoder,O={signal:X.signal,writeSSE:async({data:N,event:G,id:F})=>{if(Y||X.signal.aborted)return;try{let U="";if(F)U+=`id: ${F}
|
|
2
|
+
`;if(G)U+=`event: ${G}
|
|
3
|
+
`;U+=`data: ${N}
|
|
4
|
+
|
|
5
|
+
`,$.enqueue(W.encode(U))}catch(U){if(!Y&&!X.signal.aborted)throw U}},close:()=>{if(!Y){Y=!0;try{$.close()}catch(N){}}}};try{await Z(O)}catch(N){if(!X.signal.aborted)console.error("SSE stream error:",N)}finally{if(!Y){Y=!0;try{$.close()}catch(N){}}}},cancel(){if(Y=!0,!X.signal.aborted)X.abort("Client disconnected")}});return new Response(J,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}function NY(Z,$=process.env.HEARTBEAT_INTERVAL?parseInt(process.env.HEARTBEAT_INTERVAL):1500){return async(Y)=>{let X=null,J=!1,Q=()=>{if(X)clearInterval(X),X=null},W=()=>{Q(),X=setInterval(async()=>{if(Y.signal.aborted||J){Q();return}try{await Y.writeSSE({event:"ping",data:"{}"})}catch(G){Q()}},$)},O=()=>{Q()};Y.signal.addEventListener("abort",O);let N={signal:Y.signal,writeSSE:async(G)=>{if(Y.signal.aborted)return;if(Q(),await Y.writeSSE(G),!Y.signal.aborted)W()},close:()=>{Q(),Y.close()}};W();try{await Z(N)}finally{J=!0,Q(),Y.signal.removeEventListener("abort",O)}}}async function R$(Z,$){try{let Y=await Z.json(),X=C(K$,Y),J=await f.assistants.search(e(X));return h(J,200,{"X-Pagination-Total":"0"})}catch(Y){return I(Y)}}async function P$(Z,$){try{let Y=await Z.json(),X=C(W$,Y),J=await f.assistants.count(e(X));return h(J)}catch(Y){return I(Y)}}async function B$(Z,$){try{let J=new URL(Z.url).pathname.split("/").filter((W)=>W)[1],Q=await f.assistants.get(J);return h(Q)}catch(Y){return I(Y)}}async function b$(Z,$){try{let J=new URL(Z.url).pathname.split("/").filter((Q)=>Q)[1];return await f.assistants.delete(J),h({})}catch(Y){return I(Y)}}async function v$(Z,$){try{let J=new URL(Z.url).pathname.split("/").filter((N)=>N)[1],Q=await Z.json(),W=C(uY,Q),O=await f.assistants.update(J,e(W));return h(O)}catch(Y){return I(Y)}}async function C$(Z,$){try{let J=new URL(Z.url).pathname.split("/").filter((N)=>N)[1],Q=bZ(Z.url),{xray:W}=C(_$,Q),O=await f.assistants.getGraph(J,{xray:W!==void 0?W==="true":void 0});return h(O)}catch(Y){return I(Y)}}async function I$(Z,$){return I({},501)}async function S$(Z,$){return I({},501)}async function f$(Z,$){try{let J=new URL(Z.url).pathname.split("/").filter((W)=>W)[1],Q=await f.assistants.getSchemas(J);return h(Q)}catch(Y){return I(Y)}}async function k$(Z,$){try{let J=new URL(Z.url).pathname.split("/").filter((N)=>N)[1],Q=await Z.json(),W=C(uY,Q),O=await f.assistants.getVersions(J,e(W));return h(O)}catch(Y){return I(Y)}}async function T$(Z,$){try{let J=new URL(Z.url).pathname.split("/").filter((N)=>N)[1],Q=bZ(Z.url),W=Q.version?parseInt(Q.version):1,O=await f.assistants.setLatest(J,W);return h(O)}catch(Y){return I(Y)}}async function y$(Z,$){try{let Y=await Z.json(),X=C(O$,Y),J=await f.assistants.create(e(X));return h(J)}catch(Y){return I(Y)}}async function D$(Z,$){try{let Y=await Z.json(),X=C(F$,Y),J=await f.threads.create(e(X));return h(J)}catch(Y){return I(Y)}}async function h$(Z,$){try{let Y=await Z.json(),X=C(cY,Y),J=await f.threads.search(e(X));return h(J,200,{"X-Pagination-Total":J.length.toString()})}catch(Y){return I(Y)}}async function j$(Z,$){try{let Y=await Z.json(),X=C(cY.partial(),Y),J=await f.threads.count(e(X));return h(J)}catch(Y){return I(Y)}}async function E$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id"),{thread_id:X}=C(GZ,Y),J=await f.threads.get(X);return h(J)}catch(Y){return I(Y)}}async function V$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id"),{thread_id:X}=C(GZ,Y),J=await Z.json(),Q=C(H$,J),W=await f.threads.patch(X,e(Q));return h(W)}catch(Y){return I(Y)}}async function g$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id"),{thread_id:X}=C(GZ,Y);return await f.threads.delete(X),new Response(null,{status:204})}catch(Y){return I(Y)}}async function p$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/state"),{thread_id:X}=C(GZ,Y),J=bZ(Z.url),Q={subgraphs:J.subgraphs==="true"||J.subgraphs===!0},W=await f.threads.getState(X,Q);return h(W)}catch(Y){return I(Y)}}async function m$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/state"),{thread_id:X}=C(GZ,Y),J=await Z.json(),Q=await f.threads.updateState(X,e(J));return h(Q)}catch(Y){return I(Y)}}async function u$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/state/checkpoint"),{thread_id:X}=C(GZ,Y),J=await Z.json(),Q=bZ(Z.url),W={subgraphs:Q.subgraphs==="true"||Q.subgraphs===!0,...J},O=await f.threads.getState(X,W);return h(O)}catch(Y){return I(Y)}}async function c$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/history"),{thread_id:X}=C(GZ,Y),J=bZ(Z.url),Q={limit:J.limit?parseInt(J.limit,10):void 0,before:J.before},W=await f.threads.getStateHistory(X,Q);return h(W)}catch(Y){return I(Y)}}async function x$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/history"),{thread_id:X}=C(GZ,Y),J=await Z.json(),Q={limit:J.limit,before:J.before},W=await f.threads.getStateHistory(X,Q);return h(W)}catch(Y){return I(Y)}}async function d$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/copy"),{thread_id:X}=C(GZ,Y),J=await f.threads.copy(X);return h(J)}catch(Y){return I(Y)}}async function l$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/stream"),{thread_id:X}=C(GZ,Y),J=bZ(Z.url),Q={lastEventId:Z.headers.get("Last-Event-ID")||J.last_event_id,streamModes:J.stream_modes?Array.isArray(J.stream_modes)?J.stream_modes:[J.stream_modes]:void 0};return new Response(`data: {"status": "stream_ready"}
|
|
6
|
+
|
|
7
|
+
`,{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}catch(Y){return I(Y)}}async function i$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/runs/stream"),{thread_id:X}=C(GZ,Y),J=await Z.json(),Q=C(G$,J);return GY(NY(async(W)=>{Q.config=Q.config||{},Q.config.configurable=Q.config.configurable||{};let O=$?.langgraph_context;if(O)Object.assign(Q.config.configurable,O);let N=null,G=!1,F=()=>{G=!0};W.signal.addEventListener("abort",F);try{N=f.runs.stream(X,Q.assistant_id,e(Q));for await(let{event:U,data:L}of N){if(G||W.signal.aborted)break;await W.writeSSE({data:WY(L)??"",event:U})}}catch(U){if(!W.signal.aborted&&!G)throw U}finally{if(W.signal.removeEventListener("abort",F),N){try{await N.return(void 0)}catch(U){}N=null}}}))}catch(Y){return I(Y)}}async function o$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/runs/:run_id/stream"),{thread_id:X,run_id:J}=C(T1,Y),Q=bZ(Z.url),{cancel_on_disconnect:W,last_event_id:O,stream_mode:N}=C(U$,Q);return GY(NY(async(G)=>{let F=new AbortController,U=null,L=!1,A=[],w=()=>{F.abort("Client disconnected")};if(Z.signal)Z.signal.addEventListener("abort",w),A.push({signal:Z.signal,handler:w});let q=()=>{L=!0,F.abort("SSE stream closed")};G.signal.addEventListener("abort",q),A.push({signal:G.signal,handler:q});try{U=f.runs.joinStream(X,J,{signal:F.signal,cancelOnDisconnect:W,lastEventId:O,streamMode:N?[N]:void 0});for await(let{event:R,data:b,id:D}of U){if(L||G.signal.aborted||F.signal.aborted)break;await G.writeSSE({data:WY(b)??"",event:R,id:D})}}catch(R){if(!(F.signal.aborted||G.signal.aborted)&&!(R instanceof Error&&R.message.includes("user cancel")))console.error("Join stream error:",R),await G.writeSSE({event:"error",data:JSON.stringify({error:R instanceof Error?R.message:"Unknown error"})})}finally{for(let{signal:R,handler:b}of A)try{R.removeEventListener("abort",b)}catch(D){}if(U){try{await U.return(void 0)}catch(R){}U=null}}}))}catch(Y){return I(Y)}}async function n$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/runs"),{thread_id:X}=C(GZ,Y),J=bZ(Z.url),{limit:Q,offset:W,status:O}=C(N$,J),N=await f.runs.list(X,{limit:Q,offset:W,status:O});return h(N)}catch(Y){return I(Y)}}async function r$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/runs/:run_id/cancel"),{thread_id:X,run_id:J}=C(T1,Y),Q=bZ(Z.url),{wait:W,action:O}=C(z$,Q),N=f.runs.cancel(X,J,W,O);if(W)await N;return new Response(null,{status:W?204:202})}catch(Y){return I(Y)}}async function s$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/runs"),{thread_id:X}=C(GZ,Y),J=await Z.json(),Q=C(xY,J),W=e(Q);W.config=W.config||{},W.config.configurable=W.config.configurable||{};let O=$?.langgraph_context;if(O)Object.assign(W.config.configurable,O);W.config.configurable.graph_id=Q.assistant_id,W.config.configurable.thread_id=X;let N=f.threads,G=await N.createRun(X,Q.assistant_id,W);return(async()=>{let F=!1;try{for await(let U of cZ(N,G,W,{attempt:0,getGraph:BZ}));}catch(U){console.error("Background run error:",U)}finally{if(!F){F=!0;try{await PZ.globalMessageQueue.removeQueue(G.run_id)}catch(U){}}}})(),h(G,200,{"Content-Location":`/threads/${X}/runs/${G.run_id}`})}catch(Y){return I(Y)}}async function a$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/runs/wait"),{thread_id:X}=C(GZ,Y),J=await Z.json(),Q=C(xY,J),W=bZ(Z.url),{cancel_on_disconnect:O}=C(A$,W),N=e(Q);N.config=N.config||{},N.config.configurable=N.config.configurable||{};let G=$?.langgraph_context;if(G)Object.assign(N.config.configurable,G);N.config.configurable.graph_id=Q.assistant_id,N.config.configurable.thread_id=X;let F=f.threads,U=await F.createRun(X,Q.assistant_id,N),L={};for await(let{event:A,data:w}of cZ(F,U,N,{attempt:0,getGraph:BZ}))if(A==="end"||A==="writes/value"){if(w&&typeof w==="object")Object.assign(L,w)}return h(L,200,{"Content-Location":`/threads/${X}/runs/${U.run_id}`})}catch(Y){return I(Y)}}async function t$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/runs/:run_id"),{thread_id:X,run_id:J}=C(T1,Y),W=(await f.runs.list(X,{limit:1000})).find((O)=>O.run_id===J);if(!W)return I(Error("Run not found"),404);return h(W)}catch(Y){return I(Y)}}async function e$(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/runs/:run_id"),{thread_id:X,run_id:J}=C(T1,Y);return await f.threads.updateRun(J,{status:"deleted"}),new Response(null,{status:204})}catch(Y){return I(Y)}}async function Z3(Z,$){try{let Y=i(Z.url,"/threads/:thread_id/runs/:run_id/join"),{thread_id:X,run_id:J}=C(T1,Y),Q=bZ(Z.url),{cancel_on_disconnect:W}=C(L$,Q),N=(await f.runs.list(X,{limit:1000})).find((U)=>U.run_id===J);if(!N)return I(Error("Run not found"),404);if(N.status==="success"||N.status==="error")return h({});let G=new AbortController;if(W){let U=()=>{G.abort("Client disconnected")};Z.signal?.addEventListener("abort",U)}let F={};for await(let{event:U,data:L}of f.runs.joinStream(X,J,{signal:G.signal,cancelOnDisconnect:W}))if(U.event==="end"||U.event==="writes/value"){if(L&&typeof L==="object")Object.assign(F,L)}return h(F)}catch(Y){return I(Y)}}async function Y3(Z,$){try{let Y=await Z.json(),X=C(p1,Y),J=e(X);J.config=J.config||{},J.config.configurable=J.config.configurable||{};let Q=$?.langgraph_context;if(Q)Object.assign(J.config.configurable,Q);let W=f.threads,O=await W.create({metadata:{...J.metadata,temporary:!0}});J.config.configurable.graph_id=X.assistant_id,J.config.configurable.thread_id=O.thread_id,J.temporary=!0;let N=await W.createRun(O.thread_id,X.assistant_id,J);return(async()=>{let G=!1;try{for await(let F of cZ(W,N,J,{attempt:0,getGraph:BZ}));}catch(F){console.error("Stateless run error:",F)}finally{try{await W.delete(O.thread_id)}catch(F){console.error("Error cleaning up temporary thread:",F)}if(!G){G=!0;try{await PZ.globalMessageQueue.removeQueue(N.run_id)}catch(F){}}}})(),h(N,200,{"Content-Location":`/threads/${O.thread_id}/runs/${N.run_id}`})}catch(Y){return I(Y)}}async function $3(Z,$){try{let Y=await Z.json(),X=C(p1,Y),J=e(X);J.config=J.config||{},J.config.configurable=J.config.configurable||{};let Q=$?.langgraph_context;if(Q)Object.assign(J.config.configurable,Q);let W=f.threads,O=await W.create({metadata:{...J.metadata,temporary:!0}});J.config.configurable.graph_id=X.assistant_id,J.config.configurable.thread_id=O.thread_id,J.temporary=!0;let N=await W.createRun(O.thread_id,X.assistant_id,J);return GY(NY(async(G)=>{try{for await(let F of cZ(W,N,J,{attempt:0,getGraph:BZ}))await G.writeSSE({data:JSON.stringify(F),event:"data"})}catch(F){if(F instanceof Error&&F.name!=="AbortError")throw console.error("Stream error:",F),F}finally{try{await W.delete(O.thread_id)}catch(F){console.error("Error cleaning up temporary thread:",F)}}}))}catch(Y){return I(Y)}}async function X3(Z,$){try{let Y=await Z.json(),X=C(p1,Y),J=e(X);J.config=J.config||{},J.config.configurable=J.config.configurable||{};let Q=$?.langgraph_context;if(Q)Object.assign(J.config.configurable,Q);let W=f.threads,O=await W.create({metadata:{...J.metadata,temporary:!0}});J.config.configurable.graph_id=X.assistant_id,J.config.configurable.thread_id=O.thread_id,J.temporary=!0;let N=await W.createRun(O.thread_id,X.assistant_id,J),G={};try{for await(let{event:F,data:U}of cZ(W,N,J,{attempt:0,getGraph:BZ}))if(F==="end"||F==="writes/value"){if(U&&typeof U==="object")Object.assign(G,U)}}finally{try{await W.delete(O.thread_id)}catch(F){console.error("Error cleaning up temporary thread:",F)}}return h(G,200,{"Content-Location":`/threads/${O.thread_id}/runs/${N.run_id}`})}catch(Y){return I(Y)}}async function J3(Z,$){try{let Y=await Z.json(),X=C(w$,Y),J=f.threads,Q=[],W=X.map(async(N)=>{try{let G=e(N);G.config=G.config||{},G.config.configurable=G.config.configurable||{};let F=$?.langgraph_context;if(F)Object.assign(G.config.configurable,F);let U=await J.create({metadata:{...G.metadata,temporary:!0}});G.config.configurable.graph_id=N.assistant_id,G.config.configurable.thread_id=U.thread_id,G.temporary=!0;let L=await J.createRun(U.thread_id,N.assistant_id,G);return(async()=>{let A=!1;try{for await(let w of cZ(J,L,G,{attempt:0,getGraph:BZ}));}catch(w){console.error("Batch run error:",w)}finally{try{await J.delete(U.thread_id)}catch(w){console.error("Error cleaning up temporary thread:",w)}if(!A){A=!0;try{await PZ.globalMessageQueue.removeQueue(L.run_id)}catch(w){}}}})(),{thread_id:U.thread_id,run_id:L.run_id}}catch(G){return console.error("Batch run creation error:",G),{error:(G instanceof Error?G.message:"Unknown error")||"Unknown error"}}}),O=await Promise.all(W);return Q.push(...O),h(Q,200)}catch(Y){return I(Y)}}async function Q3(Z,$){try{let Y=await Z.json(),X=C(q$,Y),J=new URL(Z.url),Q=C(M$,{action:J.searchParams.get("action")||"interrupt"}),W=f.threads,O=[];if("run_ids"in X&&X.run_ids)for(let N of X.run_ids)try{console.warn(`Cancel by run_id ${N} not fully implemented yet`)}catch(G){console.error(`Error cancelling run ${N}:`,G)}else if("thread_id"in X&&X.thread_id){let N=X.thread_id;try{let G=await W.listRuns(N,{limit:1000,offset:0});for(let F of G)try{f.runs.cancel(N,F.run_id,Q.wait,Q.action),O.push(F.run_id)}catch(U){console.error(`Error cancelling run ${F.run_id}:`,U)}}catch(G){console.error(`Error listing runs for thread ${N}:`,G)}}else if("status"in X&&X.status)console.warn(`Cancel by status ${X.status} not fully implemented yet`);return new Response(null,{status:204})}catch(Y){return I(Y)}}var K3=[{method:"POST",pattern:/^\/assistants\/search$/,handler:R$},{method:"POST",pattern:/^\/assistants\/count$/,handler:P$},{method:"GET",pattern:/^\/assistants\/[^/]+$/,handler:B$},{method:"DELETE",pattern:/^\/assistants\/[^/]+$/,handler:b$},{method:"PATCH",pattern:/^\/assistants\/[^/]+$/,handler:v$},{method:"GET",pattern:/^\/assistants\/[^/]+\/graph$/,handler:C$},{method:"GET",pattern:/^\/assistants\/[^/]+\/subgraphs$/,handler:I$},{method:"GET",pattern:/^\/assistants\/[^/]+\/subgraphs\/[^/]+$/,handler:S$},{method:"GET",pattern:/^\/assistants\/[^/]+\/schemas$/,handler:f$},{method:"POST",pattern:/^\/assistants\/[^/]+\/versions$/,handler:k$},{method:"POST",pattern:/^\/assistants\/[^/]+\/latest$/,handler:T$},{method:"POST",pattern:/^\/assistants$/,handler:y$},{method:"POST",pattern:/^\/threads$/,handler:D$},{method:"POST",pattern:/^\/threads\/search$/,handler:h$},{method:"POST",pattern:/^\/threads\/count$/,handler:j$},{method:"GET",pattern:/^\/threads\/[^/]+$/,handler:E$},{method:"PATCH",pattern:/^\/threads\/[^/]+$/,handler:V$},{method:"DELETE",pattern:/^\/threads\/[^/]+$/,handler:g$},{method:"GET",pattern:/^\/threads\/[^/]+\/state$/,handler:p$},{method:"POST",pattern:/^\/threads\/[^/]+\/state$/,handler:m$},{method:"POST",pattern:/^\/threads\/[^/]+\/state\/checkpoint$/,handler:u$},{method:"GET",pattern:/^\/threads\/[^/]+\/history$/,handler:c$},{method:"POST",pattern:/^\/threads\/[^/]+\/history$/,handler:x$},{method:"POST",pattern:/^\/threads\/[^/]+\/copy$/,handler:d$},{method:"GET",pattern:/^\/threads\/[^/]+\/stream$/,handler:l$},{method:"POST",pattern:/^\/threads\/[^/]+\/runs$/,handler:s$},{method:"POST",pattern:/^\/threads\/[^/]+\/runs\/stream$/,handler:i$},{method:"POST",pattern:/^\/threads\/[^/]+\/runs\/wait$/,handler:a$},{method:"POST",pattern:/^\/threads\/[^/]+\/runs\/[^/]+\/cancel$/,handler:r$},{method:"GET",pattern:/^\/threads\/[^/]+\/runs$/,handler:n$},{method:"GET",pattern:/^\/threads\/[^/]+\/runs\/[^/]+$/,handler:t$},{method:"DELETE",pattern:/^\/threads\/[^/]+\/runs\/[^/]+$/,handler:e$},{method:"GET",pattern:/^\/threads\/[^/]+\/runs\/[^/]+\/join$/,handler:Z3},{method:"GET",pattern:/^\/threads\/[^/]+\/runs\/[^/]+\/stream$/,handler:o$},{method:"POST",pattern:/^\/runs$/,handler:Y3},{method:"POST",pattern:/^\/runs\/stream$/,handler:$3},{method:"POST",pattern:/^\/runs\/wait$/,handler:X3},{method:"POST",pattern:/^\/runs\/batch$/,handler:J3},{method:"POST",pattern:/^\/runs\/cancel$/,handler:Q3}],W3=(Z)=>{let $=new URL(Z.url).pathname.toString(),Y="";if($.includes("/threads"))Y=$.split("/threads")[0];else if($.includes("/assistants"))Y=$.split("/assistants")[0];return new Request(Z.url.replace(Y,""),{method:Z.method,headers:Z.headers,body:Z.body,duplex:Z.duplex})};async function dY(Z,$={}){Z=W3(Z);try{await PZ.initGlobal();let X=new URL(Z.url).pathname,J=Z.method;for(let Q of K3)if(Q.method===J&&Q.pattern.test(X))return await Q.handler(Z,$);return new Response("Not Found",{status:404})}catch(Y){return console.error("Request error:",Y),I(Y)}}await lY();KY("code",iY);var oY=(Z,$={})=>{return dY(new Request(Z,$),{})};import _3 from"openai";import O3 from"@anthropic-ai/sdk";import{GoogleGenerativeAI as G3}from"@google/generative-ai";var N3=async()=>{if(!process.env.ANTHROPIC_API_KEY)return[];let Z=[];try{for await(let $ of new O3().beta.models.list())Z.push({id:$.id,name:$.display_name,provider:"anthropic"})}catch($){console.error("Failed to fetch Anthropic models:",$)}return Z},z3=async()=>{if(!process.env.OPENAI_API_KEY)return[];try{return await new _3().models.list().then((Z)=>Z.data.map(($)=>{return{id:$.id,name:$.id,provider:"openai"}}).sort(($,Y)=>$.id.localeCompare(Y.id)))}catch(Z){return console.error("Failed to fetch OpenAI models:",Z),[]}},U3=async()=>{let Z=process.env.GEMINI_API_KEY;if(!Z)return[];let $=[{id:"gemini-2.5-flash-preview-06-17",name:"Gemini 2.5 Flash Preview (06-17)",provider:"gemini"},{id:"gemini-2.5-pro-preview-06-05",name:"Gemini 2.5 Pro Preview (06-05)",provider:"gemini"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash",provider:"gemini"},{id:"gemini-2.0-flash-lite",name:"Gemini 2.0 Flash Lite",provider:"gemini"},{id:"gemini-1.5-flash",name:"Gemini 1.5 Flash",provider:"gemini"},{id:"gemini-1.5-flash-8b",name:"Gemini 1.5 Flash 8B",provider:"gemini"},{id:"gemini-1.5-pro",name:"Gemini 1.5 Pro",provider:"gemini"},{id:"gemini-1.0-pro",name:"Gemini 1.0 Pro",provider:"gemini"},{id:"gemini-2.0-flash-exp",name:"Gemini 2.0 Flash Experimental",provider:"gemini"},{id:"gemini-exp-1206",name:"Gemini Experimental 1206",provider:"gemini"},{id:"gemini-2.5-pro-exp-03-25",name:"Gemini 2.5 Pro Experimental (03-25)",provider:"gemini"},{id:"gemini-2.5-flash-preview-05-20",name:"Gemini 2.5 Flash Preview (05-20)",provider:"gemini"}];try{return await new G3(Z).getGenerativeModel({model:"gemini-1.5-flash"}),$}catch(Y){return console.error("Failed to verify Gemini API key:",Y),[]}},nY=async()=>{return(await Promise.all([N3().catch(()=>[]),z3().catch(()=>[]),U3().catch(()=>[])])).flat()};var u1=H(T(),1);function rY({tools:Z,setTools:$}){let Y=u1.useRef(!1);u1.useEffect(()=>{if(!Y.current)$(Z),Y.current=!0},[Z,$])}var aY=H(T(),1);function sY(Z){if(!Z)return{isValid:!1,needsSetup:!0,reason:"未找到配置文件"};if(!Z.providers||Z.providers.length===0)return{isValid:!1,needsSetup:!0,reason:"未配置任何 Provider"};let $=Z.providers.find((Y)=>Y.id===Z.provider_id);if(!$)return{isValid:!1,needsSetup:!0,reason:`Provider "${Z.provider_id}" 不存在`,invalidProviderRef:!0};if(!$.apiKey||$.apiKey.trim()==="")return{isValid:!1,needsSetup:!0,reason:`Provider "${Z.provider_id}" 未配置 API Key`,missingApiKey:!0};return{isValid:!0,needsSetup:!1}}function tY({config:Z}){return aY.useMemo(()=>{if(!Z)return{validation:null,needsSetup:!0,isValid:!1};let $=sY(Z);return{validation:$,needsSetup:$.needsSetup,isValid:!$.needsSetup}},[Z])}var eY=H(T(),1);function Z0({shouldFocus:Z}){let $=jZ();eY.useEffect(()=>{if(Z)$.focus("global-input")},[Z,$])}var vZ=H(T(),1);function Y0(){let[Z,$]=vZ.useState("chat"),Y=jZ(),X=vZ.useCallback(()=>{$("history")},[]),J=vZ.useCallback(()=>{$("knowledge")},[]),Q=vZ.useCallback(()=>{$("settings")},[]),W=vZ.useCallback(()=>{$("model-provider")},[]),O=vZ.useCallback(()=>{$("agent")},[]),N=vZ.useCallback(()=>{$("task")},[]),G=vZ.useCallback(()=>{$("mcp")},[]),F=vZ.useCallback(()=>{console.clear(),$("chat"),Y.focus("global-input")},[Y]);return{activeView:Z,isChatView:Z==="chat",switchToHistory:X,switchToKnowledge:J,switchToSettings:Q,switchToModelProvider:W,switchToAgent:O,switchToTask:N,switchToMcp:G,closePanel:F}}var c1=H(T(),1);function F3(Z){let $=`# 任务:${Z.title}
|
|
8
|
+
|
|
9
|
+
`;if($+=`**描述:**
|
|
10
|
+
${Z.description}
|
|
11
|
+
|
|
12
|
+
`,Z.agentType)$+=`**建议 Agent 类型:** ${Z.agentType}
|
|
13
|
+
|
|
14
|
+
`;if(Z.estimatedTime)$+=`**预估时间:** ${Z.estimatedTime}
|
|
15
|
+
|
|
16
|
+
`;if(Z.complexity)$+=`**复杂度:** ${Z.complexity}
|
|
17
|
+
|
|
18
|
+
`;if(Z.dependencies&&Z.dependencies.length>0)$+=`**依赖任务:**
|
|
19
|
+
${Z.dependencies.map((Y)=>`- ${Y}`).join(`
|
|
20
|
+
`)}
|
|
21
|
+
|
|
22
|
+
`;if(Z.acceptanceCriteria&&Z.acceptanceCriteria.length>0)$+=`**验收标准:**
|
|
23
|
+
${Z.acceptanceCriteria.map((Y,X)=>`${X+1}. ${Y}`).join(`
|
|
24
|
+
`)}
|
|
25
|
+
|
|
26
|
+
`;if(Z.children&&Z.children.length>0)$+=`**子任务:**
|
|
27
|
+
`,Z.children.forEach((Y,X)=>{if($+=`
|
|
28
|
+
### 子任务 ${X+1}: ${Y.title}
|
|
29
|
+
`,$+=`${Y.description}
|
|
30
|
+
`,Y.acceptanceCriteria&&Y.acceptanceCriteria.length>0)$+=`验收标准:
|
|
31
|
+
${Y.acceptanceCriteria.map((J)=>`- ${J}`).join(`
|
|
32
|
+
`)}
|
|
33
|
+
`}),$+=`
|
|
34
|
+
`;return $.trim()}function $0(Z){let{sendMessage:$,createNewChat:Y}=o(),{extraParams:X}=n(),{closePanel:J}=Z,Q=c1.useMemo(()=>{return{...X,is_in_task:!0}},[X]);return{handleExecuteTask:c1.useCallback((O)=>{let G=[{type:"human",content:`${F3(O)}
|
|
35
|
+
|
|
36
|
+
请你先写一个 TODO LIST 然后开始这个任务,最后完成任务的时候,使用 commit_task`}];Y(EZ).then(()=>{return $(G,{extraParams:Q,metadata:EZ})}).then(()=>{dZ("任务已发送给 Agent"),J()}).catch((F)=>{console.error("Task execution failed:",F),dZ("任务执行失败")})},[$,Y,Q,J])}}var x1=H(T(),1),Q0=H(M(),1),X0=x1.createContext(void 0),M1=()=>{let Z=x1.useContext(X0);if(Z===void 0)throw Error("useChatPanel must be used within ChatPanelProvider. Make sure your component is a child of ChatController.");return Z},J0=({children:Z,value:$})=>{return Q0.jsxDEV(X0.Provider,{value:$,children:Z},void 0,!1,void 0,this)};var _1=H(T(),1);var K0=(Z)=>{return Z.additional_kwargs?.reasoning_content||Array.isArray(Z.content)&&Z.content.find(($)=>$.type==="thinking")?.thinking},q1=(Z)=>{return typeof Z.content==="string"?Z.content:Z.content?.filter(($)=>{return $.type==="text"}).map(($)=>$.text).join("")};d1();var UY=H(T(),1),p=H(M(),1),B3={approve:"green",reject:"red",edit:"yellow",modify:"cyan"},b3=(Z)=>{return B3[Z.toLowerCase()]||"white"},O0=({request:Z,allowedDecisions:$=["approve","edit","reject"],onApprove:Y,onEdit:X,onReject:J,autoFocus:Q=!0})=>{let[W,O]=UY.useState("approve"),{value:N,setTrue:G,setFalse:F}=_0(!1),[U,L]=UY.useState(""),A=jZ(),w=Z.messageIndex,q=Z.description;qZ((S,OZ)=>{if(N&&OZ.escape)b()},{isActive:N});let R=()=>{if(!U.trim())return;if(W==="edit")try{let S=JSON.parse(U);X(S)}catch(S){console.error("Invalid JSON:",S);return}else{let S=`User rejected to run this tool, reason: ${U}`;J(S)}F(),L("")},b=()=>{F(),L("")},D=([S])=>{if(S==="approve"){Y(),A.focus("global-input");return}if(O(S),G(),S==="edit")L(JSON.stringify(Z.toolCall.args,null,2));else L("")},$Z=$.map((S)=>({label:S,value:S}));return N?(()=>{let S=b3(W),OZ=W==="edit";return p.jsxDEV(_,{flexDirection:"column",paddingX:1,marginTop:0,children:[p.jsxDEV(_,{flexDirection:"column",marginBottom:1,children:[p.jsxDEV(K,{color:S,bold:!0,children:[W.toUpperCase()," MODE - ",Z.toolCall.name]},void 0,!0,void 0,this),w!==void 0&&p.jsxDEV(K,{color:"gray",dimColor:!0,children:["Message Index: ",w]},void 0,!0,void 0,this),q&&p.jsxDEV(K,{color:"gray",dimColor:!0,children:["Description: ",q]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),OZ?p.jsxDEV(_,{flexDirection:"column",marginTop:0,children:[p.jsxDEV(K,{color:"yellow",dimColor:!0,children:"Editing action arguments (JSON format):"},void 0,!1,void 0,this),p.jsxDEV(_,{paddingX:1,children:p.jsxDEV(CZ,{value:U,onChange:L,onSubmit:R,placeholder:"Enter JSON...",autoFocus:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):p.jsxDEV(_,{flexDirection:"column",marginTop:0,children:[p.jsxDEV(K,{color:"cyan",dimColor:!0,children:"Enter additional message for this action:"},void 0,!1,void 0,this),p.jsxDEV(_,{padding:1,children:p.jsxDEV(CZ,{value:U,onChange:L,onSubmit:R,placeholder:"Enter message...",autoFocus:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),p.jsxDEV(_,{marginTop:0,children:p.jsxDEV(K,{color:"gray",children:[p.jsxDEV(K,{color:S,bold:!0,children:"↵"},void 0,!1,void 0,this)," ","Submit |",p.jsxDEV(K,{color:"red",bold:!0,children:[" ","Esc"]},void 0,!0,void 0,this)," ","Cancel"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)})():(()=>p.jsxDEV(_,{flexDirection:"column",paddingX:1,children:[p.jsxDEV(_,{flexDirection:"column",marginBottom:1,children:[p.jsxDEV(K,{color:"cyan",bold:!0,children:Z.toolCall.name},void 0,!1,void 0,this),w!==void 0&&p.jsxDEV(K,{color:"gray",dimColor:!0,children:["Message Index: ",w]},void 0,!0,void 0,this),q&&p.jsxDEV(K,{color:"gray",dimColor:!0,children:["Description: ",q]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),p.jsxDEV(_,{children:p.jsxDEV(K1,{singleSelect:!0,options:$Z,onSubmit:D,autoFocus:Q},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this))()};var l1=H(T(),1),G0=H(M(),1),FY={type:"approval",render(Z,$){let{content:Y,metadata:X}=Z,J=jZ(),Q=l1.useCallback(()=>{$({state:"submitted",result:{status:"approved"}}),J.focus("global-input")},[$,J]),W=l1.useCallback((G)=>{$({state:"edited",result:{status:"edited",editedArgs:G}}),J.focus("global-input")},[$,J]),O=l1.useCallback((G)=>{$({state:"cancelled",result:{status:"rejected",message:G}}),J.focus("global-input")},[$,J]),N={id:Z.id,toolCall:Y.toolCall,status:Z.state==="submitted"?"approved":Z.state==="edited"?"edited":Z.state==="cancelled"?"rejected":"pending",createdAt:Z.createdAt,messageIndex:X.messageIndex,description:X.description};return G0.jsxDEV(O0,{request:N,allowedDecisions:["approve","edit","reject"],onApprove:Q,onEdit:W,onReject:O,autoFocus:!0},Z.id,!1,void 0,this)},defaultConfig:{layout:{border:!1,padding:0},interaction:{autoSubmit:!1,allowSkip:!1}}};var HY=H(T(),1);var v3={title:{maxWidth:60,ellipsis:"…"},description:{maxWidth:80,ellipsis:"…"},optionLabel:{maxWidth:50,ellipsis:"…"},tabLabel:{maxWidth:30,ellipsis:"…"},fullTitle:{maxWidth:80,ellipsis:"…"}},C3=(Z,$=20,Y="…")=>{if(!Z)return"";if(Z.length<=$)return Z;return Z.substring(0,$-Y.length)+Y},R1=(Z,$)=>{let Y=v3[$];return C3(Z,Y.maxWidth,Y.ellipsis)};var lZ=H(M(),1),I3=(Z)=>{return R1(Z,"optionLabel")},AY={type:"selection",render(Z,$){let{content:Y,metadata:X,result:J}=Z,[Q,W]=HY.useState(J?.selected||[]),[O,N]=HY.useState(J?.customInput||""),G=Y.options.map((R)=>({label:I3(R.label),value:R.value})),F=(R,b)=>{$({result:{selected:R??Q,customInput:b??O}})},U=(R)=>{W(R),F(R,void 0)},L=(R)=>{N(R),F(void 0,R)},A=()=>{$({state:"submitted",result:{selected:Q,customInput:O}})},w=X?.title?R1(X.title,"title"):null,q=X?.description?R1(X.description,"description"):null;return lZ.jsxDEV(_,{flexDirection:"column",paddingX:1,children:[w&&lZ.jsxDEV(_,{marginBottom:1,children:lZ.jsxDEV(K,{color:"cyan",bold:!0,children:w},void 0,!1,void 0,this)},void 0,!1,void 0,this),q&&lZ.jsxDEV(_,{marginBottom:1,children:lZ.jsxDEV(K,{dimColor:!0,children:q},void 0,!1,void 0,this)},void 0,!1,void 0,this),lZ.jsxDEV(K1,{options:G,singleSelect:Y.singleSelect,values:Q,onChange:U,onSubmit:A,autoFocus:!0},void 0,!1,void 0,this),Y.allowCustomInput&&lZ.jsxDEV(_,{marginTop:1,flexDirection:"column",children:lZ.jsxDEV(CZ,{value:O,onChange:L,onSubmit:A,placeholder:Y.placeholder||"Type custom option...",autoFocus:!1},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},validate(Z){if(Z.options.length===0)return"At least one option is required";if(Z.singleSelect&&Z.maxSelections&&Z.maxSelections>1)return"Single select cannot have maxSelections > 1";return},defaultConfig:{layout:{border:!0,padding:1},interaction:{autoSubmit:!1}}};var N0=H(T(),1);var VZ=H(M(),1),LY={type:"input",render(Z,$){let{content:Y,metadata:X}=Z,[J,Q]=N0.useState(Y.defaultValue||""),W=()=>{$({state:"submitted",result:{value:J}})};return VZ.jsxDEV(_,{flexDirection:"column",paddingX:1,children:[X?.title&&VZ.jsxDEV(_,{marginBottom:1,children:VZ.jsxDEV(K,{color:"cyan",bold:!0,children:X.title},void 0,!1,void 0,this)},void 0,!1,void 0,this),X?.description&&VZ.jsxDEV(_,{marginBottom:1,children:VZ.jsxDEV(K,{dimColor:!0,children:X.description},void 0,!1,void 0,this)},void 0,!1,void 0,this),VZ.jsxDEV(_,{children:[VZ.jsxDEV(CZ,{value:J,onChange:Q,onSubmit:W,placeholder:Y.placeholder,autoFocus:!0},void 0,!1,void 0,this),")"]},void 0,!0,void 0,this),Y.maxLength&&VZ.jsxDEV(_,{marginTop:1,children:VZ.jsxDEV(K,{dimColor:!0,children:["Max length: ",Y.maxLength]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},validate(Z){if(Z.validation?.pattern&&Z.defaultValue){if(!Z.validation.pattern.test(Z.defaultValue))return"Input does not match required pattern"}if(Z.validation?.minLength&&Z.defaultValue&&Z.defaultValue.length<Z.validation.minLength)return`Input must be at least ${Z.validation.minLength} characters`;return},defaultConfig:{layout:{border:!0,padding:1},interaction:{autoSubmit:!1}}};var W1=H(M(),1),wY={type:"confirm",render(Z,$){let{content:Y,metadata:X}=Z,J=()=>{$({state:"submitted",result:{confirmed:!0}})},Q=()=>{$({state:"cancelled",result:{confirmed:!1}})},W=[{label:Y.confirmLabel||"Confirm",value:"confirm"},{label:Y.cancelLabel||"Cancel",value:"cancel"}],O=([N])=>{if(N==="confirm")J();else Q()};return W1.jsxDEV(_,{flexDirection:"column",paddingX:1,children:[X?.title&&W1.jsxDEV(_,{marginBottom:1,children:W1.jsxDEV(K,{color:Y.danger?"red":"cyan",bold:!0,children:X.title},void 0,!1,void 0,this)},void 0,!1,void 0,this),W1.jsxDEV(_,{marginBottom:1,children:W1.jsxDEV(K,{children:Y.message},void 0,!1,void 0,this)},void 0,!1,void 0,this),W1.jsxDEV(K1,{options:W,singleSelect:!0,onSubmit:O,autoFocus:!0},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},defaultConfig:{layout:{border:!0,padding:1},interaction:{autoSubmit:!1}}};var S3=H(T(),1);var f3=H(M(),1);var gZ=H(T(),1);var P1=H(T(),1);var r=H(M(),1),U0=({items:Z,defaultIndex:$=0,onChange:Y,disabled:X=!1,autoFocus:J=!0,variant:Q="line"})=>{let{isFocused:W}=z0({autoFocus:J}),[O,N]=P1.useState($),G=P1.default.useMemo(()=>`tabs-${Math.random().toString(36).substring(2,9)}`,[]),F=P1.useCallback((A)=>{if(A<0||A>=Z.length||Z[A].disabled)return;N(A),Y?.(A,Z[A])},[Z,Y]);qZ((A,w)=>{if(X)return;if(w.leftArrow)F(O-1);else if(w.rightArrow)F(O+1)},{isActive:!X});let U=()=>{return Z.map((A,w)=>{let q=w===O,R=W&&!X,b;if(Q==="line")b=r.jsxDEV(_,{marginRight:1,children:[r.jsxDEV(K,{color:A.disabled?"gray":q?R?"green":"cyan":"gray",bold:q&&R,children:A.label},void 0,!1,void 0,this),q&&r.jsxDEV(K,{color:R?"green":"cyan",children:"_"},void 0,!1,void 0,this)]},`${G}-${A.id}`,!0,void 0,this);else if(Q==="enclosed"){let D=w===0||q?"┌":"─",$Z=w===Z.length-1||q?"┐":"─",m=w===0||q?"│":" ",XZ=w===Z.length-1||q?"│":" ",S=q?"─":" ",OZ=q?" ":"",g=A.disabled?"gray":q?R?"green":"cyan":"gray";b=r.jsxDEV(_,{children:r.jsxDEV(_,{flexDirection:"column",children:[r.jsxDEV(_,{children:[r.jsxDEV(K,{color:g,children:D},void 0,!1,void 0,this),r.jsxDEV(K,{color:g,bold:q&&R,children:[OZ,A.label,OZ]},void 0,!0,void 0,this),r.jsxDEV(K,{color:g,children:$Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q&&r.jsxDEV(_,{children:[r.jsxDEV(K,{color:g,children:m},void 0,!1,void 0,this),r.jsxDEV(K,{color:g,children:S.repeat(A.label.length+2)},void 0,!1,void 0,this),r.jsxDEV(K,{color:g,children:XZ},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},`${G}-${A.id}`,!1,void 0,this)}else{let D=q?"●":"○";b=r.jsxDEV(_,{marginRight:2,children:r.jsxDEV(K,{color:A.disabled?"gray":q?R?"green":"cyan":"gray",bold:q&&R,children:[D," ",A.label]},void 0,!0,void 0,this)},`${G}-${A.id}`,!1,void 0,this)}return b})},L=()=>{let A=Z[O];if(!A?.content)return null;return r.jsxDEV(_,{marginTop:1,paddingX:2,paddingY:1,flexDirection:"column",children:A.content},void 0,!1,void 0,this)};return r.jsxDEV(_,{flexDirection:"column",flexGrow:1,children:[r.jsxDEV(_,{children:U()},void 0,!1,void 0,this),Z.some((A)=>A.content)&&L()]},void 0,!0,void 0,this)};var F0=H(T(),1);var H0=H(M(),1),MY=({interaction:Z,renderer:$,onChange:Y})=>{let X=F0.useMemo(()=>{return{layout:{border:!1,padding:0,...$.defaultConfig?.layout,...Z.config.layout},interaction:{autoSubmit:!1,allowSkip:!1,showPreview:!0,...$.defaultConfig?.interaction,...Z.config.interaction},style:{...$.defaultConfig?.style,...Z.config.style}}},[Z.config,$.defaultConfig]),J=X.style.backgroundColor;return H0.jsxDEV(_,{backgroundColor:J,paddingX:X.layout.padding,marginBottom:1,flexDirection:"column",children:$.render({...Z,config:X},Y)},void 0,!1,void 0,this)};d1();var iZ=H(M(),1),k3=(Z)=>{return R1(Z,"fullTitle")},qY=()=>{let Z=MZ(),[$,Y]=gZ.useState(null),{focusNext:X,focus:J}=jZ(),Q=gZ.useMemo(()=>{return Z.getInteractions()},[Z.getInteractions()]);gZ.useEffect(()=>{if(Q.length>0&&!$)Y(Q[0].id)},[Q,$]);let W=gZ.useMemo(()=>{return Q.map((U)=>{let L={idle:"\uD83D\uDD04",active:"\uD83D\uDD04",submitted:"✅",edited:"⛔",cancelled:"\uD83D\uDEAB"}[U.state]||"",A=k3(U.metadata.title||U.content.type);return{id:U.id,label:`${L} ${A}`,content:null}})},[Q]),O=gZ.useCallback((U,L)=>{Y(L.id)},[]),N=gZ.useCallback((U)=>{if(Q.every((q)=>q.state==="submitted"||q.state==="edited"||q.state==="cancelled")){J("global-input");return}let w=(Q.findIndex((q)=>q.id===U)+1)%Q.length;Y(Q[w].id)},[Q,J]),G=A0(()=>{X()});FZ(G,$?100:null);let F=()=>{if(!$)return null;let U=Q.find((A)=>A.id===$);if(!U)return null;let L=eZ.get(U.content.type);if(!L)return iZ.jsxDEV(_,{paddingX:1,children:iZ.jsxDEV(K,{color:"red",children:["Unknown renderer: ",U.content.type]},void 0,!0,void 0,this)},void 0,!1,void 0,this);return iZ.jsxDEV(MY,{interaction:U,renderer:L,onChange:(A)=>{if(Z.updateInteraction(U.id,A),A.state==="submitted"||A.state==="edited"||A.state==="cancelled")N(U.id)}},U.id,!1,void 0,this)};if(Q.length===0)return null;return iZ.jsxDEV(_,{flexDirection:"column",borderColor:"cyan",borderStyle:"single",width:"100%",children:[iZ.jsxDEV(_,{justifyContent:"space-between",paddingX:1,marginBottom:1,children:iZ.jsxDEV(K,{color:"cyan",bold:!0,children:["Interactions (",Q.length,")"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),iZ.jsxDEV(_,{paddingX:1,marginBottom:1,children:iZ.jsxDEV(U0,{items:W,defaultIndex:W.findIndex((U)=>U.id===$),onChange:O,autoFocus:!0,variant:"line"},$,!1,void 0,this)},void 0,!1,void 0,this),F()]},void 0,!0,void 0,this)};d1();function L0(){eZ.register("approval",FY),eZ.register("selection",AY),eZ.register("input",LY),eZ.register("confirm",wY)}L0();var B1=H(M(),1);import{z as Z1}from"zod";var T3=Z1.object({label:Z1.string().min(1).max(50).describe("选项显示文本,简洁明了(1-50 字符)")}),y3=Z1.object({description:Z1.string().min(1).describe("向用户提出的问题,清晰具体,包含必要的上下文"),type:Z1.enum(["single_select","multi_select"]).describe("选择类型:single_select(单选)或 multi_select(多选)"),options:Z1.array(T3).min(2).max(6).describe("选项列表,至少 2 个,最多 6 个"),allow_custom_input:Z1.boolean().default(!0).describe("是否允许用户输入自定义文本,默认 true"),placeholder:Z1.string().optional().describe("自定义输入框的占位符文本")}),D3=({tool:Z})=>{let{addInteraction:$,getInteractions:Y,updateInteraction:X}=MZ(),[J,Q]=_1.useState(null),W=_1.useRef(!1),O=Z.getInputRepaired();if(_1.useEffect(()=>{if(Z.state==="interrupted"&&!J&&!W.current){let G={type:"selection",options:O.options?.map((U,L)=>({label:U.label,value:U.label}))||[],singleSelect:O.type==="single_select",allowCustomInput:O.allow_custom_input??!0,placeholder:O.placeholder},F=$(G,{tool:Z,metadata:{title:O.description||"请选择一个选项",groupKey:"user-input"}});Q(F.id)}},[Z,J,$,O]),_1.useEffect(()=>{if(!J||W.current)return;let N=()=>{let U=Y().find((L)=>L.id===J);if(U&&(U.state==="submitted"||U.state==="edited"||U.state==="cancelled")&&!U.resultSent){W.current=!0;let L=U.result,A="";if(L){if(L.selected&&L.selected.length>0)A+=`User selected:
|
|
37
|
+
${L.selected.join(`
|
|
38
|
+
- `)}`;if(L.customInput&&L.customInput.trim())A+=(A?`
|
|
39
|
+
`:"")+`User Custom Input: ${L.customInput}`}Z.sendResumeData({type:"respond",message:A||"User made a selection"}),X(J,{resultSent:!0})}};N();let G=setInterval(N,100);return()=>clearInterval(G)},[J,Y,X,Z]),Z.state==="interrupted"&&!Z.output)return B1.jsxDEV(_,{flexDirection:"column",children:B1.jsxDEV(_,{paddingX:1,children:B1.jsxDEV(K,{color:"yellow",children:"⏳ 等待用户选择..."},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this);if(Z.output)return B1.jsxDEV(K,{color:"yellow",children:Z.output},void 0,!1,void 0,this);return null},w0=u({name:"ask_user_questions",description:"Ask the user a question with selectable options",parameters:y3,handler:d.waitForUIDone,render(Z){return B1.jsxDEV(D3,{tool:Z},void 0,!1,void 0,this)}});var O1=H(T(),1);var y1=H(M(),1),b1=({content:Z,maxLines:$=10,borderColor:Y="cyan",borderStyle:X="single",marginTop:J=0,paddingX:Q=0,showOmittedInfo:W=!0})=>{if(!Z)return null;let{width:O}=M0(),N=Z.split(`
|
|
40
|
+
`).map((U)=>U.slice(0,O-10)),G=Math.max(0,N.length-$),F=N.slice(-$).join(`
|
|
41
|
+
`);return y1.jsxDEV(_,{flexDirection:"column",width:O-5,children:y1.jsxDEV(_,{borderStyle:X,borderColor:Y,borderLeft:!1,borderRight:!1,flexDirection:"column",paddingX:Q,marginTop:J,children:[W&&G>0&&y1.jsxDEV(K,{color:"gray",dimColor:!0,children:["... ",G," lines omitted ..."]},void 0,!0,void 0,this),y1.jsxDEV(K,{dimColor:!0,children:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)};var NZ=H(M(),1),h3=({tool:Z})=>{let{addInteraction:$,getInteractions:Y,updateInteraction:X}=MZ(),[J,Q]=O1.useState(null),W=O1.useRef(!1),O=Z.getHumanInTheLoopData();if(O1.useEffect(()=>{if(O?.reviewConfig&&Z.state==="interrupted"&&!J&&!W.current){let G=Z.getInputRepaired()?.description,F={type:"approval",toolCall:{name:Z.message.name,args:Z.getInputRepaired()},editableFields:["args"]},U=$(F,{tool:Z,metadata:{title:`Approve ${Z.message.name}`,description:G,groupKey:"approvals"}});Q(U.id)}},[O,Z,J,$]),O1.useEffect(()=>{if(!J||W.current)return;let G=()=>{let L=Y().find((A)=>A.id===J);if(L&&(L.state==="submitted"||L.state==="edited"||L.state==="cancelled")&&!L.resultSent){W.current=!0;let A=L.result;if(A){if(A.status==="approved")Z.sendResumeData({type:"approve"});else if(A.status==="edited"){let w={name:Z.message.name,args:A.editedArgs};Z.sendResumeData({type:"edit",edited_action:w})}else if(A.status==="rejected"){let w=A.message||"User rejected to run this tool";Z.sendResumeData({type:"reject",message:w})}}X(J,{resultSent:!0})}};G();let F=setInterval(G,100);return()=>clearInterval(F)},[J,Y,X,Z]),O?.reviewConfig&&J&&!Z.output)return NZ.jsxDEV(_,{flexDirection:"column",children:NZ.jsxDEV(_,{paddingX:1,paddingY:1,children:NZ.jsxDEV(K,{color:"yellow",children:"⏳ Wait for Approval"},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this);return NZ.jsxDEV(_,{flexDirection:"column",children:(()=>{if(!Z.output)return null;return NZ.jsxDEV(b1,{content:Z.output,maxLines:5,borderColor:"cyan"},void 0,!1,void 0,this)})()},void 0,!1,void 0,this)},j3=({tool:Z})=>{let Y=Z.getInputRepaired()?.command||"",X=Y.length>50?Y.substring(0,50)+"...":Y;return NZ.jsxDEV(_,{paddingX:1,children:[NZ.jsxDEV(K,{color:"magenta",children:"Run "},void 0,!1,void 0,this),NZ.jsxDEV(K,{dimColor:!0,children:"("},void 0,!1,void 0,this),NZ.jsxDEV(K,{color:"magenta",children:X},void 0,!1,void 0,this),NZ.jsxDEV(K,{dimColor:!0,children:")"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},q0=u({name:"terminal",description:"",parameters:{},handler:d.waitForUIDone,render(Z){return NZ.jsxDEV(_,{flexDirection:"column",children:[NZ.jsxDEV(j3,{tool:Z},void 0,!1,void 0,this),NZ.jsxDEV(h3,{tool:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}});import{diff_match_patch as E3}from"diff-match-patch";function V3(Z,$,Y){if(Z===$)return[{type:"unchanged",content:Z,lineNumbers:{old:1,new:1}}];let X=new E3,J=X.diff_main(Z,$);X.diff_cleanupSemantic(J);let Q=[],W=1,O=1,N=[];for(let[R,b]of J){if(b==="")continue;let D=b.split(`
|
|
42
|
+
`),$Z=b.endsWith(`
|
|
43
|
+
`);for(let m=0;m<D.length;m++){let XZ=D[m];if(XZ===""&&(m<D.length-1||!$Z))continue;let S={type:R===0?"unchanged":R===-1?"added":"removed",content:XZ};if(R===0)S.lineNumbers={old:W,new:O},W++,O++;else if(R===-1)S.lineNumbers={new:O},O++;else if(R===1)S.lineNumbers={old:W},W++;N.push(S)}}if(!Y?.maxLines)return N;let G=Y.maxLines,F=Y.contextLines||3,U=N.map((R,b)=>R.type!=="unchanged"?b:-1).filter((R)=>R!==-1);if(U.length===0||N.length<=G)return N;let L=[],A=0,w=[],q=[];for(let R=0;R<U.length;R++)if(q.length===0)q.push(U[R]);else{let b=q[q.length-1];if(U[R]-b<=1)q.push(U[R]);else w.push([...q]),q=[U[R]]}if(q.length>0)w.push(q);for(let R of w){if(A>=G)break;let b=R[0],D=R[R.length-1],$Z=Math.max(0,b-F),m=Math.min(N.length-1,D+F),XZ=m-$Z+1;if(A+XZ>G&&A>0){L.push({type:"unchanged",content:"..."});break}for(let S=$Z;S<=m;S++){if(A>=G){if(S<m)L.push({type:"unchanged",content:"..."});break}L.push(N[S]),A++}if(R===w[w.length-1]&&A<N.length){let S=N.length-m-1;if(S>0)L.push({type:"unchanged",content:`... (${S} more lines)`})}}return L}function R0(Z,$=1000){return Z=Z||"",Z.length>$||Z.split(`
|
|
44
|
+
`).length>50}function P0(Z,$,Y){let X=R0(Z)||R0($),Q=Y!==void 0&&"maxLines"in Y?Y.maxLines:X?10:20,W=Y?.contextLines??(X?1:3);return V3(Z,$,{maxLines:Q,contextLines:W})}var v1=H(M(),1),g3=["sky","primary"];function p3(Z){let $=Z%2;return zZ(g3[$])}function m3(Z){let $=[];if(Z.startsWith("/"))$.push({type:"separator",value:"/"}),Z=Z.slice(1);let Y=Z.split("/");return Y.forEach((X,J)=>{if(X)$.push({type:"segment",value:X});if(J<Y.length-1)$.push({type:"separator",value:"/"})}),$}var u3=({path:Z,color:$="cyan",line:Y,rainbow:X=!1})=>{let J=B0(Z)??"",Q=Y!==void 0?`:${Y}`:"";if(!X)return v1.jsxDEV(K,{color:zZ($),children:[J,Q]},void 0,!0,void 0,this);let W=m3(J),O=-1;for(let G=W.length-1;G>=0;G--)if(W[G].type==="segment"){O=G;break}let N=0;return v1.jsxDEV(K,{children:[W.map((G,F)=>{if(G.type==="separator")return v1.jsxDEV(K,{dimColor:!0,color:"gray",children:G.value},`sep-${F}`,!1,void 0,this);let U=F===O,L=p3(N);return N++,v1.jsxDEV(K,{color:L,dimColor:!U,children:G.value},`seg-${F}`,!1,void 0,this)}),Q&&v1.jsxDEV(K,{color:"gray",children:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},HZ=u3;var s=H(M(),1),v0=u({name:"edit_file",description:"Performs exact string replacements in files with diff visualization",parameters:b0.shape,handler:d.waitForUIDone,render(Z){let $=Z.getInputRepaired(),Y=Z.output,X=$.old_string&&$.new_string&&$.old_string!==$.new_string,J=0,Q=0;if(X){let W=P0($.old_string,$.new_string,{maxLines:void 0});for(let O of W){if(O.type==="removed")J++;if(O.type==="added")Q++}}return s.jsxDEV(_,{flexDirection:"column",paddingX:1,children:[s.jsxDEV(_,{children:[s.jsxDEV(K,{color:"yellow",children:"Edit "},void 0,!1,void 0,this),s.jsxDEV(K,{dimColor:!0,children:"("},void 0,!1,void 0,this),s.jsxDEV(HZ,{path:$.file_path,rainbow:!0},void 0,!1,void 0,this),s.jsxDEV(K,{dimColor:!0,children:")"},void 0,!1,void 0,this),X&&s.jsxDEV(s.Fragment,{children:[s.jsxDEV(K,{color:"gray",children:" ("},void 0,!1,void 0,this),s.jsxDEV(K,{color:"red",children:["-",J]},void 0,!0,void 0,this),s.jsxDEV(K,{color:"gray",children:"/"},void 0,!1,void 0,this),s.jsxDEV(K,{color:"green",children:["+",Q]},void 0,!0,void 0,this),s.jsxDEV(K,{color:"gray",children:")"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y&&Y.startsWith("Error:")&&s.jsxDEV(_,{marginTop:0,marginLeft:1,marginBottom:1,children:s.jsxDEV(K,{color:"red",children:Y},void 0,!1,void 0,this)},void 0,!1,void 0,this),!Y&&s.jsxDEV(_,{marginTop:0,children:s.jsxDEV(K,{color:"gray",children:"Press Enter to confirm, Ctrl+C to cancel"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}});var IZ=H(M(),1),c3={pending:"gray",in_progress:"yellow",completed:"green"},x3={pending:"○",in_progress:"◐",completed:"✓"},I0=u({name:"todo_write",description:"Use this tool to create and manage a structured task list",parameters:C0.shape,handler:d.waitForUIDone,render(Z){let $=Z.getInputRepaired();if(!$||!$.todos||!Array.isArray($.todos))return IZ.jsxDEV(_,{flexDirection:"column",borderStyle:"round",borderColor:"red",children:IZ.jsxDEV(K,{color:"red",children:"Error: Invalid todo data structure"},void 0,!1,void 0,this)},void 0,!1,void 0,this);let Y=$.todos;return IZ.jsxDEV(_,{flexDirection:"column",paddingY:1,children:IZ.jsxDEV(_,{flexDirection:"column",marginTop:0,children:(()=>{if(Y.length===0)return IZ.jsxDEV(_,{paddingX:1,children:IZ.jsxDEV(K,{color:"gray",children:"No tasks in todo list"},void 0,!1,void 0,this)},void 0,!1,void 0,this);return IZ.jsxDEV(_,{flexDirection:"column",marginTop:0,children:Y.map((J,Q)=>IZ.jsxDEV(_,{paddingX:1,paddingY:0,children:[IZ.jsxDEV(K,{color:c3[J.status],bold:!0,children:[x3[J.status]," "]},void 0,!0,void 0,this),IZ.jsxDEV(K,{color:J.status==="in_progress"?"white":"gray",children:[Q+1,". ",J.content]},void 0,!0,void 0,this)]},J.id,!0,void 0,this))},void 0,!1,void 0,this)})()},void 0,!1,void 0,this)},void 0,!1,void 0,this)}});var SZ=H(M(),1),f0=u({name:"read_file",description:"Reads a file from the local filesystem",parameters:S0.shape,handler:d.waitForUIDone,render(Z){let $=Z.getInputRepaired(),Y=Z.output;if(!Y)return SZ.jsxDEV(SZ.Fragment,{},void 0,!1,void 0,this);let J=Y.split(`
|
|
45
|
+
`).length;return SZ.jsxDEV(_,{flexDirection:"column",paddingX:1,children:SZ.jsxDEV(_,{children:[SZ.jsxDEV(K,{color:"blue",children:"Read "},void 0,!1,void 0,this),SZ.jsxDEV(K,{dimColor:!0,children:"("},void 0,!1,void 0,this),SZ.jsxDEV(HZ,{path:$.file_path,rainbow:!0},void 0,!1,void 0,this),SZ.jsxDEV(K,{dimColor:!0,children:")"},void 0,!1,void 0,this),SZ.jsxDEV(K,{color:"gray",dimColor:!0,children:[" ","(",J," lines)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}});var fZ=H(M(),1),T0=u({name:"glob_files",description:"Find files by name patterns",parameters:k0.shape,handler:d.waitForUIDone,render(Z){let $=Z.getInputRepaired(),Y=Z.output;if(!Y)return fZ.jsxDEV(fZ.Fragment,{},void 0,!1,void 0,this);let J=Y.split(`
|
|
46
|
+
`).filter(Boolean).length;return fZ.jsxDEV(_,{flexDirection:"column",paddingX:1,children:fZ.jsxDEV(K,{children:[fZ.jsxDEV(K,{color:"cyan",children:"Glob "},void 0,!1,void 0,this),fZ.jsxDEV(K,{dimColor:!0,children:"("},void 0,!1,void 0,this),fZ.jsxDEV(HZ,{path:$.pattern,rainbow:!0},void 0,!1,void 0,this),fZ.jsxDEV(K,{dimColor:!0,children:")"},void 0,!1,void 0,this),fZ.jsxDEV(K,{color:"gray",dimColor:!0,children:[" ","(",J," files)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}});var JZ=H(M(),1),y0=u({name:"search_files_rg",description:"Ripgrep - fast text search tool",parameters:{},handler:d.waitForUIDone,render(Z){let $=Z.getInputRepaired(),Y=Z.output;if(!Y)return JZ.jsxDEV(JZ.Fragment,{},void 0,!1,void 0,this);let J=Y.split(`
|
|
47
|
+
`).filter(Boolean).length,Q=$.pattern,W=$.path;if(!Q){let N=($.args||[]).filter((G)=>!G.startsWith("-"));if(N.length>0){if(W=N[N.length-1],N.length>1)Q=N[N.length-2]}}return JZ.jsxDEV(_,{flexDirection:"column",paddingX:1,children:JZ.jsxDEV(K,{children:[JZ.jsxDEV(K,{color:"magenta",children:"Ripgrep "},void 0,!1,void 0,this),Q&&JZ.jsxDEV(JZ.Fragment,{children:[JZ.jsxDEV(K,{dimColor:!0,children:"("},void 0,!1,void 0,this),JZ.jsxDEV(HZ,{path:Q,color:"magenta"},void 0,!1,void 0,this),JZ.jsxDEV(K,{dimColor:!0,children:")"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W&&W!=="./"&&JZ.jsxDEV(JZ.Fragment,{children:[JZ.jsxDEV(K,{dimColor:!0,children:" in "},void 0,!1,void 0,this),JZ.jsxDEV(HZ,{path:W,rainbow:!0},void 0,!1,void 0,this)]},void 0,!0,void 0,this),JZ.jsxDEV(K,{color:"gray",dimColor:!0,children:[" ","(",J," matches)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}});import{z as i1}from"zod";var pZ=H(M(),1),d3=i1.object({description:i1.string().optional(),file_path:i1.string(),content:i1.string()}),D0=u({name:"write_file",description:"Writes a file to the local filesystem",parameters:d3.shape,handler:d.waitForUIDone,render(Z){let $=Z.getInputRepaired(),Y=Z.output,X=$.content?.split(`
|
|
48
|
+
`)?.length;return pZ.jsxDEV(_,{flexDirection:"column",paddingX:1,children:[pZ.jsxDEV(_,{children:[pZ.jsxDEV(K,{color:"green",children:"Write "},void 0,!1,void 0,this),pZ.jsxDEV(K,{dimColor:!0,children:"("},void 0,!1,void 0,this),pZ.jsxDEV(HZ,{path:$.file_path,rainbow:!0},void 0,!1,void 0,this),pZ.jsxDEV(K,{dimColor:!0,children:")"},void 0,!1,void 0,this),pZ.jsxDEV(K,{dimColor:!0,children:[" (",X," lines)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Y&&Y.startsWith("Error:")&&pZ.jsxDEV(_,{marginTop:0,marginLeft:1,marginBottom:1,children:pZ.jsxDEV(K,{color:"red",children:Y},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}});var WZ=H(M(),1),l3=RY.schema,h0=u({name:"folder_operations",description:"Unified folder operations tool supporting create, list, delete, and existence check",parameters:l3.shape,handler:async(Z)=>{return await RY.invoke(Z)},render(Z){let $=Z.getInputRepaired(),Y=Z.output;if(!Y)return WZ.jsxDEV(WZ.Fragment,{},void 0,!1,void 0,this);let J={create:"green",list:"blue",exists:"yellow",delete:"red"}[$?.operation]||"cyan",W=Y.split(`
|
|
49
|
+
`).map((O,N)=>{if(O.match(/\d+ \w+|[\d-]+ [\d:]+/))return WZ.jsxDEV(K,{dimColor:!0,children:O},N,!1,void 0,this);if(O.includes("✓")||O.includes("successfully")||O.includes("created")||O.includes("deleted"))return WZ.jsxDEV(K,{color:"green",children:O},N,!1,void 0,this);if(O.includes("✗")||O.includes("Error")||O.includes("not found")||O.includes("failed"))return WZ.jsxDEV(K,{color:"red",children:O},N,!1,void 0,this);if(O.startsWith("/")||O.includes("/:"))return WZ.jsxDEV(K,{color:"cyan",children:O},N,!1,void 0,this);return WZ.jsxDEV(K,{children:O},N,!1,void 0,this)});return WZ.jsxDEV(_,{flexDirection:"column",paddingX:1,children:WZ.jsxDEV(_,{children:[WZ.jsxDEV(K,{bold:!0,color:J,children:[$.operation,"Folder"]},void 0,!0,void 0,this),WZ.jsxDEV(K,{dimColor:!0,children:" ("},void 0,!1,void 0,this),WZ.jsxDEV(HZ,{path:$.folder_path,rainbow:!0},void 0,!1,void 0,this),WZ.jsxDEV(K,{dimColor:!0,children:")"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}});import{z as i3}from"zod";var ZZ=H(M(),1),o3=i3.object({}),j0=u({name:"load_mcp_tools",description:`加载并查询所有可用的 MCP 工具列表。
|
|
50
|
+
|
|
51
|
+
返回:
|
|
52
|
+
- tools: MCP 工具列表,每个工具包含 name, description, schema
|
|
53
|
+
- status: MCP 连接状态,包含 toolCount, servers 等
|
|
54
|
+
|
|
55
|
+
使用场景:
|
|
56
|
+
- 查询当前有哪些 MCP 工具可用
|
|
57
|
+
- 获取工具的参数格式
|
|
58
|
+
- 检查 MCP 连接状态
|
|
59
|
+
|
|
60
|
+
重要:工具列表是动态的,建议在需要时调用此命令获取最新信息。`,parameters:o3.shape,handler:d.waitForUIDone,render(Z){let $=Z.output,Y=null;try{Y=JSON.parse($)}catch(X){}return ZZ.jsxDEV(_,{flexDirection:"column",children:[ZZ.jsxDEV(_,{children:ZZ.jsxDEV(K,{color:"blue",bold:!0,children:"load_mcp_tools"},void 0,!1,void 0,this)},void 0,!1,void 0,this),Y?.status&&ZZ.jsxDEV(_,{flexDirection:"column",marginTop:1,children:[ZZ.jsxDEV(K,{color:"green",children:"✓ MCP 已连接"},void 0,!1,void 0,this),Y.status.servers&&Y.status.servers.length>0&&ZZ.jsxDEV(_,{marginLeft:2,children:ZZ.jsxDEV(K,{color:"gray",children:["服务器: ",Y.status.servers.join(", ")]},void 0,!0,void 0,this)},void 0,!1,void 0,this),Y.status.toolCount!==void 0&&ZZ.jsxDEV(_,{marginLeft:2,children:ZZ.jsxDEV(K,{color:"gray",children:["工具数量: ",Y.status.toolCount]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y?.tools&&Y.tools.length>0&&ZZ.jsxDEV(_,{flexDirection:"column",marginTop:1,children:[ZZ.jsxDEV(K,{color:"gray",dimColor:!0,children:["可用工具 (",Y.tools.length,"):"]},void 0,!0,void 0,this),Y.tools.slice(0,5).map((X,J)=>ZZ.jsxDEV(_,{marginLeft:2,children:[ZZ.jsxDEV(K,{color:"cyan",children:X.name},void 0,!1,void 0,this),X.description&&ZZ.jsxDEV(K,{color:"gray",dimColor:!0,children:[" ","- ",X.description.slice(0,50),X.description.length>50?"...":""]},void 0,!0,void 0,this)]},J,!0,void 0,this)),Y.tools.length>5&&ZZ.jsxDEV(_,{marginLeft:2,children:ZZ.jsxDEV(K,{color:"gray",dimColor:!0,children:["... 还有 ",Y.tools.length-5," 个工具"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$&&ZZ.jsxDEV(b1,{content:$,maxLines:10,borderColor:"gray"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}});import{z as G1}from"zod";var UZ=H(M(),1),n3=G1.object({commands:G1.array(G1.object({name:G1.string().describe("MCP 工具名称"),args:G1.record(G1.string(),G1.any()).describe("工具参数,JSON 对象格式")})).describe("要执行的 MCP 工具列表")}),E0=u({name:"execute_mcp_tool",description:`执行一个或多个 MCP 工具。
|
|
61
|
+
|
|
62
|
+
使用格式:
|
|
63
|
+
- commands: MCP 工具数组,每个工具包含 name 和 args
|
|
64
|
+
|
|
65
|
+
示例:
|
|
66
|
+
- 执行单个工具: {commands: [{name: "filesystem.read_file", args: {path: "/path/to/file"}}]}
|
|
67
|
+
- 执行多个工具: {commands: [{name: "tool1", args: {...}}, {name: "tool2", args: {...}}]}
|
|
68
|
+
|
|
69
|
+
重要:
|
|
70
|
+
- 所有工具独立执行,失败不影响其他工具
|
|
71
|
+
- 返回结果按命令顺序排列
|
|
72
|
+
- 适合批量执行 MCP 相关操作`,parameters:n3.shape,handler:d.waitForUIDone,render(Z){let $=Z.getInputRepaired(),Y=Z.output,X=null;try{X=JSON.parse(Y)}catch(J){}return UZ.jsxDEV(_,{flexDirection:"column",children:[UZ.jsxDEV(_,{children:UZ.jsxDEV(K,{color:"blue",bold:!0,children:"execute_mcp_tool"},void 0,!1,void 0,this)},void 0,!1,void 0,this),$?.commands&&$.commands.length>0&&UZ.jsxDEV(_,{flexDirection:"column",marginTop:1,children:[UZ.jsxDEV(K,{color:"gray",dimColor:!0,children:["执行 ",$.commands.length," 个 MCP 工具:"]},void 0,!0,void 0,this),$.commands.map((J,Q)=>UZ.jsxDEV(_,{marginLeft:2,children:[UZ.jsxDEV(K,{color:"yellow",children:[Q+1,"."]},void 0,!0,void 0,this),UZ.jsxDEV(K,{color:"cyan",children:J.name},void 0,!1,void 0,this)]},Q,!0,void 0,this))]},void 0,!0,void 0,this),X?.results&&UZ.jsxDEV(_,{flexDirection:"column",marginTop:1,children:X.results.map((J,Q)=>UZ.jsxDEV(_,{marginLeft:2,children:J.error?UZ.jsxDEV(K,{color:"red",children:["✗ ",J.tool]},void 0,!0,void 0,this):UZ.jsxDEV(K,{color:"green",children:["✓ ",J.tool]},void 0,!0,void 0,this)},Q,!1,void 0,this))},void 0,!1,void 0,this),Y&&UZ.jsxDEV(b1,{content:Y,maxLines:10,borderColor:"gray"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}});var mZ=H(M(),1);import{z as C1}from"zod";var r3=C1.object({task_id:C1.string().optional().describe("The task id to ask the subagent"),subagent_id:C1.string().describe("The id of subagent to use"),subagent_type:C1.string().describe("The type of subagent to use (general-purpose, statusline-setup, output-style-setup)"),task_description:C1.string().describe("Describe what you want the subagent to do"),data_transfer:C1.any().optional().describe("Data to transfer to the subagent")}),s3=({tool:Z})=>{let $=Z.getInputRepaired();return mZ.jsxDEV(_,{paddingX:1,flexDirection:"column",children:mZ.jsxDEV(_,{children:[mZ.jsxDEV(K,{color:"yellow",children:"Task "},void 0,!1,void 0,this),mZ.jsxDEV(K,{dimColor:!0,children:"("},void 0,!1,void 0,this),mZ.jsxDEV(K,{color:"cyan",children:$.subagent_id},void 0,!1,void 0,this),mZ.jsxDEV(K,{dimColor:!0,children:")"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},a3=({tool:Z})=>{let $=Z.getInputRepaired(),Y=Z.output;return mZ.jsxDEV(_,{flexDirection:"column",children:mZ.jsxDEV(s3,{tool:Z},void 0,!1,void 0,this)},void 0,!1,void 0,this)},V0=u({name:"task",description:"Launch a subagent to handle complex tasks autonomously",parameters:r3.shape,handler:d.waitForUIDone,render(Z){return mZ.jsxDEV(a3,{tool:Z},void 0,!1,void 0,this)}});var g0=[q0,w0,v0,I0,f0,T0,y0,D0,h0,j0,E0,V0];var c=H(T(),1);var P=H(M(),1),t3=({validation:Z,onComplete:$})=>{let{config:Y,updateConfig:X}=n(),[J,Q]=c.useState("welcome"),[W,O]=c.useState(!1),[N,G]=c.useState(null),[F,U]=c.useState(0),[L,A]=c.useState(null),w=c.useRef(!0),q=c.useRef([]),R=c.useRef(F),b=Y?.providers||[];c.useEffect(()=>{q.current=b},[b]),c.useEffect(()=>{R.current=F},[F]);let D=b[F],$Z=c.useCallback(()=>A(null),[]);FZ($Z,L?3000:null);let m=c.useCallback(()=>{w.current=!0,G(null),O(!0),A(null)},[]),XZ=c.useCallback(()=>{let y=q.current,j=R.current,x=y[j];if(!x)return;w.current=!1,G(x),O(!0),A(null)},[]),S=c.useCallback(()=>{O(!1),G(null),A(null)},[]),OZ=c.useCallback(async(y)=>{let j=q.current,x=w.current,A1=x?[...j,y]:j.map((L1)=>L1.id===y.id?y:L1);if(await X({providers:A1}),A(x?`已添加 Provider: ${y.id}`:`已更新 Provider: ${y.id}`),x){let L1=A1.findIndex((DY)=>DY.id===y.id);U(L1>=0?L1:0)}S()},[X,S]),g=c.useCallback(()=>{if(!D||!D.apiKey){A("请先配置 Provider 的 API Key");return}X({provider_id:D.id,provider_type:D.type}).then(()=>{Q("model")})},[D,X]);if(qZ((y,j)=>{if(j.return||y===" ")Q("provider")},{isActive:J==="welcome"}),qZ((y,j)=>{if(W)return;if(j.upArrow)U((x)=>x>0?x-1:b.length-1);else if(j.downArrow)U((x)=>x<b.length-1?x+1:0);else if(y==="n"||y==="N")m();else if((y==="e"||y==="E"||j.return)&&D)XZ();else if(y==="s"||y==="S")g()},{isActive:J==="provider"}),J==="welcome")return P.jsxDEV(_,{flexDirection:"column",paddingX:2,paddingY:1,width:"100%",children:[P.jsxDEV(_,{marginBottom:1,children:P.jsxDEV(K,{bold:!0,color:"cyan",children:"欢迎使用 Zen Code"},void 0,!1,void 0,this)},void 0,!1,void 0,this),P.jsxDEV(_,{marginBottom:1,children:P.jsxDEV(K,{color:"yellow",children:Z.reason||"需要进行初始配置"},void 0,!1,void 0,this)},void 0,!1,void 0,this),P.jsxDEV(_,{flexDirection:"column",marginBottom:1,children:[P.jsxDEV(K,{dimColor:!0,children:"接下来将引导你完成:"},void 0,!1,void 0,this),P.jsxDEV(K,{dimColor:!0,children:" 1. 配置 Provider(API 服务提供商)"},void 0,!1,void 0,this),P.jsxDEV(K,{dimColor:!0,children:" 2. 选择 Model(AI 模型)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),P.jsxDEV(_,{children:P.jsxDEV(K,{color:"green",bold:!0,children:"按 Enter 开始配置"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(J==="provider")return P.jsxDEV(_,{flexDirection:"column",width:"100%",children:[P.jsxDEV(_,{paddingX:2,paddingY:1,children:P.jsxDEV(K,{bold:!0,color:"cyan",children:"步骤 1/2: Provider 配置"},void 0,!1,void 0,this)},void 0,!1,void 0,this),W?P.jsxDEV(m0,{provider:N||void 0,onCancel:S,onSave:OZ},void 0,!1,void 0,this):P.jsxDEV(P.Fragment,{children:P.jsxDEV(_,{flexDirection:"column",paddingX:2,gap:1,children:[b.length===0?P.jsxDEV(_,{paddingY:1,children:P.jsxDEV(K,{color:"yellow",children:"未配置任何 Provider,请按 'n' 新增"},void 0,!1,void 0,this)},void 0,!1,void 0,this):b.map((y,j)=>{let x=!!y.apiKey,A1=x?"green":"yellow";return P.jsxDEV(_,{marginBottom:0,gap:1,children:[P.jsxDEV(K,{color:j===F?"cyan":"gray",bold:j===F,children:j===F?">":" "},void 0,!1,void 0,this),P.jsxDEV(K,{bold:j===F,color:j===F?"cyan":void 0,children:y.id},void 0,!1,void 0,this),P.jsxDEV(K,{color:"gray",dimColor:j!==F,children:[" ",y.type]},void 0,!0,void 0,this),P.jsxDEV(K,{color:A1,dimColor:j!==F,children:[" ","[",x?"已配置":"未配置","]"]},void 0,!0,void 0,this)]},y.id,!0,void 0,this)}),P.jsxDEV(_,{marginTop:1,children:[P.jsxDEV(K,{color:"gray",dimColor:!0,children:[P.jsxDEV(K,{color:"cyan",children:"↑↓"},void 0,!1,void 0,this)," 导航 ",P.jsxDEV(K,{color:"cyan",children:"n"},void 0,!1,void 0,this)," 新增"," ",P.jsxDEV(K,{color:"cyan",children:"e/Enter"},void 0,!1,void 0,this)," 编辑"," "]},void 0,!0,void 0,this),b.some((y)=>y.apiKey)&&P.jsxDEV(K,{children:[P.jsxDEV(K,{color:"green",children:"s"},void 0,!1,void 0,this)," 下一步"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),L&&P.jsxDEV(_,{paddingX:2,paddingY:0,children:P.jsxDEV(K,{color:"green",children:L},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(J==="model")return P.jsxDEV(e3,{onComplete:$,onBack:()=>Q("provider")},void 0,!1,void 0,this);return null},e3=({onComplete:Z,onBack:$})=>{let{config:Y,updateConfig:X}=n(),[J,Q]=c.useState(0),W=c.useMemo(()=>{return Y?.providers.find((U)=>U.id===Y.provider_id)||null},[Y?.providers,Y?.provider_id]),{data:O=[],isLoading:N,error:G}=p0({provider:W,enabled:!!W?.apiKey}),F=O[J];if(qZ((U,L)=>{if(L.upArrow)Q((A)=>A>0?A-1:O.length-1);else if(L.downArrow)Q((A)=>A<O.length-1?A+1:0);else if(L.escape||U==="b"||U==="B")$();else if((L.return||U===" ")&&F)X({model_id:F.id}).then(()=>{Z()})},{isActive:!N&&!G&&Y!==null}),N)return P.jsxDEV(_,{flexDirection:"column",paddingX:2,paddingY:1,children:[P.jsxDEV(K,{bold:!0,color:"cyan",children:"步骤 2/2: Model 选择"},void 0,!1,void 0,this),P.jsxDEV(_,{marginTop:1,children:P.jsxDEV(K,{color:"gray",children:"加载模型列表中..."},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);if(G)return P.jsxDEV(_,{flexDirection:"column",paddingX:2,paddingY:1,children:[P.jsxDEV(K,{bold:!0,color:"cyan",children:"步骤 2/2: Model 选择"},void 0,!1,void 0,this),P.jsxDEV(_,{marginTop:1,children:P.jsxDEV(K,{color:"red",children:["加载失败: ",G.message]},void 0,!0,void 0,this)},void 0,!1,void 0,this),P.jsxDEV(_,{marginTop:1,children:P.jsxDEV(K,{color:"gray",dimColor:!0,children:["按 ",P.jsxDEV(K,{color:"cyan",children:"Esc"},void 0,!1,void 0,this)," 返回上一步"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return P.jsxDEV(_,{flexDirection:"column",width:"100%",children:[P.jsxDEV(_,{paddingX:2,paddingY:1,children:[P.jsxDEV(K,{bold:!0,color:"cyan",children:"步骤 2/2: Model 选择"},void 0,!1,void 0,this),W&&P.jsxDEV(K,{dimColor:!0,children:[" ","- ",W.id," (",W.type,")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),P.jsxDEV(_,{flexDirection:"column",paddingX:2,gap:0,children:O.map((U,L)=>P.jsxDEV(_,{marginBottom:0,gap:1,children:[P.jsxDEV(K,{color:L===J?"cyan":"gray",bold:L===J,children:L===J?">":" "},void 0,!1,void 0,this),P.jsxDEV(K,{bold:L===J,color:L===J?"cyan":void 0,children:U.id},void 0,!1,void 0,this),U.name!==U.id&&P.jsxDEV(K,{dimColor:L!==J,children:["(",U.name,")"]},void 0,!0,void 0,this)]},U.id,!0,void 0,this))},void 0,!1,void 0,this),P.jsxDEV(_,{marginTop:1,paddingX:2,children:P.jsxDEV(K,{color:"gray",dimColor:!0,children:[P.jsxDEV(K,{color:"cyan",children:"↑↓"},void 0,!1,void 0,this)," 导航 ",P.jsxDEV(K,{color:"cyan",children:"Enter/Space"},void 0,!1,void 0,this)," 确认"," ",P.jsxDEV(K,{color:"cyan",children:"Esc/B"},void 0,!1,void 0,this)," 返回"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},u0=t3;var c0=H(T(),1);var a=H(M(),1);class x0 extends c0.Component{state={hasError:!1,error:null,errorInfo:null};static getDerivedStateFromError(Z){return{hasError:!0,error:Z}}componentDidCatch(Z,$){let{name:Y="ErrorBoundary"}=this.props;console.error(`
|
|
73
|
+
========================================`),console.error(`[${Y}] React Error Caught`),console.error("========================================"),console.error("Error:",Z.message),console.error("Stack:",Z.stack),console.error("Component Stack:",$.componentStack),console.error(`========================================
|
|
74
|
+
`),this.setState({errorInfo:$})}render(){let{hasError:Z,error:$,errorInfo:Y}=this.state,{name:X="ErrorBoundary",fallback:J,children:Q}=this.props;if(Z){if(J)return a.jsxDEV(a.Fragment,{children:J},void 0,!1,void 0,this);return a.jsxDEV(_,{flexDirection:"column",padding:1,borderStyle:"double",borderColor:"red",children:[a.jsxDEV(_,{marginBottom:1,children:a.jsxDEV(K,{color:"red",bold:!0,children:["✗ [",X,"] Render Error"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),a.jsxDEV(_,{marginBottom:1,children:a.jsxDEV(K,{color:"red",children:["Message: ",$?.message||"Unknown error"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$?.stack&&a.jsxDEV(_,{flexDirection:"column",marginBottom:1,children:[a.jsxDEV(K,{color:"yellow",bold:!0,children:"Stack Trace:"},void 0,!1,void 0,this),a.jsxDEV(K,{color:"gray",children:$.stack.split(`
|
|
75
|
+
`).slice(0,5).join(`
|
|
76
|
+
`)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y?.componentStack&&a.jsxDEV(_,{flexDirection:"column",children:[a.jsxDEV(K,{color:"yellow",bold:!0,children:"Component Stack:"},void 0,!1,void 0,this),a.jsxDEV(K,{color:"gray",dimColor:!0,children:Y.componentStack.split(`
|
|
77
|
+
`).slice(0,5).join(`
|
|
78
|
+
`)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),a.jsxDEV(_,{marginTop:1,children:a.jsxDEV(K,{color:"blue",dimColor:!0,children:"Press Ctrl+C to exit"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}return a.jsxDEV(a.Fragment,{children:Q},void 0,!1,void 0,this)}}var E=x0;var I1=H(M(),1),Z4=({children:Z})=>{let{extraParams:$,toggleCompactMode:Y,config:X}=n(),{setTools:J,loading:Q}=o(),{hasPendingInteractions:W}=MZ();rY({tools:g0,setTools:J});let{needsSetup:O,validation:N}=tY({config:X});Z0({shouldFocus:!Q});let G=Y0(),{isChatView:F}=G,{handleExecuteTask:U}=$0({closePanel:G.closePanel});if(qZ((A,w)=>{if(w.ctrl&&A==="o"&&F&&!Q)Y();else if(w.ctrl&&A==="z"&&globalThis.Bun)import("v8").then((q)=>{q.writeHeapSnapshot("my-application.heapsnapshot")})},{isActive:F}),O&&N)return I1.jsxDEV(E,{name:"SetupWizard",fallback:null,children:I1.jsxDEV(u0,{validation:N,onComplete:G.closePanel},void 0,!1,void 0,this)},void 0,!1,void 0,this);let L={activeView:G.activeView,isChatView:G.isChatView,switchToHistory:G.switchToHistory,switchToKnowledge:G.switchToKnowledge,switchToSettings:G.switchToSettings,switchToModelProvider:G.switchToModelProvider,switchToAgent:G.switchToAgent,switchToTask:G.switchToTask,switchToMcp:G.switchToMcp,closePanel:G.closePanel,handleExecuteTask:U,hasPendingInteractions:W};return I1.jsxDEV(E,{name:"ChatPanelContext",fallback:null,children:I1.jsxDEV(J0,{value:L,children:Z},void 0,!1,void 0,this)},void 0,!1,void 0,this)},d0=({children:Z})=>{return I1.jsxDEV(Z4,{children:Z},void 0,!1,void 0,this)};var $Y=H(T(),1);var a1=H(T(),1);var oZ=H(M(),1),Y4=({content:Z,messageNumber:$})=>{let Y=o1(),X=()=>{if(typeof Z==="string")return oZ.jsxDEV(K,{color:"white",children:Z},void 0,!1,void 0,this);if(Array.isArray(Z))return Z.filter((J)=>J.type==="text").map((J,Q)=>oZ.jsxDEV(K,{color:"white",children:J.text},void 0,!1,void 0,this));return oZ.jsxDEV(K,{color:"white",children:JSON.stringify(Z)},void 0,!1,void 0,this)};return oZ.jsxDEV(_,{flexDirection:"column",children:[oZ.jsxDEV(_,{children:oZ.jsxDEV(K,{color:zZ("amber"),children:[$," ",Y]},void 0,!0,void 0,this)},void 0,!1,void 0,this),oZ.jsxDEV(_,{children:oZ.jsxDEV(K,{color:"gray",children:["└─ ",X()]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},n1=Y4;var D1=H(M(),1),l0=({children:Z,color:$,dim:Y,bold:X,italic:J})=>{let Q=Z.split(`
|
|
79
|
+
`).map((W)=>W===""?`
|
|
80
|
+
`:W);return D1.jsxDEV(D1.Fragment,{children:Q.map((W,O)=>D1.jsxDEV(K,{color:$,dimColor:Y,bold:X,italic:J,children:W},O,!1,void 0,this))},void 0,!1,void 0,this)};var o0=H(M(),1),i0=(Z)=>{return o0.jsxDEV(l0,{children:Z.children},void 0,!1,void 0,this)};var AZ=H(M(),1),$4=({message:Z,messageNumber:$})=>{let X=K0(Z),J=q1(Z);if(!J)return AZ.jsxDEV(AZ.Fragment,{},void 0,!1,void 0,this);return AZ.jsxDEV(_,{flexDirection:"column",children:[AZ.jsxDEV(_,{paddingBottom:0,marginBottom:1,children:AZ.jsxDEV(K,{color:zZ("teal"),children:[$," ","AI"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),X&&AZ.jsxDEV(X4,{thinking:X,visible:J.trim().length===0},void 0,!1,void 0,this),AZ.jsxDEV(i0,{children:J},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},X4=({thinking:Z,visible:$})=>{let Y=Z.split(`
|
|
81
|
+
`);return AZ.jsxDEV(_,{flexDirection:"column",marginBottom:1,children:[AZ.jsxDEV(_,{paddingBottom:0,children:AZ.jsxDEV(K,{color:"gray",bold:!0,children:["Think ",Y.length," rows"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),$&&AZ.jsxDEV(n0,{content:Z,maxLines:3},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},r1=$4;var v=H(M(),1),r0=["yellow","magenta","blue"],J4=(Z)=>{let $=0;for(let X=0;X<Z.length;X++)$=Z.charCodeAt(X)+(($<<5)-$);let Y=Math.abs($%r0.length);return r0[Y]},Q4=(Z)=>{return{success:"✓",completed:"✓",ok:"✓",error:"✗",failed:"✗",pending:"⏳",in_progress:"⏳",running:"⏳",cancelled:"⏹"}[Z]||"⏳"},K4=(Z,$=4,Y=100)=>{let X=Z.split(`
|
|
82
|
+
`),J=(O)=>{if(O.length<=Y)return O;return O.substring(0,Y)+`... (${O.length-Y} more chars)`};if(X.length<=$)return X.map(J).join(`
|
|
83
|
+
`);let Q=X.slice(0,2).map(J),W=X.slice(X.length-3).map(J);return[...Q,`... and more ${X.length-5} lines`,...W].join(`
|
|
84
|
+
`)},W4=({content:Z})=>{let $=(Y,X=0,J=0)=>{let W=" ".repeat(X);if(J>=3)return v.jsxDEV(K,{dimColor:!0,children:"{...} (truncated)"},void 0,!1,void 0,this);if(Y===null)return v.jsxDEV(K,{color:"gray",children:"null"},void 0,!1,void 0,this);if(typeof Y!=="object"){let G=JSON.stringify(Y);if(typeof Y==="string"&&G.length>102){let F=G.substring(1,101);return v.jsxDEV(K,{children:[v.jsxDEV(K,{color:"cyan",children:['"',F,'..."']},void 0,!0,void 0,this)," ",v.jsxDEV(K,{dimColor:!0,children:["(truncated, ",G.length-2," chars)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}if(typeof Y==="string")return v.jsxDEV(K,{color:"cyan",children:G},void 0,!1,void 0,this);else if(typeof Y==="number")return v.jsxDEV(K,{color:"yellow",children:Y},void 0,!1,void 0,this);else if(typeof Y==="boolean")return v.jsxDEV(K,{color:"magenta",children:Y.toString()},void 0,!1,void 0,this);else return v.jsxDEV(K,{children:G},void 0,!1,void 0,this)}if(Array.isArray(Y)){if(Y.length===0)return v.jsxDEV(K,{color:"gray",children:"[]"},void 0,!1,void 0,this);let G=5;return v.jsxDEV(v.Fragment,{children:[`
|
|
85
|
+
`,Y.slice(0,G).map((F,U)=>v.jsxDEV(K,{children:[v.jsxDEV(K,{children:W},void 0,!1,void 0,this),v.jsxDEV(K,{color:"green",children:"- "},void 0,!1,void 0,this)," ",$(F,X+1,J+1),U<Math.min(Y.length,G)-1?`
|
|
86
|
+
`:""]},void 0,!0,void 0,this)),Y.length>G&&v.jsxDEV(K,{children:[`
|
|
87
|
+
`,v.jsxDEV(K,{children:W},void 0,!1,void 0,this),v.jsxDEV(K,{dimColor:!0,children:["... (",Y.length-G," more)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}let O=Object.keys(Y);if(O.length===0)return v.jsxDEV(K,{color:"gray"},void 0,!1,void 0,this);let N=5;return v.jsxDEV(v.Fragment,{children:[O.slice(0,N).map((G,F)=>v.jsxDEV(K,{children:[v.jsxDEV(K,{children:W},void 0,!1,void 0,this),v.jsxDEV(K,{color:"blue",children:G},void 0,!1,void 0,this)," ",v.jsxDEV(K,{color:"gray",children:": "},void 0,!1,void 0,this)," ",$(Y[G],X+1,J+1),F<Math.min(O.length,N)-1?`
|
|
88
|
+
`:""]},void 0,!0,void 0,this)),O.length>N&&v.jsxDEV(K,{children:[`
|
|
89
|
+
`,v.jsxDEV(K,{children:W},void 0,!1,void 0,this),v.jsxDEV(K,{dimColor:!0,children:["... (",O.length-N," more)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)};return v.jsxDEV(K,{children:$(Z)},void 0,!1,void 0,this)},_4=({message:Z,messageNumber:$})=>{let{getToolUIRender:Y,client:X}=o(),J=new zY(Z,X),Q=J.getInputRepaired(),W=Q?.title?`: ${Q.title}`:Q?.description?`: ${Q.description}`:"",O=Z.name?Y(Z.name):null,N=J4(Z.name||"");return N=Z.status==="error"?"red":"yellow",v.jsxDEV(E,{children:v.jsxDEV(_,{flexDirection:"column",children:[v.jsxDEV(_,{children:[v.jsxDEV(K,{color:N,children:[$," ",Z.name,v.jsxDEV(K,{color:"gray",children:W},void 0,!1,void 0,this)]},void 0,!0,void 0,this),v.jsxDEV(K,{children:[" ",Q4(Z?.status)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O?v.jsxDEV(_,{children:[v.jsxDEV(K,{color:"gray",children:"└─ "},void 0,!1,void 0,this),v.jsxDEV(_,{flexDirection:"column",children:O(Z)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):v.jsxDEV(_,{flexDirection:"column",paddingTop:0,children:[v.jsxDEV(_,{children:[v.jsxDEV(K,{color:"gray",children:"└─ "},void 0,!1,void 0,this),v.jsxDEV(W4,{content:J.getInputRepaired()},void 0,!1,void 0,this)]},void 0,!0,void 0,this),v.jsxDEV(_,{paddingTop:0,paddingBottom:0,children:[v.jsxDEV(K,{color:"gray",children:"└─ "},void 0,!1,void 0,this),v.jsxDEV(K,{dimColor:!0,italic:!0,children:K4(s0(Z.content))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),Z.sub_messages?.length?v.jsxDEV(_,{children:[v.jsxDEV(K,{color:"gray",children:"└─ "},void 0,!1,void 0,this),v.jsxDEV(K,{color:N,dimColor:!0,children:["(hidden ",Z.sub_messages.length," subagent messages)"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},a0=_4;var $1=H(M(),1),t0=a1.memo(function({renderMessages:$,startIndex:Y,staticKey:X}){let[J,Q]=a1.useState(!1);FZ(()=>Q(!0),J?null:0);let W=(F,U,L,A)=>$1.jsxDEV(_,{flexDirection:"column",borderStyle:L?"double":"single",borderLeft:!0,paddingLeft:1,paddingBottom:1,borderBottom:!1,borderTop:!1,borderRight:!1,borderLeftColor:F.type==="ai"?zZ("teal"):F.type==="human"?zZ("amber"):"yellow",children:F.type==="human"?$1.jsxDEV(n1,{content:F.content,messageNumber:U+1+Y},void 0,!1,void 0,this):F.type==="tool"?$1.jsxDEV(a0,{message:F,messageNumber:U+1+Y},void 0,!1,void 0,this):$1.jsxDEV(r1,{message:F,messageNumber:U+1+Y},void 0,!1,void 0,this)},F.id?`${A}-${F.id}`:`${A}-msg-${U}`,!1,void 0,this),O=$.findIndex((F)=>{if(F.type==="tool"&&!F.done&&!["success","error"].includes(F.status))return!0;return!1});if(O===-1)O=$.length-1;let N=$.slice(0,O),G=$.slice(O);if(!J)return $1.jsxDEV(_,{flexDirection:"column",children:$.map((F,U)=>W(F,U,U===O,"init"))},void 0,!1,void 0,this);return $1.jsxDEV(_,{flexDirection:"column",children:[$1.jsxDEV(s1,{items:N,children:(F,U)=>W(F,U,!1,"hist")},X,!1,void 0,this),G.map((F,U)=>W(F,N.length+U,!0,"curr"))]},void 0,!0,void 0,this)});var RZ=H(T(),1);var e0=H(T(),1),N1=H(M(),1),Z2=function(Z){if(process.platform==="win32"||Z.forceStatic)return N1.jsxDEV(s1,{...Z},void 0,!1,void 0,this);let $=e0.useMemo(()=>`ps-${Z.items.length}-${Math.random().toString(36).substring(2,9)}`,[Z.items.length]);return N1.jsxDEV(N1.Fragment,{children:Z.items.map((Y,X)=>N1.jsxDEV(N1.Fragment,{children:Z.children(Y,X)},`${$}-${X}`,!1,void 0,this))},void 0,!1,void 0,this)};var t=H(M(),1),O4=RZ.memo(function({toolGroup:$,groupId:Y,getToolUIRender:X,depth:J=0,loading:Q}){let W=RZ.useMemo(()=>`tger-${Math.random().toString(36).substring(2,9)}`,[]);if(J>1)return null;return t.jsxDEV(_,{flexDirection:"column",children:$.map((O,N)=>{let G=O.name?X(O.name):null;if(!G)return null;let F=O.sub_messages?.length||0,U=O.sub_messages?.slice(-4)||[],L=F-U.length;return t.jsxDEV(RZ.Fragment,{children:[G(O),U.length?t.jsxDEV(t.Fragment,{children:[L>0&&t.jsxDEV(_,{paddingLeft:2,children:t.jsxDEV(K,{dimColor:!0,children:["... ",L," more submessage",L>1?"s":""]},void 0,!0,void 0,this)},void 0,!1,void 0,this),t.jsxDEV(PY,{renderMessages:U,startIndex:1,depth:J+1,staticKey:`${W}-sub-d${J}-i${N}`,getToolUIRender:X,loading:Q},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null]},`${W}-${Y}-${N}`,!0,void 0,this)})},void 0,!1,void 0,this)}),Y2=RZ.memo(function({message:$,displayIndex:Y,isCurrent:X,startIndex:J=0,getToolUIRender:Q,depth:W=0,loading:O}){return t.jsxDEV(_,{flexDirection:"column",borderStyle:X?"double":"single",paddingBottom:1,borderLeft:!1,borderBottom:!1,borderTop:$.type==="group"?!1:!0,borderRight:!1,borderTopColor:$.type==="ai"?zZ("teal"):$.type==="human"?zZ("amber"):zZ("rose"),children:[$.type==="human"?t.jsxDEV(n1,{content:$.content,messageNumber:Y+1+J},void 0,!1,void 0,this):null,$.type==="ai"?t.jsxDEV(r1,{message:$,messageNumber:Y+1+J},void 0,!1,void 0,this):null,$.type==="group"&&t.jsxDEV(t.Fragment,{children:t.jsxDEV(O4,{toolGroup:$.toolGroup,groupId:$.id,getToolUIRender:Q,depth:W,loading:O},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}),$2=(Z)=>{if(Z.type!=="ai")return!0;try{let $=q1(Z);return!!($&&$.trim().length>0)}catch{return!1}},PY=RZ.memo(function({renderMessages:$,startIndex:Y,staticKey:X,depth:J=0,getToolUIRender:Q,loading:W}){let O=RZ.useMemo(()=>`cmb-${Math.random().toString(36).substring(2,9)}`,[]),[N,G]=RZ.useState(!1);FZ(()=>G(!0),N?null:0);let F=RZ.useMemo(()=>{let w=0;return $.filter((q)=>{if(q.type==="ai")return $2(q);return!0}).reduce((q,R)=>{if(R.type==="tool"){let b=q[q.length-1];if(b&&b.type==="group"&&b.toolGroup.length<5)b.toolGroup.push(R);else q.push({id:`tool-group-${w++}`,type:"group",toolGroup:[R]})}else q.push(R);return q},[])},[$,$2]),U=F.length-1;if(U===-1)U=F.length-1;if(!W)U=F.length;let L=F.slice(0,U),A=F.slice(U);return t.jsxDEV(_,{flexDirection:"column",children:[t.jsxDEV(Z2,{items:L,forceStatic:W,children:(w,q)=>t.jsxDEV(Y2,{message:w,displayIndex:q,isCurrent:!1,startIndex:Y,getToolUIRender:Q,depth:J,loading:W},w.id?`hist-${w.id}`:`hist-msg-${J}-${q}`,!1,void 0,this)},void 0,!1,void 0,this),A.map((w,q)=>t.jsxDEV(Y2,{message:w,displayIndex:L.length+q,isCurrent:!0,startIndex:Y,getToolUIRender:Q,depth:J,loading:W},w.id?`curr-${w.id}`:`curr-msg-${J}-${L.length}-${q}`,!1,void 0,this))]},void 0,!0,void 0,this)});var B=H(M(),1),G4=()=>{let Z=o1(),$=new Date().toLocaleDateString(),{extraParams:Y,AVAILABLE_MODELS:X,config:J}=n(),Q=Y.mcp_config||{},W=Object.keys(Q).length,O=X2(),N=process.platform,G=N==="darwin"?"macOS":N==="win32"?"Windows":"Linux",F=process.cwd(),U=J?.provider_id||process.env.MODEL_PROVIDER||"openai",A=!!J?.providers?.find((R)=>R.id===U)?.apiKey,w=X.length>0,q=A&&w;return B.jsxDEV(_,{flexDirection:"column",borderStyle:"round",borderColor:"cyan",paddingX:1,marginBottom:1,children:[B.jsxDEV(_,{flexDirection:"row",justifyContent:"space-between",borderBottom:!1,children:[B.jsxDEV(K,{color:"cyan",bold:!0,children:"ZEN CODE"},void 0,!1,void 0,this),B.jsxDEV(K,{color:"gray",children:$},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.jsxDEV(_,{flexDirection:"row",marginTop:1,gap:2,children:[B.jsxDEV(_,{flexDirection:"column",children:B.jsxDEV(K,{color:"cyan",children:`███████╗███████╗███╗ ██╗
|
|
90
|
+
╚══███╔╝██╔════╝████╗ ██║
|
|
91
|
+
███╔╝ █████╗ ██╔██╗ ██║
|
|
92
|
+
███╔╝ ██╔══╝ ██║╚██╗██║
|
|
93
|
+
███████╗███████╗██║ ╚████║
|
|
94
|
+
╚══════╝╚══════╝╚═╝ ╚═══╝`},void 0,!1,void 0,this)},void 0,!1,void 0,this),B.jsxDEV(_,{flexDirection:"column",justifyContent:"center",flexGrow:1,children:[B.jsxDEV(_,{marginBottom:1,children:q?B.jsxDEV(K,{color:"green",bold:!0,children:[" ","[ SYSTEM ONLINE ]"]},void 0,!0,void 0,this):B.jsxDEV(K,{color:"red",bold:!0,children:[" ","[ CONFIG REQUIRED ]"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),B.jsxDEV(_,{flexDirection:"column",gap:0,children:[B.jsxDEV(_,{children:[B.jsxDEV(K,{color:"blue",children:"USER::"},void 0,!1,void 0,this),B.jsxDEV(K,{color:"white",children:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.jsxDEV(_,{children:[B.jsxDEV(K,{color:"blue",children:"ARCH::"},void 0,!1,void 0,this),B.jsxDEV(K,{color:"white",children:process.arch},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.jsxDEV(_,{children:[B.jsxDEV(K,{color:"blue",children:"PLATFORM::"},void 0,!1,void 0,this),B.jsxDEV(K,{color:"white",children:G},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.jsxDEV(_,{children:[B.jsxDEV(K,{color:"blue",children:"NODE::"},void 0,!1,void 0,this),B.jsxDEV(K,{color:"white",children:process.version},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.jsxDEV(_,{children:[B.jsxDEV(K,{color:"blue",children:"TERM::"},void 0,!1,void 0,this),B.jsxDEV(K,{color:"white",children:O},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.jsxDEV(_,{children:[B.jsxDEV(K,{color:"blue",children:[U?.toUpperCase(),"::"]},void 0,!0,void 0,this),B.jsxDEV(K,{color:w?"white":"red",children:w?Y.model_id:"无可用模型"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B.jsxDEV(_,{marginTop:1,paddingX:1,flexDirection:"column",gap:0,children:[B.jsxDEV(_,{children:B.jsxDEV(K,{color:"blue",children:"WORKING_DIR ::"},void 0,!1,void 0,this)},void 0,!1,void 0,this),B.jsxDEV(_,{children:B.jsxDEV(K,{color:"gray",children:F},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!q&&B.jsxDEV(_,{marginTop:1,paddingX:1,flexDirection:"column",gap:0,children:[B.jsxDEV(K,{color:"red",bold:!0,children:["⚠️ 需要配置 ",U==="anthropic"?"Anthropic":"OpenAI"," API:"]},void 0,!0,void 0,this),!A&&B.jsxDEV(K,{color:"yellow",children:" • 请使用 /m 进入模型配置面板"},void 0,!1,void 0,this),!w&&B.jsxDEV(K,{color:"yellow",children:" • 请确保网络连接正常以获取模型列表"},void 0,!1,void 0,this),B.jsxDEV(K,{color:"gray",children:" • 配置后使用 /m 查看可用模型"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B.jsxDEV(_,{marginTop:1,paddingTop:1,borderTop:!1,flexDirection:"row",justifyContent:"space-between",children:[B.jsxDEV(_,{gap:3,children:[B.jsxDEV(_,{children:[B.jsxDEV(K,{color:"green",children:"●"},void 0,!1,void 0,this),B.jsxDEV(K,{color:"white",dimColor:!0,children:[" ","AGENTS"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B.jsxDEV(_,{children:[B.jsxDEV(K,{color:W>0?"green":"gray",children:"●"},void 0,!1,void 0,this),B.jsxDEV(K,{color:"white",dimColor:!0,children:[" ","MCP (",W,")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),B.jsxDEV(_,{children:[q?B.jsxDEV(K,{color:"yellow",bold:!0,children:">>> WAITING_FOR_INPUT"},void 0,!1,void 0,this):B.jsxDEV(K,{color:"red",bold:!0,children:">>> CONFIGURATION_NEEDED"},void 0,!1,void 0,this),B.jsxDEV(K,{color:"yellow",dimColor:!0,children:[" ","▌"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},J2=G4;var YY=H(T(),1);var j1=H(T(),1);class Q2{commands=new Map;aliases=new Map;register(Z){if(this.commands.set(Z.name,Z),Z.aliases)Z.aliases.forEach(($)=>{this.aliases.set($,Z.name)})}getCommand(Z){let $=this.aliases.get(Z)||Z;return this.commands.get($)}getAllCommands(){return Array.from(this.commands.values())}isCommand(Z){return Z.trim().startsWith("/")}parseCommand(Z){if(!this.isCommand(Z))return null;let Y=Z.trim().slice(1).split(/\s+/),X=Y[0],J=Y.slice(1);return{command:X,args:J}}async executeCommand(Z,$){let Y=this.parseCommand(Z);if(!Y)return{success:!1,message:"无效的命令格式"};let{command:X,args:J}=Y,Q=this.getCommand(X);if(!Q)return{success:!1,message:`未知命令: /${X}`};if(Q.requiresArgs&&J.length===0)return{success:!1,message:`命令 /${X} 需要参数。用法: ${Q.usage||`/${X} <args>`}`};if(Q.validateArgs&&!Q.validateArgs(J))return{success:!1,message:`命令 /${X} 参数无效。用法: ${Q.usage||`/${X} <args>`}`};try{return await Q.execute(J,$)}catch(W){return{success:!1,message:`命令执行失败: ${W instanceof Error?W.message:String(W)}`}}}getSuggestions(Z){if(!Z.startsWith("/"))return[];let $=Z.slice(1).toLowerCase(),Y=[];if($===""){let O=["new","history","task","agent","model","settings","mcp","knowledge","summarize","template","plan","interview","help"];for(let N of O){let G=this.commands.get(N);if(G)Y.push({command:N,displayText:`/${N}`,description:G.description})}return Y.slice(0,10)}let X=new Set(["history","knowledge","help","init","model","config"]),J=[],Q=[];for(let[O,N]of this.commands){let G=O.toLowerCase();if(G.startsWith($))J.push({command:O,displayText:`/${O}`,description:N.description});else if(G.includes($))Q.push({command:O,displayText:`/${O}`,description:N.description});if(N.aliases)for(let F of N.aliases){let U=F.toLowerCase();if(U.startsWith($))J.push({command:O,displayText:`/${F}`,description:`${N.description} (别名)`});else if(U.includes($))Q.push({command:O,displayText:`/${F}`,description:`${N.description} (别名)`})}}let W=(O,N)=>{let G=X.has(O.command)?1:0,F=X.has(N.command)?1:0;if(G!==F)return F-G;return O.displayText.length-N.displayText.length};return J.sort(W),Q.sort(W),Y.push(...J,...Q),Y.slice(0,10)}getHelp(Z){if(Z){let Y=this.getCommand(Z);if(!Y)return`未找到命令: /${Z}`;let X=`命令: /${Y.name}
|
|
95
|
+
`;if(X+=`描述: ${Y.description}
|
|
96
|
+
`,Y.usage)X+=`用法: ${Y.usage}
|
|
97
|
+
`;if(Y.aliases&&Y.aliases.length>0)X+=`别名: ${Y.aliases.map((J)=>`/${J}`).join(", ")}
|
|
98
|
+
`;return X}let $=`可用命令:
|
|
99
|
+
`;for(let Y of this.getAllCommands())$+=` /${Y.name} - ${Y.description}
|
|
100
|
+
`;return $+=`
|
|
101
|
+
使用 /help <命令名> 获取具体命令的帮助信息`,$}}var nZ=new Q2;var K2={name:"settings",description:"打开 Settings 面板(Model 和 Provider 配置)",aliases:["s","model","settings","m"],usage:"/settings",execute:async(Z,$)=>{return $.switchToSettings?.(),{success:!0,message:"打开 Settings 面板",shouldClearInput:!0}}};var N4={name:"new",description:"初始化新的对话会话",aliases:["new","n"],usage:"/new [主题]",execute:async(Z,$)=>{let Y=Z.join(" ");if(await $.createNewChat(),Y){let X=`我想开始一个关于 "${Y}" 的新对话。`;return $.sendMessage([{type:"human",content:X}]),{success:!0,message:`已创建新对话,主题: ${Y}`,shouldClearInput:!0}}return{success:!0,message:"已创建新对话",shouldClearInput:!0}}},z4={name:"help",description:"显示命令帮助信息",aliases:["h","?"],usage:"/help [命令名]",execute:async(Z,$)=>{let Y=Z[0];return{success:!0,message:nZ.getHelp(Y),shouldClearInput:!0}}},U4={name:"task",description:"打开任务看板面板",aliases:["tasks","kanban"],usage:"/task",execute:async(Z,$)=>{return $.switchToTask?.(),{success:!0,message:"打开任务看板",shouldClearInput:!0}}},W2=[N4,z4,U4,K2];import{readFileSync as F4,readdirSync as H4}from"fs";import{join as _2}from"path";var h1=null;function A4(Z){let $=Z.split(`
|
|
102
|
+
`);if($[0]!=="---")return{metadata:{},content:Z};let Y=$.indexOf("---",1);if(Y===-1)return{metadata:{},content:Z};let X=$.slice(1,Y),J={};for(let W of X){let O=W.match(/^(\w+):\s*(.+)$/);if(O){let[,N,G]=O;if(N==="name")J.name=G.trim();if(N==="description")J.description=G.trim()}}let Q=$.slice(Y+1).join(`
|
|
103
|
+
`).trim();return{metadata:J,content:Q}}function O2(Z,$){let Y=new Map;try{let X=H4(Z,{withFileTypes:!0});for(let J of X){let Q=_2(Z,J.name);if(J.isDirectory())O2(Q,$).forEach((O)=>Y.set(O.name,O));else if(J.name.endsWith(".md"))try{let W=F4(Q,"utf-8"),{metadata:O,content:N}=A4(W),G=O.name||J.name.replace(/\.md$/,"");if(!O.name)console.warn(`Template missing "name" in frontmatter: ${Q}`);Y.set(G,{name:G,description:O.description||"No description",content:N,path:Q})}catch(W){console.warn(`Failed to read template file: ${Q}`,W)}}}catch(X){if(X.code!=="ENOENT")console.warn(`Error scanning templates directory: ${Z}`,X)}return Y}function G2(){h1=null}function N2(Z="./.claude/templates"){if(h1)return Array.from(h1.values());let $=Z.startsWith("/")?Z:_2(process.cwd(),Z);return h1=O2($,$),Array.from(h1.values())}var L4={name:"status",description:"显示当前聊天状态信息",aliases:["stat","info"],execute:async(Z,$)=>{return{success:!0,message:[`当前代理: ${$.client?.availableAssistants.find((J)=>J.graph_id===$.currentAgent)?.name||"未选择"} (${$.currentAgent||"N/A"})`,`聊天ID: ${$.client?.currentChatId?.slice(-8)||"N/A"}`,`可用代理数: ${$.client?.availableAssistants?.length||0}`,`模型: ${$.extraParams?.model_id||"N/A"}`].join(`
|
|
104
|
+
`),shouldClearInput:!0}}},w4={name:"template",description:"插入预定义的消息模板",aliases:["tpl","t"],usage:"/template <模板名>",execute:async(Z,$)=>{let Y=Z[0];if(Z.includes("--refresh"))return G2(),{success:!0,message:"模板缓存已清除",shouldClearInput:!0};let X=N2();if(!Y){if(X.length===0)return{success:!0,message:"当前没有可用的模板。可以在 ./.claude/templates/ 目录下创建 .md 模板文件。",shouldClearInput:!0};return{success:!0,message:`可用模板:
|
|
105
|
+
${X.map((W)=>` - ${W.name}: ${W.description}`).join(`
|
|
106
|
+
`)}
|
|
107
|
+
|
|
108
|
+
使用 /template <name> 插入模板`,shouldClearInput:!0}}let J=X.find((Q)=>Q.name===Y);if(!J){let Q=X.map((W)=>W.name).join(", ");return{success:!1,message:`未找到模板 "${Y}"。可用模板: ${Q||"(无)"}`}}return $.setUserInput(J.content),{success:!0,message:`已插入模板: ${J.name}
|
|
109
|
+
${J.description}`,shouldClearInput:!1}}},M4={name:"config",description:"查看或设置配置项",aliases:["cfg"],usage:"/config [key] [value]",execute:async(Z,$)=>{if(Z.length===0)return{success:!0,message:["当前配置:",` model_id: ${$.extraParams?.model_id||"N/A"}`,` provider_id: ${$.extraParams?.provider_id||"N/A"}`,` enable_thinking: ${$.extraParams?.enable_thinking??!0}`,` compact_mode: ${$.compactMode??!1}`,` stream_refresh_interval: ${$.extraParams?.stream_refresh_interval}`,"","使用方法:"," /config <key> <value> - 设置配置项"," /config <key> - 查看配置项","","可用配置项:"," model_id - 当前使用的模型 ID"," provider_id - 当前使用的 Provider ID"," enable_thinking - 启用思考模式 (true, false)"," compact_mode - 紧凑模式 (true, false)"," stream_refresh_interval - 流刷新间隔"].join(`
|
|
110
|
+
`),shouldClearInput:!0};let Y=Z[0],X=["enable_thinking","stream_refresh_interval","provider_id","model_id","compact_mode"];if(!X.includes(Y))return{success:!1,message:`无效的配置项: ${Y}
|
|
111
|
+
可用配置项: ${X.join(", ")}`,shouldClearInput:!0};if(Z.length===1){let Q;switch(Y){case"model_id":Q=$.extraParams?.model_id;break;case"provider_id":Q=$.extraParams?.provider_id;break;case"enable_thinking":Q=$.extraParams?.enable_thinking??!0;break;case"compact_mode":Q=$.compactMode??!1;break;case"stream_refresh_interval":Q=$.extraParams?.stream_refresh_interval;break}return{success:!0,message:`${Y}: ${Q??"未设置"}`,shouldClearInput:!0}}let J=Z.slice(1).join(" ");if(Y==="enable_thinking"||Y==="compact_mode"){if(J==="true"||J==="1"||J==="yes")J=!0;else if(J==="false"||J==="0"||J==="no")J=!1}if(Y==="stream_refresh_interval"){let Q=parseInt(J,10);if(!isNaN(Q))J=Q}try{if(!$.updateConfig)return{success:!1,message:"无法访问配置更新功能",shouldClearInput:!0};await $.updateConfig({[Y]:J});let Q=`配置已更新: ${Y} = ${J} 重启程序生效`;if(Y==="model_id"||Y==="provider_id")Q+=`
|
|
112
|
+
|
|
113
|
+
提示: 更换模型或提供商后,请重启程序以确保完整生效`;return{success:!0,message:Q,shouldClearInput:!0}}catch(Q){return{success:!1,message:`配置更新失败: ${Q instanceof Error?Q.message:String(Q)}`,shouldClearInput:!0}}}},q4={name:"mcp",description:"管理 MCP 服务器配置",aliases:[],usage:"/mcp [list|add|remove|get] [args]",execute:async(Z,$)=>{if(Z.length===0)return{success:!0,message:["MCP 配置管理命令:","","用法:"," /mcp list - 列出所有 MCP 服务器"," /mcp add <name> <json_string> - 添加 MCP 服务器 (传统格式)"," /mcp remove <name> - 移除 MCP 服务器"," /mcp get <name> - 查看 MCP 服务器详情","","示例 (JSON 格式):",' /mcp add context7 {"name":"context7","url":"https://mcp.context7.com/mcp"}',""].join(`
|
|
114
|
+
`),shouldClearInput:!0};let Y=Z[0];try{let J=($.extraParams||{}).mcp_config||{};switch(Y){case"list":{let Q=Object.keys(J);if(Q.length===0)return{success:!0,message:"当前未配置任何 MCP 服务器",shouldClearInput:!0};return{success:!0,message:`已配置的 MCP 服务器:
|
|
115
|
+
${Q.map((O)=>{return` - ${O}`}).join(`
|
|
116
|
+
`)}`,shouldClearInput:!0}}case"add":{if(Z.length<2)return{success:!1,message:"用法: /mcp add <name> <json_string>",shouldClearInput:!0};let[Q,W,...O]=Z,N=O.join(""),G={...J,[W]:JSON.parse(N)};if(!$.updateConfig)return{success:!1,message:"无法访问配置更新功能",shouldClearInput:!0};return await $.updateConfig({mcp_config:G}),{success:!0,message:`MCP 服务器 "${W}" 已添加`,shouldClearInput:!0}}case"remove":{if(Z.length<2)return{success:!1,message:"用法: /mcp remove <name>",shouldClearInput:!0};let Q=Z[1];if(!J[Q])return{success:!1,message:`MCP 服务器 "${Q}" 不存在`,shouldClearInput:!0};let W={...J};if(delete W[Q],!$.updateConfig)return{success:!1,message:"无法访问配置更新功能",shouldClearInput:!0};return await $.updateConfig({mcp_config:W}),{success:!0,message:`MCP 服务器 "${Q}" 已移除
|
|
117
|
+
重启程序生效`,shouldClearInput:!0}}case"get":{if(Z.length<2)return{success:!1,message:"用法: /mcp get <name>",shouldClearInput:!0};let Q=Z[1],W=J[Q];if(!W)return{success:!1,message:`MCP 服务器 "${Q}" 不存在`,shouldClearInput:!0};return{success:!0,message:[`MCP 服务器: ${Q}`,` URL: ${W.url}`,` Headers: ${JSON.stringify(W.headers||{},null,2)}`].join(`
|
|
118
|
+
`),shouldClearInput:!0}}default:return{success:!1,message:`未知操作: ${Y}
|
|
119
|
+
可用操作: list, add, remove, get`,shouldClearInput:!0}}}catch(X){return{success:!1,message:`MCP 操作失败: ${X instanceof Error?X.message:String(X)}`,shouldClearInput:!0}}}},R4={name:"summarize",description:"智能总结对话并提取有价值信息保存为记忆",aliases:["sum","summary","compact"],usage:"/sum",execute:async(Z,$)=>{if(!$.renderMessages||$.renderMessages.length===0)return{success:!1,message:"当前会话没有消息可以总结",shouldClearInput:!0};let Y=$.renderMessages.length;try{let X={...$.extraParams,switch_command:"smart_memory"};return await $.sendMessage([],{extraParams:X}),{success:!0,message:`正在智能分析 ${Y} 条消息并提取记忆...`,shouldClearInput:!0}}catch(X){return{success:!1,message:`总结失败: ${X instanceof Error?X.message:String(X)}`,shouldClearInput:!0}}}},P4={name:"history",description:"打开历史面板",aliases:["h"],execute:async(Z,$)=>{if($.switchToHistory)return $.switchToHistory(),{success:!0,message:"已打开历史面板",shouldClearInput:!0};return{success:!1,message:"面板切换功能不可用",shouldClearInput:!0}}},B4={name:"knowledge",description:"打开知识库面板",aliases:["k"],execute:async(Z,$)=>{if($.switchToKnowledge)return $.switchToKnowledge(),{success:!0,message:"已打开知识库面板",shouldClearInput:!0};return{success:!1,message:"面板切换功能不可用",shouldClearInput:!0}}},b4={name:"close",description:"关闭当前面板返回聊天",aliases:["c","q"],execute:async(Z,$)=>{if($.closePanel)return $.closePanel(),{success:!0,message:"已关闭面板",shouldClearInput:!0};return{success:!1,message:"面板关闭功能不可用",shouldClearInput:!0}}},v4={name:"model",description:"打开模型/Provider配置面板",aliases:["mp","m"],execute:async(Z,$)=>{if($.switchToModelProvider)return $.switchToModelProvider(),{success:!0,message:"已打开模型/Provider配置面板",shouldClearInput:!0};return{success:!1,message:"模型面板切换功能不可用",shouldClearInput:!0}}},C4={name:"ralph",description:"进入循环模式,持续发送响应直到返回 <COMPLETE></COMPLETE>",aliases:[],usage:"/ralph <text>",requiresArgs:!0,execute:async(Z,$)=>{let Y=Z.join(" ");if(!Y.trim())return{success:!1,message:"请提供要循环的文本内容",shouldClearInput:!0};if($.startRalphLoop)return $.startRalphLoop(Y),{success:!0,message:`进入 Ralph 循环模式: "${Y}"`,shouldClearInput:!0};return{success:!1,message:"Ralph 循环功能不可用",shouldClearInput:!0}}},z2=[L4,w4,M4,q4,R4,P4,B4,b4,v4,C4];var I4={name:"agent",description:"打开 Agent 选择面板",aliases:["a"],usage:"/agent",execute:async(Z,$)=>{if($.switchToAgent)$.switchToAgent();return{success:!0,message:"打开 Agent 面板",shouldClearInput:!0}}},U2=[I4];var S4=`
|
|
120
|
+
[Interview Mode Activated]
|
|
121
|
+
|
|
122
|
+
I want to clarify requirements through guided questions.
|
|
123
|
+
|
|
124
|
+
1. Ask multiple questions at once - Use multiple \`ask_user_questions\` tool_calls for efficiency
|
|
125
|
+
2. Use multiple-choice questions - Reduce user typing with single_select or multi_select
|
|
126
|
+
3. Enable custom input - Set allow_custom_input: true when unsure of all options
|
|
127
|
+
4. Keep questions focused - One thing per question
|
|
128
|
+
5. Limit to 3-5 questions in one \`ask_user_questions\` tool_call - Don't overwhelm the user
|
|
129
|
+
|
|
130
|
+
After getting answers:
|
|
131
|
+
1. Summarize user's requirements
|
|
132
|
+
2. Output a document about this task
|
|
133
|
+
3. ask user question to improve
|
|
134
|
+
4. save your plan to standard way it store in this project
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
User's original message:
|
|
138
|
+
`,f4={name:"interview",description:"Start Interview mode to clarify requirements through questions",aliases:["i"],usage:"/interview [your request]",requiresArgs:!0,execute:async(Z,$)=>{let Y=Z.join(" ").trim();if(!Y)return{success:!1,message:`❌ Interview 模式需要提供任务描述
|
|
139
|
+
用法: /interview [your request]`};let X=S4+Y;return $.sendMessage([{type:"human",content:X}],{extraParams:$.extraParams}),{success:!0,message:"\uD83D\uDCCB Interview mode activated",shouldClearInput:!0}}},F2=[f4];var k4=`
|
|
140
|
+
[Plan Mode Activated]
|
|
141
|
+
|
|
142
|
+
I want to create a comprehensive implementation plan for this task.
|
|
143
|
+
|
|
144
|
+
**Your Role:** You are in Plan Mode - help me create detailed, actionable implementation plans.
|
|
145
|
+
|
|
146
|
+
**Process:**
|
|
147
|
+
1. Ask clarifying questions to understand requirements (use ask_user_questions for efficiency)
|
|
148
|
+
2. Gather context by reading relevant files
|
|
149
|
+
3. Create a detailed, actionable plan
|
|
150
|
+
4. Save the plan to \`docs/plans/YYYY-MM-DD-<feature-name>.md\`
|
|
151
|
+
|
|
152
|
+
**Plan Format Requirements:**
|
|
153
|
+
- Each task should be 2-5 minutes of work
|
|
154
|
+
- Include exact file paths, code snippets, and commands
|
|
155
|
+
- Document testing strategies and edge cases
|
|
156
|
+
|
|
157
|
+
After the plan is created, ask if I want to execute it immediately or save for later.
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
User's original request:
|
|
162
|
+
`,T4={name:"plan",description:"Enter Plan mode to create detailed implementation plans",aliases:["p"],usage:"/plan [your task description]",requiresArgs:!0,execute:async(Z,$)=>{let Y=Z.join(" ").trim();if(!Y)return{success:!1,message:`❌ Plan 模式需要提供任务描述
|
|
163
|
+
用法: /plan [your task description]`};let X=k4+Y;return $.sendMessage([{type:"human",content:X}],{extraParams:$.extraParams}),{success:!0,message:"\uD83D\uDCCB Plan mode activated",shouldClearInput:!0}}},H2=[T4];var y4=`
|
|
164
|
+
[Create AGENTS.md Mode Activated]
|
|
165
|
+
|
|
166
|
+
I want to create or update the AGENTS.md file for this project.
|
|
167
|
+
|
|
168
|
+
**Your Role:** You are in AGENTS.md creation mode - help me create comprehensive project guidelines for AI agents.
|
|
169
|
+
|
|
170
|
+
**Process:**
|
|
171
|
+
1. Ask clarifying questions to understand the project requirements (use ask_user_questions for efficiency)
|
|
172
|
+
2. Read existing files to understand the project structure and context
|
|
173
|
+
3. Analyze the codebase to identify patterns, conventions, and best practices
|
|
174
|
+
4. Create or update the AGENTS.md file in the root directory
|
|
175
|
+
|
|
176
|
+
**AGENTS.md Format:**
|
|
177
|
+
The AGENTS.md file should include:
|
|
178
|
+
- Project overview and objectives
|
|
179
|
+
- Architecture and design patterns used
|
|
180
|
+
- Coding standards and conventions
|
|
181
|
+
- Important file locations and their purposes
|
|
182
|
+
- Development workflows and processes
|
|
183
|
+
- Testing strategies and guidelines
|
|
184
|
+
- Deployment considerations
|
|
185
|
+
- Common gotchas or important notes
|
|
186
|
+
|
|
187
|
+
**File Location:**
|
|
188
|
+
The AGENTS.md should be created/updated in the project root directory.
|
|
189
|
+
|
|
190
|
+
After the AGENTS.md is created or updated, provide a summary of the changes made.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
User's request:
|
|
195
|
+
`,D4={name:"create-agent-md",description:"Create or update AGENTS.md file with project guidelines",usage:"/create-agent-md [description or goal for AGENTS.md]",requiresArgs:!1,execute:async(Z,$)=>{let Y=Z.join(" ").trim()||"start to explore and create AGENTS.md",X=y4+Y;return $.sendMessage([{type:"human",content:X}],{extraParams:$.extraParams}),{success:!0,message:"\uD83D\uDCDD AGENTS.md creation mode activated",shouldClearInput:!0}}},A2=[D4];var L2={name:"compact-message",description:"切换紧凑消息显示模式 (紧凑模式显示简化的消息预览)",aliases:["cm"],usage:"/compact-message",requiresArgs:!1,execute:async(Z,$)=>{try{let{updateConfig:Y,compactMode:X}=$;if(!Y)return{success:!1,message:"配置更新功能不可用"};let J=X??!1;return await Y({compact_mode:!J}),{success:!0,message:!J?"紧凑模式已启用":"紧凑模式已关闭",shouldClearInput:!0}}catch(Y){return{success:!1,message:`切换紧凑模式失败: ${Y instanceof Error?Y.message:String(Y)}`}}}};var w2={name:"mcp",description:"打开 MCP 服务器配置面板",aliases:[],usage:"/mcp",execute:async(Z,$)=>{return $.switchToMcp?.(),{success:!0,message:"打开 MCP 配置面板",shouldClearInput:!0}}};var M2={name:"settings",description:"打开通用设置面板",aliases:["set"],usage:"/settings",execute:async(Z,$)=>{if($.switchToSettings)return $.switchToSettings(),{success:!0,message:"打开通用设置面板",shouldClearInput:!0};return{success:!1,message:"Settings 面板不可用",shouldClearInput:!0}}};var h4=`
|
|
196
|
+
[Memory Organization Mode Activated]
|
|
197
|
+
|
|
198
|
+
I want to organize and manage the .claude/memories folder.
|
|
199
|
+
|
|
200
|
+
**Your Role:** You are in Memory Organization Mode - analyze, organize, and maintain the project memory files in .claude/memories/.
|
|
201
|
+
|
|
202
|
+
**Process:**
|
|
203
|
+
1. Read all memory files in .claude/memories/ directory
|
|
204
|
+
2. Analyze the structure and identify issues:
|
|
205
|
+
- Duplicate or overlapping memories
|
|
206
|
+
- Outdated or irrelevant content
|
|
207
|
+
- Poorly organized categories
|
|
208
|
+
- Missing or inconsistent metadata
|
|
209
|
+
3. Propose and execute organization actions:
|
|
210
|
+
- Merge related memories
|
|
211
|
+
- Update outdated information
|
|
212
|
+
- Improve categorization and tags
|
|
213
|
+
- Remove or archive obsolete memories
|
|
214
|
+
- Improve file naming consistency
|
|
215
|
+
4. Generate a summary report of changes made
|
|
216
|
+
|
|
217
|
+
**Memory File Format:**
|
|
218
|
+
- Each memory is a directory with MEMORY.md file
|
|
219
|
+
- MEMORY.md contains YAML frontmatter + Markdown content
|
|
220
|
+
- Frontmatter fields: name, description, tags, category, created, last_updated, priority, context_scope
|
|
221
|
+
|
|
222
|
+
**Evaluation Criteria for Keeping/Merging:**
|
|
223
|
+
- **Relevance**: Is this still applicable to the project?
|
|
224
|
+
- **Accuracy**: Is the information still correct?
|
|
225
|
+
- **Uniqueness**: Does this duplicate other memories?
|
|
226
|
+
- **Completeness**: Is the information sufficient?
|
|
227
|
+
|
|
228
|
+
**Categories:**
|
|
229
|
+
- architecture: 架构决策、设计模式、系统结构
|
|
230
|
+
- bug-fix: Bug 修复和问题解决方案
|
|
231
|
+
- workflow: 工作流程和最佳实践
|
|
232
|
+
- configuration: 配置和环境设置
|
|
233
|
+
- optimization: 性能优化和改进
|
|
234
|
+
|
|
235
|
+
**Priority Levels:**
|
|
236
|
+
- high: 关键架构决策、重要问题解决方案
|
|
237
|
+
- medium: 有用的模式、次要配置信息
|
|
238
|
+
- low: 一般性建议、参考信息
|
|
239
|
+
|
|
240
|
+
**Output Format:**
|
|
241
|
+
Provide a detailed report of:
|
|
242
|
+
- Current state of memories (count by category)
|
|
243
|
+
- Issues identified
|
|
244
|
+
- Actions taken (merged, updated, removed, archived)
|
|
245
|
+
- Recommendations for future memory maintenance
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
`,j4={name:"memory-clear",description:"整理 .claude/memories 文件夹,清理、合并和优化项目记忆",aliases:["mem-clean","clean-memory"],usage:"/memory-clear",execute:async(Z,$)=>{let Y=Z.join(" ").trim(),X=h4+(Y?`Additional context: ${Y}
|
|
250
|
+
|
|
251
|
+
---`:"开始整理记忆文件夹。");return $.sendMessage([{type:"human",content:X}],{extraParams:$.extraParams}),{success:!0,message:"\uD83E\uDDE0 记忆整理模式已激活 - 正在分析 .claude/memories 文件夹...",shouldClearInput:!0}}},q2=[j4];function kZ(Z){if(Z===0)return"0 B";let $=1024,Y=["B","KB","MB","GB"],X=Math.floor(Math.log(Z)/Math.log($));return parseFloat((Z/Math.pow($,X)).toFixed(2))+" "+Y[X]}function BY(){let Z=process.memoryUsage();return{heapTotal:Z.heapTotal,heapUsed:Z.heapUsed,external:Z.external,rss:Z.rss,heapUsedMB:(Z.heapUsed/1024/1024).toFixed(2),heapTotalMB:(Z.heapTotal/1024/1024).toFixed(2)}}function R2(){return typeof Bun<"u"}function E4(){let Z=BY();if(R2()&&typeof Bun.gc==="function"){Bun.gc(!0);let $=BY(),Y=Z.heapUsed-$.heapUsed;return{success:!0,before:Z,after:$,freed:Y,message:`GC 执行成功,释放了 ${kZ(Math.max(0,Y))} 内存`}}if(globalThis.global&&typeof globalThis.global.gc==="function"){globalThis.global.gc();let $=BY(),Y=Z.heapUsed-$.heapUsed;return{success:!0,before:Z,after:$,freed:Y,message:`GC 执行成功,释放了 ${kZ(Math.max(0,Y))} 内存`}}return{success:!1,before:Z,message:`/gc 命令仅在 Bun 或者 node --expose-gc 可用
|
|
252
|
+
`+"当前内存使用: "+kZ(Z.heapUsed)+" / "+kZ(Z.heapTotal)}}function V4(){let Z=[];if(!R2())Z.push("/gc 命令仅支持 Bun 运行时,请使用 bun 启动应用");else Z.push("当前运行在 Bun 环境,/gc 命令已就绪");return Z.join(`
|
|
253
|
+
`)}var P2={name:"gc",description:"手动触发垃圾回收,减少内存占用",aliases:["garbage-collect","mem-opt","memory"],usage:"/gc",execute:async(Z,$)=>{let Y=Z.includes("-v")||Z.includes("--verbose"),X=E4(),J=`\uD83D\uDDD1️ ${X.message}
|
|
254
|
+
`;if(X.before&&X.after){if(J+=`
|
|
255
|
+
\uD83D\uDCCA 内存统计:
|
|
256
|
+
`,J+=` Before: ${kZ(X.before.heapUsed)} / ${kZ(X.before.heapTotal)}
|
|
257
|
+
`,J+=` After: ${kZ(X.after.heapUsed)} / ${kZ(X.after.heapTotal)}
|
|
258
|
+
`,X.freed!==void 0&&X.freed>0)J+=` Freed: ${kZ(X.freed)}
|
|
259
|
+
`}else if(X.before)J+=`
|
|
260
|
+
\uD83D\uDCCA 当前内存使用: ${kZ(X.before.heapUsed)} / ${kZ(X.before.heapTotal)}
|
|
261
|
+
`;if(!X.success||Y)J+=`
|
|
262
|
+
\uD83D\uDCA1 提示:
|
|
263
|
+
`,J+=` ${V4().replace(/\n/g,`
|
|
264
|
+
`)}
|
|
265
|
+
`;return{success:X.success,message:J,shouldClearInput:!0}}};[...W2,...z2,...U2,...F2,...H2,...A2,...q2,L2,w2,M2,P2].forEach((Z)=>{nZ.register(Z)});var rZ=H(M(),1),B2=(Z)=>{let{onCommandExecuted:$,switchToHistory:Y,switchToKnowledge:X,switchToSettings:J,switchToAgent:Q,closePanel:W,switchToTask:O,switchToModelProvider:N,switchToMcp:G}=Z,{userInput:F,setUserInput:U,sendMessage:L,currentAgent:A,client:w,createNewChat:q,renderMessages:R}=o(),{extraParams:b,updateConfig:D,AVAILABLE_MODELS:$Z,compactMode:m}=n(),[XZ,S]=j1.useState(null),[OZ,g]=j1.useState(null);FZ(()=>{S(null)},XZ?3000:null),FZ(()=>{g(null)},OZ?5000:null);let y=F.startsWith("/"),j=y?nZ.getSuggestions(F):[],x=y,A1=j1.useCallback(async(V1)=>{let S1=V1||F;if(!nZ.isCommand(S1))return!1;try{let f1={userInput:S1,setUserInput:U,sendMessage(JY,hY={}){return L(JY,{extraParams:{...b,...hY.extraParams},...hY,metadata:EZ})},currentAgent:A,client:w,extraParams:b,createNewChat(){return q(EZ)},updateConfig:D,AVAILABLE_MODELS:$Z,renderMessages:R,compactMode:m,switchToHistory:Y,switchToKnowledge:X,switchToSettings:J,switchToModelProvider:N,switchToAgent:Q,switchToTask:O,switchToMcp:G,closePanel:W,startRalphLoop:Z.startRalphLoop},tZ=await nZ.executeCommand(S1,f1);if(!tZ.success)S(tZ.message||"命令执行失败");else if(tZ.message)g(tZ.message);if(tZ.shouldClearInput)U("");if(tZ.shouldSendMessage&&tZ.messageContent){let JY=[{type:"human",content:tZ.messageContent}];L(JY,{extraParams:b})}return $?.(),!0}catch(f1){return S(`命令执行错误: ${f1 instanceof Error?f1.message:String(f1)}`),!0}},[F,U,L,A,w,b,q,$,$Z,m,Y,X,J,N,Q,O,G,W,Z.startRalphLoop]);return{isCommandInput:y,commandSuggestions:j,showCommandHint:x,commandError:XZ,executeCommand:A1,CommandHintUI:()=>{if(!x||j.length===0)return null;return rZ.jsxDEV(_,{marginBottom:1,flexDirection:"column",children:[rZ.jsxDEV(K,{color:"yellow",bold:!0,children:"命令建议:"},void 0,!1,void 0,this),j.slice(0,5).map((V1,S1)=>rZ.jsxDEV(K,{color:"cyan",children:[V1.displayText," - ",V1.description]},S1,!0,void 0,this)),j.length>5&&rZ.jsxDEV(K,{color:"gray",children:["...还有 ",j.length-5," 个命令"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},CommandErrorUI:()=>{if(!XZ)return null;return rZ.jsxDEV(_,{marginBottom:1,children:rZ.jsxDEV(K,{color:"red",children:["❌ ",XZ]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},CommandSuccessUI:()=>{if(!OZ)return null;return rZ.jsxDEV(_,{marginBottom:1,children:rZ.jsxDEV(K,{color:"green",children:["✅ ",OZ]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}}};function b2({manager:Z,enabled:$=!0}){return t1({queryKey:e1.skills.list(),queryFn:async()=>{if(!Z)throw Error("ConfigManager not initialized");return await Z.listSkills()},enabled:$&&!!Z,staleTime:120000})}var g4=[{id:"agents/default",name:"Jarvis",description:"代码实现助手"},{id:"agents/manager",name:"Manager",description:"任务管理员"}];function v2({enabled:Z=!0}={}){return t1({queryKey:e1.agents.list(),queryFn:async()=>{return g4},enabled:Z,staleTime:300000})}var TZ=H(T(),1);function C2({loading:Z,renderMessages:$,sendMessage:Y,setUserInput:X,extraParams:J}){let[Q,W]=TZ.useState(null),[O,N]=TZ.useState(!1),G=TZ.useRef(!1),F=TZ.useRef(0),U=TZ.useCallback(async(A)=>{if(!A)return;let w=G.current?`
|
|
266
|
+
|
|
267
|
+
[System Context: You are currently in Ralph loop mode. Continue executing the task based on previous context. Respond with <COMPLETE></COMPLETE> tag when the task is complete.]`:"",q=[{type:"human",content:A+w}];await Y(q,{extraParams:J,metadata:EZ})},[Y,J]);FZ(()=>{if(Q)U(Q);N(!1)},O?100:null);let L=TZ.useCallback((A)=>{W(A),G.current=!0,F.current=0,N(!0)},[]);return TZ.useEffect(()=>{if(G.current&&Q&&!Z){let A=$.length;if(A>F.current){F.current=A;let w=$[A-1],q=q1(w);if(typeof q==="string"&&q.includes("<COMPLETE></COMPLETE>"))G.current=!1,W(null),dZ("Ralph 循环完成");else U(Q)}}},[Z,$,Q,U]),{ralphLoopText:Q,startRalphLoop:L,sendTextMessage:U}}var QZ=H(T(),1);var z1=H(T(),1);import bY from"fuzzysort";function p4(Z,$){if($===0)return!0;let Y=Z[$-1];return Y===" "||Y===`
|
|
268
|
+
`||Y==="\t"}function m4(Z,$){let Y=$+1;while(Y<Z.length&&!/[\s\n\t]/.test(Z[Y]))Y++;return Z.slice($+1,Y)}function u4(Z,$,Y){if(!$)return Z.slice(0,Y).map((W)=>({skill:W,result:null}));let X=Z.map((W)=>({skill:W,name:bY.prepare(W.name.toLowerCase()),description:bY.prepare((W.description||"").toLowerCase())}));return bY.go($.toLowerCase(),X,{key:"name",limit:Y,threshold:-1e4}).map((W)=>({skill:W.obj.skill,result:W}))}function I2({skills:Z,maxSuggestions:$=5}){let[Y,X]=z1.useState({visible:!1,query:"",filteredSkills:[],triggerPosition:-1}),J=z1.useCallback((G,F)=>{let U=G.lastIndexOf("#");if(U===-1){X((w)=>({...w,visible:!1,query:"",filteredSkills:[],triggerPosition:-1}));return}if(!p4(G,U)){X((w)=>({...w,visible:!1,query:"",filteredSkills:[],triggerPosition:-1}));return}let L=m4(G,U),A=u4(Z,L,$);if(A.length===1&&A[0].skill.name.toLowerCase()===L.toLowerCase()){X((w)=>({...w,visible:!1,query:"",filteredSkills:[],triggerPosition:-1}));return}X((w)=>({...w,visible:!0,query:L,filteredSkills:A,triggerPosition:U}))},[Z.length,$]),Q=z1.useCallback(()=>{if(!Y.visible||Y.filteredSkills.length===0)return null;return Y.filteredSkills[0]?.skill??null},[Y.visible,Y.filteredSkills]),W=z1.useCallback((G)=>{let F=Q();if(!F)return G;let U=G.slice(0,Y.triggerPosition),L=G.slice(Y.triggerPosition+1+Y.query.length);return`${U}#${F.name} ${L}`},[Q,Y.triggerPosition,Y.query]),O=z1.useCallback(()=>{X((G)=>({...G,visible:!1,query:"",filteredSkills:[],triggerPosition:-1}))},[]),N=Y.visible&&Y.filteredSkills.length>0;return{state:Y,checkTrigger:J,getFirstSkill:Q,complete:W,hide:O,isActive:N}}var U1=H(T(),1);function c4(Z,$){if($===0)return!0;let Y=Z[$-1];return Y===" "||Y===`
|
|
269
|
+
`||Y==="\t"}function x4(Z,$){let Y=$+1;while(Y<Z.length&&!/[\s\n\t]/.test(Z[Y]))Y++;return Z.slice($+1,Y)}function d4(Z,$,Y){let X=$.toLowerCase(),J=Z.filter((Q)=>{let W=Q.name.toLowerCase(),O=Q.id.toLowerCase();return W.startsWith(X)||O.includes(X)});return J.sort((Q,W)=>Q.name.localeCompare(W.name)),J.slice(0,Y)}function S2({agents:Z,maxSuggestions:$=5}){let[Y,X]=U1.useState({visible:!1,query:"",filteredAgents:[],triggerPosition:-1}),J=U1.useCallback((G,F)=>{let U=G.lastIndexOf("@");if(U===-1){X((w)=>({...w,visible:!1,query:"",filteredAgents:[],triggerPosition:-1}));return}if(!c4(G,U)){X((w)=>({...w,visible:!1,query:"",filteredAgents:[],triggerPosition:-1}));return}let L=x4(G,U),A=d4(Z,L,$);if(A.length===1&&A[0].name.toLowerCase()===L.toLowerCase()){X((w)=>({...w,visible:!1,query:"",filteredAgents:[],triggerPosition:-1}));return}X((w)=>({...w,visible:!0,query:L,filteredAgents:A,triggerPosition:U}))},[Z.length,$]),Q=U1.useCallback(()=>{if(!Y.visible||Y.filteredAgents.length===0)return null;return Y.filteredAgents[0]??null},[Y.visible,Y.filteredAgents]),W=U1.useCallback((G)=>{let F=Q();if(!F)return G;let U=G.slice(0,Y.triggerPosition),L=G.slice(Y.triggerPosition+1+Y.query.length);return`${U}@${F.name} ${L}`},[Q,Y.triggerPosition,Y.query]),O=U1.useCallback(()=>{X((G)=>({...G,visible:!1,query:"",filteredAgents:[],triggerPosition:-1}))},[]),N=Y.visible&&Y.filteredAgents.length>0;return{state:Y,checkTrigger:J,getFirstAgent:Q,complete:W,hide:O,isActive:N}}var f2=H(T(),1);var LZ=H(M(),1);function l4({name:Z,result:$}){if(!$)return LZ.jsxDEV(K,{color:"cyan",children:Z},void 0,!1,void 0,this);let Y=$.highlight((X)=>LZ.jsxDEV(K,{color:"green",bold:!0,children:X},void 0,!1,void 0,this));if(Array.isArray(Y))return LZ.jsxDEV(K,{color:"cyan",children:Y.map((X,J)=>{if(typeof X==="string")return LZ.jsxDEV(K,{children:X},`p-${J}`,!1,void 0,this);return LZ.jsxDEV(f2.default.Fragment,{children:X},`m-${J}`,!1,void 0,this)})},void 0,!1,void 0,this);return LZ.jsxDEV(K,{color:"cyan",children:Z},void 0,!1,void 0,this)}var k2=({visible:Z,skills:$,query:Y,maxVisible:X=5})=>{if(!Z||$.length===0)return null;let J=$.slice(0,X);return LZ.jsxDEV(_,{marginBottom:1,flexDirection:"column",children:[LZ.jsxDEV(K,{color:"yellow",bold:!0,children:"技能建议 (按 → 补全):"},void 0,!1,void 0,this),J.map(({skill:Q,result:W})=>LZ.jsxDEV(_,{children:[LZ.jsxDEV(K,{children:" #"},void 0,!1,void 0,this),LZ.jsxDEV(l4,{name:Q.name,result:W},void 0,!1,void 0,this)]},Q.name,!0,void 0,this)),$.length>X&&LZ.jsxDEV(K,{color:"gray",children:["...还有 ",$.length-X," 个技能"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)};var _Z=H(M(),1);function i4({name:Z,query:$}){if(!$)return _Z.jsxDEV(K,{color:"magenta",children:Z},void 0,!1,void 0,this);let Y=Z.toLowerCase(),X=$.toLowerCase();if(Y.startsWith(X))return _Z.jsxDEV(_Z.Fragment,{children:[_Z.jsxDEV(K,{color:"green",bold:!0,children:Z.slice(0,$.length)},void 0,!1,void 0,this),_Z.jsxDEV(K,{color:"magenta",children:Z.slice($.length)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return _Z.jsxDEV(K,{color:"magenta",children:Z},void 0,!1,void 0,this)}var T2=({visible:Z,agents:$,query:Y,maxVisible:X=5})=>{if(!Z||$.length===0)return null;let J=$.slice(0,X);return _Z.jsxDEV(_,{marginBottom:1,flexDirection:"column",children:[_Z.jsxDEV(K,{color:"yellow",bold:!0,children:"Agent 建议 (按 → 补全):"},void 0,!1,void 0,this),J.map((Q)=>_Z.jsxDEV(_,{children:[_Z.jsxDEV(K,{children:" @"},void 0,!1,void 0,this),_Z.jsxDEV(i4,{name:Q.name,query:Y},void 0,!1,void 0,this),_Z.jsxDEV(K,{dimColor:!0,children:[" - ",Q.description]},void 0,!0,void 0,this)]},Q.id,!0,void 0,this)),$.length>X&&_Z.jsxDEV(K,{color:"gray",children:["...还有 ",$.length-X," 个 Agent"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)};var D2=H(T(),1);function h2(){let{extraParams:Z}=n(),{sendMessage:$,loading:Y}=o(),{bufferedMessage:X,clearBuffer:J}=ZY(),Q=y2();D2.useEffect(()=>{if(!Y&&X.trim()){let W=[{type:"human",content:X}];J(),$(W,{extraParams:Z}).then(()=>{dZ("Zen Code 完成任务")}).catch((O)=>{console.error("Failed to send buffered message:",O)})}},[Y,X,$,Z,J,Q])}var sZ=H(M(),1),j2=({value:Z,onChange:$,onSubmit:Y,loading:X,placeholder:J="输入消息...",commandHandler:Q,skills:W=[],agents:O=[]})=>{h2();let{bufferedMessage:N,setBufferedMessage:G,clearBuffer:F}=ZY(),[U,L]=QZ.useState(Z),A=QZ.useRef(!1),w=I2({skills:W,maxSuggestions:5}),q=S2({agents:O,maxSuggestions:5});QZ.useEffect(()=>{if(Z!==U)A.current=!0,L(Z)},[Z]);let R=QZ.useMemo(()=>U.startsWith("/"),[U]);QZ.useEffect(()=>{if(!R)w.checkTrigger(U),q.checkTrigger(U)},[U,R]);let b=QZ.useCallback((g)=>{if(A.current){A.current=!1;return}L(g),$(g)},[$]),D=QZ.useCallback((g)=>{if(!g.trim())return;if(w.hide(),q.hide(),R){Y(g),L("");return}if(X)G(g),L("");else Y(g),L("")},[R,X,Y,G,w,q]),$Z=QZ.useCallback(()=>{if(q.isActive){q.hide();return}if(w.isActive){w.hide();return}if(N)F();else L("")},[N,F,w.isActive,q.isActive]),m=QZ.useCallback(()=>{if(!R||!Q.commandSuggestions||Q.commandSuggestions.length===0)return!1;let y=Q.commandSuggestions[0],x=(y.displayText||y.command||"")+" ";return b(x),!0},[R,Q.commandSuggestions,b]),XZ=QZ.useCallback(()=>{if(!w.isActive)return!1;let g=w.complete(U);return b(g),w.hide(),!0},[w.isActive,U,b]),S=QZ.useCallback(()=>{if(!q.isActive)return!1;let g=q.complete(U);return b(g),q.hide(),!0},[q.isActive,U,b]),OZ=QZ.useMemo(()=>{if(X)return N?"按 Esc 清空缓冲区":"AI 响应中,Enter 将消息加入缓冲区";if(R)return"输入命令... (试试 /help,按 → 补全第一个建议)";if(q.isActive)return"按 → 补全 Agent";if(w.isActive)return"按 → 补全技能";return J},[X,N,R,q.isActive,w.isActive,J]);return sZ.jsxDEV(_,{flexDirection:"column",children:[N&&sZ.jsxDEV(_,{padding:1,children:sZ.jsxDEV(K,{color:"yellow",children:["\uD83D\uDCDD 缓冲区: ",N.slice(0,50),N.length>50?"...":""]},void 0,!0,void 0,this)},void 0,!1,void 0,this),sZ.jsxDEV(Q.CommandHintUI,{},void 0,!1,void 0,this),sZ.jsxDEV(T2,{visible:q.state.visible,agents:q.state.filteredAgents,query:q.state.query},void 0,!1,void 0,this),sZ.jsxDEV(k2,{visible:w.state.visible,skills:w.state.filteredSkills,query:w.state.query},void 0,!1,void 0,this),sZ.jsxDEV(_,{paddingY:1,children:sZ.jsxDEV(CZ,{id:"global-input",value:U,onChange:b,onSubmit:D,onHotKey:(g,y)=>{if(y.escape)return $Z(),!1;if(y.rightArrow){if(q.isActive){if(S())return!1}if(w.isActive){if(XZ())return!1}if(m())return!1}return!0},placeholder:OZ},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)};var E1=H(M(),1),vY=YY.memo(()=>{let{userInput:Z,setUserInput:$,loading:Y,renderMessages:X,sendMessage:J}=o(),{extraParams:Q,manager:W}=n(),{switchToHistory:O,switchToKnowledge:N,switchToSettings:G,switchToModelProvider:F,switchToAgent:U,switchToTask:L,switchToMcp:A,closePanel:w}=M1(),{data:q=[]}=b2({manager:W}),{data:R=[]}=v2(),{startRalphLoop:b}=C2({loading:Y,renderMessages:X,sendMessage:J,setUserInput:$,extraParams:Q}),D=B2({extraParams:Q,switchToHistory:O,switchToKnowledge:N,switchToSettings:G,switchToModelProvider:F,switchToAgent:U,switchToTask:L,switchToMcp:A,closePanel:w,startRalphLoop:b}),$Z=YY.useCallback(async(m)=>{if(!m)return;if(m.startsWith("/")){if(await D.executeCommand(m)){$("");return}}await J([{type:"human",content:m}],{extraParams:Q,metadata:EZ}),dZ("Zen Code 完成任务")},[D,$]);return E1.jsxDEV(_,{flexDirection:"column",paddingX:0,paddingY:0,borderColor:"grey",borderTop:!0,borderStyle:"single",borderLeft:!1,borderBottom:!1,borderRight:!1,children:[E1.jsxDEV(D.CommandErrorUI,{},void 0,!1,void 0,this),E1.jsxDEV(D.CommandSuccessUI,{},void 0,!1,void 0,this),E1.jsxDEV(j2,{value:Z,onChange:$,onSubmit:$Z,loading:Y,commandHandler:{isCommandInput:D.isCommandInput,CommandHintUI:D.CommandHintUI,commandSuggestions:D.commandSuggestions},skills:q,agents:R},void 0,!1,void 0,this)]},void 0,!0,void 0,this)});vY.displayName="ChatInput";var wZ=H(M(),1),o4=()=>{let{renderMessages:Z,currentChatId:$,getToolUIRender:Y,loading:X}=o(),{compactMode:J}=n(),[Q]=E2(Z,100),W=$Y.useMemo(()=>{return`${$}-${Q.length}`},[$,Q.length]),O=$Y.useCallback((N)=>Y(N),[Y]);return wZ.jsxDEV(_,{flexDirection:"column",flexGrow:1,paddingX:0,paddingY:0,children:[Q.length===0&&wZ.jsxDEV(J2,{},void 0,!1,void 0,this),Q.length?J?wZ.jsxDEV(PY,{renderMessages:Q,startIndex:0,staticKey:W,getToolUIRender:O,loading:X},W,!1,void 0,this):wZ.jsxDEV(t0,{renderMessages:Q,startIndex:0,staticKey:W},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},CY=()=>{let{hasPendingInteractions:Z}=MZ();return wZ.jsxDEV(V2,{children:wZ.jsxDEV(_,{flexDirection:"column",flexGrow:1,children:[wZ.jsxDEV(E,{name:"ChatMessages",fallback:null,children:wZ.jsxDEV(o4,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),wZ.jsxDEV(E,{name:"InteractionArea",fallback:null,children:Z?wZ.jsxDEV(_,{paddingX:0,paddingY:0,children:wZ.jsxDEV(qY,{},void 0,!1,void 0,this)},void 0,!1,void 0,this):wZ.jsxDEV(vY,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)};CY.displayName="ChatMain";var uZ=H(T(),1);var X1=H(T(),1),g2=X1.lazy(()=>import("./chunk-3znrwnd8.js").then((Z)=>({default:Z.default}))),p2=X1.lazy(()=>import("./chunk-mg8zpgaz.js").then((Z)=>({default:Z.default}))),m2=X1.lazy(()=>import("./chunk-4b8yaknt.js").then((Z)=>({default:Z.default}))),u2=X1.lazy(()=>import("./chunk-k67epfhc.js").then((Z)=>({default:Z.default}))),c2=X1.lazy(()=>import("./chunk-rdc9pxf6.js").then((Z)=>({default:Z.default}))),x2=X1.lazy(()=>import("./chunk-e0sqjq2h.js").then((Z)=>({default:Z.default}))),d2=X1.lazy(()=>import("./chunk-6ty22kkt.js").then((Z)=>({default:Z.default})));var k=H(M(),1),F1=()=>k.jsxDEV(_,{paddingX:1,paddingY:1,children:k.jsxDEV(K,{color:"grey",children:"Loading..."},void 0,!1,void 0,this)},void 0,!1,void 0,this),H1=(Z)=>k.jsxDEV(_,{paddingX:1,paddingY:1,children:[k.jsxDEV(K,{color:"red",children:["✗ ",Z," panel error"]},void 0,!0,void 0,this),k.jsxDEV(_,{marginTop:1,children:k.jsxDEV(K,{color:"gray",children:"Try reopening or press ESC to return"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),IY=uZ.memo(()=>{let{activeView:Z,closePanel:$,handleExecuteTask:Y}=M1();return k.jsxDEV(_,{flexGrow:1,flexDirection:"row",children:[Z==="history"&&k.jsxDEV(uZ.Suspense,{fallback:k.jsxDEV(F1,{},void 0,!1,void 0,this),children:k.jsxDEV(E,{name:"HistoryPanel",fallback:H1("History"),children:k.jsxDEV(g2,{onClose:$},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),Z==="knowledge"&&k.jsxDEV(uZ.Suspense,{fallback:k.jsxDEV(F1,{},void 0,!1,void 0,this),children:k.jsxDEV(E,{name:"KnowledgePanel",fallback:H1("Knowledge"),children:k.jsxDEV(p2,{onClose:$},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),Z==="settings"&&k.jsxDEV(uZ.Suspense,{fallback:k.jsxDEV(F1,{},void 0,!1,void 0,this),children:k.jsxDEV(E,{name:"SettingsPanel",fallback:H1("Settings"),children:k.jsxDEV(m2,{onClose:$},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),Z==="model-provider"&&k.jsxDEV(uZ.Suspense,{fallback:k.jsxDEV(F1,{},void 0,!1,void 0,this),children:k.jsxDEV(E,{name:"ModelProviderPanel",fallback:H1("Model Provider"),children:k.jsxDEV(u2,{onClose:$},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),Z==="agent"&&k.jsxDEV(uZ.Suspense,{fallback:k.jsxDEV(F1,{},void 0,!1,void 0,this),children:k.jsxDEV(E,{name:"AgentPanel",fallback:H1("Agent"),children:k.jsxDEV(c2,{onClose:$},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),Z==="task"&&k.jsxDEV(uZ.Suspense,{fallback:k.jsxDEV(F1,{},void 0,!1,void 0,this),children:k.jsxDEV(E,{name:"TaskPanel",fallback:H1("Task"),children:k.jsxDEV(x2,{onClose:$,onExecuteTask:Y},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),Z==="mcp"&&k.jsxDEV(uZ.Suspense,{fallback:k.jsxDEV(F1,{},void 0,!1,void 0,this),children:k.jsxDEV(E,{name:"McpPanel",fallback:H1("MCP"),children:k.jsxDEV(d2,{onClose:$},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)});IY.displayName="LazyChatViewManager";var kY=H(T(),1);var l2=H(T(),1);var XY=H(M(),1),i2=()=>{let{renderMessages:Z}=o(),$=l2.default.useMemo(()=>{if(!Z)return null;for(let Y=Z.length-1;Y>=0;Y--){let X=Z[Y];if(X.role==="assistant"&&X.content)try{let Q=(Array.isArray(X.content)?X.content:[{type:"text",text:X.content}]).find((W)=>W.type==="text")?.text||"";if(Q.includes("load_mcp_tools"))try{let W=JSON.parse(Q);if(W.status&&W.status.toolCount!==void 0)return W.status}catch(W){}}catch(J){}}return null},[Z]);if(!$||$.toolCount===0)return null;return XY.jsxDEV(_,{paddingX:1,children:[XY.jsxDEV(K,{color:"green",bold:!0,children:"MCP"},void 0,!1,void 0,this),XY.jsxDEV(K,{color:"cyan",children:[" ",$.toolCount]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)};var yZ=H(T(),1);function fY(Z){if(Z===0)return"0";if(Z<1024)return`${Z}`;if(Z<1048576)return`${(Z/1024).toFixed(0)}K`;if(Z<1073741824)return`${(Z/1048576).toFixed(0)}M`;return`${(Z/1073741824).toFixed(1)}G`}function o2(Z){let $=Math.floor(Z/1000),Y=Math.floor($/3600),X=Math.floor($%3600/60),J=$%60;if(Y>0)return`${Y}:${String(X).padStart(2,"0")}:${String(J).padStart(2,"0")}`;return`${String(X).padStart(2,"0")}:${String(J).padStart(2,"0")}`}function n2(Z){let[$,Y]=yZ.useState(0),X=yZ.useRef(null);return yZ.useEffect(()=>{if(Z)X.current=Date.now(),Y(0);else X.current=null,Y(0)},[Z]),SY(()=>{if(X.current)Y(Date.now()-X.current)},Z?1000:null),$}function r2(){let[Z,$]=yZ.useState({cpuPercent:0,memoryRSS:0,memoryHeapUsed:0,memoryHeapTotal:0}),Y=yZ.useRef(process.cpuUsage()),X=yZ.useRef(Date.now()),J=()=>{let Q=Date.now(),W=process.cpuUsage(),O=process.memoryUsage(),N=Q-X.current,G=W.user-Y.current.user,F=W.system-Y.current.system,L=(G+F)/1000/N*100;$({cpuPercent:Math.min(100,Math.max(0,L)),memoryRSS:O.rss,memoryHeapUsed:O.heapUsed,memoryHeapTotal:O.heapTotal}),Y.current=W,X.current=Q};return yZ.useEffect(()=>{J()},[]),SY(J,2000),Z}function s2(Z){if(Z<50)return"green";if(Z<80)return"yellow";return"red"}function a2(Z,$){if($===0)return"gray";let Y=Z/$*100;if(Y<50)return"green";if(Y<80)return"yellow";return"red"}var aZ=H(M(),1),n4=()=>{let Z=r2(),$=s2(Z.cpuPercent),Y=a2(Z.memoryHeapUsed,Z.memoryHeapTotal);return aZ.jsxDEV(_,{paddingX:1,width:"100%",children:aZ.jsxDEV(_,{gap:2,children:[aZ.jsxDEV(_,{children:[aZ.jsxDEV(K,{dimColor:!0,children:"CPU:"},void 0,!1,void 0,this),aZ.jsxDEV(K,{color:$,children:[" ",Z.cpuPercent.toFixed(0),"%"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),aZ.jsxDEV(_,{children:[aZ.jsxDEV(K,{dimColor:!0,children:"MEM:"},void 0,!1,void 0,this),aZ.jsxDEV(K,{color:Y,children:[fY(Z.memoryHeapUsed),"/",fY(Z.memoryRSS)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},t2=n4;var YZ=H(M(),1);import r4 from"path";var s4=()=>{let{extraParams:Z,compactMode:$,showDetailedInfo:Y}=n(),{currentChatId:X,renderMessages:J}=o(),{loading:Q,stopGeneration:W}=o(),O=process.env.YOLO_MODE==="true",N=kY.default.useCallback((A,w)=>{if(w.ctrl&&A==="c")if(Q)W();else process.exit()},[Q,W]);qZ(N);let G=n2(Q),F=kY.default.useMemo(()=>{return r4.basename(process.cwd())},[]),L=(J?.length||0)>100;return YZ.jsxDEV(_,{flexDirection:"column",width:"100%",children:[YZ.jsxDEV(_,{paddingX:1,paddingY:0,justifyContent:"space-between",width:"100%",marginBottom:1,children:[YZ.jsxDEV(_,{gap:1,children:[Q&&YZ.jsxDEV(K,{color:"yellow",bold:!0,children:YZ.jsxDEV(e2,{text:"LOADING"},void 0,!1,void 0,this)},void 0,!1,void 0,this),!Q&&YZ.jsxDEV(K,{color:"magenta",bold:!0,children:"Zen Code"},void 0,!1,void 0,this),YZ.jsxDEV(K,{color:"cyan",bold:!0,children:[" ",Z.model_id]},void 0,!0,void 0,this),YZ.jsxDEV(K,{color:"yellow",bold:!0,children:[" ","@",Z.switch_command||"default"]},void 0,!0,void 0,this),!$&&YZ.jsxDEV(K,{color:"blue",bold:!0,children:[" ","[FULL]"]},void 0,!0,void 0,this),O&&YZ.jsxDEV(K,{color:"red",bold:!0,children:[" ","YOLO"]},void 0,!0,void 0,this),YZ.jsxDEV(i2,{},void 0,!1,void 0,this),L&&YZ.jsxDEV(K,{color:"red",bold:!0,children:[" ","/summary"]},void 0,!0,void 0,this),YZ.jsxDEV(K,{color:"green",bold:!0,children:J.length},void 0,!1,void 0,this),YZ.jsxDEV(K,{color:"blue",children:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Q&&YZ.jsxDEV(_,{children:YZ.jsxDEV(K,{color:"yellow",children:o2(G)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Y&&YZ.jsxDEV(t2,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},Z$=s4;var V=H(M(),1),a4=()=>{let{activeView:Z}=M1();return V.jsxDEV(_,{flexDirection:"column",width:"100%",children:[V.jsxDEV(_,{flexGrow:1,flexDirection:"row",children:[V.jsxDEV(E,{name:"ChatMain",fallback:V.jsxDEV(K,{color:"yellow",children:"Chat view unavailable"},void 0,!1,void 0,this),children:Z==="chat"?V.jsxDEV(CY,{},void 0,!1,void 0,this):null},void 0,!1,void 0,this),V.jsxDEV(E,{name:"PanelView",fallback:V.jsxDEV(K,{color:"yellow",children:"Panel unavailable"},void 0,!1,void 0,this),children:Z!=="chat"?V.jsxDEV(IY,{},void 0,!1,void 0,this):null},void 0,!1,void 0,this)]},void 0,!0,void 0,this),V.jsxDEV(E,{name:"StatusBar",fallback:null,children:V.jsxDEV(Z$,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},t4=()=>{return V.jsxDEV(E,{name:"Chat",children:V.jsxDEV(d0,{children:V.jsxDEV(a4,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},e4=()=>{return V.jsxDEV(E,{name:"AppRoot",children:V.jsxDEV(Y$,{apiUrl:"http://127.0.0.1:8123",defaultAgent:"code",defaultHeaders:{},withCredentials:!1,showHistory:!1,showGraph:!1,onInitError:(Z,$)=>{console.error(Z,$)},fetch:oY,autoRestoreLastSession:!0,historyFilter:{metadata:{path:process.cwd()}},children:V.jsxDEV(E,{name:"TanStackQueryProvider",children:V.jsxDEV(VY,{children:V.jsxDEV(E,{name:"SettingsProvider",children:V.jsxDEV(X$,{get_allowed_models:nY,children:V.jsxDEV(E,{name:"ApprovalProvider",children:V.jsxDEV($$,{children:V.jsxDEV(E,{name:"InteractionProvider",children:V.jsxDEV(m1,{children:V.jsxDEV(t4,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)},ZX=()=>V.jsxDEV(e4,{},void 0,!1,void 0,this),TY=ZX;var DZ=H(M(),1),YX=({error:Z})=>DZ.jsxDEV(_,{flexDirection:"column",padding:2,borderStyle:"double",borderColor:"red",children:[DZ.jsxDEV(K,{color:"red",bold:!0,children:"✗ Application Crashed"},void 0,!1,void 0,this),DZ.jsxDEV(_,{marginTop:1,children:DZ.jsxDEV(K,{color:"red",children:Z.message},void 0,!1,void 0,this)},void 0,!1,void 0,this),DZ.jsxDEV(_,{marginTop:1,children:DZ.jsxDEV(K,{color:"gray",children:["Stack: ",Z.stack?.split(`
|
|
270
|
+
`).slice(0,3).join(`
|
|
271
|
+
`)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),DZ.jsxDEV(_,{marginTop:1,children:DZ.jsxDEV(K,{color:"blue",children:"Press Ctrl+C to exit"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this);try{yY(DZ.jsxDEV(TY,{},void 0,!1,void 0,this),{exitOnCtrlC:!1})}catch(Z){console.error("Critical rendering error:",Z),yY(DZ.jsxDEV(YX,{error:Z},void 0,!1,void 0,this))}process.on("unhandledRejection",(Z,$)=>{console.error("Unhandled Rejection at:",$,"reason:",Z)});process.on("uncaughtException",(Z)=>{console.error("Uncaught Exception:",Z)});
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Ha as x,Ka as z}from"./chunk-bjywwcgn.js";import{SubAgentsMiddleware as H,getAgentListFromPackage as J}from"@langgraph-js/standard-agent";import{SubAgentsMiddleware as U,getAgentListFromPackage as W}from"@langgraph-js/standard-agent";async function Q(q){let B=await J(q);return new H({agents:B,stateSchema:x,async createAgent(D,E,G){return await z(E.subagent_id,q,G,{},{parent_id:D})}})}
|
|
2
|
+
export{Q as ta,U as ua,W as va};
|