@atoms-tech/atoms-mcp 0.2.1 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +9 -0
- package/README.md +31 -19
- package/dist/apps/src/apps/coverage/coverage-app.html +237 -0
- package/dist/apps/src/apps/import/import-app.html +239 -0
- package/dist/apps/src/apps/mermaid/mermaid-app.html +112 -0
- package/dist/apps/src/apps/summary/summary-app.html +279 -0
- package/dist/apps/src/apps/trace/trace-app.html +171 -0
- package/dist/index.cjs +2 -0
- package/dist/index.js +1 -91
- package/package.json +21 -5
- package/dist/auth/login.d.ts +0 -25
- package/dist/auth/login.d.ts.map +0 -1
- package/dist/auth/login.js +0 -414
- package/dist/auth/login.js.map +0 -1
- package/dist/auth/refresh.d.ts +0 -17
- package/dist/auth/refresh.d.ts.map +0 -1
- package/dist/auth/refresh.js +0 -82
- package/dist/auth/refresh.js.map +0 -1
- package/dist/auth/token-store.d.ts +0 -34
- package/dist/auth/token-store.d.ts.map +0 -1
- package/dist/auth/token-store.js +0 -61
- package/dist/auth/token-store.js.map +0 -1
- package/dist/config.d.ts +0 -19
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -19
- package/dist/config.js.map +0 -1
- package/dist/db/client.d.ts +0 -30
- package/dist/db/client.d.ts.map +0 -1
- package/dist/db/client.js +0 -110
- package/dist/db/client.js.map +0 -1
- package/dist/db/graph.d.ts +0 -8
- package/dist/db/graph.d.ts.map +0 -1
- package/dist/db/graph.js +0 -8
- package/dist/db/graph.js.map +0 -1
- package/dist/db/queries.d.ts +0 -77
- package/dist/db/queries.d.ts.map +0 -1
- package/dist/db/queries.js +0 -210
- package/dist/db/queries.js.map +0 -1
- package/dist/index.d.ts +0 -12
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/middleware/audit.d.ts +0 -26
- package/dist/middleware/audit.d.ts.map +0 -1
- package/dist/middleware/audit.js +0 -44
- package/dist/middleware/audit.js.map +0 -1
- package/dist/middleware/rate-limiter.d.ts +0 -21
- package/dist/middleware/rate-limiter.d.ts.map +0 -1
- package/dist/middleware/rate-limiter.js +0 -43
- package/dist/middleware/rate-limiter.js.map +0 -1
- package/dist/middleware/validator.d.ts +0 -22
- package/dist/middleware/validator.d.ts.map +0 -1
- package/dist/middleware/validator.js +0 -91
- package/dist/middleware/validator.js.map +0 -1
- package/dist/server.d.ts +0 -14
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -637
- package/dist/server.js.map +0 -1
- package/dist/tools/_base.d.ts +0 -58
- package/dist/tools/_base.d.ts.map +0 -1
- package/dist/tools/_base.js +0 -109
- package/dist/tools/_base.js.map +0 -1
- package/dist/tools/bulk-import.d.ts +0 -70
- package/dist/tools/bulk-import.d.ts.map +0 -1
- package/dist/tools/bulk-import.js +0 -188
- package/dist/tools/bulk-import.js.map +0 -1
- package/dist/tools/create-item.d.ts +0 -43
- package/dist/tools/create-item.d.ts.map +0 -1
- package/dist/tools/create-item.js +0 -118
- package/dist/tools/create-item.js.map +0 -1
- package/dist/tools/delete-item.d.ts +0 -38
- package/dist/tools/delete-item.d.ts.map +0 -1
- package/dist/tools/delete-item.js +0 -69
- package/dist/tools/delete-item.js.map +0 -1
- package/dist/tools/export-mermaid.d.ts +0 -36
- package/dist/tools/export-mermaid.d.ts.map +0 -1
- package/dist/tools/export-mermaid.js +0 -125
- package/dist/tools/export-mermaid.js.map +0 -1
- package/dist/tools/get-coverage.d.ts +0 -34
- package/dist/tools/get-coverage.d.ts.map +0 -1
- package/dist/tools/get-coverage.js +0 -36
- package/dist/tools/get-coverage.js.map +0 -1
- package/dist/tools/get-history.d.ts +0 -34
- package/dist/tools/get-history.d.ts.map +0 -1
- package/dist/tools/get-history.js +0 -53
- package/dist/tools/get-history.js.map +0 -1
- package/dist/tools/get-item.d.ts +0 -62
- package/dist/tools/get-item.d.ts.map +0 -1
- package/dist/tools/get-item.js +0 -93
- package/dist/tools/get-item.js.map +0 -1
- package/dist/tools/link-items.d.ts +0 -41
- package/dist/tools/link-items.d.ts.map +0 -1
- package/dist/tools/link-items.js +0 -150
- package/dist/tools/link-items.js.map +0 -1
- package/dist/tools/list-items.d.ts +0 -37
- package/dist/tools/list-items.d.ts.map +0 -1
- package/dist/tools/list-items.js +0 -36
- package/dist/tools/list-items.js.map +0 -1
- package/dist/tools/list-projects.d.ts +0 -38
- package/dist/tools/list-projects.d.ts.map +0 -1
- package/dist/tools/list-projects.js +0 -28
- package/dist/tools/list-projects.js.map +0 -1
- package/dist/tools/project-summary.d.ts +0 -64
- package/dist/tools/project-summary.d.ts.map +0 -1
- package/dist/tools/project-summary.js +0 -170
- package/dist/tools/project-summary.js.map +0 -1
- package/dist/tools/record-test-result.d.ts +0 -41
- package/dist/tools/record-test-result.d.ts.map +0 -1
- package/dist/tools/record-test-result.js +0 -80
- package/dist/tools/record-test-result.js.map +0 -1
- package/dist/tools/search.d.ts +0 -34
- package/dist/tools/search.d.ts.map +0 -1
- package/dist/tools/search.js +0 -28
- package/dist/tools/search.js.map +0 -1
- package/dist/tools/trace.d.ts +0 -53
- package/dist/tools/trace.d.ts.map +0 -1
- package/dist/tools/trace.js +0 -166
- package/dist/tools/trace.js.map +0 -1
- package/dist/tools/update-item.d.ts +0 -43
- package/dist/tools/update-item.d.ts.map +0 -1
- package/dist/tools/update-item.js +0 -98
- package/dist/tools/update-item.js.map +0 -1
- package/dist/types/responses.d.ts +0 -58
- package/dist/types/responses.d.ts.map +0 -1
- package/dist/types/responses.js +0 -6
- package/dist/types/responses.js.map +0 -1
- package/dist/types/work-item.d.ts +0 -69
- package/dist/types/work-item.d.ts.map +0 -1
- package/dist/types/work-item.js +0 -8
- package/dist/types/work-item.js.map +0 -1
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>ATOMS Bulk Import</title>
|
|
7
|
+
<script type="module" crossorigin>(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))n(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&n(i)}).observe(document,{childList:!0,subtree:!0});function o(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(r){if(r.ep)return;r.ep=!0;const s=o(r);fetch(r.href,s)}})();function d(e,t,o){function n(u,p){var f;Object.defineProperty(u,"_zod",{value:u._zod??{},enumerable:!1}),(f=u._zod).traits??(f.traits=new Set),u._zod.traits.add(e),t(u,p);for(const g in i.prototype)g in u||Object.defineProperty(u,g,{value:i.prototype[g].bind(u)});u._zod.constr=i,u._zod.def=p}const r=o?.Parent??Object;class s extends r{}Object.defineProperty(s,"name",{value:e});function i(u){var p;const f=o?.Parent?new s:this;n(f,u),(p=f._zod).deferred??(p.deferred=[]);for(const g of f._zod.deferred)g();return f}return Object.defineProperty(i,"init",{value:n}),Object.defineProperty(i,Symbol.hasInstance,{value:u=>o?.Parent&&u instanceof o.Parent?!0:u?._zod?.traits?.has(e)}),Object.defineProperty(i,"name",{value:e}),i}class ie extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}const jt={};function W(e){return jt}function Ao(e){const t=Object.values(e).filter(n=>typeof n=="number");return Object.entries(e).filter(([n,r])=>t.indexOf(+n)===-1).map(([n,r])=>r)}function Uo(e,t){return typeof t=="bigint"?t.toString():t}function Fe(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function Be(e){return e==null}function Ve(e){const t=e.startsWith("^")?1:0,o=e.endsWith("$")?e.length-1:e.length;return e.slice(t,o)}function Do(e,t){const o=(e.toString().split(".")[1]||"").length,n=(t.toString().split(".")[1]||"").length,r=o>n?o:n,s=Number.parseInt(e.toFixed(r).replace(".","")),i=Number.parseInt(t.toFixed(r).replace(".",""));return s%i/10**r}function Z(e,t,o){Object.defineProperty(e,t,{get(){{const n=o();return e[t]=n,n}},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function Ze(e,t,o){Object.defineProperty(e,t,{value:o,writable:!0,enumerable:!0,configurable:!0})}function re(e){return JSON.stringify(e)}const Lt=Error.captureStackTrace?Error.captureStackTrace:(...e)=>{};function ze(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const jo=Fe(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const e=Function;return new e(""),!0}catch{return!1}});function Te(e){if(ze(e)===!1)return!1;const t=e.constructor;if(t===void 0)return!0;const o=t.prototype;return!(ze(o)===!1||Object.prototype.hasOwnProperty.call(o,"isPrototypeOf")===!1)}const Lo=new Set(["string","number","symbol"]);function ue(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function X(e,t,o){const n=new e._zod.constr(t??e._zod.def);return(!t||o?.parent)&&(n._zod.parent=e),n}function m(e){const t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function Ho(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}const Fo={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Bo(e,t){const o={},n=e._zod.def;for(const r in t){if(!(r in n.shape))throw new Error(`Unrecognized key: "${r}"`);t[r]&&(o[r]=n.shape[r])}return X(e,{...e._zod.def,shape:o,checks:[]})}function Vo(e,t){const o={...e._zod.def.shape},n=e._zod.def;for(const r in t){if(!(r in n.shape))throw new Error(`Unrecognized key: "${r}"`);t[r]&&delete o[r]}return X(e,{...e._zod.def,shape:o,checks:[]})}function Wo(e,t){if(!Te(t))throw new Error("Invalid input to extend: expected a plain object");const o={...e._zod.def,get shape(){const n={...e._zod.def.shape,...t};return Ze(this,"shape",n),n},checks:[]};return X(e,o)}function Jo(e,t){return X(e,{...e._zod.def,get shape(){const o={...e._zod.def.shape,...t._zod.def.shape};return Ze(this,"shape",o),o},catchall:t._zod.def.catchall,checks:[]})}function Ko(e,t,o){const n=t._zod.def.shape,r={...n};if(o)for(const s in o){if(!(s in n))throw new Error(`Unrecognized key: "${s}"`);o[s]&&(r[s]=e?new e({type:"optional",innerType:n[s]}):n[s])}else for(const s in n)r[s]=e?new e({type:"optional",innerType:n[s]}):n[s];return X(t,{...t._zod.def,shape:r,checks:[]})}function Go(e,t,o){const n=t._zod.def.shape,r={...n};if(o)for(const s in o){if(!(s in r))throw new Error(`Unrecognized key: "${s}"`);o[s]&&(r[s]=new e({type:"nonoptional",innerType:n[s]}))}else for(const s in n)r[s]=new e({type:"nonoptional",innerType:n[s]});return X(t,{...t._zod.def,shape:r,checks:[]})}function se(e,t=0){for(let o=t;o<e.issues.length;o++)if(e.issues[o]?.continue!==!0)return!0;return!1}function Y(e,t){return t.map(o=>{var n;return(n=o).path??(n.path=[]),o.path.unshift(e),o})}function ke(e){return typeof e=="string"?e:e?.message}function J(e,t,o){const n={...e,path:e.path??[]};if(!e.message){const r=ke(e.inst?._zod.def?.error?.(e))??ke(t?.error?.(e))??ke(o.customError?.(e))??ke(o.localeError?.(e))??"Invalid input";n.message=r}return delete n.inst,delete n.continue,t?.reportInput||delete n.input,n}function We(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function ae(...e){const[t,o,n]=e;return typeof t=="string"?{message:t,code:"custom",input:o,inst:n}:{...t}}const Ht=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),Object.defineProperty(e,"message",{get(){return JSON.stringify(t,Uo,2)},enumerable:!0}),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Ft=d("$ZodError",Ht),Bt=d("$ZodError",Ht,{Parent:Error});function Qo(e,t=o=>o.message){const o={},n=[];for(const r of e.issues)r.path.length>0?(o[r.path[0]]=o[r.path[0]]||[],o[r.path[0]].push(t(r))):n.push(t(r));return{formErrors:n,fieldErrors:o}}function Yo(e,t){const o=t||function(s){return s.message},n={_errors:[]},r=s=>{for(const i of s.issues)if(i.code==="invalid_union"&&i.errors.length)i.errors.map(u=>r({issues:u}));else if(i.code==="invalid_key")r({issues:i.issues});else if(i.code==="invalid_element")r({issues:i.issues});else if(i.path.length===0)n._errors.push(o(i));else{let u=n,p=0;for(;p<i.path.length;){const f=i.path[p];p===i.path.length-1?(u[f]=u[f]||{_errors:[]},u[f]._errors.push(o(i))):u[f]=u[f]||{_errors:[]},u=u[f],p++}}};return r(e),n}const Xo=e=>(t,o,n,r)=>{const s=n?Object.assign(n,{async:!1}):{async:!1},i=t._zod.run({value:o,issues:[]},s);if(i instanceof Promise)throw new ie;if(i.issues.length){const u=new(r?.Err??e)(i.issues.map(p=>J(p,s,W())));throw Lt(u,r?.callee),u}return i.value},en=e=>async(t,o,n,r)=>{const s=n?Object.assign(n,{async:!0}):{async:!0};let i=t._zod.run({value:o,issues:[]},s);if(i instanceof Promise&&(i=await i),i.issues.length){const u=new(r?.Err??e)(i.issues.map(p=>J(p,s,W())));throw Lt(u,r?.callee),u}return i.value},Vt=e=>(t,o,n)=>{const r=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:o,issues:[]},r);if(s instanceof Promise)throw new ie;return s.issues.length?{success:!1,error:new(e??Ft)(s.issues.map(i=>J(i,r,W())))}:{success:!0,data:s.value}},Wt=Vt(Bt),Jt=e=>async(t,o,n)=>{const r=n?Object.assign(n,{async:!0}):{async:!0};let s=t._zod.run({value:o,issues:[]},r);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new e(s.issues.map(i=>J(i,r,W())))}:{success:!0,data:s.value}},tn=Jt(Bt),on=/^[cC][^\s-]{8,}$/,nn=/^[0-9a-z]+$/,rn=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,sn=/^[0-9a-vA-V]{20}$/,an=/^[A-Za-z0-9]{27}$/,cn=/^[a-zA-Z0-9_-]{21}$/,un=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,ln=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,kt=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/,dn=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,pn="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function hn(){return new RegExp(pn,"u")}const mn=/^(?:(?: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])$/,fn=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/,gn=/^((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])\/([0-9]|[1-2][0-9]|3[0-2])$/,_n=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,vn=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Kt=/^[A-Za-z0-9_-]*$/,bn=/^([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+$/,kn=/^\+(?:[0-9]){6,14}[0-9]$/,Gt="(?:(?:\\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])))",wn=new RegExp(`^${Gt}$`);function Qt(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function yn(e){return new RegExp(`^${Qt(e)}$`)}function Sn(e){const t=Qt({precision:e.precision}),o=["Z"];e.local&&o.push(""),e.offset&&o.push("([+-]\\d{2}:\\d{2})");const n=`${t}(?:${o.join("|")})`;return new RegExp(`^${Gt}T(?:${n})$`)}const xn=e=>{const t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},zn=/^\d+$/,Tn=/^-?\d+(?:\.\d+)?/i,In=/true|false/i,$n=/null/i,Rn=/undefined/i,Zn=/^[^A-Z]*$/,Pn=/^[^a-z]*$/,j=d("$ZodCheck",(e,t)=>{var o;e._zod??(e._zod={}),e._zod.def=t,(o=e._zod).onattach??(o.onattach=[])}),Yt={number:"number",bigint:"bigint",object:"date"},Xt=d("$ZodCheckLessThan",(e,t)=>{j.init(e,t);const o=Yt[typeof t.value];e._zod.onattach.push(n=>{const r=n._zod.bag,s=(t.inclusive?r.maximum:r.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<s&&(t.inclusive?r.maximum=t.value:r.exclusiveMaximum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value<=t.value:n.value<t.value)||n.issues.push({origin:o,code:"too_big",maximum:t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),eo=d("$ZodCheckGreaterThan",(e,t)=>{j.init(e,t);const o=Yt[typeof t.value];e._zod.onattach.push(n=>{const r=n._zod.bag,s=(t.inclusive?r.minimum:r.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>s&&(t.inclusive?r.minimum=t.value:r.exclusiveMinimum=t.value)}),e._zod.check=n=>{(t.inclusive?n.value>=t.value:n.value>t.value)||n.issues.push({origin:o,code:"too_small",minimum:t.value,input:n.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),En=d("$ZodCheckMultipleOf",(e,t)=>{j.init(e,t),e._zod.onattach.push(o=>{var n;(n=o._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=o=>{if(typeof o.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof o.value=="bigint"?o.value%t.value===BigInt(0):Do(o.value,t.value)===0)||o.issues.push({origin:typeof o.value,code:"not_multiple_of",divisor:t.value,input:o.value,inst:e,continue:!t.abort})}}),Cn=d("$ZodCheckNumberFormat",(e,t)=>{j.init(e,t),t.format=t.format||"float64";const o=t.format?.includes("int"),n=o?"int":"number",[r,s]=Fo[t.format];e._zod.onattach.push(i=>{const u=i._zod.bag;u.format=t.format,u.minimum=r,u.maximum=s,o&&(u.pattern=zn)}),e._zod.check=i=>{const u=i.value;if(o){if(!Number.isInteger(u)){i.issues.push({expected:n,format:t.format,code:"invalid_type",input:u,inst:e});return}if(!Number.isSafeInteger(u)){u>0?i.issues.push({input:u,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,continue:!t.abort}):i.issues.push({input:u,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:n,continue:!t.abort});return}}u<r&&i.issues.push({origin:"number",input:u,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!t.abort}),u>s&&i.issues.push({origin:"number",input:u,code:"too_big",maximum:s,inst:e})}}),Nn=d("$ZodCheckMaxLength",(e,t)=>{var o;j.init(e,t),(o=e._zod.def).when??(o.when=n=>{const r=n.value;return!Be(r)&&r.length!==void 0}),e._zod.onattach.push(n=>{const r=n._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<r&&(n._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{const r=n.value;if(r.length<=t.maximum)return;const i=We(r);n.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),qn=d("$ZodCheckMinLength",(e,t)=>{var o;j.init(e,t),(o=e._zod.def).when??(o.when=n=>{const r=n.value;return!Be(r)&&r.length!==void 0}),e._zod.onattach.push(n=>{const r=n._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>r&&(n._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{const r=n.value;if(r.length>=t.minimum)return;const i=We(r);n.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Mn=d("$ZodCheckLengthEquals",(e,t)=>{var o;j.init(e,t),(o=e._zod.def).when??(o.when=n=>{const r=n.value;return!Be(r)&&r.length!==void 0}),e._zod.onattach.push(n=>{const r=n._zod.bag;r.minimum=t.length,r.maximum=t.length,r.length=t.length}),e._zod.check=n=>{const r=n.value,s=r.length;if(s===t.length)return;const i=We(r),u=s>t.length;n.issues.push({origin:i,...u?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Pe=d("$ZodCheckStringFormat",(e,t)=>{var o,n;j.init(e,t),e._zod.onattach.push(r=>{const s=r._zod.bag;s.format=t.format,t.pattern&&(s.patterns??(s.patterns=new Set),s.patterns.add(t.pattern))}),t.pattern?(o=e._zod).check??(o.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:t.format,input:r.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(n=e._zod).check??(n.check=()=>{})}),On=d("$ZodCheckRegex",(e,t)=>{Pe.init(e,t),e._zod.check=o=>{t.pattern.lastIndex=0,!t.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:"regex",input:o.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),An=d("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Zn),Pe.init(e,t)}),Un=d("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Pn),Pe.init(e,t)}),Dn=d("$ZodCheckIncludes",(e,t)=>{j.init(e,t);const o=ue(t.includes),n=new RegExp(typeof t.position=="number"?`^.{${t.position}}${o}`:o);t.pattern=n,e._zod.onattach.push(r=>{const s=r._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(n)}),e._zod.check=r=>{r.value.includes(t.includes,t.position)||r.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:r.value,inst:e,continue:!t.abort})}}),jn=d("$ZodCheckStartsWith",(e,t)=>{j.init(e,t);const o=new RegExp(`^${ue(t.prefix)}.*`);t.pattern??(t.pattern=o),e._zod.onattach.push(n=>{const r=n._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(o)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Ln=d("$ZodCheckEndsWith",(e,t)=>{j.init(e,t);const o=new RegExp(`.*${ue(t.suffix)}$`);t.pattern??(t.pattern=o),e._zod.onattach.push(n=>{const r=n._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(o)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),Hn=d("$ZodCheckOverwrite",(e,t)=>{j.init(e,t),e._zod.check=o=>{o.value=t.tx(o.value)}});class Fn{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}const n=t.split(`
|
|
8
|
+
`).filter(i=>i),r=Math.min(...n.map(i=>i.length-i.trimStart().length)),s=n.map(i=>i.slice(r)).map(i=>" ".repeat(this.indent*2)+i);for(const i of s)this.content.push(i)}compile(){const t=Function,o=this?.args,r=[...(this?.content??[""]).map(s=>` ${s}`)];return new t(...o,r.join(`
|
|
9
|
+
`))}}const Bn={major:4,minor:0,patch:0},R=d("$ZodType",(e,t)=>{var o;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Bn;const n=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&n.unshift(e);for(const r of n)for(const s of r._zod.onattach)s(e);if(n.length===0)(o=e._zod).deferred??(o.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const r=(s,i,u)=>{let p=se(s),f;for(const g of i){if(g._zod.def.when){if(!g._zod.def.when(s))continue}else if(p)continue;const h=s.issues.length,_=g._zod.check(s);if(_ instanceof Promise&&u?.async===!1)throw new ie;if(f||_ instanceof Promise)f=(f??Promise.resolve()).then(async()=>{await _,s.issues.length!==h&&(p||(p=se(s,h)))});else{if(s.issues.length===h)continue;p||(p=se(s,h))}}return f?f.then(()=>s):s};e._zod.run=(s,i)=>{const u=e._zod.parse(s,i);if(u instanceof Promise){if(i.async===!1)throw new ie;return u.then(p=>r(p,n,i))}return r(u,n,i)}}e["~standard"]={validate:r=>{try{const s=Wt(e,r);return s.success?{value:s.data}:{issues:s.error?.issues}}catch{return tn(e,r).then(i=>i.success?{value:i.data}:{issues:i.error?.issues})}},vendor:"zod",version:1}}),Je=d("$ZodString",(e,t)=>{R.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??xn(e._zod.bag),e._zod.parse=(o,n)=>{if(t.coerce)try{o.value=String(o.value)}catch{}return typeof o.value=="string"||o.issues.push({expected:"string",code:"invalid_type",input:o.value,inst:e}),o}}),E=d("$ZodStringFormat",(e,t)=>{Pe.init(e,t),Je.init(e,t)}),Vn=d("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=ln),E.init(e,t)}),Wn=d("$ZodUUID",(e,t)=>{if(t.version){const n={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(n===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=kt(n))}else t.pattern??(t.pattern=kt());E.init(e,t)}),Jn=d("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=dn),E.init(e,t)}),Kn=d("$ZodURL",(e,t)=>{E.init(e,t),e._zod.check=o=>{try{const n=o.value,r=new URL(n),s=r.href;t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(r.hostname)||o.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:bn.source,input:o.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(r.protocol.endsWith(":")?r.protocol.slice(0,-1):r.protocol)||o.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:o.value,inst:e,continue:!t.abort})),!n.endsWith("/")&&s.endsWith("/")?o.value=s.slice(0,-1):o.value=s;return}catch{o.issues.push({code:"invalid_format",format:"url",input:o.value,inst:e,continue:!t.abort})}}}),Gn=d("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=hn()),E.init(e,t)}),Qn=d("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=cn),E.init(e,t)}),Yn=d("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=on),E.init(e,t)}),Xn=d("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=nn),E.init(e,t)}),er=d("$ZodULID",(e,t)=>{t.pattern??(t.pattern=rn),E.init(e,t)}),tr=d("$ZodXID",(e,t)=>{t.pattern??(t.pattern=sn),E.init(e,t)}),or=d("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=an),E.init(e,t)}),nr=d("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=Sn(t)),E.init(e,t)}),rr=d("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=wn),E.init(e,t)}),sr=d("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=yn(t)),E.init(e,t)}),ir=d("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=un),E.init(e,t)}),ar=d("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=mn),E.init(e,t),e._zod.onattach.push(o=>{const n=o._zod.bag;n.format="ipv4"})}),cr=d("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=fn),E.init(e,t),e._zod.onattach.push(o=>{const n=o._zod.bag;n.format="ipv6"}),e._zod.check=o=>{try{new URL(`http://[${o.value}]`)}catch{o.issues.push({code:"invalid_format",format:"ipv6",input:o.value,inst:e,continue:!t.abort})}}}),ur=d("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=gn),E.init(e,t)}),lr=d("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=_n),E.init(e,t),e._zod.check=o=>{const[n,r]=o.value.split("/");try{if(!r)throw new Error;const s=Number(r);if(`${s}`!==r)throw new Error;if(s<0||s>128)throw new Error;new URL(`http://[${n}]`)}catch{o.issues.push({code:"invalid_format",format:"cidrv6",input:o.value,inst:e,continue:!t.abort})}}});function to(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}const dr=d("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=vn),E.init(e,t),e._zod.onattach.push(o=>{o._zod.bag.contentEncoding="base64"}),e._zod.check=o=>{to(o.value)||o.issues.push({code:"invalid_format",format:"base64",input:o.value,inst:e,continue:!t.abort})}});function pr(e){if(!Kt.test(e))return!1;const t=e.replace(/[-_]/g,n=>n==="-"?"+":"/"),o=t.padEnd(Math.ceil(t.length/4)*4,"=");return to(o)}const hr=d("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=Kt),E.init(e,t),e._zod.onattach.push(o=>{o._zod.bag.contentEncoding="base64url"}),e._zod.check=o=>{pr(o.value)||o.issues.push({code:"invalid_format",format:"base64url",input:o.value,inst:e,continue:!t.abort})}}),mr=d("$ZodE164",(e,t)=>{t.pattern??(t.pattern=kn),E.init(e,t)});function fr(e,t=null){try{const o=e.split(".");if(o.length!==3)return!1;const[n]=o;if(!n)return!1;const r=JSON.parse(atob(n));return!("typ"in r&&r?.typ!=="JWT"||!r.alg||t&&(!("alg"in r)||r.alg!==t))}catch{return!1}}const gr=d("$ZodJWT",(e,t)=>{E.init(e,t),e._zod.check=o=>{fr(o.value,t.alg)||o.issues.push({code:"invalid_format",format:"jwt",input:o.value,inst:e,continue:!t.abort})}}),oo=d("$ZodNumber",(e,t)=>{R.init(e,t),e._zod.pattern=e._zod.bag.pattern??Tn,e._zod.parse=(o,n)=>{if(t.coerce)try{o.value=Number(o.value)}catch{}const r=o.value;if(typeof r=="number"&&!Number.isNaN(r)&&Number.isFinite(r))return o;const s=typeof r=="number"?Number.isNaN(r)?"NaN":Number.isFinite(r)?void 0:"Infinity":void 0;return o.issues.push({expected:"number",code:"invalid_type",input:r,inst:e,...s?{received:s}:{}}),o}}),_r=d("$ZodNumber",(e,t)=>{Cn.init(e,t),oo.init(e,t)}),vr=d("$ZodBoolean",(e,t)=>{R.init(e,t),e._zod.pattern=In,e._zod.parse=(o,n)=>{if(t.coerce)try{o.value=!!o.value}catch{}const r=o.value;return typeof r=="boolean"||o.issues.push({expected:"boolean",code:"invalid_type",input:r,inst:e}),o}}),br=d("$ZodUndefined",(e,t)=>{R.init(e,t),e._zod.pattern=Rn,e._zod.values=new Set([void 0]),e._zod.optin="optional",e._zod.optout="optional",e._zod.parse=(o,n)=>{const r=o.value;return typeof r>"u"||o.issues.push({expected:"undefined",code:"invalid_type",input:r,inst:e}),o}}),kr=d("$ZodNull",(e,t)=>{R.init(e,t),e._zod.pattern=$n,e._zod.values=new Set([null]),e._zod.parse=(o,n)=>{const r=o.value;return r===null||o.issues.push({expected:"null",code:"invalid_type",input:r,inst:e}),o}}),wr=d("$ZodUnknown",(e,t)=>{R.init(e,t),e._zod.parse=o=>o}),yr=d("$ZodNever",(e,t)=>{R.init(e,t),e._zod.parse=(o,n)=>(o.issues.push({expected:"never",code:"invalid_type",input:o.value,inst:e}),o)});function wt(e,t,o){e.issues.length&&t.issues.push(...Y(o,e.issues)),t.value[o]=e.value}const Sr=d("$ZodArray",(e,t)=>{R.init(e,t),e._zod.parse=(o,n)=>{const r=o.value;if(!Array.isArray(r))return o.issues.push({expected:"array",code:"invalid_type",input:r,inst:e}),o;o.value=Array(r.length);const s=[];for(let i=0;i<r.length;i++){const u=r[i],p=t.element._zod.run({value:u,issues:[]},n);p instanceof Promise?s.push(p.then(f=>wt(f,o,i))):wt(p,o,i)}return s.length?Promise.all(s).then(()=>o):o}});function we(e,t,o){e.issues.length&&t.issues.push(...Y(o,e.issues)),t.value[o]=e.value}function yt(e,t,o,n){e.issues.length?n[o]===void 0?o in n?t.value[o]=void 0:t.value[o]=e.value:t.issues.push(...Y(o,e.issues)):e.value===void 0?o in n&&(t.value[o]=void 0):t.value[o]=e.value}const xr=d("$ZodObject",(e,t)=>{R.init(e,t);const o=Fe(()=>{const h=Object.keys(t.shape);for(const k of h)if(!(t.shape[k]instanceof R))throw new Error(`Invalid element at key "${k}": expected a Zod schema`);const _=Ho(t.shape);return{shape:t.shape,keys:h,keySet:new Set(h),numKeys:h.length,optionalKeys:new Set(_)}});Z(e._zod,"propValues",()=>{const h=t.shape,_={};for(const k in h){const M=h[k]._zod;if(M.values){_[k]??(_[k]=new Set);for(const F of M.values)_[k].add(F)}}return _});const n=h=>{const _=new Fn(["shape","payload","ctx"]),k=o.value,M=S=>{const y=re(S);return`shape[${y}]._zod.run({ value: input[${y}], issues: [] }, ctx)`};_.write("const input = payload.value;");const F=Object.create(null);let oe=0;for(const S of k.keys)F[S]=`key_${oe++}`;_.write("const newResult = {}");for(const S of k.keys)if(k.optionalKeys.has(S)){const y=F[S];_.write(`const ${y} = ${M(S)};`);const P=re(S);_.write(`
|
|
10
|
+
if (${y}.issues.length) {
|
|
11
|
+
if (input[${P}] === undefined) {
|
|
12
|
+
if (${P} in input) {
|
|
13
|
+
newResult[${P}] = undefined;
|
|
14
|
+
}
|
|
15
|
+
} else {
|
|
16
|
+
payload.issues = payload.issues.concat(
|
|
17
|
+
${y}.issues.map((iss) => ({
|
|
18
|
+
...iss,
|
|
19
|
+
path: iss.path ? [${P}, ...iss.path] : [${P}],
|
|
20
|
+
}))
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
} else if (${y}.value === undefined) {
|
|
24
|
+
if (${P} in input) newResult[${P}] = undefined;
|
|
25
|
+
} else {
|
|
26
|
+
newResult[${P}] = ${y}.value;
|
|
27
|
+
}
|
|
28
|
+
`)}else{const y=F[S];_.write(`const ${y} = ${M(S)};`),_.write(`
|
|
29
|
+
if (${y}.issues.length) payload.issues = payload.issues.concat(${y}.issues.map(iss => ({
|
|
30
|
+
...iss,
|
|
31
|
+
path: iss.path ? [${re(S)}, ...iss.path] : [${re(S)}]
|
|
32
|
+
})));`),_.write(`newResult[${re(S)}] = ${y}.value`)}_.write("payload.value = newResult;"),_.write("return payload;");const K=_.compile();return(S,y)=>K(h,S,y)};let r;const s=ze,i=!jt.jitless,p=i&&jo.value,f=t.catchall;let g;e._zod.parse=(h,_)=>{g??(g=o.value);const k=h.value;if(!s(k))return h.issues.push({expected:"object",code:"invalid_type",input:k,inst:e}),h;const M=[];if(i&&p&&_?.async===!1&&_.jitless!==!0)r||(r=n(t.shape)),h=r(h,_);else{h.value={};const y=g.shape;for(const P of g.keys){const ne=y[P],be=ne._zod.run({value:k[P],issues:[]},_),vt=ne._zod.optin==="optional"&&ne._zod.optout==="optional";be instanceof Promise?M.push(be.then(bt=>vt?yt(bt,h,P,k):we(bt,h,P))):vt?yt(be,h,P,k):we(be,h,P)}}if(!f)return M.length?Promise.all(M).then(()=>h):h;const F=[],oe=g.keySet,K=f._zod,S=K.def.type;for(const y of Object.keys(k)){if(oe.has(y))continue;if(S==="never"){F.push(y);continue}const P=K.run({value:k[y],issues:[]},_);P instanceof Promise?M.push(P.then(ne=>we(ne,h,y))):we(P,h,y)}return F.length&&h.issues.push({code:"unrecognized_keys",keys:F,input:k,inst:e}),M.length?Promise.all(M).then(()=>h):h}});function St(e,t,o,n){for(const r of e)if(r.issues.length===0)return t.value=r.value,t;return t.issues.push({code:"invalid_union",input:t.value,inst:o,errors:e.map(r=>r.issues.map(s=>J(s,n,W())))}),t}const no=d("$ZodUnion",(e,t)=>{R.init(e,t),Z(e._zod,"optin",()=>t.options.some(o=>o._zod.optin==="optional")?"optional":void 0),Z(e._zod,"optout",()=>t.options.some(o=>o._zod.optout==="optional")?"optional":void 0),Z(e._zod,"values",()=>{if(t.options.every(o=>o._zod.values))return new Set(t.options.flatMap(o=>Array.from(o._zod.values)))}),Z(e._zod,"pattern",()=>{if(t.options.every(o=>o._zod.pattern)){const o=t.options.map(n=>n._zod.pattern);return new RegExp(`^(${o.map(n=>Ve(n.source)).join("|")})$`)}}),e._zod.parse=(o,n)=>{let r=!1;const s=[];for(const i of t.options){const u=i._zod.run({value:o.value,issues:[]},n);if(u instanceof Promise)s.push(u),r=!0;else{if(u.issues.length===0)return u;s.push(u)}}return r?Promise.all(s).then(i=>St(i,o,e,n)):St(s,o,e,n)}}),zr=d("$ZodDiscriminatedUnion",(e,t)=>{no.init(e,t);const o=e._zod.parse;Z(e._zod,"propValues",()=>{const r={};for(const s of t.options){const i=s._zod.propValues;if(!i||Object.keys(i).length===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(s)}"`);for(const[u,p]of Object.entries(i)){r[u]||(r[u]=new Set);for(const f of p)r[u].add(f)}}return r});const n=Fe(()=>{const r=t.options,s=new Map;for(const i of r){const u=i._zod.propValues[t.discriminator];if(!u||u.size===0)throw new Error(`Invalid discriminated union option at index "${t.options.indexOf(i)}"`);for(const p of u){if(s.has(p))throw new Error(`Duplicate discriminator value "${String(p)}"`);s.set(p,i)}}return s});e._zod.parse=(r,s)=>{const i=r.value;if(!ze(i))return r.issues.push({code:"invalid_type",expected:"object",input:i,inst:e}),r;const u=n.value.get(i?.[t.discriminator]);return u?u._zod.run(r,s):t.unionFallback?o(r,s):(r.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",input:i,path:[t.discriminator],inst:e}),r)}}),Tr=d("$ZodIntersection",(e,t)=>{R.init(e,t),e._zod.parse=(o,n)=>{const r=o.value,s=t.left._zod.run({value:r,issues:[]},n),i=t.right._zod.run({value:r,issues:[]},n);return s instanceof Promise||i instanceof Promise?Promise.all([s,i]).then(([p,f])=>xt(o,p,f)):xt(o,s,i)}});function De(e,t){if(e===t)return{valid:!0,data:e};if(e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(Te(e)&&Te(t)){const o=Object.keys(t),n=Object.keys(e).filter(s=>o.indexOf(s)!==-1),r={...e,...t};for(const s of n){const i=De(e[s],t[s]);if(!i.valid)return{valid:!1,mergeErrorPath:[s,...i.mergeErrorPath]};r[s]=i.data}return{valid:!0,data:r}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};const o=[];for(let n=0;n<e.length;n++){const r=e[n],s=t[n],i=De(r,s);if(!i.valid)return{valid:!1,mergeErrorPath:[n,...i.mergeErrorPath]};o.push(i.data)}return{valid:!0,data:o}}return{valid:!1,mergeErrorPath:[]}}function xt(e,t,o){if(t.issues.length&&e.issues.push(...t.issues),o.issues.length&&e.issues.push(...o.issues),se(e))return e;const n=De(t.value,o.value);if(!n.valid)throw new Error(`Unmergable intersection. Error path: ${JSON.stringify(n.mergeErrorPath)}`);return e.value=n.data,e}const Ir=d("$ZodRecord",(e,t)=>{R.init(e,t),e._zod.parse=(o,n)=>{const r=o.value;if(!Te(r))return o.issues.push({expected:"record",code:"invalid_type",input:r,inst:e}),o;const s=[];if(t.keyType._zod.values){const i=t.keyType._zod.values;o.value={};for(const p of i)if(typeof p=="string"||typeof p=="number"||typeof p=="symbol"){const f=t.valueType._zod.run({value:r[p],issues:[]},n);f instanceof Promise?s.push(f.then(g=>{g.issues.length&&o.issues.push(...Y(p,g.issues)),o.value[p]=g.value})):(f.issues.length&&o.issues.push(...Y(p,f.issues)),o.value[p]=f.value)}let u;for(const p in r)i.has(p)||(u=u??[],u.push(p));u&&u.length>0&&o.issues.push({code:"unrecognized_keys",input:r,inst:e,keys:u})}else{o.value={};for(const i of Reflect.ownKeys(r)){if(i==="__proto__")continue;const u=t.keyType._zod.run({value:i,issues:[]},n);if(u instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(u.issues.length){o.issues.push({origin:"record",code:"invalid_key",issues:u.issues.map(f=>J(f,n,W())),input:i,path:[i],inst:e}),o.value[u.value]=u.value;continue}const p=t.valueType._zod.run({value:r[i],issues:[]},n);p instanceof Promise?s.push(p.then(f=>{f.issues.length&&o.issues.push(...Y(i,f.issues)),o.value[u.value]=f.value})):(p.issues.length&&o.issues.push(...Y(i,p.issues)),o.value[u.value]=p.value)}}return s.length?Promise.all(s).then(()=>o):o}}),$r=d("$ZodEnum",(e,t)=>{R.init(e,t);const o=Ao(t.entries);e._zod.values=new Set(o),e._zod.pattern=new RegExp(`^(${o.filter(n=>Lo.has(typeof n)).map(n=>typeof n=="string"?ue(n):n.toString()).join("|")})$`),e._zod.parse=(n,r)=>{const s=n.value;return e._zod.values.has(s)||n.issues.push({code:"invalid_value",values:o,input:s,inst:e}),n}}),Rr=d("$ZodLiteral",(e,t)=>{R.init(e,t),e._zod.values=new Set(t.values),e._zod.pattern=new RegExp(`^(${t.values.map(o=>typeof o=="string"?ue(o):o?o.toString():String(o)).join("|")})$`),e._zod.parse=(o,n)=>{const r=o.value;return e._zod.values.has(r)||o.issues.push({code:"invalid_value",values:t.values,input:r,inst:e}),o}}),Zr=d("$ZodTransform",(e,t)=>{R.init(e,t),e._zod.parse=(o,n)=>{const r=t.transform(o.value,o);if(n.async)return(r instanceof Promise?r:Promise.resolve(r)).then(i=>(o.value=i,o));if(r instanceof Promise)throw new ie;return o.value=r,o}}),Pr=d("$ZodOptional",(e,t)=>{R.init(e,t),e._zod.optin="optional",e._zod.optout="optional",Z(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),Z(e._zod,"pattern",()=>{const o=t.innerType._zod.pattern;return o?new RegExp(`^(${Ve(o.source)})?$`):void 0}),e._zod.parse=(o,n)=>t.innerType._zod.optin==="optional"?t.innerType._zod.run(o,n):o.value===void 0?o:t.innerType._zod.run(o,n)}),Er=d("$ZodNullable",(e,t)=>{R.init(e,t),Z(e._zod,"optin",()=>t.innerType._zod.optin),Z(e._zod,"optout",()=>t.innerType._zod.optout),Z(e._zod,"pattern",()=>{const o=t.innerType._zod.pattern;return o?new RegExp(`^(${Ve(o.source)}|null)$`):void 0}),Z(e._zod,"values",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(o,n)=>o.value===null?o:t.innerType._zod.run(o,n)}),Cr=d("$ZodDefault",(e,t)=>{R.init(e,t),e._zod.optin="optional",Z(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(o,n)=>{if(o.value===void 0)return o.value=t.defaultValue,o;const r=t.innerType._zod.run(o,n);return r instanceof Promise?r.then(s=>zt(s,t)):zt(r,t)}});function zt(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}const Nr=d("$ZodPrefault",(e,t)=>{R.init(e,t),e._zod.optin="optional",Z(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(o,n)=>(o.value===void 0&&(o.value=t.defaultValue),t.innerType._zod.run(o,n))}),qr=d("$ZodNonOptional",(e,t)=>{R.init(e,t),Z(e._zod,"values",()=>{const o=t.innerType._zod.values;return o?new Set([...o].filter(n=>n!==void 0)):void 0}),e._zod.parse=(o,n)=>{const r=t.innerType._zod.run(o,n);return r instanceof Promise?r.then(s=>Tt(s,e)):Tt(r,e)}});function Tt(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}const Mr=d("$ZodCatch",(e,t)=>{R.init(e,t),e._zod.optin="optional",Z(e._zod,"optout",()=>t.innerType._zod.optout),Z(e._zod,"values",()=>t.innerType._zod.values),e._zod.parse=(o,n)=>{const r=t.innerType._zod.run(o,n);return r instanceof Promise?r.then(s=>(o.value=s.value,s.issues.length&&(o.value=t.catchValue({...o,error:{issues:s.issues.map(i=>J(i,n,W()))},input:o.value}),o.issues=[]),o)):(o.value=r.value,r.issues.length&&(o.value=t.catchValue({...o,error:{issues:r.issues.map(s=>J(s,n,W()))},input:o.value}),o.issues=[]),o)}}),Or=d("$ZodPipe",(e,t)=>{R.init(e,t),Z(e._zod,"values",()=>t.in._zod.values),Z(e._zod,"optin",()=>t.in._zod.optin),Z(e._zod,"optout",()=>t.out._zod.optout),e._zod.parse=(o,n)=>{const r=t.in._zod.run(o,n);return r instanceof Promise?r.then(s=>It(s,t,n)):It(r,t,n)}});function It(e,t,o){return se(e)?e:t.out._zod.run({value:e.value,issues:e.issues},o)}const Ar=d("$ZodReadonly",(e,t)=>{R.init(e,t),Z(e._zod,"propValues",()=>t.innerType._zod.propValues),Z(e._zod,"values",()=>t.innerType._zod.values),Z(e._zod,"optin",()=>t.innerType._zod.optin),Z(e._zod,"optout",()=>t.innerType._zod.optout),e._zod.parse=(o,n)=>{const r=t.innerType._zod.run(o,n);return r instanceof Promise?r.then($t):$t(r)}});function $t(e){return e.value=Object.freeze(e.value),e}const Ur=d("$ZodCustom",(e,t)=>{j.init(e,t),R.init(e,t),e._zod.parse=(o,n)=>o,e._zod.check=o=>{const n=o.value,r=t.fn(n);if(r instanceof Promise)return r.then(s=>Rt(s,o,n,e));Rt(r,o,n,e)}});function Rt(e,t,o,n){if(!e){const r={code:"custom",input:o,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(r.params=n._zod.def.params),t.issues.push(ae(r))}}class Dr{constructor(){this._map=new Map,this._idmap=new Map}add(t,...o){const n=o[0];if(this._map.set(t,n),n&&typeof n=="object"&&"id"in n){if(this._idmap.has(n.id))throw new Error(`ID ${n.id} already exists in the registry`);this._idmap.set(n.id,t)}return this}clear(){return this._map=new Map,this._idmap=new Map,this}remove(t){const o=this._map.get(t);return o&&typeof o=="object"&&"id"in o&&this._idmap.delete(o.id),this._map.delete(t),this}get(t){const o=t._zod.parent;if(o){const n={...this.get(o)??{}};return delete n.id,{...n,...this._map.get(t)}}return this._map.get(t)}has(t){return this._map.has(t)}}function jr(){return new Dr}const ye=jr();function Lr(e,t){return new e({type:"string",...m(t)})}function Hr(e,t){return new e({type:"string",format:"email",check:"string_format",abort:!1,...m(t)})}function Zt(e,t){return new e({type:"string",format:"guid",check:"string_format",abort:!1,...m(t)})}function Fr(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,...m(t)})}function Br(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...m(t)})}function Vr(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...m(t)})}function Wr(e,t){return new e({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...m(t)})}function Jr(e,t){return new e({type:"string",format:"url",check:"string_format",abort:!1,...m(t)})}function Kr(e,t){return new e({type:"string",format:"emoji",check:"string_format",abort:!1,...m(t)})}function Gr(e,t){return new e({type:"string",format:"nanoid",check:"string_format",abort:!1,...m(t)})}function Qr(e,t){return new e({type:"string",format:"cuid",check:"string_format",abort:!1,...m(t)})}function Yr(e,t){return new e({type:"string",format:"cuid2",check:"string_format",abort:!1,...m(t)})}function Xr(e,t){return new e({type:"string",format:"ulid",check:"string_format",abort:!1,...m(t)})}function es(e,t){return new e({type:"string",format:"xid",check:"string_format",abort:!1,...m(t)})}function ts(e,t){return new e({type:"string",format:"ksuid",check:"string_format",abort:!1,...m(t)})}function os(e,t){return new e({type:"string",format:"ipv4",check:"string_format",abort:!1,...m(t)})}function ns(e,t){return new e({type:"string",format:"ipv6",check:"string_format",abort:!1,...m(t)})}function rs(e,t){return new e({type:"string",format:"cidrv4",check:"string_format",abort:!1,...m(t)})}function ss(e,t){return new e({type:"string",format:"cidrv6",check:"string_format",abort:!1,...m(t)})}function is(e,t){return new e({type:"string",format:"base64",check:"string_format",abort:!1,...m(t)})}function as(e,t){return new e({type:"string",format:"base64url",check:"string_format",abort:!1,...m(t)})}function cs(e,t){return new e({type:"string",format:"e164",check:"string_format",abort:!1,...m(t)})}function us(e,t){return new e({type:"string",format:"jwt",check:"string_format",abort:!1,...m(t)})}function ls(e,t){return new e({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...m(t)})}function ds(e,t){return new e({type:"string",format:"date",check:"string_format",...m(t)})}function ps(e,t){return new e({type:"string",format:"time",check:"string_format",precision:null,...m(t)})}function hs(e,t){return new e({type:"string",format:"duration",check:"string_format",...m(t)})}function ms(e,t){return new e({type:"number",checks:[],...m(t)})}function fs(e,t){return new e({type:"number",check:"number_format",abort:!1,format:"safeint",...m(t)})}function gs(e,t){return new e({type:"boolean",...m(t)})}function _s(e,t){return new e({type:"undefined",...m(t)})}function vs(e,t){return new e({type:"null",...m(t)})}function bs(e){return new e({type:"unknown"})}function ks(e,t){return new e({type:"never",...m(t)})}function Pt(e,t){return new Xt({check:"less_than",...m(t),value:e,inclusive:!1})}function Oe(e,t){return new Xt({check:"less_than",...m(t),value:e,inclusive:!0})}function Et(e,t){return new eo({check:"greater_than",...m(t),value:e,inclusive:!1})}function Ae(e,t){return new eo({check:"greater_than",...m(t),value:e,inclusive:!0})}function Ct(e,t){return new En({check:"multiple_of",...m(t),value:e})}function ro(e,t){return new Nn({check:"max_length",...m(t),maximum:e})}function Ie(e,t){return new qn({check:"min_length",...m(t),minimum:e})}function so(e,t){return new Mn({check:"length_equals",...m(t),length:e})}function ws(e,t){return new On({check:"string_format",format:"regex",...m(t),pattern:e})}function ys(e){return new An({check:"string_format",format:"lowercase",...m(e)})}function Ss(e){return new Un({check:"string_format",format:"uppercase",...m(e)})}function xs(e,t){return new Dn({check:"string_format",format:"includes",...m(t),includes:e})}function zs(e,t){return new jn({check:"string_format",format:"starts_with",...m(t),prefix:e})}function Ts(e,t){return new Ln({check:"string_format",format:"ends_with",...m(t),suffix:e})}function le(e){return new Hn({check:"overwrite",tx:e})}function Is(e){return le(t=>t.normalize(e))}function $s(){return le(e=>e.trim())}function Rs(){return le(e=>e.toLowerCase())}function Zs(){return le(e=>e.toUpperCase())}function Ps(e,t,o){return new e({type:"array",element:t,...m(o)})}function Es(e,t,o){const n=m(o);return n.abort??(n.abort=!0),new e({type:"custom",check:"custom",fn:t,...n})}function Cs(e,t,o){return new e({type:"custom",check:"custom",fn:t,...m(o)})}function Ke(e){return!!e._zod}function io(e,t){return Ke(e)?Wt(e,t):e.safeParse(t)}function Ns(e){if(!e)return;let t;if(Ke(e)?t=e._zod?.def?.shape:t=e.shape,!!t){if(typeof t=="function")try{return t()}catch{return}return t}}function qs(e){if(Ke(e)){const s=e._zod?.def;if(s){if(s.value!==void 0)return s.value;if(Array.isArray(s.values)&&s.values.length>0)return s.values[0]}}const o=e._def;if(o){if(o.value!==void 0)return o.value;if(Array.isArray(o.values)&&o.values.length>0)return o.values[0]}const n=e.value;if(n!==void 0)return n}const Ms=d("ZodISODateTime",(e,t)=>{nr.init(e,t),N.init(e,t)});function ao(e){return ls(Ms,e)}const Os=d("ZodISODate",(e,t)=>{rr.init(e,t),N.init(e,t)});function As(e){return ds(Os,e)}const Us=d("ZodISOTime",(e,t)=>{sr.init(e,t),N.init(e,t)});function Ds(e){return ps(Us,e)}const js=d("ZodISODuration",(e,t)=>{ir.init(e,t),N.init(e,t)});function Ls(e){return hs(js,e)}const Hs=(e,t)=>{Ft.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:o=>Yo(e,o)},flatten:{value:o=>Qo(e,o)},addIssue:{value:o=>e.issues.push(o)},addIssues:{value:o=>e.issues.push(...o)},isEmpty:{get(){return e.issues.length===0}}})},Ee=d("ZodError",Hs,{Parent:Error}),Fs=Xo(Ee),Bs=en(Ee),Vs=Vt(Ee),Ws=Jt(Ee),C=d("ZodType",(e,t)=>(R.init(e,t),e.def=t,Object.defineProperty(e,"_def",{value:t}),e.check=(...o)=>e.clone({...t,checks:[...t.checks??[],...o.map(n=>typeof n=="function"?{_zod:{check:n,def:{check:"custom"},onattach:[]}}:n)]}),e.clone=(o,n)=>X(e,o,n),e.brand=()=>e,e.register=((o,n)=>(o.add(e,n),e)),e.parse=(o,n)=>Fs(e,o,n,{callee:e.parse}),e.safeParse=(o,n)=>Vs(e,o,n),e.parseAsync=async(o,n)=>Bs(e,o,n,{callee:e.parseAsync}),e.safeParseAsync=async(o,n)=>Ws(e,o,n),e.spa=e.safeParseAsync,e.refine=(o,n)=>e.check(Ai(o,n)),e.superRefine=o=>e.check(Ui(o)),e.overwrite=o=>e.check(le(o)),e.optional=()=>q(e),e.nullable=()=>Mt(e),e.nullish=()=>q(Mt(e)),e.nonoptional=o=>Zi(e,o),e.array=()=>v(e),e.or=o=>w([e,o]),e.and=o=>Ge(e,o),e.transform=o=>He(e,fo(o)),e.default=o=>Ii(e,o),e.prefault=o=>Ri(e,o),e.catch=o=>Ei(e,o),e.pipe=o=>He(e,o),e.readonly=()=>qi(e),e.describe=o=>{const n=e.clone();return ye.add(n,{description:o}),n},Object.defineProperty(e,"description",{get(){return ye.get(e)?.description},configurable:!0}),e.meta=(...o)=>{if(o.length===0)return ye.get(e);const n=e.clone();return ye.add(n,o[0]),n},e.isOptional=()=>e.safeParse(void 0).success,e.isNullable=()=>e.safeParse(null).success,e)),co=d("_ZodString",(e,t)=>{Je.init(e,t),C.init(e,t);const o=e._zod.bag;e.format=o.format??null,e.minLength=o.minimum??null,e.maxLength=o.maximum??null,e.regex=(...n)=>e.check(ws(...n)),e.includes=(...n)=>e.check(xs(...n)),e.startsWith=(...n)=>e.check(zs(...n)),e.endsWith=(...n)=>e.check(Ts(...n)),e.min=(...n)=>e.check(Ie(...n)),e.max=(...n)=>e.check(ro(...n)),e.length=(...n)=>e.check(so(...n)),e.nonempty=(...n)=>e.check(Ie(1,...n)),e.lowercase=n=>e.check(ys(n)),e.uppercase=n=>e.check(Ss(n)),e.trim=()=>e.check($s()),e.normalize=(...n)=>e.check(Is(...n)),e.toLowerCase=()=>e.check(Rs()),e.toUpperCase=()=>e.check(Zs())}),Js=d("ZodString",(e,t)=>{Je.init(e,t),co.init(e,t),e.email=o=>e.check(Hr(Ks,o)),e.url=o=>e.check(Jr(Gs,o)),e.jwt=o=>e.check(us(di,o)),e.emoji=o=>e.check(Kr(Qs,o)),e.guid=o=>e.check(Zt(Nt,o)),e.uuid=o=>e.check(Fr(Se,o)),e.uuidv4=o=>e.check(Br(Se,o)),e.uuidv6=o=>e.check(Vr(Se,o)),e.uuidv7=o=>e.check(Wr(Se,o)),e.nanoid=o=>e.check(Gr(Ys,o)),e.guid=o=>e.check(Zt(Nt,o)),e.cuid=o=>e.check(Qr(Xs,o)),e.cuid2=o=>e.check(Yr(ei,o)),e.ulid=o=>e.check(Xr(ti,o)),e.base64=o=>e.check(is(ci,o)),e.base64url=o=>e.check(as(ui,o)),e.xid=o=>e.check(es(oi,o)),e.ksuid=o=>e.check(ts(ni,o)),e.ipv4=o=>e.check(os(ri,o)),e.ipv6=o=>e.check(ns(si,o)),e.cidrv4=o=>e.check(rs(ii,o)),e.cidrv6=o=>e.check(ss(ai,o)),e.e164=o=>e.check(cs(li,o)),e.datetime=o=>e.check(ao(o)),e.date=o=>e.check(As(o)),e.time=o=>e.check(Ds(o)),e.duration=o=>e.check(Ls(o))});function c(e){return Lr(Js,e)}const N=d("ZodStringFormat",(e,t)=>{E.init(e,t),co.init(e,t)}),Ks=d("ZodEmail",(e,t)=>{Jn.init(e,t),N.init(e,t)}),Nt=d("ZodGUID",(e,t)=>{Vn.init(e,t),N.init(e,t)}),Se=d("ZodUUID",(e,t)=>{Wn.init(e,t),N.init(e,t)}),Gs=d("ZodURL",(e,t)=>{Kn.init(e,t),N.init(e,t)}),Qs=d("ZodEmoji",(e,t)=>{Gn.init(e,t),N.init(e,t)}),Ys=d("ZodNanoID",(e,t)=>{Qn.init(e,t),N.init(e,t)}),Xs=d("ZodCUID",(e,t)=>{Yn.init(e,t),N.init(e,t)}),ei=d("ZodCUID2",(e,t)=>{Xn.init(e,t),N.init(e,t)}),ti=d("ZodULID",(e,t)=>{er.init(e,t),N.init(e,t)}),oi=d("ZodXID",(e,t)=>{tr.init(e,t),N.init(e,t)}),ni=d("ZodKSUID",(e,t)=>{or.init(e,t),N.init(e,t)}),ri=d("ZodIPv4",(e,t)=>{ar.init(e,t),N.init(e,t)}),si=d("ZodIPv6",(e,t)=>{cr.init(e,t),N.init(e,t)}),ii=d("ZodCIDRv4",(e,t)=>{ur.init(e,t),N.init(e,t)}),ai=d("ZodCIDRv6",(e,t)=>{lr.init(e,t),N.init(e,t)}),ci=d("ZodBase64",(e,t)=>{dr.init(e,t),N.init(e,t)}),ui=d("ZodBase64URL",(e,t)=>{hr.init(e,t),N.init(e,t)}),li=d("ZodE164",(e,t)=>{mr.init(e,t),N.init(e,t)}),di=d("ZodJWT",(e,t)=>{gr.init(e,t),N.init(e,t)}),uo=d("ZodNumber",(e,t)=>{oo.init(e,t),C.init(e,t),e.gt=(n,r)=>e.check(Et(n,r)),e.gte=(n,r)=>e.check(Ae(n,r)),e.min=(n,r)=>e.check(Ae(n,r)),e.lt=(n,r)=>e.check(Pt(n,r)),e.lte=(n,r)=>e.check(Oe(n,r)),e.max=(n,r)=>e.check(Oe(n,r)),e.int=n=>e.check(qt(n)),e.safe=n=>e.check(qt(n)),e.positive=n=>e.check(Et(0,n)),e.nonnegative=n=>e.check(Ae(0,n)),e.negative=n=>e.check(Pt(0,n)),e.nonpositive=n=>e.check(Oe(0,n)),e.multipleOf=(n,r)=>e.check(Ct(n,r)),e.step=(n,r)=>e.check(Ct(n,r)),e.finite=()=>e;const o=e._zod.bag;e.minValue=Math.max(o.minimum??Number.NEGATIVE_INFINITY,o.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,e.maxValue=Math.min(o.maximum??Number.POSITIVE_INFINITY,o.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,e.isInt=(o.format??"").includes("int")||Number.isSafeInteger(o.multipleOf??.5),e.isFinite=!0,e.format=o.format??null});function b(e){return ms(uo,e)}const pi=d("ZodNumberFormat",(e,t)=>{_r.init(e,t),uo.init(e,t)});function qt(e){return fs(pi,e)}const hi=d("ZodBoolean",(e,t)=>{vr.init(e,t),C.init(e,t)});function $(e){return gs(hi,e)}const mi=d("ZodUndefined",(e,t)=>{br.init(e,t),C.init(e,t)});function je(e){return _s(mi,e)}const fi=d("ZodNull",(e,t)=>{kr.init(e,t),C.init(e,t)});function lo(e){return vs(fi,e)}const gi=d("ZodUnknown",(e,t)=>{wr.init(e,t),C.init(e,t)});function I(){return bs(gi)}const _i=d("ZodNever",(e,t)=>{yr.init(e,t),C.init(e,t)});function vi(e){return ks(_i,e)}const bi=d("ZodArray",(e,t)=>{Sr.init(e,t),C.init(e,t),e.element=t.element,e.min=(o,n)=>e.check(Ie(o,n)),e.nonempty=o=>e.check(Ie(1,o)),e.max=(o,n)=>e.check(ro(o,n)),e.length=(o,n)=>e.check(so(o,n)),e.unwrap=()=>e.element});function v(e,t){return Ps(bi,e,t)}const po=d("ZodObject",(e,t)=>{xr.init(e,t),C.init(e,t),Z(e,"shape",()=>t.shape),e.keyof=()=>L(Object.keys(e._zod.def.shape)),e.catchall=o=>e.clone({...e._zod.def,catchall:o}),e.passthrough=()=>e.clone({...e._zod.def,catchall:I()}),e.loose=()=>e.clone({...e._zod.def,catchall:I()}),e.strict=()=>e.clone({...e._zod.def,catchall:vi()}),e.strip=()=>e.clone({...e._zod.def,catchall:void 0}),e.extend=o=>Wo(e,o),e.merge=o=>Jo(e,o),e.pick=o=>Bo(e,o),e.omit=o=>Vo(e,o),e.partial=(...o)=>Ko(go,e,o[0]),e.required=(...o)=>Go(_o,e,o[0])});function l(e,t){const o={type:"object",get shape(){return Ze(this,"shape",{...e}),this.shape},...m(t)};return new po(o)}function D(e,t){return new po({type:"object",get shape(){return Ze(this,"shape",{...e}),this.shape},catchall:I(),...m(t)})}const ho=d("ZodUnion",(e,t)=>{no.init(e,t),C.init(e,t),e.options=t.options});function w(e,t){return new ho({type:"union",options:e,...m(t)})}const ki=d("ZodDiscriminatedUnion",(e,t)=>{ho.init(e,t),zr.init(e,t)});function mo(e,t,o){return new ki({type:"union",options:t,discriminator:e,...m(o)})}const wi=d("ZodIntersection",(e,t)=>{Tr.init(e,t),C.init(e,t)});function Ge(e,t){return new wi({type:"intersection",left:e,right:t})}const yi=d("ZodRecord",(e,t)=>{Ir.init(e,t),C.init(e,t),e.keyType=t.keyType,e.valueType=t.valueType});function T(e,t,o){return new yi({type:"record",keyType:e,valueType:t,...m(o)})}const Le=d("ZodEnum",(e,t)=>{$r.init(e,t),C.init(e,t),e.enum=t.entries,e.options=Object.values(t.entries);const o=new Set(Object.keys(t.entries));e.extract=(n,r)=>{const s={};for(const i of n)if(o.has(i))s[i]=t.entries[i];else throw new Error(`Key ${i} not found in enum`);return new Le({...t,checks:[],...m(r),entries:s})},e.exclude=(n,r)=>{const s={...t.entries};for(const i of n)if(o.has(i))delete s[i];else throw new Error(`Key ${i} not found in enum`);return new Le({...t,checks:[],...m(r),entries:s})}});function L(e,t){const o=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new Le({type:"enum",entries:o,...m(t)})}const Si=d("ZodLiteral",(e,t)=>{Rr.init(e,t),C.init(e,t),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function a(e,t){return new Si({type:"literal",values:Array.isArray(e)?e:[e],...m(t)})}const xi=d("ZodTransform",(e,t)=>{Zr.init(e,t),C.init(e,t),e._zod.parse=(o,n)=>{o.addIssue=s=>{if(typeof s=="string")o.issues.push(ae(s,o.value,t));else{const i=s;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),i.input??(i.input=o.value),i.inst??(i.inst=e),i.continue??(i.continue=!0),o.issues.push(ae(i))}};const r=t.transform(o.value,o);return r instanceof Promise?r.then(s=>(o.value=s,o)):(o.value=r,o)}});function fo(e){return new xi({type:"transform",transform:e})}const go=d("ZodOptional",(e,t)=>{Pr.init(e,t),C.init(e,t),e.unwrap=()=>e._zod.def.innerType});function q(e){return new go({type:"optional",innerType:e})}const zi=d("ZodNullable",(e,t)=>{Er.init(e,t),C.init(e,t),e.unwrap=()=>e._zod.def.innerType});function Mt(e){return new zi({type:"nullable",innerType:e})}const Ti=d("ZodDefault",(e,t)=>{Cr.init(e,t),C.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function Ii(e,t){return new Ti({type:"default",innerType:e,get defaultValue(){return typeof t=="function"?t():t}})}const $i=d("ZodPrefault",(e,t)=>{Nr.init(e,t),C.init(e,t),e.unwrap=()=>e._zod.def.innerType});function Ri(e,t){return new $i({type:"prefault",innerType:e,get defaultValue(){return typeof t=="function"?t():t}})}const _o=d("ZodNonOptional",(e,t)=>{qr.init(e,t),C.init(e,t),e.unwrap=()=>e._zod.def.innerType});function Zi(e,t){return new _o({type:"nonoptional",innerType:e,...m(t)})}const Pi=d("ZodCatch",(e,t)=>{Mr.init(e,t),C.init(e,t),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function Ei(e,t){return new Pi({type:"catch",innerType:e,catchValue:typeof t=="function"?t:()=>t})}const Ci=d("ZodPipe",(e,t)=>{Or.init(e,t),C.init(e,t),e.in=t.in,e.out=t.out});function He(e,t){return new Ci({type:"pipe",in:e,out:t})}const Ni=d("ZodReadonly",(e,t)=>{Ar.init(e,t),C.init(e,t)});function qi(e){return new Ni({type:"readonly",innerType:e})}const vo=d("ZodCustom",(e,t)=>{Ur.init(e,t),C.init(e,t)});function Mi(e){const t=new j({check:"custom"});return t._zod.check=e,t}function Oi(e,t){return Es(vo,e??(()=>!0),t)}function Ai(e,t={}){return Cs(vo,e,t)}function Ui(e){const t=Mi(o=>(o.addIssue=n=>{if(typeof n=="string")o.issues.push(ae(n,o.value,t._zod.def));else{const r=n;r.fatal&&(r.continue=!1),r.code??(r.code="custom"),r.input??(r.input=o.value),r.inst??(r.inst=t),r.continue??(r.continue=!t._zod.def.abort),o.issues.push(ae(r))}},e(o.value,o)));return t}function bo(e,t){return He(fo(e),t)}const Q="io.modelcontextprotocol/related-task",Ce="2.0",O=Oi(e=>e!==null&&(typeof e=="object"||typeof e=="function")),ko=w([c(),b().int()]),wo=c();D({ttl:w([b(),lo()]).optional(),pollInterval:b().optional()});const Di=l({ttl:b().optional()}),ji=l({taskId:c()}),Qe=D({progressToken:ko.optional(),[Q]:ji.optional()}),H=l({_meta:Qe.optional()}),de=H.extend({task:Di.optional()}),Li=e=>de.safeParse(e).success,A=l({method:c(),params:H.loose().optional()}),B=l({_meta:Qe.optional()}),V=l({method:c(),params:B.loose().optional()}),U=D({_meta:Qe.optional()}),pe=w([c(),b().int()]),yo=l({jsonrpc:a(Ce),id:pe,...A.shape}).strict(),Ot=e=>yo.safeParse(e).success,So=l({jsonrpc:a(Ce),...V.shape}).strict(),Hi=e=>So.safeParse(e).success,Ye=l({jsonrpc:a(Ce),id:pe,result:U}).strict(),xe=e=>Ye.safeParse(e).success;var z;(function(e){e[e.ConnectionClosed=-32e3]="ConnectionClosed",e[e.RequestTimeout=-32001]="RequestTimeout",e[e.ParseError=-32700]="ParseError",e[e.InvalidRequest=-32600]="InvalidRequest",e[e.MethodNotFound=-32601]="MethodNotFound",e[e.InvalidParams=-32602]="InvalidParams",e[e.InternalError=-32603]="InternalError",e[e.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(z||(z={}));const Xe=l({jsonrpc:a(Ce),id:pe.optional(),error:l({code:b().int(),message:c(),data:I().optional()})}).strict(),Fi=e=>Xe.safeParse(e).success,Bi=w([yo,So,Ye,Xe]);w([Ye,Xe]);const et=U.strict(),Vi=B.extend({requestId:pe.optional(),reason:c().optional()}),tt=V.extend({method:a("notifications/cancelled"),params:Vi}),Wi=l({src:c(),mimeType:c().optional(),sizes:v(c()).optional(),theme:L(["light","dark"]).optional()}),he=l({icons:v(Wi).optional()}),ee=l({name:c(),title:c().optional()}),Ne=ee.extend({...ee.shape,...he.shape,version:c(),websiteUrl:c().optional(),description:c().optional()}),Ji=Ge(l({applyDefaults:$().optional()}),T(c(),I())),Ki=bo(e=>e&&typeof e=="object"&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,Ge(l({form:Ji.optional(),url:O.optional()}),T(c(),I()).optional())),Gi=D({list:O.optional(),cancel:O.optional(),requests:D({sampling:D({createMessage:O.optional()}).optional(),elicitation:D({create:O.optional()}).optional()}).optional()}),Qi=D({list:O.optional(),cancel:O.optional(),requests:D({tools:D({call:O.optional()}).optional()}).optional()}),Yi=l({experimental:T(c(),O).optional(),sampling:l({context:O.optional(),tools:O.optional()}).optional(),elicitation:Ki.optional(),roots:l({listChanged:$().optional()}).optional(),tasks:Gi.optional()}),Xi=H.extend({protocolVersion:c(),capabilities:Yi,clientInfo:Ne}),ea=A.extend({method:a("initialize"),params:Xi}),ta=l({experimental:T(c(),O).optional(),logging:O.optional(),completions:O.optional(),prompts:l({listChanged:$().optional()}).optional(),resources:l({subscribe:$().optional(),listChanged:$().optional()}).optional(),tools:l({listChanged:$().optional()}).optional(),tasks:Qi.optional()}),oa=U.extend({protocolVersion:c(),capabilities:ta,serverInfo:Ne,instructions:c().optional()}),na=V.extend({method:a("notifications/initialized"),params:B.optional()}),qe=A.extend({method:a("ping"),params:H.optional()}),ra=l({progress:b(),total:q(b()),message:q(c())}),sa=l({...B.shape,...ra.shape,progressToken:ko}),ot=V.extend({method:a("notifications/progress"),params:sa}),ia=H.extend({cursor:wo.optional()}),me=A.extend({params:ia.optional()}),fe=U.extend({nextCursor:wo.optional()}),aa=L(["working","input_required","completed","failed","cancelled"]),ge=l({taskId:c(),status:aa,ttl:w([b(),lo()]),createdAt:c(),lastUpdatedAt:c(),pollInterval:q(b()),statusMessage:q(c())}),nt=U.extend({task:ge}),ca=B.merge(ge),$e=V.extend({method:a("notifications/tasks/status"),params:ca}),rt=A.extend({method:a("tasks/get"),params:H.extend({taskId:c()})}),st=U.merge(ge),it=A.extend({method:a("tasks/result"),params:H.extend({taskId:c()})});U.loose();const at=me.extend({method:a("tasks/list")}),ct=fe.extend({tasks:v(ge)}),ut=A.extend({method:a("tasks/cancel"),params:H.extend({taskId:c()})}),ua=U.merge(ge),xo=l({uri:c(),mimeType:q(c()),_meta:T(c(),I()).optional()}),zo=xo.extend({text:c()}),lt=c().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:"Invalid Base64 string"}),To=xo.extend({blob:lt}),_e=L(["user","assistant"]),te=l({audience:v(_e).optional(),priority:b().min(0).max(1).optional(),lastModified:ao({offset:!0}).optional()}),Io=l({...ee.shape,...he.shape,uri:c(),description:q(c()),mimeType:q(c()),annotations:te.optional(),_meta:q(D({}))}),la=l({...ee.shape,...he.shape,uriTemplate:c(),description:q(c()),mimeType:q(c()),annotations:te.optional(),_meta:q(D({}))}),da=me.extend({method:a("resources/list")}),$o=fe.extend({resources:v(Io)}),pa=me.extend({method:a("resources/templates/list")}),ha=fe.extend({resourceTemplates:v(la)}),dt=H.extend({uri:c()}),ma=dt,fa=A.extend({method:a("resources/read"),params:ma}),Ro=U.extend({contents:v(w([zo,To]))}),ga=V.extend({method:a("notifications/resources/list_changed"),params:B.optional()}),_a=dt,va=A.extend({method:a("resources/subscribe"),params:_a}),ba=dt,ka=A.extend({method:a("resources/unsubscribe"),params:ba}),wa=B.extend({uri:c()}),ya=V.extend({method:a("notifications/resources/updated"),params:wa}),Sa=l({name:c(),description:q(c()),required:q($())}),xa=l({...ee.shape,...he.shape,description:q(c()),arguments:q(v(Sa)),_meta:q(D({}))}),za=me.extend({method:a("prompts/list")}),Ta=fe.extend({prompts:v(xa)}),Ia=H.extend({name:c(),arguments:T(c(),c()).optional()}),$a=A.extend({method:a("prompts/get"),params:Ia}),pt=l({type:a("text"),text:c(),annotations:te.optional(),_meta:T(c(),I()).optional()}),ht=l({type:a("image"),data:lt,mimeType:c(),annotations:te.optional(),_meta:T(c(),I()).optional()}),mt=l({type:a("audio"),data:lt,mimeType:c(),annotations:te.optional(),_meta:T(c(),I()).optional()}),Ra=l({type:a("tool_use"),name:c(),id:c(),input:T(c(),I()),_meta:T(c(),I()).optional()}),Zo=l({type:a("resource"),resource:w([zo,To]),annotations:te.optional(),_meta:T(c(),I()).optional()}),Po=Io.extend({type:a("resource_link")}),ve=w([pt,ht,mt,Po,Zo]),Za=l({role:_e,content:ve}),Pa=U.extend({description:c().optional(),messages:v(Za)}),Ea=V.extend({method:a("notifications/prompts/list_changed"),params:B.optional()}),Ca=l({title:c().optional(),readOnlyHint:$().optional(),destructiveHint:$().optional(),idempotentHint:$().optional(),openWorldHint:$().optional()}),Na=l({taskSupport:L(["required","optional","forbidden"]).optional()}),ft=l({...ee.shape,...he.shape,description:c().optional(),inputSchema:l({type:a("object"),properties:T(c(),O).optional(),required:v(c()).optional()}).catchall(I()),outputSchema:l({type:a("object"),properties:T(c(),O).optional(),required:v(c()).optional()}).catchall(I()).optional(),annotations:Ca.optional(),execution:Na.optional(),_meta:T(c(),I()).optional()}),Eo=me.extend({method:a("tools/list")}),qa=fe.extend({tools:v(ft)}),Me=U.extend({content:v(ve).default([]),structuredContent:T(c(),I()).optional(),isError:$().optional()});Me.or(U.extend({toolResult:I()}));const Ma=de.extend({name:c(),arguments:T(c(),I()).optional()}),Co=A.extend({method:a("tools/call"),params:Ma}),Oa=V.extend({method:a("notifications/tools/list_changed"),params:B.optional()});l({autoRefresh:$().default(!0),debounceMs:b().int().nonnegative().default(300)});const No=L(["debug","info","notice","warning","error","critical","alert","emergency"]),Aa=H.extend({level:No}),Ua=A.extend({method:a("logging/setLevel"),params:Aa}),Da=B.extend({level:No,logger:c().optional(),data:I()}),ja=V.extend({method:a("notifications/message"),params:Da}),La=l({name:c().optional()}),Ha=l({hints:v(La).optional(),costPriority:b().min(0).max(1).optional(),speedPriority:b().min(0).max(1).optional(),intelligencePriority:b().min(0).max(1).optional()}),Fa=l({mode:L(["auto","required","none"]).optional()}),Ba=l({type:a("tool_result"),toolUseId:c().describe("The unique identifier for the corresponding tool call."),content:v(ve).default([]),structuredContent:l({}).loose().optional(),isError:$().optional(),_meta:T(c(),I()).optional()}),Va=mo("type",[pt,ht,mt]),Re=mo("type",[pt,ht,mt,Ra,Ba]),Wa=l({role:_e,content:w([Re,v(Re)]),_meta:T(c(),I()).optional()}),Ja=de.extend({messages:v(Wa),modelPreferences:Ha.optional(),systemPrompt:c().optional(),includeContext:L(["none","thisServer","allServers"]).optional(),temperature:b().optional(),maxTokens:b().int(),stopSequences:v(c()).optional(),metadata:O.optional(),tools:v(ft).optional(),toolChoice:Fa.optional()}),Ka=A.extend({method:a("sampling/createMessage"),params:Ja}),Ga=U.extend({model:c(),stopReason:q(L(["endTurn","stopSequence","maxTokens"]).or(c())),role:_e,content:Va}),Qa=U.extend({model:c(),stopReason:q(L(["endTurn","stopSequence","maxTokens","toolUse"]).or(c())),role:_e,content:w([Re,v(Re)])}),Ya=l({type:a("boolean"),title:c().optional(),description:c().optional(),default:$().optional()}),Xa=l({type:a("string"),title:c().optional(),description:c().optional(),minLength:b().optional(),maxLength:b().optional(),format:L(["email","uri","date","date-time"]).optional(),default:c().optional()}),ec=l({type:L(["number","integer"]),title:c().optional(),description:c().optional(),minimum:b().optional(),maximum:b().optional(),default:b().optional()}),tc=l({type:a("string"),title:c().optional(),description:c().optional(),enum:v(c()),default:c().optional()}),oc=l({type:a("string"),title:c().optional(),description:c().optional(),oneOf:v(l({const:c(),title:c()})),default:c().optional()}),nc=l({type:a("string"),title:c().optional(),description:c().optional(),enum:v(c()),enumNames:v(c()).optional(),default:c().optional()}),rc=w([tc,oc]),sc=l({type:a("array"),title:c().optional(),description:c().optional(),minItems:b().optional(),maxItems:b().optional(),items:l({type:a("string"),enum:v(c())}),default:v(c()).optional()}),ic=l({type:a("array"),title:c().optional(),description:c().optional(),minItems:b().optional(),maxItems:b().optional(),items:l({anyOf:v(l({const:c(),title:c()}))}),default:v(c()).optional()}),ac=w([sc,ic]),cc=w([nc,rc,ac]),uc=w([cc,Ya,Xa,ec]),lc=de.extend({mode:a("form").optional(),message:c(),requestedSchema:l({type:a("object"),properties:T(c(),uc),required:v(c()).optional()})}),dc=de.extend({mode:a("url"),message:c(),elicitationId:c(),url:c().url()}),pc=w([lc,dc]),hc=A.extend({method:a("elicitation/create"),params:pc}),mc=B.extend({elicitationId:c()}),fc=V.extend({method:a("notifications/elicitation/complete"),params:mc}),gc=U.extend({action:L(["accept","decline","cancel"]),content:bo(e=>e===null?void 0:e,T(c(),w([c(),b(),$(),v(c())])).optional())}),_c=l({type:a("ref/resource"),uri:c()}),vc=l({type:a("ref/prompt"),name:c()}),bc=H.extend({ref:w([vc,_c]),argument:l({name:c(),value:c()}),context:l({arguments:T(c(),c()).optional()}).optional()}),kc=A.extend({method:a("completion/complete"),params:bc}),wc=U.extend({completion:D({values:v(c()).max(100),total:q(b().int()),hasMore:q($())})}),yc=l({uri:c().startsWith("file://"),name:c().optional(),_meta:T(c(),I()).optional()}),Sc=A.extend({method:a("roots/list"),params:H.optional()}),xc=U.extend({roots:v(yc)}),zc=V.extend({method:a("notifications/roots/list_changed"),params:B.optional()});w([qe,ea,kc,Ua,$a,za,da,pa,fa,va,ka,Co,Eo,rt,it,at,ut]);w([tt,ot,na,zc,$e]);w([et,Ga,Qa,gc,xc,st,ct,nt]);w([qe,Ka,hc,Sc,rt,it,at,ut]);w([tt,ot,ja,ya,ga,Oa,Ea,$e,fc]);w([et,oa,wc,Pa,Ta,$o,ha,Ro,Me,qa,st,ct,nt]);class x extends Error{constructor(t,o,n){super(`MCP error ${t}: ${o}`),this.code=t,this.data=n,this.name="McpError"}static fromError(t,o,n){if(t===z.UrlElicitationRequired&&n){const r=n;if(r.elicitations)return new Tc(r.elicitations,o)}return new x(t,o,n)}}class Tc extends x{constructor(t,o=`URL elicitation${t.length>1?"s":""} required`){super(z.UrlElicitationRequired,o,{elicitations:t})}get elicitations(){return this.data?.elicitations??[]}}function G(e){return e==="completed"||e==="failed"||e==="cancelled"}new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function At(e){const o=Ns(e)?.method;if(!o)throw new Error("Schema is missing a method literal");const n=qs(o);if(typeof n!="string")throw new Error("Schema method literal must be a string");return n}function Ut(e,t){const o=io(e,t);if(!o.success)throw o.error;return o.data}const Ic=6e4;class $c{constructor(t){this._options=t,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(tt,o=>{this._oncancel(o)}),this.setNotificationHandler(ot,o=>{this._onprogress(o)}),this.setRequestHandler(qe,o=>({})),this._taskStore=t?.taskStore,this._taskMessageQueue=t?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(rt,async(o,n)=>{const r=await this._taskStore.getTask(o.params.taskId,n.sessionId);if(!r)throw new x(z.InvalidParams,"Failed to retrieve task: Task not found");return{...r}}),this.setRequestHandler(it,async(o,n)=>{const r=async()=>{const s=o.params.taskId;if(this._taskMessageQueue){let u;for(;u=await this._taskMessageQueue.dequeue(s,n.sessionId);){if(u.type==="response"||u.type==="error"){const p=u.message,f=p.id,g=this._requestResolvers.get(f);if(g)if(this._requestResolvers.delete(f),u.type==="response")g(p);else{const h=p,_=new x(h.error.code,h.error.message,h.error.data);g(_)}else{const h=u.type==="response"?"Response":"Error";this._onerror(new Error(`${h} handler missing for request ${f}`))}continue}await this._transport?.send(u.message,{relatedRequestId:n.requestId})}}const i=await this._taskStore.getTask(s,n.sessionId);if(!i)throw new x(z.InvalidParams,`Task not found: ${s}`);if(!G(i.status))return await this._waitForTaskUpdate(s,n.signal),await r();if(G(i.status)){const u=await this._taskStore.getTaskResult(s,n.sessionId);return this._clearTaskQueue(s),{...u,_meta:{...u._meta,[Q]:{taskId:s}}}}return await r()};return await r()}),this.setRequestHandler(at,async(o,n)=>{try{const{tasks:r,nextCursor:s}=await this._taskStore.listTasks(o.params?.cursor,n.sessionId);return{tasks:r,nextCursor:s,_meta:{}}}catch(r){throw new x(z.InvalidParams,`Failed to list tasks: ${r instanceof Error?r.message:String(r)}`)}}),this.setRequestHandler(ut,async(o,n)=>{try{const r=await this._taskStore.getTask(o.params.taskId,n.sessionId);if(!r)throw new x(z.InvalidParams,`Task not found: ${o.params.taskId}`);if(G(r.status))throw new x(z.InvalidParams,`Cannot cancel task in terminal status: ${r.status}`);await this._taskStore.updateTaskStatus(o.params.taskId,"cancelled","Client cancelled task execution.",n.sessionId),this._clearTaskQueue(o.params.taskId);const s=await this._taskStore.getTask(o.params.taskId,n.sessionId);if(!s)throw new x(z.InvalidParams,`Task not found after cancellation: ${o.params.taskId}`);return{_meta:{},...s}}catch(r){throw r instanceof x?r:new x(z.InvalidRequest,`Failed to cancel task: ${r instanceof Error?r.message:String(r)}`)}}))}async _oncancel(t){if(!t.params.requestId)return;this._requestHandlerAbortControllers.get(t.params.requestId)?.abort(t.params.reason)}_setupTimeout(t,o,n,r,s=!1){this._timeoutInfo.set(t,{timeoutId:setTimeout(r,o),startTime:Date.now(),timeout:o,maxTotalTimeout:n,resetTimeoutOnProgress:s,onTimeout:r})}_resetTimeout(t){const o=this._timeoutInfo.get(t);if(!o)return!1;const n=Date.now()-o.startTime;if(o.maxTotalTimeout&&n>=o.maxTotalTimeout)throw this._timeoutInfo.delete(t),x.fromError(z.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:o.maxTotalTimeout,totalElapsed:n});return clearTimeout(o.timeoutId),o.timeoutId=setTimeout(o.onTimeout,o.timeout),!0}_cleanupTimeout(t){const o=this._timeoutInfo.get(t);o&&(clearTimeout(o.timeoutId),this._timeoutInfo.delete(t))}async connect(t){if(this._transport)throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=t;const o=this.transport?.onclose;this._transport.onclose=()=>{o?.(),this._onclose()};const n=this.transport?.onerror;this._transport.onerror=s=>{n?.(s),this._onerror(s)};const r=this._transport?.onmessage;this._transport.onmessage=(s,i)=>{r?.(s,i),xe(s)||Fi(s)?this._onresponse(s):Ot(s)?this._onrequest(s,i):Hi(s)?this._onnotification(s):this._onerror(new Error(`Unknown message type: ${JSON.stringify(s)}`))},await this._transport.start()}_onclose(){const t=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(const n of this._requestHandlerAbortControllers.values())n.abort();this._requestHandlerAbortControllers.clear();const o=x.fromError(z.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(const n of t.values())n(o)}_onerror(t){this.onerror?.(t)}_onnotification(t){const o=this._notificationHandlers.get(t.method)??this.fallbackNotificationHandler;o!==void 0&&Promise.resolve().then(()=>o(t)).catch(n=>this._onerror(new Error(`Uncaught error in notification handler: ${n}`)))}_onrequest(t,o){const n=this._requestHandlers.get(t.method)??this.fallbackRequestHandler,r=this._transport,s=t.params?._meta?.[Q]?.taskId;if(n===void 0){const g={jsonrpc:"2.0",id:t.id,error:{code:z.MethodNotFound,message:"Method not found"}};s&&this._taskMessageQueue?this._enqueueTaskMessage(s,{type:"error",message:g,timestamp:Date.now()},r?.sessionId).catch(h=>this._onerror(new Error(`Failed to enqueue error response: ${h}`))):r?.send(g).catch(h=>this._onerror(new Error(`Failed to send an error response: ${h}`)));return}const i=new AbortController;this._requestHandlerAbortControllers.set(t.id,i);const u=Li(t.params)?t.params.task:void 0,p=this._taskStore?this.requestTaskStore(t,r?.sessionId):void 0,f={signal:i.signal,sessionId:r?.sessionId,_meta:t.params?._meta,sendNotification:async g=>{if(i.signal.aborted)return;const h={relatedRequestId:t.id};s&&(h.relatedTask={taskId:s}),await this.notification(g,h)},sendRequest:async(g,h,_)=>{if(i.signal.aborted)throw new x(z.ConnectionClosed,"Request was cancelled");const k={..._,relatedRequestId:t.id};s&&!k.relatedTask&&(k.relatedTask={taskId:s});const M=k.relatedTask?.taskId??s;return M&&p&&await p.updateTaskStatus(M,"input_required"),await this.request(g,h,k)},authInfo:o?.authInfo,requestId:t.id,requestInfo:o?.requestInfo,taskId:s,taskStore:p,taskRequestedTtl:u?.ttl,closeSSEStream:o?.closeSSEStream,closeStandaloneSSEStream:o?.closeStandaloneSSEStream};Promise.resolve().then(()=>{u&&this.assertTaskHandlerCapability(t.method)}).then(()=>n(t,f)).then(async g=>{if(i.signal.aborted)return;const h={result:g,jsonrpc:"2.0",id:t.id};s&&this._taskMessageQueue?await this._enqueueTaskMessage(s,{type:"response",message:h,timestamp:Date.now()},r?.sessionId):await r?.send(h)},async g=>{if(i.signal.aborted)return;const h={jsonrpc:"2.0",id:t.id,error:{code:Number.isSafeInteger(g.code)?g.code:z.InternalError,message:g.message??"Internal error",...g.data!==void 0&&{data:g.data}}};s&&this._taskMessageQueue?await this._enqueueTaskMessage(s,{type:"error",message:h,timestamp:Date.now()},r?.sessionId):await r?.send(h)}).catch(g=>this._onerror(new Error(`Failed to send response: ${g}`))).finally(()=>{this._requestHandlerAbortControllers.delete(t.id)})}_onprogress(t){const{progressToken:o,...n}=t.params,r=Number(o),s=this._progressHandlers.get(r);if(!s){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(t)}`));return}const i=this._responseHandlers.get(r),u=this._timeoutInfo.get(r);if(u&&i&&u.resetTimeoutOnProgress)try{this._resetTimeout(r)}catch(p){this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),i(p);return}s(n)}_onresponse(t){const o=Number(t.id),n=this._requestResolvers.get(o);if(n){if(this._requestResolvers.delete(o),xe(t))n(t);else{const i=new x(t.error.code,t.error.message,t.error.data);n(i)}return}const r=this._responseHandlers.get(o);if(r===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(t)}`));return}this._responseHandlers.delete(o),this._cleanupTimeout(o);let s=!1;if(xe(t)&&t.result&&typeof t.result=="object"){const i=t.result;if(i.task&&typeof i.task=="object"){const u=i.task;typeof u.taskId=="string"&&(s=!0,this._taskProgressTokens.set(u.taskId,o))}}if(s||this._progressHandlers.delete(o),xe(t))r(t);else{const i=x.fromError(t.error.code,t.error.message,t.error.data);r(i)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(t,o,n){const{task:r}=n??{};if(!r){try{yield{type:"result",result:await this.request(t,o,n)}}catch(i){yield{type:"error",error:i instanceof x?i:new x(z.InternalError,String(i))}}return}let s;try{const i=await this.request(t,nt,n);if(i.task)s=i.task.taskId,yield{type:"taskCreated",task:i.task};else throw new x(z.InternalError,"Task creation did not return a task");for(;;){const u=await this.getTask({taskId:s},n);if(yield{type:"taskStatus",task:u},G(u.status)){u.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:s},o,n)}:u.status==="failed"?yield{type:"error",error:new x(z.InternalError,`Task ${s} failed`)}:u.status==="cancelled"&&(yield{type:"error",error:new x(z.InternalError,`Task ${s} was cancelled`)});return}if(u.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:s},o,n)};return}const p=u.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(f=>setTimeout(f,p)),n?.signal?.throwIfAborted()}}catch(i){yield{type:"error",error:i instanceof x?i:new x(z.InternalError,String(i))}}}request(t,o,n){const{relatedRequestId:r,resumptionToken:s,onresumptiontoken:i,task:u,relatedTask:p}=n??{};return new Promise((f,g)=>{const h=S=>{g(S)};if(!this._transport){h(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(t.method),u&&this.assertTaskCapability(t.method)}catch(S){h(S);return}n?.signal?.throwIfAborted();const _=this._requestMessageId++,k={...t,jsonrpc:"2.0",id:_};n?.onprogress&&(this._progressHandlers.set(_,n.onprogress),k.params={...t.params,_meta:{...t.params?._meta||{},progressToken:_}}),u&&(k.params={...k.params,task:u}),p&&(k.params={...k.params,_meta:{...k.params?._meta||{},[Q]:p}});const M=S=>{this._responseHandlers.delete(_),this._progressHandlers.delete(_),this._cleanupTimeout(_),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:_,reason:String(S)}},{relatedRequestId:r,resumptionToken:s,onresumptiontoken:i}).catch(P=>this._onerror(new Error(`Failed to send cancellation: ${P}`)));const y=S instanceof x?S:new x(z.RequestTimeout,String(S));g(y)};this._responseHandlers.set(_,S=>{if(!n?.signal?.aborted){if(S instanceof Error)return g(S);try{const y=io(o,S.result);y.success?f(y.data):g(y.error)}catch(y){g(y)}}}),n?.signal?.addEventListener("abort",()=>{M(n?.signal?.reason)});const F=n?.timeout??Ic,oe=()=>M(x.fromError(z.RequestTimeout,"Request timed out",{timeout:F}));this._setupTimeout(_,F,n?.maxTotalTimeout,oe,n?.resetTimeoutOnProgress??!1);const K=p?.taskId;if(K){const S=y=>{const P=this._responseHandlers.get(_);P?P(y):this._onerror(new Error(`Response handler missing for side-channeled request ${_}`))};this._requestResolvers.set(_,S),this._enqueueTaskMessage(K,{type:"request",message:k,timestamp:Date.now()}).catch(y=>{this._cleanupTimeout(_),g(y)})}else this._transport.send(k,{relatedRequestId:r,resumptionToken:s,onresumptiontoken:i}).catch(S=>{this._cleanupTimeout(_),g(S)})})}async getTask(t,o){return this.request({method:"tasks/get",params:t},st,o)}async getTaskResult(t,o,n){return this.request({method:"tasks/result",params:t},o,n)}async listTasks(t,o){return this.request({method:"tasks/list",params:t},ct,o)}async cancelTask(t,o){return this.request({method:"tasks/cancel",params:t},ua,o)}async notification(t,o){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(t.method);const n=o?.relatedTask?.taskId;if(n){const u={...t,jsonrpc:"2.0",params:{...t.params,_meta:{...t.params?._meta||{},[Q]:o.relatedTask}}};await this._enqueueTaskMessage(n,{type:"notification",message:u,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(t.method)&&!t.params&&!o?.relatedRequestId&&!o?.relatedTask){if(this._pendingDebouncedNotifications.has(t.method))return;this._pendingDebouncedNotifications.add(t.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(t.method),!this._transport)return;let u={...t,jsonrpc:"2.0"};o?.relatedTask&&(u={...u,params:{...u.params,_meta:{...u.params?._meta||{},[Q]:o.relatedTask}}}),this._transport?.send(u,o).catch(p=>this._onerror(p))});return}let i={...t,jsonrpc:"2.0"};o?.relatedTask&&(i={...i,params:{...i.params,_meta:{...i.params?._meta||{},[Q]:o.relatedTask}}}),await this._transport.send(i,o)}setRequestHandler(t,o){const n=At(t);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(r,s)=>{const i=Ut(t,r);return Promise.resolve(o(i,s))})}removeRequestHandler(t){this._requestHandlers.delete(t)}assertCanSetRequestHandler(t){if(this._requestHandlers.has(t))throw new Error(`A request handler for ${t} already exists, which would be overridden`)}setNotificationHandler(t,o){const n=At(t);this._notificationHandlers.set(n,r=>{const s=Ut(t,r);return Promise.resolve(o(s))})}removeNotificationHandler(t){this._notificationHandlers.delete(t)}_cleanupTaskProgressHandler(t){const o=this._taskProgressTokens.get(t);o!==void 0&&(this._progressHandlers.delete(o),this._taskProgressTokens.delete(t))}async _enqueueTaskMessage(t,o,n){if(!this._taskStore||!this._taskMessageQueue)throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");const r=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(t,o,n,r)}async _clearTaskQueue(t,o){if(this._taskMessageQueue){const n=await this._taskMessageQueue.dequeueAll(t,o);for(const r of n)if(r.type==="request"&&Ot(r.message)){const s=r.message.id,i=this._requestResolvers.get(s);i?(i(new x(z.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(s)):this._onerror(new Error(`Resolver missing for request ${s} during task ${t} cleanup`))}}}async _waitForTaskUpdate(t,o){let n=this._options?.defaultTaskPollInterval??1e3;try{const r=await this._taskStore?.getTask(t);r?.pollInterval&&(n=r.pollInterval)}catch{}return new Promise((r,s)=>{if(o.aborted){s(new x(z.InvalidRequest,"Request cancelled"));return}const i=setTimeout(r,n);o.addEventListener("abort",()=>{clearTimeout(i),s(new x(z.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(t,o){const n=this._taskStore;if(!n)throw new Error("No task store configured");return{createTask:async r=>{if(!t)throw new Error("No request provided");return await n.createTask(r,t.id,{method:t.method,params:t.params},o)},getTask:async r=>{const s=await n.getTask(r,o);if(!s)throw new x(z.InvalidParams,"Failed to retrieve task: Task not found");return s},storeTaskResult:async(r,s,i)=>{await n.storeTaskResult(r,s,i,o);const u=await n.getTask(r,o);if(u){const p=$e.parse({method:"notifications/tasks/status",params:u});await this.notification(p),G(u.status)&&this._cleanupTaskProgressHandler(r)}},getTaskResult:r=>n.getTaskResult(r,o),updateTaskStatus:async(r,s,i)=>{const u=await n.getTask(r,o);if(!u)throw new x(z.InvalidParams,`Task "${r}" not found - it may have been cleaned up`);if(G(u.status))throw new x(z.InvalidParams,`Cannot update task "${r}" from terminal status "${u.status}" to "${s}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(r,s,i,o);const p=await n.getTask(r,o);if(p){const f=$e.parse({method:"notifications/tasks/status",params:p});await this.notification(f),G(p.status)&&this._cleanupTaskProgressHandler(r)}},listTasks:r=>n.listTasks(r,o)}}}var Rc="2026-01-26",Zc="ui/notifications/tool-input-partial";class qo{eventTarget;eventSource;messageListener;constructor(t=window.parent,o){this.eventTarget=t,this.eventSource=o,this.messageListener=n=>{if(o&&n.source!==this.eventSource){console.debug("Ignoring message from unknown source",n);return}let r=Bi.safeParse(n.data);r.success?(console.debug("Parsed message",r.data),this.onmessage?.(r.data)):n.data?.jsonrpc!=="2.0"?console.debug("Ignoring non-JSON-RPC message",r.error.message,n):(console.error("Failed to parse message",r.error.message,n),this.onerror?.(Error("Invalid JSON-RPC message received: "+r.error.message)))}}async start(){window.addEventListener("message",this.messageListener)}async send(t,o){t.method!==Zc&&console.debug("Sending message",t),this.eventTarget.postMessage(t,"*")}async close(){window.removeEventListener("message",this.messageListener),this.onclose?.()}onclose;onerror;onmessage;sessionId;setProtocolVersion}var Pc=w([a("light"),a("dark")]).describe("Color theme preference for the host environment."),ce=w([a("inline"),a("fullscreen"),a("pip")]).describe("Display mode for UI presentation."),Ec=w([a("--color-background-primary"),a("--color-background-secondary"),a("--color-background-tertiary"),a("--color-background-inverse"),a("--color-background-ghost"),a("--color-background-info"),a("--color-background-danger"),a("--color-background-success"),a("--color-background-warning"),a("--color-background-disabled"),a("--color-text-primary"),a("--color-text-secondary"),a("--color-text-tertiary"),a("--color-text-inverse"),a("--color-text-ghost"),a("--color-text-info"),a("--color-text-danger"),a("--color-text-success"),a("--color-text-warning"),a("--color-text-disabled"),a("--color-border-primary"),a("--color-border-secondary"),a("--color-border-tertiary"),a("--color-border-inverse"),a("--color-border-ghost"),a("--color-border-info"),a("--color-border-danger"),a("--color-border-success"),a("--color-border-warning"),a("--color-border-disabled"),a("--color-ring-primary"),a("--color-ring-secondary"),a("--color-ring-inverse"),a("--color-ring-info"),a("--color-ring-danger"),a("--color-ring-success"),a("--color-ring-warning"),a("--font-sans"),a("--font-mono"),a("--font-weight-normal"),a("--font-weight-medium"),a("--font-weight-semibold"),a("--font-weight-bold"),a("--font-text-xs-size"),a("--font-text-sm-size"),a("--font-text-md-size"),a("--font-text-lg-size"),a("--font-heading-xs-size"),a("--font-heading-sm-size"),a("--font-heading-md-size"),a("--font-heading-lg-size"),a("--font-heading-xl-size"),a("--font-heading-2xl-size"),a("--font-heading-3xl-size"),a("--font-text-xs-line-height"),a("--font-text-sm-line-height"),a("--font-text-md-line-height"),a("--font-text-lg-line-height"),a("--font-heading-xs-line-height"),a("--font-heading-sm-line-height"),a("--font-heading-md-line-height"),a("--font-heading-lg-line-height"),a("--font-heading-xl-line-height"),a("--font-heading-2xl-line-height"),a("--font-heading-3xl-line-height"),a("--border-radius-xs"),a("--border-radius-sm"),a("--border-radius-md"),a("--border-radius-lg"),a("--border-radius-xl"),a("--border-radius-full"),a("--border-width-regular"),a("--shadow-hairline"),a("--shadow-sm"),a("--shadow-md"),a("--shadow-lg")]).describe("CSS variable keys available to MCP apps for theming."),Cc=T(Ec.describe(`Style variables for theming MCP apps.
|
|
33
|
+
|
|
34
|
+
Individual style keys are optional - hosts may provide any subset of these values.
|
|
35
|
+
Values are strings containing CSS values (colors, sizes, font stacks, etc.).
|
|
36
|
+
|
|
37
|
+
Note: This type uses \`Record<K, string | undefined>\` rather than \`Partial<Record<K, string>>\`
|
|
38
|
+
for compatibility with Zod schema generation. Both are functionally equivalent for validation.`),w([c(),je()]).describe(`Style variables for theming MCP apps.
|
|
39
|
+
|
|
40
|
+
Individual style keys are optional - hosts may provide any subset of these values.
|
|
41
|
+
Values are strings containing CSS values (colors, sizes, font stacks, etc.).
|
|
42
|
+
|
|
43
|
+
Note: This type uses \`Record<K, string | undefined>\` rather than \`Partial<Record<K, string>>\`
|
|
44
|
+
for compatibility with Zod schema generation. Both are functionally equivalent for validation.`)).describe(`Style variables for theming MCP apps.
|
|
45
|
+
|
|
46
|
+
Individual style keys are optional - hosts may provide any subset of these values.
|
|
47
|
+
Values are strings containing CSS values (colors, sizes, font stacks, etc.).
|
|
48
|
+
|
|
49
|
+
Note: This type uses \`Record<K, string | undefined>\` rather than \`Partial<Record<K, string>>\`
|
|
50
|
+
for compatibility with Zod schema generation. Both are functionally equivalent for validation.`);l({method:a("ui/open-link"),params:l({url:c().describe("URL to open in the host's browser")})});var Nc=l({isError:$().optional().describe("True if the host failed to open the URL (e.g., due to security policy).")}).passthrough(),qc=l({isError:$().optional().describe("True if the download failed (e.g., user cancelled or host denied).")}).passthrough(),Mc=l({isError:$().optional().describe("True if the host rejected or failed to deliver the message.")}).passthrough();l({method:a("ui/notifications/sandbox-proxy-ready"),params:l({})});var gt=l({connectDomains:v(c()).optional().describe(`Origins for network requests (fetch/XHR/WebSocket).
|
|
51
|
+
|
|
52
|
+
- Maps to CSP \`connect-src\` directive
|
|
53
|
+
- Empty or omitted → no network connections (secure default)`),resourceDomains:v(c()).optional().describe("Origins for static resources (images, scripts, stylesheets, fonts, media).\n\n- Maps to CSP `img-src`, `script-src`, `style-src`, `font-src`, `media-src` directives\n- Wildcard subdomains supported: `https://*.example.com`\n- Empty or omitted → no network resources (secure default)"),frameDomains:v(c()).optional().describe("Origins for nested iframes.\n\n- Maps to CSP `frame-src` directive\n- Empty or omitted → no nested iframes allowed (`frame-src 'none'`)"),baseUriDomains:v(c()).optional().describe("Allowed base URIs for the document.\n\n- Maps to CSP `base-uri` directive\n- Empty or omitted → only same origin allowed (`base-uri 'self'`)")}),_t=l({camera:l({}).optional().describe("Request camera access.\n\nMaps to Permission Policy `camera` feature."),microphone:l({}).optional().describe("Request microphone access.\n\nMaps to Permission Policy `microphone` feature."),geolocation:l({}).optional().describe("Request geolocation access.\n\nMaps to Permission Policy `geolocation` feature."),clipboardWrite:l({}).optional().describe("Request clipboard write access.\n\nMaps to Permission Policy `clipboard-write` feature.")});l({method:a("ui/notifications/size-changed"),params:l({width:b().optional().describe("New width in pixels."),height:b().optional().describe("New height in pixels.")})});var Oc=l({method:a("ui/notifications/tool-input"),params:l({arguments:T(c(),I().describe("Complete tool call arguments as key-value pairs.")).optional().describe("Complete tool call arguments as key-value pairs.")})}),Ac=l({method:a("ui/notifications/tool-input-partial"),params:l({arguments:T(c(),I().describe("Partial tool call arguments (incomplete, may change).")).optional().describe("Partial tool call arguments (incomplete, may change).")})}),Uc=l({method:a("ui/notifications/tool-cancelled"),params:l({reason:c().optional().describe('Optional reason for the cancellation (e.g., "user action", "timeout").')})}),Dc=l({fonts:c().optional()}),jc=l({variables:Cc.optional().describe("CSS variables for theming the app."),css:Dc.optional().describe("CSS blocks that apps can inject.")}),Lc=l({method:a("ui/resource-teardown"),params:l({})});T(c(),I());var Dt=l({text:l({}).optional().describe("Host supports text content blocks."),image:l({}).optional().describe("Host supports image content blocks."),audio:l({}).optional().describe("Host supports audio content blocks."),resource:l({}).optional().describe("Host supports resource content blocks."),resourceLink:l({}).optional().describe("Host supports resource link content blocks."),structuredContent:l({}).optional().describe("Host supports structured content.")});l({method:a("ui/notifications/request-teardown"),params:l({}).optional()});var Hc=l({experimental:l({}).optional().describe("Experimental features (structure TBD)."),openLinks:l({}).optional().describe("Host supports opening external URLs."),downloadFile:l({}).optional().describe("Host supports file downloads via ui/download-file."),serverTools:l({listChanged:$().optional().describe("Host supports tools/list_changed notifications.")}).optional().describe("Host can proxy tool calls to the MCP server."),serverResources:l({listChanged:$().optional().describe("Host supports resources/list_changed notifications.")}).optional().describe("Host can proxy resource reads to the MCP server."),logging:l({}).optional().describe("Host accepts log messages."),sandbox:l({permissions:_t.optional().describe("Permissions granted by the host (camera, microphone, geolocation)."),csp:gt.optional().describe("CSP domains approved by the host.")}).optional().describe("Sandbox configuration applied by the host."),updateModelContext:Dt.optional().describe("Host accepts context updates (ui/update-model-context) to be included in the model's context for future turns."),message:Dt.optional().describe("Host supports receiving content messages (ui/message) from the view.")}),Fc=l({experimental:l({}).optional().describe("Experimental features (structure TBD)."),tools:l({listChanged:$().optional().describe("App supports tools/list_changed notifications.")}).optional().describe("App exposes MCP-style tools that the host can call."),availableDisplayModes:v(ce).optional().describe("Display modes the app supports.")});l({method:a("ui/notifications/initialized"),params:l({}).optional()});l({csp:gt.optional().describe("Content Security Policy configuration for UI resources."),permissions:_t.optional().describe("Sandbox permissions requested by the UI resource."),domain:c().optional().describe(`Dedicated origin for view sandbox.
|
|
54
|
+
|
|
55
|
+
Useful when views need stable, dedicated origins for OAuth callbacks, CORS policies, or API key allowlists.
|
|
56
|
+
|
|
57
|
+
**Host-dependent:** The format and validation rules for this field are determined by each host. Servers MUST consult host-specific documentation for the expected domain format. Common patterns include:
|
|
58
|
+
- Hash-based subdomains (e.g., \`{hash}.claudemcpcontent.com\`)
|
|
59
|
+
- URL-derived subdomains (e.g., \`www-example-com.oaiusercontent.com\`)
|
|
60
|
+
|
|
61
|
+
If omitted, host uses default sandbox origin (typically per-conversation).`),prefersBorder:$().optional().describe(`Visual boundary preference - true if view prefers a visible border.
|
|
62
|
+
|
|
63
|
+
Boolean requesting whether a visible border and background is provided by the host. Specifying an explicit value for this is recommended because hosts' defaults may vary.
|
|
64
|
+
|
|
65
|
+
- \`true\`: request visible border + background
|
|
66
|
+
- \`false\`: request no visible border + background
|
|
67
|
+
- omitted: host decides border`)});l({method:a("ui/request-display-mode"),params:l({mode:ce.describe("The display mode being requested.")})});var Bc=l({mode:ce.describe("The display mode that was actually set. May differ from requested if not supported.")}).passthrough(),Vc=w([a("model"),a("app")]).describe("Tool visibility scope - who can access the tool.");l({resourceUri:c().optional(),visibility:v(Vc).optional().describe(`Who can access this tool. Default: ["model", "app"]
|
|
68
|
+
- "model": Tool visible to and callable by the agent
|
|
69
|
+
- "app": Tool callable by the app from this server only`)});l({mimeTypes:v(c()).optional().describe('Array of supported MIME types for UI resources.\nMust include `"text/html;profile=mcp-app"` for MCP Apps support.')});l({method:a("ui/download-file"),params:l({contents:v(w([Zo,Po])).describe("Resource contents to download — embedded (inline data) or linked (host fetches). Uses standard MCP resource types.")})});l({method:a("ui/message"),params:l({role:a("user").describe('Message role, currently only "user" is supported.'),content:v(ve).describe("Message content blocks (text, image, etc.).")})});l({method:a("ui/notifications/sandbox-resource-ready"),params:l({html:c().describe("HTML content to load into the inner iframe."),sandbox:c().optional().describe("Optional override for the inner iframe's sandbox attribute."),csp:gt.optional().describe("CSP configuration from resource metadata."),permissions:_t.optional().describe("Sandbox permissions from resource metadata.")})});var Wc=l({method:a("ui/notifications/tool-result"),params:Me.describe("Standard MCP tool execution result.")}),Mo=l({toolInfo:l({id:pe.optional().describe("JSON-RPC id of the tools/call request."),tool:ft.describe("Tool definition including name, inputSchema, etc.")}).optional().describe("Metadata of the tool call that instantiated this App."),theme:Pc.optional().describe("Current color theme preference."),styles:jc.optional().describe("Style configuration for theming the app."),displayMode:ce.optional().describe("How the UI is currently displayed."),availableDisplayModes:v(ce).optional().describe("Display modes the host supports."),containerDimensions:w([l({height:b().describe("Fixed container height in pixels.")}),l({maxHeight:w([b(),je()]).optional().describe("Maximum container height in pixels.")})]).and(w([l({width:b().describe("Fixed container width in pixels.")}),l({maxWidth:w([b(),je()]).optional().describe("Maximum container width in pixels.")})])).optional().describe(`Container dimensions. Represents the dimensions of the iframe or other
|
|
70
|
+
container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),locale:c().optional().describe("User's language and region preference in BCP 47 format."),timeZone:c().optional().describe("User's timezone in IANA format."),userAgent:c().optional().describe("Host application identifier."),platform:w([a("web"),a("desktop"),a("mobile")]).optional().describe("Platform type for responsive design decisions."),deviceCapabilities:l({touch:$().optional().describe("Whether the device supports touch input."),hover:$().optional().describe("Whether the device supports hover interactions.")}).optional().describe("Device input capabilities."),safeAreaInsets:l({top:b().describe("Top safe area inset in pixels."),right:b().describe("Right safe area inset in pixels."),bottom:b().describe("Bottom safe area inset in pixels."),left:b().describe("Left safe area inset in pixels.")}).optional().describe("Mobile safe area boundaries in pixels.")}).passthrough(),Jc=l({method:a("ui/notifications/host-context-changed"),params:Mo.describe("Partial context update containing only changed fields.")});l({method:a("ui/update-model-context"),params:l({content:v(ve).optional().describe("Context content blocks (text, image, etc.)."),structuredContent:T(c(),I().describe("Structured content for machine-readable context data.")).optional().describe("Structured content for machine-readable context data.")})});l({method:a("ui/initialize"),params:l({appInfo:Ne.describe("App identification (name and version)."),appCapabilities:Fc.describe("Features and capabilities this app provides."),protocolVersion:c().describe("Protocol version this app supports.")})});var Kc=l({protocolVersion:c().describe('Negotiated protocol version string (e.g., "2025-11-21").'),hostInfo:Ne.describe("Host application identification and version."),hostCapabilities:Hc.describe("Features and capabilities provided by the host."),hostContext:Mo.describe("Rich context about the host environment.")}).passthrough();function Gc(e,t=document.documentElement){for(let[o,n]of Object.entries(e))n!==void 0&&t.style.setProperty(o,n)}function Qc(e){if(document.getElementById("__mcp-host-fonts"))return;let t=document.createElement("style");t.id="__mcp-host-fonts",t.textContent=e,document.head.appendChild(t)}class Yc extends $c{_appInfo;_capabilities;options;_hostCapabilities;_hostInfo;_hostContext;constructor(t,o={},n={autoResize:!0}){super(n),this._appInfo=t,this._capabilities=o,this.options=n,this.setRequestHandler(qe,r=>(console.log("Received ping:",r.params),{})),this.onhostcontextchanged=()=>{}}getHostCapabilities(){return this._hostCapabilities}getHostVersion(){return this._hostInfo}getHostContext(){return this._hostContext}set ontoolinput(t){this.setNotificationHandler(Oc,o=>t(o.params))}set ontoolinputpartial(t){this.setNotificationHandler(Ac,o=>t(o.params))}set ontoolresult(t){this.setNotificationHandler(Wc,o=>t(o.params))}set ontoolcancelled(t){this.setNotificationHandler(Uc,o=>t(o.params))}set onhostcontextchanged(t){this.setNotificationHandler(Jc,o=>{this._hostContext={...this._hostContext,...o.params},t(o.params)})}set onteardown(t){this.setRequestHandler(Lc,(o,n)=>t(o.params,n))}set oncalltool(t){this.setRequestHandler(Co,(o,n)=>t(o.params,n))}set onlisttools(t){this.setRequestHandler(Eo,(o,n)=>t(o.params,n))}assertCapabilityForMethod(t){}assertRequestHandlerCapability(t){switch(t){case"tools/call":case"tools/list":if(!this._capabilities.tools)throw Error(`Client does not support tool capability (required for ${t})`);return;case"ping":case"ui/resource-teardown":return;default:throw Error(`No handler for method ${t} registered`)}}assertNotificationCapability(t){}assertTaskCapability(t){throw Error("Tasks are not supported in MCP Apps")}assertTaskHandlerCapability(t){throw Error("Task handlers are not supported in MCP Apps")}async callServerTool(t,o){if(typeof t=="string")throw Error(`callServerTool() expects an object as its first argument, but received a string ("${t}"). Did you mean: callServerTool({ name: "${t}", arguments: { ... } })?`);return await this.request({method:"tools/call",params:t},Me,o)}async readServerResource(t,o){return await this.request({method:"resources/read",params:t},Ro,o)}async listServerResources(t,o){return await this.request({method:"resources/list",params:t},$o,o)}sendMessage(t,o){return this.request({method:"ui/message",params:t},Mc,o)}sendLog(t){return this.notification({method:"notifications/message",params:t})}updateModelContext(t,o){return this.request({method:"ui/update-model-context",params:t},et,o)}openLink(t,o){return this.request({method:"ui/open-link",params:t},Nc,o)}sendOpenLink=this.openLink;downloadFile(t,o){return this.request({method:"ui/download-file",params:t},qc,o)}requestTeardown(t={}){return this.notification({method:"ui/notifications/request-teardown",params:t})}requestDisplayMode(t,o){return this.request({method:"ui/request-display-mode",params:t},Bc,o)}sendSizeChanged(t){return this.notification({method:"ui/notifications/size-changed",params:t})}setupSizeChangedNotifications(){let t=!1,o=0,n=0,r=()=>{t||(t=!0,requestAnimationFrame(()=>{t=!1;let i=document.documentElement,u=i.style.width,p=i.style.height;i.style.width="fit-content",i.style.height="max-content";let f=i.getBoundingClientRect();i.style.width=u,i.style.height=p;let g=window.innerWidth-i.clientWidth,h=Math.ceil(f.width+g),_=Math.ceil(f.height);(h!==o||_!==n)&&(o=h,n=_,this.sendSizeChanged({width:h,height:_}))}))};r();let s=new ResizeObserver(r);return s.observe(document.documentElement),s.observe(document.body),()=>s.disconnect()}async connect(t=new qo(window.parent,window.parent),o){if(this.transport)throw Error("App is already connected. Call close() before connecting again.");await super.connect(t);try{let n=await this.request({method:"ui/initialize",params:{appCapabilities:this._capabilities,appInfo:this._appInfo,protocolVersion:Rc}},Kc,o);if(n===void 0)throw Error(`Server sent invalid initialize result: ${n}`);this._hostCapabilities=n.hostCapabilities,this._hostInfo=n.hostInfo,this._hostContext=n.hostContext,await this.notification({method:"ui/notifications/initialized"}),this.options?.autoResize&&this.setupSizeChangedNotifications()}catch(n){throw this.close(),n}}}async function Xc(e){const t=new Yc({name:e.name,version:e.version});return t.ontoolresult=o=>{try{const n=o.structuredContent;if(n&&typeof n=="object"&&n.status==="success")e.onData(n.data);else if(n&&typeof n=="object"&&n.status==="error"){const r=n.message;Ue(r||"Unknown error"),e.onError?.(r||"Unknown error")}else{const r=o.content?.find(s=>s.type==="text");if(r&&"text"in r){const s=JSON.parse(r.text);s.status==="success"?e.onData(s.data):Ue(s.message||"Unknown error")}}}catch(n){const r=n instanceof Error?n.message:String(n);Ue(`Failed to parse result: ${r}`),e.onError?.(r)}},t.onhostcontextchanged=o=>{if(o.styles?.variables&&Gc(o.styles.variables),o.styles?.css?.fonts&&Qc(o.styles.css.fonts),o.safeAreaInsets){const{top:n,right:r,bottom:s,left:i}=o.safeAreaInsets;document.body.style.padding=`${n}px ${r}px ${s}px ${i}px`}},t.onteardown=async()=>({}),await t.connect(new qo),t}function Ue(e){const t=document.querySelector(".atoms-error");t&&t.remove();const o=document.createElement("div");o.className="atoms-error",o.textContent=e,document.body.prepend(o)}const Oo=document.createElement("style");Oo.textContent=`
|
|
71
|
+
.panel {
|
|
72
|
+
padding: 16px;
|
|
73
|
+
border-bottom: 1px solid var(--border-color);
|
|
74
|
+
}
|
|
75
|
+
.panel-title {
|
|
76
|
+
font-size: 11px;
|
|
77
|
+
font-weight: 600;
|
|
78
|
+
text-transform: uppercase;
|
|
79
|
+
letter-spacing: 0.5px;
|
|
80
|
+
color: var(--text-muted);
|
|
81
|
+
margin-bottom: 12px;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Items table */
|
|
85
|
+
.import-table {
|
|
86
|
+
width: 100%;
|
|
87
|
+
border-collapse: collapse;
|
|
88
|
+
font-size: 12px;
|
|
89
|
+
}
|
|
90
|
+
.import-table th {
|
|
91
|
+
text-align: left;
|
|
92
|
+
padding: 8px 12px;
|
|
93
|
+
font-size: 10px;
|
|
94
|
+
font-weight: 600;
|
|
95
|
+
text-transform: uppercase;
|
|
96
|
+
letter-spacing: 0.5px;
|
|
97
|
+
color: var(--text-muted);
|
|
98
|
+
background: var(--bg-tertiary);
|
|
99
|
+
border-bottom: 1px solid var(--border-color);
|
|
100
|
+
}
|
|
101
|
+
.import-table td {
|
|
102
|
+
padding: 8px 12px;
|
|
103
|
+
border-bottom: 1px solid var(--border-color);
|
|
104
|
+
color: var(--text-primary);
|
|
105
|
+
}
|
|
106
|
+
.import-table tr:last-child td {
|
|
107
|
+
border-bottom: none;
|
|
108
|
+
}
|
|
109
|
+
.import-table tr:hover td {
|
|
110
|
+
background: var(--bg-tertiary);
|
|
111
|
+
}
|
|
112
|
+
.item-id {
|
|
113
|
+
font-family: var(--font-code);
|
|
114
|
+
font-weight: 600;
|
|
115
|
+
color: var(--atoms-purple);
|
|
116
|
+
font-size: 11px;
|
|
117
|
+
}
|
|
118
|
+
.item-type {
|
|
119
|
+
font-size: 10px;
|
|
120
|
+
padding: 2px 6px;
|
|
121
|
+
font-weight: 500;
|
|
122
|
+
}
|
|
123
|
+
.item-type.requirement {
|
|
124
|
+
background: color-mix(in srgb, var(--atoms-purple) 20%, transparent);
|
|
125
|
+
color: var(--atoms-purple);
|
|
126
|
+
}
|
|
127
|
+
.item-type.test-case {
|
|
128
|
+
background: color-mix(in srgb, var(--atoms-green) 20%, transparent);
|
|
129
|
+
color: var(--atoms-green);
|
|
130
|
+
}
|
|
131
|
+
.item-type.note {
|
|
132
|
+
background: color-mix(in srgb, var(--atoms-blue) 20%, transparent);
|
|
133
|
+
color: var(--atoms-blue);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* Errors */
|
|
137
|
+
.error-item {
|
|
138
|
+
display: flex;
|
|
139
|
+
gap: 10px;
|
|
140
|
+
padding: 8px 0;
|
|
141
|
+
border-bottom: 1px solid var(--border-color);
|
|
142
|
+
font-size: 12px;
|
|
143
|
+
}
|
|
144
|
+
.error-item:last-child {
|
|
145
|
+
border-bottom: none;
|
|
146
|
+
}
|
|
147
|
+
.error-index {
|
|
148
|
+
font-family: var(--font-code);
|
|
149
|
+
font-weight: 600;
|
|
150
|
+
color: var(--atoms-red);
|
|
151
|
+
font-size: 11px;
|
|
152
|
+
flex-shrink: 0;
|
|
153
|
+
}
|
|
154
|
+
.error-title {
|
|
155
|
+
color: var(--text-primary);
|
|
156
|
+
flex-shrink: 0;
|
|
157
|
+
max-width: 200px;
|
|
158
|
+
overflow: hidden;
|
|
159
|
+
text-overflow: ellipsis;
|
|
160
|
+
white-space: nowrap;
|
|
161
|
+
}
|
|
162
|
+
.error-msg {
|
|
163
|
+
color: var(--text-muted);
|
|
164
|
+
font-size: 11px;
|
|
165
|
+
flex: 1;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* Success indicator */
|
|
169
|
+
.success-badge {
|
|
170
|
+
display: inline-flex;
|
|
171
|
+
align-items: center;
|
|
172
|
+
gap: 4px;
|
|
173
|
+
font-size: 11px;
|
|
174
|
+
font-weight: 600;
|
|
175
|
+
color: var(--atoms-green);
|
|
176
|
+
}
|
|
177
|
+
.success-badge::before {
|
|
178
|
+
content: '';
|
|
179
|
+
width: 8px;
|
|
180
|
+
height: 8px;
|
|
181
|
+
background: var(--atoms-green);
|
|
182
|
+
border-radius: 50%;
|
|
183
|
+
}
|
|
184
|
+
`;document.head.appendChild(Oo);function eu(e){document.getElementById("loading").style.display="none",document.getElementById("results").style.display="block";const t=e.created+e.errors.length;document.getElementById("stats").textContent=`${e.created}/${t} items created`;const o=document.getElementById("metrics"),n=[{value:t,label:"Total"},{value:e.created,label:"Created"}];if(e.errors.length>0&&n.push({value:e.errors.length,label:"Failed"}),o.innerHTML=n.map(r=>`
|
|
185
|
+
<div class="atoms-metric">
|
|
186
|
+
<div class="value">${r.value}</div>
|
|
187
|
+
<div class="label">${r.label}</div>
|
|
188
|
+
</div>
|
|
189
|
+
`).join(""),e.items.length>0){const r=document.getElementById("items-table");r.innerHTML=`
|
|
190
|
+
<table class="import-table">
|
|
191
|
+
<thead>
|
|
192
|
+
<tr>
|
|
193
|
+
<th>ID</th>
|
|
194
|
+
<th>Type</th>
|
|
195
|
+
<th>Title</th>
|
|
196
|
+
</tr>
|
|
197
|
+
</thead>
|
|
198
|
+
<tbody>
|
|
199
|
+
${e.items.map(s=>`
|
|
200
|
+
<tr>
|
|
201
|
+
<td><span class="item-id">${s.id}</span></td>
|
|
202
|
+
<td><span class="item-type ${s.type}">${s.type}</span></td>
|
|
203
|
+
<td>${s.title}</td>
|
|
204
|
+
</tr>
|
|
205
|
+
`).join("")}
|
|
206
|
+
</tbody>
|
|
207
|
+
</table>
|
|
208
|
+
`}else document.getElementById("items-panel").style.display="none";if(e.errors.length>0){const r=document.getElementById("errors-panel");r.style.display="block";const s=document.getElementById("errors-list");s.innerHTML=e.errors.map(i=>`
|
|
209
|
+
<div class="error-item">
|
|
210
|
+
<span class="error-index">#${i.index+1}</span>
|
|
211
|
+
<span class="error-title" title="${i.title}">${i.title}</span>
|
|
212
|
+
<span class="error-msg">${i.error}</span>
|
|
213
|
+
</div>
|
|
214
|
+
`).join("")}}Xc({name:"ATOMS Bulk Import",version:"1.0.0",onData:e=>eu(e)});</script>
|
|
215
|
+
<style rel="stylesheet" crossorigin>@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap";:root{--atoms-purple: #a855f7;--atoms-purple-light: #c084fc;--atoms-purple-hover: #b975f9;--atoms-green: #22c55e;--atoms-green-light: #4ade80;--atoms-red: #ef4444;--atoms-red-light: #f87171;--atoms-amber: #f59e0b;--atoms-blue: #58a6ff;--bg-primary: var(--color-background-primary, #0c0c0c);--bg-secondary: var(--color-background-secondary, #121212);--bg-tertiary: var(--color-background-tertiary, #181818);--text-primary: var(--color-text-primary, #fafafa);--text-secondary: var(--color-text-secondary, #a0a0a0);--text-muted: var(--color-text-muted, #606060);--border-color: var(--color-border-primary, #252525);--font-main: var(--font-sans, "IBM Plex Sans", sans-serif);--font-code: var(--font-mono, "IBM Plex Mono", monospace)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-main);background:var(--bg-primary);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased}.atoms-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:0;padding:16px}.atoms-header{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border-color);background:var(--bg-secondary)}.atoms-header .logo{width:20px;height:20px;filter:invert(1)}.atoms-header .title{font-size:14px;font-weight:600;color:var(--text-primary)}.atoms-header .subtitle{font-size:12px;color:var(--text-muted);margin-left:auto}.atoms-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:500;font-family:var(--font-main);border:1px solid var(--border-color);border-radius:0;background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;transition:background .1s ease}.atoms-btn:hover{background:var(--bg-tertiary)}.atoms-btn-primary{background:var(--atoms-purple);color:#fff;border-color:var(--atoms-purple)}.atoms-btn-primary:hover{background:var(--atoms-purple-hover)}.atoms-watermark{position:fixed;bottom:8px;right:12px;display:flex;align-items:center;gap:6px;font-size:10px;color:var(--text-muted);opacity:.5;font-family:var(--font-main);pointer-events:none}.atoms-watermark img{width:14px;height:14px;filter:invert(1);opacity:.6}.atoms-loading{display:flex;align-items:center;justify-content:center;min-height:200px;color:var(--text-muted);font-size:13px}.atoms-loading:before{content:"";width:16px;height:16px;border:2px solid var(--border-color);border-top-color:var(--atoms-purple);border-radius:50%;margin-right:10px;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.atoms-error{padding:16px;background:color-mix(in srgb,var(--atoms-red) 10%,var(--bg-primary));border:1px solid var(--atoms-red);color:var(--text-primary);font-size:13px}.atoms-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;padding:16px}.atoms-metric{background:var(--bg-secondary);border:1px solid var(--border-color);padding:12px;text-align:center}.atoms-metric .value{font-size:24px;font-weight:700;color:var(--atoms-purple);font-variant-numeric:tabular-nums}.atoms-metric .label{font-size:11px;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-top:4px}.atoms-toolbar{display:flex;align-items:center;gap:8px;padding:8px 16px;border-bottom:1px solid var(--border-color);background:var(--bg-secondary);flex-wrap:wrap}</style>
|
|
216
|
+
</head>
|
|
217
|
+
<body>
|
|
218
|
+
<div id="app">
|
|
219
|
+
<div class="atoms-header">
|
|
220
|
+
<img class="logo" src="data:image/png;base64,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" alt="ATOMS" />
|
|
221
|
+
<span class="title">Bulk Import Results</span>
|
|
222
|
+
<span class="subtitle" id="stats"></span>
|
|
223
|
+
</div>
|
|
224
|
+
<div class="atoms-loading" id="loading">Processing import...</div>
|
|
225
|
+
<div id="results" style="display:none">
|
|
226
|
+
<div class="atoms-metrics" id="metrics"></div>
|
|
227
|
+
<div class="panel" id="items-panel">
|
|
228
|
+
<div class="panel-title">Created Items</div>
|
|
229
|
+
<div id="items-table"></div>
|
|
230
|
+
</div>
|
|
231
|
+
<div class="panel" id="errors-panel" style="display:none">
|
|
232
|
+
<div class="panel-title">Errors</div>
|
|
233
|
+
<div id="errors-list"></div>
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
<div class="atoms-watermark"><img src="data:image/png;base64,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" alt="" />ATOMS.tech</div>
|
|
237
|
+
</div>
|
|
238
|
+
</body>
|
|
239
|
+
</html>
|