blade-code 0.10.140 → 0.10.141

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 (132) hide show
  1. package/dist/blade.js +2 -2
  2. package/dist/{chunk-svsgtj41.js → chunk-0b67y4j1.js} +2 -2
  3. package/dist/{chunk-eqe3smcg.js → chunk-0chvj0qt.js} +2 -2
  4. package/dist/chunk-0s0er9wr.js +1 -0
  5. package/dist/{chunk-nxsarfy6.js → chunk-28tzj187.js} +1 -1
  6. package/dist/chunk-2b3j2egw.js +1 -0
  7. package/dist/{chunk-cf3dvysj.js → chunk-34fmx68h.js} +1 -1
  8. package/dist/{chunk-y5bqd8gh.js → chunk-3da7sqx6.js} +1 -1
  9. package/dist/chunk-3kszepm6.js +2 -0
  10. package/dist/chunk-44edbaa1.js +1 -0
  11. package/dist/{chunk-w5057h27.js → chunk-4dtshx9v.js} +2 -2
  12. package/dist/{chunk-rrtptbzv.js → chunk-4pexd8a7.js} +2 -2
  13. package/dist/{chunk-hj1yrssp.js → chunk-4w8v677q.js} +1 -1
  14. package/dist/chunk-514va7ce.js +2 -0
  15. package/dist/{chunk-pg7cgvs8.js → chunk-5q4z0sfr.js} +2 -2
  16. package/dist/{chunk-ffkzessq.js → chunk-5v3eng7c.js} +1 -1
  17. package/dist/chunk-5vxhttdq.js +10 -0
  18. package/dist/{chunk-xagh2qb6.js → chunk-6w8p6c0g.js} +2 -2
  19. package/dist/{chunk-7eepxhcp.js → chunk-7azws27d.js} +28 -28
  20. package/dist/chunk-7g76xzzg.js +2 -0
  21. package/dist/{chunk-hvmrcd84.js → chunk-7wcxjbyg.js} +1 -1
  22. package/dist/{chunk-c562kd2m.js → chunk-7xhw74hk.js} +1 -1
  23. package/dist/{chunk-mnk0b4nz.js → chunk-7xtxvrh8.js} +1 -1
  24. package/dist/{chunk-q9qts6bq.js → chunk-83je3g6c.js} +3 -3
  25. package/dist/chunk-8tvf39jm.js +1 -0
  26. package/dist/{chunk-2g8avyq6.js → chunk-9kj19a8t.js} +1 -1
  27. package/dist/{chunk-9ced7jf0.js → chunk-9tk6wq70.js} +1 -1
  28. package/dist/{chunk-kmg8ad2j.js → chunk-9xbwtjac.js} +1 -1
  29. package/dist/{chunk-e6j4vzta.js → chunk-ae0fws1f.js} +2 -2
  30. package/dist/chunk-be1fyzb3.js +181 -0
  31. package/dist/{chunk-eh901zhx.js → chunk-cbgsjzdw.js} +2 -2
  32. package/dist/chunk-enf0egke.js +1 -0
  33. package/dist/{chunk-ma1mn6hn.js → chunk-erhaedch.js} +1 -1
  34. package/dist/{chunk-19zsecpx.js → chunk-f2jm4x5q.js} +2 -2
  35. package/dist/{chunk-cww9pp1q.js → chunk-f2y0gxyq.js} +2 -2
  36. package/dist/chunk-f5t7a64t.js +1 -0
  37. package/dist/{chunk-6zxm9pen.js → chunk-frvdjy8y.js} +1 -1
  38. package/dist/{chunk-ppmy3n74.js → chunk-fx4xr1g6.js} +360 -357
  39. package/dist/{chunk-zfaenqqx.js → chunk-fx9vm1n5.js} +2 -2
  40. package/dist/{chunk-85b3kacc.js → chunk-gm2yfq3r.js} +2 -2
  41. package/dist/chunk-h273dnvq.js +1 -0
  42. package/dist/{chunk-pwct7cj7.js → chunk-h5xad96g.js} +1 -1
  43. package/dist/{chunk-r4q06wbs.js → chunk-hv8nt7wj.js} +1 -1
  44. package/dist/{chunk-1myft5nb.js → chunk-j1pptwsq.js} +1 -1
  45. package/dist/chunk-j7784bxm.js +1 -0
  46. package/dist/{chunk-gq727fet.js → chunk-jbpasjg9.js} +1 -1
  47. package/dist/chunk-jr402gf8.js +1 -0
  48. package/dist/{chunk-g38d2ezm.js → chunk-jsv3e4k6.js} +1 -1
  49. package/dist/{chunk-pw9axk0e.js → chunk-k1tfry97.js} +2 -2
  50. package/dist/{chunk-8fx20am1.js → chunk-k3ne93k8.js} +2 -2
  51. package/dist/{chunk-0c2y17xy.js → chunk-kf9j9z9k.js} +1 -1
  52. package/dist/{chunk-n8qg68y2.js → chunk-n34qsnks.js} +1 -1
  53. package/dist/{chunk-5cw3bevx.js → chunk-n9819k4p.js} +1 -1
  54. package/dist/{chunk-tagzy876.js → chunk-ppp4gpy4.js} +1 -1
  55. package/dist/{chunk-5jq1mrqd.js → chunk-pv6cgfv1.js} +1 -1
  56. package/dist/{chunk-50m1czz9.js → chunk-pzxg2sdv.js} +1 -1
  57. package/dist/{chunk-0kghtvxj.js → chunk-r5dmdsjb.js} +2 -2
  58. package/dist/{chunk-es0cbtx1.js → chunk-rv80nkve.js} +2 -2
  59. package/dist/{chunk-n6tvswa8.js → chunk-ryyzbd76.js} +2 -2
  60. package/dist/chunk-s56t6kzj.js +2 -0
  61. package/dist/{chunk-w2m4yczv.js → chunk-sd9bze9x.js} +1 -1
  62. package/dist/{chunk-tecbx0ek.js → chunk-sdapqhj0.js} +1 -1
  63. package/dist/chunk-se0q0p3v.js +1 -0
  64. package/dist/chunk-sz5g7eh5.js +1 -0
  65. package/dist/{chunk-2ff55pvt.js → chunk-tp4yy3a6.js} +3 -3
  66. package/dist/{chunk-kxwc5wrx.js → chunk-tqg9y2p6.js} +1 -1
  67. package/dist/{chunk-d1qe06f0.js → chunk-tya95jej.js} +1 -1
  68. package/dist/{chunk-08z32sky.js → chunk-v1mamd1x.js} +2 -2
  69. package/dist/{chunk-g4kydkyz.js → chunk-v67st2xb.js} +2 -2
  70. package/dist/chunk-wemdt9n6.js +6 -0
  71. package/dist/{chunk-0sx7ak0b.js → chunk-wm896gnx.js} +1 -1
  72. package/dist/chunk-yjbpfd3b.js +1 -0
  73. package/dist/{chunk-g5scqxq3.js → chunk-ze1ra6f9.js} +2 -2
  74. package/dist/{chunk-15fpc0qg.js → chunk-zj32chp7.js} +1 -1
  75. package/dist/chunk-znrafpad.js +1 -0
  76. package/dist/chunk-zqjm9yd8.js +1 -0
  77. package/dist/{chunk-8vqhcx3s.js → chunk-zrgfvc4k.js} +1 -1
  78. package/dist/web/assets/ChatView-BBYsaZIk.js +63 -0
  79. package/dist/web/assets/{CodeBlockHighlighter-BM1MZv6w.js → CodeBlockHighlighter-BC17_i4m.js} +1 -1
  80. package/dist/web/assets/{FilePreview-P77KS9tr.js → FilePreview-DuvfuHLi.js} +1 -1
  81. package/dist/web/assets/{KanbanBoard-B0c7sE2y.js → KanbanBoard-B-Z7lSaC.js} +1 -1
  82. package/dist/web/assets/{MarkdownRenderer-DHa0FqU0.js → MarkdownRenderer-DF-nYnJu.js} +3 -3
  83. package/dist/web/assets/{ScrollArea-C6yf2fqq.js → ScrollArea-dipnxnqf.js} +1 -1
  84. package/dist/web/assets/{SessionHistorySurface-CXYBWqlN.js → SessionHistorySurface-CnMBkiZW.js} +1 -1
  85. package/dist/web/assets/{SettingsModal-BVjVlENY.js → SettingsModal-DLA1WQ6g.js} +1 -1
  86. package/dist/web/assets/{Sidebar-DDW9Xs6e.js → Sidebar-tu4OcImk.js} +1 -1
  87. package/dist/web/assets/{TaskSwitcher-D74_5q1F.js → TaskSwitcher-D2TIUyr3.js} +1 -1
  88. package/dist/web/assets/{TerminalPanel-DNEKapEi.js → TerminalPanel-CcJVvSnz.js} +1 -1
  89. package/dist/web/assets/{archive-Ao0WD7pU.js → archive-EoUobrxu.js} +1 -1
  90. package/dist/web/assets/{arrow-left-a5_iLemp.js → arrow-left-Y8E5lnQ1.js} +1 -1
  91. package/dist/web/assets/{calendar-clock-BKbdz6Cu.js → calendar-clock-Cl0Spu99.js} +1 -1
  92. package/dist/web/assets/{chevron-right-8qYRfCj4.js → chevron-right-DmM1dl1s.js} +1 -1
  93. package/dist/web/assets/{chevrons-up-down-BXNG4GvK.js → chevrons-up-down-DFQNAYac.js} +1 -1
  94. package/dist/web/assets/{clock-3-DEL1ixyh.js → clock-3-D3dzsSrc.js} +1 -1
  95. package/dist/web/assets/{copy-Bd5v-KkM.js → copy-BwNmbccC.js} +1 -1
  96. package/dist/web/assets/{download-CIKvpDBW.js → download-DHzGZhJT.js} +1 -1
  97. package/dist/web/assets/{external-link-B33h3DQN.js → external-link-Dr_8T3Ah.js} +1 -1
  98. package/dist/web/assets/{folder-lOczceoh.js → folder-DcgRdL_P.js} +1 -1
  99. package/dist/web/assets/index-BZZUIkal.js +203 -0
  100. package/dist/web/assets/{pause-nnvVbgsj.js → pause-DXzNhd_w.js} +1 -1
  101. package/dist/web/assets/{pencil-_yfoOmUq.js → pencil-CYRCKPnu.js} +1 -1
  102. package/dist/web/assets/{play-BilJ7SDs.js → play-CfNxuNSd.js} +1 -1
  103. package/dist/web/assets/{plus-BqqpYKaK.js → plus-DBUPwsji.js} +1 -1
  104. package/dist/web/assets/{session-events-FPOvcMBw.js → session-events-DTVYDdaH.js} +23 -23
  105. package/dist/web/assets/{settings-CmJXtYTH.js → settings-K2UJIIf_.js} +1 -1
  106. package/dist/web/assets/{team-Bb04o2Tb.js → team-BoulGGnJ.js} +1 -1
  107. package/dist/web/assets/{teamService-B5w9cpsa.js → teamService-Cfm0Cd6e.js} +1 -1
  108. package/dist/web/assets/{terminal-DOjdChj0.js → terminal-C9ZyLrcq.js} +1 -1
  109. package/dist/web/index.html +1 -1
  110. package/package.json +1 -1
  111. package/dist/chunk-1nreg14s.js +0 -1
  112. package/dist/chunk-2d3zksr0.js +0 -1
  113. package/dist/chunk-3kvt23m3.js +0 -1
  114. package/dist/chunk-4rh40xhc.js +0 -1
  115. package/dist/chunk-4xr4hz19.js +0 -2
  116. package/dist/chunk-61yd46c0.js +0 -1
  117. package/dist/chunk-8774agqd.js +0 -1
  118. package/dist/chunk-8brb7c6j.js +0 -6
  119. package/dist/chunk-abpmpyqa.js +0 -1
  120. package/dist/chunk-ascjys4e.js +0 -2
  121. package/dist/chunk-bb0z7c3g.js +0 -1
  122. package/dist/chunk-m9dv5177.js +0 -10
  123. package/dist/chunk-mwgx87vw.js +0 -1
  124. package/dist/chunk-ntq4h4jh.js +0 -1
  125. package/dist/chunk-r324qme7.js +0 -1
  126. package/dist/chunk-ra6ksfdy.js +0 -1
  127. package/dist/chunk-tnts2de5.js +0 -1
  128. package/dist/chunk-w0710yj4.js +0 -1
  129. package/dist/chunk-we13xwds.js +0 -180
  130. package/dist/chunk-zp5097qk.js +0 -2
  131. package/dist/web/assets/ChatView-BlAGPVC-.js +0 -63
  132. package/dist/web/assets/index-hZ37pkxs.js +0 -203
@@ -1,4 +1,4 @@
1
- import{Mf as N}from"./chunk-0kghtvxj.js";import{uh as $}from"./chunk-2ff55pvt.js";import{Yi as _}from"./chunk-g38d2ezm.js";import{wj as Y,yj as Z}from"./chunk-pg7cgvs8.js";function X(){if(process.stdin.isTTY&&typeof process.stdin.setRawMode==="function")try{process.stdin.setRawMode(!1)}catch{}process.stdout.write("\x1B[<u"),process.stdout.write("\x1B[>4;0m"),process.stdout.write("\x1B[?2004l"),process.stdout.write("\x1B[?1004l"),process.stdout.write("\x1B[?1l\x1B>"),process.stdout.write("\x1B[?25h"),process.stdout.write("\x1B[0m")}var z=Z("Service");function E(b){switch(b){case"SIGINT":return"ctrl_c";case"esc":return"esc";case"uncaughtException":case"unhandledRejection":return"error";case"SIGTERM":case"normal":default:return"user_exit"}}class B{static instance=null;cleanupHandlers=[];isShuttingDown=!1;initialized=!1;lastSigintTime=0;SIGINT_DOUBLE_CLICK_WINDOW=3000;constructor(){}static getInstance(){if(!B.instance)B.instance=new B;return B.instance}initialize(){if(this.initialized){z.debug("[GracefulShutdown] 已初始化,跳过重复初始化");return}process.on("uncaughtException",(b)=>{this.handleFatalError("uncaughtException",b)}),process.on("unhandledRejection",(b)=>{let q=b instanceof Error?b:Error(String(b));this.handleFatalError("unhandledRejection",q)}),process.on("SIGTERM",()=>{z.info("[GracefulShutdown] 收到 SIGTERM 信号"),this.shutdown("SIGTERM",0)}),process.on("SIGINT",()=>{let b=Date.now();if(b-this.lastSigintTime<this.SIGINT_DOUBLE_CLICK_WINDOW)z.info("[GracefulShutdown] 收到第二次 SIGINT 信号,执行退出"),this.shutdown("SIGINT",0);else z.info("[GracefulShutdown] 收到第一次 SIGINT 信号,再按一次退出"),this.lastSigintTime=b,console.log(`
1
+ import{Of as N}from"./chunk-r5dmdsjb.js";import{yh as $}from"./chunk-tp4yy3a6.js";import{aj as _}from"./chunk-jsv3e4k6.js";import{Aj as Y,Cj as Z}from"./chunk-5q4z0sfr.js";function X(){if(process.stdin.isTTY&&typeof process.stdin.setRawMode==="function")try{process.stdin.setRawMode(!1)}catch{}process.stdout.write("\x1B[<u"),process.stdout.write("\x1B[>4;0m"),process.stdout.write("\x1B[?2004l"),process.stdout.write("\x1B[?1004l"),process.stdout.write("\x1B[?1l\x1B>"),process.stdout.write("\x1B[?25h"),process.stdout.write("\x1B[0m")}var z=Z("Service");function E(b){switch(b){case"SIGINT":return"ctrl_c";case"esc":return"esc";case"uncaughtException":case"unhandledRejection":return"error";case"SIGTERM":case"normal":default:return"user_exit"}}class B{static instance=null;cleanupHandlers=[];isShuttingDown=!1;initialized=!1;lastSigintTime=0;SIGINT_DOUBLE_CLICK_WINDOW=3000;constructor(){}static getInstance(){if(!B.instance)B.instance=new B;return B.instance}initialize(){if(this.initialized){z.debug("[GracefulShutdown] 已初始化,跳过重复初始化");return}process.on("uncaughtException",(b)=>{this.handleFatalError("uncaughtException",b)}),process.on("unhandledRejection",(b)=>{let q=b instanceof Error?b:Error(String(b));this.handleFatalError("unhandledRejection",q)}),process.on("SIGTERM",()=>{z.info("[GracefulShutdown] 收到 SIGTERM 信号"),this.shutdown("SIGTERM",0)}),process.on("SIGINT",()=>{let b=Date.now();if(b-this.lastSigintTime<this.SIGINT_DOUBLE_CLICK_WINDOW)z.info("[GracefulShutdown] 收到第二次 SIGINT 信号,执行退出"),this.shutdown("SIGINT",0);else z.info("[GracefulShutdown] 收到第一次 SIGINT 信号,再按一次退出"),this.lastSigintTime=b,console.log(`
2
2
  再按一次 Ctrl+C 退出
3
3
  `)}),this.initialized=!0,z.debug("[GracefulShutdown] 全局错误处理器已初始化")}registerCleanup(b){return this.cleanupHandlers.push(b),z.debug(`[GracefulShutdown] 注册清理函数,当前共 ${this.cleanupHandlers.length} 个`),()=>{let q=this.cleanupHandlers.indexOf(b);if(q!==-1)this.cleanupHandlers.splice(q,1),z.debug(`[GracefulShutdown] 取消注册清理函数,剩余 ${this.cleanupHandlers.length} 个`)}}handleFatalError(b,q){if(this.isShuttingDown){console.error(`[GracefulShutdown] 退出过程中发生额外错误 (${b}):`,q);return}if(console.error(""),console.error("═".repeat(60)),console.error(`Uncaught error (${b})`),console.error("═".repeat(60)),console.error(""),console.error("错误信息:",q.message),console.error(""),q.stack)console.error("堆栈跟踪:"),console.error(q.stack);console.error(""),console.error("═".repeat(60)),console.error(""),this.shutdown(b,1)}async shutdown(b,q=0){if(this.isShuttingDown){z.debug("[GracefulShutdown] 已在退出过程中,跳过重复退出");return}this.isShuttingDown=!0;try{N().command.actions.abort("process-shutdown")}catch(A){z.warn("[GracefulShutdown] Failed to abort the active command",A)}z.info(`[GracefulShutdown] 开始优雅退出 (原因: ${b})`);let Q=setTimeout(()=>{X(),process.exit(q)},5000);Q.unref?.();let U=4000,K;try{await Promise.race([this.runCleanupHandlers(),new Promise((A,J)=>{K=setTimeout(()=>{J(Error(`清理超时 (${U}ms)`))},U),K.unref?.()})])}catch(A){console.error("[GracefulShutdown] 清理过程中发生错误:",A)}finally{if(K)clearTimeout(K)}try{let A=$.getInstance(),J=N(),V=J.session?.sessionId||"unknown",W=J.session?.workspaceRoot||_();if(A.isEnabled(W,V)){let v=J.config?.config?.permissionMode||"default";await A.executeSessionEndHooks(E(b),{projectDir:W,sessionId:V,permissionMode:v})}}catch(A){console.error("[GracefulShutdown] SessionEnd hooks 执行失败:",A)}try{await Y()}catch{}clearTimeout(Q),X(),setTimeout(()=>{process.exit(q)},100)}async runCleanupHandlers(){let b=[...this.cleanupHandlers].reverse();for(let q of b)try{let F=q();if(F instanceof Promise)await F}catch(F){console.error("[GracefulShutdown] 清理函数执行失败:",F)}}isExiting(){return this.isShuttingDown}reset(){this.isShuttingDown=!1,this.cleanupHandlers=[],this.initialized=!1}}var O=()=>{return B.getInstance()},y=(b)=>{return O().registerCleanup(b)},j=()=>{O().initialize()},C=(b=0)=>{O().shutdown("normal",b)};
4
- export{O as uf,y as vf,j as wf,C as xf};
4
+ export{O as wf,y as xf,j as yf,C as zf};
@@ -0,0 +1 @@
1
+ import{$j as a,ak as b,bk as c}from"./chunk-gm2yfq3r.js";import"./chunk-n9819k4p.js";import"./chunk-7xtxvrh8.js";import"./chunk-sdapqhj0.js";export{b as isWorkspaceTrusted,c as WorkspaceTrustService,a as MAX_RESIDENT_WORKSPACE_TRUST_STATUSES};
@@ -1,2 +1,2 @@
1
1
  function v(b){switch(b){case"default":case"ignore":case void 0:return"default";case"acceptEdits":return"autoEdit";case"dontAsk":case"bypassPermissions":return"yolo";case"plan":return"plan";default:return"default"}}
2
- export{v as rh};
2
+ export{v as vh};
@@ -1,2 +1,2 @@
1
- import{readFileSync as l}from"node:fs";import{dirname as o,join as d}from"node:path";import{fileURLToPath as u}from"node:url";var e={name:"blade-code",version:"0.10.140",private:!1,description:"🗡️ Blade Code - 智能代码助手命令行工具",type:"module",bin:{blade:"dist/blade.js"},files:["dist","vendor/ripgrep/**","README.md"],scripts:{dev:"node scripts/run-bun.js --watch src/blade.tsx","dev:serve":"node scripts/run-bun.js --watch src/blade.tsx serve --port 4097",build:"rm -rf dist && node scripts/run-bun.js run scripts/build.ts",start:"node scripts/run-bun.js run dist/blade.js",test:"node scripts/test.js","test:all":"node scripts/test.js all","test:unit":"node scripts/test.js unit","test:integration":"node scripts/test.js integration","test:real-api":"node scripts/test.js realApi","test:real-api:qualification":"node scripts/test.js realApiQualification","test:cli":"node scripts/test.js cli","test:headless-core":"node scripts/test.js headlessCore","test:e2e":"node scripts/test.js e2e","test:performance":"node scripts/test.js performance","test:snapshot":"node scripts/test.js snapshot","test:security":"node scripts/test.js security","browser:install":"playwright install chromium","browser:check":"node scripts/run-bun.js run scripts/browser-check.ts","test:coverage":"node scripts/test.js all --coverage","test:watch":"vitest --watch --config vitest.config.ts","qualify:local":"node scripts/run-bun.js run scripts/qualify.ts local","qualify:production":"node scripts/run-bun.js run scripts/qualify.ts production","benchmark:repo":"node scripts/run-bun.js run scripts/run-real-repo-benchmark.ts","test:update-snapshots":"node scripts/test.js snapshot --update",lint:"biome lint src tests","lint:fix":"biome lint --write src tests","type-check":"tsc --noEmit","format:check":"biome format src tests",ready:"node scripts/run-bun.js run scripts/qualify.ts production","detect-unused":"node scripts/run-bun.js run scripts/detect-unused.ts",prepack:"node scripts/run-bun.js run build",release:"node scripts/release.js","release:dry":"node scripts/release.js --dry-run","release:major":"node scripts/release.js --major","release:minor":"node scripts/release.js --minor","release:patch":"node scripts/release.js --patch"},keywords:["cli","blade","ai","assistant","agent","llm"],author:"echoVic",license:"MIT",repository:{type:"git",url:"git+https://github.com/echoVic/blade-code.git"},homepage:"https://github.com/echoVic/blade-code#readme",bugs:{url:"https://github.com/echoVic/blade-code/issues"},engines:{node:">=22.19.0"},optionalDependencies:{"@vscode/ripgrep":"^1.18.0","better-sqlite3":"^11.8.1","bun-pty":"^0.4.8","node-pty":"1.1.0"},dependencies:{"@agentclientprotocol/sdk":"^1.3.0","@anthropic-ai/sandbox-runtime":"0.0.67","@earendil-works/pi-ai":"0.84.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0",ahooks:"^3.9.7",ajv:"^8.17.1","ansi-escapes":"^7.3.0","async-mutex":"^0.5.0",axios:"^1.19.0",chalk:"^5.4.1",diff:"^8.0.2","fast-glob":"^3.3.3","fuse.js":"^7.5.0","gray-matter":"^4.0.3",hono:"^4.13.0",ink:"npm:@jrichman/ink@6.4.10","ink-big-text":"^2.0.0","ink-gradient":"^3.0.0","ink-select-input":"^6.2.0","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0","js-tiktoken":"^1.0.21","lodash-es":"^4.18.1",lowlight:"^3.3.0","lru-cache":"^11.5.2",nanoid:"^5.1.6",open:"^10.1.2",picomatch:"^4.0.5",playwright:"1.62.1","proper-lockfile":"^4.1.2",react:"19.2.4","react-dom":"19.2.4",semver:"^7.8.5","string-width":"^8.2.2",typebox:"1.3.10",undici:"^7.16.0","vscode-jsonrpc":"8.2.1","vscode-languageserver-protocol":"3.17.5","vscode-languageserver-types":"3.17.5","write-file-atomic":"^7.0.0",ws:"^8.21.2",yaml:"^2.9.0",yargs:"^18.1.0",zustand:"^5.0.14"},devDependencies:{"@biomejs/biome":"2.5.7","@types/bun":"^1.3.14","@types/json-schema":"^7.0.15","@types/lodash-es":"^4.17.12","@types/node":"^22.15.24","@types/picomatch":"^4.0.3","@types/proper-lockfile":"^4.1.4","@types/react":"19.2.10","@types/react-dom":"19.2.3","@types/semver":"^7.8.0","@types/write-file-atomic":"^4.0.3","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vitest/coverage-v8":"^4.1.10",jsdom:"^26.0.0",typescript:"^5.9.2",vitest:"^4.1.10"}};var s;function r(){if(s)return s;let i=o(u(import.meta.url));for(let n=0;n<5;n++){try{let t=JSON.parse(l(d(i,"package.json"),"utf8"));if(t.name===e.name&&typeof t.version==="string"&&typeof t.description==="string")return s=t,s}catch{}i=o(i)}return s={name:e.name,version:process.env.BLADE_VERSION??e.version,description:e.description},s}function y(){return{...r()}}function p(){return r().version}function v(){return r().name}function w(){return r().description}function g(){return`v${p()}`}function f(){return`v${p()} © 2025 Blade Code`}
2
- export{y as Rj,p as Sj,v as Tj,w as Uj,g as Vj,f as Wj};
1
+ import{readFileSync as l}from"node:fs";import{dirname as o,join as d}from"node:path";import{fileURLToPath as u}from"node:url";var e={name:"blade-code",version:"0.10.141",private:!1,description:"🗡️ Blade Code - 智能代码助手命令行工具",type:"module",bin:{blade:"dist/blade.js"},files:["dist","vendor/ripgrep/**","README.md"],scripts:{dev:"node scripts/run-bun.js --watch src/blade.tsx","dev:serve":"node scripts/run-bun.js --watch src/blade.tsx serve --port 4097",build:"rm -rf dist && node scripts/run-bun.js run scripts/build.ts",start:"node scripts/run-bun.js run dist/blade.js",test:"node scripts/test.js","test:all":"node scripts/test.js all","test:unit":"node scripts/test.js unit","test:integration":"node scripts/test.js integration","test:real-api":"node scripts/test.js realApi","test:real-api:qualification":"node scripts/test.js realApiQualification","test:cli":"node scripts/test.js cli","test:headless-core":"node scripts/test.js headlessCore","test:e2e":"node scripts/test.js e2e","test:performance":"node scripts/test.js performance","test:snapshot":"node scripts/test.js snapshot","test:security":"node scripts/test.js security","browser:install":"playwright install chromium","browser:check":"node scripts/run-bun.js run scripts/browser-check.ts","test:coverage":"node scripts/test.js all --coverage","test:watch":"vitest --watch --config vitest.config.ts","qualify:local":"node scripts/run-bun.js run scripts/qualify.ts local","qualify:production":"node scripts/run-bun.js run scripts/qualify.ts production","benchmark:repo":"node scripts/run-bun.js run scripts/run-real-repo-benchmark.ts","test:update-snapshots":"node scripts/test.js snapshot --update",lint:"biome lint src tests","lint:fix":"biome lint --write src tests","type-check":"tsc --noEmit","format:check":"biome format src tests",ready:"node scripts/run-bun.js run scripts/qualify.ts production","detect-unused":"node scripts/run-bun.js run scripts/detect-unused.ts",prepack:"node scripts/run-bun.js run build",release:"node scripts/release.js","release:dry":"node scripts/release.js --dry-run","release:major":"node scripts/release.js --major","release:minor":"node scripts/release.js --minor","release:patch":"node scripts/release.js --patch"},keywords:["cli","blade","ai","assistant","agent","llm"],author:"echoVic",license:"MIT",repository:{type:"git",url:"git+https://github.com/echoVic/blade-code.git"},homepage:"https://github.com/echoVic/blade-code#readme",bugs:{url:"https://github.com/echoVic/blade-code/issues"},engines:{node:">=22.19.0"},optionalDependencies:{"@vscode/ripgrep":"^1.18.0","better-sqlite3":"^11.8.1","bun-pty":"^0.4.8","node-pty":"1.1.0"},dependencies:{"@agentclientprotocol/sdk":"^1.3.0","@anthropic-ai/sandbox-runtime":"0.0.67","@earendil-works/pi-ai":"0.84.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0",ahooks:"^3.9.7",ajv:"^8.17.1","ansi-escapes":"^7.3.0","async-mutex":"^0.5.0",axios:"^1.19.0",chalk:"^5.4.1",diff:"^8.0.2","fast-glob":"^3.3.3","fuse.js":"^7.5.0","gray-matter":"^4.0.3",hono:"^4.13.0",ink:"npm:@jrichman/ink@6.4.10","ink-big-text":"^2.0.0","ink-gradient":"^3.0.0","ink-select-input":"^6.2.0","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0","js-tiktoken":"^1.0.21","lodash-es":"^4.18.1",lowlight:"^3.3.0","lru-cache":"^11.5.2",nanoid:"^5.1.6",open:"^10.1.2",picomatch:"^4.0.5",playwright:"1.62.1","proper-lockfile":"^4.1.2",react:"19.2.4","react-dom":"19.2.4",semver:"^7.8.5","string-width":"^8.2.2",typebox:"1.3.10",undici:"^7.16.0","vscode-jsonrpc":"8.2.1","vscode-languageserver-protocol":"3.17.5","vscode-languageserver-types":"3.17.5","write-file-atomic":"^7.0.0",ws:"^8.21.2",yaml:"^2.9.0",yargs:"^18.1.0",zustand:"^5.0.14"},devDependencies:{"@biomejs/biome":"2.5.7","@types/bun":"^1.3.14","@types/json-schema":"^7.0.15","@types/lodash-es":"^4.17.12","@types/node":"^22.15.24","@types/picomatch":"^4.0.3","@types/proper-lockfile":"^4.1.4","@types/react":"19.2.10","@types/react-dom":"19.2.3","@types/semver":"^7.8.0","@types/write-file-atomic":"^4.0.3","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vitest/coverage-v8":"^4.1.10",jsdom:"^26.0.0",typescript:"^5.9.2",vitest:"^4.1.10"}};var s;function r(){if(s)return s;let i=o(u(import.meta.url));for(let n=0;n<5;n++){try{let t=JSON.parse(l(d(i,"package.json"),"utf8"));if(t.name===e.name&&typeof t.version==="string"&&typeof t.description==="string")return s=t,s}catch{}i=o(i)}return s={name:e.name,version:process.env.BLADE_VERSION??e.version,description:e.description},s}function y(){return{...r()}}function p(){return r().version}function v(){return r().name}function w(){return r().description}function g(){return`v${p()}`}function f(){return`v${p()} © 2025 Blade Code`}
2
+ export{y as Vj,p as Wj,v as Xj,w as Yj,g as Zj,f as _j};
@@ -1,2 +1,2 @@
1
- import{Cj as b,Dj as K,Fj as j}from"./chunk-pg7cgvs8.js";var L=256,Z=128,p=1e6,$=86400000,G=8640000000000000,g=b.Integer({minimum:0,maximum:p}),f=b.Integer({minimum:0,maximum:$}),q=b.Integer({minimum:0,maximum:G}),x=b.String({minLength:1,maxLength:L,pattern:"^(?!.*://)[^\x00-\x1F]+$"}),H=j(["capacity","queue_full","wait_timeout","admission_closed","rate_limit","server_error","timeout","transport","stream_closed","circuit_open","stream_stall"]),U=j(["admission_wait","retry_wait","retry_attempt","circuit_open","circuit_probe","stream_stall","fallback"]),F=b.Object({provider:x,model:x},{additionalProperties:!1}),J=j(["rate_limit","server_error","timeout","transport","stream_closed"]),s=b.Union([b.Object({source:b.Literal("retry"),reason:J,statusCode:b.Optional(b.Integer({minimum:100,maximum:999}))},{additionalProperties:!1}),b.Object({source:b.Literal("circuit"),reason:J,statusCode:b.Optional(b.Integer({minimum:100,maximum:999}))},{additionalProperties:!1}),b.Object({source:b.Literal("admission"),reason:j(["queue_full","wait_timeout","closed"])},{additionalProperties:!1}),b.Object({source:b.Literal("stall"),reason:b.Literal("timeout")},{additionalProperties:!1})]),T=b.Object({from:F,to:F,candidate:b.Integer({minimum:1,maximum:p}),candidateCount:b.Integer({minimum:1,maximum:p}),trigger:s},{additionalProperties:!1}),X=b.Object({attempt:g,maxRetries:g,statusCode:b.Optional(b.Integer({minimum:100,maximum:999})),delayMs:b.Optional(f),recoveryBudgetMs:b.Optional(f),recoveryElapsedMs:b.Optional(f),recoveryRemainingMs:b.Optional(f)},{additionalProperties:!1}),Y=b.Object({requestClass:j(["foreground","background","internal"]),scope:j(["global","domain","owner","class"]),resource:j(["stream","pending_count","pending_bytes"]),queuePosition:g,queueDepth:g,inFlight:g,limit:g,waitMs:f,maxWaitMs:f,recoveryRemainingMs:b.Optional(f)},{additionalProperties:!1}),z=b.Object({phase:j(["opened","reopened","waiting","probe","rejected"]),statusCode:b.Optional(b.Integer({minimum:100,maximum:999})),retryAfterMs:b.Optional(f),nextProbeAt:b.Optional(q),openDurationMs:f,sampleCount:b.Optional(g),failureCount:b.Optional(g),recoveryRemainingMs:b.Optional(f)},{additionalProperties:!1}),C=b.Object({stallCount:g,durationMs:f,warningAfterMs:f,timeoutMs:f,outputStarted:b.Boolean()},{additionalProperties:!1}),I=b.Object({activity:U,reason:H,updatedAt:q,nextActionAt:b.Optional(q),retry:b.Optional(X),admission:b.Optional(Y),circuit:b.Optional(z),stall:b.Optional(C),fallback:b.Optional(T)},{additionalProperties:!1}),N=K(b.Object({version:b.Literal(1),generation:b.String({minLength:1,maxLength:Z,pattern:"^[^\x00-\x1F]+$"}),revision:g,snapshot:b.Union([I,b.Null()])},{additionalProperties:!1}));function V(Q){let k=[...Q].filter((W)=>{let w=W.codePointAt(0)??0;return w>31&&w!==127}).join("").trim().slice(0,L);if(!k)throw Error("Provider recovery identity is empty");if(k.includes("://"))throw Error("Provider recovery identity cannot be a URL");return k}
2
- export{N as ng,V as og};
1
+ import{Gj as b,Hj as K,Jj as j}from"./chunk-5q4z0sfr.js";var L=256,Z=128,p=1e6,$=86400000,G=8640000000000000,g=b.Integer({minimum:0,maximum:p}),f=b.Integer({minimum:0,maximum:$}),q=b.Integer({minimum:0,maximum:G}),x=b.String({minLength:1,maxLength:L,pattern:"^(?!.*://)[^\x00-\x1F]+$"}),H=j(["capacity","queue_full","wait_timeout","admission_closed","rate_limit","server_error","timeout","transport","stream_closed","circuit_open","stream_stall"]),U=j(["admission_wait","retry_wait","retry_attempt","circuit_open","circuit_probe","stream_stall","fallback"]),F=b.Object({provider:x,model:x},{additionalProperties:!1}),J=j(["rate_limit","server_error","timeout","transport","stream_closed"]),s=b.Union([b.Object({source:b.Literal("retry"),reason:J,statusCode:b.Optional(b.Integer({minimum:100,maximum:999}))},{additionalProperties:!1}),b.Object({source:b.Literal("circuit"),reason:J,statusCode:b.Optional(b.Integer({minimum:100,maximum:999}))},{additionalProperties:!1}),b.Object({source:b.Literal("admission"),reason:j(["queue_full","wait_timeout","closed"])},{additionalProperties:!1}),b.Object({source:b.Literal("stall"),reason:b.Literal("timeout")},{additionalProperties:!1})]),T=b.Object({from:F,to:F,candidate:b.Integer({minimum:1,maximum:p}),candidateCount:b.Integer({minimum:1,maximum:p}),trigger:s},{additionalProperties:!1}),X=b.Object({attempt:g,maxRetries:g,statusCode:b.Optional(b.Integer({minimum:100,maximum:999})),delayMs:b.Optional(f),recoveryBudgetMs:b.Optional(f),recoveryElapsedMs:b.Optional(f),recoveryRemainingMs:b.Optional(f)},{additionalProperties:!1}),Y=b.Object({requestClass:j(["foreground","background","internal"]),scope:j(["global","domain","owner","class"]),resource:j(["stream","pending_count","pending_bytes"]),queuePosition:g,queueDepth:g,inFlight:g,limit:g,waitMs:f,maxWaitMs:f,recoveryRemainingMs:b.Optional(f)},{additionalProperties:!1}),z=b.Object({phase:j(["opened","reopened","waiting","probe","rejected"]),statusCode:b.Optional(b.Integer({minimum:100,maximum:999})),retryAfterMs:b.Optional(f),nextProbeAt:b.Optional(q),openDurationMs:f,sampleCount:b.Optional(g),failureCount:b.Optional(g),recoveryRemainingMs:b.Optional(f)},{additionalProperties:!1}),C=b.Object({stallCount:g,durationMs:f,warningAfterMs:f,timeoutMs:f,outputStarted:b.Boolean()},{additionalProperties:!1}),I=b.Object({activity:U,reason:H,updatedAt:q,nextActionAt:b.Optional(q),retry:b.Optional(X),admission:b.Optional(Y),circuit:b.Optional(z),stall:b.Optional(C),fallback:b.Optional(T)},{additionalProperties:!1}),N=K(b.Object({version:b.Literal(1),generation:b.String({minLength:1,maxLength:Z,pattern:"^[^\x00-\x1F]+$"}),revision:g,snapshot:b.Union([I,b.Null()])},{additionalProperties:!1}));function V(Q){let k=[...Q].filter((W)=>{let w=W.codePointAt(0)??0;return w>31&&w!==127}).join("").trim().slice(0,L);if(!k)throw Error("Provider recovery identity is empty");if(k.includes("://"))throw Error("Provider recovery identity cannot be a URL");return k}
2
+ export{N as pg,V as qg};
@@ -0,0 +1 @@
1
+ import{wg as a,xg as b,yg as c,zg as d}from"./chunk-0chvj0qt.js";import"./chunk-ae0fws1f.js";import"./chunk-sd9bze9x.js";import"./chunk-514va7ce.js";import"./chunk-jsv3e4k6.js";import"./chunk-n34qsnks.js";import"./chunk-5q4z0sfr.js";import"./chunk-0b67y4j1.js";import"./chunk-9kj19a8t.js";import"./chunk-f2jm4x5q.js";import"./chunk-gm2yfq3r.js";import"./chunk-n9819k4p.js";import"./chunk-7xtxvrh8.js";import"./chunk-sdapqhj0.js";export{c as snapshotWorkspaceModelResources,b as resolveWorkspaceModelResources,d as createProcessModelResources,a as cloneWorkspaceModelConfig};
@@ -1 +1 @@
1
- import{$e as o,Ne as a,Oe as b,Pe as c,Qe as d,Re as e,Se as f,Te as g,Ue as h,Ve as i,We as j,Xe as k,Ye as l,Ze as m,_e as n,af as p,bf as q,cf as r}from"./chunk-es0cbtx1.js";import"./chunk-zfaenqqx.js";import"./chunk-nxsarfy6.js";import"./chunk-pg7cgvs8.js";import"./chunk-mnk0b4nz.js";import"./chunk-tecbx0ek.js";export{h as syncSession,j as syncAllAcpRemoteScopes,k as syncAll,i as syncAcpRemoteScope,r as searchProjectionText,f as resetProjectionDbCache,l as removeSessionFromProjection,m as rebuildProjectionIndex,q as readSessionSurfaceHistoryPage,o as readSessionSurfaceCatalogRevision,p as readSessionSurfaceCatalogPage,n as readSessionSurfaceCandidates,g as projectSessionSurfaceSummaryFields,c as getSessionSurfaceHistoryByteLimit,e as getProjectionDb,d as getIndexDbPath,a as __setProjectionIOForTesting,b as __resetProjectionIOForTesting};
1
+ import{$e as m,Pe as a,Qe as b,Re as c,Se as d,Te as e,Ue as f,Ve as g,We as h,Xe as i,Ye as j,Ze as k,_e as l,af as n,bf as o,cf as p,df as q,ef as r}from"./chunk-rv80nkve.js";import"./chunk-fx9vm1n5.js";import"./chunk-28tzj187.js";import"./chunk-5q4z0sfr.js";import"./chunk-7xtxvrh8.js";import"./chunk-sdapqhj0.js";export{h as syncSession,j as syncAllAcpRemoteScopes,k as syncAll,i as syncAcpRemoteScope,r as searchProjectionText,f as resetProjectionDbCache,l as removeSessionFromProjection,m as rebuildProjectionIndex,q as readSessionSurfaceHistoryPage,o as readSessionSurfaceCatalogRevision,p as readSessionSurfaceCatalogPage,n as readSessionSurfaceCandidates,g as projectSessionSurfaceSummaryFields,c as getSessionSurfaceHistoryByteLimit,e as getProjectionDb,d as getIndexDbPath,a as __setProjectionIOForTesting,b as __resetProjectionIOForTesting};