agent-comms 3.27.0 → 3.29.0
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/dist/bridges/user/web/dist/bundle.js +1 -1
- package/dist/bridges/user/web/dist/mesh-worker.js +1 -1
- package/dist/bridges/user/web/dist/sw.js +1 -1
- package/dist/bridges/user/web/frontend/api.d.ts +3 -19
- package/dist/bridges/user/web/frontend/api.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/api.js +2 -62
- package/dist/bridges/user/web/frontend/api.js.map +1 -1
- package/dist/bridges/user/web/frontend/dispatch-action.d.ts +1 -1
- package/dist/bridges/user/web/frontend/dispatch-action.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/dispatch-action.js +26 -0
- package/dist/bridges/user/web/frontend/dispatch-action.js.map +1 -1
- package/dist/bridges/user/web/frontend/main.js +36 -65
- package/dist/bridges/user/web/frontend/main.js.map +1 -1
- package/dist/bridges/user/web/frontend/mesh-client.d.ts +7 -3
- package/dist/bridges/user/web/frontend/mesh-client.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/mesh-client.js +40 -7
- package/dist/bridges/user/web/frontend/mesh-client.js.map +1 -1
- package/dist/bridges/user/web/frontend/mesh-worker.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/mesh-worker.js +6 -7
- package/dist/bridges/user/web/frontend/mesh-worker.js.map +1 -1
- package/dist/bridges/user/web/frontend/state.d.ts +0 -2
- package/dist/bridges/user/web/frontend/state.d.ts.map +1 -1
- package/dist/bridges/user/web/frontend/state.js +0 -5
- package/dist/bridges/user/web/frontend/state.js.map +1 -1
- package/dist/bridges/user/web/frontend/types.d.ts +0 -14
- package/dist/bridges/user/web/frontend/types.d.ts.map +1 -1
- package/dist/bridges/user/web/server.d.ts +4 -19
- package/dist/bridges/user/web/server.d.ts.map +1 -1
- package/dist/bridges/user/web/server.js +13 -201
- package/dist/bridges/user/web/server.js.map +1 -1
- package/dist/bridges/user/web/test/orpc-router.integration.test.d.ts +1 -1
- package/dist/bridges/user/web/test/orpc-router.integration.test.js +4 -4
- package/dist/bridges/user/web/test/orpc-router.integration.test.js.map +1 -1
- package/dist/bridges/user/web/test/web-server.integration.test.js +9 -12
- package/dist/bridges/user/web/test/web-server.integration.test.js.map +1 -1
- package/dist/core/hub-session.d.ts +6 -5
- package/dist/core/hub-session.d.ts.map +1 -1
- package/dist/core/hub-session.js +5 -5
- package/dist/core/hub-session.js.map +1 -1
- package/dist/core/mesh-graph.d.ts +4 -3
- package/dist/core/mesh-graph.d.ts.map +1 -1
- package/dist/core/mesh-graph.js +3 -3
- package/dist/core/mesh-graph.js.map +1 -1
- package/dist/core/room-router.d.ts +9 -4
- package/dist/core/room-router.d.ts.map +1 -1
- package/dist/core/room-router.js +2 -2
- package/dist/core/room-router.js.map +1 -1
- package/dist/test/hub-mode-session.integration.test.js +29 -0
- package/dist/test/hub-mode-session.integration.test.js.map +1 -1
- package/dist/test/hub-session-dispatch.test.js +24 -0
- package/dist/test/hub-session-dispatch.test.js.map +1 -1
- package/dist/test/mesh-graph.test.d.ts +1 -1
- package/dist/test/mesh-graph.test.js +36 -2
- package/dist/test/mesh-graph.test.js.map +1 -1
- package/dist/test/room-router.test.js +42 -0
- package/dist/test/room-router.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -61,4 +61,4 @@ var AgentCommsMeshWorker=(function(e){Object.defineProperty(e,Symbol.toStringTag
|
|
|
61
61
|
|
|
62
62
|
`)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let s=t.compile();return(t,n)=>s(e,t,n)},a,o=pr,s=!tr.jitless,c=s&&mr.value,l=t.catchall,u;e._zod.parse=(d,f)=>{u??=r.value;let p=d.value;return o(p)?s&&c&&f?.async===!1&&f.jitless!==!0?(a||=i(t.shape),d=a(d,f),l?Aa([],p,d,f,u,e):d):n(d,f):(d.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),d)}});function Na(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!Or(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>N(e,r,O())))}),t)}var Pa=D(`$ZodUnion`,(e,t)=>{F.init(e,t),k(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),k(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),k(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),k(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>or(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>Na(t,r,e,i)):Na(o,r,e,i)}}),Fa=D(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,Pa.init(e,t);let n=e._zod.parse;k(e._zod,`propValues`,()=>{let e={};for(let n of t.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(n)}"`);for(let[t,n]of Object.entries(r)){e[t]||(e[t]=new Set);for(let r of n)e[t].add(r)}}return e});let r=ir(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!pr(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback||a.direction===`backward`?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,options:Array.from(r.value.keys()),input:o,path:[t.discriminator],inst:e}),i)}}),Ia=D(`$ZodIntersection`,(e,t)=>{F.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>Ra(e,t,n)):Ra(e,i,a)}});function La(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(hr(e)&&hr(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=La(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=La(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function Ra(e,t,n){let r=new Map,i;for(let n of t.issues)if(n.code===`unrecognized_keys`){i??=n;for(let e of n.keys)r.has(e)||r.set(e,{}),r.get(e).l=!0}else e.issues.push(n);for(let t of n.issues)if(t.code===`unrecognized_keys`)for(let e of t.keys)r.has(e)||r.set(e,{}),r.get(e).r=!0;else e.issues.push(t);let a=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(a.length&&i&&e.issues.push({...i,keys:a}),Or(e))return e;let o=La(t.value,n.value);if(!o.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}var za=D(`$ZodRecord`,(e,t)=>{F.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!hr(i))return n.issues.push({expected:`record`,code:`invalid_type`,input:i,inst:e}),n;let a=[],o=t.keyType._zod.values;if(o){n.value={};let s=new Set;for(let c of o)if(typeof c==`string`||typeof c==`number`||typeof c==`symbol`){s.add(typeof c==`number`?c.toString():c);let o=t.keyType._zod.run({value:c,issues:[]},r);if(o instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(o.issues.length){n.issues.push({code:`invalid_key`,origin:`record`,issues:o.issues.map(e=>N(e,r,O())),input:c,path:[c],inst:e});continue}let l=o.value,u=t.valueType._zod.run({value:i[c],issues:[]},r);u instanceof Promise?a.push(u.then(e=>{e.issues.length&&n.issues.push(...Ar(c,e.issues)),n.value[l]=e.value})):(u.issues.length&&n.issues.push(...Ar(c,u.issues)),n.value[l]=u.value)}let c;for(let e in i)s.has(e)||(c??=[],c.push(e));c&&c.length>0&&n.issues.push({code:`unrecognized_keys`,input:i,inst:e,keys:c})}else{n.value={};for(let o of Reflect.ownKeys(i)){if(o===`__proto__`||!Object.prototype.propertyIsEnumerable.call(i,o))continue;let s=t.keyType._zod.run({value:o,issues:[]},r);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof o==`string`&&Ei.test(o)&&s.issues.length){let e=t.keyType._zod.run({value:Number(o),issues:[]},r);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(s=e)}if(s.issues.length){t.mode===`loose`?n.value[o]=i[o]:n.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>N(e,r,O())),input:o,path:[o],inst:e});continue}let c=t.valueType._zod.run({value:i[o],issues:[]},r);c instanceof Promise?a.push(c.then(e=>{e.issues.length&&n.issues.push(...Ar(o,e.issues)),n.value[s.value]=e.value})):(c.issues.length&&n.issues.push(...Ar(o,c.issues)),n.value[s.value]=c.value)}}return a.length?Promise.all(a).then(()=>n):n}}),Ba=D(`$ZodEnum`,(e,t)=>{F.init(e,t);let n=nr(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=RegExp(`^(${n.filter(e=>_r.has(typeof e)).map(e=>typeof e==`string`?vr(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),Va=D(`$ZodLiteral`,(e,t)=>{if(F.init(e,t),t.values.length===0)throw Error(`Cannot create literal schema with no valid values`);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?vr(e):e?vr(e.toString()):String(e)).join(`|`)})$`),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),Ha=D(`$ZodTransform`,(e,t)=>{F.init(e,t),e._zod.optin=`optional`,e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new er(e.constructor.name);let i=t.transform(n.value,n);if(r.async)return(i instanceof Promise?i:Promise.resolve(i)).then(e=>(n.value=e,n.fallback=!0,n));if(i instanceof Promise)throw new $n;return n.value=i,n.fallback=!0,n}});function Ua(e,t){return t===void 0&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var Wa=D(`$ZodOptional`,(e,t)=>{F.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,k(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),k(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${or(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(t.innerType._zod.optin===`optional`){let r=e.value,i=t.innerType._zod.run(e,n);return i instanceof Promise?i.then(e=>Ua(e,r)):Ua(i,r)}return e.value===void 0?e:t.innerType._zod.run(e,n)}}),Ga=D(`$ZodExactOptional`,(e,t)=>{Wa.init(e,t),k(e._zod,`values`,()=>t.innerType._zod.values),k(e._zod,`pattern`,()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),Ka=D(`$ZodNullable`,(e,t)=>{F.init(e,t),k(e._zod,`optin`,()=>t.innerType._zod.optin),k(e._zod,`optout`,()=>t.innerType._zod.optout),k(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${or(e.source)}|null)$`):void 0}),k(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),qa=D(`$ZodDefault`,(e,t)=>{F.init(e,t),e._zod.optin=`optional`,k(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>Ja(e,t)):Ja(r,t)}});function Ja(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var Ya=D(`$ZodPrefault`,(e,t)=>{F.init(e,t),e._zod.optin=`optional`,k(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),Xa=D(`$ZodNonOptional`,(e,t)=>{F.init(e,t),k(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>Za(t,e)):Za(i,e)}});function Za(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}var Qa=D(`$ZodCatch`,(e,t)=>{F.init(e,t),e._zod.optin=`optional`,k(e._zod,`optout`,()=>t.innerType._zod.optout),k(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>N(e,n,O()))},input:e.value}),e.issues=[],e.fallback=!0),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>N(e,n,O()))},input:e.value}),e.issues=[],e.fallback=!0),e)}}),$a=D(`$ZodPipe`,(e,t)=>{F.init(e,t),k(e._zod,`values`,()=>t.in._zod.values),k(e._zod,`optin`,()=>t.in._zod.optin),k(e._zod,`optout`,()=>t.out._zod.optout),k(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>eo(e,t.in,n)):eo(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>eo(e,t.out,n)):eo(r,t.out,n)}});function eo(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},n)}var to=D(`$ZodReadonly`,(e,t)=>{F.init(e,t),k(e._zod,`propValues`,()=>t.innerType._zod.propValues),k(e._zod,`values`,()=>t.innerType._zod.values),k(e._zod,`optin`,()=>t.innerType?._zod?.optin),k(e._zod,`optout`,()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(no):no(r)}});function no(e){return e.value=Object.freeze(e.value),e}var ro=D(`$ZodCustom`,(e,t)=>{P.init(e,t),F.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>io(t,n,r,e));io(i,n,r,e)}});function io(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(Nr(e))}}var ao,oo=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function so(){return new oo}(ao=globalThis).__zod_globalRegistry??(ao.__zod_globalRegistry=so());var co=globalThis.__zod_globalRegistry;function lo(e,t){return new e({type:`string`,...M(t)})}function uo(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...M(t)})}function fo(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...M(t)})}function po(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...M(t)})}function mo(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...M(t)})}function ho(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...M(t)})}function go(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...M(t)})}function _o(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...M(t)})}function vo(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...M(t)})}function yo(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...M(t)})}function bo(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...M(t)})}function xo(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...M(t)})}function So(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...M(t)})}function Co(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...M(t)})}function wo(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...M(t)})}function To(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...M(t)})}function Eo(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...M(t)})}function Do(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...M(t)})}function Oo(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...M(t)})}function ko(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...M(t)})}function Ao(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...M(t)})}function jo(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...M(t)})}function Mo(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...M(t)})}function No(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...M(t)})}function Po(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...M(t)})}function Fo(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...M(t)})}function Io(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...M(t)})}function Lo(e,t){return new e({type:`number`,checks:[],...M(t)})}function Ro(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...M(t)})}function zo(e,t){return new e({type:`boolean`,...M(t)})}function Bo(e){return new e({type:`unknown`})}function Vo(e,t){return new e({type:`never`,...M(t)})}function Ho(e,t){return new ji({check:`less_than`,...M(t),value:e,inclusive:!1})}function Uo(e,t){return new ji({check:`less_than`,...M(t),value:e,inclusive:!0})}function Wo(e,t){return new Mi({check:`greater_than`,...M(t),value:e,inclusive:!1})}function Go(e,t){return new Mi({check:`greater_than`,...M(t),value:e,inclusive:!0})}function Ko(e,t){return new Ni({check:`multiple_of`,...M(t),value:e})}function qo(e,t){return new Fi({check:`max_length`,...M(t),maximum:e})}function Jo(e,t){return new Ii({check:`min_length`,...M(t),minimum:e})}function Yo(e,t){return new Li({check:`length_equals`,...M(t),length:e})}function Xo(e,t){return new zi({check:`string_format`,format:`regex`,...M(t),pattern:e})}function Zo(e){return new Bi({check:`string_format`,format:`lowercase`,...M(e)})}function Qo(e){return new Vi({check:`string_format`,format:`uppercase`,...M(e)})}function $o(e,t){return new Hi({check:`string_format`,format:`includes`,...M(t),includes:e})}function es(e,t){return new Ui({check:`string_format`,format:`starts_with`,...M(t),prefix:e})}function ts(e,t){return new Wi({check:`string_format`,format:`ends_with`,...M(t),suffix:e})}function ns(e){return new Gi({check:`overwrite`,tx:e})}function rs(e){return ns(t=>t.normalize(e))}function is(){return ns(e=>e.trim())}function as(){return ns(e=>e.toLowerCase())}function os(){return ns(e=>e.toUpperCase())}function ss(){return ns(e=>dr(e))}function cs(e,t,n){return new e({type:`array`,element:t,...M(n)})}function ls(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...M(n)})}function us(e,t){let n=ds(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(Nr(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,r.input??=t.value,r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(Nr(r))}},e(t.value,t)),t);return n}function ds(e,t){let n=new P({check:`custom`,...M(t)});return n._zod.check=e,n}function fs(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??co,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,external:e?.external??void 0}}function L(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o);let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,L(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Object.assign(o.schema,c),t.io===`input`&&R(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function ps(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${a}`}}if(t[1]===n)return{ref:`#`};let i=`#/${r}/`,a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+a}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root>
|
|
63
63
|
|
|
64
|
-
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}}function ms(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Object.assign(i,s),Object.assign(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};for(let t of[...e.seen.entries()].reverse())r(t[0]);let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Object.assign(i,n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,o[e.defId]=e.def)}e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:gs(t,`input`,e.processors),output:gs(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function R(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return R(r.element,n);if(r.type===`set`)return R(r.valueType,n);if(r.type===`lazy`)return R(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`)return R(r.innerType,n);if(r.type===`intersection`)return R(r.left,n)||R(r.right,n);if(r.type===`record`||r.type===`map`)return R(r.keyType,n)||R(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:R(r.in,n)||R(r.out,n);if(r.type===`object`){for(let e in r.shape)if(R(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(R(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(R(e,n))return!0;return!!(r.rest&&R(r.rest,n))}return!1}var hs=(e,t={})=>n=>{let r=fs({...n,processors:t});return L(e,r),ps(r,e),ms(r,e)},gs=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=fs({...i??{},target:a,io:t,processors:n});return L(e,o),ps(o,e),ms(o,e)},_s={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},vs=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=_s[s]??s,i.format===``&&delete i.format,s===`time`&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},ys=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;i.type=typeof s==`string`&&s.includes(`int`)?`integer`:`number`;let d=typeof u==`number`&&u>=(a??-1/0),f=typeof l==`number`&&l<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;d?p?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l:typeof o==`number`&&(i.maximum=o),typeof c==`number`&&(i.multipleOf=c)},bs=(e,t,n,r)=>{n.type=`boolean`},xs=(e,t,n,r)=>{n.not={}},Ss=(e,t,n,r)=>{let i=e._zod.def,a=nr(i.entries);a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},Cs=(e,t,n,r)=>{let i=e._zod.def,a=[];for(let e of i.values)if(e===void 0){if(t.unrepresentable===`throw`)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof e==`bigint`){if(t.unrepresentable===`throw`)throw Error(`BigInt literals cannot be represented in JSON Schema`);a.push(Number(e))}else a.push(e);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},ws=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Custom types cannot be represented in JSON Schema`)},Ts=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Transforms cannot be represented in JSON Schema`)},Es=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=L(a.element,t,{...r,path:[...r.path,`items`]})},Ds=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`,i.properties={};let o=a.shape;for(let e in o)i.properties[e]=L(o[e],t,{...r,path:[...r.path,`properties`,e]});let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e]._zod;return t.io===`input`?n.optin===void 0:n.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=L(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Os=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>L(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},ks=(e,t,n,r)=>{let i=e._zod.def,a=L(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=L(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1;n.allOf=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]]},As=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=o._zod.bag?.patterns;if(a.mode===`loose`&&s&&s.size>0){let e=L(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)i.patternProperties[t.source]=e}else(t.target===`draft-07`||t.target===`draft-2020-12`)&&(i.propertyNames=L(a.keyType,t,{...r,path:[...r.path,`propertyNames`]})),i.additionalProperties=L(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]});let c=o._zod.values;if(c){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e)}},js=(e,t,n,r)=>{let i=e._zod.def,a=L(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Ms=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Ns=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},Ps=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,t.io===`input`&&(n._prefault=JSON.parse(JSON.stringify(i.defaultValue)))},Fs=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{throw Error(`Dynamic catch values are not supported in JSON Schema`)}n.default=o},Is=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;L(o,t,r);let s=t.seen.get(e);s.ref=o},Ls=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Rs=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},zs=D(`ZodISODateTime`,(e,t)=>{oa.init(e,t),H.init(e,t)});function Bs(e){return No(zs,e)}var Vs=D(`ZodISODate`,(e,t)=>{sa.init(e,t),H.init(e,t)});function Hs(e){return Po(Vs,e)}var Us=D(`ZodISOTime`,(e,t)=>{ca.init(e,t),H.init(e,t)});function Ws(e){return Fo(Us,e)}var Gs=D(`ZodISODuration`,(e,t)=>{la.init(e,t),H.init(e,t)});function Ks(e){return Io(Gs,e)}var z=D(`ZodError`,(e,t)=>{Fr.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>Rr(e,t)},flatten:{value:t=>Lr(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,rr,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,rr,2)}},isEmpty:{get(){return e.issues.length===0}}})},{Parent:Error}),qs=zr(z),Js=Br(z),Ys=Vr(z),Xs=Ur(z),Zs=Gr(z),Qs=Kr(z),$s=qr(z),ec=Jr(z),tc=Yr(z),nc=Xr(z),rc=Zr(z),ic=Qr(z),ac=new WeakMap;function oc(e,t,n){let r=Object.getPrototypeOf(e),i=ac.get(r);if(i||(i=new Set,ac.set(r,i)),!i.has(t)){i.add(t);for(let e in n){let t=n[e];Object.defineProperty(r,e,{configurable:!0,enumerable:!1,get(){let n=t.bind(this);return Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:n}),n},set(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:t})}})}}}var B=D(`ZodType`,(e,t)=>(F.init(e,t),Object.assign(e[`~standard`],{jsonSchema:{input:gs(e,`input`),output:gs(e,`output`)}}),e.toJSONSchema=hs(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(t,n)=>qs(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>Ys(e,t,n),e.parseAsync=async(t,n)=>Js(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>Xs(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>Zs(e,t,n),e.decode=(t,n)=>Qs(e,t,n),e.encodeAsync=async(t,n)=>$s(e,t,n),e.decodeAsync=async(t,n)=>ec(e,t,n),e.safeEncode=(t,n)=>tc(e,t,n),e.safeDecode=(t,n)=>nc(e,t,n),e.safeEncodeAsync=async(t,n)=>rc(e,t,n),e.safeDecodeAsync=async(t,n)=>ic(e,t,n),oc(e,`ZodType`,{check(...e){let t=this.def;return this.clone(A(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return j(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(hl(e,t))},superRefine(e,t){return this.check(gl(e,t))},overwrite(e){return this.check(ns(e))},optional(){return Zc(this)},exactOptional(){return $c(this)},nullable(){return tl(this)},nullish(){return Zc(tl(this))},nonoptional(e){return sl(this,e)},array(){return W(this)},or(e){return K([this,e])},and(e){return Uc(this,e)},transform(e){return dl(this,Yc(e))},default(e){return rl(this,e)},prefault(e){return al(this,e)},catch(e){return ll(this,e)},pipe(e){return dl(this,e)},readonly(){return pl(this)},describe(e){let t=this.clone();return co.add(t,{description:e}),t},meta(...e){if(e.length===0)return co.get(this);let t=this.clone();return co.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e){return e(this)}}),Object.defineProperty(e,"description",{get(){return co.get(e)?.description},configurable:!0}),e)),sc=D(`_ZodString`,(e,t)=>{Ji.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vs(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,oc(e,`_ZodString`,{regex(...e){return this.check(Xo(...e))},includes(...e){return this.check($o(...e))},startsWith(...e){return this.check(es(...e))},endsWith(...e){return this.check(ts(...e))},min(...e){return this.check(Jo(...e))},max(...e){return this.check(qo(...e))},length(...e){return this.check(Yo(...e))},nonempty(...e){return this.check(Jo(1,...e))},lowercase(e){return this.check(Zo(e))},uppercase(e){return this.check(Qo(e))},trim(){return this.check(is())},normalize(...e){return this.check(rs(...e))},toLowerCase(){return this.check(as())},toUpperCase(){return this.check(os())},slugify(){return this.check(ss())}})}),cc=D(`ZodString`,(e,t)=>{Ji.init(e,t),sc.init(e,t),e.email=t=>e.check(uo(lc,t)),e.url=t=>e.check(_o(fc,t)),e.jwt=t=>e.check(Mo(Dc,t)),e.emoji=t=>e.check(vo(pc,t)),e.guid=t=>e.check(fo(uc,t)),e.uuid=t=>e.check(po(dc,t)),e.uuidv4=t=>e.check(mo(dc,t)),e.uuidv6=t=>e.check(ho(dc,t)),e.uuidv7=t=>e.check(go(dc,t)),e.nanoid=t=>e.check(yo(mc,t)),e.guid=t=>e.check(fo(uc,t)),e.cuid=t=>e.check(bo(hc,t)),e.cuid2=t=>e.check(xo(gc,t)),e.ulid=t=>e.check(So(_c,t)),e.base64=t=>e.check(ko(wc,t)),e.base64url=t=>e.check(Ao(Tc,t)),e.xid=t=>e.check(Co(vc,t)),e.ksuid=t=>e.check(wo(yc,t)),e.ipv4=t=>e.check(To(bc,t)),e.ipv6=t=>e.check(Eo(xc,t)),e.cidrv4=t=>e.check(Do(Sc,t)),e.cidrv6=t=>e.check(Oo(Cc,t)),e.e164=t=>e.check(jo(Ec,t)),e.datetime=t=>e.check(Bs(t)),e.date=t=>e.check(Hs(t)),e.time=t=>e.check(Ws(t)),e.duration=t=>e.check(Ks(t))});function V(e){return lo(cc,e)}var H=D(`ZodStringFormat`,(e,t)=>{I.init(e,t),sc.init(e,t)}),lc=D(`ZodEmail`,(e,t)=>{Zi.init(e,t),H.init(e,t)}),uc=D(`ZodGUID`,(e,t)=>{Yi.init(e,t),H.init(e,t)}),dc=D(`ZodUUID`,(e,t)=>{Xi.init(e,t),H.init(e,t)}),fc=D(`ZodURL`,(e,t)=>{Qi.init(e,t),H.init(e,t)}),pc=D(`ZodEmoji`,(e,t)=>{$i.init(e,t),H.init(e,t)}),mc=D(`ZodNanoID`,(e,t)=>{ea.init(e,t),H.init(e,t)}),hc=D(`ZodCUID`,(e,t)=>{ta.init(e,t),H.init(e,t)}),gc=D(`ZodCUID2`,(e,t)=>{na.init(e,t),H.init(e,t)}),_c=D(`ZodULID`,(e,t)=>{ra.init(e,t),H.init(e,t)}),vc=D(`ZodXID`,(e,t)=>{ia.init(e,t),H.init(e,t)}),yc=D(`ZodKSUID`,(e,t)=>{aa.init(e,t),H.init(e,t)}),bc=D(`ZodIPv4`,(e,t)=>{ua.init(e,t),H.init(e,t)}),xc=D(`ZodIPv6`,(e,t)=>{da.init(e,t),H.init(e,t)}),Sc=D(`ZodCIDRv4`,(e,t)=>{fa.init(e,t),H.init(e,t)}),Cc=D(`ZodCIDRv6`,(e,t)=>{pa.init(e,t),H.init(e,t)}),wc=D(`ZodBase64`,(e,t)=>{ha.init(e,t),H.init(e,t)}),Tc=D(`ZodBase64URL`,(e,t)=>{_a.init(e,t),H.init(e,t)}),Ec=D(`ZodE164`,(e,t)=>{va.init(e,t),H.init(e,t)}),Dc=D(`ZodJWT`,(e,t)=>{ba.init(e,t),H.init(e,t)}),Oc=D(`ZodNumber`,(e,t)=>{xa.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ys(e,t,n,r),oc(e,`ZodNumber`,{gt(e,t){return this.check(Wo(e,t))},gte(e,t){return this.check(Go(e,t))},min(e,t){return this.check(Go(e,t))},lt(e,t){return this.check(Ho(e,t))},lte(e,t){return this.check(Uo(e,t))},max(e,t){return this.check(Uo(e,t))},int(e){return this.check(Ac(e))},safe(e){return this.check(Ac(e))},positive(e){return this.check(Wo(0,e))},nonnegative(e){return this.check(Go(0,e))},negative(e){return this.check(Ho(0,e))},nonpositive(e){return this.check(Uo(0,e))},multipleOf(e,t){return this.check(Ko(e,t))},step(e,t){return this.check(Ko(e,t))},finite(){return this}});let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null});function U(e){return Lo(Oc,e)}var kc=D(`ZodNumberFormat`,(e,t)=>{Sa.init(e,t),Oc.init(e,t)});function Ac(e){return Ro(kc,e)}var jc=D(`ZodBoolean`,(e,t)=>{Ca.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bs(e,t,n,r)});function Mc(e){return zo(jc,e)}var Nc=D(`ZodUnknown`,(e,t)=>{wa.init(e,t),B.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function Pc(){return Bo(Nc)}var Fc=D(`ZodNever`,(e,t)=>{Ta.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xs(e,t,n,r)});function Ic(e){return Vo(Fc,e)}var Lc=D(`ZodArray`,(e,t)=>{Da.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Es(e,t,n,r),e.element=t.element,oc(e,`ZodArray`,{min(e,t){return this.check(Jo(e,t))},nonempty(e){return this.check(Jo(1,e))},max(e,t){return this.check(qo(e,t))},length(e,t){return this.check(Yo(e,t))},unwrap(){return this.element}})});function W(e,t){return cs(Lc,e,t)}var Rc=D(`ZodObject`,(e,t)=>{Ma.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ds(e,t,n,r),k(e,`shape`,()=>t.shape),oc(e,`ZodObject`,{keyof(){return Kc(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:Pc()})},loose(){return this.clone({...this._zod.def,catchall:Pc()})},strict(){return this.clone({...this._zod.def,catchall:Ic()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return Cr(this,e)},safeExtend(e){return wr(this,e)},merge(e){return Tr(this,e)},pick(e){return xr(this,e)},omit(e){return Sr(this,e)},partial(...e){return Er(Xc,this,e[0])},required(...e){return Dr(ol,this,e[0])}})});function G(e,t){return new Rc({type:`object`,shape:e??{},...M(t)})}var zc=D(`ZodUnion`,(e,t)=>{Pa.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Os(e,t,n,r),e.options=t.options});function K(e,t){return new zc({type:`union`,options:e,...M(t)})}var Bc=D(`ZodDiscriminatedUnion`,(e,t)=>{zc.init(e,t),Fa.init(e,t)});function Vc(e,t,n){return new Bc({type:`union`,options:t,discriminator:e,...M(n)})}var Hc=D(`ZodIntersection`,(e,t)=>{Ia.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ks(e,t,n,r)});function Uc(e,t){return new Hc({type:`intersection`,left:e,right:t})}var Wc=D(`ZodRecord`,(e,t)=>{za.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>As(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function q(e,t,n){return!t||!t._zod?new Wc({type:`record`,keyType:V(),valueType:e,...M(t)}):new Wc({type:`record`,keyType:e,valueType:t,...M(n)})}var Gc=D(`ZodEnum`,(e,t)=>{Ba.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ss(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new Gc({...t,checks:[],...M(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new Gc({...t,checks:[],...M(r),entries:i})}});function Kc(e,t){return new Gc({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...M(t)})}var qc=D(`ZodLiteral`,(e,t)=>{Va.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Cs(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function J(e,t){return new qc({type:`literal`,values:Array.isArray(e)?e:[e],...M(t)})}var Jc=D(`ZodTransform`,(e,t)=>{Ha.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ts(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new er(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(Nr(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,n.issues.push(Nr(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n.fallback=!0,n)):(n.value=i,n.fallback=!0,n)}});function Yc(e){return new Jc({type:`transform`,transform:e})}var Xc=D(`ZodOptional`,(e,t)=>{Wa.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Rs(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Zc(e){return new Xc({type:`optional`,innerType:e})}var Qc=D(`ZodExactOptional`,(e,t)=>{Ga.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Rs(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function $c(e){return new Qc({type:`optional`,innerType:e})}var el=D(`ZodNullable`,(e,t)=>{Ka.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>js(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function tl(e){return new el({type:`nullable`,innerType:e})}var nl=D(`ZodDefault`,(e,t)=>{qa.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ns(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function rl(e,t){return new nl({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():gr(t)}})}var il=D(`ZodPrefault`,(e,t)=>{Ya.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ps(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function al(e,t){return new il({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():gr(t)}})}var ol=D(`ZodNonOptional`,(e,t)=>{Xa.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ms(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function sl(e,t){return new ol({type:`nonoptional`,innerType:e,...M(t)})}var cl=D(`ZodCatch`,(e,t)=>{Qa.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Fs(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function ll(e,t){return new cl({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}var ul=D(`ZodPipe`,(e,t)=>{$a.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Is(e,t,n,r),e.in=t.in,e.out=t.out});function dl(e,t){return new ul({type:`pipe`,in:e,out:t})}var fl=D(`ZodReadonly`,(e,t)=>{to.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ls(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function pl(e){return new fl({type:`readonly`,innerType:e})}var ml=D(`ZodCustom`,(e,t)=>{ro.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ws(e,t,n,r)});function hl(e,t={}){return ls(ml,e,t)}function gl(e,t){return us(e,t)}function _l(e){return`is`in e&&typeof e.is==`function`}function Y(e){if(Object.defineProperty(e,"is",{value:t=>e.safeParse(t).success,enumerable:!0}),!_l(e))throw Error(`unreachable: is was just defined above`);return e}var vl=Y(K([J(`discoverable`),J(`quiet`),J(`dark`)])),yl=Y(K([J(`visible`),J(`hidden`),J(`ghost`)])),bl=Y(K([J(`active`),J(`idle`),J(`busy`),J(`offline`)])),xl=Y(K([J(`public`),J(`private`),J(`secret`)])),Sl=Y(K([J(`steer`),J(`followUp`),J(`info`)])),Cl=Y(G({id:V(),version:U(),name:V(),harness:V(),cwd:V(),pid:U(),startedAt:V(),visibility:yl,status:bl,tags:W(V()),subscribedRooms:W(V())})),wl=Y(G({id:V(),version:U(),name:V(),type:xl,owner:V(),createdAt:V(),description:V(),members:W(V()),invited:W(V()),memberJoins:q(V(),U()),memberLeaves:q(V(),U()),invitedJoins:q(V(),U()),invitedLeaves:q(V(),U())})),Tl=Y(G({id:V(),from:V(),room:V(),content:V(),timestamp:V(),replyTo:V().optional(),readBy:W(V()),streamingBehavior:Sl.optional()})),El=Y(G({id:V(),from:V(),to:V(),content:V(),timestamp:V(),readBy:W(V()),streamingBehavior:Sl.optional()})),Dl=Y(K([J(`delivered`),J(`read`)])),Ol=Y(G({id:V(),name:V(),status:bl})),kl=Y(Vc(`type`,[G({type:J(`room_message`),message:Tl}),G({type:J(`dm`),message:El}),G({type:J(`room_invite`),room:V(),roomDescription:V(),from:V(),fromName:V(),fromCwd:V()}),G({type:J(`member_joined`),room:V(),agent:V()}),G({type:J(`member_left`),room:V(),agent:V()}),G({type:J(`room_members`),room:V(),members:W(Ol)}),G({type:J(`member_status`),room:V(),agent:V(),status:bl}),G({type:J(`delivery_status`),messageId:V(),agent:V(),status:Dl,room:V().optional()}),G({type:J(`invite_declined`),room:V(),agent:V(),agentName:V(),reason:V()}),G({type:J(`name_changed`),agent:V(),oldName:V(),newName:V()}),G({type:J(`connection_request`),connectionId:V(),peerId:V(),dataPort:U(),name:V(),fingerprint:V()}),G({type:J(`capability_request`),requestId:V(),capability:V(),scopeKind:V(),scopePath:V().optional(),requesterDevice:V()})]));Y(G({code:V(),expiresAt:V(),deviceId:V(),signature:V().optional()})),Y(Vc(`action`,[G({action:J(`register`),name:V(),visibility:yl,tags:W(V())}),G({action:J(`update`),visibility:yl.optional(),status:bl.optional(),name:V().optional(),tags:W(V()).optional()}),G({action:J(`whoami`)}),G({action:J(`web_url`)}),G({action:J(`create_room`),name:V(),type:xl,description:V()}),G({action:J(`list_rooms`)}),G({action:J(`join_room`),room:V()}),G({action:J(`leave_room`),room:V()}),G({action:J(`send`),target:V(),content:V(),replyTo:V().optional(),streamingBehavior:Sl.optional()}),G({action:J(`dm`),target:V(),content:V(),streamingBehavior:Sl.optional()}),G({action:J(`list_agents`)}),G({action:J(`read_room`),room:V(),since:V().optional()}),G({action:J(`invite`),room:V(),agent:V()}),G({action:J(`kick`),room:V(),agent:V()}),G({action:J(`decline_invite`),room:V(),reason:V()}),G({action:J(`destroy_room`),room:V()}),G({action:J(`mesh_connect`),host:V(),port:U(),policy:V().optional()}),G({action:J(`mesh_accept`),connectionId:V()}),G({action:J(`mesh_reject`),connectionId:V(),reason:V()}),G({action:J(`mesh_pending`)}),G({action:J(`room_accept`),room:V(),requesterId:V()}),G({action:J(`room_reject`),room:V(),requesterId:V(),reason:V().optional()}),G({action:J(`room_pending`)}),G({action:J(`capability_accept`),requestId:V(),expires:U(),delegationsRemaining:U().optional(),capability:V().optional()}),G({action:J(`capability_reject`),requestId:V(),reason:V().optional()}),G({action:J(`capability_pending`)}),G({action:J(`mesh_discover`),method:V().optional()}),G({action:J(`mesh_advertise`),method:V(),name:V(),port:U().optional(),adapter:V().optional()}),G({action:J(`mesh_unadvertise`),id:V()}),G({action:J(`mesh_interfaces`)}),G({action:J(`mesh_listen`),host:V(),port:U().optional(),policy:V().optional()}),G({action:J(`mesh_unlisten`),id:V()}),G({action:J(`mesh_listeners`)}),G({action:J(`mesh_set_visibility`),visibility:vl,adapter:V().optional()}),G({action:J(`mesh_get_visibility`)}),G({action:J(`gateway_trust`),device:V(),principal:Mc().optional()}),G({action:J(`gateway_untrust`),device:V(),principal:Mc().optional()}),G({action:J(`gateway_list_trusted`)}),G({action:J(`gateway_generate_connection_code`),ttlMs:U().optional(),privateKey:V().optional(),passphrase:V().optional()}),G({action:J(`gateway_redeem_connection_code`),code:V(),expiresAt:V(),device:V(),signature:V().optional(),publicKey:V().optional(),fingerprint:V().optional()}),G({action:J(`query_version`),device:V()}),G({action:J(`mesh_graph`)}),G({action:J(`mesh_trace`),target:V(),timeoutMs:U().optional()})]));var X=G({content:V(),isError:Mc()}),Al=K([J(`public`),J(`private`),J(`secret`)]),jl=Vc(`type`,[G({type:J(`agent_upsert`),agent:Cl}),G({type:J(`agent_offline`),agentId:V()}),G({type:J(`room_upsert`),room:wl}),G({type:J(`room_delete`),roomId:V()}),G({type:J(`message_add`),roomId:V(),message:Tl}),G({type:J(`dm_add`),key:V(),message:El}),G({type:J(`delivery`),agentId:V(),event:kl})]),Ml=G({agents:q(V(),Cl),rooms:q(V(),wl),messages:q(V(),W(Tl)),dms:q(V(),W(El))}),Nl=Vc(`kind`,[G({kind:J(`state_sync`),state:Ml}),G({kind:J(`state_patch`),patch:jl}),G({kind:J(`delivery`),event:kl})]),Pl=G({endpoint:V(),keys:G({p256dh:V(),auth:V()})}),Fl={send:C.input(G({target:V(),content:V()})).output(X),dm:C.input(G({target:V(),content:V()})).output(X),joinRoom:C.input(G({room:V()})).output(X),leaveRoom:C.input(G({room:V().optional()})).output(X),createRoom:C.input(G({name:V(),type:Al,description:V().optional()})).output(X),listRooms:C.input(G({})).output(X),listAgents:C.input(G({})).output(X),readRoom:C.input(G({room:V().optional()})).output(X),destroyRoom:C.input(G({room:V()})).output(X),invite:C.input(G({room:V(),agent:V()})).output(X),declineInvite:C.input(G({room:V(),reason:V()})).output(X),kick:C.input(G({room:V(),agent:V()})).output(X),renameAgent:C.input(G({agent:V(),name:V()})).output(X),pushSubscribe:C.input(G({subscription:Pl,agentId:V().optional()})).output(X),pushUnsubscribe:C.input(G({agentId:V().optional()})).output(X),subscribeEvents:C.input(G({lastEventId:V().optional()})).output(mn(Nl)),disconnect:C.input(G({})).output(G({}))};async function Il(e,t){let n=e=>{let n=t[e];return typeof n==`string`?n:``},r=e=>{let n=t[e];return typeof n==`string`?n:void 0},i=()=>{let e=t.type;return e===`public`||e===`private`||e===`secret`?e:`public`};switch(t.action){case`send`:return e.send({target:n(`target`),content:n(`content`)});case`dm`:return e.dm({target:n(`target`),content:n(`content`)});case`join_room`:return e.joinRoom({room:n(`room`)});case`leave_room`:return e.leaveRoom({room:r(`room`)});case`create_room`:return e.createRoom({name:n(`name`),type:i(),description:r(`description`)});case`list_rooms`:return e.listRooms({});case`list_agents`:return e.listAgents({});case`read_room`:return e.readRoom({room:r(`room`)});case`destroy_room`:return e.destroyRoom({room:n(`room`)});case`invite`:return e.invite({room:n(`room`),agent:n(`agent`)});case`decline_invite`:return e.declineInvite({room:n(`room`),reason:n(`reason`)});case`kick`:return e.kick({room:n(`room`),agent:n(`agent`)});case`rename_agent`:return e.renameAgent({agent:n(`agent`),name:n(`name`)});default:return{content:`Unknown action: ${String(t.action)}`,isError:!0}}}var Z=new Map,Ll=new Map,Rl=new Map,zl=new Map;function Bl(e){for(let[t,n]of Object.entries(e.agents))Z.set(t,n);for(let[t,n]of Object.entries(e.rooms))Ll.set(t,n);for(let[t,n]of Object.entries(e.messages))Rl.set(t,n);for(let[t,n]of Object.entries(e.dms))zl.set(t,n)}function Vl(e){switch(e.type){case`agent_upsert`:Z.set(e.agent.id,e.agent);break;case`agent_offline`:{let t=Z.get(e.agentId);t&&(t.status=`offline`,Z.set(e.agentId,t));break}case`room_upsert`:Ll.set(e.room.id,e.room);break;case`room_delete`:Ll.delete(e.roomId);break;case`message_add`:{let t=Rl.get(e.roomId)??[];t.push(e.message),Rl.set(e.roomId,t);break}case`dm_add`:{let t=zl.get(e.key)??[];t.push(e.message),zl.set(e.key,t);break}case`delivery`:break;case`message_read`:if(e.room!==void 0){let t=Rl.get(e.room);if(t){let n=t.find(t=>t.id===e.messageId);n&&!n.readBy.includes(e.readBy)&&n.readBy.push(e.readBy)}}else for(let[,t]of zl){let n=t.find(t=>t.id===e.messageId);n&&!n.readBy.includes(e.readBy)&&n.readBy.push(e.readBy)}}}function Hl(){return{agents:[...Z.values()],rooms:[...Ll.values()]}}var Ul,Wl=0,Gl=new Zn;function Kl(e){return e.replace(/\/ws\/mesh$/,`/ws/mesh-orpc`)}var ql=1e3,Jl=3e4;function Yl(e){let t=Kl(e),n=wt(new rn({connect:async()=>{let e=new WebSocket(t);return e.addEventListener(`open`,()=>{Ql({type:`connected`})}),e.addEventListener(`close`,()=>{Ql({type:`disconnected`})}),new Promise((t,n)=>{e.addEventListener(`open`,()=>{t(e)},{once:!0}),e.addEventListener(`error`,n,{once:!0})})},reconnect:{enabled:!0,delay:e=>Math.min(ql*2**e.attempt,Jl)},plugins:[new an]}));Ul=n,Xl(n,++Wl)}async function Xl(e,t){let n;for(;t===Wl;)try{let r=await e.subscribeEvents(n===void 0?{}:{lastEventId:n});for await(let e of r){if(t!==Wl)return;let r=Je(e);switch(r?.id!==void 0&&(n=r.id),Gl.publish(e),e.kind){case`state_sync`:Bl(e.state),Ql({type:`state`,state:Hl()});break;case`state_patch`:Vl(e.patch),Ql({type:`patch`,patch:e.patch})}}return}catch{}}var Zl=new Set;function Ql(e){let t=JSON.stringify(e);for(let e of Zl)try{e.postMessage(t)}catch{}}function $l(e){switch(e.type){case`init`:Yl(e.url);break;case`action`:{let t=Ul;if(!t)break;let n=e.id;Il(t,e.action).then(e=>{Ql({type:`actionResult`,id:n,result:e})}).catch(e=>{Ql({type:`actionError`,id:n,message:e instanceof Error?e.message:String(e)})});break}case`getState`:Ql({type:`state`,state:Hl()})}}function eu(e){if(typeof e!=`object`||!e||!(`type`in e))return!1;let t=e.type;return typeof t==`string`&&(t===`init`||t===`action`||t===`getState`)}function tu(){return{agents:Object.fromEntries(Z),rooms:Object.fromEntries(Ll),messages:Object.fromEntries(Rl),dms:Object.fromEntries(zl)}}async function Q(e){return Ul?Il(Ul,e):{content:`Not connected to mesh yet`,isError:!0}}var $=In(Fl).$context(),nu={};nu.current=new Jn({send:$.send.handler(async({input:e})=>Q({action:`send`,...e})),dm:$.dm.handler(async({input:e})=>Q({action:`dm`,...e})),joinRoom:$.joinRoom.handler(async({input:e})=>Q({action:`join_room`,room:e.room})),leaveRoom:$.leaveRoom.handler(async({input:e})=>Q({action:`leave_room`,room:e.room})),createRoom:$.createRoom.handler(async({input:e})=>Q({action:`create_room`,name:e.name,type:e.type,description:e.description})),listRooms:$.listRooms.handler(async()=>Q({action:`list_rooms`})),listAgents:$.listAgents.handler(async()=>Q({action:`list_agents`})),readRoom:$.readRoom.handler(async({input:e})=>Q({action:`read_room`,room:e.room})),destroyRoom:$.destroyRoom.handler(async({input:e})=>Q({action:`destroy_room`,room:e.room})),invite:$.invite.handler(async({input:e})=>Q({action:`invite`,room:e.room,agent:e.agent})),declineInvite:$.declineInvite.handler(async({input:e})=>Q({action:`decline_invite`,room:e.room,reason:e.reason})),kick:$.kick.handler(async({input:e})=>Q({action:`kick`,room:e.room,agent:e.agent})),renameAgent:$.renameAgent.handler(async({input:e})=>Q({action:`rename_agent`,agent:e.agent,name:e.name})),pushSubscribe:$.pushSubscribe.handler(async({input:e})=>Q({action:`push_subscribe`,subscription:e.subscription,agentId:e.agentId})),pushUnsubscribe:$.pushUnsubscribe.handler(async({input:e})=>Q({action:`push_unsubscribe`,agentId:e.agentId})),subscribeEvents:$.subscribeEvents.handler(async function*({input:e,signal:t}){e.lastEventId===void 0&&(yield{kind:`state_sync`,state:tu()}),yield*Gl.subscribe({...t?{signal:t}:{},...e.lastEventId===void 0?{}:{lastEventId:e.lastEventId}})}),disconnect:$.disconnect.handler(async({context:e})=>(setTimeout(()=>{nu.current?.close(e.port)},0),{}))});function ru(e){nu.current?.upgrade(e,{context:{port:e}})}return typeof self<`u`&&self.addEventListener(`connect`,e=>{let t=e.ports[0];if(t!==void 0){Zl.add(t);try{t.postMessage(JSON.stringify({type:`state`,state:Hl()}))}catch{}t.onmessage=e=>{let t=JSON.parse(typeof e.data==`string`?e.data:String(e.data));eu(t)&&$l(t)},ru(t)}}),e.agents=Z,e.applyPatch=Vl,e.applyStateSync=Bl,e.connect=Yl,e.dms=zl,e.getStateSnapshot=Hl,e.localPublisher=Gl,e.messages=Rl,e.ports=Zl,e.rooms=Ll,e.upgradeTabRpcPort=ru,e})({});
|
|
64
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}}function ms(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Object.assign(i,s),Object.assign(i,a),t._zod.parent===o)for(let e in i)e!==`$ref`&&e!==`allOf`&&(e in a||delete i[e]);if(s.$ref&&n.def)for(let e in i)e!==`$ref`&&e!==`allOf`&&e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e!==`$ref`&&e!==`allOf`&&e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};for(let t of[...e.seen.entries()].reverse())r(t[0]);let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Object.assign(i,n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,o[e.defId]=e.def)}e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,"~standard",{value:{...t[`~standard`],jsonSchema:{input:gs(t,`input`,e.processors),output:gs(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function R(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return R(r.element,n);if(r.type===`set`)return R(r.valueType,n);if(r.type===`lazy`)return R(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type==="default"||r.type===`prefault`)return R(r.innerType,n);if(r.type===`intersection`)return R(r.left,n)||R(r.right,n);if(r.type===`record`||r.type===`map`)return R(r.keyType,n)||R(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:R(r.in,n)||R(r.out,n);if(r.type===`object`){for(let e in r.shape)if(R(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(R(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(R(e,n))return!0;return!!(r.rest&&R(r.rest,n))}return!1}var hs=(e,t={})=>n=>{let r=fs({...n,processors:t});return L(e,r),ps(r,e),ms(r,e)},gs=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=fs({...i??{},target:a,io:t,processors:n});return L(e,o),ps(o,e),ms(o,e)},_s={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},vs=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=_s[s]??s,i.format===``&&delete i.format,s===`time`&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},ys=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;i.type=typeof s==`string`&&s.includes(`int`)?`integer`:`number`;let d=typeof u==`number`&&u>=(a??-1/0),f=typeof l==`number`&&l<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;d?p?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l:typeof o==`number`&&(i.maximum=o),typeof c==`number`&&(i.multipleOf=c)},bs=(e,t,n,r)=>{n.type=`boolean`},xs=(e,t,n,r)=>{n.not={}},Ss=(e,t,n,r)=>{let i=e._zod.def,a=nr(i.entries);a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},Cs=(e,t,n,r)=>{let i=e._zod.def,a=[];for(let e of i.values)if(e===void 0){if(t.unrepresentable===`throw`)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof e==`bigint`){if(t.unrepresentable===`throw`)throw Error(`BigInt literals cannot be represented in JSON Schema`);a.push(Number(e))}else a.push(e);if(a.length!==0){if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a}},ws=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Custom types cannot be represented in JSON Schema`)},Ts=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Transforms cannot be represented in JSON Schema`)},Es=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=L(a.element,t,{...r,path:[...r.path,`items`]})},Ds=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`,i.properties={};let o=a.shape;for(let e in o)i.properties[e]=L(o[e],t,{...r,path:[...r.path,`properties`,e]});let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e]._zod;return t.io===`input`?n.optin===void 0:n.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=L(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},Os=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>L(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},ks=(e,t,n,r)=>{let i=e._zod.def,a=L(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=L(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1;n.allOf=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]]},As=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=o._zod.bag?.patterns;if(a.mode===`loose`&&s&&s.size>0){let e=L(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)i.patternProperties[t.source]=e}else(t.target===`draft-07`||t.target===`draft-2020-12`)&&(i.propertyNames=L(a.keyType,t,{...r,path:[...r.path,`propertyNames`]})),i.additionalProperties=L(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]});let c=o._zod.values;if(c){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e)}},js=(e,t,n,r)=>{let i=e._zod.def,a=L(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},Ms=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},Ns=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},Ps=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,t.io===`input`&&(n._prefault=JSON.parse(JSON.stringify(i.defaultValue)))},Fs=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{throw Error(`Dynamic catch values are not supported in JSON Schema`)}n.default=o},Is=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;L(o,t,r);let s=t.seen.get(e);s.ref=o},Ls=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},Rs=(e,t,n,r)=>{let i=e._zod.def;L(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},zs=D(`ZodISODateTime`,(e,t)=>{oa.init(e,t),H.init(e,t)});function Bs(e){return No(zs,e)}var Vs=D(`ZodISODate`,(e,t)=>{sa.init(e,t),H.init(e,t)});function Hs(e){return Po(Vs,e)}var Us=D(`ZodISOTime`,(e,t)=>{ca.init(e,t),H.init(e,t)});function Ws(e){return Fo(Us,e)}var Gs=D(`ZodISODuration`,(e,t)=>{la.init(e,t),H.init(e,t)});function Ks(e){return Io(Gs,e)}var z=D(`ZodError`,(e,t)=>{Fr.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>Rr(e,t)},flatten:{value:t=>Lr(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,rr,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,rr,2)}},isEmpty:{get(){return e.issues.length===0}}})},{Parent:Error}),qs=zr(z),Js=Br(z),Ys=Vr(z),Xs=Ur(z),Zs=Gr(z),Qs=Kr(z),$s=qr(z),ec=Jr(z),tc=Yr(z),nc=Xr(z),rc=Zr(z),ic=Qr(z),ac=new WeakMap;function oc(e,t,n){let r=Object.getPrototypeOf(e),i=ac.get(r);if(i||(i=new Set,ac.set(r,i)),!i.has(t)){i.add(t);for(let e in n){let t=n[e];Object.defineProperty(r,e,{configurable:!0,enumerable:!1,get(){let n=t.bind(this);return Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:n}),n},set(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:t})}})}}}var B=D(`ZodType`,(e,t)=>(F.init(e,t),Object.assign(e[`~standard`],{jsonSchema:{input:gs(e,`input`),output:gs(e,`output`)}}),e.toJSONSchema=hs(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.parse=(t,n)=>qs(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>Ys(e,t,n),e.parseAsync=async(t,n)=>Js(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>Xs(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>Zs(e,t,n),e.decode=(t,n)=>Qs(e,t,n),e.encodeAsync=async(t,n)=>$s(e,t,n),e.decodeAsync=async(t,n)=>ec(e,t,n),e.safeEncode=(t,n)=>tc(e,t,n),e.safeDecode=(t,n)=>nc(e,t,n),e.safeEncodeAsync=async(t,n)=>rc(e,t,n),e.safeDecodeAsync=async(t,n)=>ic(e,t,n),oc(e,`ZodType`,{check(...e){let t=this.def;return this.clone(A(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return j(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(hl(e,t))},superRefine(e,t){return this.check(gl(e,t))},overwrite(e){return this.check(ns(e))},optional(){return Zc(this)},exactOptional(){return $c(this)},nullable(){return tl(this)},nullish(){return Zc(tl(this))},nonoptional(e){return sl(this,e)},array(){return W(this)},or(e){return K([this,e])},and(e){return Uc(this,e)},transform(e){return dl(this,Yc(e))},default(e){return rl(this,e)},prefault(e){return al(this,e)},catch(e){return ll(this,e)},pipe(e){return dl(this,e)},readonly(){return pl(this)},describe(e){let t=this.clone();return co.add(t,{description:e}),t},meta(...e){if(e.length===0)return co.get(this);let t=this.clone();return co.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e){return e(this)}}),Object.defineProperty(e,"description",{get(){return co.get(e)?.description},configurable:!0}),e)),sc=D(`_ZodString`,(e,t)=>{Ji.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>vs(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,oc(e,`_ZodString`,{regex(...e){return this.check(Xo(...e))},includes(...e){return this.check($o(...e))},startsWith(...e){return this.check(es(...e))},endsWith(...e){return this.check(ts(...e))},min(...e){return this.check(Jo(...e))},max(...e){return this.check(qo(...e))},length(...e){return this.check(Yo(...e))},nonempty(...e){return this.check(Jo(1,...e))},lowercase(e){return this.check(Zo(e))},uppercase(e){return this.check(Qo(e))},trim(){return this.check(is())},normalize(...e){return this.check(rs(...e))},toLowerCase(){return this.check(as())},toUpperCase(){return this.check(os())},slugify(){return this.check(ss())}})}),cc=D(`ZodString`,(e,t)=>{Ji.init(e,t),sc.init(e,t),e.email=t=>e.check(uo(lc,t)),e.url=t=>e.check(_o(fc,t)),e.jwt=t=>e.check(Mo(Dc,t)),e.emoji=t=>e.check(vo(pc,t)),e.guid=t=>e.check(fo(uc,t)),e.uuid=t=>e.check(po(dc,t)),e.uuidv4=t=>e.check(mo(dc,t)),e.uuidv6=t=>e.check(ho(dc,t)),e.uuidv7=t=>e.check(go(dc,t)),e.nanoid=t=>e.check(yo(mc,t)),e.guid=t=>e.check(fo(uc,t)),e.cuid=t=>e.check(bo(hc,t)),e.cuid2=t=>e.check(xo(gc,t)),e.ulid=t=>e.check(So(_c,t)),e.base64=t=>e.check(ko(wc,t)),e.base64url=t=>e.check(Ao(Tc,t)),e.xid=t=>e.check(Co(vc,t)),e.ksuid=t=>e.check(wo(yc,t)),e.ipv4=t=>e.check(To(bc,t)),e.ipv6=t=>e.check(Eo(xc,t)),e.cidrv4=t=>e.check(Do(Sc,t)),e.cidrv6=t=>e.check(Oo(Cc,t)),e.e164=t=>e.check(jo(Ec,t)),e.datetime=t=>e.check(Bs(t)),e.date=t=>e.check(Hs(t)),e.time=t=>e.check(Ws(t)),e.duration=t=>e.check(Ks(t))});function V(e){return lo(cc,e)}var H=D(`ZodStringFormat`,(e,t)=>{I.init(e,t),sc.init(e,t)}),lc=D(`ZodEmail`,(e,t)=>{Zi.init(e,t),H.init(e,t)}),uc=D(`ZodGUID`,(e,t)=>{Yi.init(e,t),H.init(e,t)}),dc=D(`ZodUUID`,(e,t)=>{Xi.init(e,t),H.init(e,t)}),fc=D(`ZodURL`,(e,t)=>{Qi.init(e,t),H.init(e,t)}),pc=D(`ZodEmoji`,(e,t)=>{$i.init(e,t),H.init(e,t)}),mc=D(`ZodNanoID`,(e,t)=>{ea.init(e,t),H.init(e,t)}),hc=D(`ZodCUID`,(e,t)=>{ta.init(e,t),H.init(e,t)}),gc=D(`ZodCUID2`,(e,t)=>{na.init(e,t),H.init(e,t)}),_c=D(`ZodULID`,(e,t)=>{ra.init(e,t),H.init(e,t)}),vc=D(`ZodXID`,(e,t)=>{ia.init(e,t),H.init(e,t)}),yc=D(`ZodKSUID`,(e,t)=>{aa.init(e,t),H.init(e,t)}),bc=D(`ZodIPv4`,(e,t)=>{ua.init(e,t),H.init(e,t)}),xc=D(`ZodIPv6`,(e,t)=>{da.init(e,t),H.init(e,t)}),Sc=D(`ZodCIDRv4`,(e,t)=>{fa.init(e,t),H.init(e,t)}),Cc=D(`ZodCIDRv6`,(e,t)=>{pa.init(e,t),H.init(e,t)}),wc=D(`ZodBase64`,(e,t)=>{ha.init(e,t),H.init(e,t)}),Tc=D(`ZodBase64URL`,(e,t)=>{_a.init(e,t),H.init(e,t)}),Ec=D(`ZodE164`,(e,t)=>{va.init(e,t),H.init(e,t)}),Dc=D(`ZodJWT`,(e,t)=>{ba.init(e,t),H.init(e,t)}),Oc=D(`ZodNumber`,(e,t)=>{xa.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ys(e,t,n,r),oc(e,`ZodNumber`,{gt(e,t){return this.check(Wo(e,t))},gte(e,t){return this.check(Go(e,t))},min(e,t){return this.check(Go(e,t))},lt(e,t){return this.check(Ho(e,t))},lte(e,t){return this.check(Uo(e,t))},max(e,t){return this.check(Uo(e,t))},int(e){return this.check(Ac(e))},safe(e){return this.check(Ac(e))},positive(e){return this.check(Wo(0,e))},nonnegative(e){return this.check(Go(0,e))},negative(e){return this.check(Ho(0,e))},nonpositive(e){return this.check(Uo(0,e))},multipleOf(e,t){return this.check(Ko(e,t))},step(e,t){return this.check(Ko(e,t))},finite(){return this}});let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null});function U(e){return Lo(Oc,e)}var kc=D(`ZodNumberFormat`,(e,t)=>{Sa.init(e,t),Oc.init(e,t)});function Ac(e){return Ro(kc,e)}var jc=D(`ZodBoolean`,(e,t)=>{Ca.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>bs(e,t,n,r)});function Mc(e){return zo(jc,e)}var Nc=D(`ZodUnknown`,(e,t)=>{wa.init(e,t),B.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function Pc(){return Bo(Nc)}var Fc=D(`ZodNever`,(e,t)=>{Ta.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>xs(e,t,n,r)});function Ic(e){return Vo(Fc,e)}var Lc=D(`ZodArray`,(e,t)=>{Da.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Es(e,t,n,r),e.element=t.element,oc(e,`ZodArray`,{min(e,t){return this.check(Jo(e,t))},nonempty(e){return this.check(Jo(1,e))},max(e,t){return this.check(qo(e,t))},length(e,t){return this.check(Yo(e,t))},unwrap(){return this.element}})});function W(e,t){return cs(Lc,e,t)}var Rc=D(`ZodObject`,(e,t)=>{Ma.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ds(e,t,n,r),k(e,`shape`,()=>t.shape),oc(e,`ZodObject`,{keyof(){return Kc(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:Pc()})},loose(){return this.clone({...this._zod.def,catchall:Pc()})},strict(){return this.clone({...this._zod.def,catchall:Ic()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return Cr(this,e)},safeExtend(e){return wr(this,e)},merge(e){return Tr(this,e)},pick(e){return xr(this,e)},omit(e){return Sr(this,e)},partial(...e){return Er(Xc,this,e[0])},required(...e){return Dr(ol,this,e[0])}})});function G(e,t){return new Rc({type:`object`,shape:e??{},...M(t)})}var zc=D(`ZodUnion`,(e,t)=>{Pa.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Os(e,t,n,r),e.options=t.options});function K(e,t){return new zc({type:`union`,options:e,...M(t)})}var Bc=D(`ZodDiscriminatedUnion`,(e,t)=>{zc.init(e,t),Fa.init(e,t)});function Vc(e,t,n){return new Bc({type:`union`,options:t,discriminator:e,...M(n)})}var Hc=D(`ZodIntersection`,(e,t)=>{Ia.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ks(e,t,n,r)});function Uc(e,t){return new Hc({type:`intersection`,left:e,right:t})}var Wc=D(`ZodRecord`,(e,t)=>{za.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>As(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function q(e,t,n){return!t||!t._zod?new Wc({type:`record`,keyType:V(),valueType:e,...M(t)}):new Wc({type:`record`,keyType:e,valueType:t,...M(n)})}var Gc=D(`ZodEnum`,(e,t)=>{Ba.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ss(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new Gc({...t,checks:[],...M(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new Gc({...t,checks:[],...M(r),entries:i})}});function Kc(e,t){return new Gc({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...M(t)})}var qc=D(`ZodLiteral`,(e,t)=>{Va.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Cs(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,"value",{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function J(e,t){return new qc({type:`literal`,values:Array.isArray(e)?e:[e],...M(t)})}var Jc=D(`ZodTransform`,(e,t)=>{Ha.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ts(e,t,n,r),e._zod.parse=(n,r)=>{if(r.direction===`backward`)throw new er(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(Nr(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,n.issues.push(Nr(t))}};let i=t.transform(n.value,n);return i instanceof Promise?i.then(e=>(n.value=e,n.fallback=!0,n)):(n.value=i,n.fallback=!0,n)}});function Yc(e){return new Jc({type:`transform`,transform:e})}var Xc=D(`ZodOptional`,(e,t)=>{Wa.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Rs(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Zc(e){return new Xc({type:`optional`,innerType:e})}var Qc=D(`ZodExactOptional`,(e,t)=>{Ga.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Rs(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function $c(e){return new Qc({type:`optional`,innerType:e})}var el=D(`ZodNullable`,(e,t)=>{Ka.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>js(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function tl(e){return new el({type:`nullable`,innerType:e})}var nl=D(`ZodDefault`,(e,t)=>{qa.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ns(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function rl(e,t){return new nl({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():gr(t)}})}var il=D(`ZodPrefault`,(e,t)=>{Ya.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ps(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function al(e,t){return new il({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():gr(t)}})}var ol=D(`ZodNonOptional`,(e,t)=>{Xa.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ms(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function sl(e,t){return new ol({type:`nonoptional`,innerType:e,...M(t)})}var cl=D(`ZodCatch`,(e,t)=>{Qa.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Fs(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function ll(e,t){return new cl({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}var ul=D(`ZodPipe`,(e,t)=>{$a.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Is(e,t,n,r),e.in=t.in,e.out=t.out});function dl(e,t){return new ul({type:`pipe`,in:e,out:t})}var fl=D(`ZodReadonly`,(e,t)=>{to.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Ls(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function pl(e){return new fl({type:`readonly`,innerType:e})}var ml=D(`ZodCustom`,(e,t)=>{ro.init(e,t),B.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ws(e,t,n,r)});function hl(e,t={}){return ls(ml,e,t)}function gl(e,t){return us(e,t)}function _l(e){return`is`in e&&typeof e.is==`function`}function Y(e){if(Object.defineProperty(e,"is",{value:t=>e.safeParse(t).success,enumerable:!0}),!_l(e))throw Error(`unreachable: is was just defined above`);return e}var vl=Y(K([J(`discoverable`),J(`quiet`),J(`dark`)])),yl=Y(K([J(`visible`),J(`hidden`),J(`ghost`)])),bl=Y(K([J(`active`),J(`idle`),J(`busy`),J(`offline`)])),xl=Y(K([J(`public`),J(`private`),J(`secret`)])),Sl=Y(K([J(`steer`),J(`followUp`),J(`info`)])),Cl=Y(G({id:V(),version:U(),name:V(),harness:V(),cwd:V(),pid:U(),startedAt:V(),visibility:yl,status:bl,tags:W(V()),subscribedRooms:W(V())})),wl=Y(G({id:V(),version:U(),name:V(),type:xl,owner:V(),createdAt:V(),description:V(),members:W(V()),invited:W(V()),memberJoins:q(V(),U()),memberLeaves:q(V(),U()),invitedJoins:q(V(),U()),invitedLeaves:q(V(),U())})),Tl=Y(G({id:V(),from:V(),room:V(),content:V(),timestamp:V(),replyTo:V().optional(),readBy:W(V()),streamingBehavior:Sl.optional()})),El=Y(G({id:V(),from:V(),to:V(),content:V(),timestamp:V(),readBy:W(V()),streamingBehavior:Sl.optional()})),Dl=Y(K([J(`delivered`),J(`read`)])),Ol=Y(G({id:V(),name:V(),status:bl})),kl=Y(Vc(`type`,[G({type:J(`room_message`),message:Tl}),G({type:J(`dm`),message:El}),G({type:J(`room_invite`),room:V(),roomDescription:V(),from:V(),fromName:V(),fromCwd:V()}),G({type:J(`member_joined`),room:V(),agent:V()}),G({type:J(`member_left`),room:V(),agent:V()}),G({type:J(`room_members`),room:V(),members:W(Ol)}),G({type:J(`member_status`),room:V(),agent:V(),status:bl}),G({type:J(`delivery_status`),messageId:V(),agent:V(),status:Dl,room:V().optional()}),G({type:J(`invite_declined`),room:V(),agent:V(),agentName:V(),reason:V()}),G({type:J(`name_changed`),agent:V(),oldName:V(),newName:V()}),G({type:J(`connection_request`),connectionId:V(),peerId:V(),dataPort:U(),name:V(),fingerprint:V()}),G({type:J(`capability_request`),requestId:V(),capability:V(),scopeKind:V(),scopePath:V().optional(),requesterDevice:V()})]));Y(G({code:V(),expiresAt:V(),deviceId:V(),signature:V().optional()})),Y(Vc(`action`,[G({action:J(`register`),name:V(),visibility:yl,tags:W(V())}),G({action:J(`update`),visibility:yl.optional(),status:bl.optional(),name:V().optional(),tags:W(V()).optional()}),G({action:J(`whoami`)}),G({action:J(`web_url`)}),G({action:J(`create_room`),name:V(),type:xl,description:V()}),G({action:J(`list_rooms`)}),G({action:J(`join_room`),room:V()}),G({action:J(`leave_room`),room:V()}),G({action:J(`send`),target:V(),content:V(),replyTo:V().optional(),streamingBehavior:Sl.optional()}),G({action:J(`dm`),target:V(),content:V(),streamingBehavior:Sl.optional()}),G({action:J(`list_agents`)}),G({action:J(`read_room`),room:V(),since:V().optional()}),G({action:J(`invite`),room:V(),agent:V()}),G({action:J(`kick`),room:V(),agent:V()}),G({action:J(`decline_invite`),room:V(),reason:V()}),G({action:J(`destroy_room`),room:V()}),G({action:J(`mesh_connect`),host:V(),port:U(),policy:V().optional()}),G({action:J(`mesh_accept`),connectionId:V()}),G({action:J(`mesh_reject`),connectionId:V(),reason:V()}),G({action:J(`mesh_pending`)}),G({action:J(`room_accept`),room:V(),requesterId:V()}),G({action:J(`room_reject`),room:V(),requesterId:V(),reason:V().optional()}),G({action:J(`room_pending`)}),G({action:J(`capability_accept`),requestId:V(),expires:U(),delegationsRemaining:U().optional(),capability:V().optional()}),G({action:J(`capability_reject`),requestId:V(),reason:V().optional()}),G({action:J(`capability_pending`)}),G({action:J(`mesh_discover`),method:V().optional()}),G({action:J(`mesh_advertise`),method:V(),name:V(),port:U().optional(),adapter:V().optional()}),G({action:J(`mesh_unadvertise`),id:V()}),G({action:J(`mesh_interfaces`)}),G({action:J(`mesh_listen`),host:V(),port:U().optional(),policy:V().optional()}),G({action:J(`mesh_unlisten`),id:V()}),G({action:J(`mesh_listeners`)}),G({action:J(`mesh_set_visibility`),visibility:vl,adapter:V().optional()}),G({action:J(`mesh_get_visibility`)}),G({action:J(`gateway_trust`),device:V(),principal:Mc().optional()}),G({action:J(`gateway_untrust`),device:V(),principal:Mc().optional()}),G({action:J(`gateway_list_trusted`)}),G({action:J(`gateway_generate_connection_code`),ttlMs:U().optional(),privateKey:V().optional(),passphrase:V().optional()}),G({action:J(`gateway_redeem_connection_code`),code:V(),expiresAt:V(),device:V(),signature:V().optional(),publicKey:V().optional(),fingerprint:V().optional()}),G({action:J(`query_version`),device:V()}),G({action:J(`mesh_graph`)}),G({action:J(`mesh_trace`),target:V(),timeoutMs:U().optional()})]));var X=G({content:V(),isError:Mc()}),Al=K([J(`public`),J(`private`),J(`secret`)]),jl=Vc(`type`,[G({type:J(`agent_upsert`),agent:Cl}),G({type:J(`agent_offline`),agentId:V()}),G({type:J(`room_upsert`),room:wl}),G({type:J(`room_delete`),roomId:V()}),G({type:J(`message_add`),roomId:V(),message:Tl}),G({type:J(`dm_add`),key:V(),message:El}),G({type:J(`delivery`),agentId:V(),event:kl})]),Ml=G({agents:q(V(),Cl),rooms:q(V(),wl),messages:q(V(),W(Tl)),dms:q(V(),W(El))}),Nl=Vc(`kind`,[G({kind:J(`state_sync`),state:Ml}),G({kind:J(`state_patch`),patch:jl}),G({kind:J(`delivery`),event:kl})]),Pl=G({endpoint:V(),keys:G({p256dh:V(),auth:V()})}),Fl={send:C.input(G({target:V(),content:V()})).output(X),dm:C.input(G({target:V(),content:V()})).output(X),joinRoom:C.input(G({room:V()})).output(X),leaveRoom:C.input(G({room:V().optional()})).output(X),createRoom:C.input(G({name:V(),type:Al,description:V().optional()})).output(X),listRooms:C.input(G({})).output(X),listAgents:C.input(G({})).output(X),readRoom:C.input(G({room:V().optional()})).output(X),destroyRoom:C.input(G({room:V()})).output(X),invite:C.input(G({room:V(),agent:V()})).output(X),declineInvite:C.input(G({room:V(),reason:V()})).output(X),kick:C.input(G({room:V(),agent:V()})).output(X),renameAgent:C.input(G({agent:V(),name:V()})).output(X),pushSubscribe:C.input(G({subscription:Pl,agentId:V().optional()})).output(X),pushUnsubscribe:C.input(G({agentId:V().optional()})).output(X),subscribeEvents:C.input(G({lastEventId:V().optional()})).output(mn(Nl)),disconnect:C.input(G({})).output(G({}))};function Il(e){if(typeof e!=`object`||!e||!(`endpoint`in e)||typeof e.endpoint!=`string`||!(`keys`in e))return!1;let t=e.keys;return!(typeof t!=`object`||!t||!(`p256dh`in t)||typeof t.p256dh!=`string`||!(`auth`in t)||typeof t.auth!=`string`)}async function Ll(e,t){let n=e=>{let n=t[e];return typeof n==`string`?n:``},r=e=>{let n=t[e];return typeof n==`string`?n:void 0},i=()=>{let e=t.type;return e===`public`||e===`private`||e===`secret`?e:`public`};switch(t.action){case`send`:return e.send({target:n(`target`),content:n(`content`)});case`dm`:return e.dm({target:n(`target`),content:n(`content`)});case`join_room`:return e.joinRoom({room:n(`room`)});case`leave_room`:return e.leaveRoom({room:r(`room`)});case`create_room`:return e.createRoom({name:n(`name`),type:i(),description:r(`description`)});case`list_rooms`:return e.listRooms({});case`list_agents`:return e.listAgents({});case`read_room`:return e.readRoom({room:r(`room`)});case`destroy_room`:return e.destroyRoom({room:n(`room`)});case`invite`:return e.invite({room:n(`room`),agent:n(`agent`)});case`decline_invite`:return e.declineInvite({room:n(`room`),reason:n(`reason`)});case`kick`:return e.kick({room:n(`room`),agent:n(`agent`)});case`rename_agent`:return e.renameAgent({agent:n(`agent`),name:n(`name`)});case`push_subscribe`:{let n=t.subscription;return Il(n)?e.pushSubscribe({subscription:n,agentId:r(`agentId`)}):{content:`Invalid push subscription`,isError:!0}}case`push_unsubscribe`:return e.pushUnsubscribe({agentId:r(`agentId`)});default:return{content:`Unknown action: ${String(t.action)}`,isError:!0}}}var Z=new Map,Rl=new Map,zl=new Map,Bl=new Map;function Vl(e){for(let[t,n]of Object.entries(e.agents))Z.set(t,n);for(let[t,n]of Object.entries(e.rooms))Rl.set(t,n);for(let[t,n]of Object.entries(e.messages))zl.set(t,n);for(let[t,n]of Object.entries(e.dms))Bl.set(t,n)}function Hl(e){switch(e.type){case`agent_upsert`:Z.set(e.agent.id,e.agent);break;case`agent_offline`:{let t=Z.get(e.agentId);t&&(t.status=`offline`,Z.set(e.agentId,t));break}case`room_upsert`:Rl.set(e.room.id,e.room);break;case`room_delete`:Rl.delete(e.roomId);break;case`message_add`:{let t=zl.get(e.roomId)??[];t.push(e.message),zl.set(e.roomId,t);break}case`dm_add`:{let t=Bl.get(e.key)??[];t.push(e.message),Bl.set(e.key,t);break}case`delivery`:break;case`message_read`:if(e.room!==void 0){let t=zl.get(e.room);if(t){let n=t.find(t=>t.id===e.messageId);n&&!n.readBy.includes(e.readBy)&&n.readBy.push(e.readBy)}}else for(let[,t]of Bl){let n=t.find(t=>t.id===e.messageId);n&&!n.readBy.includes(e.readBy)&&n.readBy.push(e.readBy)}}}function Ul(){return{agents:[...Z.values()],rooms:[...Rl.values()]}}var Wl,Gl=0,Kl=new Zn,ql=1e3,Jl=3e4;function Yl(e){let t=wt(new rn({connect:async()=>{let t=new WebSocket(e);return t.addEventListener(`open`,()=>{Ql({type:`connected`})}),t.addEventListener(`close`,()=>{Ql({type:`disconnected`})}),new Promise((e,n)=>{t.addEventListener(`open`,()=>{e(t)},{once:!0}),t.addEventListener(`error`,n,{once:!0})})},reconnect:{enabled:!0,delay:e=>e.attempt===1?0:Math.min(ql*2**e.attempt,Jl)},plugins:[new an]}));Wl=t,Xl(t,++Gl)}async function Xl(e,t){let n;for(;t===Gl;)try{let r=await e.subscribeEvents(n===void 0?{}:{lastEventId:n});for await(let e of r){if(t!==Gl)return;let r=Je(e);switch(r?.id!==void 0&&(n=r.id),Kl.publish(e),e.kind){case`state_sync`:Vl(e.state),Ql({type:`state`,state:Ul()});break;case`state_patch`:Hl(e.patch),Ql({type:`patch`,patch:e.patch})}}return}catch{}}var Zl=new Set;function Ql(e){let t=JSON.stringify(e);for(let e of Zl)try{e.postMessage(t)}catch{}}function $l(e){switch(e.type){case`init`:Yl(e.url);break;case`action`:{let t=Wl;if(!t)break;let n=e.id;Ll(t,e.action).then(e=>{Ql({type:`actionResult`,id:n,result:e})}).catch(e=>{Ql({type:`actionError`,id:n,message:e instanceof Error?e.message:String(e)})});break}case`getState`:Ql({type:`state`,state:Ul()})}}function eu(e){if(typeof e!=`object`||!e||!(`type`in e))return!1;let t=e.type;return typeof t==`string`&&(t===`init`||t===`action`||t===`getState`)}function tu(){return{agents:Object.fromEntries(Z),rooms:Object.fromEntries(Rl),messages:Object.fromEntries(zl),dms:Object.fromEntries(Bl)}}async function Q(e){return Wl?Ll(Wl,e):{content:`Not connected to mesh yet`,isError:!0}}var $=In(Fl).$context(),nu={};nu.current=new Jn({send:$.send.handler(async({input:e})=>Q({action:`send`,...e})),dm:$.dm.handler(async({input:e})=>Q({action:`dm`,...e})),joinRoom:$.joinRoom.handler(async({input:e})=>Q({action:`join_room`,room:e.room})),leaveRoom:$.leaveRoom.handler(async({input:e})=>Q({action:`leave_room`,room:e.room})),createRoom:$.createRoom.handler(async({input:e})=>Q({action:`create_room`,name:e.name,type:e.type,description:e.description})),listRooms:$.listRooms.handler(async()=>Q({action:`list_rooms`})),listAgents:$.listAgents.handler(async()=>Q({action:`list_agents`})),readRoom:$.readRoom.handler(async({input:e})=>Q({action:`read_room`,room:e.room})),destroyRoom:$.destroyRoom.handler(async({input:e})=>Q({action:`destroy_room`,room:e.room})),invite:$.invite.handler(async({input:e})=>Q({action:`invite`,room:e.room,agent:e.agent})),declineInvite:$.declineInvite.handler(async({input:e})=>Q({action:`decline_invite`,room:e.room,reason:e.reason})),kick:$.kick.handler(async({input:e})=>Q({action:`kick`,room:e.room,agent:e.agent})),renameAgent:$.renameAgent.handler(async({input:e})=>Q({action:`rename_agent`,agent:e.agent,name:e.name})),pushSubscribe:$.pushSubscribe.handler(async({input:e})=>Q({action:`push_subscribe`,subscription:e.subscription,agentId:e.agentId})),pushUnsubscribe:$.pushUnsubscribe.handler(async({input:e})=>Q({action:`push_unsubscribe`,agentId:e.agentId})),subscribeEvents:$.subscribeEvents.handler(async function*({input:e,signal:t}){e.lastEventId===void 0&&(yield{kind:`state_sync`,state:tu()}),yield*Kl.subscribe({...t?{signal:t}:{},...e.lastEventId===void 0?{}:{lastEventId:e.lastEventId}})}),disconnect:$.disconnect.handler(async({context:e})=>(setTimeout(()=>{nu.current?.close(e.port)},0),{}))});function ru(e){nu.current?.upgrade(e,{context:{port:e}})}return typeof self<`u`&&self.addEventListener(`connect`,e=>{let t=e.ports[0];if(t!==void 0){Zl.add(t);try{t.postMessage(JSON.stringify({type:`state`,state:Ul()}))}catch{}t.onmessage=e=>{let t=JSON.parse(typeof e.data==`string`?e.data:String(e.data));eu(t)&&$l(t)},ru(t)}}),e.agents=Z,e.applyPatch=Hl,e.applyStateSync=Vl,e.connect=Yl,e.dms=Bl,e.getStateSnapshot=Ul,e.localPublisher=Kl,e.messages=zl,e.ports=Zl,e.rooms=Rl,e.upgradeTabRpcPort=ru,e})({});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=`agent-comms-v1`,t=[{"revision":"
|
|
1
|
+
var e=`agent-comms-v1`,t=[{"revision":"2c1bbbd07d58db2677439d754952ce28","url":"mesh-worker.js"},{"revision":"f1ee3afb8c9e8f0d7315fd93d6457316","url":"index.html"},{"revision":"b597247ded168538cc8fa228b7240a48","url":"bundle.js"}].map(e=>e.url);self.addEventListener(`install`,n=>{n.waitUntil(self.caches.open(e).then(async e=>e.addAll(t)).then(async()=>self.skipWaiting()))}),self.addEventListener(`activate`,t=>{t.waitUntil(self.caches.keys().then(async t=>Promise.all(t.filter(t=>t!==e).map(async e=>self.caches.delete(e)))))});var n=200,r=300;function i(e,t){return e.method===`GET`&&t.status>=n&&t.status<r}self.addEventListener(`fetch`,t=>{if(new URL(t.request.url).pathname.startsWith(`/api/`)){t.respondWith(fetch(t.request).then(n=>{if(i(t.request,n)){let r=n.clone();self.caches.open(e).then(async e=>e.put(t.request,r))}return n}).catch(async()=>self.caches.open(e).then(async e=>e.match(t.request)).then(e=>e??new Response(`Offline`,{status:503}))));return}t.respondWith(self.caches.open(e).then(async e=>e.match(t.request)).then(async n=>n||fetch(t.request).then(n=>{if(i(t.request,n)){let r=n.clone();self.caches.open(e).then(async e=>e.put(t.request,r))}return n})))}),self.addEventListener(`push`,e=>{let t=`Agent Comms`,n=`New message`;if(e.data)try{let r=e.data.json();typeof r.title==`string`&&(t=r.title),typeof r.body==`string`&&(n=r.body)}catch{let t=e.data.text();t&&(n=t)}e.waitUntil(self.registration.showNotification(t,{body:n,data:{url:self.location.origin}}))}),self.addEventListener(`notificationclick`,e=>{e.notification.close();let t=e.notification.data,n=typeof t==`object`&&t&&`url`in t&&typeof t.url==`string`?t.url:self.location.origin;e.waitUntil(self.clients.matchAll({type:`window`,includeUncontrolled:!0}).then(async e=>{for(let t of e)if(t.url===n&&`focus`in t)return t.focus();return self.clients.openWindow(n)}))});
|
|
@@ -1,31 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* API client — typed REST
|
|
2
|
+
* API client — typed REST communication with the comms server.
|
|
3
3
|
*
|
|
4
|
-
* REST for initial data fetches
|
|
5
|
-
* All methods are typed against the interfaces in types.ts.
|
|
4
|
+
* REST for initial data fetches and the /api/action test-scaffolding endpoint. Real-time state, patches, actions, and delivery events all go through MeshClient/mesh-client.ts's own oRPC client now -- this file no longer carries a WebSocket client of its own. All methods are typed against the interfaces in types.ts.
|
|
6
5
|
*
|
|
7
6
|
* JSON boundaries use runtime validation with type predicates — no assertions.
|
|
8
7
|
*/
|
|
9
|
-
import type { Action, ActionResult, AgentsResponse, MeshGraph, MeshTraceResult, MessagesResponse, RoomsResponse
|
|
8
|
+
import type { Action, ActionResult, AgentsResponse, MeshGraph, MeshTraceResult, MessagesResponse, RoomsResponse } from "./types.js";
|
|
10
9
|
export declare function fetchAgents(): Promise<AgentsResponse>;
|
|
11
10
|
export declare function fetchRooms(): Promise<RoomsResponse>;
|
|
12
11
|
export declare function fetchRoomMessages(roomId: string, since?: string): Promise<MessagesResponse>;
|
|
13
12
|
export declare function fetchMeshGraph(): Promise<MeshGraph>;
|
|
14
13
|
export declare function fetchMeshTrace(target: string, timeoutMs?: number): Promise<MeshTraceResult>;
|
|
15
14
|
export declare function postAction(action: Action): Promise<ActionResult>;
|
|
16
|
-
export interface WsEventHandler {
|
|
17
|
-
onOpen?: () => void;
|
|
18
|
-
onClose?: () => void;
|
|
19
|
-
onFrame?: (frame: WsFrame) => void;
|
|
20
|
-
}
|
|
21
|
-
export declare class CommsWs {
|
|
22
|
-
private ws;
|
|
23
|
-
private reconnectTimer;
|
|
24
|
-
private readonly handler;
|
|
25
|
-
constructor(handler: Readonly<WsEventHandler>);
|
|
26
|
-
connect(): void;
|
|
27
|
-
sendAction(action: Action): void;
|
|
28
|
-
disconnect(): void;
|
|
29
|
-
private scheduleReconnect;
|
|
30
|
-
}
|
|
31
15
|
//# sourceMappingURL=api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../src/bridges/user/web/frontend/api.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../src/bridges/user/web/frontend/api.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,cAAc,EACd,SAAS,EACT,eAAe,EACf,gBAAgB,EAChB,aAAa,EACd,MAAM,YAAY,CAAC;AA+CpB,wBAAsB,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,CAK3D;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,CAKzD;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC,CAS3B;AAaD,wBAAsB,cAAc,IAAI,OAAO,CAAC,SAAS,CAAC,CAMzD;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,CAAC,CAQ1B;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAStE"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* API client — typed REST
|
|
2
|
+
* API client — typed REST communication with the comms server.
|
|
3
3
|
*
|
|
4
|
-
* REST for initial data fetches
|
|
5
|
-
* All methods are typed against the interfaces in types.ts.
|
|
4
|
+
* REST for initial data fetches and the /api/action test-scaffolding endpoint. Real-time state, patches, actions, and delivery events all go through MeshClient/mesh-client.ts's own oRPC client now -- this file no longer carries a WebSocket client of its own. All methods are typed against the interfaces in types.ts.
|
|
6
5
|
*
|
|
7
6
|
* JSON boundaries use runtime validation with type predicates — no assertions.
|
|
8
7
|
*/
|
|
@@ -26,9 +25,6 @@ function isActionResult(value) {
|
|
|
26
25
|
return false;
|
|
27
26
|
return (typeof value.content === "string" && typeof value.isError === "boolean");
|
|
28
27
|
}
|
|
29
|
-
function isWsFrame(value) {
|
|
30
|
-
return isObject(value) && typeof value.type === "string";
|
|
31
|
-
}
|
|
32
28
|
function isMeshGraph(value) {
|
|
33
29
|
return (isObject(value) && Array.isArray(value.nodes) && Array.isArray(value.edges));
|
|
34
30
|
}
|
|
@@ -114,60 +110,4 @@ export async function postAction(action) {
|
|
|
114
110
|
throw new Error("Invalid action result");
|
|
115
111
|
return body;
|
|
116
112
|
}
|
|
117
|
-
// ---------------------------------------------------------------------------
|
|
118
|
-
// WebSocket client
|
|
119
|
-
// ---------------------------------------------------------------------------
|
|
120
|
-
/** Delay before attempting to reconnect a dropped WebSocket connection. */
|
|
121
|
-
const RECONNECT_DELAY_MS = 3000;
|
|
122
|
-
export class CommsWs {
|
|
123
|
-
ws;
|
|
124
|
-
reconnectTimer;
|
|
125
|
-
handler;
|
|
126
|
-
constructor(handler) {
|
|
127
|
-
this.handler = handler;
|
|
128
|
-
}
|
|
129
|
-
connect() {
|
|
130
|
-
const proto = location.protocol === "https:" ? "wss:" : "ws:";
|
|
131
|
-
const ws = new WebSocket(`${proto}//${location.host}`);
|
|
132
|
-
this.ws = ws;
|
|
133
|
-
ws.onopen = () => {
|
|
134
|
-
this.handler.onOpen?.();
|
|
135
|
-
};
|
|
136
|
-
ws.onclose = () => {
|
|
137
|
-
this.handler.onClose?.();
|
|
138
|
-
this.scheduleReconnect();
|
|
139
|
-
};
|
|
140
|
-
ws.onerror = () => {
|
|
141
|
-
// onclose will fire after this
|
|
142
|
-
};
|
|
143
|
-
ws.onmessage = (e) => {
|
|
144
|
-
const raw = JSON.parse(typeof e.data === "string" ? e.data : String(e.data));
|
|
145
|
-
if (!isWsFrame(raw))
|
|
146
|
-
return;
|
|
147
|
-
this.handler.onFrame?.(raw);
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
sendAction(action) {
|
|
151
|
-
const ws = this.ws;
|
|
152
|
-
if (ws?.readyState === WebSocket.OPEN) {
|
|
153
|
-
ws.send(JSON.stringify(action));
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
disconnect() {
|
|
157
|
-
if (this.reconnectTimer !== undefined) {
|
|
158
|
-
clearTimeout(this.reconnectTimer);
|
|
159
|
-
this.reconnectTimer = undefined;
|
|
160
|
-
}
|
|
161
|
-
const ws = this.ws;
|
|
162
|
-
if (ws) {
|
|
163
|
-
ws.close();
|
|
164
|
-
}
|
|
165
|
-
this.ws = undefined;
|
|
166
|
-
}
|
|
167
|
-
scheduleReconnect() {
|
|
168
|
-
this.reconnectTimer = setTimeout(() => {
|
|
169
|
-
this.connect();
|
|
170
|
-
}, RECONNECT_DELAY_MS);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
113
|
//# sourceMappingURL=api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../../src/bridges/user/web/frontend/api.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../../src/bridges/user/web/frontend/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { ContractRouterClient } from "@orpc/contract";
|
|
7
7
|
import type { meshContract, ActionResult } from "../contract.js";
|
|
8
|
-
export type ActionDispatchClient = Pick<ContractRouterClient<typeof meshContract>, "send" | "dm" | "joinRoom" | "leaveRoom" | "createRoom" | "listRooms" | "listAgents" | "readRoom" | "destroyRoom" | "invite" | "declineInvite" | "kick" | "renameAgent">;
|
|
8
|
+
export type ActionDispatchClient = Pick<ContractRouterClient<typeof meshContract>, "send" | "dm" | "joinRoom" | "leaveRoom" | "createRoom" | "listRooms" | "listAgents" | "readRoom" | "destroyRoom" | "invite" | "declineInvite" | "kick" | "renameAgent" | "pushSubscribe" | "pushUnsubscribe">;
|
|
9
9
|
export declare function dispatchAction(client: Readonly<ActionDispatchClient>, action: Readonly<Record<string, unknown>>): Promise<ActionResult>;
|
|
10
10
|
//# sourceMappingURL=dispatch-action.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch-action.d.ts","sourceRoot":"","sources":["../../../../../src/bridges/user/web/frontend/dispatch-action.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEjE,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,oBAAoB,CAAC,OAAO,YAAY,CAAC,EACvC,MAAM,GACN,IAAI,GACJ,UAAU,GACV,WAAW,GACX,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,UAAU,GACV,aAAa,GACb,QAAQ,GACR,eAAe,GACf,MAAM,GACN,aAAa,
|
|
1
|
+
{"version":3,"file":"dispatch-action.d.ts","sourceRoot":"","sources":["../../../../../src/bridges/user/web/frontend/dispatch-action.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEjE,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,oBAAoB,CAAC,OAAO,YAAY,CAAC,EACvC,MAAM,GACN,IAAI,GACJ,UAAU,GACV,WAAW,GACX,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,UAAU,GACV,aAAa,GACb,QAAQ,GACR,eAAe,GACf,MAAM,GACN,aAAa,GACb,eAAe,GACf,iBAAiB,CACpB,CAAC;AAiBF,wBAAsB,cAAc,CAClC,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EACtC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACxC,OAAO,CAAC,YAAY,CAAC,CAiEvB"}
|
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Generic over any client built from a contract that includes meshContract's own 13 action procedures -- both mesh-worker.ts's upstream client (MeshOrpcClient, built from the real server's meshContract) and mesh-client.ts's own client (built from tab-contract.ts's TabContract, which spreads meshContract's procedures verbatim) satisfy this structurally, so the same mapping serves both call sites instead of being hand-duplicated a second time.
|
|
5
5
|
*/
|
|
6
|
+
/** The exact subscription shape meshContract's pushSubscribe procedure requires -- mirrors actions.ts's own server-side isPushSubscription guard, since a flat action object's `subscription` field arrives as unknown here too. */
|
|
7
|
+
function isPushSubscriptionLike(value) {
|
|
8
|
+
if (typeof value !== "object" || value === null)
|
|
9
|
+
return false;
|
|
10
|
+
if (!("endpoint" in value) || typeof value.endpoint !== "string")
|
|
11
|
+
return false;
|
|
12
|
+
if (!("keys" in value))
|
|
13
|
+
return false;
|
|
14
|
+
const keys = value.keys;
|
|
15
|
+
if (typeof keys !== "object" || keys === null)
|
|
16
|
+
return false;
|
|
17
|
+
if (!("p256dh" in keys) || typeof keys.p256dh !== "string")
|
|
18
|
+
return false;
|
|
19
|
+
if (!("auth" in keys) || typeof keys.auth !== "string")
|
|
20
|
+
return false;
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
6
23
|
export async function dispatchAction(client, action) {
|
|
7
24
|
const str = (key) => {
|
|
8
25
|
const value = action[key];
|
|
@@ -52,6 +69,15 @@ export async function dispatchAction(client, action) {
|
|
|
52
69
|
return client.kick({ room: str("room"), agent: str("agent") });
|
|
53
70
|
case "rename_agent":
|
|
54
71
|
return client.renameAgent({ agent: str("agent"), name: str("name") });
|
|
72
|
+
case "push_subscribe": {
|
|
73
|
+
const subscription = action.subscription;
|
|
74
|
+
if (!isPushSubscriptionLike(subscription)) {
|
|
75
|
+
return { content: "Invalid push subscription", isError: true };
|
|
76
|
+
}
|
|
77
|
+
return client.pushSubscribe({ subscription, agentId: optStr("agentId") });
|
|
78
|
+
}
|
|
79
|
+
case "push_unsubscribe":
|
|
80
|
+
return client.pushUnsubscribe({ agentId: optStr("agentId") });
|
|
55
81
|
default:
|
|
56
82
|
return {
|
|
57
83
|
content: `Unknown action: ${String(action.action)}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch-action.js","sourceRoot":"","sources":["../../../../../src/bridges/user/web/frontend/dispatch-action.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"dispatch-action.js","sourceRoot":"","sources":["../../../../../src/bridges/user/web/frontend/dispatch-action.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAwBH,oOAAoO;AACpO,SAAS,sBAAsB,CAC7B,KAAc;IAEd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAC9D,OAAO,KAAK,CAAC;IACf,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5D,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACzE,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAsC,EACtC,MAAyC;IAEzC,MAAM,GAAG,GAAG,CAAC,GAAW,EAAU,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,GAAW,EAAsB,EAAE;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,GAAoC,EAAE;QACrD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1B,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ;YACpE,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,QAAQ,CAAC;IACf,CAAC,CAAC;IAEF,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACzE,KAAK,IAAI;YACP,OAAO,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvE,KAAK,WAAW;YACd,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChD,KAAK,YAAY;YACf,OAAO,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpD,KAAK,aAAa;YAChB,OAAO,MAAM,CAAC,UAAU,CAAC;gBACvB,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;gBACjB,IAAI,EAAE,QAAQ,EAAE;gBAChB,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;aACnC,CAAC,CAAC;QACL,KAAK,YAAY;YACf,OAAO,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9B,KAAK,aAAa;YAChB,OAAO,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,WAAW;YACd,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnD,KAAK,cAAc;YACjB,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnD,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnE,KAAK,gBAAgB;YACnB,OAAO,MAAM,CAAC,aAAa,CAAC;gBAC1B,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;gBACjB,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC;aACtB,CAAC,CAAC;QACL,KAAK,MAAM;YACT,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjE,KAAK,cAAc;YACjB,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxE,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;YACzC,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC1C,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACjE,CAAC;YACD,OAAO,MAAM,CAAC,aAAa,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,KAAK,kBAAkB;YACrB,OAAO,MAAM,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAChE;YACE,OAAO;gBACL,OAAO,EAAE,mBAAmB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gBACnD,OAAO,EAAE,IAAI;aACd,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -9,7 +9,7 @@ import { createRoot } from "react-dom/client";
|
|
|
9
9
|
import { MantineProvider } from "@mantine/core";
|
|
10
10
|
import { useEffect } from "react";
|
|
11
11
|
import { App } from "./components/App.js";
|
|
12
|
-
import {
|
|
12
|
+
import { fetchAgents, fetchMeshGraph, fetchRoomMessages, fetchRooms, } from "./api.js";
|
|
13
13
|
import { parseInput, routeAction } from "./input.js";
|
|
14
14
|
import { State } from "./state.js";
|
|
15
15
|
import { useClientState } from "./use-client-state.js";
|
|
@@ -38,6 +38,7 @@ const state = new State();
|
|
|
38
38
|
// Mesh client — real-time state via SharedWorker
|
|
39
39
|
// ---------------------------------------------------------------------------
|
|
40
40
|
const meshClient = new MeshClient();
|
|
41
|
+
let wasConnected = false;
|
|
41
42
|
meshClient.subscribe((meshState) => {
|
|
42
43
|
// Apply real-time mesh state updates on top of the REST-fetched baseline. The MeshClient delivers authoritative state from the mesh worker, which maintains a local copy of all agents and rooms.
|
|
43
44
|
if (meshState.agents.length > 0) {
|
|
@@ -47,6 +48,26 @@ meshClient.subscribe((meshState) => {
|
|
|
47
48
|
state.setRooms(meshState.rooms);
|
|
48
49
|
}
|
|
49
50
|
state.setConnected(meshState.connected);
|
|
51
|
+
if (meshState.connected !== wasConnected) {
|
|
52
|
+
wasConnected = meshState.connected;
|
|
53
|
+
addMessage({
|
|
54
|
+
type: "system",
|
|
55
|
+
text: meshState.connected
|
|
56
|
+
? "Connected to mesh"
|
|
57
|
+
: "Disconnected — reconnecting...",
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
meshClient.onDelivery((event) => {
|
|
62
|
+
const msg = deliveryEventToMessage(event, state.get().currentRoom);
|
|
63
|
+
if (msg)
|
|
64
|
+
addMessage(msg);
|
|
65
|
+
if (event.type === "member_joined" ||
|
|
66
|
+
event.type === "member_left" ||
|
|
67
|
+
event.type === "member_status" ||
|
|
68
|
+
event.type === "name_changed") {
|
|
69
|
+
void refreshState();
|
|
70
|
+
}
|
|
50
71
|
});
|
|
51
72
|
// Don't auto-connect the MeshClient on first load. The user must explicitly connect to avoid Chrome's "access device" prompt appearing before the user understands the UI. meshClient.connect() is called from onConnectToMesh().
|
|
52
73
|
// ---------------------------------------------------------------------------
|
|
@@ -56,63 +77,17 @@ function addMessage(msg) {
|
|
|
56
77
|
state.addMessage(msg);
|
|
57
78
|
}
|
|
58
79
|
// ---------------------------------------------------------------------------
|
|
59
|
-
// WebSocket
|
|
60
|
-
// ---------------------------------------------------------------------------
|
|
61
|
-
let pendingAction;
|
|
62
|
-
const ws = new CommsWs({
|
|
63
|
-
onOpen: () => {
|
|
64
|
-
state.setConnected(true);
|
|
65
|
-
addMessage({ type: "system", text: "Connected to mesh" });
|
|
66
|
-
},
|
|
67
|
-
onClose: () => {
|
|
68
|
-
state.setConnected(false);
|
|
69
|
-
addMessage({ type: "system", text: "Disconnected — reconnecting..." });
|
|
70
|
-
},
|
|
71
|
-
onFrame: handleFrame,
|
|
72
|
-
});
|
|
73
|
-
function handleFrame(frame) {
|
|
74
|
-
const s = state.get();
|
|
75
|
-
switch (frame.type) {
|
|
76
|
-
case "delivery": {
|
|
77
|
-
const msg = deliveryEventToMessage(frame.event, s.currentRoom);
|
|
78
|
-
if (msg)
|
|
79
|
-
addMessage(msg);
|
|
80
|
-
if (frame.event.type === "member_joined" ||
|
|
81
|
-
frame.event.type === "member_left" ||
|
|
82
|
-
frame.event.type === "member_status" ||
|
|
83
|
-
frame.event.type === "name_changed") {
|
|
84
|
-
void refreshState();
|
|
85
|
-
}
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
case "result":
|
|
89
|
-
addMessage({ type: "system", text: frame.result.content });
|
|
90
|
-
if (!frame.result.isError) {
|
|
91
|
-
if (pendingAction?.action === "join_room" &&
|
|
92
|
-
(state.get().currentRoom === undefined ||
|
|
93
|
-
state.get().currentRoom === "")) {
|
|
94
|
-
const roomId = pendingAction.room;
|
|
95
|
-
state.setDmTarget(undefined);
|
|
96
|
-
state.setCurrentRoom(roomId);
|
|
97
|
-
}
|
|
98
|
-
void refreshState();
|
|
99
|
-
}
|
|
100
|
-
pendingAction = undefined;
|
|
101
|
-
break;
|
|
102
|
-
case "error":
|
|
103
|
-
addMessage({ type: "status", text: `Error: ${frame.message}` });
|
|
104
|
-
break;
|
|
105
|
-
case "state":
|
|
106
|
-
state.applyState(frame.agents, frame.rooms);
|
|
107
|
-
break;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
// ---------------------------------------------------------------------------
|
|
111
80
|
// Actions
|
|
112
81
|
// ---------------------------------------------------------------------------
|
|
113
|
-
function sendAction(action) {
|
|
114
|
-
|
|
115
|
-
|
|
82
|
+
async function sendAction(action) {
|
|
83
|
+
const result = await meshClient.sendAction(action);
|
|
84
|
+
addMessage({
|
|
85
|
+
type: result.isError ? "status" : "system",
|
|
86
|
+
text: result.isError ? `Error: ${result.content}` : result.content,
|
|
87
|
+
});
|
|
88
|
+
if (!result.isError) {
|
|
89
|
+
void refreshState();
|
|
90
|
+
}
|
|
116
91
|
}
|
|
117
92
|
async function refreshState() {
|
|
118
93
|
if (!isLocalServer)
|
|
@@ -135,7 +110,7 @@ async function onJoinRoom(roomId) {
|
|
|
135
110
|
state.setDmTarget(undefined);
|
|
136
111
|
state.setCurrentRoom(roomId);
|
|
137
112
|
state.clearMessages();
|
|
138
|
-
sendAction({ action: "join_room", room: roomId });
|
|
113
|
+
void sendAction({ action: "join_room", room: roomId });
|
|
139
114
|
// Load history (skip REST fetch on standalone PWA — no server)
|
|
140
115
|
if (isLocalServer) {
|
|
141
116
|
const messages = await fetchRoomMessages(roomId);
|
|
@@ -154,7 +129,7 @@ function onLeaveRoom() {
|
|
|
154
129
|
if (currentRoom !== undefined && currentRoom !== "") {
|
|
155
130
|
// currentRoom is the room's real owner-qualified id -- resolve it back to the plain name it was created with for the confirmation message, the same way ChatArea's own header resolves it for display.
|
|
156
131
|
const roomName = s.rooms.find((room) => room.id === currentRoom)?.name ?? currentRoom;
|
|
157
|
-
sendAction({ action: "leave_room", room: currentRoom });
|
|
132
|
+
void sendAction({ action: "leave_room", room: currentRoom });
|
|
158
133
|
state.setCurrentRoom(undefined);
|
|
159
134
|
state.clearMessages();
|
|
160
135
|
addMessage({ type: "system", text: `Left room "${roomName}"` });
|
|
@@ -177,7 +152,7 @@ function handleSendAction(text) {
|
|
|
177
152
|
}
|
|
178
153
|
switch (result.kind) {
|
|
179
154
|
case "action":
|
|
180
|
-
sendAction(result.action);
|
|
155
|
+
void sendAction(result.action);
|
|
181
156
|
break;
|
|
182
157
|
case "local":
|
|
183
158
|
addMessage({ type: "system", text: result.result.text });
|
|
@@ -193,19 +168,17 @@ function onCreateRoom(name, type, description) {
|
|
|
193
168
|
type,
|
|
194
169
|
...(description ? { description } : {}),
|
|
195
170
|
};
|
|
196
|
-
sendAction(action);
|
|
171
|
+
void sendAction(action);
|
|
197
172
|
}
|
|
198
173
|
function onJoinRoomInput(roomName) {
|
|
199
174
|
void onJoinRoom(roomName);
|
|
200
175
|
}
|
|
201
176
|
function onRenameAgent(agentId, newName) {
|
|
202
|
-
sendAction({ action: "rename_agent", agent: agentId, name: newName });
|
|
177
|
+
void sendAction({ action: "rename_agent", agent: agentId, name: newName });
|
|
203
178
|
}
|
|
204
179
|
function onConnectToMesh() {
|
|
205
180
|
localStorage.setItem("agent-comms-connected", "true");
|
|
206
181
|
meshClient.connect();
|
|
207
|
-
if (isLocalServer)
|
|
208
|
-
ws.connect();
|
|
209
182
|
}
|
|
210
183
|
// ---------------------------------------------------------------------------
|
|
211
184
|
// Root — subscribes to state and keeps the URL in sync
|
|
@@ -226,8 +199,6 @@ const deepLink = parseDeepLink(location.search);
|
|
|
226
199
|
const previouslyConnected = hasConnectedBefore(localStorage);
|
|
227
200
|
if (isLocalServer || previouslyConnected) {
|
|
228
201
|
meshClient.connect();
|
|
229
|
-
if (isLocalServer)
|
|
230
|
-
ws.connect();
|
|
231
202
|
}
|
|
232
203
|
// Initial state fetch, then resolve any deep link from the URL
|
|
233
204
|
void refreshState().then(() => {
|