zen-code 4.10.2 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/app.js +149 -239
  2. package/dist/{chunk-pzb224c5.js → chunk-0p3df51n.js} +2 -2
  3. package/dist/{chunk-tjg2e8v3.js → chunk-0pzpg2ra.js} +2 -2
  4. package/dist/{chunk-wmyc17aa.js → chunk-142wmdx8.js} +1 -1
  5. package/dist/chunk-1t3rabge.js +1 -0
  6. package/dist/chunk-2gd8vzrf.js +2 -0
  7. package/dist/{chunk-vrnj0659.js → chunk-2z45fjmt.js} +51 -51
  8. package/dist/chunk-3gn0c0j2.js +2 -0
  9. package/dist/chunk-3nhw50tg.js +1 -0
  10. package/dist/{chunk-g974hxbz.js → chunk-4260bzp9.js} +1 -1
  11. package/dist/{chunk-5c3bpcpm.js → chunk-4vh3dxeg.js} +1 -1
  12. package/dist/{chunk-hnnwbfqk.js → chunk-5e2s5jvw.js} +2 -2
  13. package/dist/{chunk-s5cqejr6.js → chunk-5kcxxes1.js} +1 -1
  14. package/dist/chunk-6t0qzren.js +2 -0
  15. package/dist/chunk-74k5n8f5.js +2 -0
  16. package/dist/chunk-780j97nd.js +1 -0
  17. package/dist/chunk-78t2g3ht.js +1 -0
  18. package/dist/chunk-7d48d71t.js +228 -0
  19. package/dist/chunk-96b00ygr.js +1 -0
  20. package/dist/chunk-9kbktaf8.js +89 -0
  21. package/dist/chunk-a4rvf135.js +1 -0
  22. package/dist/chunk-ahsvdb98.js +1 -0
  23. package/dist/{chunk-k4q8j7pg.js → chunk-an34z8wv.js} +1 -1
  24. package/dist/chunk-arm90pny.js +1 -0
  25. package/dist/{chunk-40ht9pe1.js → chunk-avqzptcg.js} +2 -2
  26. package/dist/{chunk-s1tbdcs8.js → chunk-b0yk07x5.js} +1 -1
  27. package/dist/{chunk-nqh1pptf.js → chunk-be8n8w26.js} +1 -1
  28. package/dist/{chunk-c7kd2qrp.js → chunk-bqkrynm6.js} +112 -111
  29. package/dist/chunk-bv28r5cf.js +1 -0
  30. package/dist/{chunk-mmx0k2yq.js → chunk-c59eqb10.js} +1 -1
  31. package/dist/{chunk-t6440ajd.js → chunk-cbr2vrpt.js} +2 -2
  32. package/dist/{chunk-fzh0v6r0.js → chunk-csn4vg3d.js} +2 -2
  33. package/dist/chunk-df36fv24.js +1 -0
  34. package/dist/chunk-e3jv1c1w.js +1 -0
  35. package/dist/{chunk-vbb3m0vz.js → chunk-e6m161vn.js} +1 -1
  36. package/dist/{chunk-vfxjbdz4.js → chunk-eqetcfer.js} +1 -1
  37. package/dist/{chunk-8f19qk9r.js → chunk-eze2fzrq.js} +1 -1
  38. package/dist/{chunk-nmzx5nmt.js → chunk-femf7e4d.js} +1 -1
  39. package/dist/{chunk-gt8c6dne.js → chunk-fvg6pct8.js} +1 -1
  40. package/dist/chunk-g2n6hnjp.js +5 -0
  41. package/dist/{chunk-e8kxa5vj.js → chunk-ge071wp4.js} +2 -2
  42. package/dist/chunk-h9w6y105.js +1 -0
  43. package/dist/chunk-hzxg9kx6.js +1 -0
  44. package/dist/{chunk-g2zskge5.js → chunk-j2qd9mfs.js} +2 -2
  45. package/dist/chunk-j40cj742.js +2 -0
  46. package/dist/chunk-jbqqb1ht.js +2 -0
  47. package/dist/chunk-jz0kw4yt.js +2 -0
  48. package/dist/chunk-kknfcsyy.js +1 -0
  49. package/dist/{chunk-zg54h6gy.js → chunk-kvnw06wg.js} +1 -1
  50. package/dist/chunk-kyb15dg8.js +2 -0
  51. package/dist/chunk-mq4m1w4w.js +15 -0
  52. package/dist/chunk-mqcbjght.js +1 -0
  53. package/dist/{chunk-pe8mzxwn.js → chunk-mqm8wnc8.js} +11 -11
  54. package/dist/chunk-n7bpjcb0.js +1 -0
  55. package/dist/chunk-ncaqgas1.js +160 -0
  56. package/dist/{chunk-f0m4532p.js → chunk-nh11afw0.js} +5 -5
  57. package/dist/{chunk-spx7nn8t.js → chunk-nwmvyez4.js} +2 -2
  58. package/dist/chunk-nzyvqxt4.js +1 -0
  59. package/dist/{chunk-nsw5168d.js → chunk-p6c1xbd5.js} +2 -2
  60. package/dist/chunk-p75m7q2h.js +1 -0
  61. package/dist/{chunk-spa69h7p.js → chunk-pffdbhs6.js} +2 -2
  62. package/dist/chunk-phw7yp5t.js +1 -0
  63. package/dist/{chunk-8tbtavry.js → chunk-q0452p0f.js} +2 -2
  64. package/dist/chunk-r133z8tq.js +8 -0
  65. package/dist/{chunk-qxebn3jw.js → chunk-rqymdmqg.js} +3 -3
  66. package/dist/chunk-rr7h6wdp.js +7 -0
  67. package/dist/{chunk-gfhmzpy7.js → chunk-s04zfe57.js} +2 -3
  68. package/dist/chunk-twhnh3dc.js +1 -0
  69. package/dist/chunk-tws3wcnm.js +2 -0
  70. package/dist/chunk-txnezkkt.js +1 -0
  71. package/dist/{chunk-tjvhqr94.js → chunk-vttq7sqg.js} +1 -1
  72. package/dist/chunk-vvs5da2x.js +281 -0
  73. package/dist/{chunk-n9rpnke9.js → chunk-vwj4n000.js} +1 -1
  74. package/dist/{chunk-4wnmk2tj.js → chunk-w4tbr5h7.js} +3 -3
  75. package/dist/{chunk-n7s6my89.js → chunk-wts8db9p.js} +32 -32
  76. package/dist/{chunk-y8qhrx11.js → chunk-x17jyjan.js} +1 -1
  77. package/dist/chunk-x7x7esvz.js +8 -0
  78. package/dist/chunk-xprg4hxp.js +17 -0
  79. package/dist/chunk-xrfpz1vw.js +2 -0
  80. package/dist/{chunk-hve2a279.js → chunk-xtr6s7kh.js} +2 -2
  81. package/dist/{chunk-bzgznka5.js → chunk-y807k0kw.js} +1 -1
  82. package/dist/chunk-ycp2e43r.js +1 -0
  83. package/dist/chunk-yfv1xeeh.js +2 -0
  84. package/dist/chunk-zxpb45tb.js +1 -0
  85. package/dist/cli.js +1 -1
  86. package/dist/nonInteractive.js +80 -80
  87. package/dist/zen-core.js +261 -0
  88. package/dist/zen-keyboard.js +1 -1
  89. package/package.json +5 -3
  90. package/dist/chunk-0ddrb30y.js +0 -1
  91. package/dist/chunk-215an3fz.js +0 -1
  92. package/dist/chunk-4z0w0ng1.js +0 -2
  93. package/dist/chunk-57bj89e2.js +0 -1
  94. package/dist/chunk-5a5mepqj.js +0 -1
  95. package/dist/chunk-7kw7ss8d.js +0 -1
  96. package/dist/chunk-86m0rmtc.js +0 -1
  97. package/dist/chunk-9rayxazs.js +0 -8
  98. package/dist/chunk-a9gpb2tx.js +0 -2
  99. package/dist/chunk-a9tw6d68.js +0 -1
  100. package/dist/chunk-anbtppz1.js +0 -294
  101. package/dist/chunk-bca8tkkr.js +0 -1
  102. package/dist/chunk-bdqds8vh.js +0 -1
  103. package/dist/chunk-dvbb3dd1.js +0 -233
  104. package/dist/chunk-ehmmd8qc.js +0 -1
  105. package/dist/chunk-ejfa95sm.js +0 -1
  106. package/dist/chunk-f7cps5x1.js +0 -1
  107. package/dist/chunk-fbemqjck.js +0 -2
  108. package/dist/chunk-feeqtzv5.js +0 -1
  109. package/dist/chunk-g9911ymn.js +0 -1
  110. package/dist/chunk-h8fdexm4.js +0 -2
  111. package/dist/chunk-hp2jzn9x.js +0 -166
  112. package/dist/chunk-js4qp900.js +0 -2
  113. package/dist/chunk-m21hvv91.js +0 -2
  114. package/dist/chunk-mnnyjmgw.js +0 -224
  115. package/dist/chunk-mw7x6xqp.js +0 -1
  116. package/dist/chunk-nk62q95g.js +0 -93
  117. package/dist/chunk-pg1ppq4y.js +0 -1
  118. package/dist/chunk-q1cxrg0x.js +0 -2
  119. package/dist/chunk-swc7se71.js +0 -2
  120. package/dist/chunk-swyc15ym.js +0 -1
  121. package/dist/chunk-t2s3s6af.js +0 -1
  122. package/dist/chunk-vdmq9d9x.js +0 -4
  123. package/dist/chunk-wt3p1w1g.js +0 -1
  124. package/dist/chunk-y5ry5c7v.js +0 -1
  125. package/dist/chunk-yy8p9zph.js +0 -2
  126. package/dist/chunk-z61m3anh.js +0 -1
  127. package/dist/chunk-zr90qp47.js +0 -1
  128. package/dist/chunk-zsa62xr0.js +0 -2
@@ -1,4 +1,4 @@
1
- import{Gd as D,xd as q}from"./chunk-n9rpnke9.js";import{$g as C,Dg as N,Fg as Q,Xg as x,Yg as _,_g as b,ah as f}from"./chunk-hp2jzn9x.js";import"./chunk-nk62q95g.js";import"./chunk-nmzx5nmt.js";import"./chunk-tjg2e8v3.js";import"./chunk-hve2a279.js";import{Dl as m,Il as j}from"./chunk-y8qhrx11.js";var K={maxRetries:3,baseDelayMs:100,nonRetryablePatterns:["database disk image is malformed","database is malformed","cannot rollback","no transaction is active","database or disk is full"],isRetryableError:(H)=>{let Z=H?.message?.toLowerCase()||"";for(let B of K.nonRetryablePatterns)if(Z.includes(B.toLowerCase()))return!1;return Z.includes("sqlite_busy")||Z.includes("database is locked")||Z==="sqlite_busy"||Z==="database is locked"}};async function R(H,Z){let B=null;for(let $=0;$<K.maxRetries;$++)try{return await H()}catch(J){B=J;let U=J?.message?.toLowerCase()||"";if(!K.isRetryableError(J)){if(U.includes("malformed")){let M=Error(`SQLite database is corrupted: ${J.message}
1
+ import{Yd as q,fe as D}from"./chunk-vwj4n000.js";import{Ag as _,Cg as b,Dg as C,Eg as f,sg as N,ug as Q,zg as x}from"./chunk-ncaqgas1.js";import"./chunk-9kbktaf8.js";import"./chunk-r133z8tq.js";import"./chunk-g2n6hnjp.js";import"./chunk-femf7e4d.js";import"./chunk-0pzpg2ra.js";import"./chunk-xtr6s7kh.js";import{Rl as m,Wl as j}from"./chunk-x17jyjan.js";var K={maxRetries:3,baseDelayMs:100,nonRetryablePatterns:["database disk image is malformed","database is malformed","cannot rollback","no transaction is active","database or disk is full"],isRetryableError:(H)=>{let Z=H?.message?.toLowerCase()||"";for(let B of K.nonRetryablePatterns)if(Z.includes(B.toLowerCase()))return!1;return Z.includes("sqlite_busy")||Z.includes("database is locked")||Z==="sqlite_busy"||Z==="database is locked"}};async function R(H,Z){let B=null;for(let $=0;$<K.maxRetries;$++)try{return await H()}catch(J){B=J;let U=J?.message?.toLowerCase()||"";if(!K.isRetryableError(J)){if(U.includes("malformed")){let M=Error(`SQLite database is corrupted: ${J.message}
2
2
 
3
3
  Context: ${Z||"unknown"}
4
4
 
@@ -10,7 +10,7 @@ Possible causes:
10
10
  Recovery options:
11
11
  - Delete the database file to start fresh (data will be lost)
12
12
  - Use SQLite recovery tools: sqlite3 <db> ".recover" > recover.sql
13
- - Switch to PostgreSQL/Redis for production use`);throw M.name="SQLiteCorruptError",M.cause=J,M}throw J}if($<K.maxRetries-1){let M=K.baseDelayMs*Math.pow(2,$);console.warn(`SQLite lock detected${Z?` (${Z})`:""}, retrying in ${M}ms (attempt ${$+1}/${K.maxRetries})`),await new Promise((X)=>setTimeout(X,M))}}throw B}function T(H){if(H===null||typeof H!=="object")return JSON.stringify(H);if(Array.isArray(H))return JSON.stringify(H.map(($)=>T($)));let Z={},B=Object.keys(H).sort();for(let $ of B)Z[$]=H[$];return JSON.stringify(Z,($,J)=>{if(J!==null&&typeof J==="object"&&!Array.isArray(J)){let U={},M=Object.keys(J).sort();for(let X of M)U[X]=J[X];return U}return J})}class E extends _{db;isSetup;constructor(H,Z){super(Z);this.db=new q({dialect:H}),this.isSetup=!1}static async fromConnStringAsync(H){let Z;if(globalThis.Bun&&!process.env.DISABLE_BUN_SQLITE){console.log("LG | Using BunSqliteDialect "+H);let{BunSqliteDialect:B}=await import("./chunk-mmx0k2yq.js");Z=new E(new B({url:H}))}else{console.log("LG | Using NodeWasmDialect");let{default:B}=await import("./chunk-vbb3m0vz.js").then((m)=>m(m.default,1)),{NodeWasmDialect:$}=await import("./chunk-zg54h6gy.js");console.log(H);let J=new $({database:new B.Database(H)});Z=new E(J)}return await Z.setup(),Z}async setup(){if(this.isSetup)return;await D`PRAGMA busy_timeout = 5000`.execute(this.db),await D`PRAGMA journal_mode = WAL`.execute(this.db),await D`PRAGMA synchronous = NORMAL`.execute(this.db),await D`PRAGMA wal_autocheckpoint = 1000`.execute(this.db),await D`
13
+ - Switch to PostgreSQL/Redis for production use`);throw M.name="SQLiteCorruptError",M.cause=J,M}throw J}if($<K.maxRetries-1){let M=K.baseDelayMs*Math.pow(2,$);console.warn(`SQLite lock detected${Z?` (${Z})`:""}, retrying in ${M}ms (attempt ${$+1}/${K.maxRetries})`),await new Promise((X)=>setTimeout(X,M))}}throw B}function T(H){if(H===null||typeof H!=="object")return JSON.stringify(H);if(Array.isArray(H))return JSON.stringify(H.map(($)=>T($)));let Z={},B=Object.keys(H).sort();for(let $ of B)Z[$]=H[$];return JSON.stringify(Z,($,J)=>{if(J!==null&&typeof J==="object"&&!Array.isArray(J)){let U={},M=Object.keys(J).sort();for(let X of M)U[X]=J[X];return U}return J})}class E extends _{db;isSetup;constructor(H,Z){super(Z);this.db=new q({dialect:H}),this.isSetup=!1}static async fromConnStringAsync(H){let Z;if(globalThis.Bun&&!process.env.DISABLE_BUN_SQLITE){console.log("LG | Using BunSqliteDialect "+H);let{BunSqliteDialect:B}=await import("./chunk-c59eqb10.js");Z=new E(new B({url:H}))}else{console.log("LG | Using NodeWasmDialect");let{default:B}=await import("./chunk-e6m161vn.js").then((m)=>m(m.default,1)),{NodeWasmDialect:$}=await import("./chunk-kvnw06wg.js");console.log(H);let J=new $({database:new B.Database(H)});Z=new E(J)}return await Z.setup(),Z}async setup(){if(this.isSetup)return;await D`PRAGMA busy_timeout = 5000`.execute(this.db),await D`PRAGMA journal_mode = WAL`.execute(this.db),await D`PRAGMA synchronous = NORMAL`.execute(this.db),await D`PRAGMA wal_autocheckpoint = 1000`.execute(this.db),await D`
14
14
  CREATE TABLE IF NOT EXISTS shallow_checkpoints (
15
15
  thread_id TEXT NOT NULL,
16
16
  checkpoint_ns TEXT NOT NULL DEFAULT '',
@@ -0,0 +1,2 @@
1
+ import{H as a}from"./chunk-6t0qzren.js";import{K as f,M as r,N as l,O as n}from"./chunk-w4tbr5h7.js";import{U as x,fa as P}from"./chunk-bqkrynm6.js";import{Rl as g}from"./chunk-x17jyjan.js";var t=g(x(),1);function _({enabled:o=!0}={}){let i=a();return r({queryKey:n.config.detail(),queryFn:()=>i.config.get.query(),enabled:o,staleTime:300000,gcTime:600000})}function v(){let o=a(),i=f();return l({mutationFn:(e)=>o.config.update.mutate(e),onSuccess:(e)=>{i.setQueryData(n.config.detail(),e),i.invalidateQueries({queryKey:n.providers.all}),i.invalidateQueries({queryKey:n.models.all})}})}var h=g(P(),1),C=t.createContext(void 0),B=()=>{let o=t.useContext(C);if(o===void 0)throw Error("useSettings must be used within a SettingsProvider");return o},N=({children:o})=>{let i=a(),{data:e}=_(),d=v(),s=e?.provider_id,{data:c=[]}=r({queryKey:n.models.available(s),queryFn:()=>i.models.list.query({providerId:s}),staleTime:1800000,retry:1,enabled:!!s}),u=t.useMemo(()=>{return{provider_id:e?.provider_id||"openai",provider_type:e?.provider_type||"openai",model_id:e?.model_id||c[0]?.id||"default",mcp_config:e?.mcp_config,enable_thinking:e?.enable_thinking??!0,streaming:e?.streaming??!1,active_agent:e?.active_agent||"",cwd:process.cwd()}},[e?.provider_id,e?.provider_type,e?.model_id,e?.mcp_config,e?.enable_thinking,e?.streaming,e?.active_agent,e?.providers,c]),p=t.useMemo(()=>e?.compact_mode??!1,[e?.compact_mode]),A=async()=>{await d.mutateAsync({compact_mode:!p})},m=t.useMemo(()=>e?.show_detailed_info??!1,[e?.show_detailed_info]),S=async()=>{await d.mutateAsync({show_detailed_info:!m})},M=async(w)=>{await d.mutateAsync(w)};return h.jsxDEV(C.Provider,{value:{config:e||null,updateConfig:M,extraParams:u,AVAILABLE_MODELS:c,compactMode:p,toggleCompactMode:A,showDetailedInfo:m,toggleDetailedInfo:S},children:o},void 0,!1,void 0,this)};
2
+ export{B as E,N as F};
@@ -0,0 +1,2 @@
1
+ import{xl as o}from"./chunk-0pzpg2ra.js";var e=o;
2
+ export{e as Nk};
@@ -0,0 +1,2 @@
1
+ import{E as x}from"./chunk-j40cj742.js";import{M as R,O as D}from"./chunk-w4tbr5h7.js";import{U as t,X as B,Y as q,fa as E,ga as m,ha as c}from"./chunk-bqkrynm6.js";import{Rl as S}from"./chunk-x17jyjan.js";var i=30000;function V(){let z=new AbortController,G=setTimeout(()=>{z.abort(),G=null},i);return{controller:z,cleanup:()=>{if(G!==null)clearTimeout(G),G=null}}}async function a(z,G){let{controller:N,cleanup:Q}=V();try{let H=await fetch(`${G}/models`,{method:"GET",headers:{Authorization:`Bearer ${z}`,"Content-Type":"application/json"},signal:N.signal});if(!H.ok){let Z=await H.text();throw Error(`OpenAI API error (${H.status}): ${H.statusText}`)}return(await H.json()).data.map((Z)=>({id:Z.id,name:Z.id,provider:"openai"})).sort((Z,g)=>Z.id.localeCompare(g.id))}catch(H){if(H.name==="AbortError")throw Error("OpenAI API request timeout (30s)");throw H}finally{Q()}}async function n(z,G){let{controller:N,cleanup:Q}=V();try{let H=await fetch(`${G}/v1/models`,{method:"GET",headers:{"x-api-key":z,"anthropic-version":"2023-06-01","Content-Type":"application/json"},signal:N.signal});if(!H.ok){let Z=await H.text();throw Error(`Anthropic API error (${H.status}): ${H.statusText}`)}return(await H.json()).data.map((Z)=>({id:Z.id,name:Z.display_name||Z.id,provider:"anthropic"}))}catch(H){if(H.name==="AbortError")throw Error("Anthropic API request timeout (30s)");throw H}finally{Q()}}async function d(z,G){let{controller:N,cleanup:Q}=V();try{let H=await fetch(G+"/v1beta/models",{method:"GET",headers:{Authorization:"Bearer "+z},signal:N.signal});if(!H.ok)throw Error(`Gemini API error (${H.status}): Invalid API key`);return(await H.json()).models.map((Z)=>({id:Z.name,name:Z.displayName||Z.name,provider:"gemini"}))}catch(H){if(H.name==="AbortError")throw Error("Gemini API request timeout (30s)");throw H}finally{Q()}}function zz({provider:z,enabled:G=!0}){return R({queryKey:D.models.list(z?.id||"unknown"),queryFn:async()=>{if(!z||!z.apiKey||!z.baseUrl)return[];try{if(z.type==="openai")return await a(z.apiKey,z.baseUrl);else if(z.type==="anthropic")return await n(z.apiKey,z.baseUrl);else if(z.type==="gemini")return await d(z.apiKey,z.baseUrl);return[]}catch(N){throw N}},enabled:G&&!!z&&!!z.apiKey&&!!z.baseUrl,staleTime:600000,retry:(N,Q)=>{if(Q?.message?.includes("timeout"))return N<2;if(Q?.name==="TypeError"||Q?.message?.includes("fetch"))return N<2;return!1}})}var J=S(t(),1);var $=S(E(),1),L=[{id:"openai",label:"OpenAI",defaultUrl:"https://api.openai.com/v1"},{id:"anthropic",label:"Anthropic",defaultUrl:"https://api.anthropic.com"},{id:"gemini",label:"Gemini",defaultUrl:"https://generativelanguage.googleapis.com/v1beta"}],_=[{key:"id",label:"ID",placeholder:"my-provider"},{key:"name",label:"Name",placeholder:"My Provider"},{key:"apiKey",label:"API Key",placeholder:"sk-xxx..."},{key:"url",label:"URL",placeholder:"https://api.xxx.com"}],o=({provider:z,onCancel:G,onSave:N})=>{let{config:Q}=x(),[H,O]=J.useState({id:z?.id||"",type:z?.type||"openai",name:z?.id||"",apiKey:z?.apiKey||"",baseUrl:z?.baseUrl||L[0].defaultUrl}),[Z,g]=J.useState({}),[U,v]=J.useState(0),w=J.useRef(H),C=J.useRef(U),f=J.useRef(Z);J.useEffect(()=>{w.current=H},[H]),J.useEffect(()=>{C.current=U},[U]),J.useEffect(()=>{f.current=Z},[Z]);let u=J.useMemo(()=>{return L.find((X)=>X.id===H.type)||L[0]},[H.type]),k=J.useCallback(()=>{let X=w.current,W={},A=Q?.providers||[];if(!X.id||X.id.length<3||X.id.length>32)W.id="ID 必须为 3-32 个字符";else if(!/^[a-zA-Z0-9_]+$/.test(X.id))W.id="ID 只能包含字母、数字和下划线";else if(A.some((M)=>M.id===X.id&&M.id!==z?.id))W.id="ID 已存在";if(!X.name||X.name.length<2||X.name.length>50)W.name="名称必须为 2-50 个字符";if(!X.apiKey)W.apiKey="API Key 不能为空";if(!X.baseUrl)W.baseUrl="Base URL 不能为空";else if(!X.baseUrl.startsWith("https://"))W.baseUrl="Base URL 必须以 https:// 开头";return g(W),Object.keys(W).length===0},[Q?.providers,z?.id]),h=J.useRef(k);J.useEffect(()=>{h.current=k},[k]);let K=J.useCallback(()=>{if(h.current())N(w.current)},[N]),P=J.useCallback(()=>{let X=w.current.type,A=(L.findIndex((Y)=>Y.id===X)+1)%L.length,M=L[A];O((Y)=>({...Y,type:M.id,baseUrl:Y.baseUrl||M.defaultUrl}))},[]),b=J.useCallback((X)=>{let W=C.current,A=X==="next"?(W+1)%_.length:(W-1+_.length)%_.length;v(A)},[]),p=(X)=>{let W=_[X];if(W.key==="url")return"baseUrl";return W.key},I=J.useRef(K),T=J.useRef(b),F=J.useRef(P),y=J.useRef(G);J.useEffect(()=>{I.current=K},[K]),J.useEffect(()=>{T.current=b},[b]),J.useEffect(()=>{F.current=P},[P]),J.useEffect(()=>{y.current=G},[G]),m((X,W)=>{if(W.return)I.current();else if(W.escape)y.current();else if(W.tab)T.current(W.shift?"prev":"next");else if(X===" ")F.current()},{isActive:!0});let j=(X)=>{let W=_[X],A=p(X),M=Z[A],Y=U===X;return $.jsxDEV(B,{marginBottom:0,children:[$.jsxDEV(q,{color:Y?"cyan":M?"red":"gray",children:[W.label,": "]},void 0,!0,void 0,this),Y?$.jsxDEV(B,{width:50,children:$.jsxDEV(c,{value:H[A],onChange:(l)=>O((s)=>({...s,[A]:l})),onSubmit:K,placeholder:W.placeholder,maxVisibleLines:1,showCursor:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this):$.jsxDEV(q,{children:H[A]||W.placeholder},void 0,!1,void 0,this),M&&$.jsxDEV(q,{color:"red",children:[" ",M]},void 0,!0,void 0,this)]},W.key,!0,void 0,this)};return $.jsxDEV(B,{flexDirection:"column",paddingX:2,children:[$.jsxDEV(B,{marginTop:1,flexDirection:"column",gap:1,children:[j(0),$.jsxDEV(B,{marginBottom:0,children:[$.jsxDEV(q,{color:U===0?"cyan":"gray",children:"Type: "},void 0,!1,void 0,this),$.jsxDEV(q,{color:"cyan",bold:!0,children:u.label},void 0,!1,void 0,this),$.jsxDEV(q,{color:"gray",children:" [空格切换]"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),j(1),j(2),j(3)]},void 0,!0,void 0,this),$.jsxDEV(B,{marginTop:1,children:$.jsxDEV(q,{color:"gray",dimColor:!0,children:[$.jsxDEV(q,{color:"cyan",children:"Enter"},void 0,!1,void 0,this)," 保存 ",$.jsxDEV(q,{color:"cyan",children:"Tab"},void 0,!1,void 0,this)," 切换字段"," ",$.jsxDEV(q,{color:"cyan",children:"Esc"},void 0,!1,void 0,this)," 取消"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},Nz=o;
2
+ export{zz as v,Nz as w};
@@ -0,0 +1 @@
1
+ import{l as U}from"./chunk-xrfpz1vw.js";import"./chunk-2gd8vzrf.js";import{M as g,O as D}from"./chunk-w4tbr5h7.js";import{U as C,X as w,Y as X,fa as L,ka as V}from"./chunk-bqkrynm6.js";import"./chunk-0p3df51n.js";import"./chunk-cbr2vrpt.js";import"./chunk-femf7e4d.js";import"./chunk-jbqqb1ht.js";import"./chunk-0pzpg2ra.js";import{Rl as v}from"./chunk-x17jyjan.js";var A=v(C(),1);function E(J){let{historyList:O,refreshHistoryList:Y,setHistoryFilter:Z}=U(),W=J?JSON.stringify(J):null,_=W?["history","list",W]:D.history.list();return g({queryKey:_,queryFn:async()=>{if(J)Z(J);return await Y(),O},staleTime:60000})}var G=v(L(),1),y=({onClose:J})=>{let{currentChatId:O,toHistoryChat:Y,createNewChat:Z,refreshHistoryList:W,historyFilter:_}=U(),b=A.useMemo(()=>({metadata:{path:process.cwd()}}),[]),{data:B=[],refetch:c}=E(b),p=A.useRef(W);A.default.useEffect(()=>{p.current=W},[W]);let j=(z)=>z.toLocaleTimeString(),H=(z)=>{switch(z){case"idle":return{emoji:"\uD83D\uDFE2",color:"green",text:"空闲"};case"busy":return{emoji:"\uD83D\uDFE1",color:"yellow",text:"忙碌"};case"interrupted":return{emoji:"\uD83D\uDFE0",color:"orange",text:"中断"};case"error":return{emoji:"\uD83D\uDD34",color:"red",text:"错误"};default:return{emoji:"⚪",color:"gray",text:z}}},N=A.useCallback(async()=>{return B},[B]),P=A.useCallback((z,$,Q)=>{let S=H(z.status),M=z.thread_id===O,m=j(new Date(z.updated_at)),k=z.title||z.thread_id.slice(-8),x=Q?">":" ",f=M?"▶":" ",T=(()=>{if(M)return{color:"green",bold:!0};else if(Q)return{color:"cyanBright",bold:!0};else return{color:S.color,bold:!1}})();return G.jsxDEV(w,{children:[G.jsxDEV(X,{bold:T.bold,color:T.color,children:[x,f," ",$+1,". ",k]},void 0,!0,void 0,this),G.jsxDEV(w,{flexGrow:1},void 0,!1,void 0,this),G.jsxDEV(X,{dimColor:!0,children:m},void 0,!1,void 0,this)]},z.thread_id,!0,void 0,this)},[O]),F=A.useCallback((z)=>{return z.thread_id===O},[O]),R=A.useCallback(async(z)=>{if(z.value==="new_chat")Z({});else Y(z);J()},[Z,Y,J]),q=A.useCallback((z)=>{let $=z.find((Q)=>Q.thread_id===O);return $?G.jsxDEV(X,{color:"gray",dimColor:!0,children:["当前: ",G.jsxDEV(X,{color:"green",children:$.thread_id.substring(0,8)},void 0,!1,void 0,this),G.jsxDEV(X,{children:[" ",_?.metadata?.path]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):null},[O,_]),K=A.useMemo(()=>({}),[]),I=A.useMemo(()=>({id:"history",title:"历史记录",icon:"\uD83D\uDCDC",dataSource:N,searchable:!0,searchFields:["title","thread_id"],searchPlaceholder:"搜索对话标题...",filterable:!1,filters:[],defaultFilter:"all",itemHeight:1,visibleCount:10,renderItem:P,isSelected:F,onSelect:R,showCount:!0,statusInfo:q,keyMap:K}),[N,P,F,R,q,K]);return G.jsxDEV(V,{config:I,onClose:J},void 0,!1,void 0,this)},zz=y;export{zz as default};
@@ -1 +1 @@
1
- import{d as V,e as L,g as M}from"./chunk-swc7se71.js";import{Kd as U}from"./chunk-n9rpnke9.js";import"./chunk-y8qhrx11.js";async function P(z){return typeof z==="function"?await z():z}var Z=class extends M{constructor(z){super(async()=>{let x=await P(z.database);return{db:x,close:()=>x.close(),query:L({all:async(H,A)=>{return await x.execO(H,A)},run:async()=>({numAffectedRows:BigInt(x.api.changes(x.db)),insertId:BigInt((await x.execA("SELECT last_insert_rowid()"))[0])})})}},z.onCreateConnection)}},_=class extends V{constructor(){super(()=>new U)}},$=class extends M{constructor(z){super(async()=>{let x=await P(z.database);return{db:x,close:()=>x.close(),query:L({all:(H,A)=>{return x.all(H,A)},run:(H)=>{let{changes:A,lastInsertRowid:K}=x.run(H);return{insertId:BigInt(K),numAffectedRows:BigInt(A)}}}),iterator:(H,A,K)=>{if(!H)throw Error("Only support select query");return x.prepare(A).iterate(K)}}},z.onCreateConnection)}},v=class extends M{constructor(z){super(async()=>{let x=await P(z.database);return{db:x,close:()=>x.close(),query:L({all:(H,A)=>{return x.selectObjects(H,A)},run:()=>({insertId:BigInt(x.selectArray("SELECT last_insert_rowid()")?.[0]||0),numAffectedRows:BigInt(x.changes(!1,!0))})})}},z.onCreateConnection)}},C=class extends M{constructor(z){super(async()=>{let x=await P(z.database);return{db:x,close:()=>x.close(),query:L({run:()=>({insertId:BigInt(x.exec("SELECT last_insert_rowid()")[0].values[0][0]),numAffectedRows:BigInt(x.getRowsModified())}),all:(H,A)=>{let K=x.prepare(H);try{if(A?.length)K.bind(A);let T=[];while(K.step())T.push(K.getAsObject());return T}finally{K.free()}}})}},z.onCreateConnection)}};export{C as SqlJsDialect,v as OfficialWasmDialect,$ as NodeWasmDialect,_ as EmptyDialect,Z as CrSqliteDialect};
1
+ import{a as V,b as L,d as M}from"./chunk-kyb15dg8.js";import{je as U}from"./chunk-vwj4n000.js";import"./chunk-x17jyjan.js";async function P(z){return typeof z==="function"?await z():z}var Z=class extends M{constructor(z){super(async()=>{let x=await P(z.database);return{db:x,close:()=>x.close(),query:L({all:async(H,A)=>{return await x.execO(H,A)},run:async()=>({numAffectedRows:BigInt(x.api.changes(x.db)),insertId:BigInt((await x.execA("SELECT last_insert_rowid()"))[0])})})}},z.onCreateConnection)}},_=class extends V{constructor(){super(()=>new U)}},$=class extends M{constructor(z){super(async()=>{let x=await P(z.database);return{db:x,close:()=>x.close(),query:L({all:(H,A)=>{return x.all(H,A)},run:(H)=>{let{changes:A,lastInsertRowid:K}=x.run(H);return{insertId:BigInt(K),numAffectedRows:BigInt(A)}}}),iterator:(H,A,K)=>{if(!H)throw Error("Only support select query");return x.prepare(A).iterate(K)}}},z.onCreateConnection)}},v=class extends M{constructor(z){super(async()=>{let x=await P(z.database);return{db:x,close:()=>x.close(),query:L({all:(H,A)=>{return x.selectObjects(H,A)},run:()=>({insertId:BigInt(x.selectArray("SELECT last_insert_rowid()")?.[0]||0),numAffectedRows:BigInt(x.changes(!1,!0))})})}},z.onCreateConnection)}},C=class extends M{constructor(z){super(async()=>{let x=await P(z.database);return{db:x,close:()=>x.close(),query:L({run:()=>({insertId:BigInt(x.exec("SELECT last_insert_rowid()")[0].values[0][0]),numAffectedRows:BigInt(x.getRowsModified())}),all:(H,A)=>{let K=x.prepare(H);try{if(A?.length)K.bind(A);let T=[];while(K.step())T.push(K.getAsObject());return T}finally{K.free()}}})}},z.onCreateConnection)}};export{C as SqlJsDialect,v as OfficialWasmDialect,$ as NodeWasmDialect,_ as EmptyDialect,Z as CrSqliteDialect};
@@ -0,0 +1,2 @@
1
+ import{Mb as $,ie as P,kb as X,me as U,te as j,ue as A,za as T}from"./chunk-vwj4n000.js";import{Wl as E}from"./chunk-x17jyjan.js";var Z=class{constructor(z){this.createDriver=z}createDriver;createQueryCompiler(){return new U}createAdapter(){return new A}createIntrospector(z){return new j(z)}},F=class{promise;resolve;async lock(){while(this.promise)await this.promise;this.promise=new Promise((z)=>{this.resolve=z})}unlock(){let z=this.resolve;this.promise=void 0,this.resolve=void 0,z?.()}};async function V(z,H,J,O,K){await J.executeQuery(K(X.createWithChildren([X.createWithSql(`${z} `),T.create(O)]),H()))}var _=class{mutex=new F;conn;savepoint;releaseSavepoint;rollbackToSavepoint;init;constructor(z){this.init=()=>import("./chunk-twhnh3dc.js").then(({createQueryId:H})=>{if(H)this.savepoint=V.bind(null,"savepoint",H),this.releaseSavepoint=V.bind(null,"release",H),this.rollbackToSavepoint=V.bind(null,"rollback to",H)}).then(z)}async acquireConnection(){return await this.mutex.lock(),this.conn}async beginTransaction(z){await z.executeQuery(P.raw("begin"))}async commitTransaction(z){await z.executeQuery(P.raw("commit"))}async rollbackTransaction(z){await z.executeQuery(P.raw("rollback"))}async releaseConnection(){this.mutex.unlock()}};function L(z){return async(H,J,O)=>{let K=await z.all(J,O);return H||K.length?{rows:K}:{rows:[],...await z.run("select 1")}}}function M(z){return z===void 0||z===null?void 0:BigInt(z)}var R=class extends _{db;constructor(z,H){super(async()=>{this.db=await z(),this.conn=new W(this.db),await H?.(this.conn)})}async destroy(){await this.db?.close()}},W=class{constructor(z){this.db=z}async*streamQuery({parameters:z,query:H,sql:J}){if(!this.db.iterator)throw Error("streamQuery() is not supported.");let O=this.db.iterator($.is(H),J,z);for await(let K of O)yield{rows:[K]}}async executeQuery({parameters:z,query:H,sql:J}){return await this.db.query($.is(H),J,z)}},b=class extends Z{constructor(z,H){super(()=>new R(z,H))}};
2
+ export{Z as a,L as b,M as c,b as d};
@@ -0,0 +1,15 @@
1
+ import{Hg as a,Ig as s}from"./chunk-vvs5da2x.js";import{qk as o}from"./chunk-9kbktaf8.js";var l=o(async(c)=>{let e=await s(c);if(e.failed_results.length>0){let n=e.failed_results.map((t)=>`- ${t.url}: ${t.error}`).join(`
2
+ `),r=e.results.map((t)=>t.raw_content).join(`
3
+
4
+ ---
5
+
6
+ `);return r?`${r}
7
+
8
+ **Failed URLs:**
9
+ ${n}`:`All URLs failed:
10
+ ${n}`}return e.results.map((n)=>n.raw_content).join(`
11
+
12
+ ---
13
+
14
+ `)},{name:"web_fetch",description:"Fetch and extract readable content from one or more URLs. Returns Markdown-formatted content with YAML frontmatter. Supports general web pages, Feishu docs, Docker Hub, and more.",schema:a}),m={name:"web",tools:[l]};
15
+ export{m as xa};