@fungi.computer/oyster 0.2.0 → 0.3.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 +376 -72
- package/dist/agents.d.ts +3 -2
- package/dist/agents.js +4 -2
- package/dist/app-builds.d.ts +81 -8
- package/dist/app-builds.js +210 -60
- package/dist/app-storage.d.ts +3 -3
- package/dist/approval-capability.d.ts +5 -0
- package/dist/approval-capability.js +46 -0
- package/dist/approval-home.d.ts +51 -0
- package/dist/approval-home.js +226 -0
- package/dist/apps/catalog.d.ts +335 -0
- package/dist/apps/catalog.js +46 -0
- package/dist/apps/gate.d.ts +20 -6
- package/dist/apps/gate.js +42 -16
- package/dist/apps/index.d.ts +3 -1
- package/dist/apps/index.js +3 -1
- package/dist/apps/installation.d.ts +132 -51
- package/dist/apps/installation.js +176 -70
- package/dist/apps/permissions.d.ts +247 -0
- package/dist/apps/permissions.js +255 -0
- package/dist/boot-capability-route.d.ts +15 -0
- package/dist/boot-capability-route.js +196 -0
- package/dist/boot-capability.d.ts +103 -0
- package/dist/boot-capability.js +141 -0
- package/dist/boot-construction.d.ts +12 -0
- package/dist/boot-construction.js +175 -0
- package/dist/boot-gate.d.ts +267 -0
- package/dist/boot-gate.js +236 -0
- package/dist/boot-host-script.d.ts +2 -0
- package/dist/boot-host-script.js +1 -0
- package/dist/boot-mount.d.ts +21 -0
- package/dist/boot-mount.js +65 -0
- package/dist/browser/boot.d.ts +73 -0
- package/dist/browser/boot.js +502 -0
- package/dist/browser/browser.d.ts +104 -0
- package/dist/browser/browser.js +374 -0
- package/dist/browser/capability-source.d.ts +76 -0
- package/dist/browser/capability-source.js +338 -0
- package/dist/browser/cdp-client.d.ts +56 -0
- package/dist/browser/cdp-client.js +184 -0
- package/dist/browser/errors.d.ts +79 -0
- package/dist/browser/errors.js +32 -0
- package/dist/browser/index.d.ts +16 -0
- package/dist/browser/index.js +14 -0
- package/dist/browser/lease-registry.d.ts +61 -0
- package/dist/browser/lease-registry.js +101 -0
- package/dist/browser/operations.d.ts +225 -0
- package/dist/browser/operations.js +137 -0
- package/dist/browser/page.d.ts +25 -0
- package/dist/browser/page.js +172 -0
- package/dist/browser/quick-reads.d.ts +29 -0
- package/dist/browser/quick-reads.js +160 -0
- package/dist/browser/sessions.d.ts +52 -0
- package/dist/browser/sessions.js +118 -0
- package/dist/browser/url-policy.d.ts +18 -0
- package/dist/browser/url-policy.js +58 -0
- package/dist/build/app-imports.d.ts +12 -0
- package/dist/build/app-imports.js +105 -0
- package/dist/build/build-policy.d.ts +5 -3
- package/dist/build/build-policy.js +5 -3
- package/dist/build/candidate-builder.d.ts +1 -1
- package/dist/build/candidate-cli.mjs +8375 -334
- package/dist/build/local-build.d.ts +2 -0
- package/dist/build/local-build.js +28 -6
- package/dist/build/snapshot-package-store.d.ts +1 -1
- package/dist/build/snapshot-package-store.js +7 -2
- package/dist/build/workspace-build.d.ts +92 -5
- package/dist/build/workspace-build.js +93 -19
- package/dist/build.d.ts +1 -1
- package/dist/build.js +1 -1
- package/dist/catalog-frame.js +1 -1
- package/dist/cloudflare.d.ts +13 -3
- package/dist/cloudflare.js +102 -4
- package/dist/frame-binding-wire-script.js +1 -1
- package/dist/frame-binding-wire.js +4 -2
- package/dist/git-auth.d.ts +0 -2
- package/dist/git-auth.js +0 -2
- package/dist/git.d.ts +0 -1
- package/dist/git.js +0 -2
- package/dist/host.d.ts +39 -13
- package/dist/host.js +268 -142
- package/dist/index.d.ts +25 -15
- package/dist/index.js +39 -16
- package/dist/install-release-cli.d.ts +2 -0
- package/dist/install-release-cli.js +46 -0
- package/dist/installation-client.d.ts +43 -0
- package/dist/installation-client.js +178 -0
- package/dist/installation-execution.d.ts +11 -0
- package/dist/installation-execution.js +184 -0
- package/dist/installation-operations.d.ts +1437 -0
- package/dist/installation-operations.js +664 -0
- package/dist/installation-store-generation.d.ts +3 -0
- package/dist/installation-store-generation.js +16 -0
- package/dist/instance-id.d.ts +10 -0
- package/dist/instance-id.js +10 -0
- package/dist/instance-refusal.d.ts +11 -0
- package/dist/instance-refusal.js +21 -0
- package/dist/internal/delivery.js +4 -2
- package/dist/internal/host-gate.js +7 -1
- package/dist/internal/registry-installations.js +4 -4
- package/dist/keys.d.ts +5 -1
- package/dist/keys.js +10 -2
- package/dist/machine-link/authority.d.ts +89 -0
- package/dist/machine-link/authority.js +37 -0
- package/dist/machine-link/client.d.ts +66 -0
- package/dist/machine-link/client.js +94 -0
- package/dist/machine-link/delivery.d.ts +18 -0
- package/dist/machine-link/delivery.js +55 -0
- package/dist/machine-link/enrollment.d.ts +111 -0
- package/dist/machine-link/enrollment.js +286 -0
- package/dist/machine-link/fences.d.ts +37 -0
- package/dist/machine-link/fences.js +166 -0
- package/dist/machine-link/home.d.ts +20 -0
- package/dist/machine-link/home.js +24 -0
- package/dist/machine-link/host.d.ts +43 -0
- package/dist/machine-link/host.js +189 -0
- package/dist/machine-link/index.d.ts +15 -0
- package/dist/machine-link/index.js +15 -0
- package/dist/machine-link/link.d.ts +48 -0
- package/dist/machine-link/link.js +223 -0
- package/dist/machine-link/presence.d.ts +10 -0
- package/dist/machine-link/presence.js +25 -0
- package/dist/machine-link/workers.d.ts +6 -0
- package/dist/machine-link/workers.js +6 -0
- package/dist/mcp-owner.d.ts +2 -2
- package/dist/mcp-owner.js +41 -33
- package/dist/mcp.d.ts +15 -3
- package/dist/mcp.js +146 -25
- package/dist/pack.d.ts +14 -3
- package/dist/pack.js +44 -19
- package/dist/page/app-access.d.ts +7 -0
- package/dist/page/app-access.js +75 -0
- package/dist/page/boot-host.js +57 -0
- package/dist/page/capabilities.d.ts +3 -3
- package/dist/page/capabilities.js +16 -12
- package/dist/page/computer-handles.d.ts +3 -3
- package/dist/page/computer-target.d.ts +3 -0
- package/dist/page/computer-target.js +9 -0
- package/dist/page/mount.d.ts +23 -3
- package/dist/page/mount.js +152 -16
- package/dist/page-assets.d.ts +22 -0
- package/dist/page-assets.js +28 -0
- package/dist/page-script.d.ts +3 -0
- package/dist/page-script.js +5 -4
- package/dist/release.d.ts +13 -6
- package/dist/release.js +10 -7
- package/dist/root-data.d.ts +16 -6
- package/dist/root-data.js +2 -2
- package/dist/source/index.d.ts +1 -1
- package/dist/source/team-source.d.ts +20 -8
- package/dist/source/team-source.js +39 -10
- package/dist/source/template-seed.d.ts +2 -2
- package/dist/standalone/agent-mail.d.ts +24 -0
- package/dist/standalone/agent-mail.js +62 -0
- package/dist/standalone/agent-store.d.ts +9 -0
- package/dist/standalone/agent-store.js +30 -0
- package/dist/standalone/agents.d.ts +68 -9
- package/dist/standalone/agents.js +428 -56
- package/dist/standalone/app-builds-binding.d.ts +20 -2
- package/dist/standalone/app-builds-binding.js +147 -23
- package/dist/standalone/app-set.d.ts +5 -2
- package/dist/standalone/app-set.js +174 -143
- package/dist/standalone/browser.d.ts +11 -0
- package/dist/standalone/browser.js +72 -0
- package/dist/standalone/builds.d.ts +13 -4
- package/dist/standalone/builds.js +28 -44
- package/dist/standalone/computer-egress.d.ts +2 -0
- package/dist/standalone/computer-egress.js +13 -4
- package/dist/standalone/computer-fleet.d.ts +43 -0
- package/dist/standalone/computer-fleet.js +200 -0
- package/dist/standalone/computer.d.ts +44 -9
- package/dist/standalone/computer.js +129 -22
- package/dist/standalone/install-apps-cli.js +43 -6
- package/dist/standalone/instance.d.ts +2 -2
- package/dist/standalone/instance.js +8 -11
- package/dist/standalone/machine-link.d.ts +354 -0
- package/dist/standalone/machine-link.js +368 -0
- package/dist/standalone/media.d.ts +2 -2
- package/dist/standalone/media.js +19 -16
- package/dist/standalone/preview.d.ts +2 -2
- package/dist/standalone/preview.js +37 -10
- package/dist/standalone/registry.d.ts +149 -9
- package/dist/standalone/registry.js +299 -8
- package/dist/standalone/worker.d.ts +19 -5
- package/dist/standalone/worker.js +90 -54
- package/dist/standalone/workflow-binding.d.ts +18 -22
- package/dist/standalone/workflow-binding.js +18 -18
- package/dist/standalone/workflow-control.d.ts +4 -0
- package/dist/standalone/workflow-control.js +40 -0
- package/dist/standalone/workflow-events.d.ts +2 -2
- package/dist/standalone/workflow-events.js +9 -10
- package/dist/standalone/workflow-git-capture.js +4 -3
- package/dist/standalone/workflow-host.d.ts +162 -161
- package/dist/standalone/workflow-host.js +101 -21
- package/dist/standalone/workflow-node-capture.js +11 -4
- package/dist/standalone/workflow-schedules.d.ts +5 -2
- package/dist/standalone/workflow-schedules.js +9 -10
- package/dist/standalone/workflow-trigger-host.d.ts +65 -5
- package/dist/standalone/workflow-trigger-host.js +2 -2
- package/dist/standalone/workflow-webhooks.d.ts +22 -0
- package/dist/standalone/workflow-webhooks.js +39 -0
- package/dist/standalone/workflows.d.ts +140 -43
- package/dist/standalone/workflows.js +198 -39
- package/dist/storage-frame.d.ts +6 -6
- package/dist/testing/capabilities.js +14 -3
- package/dist/testing/installation.js +26 -2
- package/dist/testing/worker.js +1 -1
- package/dist/testing/workers-runtime.d.ts +8 -2
- package/dist/testing/workers-runtime.js +20 -2
- package/dist/webhook-abuse.d.ts +25 -0
- package/dist/webhook-abuse.js +54 -0
- package/dist/webhook-custody.d.ts +144 -0
- package/dist/webhook-custody.js +222 -0
- package/dist/webhook-ingress.d.ts +36 -0
- package/dist/webhook-ingress.js +146 -0
- package/dist/webhooks.d.ts +111 -0
- package/dist/webhooks.js +189 -0
- package/dist/workers-git.d.ts +12 -17
- package/dist/workers-git.js +60 -52
- package/dist/workers.d.ts +224 -13
- package/dist/workers.js +351 -51
- package/dist/workflow-agent-authority.d.ts +8 -0
- package/dist/workflow-agent-authority.js +42 -0
- package/dist/workflows.d.ts +66 -0
- package/dist/workflows.js +97 -0
- package/docs/api/README.md +63 -37
- package/docs/api/agents.md +17 -0
- package/docs/api/app-storage.md +1 -1
- package/docs/api/apps.md +1394 -543
- package/docs/api/browser/boot.md +132 -0
- package/docs/api/browser.md +1440 -0
- package/docs/api/build-contract.md +38 -25
- package/docs/api/build.md +263 -84
- package/docs/api/cloudflare.md +93 -7
- package/docs/api/git.md +3 -13
- package/docs/api/host.md +944 -118
- package/docs/api/index.md +320 -18
- package/docs/api/keys.md +24 -1
- package/docs/api/mcp.md +59 -12
- package/docs/api/modules.md +33 -40
- package/docs/api/pack.md +57 -8
- package/docs/api/page/mount.md +92 -4
- package/docs/api/workers-git.md +103 -24
- package/docs/api/workers.md +1581 -244
- package/docs/site/agent-quickstart.mdx +28 -14
- package/examples/standalone/worker.ts +3 -1
- package/examples/standalone/wrangler.jsonc +2 -0
- package/package.json +73 -71
- package/dist/installation-consent.d.ts +0 -81
- package/dist/installation-consent.js +0 -84
- package/dist/shell/app-directory.d.ts +0 -542
- package/dist/shell/app-directory.js +0 -196
- package/dist/shell/browser-actions.d.ts +0 -7
- package/dist/shell/browser-actions.js +0 -56
- package/dist/shell/command-host.d.ts +0 -112
- package/dist/shell/command-host.js +0 -502
- package/dist/shell/commands.d.ts +0 -25
- package/dist/shell/commands.js +0 -78
- package/dist/shell/index.d.ts +0 -8
- package/dist/shell/index.js +0 -8
- package/dist/shell/keys.d.ts +0 -41
- package/dist/shell/keys.js +0 -134
- package/dist/shell/shell-module.d.ts +0 -55
- package/dist/shell/shell-module.js +0 -86
- package/dist/shell/window-manager.d.ts +0 -128
- package/dist/shell/window-manager.js +0 -730
- package/dist/shell/workbench-contract.d.ts +0 -68
- package/dist/shell/workbench-directory.d.ts +0 -332
- package/dist/shell/workbench-directory.js +0 -35
- package/dist/shell/workbench-host-types.d.ts +0 -96
- package/dist/shell/workbench-host-types.js +0 -1
- package/dist/shell/workbench-host.d.ts +0 -34
- package/dist/shell/workbench-host.js +0 -352
- package/dist/shell/workbench-model.d.ts +0 -194
- package/dist/shell/workbench-model.js +0 -53
- package/dist/shell/workbench.d.ts +0 -4
- package/dist/shell/workbench.js +0 -2
- package/docs/api/shell/app-directory.md +0 -599
- package/docs/api/shell/command-host.md +0 -224
- package/docs/api/shell/commands.md +0 -197
- package/docs/api/shell/keys.md +0 -183
- package/docs/api/shell/shell-module.md +0 -204
- package/docs/api/shell/window-manager.md +0 -267
- package/docs/api/shell/workbench-directory.md +0 -119
- package/docs/api/shell/workbench.md +0 -205
- package/docs/api/shell.md +0 -1915
- /package/dist/{shell/workbench-contract.js → page/boot-host.d.ts} +0 -0
package/dist/cloudflare.js
CHANGED
|
@@ -8,14 +8,83 @@ import { causeClass, failureDiagnostic, guestFailure } from "./cause-class.js";
|
|
|
8
8
|
import { appGitPushFactSchema, gitPushVerdictSchema, } from "@fungi.computer/agar/git";
|
|
9
9
|
import { WorkerEntrypoint } from "cloudflare:workers";
|
|
10
10
|
import { guestLimits } from "./guest-policy.js";
|
|
11
|
+
import { headContentObject } from "./build/content-objects.js";
|
|
11
12
|
import { appBackendBindingKinds, } from "@fungi.computer/puffball/app";
|
|
12
13
|
import { isAppApiMethodName } from "@fungi.computer/puffball/app-method-runtime";
|
|
13
14
|
import { createInvocationGate, invocationFrameIdSchema, } from "./invocation.js";
|
|
14
15
|
import * as Effect from "effect/Effect";
|
|
15
16
|
import * as Schema from "effect/Schema";
|
|
16
17
|
import { z } from "zod";
|
|
18
|
+
import { BACKEND_CONSTRUCTION_FACET, checkBackendConstruction, } from "./boot-construction.js";
|
|
19
|
+
import { BootGateError } from "./boot-gate.js";
|
|
20
|
+
export { checkBackendConstruction } from "./boot-construction.js";
|
|
17
21
|
import { createAppInstance, AppInstanceError, instanceIdSchema, instanceSchema, appInstanceErrorCodeSchema, } from "./index.js";
|
|
18
22
|
const bindingWire = createFrameBindingWire(appInstanceErrorCodeSchema.literals);
|
|
23
|
+
/** Store Release artifacts without loading the Worker ownership barrel. */
|
|
24
|
+
export function r2ArtifactStore(bucket) {
|
|
25
|
+
const abortError = (signal) => {
|
|
26
|
+
const reason = signal.reason;
|
|
27
|
+
return reason instanceof Error
|
|
28
|
+
? reason
|
|
29
|
+
: new Error("Artifact stream aborted", { cause: reason });
|
|
30
|
+
};
|
|
31
|
+
const cancelAfterOpen = (opening, reason) => {
|
|
32
|
+
void opening
|
|
33
|
+
.then(async (object) => {
|
|
34
|
+
if (object !== null)
|
|
35
|
+
await object.body.cancel(reason);
|
|
36
|
+
}, () => undefined)
|
|
37
|
+
.catch((cause) => {
|
|
38
|
+
const failureKind = cause instanceof Error ? cause.name : "non-error rejection";
|
|
39
|
+
console.error("R2 artifact body cancellation failed", failureKind);
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
head: (artifactRef) => headContentObject(bucket, artifactRef),
|
|
44
|
+
async stream(artifactRef, signal) {
|
|
45
|
+
const opening = bucket.get(artifactRef);
|
|
46
|
+
if (signal === undefined) {
|
|
47
|
+
const object = await opening;
|
|
48
|
+
return object?.body ?? null;
|
|
49
|
+
}
|
|
50
|
+
if (signal.aborted) {
|
|
51
|
+
const failure = abortError(signal);
|
|
52
|
+
cancelAfterOpen(opening, failure);
|
|
53
|
+
throw failure;
|
|
54
|
+
}
|
|
55
|
+
let abort;
|
|
56
|
+
const cancelled = new Promise((_resolve, reject) => {
|
|
57
|
+
abort = () => {
|
|
58
|
+
reject(abortError(signal));
|
|
59
|
+
};
|
|
60
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
61
|
+
});
|
|
62
|
+
try {
|
|
63
|
+
const object = await Promise.race([opening, cancelled]);
|
|
64
|
+
return object?.body ?? null;
|
|
65
|
+
}
|
|
66
|
+
catch (cause) {
|
|
67
|
+
cancelAfterOpen(opening, cause instanceof Error
|
|
68
|
+
? cause
|
|
69
|
+
: new Error("Artifact stream failed", { cause }));
|
|
70
|
+
throw cause;
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
if (abort !== undefined)
|
|
74
|
+
signal.removeEventListener("abort", abort);
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
async get(artifactRef) {
|
|
78
|
+
const object = await bucket.get(artifactRef);
|
|
79
|
+
return object === null
|
|
80
|
+
? null
|
|
81
|
+
: new Uint8Array(await object.arrayBuffer());
|
|
82
|
+
},
|
|
83
|
+
async put(artifactRef, bytes) {
|
|
84
|
+
await bucket.put(artifactRef, bytes);
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
19
88
|
/** Encode supervisor refusals before native RPC can discard Error properties. */
|
|
20
89
|
export async function captureFrameBindingReply(run) {
|
|
21
90
|
try {
|
|
@@ -193,9 +262,11 @@ export function createCloudflareInvocationGate(ctx, close) {
|
|
|
193
262
|
* @param loader - The Worker Loader binding; without it backend execution is unavailable.
|
|
194
263
|
* @param resolve - Resolves a Release ID to its verified durable backend.
|
|
195
264
|
* @param guestEnv - Mints loopbacks bound to the captured invocation frame.
|
|
265
|
+
* @param bootUi - Host-owned UI check, or `null` when this executor deliberately skips it (for example, after the signed host already checked).
|
|
196
266
|
* @param limits - Guest CPU and subrequest budgets; omitted fields use safe defaults.
|
|
267
|
+
* @param onAbort - Close the host's existing invocation frame after its state is fenced.
|
|
197
268
|
*/
|
|
198
|
-
export function createCloudflareAppInstance(ctx, loader, resolve, guestEnv, limits) {
|
|
269
|
+
export function createCloudflareAppInstance(ctx, loader, resolve, guestEnv, bootUi, limits, onAbort) {
|
|
199
270
|
const budget = guestLimits(limits);
|
|
200
271
|
const sql = ctx.storage.sql;
|
|
201
272
|
sql.exec("CREATE TABLE IF NOT EXISTS app_instance (id INTEGER PRIMARY KEY CHECK(id=1), record TEXT NOT NULL)");
|
|
@@ -258,11 +329,38 @@ export function createCloudflareAppInstance(ctx, loader, resolve, guestEnv, limi
|
|
|
258
329
|
sql.exec("INSERT INTO app_instance(id,record) VALUES(1,?) ON CONFLICT(id) DO UPDATE SET record=excluded.record", Schema.encodeUnknownSync(Schema.fromJsonString(instanceSchema))(value));
|
|
259
330
|
}),
|
|
260
331
|
resolve,
|
|
261
|
-
|
|
262
|
-
|
|
332
|
+
boot: (artifact, priorStateSchema, uiCheck) => Effect.tryPromise({
|
|
333
|
+
try: async () => {
|
|
334
|
+
await checkBackendConstruction(ctx, loader, artifact, budget, priorStateSchema);
|
|
335
|
+
// Apply reuses prepare's recorded UI result: no second browser.
|
|
336
|
+
return uiCheck === "run" ? await bootUi(artifact.release) : null;
|
|
337
|
+
},
|
|
338
|
+
catch: (cause) => cause instanceof BootGateError
|
|
339
|
+
? new AppInstanceError(cause.code, { cause })
|
|
340
|
+
: cause instanceof Error
|
|
341
|
+
? cause
|
|
342
|
+
: new Error("Host boot gate failed"),
|
|
343
|
+
}),
|
|
344
|
+
abort: (reason) => Effect.tryPromise({
|
|
345
|
+
try: async () => {
|
|
346
|
+
try {
|
|
347
|
+
await onAbort?.(reason);
|
|
348
|
+
}
|
|
349
|
+
finally {
|
|
350
|
+
ctx.facets.abort("app", reason);
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
catch: (cause) => cause instanceof Error
|
|
354
|
+
? cause
|
|
355
|
+
: new Error("Instance abort failed", { cause }),
|
|
263
356
|
}),
|
|
264
357
|
purge: () => attempt(() => {
|
|
265
|
-
|
|
358
|
+
try {
|
|
359
|
+
ctx.facets.delete(BACKEND_CONSTRUCTION_FACET);
|
|
360
|
+
}
|
|
361
|
+
finally {
|
|
362
|
+
ctx.facets.delete("app");
|
|
363
|
+
}
|
|
266
364
|
}),
|
|
267
365
|
connect: (artifact, frame) => attempt(() => {
|
|
268
366
|
if (!loader)
|
|
@@ -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 _(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";
|
|
1
|
+
export const frameBindingWireScript = "var Y;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.\")}};(Y=globalThis).__zod_globalConfig??(Y.__zod_globalConfig={});var j=globalThis.__zod_globalConfig;function v(e){return e&&Object.assign(j,e),j}function Q(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 ee(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 L(e){let t=e.startsWith(\"^\")?1:0,r=e.endsWith(\"$\")?e.length-1:e.length;return e.slice(t,r)}var H=Symbol(\"evaluating\");function _(e,t,r){let n;Object.defineProperty(e,t,{get(){if(n!==H)return n===void 0&&(n=H,n=r()),n},set(o){Object.defineProperty(e,t,{value:o})},configurable:!0})}var U=\"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 B(e,t,r){let n=new e._zod.constr(t??e._zod.def);return(!t||r?.parent)&&(n._zod.parent=e),n}function g(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 yt={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 V(...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,ee,2),Object.defineProperty(e,\"toString\",{value:()=>e.message,enumerable:!1})},se=l(\"$ZodError\",ie),M=l(\"$ZodError\",ie,{Parent:Error});var Xe=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 U(u,o?.callee),u}return s.value},w=Xe(M),Ye=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 U(u,o?.callee),u}return s.value},k=Ye(M),He=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=He(M),Qe=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=Qe(M);var et=\"(?:(?:\\\\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])))\",tt=new RegExp(`^${et}$`);var ue=e=>{let t=e?`[\\\\s\\\\S]{${e?.minimum??0},${e?.maximum??\"\"}}`:\"[\\\\s\\\\S]*\";return new RegExp(`^${t}$`)};var ce=/^-?\\d+(?:\\.\\d+)?$/;var W=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}))}),ge=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 ze=l(\"$ZodUnknown\",(e,t)=>{h.init(e,t),e._zod.parse=r=>r}),$e=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 ve=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 nt(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 ot(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 be=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(()=>nt(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\",X=m._zod.optout===\"optional\",N=m._zod.run({value:a[d],issues:[]},c);N instanceof Promise?p.push(N.then(Je=>R(Je,u,d,a,z,X))):R(N,u,d,a,z,X)}return i?ot(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 Ze=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=>L(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 ye=l(\"$ZodDiscriminatedUnion\",(e,t)=>{t.inclusive=!1,Ze.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 K=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 we=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 ke=l(\"$ZodEnum\",(e,t)=>{h.init(e,t);let r=Q(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}}),Pe=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}});function _e(e,t){return t===void 0&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var Ae=l(\"$ZodOptional\",(e,t)=>{h.init(e,t),e._zod.optin=\"optional\",e._zod.optout=\"optional\",_(e._zod,\"values\",()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),_(e._zod,\"pattern\",()=>{let r=t.innerType._zod.pattern;return r?new RegExp(`^(${L(r.source)})?$`):void 0}),e._zod.parse=(r,n)=>{if(t.innerType._zod.optin===\"optional\"){let o=r.value,i=t.innerType._zod.run(r,n);return i instanceof Promise?i.then(s=>_e(s,o)):_e(i,o)}return r.value===void 0?r:t.innerType._zod.run(r,n)}});var Ee=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 K({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)),Me=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))}),Ie=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)}),Se=l(\"$ZodCustom\",(e,t)=>{W.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=>xe(i,r,n,e));xe(o,r,n,e)}});function xe(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(V(o))}}function Te(e,t){return new e({type:\"string\",...g(t)})}function Ce(e){return new e({type:\"unknown\"})}function Re(e,t){return new e({type:\"never\",...g(t)})}function Oe(e,t,r){let n=g(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)=>B(e,r,n),e.brand=()=>e,e.register=((r,n)=>(r.add(e,n),e)),e.apply=r=>r(e)}),ut=l(\"ZodMiniString\",(e,t)=>{ge.init(e,t),x.init(e,t)});function O(e){return Te(ut,e)}var ct=l(\"ZodMiniUnknown\",(e,t)=>{ze.init(e,t),x.init(e,t)});function P(){return Ce(ct)}var at=l(\"ZodMiniNever\",(e,t)=>{$e.init(e,t),x.init(e,t)});function pt(e){return Re(at,e)}var lt=l(\"ZodMiniArray\",(e,t)=>{ve.init(e,t),x.init(e,t)});function G(e,t){return new lt({type:\"array\",element:e,...g(t)})}var je=l(\"ZodMiniObject\",(e,t)=>{be.init(e,t),x.init(e,t),_(e,\"shape\",()=>t.shape)});function Fe(e,t){let r={type:\"object\",shape:e??{},...g(t)};return new je(r)}function J(e,t){return new je({type:\"object\",shape:e,catchall:pt(),...g(t)})}var ft=l(\"ZodMiniDiscriminatedUnion\",(e,t)=>{ye.init(e,t),x.init(e,t)});function De(e,t,r){return new ft({type:\"union\",options:t,discriminator:e,...g(r)})}var dt=l(\"ZodMiniTuple\",(e,t)=>{K.init(e,t),x.init(e,t)});function mt(e,t,r){let n=t instanceof h,o=n?r:t,i=n?t:null;return new dt({type:\"tuple\",items:e,rest:i,...g(o)})}var Ne=l(\"ZodMiniRecord\",(e,t)=>{we.init(e,t),x.init(e,t)});function Le(e,t,r){return!t||!t._zod?new Ne({type:\"record\",keyType:O(),valueType:e,...g(t)}):new Ne({type:\"record\",keyType:e,valueType:t,...g(r)})}var ht=l(\"ZodMiniEnum\",(e,t)=>{ke.init(e,t),x.init(e,t),e.options=Object.values(t.entries)});function Ue(e,t){let r=Array.isArray(e)?Object.fromEntries(e.map(n=>[n,n])):e;return new ht({type:\"enum\",entries:r,...g(t)})}var _t=l(\"ZodMiniLiteral\",(e,t)=>{Pe.init(e,t),x.init(e,t)});function q(e,t){return new _t({type:\"literal\",values:Array.isArray(e)?e:[e],...g(t)})}var xt=l(\"ZodMiniOptional\",(e,t)=>{Ae.init(e,t),x.init(e,t)});function Be(e){return new xt({type:\"optional\",innerType:e})}var gt=l(\"ZodMiniLazy\",(e,t)=>{Ie.init(e,t),x.init(e,t)});function Ve(e){return new gt({type:\"lazy\",getter:e})}var zt=l(\"ZodMiniPromise\",(e,t)=>{Me.init(e,t),x.init(e,t)});function We(e){return new zt({type:\"promise\",innerType:e})}var $t=l(\"ZodMiniCustom\",(e,t)=>{Se.init(e,t),x.init(e,t)});function vt(e,t){return Oe($t,e??(()=>!0),t)}function Ke(e,t={}){let r=vt(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 bt=l(\"ZodMiniFunction\",(e,t)=>{Ee.init(e,t),x.init(e,t)});function Ge(e){return new bt({type:\"function\",input:Array.isArray(e?.input)?mt(e?.input):e?.input??G(P()),output:e?.output??P()})}var Zt=Ve(()=>Le(O(),Ke(Object)));function Zo(e){let t=De(\"kind\",[J({kind:q(\"result\"),value:P()}),J({kind:q(\"local_refusal\"),code:Ue(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=Ge({input:G(P()),output:We(P())}),m=Fe({[p.data]:Be(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{Zo as createFrameBindingWire};\n";
|
|
@@ -37,9 +37,11 @@ export function createFrameBindingWire(codes) {
|
|
|
37
37
|
input: z.array(z.unknown()),
|
|
38
38
|
output: z.promise(z.unknown()),
|
|
39
39
|
});
|
|
40
|
-
//
|
|
40
|
+
// Native RPC methods are selectable without reflected key membership.
|
|
41
|
+
// A plain lookup view also accepts callable native namespaces. The selected
|
|
42
|
+
// callable is still required before invoking it with the native receiver.
|
|
41
43
|
const call = z
|
|
42
|
-
.object({ [named.data]: callSchema })
|
|
44
|
+
.object({ [named.data]: z.optional(callSchema) })
|
|
43
45
|
.parse(Object.create(stub))[named.data];
|
|
44
46
|
if (call === undefined)
|
|
45
47
|
throw new Error("App binding method unavailable");
|
package/dist/git-auth.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
/** Credential parsing never logs the presented header or its decoding error. */
|
|
2
|
-
/** A Workflow Git pass presented as `Authorization: Bearer` starts with this. */
|
|
3
|
-
export declare const workflowGitPassPrefix = "wgp.";
|
|
4
2
|
/** A build job's clone pass starts with this; only the host's egress presents it. */
|
|
5
3
|
export declare const buildGitPassPrefix = "obp.";
|
|
6
4
|
export declare function presentedGitKey(request: Request): Readonly<{
|
package/dist/git-auth.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
/** Credential parsing never logs the presented header or its decoding error. */
|
|
2
|
-
/** A Workflow Git pass presented as `Authorization: Bearer` starts with this. */
|
|
3
|
-
export const workflowGitPassPrefix = "wgp.";
|
|
4
2
|
/** A build job's clone pass starts with this; only the host's egress presents it. */
|
|
5
3
|
export const buildGitPassPrefix = "obp.";
|
|
6
4
|
export function presentedGitKey(request) {
|
package/dist/git.d.ts
CHANGED
|
@@ -24,7 +24,6 @@ export declare function signStandardWebhook(secret: string, id: string, timestam
|
|
|
24
24
|
export declare function webhookHeaders(secret: string, id: string, type: string, timestamp: number, body: string): Promise<Record<string, string>>;
|
|
25
25
|
export { createGitDoor, gitDoorRoute, smartHttpExchange } from "./git-door.js";
|
|
26
26
|
export type { GitDoorHost, GitDoorTarget } from "./git-door.js";
|
|
27
|
-
export { workflowGitPassPrefix } from "./git-auth.js";
|
|
28
27
|
export { createAdmittedGit, createInstallationGitAdmission, } from "./git-admission.js";
|
|
29
28
|
export type { AdmittedGit, GitStore, GitGrants, GitPolicy, GitJournal, } from "./git-admission.js";
|
|
30
29
|
export { createGitPushJournal } from "./git-journal.js";
|
package/dist/git.js
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
* the App sees repository names, git objects and its own events.
|
|
7
7
|
*/
|
|
8
8
|
import { readPacketLines, pktLine } from "@fungi.computer/agar/git-wire";
|
|
9
|
-
import * as Schema from "effect/Schema";
|
|
10
9
|
const decoder = new TextDecoder();
|
|
11
10
|
const encoder = new TextEncoder();
|
|
12
11
|
/** The protocol-v2 ls-refs request body. */
|
|
@@ -59,6 +58,5 @@ export async function webhookHeaders(secret, id, type, timestamp, body) {
|
|
|
59
58
|
};
|
|
60
59
|
}
|
|
61
60
|
export { createGitDoor, gitDoorRoute, smartHttpExchange } from "./git-door.js";
|
|
62
|
-
export { workflowGitPassPrefix } from "./git-auth.js";
|
|
63
61
|
export { createAdmittedGit, createInstallationGitAdmission, } from "./git-admission.js";
|
|
64
62
|
export { createGitPushJournal } from "./git-journal.js";
|
package/dist/host.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import type { OysterApprovalCall } from "./approval-home.js";
|
|
2
|
+
import type { PendingApproval, ApprovalApplyResult } from "@fungi.computer/approvals";
|
|
3
|
+
import type { WorkflowControl } from "./workflows.js";
|
|
4
|
+
import { type InstallationOperations } from "./installation-operations.js";
|
|
5
|
+
export type { InstallationOperations };
|
|
1
6
|
import type { KnapsackComputer } from "@fungi.computer/knapsack";
|
|
2
7
|
import type { TenantPrincipal } from "./tenant.js";
|
|
3
8
|
import { type GillCall, type GillReply } from "@fungi.computer/gills";
|
|
@@ -18,10 +23,12 @@ import type { AppCapabilityId, HostActor } from "@fungi.computer/puffball/app";
|
|
|
18
23
|
import { type CapabilityDescriptor } from "./capability-descriptor.js";
|
|
19
24
|
export { capabilityDescriptorSchema, capabilityMethodKindSchema, capabilityMethodSchema, type CapabilityDescriptor, type CapabilityMethodKind, } from "./capability-descriptor.js";
|
|
20
25
|
import type { Release } from "@fungi.computer/puffball";
|
|
26
|
+
import type { UiBootCheckOutcome } from "./boot-gate.js";
|
|
21
27
|
import { type Instance, type InstanceId, type OwnerState, type AppInstanceErrorCode } from "./index.js";
|
|
22
28
|
import { type ArtifactStore } from "./release.js";
|
|
23
29
|
import { type GitDoorTarget } from "./git.js";
|
|
24
30
|
import type { AdmittedGit } from "./git-admission.js";
|
|
31
|
+
import { type PageAssetLoader } from "./page-assets.js";
|
|
25
32
|
import { type AppApi } from "@fungi.computer/puffball";
|
|
26
33
|
export { ReleaseError, defaultAssetPolicy, parseRelease, resolveBackend, sha256, verifyRelease, type ArtifactStore, type VerifiedRelease, } from "./release.js";
|
|
27
34
|
/**
|
|
@@ -73,10 +80,16 @@ export type InstallationCommit = Readonly<{
|
|
|
73
80
|
}>;
|
|
74
81
|
/** Durable commits remain with the host's registry; reads are tenant-scoped. */
|
|
75
82
|
export type InstallationStore = InstallationReader & Readonly<{
|
|
76
|
-
/**
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
|
|
83
|
+
/** Absence makes installation commands unavailable, never synchronous. */
|
|
84
|
+
operations?: InstallationOperations;
|
|
85
|
+
/** Opaque identity of this store incarnation; replacing the store mints another. */
|
|
86
|
+
generation: () => Promise<string>;
|
|
87
|
+
/**
|
|
88
|
+
* Atomically commit one reducer-produced record only over the version it
|
|
89
|
+
* was computed from (0: no record). Every writer reads, may await
|
|
90
|
+
* activation, then commits here, so a concurrent commit is never undone.
|
|
91
|
+
*/
|
|
92
|
+
compareAndPut: (installation: Installation, expectedAuthorityVersion: number, expectedGeneration: string) => Promise<InstallationCommit>;
|
|
80
93
|
}>;
|
|
81
94
|
/** A JSON value crossing the method boundary. */
|
|
82
95
|
export type OysterJson = Schema.Json;
|
|
@@ -92,7 +105,9 @@ export type InstanceResult<T> = Readonly<{
|
|
|
92
105
|
}>;
|
|
93
106
|
/** One running App Instance, wherever the host runs it. */
|
|
94
107
|
export type InstanceHandle = Readonly<{
|
|
95
|
-
/**
|
|
108
|
+
/** Check lifecycle and construction without activating or changing Instance state. */
|
|
109
|
+
prepare: (state: OwnerState, release: Release) => Promise<InstanceResult<UiBootCheckOutcome | null>>;
|
|
110
|
+
/** Activate a complete owner state only after its registry selection commits. */
|
|
96
111
|
apply: (state: OwnerState, release: Release) => Promise<InstanceResult<Instance>>;
|
|
97
112
|
/** Deliver an admitted Git push under this exact Instance selection. */
|
|
98
113
|
onGitPush: (facts: InvocationFacts, fact: AppGitPushFact) => Promise<void>;
|
|
@@ -167,6 +182,16 @@ export type OysterEnv = {
|
|
|
167
182
|
};
|
|
168
183
|
/** Everything a host supplies to run Oyster. */
|
|
169
184
|
export type OysterHost = Readonly<{
|
|
185
|
+
/** Native approval home. A host without one cannot execute App tool writes. */
|
|
186
|
+
approvals?: Readonly<{
|
|
187
|
+
/** Stage an admitted operation; only the native home may apply it. */
|
|
188
|
+
submit(call: OysterApprovalCall): Promise<PendingApproval | ApprovalApplyResult>;
|
|
189
|
+
}>;
|
|
190
|
+
/**
|
|
191
|
+
* Host-bound Workflow control; absence exposes no Workflow authority.
|
|
192
|
+
* @inlineType WorkflowControl
|
|
193
|
+
*/
|
|
194
|
+
workflows?: (principal: OysterPrincipal) => Promise<WorkflowControl | null>;
|
|
170
195
|
auth: OysterAuth;
|
|
171
196
|
/** Host-held sealing key for member writes; never exposed to the guest.
|
|
172
197
|
* Absence refuses eligible named member writes, even when the App has no sync continuation.
|
|
@@ -175,6 +200,8 @@ export type OysterHost = Readonly<{
|
|
|
175
200
|
artifacts: ArtifactStore;
|
|
176
201
|
installations: InstallationStore;
|
|
177
202
|
instances: InstanceDirectory;
|
|
203
|
+
/** Report-only host UI check; backend construction remains Instance-owned and blocking. */
|
|
204
|
+
bootUi: (release: Release) => Promise<UiBootCheckOutcome>;
|
|
178
205
|
/** Fixed Computer selected by the host; request input never selects it. */
|
|
179
206
|
computerId?: string;
|
|
180
207
|
/** The fixed Computer's advertised calls for one admitted caller, or null
|
|
@@ -224,17 +251,16 @@ export type OysterHost = Readonly<{
|
|
|
224
251
|
homeInstallationId?: string;
|
|
225
252
|
/** Browser composition supplied by a deployable host; defaults to Oyster shell. */
|
|
226
253
|
pageScript?: string;
|
|
254
|
+
/**
|
|
255
|
+
* Host page-source acquisition; defaults to the generated Oyster assets.
|
|
256
|
+
* @inlineType PageAssetLoader
|
|
257
|
+
*/
|
|
258
|
+
pageAssets?: PageAssetLoader;
|
|
227
259
|
/** Page title shown in the shell. */
|
|
228
260
|
title?: string;
|
|
229
261
|
}>;
|
|
230
|
-
/**
|
|
231
|
-
|
|
232
|
-
* it: the one path the POST install and PUT release-select routes share,
|
|
233
|
-
* and that a build owner's own install call reaches too. Nothing there (or
|
|
234
|
-
* only a deleted installation) is a fresh install; a live installation is
|
|
235
|
-
* switched in place, refusing a change of the installation's App identity.
|
|
236
|
-
*/
|
|
237
|
-
export declare function installOrSelect(host: OysterHost, installationId: string, release: Release, principal: OysterPrincipal): Promise<Response>;
|
|
262
|
+
/** Completed selection, without re-deriving or executing outside Watchdog. */
|
|
263
|
+
export declare function installOrSelect(host: OysterHost, installationId: string, release: Release, principal: OysterPrincipal, intent: "install-or-select" | "install-or-remint" | "create-only", origin: "owner-direct" | "workflow" | "app", requestId?: string, signal?: AbortSignal): Promise<Response>;
|
|
238
264
|
/**
|
|
239
265
|
* Create the Oyster App server: a Hono app that installs App Releases, serves
|
|
240
266
|
* their UI, forwards their backend requests and methods to their Instances,
|