@fungi.computer/oyster 0.0.1 → 0.2.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/README.md +228 -176
- package/dist/agent-avatars.d.ts +103 -0
- package/dist/agent-avatars.js +66 -0
- package/dist/agents.d.ts +12 -2
- package/dist/agents.js +39 -2
- package/dist/app-builds.d.ts +76 -17
- package/dist/app-builds.js +207 -63
- package/dist/app-sources.d.ts +7 -22
- package/dist/app-sources.js +49 -14
- package/dist/apps/gate.d.ts +7 -7
- package/dist/apps/gate.js +6 -6
- package/dist/apps/installation.d.ts +35 -35
- package/dist/apps/installation.js +20 -19
- package/dist/build/artifact-writer.d.ts +40 -0
- package/dist/build/artifact-writer.js +181 -0
- package/dist/build/build-jobs.js +7 -1
- package/dist/build/build-policy.d.ts +10 -0
- package/dist/build/build-policy.js +10 -0
- package/dist/build/build-step.d.ts +12 -1
- package/dist/build/build-step.js +9 -1
- package/dist/build/candidate-builder.d.ts +68 -0
- package/dist/build/candidate-builder.js +91 -0
- package/dist/build/candidate-cli.d.ts +1 -0
- package/dist/build/candidate-cli.js +119 -0
- package/dist/build/candidate-cli.mjs +28220 -0
- package/dist/build/content-objects.d.ts +37 -0
- package/dist/build/content-objects.js +53 -0
- package/dist/build/effect.d.ts +18 -0
- package/dist/build/effect.js +52 -12
- package/dist/build/git-environment.d.ts +3 -0
- package/dist/build/git-environment.js +21 -9
- package/dist/build/local-build.d.ts +13 -3
- package/dist/build/local-build.js +149 -99
- package/dist/build/snapshot-package-store.d.ts +10 -0
- package/dist/build/snapshot-package-store.js +15 -0
- package/dist/build/snapshot-program-scripts.js +1 -1
- package/dist/build/snapshot-programs/snapshot-path.d.ts +2 -0
- package/dist/build/snapshot-programs/snapshot-path.js +6 -0
- package/dist/build/submission-contract.d.ts +461 -17
- package/dist/build/submission-contract.js +136 -26
- package/dist/build/workspace-build.d.ts +7 -2
- package/dist/build/workspace-build.js +55 -11
- package/dist/build-contract.d.ts +3 -0
- package/dist/build-contract.js +3 -0
- package/dist/build-egress.d.ts +62 -0
- package/dist/build-egress.js +148 -0
- package/dist/build.d.ts +1 -0
- package/dist/build.js +1 -0
- package/dist/cloudflare.js +4 -4
- package/dist/frame-binding-wire-script.js +1 -1
- package/dist/frame-binding-wire.d.ts +1 -1
- package/dist/frame-binding-wire.js +1 -1
- package/dist/git-journal.js +4 -4
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/installation-consent.d.ts +3 -1
- package/dist/installation-consent.js +2 -0
- package/dist/mcp-owner.js +20 -8
- package/dist/pack.d.ts +6 -3
- package/dist/pack.js +28 -11
- package/dist/page/gill-observation.d.ts +4 -0
- package/dist/page/gill-observation.js +31 -0
- package/dist/page/mount.d.ts +4 -8
- package/dist/page/window-launch.d.ts +18 -0
- package/dist/page/window-launch.js +11 -0
- package/dist/page-script.js +4 -4
- package/dist/release.d.ts +11 -0
- package/dist/release.js +4 -1
- package/dist/shell/app-directory.d.ts +50 -45
- package/dist/shell/app-directory.js +19 -18
- package/dist/shell/shell-module.d.ts +26 -2
- package/dist/shell/shell-module.js +51 -2
- package/dist/shell/window-manager.d.ts +5 -1
- package/dist/shell/window-manager.js +21 -2
- package/dist/shell/workbench-directory.d.ts +332 -0
- package/dist/shell/workbench-directory.js +35 -0
- package/dist/shell/workbench-host-types.d.ts +1 -1
- package/dist/shell/workbench-host.js +5 -0
- package/dist/shell/workbench-model.d.ts +3 -1
- package/dist/source/index.d.ts +6 -7
- package/dist/source/index.js +6 -7
- package/dist/source/template-push.d.ts +33 -0
- package/dist/source/template-push.js +223 -0
- package/dist/source/template-repository.d.ts +2 -0
- package/dist/source/template-repository.js +13 -0
- package/dist/source/{template-write.d.ts → template-seed.d.ts} +19 -20
- package/dist/source/template-seed.js +80 -0
- package/dist/standalone/agent-directory.d.ts +4 -0
- package/dist/standalone/agent-directory.js +4 -0
- package/dist/standalone/agents.d.ts +227 -0
- package/dist/standalone/agents.js +834 -0
- package/dist/standalone/app-builds-binding.d.ts +36 -0
- package/dist/standalone/app-builds-binding.js +119 -0
- package/dist/standalone/app-set.d.ts +91 -0
- package/dist/standalone/app-set.js +395 -0
- package/dist/standalone/app-source.d.ts +41 -0
- package/dist/standalone/app-source.js +59 -0
- package/dist/standalone/builds.d.ts +18 -0
- package/dist/standalone/builds.js +101 -0
- package/dist/standalone/computer-egress.d.ts +37 -0
- package/dist/standalone/computer-egress.js +111 -0
- package/dist/standalone/computer.d.ts +122 -0
- package/dist/standalone/computer.js +714 -0
- package/dist/standalone/install-apps-cli.d.ts +2 -0
- package/dist/standalone/install-apps-cli.js +126 -0
- package/dist/standalone/instance.d.ts +35 -0
- package/dist/standalone/instance.js +74 -0
- package/dist/standalone/media.d.ts +76 -0
- package/dist/standalone/media.js +227 -0
- package/dist/standalone/preview.d.ts +51 -0
- package/dist/standalone/preview.js +167 -0
- package/dist/standalone/registry.d.ts +102 -0
- package/dist/standalone/registry.js +193 -0
- package/dist/standalone/tenancy.d.ts +42 -0
- package/dist/standalone/tenancy.js +241 -0
- package/dist/standalone/worker.d.ts +55 -0
- package/dist/standalone/worker.js +147 -0
- package/dist/standalone/workflow-authority-readers.d.ts +16 -0
- package/dist/standalone/workflow-authority-readers.js +35 -0
- package/dist/standalone/workflow-binding.d.ts +216 -0
- package/dist/standalone/workflow-binding.js +217 -0
- package/dist/standalone/workflow-events.d.ts +46 -0
- package/dist/standalone/workflow-events.js +39 -0
- package/dist/standalone/workflow-git-capture.d.ts +7 -0
- package/dist/standalone/workflow-git-capture.js +62 -0
- package/dist/standalone/workflow-host.d.ts +955 -0
- package/dist/standalone/workflow-host.js +778 -0
- package/dist/standalone/workflow-node-capture.d.ts +13 -0
- package/dist/standalone/workflow-node-capture.js +72 -0
- package/dist/standalone/workflow-root-authority.d.ts +27 -0
- package/dist/standalone/workflow-root-authority.js +87 -0
- package/dist/standalone/workflow-schedules.d.ts +52 -0
- package/dist/standalone/workflow-schedules.js +40 -0
- package/dist/standalone/workflow-trigger-host.d.ts +1716 -0
- package/dist/standalone/workflow-trigger-host.js +52 -0
- package/dist/standalone/workflows.d.ts +713 -0
- package/dist/standalone/workflows.js +554 -0
- package/dist/tenancy/auth0.d.ts +64 -0
- package/dist/tenancy/auth0.js +198 -0
- package/dist/tenancy/cloudflare/rate-limit.d.ts +8 -0
- package/dist/tenancy/cloudflare/rate-limit.js +19 -0
- package/dist/tenancy/cloudflare/registry.d.ts +50 -0
- package/dist/tenancy/cloudflare/registry.js +301 -0
- package/dist/tenancy/cloudflare.d.ts +2 -0
- package/dist/tenancy/cloudflare.js +2 -0
- package/dist/tenancy/cold-directory.d.ts +13 -0
- package/dist/tenancy/cold-directory.js +43 -0
- package/dist/tenancy/contracts.d.ts +195 -0
- package/dist/tenancy/contracts.js +1 -0
- package/dist/tenancy/index.d.ts +19 -0
- package/dist/tenancy/index.js +156 -0
- package/dist/tenancy/owner-key.d.ts +26 -0
- package/dist/tenancy/owner-key.js +63 -0
- package/dist/tenancy/oyster.d.ts +4 -0
- package/dist/tenancy/oyster.js +25 -0
- package/dist/tenancy/registry-record.d.ts +7 -0
- package/dist/tenancy/registry-record.js +44 -0
- package/dist/tenancy/registry.d.ts +27 -0
- package/dist/tenancy/registry.js +138 -0
- package/dist/tenancy/resolve.d.ts +7 -0
- package/dist/tenancy/resolve.js +64 -0
- package/dist/workers-git.js +1 -4
- package/dist/workers.d.ts +2 -2
- package/dist/workers.js +3 -1
- package/docs/api/build-contract.md +829 -32
- package/docs/api/build.md +253 -17
- package/docs/api/modules.md +40 -32
- package/docs/api/pack.md +6 -3
- package/docs/api/shell/app-directory.md +267 -0
- package/docs/api/shell/shell-module.md +64 -3
- package/docs/api/shell/workbench-directory.md +119 -0
- package/docs/api/shell/workbench.md +19 -0
- package/docs/api/shell.md +127 -0
- package/docs/api/tenancy/auth0.md +110 -0
- package/docs/api/tenancy/cloudflare.md +221 -0
- package/docs/api/tenancy/cold-directory.md +46 -0
- package/docs/api/tenancy/owner-key.md +63 -0
- package/docs/api/tenancy/registry.md +77 -0
- package/docs/api/tenancy/resolve.md +69 -0
- package/docs/api/tenancy.md +430 -0
- package/docs/api/workers-git.md +140 -21
- package/docs/api/workers.md +15 -2
- package/docs/site/agent-quickstart.mdx +52 -55
- package/examples/standalone/worker.ts +7 -14
- package/examples/standalone/wrangler.jsonc +67 -6
- package/package.json +78 -25
- package/dist/build/r2-artifact-writer.d.ts +0 -31
- package/dist/build/r2-artifact-writer.js +0 -179
- package/dist/source/template-write.js +0 -344
- package/docs/media/architecture.mmd +0 -32
- package/docs/media/architecture.png +0 -0
- package/docs/media/bonsai-network.png +0 -0
- package/docs/media/bonsai-repository.png +0 -0
- package/examples/git/worker.ts +0 -39
- package/examples/git/wrangler.jsonc +0 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
export const frameBindingWireScript = "var X;function l(e,t,r){function n(u,c){if(u._zod||Object.defineProperty(u,\"_zod\",{value:{def:c,constr:s,traits:new Set},enumerable:!1}),u._zod.traits.has(e))return;u._zod.traits.add(e),t(u,c);let a=s.prototype,p=Object.keys(a);for(let f=0;f<p.length;f++){let d=p[f];d in u||(u[d]=a[d].bind(u))}}let o=r?.Parent??Object;class i extends o{}Object.defineProperty(i,\"name\",{value:e});function s(u){var c;let a=r?.Parent?new i:this;n(a,u),(c=a._zod).deferred??(c.deferred=[]);for(let p of a._zod.deferred)p();return a}return Object.defineProperty(s,\"init\",{value:n}),Object.defineProperty(s,Symbol.hasInstance,{value:u=>r?.Parent&&u instanceof r.Parent?!0:u?._zod?.traits?.has(e)}),Object.defineProperty(s,\"name\",{value:e}),s}var $=class extends Error{constructor(){super(\"Encountered Promise during synchronous parse. Use .parseAsync() instead.\")}};(X=globalThis).__zod_globalConfig??(X.__zod_globalConfig={});var j=globalThis.__zod_globalConfig;function v(e){return e&&Object.assign(j,e),j}function H(e){let t=Object.values(e).filter(n=>typeof n==\"number\");return Object.entries(e).filter(([n,o])=>t.indexOf(+n)===-1).map(([n,o])=>o)}function Q(e,t){return typeof t==\"bigint\"?t.toString():t}function D(e){return{get value(){{let r=e();return Object.defineProperty(this,\"value\",{value:r}),r}throw new Error(\"cached value already set\")}}}function ee(e){let t=e.startsWith(\"^\")?1:0,r=e.endsWith(\"$\")?e.length-1:e.length;return e.slice(t,r)}var Y=Symbol(\"evaluating\");function g(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==Y)return n===void 0&&(n=Y,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}var L=\"captureStackTrace\"in Error?Error.captureStackTrace:(...e)=>{};function A(e){return typeof e==\"object\"&&e!==null&&!Array.isArray(e)}function te(e){if(A(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=\"function\")return!0;let r=t.prototype;return!(A(r)===!1||Object.prototype.hasOwnProperty.call(r,\"isPrototypeOf\")===!1)}var re=new Set([\"string\",\"number\",\"symbol\"]);function C(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function U(e,t,r){let n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function _(e){let t=e;if(!t)return{};if(typeof t==\"string\")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error(\"Cannot specify both `message` and `error` params\");t.error=t.message}return delete t.message,typeof t.error==\"string\"?{...t,error:()=>t.error}:t}function ne(e){return Object.keys(e).filter(t=>e[t]._zod.optin===\"optional\"&&e[t]._zod.optout===\"optional\")}var xt={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function y(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function oe(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue===!1)return!0;return!1}function b(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function T(e){return typeof e==\"string\"?e:e?.message}function Z(e,t,r){let n=e.message?e.message:T(e.inst?._zod.def?.error?.(e))??T(t?.error?.(e))??T(r.customError?.(e))??T(r.localeError?.(e))??\"Invalid input\",{inst:o,continue:i,input:s,...u}=e;return u.path??(u.path=[]),u.message=n,t?.reportInput&&(u.input=s),u}function B(...e){let[t,r,n]=e;return typeof t==\"string\"?{message:t,code:\"custom\",input:r,inst:n}:{...t}}var ie=(e,t)=>{e.name=\"$ZodError\",Object.defineProperty(e,\"_zod\",{value:e._zod,enumerable:!1}),Object.defineProperty(e,\"issues\",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Q,2),Object.defineProperty(e,\"toString\",{value:()=>e.message,enumerable:!1})},se=l(\"$ZodError\",ie),M=l(\"$ZodError\",ie,{Parent:Error});var We=e=>(t,r,n,o)=>{let i=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},i);if(s instanceof Promise)throw new $;if(s.issues.length){let u=new(o?.Err??e)(s.issues.map(c=>Z(c,i,v())));throw L(u,o?.callee),u}return s.value},w=We(M),Ke=e=>async(t,r,n,o)=>{let i=n?{...n,async:!0}:{async:!0},s=t._zod.run({value:r,issues:[]},i);if(s instanceof Promise&&(s=await s),s.issues.length){let u=new(o?.Err??e)(s.issues.map(c=>Z(c,i,v())));throw L(u,o?.callee),u}return s.value},k=Ke(M),Ge=e=>(t,r,n)=>{let o=n?{...n,async:!1}:{async:!1},i=t._zod.run({value:r,issues:[]},o);if(i instanceof Promise)throw new $;return i.issues.length?{success:!1,error:new(e??se)(i.issues.map(s=>Z(s,o,v())))}:{success:!0,data:i.value}},I=Ge(M),Je=e=>async(t,r,n)=>{let o=n?{...n,async:!0}:{async:!0},i=t._zod.run({value:r,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?{success:!1,error:new e(i.issues.map(s=>Z(s,o,v())))}:{success:!0,data:i.value}},S=Je(M);var qe=\"(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))\",Xe=new RegExp(`^${qe}$`);var ue=e=>{let t=e?`[\\\\s\\\\S]{${e?.minimum??0},${e?.maximum??\"\"}}`:\"[\\\\s\\\\S]*\";return new RegExp(`^${t}$`)};var ce=/^-?\\d+(?:\\.\\d+)?$/;var V=l(\"$ZodCheck\",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])});var pe={major:4,minor:4,patch:3};var h=l(\"$ZodType\",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=pe;let n=[...e._zod.def.checks??[]];e._zod.traits.has(\"$ZodCheck\")&&n.unshift(e);for(let o of n)for(let i of o._zod.onattach)i(e);if(n.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let o=(s,u,c)=>{let a=y(s),p;for(let f of u){if(f._zod.def.when){if(oe(s)||!f._zod.def.when(s))continue}else if(a)continue;let d=s.issues.length,m=f._zod.check(s);if(m instanceof Promise&&c?.async===!1)throw new $;if(p||m instanceof Promise)p=(p??Promise.resolve()).then(async()=>{await m,s.issues.length!==d&&(a||(a=y(s,d)))});else{if(s.issues.length===d)continue;a||(a=y(s,d))}}return p?p.then(()=>s):s},i=(s,u,c)=>{if(y(s))return s.aborted=!0,s;let a=o(u,n,c);if(a instanceof Promise){if(c.async===!1)throw new $;return a.then(p=>e._zod.parse(p,c))}return e._zod.parse(a,c)};e._zod.run=(s,u)=>{if(u.skipChecks)return e._zod.parse(s,u);if(u.direction===\"backward\"){let a=e._zod.parse({value:s.value,issues:[]},{...u,skipChecks:!0});return a instanceof Promise?a.then(p=>i(p,s,u)):i(a,s,u)}let c=e._zod.parse(s,u);if(c instanceof Promise){if(u.async===!1)throw new $;return c.then(a=>o(a,n,u))}return o(c,n,u)}}g(e,\"~standard\",()=>({validate:o=>{try{let i=I(e,o);return i.success?{value:i.data}:{issues:i.error?.issues}}catch{return S(e,o).then(s=>s.success?{value:s.data}:{issues:s.error?.issues})}},vendor:\"zod\",version:1}))}),xe=l(\"$ZodString\",(e,t)=>{h.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??ue(e._zod.bag),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value==\"string\"||r.issues.push({expected:\"string\",code:\"invalid_type\",input:r.value,inst:e}),r}});var ge=l(\"$ZodUnknown\",(e,t)=>{h.init(e,t),e._zod.parse=r=>r}),ze=l(\"$ZodNever\",(e,t)=>{h.init(e,t),e._zod.parse=(r,n)=>(r.issues.push({expected:\"never\",code:\"invalid_type\",input:r.value,inst:e}),r)});function le(e,t,r){e.issues.length&&t.issues.push(...b(r,e.issues)),t.value[r]=e.value}var $e=l(\"$ZodArray\",(e,t)=>{h.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!Array.isArray(o))return r.issues.push({expected:\"array\",code:\"invalid_type\",input:o,inst:e}),r;r.value=Array(o.length);let i=[];for(let s=0;s<o.length;s++){let u=o[s],c=t.element._zod.run({value:u,issues:[]},n);c instanceof Promise?i.push(c.then(a=>le(a,r,s))):le(c,r,s)}return i.length?Promise.all(i).then(()=>r):r}});function R(e,t,r,n,o,i){let s=r in n;if(e.issues.length){if(o&&i&&!s)return;t.issues.push(...b(r,e.issues))}if(!s&&!o){e.issues.length||t.issues.push({code:\"invalid_type\",expected:\"nonoptional\",input:void 0,path:[r]});return}e.value===void 0?s&&(t.value[r]=void 0):t.value[r]=e.value}function He(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(\"$ZodType\"))throw new Error(`Invalid element at key \"${n}\": expected a Zod schema`);let r=ne(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(r)}}function Qe(e,t,r,n,o,i){let s=[],u=o.keySet,c=o.catchall._zod,a=c.def.type,p=c.optin===\"optional\",f=c.optout===\"optional\";for(let d in t){if(d===\"__proto__\"||u.has(d))continue;if(a===\"never\"){s.push(d);continue}let m=c.run({value:t[d],issues:[]},n);m instanceof Promise?e.push(m.then(z=>R(z,r,d,t,p,f))):R(m,r,d,t,p,f)}return s.length&&r.issues.push({code:\"unrecognized_keys\",keys:s,input:t,inst:i}),e.length?Promise.all(e).then(()=>r):r}var ve=l(\"$ZodObject\",(e,t)=>{if(h.init(e,t),!Object.getOwnPropertyDescriptor(t,\"shape\")?.get){let u=t.shape;Object.defineProperty(t,\"shape\",{get:()=>{let c={...u};return Object.defineProperty(t,\"shape\",{value:c}),c}})}let n=D(()=>He(t));g(e._zod,\"propValues\",()=>{let u=t.shape,c={};for(let a in u){let p=u[a]._zod;if(p.values){c[a]??(c[a]=new Set);for(let f of p.values)c[a].add(f)}}return c});let o=A,i=t.catchall,s;e._zod.parse=(u,c)=>{s??(s=n.value);let a=u.value;if(!o(a))return u.issues.push({expected:\"object\",code:\"invalid_type\",input:a,inst:e}),u;u.value={};let p=[],f=s.shape;for(let d of s.keys){let m=f[d],z=m._zod.optin===\"optional\",q=m._zod.optout===\"optional\",N=m._zod.run({value:a[d],issues:[]},c);N instanceof Promise?p.push(N.then(Be=>R(Be,u,d,a,z,q))):R(N,u,d,a,z,q)}return i?Qe(p,a,u,c,n.value,e):p.length?Promise.all(p).then(()=>u):u}});function fe(e,t,r,n){for(let i of e)if(i.issues.length===0)return t.value=i.value,t;let o=e.filter(i=>!y(i));return o.length===1?(t.value=o[0].value,o[0]):(t.issues.push({code:\"invalid_union\",input:t.value,inst:r,errors:e.map(i=>i.issues.map(s=>Z(s,n,v())))}),t)}var be=l(\"$ZodUnion\",(e,t)=>{h.init(e,t),g(e._zod,\"optin\",()=>t.options.some(n=>n._zod.optin===\"optional\")?\"optional\":void 0),g(e._zod,\"optout\",()=>t.options.some(n=>n._zod.optout===\"optional\")?\"optional\":void 0),g(e._zod,\"values\",()=>{if(t.options.every(n=>n._zod.values))return new Set(t.options.flatMap(n=>Array.from(n._zod.values)))}),g(e._zod,\"pattern\",()=>{if(t.options.every(n=>n._zod.pattern)){let n=t.options.map(o=>o._zod.pattern);return new RegExp(`^(${n.map(o=>ee(o.source)).join(\"|\")})$`)}});let r=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(n,o)=>{if(r)return r(n,o);let i=!1,s=[];for(let u of t.options){let c=u._zod.run({value:n.value,issues:[]},o);if(c instanceof Promise)s.push(c),i=!0;else{if(c.issues.length===0)return c;s.push(c)}}return i?Promise.all(s).then(u=>fe(u,n,e,o)):fe(s,n,e,o)}});var Ze=l(\"$ZodDiscriminatedUnion\",(e,t)=>{t.inclusive=!1,be.init(e,t);let r=e._zod.parse;g(e._zod,\"propValues\",()=>{let o={};for(let i of t.options){let s=i._zod.propValues;if(!s||Object.keys(s).length===0)throw new Error(`Invalid discriminated union option at index \"${t.options.indexOf(i)}\"`);for(let[u,c]of Object.entries(s)){o[u]||(o[u]=new Set);for(let a of c)o[u].add(a)}}return o});let n=D(()=>{let o=t.options,i=new Map;for(let s of o){let u=s._zod.propValues?.[t.discriminator];if(!u||u.size===0)throw new Error(`Invalid discriminated union option at index \"${t.options.indexOf(s)}\"`);for(let c of u){if(i.has(c))throw new Error(`Duplicate discriminator value \"${String(c)}\"`);i.set(c,s)}}return i});e._zod.parse=(o,i)=>{let s=o.value;if(!A(s))return o.issues.push({code:\"invalid_type\",expected:\"object\",input:s,inst:e}),o;let u=n.value.get(s?.[t.discriminator]);return u?u._zod.run(o,i):t.unionFallback||i.direction===\"backward\"?r(o,i):(o.issues.push({code:\"invalid_union\",errors:[],note:\"No matching discriminator\",discriminator:t.discriminator,options:Array.from(n.value.keys()),input:s,path:[t.discriminator],inst:e}),o)}});var W=l(\"$ZodTuple\",(e,t)=>{h.init(e,t);let r=t.items;e._zod.parse=(n,o)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({input:i,inst:e,expected:\"tuple\",code:\"invalid_type\"}),n;n.value=[];let s=[],u=de(r,\"optin\"),c=de(r,\"optout\");if(!t.rest){if(i.length<u)return n.issues.push({code:\"too_small\",minimum:u,inclusive:!0,input:i,inst:e,origin:\"array\"}),n;i.length>r.length&&n.issues.push({code:\"too_big\",maximum:r.length,inclusive:!0,input:i,inst:e,origin:\"array\"})}let a=new Array(r.length);for(let p=0;p<r.length;p++){let f=r[p]._zod.run({value:i[p],issues:[]},o);f instanceof Promise?s.push(f.then(d=>{a[p]=d})):a[p]=f}if(t.rest){let p=r.length-1,f=i.slice(r.length);for(let d of f){p++;let m=t.rest._zod.run({value:d,issues:[]},o);m instanceof Promise?s.push(m.then(z=>me(z,n,p))):me(m,n,p)}}return s.length?Promise.all(s).then(()=>he(a,n,r,i,c)):he(a,n,r,i,c)}});function de(e,t){for(let r=e.length-1;r>=0;r--)if(e[r]._zod[t]!==\"optional\")return r+1;return 0}function me(e,t,r){e.issues.length&&t.issues.push(...b(r,e.issues)),t.value[r]=e.value}function he(e,t,r,n,o){for(let i=0;i<r.length;i++){let s=e[i],u=i<n.length;if(s.issues.length){if(!u&&i>=o){t.value.length=i;break}t.issues.push(...b(i,s.issues))}t.value[i]=s.value}for(let i=t.value.length-1;i>=n.length&&(r[i]._zod.optout===\"optional\"&&t.value[i]===void 0);i--)t.value.length=i;return t}var ye=l(\"$ZodRecord\",(e,t)=>{h.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!te(o))return r.issues.push({expected:\"record\",code:\"invalid_type\",input:o,inst:e}),r;let i=[],s=t.keyType._zod.values;if(s){r.value={};let u=new Set;for(let a of s)if(typeof a==\"string\"||typeof a==\"number\"||typeof a==\"symbol\"){u.add(typeof a==\"number\"?a.toString():a);let p=t.keyType._zod.run({value:a,issues:[]},n);if(p instanceof Promise)throw new Error(\"Async schemas not supported in object keys currently\");if(p.issues.length){r.issues.push({code:\"invalid_key\",origin:\"record\",issues:p.issues.map(m=>Z(m,n,v())),input:a,path:[a],inst:e});continue}let f=p.value,d=t.valueType._zod.run({value:o[a],issues:[]},n);d instanceof Promise?i.push(d.then(m=>{m.issues.length&&r.issues.push(...b(a,m.issues)),r.value[f]=m.value})):(d.issues.length&&r.issues.push(...b(a,d.issues)),r.value[f]=d.value)}let c;for(let a in o)u.has(a)||(c=c??[],c.push(a));c&&c.length>0&&r.issues.push({code:\"unrecognized_keys\",input:o,inst:e,keys:c})}else{r.value={};for(let u of Reflect.ownKeys(o)){if(u===\"__proto__\"||!Object.prototype.propertyIsEnumerable.call(o,u))continue;let c=t.keyType._zod.run({value:u,issues:[]},n);if(c instanceof Promise)throw new Error(\"Async schemas not supported in object keys currently\");if(typeof u==\"string\"&&ce.test(u)&&c.issues.length){let f=t.keyType._zod.run({value:Number(u),issues:[]},n);if(f instanceof Promise)throw new Error(\"Async schemas not supported in object keys currently\");f.issues.length===0&&(c=f)}if(c.issues.length){t.mode===\"loose\"?r.value[u]=o[u]:r.issues.push({code:\"invalid_key\",origin:\"record\",issues:c.issues.map(f=>Z(f,n,v())),input:u,path:[u],inst:e});continue}let p=t.valueType._zod.run({value:o[u],issues:[]},n);p instanceof Promise?i.push(p.then(f=>{f.issues.length&&r.issues.push(...b(u,f.issues)),r.value[c.value]=f.value})):(p.issues.length&&r.issues.push(...b(u,p.issues)),r.value[c.value]=p.value)}}return i.length?Promise.all(i).then(()=>r):r}});var we=l(\"$ZodEnum\",(e,t)=>{h.init(e,t);let r=H(t.entries),n=new Set(r);e._zod.values=n,e._zod.pattern=new RegExp(`^(${r.filter(o=>re.has(typeof o)).map(o=>typeof o==\"string\"?C(o):o.toString()).join(\"|\")})$`),e._zod.parse=(o,i)=>{let s=o.value;return n.has(s)||o.issues.push({code:\"invalid_value\",values:r,input:s,inst:e}),o}}),ke=l(\"$ZodLiteral\",(e,t)=>{if(h.init(e,t),t.values.length===0)throw new Error(\"Cannot create literal schema with no valid values\");let r=new Set(t.values);e._zod.values=r,e._zod.pattern=new RegExp(`^(${t.values.map(n=>typeof n==\"string\"?C(n):n?C(n.toString()):String(n)).join(\"|\")})$`),e._zod.parse=(n,o)=>{let i=n.value;return r.has(i)||n.issues.push({code:\"invalid_value\",values:t.values,input:i,inst:e}),n}});var Pe=l(\"$ZodFunction\",(e,t)=>(h.init(e,t),e._def=t,e._zod.def=t,e.implement=r=>{if(typeof r!=\"function\")throw new Error(\"implement() must be called with a function\");return function(...n){let o=e._def.input?w(e._def.input,n):n,i=Reflect.apply(r,this,o);return e._def.output?w(e._def.output,i):i}},e.implementAsync=r=>{if(typeof r!=\"function\")throw new Error(\"implementAsync() must be called with a function\");return async function(...n){let o=e._def.input?await k(e._def.input,n):n,i=await Reflect.apply(r,this,o);return e._def.output?await k(e._def.output,i):i}},e._zod.parse=(r,n)=>typeof r.value!=\"function\"?(r.issues.push({code:\"invalid_type\",expected:\"function\",input:r.value,inst:e}),r):(e._def.output&&e._def.output._zod.def.type===\"promise\"?r.value=e.implementAsync(r.value):r.value=e.implement(r.value),r),e.input=(...r)=>{let n=e.constructor;return Array.isArray(r[0])?new n({type:\"function\",input:new W({type:\"tuple\",items:r[0],rest:r[1]}),output:e._def.output}):new n({type:\"function\",input:r[0],output:e._def.output})},e.output=r=>{let n=e.constructor;return new n({type:\"function\",input:e._def.input,output:r})},e)),Ae=l(\"$ZodPromise\",(e,t)=>{h.init(e,t),e._zod.parse=(r,n)=>Promise.resolve(r.value).then(o=>t.innerType._zod.run({value:o,issues:[]},n))});var Ee=l(\"$ZodCustom\",(e,t)=>{V.init(e,t),h.init(e,t),e._zod.parse=(r,n)=>r,e._zod.check=r=>{let n=r.value,o=t.fn(n);if(o instanceof Promise)return o.then(i=>_e(i,r,n,e));_e(o,r,n,e)}});function _e(e,t,r,n){if(!e){let o={code:\"custom\",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(o.params=n._zod.def.params),t.issues.push(B(o))}}function Me(e,t){return new e({type:\"string\",..._(t)})}function Ie(e){return new e({type:\"unknown\"})}function Se(e,t){return new e({type:\"never\",..._(t)})}function Te(e,t,r){let n=_(r);return n.abort??(n.abort=!0),new e({type:\"custom\",check:\"custom\",fn:t,...n})}var x=l(\"ZodMiniType\",(e,t)=>{if(!e._zod)throw new Error(\"Uninitialized schema in ZodMiniType.\");h.init(e,t),e.def=t,e.type=t.type,e.parse=(r,n)=>w(e,r,n,{callee:e.parse}),e.safeParse=(r,n)=>I(e,r,n),e.parseAsync=async(r,n)=>k(e,r,n,{callee:e.parseAsync}),e.safeParseAsync=async(r,n)=>S(e,r,n),e.check=(...r)=>e.clone({...t,checks:[...t.checks??[],...r.map(n=>typeof n==\"function\"?{_zod:{check:n,def:{check:\"custom\"},onattach:[]}}:n)]},{parent:!0}),e.with=e.check,e.clone=(r,n)=>U(e,r,n),e.brand=()=>e,e.register=((r,n)=>(r.add(e,n),e)),e.apply=r=>r(e)}),rt=l(\"ZodMiniString\",(e,t)=>{xe.init(e,t),x.init(e,t)});function O(e){return Me(rt,e)}var nt=l(\"ZodMiniUnknown\",(e,t)=>{ge.init(e,t),x.init(e,t)});function P(){return Ie(nt)}var ot=l(\"ZodMiniNever\",(e,t)=>{ze.init(e,t),x.init(e,t)});function it(e){return Se(ot,e)}var st=l(\"ZodMiniArray\",(e,t)=>{$e.init(e,t),x.init(e,t)});function K(e,t){return new st({type:\"array\",element:e,..._(t)})}var Re=l(\"ZodMiniObject\",(e,t)=>{ve.init(e,t),x.init(e,t),g(e,\"shape\",()=>t.shape)});function Oe(e,t){let r={type:\"object\",shape:e??{},..._(t)};return new Re(r)}function G(e,t){return new Re({type:\"object\",shape:e,catchall:it(),..._(t)})}var ut=l(\"ZodMiniDiscriminatedUnion\",(e,t)=>{Ze.init(e,t),x.init(e,t)});function Ne(e,t,r){return new ut({type:\"union\",options:t,discriminator:e,..._(r)})}var ct=l(\"ZodMiniTuple\",(e,t)=>{W.init(e,t),x.init(e,t)});function at(e,t,r){let n=t instanceof h,o=n?r:t,i=n?t:null;return new ct({type:\"tuple\",items:e,rest:i,..._(o)})}var Ce=l(\"ZodMiniRecord\",(e,t)=>{ye.init(e,t),x.init(e,t)});function je(e,t,r){return!t||!t._zod?new Ce({type:\"record\",keyType:O(),valueType:e,..._(t)}):new Ce({type:\"record\",keyType:e,valueType:t,..._(r)})}var pt=l(\"ZodMiniEnum\",(e,t)=>{we.init(e,t),x.init(e,t),e.options=Object.values(t.entries)});function Fe(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new pt({type:\"enum\",entries:r,..._(t)})}var lt=l(\"ZodMiniLiteral\",(e,t)=>{ke.init(e,t),x.init(e,t)});function J(e,t){return new lt({type:\"literal\",values:Array.isArray(e)?e:[e],..._(t)})}var ft=l(\"ZodMiniPromise\",(e,t)=>{Ae.init(e,t),x.init(e,t)});function De(e){return new ft({type:\"promise\",innerType:e})}var dt=l(\"ZodMiniCustom\",(e,t)=>{Ee.init(e,t),x.init(e,t)});function mt(e,t){return Te(dt,e??(()=>!0),t)}function Le(e,t={}){let r=mt(n=>n instanceof e,t);return r._zod.bag.Class=e,r._zod.check=n=>{n.value instanceof e||n.issues.push({code:\"invalid_type\",expected:e.name,input:n.value,inst:r,path:[...r._zod.def.path??[]]})},r}var ht=l(\"ZodMiniFunction\",(e,t)=>{Pe.init(e,t),x.init(e,t)});function Ue(e){return new ht({type:\"function\",input:Array.isArray(e?.input)?at(e?.input):e?.input??K(P()),output:e?.output??P()})}var _t=je(O(),Le(Object));function go(e){let t=Ne(\"kind\",[G({kind:J(\"result\"),value:P()}),G({kind:J(\"local_refusal\"),code:Fe(e)})]);class r extends Error{constructor(u){super(`App binding refused: ${u}`);this.code=u}code;name=\"AppInstanceError\"}let n=i=>t.parse(i),o=i=>{let s=t.parse(i);if(s.kind===\"local_refusal\")throw new r(s.code);return s.value};return{decode:n,wrap(i){return Object.fromEntries(Object.entries(_t.parse(i)).map(([s,u])=>[s,new Proxy({},{get(c,a){let p=O().safeParse(a);if(!(!p.success||p.data===\"then\"))return async(...f)=>{let d=Ue({input:K(P()),output:De(P())}),m=Oe({[p.data]:d}).parse(Object.create(u))[p.data];if(m===void 0)throw new Error(\"App binding method unavailable\");return o(await m.apply(u,[...f]))}}})]))}}}export{go as createFrameBindingWire};\n";
|
|
1
|
+
export const frameBindingWireScript = "var X;function l(e,t,r){function n(u,c){if(u._zod||Object.defineProperty(u,\"_zod\",{value:{def:c,constr:s,traits:new Set},enumerable:!1}),u._zod.traits.has(e))return;u._zod.traits.add(e),t(u,c);let a=s.prototype,p=Object.keys(a);for(let f=0;f<p.length;f++){let d=p[f];d in u||(u[d]=a[d].bind(u))}}let o=r?.Parent??Object;class i extends o{}Object.defineProperty(i,\"name\",{value:e});function s(u){var c;let a=r?.Parent?new i:this;n(a,u),(c=a._zod).deferred??(c.deferred=[]);for(let p of a._zod.deferred)p();return a}return Object.defineProperty(s,\"init\",{value:n}),Object.defineProperty(s,Symbol.hasInstance,{value:u=>r?.Parent&&u instanceof r.Parent?!0:u?._zod?.traits?.has(e)}),Object.defineProperty(s,\"name\",{value:e}),s}var $=class extends Error{constructor(){super(\"Encountered Promise during synchronous parse. Use .parseAsync() instead.\")}};(X=globalThis).__zod_globalConfig??(X.__zod_globalConfig={});var j=globalThis.__zod_globalConfig;function v(e){return e&&Object.assign(j,e),j}function H(e){let t=Object.values(e).filter(n=>typeof n==\"number\");return Object.entries(e).filter(([n,o])=>t.indexOf(+n)===-1).map(([n,o])=>o)}function Q(e,t){return typeof t==\"bigint\"?t.toString():t}function D(e){return{get value(){{let r=e();return Object.defineProperty(this,\"value\",{value:r}),r}throw new Error(\"cached value already set\")}}}function ee(e){let t=e.startsWith(\"^\")?1:0,r=e.endsWith(\"$\")?e.length-1:e.length;return e.slice(t,r)}var Y=Symbol(\"evaluating\");function _(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==Y)return n===void 0&&(n=Y,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}var L=\"captureStackTrace\"in Error?Error.captureStackTrace:(...e)=>{};function A(e){return typeof e==\"object\"&&e!==null&&!Array.isArray(e)}function te(e){if(A(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=\"function\")return!0;let r=t.prototype;return!(A(r)===!1||Object.prototype.hasOwnProperty.call(r,\"isPrototypeOf\")===!1)}var re=new Set([\"string\",\"number\",\"symbol\"]);function C(e){return e.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function U(e,t,r){let n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function x(e){let t=e;if(!t)return{};if(typeof t==\"string\")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error(\"Cannot specify both `message` and `error` params\");t.error=t.message}return delete t.message,typeof t.error==\"string\"?{...t,error:()=>t.error}:t}function ne(e){return Object.keys(e).filter(t=>e[t]._zod.optin===\"optional\"&&e[t]._zod.optout===\"optional\")}var $t={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function y(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue!==!0)return!0;return!1}function oe(e,t=0){if(e.aborted===!0)return!0;for(let r=t;r<e.issues.length;r++)if(e.issues[r]?.continue===!1)return!0;return!1}function b(e,t){return t.map(r=>{var n;return(n=r).path??(n.path=[]),r.path.unshift(e),r})}function T(e){return typeof e==\"string\"?e:e?.message}function Z(e,t,r){let n=e.message?e.message:T(e.inst?._zod.def?.error?.(e))??T(t?.error?.(e))??T(r.customError?.(e))??T(r.localeError?.(e))??\"Invalid input\",{inst:o,continue:i,input:s,...u}=e;return u.path??(u.path=[]),u.message=n,t?.reportInput&&(u.input=s),u}function B(...e){let[t,r,n]=e;return typeof t==\"string\"?{message:t,code:\"custom\",input:r,inst:n}:{...t}}var ie=(e,t)=>{e.name=\"$ZodError\",Object.defineProperty(e,\"_zod\",{value:e._zod,enumerable:!1}),Object.defineProperty(e,\"issues\",{value:t,enumerable:!1}),e.message=JSON.stringify(t,Q,2),Object.defineProperty(e,\"toString\",{value:()=>e.message,enumerable:!1})},se=l(\"$ZodError\",ie),M=l(\"$ZodError\",ie,{Parent:Error});var Ge=e=>(t,r,n,o)=>{let i=n?{...n,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},i);if(s instanceof Promise)throw new $;if(s.issues.length){let u=new(o?.Err??e)(s.issues.map(c=>Z(c,i,v())));throw L(u,o?.callee),u}return s.value},w=Ge(M),Je=e=>async(t,r,n,o)=>{let i=n?{...n,async:!0}:{async:!0},s=t._zod.run({value:r,issues:[]},i);if(s instanceof Promise&&(s=await s),s.issues.length){let u=new(o?.Err??e)(s.issues.map(c=>Z(c,i,v())));throw L(u,o?.callee),u}return s.value},k=Je(M),qe=e=>(t,r,n)=>{let o=n?{...n,async:!1}:{async:!1},i=t._zod.run({value:r,issues:[]},o);if(i instanceof Promise)throw new $;return i.issues.length?{success:!1,error:new(e??se)(i.issues.map(s=>Z(s,o,v())))}:{success:!0,data:i.value}},I=qe(M),Xe=e=>async(t,r,n)=>{let o=n?{...n,async:!0}:{async:!0},i=t._zod.run({value:r,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?{success:!1,error:new e(i.issues.map(s=>Z(s,o,v())))}:{success:!0,data:i.value}},S=Xe(M);var Ye=\"(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))\",He=new RegExp(`^${Ye}$`);var ue=e=>{let t=e?`[\\\\s\\\\S]{${e?.minimum??0},${e?.maximum??\"\"}}`:\"[\\\\s\\\\S]*\";return new RegExp(`^${t}$`)};var ce=/^-?\\d+(?:\\.\\d+)?$/;var V=l(\"$ZodCheck\",(e,t)=>{var r;e._zod??(e._zod={}),e._zod.def=t,(r=e._zod).onattach??(r.onattach=[])});var pe={major:4,minor:4,patch:3};var h=l(\"$ZodType\",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=pe;let n=[...e._zod.def.checks??[]];e._zod.traits.has(\"$ZodCheck\")&&n.unshift(e);for(let o of n)for(let i of o._zod.onattach)i(e);if(n.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let o=(s,u,c)=>{let a=y(s),p;for(let f of u){if(f._zod.def.when){if(oe(s)||!f._zod.def.when(s))continue}else if(a)continue;let d=s.issues.length,m=f._zod.check(s);if(m instanceof Promise&&c?.async===!1)throw new $;if(p||m instanceof Promise)p=(p??Promise.resolve()).then(async()=>{await m,s.issues.length!==d&&(a||(a=y(s,d)))});else{if(s.issues.length===d)continue;a||(a=y(s,d))}}return p?p.then(()=>s):s},i=(s,u,c)=>{if(y(s))return s.aborted=!0,s;let a=o(u,n,c);if(a instanceof Promise){if(c.async===!1)throw new $;return a.then(p=>e._zod.parse(p,c))}return e._zod.parse(a,c)};e._zod.run=(s,u)=>{if(u.skipChecks)return e._zod.parse(s,u);if(u.direction===\"backward\"){let a=e._zod.parse({value:s.value,issues:[]},{...u,skipChecks:!0});return a instanceof Promise?a.then(p=>i(p,s,u)):i(a,s,u)}let c=e._zod.parse(s,u);if(c instanceof Promise){if(u.async===!1)throw new $;return c.then(a=>o(a,n,u))}return o(c,n,u)}}_(e,\"~standard\",()=>({validate:o=>{try{let i=I(e,o);return i.success?{value:i.data}:{issues:i.error?.issues}}catch{return S(e,o).then(s=>s.success?{value:s.data}:{issues:s.error?.issues})}},vendor:\"zod\",version:1}))}),xe=l(\"$ZodString\",(e,t)=>{h.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??ue(e._zod.bag),e._zod.parse=(r,n)=>{if(t.coerce)try{r.value=String(r.value)}catch{}return typeof r.value==\"string\"||r.issues.push({expected:\"string\",code:\"invalid_type\",input:r.value,inst:e}),r}});var ge=l(\"$ZodUnknown\",(e,t)=>{h.init(e,t),e._zod.parse=r=>r}),ze=l(\"$ZodNever\",(e,t)=>{h.init(e,t),e._zod.parse=(r,n)=>(r.issues.push({expected:\"never\",code:\"invalid_type\",input:r.value,inst:e}),r)});function le(e,t,r){e.issues.length&&t.issues.push(...b(r,e.issues)),t.value[r]=e.value}var $e=l(\"$ZodArray\",(e,t)=>{h.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!Array.isArray(o))return r.issues.push({expected:\"array\",code:\"invalid_type\",input:o,inst:e}),r;r.value=Array(o.length);let i=[];for(let s=0;s<o.length;s++){let u=o[s],c=t.element._zod.run({value:u,issues:[]},n);c instanceof Promise?i.push(c.then(a=>le(a,r,s))):le(c,r,s)}return i.length?Promise.all(i).then(()=>r):r}});function R(e,t,r,n,o,i){let s=r in n;if(e.issues.length){if(o&&i&&!s)return;t.issues.push(...b(r,e.issues))}if(!s&&!o){e.issues.length||t.issues.push({code:\"invalid_type\",expected:\"nonoptional\",input:void 0,path:[r]});return}e.value===void 0?s&&(t.value[r]=void 0):t.value[r]=e.value}function et(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(\"$ZodType\"))throw new Error(`Invalid element at key \"${n}\": expected a Zod schema`);let r=ne(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(r)}}function tt(e,t,r,n,o,i){let s=[],u=o.keySet,c=o.catchall._zod,a=c.def.type,p=c.optin===\"optional\",f=c.optout===\"optional\";for(let d in t){if(d===\"__proto__\"||u.has(d))continue;if(a===\"never\"){s.push(d);continue}let m=c.run({value:t[d],issues:[]},n);m instanceof Promise?e.push(m.then(z=>R(z,r,d,t,p,f))):R(m,r,d,t,p,f)}return s.length&&r.issues.push({code:\"unrecognized_keys\",keys:s,input:t,inst:i}),e.length?Promise.all(e).then(()=>r):r}var ve=l(\"$ZodObject\",(e,t)=>{if(h.init(e,t),!Object.getOwnPropertyDescriptor(t,\"shape\")?.get){let u=t.shape;Object.defineProperty(t,\"shape\",{get:()=>{let c={...u};return Object.defineProperty(t,\"shape\",{value:c}),c}})}let n=D(()=>et(t));_(e._zod,\"propValues\",()=>{let u=t.shape,c={};for(let a in u){let p=u[a]._zod;if(p.values){c[a]??(c[a]=new Set);for(let f of p.values)c[a].add(f)}}return c});let o=A,i=t.catchall,s;e._zod.parse=(u,c)=>{s??(s=n.value);let a=u.value;if(!o(a))return u.issues.push({expected:\"object\",code:\"invalid_type\",input:a,inst:e}),u;u.value={};let p=[],f=s.shape;for(let d of s.keys){let m=f[d],z=m._zod.optin===\"optional\",q=m._zod.optout===\"optional\",N=m._zod.run({value:a[d],issues:[]},c);N instanceof Promise?p.push(N.then(We=>R(We,u,d,a,z,q))):R(N,u,d,a,z,q)}return i?tt(p,a,u,c,n.value,e):p.length?Promise.all(p).then(()=>u):u}});function fe(e,t,r,n){for(let i of e)if(i.issues.length===0)return t.value=i.value,t;let o=e.filter(i=>!y(i));return o.length===1?(t.value=o[0].value,o[0]):(t.issues.push({code:\"invalid_union\",input:t.value,inst:r,errors:e.map(i=>i.issues.map(s=>Z(s,n,v())))}),t)}var be=l(\"$ZodUnion\",(e,t)=>{h.init(e,t),_(e._zod,\"optin\",()=>t.options.some(n=>n._zod.optin===\"optional\")?\"optional\":void 0),_(e._zod,\"optout\",()=>t.options.some(n=>n._zod.optout===\"optional\")?\"optional\":void 0),_(e._zod,\"values\",()=>{if(t.options.every(n=>n._zod.values))return new Set(t.options.flatMap(n=>Array.from(n._zod.values)))}),_(e._zod,\"pattern\",()=>{if(t.options.every(n=>n._zod.pattern)){let n=t.options.map(o=>o._zod.pattern);return new RegExp(`^(${n.map(o=>ee(o.source)).join(\"|\")})$`)}});let r=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(n,o)=>{if(r)return r(n,o);let i=!1,s=[];for(let u of t.options){let c=u._zod.run({value:n.value,issues:[]},o);if(c instanceof Promise)s.push(c),i=!0;else{if(c.issues.length===0)return c;s.push(c)}}return i?Promise.all(s).then(u=>fe(u,n,e,o)):fe(s,n,e,o)}});var Ze=l(\"$ZodDiscriminatedUnion\",(e,t)=>{t.inclusive=!1,be.init(e,t);let r=e._zod.parse;_(e._zod,\"propValues\",()=>{let o={};for(let i of t.options){let s=i._zod.propValues;if(!s||Object.keys(s).length===0)throw new Error(`Invalid discriminated union option at index \"${t.options.indexOf(i)}\"`);for(let[u,c]of Object.entries(s)){o[u]||(o[u]=new Set);for(let a of c)o[u].add(a)}}return o});let n=D(()=>{let o=t.options,i=new Map;for(let s of o){let u=s._zod.propValues?.[t.discriminator];if(!u||u.size===0)throw new Error(`Invalid discriminated union option at index \"${t.options.indexOf(s)}\"`);for(let c of u){if(i.has(c))throw new Error(`Duplicate discriminator value \"${String(c)}\"`);i.set(c,s)}}return i});e._zod.parse=(o,i)=>{let s=o.value;if(!A(s))return o.issues.push({code:\"invalid_type\",expected:\"object\",input:s,inst:e}),o;let u=n.value.get(s?.[t.discriminator]);return u?u._zod.run(o,i):t.unionFallback||i.direction===\"backward\"?r(o,i):(o.issues.push({code:\"invalid_union\",errors:[],note:\"No matching discriminator\",discriminator:t.discriminator,options:Array.from(n.value.keys()),input:s,path:[t.discriminator],inst:e}),o)}});var W=l(\"$ZodTuple\",(e,t)=>{h.init(e,t);let r=t.items;e._zod.parse=(n,o)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({input:i,inst:e,expected:\"tuple\",code:\"invalid_type\"}),n;n.value=[];let s=[],u=de(r,\"optin\"),c=de(r,\"optout\");if(!t.rest){if(i.length<u)return n.issues.push({code:\"too_small\",minimum:u,inclusive:!0,input:i,inst:e,origin:\"array\"}),n;i.length>r.length&&n.issues.push({code:\"too_big\",maximum:r.length,inclusive:!0,input:i,inst:e,origin:\"array\"})}let a=new Array(r.length);for(let p=0;p<r.length;p++){let f=r[p]._zod.run({value:i[p],issues:[]},o);f instanceof Promise?s.push(f.then(d=>{a[p]=d})):a[p]=f}if(t.rest){let p=r.length-1,f=i.slice(r.length);for(let d of f){p++;let m=t.rest._zod.run({value:d,issues:[]},o);m instanceof Promise?s.push(m.then(z=>me(z,n,p))):me(m,n,p)}}return s.length?Promise.all(s).then(()=>he(a,n,r,i,c)):he(a,n,r,i,c)}});function de(e,t){for(let r=e.length-1;r>=0;r--)if(e[r]._zod[t]!==\"optional\")return r+1;return 0}function me(e,t,r){e.issues.length&&t.issues.push(...b(r,e.issues)),t.value[r]=e.value}function he(e,t,r,n,o){for(let i=0;i<r.length;i++){let s=e[i],u=i<n.length;if(s.issues.length){if(!u&&i>=o){t.value.length=i;break}t.issues.push(...b(i,s.issues))}t.value[i]=s.value}for(let i=t.value.length-1;i>=n.length&&(r[i]._zod.optout===\"optional\"&&t.value[i]===void 0);i--)t.value.length=i;return t}var ye=l(\"$ZodRecord\",(e,t)=>{h.init(e,t),e._zod.parse=(r,n)=>{let o=r.value;if(!te(o))return r.issues.push({expected:\"record\",code:\"invalid_type\",input:o,inst:e}),r;let i=[],s=t.keyType._zod.values;if(s){r.value={};let u=new Set;for(let a of s)if(typeof a==\"string\"||typeof a==\"number\"||typeof a==\"symbol\"){u.add(typeof a==\"number\"?a.toString():a);let p=t.keyType._zod.run({value:a,issues:[]},n);if(p instanceof Promise)throw new Error(\"Async schemas not supported in object keys currently\");if(p.issues.length){r.issues.push({code:\"invalid_key\",origin:\"record\",issues:p.issues.map(m=>Z(m,n,v())),input:a,path:[a],inst:e});continue}let f=p.value,d=t.valueType._zod.run({value:o[a],issues:[]},n);d instanceof Promise?i.push(d.then(m=>{m.issues.length&&r.issues.push(...b(a,m.issues)),r.value[f]=m.value})):(d.issues.length&&r.issues.push(...b(a,d.issues)),r.value[f]=d.value)}let c;for(let a in o)u.has(a)||(c=c??[],c.push(a));c&&c.length>0&&r.issues.push({code:\"unrecognized_keys\",input:o,inst:e,keys:c})}else{r.value={};for(let u of Reflect.ownKeys(o)){if(u===\"__proto__\"||!Object.prototype.propertyIsEnumerable.call(o,u))continue;let c=t.keyType._zod.run({value:u,issues:[]},n);if(c instanceof Promise)throw new Error(\"Async schemas not supported in object keys currently\");if(typeof u==\"string\"&&ce.test(u)&&c.issues.length){let f=t.keyType._zod.run({value:Number(u),issues:[]},n);if(f instanceof Promise)throw new Error(\"Async schemas not supported in object keys currently\");f.issues.length===0&&(c=f)}if(c.issues.length){t.mode===\"loose\"?r.value[u]=o[u]:r.issues.push({code:\"invalid_key\",origin:\"record\",issues:c.issues.map(f=>Z(f,n,v())),input:u,path:[u],inst:e});continue}let p=t.valueType._zod.run({value:o[u],issues:[]},n);p instanceof Promise?i.push(p.then(f=>{f.issues.length&&r.issues.push(...b(u,f.issues)),r.value[c.value]=f.value})):(p.issues.length&&r.issues.push(...b(u,p.issues)),r.value[c.value]=p.value)}}return i.length?Promise.all(i).then(()=>r):r}});var we=l(\"$ZodEnum\",(e,t)=>{h.init(e,t);let r=H(t.entries),n=new Set(r);e._zod.values=n,e._zod.pattern=new RegExp(`^(${r.filter(o=>re.has(typeof o)).map(o=>typeof o==\"string\"?C(o):o.toString()).join(\"|\")})$`),e._zod.parse=(o,i)=>{let s=o.value;return n.has(s)||o.issues.push({code:\"invalid_value\",values:r,input:s,inst:e}),o}}),ke=l(\"$ZodLiteral\",(e,t)=>{if(h.init(e,t),t.values.length===0)throw new Error(\"Cannot create literal schema with no valid values\");let r=new Set(t.values);e._zod.values=r,e._zod.pattern=new RegExp(`^(${t.values.map(n=>typeof n==\"string\"?C(n):n?C(n.toString()):String(n)).join(\"|\")})$`),e._zod.parse=(n,o)=>{let i=n.value;return r.has(i)||n.issues.push({code:\"invalid_value\",values:t.values,input:i,inst:e}),n}});var Pe=l(\"$ZodFunction\",(e,t)=>(h.init(e,t),e._def=t,e._zod.def=t,e.implement=r=>{if(typeof r!=\"function\")throw new Error(\"implement() must be called with a function\");return function(...n){let o=e._def.input?w(e._def.input,n):n,i=Reflect.apply(r,this,o);return e._def.output?w(e._def.output,i):i}},e.implementAsync=r=>{if(typeof r!=\"function\")throw new Error(\"implementAsync() must be called with a function\");return async function(...n){let o=e._def.input?await k(e._def.input,n):n,i=await Reflect.apply(r,this,o);return e._def.output?await k(e._def.output,i):i}},e._zod.parse=(r,n)=>typeof r.value!=\"function\"?(r.issues.push({code:\"invalid_type\",expected:\"function\",input:r.value,inst:e}),r):(e._def.output&&e._def.output._zod.def.type===\"promise\"?r.value=e.implementAsync(r.value):r.value=e.implement(r.value),r),e.input=(...r)=>{let n=e.constructor;return Array.isArray(r[0])?new n({type:\"function\",input:new W({type:\"tuple\",items:r[0],rest:r[1]}),output:e._def.output}):new n({type:\"function\",input:r[0],output:e._def.output})},e.output=r=>{let n=e.constructor;return new n({type:\"function\",input:e._def.input,output:r})},e)),Ae=l(\"$ZodPromise\",(e,t)=>{h.init(e,t),e._zod.parse=(r,n)=>Promise.resolve(r.value).then(o=>t.innerType._zod.run({value:o,issues:[]},n))}),Ee=l(\"$ZodLazy\",(e,t)=>{h.init(e,t),_(e._zod,\"innerType\",()=>{let r=t;return r._cachedInner||(r._cachedInner=t.getter()),r._cachedInner}),_(e._zod,\"pattern\",()=>e._zod.innerType?._zod?.pattern),_(e._zod,\"propValues\",()=>e._zod.innerType?._zod?.propValues),_(e._zod,\"optin\",()=>e._zod.innerType?._zod?.optin??void 0),_(e._zod,\"optout\",()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(r,n)=>e._zod.innerType._zod.run(r,n)}),Me=l(\"$ZodCustom\",(e,t)=>{V.init(e,t),h.init(e,t),e._zod.parse=(r,n)=>r,e._zod.check=r=>{let n=r.value,o=t.fn(n);if(o instanceof Promise)return o.then(i=>_e(i,r,n,e));_e(o,r,n,e)}});function _e(e,t,r,n){if(!e){let o={code:\"custom\",input:r,inst:n,path:[...n._zod.def.path??[]],continue:!n._zod.def.abort};n._zod.def.params&&(o.params=n._zod.def.params),t.issues.push(B(o))}}function Ie(e,t){return new e({type:\"string\",...x(t)})}function Se(e){return new e({type:\"unknown\"})}function Te(e,t){return new e({type:\"never\",...x(t)})}function Ce(e,t,r){let n=x(r);return n.abort??(n.abort=!0),new e({type:\"custom\",check:\"custom\",fn:t,...n})}var g=l(\"ZodMiniType\",(e,t)=>{if(!e._zod)throw new Error(\"Uninitialized schema in ZodMiniType.\");h.init(e,t),e.def=t,e.type=t.type,e.parse=(r,n)=>w(e,r,n,{callee:e.parse}),e.safeParse=(r,n)=>I(e,r,n),e.parseAsync=async(r,n)=>k(e,r,n,{callee:e.parseAsync}),e.safeParseAsync=async(r,n)=>S(e,r,n),e.check=(...r)=>e.clone({...t,checks:[...t.checks??[],...r.map(n=>typeof n==\"function\"?{_zod:{check:n,def:{check:\"custom\"},onattach:[]}}:n)]},{parent:!0}),e.with=e.check,e.clone=(r,n)=>U(e,r,n),e.brand=()=>e,e.register=((r,n)=>(r.add(e,n),e)),e.apply=r=>r(e)}),ot=l(\"ZodMiniString\",(e,t)=>{xe.init(e,t),g.init(e,t)});function O(e){return Ie(ot,e)}var it=l(\"ZodMiniUnknown\",(e,t)=>{ge.init(e,t),g.init(e,t)});function P(){return Se(it)}var st=l(\"ZodMiniNever\",(e,t)=>{ze.init(e,t),g.init(e,t)});function ut(e){return Te(st,e)}var ct=l(\"ZodMiniArray\",(e,t)=>{$e.init(e,t),g.init(e,t)});function K(e,t){return new ct({type:\"array\",element:e,...x(t)})}var Oe=l(\"ZodMiniObject\",(e,t)=>{ve.init(e,t),g.init(e,t),_(e,\"shape\",()=>t.shape)});function Ne(e,t){let r={type:\"object\",shape:e??{},...x(t)};return new Oe(r)}function G(e,t){return new Oe({type:\"object\",shape:e,catchall:ut(),...x(t)})}var at=l(\"ZodMiniDiscriminatedUnion\",(e,t)=>{Ze.init(e,t),g.init(e,t)});function je(e,t,r){return new at({type:\"union\",options:t,discriminator:e,...x(r)})}var pt=l(\"ZodMiniTuple\",(e,t)=>{W.init(e,t),g.init(e,t)});function lt(e,t,r){let n=t instanceof h,o=n?r:t,i=n?t:null;return new pt({type:\"tuple\",items:e,rest:i,...x(o)})}var Re=l(\"ZodMiniRecord\",(e,t)=>{ye.init(e,t),g.init(e,t)});function Fe(e,t,r){return!t||!t._zod?new Re({type:\"record\",keyType:O(),valueType:e,...x(t)}):new Re({type:\"record\",keyType:e,valueType:t,...x(r)})}var ft=l(\"ZodMiniEnum\",(e,t)=>{we.init(e,t),g.init(e,t),e.options=Object.values(t.entries)});function De(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new ft({type:\"enum\",entries:r,...x(t)})}var dt=l(\"ZodMiniLiteral\",(e,t)=>{ke.init(e,t),g.init(e,t)});function J(e,t){return new dt({type:\"literal\",values:Array.isArray(e)?e:[e],...x(t)})}var mt=l(\"ZodMiniLazy\",(e,t)=>{Ee.init(e,t),g.init(e,t)});function Le(e){return new mt({type:\"lazy\",getter:e})}var ht=l(\"ZodMiniPromise\",(e,t)=>{Ae.init(e,t),g.init(e,t)});function Ue(e){return new ht({type:\"promise\",innerType:e})}var _t=l(\"ZodMiniCustom\",(e,t)=>{Me.init(e,t),g.init(e,t)});function xt(e,t){return Ce(_t,e??(()=>!0),t)}function Be(e,t={}){let r=xt(n=>n instanceof e,t);return r._zod.bag.Class=e,r._zod.check=n=>{n.value instanceof e||n.issues.push({code:\"invalid_type\",expected:e.name,input:n.value,inst:r,path:[...r._zod.def.path??[]]})},r}var gt=l(\"ZodMiniFunction\",(e,t)=>{Pe.init(e,t),g.init(e,t)});function Ve(e){return new gt({type:\"function\",input:Array.isArray(e?.input)?lt(e?.input):e?.input??K(P()),output:e?.output??P()})}var zt=Le(()=>Fe(O(),Be(Object)));function $o(e){let t=je(\"kind\",[G({kind:J(\"result\"),value:P()}),G({kind:J(\"local_refusal\"),code:De(e)})]);class r extends Error{constructor(u){super(`App binding refused: ${u}`);this.code=u}code;name=\"AppInstanceError\"}let n=i=>t.parse(i),o=i=>{let s=t.parse(i);if(s.kind===\"local_refusal\")throw new r(s.code);return s.value};return{decode:n,wrap(i){return Object.fromEntries(Object.entries(zt.parse(i)).map(([s,u])=>[s,new Proxy({},{get(c,a){let p=O().safeParse(a);if(!(!p.success||p.data===\"then\"))return async(...f)=>{let d=Ve({input:K(P()),output:Ue(P())}),m=Ne({[p.data]:d}).parse(Object.create(u))[p.data];if(m===void 0)throw new Error(\"App binding method unavailable\");return o(await m.apply(u,[...f]))}}})]))}}}export{$o as createFrameBindingWire};\n";
|
|
@@ -12,7 +12,7 @@ export type FrameBindingReply<Value> = Readonly<{
|
|
|
12
12
|
export type FrameBindingWire<Methods> = {
|
|
13
13
|
[Name in keyof Methods]: Methods[Name] extends (...args: infer Args) => Promise<infer Value> ? (...args: Args) => Promise<FrameBindingReply<Value>> : never;
|
|
14
14
|
};
|
|
15
|
-
declare const frameStubsSchema: z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniCustom<Object, Object
|
|
15
|
+
declare const frameStubsSchema: z.ZodMiniLazy<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniCustom<Object, Object>>>;
|
|
16
16
|
type FrameBindingStubs = z.output<typeof frameStubsSchema>;
|
|
17
17
|
/** The host supplies its one closed refusal vocabulary to both copies of this decoder. */
|
|
18
18
|
export declare function createFrameBindingWire<const Codes extends readonly [string, ...string[]]>(codes: Codes): {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as z from "zod/mini";
|
|
2
|
-
const frameStubsSchema = z.record(z.string(), z.instanceof(Object));
|
|
2
|
+
const frameStubsSchema = z.lazy(() => z.record(z.string(), z.instanceof(Object)));
|
|
3
3
|
/** The host supplies its one closed refusal vocabulary to both copies of this decoder. */
|
|
4
4
|
export function createFrameBindingWire(codes) {
|
|
5
5
|
const replySchema = z.discriminatedUnion("kind", [
|
package/dist/git-journal.js
CHANGED
|
@@ -5,10 +5,10 @@ import { appGitPushFactSchema, } from "@fungi.computer/agar/git";
|
|
|
5
5
|
import { backgroundWakeSchema, } from "@fungi.computer/puffball/background-replay";
|
|
6
6
|
import { createPost, definePostRoute, } from "@fungi.computer/carrier/post";
|
|
7
7
|
import { Watchdog, } from "@fungi.computer/watchdog";
|
|
8
|
-
const storedFact = z.strictObject({ fact: z.string() });
|
|
9
|
-
const storedEpoch = z.strictObject({
|
|
8
|
+
const storedFact = z.lazy(() => z.strictObject({ fact: z.string() }));
|
|
9
|
+
const storedEpoch = z.lazy(() => z.strictObject({
|
|
10
10
|
epoch: z.number().int().positive().max(Number.MAX_SAFE_INTEGER),
|
|
11
|
-
});
|
|
11
|
+
}));
|
|
12
12
|
const syncKey = (installationId, lane, epoch) => `appsync:${createHash("sha256")
|
|
13
13
|
.update(JSON.stringify([installationId, lane, epoch]))
|
|
14
14
|
.digest("hex")}`;
|
|
@@ -16,7 +16,7 @@ const syncKey = (installationId, lane, epoch) => `appsync:${createHash("sha256")
|
|
|
16
16
|
export function backgroundWakeKey(wake) {
|
|
17
17
|
return syncKey(wake.installationId, wake.lane, wake.epoch);
|
|
18
18
|
}
|
|
19
|
-
const installationIdSchema = z.string().min(1).max(256);
|
|
19
|
+
const installationIdSchema = z.lazy(() => z.string().min(1).max(256));
|
|
20
20
|
const postKey = (installationId, eventId) => `gitpush:${createHash("sha256")
|
|
21
21
|
.update(JSON.stringify([installationId, eventId]))
|
|
22
22
|
.digest("hex")}`;
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ import type { AppApi } from "@fungi.computer/puffball";
|
|
|
10
10
|
import type { InvocationFrame } from "./invocation.js";
|
|
11
11
|
import type { Installation } from "./apps/installation.js";
|
|
12
12
|
import { type GillCall, type GillReply } from "@fungi.computer/gills";
|
|
13
|
+
export { agentAvatarProjectionSchema, agentAvatarSchema, avatarFromProjection, createAgentAvatarStore, type AgentAvatarStore, } from "./agent-avatars.js";
|
|
13
14
|
/** The Cairn ID family that mints and recognizes App Instance IDs (`instance_…`). */
|
|
14
15
|
export declare const instanceIds: Readonly<{
|
|
15
16
|
readonly instance: import("@fungi.computer/cairn").IdCodec<"app-instance", "instance", 1>;
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { releaseIdSchema, appIdSchema } from "@fungi.computer/puffball/effect";
|
|
|
8
8
|
import { appFacetRequest, appFacetResponse } from "./backend-request.js";
|
|
9
9
|
import { appApiSchema } from "@fungi.computer/puffball/app";
|
|
10
10
|
import { gillCallSchema, gillReplySchema, } from "@fungi.computer/gills";
|
|
11
|
+
export { agentAvatarProjectionSchema, agentAvatarSchema, avatarFromProjection, createAgentAvatarStore, } from "./agent-avatars.js";
|
|
11
12
|
/** The Cairn ID family that mints and recognizes App Instance IDs (`instance_…`). */
|
|
12
13
|
export const instanceIds = defineIdFamily({
|
|
13
14
|
family: "app-instance",
|
|
@@ -8,7 +8,7 @@ export declare const installationConsentSchema: Schema.Struct<{
|
|
|
8
8
|
readonly artifactDigest: Schema.refine<import("@fungi.computer/puffball").Sha256Digest, Schema.String>;
|
|
9
9
|
readonly capabilities: Schema.$Array<Schema.Struct<{
|
|
10
10
|
readonly request: Schema.Struct<{
|
|
11
|
-
readonly capability: Schema.Literals<readonly ["agent.list", "agent.manage", "agent.rename", "agent.toolPolicy", "agent.read", "agent.send", "computer.list", "computer.readFile", "computer.writeFile", "computer.execute", "llm.generation", "media.generation", "games:servers", "git.repository", "apps.open", "apps.call", "app.storage", "app.events.emit", "team.workbenchHost", "marketplace.browse", "marketplace.purchase", "workflow.run", "workflow.publish", "workflow.arm", "world", "channels.read", "channels.personal.manage"]>;
|
|
11
|
+
readonly capability: Schema.Literals<readonly ["agent.list", "agent.manage", "agent.rename", "agent.avatar", "agent.toolPolicy", "agent.read", "agent.send", "computer.list", "computer.readFile", "computer.writeFile", "computer.execute", "llm.generation", "media.generation", "games:servers", "git.repository", "apps.open", "apps.call", "app.storage", "app.events.emit", "team.workbenchHost", "marketplace.browse", "marketplace.purchase", "workflow.run", "workflow.publish", "workflow.arm", "world", "channels.read", "channels.personal.manage"]>;
|
|
12
12
|
readonly operations: Schema.$Array<Schema.String>;
|
|
13
13
|
readonly resources: Schema.Codec<Schema.Json, Schema.Json, never, never>;
|
|
14
14
|
}>;
|
|
@@ -22,6 +22,7 @@ export declare const capabilityLabels: {
|
|
|
22
22
|
"agent.list": string;
|
|
23
23
|
"agent.manage": string;
|
|
24
24
|
"agent.rename": string;
|
|
25
|
+
"agent.avatar": string;
|
|
25
26
|
"agent.toolPolicy": string;
|
|
26
27
|
"agent.read": string;
|
|
27
28
|
"agent.send": string;
|
|
@@ -52,6 +53,7 @@ export declare const capabilityDescriptions: {
|
|
|
52
53
|
"agent.list": string;
|
|
53
54
|
"agent.manage": string;
|
|
54
55
|
"agent.rename": string;
|
|
56
|
+
"agent.avatar": string;
|
|
55
57
|
"agent.toolPolicy": string;
|
|
56
58
|
"agent.read": string;
|
|
57
59
|
"agent.send": string;
|
|
@@ -25,6 +25,7 @@ export const capabilityLabels = {
|
|
|
25
25
|
"agent.list": "List Agents",
|
|
26
26
|
"agent.manage": "Create and manage Agents",
|
|
27
27
|
"agent.rename": "Rename Agents",
|
|
28
|
+
"agent.avatar": "Change Agent avatars",
|
|
28
29
|
"agent.toolPolicy": "Allow Agents to use Apps",
|
|
29
30
|
"agent.read": "Read Agent conversations",
|
|
30
31
|
"agent.send": "Send messages to Agents",
|
|
@@ -55,6 +56,7 @@ export const capabilityDescriptions = {
|
|
|
55
56
|
"agent.list": "see which Agents are available.",
|
|
56
57
|
"agent.manage": "create Agents and manage their sessions.",
|
|
57
58
|
"agent.rename": "rename Agents you created.",
|
|
59
|
+
"agent.avatar": "change the avatars of Agents you created.",
|
|
58
60
|
"agent.toolPolicy": "approve Agents to use your installed Apps.",
|
|
59
61
|
"agent.read": "read Agent conversations.",
|
|
60
62
|
"agent.send": "send messages to Agents.",
|
package/dist/mcp-owner.js
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
import { DurableObject } from "cloudflare:workers";
|
|
2
2
|
import { nanoid } from "@fungi.computer/cairn";
|
|
3
|
-
import { createMcp, createMcpCatalog, } from "@fungi.computer/mycelium/mcp";
|
|
4
3
|
import { createCodemodeSandbox } from "@fungi.computer/mycelium/workers";
|
|
5
|
-
import { parseJSONRPCMessage, serializeMessage, } from "@modelcontextprotocol/server";
|
|
6
4
|
import * as Schema from "effect/Schema";
|
|
7
5
|
import { oysterMcpCatalogLoad } from "./mcp.js";
|
|
8
6
|
import { tenantIdSchema, tenantScope } from "./tenant.js";
|
|
7
|
+
/**
|
|
8
|
+
* The MCP protocol SDK builds hundreds of schemas when it loads. Only the first
|
|
9
|
+
* MCP request needs them, so the owner loads it then and the Worker's startup
|
|
10
|
+
* (which every request and every deploy pays) never does.
|
|
11
|
+
*/
|
|
12
|
+
const loadMcpProtocol = async () => {
|
|
13
|
+
const [mycelium, sdk] = await Promise.all([
|
|
14
|
+
import("@fungi.computer/mycelium/mcp"),
|
|
15
|
+
import("@modelcontextprotocol/server"),
|
|
16
|
+
]);
|
|
17
|
+
return { mycelium, sdk };
|
|
18
|
+
};
|
|
9
19
|
const pinSchema = Schema.Struct({
|
|
10
20
|
tenant_id: tenantIdSchema,
|
|
11
21
|
origin: Schema.String,
|
|
@@ -37,7 +47,7 @@ export class OysterMcpOwner extends DurableObject {
|
|
|
37
47
|
ctx.storage.sql.exec("DELETE FROM oyster_mcp_sessions");
|
|
38
48
|
});
|
|
39
49
|
}
|
|
40
|
-
#eventStore(catalogId) {
|
|
50
|
+
#eventStore(catalogId, { sdk }) {
|
|
41
51
|
const sql = this.ctx.storage.sql;
|
|
42
52
|
const find = (eventId) => {
|
|
43
53
|
const row = sql
|
|
@@ -50,7 +60,7 @@ export class OysterMcpOwner extends DurableObject {
|
|
|
50
60
|
return {
|
|
51
61
|
storeEvent: (streamId, message) => {
|
|
52
62
|
const id = nanoid();
|
|
53
|
-
sql.exec("INSERT INTO oyster_mcp_events (catalog_id, event_id, stream_id, message) VALUES (?,?,?,?)", catalogId, id, streamId, serializeMessage(message));
|
|
63
|
+
sql.exec("INSERT INTO oyster_mcp_events (catalog_id, event_id, stream_id, message) VALUES (?,?,?,?)", catalogId, id, streamId, sdk.serializeMessage(message));
|
|
54
64
|
return Promise.resolve(id);
|
|
55
65
|
},
|
|
56
66
|
getStreamIdForEventId: (id) => Promise.resolve(find(id)?.stream_id),
|
|
@@ -63,7 +73,7 @@ export class OysterMcpOwner extends DurableObject {
|
|
|
63
73
|
.toArray();
|
|
64
74
|
for (const raw of rows) {
|
|
65
75
|
const row = Schema.decodeUnknownSync(eventSchema)(raw);
|
|
66
|
-
await send(row.event_id, parseJSONRPCMessage(JSON.parse(row.message)));
|
|
76
|
+
await send(row.event_id, sdk.parseJSONRPCMessage(JSON.parse(row.message)));
|
|
67
77
|
}
|
|
68
78
|
return after.stream_id;
|
|
69
79
|
},
|
|
@@ -87,10 +97,12 @@ export class OysterMcpOwner extends DurableObject {
|
|
|
87
97
|
else {
|
|
88
98
|
sql.exec("INSERT INTO oyster_mcp_tenant (id, tenant_id, origin) VALUES (1,?,?)", scope.tenantId, scope.origin);
|
|
89
99
|
}
|
|
100
|
+
// Loaded before the check so the session map is still created exactly once.
|
|
101
|
+
const protocol = await loadMcpProtocol();
|
|
90
102
|
if (this.#mcp === undefined) {
|
|
91
103
|
const host = this.#createHost(this.env, scope);
|
|
92
104
|
const persistence = {
|
|
93
|
-
eventStore: (id) => this.#eventStore(id),
|
|
105
|
+
eventStore: (id) => this.#eventStore(id, protocol),
|
|
94
106
|
initialized: (id, session) => {
|
|
95
107
|
sql.exec("INSERT INTO oyster_mcp_sessions (protocol_id, catalog_id, principal) VALUES (?,?,?)", id, session.id, JSON.stringify(session.principal));
|
|
96
108
|
return Promise.resolve();
|
|
@@ -103,9 +115,9 @@ export class OysterMcpOwner extends DurableObject {
|
|
|
103
115
|
return Promise.resolve();
|
|
104
116
|
},
|
|
105
117
|
};
|
|
106
|
-
this.#mcp = createMcp({
|
|
118
|
+
this.#mcp = protocol.mycelium.createMcp({
|
|
107
119
|
persistence,
|
|
108
|
-
catalog: createMcpCatalog({
|
|
120
|
+
catalog: protocol.mycelium.createMcpCatalog({
|
|
109
121
|
load: oysterMcpCatalogLoad(host),
|
|
110
122
|
sandbox: createCodemodeSandbox(this.env.LOADER),
|
|
111
123
|
}),
|
package/dist/pack.d.ts
CHANGED
|
@@ -62,9 +62,12 @@ export declare function installRelease(input: Readonly<{
|
|
|
62
62
|
key: string;
|
|
63
63
|
installationId?: string;
|
|
64
64
|
}>): Promise<Response>;
|
|
65
|
-
/** Project one exact first-party commit's editable source
|
|
66
|
-
* an Oyster's own template
|
|
67
|
-
*
|
|
65
|
+
/** Project one exact first-party commit's editable source, `git push` it to
|
|
66
|
+
* an Oyster's own template for that App, and claim the pushed head, so
|
|
67
|
+
* `APPS.fork` and Computer builds can later read it. The operator owner key
|
|
68
|
+
* authenticates both; it reaches Git only through its config environment and
|
|
69
|
+
* no provider credential ever leaves the Oyster. Answers the claim response:
|
|
70
|
+
* `{ kind: "recorded" | "existing", receipt }` on success. */
|
|
68
71
|
export declare function publishSource(input: Readonly<{
|
|
69
72
|
appId: string;
|
|
70
73
|
entry: string;
|
package/dist/pack.js
CHANGED
|
@@ -5,8 +5,9 @@ import * as Effect from "effect/Effect";
|
|
|
5
5
|
import * as Schema from "effect/Schema";
|
|
6
6
|
import { releaseSchema } from "@fungi.computer/puffball/effect";
|
|
7
7
|
import { parseArtifactRef, parseReleaseId, parseSha256Digest, parseSourceRevision, } from "@fungi.computer/puffball";
|
|
8
|
-
import { commitPreparedCandidate, createAppCandidatePreparer, createArtifactsSourceCapture, createFirstPartyAppSourceDistribution, createLocalArtifactWriter, createLocalBuildExecutor, createLocalCommitSourceCapture, } from "./build.js";
|
|
9
|
-
import {
|
|
8
|
+
import { commitPreparedCandidate, createAppCandidatePreparer, createArtifactsSourceCapture, createFirstPartyAppSourceDistribution, createLocalArtifactWriter, createLocalBuildExecutor, createLocalCommitSourceCapture, normalizeAppPublisherRecipe, } from "./build.js";
|
|
9
|
+
import { templateSeedClaimSchema, } from "./source/template-seed.js";
|
|
10
|
+
import { pushTemplateSource } from "./source/template-push.js";
|
|
10
11
|
import { sha256 } from "./release.js";
|
|
11
12
|
async function filesUnder(directory) {
|
|
12
13
|
const entries = await readdir(directory, {
|
|
@@ -103,9 +104,12 @@ export async function installRelease(input) {
|
|
|
103
104
|
}),
|
|
104
105
|
});
|
|
105
106
|
}
|
|
106
|
-
/** Project one exact first-party commit's editable source
|
|
107
|
-
* an Oyster's own template
|
|
108
|
-
*
|
|
107
|
+
/** Project one exact first-party commit's editable source, `git push` it to
|
|
108
|
+
* an Oyster's own template for that App, and claim the pushed head, so
|
|
109
|
+
* `APPS.fork` and Computer builds can later read it. The operator owner key
|
|
110
|
+
* authenticates both; it reaches Git only through its config environment and
|
|
111
|
+
* no provider credential ever leaves the Oyster. Answers the claim response:
|
|
112
|
+
* `{ kind: "recorded" | "existing", receipt }` on success. */
|
|
109
113
|
export async function publishSource(input) {
|
|
110
114
|
const revision = parseSourceRevision(input.sourceRevision);
|
|
111
115
|
const distribution = await Effect.runPromise(Effect.scoped(Effect.gen(function* () {
|
|
@@ -116,19 +120,32 @@ export async function publishSource(input) {
|
|
|
116
120
|
source,
|
|
117
121
|
});
|
|
118
122
|
})));
|
|
119
|
-
const
|
|
123
|
+
const app = encodeURIComponent(input.appId);
|
|
124
|
+
const authorization = `Bearer ${input.key}`;
|
|
125
|
+
const { seedRevision } = await pushTemplateSource({
|
|
120
126
|
appId: input.appId,
|
|
121
127
|
sourceRevision: revision,
|
|
122
|
-
sourceTreeDigest: distribution.sourceTreeDigest,
|
|
123
|
-
recipe: input.recipe,
|
|
124
128
|
files: distribution.files,
|
|
129
|
+
remote: new URL(`/api/apps/${app}/source.git`, input.url).href,
|
|
130
|
+
headers: { Authorization: authorization },
|
|
125
131
|
});
|
|
126
|
-
|
|
132
|
+
const claim = {
|
|
133
|
+
appId: distribution.appId,
|
|
134
|
+
sourceRevision: revision,
|
|
135
|
+
sourceTreeDigest: distribution.sourceTreeDigest,
|
|
136
|
+
seedRevision,
|
|
137
|
+
// The template pins the same captured recipe its forks build with.
|
|
138
|
+
recipe: normalizeAppPublisherRecipe({
|
|
139
|
+
appId: input.appId,
|
|
140
|
+
recipe: input.recipe,
|
|
141
|
+
}).recipe,
|
|
142
|
+
};
|
|
143
|
+
return fetch(new URL(`/api/apps/${app}/source`, input.url), {
|
|
127
144
|
method: "PUT",
|
|
128
145
|
headers: {
|
|
129
|
-
Authorization:
|
|
146
|
+
Authorization: authorization,
|
|
130
147
|
"Content-Type": "application/json",
|
|
131
148
|
},
|
|
132
|
-
body: JSON.stringify(
|
|
149
|
+
body: JSON.stringify(Schema.encodeUnknownSync(templateSeedClaimSchema)(claim)),
|
|
133
150
|
});
|
|
134
151
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** One desktop observation notifies the shell until it is closed. */
|
|
2
|
+
export declare function observeDesktopGill(onChanged: () => Promise<void>, openSource: () => (Pick<EventTarget, "addEventListener"> & {
|
|
3
|
+
close(): void;
|
|
4
|
+
}) | null, focus: Pick<EventTarget, "addEventListener" | "removeEventListener">): () => void;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** One desktop observation notifies the shell until it is closed. */
|
|
2
|
+
export function observeDesktopGill(onChanged, openSource, focus) {
|
|
3
|
+
let closed = false;
|
|
4
|
+
const notify = () => {
|
|
5
|
+
if (!closed)
|
|
6
|
+
void onChanged().catch((cause) => {
|
|
7
|
+
console.error("Desktop Gill observation failed", cause);
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
let source = null;
|
|
11
|
+
const close = () => {
|
|
12
|
+
if (closed)
|
|
13
|
+
return;
|
|
14
|
+
closed = true;
|
|
15
|
+
source?.close();
|
|
16
|
+
focus.removeEventListener("focus", notify);
|
|
17
|
+
};
|
|
18
|
+
try {
|
|
19
|
+
source = openSource();
|
|
20
|
+
if (source !== null)
|
|
21
|
+
for (const event of ["ready", "rows", "reset", "changed"])
|
|
22
|
+
source.addEventListener(event, notify);
|
|
23
|
+
else
|
|
24
|
+
focus.addEventListener("focus", notify);
|
|
25
|
+
return close;
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
close();
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
}
|
package/dist/page/mount.d.ts
CHANGED
|
@@ -30,11 +30,9 @@ export declare const oysterAppConfigSchema: Schema.Struct<{
|
|
|
30
30
|
keybind?: string | undefined;
|
|
31
31
|
}>) | undefined;
|
|
32
32
|
help?: Readonly<{
|
|
33
|
-
order
|
|
34
|
-
/** Role and App opens, routed by the embedding shell; the App never names a surface. */
|
|
35
|
-
? /** Role and App opens, routed by the embedding shell; the App never names a surface. */: number | undefined;
|
|
33
|
+
order?: number | undefined;
|
|
36
34
|
}> | undefined;
|
|
37
|
-
menu
|
|
35
|
+
menu? /** Which App that role's open would reach, or null when none fills it. */: Readonly<{
|
|
38
36
|
order?: number | undefined;
|
|
39
37
|
}> | undefined;
|
|
40
38
|
palette?: Readonly<{
|
|
@@ -64,11 +62,9 @@ export declare const oysterAppConfigSchema: Schema.Struct<{
|
|
|
64
62
|
keybind?: string | undefined;
|
|
65
63
|
}>) | undefined;
|
|
66
64
|
help?: Readonly<{
|
|
67
|
-
order
|
|
68
|
-
/** Role and App opens, routed by the embedding shell; the App never names a surface. */
|
|
69
|
-
? /** Role and App opens, routed by the embedding shell; the App never names a surface. */: number | undefined;
|
|
65
|
+
order?: number | undefined;
|
|
70
66
|
}> | undefined;
|
|
71
|
-
menu
|
|
67
|
+
menu? /** Which App that role's open would reach, or null when none fills it. */: Readonly<{
|
|
72
68
|
order?: number | undefined;
|
|
73
69
|
}> | undefined;
|
|
74
70
|
palette?: Readonly<{
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AppOpenRequest } from "@fungi.computer/agar";
|
|
2
|
+
/**
|
|
3
|
+
* A window's current launch target: the open request and Computer its child
|
|
4
|
+
* App should see. `reconfigure` moves this forward as the window is handed a
|
|
5
|
+
* new file; a later restore (`setVisibility`) must read the latest target
|
|
6
|
+
* here, never the window's first open request.
|
|
7
|
+
*/
|
|
8
|
+
export type WindowLaunchTarget = Readonly<{
|
|
9
|
+
openRequest: AppOpenRequest | null;
|
|
10
|
+
computerId: string | null;
|
|
11
|
+
}>;
|
|
12
|
+
export type WindowLaunchTracker = Readonly<{
|
|
13
|
+
current: () => WindowLaunchTarget;
|
|
14
|
+
advance: (next: WindowLaunchTarget) => void;
|
|
15
|
+
}>;
|
|
16
|
+
/** One window's launch history: starts at its first open, moves forward on
|
|
17
|
+
* every `reconfigure`, and never resets on its own. */
|
|
18
|
+
export declare function createWindowLaunchTracker(initial: WindowLaunchTarget): WindowLaunchTracker;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** One window's launch history: starts at its first open, moves forward on
|
|
2
|
+
* every `reconfigure`, and never resets on its own. */
|
|
3
|
+
export function createWindowLaunchTracker(initial) {
|
|
4
|
+
let current = initial;
|
|
5
|
+
return {
|
|
6
|
+
current: () => current,
|
|
7
|
+
advance: (next) => {
|
|
8
|
+
current = next;
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
}
|