blade-code 0.11.3 → 0.11.5

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 (74) hide show
  1. package/dist/blade.js +2 -2
  2. package/dist/{chunk-hzz27w5w.js → chunk-03rdr8mr.js} +1 -1
  3. package/dist/{chunk-45xdp95z.js → chunk-0bzhkqpe.js} +1 -1
  4. package/dist/{chunk-cmpxdek8.js → chunk-0ykg98p7.js} +1 -1
  5. package/dist/{chunk-33w0b9r4.js → chunk-14mtvq2m.js} +1 -1
  6. package/dist/{chunk-g0xtk1yy.js → chunk-1g7c3f82.js} +1 -1
  7. package/dist/chunk-27cw0k2s.js +1 -0
  8. package/dist/{chunk-dyf12wbv.js → chunk-2x63c1gx.js} +1 -1
  9. package/dist/{chunk-5qrw9g8c.js → chunk-3054z3md.js} +1 -1
  10. package/dist/{chunk-gqypt03h.js → chunk-39pjywan.js} +1 -1
  11. package/dist/{chunk-q6sr4979.js → chunk-3v9epq9s.js} +1 -1
  12. package/dist/{chunk-prqtwzxd.js → chunk-4cywnksk.js} +1 -1
  13. package/dist/{chunk-b8hm4td5.js → chunk-5j824kxz.js} +1 -1
  14. package/dist/{chunk-nvj4da2w.js → chunk-6eznxwsv.js} +1 -1
  15. package/dist/chunk-6p0hkf4f.js +1 -0
  16. package/dist/{chunk-qy6p8bpr.js → chunk-6wzwkjep.js} +1 -1
  17. package/dist/{chunk-yeandcre.js → chunk-77n1drhv.js} +1 -1
  18. package/dist/{chunk-6v23hdt8.js → chunk-870szc6v.js} +1 -1
  19. package/dist/{chunk-nts19h6v.js → chunk-87bak5n5.js} +1 -1
  20. package/dist/{chunk-v0eanse2.js → chunk-8d8wsqam.js} +1 -1
  21. package/dist/chunk-8r6xncb3.js +1 -0
  22. package/dist/{chunk-x2crj6jq.js → chunk-amzpb8s5.js} +1 -1
  23. package/dist/{chunk-px45q235.js → chunk-asgmmaec.js} +2 -2
  24. package/dist/{chunk-n30najxq.js → chunk-b5cz00mt.js} +1 -1
  25. package/dist/{chunk-mqfayxf7.js → chunk-c08qbh8h.js} +2 -2
  26. package/dist/chunk-cc9vbgqc.js +2 -0
  27. package/dist/chunk-ccpejbed.js +1 -0
  28. package/dist/{chunk-0pcrccgp.js → chunk-cmk9vr5m.js} +1 -1
  29. package/dist/{chunk-jbpasjg9.js → chunk-e0ft3vwg.js} +1 -1
  30. package/dist/chunk-eb10zapp.js +1 -0
  31. package/dist/{chunk-a95jmx2j.js → chunk-ed2hdrwe.js} +1 -1
  32. package/dist/{chunk-zc8erdkc.js → chunk-eefqxc4t.js} +1 -1
  33. package/dist/{chunk-g2295k8s.js → chunk-eexs73bz.js} +1 -1
  34. package/dist/chunk-fj06d4kk.js +1 -0
  35. package/dist/{chunk-kdtj92em.js → chunk-g4k4tnsq.js} +1 -1
  36. package/dist/{chunk-qvew5nk3.js → chunk-gmparnqt.js} +1 -1
  37. package/dist/{chunk-sdapqhj0.js → chunk-gmpsfkgg.js} +1 -1
  38. package/dist/chunk-gpj33m14.js +1 -0
  39. package/dist/chunk-gwf872nm.js +1 -0
  40. package/dist/{chunk-p36k2e96.js → chunk-hb680ebj.js} +1 -1
  41. package/dist/{chunk-mmpcq1yh.js → chunk-j08fc7cy.js} +1 -1
  42. package/dist/{chunk-3rxs9vxm.js → chunk-mjqwnekv.js} +1 -1
  43. package/dist/{chunk-0759ckbc.js → chunk-n0v7ce3r.js} +1 -1
  44. package/dist/{chunk-b3kvf23h.js → chunk-n39gsnzc.js} +2 -2
  45. package/dist/{chunk-wnzr9h84.js → chunk-nad5spvc.js} +1 -1
  46. package/dist/{chunk-crbt25b4.js → chunk-nefvj18m.js} +1 -1
  47. package/dist/{chunk-ffq1k7q5.js → chunk-nmbgg7j5.js} +1 -1
  48. package/dist/{chunk-dv5ts9ae.js → chunk-qk7n9j5k.js} +1 -1
  49. package/dist/{chunk-s3pnhdqk.js → chunk-rswfbvay.js} +1 -1
  50. package/dist/{chunk-wan9q99y.js → chunk-s14zayxp.js} +1 -1
  51. package/dist/{chunk-4e4qtpca.js → chunk-saz6mwpq.js} +1 -1
  52. package/dist/chunk-tj7ytet5.js +1 -0
  53. package/dist/{chunk-t0swttvj.js → chunk-v63e33me.js} +2 -2
  54. package/dist/{chunk-faedrfhd.js → chunk-v7pw7a8q.js} +1 -1
  55. package/dist/{chunk-r5svk833.js → chunk-whxkwaz1.js} +1 -1
  56. package/dist/{chunk-kb4hwa5a.js → chunk-wr5qr81z.js} +1 -1
  57. package/dist/chunk-xcy0tfmt.js +164 -0
  58. package/dist/chunk-xez8apfk.js +1 -0
  59. package/dist/{chunk-5s2x98rx.js → chunk-xhwdac1j.js} +1 -1
  60. package/dist/{chunk-0wxnrjes.js → chunk-yjdyzb5z.js} +1 -1
  61. package/dist/{chunk-r9nyzqzb.js → chunk-yscyr8zw.js} +78 -78
  62. package/package.json +2 -2
  63. package/dist/chunk-3d4wgfkr.js +0 -1
  64. package/dist/chunk-7p8r4q6f.js +0 -1
  65. package/dist/chunk-b7pn03pb.js +0 -1
  66. package/dist/chunk-fa5sebe2.js +0 -1
  67. package/dist/chunk-fnvh22vc.js +0 -1
  68. package/dist/chunk-gfhb2h6z.js +0 -1
  69. package/dist/chunk-hn2p1296.js +0 -1
  70. package/dist/chunk-hnnhpv75.js +0 -1
  71. package/dist/chunk-jm1chm6x.js +0 -171
  72. package/dist/chunk-pbckwd41.js +0 -2
  73. package/dist/chunk-sqsfztrv.js +0 -1
  74. package/dist/chunk-yw3achrm.js +0 -1
@@ -1 +1 @@
1
- import{Ab as J,fb as V,hb as W,ib as O}from"./chunk-r5svk833.js";import"./chunk-n30najxq.js";import"./chunk-q6sr4979.js";import"./chunk-kkzznz4w.js";import{Zi as Q}from"./chunk-b22ab7yw.js";import"./chunk-m2x6pb4f.js";import"./chunk-4e4qtpca.js";import"./chunk-a95jmx2j.js";import"./chunk-sdapqhj0.js";import F from"chalk";var K=(f)=>typeof f==="string"&&f.length>0?f:void 0;function X(f){let z=K(f.cron),G=K(f.every),H=K(f.at);if([z,G,H].filter(Boolean).length!==1)throw Error("Provide exactly one of --cron, --every, or --at");if(z)return{kind:"cron",cron:z};if(G){let P=V(G);if(!P)throw Error(`Invalid --every value "${G}" (use e.g. 30m, 2h, 1d)`);return{kind:"interval",intervalMs:P}}let N=new Date(H);if(Number.isNaN(N.getTime()))throw Error(`Invalid --at value "${H}" (use an ISO timestamp)`);return{kind:"once",runAt:N.toISOString()}}var Y={command:"create <prompt>",describe:"创建定时任务",builder:(f)=>f.positional("prompt",{type:"string",describe:"定时任务运行时发送给 Agent 的提示词",demandOption:!0}).option("cron",{type:"string",describe:"5 段 cron 表达式(本地时区)"}).option("every",{type:"string",describe:"间隔(如 30m、2h、1d)"}).option("at",{type:"string",describe:"一次性运行的 ISO 时间点"}).option("project-path",{alias:["projectPath","project"],type:"string",describe:"目标项目路径(默认当前目录)"}).option("title",{type:"string",describe:"定时任务标题"}).option("model",{alias:"m",type:"string",describe:"模型 ID"}).option("permission-mode",{type:"string",choices:["default","autoEdit","yolo","plan"],default:"default",describe:"权限模式"}).option("isolation",{type:"string",choices:["local","worktree"],default:"worktree",describe:"执行隔离方式"}).example([['$0 schedule create "跑测试并汇报失败" --every 1h',"每小时运行一次"],['$0 schedule create "生成每日站会摘要" --cron "0 9 * * 1-5"',"工作日 9 点运行"]]),handler:async(f)=>{try{let z=X(f),G=W(z);if(G)throw Error(G);let H={prompt:f.prompt,projectPath:K(f.projectPath)??Q(),title:K(f.title),trigger:z,modelId:K(f.model),isolation:K(f.isolation)??"worktree",permissionMode:K(f.permissionMode)??"default",enabled:!0},B=await J.create(H);console.log(F.green(`✓ 已创建定时任务 ${B.id}`)),console.log(` ${O(B.trigger)}`),console.log(` 项目: ${B.projectPath}`),console.log(` 下次运行: ${B.nextRunAt?new Date(B.nextRunAt).toLocaleString():"(无)"}`),process.exit(0)}catch(z){console.error(F.red(`创建定时任务失败: ${z instanceof Error?z.message:z}`)),process.exit(1)}}},Z={command:"list",aliases:["ls"],describe:"列出所有定时任务",handler:async()=>{let f=await J.list();if(f.length===0)console.log(F.dim("尚无定时任务。使用 `blade schedule create` 创建。")),process.exit(0);for(let z of f){let G=z.enabled?F.green("启用"):F.dim("停用"),H=z.nextRunAt?new Date(z.nextRunAt).toLocaleString():"—",B=z.lastRunAt?`${new Date(z.lastRunAt).toLocaleString()} (${z.lastStatus??"?"})`:"从未";console.log(`${F.cyan(z.id)} [${G}] ${z.title??z.prompt.slice(0,40)}`),console.log(` ${O(z.trigger)} · 下次: ${H} · 上次: ${B} · 运行 ${z.runCount} 次`),console.log(F.dim(` 项目: ${z.projectPath}`))}process.exit(0)}},_={command:"show <id>",describe:"查看定时任务详情",builder:(f)=>f.positional("id",{type:"string",describe:"定时任务 ID",demandOption:!0}),handler:async(f)=>{let z=await J.get(f.id);if(!z)console.error(F.red(`未找到定时任务 ${f.id}`)),process.exit(1);console.log(JSON.stringify(z,null,2)),process.exit(0)}},$={command:"remove <id>",aliases:["rm"],describe:"删除定时任务",builder:(f)=>f.positional("id",{type:"string",describe:"定时任务 ID",demandOption:!0}),handler:async(f)=>{if(!await J.remove(f.id))console.error(F.red(`未找到定时任务 ${f.id}`)),process.exit(1);console.log(F.green(`✓ 已删除定时任务 ${f.id}`)),process.exit(0)}},q={command:"enable <id>",describe:"启用定时任务",builder:(f)=>f.positional("id",{type:"string",describe:"定时任务 ID",demandOption:!0}),handler:async(f)=>{if(!await J.setEnabled(f.id,!0))console.error(F.red(`未找到定时任务 ${f.id}`)),process.exit(1);console.log(F.green(`✓ 已启用定时任务 ${f.id}`)),process.exit(0)}},x={command:"disable <id>",describe:"停用定时任务",builder:(f)=>f.positional("id",{type:"string",describe:"定时任务 ID",demandOption:!0}),handler:async(f)=>{if(!await J.setEnabled(f.id,!1))console.error(F.red(`未找到定时任务 ${f.id}`)),process.exit(1);console.log(F.green(`✓ 已停用定时任务 ${f.id}`)),process.exit(0)}},D={command:"run <id>",describe:"立即运行定时任务(需要 blade serve)",builder:(f)=>f.positional("id",{type:"string",describe:"定时任务 ID",demandOption:!0}).option("server",{type:"string",default:process.env.BLADE_SERVER_URL??"http://127.0.0.1:4097",describe:"Blade server 地址"}),handler:async(f)=>{let z=f.id,G=(K(f.server)??"http://127.0.0.1:4097").replace(/\/$/,""),H={};if(process.env.BLADE_SERVER_PASSWORD){let B=process.env.BLADE_SERVER_USERNAME??"blade";H.Authorization=`Basic ${Buffer.from(`${B}:${process.env.BLADE_SERVER_PASSWORD}`).toString("base64")}`}try{let B=await fetch(`${G}/schedules/${encodeURIComponent(z)}/run`,{method:"POST",headers:H});if(!B.ok){let N=await B.json().catch(()=>{return});throw Error(N?.error?.message??`Schedule run failed (${B.status})`)}console.log(F.green(`✓ 已触发定时任务 ${z}`)),process.exit(0)}catch(B){console.error(F.red(`运行定时任务失败: ${B instanceof Error?B.message:B}`)),process.exit(1)}}},R={command:"schedule",describe:"管理定时任务",builder:(f)=>f.command(Y).command(Z).command(_).command($).command(q).command(x).command(D).demandCommand(1,"请提供子命令:create | list | show | remove | enable | disable | run"),handler:()=>{}};export{R as scheduleCommands};
1
+ import{Ab as J,fb as V,hb as W,ib as O}from"./chunk-whxkwaz1.js";import"./chunk-b5cz00mt.js";import"./chunk-3v9epq9s.js";import"./chunk-kkzznz4w.js";import{Zi as Q}from"./chunk-b22ab7yw.js";import"./chunk-m2x6pb4f.js";import"./chunk-saz6mwpq.js";import"./chunk-ed2hdrwe.js";import"./chunk-gmpsfkgg.js";import F from"chalk";var K=(f)=>typeof f==="string"&&f.length>0?f:void 0;function X(f){let z=K(f.cron),G=K(f.every),H=K(f.at);if([z,G,H].filter(Boolean).length!==1)throw Error("Provide exactly one of --cron, --every, or --at");if(z)return{kind:"cron",cron:z};if(G){let P=V(G);if(!P)throw Error(`Invalid --every value "${G}" (use e.g. 30m, 2h, 1d)`);return{kind:"interval",intervalMs:P}}let N=new Date(H);if(Number.isNaN(N.getTime()))throw Error(`Invalid --at value "${H}" (use an ISO timestamp)`);return{kind:"once",runAt:N.toISOString()}}var Y={command:"create <prompt>",describe:"创建定时任务",builder:(f)=>f.positional("prompt",{type:"string",describe:"定时任务运行时发送给 Agent 的提示词",demandOption:!0}).option("cron",{type:"string",describe:"5 段 cron 表达式(本地时区)"}).option("every",{type:"string",describe:"间隔(如 30m、2h、1d)"}).option("at",{type:"string",describe:"一次性运行的 ISO 时间点"}).option("project-path",{alias:["projectPath","project"],type:"string",describe:"目标项目路径(默认当前目录)"}).option("title",{type:"string",describe:"定时任务标题"}).option("model",{alias:"m",type:"string",describe:"模型 ID"}).option("permission-mode",{type:"string",choices:["default","autoEdit","yolo","plan"],default:"default",describe:"权限模式"}).option("isolation",{type:"string",choices:["local","worktree"],default:"worktree",describe:"执行隔离方式"}).example([['$0 schedule create "跑测试并汇报失败" --every 1h',"每小时运行一次"],['$0 schedule create "生成每日站会摘要" --cron "0 9 * * 1-5"',"工作日 9 点运行"]]),handler:async(f)=>{try{let z=X(f),G=W(z);if(G)throw Error(G);let H={prompt:f.prompt,projectPath:K(f.projectPath)??Q(),title:K(f.title),trigger:z,modelId:K(f.model),isolation:K(f.isolation)??"worktree",permissionMode:K(f.permissionMode)??"default",enabled:!0},B=await J.create(H);console.log(F.green(`✓ 已创建定时任务 ${B.id}`)),console.log(` ${O(B.trigger)}`),console.log(` 项目: ${B.projectPath}`),console.log(` 下次运行: ${B.nextRunAt?new Date(B.nextRunAt).toLocaleString():"(无)"}`),process.exit(0)}catch(z){console.error(F.red(`创建定时任务失败: ${z instanceof Error?z.message:z}`)),process.exit(1)}}},Z={command:"list",aliases:["ls"],describe:"列出所有定时任务",handler:async()=>{let f=await J.list();if(f.length===0)console.log(F.dim("尚无定时任务。使用 `blade schedule create` 创建。")),process.exit(0);for(let z of f){let G=z.enabled?F.green("启用"):F.dim("停用"),H=z.nextRunAt?new Date(z.nextRunAt).toLocaleString():"—",B=z.lastRunAt?`${new Date(z.lastRunAt).toLocaleString()} (${z.lastStatus??"?"})`:"从未";console.log(`${F.cyan(z.id)} [${G}] ${z.title??z.prompt.slice(0,40)}`),console.log(` ${O(z.trigger)} · 下次: ${H} · 上次: ${B} · 运行 ${z.runCount} 次`),console.log(F.dim(` 项目: ${z.projectPath}`))}process.exit(0)}},_={command:"show <id>",describe:"查看定时任务详情",builder:(f)=>f.positional("id",{type:"string",describe:"定时任务 ID",demandOption:!0}),handler:async(f)=>{let z=await J.get(f.id);if(!z)console.error(F.red(`未找到定时任务 ${f.id}`)),process.exit(1);console.log(JSON.stringify(z,null,2)),process.exit(0)}},$={command:"remove <id>",aliases:["rm"],describe:"删除定时任务",builder:(f)=>f.positional("id",{type:"string",describe:"定时任务 ID",demandOption:!0}),handler:async(f)=>{if(!await J.remove(f.id))console.error(F.red(`未找到定时任务 ${f.id}`)),process.exit(1);console.log(F.green(`✓ 已删除定时任务 ${f.id}`)),process.exit(0)}},q={command:"enable <id>",describe:"启用定时任务",builder:(f)=>f.positional("id",{type:"string",describe:"定时任务 ID",demandOption:!0}),handler:async(f)=>{if(!await J.setEnabled(f.id,!0))console.error(F.red(`未找到定时任务 ${f.id}`)),process.exit(1);console.log(F.green(`✓ 已启用定时任务 ${f.id}`)),process.exit(0)}},x={command:"disable <id>",describe:"停用定时任务",builder:(f)=>f.positional("id",{type:"string",describe:"定时任务 ID",demandOption:!0}),handler:async(f)=>{if(!await J.setEnabled(f.id,!1))console.error(F.red(`未找到定时任务 ${f.id}`)),process.exit(1);console.log(F.green(`✓ 已停用定时任务 ${f.id}`)),process.exit(0)}},D={command:"run <id>",describe:"立即运行定时任务(需要 blade serve)",builder:(f)=>f.positional("id",{type:"string",describe:"定时任务 ID",demandOption:!0}).option("server",{type:"string",default:process.env.BLADE_SERVER_URL??"http://127.0.0.1:4097",describe:"Blade server 地址"}),handler:async(f)=>{let z=f.id,G=(K(f.server)??"http://127.0.0.1:4097").replace(/\/$/,""),H={};if(process.env.BLADE_SERVER_PASSWORD){let B=process.env.BLADE_SERVER_USERNAME??"blade";H.Authorization=`Basic ${Buffer.from(`${B}:${process.env.BLADE_SERVER_PASSWORD}`).toString("base64")}`}try{let B=await fetch(`${G}/schedules/${encodeURIComponent(z)}/run`,{method:"POST",headers:H});if(!B.ok){let N=await B.json().catch(()=>{return});throw Error(N?.error?.message??`Schedule run failed (${B.status})`)}console.log(F.green(`✓ 已触发定时任务 ${z}`)),process.exit(0)}catch(B){console.error(F.red(`运行定时任务失败: ${B instanceof Error?B.message:B}`)),process.exit(1)}}},R={command:"schedule",describe:"管理定时任务",builder:(f)=>f.command(Y).command(Z).command(_).command($).command(q).command(x).command(D).demandCommand(1,"请提供子命令:create | list | show | remove | enable | disable | run"),handler:()=>{}};export{R as scheduleCommands};
@@ -1,4 +1,4 @@
1
- import{nf as m_,of as vT}from"./chunk-n30najxq.js";import{Eh as QT}from"./chunk-ys8gysg8.js";import{Ej as uT}from"./chunk-4e4qtpca.js";import{Ak as K,Ck as P_,Dk as e,Kk as mT,fk as G_,nk as S,pk as R,qk as d,sk as a,tk as q_,uk as hT,vk as yT,wk as PT}from"./chunk-a95jmx2j.js";import{Lk as Y_}from"./chunk-sdapqhj0.js";import{createHash as MN}from"node:crypto";import{readdir as R_,stat as f_}from"node:fs/promises";import $_ from"node:path";import{createHash as TE,randomBytes as i_}from"node:crypto";import{chmod as s_,link as EE,lstat as b,mkdir as NE,open as i,readdir as c_,realpath as XE,unlink as k_}from"node:fs/promises";import H from"node:path";function oT(){return typeof globalThis.Bun<"u"}function rT(_){return{exec:(T)=>_.exec(T),prepare:(T)=>{let E=_.prepare(T);return{run:(...N)=>{E.run(...N)},get:(...N)=>E.get(...N),all:(...N)=>E.all(...N)}},transaction:(T)=>_.transaction(T)(),pragma:(T)=>_.pragma(T,{simple:!0}),close:()=>_.close()}}function eT(_){return{exec:(T)=>_.exec(T),prepare:(T)=>{let E=_.query(T);return{run:(...N)=>{E.run(...N)},get:(...N)=>E.get(...N),all:(...N)=>E.all(...N)}},transaction:(T)=>_.transaction(T)(),pragma:(T)=>{let E=_.query(`PRAGMA ${T}`).get();if(!E)return;let N=Object.values(E);return N.length===1?N[0]:E},close:()=>_.close()}}function _E(_){return[`PRAGMA busy_timeout=${_};`,"PRAGMA journal_mode=WAL;","PRAGMA synchronous=NORMAL;","PRAGMA foreign_keys=ON;"].join(`
1
+ import{nf as m_,of as vT}from"./chunk-b5cz00mt.js";import{Eh as QT}from"./chunk-ys8gysg8.js";import{Ej as uT}from"./chunk-saz6mwpq.js";import{Ak as P_,Bk as e,Ik as mT,dk as G_,lk as S,nk as R,ok as d,qk as a,rk as q_,sk as hT,tk as yT,uk as PT,yk as K}from"./chunk-ed2hdrwe.js";import{Jk as Y_}from"./chunk-gmpsfkgg.js";import{createHash as MN}from"node:crypto";import{readdir as R_,stat as f_}from"node:fs/promises";import $_ from"node:path";import{createHash as TE,randomBytes as i_}from"node:crypto";import{chmod as s_,link as EE,lstat as b,mkdir as NE,open as i,readdir as c_,realpath as XE,unlink as k_}from"node:fs/promises";import H from"node:path";function oT(){return typeof globalThis.Bun<"u"}function rT(_){return{exec:(T)=>_.exec(T),prepare:(T)=>{let E=_.prepare(T);return{run:(...N)=>{E.run(...N)},get:(...N)=>E.get(...N),all:(...N)=>E.all(...N)}},transaction:(T)=>_.transaction(T)(),pragma:(T)=>_.pragma(T,{simple:!0}),close:()=>_.close()}}function eT(_){return{exec:(T)=>_.exec(T),prepare:(T)=>{let E=_.query(T);return{run:(...N)=>{E.run(...N)},get:(...N)=>E.get(...N),all:(...N)=>E.all(...N)}},transaction:(T)=>_.transaction(T)(),pragma:(T)=>{let E=_.query(`PRAGMA ${T}`).get();if(!E)return;let N=Object.values(E);return N.length===1?N[0]:E},close:()=>_.close()}}function _E(_){return[`PRAGMA busy_timeout=${_};`,"PRAGMA journal_mode=WAL;","PRAGMA synchronous=NORMAL;","PRAGMA foreign_keys=ON;"].join(`
2
2
  `)}async function T_(_,T={}){let E=T.busyTimeoutMs??5000;if(!Number.isSafeInteger(E)||E<0)return null;let N=null;try{if(oT()){let{Database:L}=await import("bun:sqlite");N=eT(new L(_))}else{let I=(await import("better-sqlite3")).default;N=rT(new I(_))}return N.exec(_E(E)),N}catch{try{N?.close()}catch{}return null}}var LE="surface-workspaces-v1",d_=/^[a-f0-9]{64}$/,IE=/^acp-remote-workspace:[A-Za-z0-9_-]{43}$/,OE=1024,UE=".surface-workspaces-v1.capacity.sqlite",a_=/^\.tmp-acp-remote-workspace-([1-9][0-9]*)-[a-f0-9]{32}\.pending$/;class Y extends Error{name="AcpRemoteWorkspaceReferenceError";code;retryable;constructor(_){let T=_==="session_surface_not_found"?{message:"Session surface was not found",retryable:!1}:_==="session_surface_capacity"?{message:"Session surface capacity is exhausted",retryable:!0}:{message:"Session surface state is invalid",retryable:!1};super(T.message);this.code=_,this.retryable=T.retryable,Object.setPrototypeOf(this,new.target.prototype)}}var h,E_=new Map;function t_(_){return H.join(String(_),LE)}async function o_(_,T){let E=R(T);if(d(E.collisionIdentity)!==String(_))throw new Y("session_surface_state_invalid");let N=e_(E.exactIdentity),X=t_(_);return await $E(_,X),CE(X,()=>GE(X,async()=>{await BE(X);let L=await r_(_,X,!0),I=L.recordsByDigest.get(N);if(I)return I.workspaceRef;if(L.recordsByDigest.size>=OE)throw new Y("session_surface_capacity");let O=H.join(X,`${N}.json`),U=new Set(L.workspaceRefToDigest.keys());for(let C=0;C<32;C+=1){let G=ZE();if(U.has(G))continue;return jE(_,X,O,E,{version:1,exactIdentityDigest:N,workspaceRef:G})}throw new Y("session_surface_state_invalid")}))}async function CE(_,T){let E=E_.get(_)??Promise.resolve(),N=()=>{return},X=new Promise((I)=>{N=I}),L=E.catch(()=>{return}).then(()=>X);E_.set(_,L),await E.catch(()=>{return});try{return await T()}finally{if(N(),E_.get(_)===L)E_.delete(_)}}async function $E(_,T){try{await B_(T,String(_))}catch(E){if(x(E)!=="ENOENT"){if(E instanceof Y)throw E;throw new Y("session_surface_state_invalid")}try{await NE(T,{recursive:!1,mode:448})}catch(N){if(x(N)!=="EEXIST")throw new Y("session_surface_state_invalid")}await B_(T,String(_)),await v(String(_))}}async function GE(_,T){await h?.beforeCapacityLockAttempt?.();let E=await gE(_),N=!1,X,L,I;try{E.database.exec("BEGIN IMMEDIATE;"),N=!0,await h?.afterCapacityLockAcquired?.(),I={value:await T()}}catch(O){X=O}if(N)try{await YE(E),E.database.exec("ROLLBACK;")}catch(O){L=O}try{E.database.close()}catch(O){if(!N)L=O}if(await E.identityHandle.close().catch(()=>{return}),L!==void 0)throw new Y("session_surface_state_invalid");if(X instanceof Y)throw X;if(X!==void 0||!I)throw new Y("session_surface_state_invalid");return I.value}async function gE(_){let T=H.join(_,UE),E=null,N;try{let X=!1;try{let I=await i(T,"wx",384);X=!0,await I.sync(),await I.close()}catch(I){if(x(I)!=="EEXIST")throw I}if(await p(T,_),X)await v(_);N=await i(T,"r"),await s(N,T,_);let L=await N.stat({bigint:!0});if(E=await T_(T,{busyTimeoutMs:30000}),!E)throw new Y("session_surface_state_invalid");if(E.exec("PRAGMA locking_mode=NORMAL;"),E.exec("PRAGMA synchronous=FULL;"),E.exec("PRAGMA busy_timeout=30000;"),process.platform!=="win32")await s_(T,384);return await s(N,T,_),await kE(T,_),{database:E,identity:L,identityHandle:N,path:T}}catch(X){await N?.close().catch(()=>{return});try{E?.close()}catch{}if(X instanceof Y)throw X;throw new Y("session_surface_state_invalid")}}async function YE(_){await s(_.identityHandle,_.path,H.dirname(_.path));let T=await _.identityHandle.stat({bigint:!0});if(!c(_.identity,T))throw new Y("session_surface_state_invalid")}async function kE(_,T){for(let E of["-journal","-shm","-wal"]){let N=`${_}${E}`;try{if(process.platform!=="win32")await s_(N,384);await p(N,T)}catch(X){if(x(X)!=="ENOENT"){if(X instanceof Y)throw X;throw new Y("session_surface_state_invalid")}}}}async function BE(_){let T=await c_(_,{withFileTypes:!0}),E=!1;for(let N of T){if(!a_.test(N.name))continue;let X=H.join(_,N.name);await p(X,_),await k_(X),E=!0}if(E)await v(_)}async function r_(_,T,E){try{await B_(T,String(_))}catch(I){if(!E&&x(I)==="ENOENT")return{recordsByDigest:new Map,workspaceRefToDigest:new Map};if(I instanceof Y)throw I;throw new Y("session_surface_state_invalid")}let N;try{N=await c_(T,{withFileTypes:!0})}catch(I){if(!E&&x(I)==="ENOENT")return{recordsByDigest:new Map,workspaceRefToDigest:new Map};throw new Y("session_surface_state_invalid")}let X=new Map,L=new Map;for(let I of N){if(a_.test(I.name)){await p(H.join(T,I.name),T);continue}if(!I.name.endsWith(".json"))continue;let O=H.basename(I.name,".json");if(!d_.test(O))throw new Y("session_surface_state_invalid");let U=H.join(T,I.name),C=await FE(U,T);if(C.exactIdentityDigest!==O)throw new Y("session_surface_state_invalid");if(X.has(O))throw new Y("session_surface_state_invalid");let G=L.get(C.workspaceRef);if(G&&G!==O)throw new Y("session_surface_state_invalid");X.set(O,C),L.set(C.workspaceRef,O)}return{recordsByDigest:X,workspaceRefToDigest:L}}async function FE(_,T){let E;try{await p(_,T),E=await i(_,"r"),await s(E,_,T);let N=await E.readFile({encoding:"utf8"});return QE(N)}catch(N){if(N instanceof Y&&N.code==="session_surface_not_found")throw N;if(x(N)==="ENOENT")throw new Y("session_surface_not_found");throw new Y("session_surface_state_invalid")}finally{await E?.close()}}function QE(_){let T;try{T=JSON.parse(_)}catch{throw new Y("session_surface_state_invalid")}if(!VE(T))throw new Y("session_surface_state_invalid");return T}function VE(_){if(!_||typeof _!=="object"||Array.isArray(_))return!1;let T=_,E=Object.keys(T).sort();if(E.length!==3||E[0]!=="exactIdentityDigest"||E[1]!=="version"||E[2]!=="workspaceRef")return!1;return T.version===1&&typeof T.exactIdentityDigest==="string"&&d_.test(T.exactIdentityDigest)&&typeof T.workspaceRef==="string"&&IE.test(T.workspaceRef)}function e_(_){return TE("sha256").update(`acp-remote-workspace-exact-identity\x00${_}`).digest("hex")}function ZE(){return`acp-remote-workspace:${i_(32).toString("base64url")}`}function AE(){return`.tmp-acp-remote-workspace-${process.pid}-${i_(16).toString("hex")}.pending`}async function B_(_,T){if(H.dirname(_)!==T)throw new Y("session_surface_state_invalid");let E=await b(_);if(E.isSymbolicLink()||!E.isDirectory())throw new Y("session_surface_state_invalid");if(typeof process.getuid==="function"&&E.uid!==process.getuid())throw new Y("session_surface_state_invalid");let N=N_(E.mode);if(process.platform!=="win32"&&N!==448)throw new Y("session_surface_state_invalid");await F_(_,T,H.basename(_))}async function p(_,T){if(H.dirname(_)!==T)throw new Y("session_surface_state_invalid");let E=await b(_);if(E.isSymbolicLink()||!E.isFile())throw new Y("session_surface_state_invalid");if(typeof process.getuid==="function"&&E.uid!==process.getuid())throw new Y("session_surface_state_invalid");let N=N_(E.mode);if(process.platform!=="win32"&&N!==384)throw new Y("session_surface_state_invalid");await F_(_,T,H.basename(_),E)}async function s(_,T,E){let[N,X]=await Promise.all([_.stat({bigint:!0}),b(T,{bigint:!0})]);if(H.dirname(T)!==E||X.isSymbolicLink()||!X.isFile()||!N.isFile()||X.dev!==N.dev||X.ino!==N.ino)throw new Y("session_surface_state_invalid");if(typeof process.getuid==="function"&&(Number(X.uid)!==process.getuid()||Number(N.uid)!==process.getuid()))throw new Y("session_surface_state_invalid");let L=Number(X.mode&BigInt(511)),I=Number(N.mode&BigInt(511));if(process.platform!=="win32"&&(L!==384||I!==384))throw new Y("session_surface_state_invalid");await F_(T,E,H.basename(T),N)}async function F_(_,T,E,N){let X=h?.realpath??XE,L=await X(_),I=await X(T);if(L===H.join(I,E))return;if(N&&H.dirname(L)===I){let[O,U]=await Promise.all([b(_,{bigint:!0}),b(L,{bigint:!0})]);if(O.isFile()&&!O.isSymbolicLink()&&U.isFile()&&!U.isSymbolicLink()&&c(N,O)&&c(O,U)&&(typeof process.getuid!=="function"||Number(O.uid)===process.getuid()&&Number(U.uid)===process.getuid())&&(process.platform==="win32"||N_(O.mode)===384&&N_(U.mode)===384))return}throw new Y("session_surface_state_invalid")}async function v(_){if(!HE(process.platform))return;try{if(h?.syncDirectory){await h.syncDirectory(_);return}await ME(_)}catch{throw new Y("session_surface_state_invalid")}}function HE(_){return _!=="win32"}async function ME(_){let T=await i(_,"r");try{await T.sync()}finally{await T.close()}}async function jE(_,T,E,N,X){let L=H.join(T,AE()),I,O,U=!1,C=!1,G,k;try{I=await i(L,"wx",384),await I.writeFile(JSON.stringify(X),"utf8"),await I.sync(),await s(I,L,T),O=await I.stat({bigint:!0}),await I.close(),I=void 0,await h?.beforePublish?.({finalPath:E,referenceDirectoryPath:T,tempPath:L});try{await EE(L,E),U=!0}catch(B){if(x(B)!=="EEXIST")throw B;G=await JE(_,N)}if(U){let B=await b(E,{bigint:!0});if(!O||!c(O,B))throw new Y("session_surface_state_invalid");await p(E,T),await v(T),C=!0,G=X.workspaceRef;try{await h?.afterPublish?.({finalPath:E,referenceDirectoryPath:T,tempPath:L})}catch{}}}catch(B){k=B}finally{await I?.close().catch(()=>{return})}if(k!==void 0&&U&&!C&&O)try{let B=await b(E,{bigint:!0});if(c(O,B))await k_(E),await v(T)}catch{}try{if(await k_(L),!C)await v(T)}catch(B){if(x(B)!=="ENOENT"&&k===void 0&&!C)k=B}if(k instanceof Y)throw k;if(k!==void 0||G===void 0)throw new Y("session_surface_state_invalid");return G}async function JE(_,T){let E=t_(_),N=await r_(_,E,!0),X=e_(R(T).exactIdentity),L=N.recordsByDigest.get(X);if(!L)throw new Y("session_surface_state_invalid");return L.workspaceRef}function c(_,T){return BigInt(_.dev)===BigInt(T.dev)&&BigInt(_.ino)===BigInt(T.ino)}function x(_){return _!==null&&typeof _==="object"&&"code"in _&&typeof _.code==="string"?_.code:void 0}function N_(_){return typeof _==="bigint"?Number(_&BigInt(511)):_&511}import*as y from"node:path";var XT=50,LT=100,zE=new Set(["queued","running","completed","failed","cancelled","interrupted"]),KE=new Set(["high","medium","low"]),IT=/^[A-Za-z0-9_-]+$/,WE=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/,xE=/^acp-remote-exact-path:[a-f0-9]{64}$/;function OT(_){return typeof _==="string"&&WE.test(_)&&Number.isFinite(Date.parse(_))}function _T(_){return typeof _==="string"&&y.isAbsolute(_)}function TT(_){return typeof _==="string"&&xE.test(_)}function DE(_){return Buffer.from(JSON.stringify(_),"utf8").toString("base64url")}function SE(_){return Buffer.from(JSON.stringify(_),"utf8").toString("base64url")}function qE(_){try{if(!IT.test(_))throw Error("invalid");let T=Buffer.from(_,"base64url").toString("utf8");if(Buffer.from(T,"utf8").toString("base64url")!==_)throw Error("invalid");let E=JSON.parse(T);if(E.version!==1||E.kind!==void 0&&E.kind!=="local"||typeof E.includeSubagents!=="boolean"||E.archived!==void 0&&typeof E.archived!=="boolean"||!(E.cwd===null||_T(E.cwd))||!OT(E.lastMessageTime)||!_T(E.projectPath)||!K(E.sessionId))throw Error("invalid");return{version:1,kind:"local",cwd:E.cwd===null?null:y.resolve(E.cwd),includeSubagents:E.includeSubagents,archived:E.archived??!1,lastMessageTime:E.lastMessageTime,projectPath:y.resolve(E.projectPath),sessionId:E.sessionId}}catch{throw Error("Invalid session cursor")}}function RE(_){try{if(!IT.test(_))throw Error("invalid");let T=Buffer.from(_,"base64url").toString("utf8");if(Buffer.from(T,"utf8").toString("base64url")!==_)throw Error("invalid");let E=JSON.parse(T),N=Object.keys(E),X=new Set(["version","kind","exactIdentity","includeSubagents","archived","lastMessageTime","workspaceIdentity","sessionId"]);if(N.some((L)=>!X.has(L))||E.version!==1||E.kind!=="remote"||typeof E.includeSubagents!=="boolean"||typeof E.archived!=="boolean"||!(E.exactIdentity===null||TT(E.exactIdentity))||!OT(E.lastMessageTime)||!TT(E.workspaceIdentity)||!K(E.sessionId))throw Error("invalid");return{version:1,kind:"remote",exactIdentity:E.exactIdentity??null,includeSubagents:E.includeSubagents,archived:E.archived,lastMessageTime:E.lastMessageTime,workspaceIdentity:E.workspaceIdentity,sessionId:E.sessionId}}catch{throw Error("Invalid remote session cursor")}}function n(_){let T="";for(let E=0;E<_.length;E+=1)T+=_.charCodeAt(E).toString(16).padStart(4,"0");return T}function fE(_){if(!_.cursor)return;let T=qE(_.cursor);if(T.cwd!==_.cwd||T.includeSubagents!==_.includeSubagents||(T.archived??!1)!==_.archived)throw Error("Session cursor scope does not match this query");return T}function wE(_){if(!_.cursor)return;let T=RE(_.cursor);if(T.exactIdentity!==_.exactIdentity||_.exactIdentity!==null&&T.workspaceIdentity!==_.exactIdentity||T.includeSubagents!==_.includeSubagents||(T.archived??!1)!==_.archived)throw Error("Remote session cursor scope does not match this query");return T}function dN(_={}){let{cwd:T,cursor:E,limit:N,includeSubagents:X=!1,archived:L=!1}=_;if(T!==void 0&&!y.isAbsolute(T))throw Error("Session catalog cwd must be absolute");let I=N===void 0?XT:N;if(!Number.isInteger(I)||I<1||I>LT)throw Error("Session catalog limit must be an integer from 1 to 100");return{cwd:T===void 0?null:y.resolve(T),cursor:E??void 0,limit:I,includeSubagents:X,archived:L}}function aN(_={}){let{descriptor:T,cursor:E,limit:N,includeSubagents:X=!1,archived:L=!1}=_,I=N===void 0?XT:N;if(!Number.isInteger(I)||I<1||I>LT)throw Error("Session catalog limit must be an integer from 1 to 100");return{descriptor:T,exactIdentity:T?.exactIdentity??null,cursor:E??void 0,limit:I,includeSubagents:X,archived:L}}function tN(_={}){let T=ET(_.taskStatus,zE,"task status"),E=ET(_.taskPriority,KE,"task priority"),N=NT(_.taskDueAfter,"taskDueAfter"),X=NT(_.taskDueBefore,"taskDueBefore");return bE(N,X),{...T?{taskStatuses:T}:{},...E?{taskPriorities:E}:{},...N?{taskDueAfter:N}:{},...X?{taskDueBefore:X}:{}}}function ET(_,T,E){if(_===void 0)return;let N=Array.isArray(_)?_:[_];if(N.length===0)return;let X=new Set;for(let L of N){if(typeof L!=="string"||!T.has(L))throw Error(`Invalid session ${E} filter`);X.add(L)}return[...X].sort()}function NT(_,T){if(_===void 0)return;if(typeof _!=="string"||!Number.isFinite(Date.parse(_)))throw Error(`Invalid session ${T} filter`);return new Date(_).toISOString()}function bE(_,T){if(_!==void 0&&T!==void 0&&_>T)throw Error("Session task due range is inverted")}function hE(_,T){if(_.lastMessageTime>T.lastMessageTime)return-1;if(_.lastMessageTime<T.lastMessageTime)return 1;if(_.projectPath<T.projectPath)return-1;if(_.projectPath>T.projectPath)return 1;if(_.sessionId<T.sessionId)return-1;if(_.sessionId>T.sessionId)return 1;return 0}function yE(_,T){if(_.lastMessageTime>T.lastMessageTime)return-1;if(_.lastMessageTime<T.lastMessageTime)return 1;if(_.workspaceIdentity<T.workspaceIdentity)return-1;if(_.workspaceIdentity>T.workspaceIdentity)return 1;if(_.sessionId<T.sessionId)return-1;if(_.sessionId>T.sessionId)return 1;return 0}function oN(_,T){let E=[..._],N=fE(T);if(N)E=E.filter((I)=>hE(I,{sessionId:N.sessionId,projectPath:N.projectPath,lastMessageTime:N.lastMessageTime})>0);let X=E.slice(0,T.limit);if(X.length===0||E.length<=X.length)return{sessions:X};let L=X[X.length-1];return{sessions:X,nextCursor:DE({version:1,kind:"local",cwd:T.cwd,includeSubagents:T.includeSubagents,archived:T.archived,lastMessageTime:L.lastMessageTime,projectPath:L.projectPath,sessionId:L.sessionId})}}function rN(_,T){let E=[..._],N=wE(T);if(N)E=E.filter((I)=>yE(I,{sessionId:N.sessionId,projectPath:I.projectPath,lastMessageTime:N.lastMessageTime,workspaceIdentity:N.workspaceIdentity})>0);let X=E.slice(0,T.limit);if(X.length===0||E.length<=X.length)return{sessions:X};let L=X[X.length-1];return{sessions:X,nextCursor:SE({version:1,kind:"remote",exactIdentity:T.exactIdentity,includeSubagents:T.includeSubagents,archived:T.archived,lastMessageTime:L.lastMessageTime,workspaceIdentity:L.workspaceIdentity,sessionId:L.sessionId})}}function PE(_){return _.type==="message_created"||_.type==="token_budget_handoff_recorded"||_.type==="part_created"||_.type==="part_updated"||_.type==="turn_started"||_.type==="turn_completed"||_.type==="turn_aborted"||_.type==="turn_recovery_acknowledged"||_.type==="interaction_requested"||_.type==="interaction_responded"||_.type==="interaction_recovered"||_.type==="review_started"||_.type==="review_completed"}function Q_(_){return _.type==="message_created"&&_.data.role==="user"&&(_.data.inboxMessageId!==void 0||_.data.parentMessageId===void 0)}function V_(_,T){let E=_.find((N)=>Q_(N)&&N.data.messageId===T);if(!E)throw Error(`Rewind checkpoint not found: ${T}`);return{messageId:T,preview:UT(_,T),createdAt:E.data.createdAt}}function UT(_,T){let E=_.flatMap((N)=>{if(N.type!=="part_created"||N.data.messageId!==T)return[];if(N.data.partType==="text"){let X=N.data.payload;return typeof X.text==="string"?[X.text]:[]}if(N.data.partType==="image")return["[Image]"];return[]}).join("").trim();if(E.length<=160)return E;return`${E.slice(0,160)}...`}function CT(_,T){V_(_,T);let E=_.findIndex((I)=>I.type==="message_created"&&I.data.messageId===T),N=_[E],X=N?.type==="message_created"?N.data.inboxMessageId:void 0,L=new Set(_.flatMap((I)=>I.type==="turn_started"&&X&&I.data.inputMessageIds?.includes(X)?[I.data.turnId]:[]));return _.filter((I,O)=>{if((I.type==="turn_started"||I.type==="turn_completed"||I.type==="turn_aborted"||I.type==="turn_recovery_acknowledged")&&L.has(I.data.turnId))return!1;return O<E||!PE(I)})}function l(_){let T=[];for(let E of _){if(E.type!=="session_rewound"){T.push(E);continue}if(V_(T,E.data.targetMessageId),E.data.mode!=="code")T=CT(T,E.data.targetMessageId)}return T}function _X(_){let T=l(_);return T.filter(Q_).map((E)=>({messageId:E.data.messageId,preview:UT(T,E.data.messageId),createdAt:E.data.createdAt})).reverse()}function TX(_,T){let E=l(_),N=V_(E,T),X=E.findIndex((I)=>I.type==="message_created"&&I.data.messageId===T),L=E.slice(X);return{checkpoint:N,projectedEntries:CT(E,T),removedTurns:L.filter(Q_).length,snapshotMessageIds:L.flatMap((I)=>I.type==="part_created"&&I.data.partType==="tool_call"?[I.data.partId]:[])}}import{createHash as tE}from"node:crypto";var NX={clientVisible:!1};function $T(_){if(_.metadata&&typeof _.metadata==="object"&&!Array.isArray(_.metadata)&&_.metadata.clientVisible===!1)return!1;return!(_.role==="user"&&typeof _.content==="string"&&_.content.startsWith("This turn made a non-trivial implementation. Before finishing, call Task ")&&_.content.endsWith("Only a fresh structured PASS verdict allows completion."))}import{StringDecoder as vE}from"node:string_decoder";var LX=1048576;function Z_(_,T){let E=T;while(E<_.length&&(_[E]&192)===128)E+=1;return E}class A_{maxBytes;chunks=[];retainedBytes=0;omittedBytes=0;totalBytes=0;constructor(_=1048576){this.maxBytes=_;if(!Number.isSafeInteger(_)||_<=0)throw Error("maxBytes must be a positive safe integer")}append(_){let T=Buffer.isBuffer(_)?_:Buffer.from(_);if(T.length===0)return;if(this.totalBytes+=T.length,T.length>this.maxBytes){this.retainOversizedChunkTail(T);return}this.chunks.push(T),this.retainedBytes+=T.length,this.trimToLimit(),this.compactChunks()}peek(){return{content:Buffer.concat(this.chunks,this.retainedBytes).toString("utf8"),retainedBytes:this.retainedBytes,omittedBytes:this.omittedBytes,totalBytes:this.totalBytes}}consume(){let _=this.peek();return this.chunks.length=0,this.retainedBytes=0,this.omittedBytes=0,_}retainedChunkCountForTests(){return this.chunks.length}retainOversizedChunkTail(_){this.omittedBytes+=this.retainedBytes,this.chunks.length=0,this.retainedBytes=0;let T=Z_(_,_.length-this.maxBytes);if(this.omittedBytes+=T,T===_.length)return;let E=Buffer.from(_.subarray(T));this.chunks.push(E),this.retainedBytes=E.length}trimToLimit(){let _=!1;while(this.retainedBytes>this.maxBytes){let T=this.chunks[0];if(!T)return;let E=this.retainedBytes-this.maxBytes;if(T.length<=E){this.chunks.shift(),this.retainedBytes-=T.length,this.omittedBytes+=T.length,_=!0;continue}let N=Z_(T,E);this.chunks[0]=T.subarray(N),this.retainedBytes-=N,this.omittedBytes+=N,_=!0}if(_)this.realignRetainedStart()}realignRetainedStart(){while(this.chunks.length>0){let _=this.chunks[0];if(_.length===0){this.chunks.shift();continue}let T=Z_(_,0);if(T===0)return;if(this.retainedBytes-=T,this.omittedBytes+=T,T===_.length)this.chunks.shift();else{this.chunks[0]=_.subarray(T);return}}}compactChunks(){if(this.chunks.length<=32)return;let _=Buffer.concat(this.chunks,this.retainedBytes);if(this.chunks.length=0,_.length>0)this.chunks.push(_)}}var X_={maxLines:30,maxChars:3000,keepHead:10,keepTail:10,summarize:!0},P={maxLines:100,maxChars:1e4,keepHead:40,keepTail:40,summarize:!0},GT={maxLines:200,maxChars:20000,keepHead:80,keepTail:80,summarize:!1},mE={maxLines:150,maxChars:15000,keepHead:50,keepTail:50,summarize:!0},uE=[{pattern:/^git\s+(rm|add)\s+(-r|--cached|-rf|-f)?\s*/i,config:X_,summaryTemplate:(_)=>`Successfully processed ${_} files`},{pattern:/^(npm|pnpm|yarn|bun)\s+(install|i|add|remove|uninstall)/i,config:X_,summaryTemplate:(_)=>`Package operation completed (${_} lines of output)`},{pattern:/^(npm|pnpm|yarn|bun)\s+(run|exec)\s+(build|compile|bundle)/i,config:P,summaryTemplate:(_)=>`Build completed (${_} lines of output)`},{pattern:/^(npm|pnpm|yarn|bun)\s+(run|exec)\s+(test|lint|check)/i,config:GT},{pattern:/^git\s+(status|branch|remote)/i,config:P},{pattern:/^git\s+(log|diff|show)/i,config:GT},{pattern:/^(ls|dir|tree)\s+/i,config:P,summaryTemplate:(_)=>`Listed ${_} items`},{pattern:/^find\s+/i,config:P,summaryTemplate:(_)=>`Found ${_} matches`},{pattern:/^(grep|rg|ag)\s+/i,config:P,summaryTemplate:(_)=>`Found ${_} matching lines`},{pattern:/^(docker|podman)\s+(build|pull|push)/i,config:X_,summaryTemplate:(_)=>`Docker operation completed (${_} lines)`},{pattern:/^(pip|pip3|poetry|pipenv)\s+(install|uninstall)/i,config:X_,summaryTemplate:(_)=>`Python package operation completed (${_} lines)`},{pattern:/^(cargo|rustup)\s+(build|install|update)/i,config:P,summaryTemplate:(_)=>`Rust operation completed (${_} lines)`},{pattern:/^(go)\s+(build|get|mod)/i,config:P,summaryTemplate:(_)=>`Go operation completed (${_} lines)`}];function gT(_,T,E){let N=T,X=E??_.length;if(N>0){let L=_.charCodeAt(N);if(L>=56320&&L<=57343)N+=1}if(X<_.length){let L=_.charCodeAt(X-1);if(L>=55296&&L<=56319)X-=1}return _.slice(N,X)}class H_{static getConfigForCommand(_){for(let{pattern:T,config:E,summaryTemplate:N}of uE)if(T.test(_))return{config:E,summaryTemplate:N};return{config:mE}}static truncate(_,T){let{config:E,summaryTemplate:N}=this.getConfigForCommand(T);return this.truncateWithConfig(_,E,N)}static truncateWithConfig(_,T,E){let N=_.length,X=_.split(`
3
3
  `),L=X.length;if(L<=T.maxLines&&N<=T.maxChars)return{content:_,truncated:!1,originalLines:L,originalChars:N};let I=X.slice(0,T.keepHead),O=X.slice(-T.keepTail),U=L-T.keepHead-T.keepTail,C=I.join(`
4
4
  `);if(C+=`
@@ -1,3 +1,3 @@
1
- import{fk as K}from"./chunk-a95jmx2j.js";import{appendFileSync as Y,existsSync as Z,mkdirSync as _,readdirSync as f,statSync as M,unlinkSync as p}from"node:fs";import x from"node:path";var E;((T)=>{T[T.DEBUG=0]="DEBUG";T[T.INFO=1]="INFO";T[T.WARN=2]="WARN";T[T.ERROR=3]="ERROR"})(E||={});var t=null,G=null,H=!1;function I(n){if(t!==n)t=n}async function S(){}function z(){if(H)return G;H=!0;try{let n=x.join(K(),"logs");if(!Z(n))_(n,{recursive:!0,mode:493});if(M(n).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 B(n,30),G=n,n}catch(n){return console.error("[Logger] 无法创建日志目录:",n),null}}function B(n,u){try{let c=f(n),w=Date.now(),T=u*24*60*60*1000;for(let $ of c){if(!$.startsWith("blade-")||!$.endsWith(".log")&&!$.endsWith(".jsonl"))continue;let m=x.join(n,$);try{let q=M(m);if(w-q.mtimeMs>T)p(m)}catch(q){}}}catch(c){}}function J(){let n=z();if(!n)return null;let u=t||"default";return x.join(n,`blade-${u}.jsonl`)}function U(n,u,c){let w=J();if(!w)return;try{let T={timestamp:new Date().toISOString(),level:E[u],category:n,message:c};Y(w,JSON.stringify(T)+`
1
+ import{dk as K}from"./chunk-ed2hdrwe.js";import{appendFileSync as Y,existsSync as Z,mkdirSync as _,readdirSync as f,statSync as M,unlinkSync as p}from"node:fs";import x from"node:path";var E;((T)=>{T[T.DEBUG=0]="DEBUG";T[T.INFO=1]="INFO";T[T.WARN=2]="WARN";T[T.ERROR=3]="ERROR"})(E||={});var t=null,G=null,H=!1;function I(n){if(t!==n)t=n}async function S(){}function z(){if(H)return G;H=!0;try{let n=x.join(K(),"logs");if(!Z(n))_(n,{recursive:!0,mode:493});if(M(n).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 B(n,30),G=n,n}catch(n){return console.error("[Logger] 无法创建日志目录:",n),null}}function B(n,u){try{let c=f(n),w=Date.now(),T=u*24*60*60*1000;for(let $ of c){if(!$.startsWith("blade-")||!$.endsWith(".log")&&!$.endsWith(".jsonl"))continue;let m=x.join(n,$);try{let q=M(m);if(w-q.mtimeMs>T)p(m)}catch(q){}}}catch(c){}}function J(){let n=z();if(!n)return null;let u=t||"default";return x.join(n,`blade-${u}.jsonl`)}function U(n,u,c){let w=J();if(!w)return;try{let T={timestamp:new Date().toISOString(),level:E[u],category:n,message:c};Y(w,JSON.stringify(T)+`
2
2
  `)}catch(T){}}class k{static globalDebugConfig=null;enabled;minLevel;category;constructor(n={}){if(n.enabled!==void 0)this.enabled=n.enabled;else if(k.globalDebugConfig!==null)this.enabled=Boolean(k.globalDebugConfig);else this.enabled=!1;this.minLevel=n.minLevel??0,this.category=n.category??"General"}static setGlobalDebug(n){k.globalDebugConfig=n}static clearGlobalDebug(){k.globalDebugConfig=null}parseDebugFilter(n){if(!n)return{enabled:!1};if(n===!0||n==="true"||n==="1")return{enabled:!0};let u=String(n).trim();if(!u)return{enabled:!0};if(u.startsWith("!"))return{enabled:!0,filter:{mode:"exclude",categories:u.split(",").map((T)=>T.trim().replace(/^!/,"")).filter(Boolean)}};return{enabled:!0,filter:{mode:"include",categories:u.split(",").map((w)=>w.trim()).filter(Boolean)}}}shouldLogCategory(n){if(!n)return!0;let u=this.category.toLowerCase();if(n.mode==="include")return n.categories.some((c)=>u.includes(c.toLowerCase()));return!n.categories.some((c)=>u.includes(c.toLowerCase()))}shouldLogToConsole(n){if(k.globalDebugConfig!==null){let{enabled:u,filter:c}=this.parseDebugFilter(k.globalDebugConfig);if(!u)return!1;if(n<this.minLevel)return!1;return this.shouldLogCategory(c)}return this.enabled&&n>=this.minLevel}log(n,...u){let c=u.map((w)=>typeof w==="object"?JSON.stringify(w):String(w)).join(" ");if(U(this.category,n,c),this.shouldLogToConsole(n)){let w=E[n],T=`[${this.category}] [${w}]`;console.error(T,...u)}}debug(...n){this.log(0,...n)}info(...n){this.log(1,...n)}warn(...n){this.log(2,...n)}error(...n){this.log(3,...n)}}function h(n,u){return new k({...u,category:n})}var d=new k({category:"General"});import F from"typebox/schema";import R from"typebox/value";class A extends Error{issues;constructor(n){super(n.map((u)=>{return`${u.path.length>0?u.path.join("."):"root"}: ${u.message}`}).join("; "));this.issues=n;this.name="SchemaValidationError"}}function O(n){if(!n)return[];return n.split("/").slice(1).map((u)=>u.replace(/~1/g,"/").replace(/~0/g,"~")).map((u)=>/^(0|[1-9]\d*)$/.test(u)?Number(u):u)}function P(n,u){let c=n;for(let w of u){if(c===null||typeof c!=="object")return;c=c[w]}return c}function Q(n,u){let[,c]=F.Errors(n,u);return c.map((w)=>{let T=O(w.instancePath);return{code:w.keyword,path:T,message:w.message,value:P(u,T)}})}function j(n,u){let c=R.Default(n,R.Clone(u)),w=Q(n,c);if(w.length>0)return{success:!1,error:new A(w)};let T=R.Clean(n,c),$=Q(n,T);if($.length>0)return{success:!1,error:new A($)};return{success:!0,data:T}}function W(n,u){let c=j(n,u);if(!c.success)throw c.error;return c.data}import X from"typebox";function i(n){return Object.defineProperties(n,{parse:{value:(u)=>W(n,u),enumerable:!1},safeParse:{value:(u)=>j(n,u),enumerable:!1}}),n}function a(n,u){return X.Optional({...n,default:u})}function L(n,u={}){return X.Unsafe({type:"string",enum:[...n],...u})}
3
3
  export{I as Bj,S as Cj,k as Dj,h as Ej,d as Fj,j as Gj,W as Hj,X as Ij,i as Jj,a as Kj,L as Lj};
@@ -0,0 +1 @@
1
+ import{Xj as a,Yj as b,Zj as c,_j as d}from"./chunk-cc9vbgqc.js";import"./chunk-gmpsfkgg.js";export{a as getVersion,b as getPackageName,c as getDescription,d as getCopyright};
@@ -1,4 +1,4 @@
1
- import"./chunk-v508x7cg.js";import{Ui as Q}from"./chunk-qy6p8bpr.js";import{Zi as L}from"./chunk-b22ab7yw.js";import"./chunk-amabfzc8.js";import"./chunk-m2x6pb4f.js";import"./chunk-4e4qtpca.js";import"./chunk-5s2x98rx.js";import"./chunk-0eajnhrj.js";import"./chunk-pbckwd41.js";import"./chunk-px45q235.js";import"./chunk-a95jmx2j.js";import{Lk as F}from"./chunk-sdapqhj0.js";var K=[22,19,0];function T(G){let A=/^v?(\d+)\.(\d+)\.(\d+)/.exec(G);if(!A)return!1;let H=A.slice(1).map(Number);for(let z=0;z<K.length;z++){let B=H[z]??0,J=K[z];if(B!==J)return B>J}return!0}var X={command:"doctor",describe:"Check the health of your Blade installation",builder:(G)=>G.option("rebuild-index",{type:"boolean",default:!1,describe:"Rebuild the SQLite session index from JSONL transcripts"}),handler:async(G)=>{if(G.rebuildIndex){console.log(`Rebuilding session index from JSONL transcripts...
2
- `);try{let{rebuildProjectionIndex:z}=await import("./chunk-p36k2e96.js"),{SessionService:B}=await import("./chunk-mmpcq1yh.js"),J=await z(B.projectionDeriverForSearch());if(J===null)console.log("[WARN] Session index unavailable (SQLite driver missing); reads fall back to JSONL scan.");else console.log(`[OK] Session index rebuilt: ${J} session(s) indexed.`)}catch(z){console.log("[FAIL] Session index rebuild failed"),console.log(` Error: ${z instanceof Error?z.message:"未知错误"}`),process.exit(1)}return}console.log(`Running Blade health check...
1
+ import"./chunk-v508x7cg.js";import{Ui as Q}from"./chunk-6wzwkjep.js";import{Zi as L}from"./chunk-b22ab7yw.js";import"./chunk-amabfzc8.js";import"./chunk-m2x6pb4f.js";import"./chunk-saz6mwpq.js";import"./chunk-xhwdac1j.js";import"./chunk-0eajnhrj.js";import"./chunk-cc9vbgqc.js";import"./chunk-asgmmaec.js";import"./chunk-ed2hdrwe.js";import{Jk as F}from"./chunk-gmpsfkgg.js";var K=[22,19,0];function T(G){let A=/^v?(\d+)\.(\d+)\.(\d+)/.exec(G);if(!A)return!1;let H=A.slice(1).map(Number);for(let z=0;z<K.length;z++){let B=H[z]??0,J=K[z];if(B!==J)return B>J}return!0}var X={command:"doctor",describe:"Check the health of your Blade installation",builder:(G)=>G.option("rebuild-index",{type:"boolean",default:!1,describe:"Rebuild the SQLite session index from JSONL transcripts"}),handler:async(G)=>{if(G.rebuildIndex){console.log(`Rebuilding session index from JSONL transcripts...
2
+ `);try{let{rebuildProjectionIndex:z}=await import("./chunk-hb680ebj.js"),{SessionService:B}=await import("./chunk-j08fc7cy.js"),J=await z(B.projectionDeriverForSearch());if(J===null)console.log("[WARN] Session index unavailable (SQLite driver missing); reads fall back to JSONL scan.");else console.log(`[OK] Session index rebuilt: ${J} session(s) indexed.`)}catch(z){console.log("[FAIL] Session index rebuild failed"),console.log(` Error: ${z instanceof Error?z.message:"未知错误"}`),process.exit(1)}return}console.log(`Running Blade health check...
3
3
  `);let A=0;try{await Q.getInstance().initialize(),console.log("[OK] Configuration: OK")}catch(z){console.log("[FAIL] Configuration: FAILED"),console.log(` Error: ${z instanceof Error?z.message:"未知错误"}`),A++}let H=process.version;if(T(H))console.log(`[OK] Node.js version: ${H}`);else console.log(`[WARN] Node.js version: ${H} (required: >=22.19.0)`),A++;try{let z=await import("fs/promises"),B=L();await z.access(B,(await import("fs")).constants.R_OK|(await import("fs")).constants.W_OK),console.log("[OK] File system permissions: OK")}catch(z){console.log("[FAIL] File system permissions: FAILED"),console.log(" Error: Cannot read/write in current directory"),A++}try{await import("ink"),console.log("[OK] Dependencies: OK")}catch(z){console.log("[FAIL] Dependencies: FAILED"),console.log(" Error: Missing required dependencies"),A++}if(console.log(`
4
4
  Health Check Summary:`),A===0)console.log("All checks passed! Blade is ready to use.");else console.log(`Warning: Found ${A} issue(s). Please resolve them for optimal performance.`),process.exit(1)}};export{T as isSupportedNodeVersion,X as doctorCommands};
@@ -1,4 +1,4 @@
1
- import{Ae as O1,Be as n2,Ce as d2,De as J1,Ee as Q1,Fe as i2,Ge as Y1,He as V0,Ie as Z1,Je as G1,Le as r2,Se as o2,Te as Q0,_e as I_,af as V1,cf as a2,df as t2,ef as L1,ff as s2,ue as l2,ve as e,we as p2,xe as W1,ye as c2,ze as v}from"./chunk-wan9q99y.js";import{xg as h_}from"./chunk-pm163dfm.js";import{sh as l_}from"./chunk-1cy4ab77.js";import{Zi as f1}from"./chunk-b22ab7yw.js";import{Aj as E_,wj as u2,xj as h2,yj as F_,zj as r_}from"./chunk-m2x6pb4f.js";import{Ej as $0}from"./chunk-4e4qtpca.js";import{Rj as P_,Uj as u_}from"./chunk-0eajnhrj.js";import{Yj as __}from"./chunk-pbckwd41.js";import{Ak as g_,Bk as T,Ck as P,Dk as m,Ek as E1,Fk as F1,Gk as N_,Hk as z1,Ik as k1,Jk as L_,fk as l,pk as r,qk as p,rk as m2,sk as c,tk as n,uk as v2,vk as Z0,wk as $1,xk as P2,yk as H_,zk as G0}from"./chunk-a95jmx2j.js";import{readdir as D_,readFile as Z_,rm as R_,stat as L0}from"node:fs/promises";import*as N from"node:path";import{nanoid as i}from"nanoid";import{createHash as G4,randomUUID as V4}from"node:crypto";import*as $_ from"node:fs/promises";import*as n_ from"node:path";import L4 from"proper-lockfile";function nX(_){return Object.freeze({kind:"local",root:_})}function dX(_,X){let $=r(X);if(p($.collisionIdentity)!==_)throw Error("ACP remote workspace durable state is invalid");return Object.freeze({kind:"acp-remote",root:_,descriptor:$})}function iX(_,X){return _.kind==="acp-remote"?`${_.kind}\x00${_.root}\x00${_.descriptor.exactIdentity}\x00${X}`:`${_.kind}\x00${_.root}\x00${X}`}async function G_(_,X){if(_.kind==="local")return X(H_(_.root));return c(_.root,($)=>X(String($),$))}async function rX(_,X,$){return G_(_,(W,J)=>$(J?{storageRoot:W,transcriptPath:m(J,X),inboxPath:F1(J,X),goalPath:z1(J,X),remoteScope:J}:{storageRoot:W,transcriptPath:P(_.root,X),inboxPath:E1(_.root,X),goalPath:N_(_.root,X)}))}import{execFileSync as W4}from"node:child_process";import{createHash as O4}from"node:crypto";import{readFileSync as J4}from"node:fs";var Q4=/^[a-f0-9]{64}$/;function D1(_){if(!_||typeof _!=="object")return!1;let X=_;return(X.platform==="linux"||X.platform==="darwin"||X.platform==="win32")&&typeof X.fingerprint==="string"&&Q4.test(X.fingerprint)}var R1={readFile:(_)=>J4(_,"utf8"),execFile:(_,X)=>W4(_,X,{encoding:"utf8",timeout:_==="powershell.exe"?3000:2000,windowsHide:!0})},Y4=(_)=>{try{return process.kill(_,0),!0}catch(X){return X instanceof Error&&"code"in X&&X.code==="EPERM"}};function F0(_,X){return{platform:_,fingerprint:O4("sha256").update(`${_}\x00${X}`).digest("hex")}}function Z4(_,X){let $=X.readFile(`/proc/${_}/stat`).trim(),W=$.lastIndexOf(")");if(W<0)throw Error("Invalid /proc process stat");let O=$.slice(W+2).split(/\s+/)[19];if(!O||!/^\d+$/.test(O))throw Error("Missing process start ticks");return O}function b_(_,X=process.platform,$=R1){if(!Number.isInteger(_)||_<=1)return;try{if(X==="linux")return F0(X,Z4(_,$));if(X==="darwin"){let W=$.execFile("ps",["-o","lstart=","-p",String(_)]).trim();return W?F0(X,W):void 0}if(X==="win32"){let W=`(Get-CimInstance Win32_Process -Filter "ProcessId = ${_}").CreationDate.ToUniversalTime().ToString('O')`,J=$.execFile("powershell.exe",["-NoProfile","-NonInteractive","-Command",W]).trim();return J?F0(X,J):void 0}}catch{return}return}function eX(_,X){return b_(_,X.platform)?.fingerprint===X.fingerprint}function _$(_,X,$=R1,W=Y4){if(!Number.isInteger(_)||_<=1)return!1;let J=b_(_,X.platform,$);if(J)return J.fingerprint===X.fingerprint;return!W(_)}var j1=1;function B4(_,X){let $=G4("sha256").update(X).digest("hex");return n_.join(H_(_),".locks",`${$}.lock`)}function A_(_,X){return _ instanceof Error&&"code"in _&&_.code===X}async function z0(_){try{let X=JSON.parse(await $_.readFile(_,"utf8"));if(X.version!==j1||typeof X.sessionId!=="string"||typeof X.ownerId!=="string"||!Number.isInteger(X.pid)||(X.pid??0)<=0||X.processIdentity!==void 0&&!D1(X.processIdentity)||typeof X.acquiredAt!=="string")return;return X}catch(X){if(A_(X,"ENOENT")||X instanceof SyntaxError)return;throw X}}async function w1(_){let X=await z0(_);if(X)return X;return await new Promise(($)=>setTimeout($,10)),z0(_)}function U4(_){try{return process.kill(_,0),!0}catch(X){return!A_(X,"ESRCH")}}async function x1(_,X){let $;try{return $=await $_.open(_,"wx",384),await $.writeFile(`${JSON.stringify(X)}
1
+ import{Ae as O1,Be as n2,Ce as d2,De as J1,Ee as Q1,Fe as i2,Ge as Y1,He as V0,Ie as Z1,Je as G1,Le as r2,Se as o2,Te as Q0,_e as I_,af as V1,cf as a2,df as t2,ef as L1,ff as s2,ue as l2,ve as e,we as p2,xe as W1,ye as c2,ze as v}from"./chunk-s14zayxp.js";import{xg as h_}from"./chunk-pm163dfm.js";import{sh as l_}from"./chunk-1cy4ab77.js";import{Zi as f1}from"./chunk-b22ab7yw.js";import{Aj as E_,wj as u2,xj as h2,yj as F_,zj as r_}from"./chunk-m2x6pb4f.js";import{Ej as $0}from"./chunk-saz6mwpq.js";import{Rj as P_,Uj as u_}from"./chunk-0eajnhrj.js";import{Xj as __}from"./chunk-cc9vbgqc.js";import{Ak as P,Bk as m,Ck as E1,Dk as F1,Ek as N_,Fk as z1,Gk as k1,Hk as L_,dk as l,nk as r,ok as p,pk as m2,qk as c,rk as n,sk as v2,tk as Z0,uk as $1,vk as P2,wk as H_,xk as G0,yk as g_,zk as T}from"./chunk-ed2hdrwe.js";import{readdir as D_,readFile as Z_,rm as R_,stat as L0}from"node:fs/promises";import*as N from"node:path";import{nanoid as i}from"nanoid";import{createHash as G4,randomUUID as V4}from"node:crypto";import*as $_ from"node:fs/promises";import*as n_ from"node:path";import L4 from"proper-lockfile";function nX(_){return Object.freeze({kind:"local",root:_})}function dX(_,X){let $=r(X);if(p($.collisionIdentity)!==_)throw Error("ACP remote workspace durable state is invalid");return Object.freeze({kind:"acp-remote",root:_,descriptor:$})}function iX(_,X){return _.kind==="acp-remote"?`${_.kind}\x00${_.root}\x00${_.descriptor.exactIdentity}\x00${X}`:`${_.kind}\x00${_.root}\x00${X}`}async function G_(_,X){if(_.kind==="local")return X(H_(_.root));return c(_.root,($)=>X(String($),$))}async function rX(_,X,$){return G_(_,(W,J)=>$(J?{storageRoot:W,transcriptPath:m(J,X),inboxPath:F1(J,X),goalPath:z1(J,X),remoteScope:J}:{storageRoot:W,transcriptPath:P(_.root,X),inboxPath:E1(_.root,X),goalPath:N_(_.root,X)}))}import{execFileSync as W4}from"node:child_process";import{createHash as O4}from"node:crypto";import{readFileSync as J4}from"node:fs";var Q4=/^[a-f0-9]{64}$/;function D1(_){if(!_||typeof _!=="object")return!1;let X=_;return(X.platform==="linux"||X.platform==="darwin"||X.platform==="win32")&&typeof X.fingerprint==="string"&&Q4.test(X.fingerprint)}var R1={readFile:(_)=>J4(_,"utf8"),execFile:(_,X)=>W4(_,X,{encoding:"utf8",timeout:_==="powershell.exe"?3000:2000,windowsHide:!0})},Y4=(_)=>{try{return process.kill(_,0),!0}catch(X){return X instanceof Error&&"code"in X&&X.code==="EPERM"}};function F0(_,X){return{platform:_,fingerprint:O4("sha256").update(`${_}\x00${X}`).digest("hex")}}function Z4(_,X){let $=X.readFile(`/proc/${_}/stat`).trim(),W=$.lastIndexOf(")");if(W<0)throw Error("Invalid /proc process stat");let O=$.slice(W+2).split(/\s+/)[19];if(!O||!/^\d+$/.test(O))throw Error("Missing process start ticks");return O}function b_(_,X=process.platform,$=R1){if(!Number.isInteger(_)||_<=1)return;try{if(X==="linux")return F0(X,Z4(_,$));if(X==="darwin"){let W=$.execFile("ps",["-o","lstart=","-p",String(_)]).trim();return W?F0(X,W):void 0}if(X==="win32"){let W=`(Get-CimInstance Win32_Process -Filter "ProcessId = ${_}").CreationDate.ToUniversalTime().ToString('O')`,J=$.execFile("powershell.exe",["-NoProfile","-NonInteractive","-Command",W]).trim();return J?F0(X,J):void 0}}catch{return}return}function eX(_,X){return b_(_,X.platform)?.fingerprint===X.fingerprint}function _$(_,X,$=R1,W=Y4){if(!Number.isInteger(_)||_<=1)return!1;let J=b_(_,X.platform,$);if(J)return J.fingerprint===X.fingerprint;return!W(_)}var j1=1;function B4(_,X){let $=G4("sha256").update(X).digest("hex");return n_.join(H_(_),".locks",`${$}.lock`)}function A_(_,X){return _ instanceof Error&&"code"in _&&_.code===X}async function z0(_){try{let X=JSON.parse(await $_.readFile(_,"utf8"));if(X.version!==j1||typeof X.sessionId!=="string"||typeof X.ownerId!=="string"||!Number.isInteger(X.pid)||(X.pid??0)<=0||X.processIdentity!==void 0&&!D1(X.processIdentity)||typeof X.acquiredAt!=="string")return;return X}catch(X){if(A_(X,"ENOENT")||X instanceof SyntaxError)return;throw X}}async function w1(_){let X=await z0(_);if(X)return X;return await new Promise(($)=>setTimeout($,10)),z0(_)}function U4(_){try{return process.kill(_,0),!0}catch(X){return!A_(X,"ESRCH")}}async function x1(_,X){let $;try{return $=await $_.open(_,"wx",384),await $.writeFile(`${JSON.stringify(X)}
2
2
  `,"utf8"),!0}catch(W){if(A_(W,"EEXIST"))return!1;if($)await $_.unlink(_).catch(()=>{return});throw W}finally{await $?.close().catch(()=>{return})}}class X_ extends Error{code="BLADE_SESSION_IN_USE";constructor(_){super(_?`Session is already active in another Blade process (PID ${_}). Stop that process or choose a different session.`:"Session is already active in another Blade process. Stop that process or choose a different session.");this.name="SessionInUseError"}}async function b1(_,X,$=!1){let W,J;try{J=await L4.lock(_,{realpath:!1,retries:$?{retries:50,minTimeout:10,maxTimeout:100,factor:1.2}:0,onCompromised:(Q)=>{W=Q}})}catch(Q){if(A_(Q,"ELOCKED"))throw new X_;throw Q}let O=()=>{if(W)throw W};try{O();let Q=await X(O);return O(),Q}finally{await J()}}class h{filePath;record;stateStorage;released=!1;constructor(_,X,$){this.filePath=_;this.record=X;this.stateStorage=$}static async acquireForStorage(_,X){if(X.kind==="local")return h.acquire(_,X.root);return G_(X,($,W)=>{if(!W||$!==X.root)throw Error("ACP remote session lease scope is invalid");return h.acquireRemote(_,W,X)})}static async acquire(_,X=f1()){return h.acquireAtPath(_,B4(X,_))}static async acquireRemote(_,X,$){let W=k1(X,_);try{await n(X,W)}catch(O){if(O.code!=="ENOENT")throw O}let J=await h.acquireAtPath(_,W);try{return await n(X,W),new h(W,J.record,$)}catch(O){throw await J.release(),O}}static async acquireAtPath(_,X){return await $_.mkdir(n_.dirname(X),{recursive:!0,mode:448}),b1(X,async($)=>{let W={version:j1,sessionId:_,ownerId:V4(),pid:process.pid,processIdentity:b_(process.pid),acquiredAt:new Date().toISOString()};if($(),await x1(X,W))return new h(X,W);let J=await w1(X);if(!J||J.sessionId!==_)throw new X_;if(U4(J.pid)){let O=J.processIdentity?b_(J.pid,J.processIdentity.platform):void 0;if(!O||O.fingerprint===J.processIdentity?.fingerprint)throw new X_(J.pid)}if($(),await $_.unlink(X).catch((O)=>{if(!A_(O,"ENOENT"))throw O}),$(),await x1(X,W))return new h(X,W);throw new X_((await w1(X))?.pid)})}async release(){if(this.released)return;let _=()=>b1(this.filePath,async(X)=>{if((await z0(this.filePath))?.ownerId!==this.record.ownerId)return;X(),await $_.unlink(this.filePath).catch((W)=>{if(!A_(W,"ENOENT"))throw W})},!0);if(this.stateStorage?.kind==="acp-remote")await G_(this.stateStorage,_);else await _();this.released=!0}}import{createHash as d_}from"node:crypto";import{constants as C_,promises as W_}from"node:fs";import Y_ from"node:path";import{Mutex as H4}from"async-mutex";var y1=128,S1=67108864,N4=24576,g1=65536,R0=1,h1=/^[a-f0-9]{64}$/,C4=/^[a-f0-9]{64}\.txt$/,l1=64,q4=new Set(["EBUSY","EAGAIN","EMFILE","ENFILE"]),o_=`
3
3
 
4
4
  ...[middle omitted; read the private prompt artifact for the complete request]...
@@ -1,2 +1,2 @@
1
- import{ih as F,ph as a}from"./chunk-kkzznz4w.js";import{wj as A,xj as o,zj as s}from"./chunk-m2x6pb4f.js";import{Ej as J1,Ij as $,Jj as Z,Kj as W,Lj as K}from"./chunk-4e4qtpca.js";import{fk as $1}from"./chunk-a95jmx2j.js";var w=[{min:0,max:59},{min:0,max:23},{min:1,max:31},{min:1,max:12},{min:0,max:7}],K1={Sun:0,Mon:1,Tue:2,Wed:3,Thu:4,Fri:5,Sat:6},u=new Map;function I(J,B,j){let Y=new Set;for(let H of J.split(",")){let[k,G]=H.split("/"),V=G?Number.parseInt(G,10):1;if(!Number.isInteger(V)||V<1)throw Error(`Invalid cron step in "${J}"`);let X=B,Q=j;if(k!=="*"&&k!=="")if(k.includes("-")){let[b,B1]=k.split("-");X=Number.parseInt(b,10),Q=Number.parseInt(B1,10)}else X=Number.parseInt(k,10),Q=X;if(!Number.isInteger(X)||!Number.isInteger(Q)||X<B||Q>j||X>Q)throw Error(`Invalid cron range "${k}" in field "${J}"`);for(let b=X;b<=Q;b+=V)Y.add(b)}return Y}function d(J){let B=J.trim().split(/\s+/);if(B.length!==5)throw Error(`Cron expression must have 5 fields (min hour dom mon dow), got ${B.length}`);let[j,Y,H,k,G]=B,V=I(G,w[4].min,w[4].max),X=new Set([...V].map((Q)=>Q===7?0:Q));return{minutes:I(j,w[0].min,w[0].max),hours:I(Y,w[1].min,w[1].max),daysOfMonth:I(H,w[2].min,w[2].max),months:I(k,w[3].min,w[3].max),daysOfWeek:X,domRestricted:H.trim()!=="*",dowRestricted:G.trim()!=="*"}}function Y1(J,B){if(!B)return{minute:J.getMinutes(),hour:J.getHours(),dayOfMonth:J.getDate(),month:J.getMonth()+1,dayOfWeek:J.getDay()};let j=u.get(B);if(!j)j=new Intl.DateTimeFormat("en-US",{timeZone:B,month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",weekday:"short",hourCycle:"h23"}),u.set(B,j);let Y=Object.fromEntries(j.formatToParts(J).filter((H)=>H.type!=="literal").map((H)=>[H.type,H.value]));return{minute:Number(Y.minute),hour:Number(Y.hour),dayOfMonth:Number(Y.day),month:Number(Y.month),dayOfWeek:K1[Y.weekday]??-1}}function j1(J,B,j){let Y=Y1(B,j);if(!J.minutes.has(Y.minute))return!1;if(!J.hours.has(Y.hour))return!1;if(!J.months.has(Y.month))return!1;let H=J.daysOfMonth.has(Y.dayOfMonth),k=J.daysOfWeek.has(Y.dayOfWeek);if(J.domRestricted&&J.dowRestricted)return H||k;if(J.domRestricted)return H;if(J.dowRestricted)return k;return!0}function H1(J,B,j){let Y=d(J),H=new Date(B.getTime());H.setSeconds(0,0),H.setMinutes(H.getMinutes()+1);let k=new Date(B.getTime());k.setFullYear(k.getFullYear()+4);while(H.getTime()<=k.getTime()){if(j1(Y,H,j))return new Date(H.getTime());H.setMinutes(H.getMinutes()+1)}return null}var m={s:1000,m:60000,h:3600000,d:86400000};function e1(J){let j=J.trim().toLowerCase().match(/^(\d+)\s*([smhd]?)$/);if(!j)return null;let Y=Number.parseInt(j[1],10);if(!Number.isInteger(Y)||Y<=0)return null;let H=j[2]||"m";return Y*m[H]}function k1(J){for(let B of["d","h","m","s"]){let j=m[B];if(J%j===0)return`${J/j}${B}`}return`${Math.round(J/1000)}s`}function C(J,B,j){switch(J.kind){case"cron":{if(!J.cron)return null;try{return H1(J.cron,B,J.timezone)}catch{return null}}case"interval":{if(!J.intervalMs||J.intervalMs<=0)return null;let H=new Date((j??B).getTime()+J.intervalMs);return H.getTime()<=B.getTime()?new Date(B.getTime()+1000):H}case"once":{if(!J.runAt)return null;let Y=new Date(J.runAt);if(Number.isNaN(Y.getTime()))return null;return Y.getTime()>B.getTime()?Y:null}default:return null}}function L(J){switch(J.kind){case"cron":if(!J.cron)return"cron trigger requires a cron expression";try{if(d(J.cron),J.timezone)new Intl.DateTimeFormat("en-US",{timeZone:J.timezone}).format();return null}catch(B){return B instanceof Error?B.message:"invalid cron expression"}case"interval":if(!J.intervalMs||J.intervalMs<60000)return"interval trigger requires intervalMs >= 60000 (1 minute)";return null;case"once":{if(!J.runAt)return"once trigger requires runAt timestamp";let B=new Date(J.runAt);if(Number.isNaN(B.getTime()))return"once trigger runAt is not a valid date";return null}default:return"unknown trigger kind"}}function $0(J){switch(J.kind){case"cron":return`cron: ${J.cron??"?"}`;case"interval":return`every ${J.intervalMs?k1(J.intervalMs):"?"}`;case"once":return`once at ${J.runAt??"?"}`;default:return"unknown"}}import{mkdir as a1,readFile as t1}from"node:fs/promises";import Z1 from"node:path";import{nanoid as r1}from"nanoid";import y1 from"write-file-atomic";var q=160,Q1=240,h=$.String({pattern:"^[a-f0-9]{64}$"}),X1=Z($.Object({id:$.String({minLength:1,maxLength:128}),position:$.Integer({minimum:0,maximum:q-1}),queuedAt:$.String({minLength:20,maxLength:32}),kind:K(["user","internal"]),state:K(["pending","locked"]),delivery:K(["current_turn","next_turn","recovery"]),mutable:$.Boolean(),preview:$.Optional($.String({maxLength:Q1})),previewTruncated:$.Boolean(),attachmentCount:$.Integer({minimum:0,maximum:20})},{additionalProperties:!1})),g=Z($.Object({version:h,pending:$.Integer({minimum:0,maximum:q}),mutable:$.Integer({minimum:0,maximum:q}),locked:$.Integer({minimum:0,maximum:q}),internal:$.Integer({minimum:0,maximum:q}),items:$.Array(X1,{maxItems:q})},{additionalProperties:!1})),W1=$.Union([$.Object({type:$.Literal("remove"),messageId:$.String({minLength:1,maxLength:128})},{additionalProperties:!1}),$.Object({type:$.Literal("move"),messageId:$.String({minLength:1,maxLength:128}),toPosition:$.Integer({minimum:0,maximum:q-1})},{additionalProperties:!1})]),B0=Z($.Object({expectedVersion:h,operation:W1},{additionalProperties:!1})),K0=Z($.Object({snapshot:g},{additionalProperties:!1})),b1=K(["revision_conflict","already_claimed","immutable_origin","immutable_boundary","not_found","runtime_unavailable","invalid_mutation","storage_unavailable"]),Y0=Z($.Object({error:$.Object({code:b1,message:$.String({minLength:1,maxLength:256})},{additionalProperties:!1}),snapshot:g},{additionalProperties:!1}));var G1=K(["preferences","conventions","lessons","debugging"]),V1=$.Object({outcome:K(["nothing_to_store","disabled","failed"]),entries:$.Literal(0),topics:$.Tuple([])},{additionalProperties:!1}),w1=$.Object({outcome:$.Literal("written"),entries:$.Integer({minimum:1,maximum:20}),topics:$.Array(G1,{minItems:1,maxItems:4,uniqueItems:!0})},{additionalProperties:!1}),k0=Z($.Union([w1,V1]));var c=128,D1=128,z1=8,q1=1e6,v1=8640000000000000,D=$.Integer({minimum:0,maximum:q1}),M=$.Integer({minimum:0,maximum:v1}),x1=$.String({minLength:1,maxLength:c,pattern:"^[^\x00-\x1F]+$"}),P1=K(["starting","thinking","responding","executing_tools","compacting","continuing"]),f1=$.Refine($.Object({name:x1,kind:$.Optional(K(["readonly","write","execute"])),startedAt:M,progress:$.Optional(D),total:$.Optional(D)},{additionalProperties:!1}),(J)=>J.progress===void 0&&J.total===void 0||J.progress!==void 0&&J.total!==void 0&&J.progress<=J.total,()=>"progress and total must be present together with progress <= total"),O1=$.Refine($.Object({phase:P1,startedAt:M,updatedAt:M,turn:D,maxTurns:$.Union([D,$.Null()]),outputStarted:$.Boolean(),toolCallsStarted:D,toolCallsCompleted:D,activeTools:$.Array(f1,{maxItems:z1}),activeToolOverflow:D},{additionalProperties:!1}),(J)=>J.startedAt<=J.updatedAt&&J.toolCallsCompleted<=J.toolCallsStarted&&J.activeTools.length+J.activeToolOverflow<=J.toolCallsStarted-J.toolCallsCompleted,()=>"turn activity snapshot counters and timestamps are inconsistent"),W0=Z($.Object({version:$.Literal(1),generation:$.String({minLength:1,maxLength:D1,pattern:"^[^\x00-\x1F]+$"}),revision:D,snapshot:$.Union([O1,$.Null()])},{additionalProperties:!1}));function b0(J){let B=[...J].filter((j)=>{let Y=j.codePointAt(0)??0;return Y>31&&Y!==127}).join("").trim().slice(0,c);if(!B)throw Error("Turn activity tool name is empty");return B}var n=16384;function V0(J){let B=/^\s*\/btw(?:\s+([\s\S]*))?\s*$/iu.exec(J);if(!B)return;return{question:(B[1]??"").trim()}}var v=Z(K(["default","autoEdit","yolo","plan"]));var R=Z(K(["user","assistant","system","tool"])),I1=Z($.Union([$.Object({type:$.Literal("text"),text:$.String()}),$.Object({type:$.Literal("image_url"),image_url:$.Object({url:$.String()})})])),t=$.Union([$.String(),$.Array(I1)]),P0=Z($.Object({id:$.String(),role:R,content:t,timestamp:$.Number(),metadata:$.Optional($.Record($.String(),$.Unknown())),thinkingContent:$.Optional($.String()),tool_call_id:$.Optional($.String()),name:$.Optional($.String()),tool_calls:$.Optional($.Unknown())})),N1=Z(K(["queued","running","completed","failed","cancelled","interrupted"])),N=Z(K(["local","worktree"])),E=Z(K(["high","medium","low"])),_=Z(K(["feature","bug","maintenance","research"])),U1=Z(K(["applied","discarded","conflicted"])),F1=Z($.Object({status:U1,updatedAt:$.String(),sourceCommit:$.Optional($.String()),changedFiles:$.Optional($.Integer({minimum:0})),message:$.Optional($.String())})),C1=Z($.Object({changedFiles:$.Integer({minimum:0}),additions:$.Integer({minimum:0}),deletions:$.Integer({minimum:0}),commits:$.Integer({minimum:0})})),L1=Z($.Object({path:$.String({minLength:1}),patch:$.String({maxLength:2097152}),additions:$.Integer({minimum:0}),deletions:$.Integer({minimum:0}),binary:$.Boolean(),truncated:$.Boolean()})),f0=Z($.Object({sessionId:$.String(),projectPath:$.String(),baseCommit:$.String(),files:$.Array(L1,{maxItems:100}),truncated:$.Boolean()})),M1=$.Union([$.String(),$.Number(),$.Boolean(),$.Array($.String())]),A1=Z($.Object({name:$.String(),type:K(["string","number","integer","boolean","select","multi-select"]),title:$.String(),description:$.Optional($.String()),required:$.Boolean(),defaultValue:$.Optional(M1),options:$.Optional($.Array($.Object({value:$.String(),label:$.String()}))),format:$.Optional(K(["date","uri","email","date-time"])),minimum:$.Optional($.Number()),maximum:$.Optional($.Number()),minLength:$.Optional($.Number()),maxLength:$.Optional($.Number()),minItems:$.Optional($.Number()),maxItems:$.Optional($.Number())})),O0=Z($.Object({serverName:$.String(),mode:K(["form","url"]),message:$.String(),fields:$.Optional($.Array(A1)),requestedSchema:$.Optional($.Record($.String(),$.Unknown())),url:$.Optional($.String()),domain:$.Optional($.String()),elicitationId:$.Optional($.String())})),R1=Z($.Object({type:K(["permission","question","elicitation"]),requestId:$.String()})),E1=Z($.Object({code:K(["authentication","permission","rate_limit","timeout","network","model_unavailable","context_limit","unsupported_input","workspace_unavailable","capacity","runtime"]),message:$.String({minLength:1,maxLength:500}),retryable:$.Boolean(),resource:$.Optional(K(["pending_count","pending_bytes","resident_runtimes"]))})),x=Z(K(["auto","off","minimal","low","medium","high","xhigh","max"])),P=Z(K(["auto","standard","fast","flex"])),f=Z(K(["auto","low","medium","high"])),z=Z($.Union([K(["auto","pragmatic","friendly","explanatory"]),$.String({minLength:7,maxLength:300,pattern:"^(?:(?:user|project):[a-z0-9][a-z0-9._-]{0,63}(?::[a-z0-9][a-z0-9._-]{0,63}){0,3}|plugin:[a-z0-9][a-z0-9._-]{0,63}:[a-z0-9][a-z0-9._-]{0,63}(?::[a-z0-9][a-z0-9._-]{0,63}){0,3})$"})])),U=Z($.Object({sessionId:$.String(),projectPath:$.String(),title:$.Optional($.String()),gitBranch:$.Optional($.String()),rootId:$.String(),parentId:$.Optional($.String()),relationType:$.Optional(K(["subagent","fork"])),resumedFrom:$.Optional($.String()),rootAgentId:$.Optional($.String()),resumeDepth:$.Optional($.Integer({minimum:0})),taskStatus:W(N1,"completed"),taskStatusReason:$.Optional($.String()),taskFailure:$.Optional(E1),taskStartedAt:$.Optional($.String()),taskCompletedAt:$.Optional($.String()),taskPromptSummary:$.Optional($.String()),taskPriority:$.Optional(E),taskKind:$.Optional(_),taskDueAt:$.Optional($.String()),taskModelId:$.Optional($.String()),selectedModelId:$.Optional($.String()),permissionMode:$.Optional(v),reasoningEffort:$.Optional(x),serviceTier:$.Optional(P),responseVerbosity:$.Optional(f),communicationStyle:$.Optional(z),communicationStyleDigest:$.Optional($.String({pattern:"^[a-f0-9]{64}$"})),projectInstructionsDigest:$.Optional($.String({pattern:"^[a-f0-9]{64}$"})),taskRetryAvailable:$.Optional($.Boolean()),taskRetriedFrom:$.Optional($.Object({sessionId:$.String(),projectPath:$.String()})),taskDelivery:$.Optional(F1),taskIsolation:$.Optional(N),taskSourceProjectPath:$.Optional($.String()),taskWorktreePath:$.Optional($.String()),taskWorktreeBranch:$.Optional($.String()),taskBaseCommit:$.Optional($.String()),taskDiffStat:$.Optional(C1),taskQueuePosition:$.Optional($.Integer({minimum:1})),taskQueueDepth:$.Optional($.Integer({minimum:0})),taskConcurrencyLimit:$.Optional($.Integer({minimum:1})),archivedAt:$.Optional($.String()),archivedBySessionId:$.Optional($.String()),pendingInteraction:$.Optional(R1),messageCount:$.Number(),firstMessageTime:$.String(),lastMessageTime:$.String(),hasErrors:$.Boolean()})),I0=Z($.Object({sessions:$.Array(U),nextCursor:$.Optional($.String())})),N0=Z($.Object({session:U,archivedSessionIds:$.Array($.String())})),U0=Z($.Object({session:U,restoredSessionIds:$.Array($.String())})),_1=$.Object({rootTurnId:$.Optional($.String({minLength:1,maxLength:F})),currentTurnId:$.String({minLength:1,maxLength:F}),parentTurnId:$.Optional($.String({minLength:1,maxLength:F}))},{additionalProperties:!1}),F0=Z($.Object({version:$.Union([$.Literal(1),$.Literal(2)]),sessionId:$.String(),goalId:$.String(),objective:$.String(),status:K(["active","verifying","paused","blocked","usage_limited","budget_limited","complete"]),tokenBudget:$.Optional($.Number()),tokensUsed:$.Number(),timeUsedSeconds:$.Number(),continuationCount:$.Number(),statusReason:$.Optional($.String()),completionVerification:$.Optional($.Object({attempt:$.Integer({minimum:1}),status:K(["pending","pass","fail","partial"]),requestedAt:$.String(),completedAt:$.Optional($.String()),verifierSessionId:$.Optional($.String()),summary:$.Optional($.String()),evidenceSha256:$.Optional($.String({pattern:"^[a-f0-9]{64}$"}))})),prematureStop:$.Optional($.Object({pattern:$.Unsafe({type:"string"}),consecutiveCount:$.Integer({minimum:1}),detectedAt:$.String()})),executionHostFailure:$.Optional($.Object({category:K(a),consecutiveCount:$.Integer({minimum:1,maximum:3}),detectedAt:$.String()},{additionalProperties:!1})),turnLineage:$.Optional(_1),verificationStall:$.Optional($.Unsafe({type:"object"})),executionFrontier:$.Optional($.Object({taskListId:$.String({minLength:1,maxLength:256}),total:$.Integer({minimum:0}),completed:$.Integer({minimum:0}),inProgress:$.Integer({minimum:0}),pending:$.Integer({minimum:0}),blocked:$.Integer({minimum:0}),nextTask:$.Optional($.Object({id:$.String({minLength:1}),subject:$.String({minLength:1,maxLength:512}),priority:K(["high","medium","low"])})),digestSha256:$.String({pattern:"^[a-f0-9]{64}$"}),observedAt:$.String()})),frontierStall:$.Optional($.Object({category:K(["waiting_dependency","same_task_no_effect","repeated_deferral"]),consecutiveCount:$.Integer({minimum:1,maximum:3}),digestSha256:$.String({pattern:"^[a-f0-9]{64}$"}),detectedAt:$.String()})),createdAt:$.String(),updatedAt:$.String()})),r=Z($.Object({id:$.Optional($.String({minLength:1})),timestamp:$.Optional($.Number({minimum:0})),role:R,content:t,metadata:$.Optional($.Unknown()),reasoningContent:$.Optional($.String()),thinkingContent:$.Optional($.String()),tool_call_id:$.Optional($.String()),name:$.Optional($.String()),tool_calls:$.Optional($.Unknown())})),C0=Z($.Object({session:U,messages:$.Array(r)})),y=Z(K(["conversation","code","both"])),S1=Z($.Object({messageId:$.String(),preview:$.String(),createdAt:$.String(),fileCount:$.Integer({minimum:0})})),L0=Z($.Object({targetMessageId:$.String({minLength:1}),mode:W(y,"conversation")})),M0=Z($.Object({checkpoint:S1,mode:y,removedTurns:$.Integer({minimum:1}),restoredFiles:$.Array($.String()),messages:$.Array(r)})),l1=K(["running","completed","failed","cancelled"]),i=Z($.Object({id:$.String(),subagentType:$.String(),description:$.String(),status:l1,background:$.Boolean(),rootAgentId:$.String(),resumedFrom:$.Optional($.String()),resumeDepth:$.Integer({minimum:0}),createdAt:$.Number(),lastActiveAt:$.Number(),completedAt:$.Optional($.Number()),restartRecovery:$.Optional($.Object({outcome:K(["completed","interrupted","failed"]),recoveredAt:$.Number()})),result:$.Optional($.Object({success:$.Boolean(),message:$.String(),error:$.Optional($.String()),verificationCommands:$.Optional($.Array($.String())),verificationVerdict:$.Optional(K(["pass","fail","partial"])),modifiedFiles:$.Optional($.Array($.String()))})),stats:$.Optional($.Object({tokens:$.Optional($.Number()),toolCalls:$.Optional($.Number()),duration:$.Optional($.Number())}))})),A0=Z($.Object({prompt:$.String({minLength:1,maxLength:32000,pattern:"\\S"})})),R0=Z($.Object({source:i,session:i})),E0=Z($.Object({sessionId:$.String(),projectPath:$.String()})),_0=Z($.Object({path:$.String(),name:$.String(),gitBranch:$.Optional($.String()),available:$.Boolean(),isCurrent:$.Boolean(),boundAt:$.String()})),S0=Z($.Union([$.Object({cancelled:$.Literal(!0)}),$.Object({cancelled:$.Literal(!1),path:$.String({minLength:1})})])),l0=Z($.Object({type:$.String(),seq:$.Optional($.Number()),properties:$.Record($.String(),$.Unknown())})),T=$.Object({type:K(["file","image","url"]),path:$.Optional($.String()),url:$.Optional($.String()),content:$.Optional($.String({maxLength:o})),mimeType:$.Optional($.String()),name:$.Optional($.String())}),u1=20,d1=12288,m1=4096,h1=$.Object({id:$.String({minLength:1,maxLength:200}),text:$.String({minLength:1,maxLength:d1}),sourceMessageId:$.String({minLength:1,maxLength:500}),sourceRole:K(["user","assistant"]),comment:$.Optional($.String({maxLength:m1}))}),p=$.Record($.String(),$.Unknown()),u0=Z($.Object({prompt:$.String({minLength:1,maxLength:32000,pattern:"\\S"}),title:$.Optional($.String({minLength:1,maxLength:200})),taskPriority:W(E,"medium"),taskKind:W(_,"feature"),taskDueAt:$.Optional($.String({minLength:1,maxLength:64})),projectPath:$.Optional($.String()),modelId:$.Optional($.String({minLength:1,maxLength:500})),reasoningEffort:$.Optional(x),serviceTier:$.Optional(P),responseVerbosity:$.Optional(f),communicationStyle:$.Optional(z),isolation:W(N,"worktree"),permissionMode:W(v,"default"),attachments:$.Optional($.Array(T,{maxItems:A})),outputSchema:$.Optional(p)})),d0=Z($.Object({title:$.Optional($.String({minLength:1,maxLength:200})),taskPriority:$.Optional(E),taskKind:$.Optional(_),taskDueAt:$.Optional($.Union([$.String({minLength:1,maxLength:64}),$.Null()]))})),m0=Z($.Object({session:U,runId:$.String(),messageId:$.String(),status:K(["queued","running"]),queuePosition:$.Optional($.Integer({minimum:1})),queueDepth:$.Optional($.Integer({minimum:0})),maxConcurrentTasks:$.Optional($.Integer({minimum:1}))})),h0=Z($.Object({action:K(["apply","discard"])})),S=Z($.Object({kind:K(["cron","interval","once"]),cron:$.Optional($.String({minLength:1,maxLength:120})),intervalMs:$.Optional($.Integer({minimum:60000})),runAt:$.Optional($.String({minLength:1,maxLength:40})),timezone:$.Optional($.String({minLength:1,maxLength:80}))})),g1=Z($.Object({modelId:$.Optional($.String({minLength:1,maxLength:500})),reasoningEffort:$.Optional(x),serviceTier:$.Optional(P),responseVerbosity:$.Optional(f),communicationStyle:$.Optional(z),isolation:W(N,"worktree"),permissionMode:W(v,"default")})),l=Z($.Object({id:$.String(),title:$.Optional($.String({minLength:1,maxLength:200})),prompt:$.String({minLength:1,maxLength:32000,pattern:"\\S"}),projectPath:$.String({minLength:1}),trigger:S,dispatch:g1,enabled:$.Boolean(),createdAt:$.String(),updatedAt:$.String(),nextRunAt:$.Union([$.String(),$.Null()]),expiresAt:$.Union([$.String(),$.Null()]),lastRunAt:$.Optional($.String()),lastRunSessionId:$.Optional($.String()),lastStatus:$.Optional(K(["queued","running","completed","failed","cancelled","interrupted","error"])),lastError:$.Optional($.String()),runCount:$.Integer({minimum:0})})),g0=Z($.Object({title:$.Optional($.String({minLength:1,maxLength:200})),prompt:$.String({minLength:1,maxLength:32000,pattern:"\\S"}),projectPath:$.String({minLength:1}),trigger:S,modelId:$.Optional($.String({minLength:1,maxLength:500})),reasoningEffort:$.Optional(x),serviceTier:$.Optional(P),responseVerbosity:$.Optional(f),communicationStyle:$.Optional(z),isolation:W(N,"worktree"),permissionMode:W(v,"default"),enabled:W($.Boolean(),!0)})),c0=Z($.Object({title:$.Optional($.String({minLength:1,maxLength:200})),prompt:$.Optional($.String({minLength:1,maxLength:32000,pattern:"\\S"})),trigger:$.Optional(S),modelId:$.Optional($.String({minLength:1,maxLength:500})),reasoningEffort:$.Optional(x),serviceTier:$.Optional(P),responseVerbosity:$.Optional(f),communicationStyle:$.Optional(z),isolation:$.Optional(N),permissionMode:$.Optional(v),enabled:$.Optional($.Boolean())})),n0=Z($.Object({schedules:$.Array(l)})),i0=Z($.Object({content:$.String({maxLength:s}),projectPath:$.Optional($.String()),modelId:$.Optional($.String({minLength:1,maxLength:500})),reasoningEffort:$.Optional(x),serviceTier:$.Optional(P),responseVerbosity:$.Optional(f),communicationStyle:$.Optional(z),permissionMode:$.Optional(v),attachments:$.Optional($.Array(T,{maxItems:A})),annotations:$.Optional($.Array(h1,{maxItems:u1})),outputSchema:$.Optional(p)})),c1=K(["completed","failed","aborted","timed_out","spawn_error"]),n1=Z($.Object({version:$.Literal(1),command:$.String(),status:c1,exitCode:$.Union([$.Integer(),$.Null()]),durationMs:$.Number({minimum:0}),stdout:$.String(),stderr:$.String(),stdoutOmittedBytes:$.Integer({minimum:0}),stderrOmittedBytes:$.Integer({minimum:0}),binaryOutput:$.Boolean(),truncated:$.Boolean()})),o0=Z($.Object({command:$.String({minLength:1,maxLength:32768,pattern:"^(?![\\s\\S]*\\u0000)(?=[\\s\\S]*\\S)[\\s\\S]*$"}),projectPath:$.Optional($.String())})),s0=Z($.Object({executionId:$.String(),messageId:$.String(),record:n1,auxiliary:$.Boolean(),delivery:$.Optional(K(["current_turn","next_turn"])),queued:$.Optional($.Integer({minimum:0}))})),a0=Z($.Object({question:$.String({minLength:1,maxLength:n,pattern:"^(?![\\s\\S]*\\x00)(?=[\\s\\S]*\\S)[\\s\\S]*$"}),projectPath:$.Optional($.String())})),t0=Z($.Object({response:$.String({minLength:1}),durationMs:$.Number({minimum:0}),modelId:$.Optional($.String()),usage:$.Optional($.Object({promptTokens:$.Number({minimum:0}),completionTokens:$.Number({minimum:0}),totalTokens:$.Number({minimum:0}),reasoningTokens:$.Optional($.Number({minimum:0})),cacheCreationInputTokens:$.Optional($.Number({minimum:0})),cacheReadInputTokens:$.Optional($.Number({minimum:0})),costUsd:$.Optional($.Number({minimum:0}))}))})),r0=Z($.Object({projectPath:$.String(),kind:K(["uncommitted","base","commit"]),ref:$.Optional($.String({maxLength:200})),instructions:$.Optional($.String({maxLength:4000})),modelId:$.Optional($.String({minLength:1,maxLength:200}))})),y0=Z($.Object({reviewId:$.String(),status:$.Literal("running")})),T0=Z($.Object({messageId:$.String(),role:R,content:$.String(),timestamp:$.String()})),p0=Z($.Object({approved:$.Boolean(),remember:$.Optional($.Boolean()),scope:$.Optional(K(["once","session","project"])),targetMode:$.Optional(v),feedback:$.Optional($.String()),answers:$.Optional($.Record($.String(),$.Union([$.String(),$.Array($.String())]))),elicitation:$.Optional($.Object({action:K(["accept","decline","cancel"]),content:$.Optional($.Record($.String(),$.Union([$.String({maxLength:4000}),$.Number(),$.Boolean(),$.Array($.String({maxLength:1000}),{maxItems:100})]),{maxProperties:32}))}))})),i1=Z($.Object({id:z,name:$.String({minLength:1,maxLength:80}),description:$.String({minLength:1,maxLength:256}),source:K(["built-in","user","project","plugin"]),contentSha256:$.Optional($.String({pattern:"^[a-f0-9]{64}$"}))})),e0=Z($.Object({id:$.String(),displayName:$.Optional($.String()),provider:$.String(),model:$.String(),contextWindow:$.Optional($.Number()),maxTokens:$.Optional($.Number()),reasoning:$.Optional($.Boolean()),supportedReasoningEfforts:$.Optional($.Array(K(["off","minimal","low","medium","high","xhigh","max"]))),supportedServiceTiers:$.Optional($.Array(K(["standard","fast","flex"]))),supportedResponseVerbosities:$.Optional($.Array(K(["low","medium","high"]))),communicationStyles:$.Optional($.Array(i1,{maxItems:36})),input:$.Optional($.Array(K(["text","image"]))),overrides:$.Optional($.Object({baseUrl:$.Optional($.String()),temperature:$.Optional($.Number()),maxOutputTokens:$.Optional($.Number()),timeout:$.Optional($.Number()),streamIdleTimeout:$.Optional($.Number({minimum:1000}))}))})),$2=Z(K(["vs-dark","vs-light","hc-black"])),o1=Z(K(["light","dark","system"])),s1=Z($.Object({language:$.String(),codeTheme:$.String(),uiTheme:o1,autoSaveSessions:$.Boolean(),notifyBuild:$.Boolean(),notifyErrors:$.Boolean(),notifySounds:$.Boolean(),privacyTelemetry:$.Boolean(),privacyCrash:$.Boolean(),agentTeamsEnabled:$.Boolean(),communicationStyle:$.Optional(z)})),J2=Z($.Partial(s1));var e=J1("Service"),T1=1;function p1(){return Z1.join($1(),"schedules.json")}class O{filePath;static instance;static getInstance(){if(!O.instance)O.instance=new O;return O.instance}writeChain=Promise.resolve();constructor(J=p1()){this.filePath=J}async readFile(){try{let J=await t1(this.filePath,"utf-8"),B=JSON.parse(J);if(!B||!Array.isArray(B.schedules))return[];let j=[],Y=0;for(let H of B.schedules){let k=l.safeParse(H);if(k.success)j.push(k.data);else Y+=1}if(Y>0)e.warn(`[ScheduleStore] Ignored ${Y} invalid persisted schedule(s)`);return j}catch(J){let B=J;if(B.code!=="ENOENT")e.warn("[ScheduleStore] Failed to read schedules; treating as empty:",B);return[]}}async writeFile(J){await a1(Z1.dirname(this.filePath),{recursive:!0,mode:493});let B={version:T1,schedules:J};await y1(this.filePath,JSON.stringify(B,null,2),{mode:384})}serializeWrite(J){let B=this.writeChain.then(J,J);return this.writeChain=B.then(()=>{return},()=>{return}),B}async list(){return this.readFile()}async get(J){return(await this.readFile()).find((j)=>j.id===J)}async create(J){return this.serializeWrite(async()=>{let B=J.trigger.kind==="cron"&&!J.trigger.timezone?{...J.trigger,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone}:J.trigger,j=L(B);if(j)throw Error(j);let Y=new Date;if(B.kind==="once"&&new Date(B.runAt).getTime()<=Y.getTime())throw Error("once trigger runAt must be in the future");let H=Y.toISOString(),k=C(B,Y),G={id:r1(10),title:J.title,prompt:J.prompt,projectPath:J.projectPath,trigger:B,dispatch:{modelId:J.modelId,reasoningEffort:J.reasoningEffort,serviceTier:J.serviceTier,responseVerbosity:J.responseVerbosity,communicationStyle:J.communicationStyle,isolation:J.isolation??"worktree",permissionMode:J.permissionMode??"default"},enabled:J.enabled??!0,createdAt:H,updatedAt:H,nextRunAt:k?k.toISOString():null,expiresAt:null,runCount:0},V=await this.readFile();return V.push(G),await this.writeFile(V),G})}async update(J,B){return this.serializeWrite(async()=>{let j=await this.readFile(),Y=j.findIndex((Q)=>Q.id===J);if(Y===-1)return;let H=j[Y];if(B.trigger){let Q=B.trigger.kind==="cron"&&!B.trigger.timezone?{...B.trigger,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone}:B.trigger,b=L(Q);if(b)throw Error(b);if(Q.kind==="once"&&new Date(Q.runAt).getTime()<=Date.now())throw Error("once trigger runAt must be in the future");B={...B,trigger:Q}}let k={...H,...B,dispatch:B.dispatch?{...H.dispatch,...B.dispatch}:H.dispatch,updatedAt:new Date().toISOString()},G=!H.enabled,V=k.enabled,X=B.trigger!==void 0;if((X||G&&V)&&B.nextRunAt===void 0){let Q=new Date,b=C(k.trigger,Q);if(k.nextRunAt=b?b.toISOString():null,X)k.expiresAt=null}return j[Y]=k,await this.writeFile(j),k})}async remove(J){return this.serializeWrite(async()=>{let B=await this.readFile(),j=B.filter((Y)=>Y.id!==J);if(j.length===B.length)return!1;return await this.writeFile(j),!0})}async setEnabled(J,B){return this.update(J,{enabled:B})}}var v2=O.getInstance();
1
+ import{ih as F,ph as a}from"./chunk-kkzznz4w.js";import{wj as A,xj as o,zj as s}from"./chunk-m2x6pb4f.js";import{Ej as J1,Ij as $,Jj as Z,Kj as W,Lj as K}from"./chunk-saz6mwpq.js";import{dk as $1}from"./chunk-ed2hdrwe.js";var w=[{min:0,max:59},{min:0,max:23},{min:1,max:31},{min:1,max:12},{min:0,max:7}],K1={Sun:0,Mon:1,Tue:2,Wed:3,Thu:4,Fri:5,Sat:6},u=new Map;function I(J,B,j){let Y=new Set;for(let H of J.split(",")){let[k,G]=H.split("/"),V=G?Number.parseInt(G,10):1;if(!Number.isInteger(V)||V<1)throw Error(`Invalid cron step in "${J}"`);let X=B,Q=j;if(k!=="*"&&k!=="")if(k.includes("-")){let[b,B1]=k.split("-");X=Number.parseInt(b,10),Q=Number.parseInt(B1,10)}else X=Number.parseInt(k,10),Q=X;if(!Number.isInteger(X)||!Number.isInteger(Q)||X<B||Q>j||X>Q)throw Error(`Invalid cron range "${k}" in field "${J}"`);for(let b=X;b<=Q;b+=V)Y.add(b)}return Y}function d(J){let B=J.trim().split(/\s+/);if(B.length!==5)throw Error(`Cron expression must have 5 fields (min hour dom mon dow), got ${B.length}`);let[j,Y,H,k,G]=B,V=I(G,w[4].min,w[4].max),X=new Set([...V].map((Q)=>Q===7?0:Q));return{minutes:I(j,w[0].min,w[0].max),hours:I(Y,w[1].min,w[1].max),daysOfMonth:I(H,w[2].min,w[2].max),months:I(k,w[3].min,w[3].max),daysOfWeek:X,domRestricted:H.trim()!=="*",dowRestricted:G.trim()!=="*"}}function Y1(J,B){if(!B)return{minute:J.getMinutes(),hour:J.getHours(),dayOfMonth:J.getDate(),month:J.getMonth()+1,dayOfWeek:J.getDay()};let j=u.get(B);if(!j)j=new Intl.DateTimeFormat("en-US",{timeZone:B,month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",weekday:"short",hourCycle:"h23"}),u.set(B,j);let Y=Object.fromEntries(j.formatToParts(J).filter((H)=>H.type!=="literal").map((H)=>[H.type,H.value]));return{minute:Number(Y.minute),hour:Number(Y.hour),dayOfMonth:Number(Y.day),month:Number(Y.month),dayOfWeek:K1[Y.weekday]??-1}}function j1(J,B,j){let Y=Y1(B,j);if(!J.minutes.has(Y.minute))return!1;if(!J.hours.has(Y.hour))return!1;if(!J.months.has(Y.month))return!1;let H=J.daysOfMonth.has(Y.dayOfMonth),k=J.daysOfWeek.has(Y.dayOfWeek);if(J.domRestricted&&J.dowRestricted)return H||k;if(J.domRestricted)return H;if(J.dowRestricted)return k;return!0}function H1(J,B,j){let Y=d(J),H=new Date(B.getTime());H.setSeconds(0,0),H.setMinutes(H.getMinutes()+1);let k=new Date(B.getTime());k.setFullYear(k.getFullYear()+4);while(H.getTime()<=k.getTime()){if(j1(Y,H,j))return new Date(H.getTime());H.setMinutes(H.getMinutes()+1)}return null}var m={s:1000,m:60000,h:3600000,d:86400000};function e1(J){let j=J.trim().toLowerCase().match(/^(\d+)\s*([smhd]?)$/);if(!j)return null;let Y=Number.parseInt(j[1],10);if(!Number.isInteger(Y)||Y<=0)return null;let H=j[2]||"m";return Y*m[H]}function k1(J){for(let B of["d","h","m","s"]){let j=m[B];if(J%j===0)return`${J/j}${B}`}return`${Math.round(J/1000)}s`}function C(J,B,j){switch(J.kind){case"cron":{if(!J.cron)return null;try{return H1(J.cron,B,J.timezone)}catch{return null}}case"interval":{if(!J.intervalMs||J.intervalMs<=0)return null;let H=new Date((j??B).getTime()+J.intervalMs);return H.getTime()<=B.getTime()?new Date(B.getTime()+1000):H}case"once":{if(!J.runAt)return null;let Y=new Date(J.runAt);if(Number.isNaN(Y.getTime()))return null;return Y.getTime()>B.getTime()?Y:null}default:return null}}function L(J){switch(J.kind){case"cron":if(!J.cron)return"cron trigger requires a cron expression";try{if(d(J.cron),J.timezone)new Intl.DateTimeFormat("en-US",{timeZone:J.timezone}).format();return null}catch(B){return B instanceof Error?B.message:"invalid cron expression"}case"interval":if(!J.intervalMs||J.intervalMs<60000)return"interval trigger requires intervalMs >= 60000 (1 minute)";return null;case"once":{if(!J.runAt)return"once trigger requires runAt timestamp";let B=new Date(J.runAt);if(Number.isNaN(B.getTime()))return"once trigger runAt is not a valid date";return null}default:return"unknown trigger kind"}}function $0(J){switch(J.kind){case"cron":return`cron: ${J.cron??"?"}`;case"interval":return`every ${J.intervalMs?k1(J.intervalMs):"?"}`;case"once":return`once at ${J.runAt??"?"}`;default:return"unknown"}}import{mkdir as a1,readFile as t1}from"node:fs/promises";import Z1 from"node:path";import{nanoid as r1}from"nanoid";import y1 from"write-file-atomic";var q=160,Q1=240,h=$.String({pattern:"^[a-f0-9]{64}$"}),X1=Z($.Object({id:$.String({minLength:1,maxLength:128}),position:$.Integer({minimum:0,maximum:q-1}),queuedAt:$.String({minLength:20,maxLength:32}),kind:K(["user","internal"]),state:K(["pending","locked"]),delivery:K(["current_turn","next_turn","recovery"]),mutable:$.Boolean(),preview:$.Optional($.String({maxLength:Q1})),previewTruncated:$.Boolean(),attachmentCount:$.Integer({minimum:0,maximum:20})},{additionalProperties:!1})),g=Z($.Object({version:h,pending:$.Integer({minimum:0,maximum:q}),mutable:$.Integer({minimum:0,maximum:q}),locked:$.Integer({minimum:0,maximum:q}),internal:$.Integer({minimum:0,maximum:q}),items:$.Array(X1,{maxItems:q})},{additionalProperties:!1})),W1=$.Union([$.Object({type:$.Literal("remove"),messageId:$.String({minLength:1,maxLength:128})},{additionalProperties:!1}),$.Object({type:$.Literal("move"),messageId:$.String({minLength:1,maxLength:128}),toPosition:$.Integer({minimum:0,maximum:q-1})},{additionalProperties:!1})]),B0=Z($.Object({expectedVersion:h,operation:W1},{additionalProperties:!1})),K0=Z($.Object({snapshot:g},{additionalProperties:!1})),b1=K(["revision_conflict","already_claimed","immutable_origin","immutable_boundary","not_found","runtime_unavailable","invalid_mutation","storage_unavailable"]),Y0=Z($.Object({error:$.Object({code:b1,message:$.String({minLength:1,maxLength:256})},{additionalProperties:!1}),snapshot:g},{additionalProperties:!1}));var G1=K(["preferences","conventions","lessons","debugging"]),V1=$.Object({outcome:K(["nothing_to_store","disabled","failed"]),entries:$.Literal(0),topics:$.Tuple([])},{additionalProperties:!1}),w1=$.Object({outcome:$.Literal("written"),entries:$.Integer({minimum:1,maximum:20}),topics:$.Array(G1,{minItems:1,maxItems:4,uniqueItems:!0})},{additionalProperties:!1}),k0=Z($.Union([w1,V1]));var c=128,D1=128,z1=8,q1=1e6,v1=8640000000000000,D=$.Integer({minimum:0,maximum:q1}),M=$.Integer({minimum:0,maximum:v1}),x1=$.String({minLength:1,maxLength:c,pattern:"^[^\x00-\x1F]+$"}),P1=K(["starting","thinking","responding","executing_tools","compacting","continuing"]),f1=$.Refine($.Object({name:x1,kind:$.Optional(K(["readonly","write","execute"])),startedAt:M,progress:$.Optional(D),total:$.Optional(D)},{additionalProperties:!1}),(J)=>J.progress===void 0&&J.total===void 0||J.progress!==void 0&&J.total!==void 0&&J.progress<=J.total,()=>"progress and total must be present together with progress <= total"),O1=$.Refine($.Object({phase:P1,startedAt:M,updatedAt:M,turn:D,maxTurns:$.Union([D,$.Null()]),outputStarted:$.Boolean(),toolCallsStarted:D,toolCallsCompleted:D,activeTools:$.Array(f1,{maxItems:z1}),activeToolOverflow:D},{additionalProperties:!1}),(J)=>J.startedAt<=J.updatedAt&&J.toolCallsCompleted<=J.toolCallsStarted&&J.activeTools.length+J.activeToolOverflow<=J.toolCallsStarted-J.toolCallsCompleted,()=>"turn activity snapshot counters and timestamps are inconsistent"),W0=Z($.Object({version:$.Literal(1),generation:$.String({minLength:1,maxLength:D1,pattern:"^[^\x00-\x1F]+$"}),revision:D,snapshot:$.Union([O1,$.Null()])},{additionalProperties:!1}));function b0(J){let B=[...J].filter((j)=>{let Y=j.codePointAt(0)??0;return Y>31&&Y!==127}).join("").trim().slice(0,c);if(!B)throw Error("Turn activity tool name is empty");return B}var n=16384;function V0(J){let B=/^\s*\/btw(?:\s+([\s\S]*))?\s*$/iu.exec(J);if(!B)return;return{question:(B[1]??"").trim()}}var v=Z(K(["default","autoEdit","yolo","plan"]));var R=Z(K(["user","assistant","system","tool"])),I1=Z($.Union([$.Object({type:$.Literal("text"),text:$.String()}),$.Object({type:$.Literal("image_url"),image_url:$.Object({url:$.String()})})])),t=$.Union([$.String(),$.Array(I1)]),P0=Z($.Object({id:$.String(),role:R,content:t,timestamp:$.Number(),metadata:$.Optional($.Record($.String(),$.Unknown())),thinkingContent:$.Optional($.String()),tool_call_id:$.Optional($.String()),name:$.Optional($.String()),tool_calls:$.Optional($.Unknown())})),N1=Z(K(["queued","running","completed","failed","cancelled","interrupted"])),N=Z(K(["local","worktree"])),E=Z(K(["high","medium","low"])),_=Z(K(["feature","bug","maintenance","research"])),U1=Z(K(["applied","discarded","conflicted"])),F1=Z($.Object({status:U1,updatedAt:$.String(),sourceCommit:$.Optional($.String()),changedFiles:$.Optional($.Integer({minimum:0})),message:$.Optional($.String())})),C1=Z($.Object({changedFiles:$.Integer({minimum:0}),additions:$.Integer({minimum:0}),deletions:$.Integer({minimum:0}),commits:$.Integer({minimum:0})})),L1=Z($.Object({path:$.String({minLength:1}),patch:$.String({maxLength:2097152}),additions:$.Integer({minimum:0}),deletions:$.Integer({minimum:0}),binary:$.Boolean(),truncated:$.Boolean()})),f0=Z($.Object({sessionId:$.String(),projectPath:$.String(),baseCommit:$.String(),files:$.Array(L1,{maxItems:100}),truncated:$.Boolean()})),M1=$.Union([$.String(),$.Number(),$.Boolean(),$.Array($.String())]),A1=Z($.Object({name:$.String(),type:K(["string","number","integer","boolean","select","multi-select"]),title:$.String(),description:$.Optional($.String()),required:$.Boolean(),defaultValue:$.Optional(M1),options:$.Optional($.Array($.Object({value:$.String(),label:$.String()}))),format:$.Optional(K(["date","uri","email","date-time"])),minimum:$.Optional($.Number()),maximum:$.Optional($.Number()),minLength:$.Optional($.Number()),maxLength:$.Optional($.Number()),minItems:$.Optional($.Number()),maxItems:$.Optional($.Number())})),O0=Z($.Object({serverName:$.String(),mode:K(["form","url"]),message:$.String(),fields:$.Optional($.Array(A1)),requestedSchema:$.Optional($.Record($.String(),$.Unknown())),url:$.Optional($.String()),domain:$.Optional($.String()),elicitationId:$.Optional($.String())})),R1=Z($.Object({type:K(["permission","question","elicitation"]),requestId:$.String()})),E1=Z($.Object({code:K(["authentication","permission","rate_limit","timeout","network","model_unavailable","context_limit","unsupported_input","workspace_unavailable","capacity","runtime"]),message:$.String({minLength:1,maxLength:500}),retryable:$.Boolean(),resource:$.Optional(K(["pending_count","pending_bytes","resident_runtimes"]))})),x=Z(K(["auto","off","minimal","low","medium","high","xhigh","max"])),P=Z(K(["auto","standard","fast","flex"])),f=Z(K(["auto","low","medium","high"])),z=Z($.Union([K(["auto","pragmatic","friendly","explanatory"]),$.String({minLength:7,maxLength:300,pattern:"^(?:(?:user|project):[a-z0-9][a-z0-9._-]{0,63}(?::[a-z0-9][a-z0-9._-]{0,63}){0,3}|plugin:[a-z0-9][a-z0-9._-]{0,63}:[a-z0-9][a-z0-9._-]{0,63}(?::[a-z0-9][a-z0-9._-]{0,63}){0,3})$"})])),U=Z($.Object({sessionId:$.String(),projectPath:$.String(),title:$.Optional($.String()),gitBranch:$.Optional($.String()),rootId:$.String(),parentId:$.Optional($.String()),relationType:$.Optional(K(["subagent","fork"])),resumedFrom:$.Optional($.String()),rootAgentId:$.Optional($.String()),resumeDepth:$.Optional($.Integer({minimum:0})),taskStatus:W(N1,"completed"),taskStatusReason:$.Optional($.String()),taskFailure:$.Optional(E1),taskStartedAt:$.Optional($.String()),taskCompletedAt:$.Optional($.String()),taskPromptSummary:$.Optional($.String()),taskPriority:$.Optional(E),taskKind:$.Optional(_),taskDueAt:$.Optional($.String()),taskModelId:$.Optional($.String()),selectedModelId:$.Optional($.String()),permissionMode:$.Optional(v),reasoningEffort:$.Optional(x),serviceTier:$.Optional(P),responseVerbosity:$.Optional(f),communicationStyle:$.Optional(z),communicationStyleDigest:$.Optional($.String({pattern:"^[a-f0-9]{64}$"})),projectInstructionsDigest:$.Optional($.String({pattern:"^[a-f0-9]{64}$"})),taskRetryAvailable:$.Optional($.Boolean()),taskRetriedFrom:$.Optional($.Object({sessionId:$.String(),projectPath:$.String()})),taskDelivery:$.Optional(F1),taskIsolation:$.Optional(N),taskSourceProjectPath:$.Optional($.String()),taskWorktreePath:$.Optional($.String()),taskWorktreeBranch:$.Optional($.String()),taskBaseCommit:$.Optional($.String()),taskDiffStat:$.Optional(C1),taskQueuePosition:$.Optional($.Integer({minimum:1})),taskQueueDepth:$.Optional($.Integer({minimum:0})),taskConcurrencyLimit:$.Optional($.Integer({minimum:1})),archivedAt:$.Optional($.String()),archivedBySessionId:$.Optional($.String()),pendingInteraction:$.Optional(R1),messageCount:$.Number(),firstMessageTime:$.String(),lastMessageTime:$.String(),hasErrors:$.Boolean()})),I0=Z($.Object({sessions:$.Array(U),nextCursor:$.Optional($.String())})),N0=Z($.Object({session:U,archivedSessionIds:$.Array($.String())})),U0=Z($.Object({session:U,restoredSessionIds:$.Array($.String())})),_1=$.Object({rootTurnId:$.Optional($.String({minLength:1,maxLength:F})),currentTurnId:$.String({minLength:1,maxLength:F}),parentTurnId:$.Optional($.String({minLength:1,maxLength:F}))},{additionalProperties:!1}),F0=Z($.Object({version:$.Union([$.Literal(1),$.Literal(2)]),sessionId:$.String(),goalId:$.String(),objective:$.String(),status:K(["active","verifying","paused","blocked","usage_limited","budget_limited","complete"]),tokenBudget:$.Optional($.Number()),tokensUsed:$.Number(),timeUsedSeconds:$.Number(),continuationCount:$.Number(),statusReason:$.Optional($.String()),completionVerification:$.Optional($.Object({attempt:$.Integer({minimum:1}),status:K(["pending","pass","fail","partial"]),requestedAt:$.String(),completedAt:$.Optional($.String()),verifierSessionId:$.Optional($.String()),summary:$.Optional($.String()),evidenceSha256:$.Optional($.String({pattern:"^[a-f0-9]{64}$"}))})),prematureStop:$.Optional($.Object({pattern:$.Unsafe({type:"string"}),consecutiveCount:$.Integer({minimum:1}),detectedAt:$.String()})),executionHostFailure:$.Optional($.Object({category:K(a),consecutiveCount:$.Integer({minimum:1,maximum:3}),detectedAt:$.String()},{additionalProperties:!1})),turnLineage:$.Optional(_1),verificationStall:$.Optional($.Unsafe({type:"object"})),executionFrontier:$.Optional($.Object({taskListId:$.String({minLength:1,maxLength:256}),total:$.Integer({minimum:0}),completed:$.Integer({minimum:0}),inProgress:$.Integer({minimum:0}),pending:$.Integer({minimum:0}),blocked:$.Integer({minimum:0}),nextTask:$.Optional($.Object({id:$.String({minLength:1}),subject:$.String({minLength:1,maxLength:512}),priority:K(["high","medium","low"])})),digestSha256:$.String({pattern:"^[a-f0-9]{64}$"}),observedAt:$.String()})),frontierStall:$.Optional($.Object({category:K(["waiting_dependency","same_task_no_effect","repeated_deferral"]),consecutiveCount:$.Integer({minimum:1,maximum:3}),digestSha256:$.String({pattern:"^[a-f0-9]{64}$"}),detectedAt:$.String()})),createdAt:$.String(),updatedAt:$.String()})),r=Z($.Object({id:$.Optional($.String({minLength:1})),timestamp:$.Optional($.Number({minimum:0})),role:R,content:t,metadata:$.Optional($.Unknown()),reasoningContent:$.Optional($.String()),thinkingContent:$.Optional($.String()),tool_call_id:$.Optional($.String()),name:$.Optional($.String()),tool_calls:$.Optional($.Unknown())})),C0=Z($.Object({session:U,messages:$.Array(r)})),y=Z(K(["conversation","code","both"])),S1=Z($.Object({messageId:$.String(),preview:$.String(),createdAt:$.String(),fileCount:$.Integer({minimum:0})})),L0=Z($.Object({targetMessageId:$.String({minLength:1}),mode:W(y,"conversation")})),M0=Z($.Object({checkpoint:S1,mode:y,removedTurns:$.Integer({minimum:1}),restoredFiles:$.Array($.String()),messages:$.Array(r)})),l1=K(["running","completed","failed","cancelled"]),i=Z($.Object({id:$.String(),subagentType:$.String(),description:$.String(),status:l1,background:$.Boolean(),rootAgentId:$.String(),resumedFrom:$.Optional($.String()),resumeDepth:$.Integer({minimum:0}),createdAt:$.Number(),lastActiveAt:$.Number(),completedAt:$.Optional($.Number()),restartRecovery:$.Optional($.Object({outcome:K(["completed","interrupted","failed"]),recoveredAt:$.Number()})),result:$.Optional($.Object({success:$.Boolean(),message:$.String(),error:$.Optional($.String()),verificationCommands:$.Optional($.Array($.String())),verificationVerdict:$.Optional(K(["pass","fail","partial"])),modifiedFiles:$.Optional($.Array($.String()))})),stats:$.Optional($.Object({tokens:$.Optional($.Number()),toolCalls:$.Optional($.Number()),duration:$.Optional($.Number())}))})),A0=Z($.Object({prompt:$.String({minLength:1,maxLength:32000,pattern:"\\S"})})),R0=Z($.Object({source:i,session:i})),E0=Z($.Object({sessionId:$.String(),projectPath:$.String()})),_0=Z($.Object({path:$.String(),name:$.String(),gitBranch:$.Optional($.String()),available:$.Boolean(),isCurrent:$.Boolean(),boundAt:$.String()})),S0=Z($.Union([$.Object({cancelled:$.Literal(!0)}),$.Object({cancelled:$.Literal(!1),path:$.String({minLength:1})})])),l0=Z($.Object({type:$.String(),seq:$.Optional($.Number()),properties:$.Record($.String(),$.Unknown())})),T=$.Object({type:K(["file","image","url"]),path:$.Optional($.String()),url:$.Optional($.String()),content:$.Optional($.String({maxLength:o})),mimeType:$.Optional($.String()),name:$.Optional($.String())}),u1=20,d1=12288,m1=4096,h1=$.Object({id:$.String({minLength:1,maxLength:200}),text:$.String({minLength:1,maxLength:d1}),sourceMessageId:$.String({minLength:1,maxLength:500}),sourceRole:K(["user","assistant"]),comment:$.Optional($.String({maxLength:m1}))}),p=$.Record($.String(),$.Unknown()),u0=Z($.Object({prompt:$.String({minLength:1,maxLength:32000,pattern:"\\S"}),title:$.Optional($.String({minLength:1,maxLength:200})),taskPriority:W(E,"medium"),taskKind:W(_,"feature"),taskDueAt:$.Optional($.String({minLength:1,maxLength:64})),projectPath:$.Optional($.String()),modelId:$.Optional($.String({minLength:1,maxLength:500})),reasoningEffort:$.Optional(x),serviceTier:$.Optional(P),responseVerbosity:$.Optional(f),communicationStyle:$.Optional(z),isolation:W(N,"worktree"),permissionMode:W(v,"default"),attachments:$.Optional($.Array(T,{maxItems:A})),outputSchema:$.Optional(p)})),d0=Z($.Object({title:$.Optional($.String({minLength:1,maxLength:200})),taskPriority:$.Optional(E),taskKind:$.Optional(_),taskDueAt:$.Optional($.Union([$.String({minLength:1,maxLength:64}),$.Null()]))})),m0=Z($.Object({session:U,runId:$.String(),messageId:$.String(),status:K(["queued","running"]),queuePosition:$.Optional($.Integer({minimum:1})),queueDepth:$.Optional($.Integer({minimum:0})),maxConcurrentTasks:$.Optional($.Integer({minimum:1}))})),h0=Z($.Object({action:K(["apply","discard"])})),S=Z($.Object({kind:K(["cron","interval","once"]),cron:$.Optional($.String({minLength:1,maxLength:120})),intervalMs:$.Optional($.Integer({minimum:60000})),runAt:$.Optional($.String({minLength:1,maxLength:40})),timezone:$.Optional($.String({minLength:1,maxLength:80}))})),g1=Z($.Object({modelId:$.Optional($.String({minLength:1,maxLength:500})),reasoningEffort:$.Optional(x),serviceTier:$.Optional(P),responseVerbosity:$.Optional(f),communicationStyle:$.Optional(z),isolation:W(N,"worktree"),permissionMode:W(v,"default")})),l=Z($.Object({id:$.String(),title:$.Optional($.String({minLength:1,maxLength:200})),prompt:$.String({minLength:1,maxLength:32000,pattern:"\\S"}),projectPath:$.String({minLength:1}),trigger:S,dispatch:g1,enabled:$.Boolean(),createdAt:$.String(),updatedAt:$.String(),nextRunAt:$.Union([$.String(),$.Null()]),expiresAt:$.Union([$.String(),$.Null()]),lastRunAt:$.Optional($.String()),lastRunSessionId:$.Optional($.String()),lastStatus:$.Optional(K(["queued","running","completed","failed","cancelled","interrupted","error"])),lastError:$.Optional($.String()),runCount:$.Integer({minimum:0})})),g0=Z($.Object({title:$.Optional($.String({minLength:1,maxLength:200})),prompt:$.String({minLength:1,maxLength:32000,pattern:"\\S"}),projectPath:$.String({minLength:1}),trigger:S,modelId:$.Optional($.String({minLength:1,maxLength:500})),reasoningEffort:$.Optional(x),serviceTier:$.Optional(P),responseVerbosity:$.Optional(f),communicationStyle:$.Optional(z),isolation:W(N,"worktree"),permissionMode:W(v,"default"),enabled:W($.Boolean(),!0)})),c0=Z($.Object({title:$.Optional($.String({minLength:1,maxLength:200})),prompt:$.Optional($.String({minLength:1,maxLength:32000,pattern:"\\S"})),trigger:$.Optional(S),modelId:$.Optional($.String({minLength:1,maxLength:500})),reasoningEffort:$.Optional(x),serviceTier:$.Optional(P),responseVerbosity:$.Optional(f),communicationStyle:$.Optional(z),isolation:$.Optional(N),permissionMode:$.Optional(v),enabled:$.Optional($.Boolean())})),n0=Z($.Object({schedules:$.Array(l)})),i0=Z($.Object({content:$.String({maxLength:s}),projectPath:$.Optional($.String()),modelId:$.Optional($.String({minLength:1,maxLength:500})),reasoningEffort:$.Optional(x),serviceTier:$.Optional(P),responseVerbosity:$.Optional(f),communicationStyle:$.Optional(z),permissionMode:$.Optional(v),attachments:$.Optional($.Array(T,{maxItems:A})),annotations:$.Optional($.Array(h1,{maxItems:u1})),outputSchema:$.Optional(p)})),c1=K(["completed","failed","aborted","timed_out","spawn_error"]),n1=Z($.Object({version:$.Literal(1),command:$.String(),status:c1,exitCode:$.Union([$.Integer(),$.Null()]),durationMs:$.Number({minimum:0}),stdout:$.String(),stderr:$.String(),stdoutOmittedBytes:$.Integer({minimum:0}),stderrOmittedBytes:$.Integer({minimum:0}),binaryOutput:$.Boolean(),truncated:$.Boolean()})),o0=Z($.Object({command:$.String({minLength:1,maxLength:32768,pattern:"^(?![\\s\\S]*\\u0000)(?=[\\s\\S]*\\S)[\\s\\S]*$"}),projectPath:$.Optional($.String())})),s0=Z($.Object({executionId:$.String(),messageId:$.String(),record:n1,auxiliary:$.Boolean(),delivery:$.Optional(K(["current_turn","next_turn"])),queued:$.Optional($.Integer({minimum:0}))})),a0=Z($.Object({question:$.String({minLength:1,maxLength:n,pattern:"^(?![\\s\\S]*\\x00)(?=[\\s\\S]*\\S)[\\s\\S]*$"}),projectPath:$.Optional($.String())})),t0=Z($.Object({response:$.String({minLength:1}),durationMs:$.Number({minimum:0}),modelId:$.Optional($.String()),usage:$.Optional($.Object({promptTokens:$.Number({minimum:0}),completionTokens:$.Number({minimum:0}),totalTokens:$.Number({minimum:0}),reasoningTokens:$.Optional($.Number({minimum:0})),cacheCreationInputTokens:$.Optional($.Number({minimum:0})),cacheReadInputTokens:$.Optional($.Number({minimum:0})),costUsd:$.Optional($.Number({minimum:0}))}))})),r0=Z($.Object({projectPath:$.String(),kind:K(["uncommitted","base","commit"]),ref:$.Optional($.String({maxLength:200})),instructions:$.Optional($.String({maxLength:4000})),modelId:$.Optional($.String({minLength:1,maxLength:200}))})),y0=Z($.Object({reviewId:$.String(),status:$.Literal("running")})),T0=Z($.Object({messageId:$.String(),role:R,content:$.String(),timestamp:$.String()})),p0=Z($.Object({approved:$.Boolean(),remember:$.Optional($.Boolean()),scope:$.Optional(K(["once","session","project"])),targetMode:$.Optional(v),feedback:$.Optional($.String()),answers:$.Optional($.Record($.String(),$.Union([$.String(),$.Array($.String())]))),elicitation:$.Optional($.Object({action:K(["accept","decline","cancel"]),content:$.Optional($.Record($.String(),$.Union([$.String({maxLength:4000}),$.Number(),$.Boolean(),$.Array($.String({maxLength:1000}),{maxItems:100})]),{maxProperties:32}))}))})),i1=Z($.Object({id:z,name:$.String({minLength:1,maxLength:80}),description:$.String({minLength:1,maxLength:256}),source:K(["built-in","user","project","plugin"]),contentSha256:$.Optional($.String({pattern:"^[a-f0-9]{64}$"}))})),e0=Z($.Object({id:$.String(),displayName:$.Optional($.String()),provider:$.String(),model:$.String(),contextWindow:$.Optional($.Number()),maxTokens:$.Optional($.Number()),reasoning:$.Optional($.Boolean()),supportedReasoningEfforts:$.Optional($.Array(K(["off","minimal","low","medium","high","xhigh","max"]))),supportedServiceTiers:$.Optional($.Array(K(["standard","fast","flex"]))),supportedResponseVerbosities:$.Optional($.Array(K(["low","medium","high"]))),communicationStyles:$.Optional($.Array(i1,{maxItems:36})),input:$.Optional($.Array(K(["text","image"]))),overrides:$.Optional($.Object({baseUrl:$.Optional($.String()),temperature:$.Optional($.Number()),maxOutputTokens:$.Optional($.Number()),timeout:$.Optional($.Number()),streamIdleTimeout:$.Optional($.Number({minimum:1000}))}))})),$2=Z(K(["vs-dark","vs-light","hc-black"])),o1=Z(K(["light","dark","system"])),s1=Z($.Object({language:$.String(),codeTheme:$.String(),uiTheme:o1,autoSaveSessions:$.Boolean(),notifyBuild:$.Boolean(),notifyErrors:$.Boolean(),notifySounds:$.Boolean(),privacyTelemetry:$.Boolean(),privacyCrash:$.Boolean(),agentTeamsEnabled:$.Boolean(),communicationStyle:$.Optional(z)})),J2=Z($.Partial(s1));var e=J1("Service"),T1=1;function p1(){return Z1.join($1(),"schedules.json")}class O{filePath;static instance;static getInstance(){if(!O.instance)O.instance=new O;return O.instance}writeChain=Promise.resolve();constructor(J=p1()){this.filePath=J}async readFile(){try{let J=await t1(this.filePath,"utf-8"),B=JSON.parse(J);if(!B||!Array.isArray(B.schedules))return[];let j=[],Y=0;for(let H of B.schedules){let k=l.safeParse(H);if(k.success)j.push(k.data);else Y+=1}if(Y>0)e.warn(`[ScheduleStore] Ignored ${Y} invalid persisted schedule(s)`);return j}catch(J){let B=J;if(B.code!=="ENOENT")e.warn("[ScheduleStore] Failed to read schedules; treating as empty:",B);return[]}}async writeFile(J){await a1(Z1.dirname(this.filePath),{recursive:!0,mode:493});let B={version:T1,schedules:J};await y1(this.filePath,JSON.stringify(B,null,2),{mode:384})}serializeWrite(J){let B=this.writeChain.then(J,J);return this.writeChain=B.then(()=>{return},()=>{return}),B}async list(){return this.readFile()}async get(J){return(await this.readFile()).find((j)=>j.id===J)}async create(J){return this.serializeWrite(async()=>{let B=J.trigger.kind==="cron"&&!J.trigger.timezone?{...J.trigger,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone}:J.trigger,j=L(B);if(j)throw Error(j);let Y=new Date;if(B.kind==="once"&&new Date(B.runAt).getTime()<=Y.getTime())throw Error("once trigger runAt must be in the future");let H=Y.toISOString(),k=C(B,Y),G={id:r1(10),title:J.title,prompt:J.prompt,projectPath:J.projectPath,trigger:B,dispatch:{modelId:J.modelId,reasoningEffort:J.reasoningEffort,serviceTier:J.serviceTier,responseVerbosity:J.responseVerbosity,communicationStyle:J.communicationStyle,isolation:J.isolation??"worktree",permissionMode:J.permissionMode??"default"},enabled:J.enabled??!0,createdAt:H,updatedAt:H,nextRunAt:k?k.toISOString():null,expiresAt:null,runCount:0},V=await this.readFile();return V.push(G),await this.writeFile(V),G})}async update(J,B){return this.serializeWrite(async()=>{let j=await this.readFile(),Y=j.findIndex((Q)=>Q.id===J);if(Y===-1)return;let H=j[Y];if(B.trigger){let Q=B.trigger.kind==="cron"&&!B.trigger.timezone?{...B.trigger,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone}:B.trigger,b=L(Q);if(b)throw Error(b);if(Q.kind==="once"&&new Date(Q.runAt).getTime()<=Date.now())throw Error("once trigger runAt must be in the future");B={...B,trigger:Q}}let k={...H,...B,dispatch:B.dispatch?{...H.dispatch,...B.dispatch}:H.dispatch,updatedAt:new Date().toISOString()},G=!H.enabled,V=k.enabled,X=B.trigger!==void 0;if((X||G&&V)&&B.nextRunAt===void 0){let Q=new Date,b=C(k.trigger,Q);if(k.nextRunAt=b?b.toISOString():null,X)k.expiresAt=null}return j[Y]=k,await this.writeFile(j),k})}async remove(J){return this.serializeWrite(async()=>{let B=await this.readFile(),j=B.filter((Y)=>Y.id!==J);if(j.length===B.length)return!1;return await this.writeFile(j),!0})}async setEnabled(J,B){return this.update(J,{enabled:B})}}var v2=O.getInstance();
2
2
  export{n as Wa,V0 as Xa,q as Ya,Q1 as Za,h as _a,g as $a,W1 as ab,z1 as bb,W0 as cb,b0 as db,k0 as eb,e1 as fb,C as gb,L as hb,$0 as ib,f0 as jb,U as kb,L0 as lb,A0 as mb,u0 as nb,d0 as ob,m0 as pb,h0 as qb,l as rb,g0 as sb,c0 as tb,n0 as ub,i0 as vb,o0 as wb,a0 as xb,r0 as yb,O as zb,v2 as Ab};
@@ -1,4 +1,4 @@
1
- import{Ac as En,xc as Ut,yc as fn,zc as yn}from"./chunk-9qxch6sy.js";import{Ah as xt}from"./chunk-mqfayxf7.js";import{$h as S,Gh as Ot,Hh as vi,Jh as en,Kh as Bt,Lh as U,Mh as sn,Nh as St,Oh as gt,Qh as rn,Rh as Tn,Sh as B,Th as on,Uh as dn,Vh as pn,Wh as Lt,Xh as cn,Yh as un,Zh as Mn,ci as wn,di as Vt,ei as lt,fi as h,gi as jt}from"./chunk-qy6p8bpr.js";import{Zi as Zt}from"./chunk-b22ab7yw.js";import{Gj as X,Ij as g}from"./chunk-4e4qtpca.js";import{Yj as tn,Zj as nn}from"./chunk-pbckwd41.js";import{Lk as ne}from"./chunk-sdapqhj0.js";import{EventEmitter as be}from"events";import Un from"node:path";function hn(t){if(t===void 0)return"undefined";if(typeof t==="string")return t;try{let i=JSON.stringify(t);return i===void 0?String(t):i}catch{return String(t)}}function An(t){let i=t;switch(t.code){case"type":return`类型错误:${t.message}`;case"required":return"缺少必需参数";case"minLength":return`字符串过短:${t.message}`;case"maxLength":return`字符串过长:${t.message}`;case"minimum":case"exclusiveMinimum":return`数值太小:${t.message}`;case"maximum":case"exclusiveMaximum":return`数值太大:${t.message}`;case"minItems":return`数组元素过少:${t.message}`;case"maxItems":return`数组元素过多:${t.message}`;case"format":return`格式错误:${t.message}`;case"enum":return`必须是枚举允许的值之一:${t.message}`;case"const":return`必须是指定的字面量值:${t.message}`;case"additionalProperties":case"unevaluatedProperties":return`包含未知参数:${t.message}`;case"anyOf":case"oneOf":return"不符合任何有效的类型定义";case"~refine":return t.message||"自定义验证失败";default:return t.message||`验证失败:${hn(i)}`}}class Yt extends Error{issues;type;constructor(t,i,n="validation_error"){super(t);this.issues=i;this.type=n;this.name="ToolValidationError"}}function Ft(t,i){let n=X(t,i);if(n.success)return n.data;let e=n.error.issues.map((r)=>({field:r.path.length>0?r.path.join("."):"root",message:An(r),value:r.value})),s=e.length===1?`参数验证失败 [${e[0].field}]: ${e[0].message}`:`参数验证失败 (${e.length} 个错误):
1
+ import{Ac as En,xc as Ut,yc as fn,zc as yn}from"./chunk-9qxch6sy.js";import{Ah as xt}from"./chunk-c08qbh8h.js";import{$h as S,Gh as Ot,Hh as vi,Jh as en,Kh as Bt,Lh as U,Mh as sn,Nh as St,Oh as gt,Qh as rn,Rh as Tn,Sh as B,Th as on,Uh as dn,Vh as pn,Wh as Lt,Xh as cn,Yh as un,Zh as Mn,ci as wn,di as Vt,ei as lt,fi as h,gi as jt}from"./chunk-6wzwkjep.js";import{Zi as Zt}from"./chunk-b22ab7yw.js";import{Gj as X,Ij as g}from"./chunk-saz6mwpq.js";import{Xj as tn,Yj as nn}from"./chunk-cc9vbgqc.js";import{Jk as ne}from"./chunk-gmpsfkgg.js";import{EventEmitter as be}from"events";import Un from"node:path";function hn(t){if(t===void 0)return"undefined";if(typeof t==="string")return t;try{let i=JSON.stringify(t);return i===void 0?String(t):i}catch{return String(t)}}function An(t){let i=t;switch(t.code){case"type":return`类型错误:${t.message}`;case"required":return"缺少必需参数";case"minLength":return`字符串过短:${t.message}`;case"maxLength":return`字符串过长:${t.message}`;case"minimum":case"exclusiveMinimum":return`数值太小:${t.message}`;case"maximum":case"exclusiveMaximum":return`数值太大:${t.message}`;case"minItems":return`数组元素过少:${t.message}`;case"maxItems":return`数组元素过多:${t.message}`;case"format":return`格式错误:${t.message}`;case"enum":return`必须是枚举允许的值之一:${t.message}`;case"const":return`必须是指定的字面量值:${t.message}`;case"additionalProperties":case"unevaluatedProperties":return`包含未知参数:${t.message}`;case"anyOf":case"oneOf":return"不符合任何有效的类型定义";case"~refine":return t.message||"自定义验证失败";default:return t.message||`验证失败:${hn(i)}`}}class Yt extends Error{issues;type;constructor(t,i,n="validation_error"){super(t);this.issues=i;this.type=n;this.name="ToolValidationError"}}function Ft(t,i){let n=X(t,i);if(n.success)return n.data;let e=n.error.issues.map((r)=>({field:r.path.length>0?r.path.join("."):"root",message:An(r),value:r.value})),s=e.length===1?`参数验证失败 [${e[0].field}]: ${e[0].message}`:`参数验证失败 (${e.length} 个错误):
2
2
  ${e.map((r)=>` - ${r.field}: ${r.message}`).join(`
3
3
  `)}`;throw new Yt(s,e)}function et(t){if(!t||typeof t!=="object")return;let i=t;if(i.type==="object"&&i.properties)i.required??=[],i.additionalProperties??=!1;for(let n of Object.values(i))if(Array.isArray(n))for(let e of n)et(e);else et(n)}function st(t){let i=JSON.parse(JSON.stringify(t,(n,e)=>n.startsWith("~")?void 0:e));return et(i),i}class rt{toolName;params;executeFn;descriptionFn;affectedPathsFn;isRetrySafe;constructor(t,i,n,e,s,r=!1){this.toolName=t;this.params=i;this.executeFn=n;this.descriptionFn=e;this.affectedPathsFn=s;this.isRetrySafe=r}getDescription(){if(this.descriptionFn)return this.descriptionFn(this.params);return`执行工具: ${this.toolName}`}getAffectedPaths(){if(this.affectedPathsFn)return this.affectedPathsFn(this.params);return[]}async execute(t,i,n){let e={signal:t,updateOutput:i,...n};return this.executeFn(this.params,e)}}function Jt(t){return{name:t.name,displayName:t.displayName,kind:t.kind,isConcurrencySafe:t.isConcurrencySafe??!1,isRetrySafe:t.isRetrySafe??!1,parallelism:t.parallelism??(t.isConcurrencySafe?"shared":"exclusive"),strict:t.strict??!1,description:t.description,version:t.version||"1.0.0",category:t.category,tags:t.tags||[],getFunctionDeclaration(){let i=st(t.schema),n=t.description.short;if(t.description.long)n+=`
4
4