diff --git a/experiments/iroh-relay-ws/host/deno.json b/experiments/iroh-relay-ws/host/deno.json index 6b3fe66..8da5ae7 100644 --- a/experiments/iroh-relay-ws/host/deno.json +++ b/experiments/iroh-relay-ws/host/deno.json @@ -9,14 +9,14 @@ "lib": ["dom", "dom.iterable", "dom.asynciterable", "deno.ns"] }, "imports": { - "@polyengine/runtime/embedder": "jsr:@polyengine/runtime@0.5.1/embedder", - "@polyengine/runtime/shim": "jsr:@polyengine/runtime@0.5.1/shim", - "@polyengine/protocol": "jsr:@polyengine/protocol@0.2.3", - "@polyengine/translator": "jsr:@polyengine/translator@0.5.1", - "@polyengine/wasi": "jsr:@polyengine/wasi@0.5.1", - "@polyengine/wasi/io": "jsr:@polyengine/wasi@0.5.1/io", - "@polymorph/webrtc-datachannels": "jsr:@polymorph/webrtc-datachannels@0.5.0", - "@polymorph/websocket": "jsr:@polymorph/websocket@0.5.0" + "@polyengine/runtime/embedder": "jsr:@polyengine/runtime@0.6.3/embedder", + "@polyengine/runtime/shim": "jsr:@polyengine/runtime@0.6.3/shim", + "@polyengine/protocol": "jsr:@polyengine/protocol@0.3.1", + "@polyengine/translator": "jsr:@polyengine/translator@0.6.3", + "@polyengine/wasi": "jsr:@polyengine/wasi@0.6.3", + "@polyengine/wasi/io": "jsr:@polyengine/wasi@0.6.3/io", + "@polymorph/webrtc-datachannels": "jsr:@polymorph/webrtc-datachannels@0.6.0", + "@polymorph/websocket": "jsr:@polymorph/websocket@0.6.0" }, "tasks": { "check": "deno check ." diff --git a/experiments/iroh-relay-ws/host/deno.lock b/experiments/iroh-relay-ws/host/deno.lock index 8c1fff4..e1ab386 100644 --- a/experiments/iroh-relay-ws/host/deno.lock +++ b/experiments/iroh-relay-ws/host/deno.lock @@ -1,53 +1,52 @@ { "version": "5", "specifiers": { - "jsr:@polyengine/protocol@0.2.3": "0.2.3", - "jsr:@polyengine/protocol@~0.2.2": "0.2.3", - "jsr:@polyengine/protocol@~0.2.3": "0.2.3", - "jsr:@polyengine/runtime@0.5.1": "0.5.1", - "jsr:@polyengine/runtime@~0.5.1": "0.5.1", - "jsr:@polyengine/translator@0.5.1": "0.5.1", - "jsr:@polyengine/wasi@0.5.1": "0.5.1", - "jsr:@polymorph/webrtc-datachannels@0.5.0": "0.5.0", - "jsr:@polymorph/websocket@0.5.0": "0.5.0", + "jsr:@polyengine/protocol@0.3.1": "0.3.1", + "jsr:@polyengine/protocol@~0.3.1": "0.3.1", + "jsr:@polyengine/runtime@0.6.3": "0.6.3", + "jsr:@polyengine/runtime@~0.6.3": "0.6.3", + "jsr:@polyengine/translator@0.6.3": "0.6.3", + "jsr:@polyengine/wasi@0.6.3": "0.6.3", + "jsr:@polymorph/webrtc-datachannels@0.6.0": "0.6.0", + "jsr:@polymorph/websocket@0.6.0": "0.6.0", "npm:node-datachannel@0.32.3": "0.32.3", "npm:playwright@^1.62.1": "1.62.1", "npm:werift@0.22.2": "0.22.2" }, "jsr": { - "@polyengine/protocol@0.2.3": { - "integrity": "e3f0ac4165eb691d7231164ce28cf75e275c99496aa538e032297febdc52b371" + "@polyengine/protocol@0.3.1": { + "integrity": "3cba0ded857c5cc911fcf9c0782c7566c79af89ddc8e0ec4e48ece60c807a518" }, - "@polyengine/runtime@0.5.1": { - "integrity": "6337c94d623bc2013fdeb324a5206860a916b8897b39cf4bec65b1bf87c287d0", + "@polyengine/runtime@0.6.3": { + "integrity": "8f1ffc1c547793bc4cb3c1dec6a62c8cf0eb5cdb135b70e6df1fd042c6ec58f0", "dependencies": [ - "jsr:@polyengine/protocol@~0.2.3" + "jsr:@polyengine/protocol@~0.3.1" ] }, - "@polyengine/translator@0.5.1": { - "integrity": "16d7ac88997f89f10145cc109737b749bfebd37c9ea1aefe0a41b44c01b75586", + "@polyengine/translator@0.6.3": { + "integrity": "ccd0bb64ce3081d70b13e224c77e423faf7acf9953f62d4e0d2bab97c626c932", "dependencies": [ - "jsr:@polyengine/runtime@~0.5.1" + "jsr:@polyengine/runtime@~0.6.3" ] }, - "@polyengine/wasi@0.5.1": { - "integrity": "1cb71ff91c24415d85a3b15bbb35462757586fa1478febba605cab4c1b2dbe72", + "@polyengine/wasi@0.6.3": { + "integrity": "5c738fe95101f22e469346618e79ce261dd636a5d44e89fdcdd40c33d8c92e17", "dependencies": [ - "jsr:@polyengine/protocol@~0.2.3" + "jsr:@polyengine/protocol@~0.3.1" ] }, - "@polymorph/webrtc-datachannels@0.5.0": { - "integrity": "fef8803ef87826ce8c5cc6545460ce2e41ef63d5c31d10f63e9fb0666a752734", + "@polymorph/webrtc-datachannels@0.6.0": { + "integrity": "3cac84fe625177154ebd5a792548963a7381710998bfe94acd5170680f7bd227", "dependencies": [ - "jsr:@polyengine/protocol@~0.2.2", + "jsr:@polyengine/protocol@~0.3.1", "npm:node-datachannel", "npm:werift" ] }, - "@polymorph/websocket@0.5.0": { - "integrity": "84a7862e9bdeaedca92f7b57b12f5ee1348878734906feebb4d37634ac6659ae", + "@polymorph/websocket@0.6.0": { + "integrity": "8e27a2603479d76edcc8c9a3bbfd22d05663da34e9bbdf4ad1326cf18d610c6c", "dependencies": [ - "jsr:@polyengine/protocol@~0.2.2" + "jsr:@polyengine/protocol@~0.3.1" ] } }, @@ -625,12 +624,12 @@ }, "workspace": { "dependencies": [ - "jsr:@polyengine/protocol@0.2.3", - "jsr:@polyengine/runtime@0.5.1", - "jsr:@polyengine/translator@0.5.1", - "jsr:@polyengine/wasi@0.5.1", - "jsr:@polymorph/webrtc-datachannels@0.5.0", - "jsr:@polymorph/websocket@0.5.0" + "jsr:@polyengine/protocol@0.3.1", + "jsr:@polyengine/runtime@0.6.3", + "jsr:@polyengine/translator@0.6.3", + "jsr:@polyengine/wasi@0.6.3", + "jsr:@polymorph/webrtc-datachannels@0.6.0", + "jsr:@polymorph/websocket@0.6.0" ], "packageJson": { "dependencies": [ diff --git a/host-polyengine/README.md b/host-polyengine/README.md index a5c554a..4067ee4 100644 --- a/host-polyengine/README.md +++ b/host-polyengine/README.md @@ -47,13 +47,14 @@ guest's and is latent on every host. ## The pin polyengine and the sibling host modules arrive from JSR under caret -constraints on one minor line: the `@polyengine/{runtime,translator,wasi}@^0.5.1` -lockstep family (0.5.1 is a floor, not a convenience: the endpoint's -dial timeouts drop in-flight import futures, which polyengine handles as -a prompt discard only from 0.5.1 — A23; under 0.5.0 the drop wedges the -store, polyengine#239), plus `@polyengine/protocol@^0.2.2` (versioned independently +constraints on one minor line: the `@polyengine/{runtime,translator,wasi}@^0.6.3` +lockstep family (the line's floor has been ≥0.5.1 since A23, not a +convenience: the endpoint's dial timeouts drop in-flight import futures, +which polyengine handles as a prompt discard only from 0.5.1 — A23; under +0.5.0 the drop wedges the store, polyengine#239), plus +`@polyengine/protocol@^0.3.1` (versioned independently of the lockstep family — the A22 host-ABI vocabulary line) and -`jsr:@polymorph/*@^0.5.0`. `deno.lock` pins the resolved versions and +`jsr:@polymorph/*@^0.6.0`. `deno.lock` pins the resolved versions and carries integrity, enforced with `--frozen`. `@polyengine/translator` ships the translator wasm for the same commit as the runtime, so the plan-format coupling between runtime and translator is self-consistent diff --git a/host-polyengine/deno.json b/host-polyengine/deno.json index 5b152fd..f95d1be 100644 --- a/host-polyengine/deno.json +++ b/host-polyengine/deno.json @@ -1,6 +1,6 @@ { "name": "@polymorph/iroh", - "version": "0.5.1", + "version": "0.6.0", "license": "Apache-2.0", "exports": { ".": "./src/mod.ts" }, "//": "MODULE-IDENTITY CONSTRAINT: this package instantiates the packaged endpoint component, so it still loads @polyengine/runtime/embedder — every consumer's resolver must still resolve exactly ONE @polyengine/runtime version for stateful-handle interop (a component instantiated under one embedder copy is refused by another). @polyengine/wasi@0.5.0 is protocol-only internally (A22) and the sibling @polymorph host modules (@polymorph/{webcrypto,websocket,webrtc-datachannels}@0.5.0) depend only on @polyengine/protocol — neither couples to @polyengine/runtime at all, so they no longer contribute to that constraint; @polyengine/protocol copies are harmless by construction (A22, contracts/embedder-api.md). Every dependency constraint here is a caret range on one minor line (published-package convention, polyengine's own precedent); deno.lock carries integrity, --frozen enforced in the repo. The exam gate (justfile: exam-polyengine) asserts the repo's deno.locks resolve to one @polyengine/runtime version and one @polyengine/protocol version, and pipes the resolved graph through scripts/polyengine-identity-gate.ts (one runtime module, no raw URLs). src/endpoint_component.ts is GENERATED by `just build-components` (gitignored; the publish workflow regenerates it) — the packaged endpoint component, base64 in the module graph. minimumDependencyAge keeps Deno's default supply-chain gate for everything else while letting same-day @polyengine/@polymorph publishes resolve.", @@ -10,13 +10,13 @@ "exclude": ["jsr:@polyengine/*", "jsr:@polymorph/*"] }, "imports": { - "@polyengine/runtime/embedder": "jsr:@polyengine/runtime@^0.5.1/embedder", - "@polyengine/protocol": "jsr:@polyengine/protocol@^0.2.2", - "@polyengine/translator": "jsr:@polyengine/translator@^0.5.1", - "@polyengine/wasi": "jsr:@polyengine/wasi@^0.5.1", - "@polymorph/webcrypto": "jsr:@polymorph/webcrypto@^0.5.0", - "@polymorph/websocket": "jsr:@polymorph/websocket@^0.5.0", - "@polymorph/webrtc-datachannels": "jsr:@polymorph/webrtc-datachannels@^0.5.0" + "@polyengine/runtime/embedder": "jsr:@polyengine/runtime@^0.6.3/embedder", + "@polyengine/protocol": "jsr:@polyengine/protocol@^0.3.1", + "@polyengine/translator": "jsr:@polyengine/translator@^0.6.3", + "@polyengine/wasi": "jsr:@polyengine/wasi@^0.6.3", + "@polymorph/webcrypto": "jsr:@polymorph/webcrypto@^0.6.0", + "@polymorph/websocket": "jsr:@polymorph/websocket@^0.6.0", + "@polymorph/webrtc-datachannels": "jsr:@polymorph/webrtc-datachannels@^0.6.0" }, "publish": { "exclude": ["src/run-endpoint.ts", "src/scenario.ts", "src/repo.ts", "!src/endpoint_component.ts"] diff --git a/host-polyengine/deno.lock b/host-polyengine/deno.lock index 1a11ad6..7f3bfcf 100644 --- a/host-polyengine/deno.lock +++ b/host-polyengine/deno.lock @@ -1,57 +1,56 @@ { "version": "5", "specifiers": { - "jsr:@polyengine/protocol@~0.2.2": "0.2.3", - "jsr:@polyengine/protocol@~0.2.3": "0.2.3", - "jsr:@polyengine/runtime@~0.5.1": "0.5.1", - "jsr:@polyengine/translator@~0.5.1": "0.5.1", - "jsr:@polyengine/wasi@~0.5.1": "0.5.1", - "jsr:@polymorph/webcrypto@0.5": "0.5.0", - "jsr:@polymorph/webrtc-datachannels@0.5": "0.5.0", - "jsr:@polymorph/websocket@0.5": "0.5.0", + "jsr:@polyengine/protocol@~0.3.1": "0.3.1", + "jsr:@polyengine/runtime@~0.6.3": "0.6.3", + "jsr:@polyengine/translator@~0.6.3": "0.6.3", + "jsr:@polyengine/wasi@~0.6.3": "0.6.3", + "jsr:@polymorph/webcrypto@0.6": "0.6.0", + "jsr:@polymorph/webrtc-datachannels@0.6": "0.6.0", + "jsr:@polymorph/websocket@0.6": "0.6.0", "npm:node-datachannel@0.32.3": "0.32.3", "npm:werift@0.22.2": "0.22.2" }, "jsr": { - "@polyengine/protocol@0.2.3": { - "integrity": "e3f0ac4165eb691d7231164ce28cf75e275c99496aa538e032297febdc52b371" + "@polyengine/protocol@0.3.1": { + "integrity": "3cba0ded857c5cc911fcf9c0782c7566c79af89ddc8e0ec4e48ece60c807a518" }, - "@polyengine/runtime@0.5.1": { - "integrity": "6337c94d623bc2013fdeb324a5206860a916b8897b39cf4bec65b1bf87c287d0", + "@polyengine/runtime@0.6.3": { + "integrity": "8f1ffc1c547793bc4cb3c1dec6a62c8cf0eb5cdb135b70e6df1fd042c6ec58f0", "dependencies": [ - "jsr:@polyengine/protocol@~0.2.3" + "jsr:@polyengine/protocol" ] }, - "@polyengine/translator@0.5.1": { - "integrity": "16d7ac88997f89f10145cc109737b749bfebd37c9ea1aefe0a41b44c01b75586", + "@polyengine/translator@0.6.3": { + "integrity": "ccd0bb64ce3081d70b13e224c77e423faf7acf9953f62d4e0d2bab97c626c932", "dependencies": [ "jsr:@polyengine/runtime" ] }, - "@polyengine/wasi@0.5.1": { - "integrity": "1cb71ff91c24415d85a3b15bbb35462757586fa1478febba605cab4c1b2dbe72", + "@polyengine/wasi@0.6.3": { + "integrity": "5c738fe95101f22e469346618e79ce261dd636a5d44e89fdcdd40c33d8c92e17", "dependencies": [ - "jsr:@polyengine/protocol@~0.2.3" + "jsr:@polyengine/protocol" ] }, - "@polymorph/webcrypto@0.5.0": { - "integrity": "b9b03e2855a83f8817bb9d6f6a0cb5ec261a4dd3c09c957b741eeb7eba639ef9", + "@polymorph/webcrypto@0.6.0": { + "integrity": "3157cf069c2d3591d215e07b617870c81f88ae9eebe737c74ec5daeddc44b8b5", "dependencies": [ - "jsr:@polyengine/protocol@~0.2.2" + "jsr:@polyengine/protocol" ] }, - "@polymorph/webrtc-datachannels@0.5.0": { - "integrity": "fef8803ef87826ce8c5cc6545460ce2e41ef63d5c31d10f63e9fb0666a752734", + "@polymorph/webrtc-datachannels@0.6.0": { + "integrity": "3cac84fe625177154ebd5a792548963a7381710998bfe94acd5170680f7bd227", "dependencies": [ - "jsr:@polyengine/protocol@~0.2.2", + "jsr:@polyengine/protocol", "npm:node-datachannel", "npm:werift" ] }, - "@polymorph/websocket@0.5.0": { - "integrity": "84a7862e9bdeaedca92f7b57b12f5ee1348878734906feebb4d37634ac6659ae", + "@polymorph/websocket@0.6.0": { + "integrity": "8e27a2603479d76edcc8c9a3bbfd22d05663da34e9bbdf4ad1326cf18d610c6c", "dependencies": [ - "jsr:@polyengine/protocol@~0.2.2" + "jsr:@polyengine/protocol" ] } }, @@ -610,13 +609,13 @@ }, "workspace": { "dependencies": [ - "jsr:@polyengine/protocol@~0.2.2", - "jsr:@polyengine/runtime@~0.5.1", - "jsr:@polyengine/translator@~0.5.1", - "jsr:@polyengine/wasi@~0.5.1", - "jsr:@polymorph/webcrypto@0.5", - "jsr:@polymorph/webrtc-datachannels@0.5", - "jsr:@polymorph/websocket@0.5" + "jsr:@polyengine/protocol@~0.3.1", + "jsr:@polyengine/runtime@~0.6.3", + "jsr:@polyengine/translator@~0.6.3", + "jsr:@polyengine/wasi@~0.6.3", + "jsr:@polymorph/webcrypto@0.6", + "jsr:@polymorph/webrtc-datachannels@0.6", + "jsr:@polymorph/websocket@0.6" ] } } diff --git a/host-polyengine/src/harness.ts b/host-polyengine/src/harness.ts index ac8a33d..9ccf4b8 100644 --- a/host-polyengine/src/harness.ts +++ b/host-polyengine/src/harness.ts @@ -95,11 +95,6 @@ export interface EndpointInstanceOptions { readonly env?: Record; /** Component bytes to run instead of the packaged endpoint build. */ readonly componentBytes?: Uint8Array; - /** - * Mirror the guest's stdout/stderr to the console as it runs. The - * captured text is available either way via `stdout()`/`stderr()`. - */ - readonly guestLogPassthrough?: boolean; } export interface EndpointInstance { @@ -127,7 +122,6 @@ export async function newEndpointInstance( cli: { args: [`iroh-endpoint-${options.label}`], env: { ...options.env }, - passthrough: options.guestLogPassthrough ?? false, }, }); const imports = { diff --git a/host-polyengine/src/run-endpoint.ts b/host-polyengine/src/run-endpoint.ts index 85063a8..22557fd 100644 --- a/host-polyengine/src/run-endpoint.ts +++ b/host-polyengine/src/run-endpoint.ts @@ -63,14 +63,12 @@ import { } from "./repo.ts"; // The exam always runs THIS TREE's freshly built component (repo.ts reads -// it from target/), never the packaged embed, and forwards the -// EXAM_GUEST_LOGS env knob the harness no longer reads ambiently. +// it from target/), never the packaged embed. async function newEndpointInstance( options: EndpointInstanceOptions, ): Promise { return await packageEndpointInstance({ componentBytes: await endpointComponentBytes(), - guestLogPassthrough: Deno.env.get("EXAM_GUEST_LOGS") === "1", ...options, }); }