blade-code 0.10.70 → 0.10.72

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 (110) hide show
  1. package/dist/blade.js +2 -2
  2. package/dist/{chunk-832va1mp.js → chunk-06y3rada.js} +2 -2
  3. package/dist/{chunk-k0pa8874.js → chunk-0kat01bw.js} +1 -1
  4. package/dist/{chunk-th4jjfgm.js → chunk-0qj8jfj1.js} +1 -1
  5. package/dist/{chunk-w2gr97qt.js → chunk-11gdqmbm.js} +1 -1
  6. package/dist/chunk-139s7p91.js +1 -0
  7. package/dist/{chunk-zvz2cnt4.js → chunk-18atvz38.js} +1 -1
  8. package/dist/{chunk-ypgjqg23.js → chunk-28wsyv32.js} +1 -1
  9. package/dist/{chunk-b2p4kd07.js → chunk-2d2bcyn1.js} +1 -1
  10. package/dist/{chunk-31k6x4kn.js → chunk-2fd5trh8.js} +2 -2
  11. package/dist/{chunk-cdy9efgm.js → chunk-2sdnmxts.js} +1 -1
  12. package/dist/chunk-2vkzwqv0.js +1 -0
  13. package/dist/chunk-41smvqs8.js +1 -0
  14. package/dist/{chunk-hat9v5c5.js → chunk-4wvsg8cc.js} +1 -1
  15. package/dist/{chunk-6pyktfa4.js → chunk-4xpj0d6y.js} +1 -1
  16. package/dist/{chunk-d2vrbbvd.js → chunk-5va3hhfp.js} +1 -1
  17. package/dist/chunk-61arrvhp.js +1 -0
  18. package/dist/{chunk-yn51162x.js → chunk-6j3k4v08.js} +1 -1
  19. package/dist/{chunk-s7jsadnc.js → chunk-6j9t1xbh.js} +2 -2
  20. package/dist/{chunk-wkpacysr.js → chunk-6v7f2cv9.js} +53 -53
  21. package/dist/{chunk-20vj0npz.js → chunk-7am1z065.js} +1 -1
  22. package/dist/{chunk-r9n8y8m1.js → chunk-7hf1k2c9.js} +2 -2
  23. package/dist/chunk-8geywf8q.js +1 -0
  24. package/dist/{chunk-4md4sd4j.js → chunk-91qsjpm6.js} +2 -2
  25. package/dist/{chunk-p9vaaayr.js → chunk-a38chc6z.js} +18 -18
  26. package/dist/{chunk-728anavt.js → chunk-awj9aqjy.js} +2 -2
  27. package/dist/chunk-bqz8wera.js +1 -0
  28. package/dist/chunk-brm24s69.js +2 -0
  29. package/dist/chunk-bs77d8hn.js +2 -0
  30. package/dist/{chunk-f7yfcw8s.js → chunk-c4j2anbm.js} +2 -2
  31. package/dist/{chunk-b39p4f5r.js → chunk-ccgq8nrm.js} +2 -2
  32. package/dist/{chunk-sch01e04.js → chunk-cqeqjtxn.js} +1 -1
  33. package/dist/{chunk-4aam3qhk.js → chunk-cyjnza5n.js} +4 -4
  34. package/dist/chunk-d9a0g85f.js +1 -0
  35. package/dist/{chunk-g28pgqyn.js → chunk-e0hf1317.js} +1 -1
  36. package/dist/chunk-e4ynb9qf.js +1 -0
  37. package/dist/chunk-e6ezndyf.js +22 -0
  38. package/dist/chunk-eh4h7fmr.js +3 -0
  39. package/dist/chunk-eh9gdzk5.js +160 -0
  40. package/dist/chunk-emqbb5xh.js +1 -0
  41. package/dist/{chunk-h0ft81a3.js → chunk-g8425xh4.js} +1 -1
  42. package/dist/{chunk-d808m826.js → chunk-gv3ed5gw.js} +2 -2
  43. package/dist/chunk-gzysna9c.js +1 -0
  44. package/dist/{chunk-wahhwjp9.js → chunk-hhk5ecpv.js} +2 -2
  45. package/dist/{chunk-z77c18j5.js → chunk-hhvkzn6m.js} +1 -1
  46. package/dist/{chunk-0kmrvxsz.js → chunk-hryhnmwv.js} +277 -262
  47. package/dist/{chunk-0p0e70cy.js → chunk-hwjmm2br.js} +2 -2
  48. package/dist/{chunk-8wea3qty.js → chunk-j0yvwrd7.js} +2 -2
  49. package/dist/{chunk-m57w4p91.js → chunk-jyds9m8p.js} +1 -1
  50. package/dist/{chunk-v0rsz1rt.js → chunk-m6qgme8k.js} +1 -1
  51. package/dist/{chunk-1z9k5dmz.js → chunk-mhyat4mq.js} +2 -2
  52. package/dist/{chunk-83b4vfjs.js → chunk-mp4bfn57.js} +1 -1
  53. package/dist/chunk-mrh3vs01.js +2 -0
  54. package/dist/chunk-ph5rn44j.js +1 -0
  55. package/dist/chunk-pqhjrdnq.js +10 -0
  56. package/dist/{chunk-0j22w4wh.js → chunk-q6daf441.js} +1 -1
  57. package/dist/{chunk-0wxkymqv.js → chunk-s9brgcgs.js} +1 -1
  58. package/dist/{chunk-1bcp0qc4.js → chunk-ss1znmv0.js} +1 -1
  59. package/dist/{chunk-bkajr86v.js → chunk-tms0pr01.js} +2 -2
  60. package/dist/chunk-v7phc78b.js +1 -0
  61. package/dist/{chunk-t8xmh4w2.js → chunk-wvg81sd9.js} +1 -1
  62. package/dist/{chunk-sh17gjxv.js → chunk-x4hh8yqg.js} +1 -1
  63. package/dist/{chunk-pw87f92g.js → chunk-xahapj98.js} +1 -1
  64. package/dist/{chunk-smjkx71w.js → chunk-xszsveq1.js} +1 -1
  65. package/dist/{chunk-y9d9nqnn.js → chunk-y858e8pb.js} +2 -2
  66. package/dist/{chunk-bjqjdw34.js → chunk-yhnr8vdb.js} +2 -2
  67. package/dist/{chunk-7b5s752s.js → chunk-yjj7q7hy.js} +1 -1
  68. package/dist/{chunk-q919ypcz.js → chunk-ypwjzw5x.js} +2 -2
  69. package/dist/{chunk-qm5c9wew.js → chunk-z7vj2xrg.js} +3 -3
  70. package/dist/{chunk-63121s4r.js → chunk-zac26wwd.js} +1 -1
  71. package/dist/{chunk-k6shq7rk.js → chunk-zf96d5we.js} +1 -1
  72. package/dist/chunk-zqxj65xc.js +1 -0
  73. package/dist/chunk-zssys78z.js +1 -0
  74. package/dist/web/assets/ChatView-CgUC5rxo.js +18 -0
  75. package/dist/web/assets/{CodeBlockHighlighter-Dy7QpAmC.js → CodeBlockHighlighter-B5DRAEhB.js} +1 -1
  76. package/dist/web/assets/{FilePreview-BI3nkxz1.js → FilePreview-DSpvLsjW.js} +1 -1
  77. package/dist/web/assets/{KanbanBoard-D5dYOyPH.js → KanbanBoard-6K7IeCXi.js} +1 -1
  78. package/dist/web/assets/{MarkdownRenderer-Da1vB81L.js → MarkdownRenderer-D6LiW9kF.js} +3 -3
  79. package/dist/web/assets/{SettingsModal-jcCFqLqS.js → SettingsModal-CFHxLfuL.js} +1 -1
  80. package/dist/web/assets/{TaskSwitcher-CQ--jOLB.js → TaskSwitcher-Bng9nDed.js} +1 -1
  81. package/dist/web/assets/{TerminalPanel-CWzjEXOb.js → TerminalPanel-BnyQZwkN.js} +1 -1
  82. package/dist/web/assets/index-CDdYV8kB.css +1 -0
  83. package/dist/web/assets/index-DId2GJVO.js +11 -0
  84. package/dist/web/assets/{vendor-icons-B63aW_OM.js → vendor-icons-C927DZlr.js} +41 -36
  85. package/dist/web/index.html +3 -3
  86. package/package.json +1 -1
  87. package/dist/chunk-0p95nha3.js +0 -1
  88. package/dist/chunk-2z75emht.js +0 -1
  89. package/dist/chunk-3j413cgh.js +0 -1
  90. package/dist/chunk-5wnx38ze.js +0 -1
  91. package/dist/chunk-8bsyhr4v.js +0 -1
  92. package/dist/chunk-brdxkp0y.js +0 -10
  93. package/dist/chunk-c0qm0wwk.js +0 -1
  94. package/dist/chunk-cmpj3a5a.js +0 -22
  95. package/dist/chunk-cx5s0rf3.js +0 -1
  96. package/dist/chunk-e3asq942.js +0 -1
  97. package/dist/chunk-ffym3kf3.js +0 -160
  98. package/dist/chunk-h94vfh7s.js +0 -1
  99. package/dist/chunk-jrr361h1.js +0 -2
  100. package/dist/chunk-nea4rcdf.js +0 -1
  101. package/dist/chunk-qstf0gpe.js +0 -1
  102. package/dist/chunk-rpfa4a56.js +0 -1
  103. package/dist/chunk-v3kkv21n.js +0 -1
  104. package/dist/chunk-wepvrnmh.js +0 -2
  105. package/dist/chunk-wj6t3tv2.js +0 -3
  106. package/dist/chunk-xz6y0w4n.js +0 -2
  107. package/dist/chunk-ysmqje92.js +0 -1
  108. package/dist/web/assets/ChatView-BVrhnE2j.js +0 -18
  109. package/dist/web/assets/index-BOgOL4hG.js +0 -11
  110. package/dist/web/assets/index-DbWgTuT3.css +0 -1
@@ -0,0 +1 @@
1
+ import{$d as q,Ld as a,Md as b,Nd as c,Od as d,Pd as e,Qd as f,Rd as g,Sd as h,Td as i,Ud as j,Vd as k,Wd as l,Xd as m,Yd as n,Zd as o,_d as p}from"./chunk-a38chc6z.js";import"./chunk-v508x7cg.js";import"./chunk-q6daf441.js";import"./chunk-ccgq8nrm.js";import"./chunk-g8425xh4.js";import"./chunk-m6qgme8k.js";import"./chunk-mrh3vs01.js";import"./chunk-0kat01bw.js";import"./chunk-4xpj0d6y.js";import"./chunk-gv3ed5gw.js";import"./chunk-hwjmm2br.js";import"./chunk-wvg81sd9.js";import"./chunk-y858e8pb.js";import"./chunk-eh4h7fmr.js";import"./chunk-bs77d8hn.js";import"./chunk-j0yvwrd7.js";import"./chunk-zf96d5we.js";export{a as vanillaStore,c as sessionActions,l as getThinkingModeEnabled,b as getState,n as getServiceTier,o as getResponseVerbosity,m as getReasoningEffort,j as getModelById,e as getMessages,k as getMcpServers,i as getCurrentModel,f as getConfig,p as getCommunicationStyle,h as getAllModels,g as ensureStoreInitialized,q as configActions,d as appActions};
@@ -1,2 +1,2 @@
1
1
  var F;((D)=>{D.DEFAULT="default";D.AUTO_EDIT="autoEdit";D.YOLO="yolo";D.PLAN="plan"})(F||={});import{Mutex as G}from"async-mutex";class H{entries=new Map;async runExclusive(C,E){let B=this.entries.get(C);if(!B)B={mutex:new G,operations:0},this.entries.set(C,B);B.operations++;try{return await B.mutex.runExclusive(E)}finally{if(B.operations--,B.operations===0&&this.entries.get(C)===B)this.entries.delete(C)}}getStats(){let C=0;for(let E of this.entries.values())C+=E.operations;return{keys:this.entries.size,operations:C}}}
2
- export{F as ig,H as jg};
2
+ export{F as ng,H as og};
@@ -1,3 +1,3 @@
1
- import{Ah as j}from"./chunk-8wea3qty.js";import{appendFileSync as E,existsSync as O,mkdirSync as R,readdirSync as U,statSync as B,unlinkSync as k}from"node:fs";import W from"node:path";var X;((H)=>{H[H.DEBUG=0]="DEBUG";H[H.INFO=1]="INFO";H[H.WARN=2]="WARN";H[H.ERROR=3]="ERROR"})(X||={});var T=null,_=null,$=!1;function m(q){if(T!==q)T=q}async function I(){}function w(){if($)return _;$=!0;try{let q=W.join(j(),"logs");if(!O(q))R(q,{recursive:!0,mode:493});if(B(q).uid===0&&process.getuid&&process.getuid()!==0)return console.error(""),console.error("[FAIL] 权限错误:~/.blade/logs 目录属于 root 用户"),console.error(""),console.error("这通常是因为您曾经使用 sudo 运行过 blade。"),console.error(""),console.error("解决方法:"),console.error(" sudo chown -R $USER:$USER ~/.blade/"),console.error(""),console.error("然后重新运行 blade(不要使用 sudo)"),console.error(""),null;return z(q,30),_=q,q}catch(q){return console.error("[Logger] 无法创建日志目录:",q),null}}function z(q,G){try{let J=U(q),K=Date.now(),H=G*24*60*60*1000;for(let Q of J){if(!Q.startsWith("blade-")||!Q.endsWith(".log")&&!Q.endsWith(".jsonl"))continue;let Y=W.join(q,Q);try{let Z=B(Y);if(K-Z.mtimeMs>H)k(Y)}catch(Z){}}}catch(J){}}function F(){let q=w();if(!q)return null;let G=T||"default";return W.join(q,`blade-${G}.jsonl`)}function A(q,G,J){let K=F();if(!K)return;try{let H={timestamp:new Date().toISOString(),level:X[G],category:q,message:J};E(K,JSON.stringify(H)+`
1
+ import{Gh as j}from"./chunk-j0yvwrd7.js";import{appendFileSync as E,existsSync as O,mkdirSync as R,readdirSync as U,statSync as B,unlinkSync as k}from"node:fs";import W from"node:path";var X;((H)=>{H[H.DEBUG=0]="DEBUG";H[H.INFO=1]="INFO";H[H.WARN=2]="WARN";H[H.ERROR=3]="ERROR"})(X||={});var T=null,_=null,$=!1;function m(q){if(T!==q)T=q}async function I(){}function w(){if($)return _;$=!0;try{let q=W.join(j(),"logs");if(!O(q))R(q,{recursive:!0,mode:493});if(B(q).uid===0&&process.getuid&&process.getuid()!==0)return console.error(""),console.error("[FAIL] 权限错误:~/.blade/logs 目录属于 root 用户"),console.error(""),console.error("这通常是因为您曾经使用 sudo 运行过 blade。"),console.error(""),console.error("解决方法:"),console.error(" sudo chown -R $USER:$USER ~/.blade/"),console.error(""),console.error("然后重新运行 blade(不要使用 sudo)"),console.error(""),null;return z(q,30),_=q,q}catch(q){return console.error("[Logger] 无法创建日志目录:",q),null}}function z(q,G){try{let J=U(q),K=Date.now(),H=G*24*60*60*1000;for(let Q of J){if(!Q.startsWith("blade-")||!Q.endsWith(".log")&&!Q.endsWith(".jsonl"))continue;let Y=W.join(q,Q);try{let Z=B(Y);if(K-Z.mtimeMs>H)k(Y)}catch(Z){}}}catch(J){}}function F(){let q=w();if(!q)return null;let G=T||"default";return W.join(q,`blade-${G}.jsonl`)}function A(q,G,J){let K=F();if(!K)return;try{let H={timestamp:new Date().toISOString(),level:X[G],category:q,message:J};E(K,JSON.stringify(H)+`
2
2
  `)}catch(H){}}class M{static globalDebugConfig=null;enabled;minLevel;category;constructor(q={}){if(q.enabled!==void 0)this.enabled=q.enabled;else if(M.globalDebugConfig!==null)this.enabled=Boolean(M.globalDebugConfig);else this.enabled=!1;this.minLevel=q.minLevel??0,this.category=q.category??"General"}static setGlobalDebug(q){M.globalDebugConfig=q}static clearGlobalDebug(){M.globalDebugConfig=null}setEnabled(q){this.enabled=q}parseDebugFilter(q){if(!q)return{enabled:!1};if(q===!0||q==="true"||q==="1")return{enabled:!0};let G=String(q).trim();if(!G)return{enabled:!0};if(G.startsWith("!"))return{enabled:!0,filter:{mode:"exclude",categories:G.split(",").map((H)=>H.trim().replace(/^!/,"")).filter(Boolean)}};return{enabled:!0,filter:{mode:"include",categories:G.split(",").map((K)=>K.trim()).filter(Boolean)}}}shouldLogCategory(q){if(!q)return!0;let G=this.category.toLowerCase();if(q.mode==="include")return q.categories.some((J)=>G.includes(J.toLowerCase()));return!q.categories.some((J)=>G.includes(J.toLowerCase()))}shouldLogToConsole(q){if(M.globalDebugConfig!==null){let{enabled:G,filter:J}=this.parseDebugFilter(M.globalDebugConfig);if(!G)return!1;if(q<this.minLevel)return!1;return this.shouldLogCategory(J)}return this.enabled&&q>=this.minLevel}log(q,...G){let J=G.map((K)=>typeof K==="object"?JSON.stringify(K):String(K)).join(" ");if(A(this.category,q,J),this.shouldLogToConsole(q)){let K=X[q],H=`[${this.category}] [${K}]`;console.error(H,...G)}}debug(...q){this.log(0,...q)}info(...q){this.log(1,...q)}warn(...q){this.log(2,...q)}error(...q){this.log(3,...q)}}function V(q,G){return new M({...G,category:q})}var h=new M({category:"General"});
3
- export{m as Ug,I as Vg,M as Wg,V as Xg,h as Yg};
3
+ export{m as Zg,I as _g,M as $g,V as ah,h as bh};
@@ -0,0 +1 @@
1
+ import{Eb as l,Fb as m,Gb as n,Hb as o,Jb as p,Kb as q,Lb as r,jb as a,kb as b,mb as c,qb as d,rb as e,sb as f,tb as g,ub as h,vb as i,wb as j,xb as k}from"./chunk-6v7f2cv9.js";import"./chunk-0qj8jfj1.js";import"./chunk-mhyat4mq.js";import"./chunk-s9brgcgs.js";import"./chunk-c4j2anbm.js";import"./chunk-q6daf441.js";import"./chunk-ypwjzw5x.js";import"./chunk-6j3k4v08.js";import"./chunk-4wvsg8cc.js";import"./chunk-2sdnmxts.js";import"./chunk-z7vj2xrg.js";import"./chunk-jyds9m8p.js";import"./chunk-g8425xh4.js";import"./chunk-m6qgme8k.js";import"./chunk-mrh3vs01.js";import"./chunk-0kat01bw.js";import"./chunk-4xpj0d6y.js";import"./chunk-gv3ed5gw.js";import"./chunk-hwjmm2br.js";import"./chunk-wvg81sd9.js";import"./chunk-y858e8pb.js";import"./chunk-bs77d8hn.js";import"./chunk-j0yvwrd7.js";import"./chunk-zf96d5we.js";export{g as saveUserMessage,i as saveToolUse,j as saveToolResult,k as saveCompaction,h as saveAssistantMessage,d as isRootSystemPrompt,m as handleTaskListUpdate,n as handleSkillActivation,o as extractModelSwitch,r as executeLoopGenerator,f as drainLoop,c as checkStopHook,a as checkOutputRecovery,b as checkIncompleteIntent,q as checkAndCompactInLoop,p as applyToolDomainEffects,l as StreamingToolExecutor,e as ConversationState};
@@ -1,4 +1,4 @@
1
- import{Oe as j1,Pe as L0,Qe as F1}from"./chunk-hat9v5c5.js";import{Ue as WO,Ve as IO}from"./chunk-cdy9efgm.js";import{Ye as B1}from"./chunk-zvz2cnt4.js";import{$e as J0,Ze as b0}from"./chunk-qm5c9wew.js";import{bg as z0,cg as $O,gg as I0}from"./chunk-b39p4f5r.js";import{kg as u,mg as L,pg as P1}from"./chunk-v0rsz1rt.js";import{wg as M}from"./chunk-k0pa8874.js";import{Xg as k,Yg as z}from"./chunk-d808m826.js";import{jh as g0}from"./chunk-y9d9nqnn.js";import{qh as N}from"./chunk-wj6t3tv2.js";import Y1 from"node:path";import QO from"node:path";import R0 from"node:fs";import X0 from"node:os";import R from"node:path";import EO from"yaml";var Q4={type:"object",properties:{verdict:{type:"string",enum:["pass","fail","partial"]},summary:{type:"string",minLength:1,maxLength:2000},findings:{type:"array",maxItems:50,items:{type:"string",minLength:1,maxLength:1000}}},required:["verdict","summary","findings"],additionalProperties:!1};function Z4(O){if(!O||typeof O!=="object"||Array.isArray(O))return;let $=O.verdict;return $==="pass"||$==="fail"||$==="partial"?$:void 0}var NO=`# Goal Completion Verifier
1
+ import{Te as j1,Ue as L0,Ve as F1}from"./chunk-4wvsg8cc.js";import{Ze as WO,_e as IO}from"./chunk-2sdnmxts.js";import{bf as B1}from"./chunk-18atvz38.js";import{cf as b0,ef as J0}from"./chunk-z7vj2xrg.js";import{gg as z0,hg as $O,lg as I0}from"./chunk-ccgq8nrm.js";import{pg as u,rg as L,ug as P1}from"./chunk-m6qgme8k.js";import{Bg as M}from"./chunk-0kat01bw.js";import{ah as k,bh as z}from"./chunk-gv3ed5gw.js";import{oh as g0}from"./chunk-y858e8pb.js";import{vh as N}from"./chunk-eh4h7fmr.js";import Y1 from"node:path";import QO from"node:path";import R0 from"node:fs";import X0 from"node:os";import R from"node:path";import EO from"yaml";var Q4={type:"object",properties:{verdict:{type:"string",enum:["pass","fail","partial"]},summary:{type:"string",minLength:1,maxLength:2000},findings:{type:"array",maxItems:50,items:{type:"string",minLength:1,maxLength:1000}}},required:["verdict","summary","findings"],additionalProperties:!1};function Z4(O){if(!O||typeof O!=="object"||Array.isArray(O))return;let $=O.verdict;return $==="pass"||$==="fail"||$==="partial"?$:void 0}var NO=`# Goal Completion Verifier
2
2
 
3
3
  You are a fresh, independent, adversarial verifier. The parent Agent has claimed
4
4
  that a persisted goal is complete. Your job is to refute that claim unless the
@@ -716,4 +716,4 @@ ${Z.join(`
716
716
  </${Q}>`:"";return{content:q,files:[...O],references:O.map(n$),triggerPaths:[...$],contentBytes:Buffer.byteLength(q,"utf8"),provenanceSha256:w0(O.map((K)=>`${K.id}:${K.contentSha256}`).join(`
717
717
  `))}}function BO(O,$){let Q=$,Z=[];for(let J=O.length-1;J>=0;J-=1){let q=O[J];if(!q)continue;let K=Buffer.byteLength(q.content,"utf8");if(K>Q)continue;Z.push(q),Q-=K}return Z.reverse()}class d{projectRoot;catalogSha256;definitions;byId;constructor(O,$=[]){this.projectRoot=O;this.projectRoot=K1(O),this.definitions=Object.freeze([...$].sort(G1).map((Q)=>Object.freeze({...Q}))),this.byId=new Map(this.definitions.map((Q)=>[Q.id,Q])),this.catalogSha256=w0(this.definitions.map((Q)=>`${Q.id}:${Q.contentSha256}`).join(`
718
718
  `))}static empty(O){return new d(O)}list(){return this.definitions.map((O)=>({id:O.id,relativePath:O.relativePath,source:O.source,kind:O.kind,conditional:O.conditional,contentSha256:O.contentSha256}))}snapshot(){return new d(this.projectRoot,this.definitions.map((O)=>({...O,patterns:O.patterns?[...O.patterns]:void 0})))}staticRules(O,$=k$){if(this.definitions.length===0)return K0([],[],"project-instructions");let Q=this.relativeSourcePath(O),Z=this.definitions.filter((J)=>!J.conditional&&q1(J.scopeDirectory,Q));return K0(BO(Z,$),[],"project-instructions")}contextualRules(O,$,Q,Z=P$){if(this.definitions.length===0)return K0([],[],"contextual-project-instructions");let J=this.relativeSourcePath(O),q=[...new Set($.map((G)=>L1(S.relative(this.projectRoot,K1(G)))).filter(X1))].sort(),K=new Map;for(let G of q)for(let W of this.definitions){if(Q.has(W.id))continue;if(!q1(W.scopeDirectory,G))continue;if(W.conditional){let Y=S.posix.relative(W.scopeDirectory||".",G);if(!W.patterns?.some((V)=>zO(V,{dot:!0})(Y)))continue}else if(q1(W.scopeDirectory,J))continue;K.set(W.id,W)}let X=BO([...K.values()].sort(G1),Z);return K0(X,q,"contextual-project-instructions")}hydrate(O){let $=O.map((Q)=>{let Z=this.byId.get(Q.id);if(!Z||Z.contentSha256!==Q.contentSha256||Z.relativePath!==Q.relativePath||Z.source!==Q.source)throw Error(`Project rule provenance mismatch: ${Q.relativePath}`);return Z});return K0([...new Map($.map((Q)=>[Q.id,Q])).values()].sort(G1),[],"contextual-project-instructions")}relativeSourcePath(O){let $=L1(S.relative(this.projectRoot,K1(O)));if($&&!X1($))throw Error("Project instruction source is outside the catalog root");return $}}async function i$(O,$){let Q=await m.lstat($);if(!Q.isFile()||Q.isSymbolicLink())throw Error("Project rule must be a regular file");if(Q.size>FO)throw Error(`Project rule exceeds ${FO} bytes`);let Z=await m.realpath($),J=L1(S.relative(O,Z));if(!X1(J))throw Error("Project rule escapes its repository root");let q=await m.readFile(Z,"utf8");if(SO(q))throw Error("Project rule contains hidden control characters");let K=h$(q),X=K.content.trim();if(!X)throw Error("Project rule content must not be empty");let G=l$(K.data.paths),W=s$(J),Y=w0(JSON.stringify({relativePath:J,patterns:G??[],content:X}));return{id:`${W.source}:${w0(J).slice(0,20)}`,relativePath:J,source:W.source,kind:W.kind,scopeDirectory:W.scopeDirectory,priority:W.priority,conditional:Boolean(G),...G?{patterns:G}:{},content:X,contentSha256:Y}}async function MO(O,$){let Q=c$(O);if(!$.projectTrusted)return d.empty(Q);let Z=await m.realpath(Q),J=f$.stream([...g$],{cwd:Z,absolute:!0,dot:!0,deep:d$,onlyFiles:!0,followSymbolicLinks:!1,unique:!0,ignore:[...u$]}),q=[];for await(let W of J)if(q.push(W.toString()),q.length>HO)throw Error(`Project rule catalog exceeds ${HO} files`);q.sort();let K=new Set(q.filter((W)=>S.basename(W)==="AGENTS.override.md").map((W)=>S.dirname(W))),X=[],G=0;for(let W of q){if(S.basename(W)==="AGENTS.md"&&K.has(S.dirname(W)))continue;try{let Y=await i$(Z,W);if(G+=Buffer.byteLength(Y.content,"utf8"),G>VO)throw Error(`Project rule catalog exceeds ${VO} bytes`);X.push(Y)}catch(Y){p$.warn(`[ProjectRules] Ignoring rule: ${Y instanceof Error?Y.message:String(Y)}`)}}return new d(Z,X)}var bO=32,D0=64;class AO extends Error{capacity=D0;constructor(){super(`Workspace agent resource capacity is full (${D0})`);this.name="WorkspaceAgentResourceCapacityError"}}var x=new Map,W1=0,xO=[];async function o$(O){let $=await N.getInstance().getStatus(O.workspaceRoot);O.communicationStyles=await J1(O.workspaceRoot,{projectTrusted:$.state==="trusted",plugins:O.plugins.getActive()})}function a$(O){let $={...O};for(let Q of Object.values(b0))$[Q]=(O[Q]??[]).map((Z)=>({...Z,matcher:Z.matcher?{...Z.matcher}:void 0,hooks:Z.hooks.map((J)=>({...J}))}));return $}function o2(O){xO=[...new Set(O.map(($)=>Y1.resolve($)))]}function _O(O,$){JO(O,$.plugins),C.releaseInstance(O,$.subagents),P.releaseInstance({cwd:O},$.skills),_.releaseInstance(O,$.commands),D.releaseInstance(O,$.plugins)}function TO(O){_O(O.workspaceRoot,O)}function q0(){while(x.size>bO){let O=!1;for(let[$,Q]of x){if(!Q.resources||Q.users>0)continue;if(x.get($)!==Q)continue;x.delete($),TO(Q.resources),O=!0;break}if(!O)return}}function t$(O){setImmediate(()=>{O.users=Math.max(0,O.users-1),q0()}).unref?.()}async function r$(O,$){let Q=await N.getInstance().getStatus(O),Z=o(O),J=g({cwd:O}),q=_.getInstance(O),K=Q0(O);try{if(Z.getAllNames().length===0)Z.loadFromStandardLocations(Q.state==="trusted");await Promise.all([J.initialize(),q.isInitialized()?void 0:q.initialize(O),K.isInitialized()?void 0:K.initialize(O,[...$.cliPluginDirs??xO])]),A0(O),await Q1(O);let X=await J1(O,{projectTrusted:Q.state==="trusted",plugins:K.getActive()}),G=await MO(O,{projectTrusted:Q.state==="trusted"});return{workspaceRoot:O,subagents:Z,skills:J,commands:q,plugins:K,communicationStyles:X,projectRules:G}}catch(X){throw _O(O,{subagents:Z,skills:J,commands:q,plugins:K}),X}}function e$(O,$){let Q={generation:W1,users:0};return Q.promise=r$(O,$).then((Z)=>{if(Q.generation!==W1||x.get(O)!==Q)return TO(Z),Z;return Q.resources=Z,q0(),Z},(Z)=>{if(x.get(O)===Q)x.delete(O);throw Z}),x.set(O,Q),Q}async function wO(O,$){let Q=Y1.resolve(O),Z=x.get(Q);if(!Z){if(q0(),x.size>=D0)throw new AO;Z=e$(Q,$)}else x.delete(Q),x.set(Q,Z);Z.users++;let J;try{J=await Z.promise}catch(q){throw Z.users=Math.max(0,Z.users-1),q0(),q}return{entry:Z,resources:J}}async function DO(O,$){if(!$)return;A0(O.workspaceRoot),await Q1(O.workspaceRoot),await o$(O)}async function a2(O,$={}){let Q=await wO(O,$);try{return await DO(Q.resources,$.reconcilePlugins),Q.resources}finally{t$(Q.entry)}}async function t2(O,$,Q={}){let Z=await wO(O,Q);try{return await DO(Z.resources,Q.reconcilePlugins),await $(Z.resources)}finally{Z.entry.users=Math.max(0,Z.entry.users-1),q0()}}function r2(){let O=0,$=0;for(let Q of x.values()){if(Q.resources)O++;$+=Q.users}return{capacity:bO,activeCapacity:D0,entries:x.size,initialized:O,inFlight:x.size-O,activeUsers:$}}function e2(O){let $="projectRoot"in O?O.projectRoot:O.workspaceRoot;return{projectRoot:Y1.resolve($),subagents:O.subagents.snapshot(),skills:O.skills.snapshot(),commands:O.commands.snapshot(),communicationStyles:O.communicationStyles?.snapshot()??IO.snapshot(),projectRules:O.projectRules?.snapshot()??d.empty($),hooks:a$("hooks"in O&&O.hooks?O.hooks:J0.getInstance().getConfig($))}}function O5(){W1++;for(let[O,$]of x)if($.resources)A0(O);x.clear(),C.resetInstances(),P.resetInstance(),_.resetInstance(),D.resetInstance()}
719
- export{Q4 as ne,Z4 as oe,V1 as pe,L4 as qe,X4 as re,o as se,_4 as te,I1 as ue,g as ve,_ as we,t0 as xe,M0 as ye,D as ze,Q0 as Ae,Q1 as Be,A0 as Ce,d as De,bO as Ee,D0 as Fe,AO as Ge,o$ as He,o2 as Ie,a2 as Je,t2 as Ke,r2 as Le,e2 as Me,O5 as Ne};
719
+ export{Q4 as se,Z4 as te,V1 as ue,L4 as ve,X4 as we,o as xe,_4 as ye,I1 as ze,g as Ae,_ as Be,t0 as Ce,M0 as De,D as Ee,Q0 as Fe,Q1 as Ge,A0 as He,d as Ie,bO as Je,D0 as Ke,AO as Le,o$ as Me,o2 as Ne,a2 as Oe,t2 as Pe,r2 as Qe,e2 as Re,O5 as Se};
@@ -1,4 +1,4 @@
1
- import{ja as F,la as L}from"./chunk-0kmrvxsz.js";import{Dc as $,Fc as B,Nc as Q}from"./chunk-1z9k5dmz.js";import{Je as y}from"./chunk-wahhwjp9.js";import{wg as V}from"./chunk-k0pa8874.js";async function j(){await y(V())}async function I(b){let q=b.message||b._?.[0];if(typeof q==="string"&&q.trim())return q;let z=b.stdin??process.stdin;if(!z.isTTY){let G=[];for await(let K of z)G.push(K);return Buffer.concat(G).toString("utf-8").trim()}if(b.defaultMessage!==void 0)return b.defaultMessage;throw Error("No input provided")}async function M(b){let q=b.message||b._?.[0];if(typeof q==="string"&&q.trim())return q;let z=b.stdin??process.stdin;if(z.isTTY)return;let G=[];for await(let Z of z)G.push(Buffer.isBuffer(Z)?Z:Buffer.from(Z));return Buffer.concat(G).toString("utf-8").trim()||void 0}async function R(b){if(!F(b))return{mode:"agent",content:b};let q=await L(b,{cwd:V(),surface:"headless",workspaceRoot:V()});if(!q.success)return{mode:"output",content:`Error: ${q.error||"未知错误"}`,exitCode:1};let z=q.data;if(z?.action==="invoke_skill"){let{skillName:G,skillArgs:K}=z;return{mode:"agent",content:K?`Please use the "${G}" skill to help me with: ${K}`:`Please use the "${G}" skill.`}}if(z?.action==="invoke_custom_command"||z?.action==="invoke_plugin_command"){let G=z.processedContent;return{mode:"agent",content:`# Custom Command: /${z.commandName}
1
+ import{ja as F,la as L}from"./chunk-hryhnmwv.js";import{Ic as $,Kc as B,Sc as Q}from"./chunk-mhyat4mq.js";import{Oe as y}from"./chunk-hhk5ecpv.js";import{Bg as V}from"./chunk-0kat01bw.js";async function j(){await y(V())}async function I(b){let q=b.message||b._?.[0];if(typeof q==="string"&&q.trim())return q;let z=b.stdin??process.stdin;if(!z.isTTY){let G=[];for await(let K of z)G.push(K);return Buffer.concat(G).toString("utf-8").trim()}if(b.defaultMessage!==void 0)return b.defaultMessage;throw Error("No input provided")}async function M(b){let q=b.message||b._?.[0];if(typeof q==="string"&&q.trim())return q;let z=b.stdin??process.stdin;if(z.isTTY)return;let G=[];for await(let Z of z)G.push(Buffer.isBuffer(Z)?Z:Buffer.from(Z));return Buffer.concat(G).toString("utf-8").trim()||void 0}async function R(b){if(!F(b))return{mode:"agent",content:b};let q=await L(b,{cwd:V(),surface:"headless",workspaceRoot:V()});if(!q.success)return{mode:"output",content:`Error: ${q.error||"未知错误"}`,exitCode:1};let z=q.data;if(z?.action==="invoke_skill"){let{skillName:G,skillArgs:K}=z;return{mode:"agent",content:K?`Please use the "${G}" skill to help me with: ${K}`:`Please use the "${G}" skill.`}}if(z?.action==="invoke_custom_command"||z?.action==="invoke_plugin_command"){let G=z.processedContent;return{mode:"agent",content:`# Custom Command: /${z.commandName}
2
2
 
3
3
  ${G}`}}return{mode:"output",content:q.content||q.message||"",exitCode:0}}import{readFile as D,stat as H}from"node:fs/promises";import J from"node:path";function x(b,q){let z;try{z=JSON.parse(b)}catch(G){throw Error(`Invalid JSON output schema from ${q}`,{cause:G})}return B(z).schema}async function _(b){if(b.jsonSchema!==void 0&&b.outputSchema!==void 0)throw Error("--json-schema cannot be combined with --output-schema");if(b.jsonSchema!==void 0)return x(b.jsonSchema,"--json-schema");if(b.outputSchema===void 0)return;let q=J.resolve(b.outputSchema),z=await H(q);if(!z.isFile())throw Error(`Output schema path is not a regular file: ${q}`);if(z.size>$)throw Error(`Output schema exceeds ${$} bytes: ${q}`);return x(await D(q,"utf8"),q)}function N(b){if(!(b instanceof Error))return!1;return b.message.includes("未找到会话")||b.message.includes("ENOENT")||b.message.includes("no such file")}async function W(b){try{return await Q.loadSessionModelContext(b,V())}catch(q){if(N(q))return null;throw q}}async function C(b){if(b.resume===!0||b.resume==="true")throw Error("--resume without a session ID is only supported in interactive UI mode");if(typeof b.resume==="string"&&b.resume.length>0){if(b.forkSession){let G=V(),K=await Q.forkSession(b.resume,{newSessionId:b.sessionId,sourceProjectPath:G,targetProjectPath:G});return{...K,messages:await Q.loadSessionModelContext(K.sessionId,G)}}let[q,z]=await Promise.all([Q.loadSessionModelContext(b.resume),Q.findSessionMetadata(b.resume)]);return{sessionId:b.resume,messages:q,metadata:z}}if(b.continue){let q=b.forkSession?await Q.listSessions({cwd:V()}):await Q.listSessions();if(q.length>0){let z=q[0].sessionId;if(b.forkSession){let G=V(),K=await Q.forkSession(z,{newSessionId:b.sessionId,sourceProjectPath:G,targetProjectPath:G});return{...K,messages:await Q.loadSessionModelContext(K.sessionId,G)}}return{sessionId:z,messages:await Q.loadSessionModelContext(z),metadata:q[0]}}if(b.forkSession)throw Error("Cannot fork: no sessions are available to continue")}if(b.sessionId){let q=await W(b.sessionId);return{sessionId:b.sessionId,messages:q??[],...q?{metadata:await Q.findSessionMetadata(b.sessionId,V())}:{}}}return{sessionId:`${b.fallbackSessionPrefix}-${Date.now()}`,messages:[]}}
4
4
  export{j as m,I as n,M as o,R as p,_ as q,C as r};