zen-code 4.8.6 → 4.9.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 +111 -106
- package/dist/{chunk-vyejbw66.js → chunk-13nyfrmm.js} +1 -1
- package/dist/chunk-1edvf7b5.js +1 -0
- package/dist/chunk-1rmnbdef.js +1 -0
- package/dist/{chunk-fbg1z6br.js → chunk-1ttywx0y.js} +1 -1
- package/dist/{chunk-aeambwc5.js → chunk-1y82m5kn.js} +4 -4
- package/dist/{chunk-8ypsygqy.js → chunk-30sq2w0d.js} +5 -5
- package/dist/chunk-32ase1cw.js +2 -0
- package/dist/{chunk-scddrzwd.js → chunk-3490ntd8.js} +1 -1
- package/dist/{chunk-mhfjwkg9.js → chunk-3pcybja5.js} +1 -1
- package/dist/{chunk-q87zdrxp.js → chunk-4nsg4vcd.js} +1 -1
- package/dist/{chunk-4fwb6qr1.js → chunk-5rr85f28.js} +1 -1
- package/dist/{chunk-5kmnxyd8.js → chunk-5x8nxw0t.js} +1 -1
- package/dist/chunk-6rfc36jg.js +1 -0
- package/dist/{chunk-fnrbq03p.js → chunk-76h8pe7x.js} +2 -2
- package/dist/{chunk-0kqqh5rr.js → chunk-7kdvr78m.js} +2 -2
- package/dist/{chunk-hqyfg97v.js → chunk-8g2zdcy0.js} +1 -1
- package/dist/chunk-8z38ybz7.js +1 -0
- package/dist/{chunk-jsagr88c.js → chunk-98f6hg43.js} +1 -1
- package/dist/chunk-9dahn9h7.js +3 -0
- package/dist/chunk-9k5d9vf1.js +1 -0
- package/dist/{chunk-bzgj8aae.js → chunk-b52b0t16.js} +1 -1
- package/dist/chunk-b8dxq9rq.js +1 -0
- package/dist/{chunk-tvqxepjm.js → chunk-cggjws6a.js} +1 -1
- package/dist/{chunk-czbkc7pc.js → chunk-cjqarwdn.js} +1 -1
- package/dist/{chunk-mqbn36h4.js → chunk-cs73xbzz.js} +1 -1
- package/dist/{chunk-xemvstcq.js → chunk-cyexd09c.js} +2 -2
- package/dist/{chunk-pww7x4hb.js → chunk-ep2es95e.js} +1 -1
- package/dist/chunk-f8ewggk1.js +1 -0
- package/dist/{chunk-1rnd4taj.js → chunk-g377vrpj.js} +3 -3
- package/dist/{chunk-141pasd6.js → chunk-g7pm00z7.js} +2 -2
- package/dist/chunk-gcm4jp0d.js +26 -0
- package/dist/{chunk-pw18cs39.js → chunk-heasksrr.js} +2 -2
- package/dist/chunk-hfve7nf5.js +2 -0
- package/dist/{chunk-6hpehtte.js → chunk-j7a40ww9.js} +2 -2
- package/dist/chunk-j9aysaeb.js +1 -0
- package/dist/{chunk-ph818by4.js → chunk-jbf8ve63.js} +1 -1
- package/dist/{chunk-mfjc63aw.js → chunk-jfhc5c0d.js} +1 -1
- package/dist/{chunk-jwzkek1t.js → chunk-jxsfzfac.js} +1 -1
- package/dist/{chunk-fzn8xq6f.js → chunk-kba8akjs.js} +1 -1
- package/dist/{chunk-favbv2tp.js → chunk-m76ya904.js} +1 -1
- package/dist/{chunk-c6nzmyns.js → chunk-mjzeawnq.js} +2 -2
- package/dist/{chunk-ed6aprzz.js → chunk-mmq834zt.js} +1 -1
- package/dist/chunk-ns6tjjkq.js +1 -0
- package/dist/{chunk-emv4z7ck.js → chunk-nwy6n6b6.js} +87 -87
- package/dist/chunk-qd305hg1.js +1 -0
- package/dist/chunk-qez6ejd4.js +1 -0
- package/dist/{chunk-p8fbtgk3.js → chunk-r2h3x9zv.js} +1 -1
- package/dist/{chunk-8vkm1ts6.js → chunk-rncpxz1b.js} +1 -1
- package/dist/chunk-rz3b356n.js +1 -0
- package/dist/{chunk-py5g6yc2.js → chunk-trjpzw1n.js} +1 -1
- package/dist/{chunk-g1bcpymb.js → chunk-va71tsw3.js} +2 -2
- package/dist/{chunk-pyw1vxnf.js → chunk-wn43r152.js} +1 -1
- package/dist/{chunk-0f022x9v.js → chunk-xhnvpygg.js} +1 -1
- package/dist/{chunk-jn4j9rm3.js → chunk-xkz5z0zn.js} +1 -1
- package/dist/chunk-zwxjkwqd.js +26 -0
- package/dist/{chunk-cqrb18vt.js → chunk-zz32kgt2.js} +1 -1
- package/dist/cli.js +1 -1
- package/dist/nonInteractive.js +3 -3
- package/dist/zen-keyboard.js +1 -1
- package/package.json +3 -3
- package/dist/chunk-0a26n1zy.js +0 -26
- package/dist/chunk-2e7zh8he.js +0 -1
- package/dist/chunk-2y73pxem.js +0 -1
- package/dist/chunk-6yeg1jc7.js +0 -1
- package/dist/chunk-903s8sk9.js +0 -1
- package/dist/chunk-ema4rc9d.js +0 -2
- package/dist/chunk-f4tc5awt.js +0 -1
- package/dist/chunk-f7d0m4h3.js +0 -1
- package/dist/chunk-gar31nyn.js +0 -1
- package/dist/chunk-mdkwbajq.js +0 -2
- package/dist/chunk-p1bn8p65.js +0 -1
- package/dist/chunk-s6gzrjxk.js +0 -25
- package/dist/chunk-spvbvpx5.js +0 -1
- package/dist/chunk-t15ptqbm.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{nb as a}from"./chunk-cggjws6a.js";import"./chunk-kba8akjs.js";export{a as FileSystemPluginStore};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{vb as L}from"./chunk-kba8akjs.js";var N=L((O,D)=>{var I=[0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920],M=function(x){var j,z=0,q=0,w=[],B=x.length;for(;z<B;z++)if(j=x.charCodeAt(z),j<128)w[q++]=j;else if(j<2048)w[q++]=j>>6|192,w[q++]=j&63|128;else if((j&64512)===55296&&z+1<x.length&&(x.charCodeAt(z+1)&64512)===56320)j=65536+((j&1023)<<10)+(x.charCodeAt(++z)&1023),w[q++]=j>>18|240,w[q++]=j>>12&63|128,w[q++]=j>>6&63|128,w[q++]=j&63|128;else w[q++]=j>>12|224,w[q++]=j>>6&63|128,w[q++]=j&63|128;return w},J=D.exports=function(x){var j,z=0,q=-1,w=0,B=0,G=typeof x==="string"?M(x):x,K=G.length;while(z<K){if(j=G[z++],q===-1){if(j===123)q=z}else if(j!==125)B=I[(j^B>>8)&255]^B<<8;else if(z-1!==q)return B&16383;w=I[(j^w>>8)&255]^w<<8}return w&16383};D.exports.generateMulti=function(x){var j=1,z=x.length,q=J(x[0]);while(j<z)if(J(x[j++])!==q)return-1;return q}});
|
|
2
2
|
export{N as c};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{writeFileSync as B,readFileSync as C,existsSync as u,mkdirSync as G}from"node:fs";import{join as H,dirname as J}from"node:path";import{randomUUID as K}from"node:crypto";class z{errors=[];filePath;maxEntries;isLoaded=!1;constructor(b){this.filePath=b?.filePath||H(process.cwd(),".zen-code","errors.json"),this.maxEntries=b?.maxEntries||500,this.ensureDirectory()}ensureDirectory(){let b=J(this.filePath);if(!u(b))G(b,{recursive:!0})}loadFromFile(){if(this.isLoaded)return;try{if(u(this.filePath)){let b=C(this.filePath,"utf-8"),q=JSON.parse(b);if(Array.isArray(q))this.errors=q}}catch(b){this.errors=[]}this.isLoaded=!0}saveToFile(){try{let b=JSON.stringify(this.errors,null,2);B(this.filePath,b,"utf-8")}catch(b){process.stderr.write(`[ErrorStore] Failed to save errors: ${b}
|
|
2
|
+
`)}}addError(b){this.loadFromFile();let q={...b,id:K(),timestamp:new Date().toISOString()};if(this.errors.unshift(q),this.errors.length>this.maxEntries)this.errors=this.errors.slice(0,this.maxEntries);return this.saveToFile(),q}getErrors(){return this.loadFromFile(),[...this.errors]}getRecentErrors(b=100){return this.loadFromFile(),this.errors.slice(0,b)}clearAll(){this.errors=[],this.saveToFile()}deleteError(b){this.loadFromFile();let q=this.errors.findIndex((A)=>A.id===b);if(q!==-1)return this.errors.splice(q,1),this.saveToFile(),!0;return!1}getStats(){return this.loadFromFile(),{total:this.errors.length,errors:this.errors.filter((b)=>b.level==="error").length,warnings:this.errors.filter((b)=>b.level==="warning").length}}}var O=new z;
|
|
3
|
+
export{O as rb};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-kba8akjs.js";var V=((f)=>{return f.NETWORK_ERROR="NETWORK_ERROR",f.CONNECTION_TIMEOUT="CONNECTION_TIMEOUT",f.INTERNAL_ERROR="INTERNAL_ERROR",f.THREAD_NOT_FOUND="THREAD_NOT_FOUND",f.THREAD_BUSY="THREAD_BUSY",f.RUN_NOT_FOUND="RUN_NOT_FOUND",f.GRAPH_NOT_FOUND="GRAPH_NOT_FOUND",f.INVALID_REQUEST="INVALID_REQUEST",f})(V||{});class N extends Error{constructor(f,w,x){super(w);this.code=f,this.statusCode=x,this.name="RemoteApiError"}}async function O(f,w,x){try{let z=f;if(x?.query){let W=new URLSearchParams;Object.entries(x.query).forEach(([Z,_])=>{W.append(Z,String(_))}),z+=`?${W.toString()}`}let Q=await fetch(z,{method:w,headers:{"Content-Type":"application/json"},body:x?.body?JSON.stringify(x.body):void 0}),H=await Q.json();if(!Q.ok||!H.success)throw new N(H.error?.code||V.INTERNAL_ERROR,H.error?.message||"Unknown error",Q.status);return H}catch(z){if(z instanceof N)throw z;throw new N(V.NETWORK_ERROR,`Network error: ${z instanceof Error?z.message:"Unknown error"}`)}}async function J(f,w){return O(f,"GET",{query:w})}async function F(f,w,x){return O(f,"POST",{body:w,query:x})}async function Y(f,w,x){return O(f,"PUT",{body:w,query:x})}async function $(f,w){return O(f,"DELETE",{query:w})}class j{constructor(f,w){this.serverUrl=f,this.httpClient=w,this.serverUrl=f.replace(/\/$/,""),this.httpClient=w||fetch}async setup(){await F(`${this.serverUrl}/setup`)}async create(f){return(await F(`${this.serverUrl}/threads`,f)).data}async search(f){let w={};if(f?.ids!==void 0&&f.ids.length>0)w.ids=JSON.stringify(f.ids);if(f?.metadata!==void 0)w.metadata=JSON.stringify(f.metadata);if(f?.limit!==void 0)w.limit=f.limit;if(f?.offset!==void 0)w.offset=f.offset;if(f?.status!==void 0)w.status=f.status;if(f?.sortBy!==void 0)w.sortBy=f.sortBy;if(f?.sortOrder!==void 0)w.sortOrder=f.sortOrder;if(f?.values!==void 0)w.values=JSON.stringify(f.values);if(f?.select!==void 0)w.select=JSON.stringify(f.select);if(f?.withoutDetails!==void 0)w.withoutDetails=f.withoutDetails;return(await J(`${this.serverUrl}/threads`,w)).data}async get(f){return(await J(`${this.serverUrl}/threads/${f}`)).data}async set(f,w){await Y(`${this.serverUrl}/threads/${f}`,w)}async delete(f){await $(`${this.serverUrl}/threads/${f}`)}async updateState(f,w){return(await F(`${this.serverUrl}/threads/${f}/state`,w)).data}async createRun(f,w,x){return(await F(`${this.serverUrl}/threads/${f}/runs`,x||{},{assistantId:w})).data}async listRuns(f,w){let x={};if(w?.limit!==void 0)x.limit=w.limit;if(w?.offset!==void 0)x.offset=w.offset;if(w?.status!==void 0)x.status=w.status;return(await J(`${this.serverUrl}/threads/${f}/runs`,x)).data}async updateRun(f,w){await Y(`${this.serverUrl}/runs/${f}`,w)}async count(f){let w={};if(f?.ids!==void 0&&f.ids.length>0)w.ids=JSON.stringify(f.ids);if(f?.metadata!==void 0)w.metadata=JSON.stringify(f.metadata);if(f?.status!==void 0)w.status=f.status;if(f?.values!==void 0)w.values=JSON.stringify(f.values);return(await J(`${this.serverUrl}/threads/count`,w)).data}async patch(f,w){return(await F(`${this.serverUrl}/threads/${f}`,w)).data}async getState(f,w){let x={};if(w?.subgraphs!==void 0)x.subgraphs=w.subgraphs;if(w?.checkpointId!==void 0)x.checkpointId=w.checkpointId;return(await F(`${this.serverUrl}/threads/${f}/state`,x)).data}async getStateHistory(f,w){let x={};if(w?.limit!==void 0)x.limit=w.limit;if(w?.before!==void 0)x.before=w.before;return(await F(`${this.serverUrl}/threads/${f}/history`,x)).data}async copy(f){return(await F(`${this.serverUrl}/threads/${f}/copy`)).data}async setTitleIfNull(f,w){try{return(await F(`${this.serverUrl}/threads/${f}/title`,{title:w})).data.success}catch(x){let z=await this.get(f);if(z?.title===null||z?.title===void 0)return await this.set(f,{title:w}),!0;return!1}}}export{j as RemoteKyselyThreadsManager};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"./chunk-
|
|
1
|
+
import"./chunk-kba8akjs.js";import{Kysely as H,PostgresDialect as I,sql as w}from"kysely";class J{constructor(h){this.pool=h,this.db=new H({dialect:new I({pool:h})})}db;dateToDb(h){return h}dbToDate(h){return h instanceof Date?h:new Date(h)}jsonToDb(h){return h}dbToJson(h){return h}buildJsonQuery(h,x,z,C){return w`${w.ref(x)}->>${w.lit(z)} = ${w.lit(JSON.stringify(C))}`}now(){return new Date}async createTables(h){await w`
|
|
2
2
|
CREATE TABLE IF NOT EXISTS threads (
|
|
3
3
|
thread_id TEXT PRIMARY KEY,
|
|
4
4
|
created_at TIMESTAMP NOT NULL,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as U}from"./chunk-mjzeawnq.js";import"./chunk-heasksrr.js";import{T as g,V as D}from"./chunk-va71tsw3.js";import{ea as C,fa as w,ga as X,pa as L,ta as V}from"./chunk-nwy6n6b6.js";import{ub as v}from"./chunk-kba8akjs.js";var A=v(C(),1);function E(J){let{historyList:O,refreshHistoryList:Y,setHistoryFilter:Z}=U(),W=J?JSON.stringify(J):null,_=W?["history","list",W]:D.history.list();return g({queryKey:_,queryFn:async()=>{if(J)Z(J);return await Y(),O},staleTime:60000})}var G=v(L(),1),y=({onClose:J})=>{let{currentChatId:O,toHistoryChat:Y,createNewChat:Z,refreshHistoryList:W,historyFilter:_}=U(),b=A.useMemo(()=>({metadata:{path:process.cwd()}}),[]),{data:B=[],refetch:c}=E(b),p=A.useRef(W);A.default.useEffect(()=>{p.current=W},[W]);let j=(z)=>z.toLocaleTimeString(),H=(z)=>{switch(z){case"idle":return{emoji:"\uD83D\uDFE2",color:"green",text:"空闲"};case"busy":return{emoji:"\uD83D\uDFE1",color:"yellow",text:"忙碌"};case"interrupted":return{emoji:"\uD83D\uDFE0",color:"orange",text:"中断"};case"error":return{emoji:"\uD83D\uDD34",color:"red",text:"错误"};default:return{emoji:"⚪",color:"gray",text:z}}},N=A.useCallback(async()=>{return B},[B]),P=A.useCallback((z,$,Q)=>{let S=H(z.status),M=z.thread_id===O,m=j(new Date(z.updated_at)),k=z.title||z.thread_id.slice(-8),x=Q?">":" ",f=M?"▶":" ",T=(()=>{if(M)return{color:"green",bold:!0};else if(Q)return{color:"cyanBright",bold:!0};else return{color:S.color,bold:!1}})();return G.jsxDEV(w,{children:[G.jsxDEV(X,{bold:T.bold,color:T.color,children:[x,f," ",$+1,". ",k]},void 0,!0,void 0,this),G.jsxDEV(w,{flexGrow:1},void 0,!1,void 0,this),G.jsxDEV(X,{dimColor:!0,children:m},void 0,!1,void 0,this)]},z.thread_id,!0,void 0,this)},[O]),F=A.useCallback((z)=>{return z.thread_id===O},[O]),R=A.useCallback(async(z)=>{if(z.value==="new_chat")Z({});else Y(z);J()},[Z,Y,J]),q=A.useCallback((z)=>{let $=z.find((Q)=>Q.thread_id===O);return $?G.jsxDEV(X,{color:"gray",dimColor:!0,children:["当前: ",G.jsxDEV(X,{color:"green",children:$.thread_id.substring(0,8)},void 0,!1,void 0,this),G.jsxDEV(X,{children:[" ",_?.metadata?.path]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):null},[O,_]),K=A.useMemo(()=>({}),[]),I=A.useMemo(()=>({id:"history",title:"历史记录",icon:"\uD83D\uDCDC",dataSource:N,searchable:!0,searchFields:["title","thread_id"],searchPlaceholder:"搜索对话标题...",filterable:!1,filters:[],defaultFilter:"all",itemHeight:1,visibleCount:10,renderItem:P,isSelected:F,onSelect:R,showCount:!0,statusInfo:q,keyMap:K}),[N,P,F,R,q,K]);return G.jsxDEV(V,{config:I,onClose:J},void 0,!1,void 0,this)},zz=y;export{zz as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import k from"fs/promises";import q from"path";import z from"os";class A{pluginsDir;constructor(){let b=z.homedir();this.pluginsDir=q.join(b,".zen-code","plugins")}async listPlugins(){try{let b=await k.readdir(this.pluginsDir,{withFileTypes:!0}),d=[];for(let j of b)if(j.isDirectory()){let v=q.join(this.pluginsDir,j.name,"plugin.json");try{let x=await k.readFile(v,"utf-8"),w=JSON.parse(x);d.push({name:j.name,version:w.version||"0.0.0",enabled:w.enabled!==!1})}catch{}}return d}catch{return[]}}async getPluginConfig(b){let d=q.join(this.pluginsDir,b,"plugin.json");try{let j=await k.readFile(d,"utf-8");return JSON.parse(j)}catch{return null}}async updatePluginConfig(b,d){let j=q.join(this.pluginsDir,b);await k.mkdir(j,{recursive:!0});let v=q.join(j,"plugin.json");await k.writeFile(v,JSON.stringify(d,null,2),"utf-8")}async installPlugin(b,d){let j=q.join(this.pluginsDir,b);await k.mkdir(j,{recursive:!0});let v={name:b,version:"0.0.1",enabled:!0,source:d};await this.updatePluginConfig(b,v)}async uninstallPlugin(b){let d=q.join(this.pluginsDir,b);await k.rm(d,{recursive:!0,force:!0})}}
|
|
2
|
-
export{A as
|
|
2
|
+
export{A as nb};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{x as M}from"./chunk-cs73xbzz.js";import"./chunk-rncpxz1b.js";import{T as A,V as _}from"./chunk-va71tsw3.js";import{ea as g,fa as X,ga as Y,pa as C,ta as K}from"./chunk-nwy6n6b6.js";import{Ba as R}from"./chunk-xhnvpygg.js";import{ub as Q}from"./chunk-kba8akjs.js";var F=Q(g(),1);import{listSkills as V}from"@langgraph-js/standard-agent";import{join as w}from"path";function $({type:G,enabled:J=!0}){return A({queryKey:G==="memories"?_.knowledge.memories():_.knowledge.skills(),queryFn:async()=>{let L=w(process.cwd(),".claude",G),N=w(process.env.HOME||"",".deepagents/code",G);try{if(G==="memories")return R(N,L).map((W)=>({...W,type:"memory"}));else return V(N,L).map((W)=>({...W,type:"skill"}))}catch(O){return console.warn(`Failed to load ${G}:`,O),[]}},enabled:J,staleTime:120000})}var H=Q(C(),1),S=(G)=>{return G.length>80?G.slice(0,80)+"...":G},k=({onClose:G})=>{let[J,L]=F.useState("memories"),N=F.useRef(L);F.default.useEffect(()=>{N.current=L},[L]);let{data:O=[]}=$({type:"memories",enabled:J==="memories"}),{data:W=[]}=$({type:"skills",enabled:J==="skills"}),U=F.useCallback(async()=>{return J==="memories"?O:W},[J,O,W]),q=F.useCallback((z,h,Z)=>{let E=S(z.description);return H.jsxDEV(X,{flexDirection:"column",paddingY:1,children:[H.jsxDEV(X,{children:H.jsxDEV(Y,{bold:!0,color:Z?"cyan":"gray",children:[h+1,". ",z.name]},void 0,!0,void 0,this)},void 0,!1,void 0,this),H.jsxDEV(X,{paddingY:1,children:H.jsxDEV(Y,{color:Z?"white":"gray",children:E},void 0,!1,void 0,this)},void 0,!1,void 0,this),H.jsxDEV(X,{children:H.jsxDEV(Y,{color:"cyan",dimColor:!Z,children:[M(z.path),z.category&&H.jsxDEV(Y,{color:"yellow",children:[" ",z.category]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},z.path,!0,void 0,this)},[]),I=F.useCallback((z)=>{console.log("Selected knowledge item:",z.name)},[]),P=F.useMemo(()=>[{id:"memory",label:"记忆",predicate:(z)=>z.type==="memory"},{id:"skill",label:"技能",predicate:(z)=>z.type==="skill"}],[]),B=F.useMemo(()=>({h:(z)=>{N.current("memories"),z.setActiveFilter("memory")},s:(z)=>{N.current("skills"),z.setActiveFilter("skill")}}),[]),f=F.useMemo(()=>({id:"knowledge",title:"知识库",icon:"\uD83D\uDCDA",dataSource:U,searchable:!0,searchFields:["name","description"],searchPlaceholder:"搜索知识库 (名称/描述/分类)...",filterable:!0,filters:P,defaultFilter:J==="memories"?"memory":"skill",itemHeight:8,visibleCount:3,renderItem:q,showCount:!0,onSelect:I,keyMap:B}),[U,P,q,I,B,J]);return H.jsxDEV(K,{config:f,onClose:G},void 0,!1,void 0,this)},l=k;export{l as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{H as A,J as q,M as c}from"./chunk-
|
|
1
|
+
import{H as A,J as q,M as c}from"./chunk-rncpxz1b.js";import{ea as R,pa as w}from"./chunk-nwy6n6b6.js";import{ub as K}from"./chunk-kba8akjs.js";function ZP(G){return G?.replace(process.cwd(),".")||G||""}var v=K(R(),1);var r=()=>{return process.env.TERM?.includes("256color")||process.env.TERM==="xterm-256color"||process.env.WT_SESSION!==void 0||process.platform==="darwin"||process.env.TERM_PROGRAM==="vscode"||process.env.TERM_PROGRAM==="iTerm.app"},VP=()=>{if(process.env.TERM_PROGRAM==="iTerm.app")return"iTerm2";if(process.env.WT_SESSION!==void 0)return"Windows Terminal";if(process.env.TERM_PROGRAM==="vscode")return"VSCode";if(process.env.TERM?.includes("screen"))return"GNU Screen";if(process.env.TERM?.includes("tmux"))return"tmux";return process.env.TERM||"unknown"},m={success:{hex:"#4fd6be",fallback:"green"},warning:{hex:"#ffdb95",fallback:"yellow"},error:{hex:"#f7768e",fallback:"red"},info:{hex:"#7dcfff",fallback:"cyan"},muted:{hex:"#565f89",fallback:"gray"},highlight:{hex:"#7dcfff",fallback:"cyanBright"},accent:{hex:"#bb9af7",fallback:"magentaBright"},border:{hex:"#414868",fallback:"gray"},primary:{hex:"#7aa2f7",fallback:"cyan"},secondary:{hex:"#bb9af7",fallback:"magenta"},keyword:{hex:"#bb9af7",fallback:"magenta"},function:{hex:"#7aa2f7",fallback:"blue"},string:{hex:"#9ece6a",fallback:"green"},number:{hex:"#ff9e64",fallback:"yellow"},comment:{hex:"#565f89",fallback:"gray"},variable:{hex:"#c0caf5",fallback:"white"},type:{hex:"#0db9d7",fallback:"cyan"},constant:{hex:"#e0af68",fallback:"yellow"},textPrimary:{hex:"#c0caf5",fallback:"white"},textSecondary:{hex:"#9aa5ce",fallback:"whiteBright"},textMuted:{hex:"#565f89",fallback:"gray"},bg:{hex:"#1a1b26",fallback:"black"},bgCard:{hex:"#24283b",fallback:"black"},indigo:{hex:"#6366f1",fallback:"blue"},purple:{hex:"#a855f7",fallback:"magenta"},pink:{hex:"#ec4899",fallback:"redBright"},rose:{hex:"#f43f5e",fallback:"red"},orange:{hex:"#f97316",fallback:"yellowBright"},amber:{hex:"#f59e0b",fallback:"yellow"},emerald:{hex:"#10b981",fallback:"green"},teal:{hex:"#14b8a6",fallback:"cyan"},sky:{hex:"#0ea5e9",fallback:"blue"}},_P=(G)=>{if(!(G in m))G="sky";return r()?m[G].hex:m[G].fallback};import o from"os";function xP(){try{return o.userInfo().username}catch(G){return process.env.USER||process.env.USERNAME||"User"}}var $=K(R(),1);var p=K(w(),1),n=50,a=1800000,t=300000,e=$.createContext(null);var pP=({children:G})=>{let[X,J]=$.useState([]),[Q,D]=$.useState(null),y=$.useCallback(async(Z)=>{let z=Z.tool;if(!z)return;let{status:W,editedArgs:F}=Z;if(W==="approved")z.sendResumeData({type:"approve"});else if(W==="edited"){let H={name:z.message.name,args:F};z.sendResumeData({type:"edit",edited_action:H})}else if(W==="rejected")z.sendResumeData({type:"reject",message:"User rejected to run this tool"});else console.error("[ChatWrapper] Unknown approval status:",W)},[]),V=$.useCallback(()=>{return`approval_${Date.now()}_${Math.random().toString(36).substring(2,9)}`},[]),j=$.useCallback((Z)=>{let z={...Z,id:V(),status:"pending",createdAt:new Date};return J((W)=>{let F=[...W,z];if(F.length>n){let H=F.filter((P)=>P.status!=="pending");if(H.length>0)return F.filter((P)=>P.id!==H[0].id)}if(W.length===0)D(z.id);return F}),z.id},[V]),N=$.useCallback((Z,z)=>{J((W)=>W.map((F)=>F.id===Z?{...F,...z}:F))},[]),S=$.useCallback((Z)=>{J((z)=>{let W=z.filter((F)=>F.id!==Z);if(Q===Z)D(W.length>0?W[0].id:null);return W})},[Q]),_=$.useCallback(()=>{J((Z)=>{let z=Z.filter((W)=>W.status==="pending");if(z.length===0)D(null);else if(Q&&!z.find((W)=>W.id===Q))D(z[0].id);return z})},[Q]),L=$.useCallback(async()=>{let Z=X.filter((z)=>z.status==="approved"||z.status==="edited"||z.status==="rejected");if(Z.length===0)return;for(let z of Z)try{await y(z)}catch(W){console.error(`[ApprovalContext] Execute approval request failed: ${z.id}`,W)}_()},[X,y,_]),h=$.useCallback(async(Z)=>{await y(Z)},[y]),B=$.useMemo(()=>X.some((Z)=>Z.status==="pending"),[X]),x=$.useMemo(()=>X.length>0&&!B,[X.length,B]),f=$.useCallback(()=>{let Z=Date.now();J((z)=>z.filter((W)=>W.createdAt.getTime()>Z-a))},[]);A(()=>{f()},t),q(()=>{J((Z)=>Z.map((z)=>({...z,tool:void 0})))}),$.useEffect(()=>{if(x)L()},[x,L]);let M=$.useMemo(()=>({requests:X,addApprovalRequest:j,updateApprovalRequest:N,removeApprovalRequest:S,clearCompletedApprovals:_,executeRequest:h,executeApproved:L,hasPendingRequests:B,allRequestsProcessed:x}),[X,j,N,S,_,h,L,B,x]);return p.jsxDEV(e.Provider,{value:M,children:G},void 0,!1,void 0,this)};var O=K(R(),1);var d=K(w(),1),PP=1800000,HP=300000,g=O.createContext(null),iP=({children:G})=>{let[X,J]=O.useState(""),Q=O.useRef(Date.now()),D=O.useCallback(()=>{J("")},[]),y=O.useCallback((j)=>{Q.current=Date.now(),J(j)},[]);A(()=>{if(Date.now()-Q.current>PP)D()},HP);let V={bufferedMessage:X,setBufferedMessage:y,clearBuffer:D};return d.jsxDEV(g.Provider,{value:V,children:G},void 0,!1,void 0,this)},rP=()=>{let G=O.useContext(g);if(!G)throw Error("useChatInputBuffer must be used within ChatInputBufferProvider");return G};var T=K(R(),1);var zP=K(w(),1),nP=T.createContext(void 0);var Y=K(R(),1);var l=K(w(),1),JP=100,WP=1800000,YP=300000,u=Y.createContext(null),JH=()=>{let G=Y.useContext(u);if(!G)throw Error("useInteractionContext must be used within InteractionProvider");return G},WH=({children:G,onInteractionSubmit:X})=>{let[J,Q]=Y.useState([]),[D,y]=Y.useState(0),V=Y.useCallback(()=>{return`interaction_${Date.now()}_${Math.random().toString(36).substring(2,9)}`},[]),j=Y.useCallback((H,P)=>{let U=new Date,E={id:V(),category:"panel",state:"idle",metadata:{title:P?.metadata?.title,description:P?.metadata?.description,icon:P?.metadata?.icon,priority:P?.metadata?.priority??"medium",groupKey:P?.metadata?.groupKey,messageIndex:P?.metadata?.messageIndex},tool:P?.tool,config:{layout:{border:!0,padding:1,...P?.config?.layout},interaction:{autoSubmit:!1,allowSkip:!1,showPreview:!0,...P?.config?.interaction},style:P?.config?.style??{}},content:H,createdAt:U,updatedAt:U};return Q((I)=>{let k=[...I,E];if(k.length>JP){let C=k.filter((b)=>b.state==="submitted"||b.state==="edited"||b.state==="cancelled");if(C.length>0){let b=C[0].id;return k.filter((i)=>i.id!==b)}}return k}),y((I)=>I+1),E},[V]),N=Y.useCallback((H,P)=>{Q((U)=>U.map((E)=>E.id===H?{...E,...P,updatedAt:new Date}:E)),y((U)=>U+1)},[]),S=Y.useCallback((H)=>{Q((P)=>P.filter((U)=>U.id!==H)),y((P)=>P+1)},[]),_=Y.useCallback(()=>{Q([]),y((H)=>H+1)},[]),L=Y.useCallback((H)=>{return J.find((P)=>P.id===H)},[J]),h=Y.useCallback(()=>{return[...J]},[J]),B=Y.useCallback((H)=>{return J.filter((P)=>P.state===H)},[J]),x=Y.useCallback((H)=>{return J.filter((P)=>P.content.type===H)},[J]),f=Y.useCallback(async()=>{let H=J.filter((P)=>P.state==="submitted"||P.state==="edited"||P.state==="cancelled");for(let P of H)if(!P.resultSent&&X)await X(P),N(P.id,{resultSent:!0})},[J,X,N]),M=Y.useCallback(()=>{Q((H)=>H.filter((P)=>P.state==="idle"||P.state==="active")),y((H)=>H+1)},[]),Z=Y.useCallback(()=>{let H=Date.now();Q((P)=>P.filter((U)=>U.updatedAt.getTime()>H-WP))},[]);A(()=>{Z()},YP),q(()=>{Q((H)=>H.map((P)=>({...P,tool:void 0})))});let z=Y.useMemo(()=>J.some((H)=>H.state==="idle"||H.state==="active"),[J]),W=Y.useMemo(()=>J.length>0&&J.every((H)=>H.state==="submitted"||H.state==="edited"||H.state==="cancelled"),[J]);c(()=>{M()},W&&z===!1?100:null),Y.useEffect(()=>{if(W&&z===!1)f()},[W,z,f]);let F=Y.useMemo(()=>({addInteraction:j,updateInteraction:N,removeInteraction:S,clearAll:_,getInteraction:L,getInteractions:h,getInteractionsByState:B,getInteractionsByContent:x,submitInteractions:f,clearCompleted:M,interactions:J,updateCount:D,hasPendingInteractions:z,allInteractionsProcessed:W}),[j,N,S,_,L,h,B,x,f,M,J,D,z,W]);return l.jsxDEV(u.Provider,{value:F,children:G},void 0,!1,void 0,this)};export{ZP as x,VP as y,_P as z,xP as A,pP as B,iP as C,rP as D,JH as E,WH as F};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
export{V as
|
|
1
|
+
import{yb as W}from"./chunk-kba8akjs.js";import X from"micromatch";import{z as E}from"zod";var T;((D)=>{D.ALLOW="allow";D.ASK="ask";D.DENY="deny"})(T||={});var _=E.object({tool:E.string(),specifier:E.string().optional(),action:E.nativeEnum(T)}),$=E.object({allow:E.array(E.string()).optional(),ask:E.array(E.string()).optional(),deny:E.array(E.string()).optional(),defaultMode:E.nativeEnum(T).optional()}),v=E.object({name:E.string(),args:E.record(E.string(),E.any())});class Q{rules;defaultMode;patternCache=new Map;constructor(x){this.rules=x.rules,this.defaultMode=x.defaultMode||"ask",this.rules.sort((q,B)=>{let D={deny:0,ask:1,allow:2},H=D[q.action]-D[B.action];if(H!==0)return H;let J=q.specifier==null?1:0,N=B.specifier==null?1:0;return J-N})}checkPermission(x){for(let q of this.rules)if(this.matchRule(q,x))return{allowed:q.action==="allow"||q.action==="ask",requiresApproval:q.action==="ask",matchedRule:q,reason:this.getReason(q)};return{allowed:this.defaultMode==="allow"||this.defaultMode==="ask",requiresApproval:this.defaultMode==="ask",reason:`No matching rule, using default mode: ${this.defaultMode}`}}matchRule(x,q){if(x.tool!==q.name)return!1;if(!x.specifier)return!0;let B=this.argsToString(q.args);if(q.name==="Bash")return this.matchBashCommand(x.specifier,B);if(x.specifier.endsWith(" ")&&!/[*?[\\]/.test(x.specifier))return B.startsWith(x.specifier);return this.matchGlob(x.specifier,B)}matchBashCommand(x,q){if(/[;&|]/.test(q))return!1;let D=/[<>()]/;if(D.test(q)){let H=q.split(D)[0].trim();return this.matchBashPattern(x,H)}return this.matchBashPattern(x,q)}matchBashPattern(x,q){if(x.endsWith(" "))return q.startsWith(x);return this.matchGlob(x,q)}matchGlob(x,q){try{let B=x.replace(/^\.\//,""),D=q.replace(/^\.\//,""),H=`${x}::${q}`,J=this.patternCache.get(H);if(J!==void 0)return J;let N=X.isMatch(D,B,{nocase:!1,dot:!0});return this.cacheResult(H,N),N}catch(B){return q===x}}cacheResult(x,q){if(this.patternCache.size>1000){let B=this.patternCache.keys().next().value;if(B)this.patternCache.delete(B)}this.patternCache.set(x,q)}argsToString(x){if(typeof x==="object"&&x!==null){if("command"in x&&x.command)return String(x.command);if("file_path"in x&&x.file_path)return String(x.file_path);return Object.values(x).flat().join(" ")}return String(x)}getReason(x){let q=x.action.toUpperCase(),B=x.tool,D=x.specifier?`(${x.specifier})`:"";return`${q} rule matched: ${B}${D}`}static parseRule(x,q){let B=x.match(/^(\w+)(?:\((.*)\))?$/);if(!B)throw Error(`Invalid permission rule format: ${x}`);let[,D,H]=B;return{tool:D,specifier:H,action:q}}static fromConfig(x){let q=[];for(let B of x.allow||[])q.push(Q.parseRule(B,"allow"));for(let B of x.ask||[])q.push(Q.parseRule(B,"ask"));for(let B of x.deny||[])q.push(Q.parseRule(B,"deny"));return new Q({rules:q,defaultMode:x.defaultMode||"ask"})}clearCache(){this.patternCache.clear()}getCacheSize(){return this.patternCache.size}}class L{configStore;toolNameMapper={};constructor(x){this.configStore=x}static instance=null;static getInstance(x){if(!L.instance){if(!x)throw Error("PermissionStore not initialized. Provide configStore on first call.");L.instance=new L(x)}return L.instance}static resetInstance(){L.instance=null}async getPermissions(){let x=await this.configStore.getConfig();if(x.permissions)return Q.fromConfig(x.permissions);return}async checkBashPermission(x,q){return(await this.getPermissions())?.checkPermission({name:"Bash",args:{command:x,cwd:q}})}async checkReadPermission(x){return(await this.getPermissions())?.checkPermission({name:"Read",args:{file_path:x}})}async checkWritePermission(x){return(await this.getPermissions())?.checkPermission({name:"Write",args:{file_path:x}})}}class V{configStore;skillStore;pluginStore;remoteStore;permissionStore;_initialized=!1;constructor(x,q,B,D){this.configStore=x,this.skillStore=q,this.pluginStore=B,this.remoteStore=D,this.permissionStore=L.getInstance(x)}async initialize(){if(this._initialized)return;if("initialize"in this.configStore&&typeof this.configStore.initialize==="function")await this.configStore.initialize();if("initialize"in this.skillStore&&typeof this.skillStore.initialize==="function")await this.skillStore.initialize();if("initialize"in this.pluginStore&&typeof this.pluginStore.initialize==="function")await this.pluginStore.initialize();this._initialized=!0}async ensureInitialized(){if(!this._initialized)throw Error("ConfigManager not initialized. Call await manager.initialize() first.")}async getConfig(){return await this.ensureInitialized(),await this.configStore.getConfig()}async updateConfig(x){return await this.ensureInitialized(),await this.configStore.updateConfig(x)}async listSkills(){return await this.ensureInitialized(),await this.skillStore.listSkills()}async getSkill(x){return await this.ensureInitialized(),await this.skillStore.getSkill(x)}async saveSkill(x,q){return await this.ensureInitialized(),await this.skillStore.saveSkill(x,q)}async deleteSkill(x){return await this.ensureInitialized(),await this.skillStore.deleteSkill(x)}async syncSkillsFromRemote(){if(await this.ensureInitialized(),!this.remoteStore)throw Error("Remote store not configured");return await this.skillStore.syncFromRemote(this.remoteStore)}async listPlugins(){return await this.ensureInitialized(),await this.pluginStore.listPlugins()}async getPluginConfig(x){return await this.ensureInitialized(),await this.pluginStore.getPluginConfig(x)}async updatePluginConfig(x,q){return await this.ensureInitialized(),await this.pluginStore.updatePluginConfig(x,q)}async installPlugin(x,q){return await this.ensureInitialized(),await this.pluginStore.installPlugin(x,q)}async uninstallPlugin(x){return await this.ensureInitialized(),await this.pluginStore.uninstallPlugin(x)}async checkBashPermission(x,q){return await this.ensureInitialized(),await this.permissionStore.checkBashPermission(x,q)}async checkReadPermission(x){return await this.ensureInitialized(),await this.permissionStore.checkReadPermission(x)}async checkWritePermission(x){return await this.ensureInitialized(),await this.permissionStore.checkWritePermission(x)}async getPermissionMatcher(){return await this.ensureInitialized(),await this.permissionStore.getPermissions()}getConfigPath(){return this.configStore?.dbPath}}async function y(){let{FileSystemConfigStore:x}=await import("./chunk-1edvf7b5.js"),{FileSystemSkillStore:q}=await import("./chunk-qd305hg1.js"),{FileSystemPluginStore:B}=await import("./chunk-8z38ybz7.js"),D=new x,H=new q,J=new B,N=new V(D,H,J);return await N.initialize(),N}async function z(x){let{configStore:q,skillStore:B,pluginStore:D,remoteStore:H}=x,J=new V(q,B,D,H);return await J.initialize(),J}
|
|
2
|
+
export{V as ob,y as pb,z as qb};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{$ as C,W as R,X as Q,Y as b,Z as x,_,aa as f}from"./chunk-
|
|
1
|
+
import{$ as C,W as R,X as Q,Y as b,Z as x,_,aa as f}from"./chunk-jxsfzfac.js";import{yb as j}from"./chunk-kba8akjs.js";import{Kysely as q,sql as A}from"kysely";var K={maxRetries:3,baseDelayMs:100,nonRetryablePatterns:["database disk image is malformed","database is malformed","cannot rollback","no transaction is active","database or disk is full"],isRetryableError:(J)=>{let $=J?.message?.toLowerCase()||"";for(let B of K.nonRetryablePatterns)if($.includes(B.toLowerCase()))return!1;return $.includes("sqlite_busy")||$.includes("database is locked")||$==="sqlite_busy"||$==="database is locked"}};async function T(J,$){let B=null;for(let H=0;H<K.maxRetries;H++)try{return await J()}catch(Z){B=Z;let U=Z?.message?.toLowerCase()||"";if(!K.isRetryableError(Z)){if(U.includes("malformed")){let D=Error(`SQLite database is corrupted: ${Z.message}
|
|
2
2
|
|
|
3
3
|
Context: ${$||"unknown"}
|
|
4
4
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{R as C,T as S,U as y,V as w}from"./chunk-va71tsw3.js";import{ea as l,fa as Z,ga as J,ja as d,oa as V,pa as m,ra as D,ta as u}from"./chunk-nwy6n6b6.js";import{ub as q,yb as p}from"./chunk-kba8akjs.js";var L=q(l(),1);function f({filter:H,enabled:M=!0}){return S({queryKey:w.tasks.list(H),queryFn:async()=>{let{getTasksStore:X}=await import("./chunk-jfhc5c0d.js"),Y=X(process.cwd());if(await Y.initialize(),H)return await Y.getTasksByStatus(H);return await Y.getAllTasks()},enabled:M,staleTime:30000})}function I(){let H=C();return y({mutationFn:async(M)=>{let{getTasksStore:X}=await import("./chunk-jfhc5c0d.js"),Y=X(process.cwd());return await Y.initialize(),await Y.deleteTask(M)},onSuccess:(M,X)=>{H.invalidateQueries({queryKey:w.tasks.all}),H.removeQueries({queryKey:w.tasks.detail(X)})}})}var z=q(m(),1),F={pickup:{emoji:"\uD83D\uDCE5",color:"cyan",label:"待领取"},running:{emoji:"\uD83D\uDD04",color:"yellow",label:"运行中"},complete:{emoji:"✅",color:"green",label:"已完成"},error:{emoji:"❌",color:"red",label:"失败"},review:{emoji:"\uD83D\uDC40",color:"blue",label:"待审核"},feedback:{emoji:"\uD83D\uDCAC",color:"magenta",label:"待反馈"}},E={simple:{emoji:"\uD83D\uDFE2",label:"简单"},medium:{emoji:"\uD83D\uDFE1",label:"中等"},complex:{emoji:"\uD83D\uDD34",label:"复杂"}},i=({task:H,onClose:M,onExecuteTask:X,onDelete:Y})=>{V((K,Q)=>{if(Q.escape)M();else if(Q.return&&X){if(H.status==="pickup"||H.status==="error"||H.status==="feedback")X(H)}else if((Q.backspace||Q.delete)&&Y)Y(H)});let R=H.status?F[H.status]:F.pickup,A=H.status==="pickup"||H.status==="error"||H.status==="feedback",G=H.complexity?E[H.complexity]:null;return z.jsxDEV(Z,{flexDirection:"column",paddingX:1,children:[z.jsxDEV(Z,{borderStyle:"single",paddingX:1,marginBottom:1,children:[z.jsxDEV(J,{bold:!0,color:"cyan",children:[R.emoji," 任务预览"]},void 0,!0,void 0,this),z.jsxDEV(Z,{flexGrow:1},void 0,!1,void 0,this),A&&X&&z.jsxDEV(J,{color:"green",children:"Enter 执行"},void 0,!1,void 0,this),Y&&z.jsxDEV(z.Fragment,{children:[A&&X&&z.jsxDEV(J,{dimColor:!0,children:" | "},void 0,!1,void 0,this),z.jsxDEV(J,{color:"red",children:"Delete 删除"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV(J,{dimColor:!0,children:" | "},void 0,!1,void 0,this),z.jsxDEV(J,{dimColor:!0,children:"Esc 退出"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV(Z,{marginBottom:1,children:z.jsxDEV(J,{bold:!0,color:"white",children:H.title},void 0,!1,void 0,this)},void 0,!1,void 0,this),z.jsxDEV(Z,{marginBottom:1,children:[z.jsxDEV(J,{color:R.color,children:[R.emoji," ",R.label]},void 0,!0,void 0,this),G&&z.jsxDEV(z.Fragment,{children:[z.jsxDEV(J,{children:" • "},void 0,!1,void 0,this),z.jsxDEV(J,{children:[G.emoji," ",G.label]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),H.estimatedTime&&z.jsxDEV(z.Fragment,{children:[z.jsxDEV(J,{children:" • "},void 0,!1,void 0,this),z.jsxDEV(J,{children:["⏱️ ",H.estimatedTime]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV(Z,{marginBottom:1,flexDirection:"column",children:[z.jsxDEV(J,{color:"gray",bold:!0,children:"描述:"},void 0,!1,void 0,this),z.jsxDEV(J,{children:H.description},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.jsxDEV(Z,{marginBottom:1,children:[z.jsxDEV(J,{color:"gray",children:"ID: "},void 0,!1,void 0,this),z.jsxDEV(J,{dimColor:!0,children:H.id},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H.agentType&&z.jsxDEV(Z,{marginBottom:1,children:[z.jsxDEV(J,{color:"gray",children:"建议 Agent: "},void 0,!1,void 0,this),z.jsxDEV(J,{color:"yellow",children:H.agentType},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H.assignedTo&&z.jsxDEV(Z,{marginBottom:1,children:[z.jsxDEV(J,{color:"gray",children:"分配给: "},void 0,!1,void 0,this),z.jsxDEV(J,{color:"blue",children:H.assignedTo},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H.threadId&&z.jsxDEV(Z,{marginBottom:1,children:[z.jsxDEV(J,{color:"gray",children:"Thread ID: "},void 0,!1,void 0,this),z.jsxDEV(J,{dimColor:!0,children:H.threadId},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H.dependencies&&H.dependencies.length>0&&z.jsxDEV(Z,{marginBottom:1,flexDirection:"column",children:[z.jsxDEV(J,{color:"gray",bold:!0,children:"依赖任务:"},void 0,!1,void 0,this),z.jsxDEV(J,{dimColor:!0,children:H.dependencies.join(", ")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H.acceptanceCriteria&&H.acceptanceCriteria.length>0&&z.jsxDEV(Z,{marginBottom:1,flexDirection:"column",children:[z.jsxDEV(J,{color:"gray",bold:!0,children:"验收标准:"},void 0,!1,void 0,this),H.acceptanceCriteria.map((K,Q)=>z.jsxDEV(J,{dimColor:!0,children:[Q+1,". ",K]},`ac-${Q}-${H.id}`,!0,void 0,this))]},void 0,!0,void 0,this),H.children&&H.children.length>0&&z.jsxDEV(Z,{flexDirection:"column",children:[z.jsxDEV(J,{color:"gray",bold:!0,children:["子任务 (",H.children.length,"):"]},void 0,!0,void 0,this),H.children.map((K,Q)=>{let U=K.status?F[K.status]:F.pickup;return z.jsxDEV(Z,{children:z.jsxDEV(J,{color:U.color,children:[U.emoji," ",Q+1,". ",K.title]},void 0,!0,void 0,this)},`child-task-${Q}-${K.id||Q}`,!1,void 0,this)})]},void 0,!0,void 0,this),H.status==="error"&&H.error&&z.jsxDEV(Z,{marginTop:1,flexDirection:"column",borderStyle:"single",paddingX:1,children:[z.jsxDEV(J,{color:"red",bold:!0,children:"错误:"},void 0,!1,void 0,this),z.jsxDEV(J,{color:"red",children:H.error.message},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},j=i;var $=q(m(),1),P={pickup:{emoji:"\uD83D\uDCE5",color:"cyan",label:"待领取"},running:{emoji:"\uD83D\uDD04",color:"yellow",label:"运行中"},complete:{emoji:"✅",color:"green",label:"已完成"},error:{emoji:"❌",color:"red",label:"失败"},review:{emoji:"\uD83D\uDC40",color:"blue",label:"待审核"},feedback:{emoji:"\uD83D\uDCAC",color:"magenta",label:"待反馈"}},r={simple:{emoji:"\uD83D\uDFE2",label:"简单"},medium:{emoji:"\uD83D\uDFE1",label:"中等"},complex:{emoji:"\uD83D\uDD34",label:"复杂"}},n=({onClose:H,onExecuteTask:M})=>{let{data:X=[]}=f(),Y=I(),[R,A]=L.useState(null),G=L.useRef(A),K=L.useRef(M);L.default.useEffect(()=>{G.current=A},[A]),L.default.useEffect(()=>{K.current=M},[M]);let Q=L.useCallback(()=>{A(null)},[]),U=L.useCallback(async(W)=>{await Y.mutateAsync(W.id),A((N)=>N?.id===W.id?null:N)},[Y]),v=L.useCallback((W,N,B)=>{let O=W.status?P[W.status]:P.pickup,_=W.complexity?r[W.complexity]:null;return $.jsxDEV(D,{isSelected:B,children:$.jsxDEV(Z,{children:[$.jsxDEV(J,{color:"cyan",dimColor:O===P.complete,children:[O.emoji," ",N+1,". ",W.title]},void 0,!0,void 0,this),$.jsxDEV(d,{},void 0,!1,void 0,this),$.jsxDEV(J,{color:"yellow",dimColor:!0,children:O.label},void 0,!1,void 0,this),_&&$.jsxDEV(J,{dimColor:!0,children:[_.emoji," ",_.label]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},`task-${W.id}`,!1,void 0,this)},[]),g=L.useCallback((W)=>{let N=W.filter((b)=>b.status==="running").length,B=W.filter((b)=>b.status==="complete").length,O=W.filter((b)=>b.status==="error").length,_=W.filter((b)=>b.status==="pickup"||b.status==="error"||b.status==="feedback").length;return $.jsxDEV(J,{color:"gray",children:["运行: ",N," | 完成: ",B," | 失败: ",O,_>0&&$.jsxDEV(J,{color:"green",children:[" | 可执行: ",_]},void 0,!0,void 0,this),$.jsxDEV(J,{dimColor:!0,children:" | Backspace 删除"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},[]),h=L.useCallback((W)=>{G.current(W)},[]),c=L.default.useMemo(()=>({id:"tasks",title:"任务看板",icon:"\uD83D\uDCCB",dataSource:async()=>X,searchable:!0,searchFields:["title","description"],searchPlaceholder:"搜索任务...",filterable:!0,filters:[{id:"all",label:"全部",predicate:()=>!0},{id:"pickup",label:"待领取",predicate:(W)=>W.status==="pickup"},{id:"running",label:"运行中",predicate:(W)=>W.status==="running"},{id:"complete",label:"已完成",predicate:(W)=>W.status==="complete"},{id:"error",label:"失败",predicate:(W)=>W.status==="error"}],defaultFilter:"all",itemHeight:3,visibleCount:10,renderItem:v,onSelect:h,onDelete:U,showCount:!0,statusInfo:g}),[X,v,g,h,U]);return $.jsxDEV($.Fragment,{children:R?$.jsxDEV(j,{task:R,onClose:Q,onExecuteTask:M,onDelete:U},void 0,!1,void 0,this):$.jsxDEV(u,{config:c,onClose:H},void 0,!1,void 0,this)},void 0,!1,void 0,this)},Zz=n;export{Zz as default};
|