zen-code 4.8.6 → 4.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/app.js +111 -106
  2. package/dist/{chunk-vyejbw66.js → chunk-13nyfrmm.js} +1 -1
  3. package/dist/chunk-1edvf7b5.js +1 -0
  4. package/dist/chunk-1rmnbdef.js +1 -0
  5. package/dist/{chunk-fbg1z6br.js → chunk-1ttywx0y.js} +1 -1
  6. package/dist/{chunk-aeambwc5.js → chunk-1y82m5kn.js} +4 -4
  7. package/dist/{chunk-8ypsygqy.js → chunk-30sq2w0d.js} +5 -5
  8. package/dist/chunk-32ase1cw.js +2 -0
  9. package/dist/{chunk-scddrzwd.js → chunk-3490ntd8.js} +1 -1
  10. package/dist/{chunk-mhfjwkg9.js → chunk-3pcybja5.js} +1 -1
  11. package/dist/{chunk-q87zdrxp.js → chunk-4nsg4vcd.js} +1 -1
  12. package/dist/{chunk-4fwb6qr1.js → chunk-5rr85f28.js} +1 -1
  13. package/dist/{chunk-5kmnxyd8.js → chunk-5x8nxw0t.js} +1 -1
  14. package/dist/chunk-6rfc36jg.js +1 -0
  15. package/dist/{chunk-fnrbq03p.js → chunk-76h8pe7x.js} +2 -2
  16. package/dist/{chunk-0kqqh5rr.js → chunk-7kdvr78m.js} +2 -2
  17. package/dist/{chunk-hqyfg97v.js → chunk-8g2zdcy0.js} +1 -1
  18. package/dist/chunk-8z38ybz7.js +1 -0
  19. package/dist/{chunk-jsagr88c.js → chunk-98f6hg43.js} +1 -1
  20. package/dist/chunk-9dahn9h7.js +3 -0
  21. package/dist/chunk-9k5d9vf1.js +1 -0
  22. package/dist/{chunk-bzgj8aae.js → chunk-b52b0t16.js} +1 -1
  23. package/dist/chunk-b8dxq9rq.js +1 -0
  24. package/dist/{chunk-tvqxepjm.js → chunk-cggjws6a.js} +1 -1
  25. package/dist/{chunk-czbkc7pc.js → chunk-cjqarwdn.js} +1 -1
  26. package/dist/{chunk-mqbn36h4.js → chunk-cs73xbzz.js} +1 -1
  27. package/dist/{chunk-xemvstcq.js → chunk-cyexd09c.js} +2 -2
  28. package/dist/{chunk-pww7x4hb.js → chunk-ep2es95e.js} +1 -1
  29. package/dist/chunk-f8ewggk1.js +1 -0
  30. package/dist/{chunk-1rnd4taj.js → chunk-g377vrpj.js} +3 -3
  31. package/dist/{chunk-141pasd6.js → chunk-g7pm00z7.js} +2 -2
  32. package/dist/chunk-gcm4jp0d.js +26 -0
  33. package/dist/{chunk-pw18cs39.js → chunk-heasksrr.js} +2 -2
  34. package/dist/chunk-hfve7nf5.js +2 -0
  35. package/dist/{chunk-6hpehtte.js → chunk-j7a40ww9.js} +2 -2
  36. package/dist/chunk-j9aysaeb.js +1 -0
  37. package/dist/{chunk-ph818by4.js → chunk-jbf8ve63.js} +1 -1
  38. package/dist/{chunk-mfjc63aw.js → chunk-jfhc5c0d.js} +1 -1
  39. package/dist/{chunk-jwzkek1t.js → chunk-jxsfzfac.js} +1 -1
  40. package/dist/{chunk-fzn8xq6f.js → chunk-kba8akjs.js} +1 -1
  41. package/dist/{chunk-favbv2tp.js → chunk-m76ya904.js} +1 -1
  42. package/dist/{chunk-c6nzmyns.js → chunk-mjzeawnq.js} +2 -2
  43. package/dist/{chunk-ed6aprzz.js → chunk-mmq834zt.js} +1 -1
  44. package/dist/chunk-ns6tjjkq.js +1 -0
  45. package/dist/{chunk-emv4z7ck.js → chunk-nwy6n6b6.js} +87 -87
  46. package/dist/chunk-qd305hg1.js +1 -0
  47. package/dist/chunk-qez6ejd4.js +1 -0
  48. package/dist/{chunk-p8fbtgk3.js → chunk-r2h3x9zv.js} +1 -1
  49. package/dist/{chunk-8vkm1ts6.js → chunk-rncpxz1b.js} +1 -1
  50. package/dist/chunk-rz3b356n.js +1 -0
  51. package/dist/{chunk-py5g6yc2.js → chunk-trjpzw1n.js} +1 -1
  52. package/dist/{chunk-g1bcpymb.js → chunk-va71tsw3.js} +2 -2
  53. package/dist/{chunk-pyw1vxnf.js → chunk-wn43r152.js} +1 -1
  54. package/dist/{chunk-0f022x9v.js → chunk-xhnvpygg.js} +1 -1
  55. package/dist/{chunk-jn4j9rm3.js → chunk-xkz5z0zn.js} +1 -1
  56. package/dist/chunk-zwxjkwqd.js +26 -0
  57. package/dist/{chunk-cqrb18vt.js → chunk-zz32kgt2.js} +1 -1
  58. package/dist/cli.js +1 -1
  59. package/dist/nonInteractive.js +3 -3
  60. package/dist/zen-keyboard.js +1 -1
  61. package/package.json +3 -3
  62. package/dist/chunk-0a26n1zy.js +0 -26
  63. package/dist/chunk-2e7zh8he.js +0 -1
  64. package/dist/chunk-2y73pxem.js +0 -1
  65. package/dist/chunk-6yeg1jc7.js +0 -1
  66. package/dist/chunk-903s8sk9.js +0 -1
  67. package/dist/chunk-ema4rc9d.js +0 -2
  68. package/dist/chunk-f4tc5awt.js +0 -1
  69. package/dist/chunk-f7d0m4h3.js +0 -1
  70. package/dist/chunk-gar31nyn.js +0 -1
  71. package/dist/chunk-mdkwbajq.js +0 -2
  72. package/dist/chunk-p1bn8p65.js +0 -1
  73. package/dist/chunk-s6gzrjxk.js +0 -25
  74. package/dist/chunk-spvbvpx5.js +0 -1
  75. 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{tb as L}from"./chunk-fzn8xq6f.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}});
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-fzn8xq6f.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`
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 rb};
2
+ export{A as nb};
@@ -1 +1 @@
1
- import{v as M}from"./chunk-mqbn36h4.js";import"./chunk-8vkm1ts6.js";import{T as A,V as _}from"./chunk-g1bcpymb.js";import{ea as g,fa as X,ga as Y,oa as C,sa as K}from"./chunk-emv4z7ck.js";import{Aa as R}from"./chunk-0f022x9v.js";import{sb as Q}from"./chunk-fzn8xq6f.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
+ 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-8vkm1ts6.js";import{ea as R,oa as w}from"./chunk-emv4z7ck.js";import{sb as K}from"./chunk-fzn8xq6f.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 v,VP as w,_P as x,xP as y,pP as z,iP as A,rP as B,JH as C,WH as D};
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{wb as W}from"./chunk-fzn8xq6f.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-t15ptqbm.js"),{FileSystemSkillStore:q}=await import("./chunk-2e7zh8he.js"),{FileSystemPluginStore:B}=await import("./chunk-2y73pxem.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 mb,y as nb,z as ob};
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-jwzkek1t.js";import{wb as j}from"./chunk-fzn8xq6f.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}
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};