agentroam 0.2.0-preview.3 → 0.2.0-preview.4
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.
- package/dist/cli.js +1 -1
- package/dist/cloudflared/bundled-asset.test.js +1 -1
- package/dist/cloudflared/manifest.js +1 -1
- package/dist/tunnel/cloudflare-provider.js +17 -10
- package/dist/tunnel/cloudflare-provider.test.js +33 -0
- package/dist/tunnel/proxy-settings.js +141 -0
- package/dist/tunnel/proxy-settings.test.js +111 -0
- package/dist/tunnel/public-readiness.js +60 -36
- package/dist/tunnel/public-readiness.test.js +80 -0
- package/package.json +27 -9
- package/runtime/.next/BUILD_ID +1 -1
- package/runtime/.next/app-build-manifest.json +4 -4
- package/runtime/.next/app-path-routes-manifest.json +1 -1
- package/runtime/.next/build-manifest.json +7 -7
- package/runtime/.next/prerender-manifest.json +1 -1
- package/runtime/.next/react-loadable-manifest.json +1 -1
- package/runtime/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/runtime/.next/server/app/_not-found.html +1 -1
- package/runtime/.next/server/app/_not-found.rsc +1 -1
- package/runtime/.next/server/app/api/agent/abort/route.js +1 -1
- package/runtime/.next/server/app/api/agent/answer/route.js +1 -1
- package/runtime/.next/server/app/api/agent/model/route.js +1 -0
- package/runtime/.next/server/app/api/agent/model/route.js.nft.json +1 -0
- package/runtime/.next/server/app/api/agent/model.body +1 -0
- package/runtime/.next/server/app/api/agent/model.meta +1 -0
- package/runtime/.next/server/app/api/agent/run/route.js +1 -1
- package/runtime/.next/server/app/api/agent/steer/route.js +1 -0
- package/runtime/.next/server/app/api/agent/steer/route.js.nft.json +1 -0
- package/runtime/.next/server/app/api/agent/stream/route.js +3 -2
- package/runtime/.next/server/app/api/mcp/connect/route.js +1 -1
- package/runtime/.next/server/app/api/plugins/load/route.js +1 -1
- package/runtime/.next/server/app/api/remote-tools/register/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/[id]/route.js +1 -1
- package/runtime/.next/server/app/api/sessions/route.js +1 -1
- package/runtime/.next/server/app/api/skills/route.js +1 -1
- package/runtime/.next/server/app/api/tools/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/login/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/logout/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/revoke-all/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/setup/route.js +1 -1
- package/runtime/.next/server/app/api/web-auth/status/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/bootstrap/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/device-state/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/history/route.js +1 -1
- package/runtime/.next/server/app/api/web-console/history/route.js.nft.json +1 -1
- package/runtime/.next/server/app/api/web-console/preferences/route.js +1 -1
- package/runtime/.next/server/app/web/page.js +10 -10
- package/runtime/.next/server/app/web/page_client-reference-manifest.js +1 -1
- package/runtime/.next/server/app/web.html +1 -1
- package/runtime/.next/server/app/web.rsc +2 -2
- package/runtime/.next/server/app-paths-manifest.json +13 -11
- package/runtime/.next/server/chunks/322.js +28 -12
- package/runtime/.next/server/middleware-build-manifest.js +1 -1
- package/runtime/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/runtime/.next/server/pages/404.html +1 -1
- package/runtime/.next/server/pages/500.html +1 -1
- package/runtime/.next/server/server-reference-manifest.json +1 -1
- package/runtime/.next/static/chunks/982.9e87a5cc0e6b13cf.js +1 -0
- package/runtime/.next/static/chunks/app/web/page-02e0df331bb14489.js +1 -0
- package/runtime/.next/static/chunks/{main-a7dd8c98b48af038.js → main-30618c50527ce4e9.js} +1 -1
- package/runtime/.next/static/chunks/{webpack-d91bc49de770fd58.js → webpack-0c872a6ee48cbbdf.js} +1 -1
- package/runtime/node_modules/.package-lock.json +3 -3
- package/runtime/node_modules/@agent/core/dist/domain/context/ContextLoader.d.ts +2 -0
- package/runtime/node_modules/@agent/core/dist/domain/context/ContextLoader.d.ts.map +1 -1
- package/runtime/node_modules/@agent/core/dist/index.js +114 -12
- package/runtime/node_modules/@agent/core/dist/index.js.map +7 -6
- package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteAnonymousWebStore.d.ts +13 -0
- package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteAnonymousWebStore.d.ts.map +1 -0
- package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteAnonymousWebStore.test.d.ts +2 -0
- package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteAnonymousWebStore.test.d.ts.map +1 -0
- package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteDatabase.d.ts.map +1 -1
- package/runtime/node_modules/@agent/core/dist/infrastructure/SQLiteSessionStore.d.ts.map +1 -1
- package/runtime/node_modules/@agent/core/dist/infrastructure/index.d.ts +1 -0
- package/runtime/node_modules/@agent/core/dist/infrastructure/index.d.ts.map +1 -1
- package/runtime/node_modules/node-abi/abi_registry.json +7 -0
- package/runtime/node_modules/node-abi/package.json +1 -1
- package/runtime/package-lock.json +3 -3
- package/runtime/webapp/dist/assets/App-lXIeMH5u.js +52 -0
- package/runtime/webapp/dist/assets/index-BAFMhDtY.js +42 -0
- package/runtime/webapp/dist/assets/index-Beg9M2xI.css +1 -0
- package/runtime/webapp/dist/index.html +17 -0
- package/runtime/webapp/dist/pcm-audio-worklet.js +126 -0
- package/runtime/ws-server.mjs +148 -18
- package/runtime/.next/static/chunks/982.bf2e6e7fe55cd5ca.js +0 -1
- package/runtime/.next/static/chunks/app/web/page-0ee508ac538f72d3.js +0 -1
- /package/runtime/.next/static/{OszWLAB2kMAnNfSwJzpyw → dclalTmecO-HMVQvSKG7g}/_buildManifest.js +0 -0
- /package/runtime/.next/static/{OszWLAB2kMAnNfSwJzpyw → dclalTmecO-HMVQvSKG7g}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
exports.id=322,exports.ids=[322],exports.modules={8794:e=>{function t(e){return Promise.resolve().then(()=>{var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=8794,e.exports=t},1322:(e,t,r)=>{"use strict";r.d(t,{CT:()=>
|
|
1
|
+
exports.id=322,exports.ids=[322],exports.modules={8794:e=>{function t(e){return Promise.resolve().then(()=>{var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t})}t.keys=()=>[],t.resolve=t,t.id=8794,e.exports=t},1322:(e,t,r)=>{"use strict";r.d(t,{CT:()=>k,E0:()=>L,KS:()=>rb,N7:()=>ra,N8:()=>rI,Q$:()=>rw,S3:()=>rC,T3:()=>rj,XU:()=>rF,XW:()=>rR,Y4:()=>rE,as:()=>t3,ds:()=>rf,m6:()=>rA,rt:()=>rL});var s,i,a,n,o,l=r(7718);r(5673);var d=r(7561);r(1041);var c=r(9411),u=r(6005),h=r(3977),p=r(612),m=r(9801),f=r(1747),g=r(8849),y=r(2286),_=r(5890),T=Object.defineProperty,E=e=>e;function v(e,t){this[e]=E.bind(null,t)}var b={N:16384,r:8,p:1,maxmem:67108864};function w(e,t){return new Promise((r,s)=>{(0,u.scrypt)(e,t,32,b,(e,t)=>e?s(e):r(t))})}async function N(e){let t=(0,u.randomBytes)(16);return{hash:await w(e,t),salt:t,version:1}}async function S(e,t){return 1===t.version&&32===t.hash.byteLength&&(0,u.timingSafeEqual)(await w(e,t.salt),t.hash)}class k extends Error{constructor(e,t,r){super(t),this.code=e,this.status=r}}class L{constructor(e,t=()=>new Date){this.store=e,this.now=t}needsSetup(){return 0===this.store.countUsers()}async setup(e,t,r){let s;if(!this.needsSetup())throw new k("SETUP_COMPLETED","初始化已完成",409);let i=x(e);(function(e,t){if(!/^[a-z0-9._-]{3,64}$/.test(e))throw new k("INVALID_INPUT","用户名需为 3-64 位字母、数字或 ._-",400);if(t.length<10)throw new k("INVALID_INPUT","密码至少 10 位",400)})(i,t);let a=this.now().toISOString(),n=await N(t);try{s=this.store.createFirstUser({id:(0,u.randomUUID)(),usernameNormalized:i,usernameDisplay:e.trim(),passwordHash:n.hash,passwordSalt:n.salt,passwordVersion:n.version,createdAt:a,passwordChangedAt:a})}catch{throw new k("SETUP_COMPLETED","初始化已完成",409)}return this.createLoginSession(s,r)}async login(e,t,r){let s=x(e),i=this.now(),a=new Date(i.getTime()-9e5).toISOString();if(this.store.countRecentLoginFailures(s,r.ip,a)>=5)throw new k("RATE_LIMITED","登录尝试过多,请稍后再试",429);let n=this.store.findUserByNormalizedUsername(s),o=!!n&&await S(t,{hash:n.passwordHash,salt:n.passwordSalt,version:n.passwordVersion});if(!n||!o)throw this.store.recordLoginFailure(s,r.ip,i.toISOString()),new k("INVALID_CREDENTIALS","用户名或密码错误",401);return this.store.clearLoginFailures(s,r.ip),this.createLoginSession(n,r)}authenticateToken(e){if(!e)throw new k("UNAUTHENTICATED","请先登录",401);let t=this.now().toISOString(),r=this.store.findSessionByTokenHash(O(e),t);if(!r)throw new k("UNAUTHENTICATED","登录已失效",401);let s=this.store.findUserById(r.userId);if(!s)throw new k("UNAUTHENTICATED","用户不存在",401);return{principal:{userId:s.id,username:s.usernameDisplay,sessionId:r.id,deviceId:r.deviceId},session:r}}refresh(e){let t=this.authenticateToken(e),r=I(),s=this.now(),i=new Date(s.getTime()+2592e6).toISOString();return this.store.rotateCsrf(t.session.id,O(r),s.toISOString(),i),{principal:t.principal,csrfToken:r,expiresAt:i}}validateCsrf(e,t){var r,s;if(!t||(r=O(t),s=e.session.csrfHash,!(r.byteLength===s.byteLength&&(0,u.timingSafeEqual)(r,s))))throw new k("INVALID_CSRF","CSRF 校验失败",403)}issueWsNonce(e){let t=this.authenticateToken(e),r=I(),s=new Date(this.now().getTime()+6e4).toISOString();return this.store.issueWsNonce(t.session.id,O(r),s),{nonce:r,expiresAt:s,principal:t.principal}}consumeWsNonce(e,t){let r=this.authenticateToken(e);if(!this.store.consumeWsNonce(r.session.id,O(t),this.now().toISOString()))throw new k("INVALID_NONCE","连接凭证无效",403);return r.principal}logout(e){let t=this.authenticateToken(e);this.store.revokeSession(t.session.id,this.now().toISOString())}revokeAll(e,t=!0){let r=this.authenticateToken(e);return this.store.revokeUserSessions(r.principal.userId,t?r.session.id:null,this.now().toISOString())}createLoginSession(e,t){let r=this.now(),s=I(),i=I(),a=t.deviceId||(0,u.randomUUID)(),n=new Date(r.getTime()+2592e6).toISOString(),o={id:(0,u.randomUUID)(),userId:e.id,tokenHash:O(s),csrfHash:O(i),wsNonceHash:null,wsNonceExpiresAt:null,deviceId:a,deviceName:t.deviceName||"",userAgent:t.userAgent,createdAt:r.toISOString(),lastSeenAt:r.toISOString(),expiresAt:n,revokedAt:null};return this.store.createSession(o),{user:{id:e.id,username:e.usernameDisplay},sessionId:o.id,authToken:s,csrfToken:i,expiresAt:n,deviceId:a}}}function x(e){return e.trim().normalize("NFKC").toLowerCase()}function O(e){return(0,u.createHash)("sha256").update(e).digest()}function I(){return(0,u.randomBytes)(32).toString("base64url")}var A=`You are summarizing a conversation for handoff to another model that will continue the task.
|
|
2
2
|
|
|
3
3
|
Your summary must preserve the exact information needed to continue without reading the original transcript.
|
|
4
4
|
|
|
@@ -8,17 +8,17 @@ Include:
|
|
|
8
8
|
- Concrete files, symbols, commands, errors, data, examples, and references that matter
|
|
9
9
|
- What remains to be done, with clear next steps
|
|
10
10
|
|
|
11
|
-
Output ONLY the handoff summary text, no preamble or meta-commentary.`,
|
|
11
|
+
Output ONLY the handoff summary text, no preamble or meta-commentary.`,R="This is a summary of the conversation so far, written to preserve continuity after context compaction.",C="Understood. I have reviewed the summary and will continue from where we left off.";class U{constructor(e){this.modelProvider=e}pruneToolResults(e,t=6){let r=[];for(let t=0;t<e.length;t++)"tool"===e[t].role&&r.push(t);let s=new Set(r.slice(-t));return e.map((e,t)=>"tool"===e.role&&!s.has(t)&&e.content.length>500?{...e,content:e.content.slice(0,500)+`
|
|
12
12
|
…[truncated]`}:e)}async compact(e,t=8){let[r,...s]=e,i=Math.max(0,s.length-t);for(;i>0&&s[i]?.role==="tool";)i--;let a=s.slice(0,i),n=s.slice(i);if(0===a.length)return{messages:e,summary:"",removedMessages:0};let o=a.map(e=>{let t="tool"===e.role?`tool(${e.name??""})`:e.role,r=e.content.slice(0,2e3);return`[${t}]: ${r}`}).join(`
|
|
13
13
|
|
|
14
|
-
`),l="";for await(let e of this.modelProvider.streamChat([{role:"system",content:A},{role:"user",content:o}],{maxTokens:2048}))"text_chunk"===e.type&&(l+=e.text);return l=l.trim(),{messages:[...r?[r]:[],{role:"user",content:`${
|
|
15
|
-
${l}`},{role:"assistant",content:
|
|
14
|
+
`),l="";for await(let e of this.modelProvider.streamChat([{role:"system",content:A},{role:"user",content:o}],{maxTokens:2048}))"text_chunk"===e.type&&(l+=e.text);return l=l.trim(),{messages:[...r?[r]:[],{role:"user",content:`${R}
|
|
15
|
+
${l}`},{role:"assistant",content:C},...n],summary:l,removedMessages:a.length}}async compactForHandoff(e){let t=e.filter(e=>"system"!==e.role&&"__compaction_checkpoint__"!==e.name&&!this.isSummaryMessage(e));if(0===t.length)return{replacementMessages:[],summary:"",recentMessages:[],removedMessages:0};let r=t.map(e=>{let t="tool"===e.role?`tool(${e.name??""})`:e.role,r=e.content.slice(0,4e3);return`[${t}]: ${r}`}).join(`
|
|
16
16
|
|
|
17
|
-
`),s="";for await(let e of this.modelProvider.streamChat([{role:"system",content:A},{role:"user",content:r}],{maxTokens:4096}))"text_chunk"===e.type&&(s+=e.text);s=s.trim();let i=this.collectRecentUserMessages(t),a=[...i,{role:"user",content:`${
|
|
18
|
-
${s}`}];return{replacementMessages:a,summary:s,recentMessages:i,removedMessages:Math.max(0,t.length-a.length)}}async estimateTokens(e){try{return await this.modelProvider.countTokens(e)}catch{return Math.ceil(e.reduce((e,t)=>e+t.content.length,0)/4)}}collectRecentUserMessages(e){let t=[],r=0;for(let s=e.length-1;s>=0;s--){let i=e[s];if("user"!==i.role||this.isSummaryMessage(i))continue;let a=Math.ceil(i.content.length/4),n=2e4-r;if(n<=0)break;if(a<=n){t.push(i),r+=a;continue}t.push({...i,content:i.content.slice(-(4*n))});break}return t.reverse()}isSummaryMessage(e){return"user"===e.role&&e.content.startsWith(
|
|
19
|
-
${e.summary}`},{role:"assistant",content:
|
|
17
|
+
`),s="";for await(let e of this.modelProvider.streamChat([{role:"system",content:A},{role:"user",content:r}],{maxTokens:4096}))"text_chunk"===e.type&&(s+=e.text);s=s.trim();let i=this.collectRecentUserMessages(t),a=[...i,{role:"user",content:`${R}
|
|
18
|
+
${s}`}];return{replacementMessages:a,summary:s,recentMessages:i,removedMessages:Math.max(0,t.length-a.length)}}async estimateTokens(e){try{return await this.modelProvider.countTokens(e)}catch{return Math.ceil(e.reduce((e,t)=>e+t.content.length,0)/4)}}collectRecentUserMessages(e){let t=[],r=0;for(let s=e.length-1;s>=0;s--){let i=e[s];if("user"!==i.role||this.isSummaryMessage(i))continue;let a=Math.ceil(i.content.length/4),n=2e4-r;if(n<=0)break;if(a<=n){t.push(i),r+=a;continue}t.push({...i,content:i.content.slice(-(4*n))});break}return t.reverse()}isSummaryMessage(e){return"user"===e.role&&e.content.startsWith(R)}}var D=["systemBase","environment","projectContext","skills","memory","embeddedTools","conversationHistory","currentUserMessage","assistantMessages","toolCalls","toolResults","images","compactionSummary","nativeToolDefinitions","messageOverhead"];function j(e){return Math.ceil(e.length/4)}class F{constructor(e){this.abortController=null,this.config=e,this.compactor=new U(e.modelProvider),this.initialToolNames=new Set(e.toolRegistry.getAll().map(e=>e.name))}sanitizeHistory(e){let t=new Set;for(let r of e)"tool"===r.role&&r.toolCallId&&t.add(r.toolCallId);let r=new Set;for(let s of e)if("assistant"===s.role&&s.toolCalls&&s.toolCalls.length>0&&!s.toolCalls.every(e=>t.has(e.id)))for(let e of s.toolCalls)r.add(e.id);return 0===r.size?e:e.filter(e=>"assistant"===e.role&&e.toolCalls&&e.toolCalls.length>0?e.toolCalls.every(e=>!r.has(e.id)):"tool"!==e.role||!e.toolCallId||!r.has(e.toolCallId))}async *run(e,t,r){let s,i;this.abortController=new AbortController;let a=[];if(this.config.sessionStore){let e=await this.config.sessionStore.get(t),r=(e?.messages??[]).filter(e=>"system"!==e.role),s=r.map(e=>e.name).lastIndexOf("__compaction_checkpoint__");if(s>=0)try{let e=JSON.parse(r[s].content);a=[{role:"user",content:`${R}
|
|
19
|
+
${e.summary}`},{role:"assistant",content:C},...e.recentMessages,...r.slice(s+1).filter(e=>"__compaction_checkpoint__"!==e.name)]}catch{a=r.filter(e=>"__compaction_checkpoint__"!==e.name)}else a=r.filter(e=>"__compaction_checkpoint__"!==e.name)}a=this.sanitizeHistory(a);let n=await this.config.memoryStore.generateContext(e),o=await this.config.contextAssembler.assemble({rootDir:this.config.workingDirectory,userMessage:e,history:a,tools:JSON.stringify(this.getFilteredToolDefinitions()),memoryContext:n,skillPrompts:await this.config.skillRegistry.getSkillPrompts(e,this.config.enabledSkills),maxTokens:this.config.maxTokens,systemPrompt:this.config.systemPrompt}),l=o.messages.at(-1),d=l?.role==="user"&&l?.content===e,c={role:"user",content:e,...r&&r.length>0?{images:r}:{}};d?(i=r&&r.length>0?{...o.messages.at(-1),images:r}:o.messages.at(-1),s=[{role:"system",content:o.systemPrompt},...o.messages.slice(0,-1),i]):(i=c,s=[{role:"system",content:o.systemPrompt},...o.messages,i]);let u=this.config.compactThreshold??.6,h=this.config.maxTokens,p="",m=0,f=(await this.config.sessionStore?.get(t))?.messages?.length??0;for(;m<this.config.maxIterations;){if(this.abortController.signal.aborted){yield{type:"turn_aborted"},yield{type:"done",finalText:p||"Aborted"};return}if(m++,yield{type:"thinking",message:`Iteration ${m}...`},this.config.sessionStore)try{let e=await this.config.sessionStore.get(t),r=e?.messages?.length??0;if(r>f){let t=e.messages.slice(f);for(let e of(f=r,t))("__steer__"===e.name||"__mailbox__"===e.name)&&s.push(e)}}catch{}if(s=this.compactor.pruneToolResults(s),await this.compactor.estimateTokens(s)>h*u){yield{type:"thinking",message:"Context approaching limit — compacting…"};let e=await this.compactor.compact(s);if(s=e.messages,e.removedMessages>0&&(yield{type:"compacted",summary:e.summary,removedMessages:e.removedMessages},this.config.sessionStore)){let r=e.messages.filter(e=>"system"!==e.role).slice(2);await this.config.sessionStore.addMessage(t,{role:"user",content:JSON.stringify({summary:e.summary,recentMessages:r}),name:"__compaction_checkpoint__"}).catch(()=>{})}}let e=this.getFilteredToolDefinitions();yield{type:"context_usage",usage:function(e){let t=Object.fromEntries(D.map(e=>[e,0]));t.systemBase=j(e.systemSections.systemBase),t.environment=j(e.systemSections.environment),t.projectContext=j(e.systemSections.projectContext),t.skills=j(e.systemSections.skills),t.memory=j(e.systemSections.memory),t.embeddedTools=j(e.systemSections.embeddedTools);let r=Object.values(e.systemSections).filter(Boolean).length;t.messageOverhead+=j(`
|
|
20
20
|
|
|
21
|
-
`.repeat(Math.max(0,r-1)));let s=function(e,t){let r=e.indexOf(t);if(r>=0)return r;for(let r=e.length-1;r>=0;r--){let s=e[r];if("user"===s.role&&s.content===t.content)return r}return -1}(e.messages,e.currentUserMessage),i=function(e){let t=new Set;for(let r=0;r<e.length;r++){let s=e[r];"user"===s.role&&s.content.startsWith(C)&&(t.add(r),e[r+1]?.role==="assistant"&&e[r+1]?.content===R&&t.add(r+1))}return t}(e.messages);e.messages.forEach((e,r)=>{if(t.messageOverhead+=4,t.images+=(e.images?.length??0)*1e3,"system"!==e.role){if(i.has(r)){t.compactionSummary+=j(e.content);return}if("user"===e.role){let i=r===s?"currentUserMessage":"conversationHistory";t[i]+=j(e.content);return}if("assistant"===e.role){for(let r of(t.assistantMessages+=j(e.content),e.toolCalls??[]))t.toolCalls+=j(JSON.stringify(r));return}t.toolResults+=j(JSON.stringify({toolCallId:e.toolCallId,name:e.name,content:e.content}))}}),e.nativeToolDefinitions.length>0&&(t.nativeToolDefinitions=j(JSON.stringify(e.nativeToolDefinitions)),t.messageOverhead+=4*e.nativeToolDefinitions.length);let a=D.map(e=>({category:e,tokens:t[e]})),n=a.reduce((e,t)=>e+t.tokens,0),o=Math.max(1,e.maxTokens);return{requestIndex:e.requestIndex,providerId:e.providerId,modelId:e.modelId,maxTokens:o,totalTokens:n,ratio:Math.min(n/o,1),estimationMode:"heuristic",segments:a}}({requestIndex:m,providerId:this.config.modelProvider.providerId,modelId:this.config.modelProvider.modelId,maxTokens:h,messages:s,currentUserMessage:i,nativeToolDefinitions:e,systemSections:o.systemSections})};let r=[],a=!1,n=this.config.streamMaxRetries??0,l=0,d=0,c=0,g=e=>new Promise(t=>{if(this.abortController?.signal.aborted){t(!1);return}let r=setTimeout(()=>{this.abortController?.signal.removeEventListener("abort",s),t(!0)},e),s=()=>{clearTimeout(r),t(!1)};this.abortController?.signal.addEventListener("abort",s,{once:!0})});for(;;){if(c>0){yield{type:"thinking",message:`Retrying (${c})…`};let e=Math.min(1e3*Math.pow(2,c-1)+500*Math.random(),1e4);if(!await g(e)){yield{type:"turn_aborted"};return}}let t=!1,i=!1,o=!1;try{for await(let n of this.config.modelProvider.streamChat(s,{tools:e.length>0?e:void 0})){if(this.abortController?.signal.aborted)break;switch(n.type){case"text_chunk":i=i||n.text.length>0,p+=n.text,yield{type:"text_chunk",text:n.text};break;case"tool_call":i=!0,r.push(n.toolCall),yield{type:"tool_call",toolCall:n.toolCall};break;case"text_done":o=!0;break;case"error":i=!0,t=!0,a=!0,yield{type:"error",message:n.message,code:"strea-err"}}}if(!i&&!this.abortController?.signal.aborted){if(0===d){d++,c++;continue}a=!0,yield{type:"error",message:"Model stream ended without producing a response after retry"}}if(t||a)break;o&&(yield{type:"text_done"});break}catch(r){if(this.abortController?.signal.aborted){yield{type:"turn_aborted"};return}let e=r instanceof Error?r.message:String(r),t=/timeout|rate\s*limit|5\d{2}|econnrefused|econnreset|network|temporary|too many|retry/i.test(e);if(i||!t||l>=n){yield{type:"error",message:e},a=!0;break}l++,c++}}if(0===r.length||a){yield{type:"done",finalText:p};return}let y={role:"assistant",content:p,toolCalls:r};s.push(y);let _=[],T=await Promise.allSettled(r.map(async e=>{let r={workingDirectory:this.config.workingDirectory,sessionId:t,signal:this.abortController.signal},s=await Promise.race([this.config.toolExecutor.execute(e.name,e.arguments,r),new Promise((e,t)=>{if(this.abortController.signal.aborted){t(Error("turn_aborted"));return}this.abortController.signal.addEventListener("abort",()=>t(Error("turn_aborted")),{once:!0})})]);return s.toolCallId=e.id,s})),E=!1;for(let e=0;e<T.length;e++){let t;let i=T[e],a=r[e];if("fulfilled"===i.status)t=i.value;else{let e=i.reason?.message==="turn_aborted"?"turn_aborted":i.reason?.message??"Tool execution failed";if("turn_aborted"===e){E=!0;break}t={toolCallId:a.id,content:`Error: ${e}`,isError:!0}}_.push(t);let n=t.metadata?.showWidget;n&&(yield{type:"show_widget",widgetId:n.widgetId,widgetType:n.widgetType,data:n.data}),yield{type:"tool_result",result:t},s.push({role:"tool",content:t.content,toolCallId:t.toolCallId,name:a.name})}if(E){yield{type:"turn_aborted"},yield{type:"done",finalText:p||"Aborted"};return}if(await this.compactor.estimateTokens(s)>h*u){yield{type:"thinking",message:"Context growing after tool results — compacting…"};let e=await this.compactor.compact(s);if(s=e.messages,e.removedMessages>0&&(yield{type:"compacted",summary:e.summary,removedMessages:e.removedMessages},this.config.sessionStore)){let r=e.messages.filter(e=>"system"!==e.role).slice(2);await this.config.sessionStore.addMessage(t,{role:"user",content:JSON.stringify({summary:e.summary,recentMessages:r}),name:"__compaction_checkpoint__"}).catch(()=>{})}}p=""}yield{type:"done",finalText:p||`Reached max iterations (${this.config.maxIterations})`}}abort(){this.abortController?.abort()}getFilteredToolDefinitions(){let e=this.config.toolRegistry.getDefinitions();if(!this.config.enabledTools)return e;let t=new Set(this.config.enabledTools);return e.filter(e=>t.has(e.name)||!this.initialToolNames.has(e.name))}}class P{create(e){return new F(e)}}class M{register(e){this.tools.set(e.name,e)}unregister(e){this.tools.delete(e)}get(e){return this.tools.get(e)}getAll(){return Array.from(this.tools.values())}getDefinitions(){return this.getAll().map(e=>({name:e.name,description:e.description,parameters:e.parameters}))}async execute(e,t,r){let s=this.tools.get(e);return s?s.execute(t,r):{toolCallId:"",content:`Unknown tool: ${e}`,isError:!0}}validate(e,t){let r=this.tools.get(e);return!!r&&r.schema.safeParse(t).success}constructor(){this.tools=new Map}}var $={};((e,t)=>{for(var r in t)T(e,r,{get:t[r],enumerable:!0,configurable:!0,set:v.bind(t,r)})})($,{void:()=>tE,util:()=>s,unknown:()=>t_,union:()=>tN,undefined:()=>tf,tuple:()=>tL,transformer:()=>tF,symbol:()=>tm,string:()=>tl,strictObject:()=>tw,setErrorMap:()=>z,set:()=>tI,record:()=>tx,quotelessJson:()=>W,promise:()=>tj,preprocess:()=>t$,pipeline:()=>tX,ostring:()=>tZ,optional:()=>tP,onumber:()=>tB,oboolean:()=>tW,objectUtil:()=>i,object:()=>tb,number:()=>td,nullable:()=>tM,null:()=>tg,never:()=>tT,nativeEnum:()=>tD,nan:()=>tc,map:()=>tO,makeIssue:()=>K,literal:()=>tR,lazy:()=>tC,late:()=>tn,isValid:()=>ea,isDirty:()=>ei,isAsync:()=>en,isAborted:()=>es,intersection:()=>tS,instanceof:()=>to,getParsedType:()=>Z,getErrorMap:()=>Y,function:()=>tA,enum:()=>tU,effect:()=>tF,discriminatedUnion:()=>tk,defaultErrorMap:()=>H,datetimeRegex:()=>ex,date:()=>tp,custom:()=>ta,coerce:()=>tq,boolean:()=>th,bigint:()=>tu,array:()=>tv,any:()=>ty,addIssueToContext:()=>G,ZodVoid:()=>e$,ZodUnknown:()=>eP,ZodUnion:()=>eB,ZodUndefined:()=>eD,ZodType:()=>ec,ZodTuple:()=>eJ,ZodTransformer:()=>e9,ZodSymbol:()=>eU,ZodString:()=>eO,ZodSet:()=>eK,ZodSchema:()=>ec,ZodRecord:()=>ez,ZodReadonly:()=>ts,ZodPromise:()=>e2,ZodPipeline:()=>tr,ZodParsedType:()=>X,ZodOptional:()=>e3,ZodObject:()=>eZ,ZodNumber:()=>eI,ZodNullable:()=>e5,ZodNull:()=>ej,ZodNever:()=>eM,ZodNativeEnum:()=>e4,ZodNaN:()=>e7,ZodMap:()=>eY,ZodLiteral:()=>eQ,ZodLazy:()=>eG,ZodIssueCode:()=>B,ZodIntersection:()=>eH,ZodFunction:()=>eV,ZodFirstPartyTypeKind:()=>o,ZodError:()=>q,ZodEnum:()=>e1,ZodEffects:()=>e9,ZodDiscriminatedUnion:()=>eq,ZodDefault:()=>e6,ZodDate:()=>eR,ZodCatch:()=>e8,ZodBranded:()=>tt,ZodBoolean:()=>eC,ZodBigInt:()=>eA,ZodArray:()=>eX,ZodAny:()=>eF,Schema:()=>ec,ParseStatus:()=>Q,OK:()=>er,NEVER:()=>tH,INVALID:()=>ee,EMPTY_PATH:()=>V,DIRTY:()=>et,BRAND:()=>te}),function(e){e.assertEqual=e=>{},e.assertIs=function(e){},e.assertNever=function(e){throw Error()},e.arrayToEnum=e=>{let t={};for(let r of e)t[r]=r;return t},e.getValidEnumValues=t=>{let r=e.objectKeys(t).filter(e=>"number"!=typeof t[t[e]]),s={};for(let e of r)s[e]=t[e];return e.objectValues(s)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys="function"==typeof Object.keys?e=>Object.keys(e):e=>{let t=[];for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t},e.find=(e,t)=>{for(let r of e)if(t(r))return r},e.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&Number.isFinite(e)&&Math.floor(e)===e,e.joinValues=function(e,t=" | "){return e.map(e=>"string"==typeof e?`'${e}'`:e).join(t)},e.jsonStringifyReplacer=(e,t)=>"bigint"==typeof t?t.toString():t}(s||(s={})),(i||(i={})).mergeShapes=(e,t)=>({...e,...t});var X=s.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Z=e=>{switch(typeof e){case"undefined":return X.undefined;case"string":return X.string;case"number":return Number.isNaN(e)?X.nan:X.number;case"boolean":return X.boolean;case"function":return X.function;case"bigint":return X.bigint;case"symbol":return X.symbol;case"object":if(Array.isArray(e))return X.array;if(null===e)return X.null;if(e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch)return X.promise;if("undefined"!=typeof Map&&e instanceof Map)return X.map;if("undefined"!=typeof Set&&e instanceof Set)return X.set;if("undefined"!=typeof Date&&e instanceof Date)return X.date;return X.object;default:return X.unknown}},B=s.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),W=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:");class q extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){let t=e||function(e){return e.message},r={_errors:[]},s=e=>{for(let i of e.issues)if("invalid_union"===i.code)i.unionErrors.map(s);else if("invalid_return_type"===i.code)s(i.returnTypeError);else if("invalid_arguments"===i.code)s(i.argumentsError);else if(0===i.path.length)r._errors.push(t(i));else{let e=r,s=0;for(;s<i.path.length;){let r=i.path[s];s===i.path.length-1?(e[r]=e[r]||{_errors:[]},e[r]._errors.push(t(i))):e[r]=e[r]||{_errors:[]},e=e[r],s++}}};return s(this),r}static assert(e){if(!(e instanceof q))throw Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,s.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(e=e=>e.message){let t={},r=[];for(let s of this.issues)if(s.path.length>0){let r=s.path[0];t[r]=t[r]||[],t[r].push(e(s))}else r.push(e(s));return{formErrors:r,fieldErrors:t}}get formErrors(){return this.flatten()}}q.create=e=>new q(e);var H=(e,t)=>{let r;switch(e.code){case B.invalid_type:r=e.received===X.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case B.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(e.expected,s.jsonStringifyReplacer)}`;break;case B.unrecognized_keys:r=`Unrecognized key(s) in object: ${s.joinValues(e.keys,", ")}`;break;case B.invalid_union:r="Invalid input";break;case B.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${s.joinValues(e.options)}`;break;case B.invalid_enum_value:r=`Invalid enum value. Expected ${s.joinValues(e.options)}, received '${e.received}'`;break;case B.invalid_arguments:r="Invalid function arguments";break;case B.invalid_return_type:r="Invalid function return type";break;case B.invalid_date:r="Invalid date";break;case B.invalid_string:"object"==typeof e.validation?"includes"in e.validation?(r=`Invalid input: must include "${e.validation.includes}"`,"number"==typeof e.validation.position&&(r=`${r} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?r=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?r=`Invalid input: must end with "${e.validation.endsWith}"`:s.assertNever(e.validation):r="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case B.too_small:r="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:"bigint"===e.type?`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:"date"===e.type?`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:"Invalid input";break;case B.too_big:r="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"bigint"===e.type?`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"date"===e.type?`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:"Invalid input";break;case B.custom:r="Invalid input";break;case B.invalid_intersection_types:r="Intersection results could not be merged";break;case B.not_multiple_of:r=`Number must be a multiple of ${e.multipleOf}`;break;case B.not_finite:r="Number must be finite";break;default:r=t.defaultError,s.assertNever(e)}return{message:r}},J=H;function z(e){J=e}function Y(){return J}var K=e=>{let{data:t,path:r,errorMaps:s,issueData:i}=e,a=[...r,...i.path||[]],n={...i,path:a};if(void 0!==i.message)return{...i,path:a,message:i.message};let o="";for(let e of s.filter(e=>!!e).slice().reverse())o=e(n,{data:t,defaultError:o}).message;return{...i,path:a,message:o}},V=[];function G(e,t){let r=J,s=K({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,r,r===H?void 0:H].filter(e=>!!e)});e.common.issues.push(s)}class Q{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(e,t){let r=[];for(let s of t){if("aborted"===s.status)return ee;"dirty"===s.status&&e.dirty(),r.push(s.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,t){let r=[];for(let e of t){let t=await e.key,s=await e.value;r.push({key:t,value:s})}return Q.mergeObjectSync(e,r)}static mergeObjectSync(e,t){let r={};for(let s of t){let{key:t,value:i}=s;if("aborted"===t.status||"aborted"===i.status)return ee;"dirty"===t.status&&e.dirty(),"dirty"===i.status&&e.dirty(),"__proto__"!==t.value&&(void 0!==i.value||s.alwaysSet)&&(r[t.value]=i.value)}return{status:e.value,value:r}}}var ee=Object.freeze({status:"aborted"}),et=e=>({status:"dirty",value:e}),er=e=>({status:"valid",value:e}),es=e=>"aborted"===e.status,ei=e=>"dirty"===e.status,ea=e=>"valid"===e.status,en=e=>"undefined"!=typeof Promise&&e instanceof Promise;!function(e){e.errToObj=e=>"string"==typeof e?{message:e}:e||{},e.toString=e=>"string"==typeof e?e:e?.message}(a||(a={}));class eo{constructor(e,t,r,s){this._cachedPath=[],this.parent=e,this.data=t,this._path=r,this._key=s}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}var el=(e,t)=>{if(ea(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new q(e.common.issues);return this._error=t,this._error}}};function ed(e){if(!e)return{};let{errorMap:t,invalid_type_error:r,required_error:s,description:i}=e;if(t&&(r||s))throw Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return"invalid_enum_value"===t.code?{message:a??i.defaultError}:void 0===i.data?{message:a??s??i.defaultError}:"invalid_type"!==t.code?{message:i.defaultError}:{message:a??r??i.defaultError}},description:i}}class ec{get description(){return this._def.description}_getType(e){return Z(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:Z(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Q,ctx:{common:e.parent.common,data:e.data,parsedType:Z(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(en(t))throw Error("Synchronous parse encountered promise.");return t}_parseAsync(e){return Promise.resolve(this._parse(e))}parse(e,t){let r=this.safeParse(e,t);if(r.success)return r.data;throw r.error}safeParse(e,t){let r={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Z(e)},s=this._parseSync({data:e,path:r.path,parent:r});return el(r,s)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Z(e)};if(!this["~standard"].async)try{let r=this._parseSync({data:e,path:[],parent:t});return ea(r)?{value:r.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>ea(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let r=await this.safeParseAsync(e,t);if(r.success)return r.data;throw r.error}async safeParseAsync(e,t){let r={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Z(e)},s=this._parse({data:e,path:r.path,parent:r});return el(r,await (en(s)?s:Promise.resolve(s)))}refine(e,t){let r=e=>"string"==typeof t||void 0===t?{message:t}:"function"==typeof t?t(e):t;return this._refinement((t,s)=>{let i=e(t),a=()=>s.addIssue({code:B.custom,...r(t)});return"undefined"!=typeof Promise&&i instanceof Promise?i.then(e=>!!e||(a(),!1)):!!i||(a(),!1)})}refinement(e,t){return this._refinement((r,s)=>!!e(r)||(s.addIssue("function"==typeof t?t(r,s):t),!1))}_refinement(e){return new e9({schema:this,typeName:o.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:e=>this["~validate"](e)}}optional(){return e3.create(this,this._def)}nullable(){return e5.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return eX.create(this)}promise(){return e2.create(this,this._def)}or(e){return eB.create([this,e],this._def)}and(e){return eH.create(this,e,this._def)}transform(e){return new e9({...ed(this._def),schema:this,typeName:o.ZodEffects,effect:{type:"transform",transform:e}})}default(e){return new e6({...ed(this._def),innerType:this,defaultValue:"function"==typeof e?e:()=>e,typeName:o.ZodDefault})}brand(){return new tt({typeName:o.ZodBranded,type:this,...ed(this._def)})}catch(e){return new e8({...ed(this._def),innerType:this,catchValue:"function"==typeof e?e:()=>e,typeName:o.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return tr.create(this,e)}readonly(){return ts.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var eu=/^c[^\s-]{8,}$/i,eh=/^[0-9a-z]+$/,ep=/^[0-9A-HJKMNP-TV-Z]{26}$/i,em=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,ef=/^[a-z0-9_-]{21}$/i,eg=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,ey=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,e_=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,eT=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,eE=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ev=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,eb=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,ew=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,eN=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,ek="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",eS=RegExp(`^${ek}$`);function eL(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:null==e.precision&&(t=`${t}(\\.\\d+)?`);let r=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${r}`}function ex(e){let t=`${ek}T${eL(e)}`,r=[];return r.push(e.local?"Z?":"Z"),e.offset&&r.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${r.join("|")})`,RegExp(`^${t}$`)}class eO extends ec{_parse(e){var t,r,i,a;let o;if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==X.string){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.string,received:t.parsedType}),ee}let l=new Q;for(let d of this._def.checks)if("min"===d.kind)e.data.length<d.value&&(G(o=this._getOrReturnCtx(e,o),{code:B.too_small,minimum:d.value,type:"string",inclusive:!0,exact:!1,message:d.message}),l.dirty());else if("max"===d.kind)e.data.length>d.value&&(G(o=this._getOrReturnCtx(e,o),{code:B.too_big,maximum:d.value,type:"string",inclusive:!0,exact:!1,message:d.message}),l.dirty());else if("length"===d.kind){let t=e.data.length>d.value,r=e.data.length<d.value;(t||r)&&(o=this._getOrReturnCtx(e,o),t?G(o,{code:B.too_big,maximum:d.value,type:"string",inclusive:!0,exact:!0,message:d.message}):r&&G(o,{code:B.too_small,minimum:d.value,type:"string",inclusive:!0,exact:!0,message:d.message}),l.dirty())}else if("email"===d.kind)e_.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"email",code:B.invalid_string,message:d.message}),l.dirty());else if("emoji"===d.kind)n||(n=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),n.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"emoji",code:B.invalid_string,message:d.message}),l.dirty());else if("uuid"===d.kind)em.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"uuid",code:B.invalid_string,message:d.message}),l.dirty());else if("nanoid"===d.kind)ef.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"nanoid",code:B.invalid_string,message:d.message}),l.dirty());else if("cuid"===d.kind)eu.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"cuid",code:B.invalid_string,message:d.message}),l.dirty());else if("cuid2"===d.kind)eh.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"cuid2",code:B.invalid_string,message:d.message}),l.dirty());else if("ulid"===d.kind)ep.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"ulid",code:B.invalid_string,message:d.message}),l.dirty());else if("url"===d.kind)try{new URL(e.data)}catch{G(o=this._getOrReturnCtx(e,o),{validation:"url",code:B.invalid_string,message:d.message}),l.dirty()}else"regex"===d.kind?(d.regex.lastIndex=0,d.regex.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"regex",code:B.invalid_string,message:d.message}),l.dirty())):"trim"===d.kind?e.data=e.data.trim():"includes"===d.kind?e.data.includes(d.value,d.position)||(G(o=this._getOrReturnCtx(e,o),{code:B.invalid_string,validation:{includes:d.value,position:d.position},message:d.message}),l.dirty()):"toLowerCase"===d.kind?e.data=e.data.toLowerCase():"toUpperCase"===d.kind?e.data=e.data.toUpperCase():"startsWith"===d.kind?e.data.startsWith(d.value)||(G(o=this._getOrReturnCtx(e,o),{code:B.invalid_string,validation:{startsWith:d.value},message:d.message}),l.dirty()):"endsWith"===d.kind?e.data.endsWith(d.value)||(G(o=this._getOrReturnCtx(e,o),{code:B.invalid_string,validation:{endsWith:d.value},message:d.message}),l.dirty()):"datetime"===d.kind?ex(d).test(e.data)||(G(o=this._getOrReturnCtx(e,o),{code:B.invalid_string,validation:"datetime",message:d.message}),l.dirty()):"date"===d.kind?eS.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{code:B.invalid_string,validation:"date",message:d.message}),l.dirty()):"time"===d.kind?RegExp(`^${eL(d)}$`).test(e.data)||(G(o=this._getOrReturnCtx(e,o),{code:B.invalid_string,validation:"time",message:d.message}),l.dirty()):"duration"===d.kind?ey.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"duration",code:B.invalid_string,message:d.message}),l.dirty()):"ip"===d.kind?(t=e.data,("v4"===(r=d.version)||!r)&&eT.test(t)||("v6"===r||!r)&&ev.test(t)||(G(o=this._getOrReturnCtx(e,o),{validation:"ip",code:B.invalid_string,message:d.message}),l.dirty())):"jwt"===d.kind?!function(e,t){if(!eg.test(e))return!1;try{let[r]=e.split(".");if(!r)return!1;let s=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),i=JSON.parse(atob(s));if("object"!=typeof i||null===i||"typ"in i&&i?.typ!=="JWT"||!i.alg||t&&i.alg!==t)return!1;return!0}catch{return!1}}(e.data,d.alg)&&(G(o=this._getOrReturnCtx(e,o),{validation:"jwt",code:B.invalid_string,message:d.message}),l.dirty()):"cidr"===d.kind?(i=e.data,("v4"===(a=d.version)||!a)&&eE.test(i)||("v6"===a||!a)&&eb.test(i)||(G(o=this._getOrReturnCtx(e,o),{validation:"cidr",code:B.invalid_string,message:d.message}),l.dirty())):"base64"===d.kind?ew.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"base64",code:B.invalid_string,message:d.message}),l.dirty()):"base64url"===d.kind?eN.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"base64url",code:B.invalid_string,message:d.message}),l.dirty()):s.assertNever(d);return{status:l.value,value:e.data}}_regex(e,t,r){return this.refinement(t=>e.test(t),{validation:t,code:B.invalid_string,...a.errToObj(r)})}_addCheck(e){return new eO({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...a.errToObj(e)})}url(e){return this._addCheck({kind:"url",...a.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...a.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...a.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...a.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...a.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...a.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...a.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...a.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...a.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...a.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...a.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...a.errToObj(e)})}datetime(e){return"string"==typeof e?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:void 0===e?.precision?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...a.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return"string"==typeof e?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:void 0===e?.precision?null:e?.precision,...a.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...a.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...a.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...a.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...a.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...a.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...a.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...a.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...a.errToObj(t)})}nonempty(e){return this.min(1,a.errToObj(e))}trim(){return new eO({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new eO({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new eO({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>"datetime"===e.kind)}get isDate(){return!!this._def.checks.find(e=>"date"===e.kind)}get isTime(){return!!this._def.checks.find(e=>"time"===e.kind)}get isDuration(){return!!this._def.checks.find(e=>"duration"===e.kind)}get isEmail(){return!!this._def.checks.find(e=>"email"===e.kind)}get isURL(){return!!this._def.checks.find(e=>"url"===e.kind)}get isEmoji(){return!!this._def.checks.find(e=>"emoji"===e.kind)}get isUUID(){return!!this._def.checks.find(e=>"uuid"===e.kind)}get isNANOID(){return!!this._def.checks.find(e=>"nanoid"===e.kind)}get isCUID(){return!!this._def.checks.find(e=>"cuid"===e.kind)}get isCUID2(){return!!this._def.checks.find(e=>"cuid2"===e.kind)}get isULID(){return!!this._def.checks.find(e=>"ulid"===e.kind)}get isIP(){return!!this._def.checks.find(e=>"ip"===e.kind)}get isCIDR(){return!!this._def.checks.find(e=>"cidr"===e.kind)}get isBase64(){return!!this._def.checks.find(e=>"base64"===e.kind)}get isBase64url(){return!!this._def.checks.find(e=>"base64url"===e.kind)}get minLength(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}eO.create=e=>new eO({checks:[],typeName:o.ZodString,coerce:e?.coerce??!1,...ed(e)});class eI extends ec{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){let t;if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==X.number){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.number,received:t.parsedType}),ee}let r=new Q;for(let i of this._def.checks)"int"===i.kind?s.isInteger(e.data)||(G(t=this._getOrReturnCtx(e,t),{code:B.invalid_type,expected:"integer",received:"float",message:i.message}),r.dirty()):"min"===i.kind?(i.inclusive?e.data<i.value:e.data<=i.value)&&(G(t=this._getOrReturnCtx(e,t),{code:B.too_small,minimum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),r.dirty()):"max"===i.kind?(i.inclusive?e.data>i.value:e.data>=i.value)&&(G(t=this._getOrReturnCtx(e,t),{code:B.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),r.dirty()):"multipleOf"===i.kind?0!==function(e,t){let r=(e.toString().split(".")[1]||"").length,s=(t.toString().split(".")[1]||"").length,i=r>s?r:s;return Number.parseInt(e.toFixed(i).replace(".",""))%Number.parseInt(t.toFixed(i).replace(".",""))/10**i}(e.data,i.value)&&(G(t=this._getOrReturnCtx(e,t),{code:B.not_multiple_of,multipleOf:i.value,message:i.message}),r.dirty()):"finite"===i.kind?Number.isFinite(e.data)||(G(t=this._getOrReturnCtx(e,t),{code:B.not_finite,message:i.message}),r.dirty()):s.assertNever(i);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,a.toString(t))}gt(e,t){return this.setLimit("min",e,!1,a.toString(t))}lte(e,t){return this.setLimit("max",e,!0,a.toString(t))}lt(e,t){return this.setLimit("max",e,!1,a.toString(t))}setLimit(e,t,r,s){return new eI({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:a.toString(s)}]})}_addCheck(e){return new eI({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:a.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:a.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:a.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:a.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:a.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:a.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:a.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:a.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:a.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>"int"===e.kind||"multipleOf"===e.kind&&s.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let r of this._def.checks){if("finite"===r.kind||"int"===r.kind||"multipleOf"===r.kind)return!0;"min"===r.kind?(null===t||r.value>t)&&(t=r.value):"max"===r.kind&&(null===e||r.value<e)&&(e=r.value)}return Number.isFinite(t)&&Number.isFinite(e)}}eI.create=e=>new eI({checks:[],typeName:o.ZodNumber,coerce:e?.coerce||!1,...ed(e)});class eA extends ec{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){let t;if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==X.bigint)return this._getInvalidInput(e);let r=new Q;for(let i of this._def.checks)"min"===i.kind?(i.inclusive?e.data<i.value:e.data<=i.value)&&(G(t=this._getOrReturnCtx(e,t),{code:B.too_small,type:"bigint",minimum:i.value,inclusive:i.inclusive,message:i.message}),r.dirty()):"max"===i.kind?(i.inclusive?e.data>i.value:e.data>=i.value)&&(G(t=this._getOrReturnCtx(e,t),{code:B.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),r.dirty()):"multipleOf"===i.kind?e.data%i.value!==BigInt(0)&&(G(t=this._getOrReturnCtx(e,t),{code:B.not_multiple_of,multipleOf:i.value,message:i.message}),r.dirty()):s.assertNever(i);return{status:r.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.bigint,received:t.parsedType}),ee}gte(e,t){return this.setLimit("min",e,!0,a.toString(t))}gt(e,t){return this.setLimit("min",e,!1,a.toString(t))}lte(e,t){return this.setLimit("max",e,!0,a.toString(t))}lt(e,t){return this.setLimit("max",e,!1,a.toString(t))}setLimit(e,t,r,s){return new eA({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:a.toString(s)}]})}_addCheck(e){return new eA({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:a.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:a.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:a.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:a.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:a.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}eA.create=e=>new eA({checks:[],typeName:o.ZodBigInt,coerce:e?.coerce??!1,...ed(e)});class eC extends ec{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==X.boolean){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.boolean,received:t.parsedType}),ee}return er(e.data)}}eC.create=e=>new eC({typeName:o.ZodBoolean,coerce:e?.coerce||!1,...ed(e)});class eR extends ec{_parse(e){let t;if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==X.date){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.date,received:t.parsedType}),ee}if(Number.isNaN(e.data.getTime()))return G(this._getOrReturnCtx(e),{code:B.invalid_date}),ee;let r=new Q;for(let i of this._def.checks)"min"===i.kind?e.data.getTime()<i.value&&(G(t=this._getOrReturnCtx(e,t),{code:B.too_small,message:i.message,inclusive:!0,exact:!1,minimum:i.value,type:"date"}),r.dirty()):"max"===i.kind?e.data.getTime()>i.value&&(G(t=this._getOrReturnCtx(e,t),{code:B.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),r.dirty()):s.assertNever(i);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new eR({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:a.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:a.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return null!=e?new Date(e):null}}eR.create=e=>new eR({checks:[],coerce:e?.coerce||!1,typeName:o.ZodDate,...ed(e)});class eU extends ec{_parse(e){if(this._getType(e)!==X.symbol){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.symbol,received:t.parsedType}),ee}return er(e.data)}}eU.create=e=>new eU({typeName:o.ZodSymbol,...ed(e)});class eD extends ec{_parse(e){if(this._getType(e)!==X.undefined){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.undefined,received:t.parsedType}),ee}return er(e.data)}}eD.create=e=>new eD({typeName:o.ZodUndefined,...ed(e)});class ej extends ec{_parse(e){if(this._getType(e)!==X.null){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.null,received:t.parsedType}),ee}return er(e.data)}}ej.create=e=>new ej({typeName:o.ZodNull,...ed(e)});class eF extends ec{constructor(){super(...arguments),this._any=!0}_parse(e){return er(e.data)}}eF.create=e=>new eF({typeName:o.ZodAny,...ed(e)});class eP extends ec{constructor(){super(...arguments),this._unknown=!0}_parse(e){return er(e.data)}}eP.create=e=>new eP({typeName:o.ZodUnknown,...ed(e)});class eM extends ec{_parse(e){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.never,received:t.parsedType}),ee}}eM.create=e=>new eM({typeName:o.ZodNever,...ed(e)});class e$ extends ec{_parse(e){if(this._getType(e)!==X.undefined){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.void,received:t.parsedType}),ee}return er(e.data)}}e$.create=e=>new e$({typeName:o.ZodVoid,...ed(e)});class eX extends ec{_parse(e){let{ctx:t,status:r}=this._processInputParams(e),s=this._def;if(t.parsedType!==X.array)return G(t,{code:B.invalid_type,expected:X.array,received:t.parsedType}),ee;if(null!==s.exactLength){let e=t.data.length>s.exactLength.value,i=t.data.length<s.exactLength.value;(e||i)&&(G(t,{code:e?B.too_big:B.too_small,minimum:i?s.exactLength.value:void 0,maximum:e?s.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:s.exactLength.message}),r.dirty())}if(null!==s.minLength&&t.data.length<s.minLength.value&&(G(t,{code:B.too_small,minimum:s.minLength.value,type:"array",inclusive:!0,exact:!1,message:s.minLength.message}),r.dirty()),null!==s.maxLength&&t.data.length>s.maxLength.value&&(G(t,{code:B.too_big,maximum:s.maxLength.value,type:"array",inclusive:!0,exact:!1,message:s.maxLength.message}),r.dirty()),t.common.async)return Promise.all([...t.data].map((e,r)=>s.type._parseAsync(new eo(t,e,t.path,r)))).then(e=>Q.mergeArray(r,e));let i=[...t.data].map((e,r)=>s.type._parseSync(new eo(t,e,t.path,r)));return Q.mergeArray(r,i)}get element(){return this._def.type}min(e,t){return new eX({...this._def,minLength:{value:e,message:a.toString(t)}})}max(e,t){return new eX({...this._def,maxLength:{value:e,message:a.toString(t)}})}length(e,t){return new eX({...this._def,exactLength:{value:e,message:a.toString(t)}})}nonempty(e){return this.min(1,e)}}eX.create=(e,t)=>new eX({type:e,minLength:null,maxLength:null,exactLength:null,typeName:o.ZodArray,...ed(t)});class eZ extends ec{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;let e=this._def.shape(),t=s.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==X.object){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.object,received:t.parsedType}),ee}let{status:t,ctx:r}=this._processInputParams(e),{shape:s,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof eM&&"strip"===this._def.unknownKeys))for(let e in r.data)i.includes(e)||a.push(e);let n=[];for(let e of i){let t=s[e],i=r.data[e];n.push({key:{status:"valid",value:e},value:t._parse(new eo(r,i,r.path,e)),alwaysSet:e in r.data})}if(this._def.catchall instanceof eM){let e=this._def.unknownKeys;if("passthrough"===e)for(let e of a)n.push({key:{status:"valid",value:e},value:{status:"valid",value:r.data[e]}});else if("strict"===e)a.length>0&&(G(r,{code:B.unrecognized_keys,keys:a}),t.dirty());else if("strip"===e);else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let e=this._def.catchall;for(let t of a){let s=r.data[t];n.push({key:{status:"valid",value:t},value:e._parse(new eo(r,s,r.path,t)),alwaysSet:t in r.data})}}return r.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of n){let r=await t.key,s=await t.value;e.push({key:r,value:s,alwaysSet:t.alwaysSet})}return e}).then(e=>Q.mergeObjectSync(t,e)):Q.mergeObjectSync(t,n)}get shape(){return this._def.shape()}strict(e){return a.errToObj,new eZ({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(t,r)=>{let s=this._def.errorMap?.(t,r).message??r.defaultError;return"unrecognized_keys"===t.code?{message:a.errToObj(e).message??s}:{message:s}}}:{}})}strip(){return new eZ({...this._def,unknownKeys:"strip"})}passthrough(){return new eZ({...this._def,unknownKeys:"passthrough"})}extend(e){return new eZ({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new eZ({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:o.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new eZ({...this._def,catchall:e})}pick(e){let t={};for(let r of s.objectKeys(e))e[r]&&this.shape[r]&&(t[r]=this.shape[r]);return new eZ({...this._def,shape:()=>t})}omit(e){let t={};for(let r of s.objectKeys(this.shape))e[r]||(t[r]=this.shape[r]);return new eZ({...this._def,shape:()=>t})}deepPartial(){return function e(t){if(t instanceof eZ){let r={};for(let s in t.shape){let i=t.shape[s];r[s]=e3.create(e(i))}return new eZ({...t._def,shape:()=>r})}return t instanceof eX?new eX({...t._def,type:e(t.element)}):t instanceof e3?e3.create(e(t.unwrap())):t instanceof e5?e5.create(e(t.unwrap())):t instanceof eJ?eJ.create(t.items.map(t=>e(t))):t}(this)}partial(e){let t={};for(let r of s.objectKeys(this.shape)){let s=this.shape[r];e&&!e[r]?t[r]=s:t[r]=s.optional()}return new eZ({...this._def,shape:()=>t})}required(e){let t={};for(let r of s.objectKeys(this.shape))if(e&&!e[r])t[r]=this.shape[r];else{let e=this.shape[r];for(;e instanceof e3;)e=e._def.innerType;t[r]=e}return new eZ({...this._def,shape:()=>t})}keyof(){return e0(s.objectKeys(this.shape))}}eZ.create=(e,t)=>new eZ({shape:()=>e,unknownKeys:"strip",catchall:eM.create(),typeName:o.ZodObject,...ed(t)}),eZ.strictCreate=(e,t)=>new eZ({shape:()=>e,unknownKeys:"strict",catchall:eM.create(),typeName:o.ZodObject,...ed(t)}),eZ.lazycreate=(e,t)=>new eZ({shape:e,unknownKeys:"strip",catchall:eM.create(),typeName:o.ZodObject,...ed(t)});class eB extends ec{_parse(e){let{ctx:t}=this._processInputParams(e),r=this._def.options;if(t.common.async)return Promise.all(r.map(async e=>{let r={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:r}),ctx:r}})).then(function(e){for(let t of e)if("valid"===t.result.status)return t.result;for(let r of e)if("dirty"===r.result.status)return t.common.issues.push(...r.ctx.common.issues),r.result;let r=e.map(e=>new q(e.ctx.common.issues));return G(t,{code:B.invalid_union,unionErrors:r}),ee});{let e;let s=[];for(let i of r){let r={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:r});if("valid"===a.status)return a;"dirty"!==a.status||e||(e={result:a,ctx:r}),r.common.issues.length&&s.push(r.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=s.map(e=>new q(e));return G(t,{code:B.invalid_union,unionErrors:i}),ee}}get options(){return this._def.options}}eB.create=(e,t)=>new eB({options:e,typeName:o.ZodUnion,...ed(t)});var eW=e=>{if(e instanceof eG)return eW(e.schema);if(e instanceof e9)return eW(e.innerType());if(e instanceof eQ)return[e.value];if(e instanceof e1)return e.options;if(e instanceof e4)return s.objectValues(e.enum);if(e instanceof e6)return eW(e._def.innerType);if(e instanceof eD)return[void 0];else if(e instanceof ej)return[null];else if(e instanceof e3)return[void 0,...eW(e.unwrap())];else if(e instanceof e5)return[null,...eW(e.unwrap())];else if(e instanceof tt)return eW(e.unwrap());else if(e instanceof ts)return eW(e.unwrap());else if(e instanceof e8)return eW(e._def.innerType);else return[]};class eq extends ec{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==X.object)return G(t,{code:B.invalid_type,expected:X.object,received:t.parsedType}),ee;let r=this.discriminator,s=t.data[r],i=this.optionsMap.get(s);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(G(t,{code:B.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),ee)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,r){let s=new Map;for(let r of t){let t=eW(r.shape[e]);if(!t.length)throw Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let i of t){if(s.has(i))throw Error(`Discriminator property ${String(e)} has duplicate value ${String(i)}`);s.set(i,r)}}return new eq({typeName:o.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:s,...ed(r)})}}class eH extends ec{_parse(e){let{status:t,ctx:r}=this._processInputParams(e),i=(e,i)=>{if(es(e)||es(i))return ee;let a=function e(t,r){let i=Z(t),a=Z(r);if(t===r)return{valid:!0,data:t};if(i===X.object&&a===X.object){let i=s.objectKeys(r),a=s.objectKeys(t).filter(e=>-1!==i.indexOf(e)),n={...t,...r};for(let s of a){let i=e(t[s],r[s]);if(!i.valid)return{valid:!1};n[s]=i.data}return{valid:!0,data:n}}if(i===X.array&&a===X.array){if(t.length!==r.length)return{valid:!1};let s=[];for(let i=0;i<t.length;i++){let a=e(t[i],r[i]);if(!a.valid)return{valid:!1};s.push(a.data)}return{valid:!0,data:s}}return i===X.date&&a===X.date&&+t==+r?{valid:!0,data:t}:{valid:!1}}(e.value,i.value);return a.valid?((ei(e)||ei(i))&&t.dirty(),{status:t.value,value:a.data}):(G(r,{code:B.invalid_intersection_types}),ee)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([e,t])=>i(e,t)):i(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}eH.create=(e,t,r)=>new eH({left:e,right:t,typeName:o.ZodIntersection,...ed(r)});class eJ extends ec{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==X.array)return G(r,{code:B.invalid_type,expected:X.array,received:r.parsedType}),ee;if(r.data.length<this._def.items.length)return G(r,{code:B.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),ee;!this._def.rest&&r.data.length>this._def.items.length&&(G(r,{code:B.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let s=[...r.data].map((e,t)=>{let s=this._def.items[t]||this._def.rest;return s?s._parse(new eo(r,e,r.path,t)):null}).filter(e=>!!e);return r.common.async?Promise.all(s).then(e=>Q.mergeArray(t,e)):Q.mergeArray(t,s)}get items(){return this._def.items}rest(e){return new eJ({...this._def,rest:e})}}eJ.create=(e,t)=>{if(!Array.isArray(e))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new eJ({items:e,typeName:o.ZodTuple,rest:null,...ed(t)})};class ez extends ec{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==X.object)return G(r,{code:B.invalid_type,expected:X.object,received:r.parsedType}),ee;let s=[],i=this._def.keyType,a=this._def.valueType;for(let e in r.data)s.push({key:i._parse(new eo(r,e,r.path,e)),value:a._parse(new eo(r,r.data[e],r.path,e)),alwaysSet:e in r.data});return r.common.async?Q.mergeObjectAsync(t,s):Q.mergeObjectSync(t,s)}get element(){return this._def.valueType}static create(e,t,r){return new ez(t instanceof ec?{keyType:e,valueType:t,typeName:o.ZodRecord,...ed(r)}:{keyType:eO.create(),valueType:e,typeName:o.ZodRecord,...ed(t)})}}class eY extends ec{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==X.map)return G(r,{code:B.invalid_type,expected:X.map,received:r.parsedType}),ee;let s=this._def.keyType,i=this._def.valueType,a=[...r.data.entries()].map(([e,t],a)=>({key:s._parse(new eo(r,e,r.path,[a,"key"])),value:i._parse(new eo(r,t,r.path,[a,"value"]))}));if(r.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let r of a){let s=await r.key,i=await r.value;if("aborted"===s.status||"aborted"===i.status)return ee;("dirty"===s.status||"dirty"===i.status)&&t.dirty(),e.set(s.value,i.value)}return{status:t.value,value:e}})}{let e=new Map;for(let r of a){let s=r.key,i=r.value;if("aborted"===s.status||"aborted"===i.status)return ee;("dirty"===s.status||"dirty"===i.status)&&t.dirty(),e.set(s.value,i.value)}return{status:t.value,value:e}}}}eY.create=(e,t,r)=>new eY({valueType:t,keyType:e,typeName:o.ZodMap,...ed(r)});class eK extends ec{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==X.set)return G(r,{code:B.invalid_type,expected:X.set,received:r.parsedType}),ee;let s=this._def;null!==s.minSize&&r.data.size<s.minSize.value&&(G(r,{code:B.too_small,minimum:s.minSize.value,type:"set",inclusive:!0,exact:!1,message:s.minSize.message}),t.dirty()),null!==s.maxSize&&r.data.size>s.maxSize.value&&(G(r,{code:B.too_big,maximum:s.maxSize.value,type:"set",inclusive:!0,exact:!1,message:s.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let r=new Set;for(let s of e){if("aborted"===s.status)return ee;"dirty"===s.status&&t.dirty(),r.add(s.value)}return{status:t.value,value:r}}let n=[...r.data.values()].map((e,t)=>i._parse(new eo(r,e,r.path,t)));return r.common.async?Promise.all(n).then(e=>a(e)):a(n)}min(e,t){return new eK({...this._def,minSize:{value:e,message:a.toString(t)}})}max(e,t){return new eK({...this._def,maxSize:{value:e,message:a.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}eK.create=(e,t)=>new eK({valueType:e,minSize:null,maxSize:null,typeName:o.ZodSet,...ed(t)});class eV extends ec{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==X.function)return G(t,{code:B.invalid_type,expected:X.function,received:t.parsedType}),ee;function r(e,r){return K({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,J,H].filter(e=>!!e),issueData:{code:B.invalid_arguments,argumentsError:r}})}function s(e,r){return K({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,J,H].filter(e=>!!e),issueData:{code:B.invalid_return_type,returnTypeError:r}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof e2){let e=this;return er(async function(...t){let n=new q([]),o=await e._def.args.parseAsync(t,i).catch(e=>{throw n.addIssue(r(t,e)),n}),l=await Reflect.apply(a,this,o);return await e._def.returns._def.type.parseAsync(l,i).catch(e=>{throw n.addIssue(s(l,e)),n})})}{let e=this;return er(function(...t){let n=e._def.args.safeParse(t,i);if(!n.success)throw new q([r(t,n.error)]);let o=Reflect.apply(a,this,n.data),l=e._def.returns.safeParse(o,i);if(!l.success)throw new q([s(o,l.error)]);return l.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new eV({...this._def,args:eJ.create(e).rest(eP.create())})}returns(e){return new eV({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,r){return new eV({args:e||eJ.create([]).rest(eP.create()),returns:t||eP.create(),typeName:o.ZodFunction,...ed(r)})}}class eG extends ec{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}eG.create=(e,t)=>new eG({getter:e,typeName:o.ZodLazy,...ed(t)});class eQ extends ec{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return G(t,{received:t.data,code:B.invalid_literal,expected:this._def.value}),ee}return{status:"valid",value:e.data}}get value(){return this._def.value}}function e0(e,t){return new e1({values:e,typeName:o.ZodEnum,...ed(t)})}eQ.create=(e,t)=>new eQ({value:e,typeName:o.ZodLiteral,...ed(t)});class e1 extends ec{_parse(e){if("string"!=typeof e.data){let t=this._getOrReturnCtx(e),r=this._def.values;return G(t,{expected:s.joinValues(r),received:t.parsedType,code:B.invalid_type}),ee}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),r=this._def.values;return G(t,{received:t.data,code:B.invalid_enum_value,options:r}),ee}return er(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return e1.create(e,{...this._def,...t})}exclude(e,t=this._def){return e1.create(this.options.filter(t=>!e.includes(t)),{...this._def,...t})}}e1.create=e0;class e4 extends ec{_parse(e){let t=s.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==X.string&&r.parsedType!==X.number){let e=s.objectValues(t);return G(r,{expected:s.joinValues(e),received:r.parsedType,code:B.invalid_type}),ee}if(this._cache||(this._cache=new Set(s.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let e=s.objectValues(t);return G(r,{received:r.data,code:B.invalid_enum_value,options:e}),ee}return er(e.data)}get enum(){return this._def.values}}e4.create=(e,t)=>new e4({values:e,typeName:o.ZodNativeEnum,...ed(t)});class e2 extends ec{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==X.promise&&!1===t.common.async?(G(t,{code:B.invalid_type,expected:X.promise,received:t.parsedType}),ee):er((t.parsedType===X.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}}e2.create=(e,t)=>new e2({type:e,typeName:o.ZodPromise,...ed(t)});class e9 extends ec{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===o.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:r}=this._processInputParams(e),i=this._def.effect||null,a={addIssue:e=>{G(r,e),e.fatal?t.abort():t.dirty()},get path(){return r.path}};if(a.addIssue=a.addIssue.bind(a),"preprocess"===i.type){let e=i.transform(r.data,a);if(r.common.async)return Promise.resolve(e).then(async e=>{if("aborted"===t.value)return ee;let s=await this._def.schema._parseAsync({data:e,path:r.path,parent:r});return"aborted"===s.status?ee:"dirty"===s.status||"dirty"===t.value?et(s.value):s});{if("aborted"===t.value)return ee;let s=this._def.schema._parseSync({data:e,path:r.path,parent:r});return"aborted"===s.status?ee:"dirty"===s.status||"dirty"===t.value?et(s.value):s}}if("refinement"===i.type){let e=e=>{let t=i.refinement(e,a);if(r.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(!1!==r.common.async)return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(r=>"aborted"===r.status?ee:("dirty"===r.status&&t.dirty(),e(r.value).then(()=>({status:t.value,value:r.value}))));{let s=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===s.status?ee:("dirty"===s.status&&t.dirty(),e(s.value),{status:t.value,value:s.value})}}if("transform"===i.type){if(!1!==r.common.async)return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(e=>ea(e)?Promise.resolve(i.transform(e.value,a)).then(e=>({status:t.value,value:e})):ee);{let e=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!ea(e))return ee;let s=i.transform(e.value,a);if(s instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:s}}}s.assertNever(i)}}e9.create=(e,t,r)=>new e9({schema:e,typeName:o.ZodEffects,effect:t,...ed(r)}),e9.createWithPreprocess=(e,t,r)=>new e9({schema:t,effect:{type:"preprocess",transform:e},typeName:o.ZodEffects,...ed(r)});class e3 extends ec{_parse(e){return this._getType(e)===X.undefined?er(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}e3.create=(e,t)=>new e3({innerType:e,typeName:o.ZodOptional,...ed(t)});class e5 extends ec{_parse(e){return this._getType(e)===X.null?er(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}e5.create=(e,t)=>new e5({innerType:e,typeName:o.ZodNullable,...ed(t)});class e6 extends ec{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return t.parsedType===X.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}e6.create=(e,t)=>new e6({innerType:e,typeName:o.ZodDefault,defaultValue:"function"==typeof t.default?t.default:()=>t.default,...ed(t)});class e8 extends ec{_parse(e){let{ctx:t}=this._processInputParams(e),r={...t,common:{...t.common,issues:[]}},s=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return en(s)?s.then(e=>({status:"valid",value:"valid"===e.status?e.value:this._def.catchValue({get error(){return new q(r.common.issues)},input:r.data})})):{status:"valid",value:"valid"===s.status?s.value:this._def.catchValue({get error(){return new q(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}e8.create=(e,t)=>new e8({innerType:e,typeName:o.ZodCatch,catchValue:"function"==typeof t.catch?t.catch:()=>t.catch,...ed(t)});class e7 extends ec{_parse(e){if(this._getType(e)!==X.nan){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.nan,received:t.parsedType}),ee}return{status:"valid",value:e.data}}}e7.create=e=>new e7({typeName:o.ZodNaN,...ed(e)});var te=Symbol("zod_brand");class tt extends ec{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return this._def.type._parse({data:r,path:t.path,parent:t})}unwrap(){return this._def.type}}class tr extends ec{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return"aborted"===e.status?ee:"dirty"===e.status?(t.dirty(),et(e.value)):this._def.out._parseAsync({data:e.value,path:r.path,parent:r})})();{let e=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===e.status?ee:"dirty"===e.status?(t.dirty(),{status:"dirty",value:e.value}):this._def.out._parseSync({data:e.value,path:r.path,parent:r})}}static create(e,t){return new tr({in:e,out:t,typeName:o.ZodPipeline})}}class ts extends ec{_parse(e){let t=this._def.innerType._parse(e),r=e=>(ea(e)&&(e.value=Object.freeze(e.value)),e);return en(t)?t.then(e=>r(e)):r(t)}unwrap(){return this._def.innerType}}function ti(e,t){let r="function"==typeof e?e(t):"string"==typeof e?{message:e}:e;return"string"==typeof r?{message:r}:r}function ta(e,t={},r){return e?eF.create().superRefine((s,i)=>{let a=e(s);if(a instanceof Promise)return a.then(e=>{if(!e){let e=ti(t,s),a=e.fatal??r??!0;i.addIssue({code:"custom",...e,fatal:a})}});if(!a){let e=ti(t,s),a=e.fatal??r??!0;i.addIssue({code:"custom",...e,fatal:a})}}):eF.create()}ts.create=(e,t)=>new ts({innerType:e,typeName:o.ZodReadonly,...ed(t)});var tn={object:eZ.lazycreate};!function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"}(o||(o={}));var to=(e,t={message:`Input not instance of ${e.name}`})=>ta(t=>t instanceof e,t),tl=eO.create,td=eI.create,tc=e7.create,tu=eA.create,th=eC.create,tp=eR.create,tm=eU.create,tf=eD.create,tg=ej.create,ty=eF.create,t_=eP.create,tT=eM.create,tE=e$.create,tv=eX.create,tb=eZ.create,tw=eZ.strictCreate,tN=eB.create,tk=eq.create,tS=eH.create,tL=eJ.create,tx=ez.create,tO=eY.create,tI=eK.create,tA=eV.create,tC=eG.create,tR=eQ.create,tU=e1.create,tD=e4.create,tj=e2.create,tF=e9.create,tP=e3.create,tM=e5.create,t$=e9.createWithPreprocess,tX=tr.create,tZ=()=>tl().optional(),tB=()=>td().optional(),tW=()=>th().optional(),tq={string:e=>eO.create({...e,coerce:!0}),number:e=>eI.create({...e,coerce:!0}),boolean:e=>eC.create({...e,coerce:!0}),bigint:e=>eA.create({...e,coerce:!0}),date:e=>eR.create({...e,coerce:!0})},tH=ee;class tJ{async execute(e,t){let r=this.schema.safeParse(e);if(!r.success)return{toolCallId:"",content:`Invalid parameters: ${r.error.message}`,isError:!0};try{let e=(0,c.resolve)(t.workingDirectory,r.data.file_path),s=await (0,h.readFile)(e,"utf-8");if(r.data.offset||r.data.limit){let e=s.split(`
|
|
21
|
+
`.repeat(Math.max(0,r-1)));let s=function(e,t){let r=e.indexOf(t);if(r>=0)return r;for(let r=e.length-1;r>=0;r--){let s=e[r];if("user"===s.role&&s.content===t.content)return r}return -1}(e.messages,e.currentUserMessage),i=function(e){let t=new Set;for(let r=0;r<e.length;r++){let s=e[r];"user"===s.role&&s.content.startsWith(R)&&(t.add(r),e[r+1]?.role==="assistant"&&e[r+1]?.content===C&&t.add(r+1))}return t}(e.messages);e.messages.forEach((e,r)=>{if(t.messageOverhead+=4,t.images+=(e.images?.length??0)*1e3,"system"!==e.role){if(i.has(r)){t.compactionSummary+=j(e.content);return}if("user"===e.role){let i=r===s?"currentUserMessage":"conversationHistory";t[i]+=j(e.content);return}if("assistant"===e.role){for(let r of(t.assistantMessages+=j(e.content),e.toolCalls??[]))t.toolCalls+=j(JSON.stringify(r));return}t.toolResults+=j(JSON.stringify({toolCallId:e.toolCallId,name:e.name,content:e.content}))}}),e.nativeToolDefinitions.length>0&&(t.nativeToolDefinitions=j(JSON.stringify(e.nativeToolDefinitions)),t.messageOverhead+=4*e.nativeToolDefinitions.length);let a=D.map(e=>({category:e,tokens:t[e]})),n=a.reduce((e,t)=>e+t.tokens,0),o=Math.max(1,e.maxTokens);return{requestIndex:e.requestIndex,providerId:e.providerId,modelId:e.modelId,maxTokens:o,totalTokens:n,ratio:Math.min(n/o,1),estimationMode:"heuristic",segments:a}}({requestIndex:m,providerId:this.config.modelProvider.providerId,modelId:this.config.modelProvider.modelId,maxTokens:h,messages:s,currentUserMessage:i,nativeToolDefinitions:e,systemSections:o.systemSections})};let r=[],a=!1,n=this.config.streamMaxRetries??0,l=0,d=0,c=0,g=e=>new Promise(t=>{if(this.abortController?.signal.aborted){t(!1);return}let r=setTimeout(()=>{this.abortController?.signal.removeEventListener("abort",s),t(!0)},e),s=()=>{clearTimeout(r),t(!1)};this.abortController?.signal.addEventListener("abort",s,{once:!0})});for(;;){if(c>0){yield{type:"thinking",message:`Retrying (${c})…`};let e=Math.min(1e3*Math.pow(2,c-1)+500*Math.random(),1e4);if(!await g(e)){yield{type:"turn_aborted"};return}}let t=!1,i=!1,o=!1;try{for await(let n of this.config.modelProvider.streamChat(s,{tools:e.length>0?e:void 0})){if(this.abortController?.signal.aborted)break;switch(n.type){case"text_chunk":i=i||n.text.length>0,p+=n.text,yield{type:"text_chunk",text:n.text};break;case"tool_call":i=!0,r.push(n.toolCall),yield{type:"tool_call",toolCall:n.toolCall};break;case"text_done":o=!0;break;case"error":i=!0,t=!0,a=!0,yield{type:"error",message:n.message,code:"strea-err"}}}if(!i&&!this.abortController?.signal.aborted){if(0===d){d++,c++;continue}a=!0,yield{type:"error",message:"Model stream ended without producing a response after retry"}}if(t||a)break;o&&(yield{type:"text_done"});break}catch(r){if(this.abortController?.signal.aborted){yield{type:"turn_aborted"};return}let e=r instanceof Error?r.message:String(r),t=/timeout|rate\s*limit|5\d{2}|econnrefused|econnreset|network|temporary|too many|retry/i.test(e);if(i||!t||l>=n){yield{type:"error",message:e},a=!0;break}l++,c++}}if(0===r.length||a){yield{type:"done",finalText:p};return}let y={role:"assistant",content:p,toolCalls:r};s.push(y);let _=[],T=await Promise.allSettled(r.map(async e=>{let r={workingDirectory:this.config.workingDirectory,sessionId:t,signal:this.abortController.signal},s=await Promise.race([this.config.toolExecutor.execute(e.name,e.arguments,r),new Promise((e,t)=>{if(this.abortController.signal.aborted){t(Error("turn_aborted"));return}this.abortController.signal.addEventListener("abort",()=>t(Error("turn_aborted")),{once:!0})})]);return s.toolCallId=e.id,s})),E=!1;for(let e=0;e<T.length;e++){let t;let i=T[e],a=r[e];if("fulfilled"===i.status)t=i.value;else{let e=i.reason?.message==="turn_aborted"?"turn_aborted":i.reason?.message??"Tool execution failed";if("turn_aborted"===e){E=!0;break}t={toolCallId:a.id,content:`Error: ${e}`,isError:!0}}_.push(t);let n=t.metadata?.showWidget;n&&(yield{type:"show_widget",widgetId:n.widgetId,widgetType:n.widgetType,data:n.data}),yield{type:"tool_result",result:t},s.push({role:"tool",content:t.content,toolCallId:t.toolCallId,name:a.name})}if(E){yield{type:"turn_aborted"},yield{type:"done",finalText:p||"Aborted"};return}if(await this.compactor.estimateTokens(s)>h*u){yield{type:"thinking",message:"Context growing after tool results — compacting…"};let e=await this.compactor.compact(s);if(s=e.messages,e.removedMessages>0&&(yield{type:"compacted",summary:e.summary,removedMessages:e.removedMessages},this.config.sessionStore)){let r=e.messages.filter(e=>"system"!==e.role).slice(2);await this.config.sessionStore.addMessage(t,{role:"user",content:JSON.stringify({summary:e.summary,recentMessages:r}),name:"__compaction_checkpoint__"}).catch(()=>{})}}p=""}yield{type:"done",finalText:p||`Reached max iterations (${this.config.maxIterations})`}}abort(){this.abortController?.abort()}getFilteredToolDefinitions(){let e=this.config.toolRegistry.getDefinitions();if(!this.config.enabledTools)return e;let t=new Set(this.config.enabledTools);return e.filter(e=>t.has(e.name)||!this.initialToolNames.has(e.name))}}class P{create(e){return new F(e)}}class M{register(e){this.tools.set(e.name,e)}unregister(e){this.tools.delete(e)}get(e){return this.tools.get(e)}getAll(){return Array.from(this.tools.values())}getDefinitions(){return this.getAll().map(e=>({name:e.name,description:e.description,parameters:e.parameters}))}async execute(e,t,r){let s=this.tools.get(e);return s?s.execute(t,r):{toolCallId:"",content:`Unknown tool: ${e}`,isError:!0}}validate(e,t){let r=this.tools.get(e);return!!r&&r.schema.safeParse(t).success}constructor(){this.tools=new Map}}var $={};((e,t)=>{for(var r in t)T(e,r,{get:t[r],enumerable:!0,configurable:!0,set:v.bind(t,r)})})($,{void:()=>tE,util:()=>s,unknown:()=>t_,union:()=>tN,undefined:()=>tf,tuple:()=>tL,transformer:()=>tF,symbol:()=>tm,string:()=>tl,strictObject:()=>tw,setErrorMap:()=>z,set:()=>tI,record:()=>tx,quotelessJson:()=>W,promise:()=>tj,preprocess:()=>t$,pipeline:()=>tX,ostring:()=>tZ,optional:()=>tP,onumber:()=>tB,oboolean:()=>tW,objectUtil:()=>i,object:()=>tb,number:()=>td,nullable:()=>tM,null:()=>tg,never:()=>tT,nativeEnum:()=>tD,nan:()=>tc,map:()=>tO,makeIssue:()=>K,literal:()=>tC,lazy:()=>tR,late:()=>tn,isValid:()=>ea,isDirty:()=>ei,isAsync:()=>en,isAborted:()=>es,intersection:()=>tk,instanceof:()=>to,getParsedType:()=>Z,getErrorMap:()=>Y,function:()=>tA,enum:()=>tU,effect:()=>tF,discriminatedUnion:()=>tS,defaultErrorMap:()=>H,datetimeRegex:()=>ex,date:()=>tp,custom:()=>ta,coerce:()=>tq,boolean:()=>th,bigint:()=>tu,array:()=>tv,any:()=>ty,addIssueToContext:()=>G,ZodVoid:()=>e$,ZodUnknown:()=>eP,ZodUnion:()=>eB,ZodUndefined:()=>eD,ZodType:()=>ec,ZodTuple:()=>eJ,ZodTransformer:()=>e9,ZodSymbol:()=>eU,ZodString:()=>eO,ZodSet:()=>eK,ZodSchema:()=>ec,ZodRecord:()=>ez,ZodReadonly:()=>ts,ZodPromise:()=>e2,ZodPipeline:()=>tr,ZodParsedType:()=>X,ZodOptional:()=>e3,ZodObject:()=>eZ,ZodNumber:()=>eI,ZodNullable:()=>e5,ZodNull:()=>ej,ZodNever:()=>eM,ZodNativeEnum:()=>e4,ZodNaN:()=>e7,ZodMap:()=>eY,ZodLiteral:()=>eQ,ZodLazy:()=>eG,ZodIssueCode:()=>B,ZodIntersection:()=>eH,ZodFunction:()=>eV,ZodFirstPartyTypeKind:()=>o,ZodError:()=>q,ZodEnum:()=>e1,ZodEffects:()=>e9,ZodDiscriminatedUnion:()=>eq,ZodDefault:()=>e6,ZodDate:()=>eC,ZodCatch:()=>e8,ZodBranded:()=>tt,ZodBoolean:()=>eR,ZodBigInt:()=>eA,ZodArray:()=>eX,ZodAny:()=>eF,Schema:()=>ec,ParseStatus:()=>Q,OK:()=>er,NEVER:()=>tH,INVALID:()=>ee,EMPTY_PATH:()=>V,DIRTY:()=>et,BRAND:()=>te}),function(e){e.assertEqual=e=>{},e.assertIs=function(e){},e.assertNever=function(e){throw Error()},e.arrayToEnum=e=>{let t={};for(let r of e)t[r]=r;return t},e.getValidEnumValues=t=>{let r=e.objectKeys(t).filter(e=>"number"!=typeof t[t[e]]),s={};for(let e of r)s[e]=t[e];return e.objectValues(s)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys="function"==typeof Object.keys?e=>Object.keys(e):e=>{let t=[];for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return t},e.find=(e,t)=>{for(let r of e)if(t(r))return r},e.isInteger="function"==typeof Number.isInteger?e=>Number.isInteger(e):e=>"number"==typeof e&&Number.isFinite(e)&&Math.floor(e)===e,e.joinValues=function(e,t=" | "){return e.map(e=>"string"==typeof e?`'${e}'`:e).join(t)},e.jsonStringifyReplacer=(e,t)=>"bigint"==typeof t?t.toString():t}(s||(s={})),(i||(i={})).mergeShapes=(e,t)=>({...e,...t});var X=s.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Z=e=>{switch(typeof e){case"undefined":return X.undefined;case"string":return X.string;case"number":return Number.isNaN(e)?X.nan:X.number;case"boolean":return X.boolean;case"function":return X.function;case"bigint":return X.bigint;case"symbol":return X.symbol;case"object":if(Array.isArray(e))return X.array;if(null===e)return X.null;if(e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch)return X.promise;if("undefined"!=typeof Map&&e instanceof Map)return X.map;if("undefined"!=typeof Set&&e instanceof Set)return X.set;if("undefined"!=typeof Date&&e instanceof Date)return X.date;return X.object;default:return X.unknown}},B=s.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),W=e=>JSON.stringify(e,null,2).replace(/"([^"]+)":/g,"$1:");class q extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name="ZodError",this.issues=e}format(e){let t=e||function(e){return e.message},r={_errors:[]},s=e=>{for(let i of e.issues)if("invalid_union"===i.code)i.unionErrors.map(s);else if("invalid_return_type"===i.code)s(i.returnTypeError);else if("invalid_arguments"===i.code)s(i.argumentsError);else if(0===i.path.length)r._errors.push(t(i));else{let e=r,s=0;for(;s<i.path.length;){let r=i.path[s];s===i.path.length-1?(e[r]=e[r]||{_errors:[]},e[r]._errors.push(t(i))):e[r]=e[r]||{_errors:[]},e=e[r],s++}}};return s(this),r}static assert(e){if(!(e instanceof q))throw Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,s.jsonStringifyReplacer,2)}get isEmpty(){return 0===this.issues.length}flatten(e=e=>e.message){let t={},r=[];for(let s of this.issues)if(s.path.length>0){let r=s.path[0];t[r]=t[r]||[],t[r].push(e(s))}else r.push(e(s));return{formErrors:r,fieldErrors:t}}get formErrors(){return this.flatten()}}q.create=e=>new q(e);var H=(e,t)=>{let r;switch(e.code){case B.invalid_type:r=e.received===X.undefined?"Required":`Expected ${e.expected}, received ${e.received}`;break;case B.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(e.expected,s.jsonStringifyReplacer)}`;break;case B.unrecognized_keys:r=`Unrecognized key(s) in object: ${s.joinValues(e.keys,", ")}`;break;case B.invalid_union:r="Invalid input";break;case B.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${s.joinValues(e.options)}`;break;case B.invalid_enum_value:r=`Invalid enum value. Expected ${s.joinValues(e.options)}, received '${e.received}'`;break;case B.invalid_arguments:r="Invalid function arguments";break;case B.invalid_return_type:r="Invalid function return type";break;case B.invalid_date:r="Invalid date";break;case B.invalid_string:"object"==typeof e.validation?"includes"in e.validation?(r=`Invalid input: must include "${e.validation.includes}"`,"number"==typeof e.validation.position&&(r=`${r} at one or more positions greater than or equal to ${e.validation.position}`)):"startsWith"in e.validation?r=`Invalid input: must start with "${e.validation.startsWith}"`:"endsWith"in e.validation?r=`Invalid input: must end with "${e.validation.endsWith}"`:s.assertNever(e.validation):r="regex"!==e.validation?`Invalid ${e.validation}`:"Invalid";break;case B.too_small:r="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at least":"more than"} ${e.minimum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at least":"over"} ${e.minimum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:"bigint"===e.type?`Number must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${e.minimum}`:"date"===e.type?`Date must be ${e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(e.minimum))}`:"Invalid input";break;case B.too_big:r="array"===e.type?`Array must contain ${e.exact?"exactly":e.inclusive?"at most":"less than"} ${e.maximum} element(s)`:"string"===e.type?`String must contain ${e.exact?"exactly":e.inclusive?"at most":"under"} ${e.maximum} character(s)`:"number"===e.type?`Number must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"bigint"===e.type?`BigInt must be ${e.exact?"exactly":e.inclusive?"less than or equal to":"less than"} ${e.maximum}`:"date"===e.type?`Date must be ${e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(e.maximum))}`:"Invalid input";break;case B.custom:r="Invalid input";break;case B.invalid_intersection_types:r="Intersection results could not be merged";break;case B.not_multiple_of:r=`Number must be a multiple of ${e.multipleOf}`;break;case B.not_finite:r="Number must be finite";break;default:r=t.defaultError,s.assertNever(e)}return{message:r}},J=H;function z(e){J=e}function Y(){return J}var K=e=>{let{data:t,path:r,errorMaps:s,issueData:i}=e,a=[...r,...i.path||[]],n={...i,path:a};if(void 0!==i.message)return{...i,path:a,message:i.message};let o="";for(let e of s.filter(e=>!!e).slice().reverse())o=e(n,{data:t,defaultError:o}).message;return{...i,path:a,message:o}},V=[];function G(e,t){let r=J,s=K({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,r,r===H?void 0:H].filter(e=>!!e)});e.common.issues.push(s)}class Q{constructor(){this.value="valid"}dirty(){"valid"===this.value&&(this.value="dirty")}abort(){"aborted"!==this.value&&(this.value="aborted")}static mergeArray(e,t){let r=[];for(let s of t){if("aborted"===s.status)return ee;"dirty"===s.status&&e.dirty(),r.push(s.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,t){let r=[];for(let e of t){let t=await e.key,s=await e.value;r.push({key:t,value:s})}return Q.mergeObjectSync(e,r)}static mergeObjectSync(e,t){let r={};for(let s of t){let{key:t,value:i}=s;if("aborted"===t.status||"aborted"===i.status)return ee;"dirty"===t.status&&e.dirty(),"dirty"===i.status&&e.dirty(),"__proto__"!==t.value&&(void 0!==i.value||s.alwaysSet)&&(r[t.value]=i.value)}return{status:e.value,value:r}}}var ee=Object.freeze({status:"aborted"}),et=e=>({status:"dirty",value:e}),er=e=>({status:"valid",value:e}),es=e=>"aborted"===e.status,ei=e=>"dirty"===e.status,ea=e=>"valid"===e.status,en=e=>"undefined"!=typeof Promise&&e instanceof Promise;!function(e){e.errToObj=e=>"string"==typeof e?{message:e}:e||{},e.toString=e=>"string"==typeof e?e:e?.message}(a||(a={}));class eo{constructor(e,t,r,s){this._cachedPath=[],this.parent=e,this.data=t,this._path=r,this._key=s}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}var el=(e,t)=>{if(ea(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let t=new q(e.common.issues);return this._error=t,this._error}}};function ed(e){if(!e)return{};let{errorMap:t,invalid_type_error:r,required_error:s,description:i}=e;if(t&&(r||s))throw Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return"invalid_enum_value"===t.code?{message:a??i.defaultError}:void 0===i.data?{message:a??s??i.defaultError}:"invalid_type"!==t.code?{message:i.defaultError}:{message:a??r??i.defaultError}},description:i}}class ec{get description(){return this._def.description}_getType(e){return Z(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:Z(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Q,ctx:{common:e.parent.common,data:e.data,parsedType:Z(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(en(t))throw Error("Synchronous parse encountered promise.");return t}_parseAsync(e){return Promise.resolve(this._parse(e))}parse(e,t){let r=this.safeParse(e,t);if(r.success)return r.data;throw r.error}safeParse(e,t){let r={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Z(e)},s=this._parseSync({data:e,path:r.path,parent:r});return el(r,s)}"~validate"(e){let t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Z(e)};if(!this["~standard"].async)try{let r=this._parseSync({data:e,path:[],parent:t});return ea(r)?{value:r.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>ea(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let r=await this.safeParseAsync(e,t);if(r.success)return r.data;throw r.error}async safeParseAsync(e,t){let r={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:Z(e)},s=this._parse({data:e,path:r.path,parent:r});return el(r,await (en(s)?s:Promise.resolve(s)))}refine(e,t){let r=e=>"string"==typeof t||void 0===t?{message:t}:"function"==typeof t?t(e):t;return this._refinement((t,s)=>{let i=e(t),a=()=>s.addIssue({code:B.custom,...r(t)});return"undefined"!=typeof Promise&&i instanceof Promise?i.then(e=>!!e||(a(),!1)):!!i||(a(),!1)})}refinement(e,t){return this._refinement((r,s)=>!!e(r)||(s.addIssue("function"==typeof t?t(r,s):t),!1))}_refinement(e){return new e9({schema:this,typeName:o.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:e=>this["~validate"](e)}}optional(){return e3.create(this,this._def)}nullable(){return e5.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return eX.create(this)}promise(){return e2.create(this,this._def)}or(e){return eB.create([this,e],this._def)}and(e){return eH.create(this,e,this._def)}transform(e){return new e9({...ed(this._def),schema:this,typeName:o.ZodEffects,effect:{type:"transform",transform:e}})}default(e){return new e6({...ed(this._def),innerType:this,defaultValue:"function"==typeof e?e:()=>e,typeName:o.ZodDefault})}brand(){return new tt({typeName:o.ZodBranded,type:this,...ed(this._def)})}catch(e){return new e8({...ed(this._def),innerType:this,catchValue:"function"==typeof e?e:()=>e,typeName:o.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return tr.create(this,e)}readonly(){return ts.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var eu=/^c[^\s-]{8,}$/i,eh=/^[0-9a-z]+$/,ep=/^[0-9A-HJKMNP-TV-Z]{26}$/i,em=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,ef=/^[a-z0-9_-]{21}$/i,eg=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,ey=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,e_=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,eT=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,eE=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ev=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,eb=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,ew=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,eN=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,eS="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",ek=RegExp(`^${eS}$`);function eL(e){let t="[0-5]\\d";e.precision?t=`${t}\\.\\d{${e.precision}}`:null==e.precision&&(t=`${t}(\\.\\d+)?`);let r=e.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${r}`}function ex(e){let t=`${eS}T${eL(e)}`,r=[];return r.push(e.local?"Z?":"Z"),e.offset&&r.push("([+-]\\d{2}:?\\d{2})"),t=`${t}(${r.join("|")})`,RegExp(`^${t}$`)}class eO extends ec{_parse(e){var t,r,i,a;let o;if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==X.string){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.string,received:t.parsedType}),ee}let l=new Q;for(let d of this._def.checks)if("min"===d.kind)e.data.length<d.value&&(G(o=this._getOrReturnCtx(e,o),{code:B.too_small,minimum:d.value,type:"string",inclusive:!0,exact:!1,message:d.message}),l.dirty());else if("max"===d.kind)e.data.length>d.value&&(G(o=this._getOrReturnCtx(e,o),{code:B.too_big,maximum:d.value,type:"string",inclusive:!0,exact:!1,message:d.message}),l.dirty());else if("length"===d.kind){let t=e.data.length>d.value,r=e.data.length<d.value;(t||r)&&(o=this._getOrReturnCtx(e,o),t?G(o,{code:B.too_big,maximum:d.value,type:"string",inclusive:!0,exact:!0,message:d.message}):r&&G(o,{code:B.too_small,minimum:d.value,type:"string",inclusive:!0,exact:!0,message:d.message}),l.dirty())}else if("email"===d.kind)e_.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"email",code:B.invalid_string,message:d.message}),l.dirty());else if("emoji"===d.kind)n||(n=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),n.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"emoji",code:B.invalid_string,message:d.message}),l.dirty());else if("uuid"===d.kind)em.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"uuid",code:B.invalid_string,message:d.message}),l.dirty());else if("nanoid"===d.kind)ef.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"nanoid",code:B.invalid_string,message:d.message}),l.dirty());else if("cuid"===d.kind)eu.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"cuid",code:B.invalid_string,message:d.message}),l.dirty());else if("cuid2"===d.kind)eh.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"cuid2",code:B.invalid_string,message:d.message}),l.dirty());else if("ulid"===d.kind)ep.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"ulid",code:B.invalid_string,message:d.message}),l.dirty());else if("url"===d.kind)try{new URL(e.data)}catch{G(o=this._getOrReturnCtx(e,o),{validation:"url",code:B.invalid_string,message:d.message}),l.dirty()}else"regex"===d.kind?(d.regex.lastIndex=0,d.regex.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"regex",code:B.invalid_string,message:d.message}),l.dirty())):"trim"===d.kind?e.data=e.data.trim():"includes"===d.kind?e.data.includes(d.value,d.position)||(G(o=this._getOrReturnCtx(e,o),{code:B.invalid_string,validation:{includes:d.value,position:d.position},message:d.message}),l.dirty()):"toLowerCase"===d.kind?e.data=e.data.toLowerCase():"toUpperCase"===d.kind?e.data=e.data.toUpperCase():"startsWith"===d.kind?e.data.startsWith(d.value)||(G(o=this._getOrReturnCtx(e,o),{code:B.invalid_string,validation:{startsWith:d.value},message:d.message}),l.dirty()):"endsWith"===d.kind?e.data.endsWith(d.value)||(G(o=this._getOrReturnCtx(e,o),{code:B.invalid_string,validation:{endsWith:d.value},message:d.message}),l.dirty()):"datetime"===d.kind?ex(d).test(e.data)||(G(o=this._getOrReturnCtx(e,o),{code:B.invalid_string,validation:"datetime",message:d.message}),l.dirty()):"date"===d.kind?ek.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{code:B.invalid_string,validation:"date",message:d.message}),l.dirty()):"time"===d.kind?RegExp(`^${eL(d)}$`).test(e.data)||(G(o=this._getOrReturnCtx(e,o),{code:B.invalid_string,validation:"time",message:d.message}),l.dirty()):"duration"===d.kind?ey.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"duration",code:B.invalid_string,message:d.message}),l.dirty()):"ip"===d.kind?(t=e.data,("v4"===(r=d.version)||!r)&&eT.test(t)||("v6"===r||!r)&&ev.test(t)||(G(o=this._getOrReturnCtx(e,o),{validation:"ip",code:B.invalid_string,message:d.message}),l.dirty())):"jwt"===d.kind?!function(e,t){if(!eg.test(e))return!1;try{let[r]=e.split(".");if(!r)return!1;let s=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),i=JSON.parse(atob(s));if("object"!=typeof i||null===i||"typ"in i&&i?.typ!=="JWT"||!i.alg||t&&i.alg!==t)return!1;return!0}catch{return!1}}(e.data,d.alg)&&(G(o=this._getOrReturnCtx(e,o),{validation:"jwt",code:B.invalid_string,message:d.message}),l.dirty()):"cidr"===d.kind?(i=e.data,("v4"===(a=d.version)||!a)&&eE.test(i)||("v6"===a||!a)&&eb.test(i)||(G(o=this._getOrReturnCtx(e,o),{validation:"cidr",code:B.invalid_string,message:d.message}),l.dirty())):"base64"===d.kind?ew.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"base64",code:B.invalid_string,message:d.message}),l.dirty()):"base64url"===d.kind?eN.test(e.data)||(G(o=this._getOrReturnCtx(e,o),{validation:"base64url",code:B.invalid_string,message:d.message}),l.dirty()):s.assertNever(d);return{status:l.value,value:e.data}}_regex(e,t,r){return this.refinement(t=>e.test(t),{validation:t,code:B.invalid_string,...a.errToObj(r)})}_addCheck(e){return new eO({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...a.errToObj(e)})}url(e){return this._addCheck({kind:"url",...a.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...a.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...a.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...a.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...a.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...a.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...a.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...a.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...a.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...a.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...a.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...a.errToObj(e)})}datetime(e){return"string"==typeof e?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:void 0===e?.precision?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...a.errToObj(e?.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return"string"==typeof e?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:void 0===e?.precision?null:e?.precision,...a.errToObj(e?.message)})}duration(e){return this._addCheck({kind:"duration",...a.errToObj(e)})}regex(e,t){return this._addCheck({kind:"regex",regex:e,...a.errToObj(t)})}includes(e,t){return this._addCheck({kind:"includes",value:e,position:t?.position,...a.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:"startsWith",value:e,...a.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:"endsWith",value:e,...a.errToObj(t)})}min(e,t){return this._addCheck({kind:"min",value:e,...a.errToObj(t)})}max(e,t){return this._addCheck({kind:"max",value:e,...a.errToObj(t)})}length(e,t){return this._addCheck({kind:"length",value:e,...a.errToObj(t)})}nonempty(e){return this.min(1,a.errToObj(e))}trim(){return new eO({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new eO({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new eO({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>"datetime"===e.kind)}get isDate(){return!!this._def.checks.find(e=>"date"===e.kind)}get isTime(){return!!this._def.checks.find(e=>"time"===e.kind)}get isDuration(){return!!this._def.checks.find(e=>"duration"===e.kind)}get isEmail(){return!!this._def.checks.find(e=>"email"===e.kind)}get isURL(){return!!this._def.checks.find(e=>"url"===e.kind)}get isEmoji(){return!!this._def.checks.find(e=>"emoji"===e.kind)}get isUUID(){return!!this._def.checks.find(e=>"uuid"===e.kind)}get isNANOID(){return!!this._def.checks.find(e=>"nanoid"===e.kind)}get isCUID(){return!!this._def.checks.find(e=>"cuid"===e.kind)}get isCUID2(){return!!this._def.checks.find(e=>"cuid2"===e.kind)}get isULID(){return!!this._def.checks.find(e=>"ulid"===e.kind)}get isIP(){return!!this._def.checks.find(e=>"ip"===e.kind)}get isCIDR(){return!!this._def.checks.find(e=>"cidr"===e.kind)}get isBase64(){return!!this._def.checks.find(e=>"base64"===e.kind)}get isBase64url(){return!!this._def.checks.find(e=>"base64url"===e.kind)}get minLength(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}eO.create=e=>new eO({checks:[],typeName:o.ZodString,coerce:e?.coerce??!1,...ed(e)});class eI extends ec{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){let t;if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==X.number){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.number,received:t.parsedType}),ee}let r=new Q;for(let i of this._def.checks)"int"===i.kind?s.isInteger(e.data)||(G(t=this._getOrReturnCtx(e,t),{code:B.invalid_type,expected:"integer",received:"float",message:i.message}),r.dirty()):"min"===i.kind?(i.inclusive?e.data<i.value:e.data<=i.value)&&(G(t=this._getOrReturnCtx(e,t),{code:B.too_small,minimum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),r.dirty()):"max"===i.kind?(i.inclusive?e.data>i.value:e.data>=i.value)&&(G(t=this._getOrReturnCtx(e,t),{code:B.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),r.dirty()):"multipleOf"===i.kind?0!==function(e,t){let r=(e.toString().split(".")[1]||"").length,s=(t.toString().split(".")[1]||"").length,i=r>s?r:s;return Number.parseInt(e.toFixed(i).replace(".",""))%Number.parseInt(t.toFixed(i).replace(".",""))/10**i}(e.data,i.value)&&(G(t=this._getOrReturnCtx(e,t),{code:B.not_multiple_of,multipleOf:i.value,message:i.message}),r.dirty()):"finite"===i.kind?Number.isFinite(e.data)||(G(t=this._getOrReturnCtx(e,t),{code:B.not_finite,message:i.message}),r.dirty()):s.assertNever(i);return{status:r.value,value:e.data}}gte(e,t){return this.setLimit("min",e,!0,a.toString(t))}gt(e,t){return this.setLimit("min",e,!1,a.toString(t))}lte(e,t){return this.setLimit("max",e,!0,a.toString(t))}lt(e,t){return this.setLimit("max",e,!1,a.toString(t))}setLimit(e,t,r,s){return new eI({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:a.toString(s)}]})}_addCheck(e){return new eI({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:a.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:a.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:a.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:a.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:a.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:a.toString(t)})}finite(e){return this._addCheck({kind:"finite",message:a.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:a.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:a.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>"int"===e.kind||"multipleOf"===e.kind&&s.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let r of this._def.checks){if("finite"===r.kind||"int"===r.kind||"multipleOf"===r.kind)return!0;"min"===r.kind?(null===t||r.value>t)&&(t=r.value):"max"===r.kind&&(null===e||r.value<e)&&(e=r.value)}return Number.isFinite(t)&&Number.isFinite(e)}}eI.create=e=>new eI({checks:[],typeName:o.ZodNumber,coerce:e?.coerce||!1,...ed(e)});class eA extends ec{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){let t;if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==X.bigint)return this._getInvalidInput(e);let r=new Q;for(let i of this._def.checks)"min"===i.kind?(i.inclusive?e.data<i.value:e.data<=i.value)&&(G(t=this._getOrReturnCtx(e,t),{code:B.too_small,type:"bigint",minimum:i.value,inclusive:i.inclusive,message:i.message}),r.dirty()):"max"===i.kind?(i.inclusive?e.data>i.value:e.data>=i.value)&&(G(t=this._getOrReturnCtx(e,t),{code:B.too_big,type:"bigint",maximum:i.value,inclusive:i.inclusive,message:i.message}),r.dirty()):"multipleOf"===i.kind?e.data%i.value!==BigInt(0)&&(G(t=this._getOrReturnCtx(e,t),{code:B.not_multiple_of,multipleOf:i.value,message:i.message}),r.dirty()):s.assertNever(i);return{status:r.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.bigint,received:t.parsedType}),ee}gte(e,t){return this.setLimit("min",e,!0,a.toString(t))}gt(e,t){return this.setLimit("min",e,!1,a.toString(t))}lte(e,t){return this.setLimit("max",e,!0,a.toString(t))}lt(e,t){return this.setLimit("max",e,!1,a.toString(t))}setLimit(e,t,r,s){return new eA({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:r,message:a.toString(s)}]})}_addCheck(e){return new eA({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:a.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:a.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:a.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:a.toString(e)})}multipleOf(e,t){return this._addCheck({kind:"multipleOf",value:e,message:a.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return e}}eA.create=e=>new eA({checks:[],typeName:o.ZodBigInt,coerce:e?.coerce??!1,...ed(e)});class eR extends ec{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==X.boolean){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.boolean,received:t.parsedType}),ee}return er(e.data)}}eR.create=e=>new eR({typeName:o.ZodBoolean,coerce:e?.coerce||!1,...ed(e)});class eC extends ec{_parse(e){let t;if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==X.date){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.date,received:t.parsedType}),ee}if(Number.isNaN(e.data.getTime()))return G(this._getOrReturnCtx(e),{code:B.invalid_date}),ee;let r=new Q;for(let i of this._def.checks)"min"===i.kind?e.data.getTime()<i.value&&(G(t=this._getOrReturnCtx(e,t),{code:B.too_small,message:i.message,inclusive:!0,exact:!1,minimum:i.value,type:"date"}),r.dirty()):"max"===i.kind?e.data.getTime()>i.value&&(G(t=this._getOrReturnCtx(e,t),{code:B.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),r.dirty()):s.assertNever(i);return{status:r.value,value:new Date(e.data.getTime())}}_addCheck(e){return new eC({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:a.toString(t)})}max(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:a.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)"min"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)"max"===t.kind&&(null===e||t.value<e)&&(e=t.value);return null!=e?new Date(e):null}}eC.create=e=>new eC({checks:[],coerce:e?.coerce||!1,typeName:o.ZodDate,...ed(e)});class eU extends ec{_parse(e){if(this._getType(e)!==X.symbol){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.symbol,received:t.parsedType}),ee}return er(e.data)}}eU.create=e=>new eU({typeName:o.ZodSymbol,...ed(e)});class eD extends ec{_parse(e){if(this._getType(e)!==X.undefined){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.undefined,received:t.parsedType}),ee}return er(e.data)}}eD.create=e=>new eD({typeName:o.ZodUndefined,...ed(e)});class ej extends ec{_parse(e){if(this._getType(e)!==X.null){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.null,received:t.parsedType}),ee}return er(e.data)}}ej.create=e=>new ej({typeName:o.ZodNull,...ed(e)});class eF extends ec{constructor(){super(...arguments),this._any=!0}_parse(e){return er(e.data)}}eF.create=e=>new eF({typeName:o.ZodAny,...ed(e)});class eP extends ec{constructor(){super(...arguments),this._unknown=!0}_parse(e){return er(e.data)}}eP.create=e=>new eP({typeName:o.ZodUnknown,...ed(e)});class eM extends ec{_parse(e){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.never,received:t.parsedType}),ee}}eM.create=e=>new eM({typeName:o.ZodNever,...ed(e)});class e$ extends ec{_parse(e){if(this._getType(e)!==X.undefined){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.void,received:t.parsedType}),ee}return er(e.data)}}e$.create=e=>new e$({typeName:o.ZodVoid,...ed(e)});class eX extends ec{_parse(e){let{ctx:t,status:r}=this._processInputParams(e),s=this._def;if(t.parsedType!==X.array)return G(t,{code:B.invalid_type,expected:X.array,received:t.parsedType}),ee;if(null!==s.exactLength){let e=t.data.length>s.exactLength.value,i=t.data.length<s.exactLength.value;(e||i)&&(G(t,{code:e?B.too_big:B.too_small,minimum:i?s.exactLength.value:void 0,maximum:e?s.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:s.exactLength.message}),r.dirty())}if(null!==s.minLength&&t.data.length<s.minLength.value&&(G(t,{code:B.too_small,minimum:s.minLength.value,type:"array",inclusive:!0,exact:!1,message:s.minLength.message}),r.dirty()),null!==s.maxLength&&t.data.length>s.maxLength.value&&(G(t,{code:B.too_big,maximum:s.maxLength.value,type:"array",inclusive:!0,exact:!1,message:s.maxLength.message}),r.dirty()),t.common.async)return Promise.all([...t.data].map((e,r)=>s.type._parseAsync(new eo(t,e,t.path,r)))).then(e=>Q.mergeArray(r,e));let i=[...t.data].map((e,r)=>s.type._parseSync(new eo(t,e,t.path,r)));return Q.mergeArray(r,i)}get element(){return this._def.type}min(e,t){return new eX({...this._def,minLength:{value:e,message:a.toString(t)}})}max(e,t){return new eX({...this._def,maxLength:{value:e,message:a.toString(t)}})}length(e,t){return new eX({...this._def,exactLength:{value:e,message:a.toString(t)}})}nonempty(e){return this.min(1,e)}}eX.create=(e,t)=>new eX({type:e,minLength:null,maxLength:null,exactLength:null,typeName:o.ZodArray,...ed(t)});class eZ extends ec{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;let e=this._def.shape(),t=s.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==X.object){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.object,received:t.parsedType}),ee}let{status:t,ctx:r}=this._processInputParams(e),{shape:s,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof eM&&"strip"===this._def.unknownKeys))for(let e in r.data)i.includes(e)||a.push(e);let n=[];for(let e of i){let t=s[e],i=r.data[e];n.push({key:{status:"valid",value:e},value:t._parse(new eo(r,i,r.path,e)),alwaysSet:e in r.data})}if(this._def.catchall instanceof eM){let e=this._def.unknownKeys;if("passthrough"===e)for(let e of a)n.push({key:{status:"valid",value:e},value:{status:"valid",value:r.data[e]}});else if("strict"===e)a.length>0&&(G(r,{code:B.unrecognized_keys,keys:a}),t.dirty());else if("strip"===e);else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let e=this._def.catchall;for(let t of a){let s=r.data[t];n.push({key:{status:"valid",value:t},value:e._parse(new eo(r,s,r.path,t)),alwaysSet:t in r.data})}}return r.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of n){let r=await t.key,s=await t.value;e.push({key:r,value:s,alwaysSet:t.alwaysSet})}return e}).then(e=>Q.mergeObjectSync(t,e)):Q.mergeObjectSync(t,n)}get shape(){return this._def.shape()}strict(e){return a.errToObj,new eZ({...this._def,unknownKeys:"strict",...void 0!==e?{errorMap:(t,r)=>{let s=this._def.errorMap?.(t,r).message??r.defaultError;return"unrecognized_keys"===t.code?{message:a.errToObj(e).message??s}:{message:s}}}:{}})}strip(){return new eZ({...this._def,unknownKeys:"strip"})}passthrough(){return new eZ({...this._def,unknownKeys:"passthrough"})}extend(e){return new eZ({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new eZ({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:o.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new eZ({...this._def,catchall:e})}pick(e){let t={};for(let r of s.objectKeys(e))e[r]&&this.shape[r]&&(t[r]=this.shape[r]);return new eZ({...this._def,shape:()=>t})}omit(e){let t={};for(let r of s.objectKeys(this.shape))e[r]||(t[r]=this.shape[r]);return new eZ({...this._def,shape:()=>t})}deepPartial(){return function e(t){if(t instanceof eZ){let r={};for(let s in t.shape){let i=t.shape[s];r[s]=e3.create(e(i))}return new eZ({...t._def,shape:()=>r})}return t instanceof eX?new eX({...t._def,type:e(t.element)}):t instanceof e3?e3.create(e(t.unwrap())):t instanceof e5?e5.create(e(t.unwrap())):t instanceof eJ?eJ.create(t.items.map(t=>e(t))):t}(this)}partial(e){let t={};for(let r of s.objectKeys(this.shape)){let s=this.shape[r];e&&!e[r]?t[r]=s:t[r]=s.optional()}return new eZ({...this._def,shape:()=>t})}required(e){let t={};for(let r of s.objectKeys(this.shape))if(e&&!e[r])t[r]=this.shape[r];else{let e=this.shape[r];for(;e instanceof e3;)e=e._def.innerType;t[r]=e}return new eZ({...this._def,shape:()=>t})}keyof(){return e0(s.objectKeys(this.shape))}}eZ.create=(e,t)=>new eZ({shape:()=>e,unknownKeys:"strip",catchall:eM.create(),typeName:o.ZodObject,...ed(t)}),eZ.strictCreate=(e,t)=>new eZ({shape:()=>e,unknownKeys:"strict",catchall:eM.create(),typeName:o.ZodObject,...ed(t)}),eZ.lazycreate=(e,t)=>new eZ({shape:e,unknownKeys:"strip",catchall:eM.create(),typeName:o.ZodObject,...ed(t)});class eB extends ec{_parse(e){let{ctx:t}=this._processInputParams(e),r=this._def.options;if(t.common.async)return Promise.all(r.map(async e=>{let r={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:r}),ctx:r}})).then(function(e){for(let t of e)if("valid"===t.result.status)return t.result;for(let r of e)if("dirty"===r.result.status)return t.common.issues.push(...r.ctx.common.issues),r.result;let r=e.map(e=>new q(e.ctx.common.issues));return G(t,{code:B.invalid_union,unionErrors:r}),ee});{let e;let s=[];for(let i of r){let r={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:r});if("valid"===a.status)return a;"dirty"!==a.status||e||(e={result:a,ctx:r}),r.common.issues.length&&s.push(r.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=s.map(e=>new q(e));return G(t,{code:B.invalid_union,unionErrors:i}),ee}}get options(){return this._def.options}}eB.create=(e,t)=>new eB({options:e,typeName:o.ZodUnion,...ed(t)});var eW=e=>{if(e instanceof eG)return eW(e.schema);if(e instanceof e9)return eW(e.innerType());if(e instanceof eQ)return[e.value];if(e instanceof e1)return e.options;if(e instanceof e4)return s.objectValues(e.enum);if(e instanceof e6)return eW(e._def.innerType);if(e instanceof eD)return[void 0];else if(e instanceof ej)return[null];else if(e instanceof e3)return[void 0,...eW(e.unwrap())];else if(e instanceof e5)return[null,...eW(e.unwrap())];else if(e instanceof tt)return eW(e.unwrap());else if(e instanceof ts)return eW(e.unwrap());else if(e instanceof e8)return eW(e._def.innerType);else return[]};class eq extends ec{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==X.object)return G(t,{code:B.invalid_type,expected:X.object,received:t.parsedType}),ee;let r=this.discriminator,s=t.data[r],i=this.optionsMap.get(s);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(G(t,{code:B.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[r]}),ee)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,r){let s=new Map;for(let r of t){let t=eW(r.shape[e]);if(!t.length)throw Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let i of t){if(s.has(i))throw Error(`Discriminator property ${String(e)} has duplicate value ${String(i)}`);s.set(i,r)}}return new eq({typeName:o.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:s,...ed(r)})}}class eH extends ec{_parse(e){let{status:t,ctx:r}=this._processInputParams(e),i=(e,i)=>{if(es(e)||es(i))return ee;let a=function e(t,r){let i=Z(t),a=Z(r);if(t===r)return{valid:!0,data:t};if(i===X.object&&a===X.object){let i=s.objectKeys(r),a=s.objectKeys(t).filter(e=>-1!==i.indexOf(e)),n={...t,...r};for(let s of a){let i=e(t[s],r[s]);if(!i.valid)return{valid:!1};n[s]=i.data}return{valid:!0,data:n}}if(i===X.array&&a===X.array){if(t.length!==r.length)return{valid:!1};let s=[];for(let i=0;i<t.length;i++){let a=e(t[i],r[i]);if(!a.valid)return{valid:!1};s.push(a.data)}return{valid:!0,data:s}}return i===X.date&&a===X.date&&+t==+r?{valid:!0,data:t}:{valid:!1}}(e.value,i.value);return a.valid?((ei(e)||ei(i))&&t.dirty(),{status:t.value,value:a.data}):(G(r,{code:B.invalid_intersection_types}),ee)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([e,t])=>i(e,t)):i(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}}eH.create=(e,t,r)=>new eH({left:e,right:t,typeName:o.ZodIntersection,...ed(r)});class eJ extends ec{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==X.array)return G(r,{code:B.invalid_type,expected:X.array,received:r.parsedType}),ee;if(r.data.length<this._def.items.length)return G(r,{code:B.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),ee;!this._def.rest&&r.data.length>this._def.items.length&&(G(r,{code:B.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),t.dirty());let s=[...r.data].map((e,t)=>{let s=this._def.items[t]||this._def.rest;return s?s._parse(new eo(r,e,r.path,t)):null}).filter(e=>!!e);return r.common.async?Promise.all(s).then(e=>Q.mergeArray(t,e)):Q.mergeArray(t,s)}get items(){return this._def.items}rest(e){return new eJ({...this._def,rest:e})}}eJ.create=(e,t)=>{if(!Array.isArray(e))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new eJ({items:e,typeName:o.ZodTuple,rest:null,...ed(t)})};class ez extends ec{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==X.object)return G(r,{code:B.invalid_type,expected:X.object,received:r.parsedType}),ee;let s=[],i=this._def.keyType,a=this._def.valueType;for(let e in r.data)s.push({key:i._parse(new eo(r,e,r.path,e)),value:a._parse(new eo(r,r.data[e],r.path,e)),alwaysSet:e in r.data});return r.common.async?Q.mergeObjectAsync(t,s):Q.mergeObjectSync(t,s)}get element(){return this._def.valueType}static create(e,t,r){return new ez(t instanceof ec?{keyType:e,valueType:t,typeName:o.ZodRecord,...ed(r)}:{keyType:eO.create(),valueType:e,typeName:o.ZodRecord,...ed(t)})}}class eY extends ec{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==X.map)return G(r,{code:B.invalid_type,expected:X.map,received:r.parsedType}),ee;let s=this._def.keyType,i=this._def.valueType,a=[...r.data.entries()].map(([e,t],a)=>({key:s._parse(new eo(r,e,r.path,[a,"key"])),value:i._parse(new eo(r,t,r.path,[a,"value"]))}));if(r.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let r of a){let s=await r.key,i=await r.value;if("aborted"===s.status||"aborted"===i.status)return ee;("dirty"===s.status||"dirty"===i.status)&&t.dirty(),e.set(s.value,i.value)}return{status:t.value,value:e}})}{let e=new Map;for(let r of a){let s=r.key,i=r.value;if("aborted"===s.status||"aborted"===i.status)return ee;("dirty"===s.status||"dirty"===i.status)&&t.dirty(),e.set(s.value,i.value)}return{status:t.value,value:e}}}}eY.create=(e,t,r)=>new eY({valueType:t,keyType:e,typeName:o.ZodMap,...ed(r)});class eK extends ec{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.parsedType!==X.set)return G(r,{code:B.invalid_type,expected:X.set,received:r.parsedType}),ee;let s=this._def;null!==s.minSize&&r.data.size<s.minSize.value&&(G(r,{code:B.too_small,minimum:s.minSize.value,type:"set",inclusive:!0,exact:!1,message:s.minSize.message}),t.dirty()),null!==s.maxSize&&r.data.size>s.maxSize.value&&(G(r,{code:B.too_big,maximum:s.maxSize.value,type:"set",inclusive:!0,exact:!1,message:s.maxSize.message}),t.dirty());let i=this._def.valueType;function a(e){let r=new Set;for(let s of e){if("aborted"===s.status)return ee;"dirty"===s.status&&t.dirty(),r.add(s.value)}return{status:t.value,value:r}}let n=[...r.data.values()].map((e,t)=>i._parse(new eo(r,e,r.path,t)));return r.common.async?Promise.all(n).then(e=>a(e)):a(n)}min(e,t){return new eK({...this._def,minSize:{value:e,message:a.toString(t)}})}max(e,t){return new eK({...this._def,maxSize:{value:e,message:a.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}eK.create=(e,t)=>new eK({valueType:e,minSize:null,maxSize:null,typeName:o.ZodSet,...ed(t)});class eV extends ec{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==X.function)return G(t,{code:B.invalid_type,expected:X.function,received:t.parsedType}),ee;function r(e,r){return K({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,J,H].filter(e=>!!e),issueData:{code:B.invalid_arguments,argumentsError:r}})}function s(e,r){return K({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,J,H].filter(e=>!!e),issueData:{code:B.invalid_return_type,returnTypeError:r}})}let i={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof e2){let e=this;return er(async function(...t){let n=new q([]),o=await e._def.args.parseAsync(t,i).catch(e=>{throw n.addIssue(r(t,e)),n}),l=await Reflect.apply(a,this,o);return await e._def.returns._def.type.parseAsync(l,i).catch(e=>{throw n.addIssue(s(l,e)),n})})}{let e=this;return er(function(...t){let n=e._def.args.safeParse(t,i);if(!n.success)throw new q([r(t,n.error)]);let o=Reflect.apply(a,this,n.data),l=e._def.returns.safeParse(o,i);if(!l.success)throw new q([s(o,l.error)]);return l.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new eV({...this._def,args:eJ.create(e).rest(eP.create())})}returns(e){return new eV({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,r){return new eV({args:e||eJ.create([]).rest(eP.create()),returns:t||eP.create(),typeName:o.ZodFunction,...ed(r)})}}class eG extends ec{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}eG.create=(e,t)=>new eG({getter:e,typeName:o.ZodLazy,...ed(t)});class eQ extends ec{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return G(t,{received:t.data,code:B.invalid_literal,expected:this._def.value}),ee}return{status:"valid",value:e.data}}get value(){return this._def.value}}function e0(e,t){return new e1({values:e,typeName:o.ZodEnum,...ed(t)})}eQ.create=(e,t)=>new eQ({value:e,typeName:o.ZodLiteral,...ed(t)});class e1 extends ec{_parse(e){if("string"!=typeof e.data){let t=this._getOrReturnCtx(e),r=this._def.values;return G(t,{expected:s.joinValues(r),received:t.parsedType,code:B.invalid_type}),ee}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),r=this._def.values;return G(t,{received:t.data,code:B.invalid_enum_value,options:r}),ee}return er(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return e1.create(e,{...this._def,...t})}exclude(e,t=this._def){return e1.create(this.options.filter(t=>!e.includes(t)),{...this._def,...t})}}e1.create=e0;class e4 extends ec{_parse(e){let t=s.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(e);if(r.parsedType!==X.string&&r.parsedType!==X.number){let e=s.objectValues(t);return G(r,{expected:s.joinValues(e),received:r.parsedType,code:B.invalid_type}),ee}if(this._cache||(this._cache=new Set(s.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let e=s.objectValues(t);return G(r,{received:r.data,code:B.invalid_enum_value,options:e}),ee}return er(e.data)}get enum(){return this._def.values}}e4.create=(e,t)=>new e4({values:e,typeName:o.ZodNativeEnum,...ed(t)});class e2 extends ec{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==X.promise&&!1===t.common.async?(G(t,{code:B.invalid_type,expected:X.promise,received:t.parsedType}),ee):er((t.parsedType===X.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}}e2.create=(e,t)=>new e2({type:e,typeName:o.ZodPromise,...ed(t)});class e9 extends ec{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===o.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:r}=this._processInputParams(e),i=this._def.effect||null,a={addIssue:e=>{G(r,e),e.fatal?t.abort():t.dirty()},get path(){return r.path}};if(a.addIssue=a.addIssue.bind(a),"preprocess"===i.type){let e=i.transform(r.data,a);if(r.common.async)return Promise.resolve(e).then(async e=>{if("aborted"===t.value)return ee;let s=await this._def.schema._parseAsync({data:e,path:r.path,parent:r});return"aborted"===s.status?ee:"dirty"===s.status||"dirty"===t.value?et(s.value):s});{if("aborted"===t.value)return ee;let s=this._def.schema._parseSync({data:e,path:r.path,parent:r});return"aborted"===s.status?ee:"dirty"===s.status||"dirty"===t.value?et(s.value):s}}if("refinement"===i.type){let e=e=>{let t=i.refinement(e,a);if(r.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(!1!==r.common.async)return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(r=>"aborted"===r.status?ee:("dirty"===r.status&&t.dirty(),e(r.value).then(()=>({status:t.value,value:r.value}))));{let s=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===s.status?ee:("dirty"===s.status&&t.dirty(),e(s.value),{status:t.value,value:s.value})}}if("transform"===i.type){if(!1!==r.common.async)return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(e=>ea(e)?Promise.resolve(i.transform(e.value,a)).then(e=>({status:t.value,value:e})):ee);{let e=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!ea(e))return ee;let s=i.transform(e.value,a);if(s instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:t.value,value:s}}}s.assertNever(i)}}e9.create=(e,t,r)=>new e9({schema:e,typeName:o.ZodEffects,effect:t,...ed(r)}),e9.createWithPreprocess=(e,t,r)=>new e9({schema:t,effect:{type:"preprocess",transform:e},typeName:o.ZodEffects,...ed(r)});class e3 extends ec{_parse(e){return this._getType(e)===X.undefined?er(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}e3.create=(e,t)=>new e3({innerType:e,typeName:o.ZodOptional,...ed(t)});class e5 extends ec{_parse(e){return this._getType(e)===X.null?er(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}e5.create=(e,t)=>new e5({innerType:e,typeName:o.ZodNullable,...ed(t)});class e6 extends ec{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return t.parsedType===X.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}e6.create=(e,t)=>new e6({innerType:e,typeName:o.ZodDefault,defaultValue:"function"==typeof t.default?t.default:()=>t.default,...ed(t)});class e8 extends ec{_parse(e){let{ctx:t}=this._processInputParams(e),r={...t,common:{...t.common,issues:[]}},s=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return en(s)?s.then(e=>({status:"valid",value:"valid"===e.status?e.value:this._def.catchValue({get error(){return new q(r.common.issues)},input:r.data})})):{status:"valid",value:"valid"===s.status?s.value:this._def.catchValue({get error(){return new q(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}}e8.create=(e,t)=>new e8({innerType:e,typeName:o.ZodCatch,catchValue:"function"==typeof t.catch?t.catch:()=>t.catch,...ed(t)});class e7 extends ec{_parse(e){if(this._getType(e)!==X.nan){let t=this._getOrReturnCtx(e);return G(t,{code:B.invalid_type,expected:X.nan,received:t.parsedType}),ee}return{status:"valid",value:e.data}}}e7.create=e=>new e7({typeName:o.ZodNaN,...ed(e)});var te=Symbol("zod_brand");class tt extends ec{_parse(e){let{ctx:t}=this._processInputParams(e),r=t.data;return this._def.type._parse({data:r,path:t.path,parent:t})}unwrap(){return this._def.type}}class tr extends ec{_parse(e){let{status:t,ctx:r}=this._processInputParams(e);if(r.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:r.data,path:r.path,parent:r});return"aborted"===e.status?ee:"dirty"===e.status?(t.dirty(),et(e.value)):this._def.out._parseAsync({data:e.value,path:r.path,parent:r})})();{let e=this._def.in._parseSync({data:r.data,path:r.path,parent:r});return"aborted"===e.status?ee:"dirty"===e.status?(t.dirty(),{status:"dirty",value:e.value}):this._def.out._parseSync({data:e.value,path:r.path,parent:r})}}static create(e,t){return new tr({in:e,out:t,typeName:o.ZodPipeline})}}class ts extends ec{_parse(e){let t=this._def.innerType._parse(e),r=e=>(ea(e)&&(e.value=Object.freeze(e.value)),e);return en(t)?t.then(e=>r(e)):r(t)}unwrap(){return this._def.innerType}}function ti(e,t){let r="function"==typeof e?e(t):"string"==typeof e?{message:e}:e;return"string"==typeof r?{message:r}:r}function ta(e,t={},r){return e?eF.create().superRefine((s,i)=>{let a=e(s);if(a instanceof Promise)return a.then(e=>{if(!e){let e=ti(t,s),a=e.fatal??r??!0;i.addIssue({code:"custom",...e,fatal:a})}});if(!a){let e=ti(t,s),a=e.fatal??r??!0;i.addIssue({code:"custom",...e,fatal:a})}}):eF.create()}ts.create=(e,t)=>new ts({innerType:e,typeName:o.ZodReadonly,...ed(t)});var tn={object:eZ.lazycreate};!function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"}(o||(o={}));var to=(e,t={message:`Input not instance of ${e.name}`})=>ta(t=>t instanceof e,t),tl=eO.create,td=eI.create,tc=e7.create,tu=eA.create,th=eR.create,tp=eC.create,tm=eU.create,tf=eD.create,tg=ej.create,ty=eF.create,t_=eP.create,tT=eM.create,tE=e$.create,tv=eX.create,tb=eZ.create,tw=eZ.strictCreate,tN=eB.create,tS=eq.create,tk=eH.create,tL=eJ.create,tx=ez.create,tO=eY.create,tI=eK.create,tA=eV.create,tR=eG.create,tC=eQ.create,tU=e1.create,tD=e4.create,tj=e2.create,tF=e9.create,tP=e3.create,tM=e5.create,t$=e9.createWithPreprocess,tX=tr.create,tZ=()=>tl().optional(),tB=()=>td().optional(),tW=()=>th().optional(),tq={string:e=>eO.create({...e,coerce:!0}),number:e=>eI.create({...e,coerce:!0}),boolean:e=>eR.create({...e,coerce:!0}),bigint:e=>eA.create({...e,coerce:!0}),date:e=>eC.create({...e,coerce:!0})},tH=ee;class tJ{async execute(e,t){let r=this.schema.safeParse(e);if(!r.success)return{toolCallId:"",content:`Invalid parameters: ${r.error.message}`,isError:!0};try{let e=(0,c.resolve)(t.workingDirectory,r.data.file_path),s=await (0,h.readFile)(e,"utf-8");if(r.data.offset||r.data.limit){let e=s.split(`
|
|
22
22
|
`),t=(r.data.offset??1)-1,i=r.data.limit?t+r.data.limit:void 0;s=e.slice(t,i).join(`
|
|
23
23
|
`)}return{toolCallId:"",content:s}}catch(e){return{toolCallId:"",content:e instanceof Error?e.message:"Failed to read file",isError:!0}}}schemaToParams(){return{type:"object",properties:{file_path:{type:"string",description:"The absolute path to the file to read"},offset:{type:"number",description:"Line number to start reading from"},limit:{type:"number",description:"Maximum number of lines to read"}},required:["file_path"]}}constructor(){this.name="read_file",this.description="Read the contents of a file at the given path",this.schema=$.object({file_path:$.string().describe("The absolute path to the file to read"),offset:$.number().optional().describe("Line number to start reading from"),limit:$.number().optional().describe("Maximum number of lines to read")}),this.parameters=this.schemaToParams()}}class tz{async execute(e,t){let r=this.schema.safeParse(e);if(!r.success)return{toolCallId:"",content:`Invalid parameters: ${r.error.message}`,isError:!0};try{let e=(0,c.resolve)(t.workingDirectory,r.data.file_path);return await (0,h.writeFile)(e,r.data.content,"utf-8"),{toolCallId:"",content:`File written: ${e}`}}catch(e){return{toolCallId:"",content:e instanceof Error?e.message:"Failed to write file",isError:!0}}}constructor(){this.name="write_file",this.description="Write content to a file at the given path",this.schema=$.object({file_path:$.string().describe("The absolute path to the file to write"),content:$.string().describe("The content to write to the file")}),this.parameters={type:"object",properties:{file_path:{type:"string",description:"The absolute path to the file to write"},content:{type:"string",description:"The content to write to the file"}},required:["file_path","content"]}}}class tY{async execute(e,t){let r=this.schema.safeParse(e);if(!r.success)return{toolCallId:"",content:`Invalid parameters: ${r.error.message}`,isError:!0};let{file_path:s,old_string:i,new_string:a}=r.data;try{let e=(0,c.resolve)(t.workingDirectory,s),r=await (0,h.readFile)(e,"utf-8"),n=r.split(i).length-1;if(0===n)return{toolCallId:"",content:`Error: old_string not found in ${s}. Make sure the string matches exactly (including whitespace and indentation).`,isError:!0};if(n>1)return{toolCallId:"",content:`Error: old_string matches ${n} locations in ${s}. Add more surrounding context to make it unique.`,isError:!0};let o=r.replace(i,a);await (0,h.writeFile)(e,o,"utf-8");let l=i.split(`
|
|
24
24
|
`).length,d=a.split(`
|
|
@@ -91,7 +91,7 @@ Return ONLY the names of relevant skills, one per line. If none are relevant, re
|
|
|
91
91
|
`).map(e=>e.replace(/^\d+\.\s*/,"").replace(/^[\s\-•*]+/,"").trim()).filter(Boolean),a=[],o=new Map(t.map(e=>[e.name,e]));for(let e of i){let t=o.get(e);t&&!a.find(e=>e.name===t.name)&&a.push(t)}return this.semanticCache.set(s,a),a}catch{return[]}}async getSkillPrompts(e,t){let r=t&&t.length>0?new Set(t):null,s=Array.from(this.skills.values()).filter(e=>!r||r.has(e.name)),i=this.findMatchingFrom(e,s),a=e.match(/^\/([\w-]+)/);if(a){let e=s.find(e=>e.name===a[1]);e&&!i.find(t=>t.name===e.name)&&i.unshift(e)}if(0===i.length&&this.semanticMatchingEnabled&&s.length>0){let t=await this.findMatchingSemantic(e,s);t.length>0&&(i=t)}if(0===i.length)return"";let n=[];for(let e of i){let t=this.promptCache.get(e.name);void 0===t&&this.loader&&(t=(await this.loader.loadFromFile(e.filePath)).prompt,this.promptCache.set(e.name,t)),t&&n.push(`## Skill: ${e.name}
|
|
92
92
|
${t}`)}return n.join(`
|
|
93
93
|
|
|
94
|
-
`)}}var ro=["AGENTS.md","CLAUDE.md","README.md","CONTRIBUTING.md",".cursorrules",".github/copilot-instructions.md"],rl=ro.map(e=>(0,c.join)(".customer-agent",e)),rd=new Set(["AGENTS.md","CLAUDE.md"]),rc=new Set(["node_modules",".git","dist"]);class ru{async loadProjectContext(e){let t=[],r=new Set;for(let s of[...ro,...rl]){let i=(0,c.join)(e,s);if(!r.has(i))try{await (0,h.stat)(i);let e=await this.loadFile(i);t.push(e),r.add(i)}catch{}}try{let s=await (0,h.realpath)(e);for(let i of(await this.findClaudeMdFiles(e)))if(!r.has(i))try{let a=await this.loadRecursiveFile(e,s,i);t.push(a),r.add(i)}catch{}}catch{}return t}async loadFile(e){let t=await (0,h.readFile)(e,"utf-8"),r=(0,c.basename)(e),s="other";return rd.has(r)?s="claude_md":"README.md"===r||"CONTRIBUTING.md"===r?s="readme":r.endsWith(".md")?s="config":(r.endsWith(".ts")||r.endsWith(".js")||r.endsWith(".py"))&&(s="code"),{path:e,content:t,type:s}}async loadRecursiveFile(e,t,r){let s=(0,c.relative)(e,r);if(!s||(0,c.isAbsolute)(s)||".."===s||s.startsWith(`..${c.sep}`))throw Error("Recursive context candidate is outside the configured root");let i=(0,c.resolve)(t,s),a=await (0,h.open)(r,d.constants.O_RDONLY|d.constants.O_NOFOLLOW);try{let e=await a.stat();if(!e.isFile())throw Error("Recursive context candidate is not a regular file");let t=await (0,h.realpath)(r);if(t!==i)throw Error("Recursive context candidate traverses a symbolic link");let s=await (0,h.stat)(t);if(s.dev!==e.dev||s.ino!==e.ino)throw Error("Recursive context candidate changed while opening");let n=await a.readFile({encoding:"utf-8"});return{path:r,content:n,type:"claude_md"}}finally{await a.close()}}async findClaudeMdFiles(e){let t=[],r=async e=>{try{let s=await (0,h.readdir)(e,{withFileTypes:!0});for(let i of(s.sort((e,t)=>e.name.localeCompare(t.name)),s)){if(rc.has(i.name))continue;let s=(0,c.join)(e,i.name);i.isDirectory()?await r(s):i.isFile()&&rd.has(i.name)&&t.push(s)}}catch{}};return await r(e),t.sort((e,t)=>e.localeCompare(t))}}var rh=`You are an expert AI assistant with access to tools. You operate in a ReAct loop: reason → act (tool calls) → observe results → reason again.
|
|
94
|
+
`)}}var ro=["AGENTS.md","CLAUDE.md","README.md","CONTRIBUTING.md",".cursorrules",".github/copilot-instructions.md"],rl=ro.map(e=>(0,c.join)(".customer-agent",e)),rd=new Set(["AGENTS.md","CLAUDE.md"]),rc=new Set(["node_modules",".git","dist","build","out","coverage",".cache",".next",".next-dev",".output",".turbo"]);class ru{constructor(e=(0,p.homedir)()){this.homeDirectory=e}async loadProjectContext(e){let t=[],r=new Set;for(let s of[...ro,...rl]){let i=(0,c.join)(e,s);if(!r.has(i))try{await (0,h.stat)(i);let e=await this.loadFile(i);t.push(e),r.add(i)}catch{}}try{let s=await (0,h.realpath)(e);for(let i of(await this.findClaudeMdFiles(e)))if(!r.has(i))try{let a=await this.loadRecursiveFile(e,s,i);t.push(a),r.add(i)}catch{}}catch{}return t}async loadFile(e){let t=await (0,h.readFile)(e,"utf-8"),r=(0,c.basename)(e),s="other";return rd.has(r)?s="claude_md":"README.md"===r||"CONTRIBUTING.md"===r?s="readme":r.endsWith(".md")?s="config":(r.endsWith(".ts")||r.endsWith(".js")||r.endsWith(".py"))&&(s="code"),{path:e,content:t,type:s}}async loadRecursiveFile(e,t,r){let s=(0,c.relative)(e,r);if(!s||(0,c.isAbsolute)(s)||".."===s||s.startsWith(`..${c.sep}`))throw Error("Recursive context candidate is outside the configured root");let i=(0,c.resolve)(t,s),a=await (0,h.open)(r,d.constants.O_RDONLY|d.constants.O_NOFOLLOW);try{let e=await a.stat();if(!e.isFile())throw Error("Recursive context candidate is not a regular file");let t=await (0,h.realpath)(r);if(t!==i)throw Error("Recursive context candidate traverses a symbolic link");let s=await (0,h.stat)(t);if(s.dev!==e.dev||s.ino!==e.ino)throw Error("Recursive context candidate changed while opening");let n=await a.readFile({encoding:"utf-8"});return{path:r,content:n,type:"claude_md"}}finally{await a.close()}}async findClaudeMdFiles(e){let t=[];try{let[r,s]=await Promise.all([(0,h.realpath)(e),(0,h.realpath)(this.homeDirectory)]);if(r===s)return t}catch{}let r=async e=>{try{let s=await (0,h.readdir)(e,{withFileTypes:!0});for(let i of(s.sort((e,t)=>e.name.localeCompare(t.name)),s)){if(rc.has(i.name)||".claude"===(0,c.basename)(e)&&"worktrees"===i.name)continue;let s=(0,c.join)(e,i.name);i.isDirectory()?await r(s):i.isFile()&&rd.has(i.name)&&t.push(s)}}catch{}};return await r(e),t.sort((e,t)=>e.localeCompare(t))}}var rh=`You are an expert AI assistant with access to tools. You operate in a ReAct loop: reason → act (tool calls) → observe results → reason again.
|
|
95
95
|
|
|
96
96
|
## Core Principles
|
|
97
97
|
|
|
@@ -178,7 +178,7 @@ ${e.entry.content}`;if(a+t.length>n)break;i.push(t),a+=t.length}return i.join(`
|
|
|
178
178
|
`)})}sendRequestSSE(e,t){return new Promise((r,s)=>{if(!this.ssePostUrl){s(Error("SSE post URL not established"));return}let i=++this.requestId,a=JSON.stringify({jsonrpc:"2.0",id:i,method:e,params:t}),n=new URL(this.ssePostUrl),o="https:"===n.protocol?y:g;this.pendingRequests.set(i,e=>{e.error?s(Error(e.error.message)):r(e.result)});let l=setTimeout(()=>{this.pendingRequests.delete(i),s(Error(`MCP SSE request ${e} timed out`))},3e4),d=this.pendingRequests.get(i);this.pendingRequests.set(i,e=>{clearTimeout(l),d(e)});let c=o.request(n,{method:"POST",headers:{"Content-Type":"application/json","Content-Length":Buffer.byteLength(a),...this.config?.env??{}}},e=>{let t="";e.on("data",e=>{t+=e}),e.on("end",()=>{if(e.statusCode&&e.statusCode>=200&&e.statusCode<300&&t.trim())try{let e=JSON.parse(t),r=this.pendingRequests.get(e.id);r&&(r(e),this.pendingRequests.delete(e.id))}catch{}})});c.on("error",e=>{this.pendingRequests.delete(i),clearTimeout(l),s(e)}),c.write(a),c.end()})}async connectStreamableHttp(e){if(!(e.url??e.sseUrl))throw Error("url is required for streamableHttp transport");for(let e of["2025-03-26","2024-11-05"])try{await this.sendRequestHttp("initialize",{protocolVersion:e,capabilities:{tools:{},resources:{}},clientInfo:{name:"customer-agent",version:"0.1.0"}});break}catch(r){let t=r instanceof Error?r.message:String(r);if(/HTTP (4\d\d)/.test(t)&&!/401|403/.test(t)){console.warn(`[MCP ${this.serverId}] initialize skipped (${t})`);break}if("2024-11-05"===e)throw r}this._connected=!0}sendRequestHttp(e,t){return new Promise((r,s)=>{let i=this.config?.url??this.config?.sseUrl;if(!i){s(Error("URL not set"));return}let a=++this.requestId,n=JSON.stringify({jsonrpc:"2.0",id:a,method:e,params:t}),o=new URL(i),l="https:"===o.protocol?y:g,d={...this.config?.headers??{},...this.config?.env??{}},c=setTimeout(()=>s(Error(`MCP HTTP request ${e} timed out`)),3e4),u=l.request(o,{method:"POST",headers:{"Content-Type":"application/json","Content-Length":Buffer.byteLength(n),Accept:"application/json, text/event-stream",...this.mcpSessionId?{"Mcp-Session-Id":this.mcpSessionId}:{},...d}},e=>{let t=e.headers["mcp-session-id"];if(t&&(this.mcpSessionId=t),401===e.statusCode){clearTimeout(c),e.destroy(),s(Error(`HTTP 401: 需要认证(Unauthorized)`));return}if(403===e.statusCode){clearTimeout(c),e.destroy(),s(Error(`HTTP 403: 访问被拒绝(Forbidden)`));return}if(e.statusCode&&e.statusCode>=400){let t="";e.on("data",e=>{t+=e}),e.on("end",()=>{clearTimeout(c);let r=t.slice(0,200).replace(/\s+/g," ");s(Error(`HTTP ${e.statusCode}: ${r||"服务器返回错误"}`))});return}if((e.headers["content-type"]??"").includes("text/event-stream")){let t="",i="";e.on("data",n=>{let o=(t+=n.toString()).split(`
|
|
179
179
|
`);for(let n of(t=o.pop(),o))if(n.startsWith("event:"))n.slice(6).trim();else if(n.startsWith("data:"))i=n.slice(5).trim();else if(""===n&&i){try{let t=JSON.parse(i);t.id===a&&(clearTimeout(c),e.destroy(),t.error?s(Error(t.error.message)):r(t.result))}catch{}i=""}}),e.on("end",()=>{clearTimeout(c),s(Error("SSE stream ended without response"))}),e.on("error",e=>{clearTimeout(c),s(e)})}else{let t="";e.on("data",e=>{t+=e}),e.on("end",()=>{clearTimeout(c);try{let e=JSON.parse(t);e.error?s(Error(e.error.message)):r(e.result)}catch{s(Error(`Invalid JSON response: ${t.slice(0,100)}`))}}),e.on("error",e=>{clearTimeout(c),s(e)})}});u.on("error",e=>{clearTimeout(c),s(e)}),u.write(n),u.end()})}connectSSE(e){return new Promise((t,r)=>{let s=e.url??e.sseUrl;if(!s){r(Error("SSE URL is required for remote MCP servers"));return}let i=new URL(s),a=("https:"===i.protocol?y:g).get(s,{headers:{Accept:"text/event-stream","Cache-Control":"no-cache",...e.env??{}}},e=>{if(401===e.statusCode){e.destroy(),r(Error(`HTTP 401: 需要认证(Unauthorized)`));return}if(403===e.statusCode){e.destroy(),r(Error(`HTTP 403: 访问被拒绝(Forbidden)`));return}if(e.statusCode&&e.statusCode>=400){e.destroy(),r(Error(`HTTP ${e.statusCode}: 服务器返回错误`));return}this.sseRes=e;let s="",a="",n="",o=!1;e.on("data",e=>{let l=(s+=e.toString()).split(`
|
|
180
180
|
`);for(let e of(s=l.pop(),l))if(e.startsWith("event:"))a=e.slice(6).trim();else if(e.startsWith("data:"))n=e.slice(5).trim();else if(""===e&&(a||n)){if("endpoint"===a){try{this.ssePostUrl=new URL(n,`${i.protocol}//${i.host}`).toString()}catch{this.ssePostUrl=n}o||(o=!0,this.sendRequestSSE("initialize",{protocolVersion:"2024-11-05",capabilities:{tools:{},resources:{}},clientInfo:{name:"customer-agent",version:"0.1.0"}}).then(()=>{this._connected=!0,t()}).catch(r))}else if("message"===a||""===a)try{let e=JSON.parse(n),t=this.pendingRequests.get(e.id);t&&(t(e),this.pendingRequests.delete(e.id))}catch{}a="",n=""}}),e.on("error",e=>{this._connected=!1,r(e)}),e.on("end",()=>{this._connected=!1})});a.on("error",r),a.setTimeout(15e3,()=>{a.destroy(),r(Error("SSE connection timed out"))})})}}class rb{constructor(e){this.clients=new Map,this.toolRegistry=e}async connectServer(e){let t=new rv(e.id);return await t.connect(e),this.clients.set(e.id,t),this.toolRegistry&&await this.registerMCPTools(t),t}async disconnectServer(e){let t=this.clients.get(e);if(t){if(this.toolRegistry)for(let r of(await t.listTools().catch(()=>[])))this.toolRegistry.unregister(`mcp_${e}_${r.name}`);t.disconnect(),this.clients.delete(e)}}getClient(e){return this.clients.get(e)}listServers(){return Array.from(this.clients.values()).map(e=>({id:e.serverId,name:e.serverId,command:"",args:[],transport:"stdio"}))}async discoverAllTools(){let e=new Map;for(let[t,r]of this.clients)try{let s=await r.listTools();e.set(t,s)}catch{e.set(t,[])}return e}async registerMCPTools(e){for(let t of(await e.listTools())){let r={name:`mcp_${e.serverId}_${t.name}`,description:`[MCP:${e.serverId}] ${t.description}`,parameters:t.parameters,schema:$.object({}).passthrough(),execute:async r=>{let s=await e.callTool(t.name,r);return{toolCallId:"",content:"string"==typeof s?s:s.content?.map(e=>e.text??"").join(`
|
|
181
|
-
`)??JSON.stringify(s)}}};this.toolRegistry?.register(r)}}}class rw{constructor(e,t,r){this.plugins=new Map,this.toolRegistry=e,this.skillRegistry=t,this.workingDirectory=r}async loadPlugin(e){let t=await this.loadFromDirectory(e);return this.plugins.set(t.manifest.name,t),t}async unloadPlugin(e){this.plugins.get(e)&&(await this.deactivatePlugin(e),this.plugins.delete(e))}async activatePlugin(e,t){let r=this.plugins.get(e);if(!r)throw Error(`Plugin not found: ${e}`);let s=t??{registerTool:e=>this.toolRegistry?.register(e),registerSkill:e=>this.skillRegistry?.register(e),getWorkingDirectory:()=>this.workingDirectory??process.cwd(),log:(t,r="info")=>{console[r](`[Plugin:${e}] ${t}`)}};await r.activate(s)}async deactivatePlugin(e){let t=this.plugins.get(e);t&&await t.deactivate()}getPlugin(e){return this.plugins.get(e)}listPlugins(){return Array.from(this.plugins.values())}async loadFromDirectory(e){let t=(0,c.join)(e,"manifest.json"),r=JSON.parse(await (0,h.readFile)(t,"utf-8"));return this.create(r)}create(e){let t=this;return{manifest:e,loaded:!1,async load(){let t=await r(8794)(e.main);t.default&&"object"==typeof t.default&&Object.assign(this,t.default),this.loaded=!0},async activate(e){"function"==typeof this.activate&&await this.activate(e)},async deactivate(){"function"==typeof this.deactivate&&await this.deactivate(),t.plugins.delete(e.name)}}}async scanDirectory(e){let t=[];try{for(let r of(await (0,h.readdir)(e,{withFileTypes:!0}))){if(!r.isDirectory())continue;let s=(0,c.join)(e,r.name,"manifest.json");try{await (0,h.stat)(s),t.push((0,c.join)(e,r.name))}catch{}}}catch{}return t}}function rN(){return new Date().toISOString()}function
|
|
181
|
+
`)??JSON.stringify(s)}}};this.toolRegistry?.register(r)}}}class rw{constructor(e,t,r){this.plugins=new Map,this.toolRegistry=e,this.skillRegistry=t,this.workingDirectory=r}async loadPlugin(e){let t=await this.loadFromDirectory(e);return this.plugins.set(t.manifest.name,t),t}async unloadPlugin(e){this.plugins.get(e)&&(await this.deactivatePlugin(e),this.plugins.delete(e))}async activatePlugin(e,t){let r=this.plugins.get(e);if(!r)throw Error(`Plugin not found: ${e}`);let s=t??{registerTool:e=>this.toolRegistry?.register(e),registerSkill:e=>this.skillRegistry?.register(e),getWorkingDirectory:()=>this.workingDirectory??process.cwd(),log:(t,r="info")=>{console[r](`[Plugin:${e}] ${t}`)}};await r.activate(s)}async deactivatePlugin(e){let t=this.plugins.get(e);t&&await t.deactivate()}getPlugin(e){return this.plugins.get(e)}listPlugins(){return Array.from(this.plugins.values())}async loadFromDirectory(e){let t=(0,c.join)(e,"manifest.json"),r=JSON.parse(await (0,h.readFile)(t,"utf-8"));return this.create(r)}create(e){let t=this;return{manifest:e,loaded:!1,async load(){let t=await r(8794)(e.main);t.default&&"object"==typeof t.default&&Object.assign(this,t.default),this.loaded=!0},async activate(e){"function"==typeof this.activate&&await this.activate(e)},async deactivate(){"function"==typeof this.deactivate&&await this.deactivate(),t.plugins.delete(e.name)}}}async scanDirectory(e){let t=[];try{for(let r of(await (0,h.readdir)(e,{withFileTypes:!0}))){if(!r.isDirectory())continue;let s=(0,c.join)(e,r.name,"manifest.json");try{await (0,h.stat)(s),t.push((0,c.join)(e,r.name))}catch{}}}catch{}return t}}function rN(){return new Date().toISOString()}function rS(e){return JSON.stringify(e??{})}function rk(e){let t=JSON.parse(e||"{}");return t&&"object"==typeof t&&!Array.isArray(t)?t:{}}class rL{constructor(e){this.db=e}upsertTools(e,t){let r=rN(),s=this.db.prepare(`
|
|
182
182
|
INSERT INTO remote_tools (id, project_id, scheme, purpose, url, method, headers, input_schema, output_schema, examples, auth, enabled, created, updated)
|
|
183
183
|
VALUES (@id, @projectId, @scheme, @purpose, @url, @method, @headers, @inputSchema, @outputSchema, @examples, @auth, 1, @created, @updated)
|
|
184
184
|
ON CONFLICT(project_id, scheme) DO UPDATE SET
|
|
@@ -192,7 +192,7 @@ ${e.entry.content}`;if(a+t.length>n)break;i.push(t),a+=t.length}return i.join(`
|
|
|
192
192
|
auth = excluded.auth,
|
|
193
193
|
enabled = 1,
|
|
194
194
|
updated = excluded.updated
|
|
195
|
-
`);return this.db.transaction(()=>{for(let a of t){var i;s.run({id:crypto.randomUUID(),projectId:e,scheme:a.scheme,purpose:a.purpose,url:a.url,method:a.method??"POST",headers:JSON.stringify(a.headers??{}),inputSchema:
|
|
195
|
+
`);return this.db.transaction(()=>{for(let a of t){var i;s.run({id:crypto.randomUUID(),projectId:e,scheme:a.scheme,purpose:a.purpose,url:a.url,method:a.method??"POST",headers:JSON.stringify(a.headers??{}),inputSchema:rS(a.inputSchema),outputSchema:rS(a.outputSchema),examples:JSON.stringify(Array.isArray(i=a.examples)?i:[]),auth:rS(a.auth),created:r,updated:r})}})(),t.map(t=>this.getTool(e,t.scheme)).filter(Boolean)}listEnabledTools(e){return this.db.prepare("SELECT * FROM remote_tools WHERE project_id = ? AND enabled = 1 ORDER BY scheme").all(e).map(e=>this.mapTool(e))}getTool(e,t){let r=this.db.prepare("SELECT * FROM remote_tools WHERE project_id = ? AND scheme = ? AND enabled = 1").get(e,t);return r?this.mapTool(r):null}createJob(e,t,r){if(!this.getTool(e,t))throw Error(`Remote tool ${e}/${t} is not registered or disabled`);let s=rN(),i=crypto.randomUUID();return this.db.prepare("INSERT INTO remote_tool_jobs (id, project_id, scheme, request_payload, status, created, updated) VALUES (?, ?, ?, ?, 'queued', ?, ?)").run(i,e,t,JSON.stringify(r),s,s),this.getJob(i)}markJobRunning(e){this.updateStatus(e,"running",null,null)}markJobSucceeded(e,t){this.updateStatus(e,"succeeded",JSON.stringify(t),null)}markJobFailed(e,t){this.updateStatus(e,"failed",null,t)}getJob(e){let t=this.db.prepare("SELECT * FROM remote_tool_jobs WHERE id = ?").get(e);return t?this.mapJob(t):null}updateStatus(e,t,r,s){this.db.prepare("UPDATE remote_tool_jobs SET status = ?, response_payload = ?, error = ?, updated = ? WHERE id = ?").run(t,r,s,rN(),e)}mapTool(e){return{id:e.id,projectId:e.project_id,scheme:e.scheme,purpose:e.purpose,url:e.url,method:e.method,headers:rk(e.headers),inputSchema:rk(e.input_schema),outputSchema:rk(e.output_schema),examples:function(e){let t=JSON.parse(e||"[]");return Array.isArray(t)?t:[]}(e.examples),auth:rk(e.auth),enabled:1===e.enabled,createdAt:e.created,updatedAt:e.updated}}mapJob(e){return{id:e.id,projectId:e.project_id,scheme:e.scheme,requestPayload:rk(e.request_payload),status:e.status,responsePayload:e.response_payload?rk(e.response_payload):null,error:e.error,createdAt:e.created,updatedAt:e.updated}}}class rx{constructor(e){let t=(0,c.join)(e,".agent-data");try{(0,d.mkdirSync)(t,{recursive:!0})}catch{}let r=(0,c.join)(t,"agent.db"),s=function(){let e=process.versions.electron?`electron-${process.versions.electron}`:`node-${process.versions.modules}`;try{let t="darwin"===process.platform?(0,c.join)((0,p.homedir)(),"Library","Caches","team-agent","native"):(0,c.join)((0,p.homedir)(),".cache","team-agent","native");for(let r of(0,d.readdirSync)((0,c.join)(t,e))){if(!r.startsWith("better-sqlite3-"))continue;let s=(0,c.join)(t,e,r,"better_sqlite3.node");if((0,d.existsSync)(s))return s}}catch{}}();this.db=new _(r,s?{nativeBinding:s}:void 0),this.db.pragma("journal_mode = WAL"),this.db.pragma("foreign_keys = ON"),this.migrate()}migrate(){this.db.exec(`
|
|
196
196
|
CREATE TABLE IF NOT EXISTS settings (
|
|
197
197
|
key TEXT PRIMARY KEY,
|
|
198
198
|
value TEXT NOT NULL
|
|
@@ -369,6 +369,12 @@ ${e.entry.content}`;if(a+t.length>n)break;i.push(t),a+=t.length}return i.join(`
|
|
|
369
369
|
revoked_at TEXT
|
|
370
370
|
);
|
|
371
371
|
|
|
372
|
+
CREATE TABLE IF NOT EXISTS anonymous_ws_nonces (
|
|
373
|
+
nonce_hash BLOB PRIMARY KEY,
|
|
374
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
375
|
+
expires_at INTEGER NOT NULL
|
|
376
|
+
);
|
|
377
|
+
|
|
372
378
|
CREATE TABLE IF NOT EXISTS login_attempts (
|
|
373
379
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
374
380
|
username_normalized TEXT NOT NULL,
|
|
@@ -431,6 +437,7 @@ ${e.entry.content}`;if(a+t.length>n)break;i.push(t),a+=t.length}return i.join(`
|
|
|
431
437
|
CREATE INDEX IF NOT EXISTS idx_remote_tools_project ON remote_tools(project_id);
|
|
432
438
|
CREATE INDEX IF NOT EXISTS idx_remote_jobs_project ON remote_tool_jobs(project_id);
|
|
433
439
|
CREATE INDEX IF NOT EXISTS idx_auth_sessions_user ON auth_sessions(user_id);
|
|
440
|
+
CREATE INDEX IF NOT EXISTS idx_anonymous_ws_nonces_expiry ON anonymous_ws_nonces(expires_at);
|
|
434
441
|
CREATE INDEX IF NOT EXISTS idx_login_attempts_lookup
|
|
435
442
|
ON login_attempts(username_normalized, ip, attempted_at);
|
|
436
443
|
CREATE INDEX IF NOT EXISTS idx_terminal_tabs_user_order ON terminal_tabs(user_id, sort_order);
|
|
@@ -486,4 +493,13 @@ ${e.entry.content}`;if(a+t.length>n)break;i.push(t),a+=t.length}return i.join(`
|
|
|
486
493
|
FROM mcp_servers;
|
|
487
494
|
DROP TABLE mcp_servers;
|
|
488
495
|
ALTER TABLE mcp_servers_v2 RENAME TO mcp_servers;
|
|
489
|
-
`),this.db.pragma("foreign_keys = ON")})()}migrateMCPServerHeaders(){this.db.prepare("PRAGMA table_info(mcp_servers)").all().find(e=>"headers"===e.name)||this.db.exec("ALTER TABLE mcp_servers ADD COLUMN headers TEXT NOT NULL DEFAULT '{}'")}migrateSessionsParentId(){this.db.prepare("PRAGMA table_info(sessions)").all().find(e=>"parent_id"===e.name)||(this.db.exec("ALTER TABLE sessions ADD COLUMN parent_id TEXT REFERENCES sessions(id) ON DELETE CASCADE"),this.db.exec("CREATE INDEX IF NOT EXISTS idx_sessions_parent ON sessions(parent_id)"))}close(){this.db.close()}}var rO=new Map;function rI(e){let t=rO.get(e);return t||(t=new rx(e),rO.set(e,t)),t}class rA{constructor(e){this.baseDir=e,rI(e)}async create(e){let t=rI(this.baseDir),r=this.resolveProjectId(e.projectId),s=this.resolveParentId(e.parentSessionId);return t.db.prepare("INSERT INTO sessions (id, project_id, parent_id, title, status, created, updated, metadata) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run(e.id,r,s,e.title,e.status,e.created,e.updated,JSON.stringify(e.metadata)),e}resolveProjectId(e){return e?rI(this.baseDir).db.prepare("SELECT 1 FROM projects WHERE id = ?").get(e)?e:(console.warn(`[SQLiteSessionStore] project_id "${e}" not found — storing session without project (FK-safe).`),null):null}resolveParentId(e){return e?rI(this.baseDir).db.prepare("SELECT 1 FROM sessions WHERE id = ?").get(e)?e:(console.warn(`[SQLiteSessionStore] parent_id "${e}" not found — storing session as root (FK-safe).`),null):null}async get(e){let t=rI(this.baseDir).db.prepare("SELECT * FROM sessions WHERE id = ?").get(e);return t?this.rowToSession(t):null}async update(e,t){let r=rI(this.baseDir),s=await this.get(e);if(!s)throw Error(`Session not found: ${e}`);let i={...s,...t,updated:new Date().toISOString()};return r.db.prepare("UPDATE sessions SET project_id=?, title=?, status=?, updated=?, metadata=? WHERE id=?").run(this.resolveProjectId(i.projectId),i.title,i.status,i.updated,JSON.stringify(i.metadata),e),i}async delete(e){let t=rI(this.baseDir);t.db.prepare("DELETE FROM messages WHERE session_id = ?").run(e),t.db.prepare("DELETE FROM events WHERE session_id = ?").run(e),t.db.prepare("DELETE FROM sessions WHERE id = ?").run(e)}async list(e){let t=rI(this.baseDir);return(e?t.db.prepare("SELECT * FROM sessions WHERE project_id = ? ORDER BY updated DESC").all(e):t.db.prepare("SELECT * FROM sessions ORDER BY updated DESC").all()).map(e=>this.rowToSession(e))}async listChildren(e){return rI(this.baseDir).db.prepare("SELECT * FROM sessions WHERE parent_id = ? ORDER BY updated DESC").all(e).map(e=>this.rowToSession(e))}async addMessage(e,t){rI(this.baseDir).db.prepare("INSERT INTO messages (session_id, role, content, tool_calls, tool_call_id, name, timestamp) VALUES (?,?,?,?,?,?,?)").run(e,t.role,t.content??"",JSON.stringify(t.toolCalls??[]),t.toolCallId??null,t.name??null,Date.now())}async addEvent(e,t){rI(this.baseDir).db.prepare("INSERT INTO events (session_id, type, data, timestamp) VALUES (?,?,?,?)").run(e,t.type,JSON.stringify(t),Date.now())}async replaceMessages(e,t){let r=rI(this.baseDir),s=r.db.prepare("INSERT INTO messages (session_id, role, content, tool_calls, tool_call_id, name, timestamp) VALUES (?,?,?,?,?,?,?)");r.db.transaction(()=>{r.db.prepare("DELETE FROM messages WHERE session_id = ?").run(e);for(let r=0;r<t.length;r++){let i=t[r];s.run(e,i.role,i.content??"",JSON.stringify(i.toolCalls??[]),i.toolCallId??null,i.name??null,Date.now()+r)}})()}rowToSession(e){let t=rI(this.baseDir),r=t.db.prepare("SELECT * FROM messages WHERE session_id = ? ORDER BY id ASC").all(e.id),s=t.db.prepare("SELECT * FROM events WHERE session_id = ? ORDER BY id ASC").all(e.id);return{id:e.id,projectId:e.project_id??"",parentSessionId:e.parent_id??void 0,title:e.title,status:e.status,messages:r.map(e=>({role:e.role,content:e.content,toolCalls:JSON.parse(e.tool_calls),toolCallId:e.tool_call_id,name:e.name})),events:s.map(e=>JSON.parse(e.data)),created:e.created,updated:e.updated,metadata:JSON.parse(e.metadata)}}}class rC{constructor(e){this.baseDir=e,rI(e)}async get(e){let t=rI(this.baseDir).db.prepare("SELECT * FROM projects WHERE id = ?").get(e);return t?this.rowToProject(t):null}async create(e){return rI(this.baseDir).db.prepare("INSERT INTO projects (id, name, description, created, updated) VALUES (?, ?, ?, ?, ?)").run(e.id,e.name,e.description,e.created,e.updated),e}async update(e,t){let r=rI(this.baseDir),s=await this.get(e);if(!s)throw Error(`Project not found: ${e}`);let i={...s,...t,updated:new Date().toISOString()};return r.db.prepare("UPDATE projects SET name=?, description=?, updated=? WHERE id=?").run(i.name,i.description,i.updated,e),i}async delete(e){let t=rI(this.baseDir);t.db.prepare("UPDATE sessions SET project_id = NULL WHERE project_id = ?").run(e),t.db.prepare("DELETE FROM projects WHERE id = ?").run(e)}async list(){return rI(this.baseDir).db.prepare("SELECT * FROM projects ORDER BY updated DESC").all().map(e=>this.rowToProject(e))}rowToProject(e){return{id:e.id,name:e.name,description:e.description,created:e.created,updated:e.updated}}}class rR{constructor(e){this.db=rI(e).db}countUsers(){return this.db.prepare("SELECT COUNT(*) AS count FROM users").get().count}createFirstUser(e){return this.db.transaction(()=>{if(0!==this.countUsers())throw Error("setup already completed");return this.db.prepare("INSERT INTO users (id, username_normalized, username_display, password_hash, password_salt, password_version, created_at, password_changed_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run(e.id,e.usernameNormalized,e.usernameDisplay,e.passwordHash,e.passwordSalt,e.passwordVersion,e.createdAt,e.passwordChangedAt),e})()}findUserById(e){let t=this.db.prepare("SELECT * FROM users WHERE id = ?").get(e);return t?this.rowToUser(t):null}findUserByNormalizedUsername(e){let t=this.db.prepare("SELECT * FROM users WHERE username_normalized = ?").get(e);return t?this.rowToUser(t):null}createSession(e){return this.db.prepare("INSERT INTO auth_sessions (id, user_id, token_hash, csrf_hash, ws_nonce_hash, ws_nonce_expires_at, device_id, device_name, user_agent, created_at, last_seen_at, expires_at, revoked_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)").run(e.id,e.userId,e.tokenHash,e.csrfHash,e.wsNonceHash,e.wsNonceExpiresAt,e.deviceId,e.deviceName,e.userAgent,e.createdAt,e.lastSeenAt,e.expiresAt,e.revokedAt),e}findSessionByTokenHash(e,t){let r=this.db.prepare("SELECT * FROM auth_sessions WHERE token_hash = ? AND revoked_at IS NULL AND expires_at > ?").get(e,t);return r?this.rowToSession(r):null}rotateCsrf(e,t,r,s){this.db.prepare("UPDATE auth_sessions SET csrf_hash = ?, last_seen_at = ?, expires_at = ? WHERE id = ? AND revoked_at IS NULL").run(t,r,s,e)}issueWsNonce(e,t,r){this.db.prepare("UPDATE auth_sessions SET ws_nonce_hash = ?, ws_nonce_expires_at = ? WHERE id = ? AND revoked_at IS NULL").run(t,r,e)}consumeWsNonce(e,t,r){return this.db.transaction(()=>!!this.db.prepare("SELECT id FROM auth_sessions WHERE id = ? AND ws_nonce_hash = ? AND ws_nonce_expires_at > ? AND revoked_at IS NULL").get(e,t,r)&&1===this.db.prepare("UPDATE auth_sessions SET ws_nonce_hash = NULL, ws_nonce_expires_at = NULL WHERE id = ? AND ws_nonce_hash = ?").run(e,t).changes)()}revokeSession(e,t){this.db.prepare("UPDATE auth_sessions SET revoked_at = ? WHERE id = ?").run(t,e)}revokeUserSessions(e,t,r){return(t?this.db.prepare("UPDATE auth_sessions SET revoked_at = ? WHERE user_id = ? AND id <> ? AND revoked_at IS NULL").run(r,e,t):this.db.prepare("UPDATE auth_sessions SET revoked_at = ? WHERE user_id = ? AND revoked_at IS NULL").run(r,e)).changes}recordLoginFailure(e,t,r){this.db.prepare("INSERT INTO login_attempts (username_normalized, ip, attempted_at) VALUES (?, ?, ?)").run(e,t,r)}countRecentLoginFailures(e,t,r){return this.db.prepare("SELECT COUNT(*) AS count FROM login_attempts WHERE username_normalized = ? AND ip = ? AND attempted_at >= ?").get(e,t,r).count}clearLoginFailures(e,t){this.db.prepare("DELETE FROM login_attempts WHERE username_normalized = ? AND ip = ?").run(e,t)}rowToUser(e){return{id:e.id,usernameNormalized:e.username_normalized,usernameDisplay:e.username_display,passwordHash:e.password_hash,passwordSalt:e.password_salt,passwordVersion:e.password_version,createdAt:e.created_at,passwordChangedAt:e.password_changed_at}}rowToSession(e){return{id:e.id,userId:e.user_id,tokenHash:e.token_hash,csrfHash:e.csrf_hash,wsNonceHash:e.ws_nonce_hash,wsNonceExpiresAt:e.ws_nonce_expires_at,deviceId:e.device_id,deviceName:e.device_name??"",userAgent:e.user_agent??"",createdAt:e.created_at,lastSeenAt:e.last_seen_at,expiresAt:e.expires_at,revokedAt:e.revoked_at}}}class rU{constructor(e){this.db=rI(e).db}markStaleTerminalsExited(e){return this.db.prepare("UPDATE terminal_tabs SET status='exited', exited_at=? WHERE status IN ('active','detached')").run(e).changes}listTabs(e){return this.db.prepare("SELECT * FROM terminal_tabs WHERE user_id=? AND status<>'closed' ORDER BY sort_order, created_at").all(e).map(rj)}createTab(e){this.db.prepare("INSERT INTO terminal_tabs (id,user_id,title,shell,start_cwd,current_cwd,status,sort_order,created_at,last_active_at,exited_at,closed_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)").run(e.id,e.userId,e.title,e.shell,e.startCwd,e.currentCwd,e.status,e.sortOrder,e.createdAt,e.lastActiveAt,e.exitedAt,e.closedAt)}updateTab(e,t,r){let s={title:"title",currentCwd:"current_cwd",status:"status",sortOrder:"sort_order",lastActiveAt:"last_active_at",exitedAt:"exited_at",closedAt:"closed_at"},i=Object.entries(r).filter(([e])=>s[e]);return!!i.length&&1===this.db.prepare(`UPDATE terminal_tabs SET ${i.map(([e])=>`${s[e]}=?`).join(",")} WHERE id=? AND user_id=?`).run(...i.map(([,e])=>e),e,t).changes}getPreferences(e){let t=this.db.prepare("SELECT * FROM user_preferences WHERE user_id=?").get(e);return t?rF(t):null}savePreferences(e,t){if(null===t)try{return this.db.prepare("INSERT INTO user_preferences (user_id,revision,theme,terminal_font_size,file_button_position_json,keybar_position_json,keybar_hidden,key_order_json,updated_at) VALUES (?,?,?,?,?,?,?,?,?)").run(e.userId,e.revision,e.theme,e.terminalFontSize,JSON.stringify(e.fileButtonPosition),JSON.stringify(e.keybarPosition),e.keybarHidden?1:0,JSON.stringify(e.keyOrder),e.updatedAt),!0}catch{return!1}return 1===this.db.prepare("UPDATE user_preferences SET revision=?,theme=?,terminal_font_size=?,file_button_position_json=?,keybar_position_json=?,keybar_hidden=?,key_order_json=?,updated_at=? WHERE user_id=? AND revision=?").run(e.revision,e.theme,e.terminalFontSize,JSON.stringify(e.fileButtonPosition),JSON.stringify(e.keybarPosition),e.keybarHidden?1:0,JSON.stringify(e.keyOrder),e.updatedAt,e.userId,t).changes}getDeviceState(e,t){let r=this.db.prepare("SELECT * FROM device_states WHERE user_id=? AND device_id=?").get(e,t);return r?rP(r):null}saveDeviceState(e){this.db.prepare("INSERT INTO device_states (user_id,device_id,active_terminal_id,drawer_open,drawer_tab,file_tree_root,file_tree_follow_mode,expanded_paths_json,selected_file,terminal_scroll_json,updated_at) VALUES (?,?,?,?,?,?,?,?,?,?,?) ON CONFLICT(user_id,device_id) DO UPDATE SET active_terminal_id=excluded.active_terminal_id,drawer_open=excluded.drawer_open,drawer_tab=excluded.drawer_tab,file_tree_root=excluded.file_tree_root,file_tree_follow_mode=excluded.file_tree_follow_mode,expanded_paths_json=excluded.expanded_paths_json,selected_file=excluded.selected_file,terminal_scroll_json=excluded.terminal_scroll_json,updated_at=excluded.updated_at").run(e.userId,e.deviceId,e.activeTerminalId,e.drawerOpen?1:0,e.drawerTab,e.fileTreeRoot,e.fileTreeFollowMode?1:0,JSON.stringify(e.expandedPaths),e.selectedFile,JSON.stringify(e.terminalScroll),e.updatedAt)}addHistory(e,t,r,s,i){let a=r.toLowerCase();this.db.prepare("INSERT INTO command_history (user_id,terminal_id,command,command_normalized,cwd,executed_at) VALUES (?,?,?,?,?,?)").run(e,t,r$(r),r$(a),s,i),this.db.prepare("DELETE FROM command_history WHERE user_id=? AND id NOT IN (SELECT id FROM command_history WHERE user_id=? ORDER BY id DESC LIMIT 5000)").run(e,e)}listHistory(e,t="",r=100,s){let i=`%${t.toLowerCase()}%`;return(s?this.db.prepare("SELECT * FROM command_history WHERE user_id=? AND terminal_id=? AND command_normalized LIKE ? ORDER BY id DESC LIMIT ?").all(e,s,i,r):this.db.prepare("SELECT * FROM command_history WHERE user_id=? AND command_normalized LIKE ? ORDER BY id DESC LIMIT ?").all(e,i,r)).map(rM)}deleteHistory(e,t){return 1===this.db.prepare("DELETE FROM command_history WHERE id=? AND user_id=?").run(t,e).changes}clearHistory(e,t){return(t?this.db.prepare("DELETE FROM command_history WHERE user_id=? AND terminal_id=?").run(e,t):this.db.prepare("DELETE FROM command_history WHERE user_id=?").run(e)).changes}}var rD=(e,t)=>{try{return JSON.parse(e)}catch{return t}},rj=e=>({id:e.id,userId:e.user_id,title:e.title,shell:e.shell,startCwd:e.start_cwd,currentCwd:e.current_cwd,status:e.status,sortOrder:e.sort_order,createdAt:e.created_at,lastActiveAt:e.last_active_at,exitedAt:e.exited_at,closedAt:e.closed_at}),rF=e=>({userId:e.user_id,revision:e.revision,theme:e.theme,terminalFontSize:e.terminal_font_size,fileButtonPosition:rD(e.file_button_position_json,{}),keybarPosition:rD(e.keybar_position_json,{}),keybarHidden:!!e.keybar_hidden,keyOrder:rD(e.key_order_json,[]),updatedAt:e.updated_at}),rP=e=>({userId:e.user_id,deviceId:e.device_id,activeTerminalId:e.active_terminal_id,drawerOpen:!!e.drawer_open,drawerTab:e.drawer_tab,fileTreeRoot:e.file_tree_root,fileTreeFollowMode:!!e.file_tree_follow_mode,expandedPaths:rD(e.expanded_paths_json,[]),selectedFile:e.selected_file,terminalScroll:rD(e.terminal_scroll_json,{}),updatedAt:e.updated_at}),rM=e=>({id:e.id,userId:e.user_id,terminalId:e.terminal_id,command:e.command,cwd:e.cwd,executedAt:e.executed_at});function r$(e){return/(?:token|password|secret|api[_-]?key)\s*=/.test(e.toLowerCase())?"[REDACTED]":e}}};
|
|
496
|
+
`),this.db.pragma("foreign_keys = ON")})()}migrateMCPServerHeaders(){this.db.prepare("PRAGMA table_info(mcp_servers)").all().find(e=>"headers"===e.name)||this.db.exec("ALTER TABLE mcp_servers ADD COLUMN headers TEXT NOT NULL DEFAULT '{}'")}migrateSessionsParentId(){this.db.prepare("PRAGMA table_info(sessions)").all().find(e=>"parent_id"===e.name)||(this.db.exec("ALTER TABLE sessions ADD COLUMN parent_id TEXT REFERENCES sessions(id) ON DELETE CASCADE"),this.db.exec("CREATE INDEX IF NOT EXISTS idx_sessions_parent ON sessions(parent_id)"))}close(){this.db.close()}}var rO=new Map;function rI(e){let t=rO.get(e);return t||(t=new rx(e),rO.set(e,t)),t}class rA{constructor(e){this.baseDir=e,rI(e)}async create(e){let t=rI(this.baseDir),r=this.resolveProjectId(e.projectId),s=this.resolveParentId(e.parentSessionId);return t.db.prepare("INSERT INTO sessions (id, project_id, parent_id, title, status, created, updated, metadata) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run(e.id,r,s,e.title,e.status,e.created,e.updated,JSON.stringify(e.metadata)),e}resolveProjectId(e){return e?rI(this.baseDir).db.prepare("SELECT 1 FROM projects WHERE id = ?").get(e)?e:(console.warn(`[SQLiteSessionStore] project_id "${e}" not found — storing session without project (FK-safe).`),null):null}resolveParentId(e){return e?rI(this.baseDir).db.prepare("SELECT 1 FROM sessions WHERE id = ?").get(e)?e:(console.warn(`[SQLiteSessionStore] parent_id "${e}" not found — storing session as root (FK-safe).`),null):null}async get(e){let t=rI(this.baseDir).db.prepare("SELECT * FROM sessions WHERE id = ?").get(e);return t?this.rowToSession(t):null}async update(e,t){let r=rI(this.baseDir),s=await this.get(e);if(!s)throw Error(`Session not found: ${e}`);let i={...s,...t,updated:new Date().toISOString()};return r.db.prepare("UPDATE sessions SET project_id=?, title=?, status=?, updated=?, metadata=? WHERE id=?").run(this.resolveProjectId(i.projectId),i.title,i.status,i.updated,JSON.stringify(i.metadata),e),i}async delete(e){let t=rI(this.baseDir);t.db.prepare("DELETE FROM messages WHERE session_id = ?").run(e),t.db.prepare("DELETE FROM events WHERE session_id = ?").run(e),t.db.prepare("DELETE FROM sessions WHERE id = ?").run(e)}async list(e){let t=rI(this.baseDir);return(e?t.db.prepare("SELECT * FROM sessions WHERE project_id = ? ORDER BY updated DESC").all(e):t.db.prepare("SELECT * FROM sessions ORDER BY updated DESC").all()).map(e=>this.rowToSession(e))}async listChildren(e){return rI(this.baseDir).db.prepare("SELECT * FROM sessions WHERE parent_id = ? ORDER BY updated DESC").all(e).map(e=>this.rowToSession(e))}async addMessage(e,t){rI(this.baseDir).db.prepare("INSERT INTO messages (session_id, role, content, tool_calls, tool_call_id, name, timestamp) VALUES (?,?,?,?,?,?,?)").run(e,t.role,t.content??"",JSON.stringify(t.toolCalls??[]),t.toolCallId??null,t.name??null,Date.now())}async addEvent(e,t){rI(this.baseDir).db.prepare("INSERT INTO events (session_id, type, data, timestamp) VALUES (?,?,?,?)").run(e,t.type,JSON.stringify(t),Date.now())}async replaceMessages(e,t){let r=rI(this.baseDir),s=r.db.prepare("INSERT INTO messages (session_id, role, content, tool_calls, tool_call_id, name, timestamp) VALUES (?,?,?,?,?,?,?)");r.db.transaction(()=>{r.db.prepare("DELETE FROM messages WHERE session_id = ?").run(e);for(let r=0;r<t.length;r++){let i=t[r];s.run(e,i.role,i.content??"",JSON.stringify(i.toolCalls??[]),i.toolCallId??null,i.name??null,Date.now()+r)}})()}rowToSession(e){let t=rI(this.baseDir),r=t.db.prepare("SELECT * FROM messages WHERE session_id = ? ORDER BY id ASC").all(e.id),s=t.db.prepare("SELECT * FROM events WHERE session_id = ? ORDER BY id ASC").all(e.id);return{id:e.id,projectId:e.project_id??"",parentSessionId:e.parent_id??void 0,title:e.title,status:e.status,messages:r.map(e=>{let t=JSON.parse(e.tool_calls),r=e.tool_call_id??void 0,s=e.name??void 0;return{role:e.role,content:e.content,...t?.length?{toolCalls:t}:{},...void 0!==r?{toolCallId:r}:{},...void 0!==s?{name:s}:{}}}),events:s.map(e=>JSON.parse(e.data)),created:e.created,updated:e.updated,metadata:JSON.parse(e.metadata)}}}class rR{constructor(e){this.baseDir=e,rI(e)}async get(e){let t=rI(this.baseDir).db.prepare("SELECT * FROM projects WHERE id = ?").get(e);return t?this.rowToProject(t):null}async create(e){return rI(this.baseDir).db.prepare("INSERT INTO projects (id, name, description, created, updated) VALUES (?, ?, ?, ?, ?)").run(e.id,e.name,e.description,e.created,e.updated),e}async update(e,t){let r=rI(this.baseDir),s=await this.get(e);if(!s)throw Error(`Project not found: ${e}`);let i={...s,...t,updated:new Date().toISOString()};return r.db.prepare("UPDATE projects SET name=?, description=?, updated=? WHERE id=?").run(i.name,i.description,i.updated,e),i}async delete(e){let t=rI(this.baseDir);t.db.prepare("UPDATE sessions SET project_id = NULL WHERE project_id = ?").run(e),t.db.prepare("DELETE FROM projects WHERE id = ?").run(e)}async list(){return rI(this.baseDir).db.prepare("SELECT * FROM projects ORDER BY updated DESC").all().map(e=>this.rowToProject(e))}rowToProject(e){return{id:e.id,name:e.name,description:e.description,created:e.created,updated:e.updated}}}class rC{constructor(e){this.db=rI(e).db}countUsers(){return this.db.prepare("SELECT COUNT(*) AS count FROM users").get().count}createFirstUser(e){return this.db.transaction(()=>{if(0!==this.countUsers())throw Error("setup already completed");return this.db.prepare("INSERT INTO users (id, username_normalized, username_display, password_hash, password_salt, password_version, created_at, password_changed_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?)").run(e.id,e.usernameNormalized,e.usernameDisplay,e.passwordHash,e.passwordSalt,e.passwordVersion,e.createdAt,e.passwordChangedAt),e})()}findUserById(e){let t=this.db.prepare("SELECT * FROM users WHERE id = ?").get(e);return t?this.rowToUser(t):null}findUserByNormalizedUsername(e){let t=this.db.prepare("SELECT * FROM users WHERE username_normalized = ?").get(e);return t?this.rowToUser(t):null}createSession(e){return this.db.prepare("INSERT INTO auth_sessions (id, user_id, token_hash, csrf_hash, ws_nonce_hash, ws_nonce_expires_at, device_id, device_name, user_agent, created_at, last_seen_at, expires_at, revoked_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)").run(e.id,e.userId,e.tokenHash,e.csrfHash,e.wsNonceHash,e.wsNonceExpiresAt,e.deviceId,e.deviceName,e.userAgent,e.createdAt,e.lastSeenAt,e.expiresAt,e.revokedAt),e}findSessionByTokenHash(e,t){let r=this.db.prepare("SELECT * FROM auth_sessions WHERE token_hash = ? AND revoked_at IS NULL AND expires_at > ?").get(e,t);return r?this.rowToSession(r):null}rotateCsrf(e,t,r,s){this.db.prepare("UPDATE auth_sessions SET csrf_hash = ?, last_seen_at = ?, expires_at = ? WHERE id = ? AND revoked_at IS NULL").run(t,r,s,e)}issueWsNonce(e,t,r){this.db.prepare("UPDATE auth_sessions SET ws_nonce_hash = ?, ws_nonce_expires_at = ? WHERE id = ? AND revoked_at IS NULL").run(t,r,e)}consumeWsNonce(e,t,r){return this.db.transaction(()=>!!this.db.prepare("SELECT id FROM auth_sessions WHERE id = ? AND ws_nonce_hash = ? AND ws_nonce_expires_at > ? AND revoked_at IS NULL").get(e,t,r)&&1===this.db.prepare("UPDATE auth_sessions SET ws_nonce_hash = NULL, ws_nonce_expires_at = NULL WHERE id = ? AND ws_nonce_hash = ?").run(e,t).changes)()}revokeSession(e,t){this.db.prepare("UPDATE auth_sessions SET revoked_at = ? WHERE id = ?").run(t,e)}revokeUserSessions(e,t,r){return(t?this.db.prepare("UPDATE auth_sessions SET revoked_at = ? WHERE user_id = ? AND id <> ? AND revoked_at IS NULL").run(r,e,t):this.db.prepare("UPDATE auth_sessions SET revoked_at = ? WHERE user_id = ? AND revoked_at IS NULL").run(r,e)).changes}recordLoginFailure(e,t,r){this.db.prepare("INSERT INTO login_attempts (username_normalized, ip, attempted_at) VALUES (?, ?, ?)").run(e,t,r)}countRecentLoginFailures(e,t,r){return this.db.prepare("SELECT COUNT(*) AS count FROM login_attempts WHERE username_normalized = ? AND ip = ? AND attempted_at >= ?").get(e,t,r).count}clearLoginFailures(e,t){this.db.prepare("DELETE FROM login_attempts WHERE username_normalized = ? AND ip = ?").run(e,t)}rowToUser(e){return{id:e.id,usernameNormalized:e.username_normalized,usernameDisplay:e.username_display,passwordHash:e.password_hash,passwordSalt:e.password_salt,passwordVersion:e.password_version,createdAt:e.created_at,passwordChangedAt:e.password_changed_at}}rowToSession(e){return{id:e.id,userId:e.user_id,tokenHash:e.token_hash,csrfHash:e.csrf_hash,wsNonceHash:e.ws_nonce_hash,wsNonceExpiresAt:e.ws_nonce_expires_at,deviceId:e.device_id,deviceName:e.device_name??"",userAgent:e.user_agent??"",createdAt:e.created_at,lastSeenAt:e.last_seen_at,expiresAt:e.expires_at,revokedAt:e.revoked_at}}}var rU="local";function rD(e){return(0,u.createHash)("sha256").update(e).digest()}class rj{constructor(e){this.db=rI(e).db}getOrCreatePrincipal(){let e=this.findPrincipal();if(e)return{userId:e.id,username:rU};let t=new Date().toISOString();this.db.prepare(`
|
|
497
|
+
INSERT OR IGNORE INTO users (
|
|
498
|
+
id, username_normalized, username_display, password_hash, password_salt,
|
|
499
|
+
password_version, created_at, password_changed_at
|
|
500
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
501
|
+
`).run("local-web",rU,rU,(0,u.randomBytes)(32),(0,u.randomBytes)(16),1,t,t);let r=this.findPrincipal();if(!r)throw Error("failed to initialize anonymous web principal");return{userId:r.id,username:rU}}issueWsNonce(e,t,r,s=Date.now()){let i=rD(e);this.db.transaction(()=>{this.db.prepare("DELETE FROM anonymous_ws_nonces WHERE expires_at <= ?").run(s),this.db.prepare("INSERT INTO anonymous_ws_nonces (nonce_hash, user_id, expires_at) VALUES (?, ?, ?)").run(i,t,r)})()}consumeWsNonce(e,t=Date.now()){let r=this.db.prepare(`
|
|
502
|
+
DELETE FROM anonymous_ws_nonces
|
|
503
|
+
WHERE nonce_hash = ? AND expires_at > ?
|
|
504
|
+
RETURNING user_id
|
|
505
|
+
`).get(rD(e),t);return r?.user_id??null}findPrincipal(){return this.db.prepare("SELECT id, username_display FROM users ORDER BY created_at, id LIMIT 1").get()}}class rF{constructor(e){this.db=rI(e).db}markStaleTerminalsExited(e){return this.db.prepare("UPDATE terminal_tabs SET status='exited', exited_at=? WHERE status IN ('active','detached')").run(e).changes}listTabs(e){return this.db.prepare("SELECT * FROM terminal_tabs WHERE user_id=? AND status<>'closed' ORDER BY sort_order, created_at").all(e).map(rM)}createTab(e){this.db.prepare("INSERT INTO terminal_tabs (id,user_id,title,shell,start_cwd,current_cwd,status,sort_order,created_at,last_active_at,exited_at,closed_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)").run(e.id,e.userId,e.title,e.shell,e.startCwd,e.currentCwd,e.status,e.sortOrder,e.createdAt,e.lastActiveAt,e.exitedAt,e.closedAt)}updateTab(e,t,r){let s={title:"title",currentCwd:"current_cwd",status:"status",sortOrder:"sort_order",lastActiveAt:"last_active_at",exitedAt:"exited_at",closedAt:"closed_at"},i=Object.entries(r).filter(([e])=>s[e]);return!!i.length&&1===this.db.prepare(`UPDATE terminal_tabs SET ${i.map(([e])=>`${s[e]}=?`).join(",")} WHERE id=? AND user_id=?`).run(...i.map(([,e])=>e),e,t).changes}getPreferences(e){let t=this.db.prepare("SELECT * FROM user_preferences WHERE user_id=?").get(e);return t?r$(t):null}savePreferences(e,t){if(null===t)try{return this.db.prepare("INSERT INTO user_preferences (user_id,revision,theme,terminal_font_size,file_button_position_json,keybar_position_json,keybar_hidden,key_order_json,updated_at) VALUES (?,?,?,?,?,?,?,?,?)").run(e.userId,e.revision,e.theme,e.terminalFontSize,JSON.stringify(e.fileButtonPosition),JSON.stringify(e.keybarPosition),e.keybarHidden?1:0,JSON.stringify(e.keyOrder),e.updatedAt),!0}catch{return!1}return 1===this.db.prepare("UPDATE user_preferences SET revision=?,theme=?,terminal_font_size=?,file_button_position_json=?,keybar_position_json=?,keybar_hidden=?,key_order_json=?,updated_at=? WHERE user_id=? AND revision=?").run(e.revision,e.theme,e.terminalFontSize,JSON.stringify(e.fileButtonPosition),JSON.stringify(e.keybarPosition),e.keybarHidden?1:0,JSON.stringify(e.keyOrder),e.updatedAt,e.userId,t).changes}getDeviceState(e,t){let r=this.db.prepare("SELECT * FROM device_states WHERE user_id=? AND device_id=?").get(e,t);return r?rX(r):null}saveDeviceState(e){this.db.prepare("INSERT INTO device_states (user_id,device_id,active_terminal_id,drawer_open,drawer_tab,file_tree_root,file_tree_follow_mode,expanded_paths_json,selected_file,terminal_scroll_json,updated_at) VALUES (?,?,?,?,?,?,?,?,?,?,?) ON CONFLICT(user_id,device_id) DO UPDATE SET active_terminal_id=excluded.active_terminal_id,drawer_open=excluded.drawer_open,drawer_tab=excluded.drawer_tab,file_tree_root=excluded.file_tree_root,file_tree_follow_mode=excluded.file_tree_follow_mode,expanded_paths_json=excluded.expanded_paths_json,selected_file=excluded.selected_file,terminal_scroll_json=excluded.terminal_scroll_json,updated_at=excluded.updated_at").run(e.userId,e.deviceId,e.activeTerminalId,e.drawerOpen?1:0,e.drawerTab,e.fileTreeRoot,e.fileTreeFollowMode?1:0,JSON.stringify(e.expandedPaths),e.selectedFile,JSON.stringify(e.terminalScroll),e.updatedAt)}addHistory(e,t,r,s,i){let a=r.toLowerCase();this.db.prepare("INSERT INTO command_history (user_id,terminal_id,command,command_normalized,cwd,executed_at) VALUES (?,?,?,?,?,?)").run(e,t,rB(r),rB(a),s,i),this.db.prepare("DELETE FROM command_history WHERE user_id=? AND id NOT IN (SELECT id FROM command_history WHERE user_id=? ORDER BY id DESC LIMIT 5000)").run(e,e)}listHistory(e,t="",r=100,s){let i=`%${t.toLowerCase()}%`;return(s?this.db.prepare("SELECT * FROM command_history WHERE user_id=? AND terminal_id=? AND command_normalized LIKE ? ORDER BY id DESC LIMIT ?").all(e,s,i,r):this.db.prepare("SELECT * FROM command_history WHERE user_id=? AND command_normalized LIKE ? ORDER BY id DESC LIMIT ?").all(e,i,r)).map(rZ)}deleteHistory(e,t){return 1===this.db.prepare("DELETE FROM command_history WHERE id=? AND user_id=?").run(t,e).changes}clearHistory(e,t){return(t?this.db.prepare("DELETE FROM command_history WHERE user_id=? AND terminal_id=?").run(e,t):this.db.prepare("DELETE FROM command_history WHERE user_id=?").run(e)).changes}}var rP=(e,t)=>{try{return JSON.parse(e)}catch{return t}},rM=e=>({id:e.id,userId:e.user_id,title:e.title,shell:e.shell,startCwd:e.start_cwd,currentCwd:e.current_cwd,status:e.status,sortOrder:e.sort_order,createdAt:e.created_at,lastActiveAt:e.last_active_at,exitedAt:e.exited_at,closedAt:e.closed_at}),r$=e=>({userId:e.user_id,revision:e.revision,theme:e.theme,terminalFontSize:e.terminal_font_size,fileButtonPosition:rP(e.file_button_position_json,{}),keybarPosition:rP(e.keybar_position_json,{}),keybarHidden:!!e.keybar_hidden,keyOrder:rP(e.key_order_json,[]),updatedAt:e.updated_at}),rX=e=>({userId:e.user_id,deviceId:e.device_id,activeTerminalId:e.active_terminal_id,drawerOpen:!!e.drawer_open,drawerTab:e.drawer_tab,fileTreeRoot:e.file_tree_root,fileTreeFollowMode:!!e.file_tree_follow_mode,expandedPaths:rP(e.expanded_paths_json,[]),selectedFile:e.selected_file,terminalScroll:rP(e.terminal_scroll_json,{}),updatedAt:e.updated_at}),rZ=e=>({id:e.id,userId:e.user_id,terminalId:e.terminal_id,command:e.command,cwd:e.cwd,executedAt:e.executed_at});function rB(e){return/(?:token|password|secret|api[_-]?key)\s*=/.test(e.toLowerCase())?"[REDACTED]":e}}};
|