@opengeni/runtime 0.14.0 → 0.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/sandbox/index.ts","../src/sandbox/providers/index.ts","../src/sandbox/capabilities.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/shared/editor.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/shared/archive.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/shared/metadata.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/shared/ports.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/shared/pty.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/shared/session.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/shared/runAs.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/shared/sessionBase.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/shared/sessionState.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/shared/snapshots.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/blaxel/mounts.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/shared/inContainerMounts.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/blaxel/sandbox.ts","../src/sandbox/errors.ts","../src/sandbox/providers/blaxel.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/cloudflare/mounts.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/cloudflare/sandbox.ts","../src/sandbox/providers/cloudflare.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/daytona/mounts.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/daytona/sandbox.ts","../src/sandbox/providers/daytona.ts","../../../node_modules/.bun/@openai+agents-core@0.13.3+bd37e07cd49ea605/node_modules/@openai/agents-core/src/sandbox/localSkills.ts","../../../node_modules/.bun/@openai+agents-core@0.13.3+bd37e07cd49ea605/node_modules/@openai/agents-core/src/sandbox/sandboxes/docker.ts","../../../node_modules/.bun/@openai+agents-core@0.13.3+bd37e07cd49ea605/node_modules/@openai/agents-core/src/sandbox/sandboxes/unixLocal.ts","../../../node_modules/.bun/@openai+agents-core@0.13.3+bd37e07cd49ea605/node_modules/@openai/agents-core/src/sandbox/sandboxes/shared/localWorkspace.ts","../../../node_modules/.bun/@openai+agents-core@0.13.3+bd37e07cd49ea605/node_modules/@openai/agents-core/src/sandbox/sandboxes/shared/localSnapshots.ts","../../../node_modules/.bun/@openai+agents-core@0.13.3+bd37e07cd49ea605/node_modules/@openai/agents-core/src/sandbox/sandboxes/shared/localSnapshotPaths.ts","../../../node_modules/.bun/@openai+agents-core@0.13.3+bd37e07cd49ea605/node_modules/@openai/agents-core/src/sandbox/sandboxes/shared/pty.ts","../../../node_modules/.bun/@openai+agents-core@0.13.3+bd37e07cd49ea605/node_modules/@openai/agents-core/src/sandbox/sandboxes/shared/shellCommand.ts","../../../node_modules/.bun/@openai+agents-core@0.13.3+bd37e07cd49ea605/node_modules/@openai/agents-core/src/sandbox/sandboxes/shared/sessionStateValues.ts","../src/sandbox/providers/docker.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/e2b/mounts.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/e2b/sandbox.ts","../src/sandbox/providers/e2b.ts","../src/sandbox/providers/local.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/modal/sandbox.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/modal/mounts.ts","../src/sandbox/providers/modal.ts","../src/sandbox/providers/none.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/runloop/sandbox.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/runloop/mounts.ts","../src/sandbox/providers/runloop.ts","../src/sandbox/selfhosted/control-rpc.ts","../src/sandbox/selfhosted/session.ts","../src/sandbox/selfhosted/retry-policy.ts","../src/sandbox/selfhosted/fault-rendering.ts","../src/sandbox/op-correlation.ts","../src/sandbox/selfhosted/op-stream.ts","../src/sandbox/selfhosted/op-transport.ts","../src/sandbox/providers/selfhosted.ts","../../../node_modules/.bun/@openai+agents-extensions@0.13.3+d7f081875ac70c34/node_modules/@openai/agents-extensions/src/sandbox/vercel/sandbox.ts","../src/sandbox/providers/vercel.ts","../src/sandbox/provider-errors.ts","../src/sandbox/workspace-archive.ts","../src/sandbox/select.ts","../src/sandbox/stream-token.ts","../src/sandbox/display-stack.ts","../src/sandbox/exec-banner.ts","../src/sandbox/terminal-server.ts","../src/sandbox/run-credentials.ts","../src/sandbox/toolspace-token.ts","../src/sandbox/stream-port.ts","../src/sandbox/recording.ts","../src/sandbox/routing/routing-session.ts","../src/sandbox/turn-tool-cancellation.ts","../src/sandbox/channel-a.ts","../src/sandbox/selfhosted/capabilities.ts","../src/sandbox/selfhosted/testing.ts","../src/sandbox/routing/backend-resolver.ts"],"sourcesContent":["// @opengeni/runtime/sandbox — the agent-loop-free sandbox leaf.\n//\n// This module is the load-bearing pre-req for the API-direct control plane\n// (docs/connected-machines.md). It exposes the sandbox client factory plus\n// the resume / recovery-envelope helpers that the API needs to touch a box by\n// id (resume-by-id, file/exec/port ops) WITHOUT importing the @openai/agents\n// agent-loop graph.\n//\n// IMPORT DISCIPLINE (enforced by packages/runtime/test/sandbox-leaf-no-agent-loop.test.ts):\n// - ALLOWED: the per-provider sandbox SDK build imports\n// `@openai/agents/sandbox`, `@openai/agents/sandbox/local`,\n// `@openai/agents-extensions/sandbox/modal`\n// and the workspace `@opengeni/config` / `@opengeni/contracts` packages.\n// - FORBIDDEN: the agent-loop entrypoints — the bare `@openai/agents`,\n// `@openai/agents-extensions`, or `@openai/agents-core` roots, and the\n// loop symbols (`Agent`, `run`, `Runner`, `RunState`).\n// The barrel `packages/runtime/src/index.ts` re-exports everything here via\n// `export * from \"./sandbox\"`, so existing consumers (apps/worker) are\n// unchanged.\n\nimport type { Settings } from \"@opengeni/config\";\nimport { collectSandboxEnvironment, parseExposedPorts } from \"@opengeni/config\";\nimport {\n DESKTOP_STREAM_PORT,\n TERMINAL_STREAM_PORT,\n type SandboxBackend,\n} from \"@opengeni/contracts\";\nimport type {\n SandboxClient,\n SandboxSessionLike,\n SandboxSessionState,\n} from \"@openai/agents/sandbox\";\nimport { PROVIDER_REGISTRY } from \"./providers\";\nimport { SandboxConfigError, SandboxResumeStateUnavailableError } from \"./errors\";\nimport { isProviderSandboxNotFoundError } from \"./provider-errors\";\nimport {\n readVerifiedWorkspaceArchive,\n verifyRestoredWorkspace,\n WorkspaceArchiveIntegrityError,\n type VerifiedWorkspaceArchive,\n type WorkspaceArchiveDescriptor,\n} from \"./workspace-archive\";\nimport type { RuntimeMetricsHooks } from \"../metrics\";\n\n// Re-export the config-owned environment/port helpers from the leaf so the\n// API-direct control plane can pull its full sandbox-construction surface from\n// a single agent-loop-free entrypoint. They physically live in @opengeni/config\n// (moving them into runtime would create a config→runtime cycle — ledger CR8).\nexport { collectSandboxEnvironment, parseExposedPorts } from \"@opengeni/config\";\n\n// The provider registry surface — the descriptor table self-test, the per-\n// provider registrations, selection + capability negotiation, and the typed\n// construction errors. All agent-loop-free, so the API-direct control plane\n// imports them from this one leaf.\nexport {\n CAPABILITY_DESCRIPTORS,\n DESKTOP_STREAM_PORT,\n assertDescriptorRegistryInvariants,\n type CapabilityDescriptor,\n} from \"./capabilities\";\nexport {\n SandboxConfigError,\n SandboxProviderUnavailableError,\n SandboxResumeStateUnavailableError,\n} from \"./errors\";\nexport {\n PROVIDER_REGISTRY,\n assertProviderRegistryInvariants,\n type ProviderRegistration,\n type ProviderConstructionContext,\n} from \"./providers\";\nexport {\n classifyProviderSandboxFailure,\n isProviderSandboxGoneDuringRoutedOperation,\n isProviderSandboxNotFoundError,\n isProviderSandboxTransientError,\n type ProviderSandboxFailure,\n type ProviderSandboxFailureKind,\n} from \"./provider-errors\";\nexport {\n WORKSPACE_ARCHIVE_DESCRIPTOR_VERSION,\n WorkspaceArchiveIntegrityError,\n captureVerifiedWorkspaceArchive,\n fingerprintSandboxWorkspace,\n parseWorkspaceArchiveDescriptor,\n readVerifiedWorkspaceArchive,\n verifyRestoredWorkspace,\n type VerifiedWorkspaceArchive,\n type WorkspaceArchiveDescriptor,\n type WorkspaceArchiveIntegrityCode,\n type WorkspaceTreeFingerprint,\n} from \"./workspace-archive\";\nexport {\n ensureModalRegistryImage,\n modalSandboxAttributionEnvironment,\n modalSandboxAttributionTags,\n sweepModalOrphanSandboxes,\n tagModalSandbox,\n terminateModalSandboxById,\n type LiveModalSandboxLeaseAttribution,\n type ModalModuleLoader,\n type ModalOrphanSweepResult,\n type ModalOrphanSweepTermination,\n type ModalSandboxAttribution,\n type RevalidateModalOrphanTermination,\n} from \"./providers/modal\";\nexport {\n selectBackend,\n backendSupportsOs,\n desktopCapableBackend,\n negotiateCapabilities,\n type NegotiationContext,\n} from \"./select\";\n\n// Scoped data-plane stream-token mint/verify (P3.1). Agent-loop-free; the API\n// pulls these from this leaf to authorize the desktop pixel plane.\nexport {\n STREAM_TOKEN_DEFAULT_TTL_SECONDS,\n mintStreamToken,\n verifyStreamToken,\n StreamTokenPayload,\n type MintStreamTokenInput,\n type StreamTokenPayloadType,\n} from \"./stream-token\";\n\n// The Channel-B desktop display-stack launcher (P4.1). Exec-launched,\n// flock-idempotent; the worker (per-turn) and the API (per viewer op) both drive\n// it from this leaf to bring up Xvfb -> XFCE -> x11vnc -viewonly -> websockify:6080.\nexport {\n STREAM_PORT,\n DISPLAY_STACK_TIMEOUT_MS,\n DEFAULT_DESKTOP_GEOMETRY,\n DisplayStackError,\n DisplayStackUnsupportedError,\n buildDisplayStackScript,\n ensureDisplayStack,\n tearDownDisplayStack,\n type DesktopGeometry,\n type DisplayStackCallerKind,\n type DisplayStackClassification,\n type DisplayStackTelemetryContext,\n type DisplayStackTelemetryEvent,\n type DisplayStackTelemetryStatus,\n type EnsureDisplayStackOptions,\n type EnsureDisplayStackResult,\n} from \"./display-stack\";\n\n// The Channel-B REAL PTY terminal-server launcher (P5.t). Exec-launched,\n// flock-idempotent twin of ensureDisplayStack; brings up ttyd PTY-over-websocket\n// (bash -l per ws client) on 7681 over the SAME tunnel the desktop noVNC uses.\nexport {\n TERMINAL_STREAM_PORT,\n TERMINAL_SERVER_TIMEOUT_MS,\n TerminalServerError,\n TerminalServerUnsupportedError,\n buildTerminalServerScript,\n ensureTerminalServer,\n tearDownTerminalServer,\n type EnsureTerminalServerOptions,\n type EnsureTerminalServerResult,\n} from \"./terminal-server\";\n\n// Host-owned rotating run credentials. Material lives outside the persisted\n// workspace/manifest and is activated atomically per session generation.\nexport {\n RunCredentialValidationError,\n normalizeRunCredentialsResolution,\n runCredentialRoot,\n runCredentialPointerFile,\n materializeRunCredentials,\n clearRunCredentials,\n clearRunCredentialsForAttempt,\n withRunCredentialEnvironment,\n withRunCredentialsSession,\n withRunCredentialsClient,\n type RunCredentialExpectedScope,\n type NormalizedRunCredentialMaterial,\n type RunCredentialCommandSession,\n type RunCredentialCommandRunner,\n type RunCredentialSessionReady,\n type MaterializeRunCredentialsOptions,\n} from \"./run-credentials\";\n\n// Session-specific Toolspace token routing. The manifest retains one stable\n// legacy pointer for warm-box env parity; every session command selects its own\n// hashed token file off-manifest.\nexport {\n ToolspaceTokenPathError,\n toolspaceTokenFileForSession,\n toolspaceTokenFileFromEnvironment,\n withToolspaceTokenEnvironment,\n withToolspaceTokenSession,\n withToolspaceTokenClient,\n} from \"./toolspace-token\";\n\n// The Channel-B pixel DATA PLANE (P4.2). Resolves the provider's scoped tunnel\n// for port 6080 (client → provider-tunnel direct), assembles the WS URL, and\n// mints the scoped stream token. Called API-direct on the resumed handle.\nexport {\n exposeStreamPort,\n buildStreamUrl,\n StreamPortUnavailableError,\n type ExposedPortEndpoint,\n type ExposeStreamPortInput,\n type ExposeStreamPortResult,\n} from \"./stream-port\";\n\n// P4.3 recording loop — plain functions over a live session handle (no agent\n// loop); finalize uploads box -> object storage without buffering in the worker.\nexport {\n startRecording,\n stopRecording,\n inspectRecordingArtifact,\n uploadRecordingArtifact,\n deleteRecordingArtifacts,\n recordingStorageKey,\n contentTypeForCodec,\n extForCodec,\n RecordingUnavailableError,\n RecordingError,\n type RecordingCodec,\n type RecordingContentType,\n type StartRecordingInput,\n type RecordingProcess,\n type RecordingArtifactMetadata,\n} from \"./recording\";\n\n// P4.4 Channel-A structured services — the provider-agnostic SandboxChannelAService\n// (FileSystem + Git + Terminal) over a live, resumed-by-id session handle. The\n// API constructs one per request around the box it just resumed; no ownership.\n// Agent-loop-free, so the API-direct control plane imports it from this leaf.\nexport {\n SandboxChannelAService,\n ChannelAValidationError,\n ChannelAUnavailableError,\n ChannelAConflictError,\n ChannelANotFoundError,\n ChannelAUnsupportedError,\n stripExecBanner,\n parseExecBannerSessionId,\n parseExecBannerExitCode,\n isExecSessionLostBanner,\n assertSafeRelPath,\n parsePorcelainV2,\n parseNumstatZ,\n parseUnifiedPatch,\n REPOSITORY_DISCOVERY_LIMIT,\n type ChannelASession,\n type ChannelAExecArgs,\n type ChannelAExecResult,\n type ChannelAEmitter,\n type SandboxChannelAServiceOptions,\n type RepositoryDiscoveryDegradedReason,\n type RepositoryDiscoveryResult,\n type NumstatEntry,\n} from \"./channel-a\";\n\n// The selfhosted (bring-your-own-compute) control surface (M3). The NATS-backed\n// `SelfhostedSession` presents the SAME structural exec/fs/git surface as Modal\n// over a `ControlRpc` seam (request/reply on `agent.<ws>.<id>.rpc`, encoded via\n// `@opengeni/agent-proto`). agent-offline is NEVER a NotFound — the lease never\n// cold-creates a rival for a user's real machine. The real NATS transport +\n// Accounts land in M4 behind the SAME `ControlRpc`.\nexport {\n type ControlRpc,\n NatsControlRpc,\n SelfhostedControlError,\n agentErrorToControlError,\n subjectFor,\n offlineControlResponse,\n timeoutControlResponse,\n offlineAgentError,\n timeoutAgentError,\n drainingExhaustedError,\n payloadTooLargeMessage,\n drainingMessage,\n execDeadlineHint,\n NEVER_SENT_DETAIL_KEY,\n type NatsRequestConnection,\n type SelfhostedUnavailableReason,\n} from \"./selfhosted/control-rpc\";\n// The transport-agnostic per-op observation seam (out-of-band telemetry — metrics\n// + machine.* events; the op-engine's op-stream client emits through this too).\nexport type { SelfhostedOpObserver, SelfhostedOpObservation } from \"./selfhosted/op-observer\";\n// The four-field in-band fault renderer (the failure-visibility doctrine).\nexport {\n selfhostedFaultClass,\n SELFHOSTED_INFRASTRUCTURE_FAULT_CLASSES,\n renderSelfhostedFault,\n FAULT_FIELD_WHAT_HAPPENED,\n FAULT_FIELD_WHICH_LAYER,\n FAULT_FIELD_WHAT_PRESERVED,\n FAULT_FIELD_WHAT_TO_TRY,\n} from \"./selfhosted/fault-rendering\";\n// The selfhosted control-op retry policy (the pure decision + the injected clock).\nexport {\n decideSelfhostedRetry,\n selfhostedRetryBackoffMs,\n defaultSelfhostedRetryClock,\n SELFHOSTED_IDEMPOTENT_READONLY_OPS,\n SELFHOSTED_DRAINING_MAX_RETRIES,\n SELFHOSTED_EXEC_DRAINING_MAX_RETRIES,\n SELFHOSTED_TIMEOUT_MAX_RETRIES,\n SELFHOSTED_NEVER_SENT_MAX_RETRIES,\n SELFHOSTED_RETRY_BACKOFF_BASE_MS,\n SELFHOSTED_RETRY_BACKOFF_FACTOR,\n SELFHOSTED_RETRY_BACKOFF_CAP_MS,\n type SelfhostedRetryClock,\n type SelfhostedRetryDecision,\n} from \"./selfhosted/retry-policy\";\nexport {\n SelfhostedSession,\n SelfhostedSandboxClient,\n buildSelfhostedBackendSession,\n isSelfhostedProviderNotFoundError,\n setSelfhostedApplyDiff,\n SELFHOSTED_DEFAULT_TIMEOUT_MS,\n SELFHOSTED_RELAY_STREAM_PATH,\n type SelfhostedSessionState,\n type SelfhostedSessionDeps,\n type SelfhostedSessionBuild,\n type SelfhostedRelayConfig,\n type SelfhostedExecArgs,\n type SelfhostedExecResult,\n type SelfhostedApplyDiff,\n type SelfhostedEditor,\n type SelfhostedImageOutput,\n type SelfhostedOpStreamDeps,\n} from \"./selfhosted/session\";\n// The op-stream exec transport (op-stream protocol v1.1 — streaming exec to a\n// Connected Machine runner). The worker injects `NatsOpStreamTransport` (over\n// the same bus connection as the control rpc) plus an `OpStreamJournal`\n// adapted onto Temporal; sessions without the injection keep the legacy exec.\nexport {\n NatsOpStreamTransport,\n OpStreamUnavailableError,\n opAckSubject,\n opFrameSubject,\n type NatsOpStreamConnection,\n type OpStreamSubscription,\n type OpStreamTransport,\n} from \"./selfhosted/op-transport\";\nexport {\n OP_STREAM_ACK_INTERVAL_MS,\n OP_STREAM_DEFAULT_WINDOW_BYTES,\n OP_STREAM_RECONNECT_HOLD_MS,\n OP_STREAM_SILENCE_TIMEOUT_MS,\n type OpStreamExecOutcome,\n type OpStreamJournal,\n} from \"./selfhosted/op-stream\";\n// The durable op-id correlation seam (B1): the runtime barrel BINDS it around\n// the SDK shell tool; the sandbox leaf READS it when minting op ids.\nexport { nextDurableOpId, runWithToolCallCorrelation, sanitizeOpIdToken } from \"./op-correlation\";\nexport {\n negotiateSelfhostedCapabilities,\n selfhostedLiveness,\n SELFHOSTED_RECONNECT_WINDOW_MS,\n type SelfhostedNegotiationInput,\n type SelfhostedLivenessState,\n type SelfhostedEnrollment,\n} from \"./selfhosted/capabilities\";\nexport {\n MockAgentResponder,\n type MockAgentResponderOptions,\n type MockExecHandler,\n} from \"./selfhosted/testing\";\n\n// The hot-swap routing proxy (M7): ONE stable session-shaped object the SDK binds\n// to, which re-reads the per-session active pointer per op and dispatches to the\n// currently-active backend (Modal or selfhosted) — flippable mid-turn, single\n// active at a time, fence-retrying on a swap race.\nexport {\n RoutingBackendRecoveryRequiredError,\n RoutingMutationOutcomeUnknownError,\n RoutingRetainedProcessNotFoundError,\n RoutingSandboxSession,\n RoutingUnsupportedError,\n type ActivePointer,\n type DefaultBackendLossResult,\n type RoutableBackendSession,\n type ResolvedActiveBackend,\n type RoutingMutationSettlementResult,\n type RoutingRetainedProcess,\n type RoutingRetainedProcessAdoption,\n type RoutingRetainedProcessTerminalProof,\n type RoutingSandboxSessionDeps,\n type RoutingTransitionEvent,\n} from \"./routing/routing-session\";\nexport {\n makeActiveBackendResolver,\n ActiveBackendUnresolvableError,\n swapTargetEstablishability,\n type ActiveBackendResolverDeps,\n type RoutableSandbox,\n type BackendUnresolvableCode,\n type SwapTargetEstablishability,\n} from \"./routing/backend-resolver\";\n\n/**\n * Construct the raw provider SandboxClient for the configured backend. Registry-\n * driven (the old flat if/else is gone): the backend's ProviderRegistration owns\n * validateCredentials + build, with per-provider units/field-names. Returns\n * undefined for \"none\".\n *\n * The desktop stream port (6080) is merged into exposedPorts for every desktop-\n * capable (backend, os) when desktop is enabled AND the provider cannot expose\n * ports on demand (modal/runloop/e2b pre-declare; blaxel resolves on demand).\n * Existing modal/docker/local construction is behavior-preserved.\n */\nexport function createSandboxClient(\n settings: Settings,\n environment = collectSandboxEnvironment(settings),\n): unknown {\n return createSandboxClientForBackend(\n settings.sandboxBackend as SandboxBackend,\n settings,\n environment,\n );\n}\n\n/**\n * Construct the raw provider SandboxClient for an EXPLICIT backend, independent\n * of settings.sandboxBackend. This is the resume-by-id builder the per-turn\n * resume path (and the API-direct control plane) call: a lease's box was created\n * on a specific backend (the envelope's backendId / the lease's\n * resume_backend_id), and the client that reattaches to it must be built for\n * THAT backend, not the process's currently-configured default. When the backend\n * equals settings.sandboxBackend this is identical to createSandboxClient\n * (behavior-preserved). Returns undefined for \"none\".\n */\nexport function createSandboxClientForBackend(\n backend: SandboxBackend,\n settings: Settings,\n environment = collectSandboxEnvironment(settings),\n): unknown {\n const registration = PROVIDER_REGISTRY[backend];\n if (!registration) {\n throw new SandboxConfigError(backend, `Unknown sandbox backend \"${backend}\"`);\n }\n if (registration.backend === \"none\") {\n return undefined;\n }\n registration.validateCredentials(settings); // fail-fast, typed\n\n const exposedPorts = parseExposedPorts(settings.dockerExposedPorts);\n // 6080 port-merge: a desktop-capable backend that pre-declares ports (not\n // on-demand) must carry the desktop port at construction so resolveExposedPort\n // (6080) succeeds later. runloop is included (it is desktop-capable but NOT\n // on-demand → must pre-declare). blaxel is on-demand → skipped here.\n const desktop = registration.descriptor.capabilities.DesktopStream;\n if (\n desktop.available &&\n settings.sandboxDesktopEnabled &&\n !registration.descriptor.portExposure.supportsOnDemandPorts &&\n !exposedPorts.includes(DESKTOP_STREAM_PORT)\n ) {\n exposedPorts.push(DESKTOP_STREAM_PORT);\n }\n // 7681 port-merge: the REAL PTY terminal (ttyd) rides the SAME tunnel as the\n // desktop, so a desktop-capable pre-declared-port backend must ALSO carry 7681\n // at construction for resolveExposedPort(7681) to succeed later on a fresh box.\n // Same condition as the 6080 merge (a desktop-capable image bakes ttyd too).\n if (\n desktop.available &&\n settings.sandboxDesktopEnabled &&\n !registration.descriptor.portExposure.supportsOnDemandPorts &&\n !exposedPorts.includes(TERMINAL_STREAM_PORT)\n ) {\n exposedPorts.push(TERMINAL_STREAM_PORT);\n }\n\n const raw = registration.build({ settings, environment, exposedPorts });\n // Docker network decoration stays backend-specific (only docker).\n return registration.backend === \"docker\"\n ? withDockerNetwork(raw as SandboxClient, settings.dockerNetwork)\n : raw;\n}\n\nfunction withDockerNetwork(client: SandboxClient, network: string | undefined): SandboxClient {\n const trimmed = network?.trim();\n if (!trimmed) {\n return client;\n }\n const wrapSession = async <T extends SandboxSessionLike>(session: T): Promise<T> => {\n const containerId = (session as { state?: { containerId?: unknown } }).state?.containerId;\n if (typeof containerId === \"string\" && containerId.length > 0) {\n await connectDockerNetwork(trimmed, containerId);\n }\n return session;\n };\n return {\n backendId: client.backendId,\n ...(client.supportsDefaultOptions !== undefined\n ? { supportsDefaultOptions: client.supportsDefaultOptions }\n : {}),\n ...(client.create\n ? {\n create: async (...args: any[]) =>\n await wrapSession(await (client.create as any)(...args)),\n }\n : {}),\n ...(client.resume\n ? {\n resume: async (state: SandboxSessionState) =>\n await wrapSession(await client.resume!(state)),\n }\n : {}),\n ...(client.delete\n ? { delete: async (state: SandboxSessionState) => await client.delete!(state) }\n : {}),\n ...(client.serializeSessionState\n ? {\n serializeSessionState: async (state: SandboxSessionState, options) =>\n await client.serializeSessionState!(state, options),\n }\n : {}),\n ...(client.canPersistOwnedSessionState\n ? {\n canPersistOwnedSessionState: async (state: SandboxSessionState) =>\n await client.canPersistOwnedSessionState!(state),\n }\n : {}),\n ...(client.canReusePreservedOwnedSession\n ? {\n canReusePreservedOwnedSession: async (state: SandboxSessionState) =>\n await client.canReusePreservedOwnedSession!(state),\n }\n : {}),\n ...(client.deserializeSessionState\n ? {\n deserializeSessionState: async (state: Record<string, unknown>) =>\n await client.deserializeSessionState!(state),\n }\n : {}),\n };\n}\n\nasync function connectDockerNetwork(network: string, containerId: string): Promise<void> {\n const { spawnSync } = await import(\"node:child_process\");\n const result = spawnSync(\"docker\", [\"network\", \"connect\", network, containerId], {\n encoding: \"utf8\",\n });\n if (result.status === 0) {\n return;\n }\n const stderr = result.stderr ?? result.error?.message ?? \"\";\n if (stderr.includes(\"already exists\")) {\n return;\n }\n throw new Error(\n `Failed to connect Docker sandbox container to network ${network}: ${stderr.trim()}`,\n );\n}\n\n/**\n * Extract the sandbox recovery entry from a run state as a plain JSON record,\n * for storage decoupled from the RunState blob (issue #35). Encapsulates the\n * underscore-internal `_sandbox` read in exactly one place.\n */\nexport function sandboxStateEntryFromRunState(state: unknown): Record<string, unknown> | null {\n const sandboxState = (state as any)?._sandbox;\n if (!sandboxState) {\n return null;\n }\n const entry =\n sandboxState.sessionsByAgent?.[sandboxState.currentAgentKey] ??\n (sandboxState.currentAgentKey && sandboxState.sessionState\n ? {\n backendId: sandboxState.backendId,\n currentAgentKey: sandboxState.currentAgentKey,\n currentAgentName: sandboxState.currentAgentName,\n sessionState: sandboxState.sessionState,\n }\n : null);\n if (!entry || !entry.sessionState) {\n return null;\n }\n return entry as Record<string, unknown>;\n}\n\n/**\n * Items-mode counterpart of restoredSandboxSessionState: rebuild the live\n * sandbox session state from a stored entry (as produced by\n * sandboxStateEntryFromRunState) instead of from a RunState blob.\n */\nexport async function restoredSandboxSessionStateFromEntry(\n entry: Record<string, unknown>,\n client: unknown,\n): Promise<SandboxSessionState | undefined> {\n if (!client || !entry || typeof entry !== \"object\" || !(\"sessionState\" in entry)) {\n return undefined;\n }\n if (entry.backendId && (client as SandboxClient).backendId !== entry.backendId) {\n throw new Error(\"Stored sandbox envelope backend does not match the configured sandbox client\");\n }\n return await deserializeSandboxSessionStateEnvelope(client as SandboxClient, entry.sessionState);\n}\n\n/**\n * Read the persisted /workspace snapshot archive off a lease envelope's\n * `sessionState` (sandbox-file-persistence). The reaper (persistDrainSnapshot)\n * folds the base64 archive — a Modal native snapshot-ref or a tar archive, the\n * exact bytes `session.persistWorkspace()` returned — at\n * `sessionState.workspaceArchive`. Cold-restore decodes it and replays it via\n * `session.hydrateWorkspace(archive)` on the freshly-created box so /workspace is\n * restored. Returns undefined when the envelope carries no archive (a box that\n * was never drain-persisted, or a non-persistence config that stored none).\n *\n * It is deliberately read SEPARATELY from deserializeSandboxSessionStateEnvelope:\n * the archive does NOT ride serializeSessionState (it originates at reaper time),\n * and the SDK's deserializeSessionState must NOT receive it (it is an opaque\n * runtime-level field, not provider state).\n */\nexport function readWorkspaceArchiveFromEnvelopeSessionState(\n sessionState: unknown,\n): Uint8Array | undefined {\n if (!sessionState || typeof sessionState !== \"object\") {\n return undefined;\n }\n const b64 = (sessionState as { workspaceArchive?: unknown }).workspaceArchive;\n if (typeof b64 !== \"string\" || b64.length === 0) {\n return undefined;\n }\n try {\n return Uint8Array.from(Buffer.from(b64, \"base64\"));\n } catch {\n return undefined;\n }\n}\n\n// The native snapshot-ref prefixes the @openai/agents-extensions modal client\n// encodes (snapshots.mjs `NATIVE_SNAPSHOT_PREFIXES`). The ref is\n// `<PREFIX>\\n{\"snapshot_id\":\"...\",...}`. We re-implement the decode here because\n// `@openai/agents-extensions/sandbox/shared` is NOT an exported subpath (the\n// package `exports` map only exposes `./sandbox/<provider>`), so decodeNativeSnapshotRef\n// is unreachable — same reasoning as isProviderSandboxNotFoundError below.\nconst MODAL_SNAPSHOT_REF_PREFIXES = [\n \"MODAL_SANDBOX_FS_SNAPSHOT_V1\\n\",\n \"MODAL_SANDBOX_DIR_SNAPSHOT_V1\\n\",\n];\n\n/** Decode the Modal snapshot id out of a persisted base64 archive ref, or\n * undefined when the archive is a tar payload (no provider snapshot to GC) or\n * is unparseable. Used only for keep-latest-per-lease snapshot GC. */\nexport function decodeModalSnapshotId(archive: Uint8Array): string | undefined {\n let text: string;\n try {\n text = new TextDecoder().decode(archive);\n } catch {\n return undefined;\n }\n for (const prefix of MODAL_SNAPSHOT_REF_PREFIXES) {\n if (!text.startsWith(prefix)) {\n continue;\n }\n try {\n const payload = JSON.parse(text.slice(prefix.length)) as { snapshot_id?: unknown };\n return typeof payload.snapshot_id === \"string\" && payload.snapshot_id.length > 0\n ? payload.snapshot_id\n : undefined;\n } catch {\n return undefined;\n }\n }\n return undefined;\n}\n\n/**\n * Best-effort GC of a SUPERSEDED Modal filesystem/directory snapshot\n * (sandbox-file-persistence). restoreSnapshotFilesystem terminates the previous\n * SANDBOX but never deletes the prior SNAPSHOT image, so snapshots accumulate\n * unbounded across warm/cold cycles. The reaper keeps only the latest per lease:\n * when it writes a NEW archive it passes the PRIOR archive here to delete its\n * image via the live session's Modal client (`session.modal.images.delete(id)` —\n * the same API the SDK uses for directory images). Never throws (GC is a\n * best-effort backstop; a leaked snapshot is a cost issue, not a correctness one).\n * A tar archive (no snapshot id) is a no-op. Returns the deleted snapshot id (or\n * undefined when nothing was deleted) for observability.\n */\nexport async function deletePriorPersistedSnapshot(\n session: unknown,\n priorArchiveBase64: string | null | undefined,\n): Promise<string | undefined> {\n if (!priorArchiveBase64) {\n return undefined;\n }\n let bytes: Uint8Array;\n try {\n bytes = Uint8Array.from(Buffer.from(priorArchiveBase64, \"base64\"));\n } catch {\n return undefined;\n }\n const snapshotId = decodeModalSnapshotId(bytes);\n if (!snapshotId) {\n return undefined;\n }\n const modal = (session as { modal?: { images?: { delete?: (id: string) => Promise<unknown> } } })\n .modal;\n const del = modal?.images?.delete;\n if (typeof del !== \"function\") {\n return undefined;\n }\n try {\n await del.call(modal!.images, snapshotId);\n return snapshotId;\n } catch {\n return undefined;\n }\n}\n\nexport async function deserializeSandboxSessionStateEnvelope(\n client: SandboxClient,\n envelope: unknown,\n): Promise<SandboxSessionState | undefined> {\n if (!envelope || typeof envelope !== \"object\") {\n return undefined;\n }\n if (!client.deserializeSessionState) {\n throw new Error(\n \"Sandbox client must implement deserializeSessionState() to resume RunState sandbox state\",\n );\n }\n const state = envelope as {\n providerState?: Record<string, unknown>;\n manifest?: unknown;\n snapshot?: unknown;\n snapshotFingerprint?: unknown;\n snapshotFingerprintVersion?: unknown;\n workspaceReady?: unknown;\n exposedPorts?: unknown;\n };\n return await client.deserializeSessionState({\n ...(state.providerState ?? {}),\n manifest: state.manifest,\n ...(state.snapshot !== undefined ? { snapshot: state.snapshot } : {}),\n ...(state.snapshotFingerprint !== undefined\n ? { snapshotFingerprint: state.snapshotFingerprint }\n : {}),\n ...(state.snapshotFingerprintVersion !== undefined\n ? { snapshotFingerprintVersion: state.snapshotFingerprintVersion }\n : {}),\n workspaceReady: state.workspaceReady,\n ...(state.exposedPorts ? { exposedPorts: structuredClone(state.exposedPorts) } : {}),\n });\n}\n\n// ============================================================================\n// The ONE resume / recovery primitive (P1.2).\n//\n// establishSandboxSessionFromEnvelope is the single re-establish-from-envelope\n// path the stateless model leans on. Creation authority is explicit:\n//\n// - `create-or-restore` is reserved for the caller that won the durable\n// cold->warming lease transition. It may create a cold box, or replace a\n// resumable box that the provider proves is gone.\n// - `resume-only` is for attached turns and API-direct operations. It may\n// resume the leased box by id, but a provider NotFound propagates to the\n// caller so the lease can be atomically marked cold. It NEVER creates.\n//\n// This ownership boundary is the double-spawn guard. A provider NotFound alone\n// is not creation authority: many attached callers can observe the same dead id\n// concurrently, while only one caller may own cold->warming.\n// ============================================================================\n\n/** A live, externally-owned sandbox session re-established from the group lease\n * envelope. The caller injects `{client, session, sessionState}` NON-OWNED into\n * the run (or drives session.exec/readFile/resolveExposedPort directly) and\n * drops the handle when done — the lease, not this handle, owns the box. */\nexport type EstablishedSandboxSession = {\n client: unknown;\n session: unknown;\n sessionState: unknown;\n instanceId: string;\n backendId: string;\n /** How this establish reached a live box: warm reattach by id (\"resumed\"),\n * fresh create (\"created\"), or fresh create + archive hydration\n * (\"restored\"). Callers use it to emit the durable sandbox.box.* lifecycle\n * events — box transitions were previously unrecorded, which made both\n * 2026-07-06 incidents near-unattributable. Optional so external/legacy\n * constructors of this shape stay valid. */\n origin?: \"resumed\" | \"created\" | \"restored\";\n /** Set when a create-authorized reattach found the envelope's box GONE\n * (provider NotFound) and fell through to cold-restore. */\n lostInstanceId?: string;\n /** Exact durable archive revision verified byte-for-byte after hydration. */\n restoredArchive?: WorkspaceArchiveDescriptor;\n};\n\nexport class SandboxExecReadinessError extends Error {\n readonly name = \"SandboxExecReadinessError\";\n\n constructor(\n public readonly backend: string,\n public readonly code: \"exec_probe_unavailable\" | \"exec_probe_timeout\" | \"exec_probe_failed\",\n public readonly timeoutMs: number,\n public readonly exitCode: number | null = null,\n ) {\n super(\n code === \"exec_probe_timeout\"\n ? `sandbox creation timed out waiting for ${backend} command readiness after ${timeoutMs}ms`\n : code === \"exec_probe_unavailable\"\n ? `${backend} sandbox session does not expose an exec readiness probe`\n : exitCode === null\n ? `${backend} sandbox exec readiness probe did not return a command exit code`\n : `${backend} sandbox exec readiness probe failed with exit code ${exitCode}`,\n );\n }\n}\n\nfunction sandboxExecProbeExitCode(result: unknown): number | null {\n if (typeof result === \"string\") {\n const match = result.match(/Process exited with code (-?\\d+)/);\n return match ? Number(match[1]) : null;\n }\n if (!result || typeof result !== \"object\") return null;\n const candidate = result as {\n exitCode?: unknown;\n exit_code?: unknown;\n code?: unknown;\n status?: unknown;\n };\n for (const value of [candidate.exitCode, candidate.exit_code, candidate.code, candidate.status]) {\n if (typeof value === \"number\") return value;\n }\n return null;\n}\n\nfunction sandboxExecProbeStillRunning(result: unknown): boolean {\n if (typeof result === \"string\") return /Process running with session ID \\d+/u.test(result);\n if (!result || typeof result !== \"object\") return false;\n const candidate = result as { sessionId?: unknown; session_id?: unknown };\n return typeof candidate.sessionId === \"number\" || typeof candidate.session_id === \"number\";\n}\n\n/** A provider handle is not workspace readiness. Modal can return a handle\n * before its command router accepts exec, so every create path must pass this\n * bounded probe before atomically publishing the lease warm/ready. */\nexport async function verifySandboxExecReadiness(\n established: EstablishedSandboxSession,\n timeoutMs = 15_000,\n): Promise<void> {\n if (established.backendId !== \"modal\") return;\n const session = established.session as {\n exec?: (args: {\n cmd: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n }) => Promise<unknown>;\n execCommand?: (args: {\n cmd: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n }) => Promise<unknown>;\n };\n const run = session.exec ?? session.execCommand;\n if (!run) {\n throw new SandboxExecReadinessError(established.backendId, \"exec_probe_unavailable\", timeoutMs);\n }\n let timer: ReturnType<typeof setTimeout> | undefined;\n try {\n const result = await Promise.race([\n run.call(session, {\n cmd: \"true\",\n yieldTimeMs: 1_000,\n maxOutputTokens: 1_000,\n }),\n new Promise<never>((_, reject) => {\n timer = setTimeout(\n () =>\n reject(\n new SandboxExecReadinessError(established.backendId, \"exec_probe_timeout\", timeoutMs),\n ),\n timeoutMs,\n );\n if (timer && \"unref\" in timer && typeof timer.unref === \"function\") timer.unref();\n }),\n ]);\n const exitCode = sandboxExecProbeExitCode(result);\n if (sandboxExecProbeStillRunning(result) || exitCode !== 0) {\n throw new SandboxExecReadinessError(\n established.backendId,\n \"exec_probe_failed\",\n timeoutMs,\n exitCode,\n );\n }\n } finally {\n if (timer) clearTimeout(timer);\n }\n}\n\nexport type SandboxCreatedCallback = (established: EstablishedSandboxSession) => Promise<void>;\n\n// The structural slice we need from a provider SandboxClient to resume by id and\n// cold-restore. Narrowed (not the full agent-loop SandboxClient) so the leaf\n// stays agent-loop-free.\ntype ResumeCapableClient = {\n backendId: string;\n deserializeSessionState?: (state: Record<string, unknown>) => Promise<unknown>;\n resume?: (state: unknown, options?: unknown) => Promise<unknown>;\n create?: (manifest?: unknown, options?: unknown) => Promise<unknown>;\n};\n\n/**\n * Per-provider NotFound discriminator. The @openai/agents-extensions\n * `isProviderSandboxNotFoundError` / `assertResumeRecreateAllowed` helpers live\n * under `@openai/agents-extensions/sandbox/shared`, which is NOT an exported\n * subpath (the package `exports` map only exposes `./sandbox/<provider>`), so we\n * re-implement the discrimination here by inspecting the thrown error shape.\n *\n * \"Box no longer running\" (the box was reaped / idled out / 24h-ceiling) is the\n * ONLY error that licenses a cold-restore via create(). Every other resume\n * failure (transient provider error, auth, network) must propagate so the caller\n * backs off — never spawns a rival box. We err on the side of NOT recreating:\n * an unrecognized error is treated as \"not NotFound\" (propagate), because a\n * false-positive recreate is the dangerous direction (double-spawn).\n */\nfunction readInstanceId(session: unknown): string {\n const state = (session as { state?: Record<string, unknown> }).state ?? {};\n const candidate =\n state.sandboxId ??\n state.instanceId ??\n state.id ??\n state.hostId ??\n state.containerId ??\n state.workspaceRootPath;\n return typeof candidate === \"string\" && candidate.length > 0 ? candidate : \"\";\n}\n\nasync function terminateCreatedSandbox(\n client: ResumeCapableClient,\n session: unknown,\n sessionState: unknown,\n): Promise<void> {\n const clientWithDelete = client as { delete?: (state: unknown) => Promise<unknown> };\n if (typeof clientWithDelete.delete === \"function\" && sessionState !== undefined) {\n try {\n await clientWithDelete.delete(sessionState);\n } catch {\n /* best-effort */\n }\n return;\n }\n const sess = session as {\n close?: () => Promise<unknown>;\n terminate?: () => Promise<unknown>;\n kill?: () => Promise<unknown>;\n };\n try {\n await (sess.terminate ?? sess.kill ?? sess.close)?.();\n } catch {\n /* best-effort */\n }\n}\n\n/**\n * Establish from one recovery envelope under an explicit creation policy. The\n * envelope is the lease's box-identity descriptor (the same per-turn `_sandbox`\n * envelope upserted by the turn activity).\n *\n * - `opts.backendOverride ?? envelope.backendId ?? settings.sandboxBackend`\n * selects the backend; the client is built for THAT backend (resume-by-id is\n * fenced to the original provider).\n * - warm reattach: deserialize the envelope sessionState → client.resume(state)\n * (no lock; R4-safe). `resume-only` propagates provider NotFound.\n * - `create-or-restore`: the elected owner may replace a missing warm instance,\n * or create directly from a cold/null envelope.\n */\nexport async function establishSandboxSessionFromEnvelope(\n settings: Settings,\n envelope: Record<string, unknown> | null,\n opts: {\n sessionId: string;\n recovery: \"create-or-restore\" | \"resume-only\";\n backendOverride?: SandboxBackend;\n environment?: Record<string, string>;\n onSandboxCreated?: SandboxCreatedCallback;\n /** Called after archive hydration but immediately before the exact workspace\n * fingerprint probe. Lease-aware callers persist `verifying` here so a box\n * is never observable as ready while verification is in flight. */\n onWorkspaceRestoreVerifying?: (descriptor: WorkspaceArchiveDescriptor) => Promise<void>;\n metrics?: RuntimeMetricsHooks;\n },\n): Promise<EstablishedSandboxSession> {\n const envelopeBackend =\n typeof envelope?.backendId === \"string\" ? (envelope.backendId as SandboxBackend) : undefined;\n const backend =\n opts.backendOverride ?? envelopeBackend ?? (settings.sandboxBackend as SandboxBackend);\n const environment = opts.environment ?? collectSandboxEnvironment(settings);\n const client = createSandboxClientForBackend(backend, settings, environment) as\n | ResumeCapableClient\n | undefined;\n if (!client) {\n throw new SandboxConfigError(\n backend,\n `Cannot establish a sandbox session for backend \"${backend}\" (no client; sandboxBackend=none?)`,\n );\n }\n if (opts.recovery === \"create-or-restore\" && !client.create) {\n throw new SandboxConfigError(backend, `Sandbox backend \"${backend}\" does not support create()`);\n }\n\n // The manifest the box is CREATED with. Its `environment` must equal the\n // environment the agent declares for this run (buildManifest's `environment`),\n // because the SDK injects this box NON-OWNED and then applies the agent's\n // manifest as a provided-session delta — `applyManifestToProvidedSession`\n // throws on ANY environment delta (validateNoEnvironmentDelta). The client's\n // constructor `env` materializes the RUNTIME env but does NOT populate\n // `manifest.environment` (a bare create() yields `new Manifest()` with an empty\n // environment), so the manifest env must be set here explicitly. `root` is left\n // to default to \"/workspace\" to match buildManifest's declared root (the\n // root-delta guard). The caller threads `opts.environment` = the SAME object\n // passed to runtime.buildAgent, so current==target and the delta is empty.\n const createManifest = { environment };\n\n // The serialized provider state the box was last persisted as. The envelope\n // shape is the per-turn `_sandbox` entry; its `sessionState` is the provider\n // payload deserializeSandboxSessionStateEnvelope re-hydrates.\n const envelopeSessionState =\n envelope && typeof envelope === \"object\"\n ? (envelope as { sessionState?: unknown }).sessionState\n : undefined;\n\n // The persisted /workspace snapshot the reaper folded onto the lease envelope\n // (sandbox-file-persistence). Present on a re-warm whose box was drain-persisted:\n // - WARM reattach NotFound path (box gone, full envelope still has sandboxId);\n // - COLD lease re-warm (confirmDrainCold preserved a MINIMAL archive-only\n // envelope `{ sessionState: { workspaceArchive } }` — NO sandboxId, so the\n // warm-reattach branch must NOT try resume()-by-id; it cold-creates+hydrates).\n const archiveState =\n envelopeSessionState && typeof envelopeSessionState === \"object\"\n ? (envelopeSessionState as {\n workspaceArchive?: unknown;\n workspaceArchiveMeta?: unknown;\n })\n : undefined;\n // Exactly one selected revision is restored. A present archive without its\n // revision/hash/tree descriptor is not recoverable truth and fails before any\n // provider create. `workspaceArchivePrev` is retained for explicit future\n // operator selection, never silently substituted in this attempt.\n const workspaceArchiveBase64 = archiveState?.workspaceArchive;\n const workspaceArchiveMetadata = archiveState?.workspaceArchiveMeta;\n\n // create() a FRESH box, THEN replay the persisted /workspace snapshot via\n // session.hydrateWorkspace(archive) when one rode the envelope. hydrateWorkspace\n // decodes the snapshot-ref and swaps the box for one booted from the snapshot\n // image (restoreSnapshotFilesystem). No archive is valid only for a genuinely\n // new workspace; recovery callers select and verify an exact archive before\n // entering this seam. This is the SOLE archive-replay path, shared by the\n // NotFound warm-reattach path and the cold-restore branch (b) below.\n const coldRestore = async (resumeFallbackState?: unknown): Promise<EstablishedSandboxSession> => {\n // Parse/verify lazily: a warm resume-by-id does not consume its retained\n // archive, so a legacy live box remains resumable. Creation/restoration is\n // the boundary that requires complete durable metadata.\n const workspaceArchive: VerifiedWorkspaceArchive | null = readVerifiedWorkspaceArchive(\n workspaceArchiveBase64,\n workspaceArchiveMetadata,\n );\n const createStarted = Date.now();\n let restored: Awaited<ReturnType<NonNullable<typeof client.create>>>;\n try {\n restored = await client.create!({ manifest: createManifest });\n recordSandboxCreateMetric(opts.metrics, client.backendId, \"completed\", createStarted);\n } catch (error) {\n recordSandboxCreateMetric(opts.metrics, client.backendId, \"failed\", createStarted);\n throw error;\n }\n let restoredState = (restored as { state?: unknown }).state;\n let established: EstablishedSandboxSession = {\n client,\n session: restored,\n sessionState: restoredState ?? resumeFallbackState,\n instanceId: readInstanceId(restored),\n backendId: client.backendId,\n };\n if (opts.onSandboxCreated) {\n try {\n await opts.onSandboxCreated(established);\n } catch (createCallbackError) {\n await terminateCreatedSandbox(client, restored, restoredState);\n throw createCallbackError;\n }\n }\n let hydrationApplied = false;\n if (workspaceArchive) {\n const hydrate = (restored as { hydrateWorkspace?: (data: Uint8Array) => Promise<void> })\n .hydrateWorkspace;\n if (typeof hydrate !== \"function\") {\n await terminateCreatedSandbox(client, restored, restoredState);\n throw new WorkspaceArchiveIntegrityError(\n \"archive_hydration_failed\",\n `sandbox backend ${client.backendId} cannot hydrate selected archive revision ${workspaceArchive.descriptor.revision}`,\n );\n }\n try {\n // hydrateWorkspace may internally replace the underlying box.\n await hydrate.call(restored, workspaceArchive.bytes);\n } catch (error) {\n await terminateCreatedSandbox(client, restored, (restored as { state?: unknown }).state);\n if (error instanceof WorkspaceArchiveIntegrityError) throw error;\n throw new WorkspaceArchiveIntegrityError(\n \"archive_hydration_failed\",\n `failed to hydrate selected workspace archive revision ${workspaceArchive.descriptor.revision}`,\n { retryable: true },\n );\n }\n // hydrateWorkspace may replace the provider box (Modal's native snapshot\n // restore does this). Attribute the newly-active identity immediately,\n // before restore-state marking, fingerprint verification, or any caller\n // can publish the box warm. The callback is the durable lease/tagging\n // boundary; if it cannot persist the replacement, the caller fails closed\n // and this exact replacement is terminated below.\n const hydratedState = (restored as { state?: unknown }).state;\n const hydratedInstanceId = readInstanceId(restored);\n if (hydratedInstanceId && hydratedInstanceId !== established.instanceId) {\n established = {\n client,\n session: restored,\n sessionState: hydratedState ?? resumeFallbackState,\n instanceId: hydratedInstanceId,\n backendId: client.backendId,\n };\n if (opts.onSandboxCreated) {\n try {\n await opts.onSandboxCreated(established);\n } catch (createCallbackError) {\n await terminateCreatedSandbox(client, restored, hydratedState);\n throw createCallbackError;\n }\n }\n }\n if (opts.onWorkspaceRestoreVerifying) {\n try {\n await opts.onWorkspaceRestoreVerifying(workspaceArchive.descriptor);\n } catch (error) {\n await terminateCreatedSandbox(client, restored, (restored as { state?: unknown }).state);\n throw error;\n }\n }\n try {\n // Verification happens on the hydrated replacement before any caller\n // may publish it warm or route an operation to it.\n await verifyRestoredWorkspace(restored, workspaceArchive.descriptor);\n } catch (error) {\n await terminateCreatedSandbox(client, restored, (restored as { state?: unknown }).state);\n if (error instanceof WorkspaceArchiveIntegrityError) throw error;\n throw new WorkspaceArchiveIntegrityError(\n \"workspace_fingerprint_unavailable\",\n `failed to verify selected workspace archive revision ${workspaceArchive.descriptor.revision}`,\n { retryable: true },\n );\n }\n hydrationApplied = true;\n console.info(\n `[sandbox] cold-restore verified workspace archive revision ${workspaceArchive.descriptor.revision}`,\n );\n }\n restoredState = (restored as { state?: unknown }).state;\n return {\n client,\n session: restored,\n sessionState: restoredState ?? resumeFallbackState,\n instanceId: readInstanceId(restored),\n backendId: client.backendId,\n origin: hydrationApplied ? (\"restored\" as const) : (\"created\" as const),\n ...(workspaceArchive ? { restoredArchive: workspaceArchive.descriptor } : {}),\n };\n };\n\n // Does the envelope carry a RESUMABLE box id (warm reattach), or only a\n // restorable archive (cold lease)? A Modal envelope with no providerState.sandboxId\n // (the minimal archive-only envelope confirmDrainCold preserves) is NOT resumable —\n // client.resume() would throw \"requires a persisted sandboxId\", which is NOT a\n // NotFound, so it would propagate instead of cold-restoring. Gate the resume\n // branch on a present sandbox identity so an archive-only envelope falls straight\n // through to the cold-restore+hydrate path (b).\n const envelopeProviderState =\n envelopeSessionState && typeof envelopeSessionState === \"object\"\n ? (envelopeSessionState as { providerState?: Record<string, unknown> }).providerState\n : undefined;\n const hasResumableInstance = Boolean(\n envelopeProviderState &&\n typeof envelopeProviderState === \"object\" &&\n (envelopeProviderState.sandboxId ||\n envelopeProviderState.instanceId ||\n envelopeProviderState.id ||\n envelopeProviderState.containerId ||\n envelopeProviderState.workspaceRootPath),\n );\n\n // (a) WARM REATTACH BY ID — only when the envelope carries a resumable box id.\n if (\n hasResumableInstance &&\n envelopeSessionState &&\n client.resume &&\n client.deserializeSessionState\n ) {\n let resumedState: unknown;\n try {\n resumedState = await deserializeSandboxSessionStateEnvelope(\n client as unknown as SandboxClient,\n envelopeSessionState,\n );\n } catch (error) {\n throw new SandboxConfigError(\n backend,\n `Failed to deserialize sandbox resume envelope for backend \"${backend}\": ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n if (resumedState !== undefined) {\n try {\n const session = await client.resume(resumedState);\n return {\n client,\n session,\n sessionState: resumedState,\n instanceId: readInstanceId(session),\n backendId: client.backendId,\n origin: \"resumed\",\n };\n } catch (error) {\n // Attached callers never own replacement. Propagate the provider\n // NotFound so their lease-aware caller can atomically mark this exact\n // warm epoch/instance cold and re-enter normal admission. Only the\n // cold->warming winner may replace the missing box.\n if (\n !isProviderSandboxNotFoundError(client.backendId, error) ||\n opts.recovery === \"resume-only\"\n ) {\n throw error;\n }\n // COLD-RESTORE: the box is genuinely gone. Modal does NOT restore via\n // create({ snapshot }) — passing `snapshot` to ModalSandboxClient.create()\n // THROWS (assertCoreSnapshotUnsupported). Modal's real persistence is an\n // OPAQUE ARCHIVE captured by session.persistWorkspace() at drain/turn-\n // snapshot time and folded onto the lease envelope\n // (sandbox-file-persistence). The shared coldRestore() seam creates a\n // fresh box and replays that archive. `lostInstanceId` carries the gone\n // box's id so the caller can emit the durable sandbox.box.lost event.\n const lostInstanceId = [\n envelopeProviderState?.sandboxId,\n envelopeProviderState?.instanceId,\n envelopeProviderState?.id,\n envelopeProviderState?.containerId,\n envelopeProviderState?.workspaceRootPath,\n ].find((value): value is string => typeof value === \"string\" && value.length > 0);\n const restoredSession = await coldRestore(resumedState);\n return lostInstanceId ? { ...restoredSession, lostInstanceId } : restoredSession;\n }\n }\n }\n\n // (b) COLD SESSION / COLD LEASE — no resumable box id. create() a fresh box, and\n // if the envelope carries a persisted /workspace snapshot (the archive-only\n // envelope confirmDrainCold preserves across draining->cold), replay it so\n // /workspace survives the box churn (sandbox-file-persistence). No archive -> a\n // clean empty box (a never-warmed session).\n if (opts.recovery === \"resume-only\") {\n throw new SandboxResumeStateUnavailableError(backend);\n }\n return await coldRestore();\n}\n\nfunction recordSandboxCreateMetric(\n metrics: RuntimeMetricsHooks | undefined,\n backend: string,\n outcome: \"completed\" | \"failed\",\n startedMs: number,\n): void {\n try {\n metrics?.onSandboxCreate?.({\n backend,\n outcome,\n durationSeconds: Math.max(0, (Date.now() - startedMs) / 1000),\n });\n } catch {\n // Metrics emission must not affect sandbox lifecycle.\n }\n}\n\n// A client that can SERIALIZE a live session state back to the persistable\n// envelope form (the inverse of deserializeSessionState). Narrowed so the leaf\n// stays agent-loop-free.\ntype SerializeCapableClient = {\n backendId: string;\n serializeSessionState?: (state: unknown, options?: unknown) => Promise<Record<string, unknown>>;\n};\n\n/**\n * Fold a freshly-established (or resumed) sandbox session into the persistable\n * `resume_state` envelope the lease stores — the SAME `{ backendId, sessionState }`\n * shape `establishSandboxSessionFromEnvelope` consumes to RESUME BY ID. The\n * API-direct control plane (viewer attach / Channel-A) MUST persist this onto the\n * lease at warm-commit time, or a later op (which reads the lease's resume_state)\n * has nothing to resume from and COLD-CREATES A RIVAL BOX — the box-churn the\n * prove-it surfaced (fs.write then fs.read 404'd on a different box; N Channel-A\n * ops leaked N boxes). Returns null when the client cannot serialize (the caller\n * stores null and the box rides the provider idle-timeout — no rival spawn, just\n * no warm-reattach).\n */\nexport async function serializeEstablishedSandboxEnvelope(\n established: EstablishedSandboxSession,\n): Promise<Record<string, unknown> | null> {\n const client = established.client as SerializeCapableClient | undefined;\n if (!client || typeof client.serializeSessionState !== \"function\") {\n return null;\n }\n if (established.sessionState === undefined || established.sessionState === null) {\n return null;\n }\n try {\n // serializeSessionState returns the PERSISTABLE FLAT provider state — for\n // Modal `{ sandboxId, appName, imageTag, manifest(serialized),\n // configuredExposedPorts, ... }` (sandboxId preserved via `...state`).\n const serialized = await client.serializeSessionState(established.sessionState);\n\n // deserializeSandboxSessionStateEnvelope expects the lease-envelope shape\n // `{ providerState, manifest, snapshot?, exposedPorts?, workspaceReady }` and\n // rehydrates `{ ...providerState, manifest, snapshot?, exposedPorts?,\n // workspaceReady }`. So the FLAT serialized state must be nested under\n // `providerState` (and manifest/ports lifted), or sandboxId is dropped on the\n // round-trip and resume() throws \"requires a persisted sandboxId\". We pull\n // manifest/exposedPorts up but leave them in providerState too (harmless; the\n // deserialize spreads providerState first, then overlays manifest/ports).\n const flat = serialized as Record<string, unknown>;\n const manifest = flat.manifest;\n const exposedPorts = flat.configuredExposedPorts ?? flat.exposedPorts;\n const sessionState: Record<string, unknown> = {\n providerState: flat,\n ...(manifest !== undefined ? { manifest } : {}),\n ...(exposedPorts !== undefined ? { exposedPorts } : {}),\n workspaceReady: true,\n };\n return { backendId: established.backendId, sessionState };\n } catch {\n // A serialize failure must NOT fail the attach/op; we just lose warm-reattach\n // for this box (it stays resumable-by-instance only via the next cold path).\n return null;\n }\n}\n\nconst PROVIDER_IDENTITY_FIELDS = [\n \"sandboxId\",\n \"instanceId\",\n \"id\",\n \"hostId\",\n \"containerId\",\n \"workspaceRootPath\",\n \"agentId\",\n] as const;\n\n/**\n * Whether a replacement envelope contains a provider-resumable identity. An\n * archive-only envelope is intentionally valid recovery metadata, but it is\n * never proof that the newly-created provider box can be resumed or attached.\n */\nexport function hasPersistableSandboxProviderIdentity(\n envelope: Record<string, unknown> | null | undefined,\n): envelope is Record<string, unknown> {\n const sessionState =\n envelope?.sessionState && typeof envelope.sessionState === \"object\"\n ? (envelope.sessionState as Record<string, unknown>)\n : null;\n const providerState =\n sessionState?.providerState && typeof sessionState.providerState === \"object\"\n ? (sessionState.providerState as Record<string, unknown>)\n : null;\n return Boolean(\n providerState &&\n PROVIDER_IDENTITY_FIELDS.some(\n (field) => typeof providerState[field] === \"string\" && providerState[field].length > 0,\n ),\n );\n}\n\n/** A replacement provider may not be published warm without a resumable\n * identity. Archive-only state is retained only when the caller rolls back to\n * cold and needs the verified workspace bytes for the next attempt. */\nexport class SandboxReplacementProviderStateError extends Error {\n readonly code = \"replacement_provider_state_unpersistable\" as const;\n\n constructor(public readonly backend: string) {\n super(\n `sandbox backend \"${backend}\" replacement provider state could not be serialized; refusing to publish an attachable lease`,\n );\n this.name = \"SandboxReplacementProviderStateError\";\n }\n}\n\nexport function requirePersistableReplacementSandboxEnvelope(\n envelope: Record<string, unknown> | null,\n backend: string,\n): Record<string, unknown> {\n if (!hasPersistableSandboxProviderIdentity(envelope)) {\n throw new SandboxReplacementProviderStateError(backend);\n }\n return envelope;\n}\n\nconst DURABLE_WORKSPACE_ARCHIVE_FIELDS = [\n \"workspaceArchive\",\n \"workspaceArchiveMeta\",\n \"workspaceArchivePrev\",\n \"workspaceArchivePrevMeta\",\n \"workspaceArchiveAt\",\n] as const;\n\nfunction durableWorkspaceArchiveFields(\n envelope: Record<string, unknown> | null,\n): Record<string, unknown> | null {\n const sessionState =\n envelope?.sessionState && typeof envelope.sessionState === \"object\"\n ? (envelope.sessionState as Record<string, unknown>)\n : null;\n if (\n !sessionState ||\n typeof sessionState.workspaceArchive !== \"string\" ||\n sessionState.workspaceArchive.length === 0\n ) {\n return null;\n }\n const fields: Record<string, unknown> = {};\n for (const key of DURABLE_WORKSPACE_ARCHIVE_FIELDS) {\n if (sessionState[key] !== undefined && sessionState[key] !== null) {\n fields[key] = sessionState[key];\n }\n }\n return fields;\n}\n\n/**\n * Build the only resume envelope that may be published for a newly-created\n * replacement sandbox. Historical state contributes durable archive pointers\n * only; it can never substitute for serialization of the replacement's provider\n * identity. If replacement serialization is unavailable or fails, publication\n * keeps an archive-only envelope (when one exists) or null. The new instance id\n * remains separately fenced on the lease, while later attach/resume fails closed\n * rather than targeting the dead provider that initiated rematerialization.\n */\nexport async function serializeReplacementSandboxEnvelope(\n established: EstablishedSandboxSession,\n archiveSource: Record<string, unknown> | null,\n): Promise<Record<string, unknown> | null> {\n const serialized = await serializeEstablishedSandboxEnvelope(established);\n const archiveFields = durableWorkspaceArchiveFields(archiveSource);\n if (!serialized && !archiveFields) {\n return null;\n }\n const serializedSessionState =\n serialized?.sessionState && typeof serialized.sessionState === \"object\"\n ? (serialized.sessionState as Record<string, unknown>)\n : {};\n return {\n ...(serialized ?? {}),\n // Never inherit a historical backend marker when the replacement could not\n // serialize. The separately-persisted resume_backend_id and this envelope\n // must both describe the replacement.\n backendId: established.backendId,\n sessionState: {\n ...serializedSessionState,\n ...(archiveFields ?? {}),\n },\n };\n}\n","// The provider registry — PROVIDER_REGISTRY maps each SandboxBackend to its\n// ProviderRegistration. This is the data structure createSandboxClient drives\n// (replacing the old flat if/else chain). The module also owns the\n// descriptor.backendId === SDK client.backendId assertion (deferred from P0.1):\n// it must construct the real SDK clients, so it lives here rather than in the\n// contracts-only capabilities self-test.\n\nimport type { Settings } from \"@opengeni/config\";\nimport { SandboxBackend } from \"@opengeni/contracts\";\nimport { assertDescriptorRegistryInvariants } from \"../capabilities\";\nimport { blaxelProvider } from \"./blaxel\";\nimport { cloudflareProvider } from \"./cloudflare\";\nimport { daytonaProvider } from \"./daytona\";\nimport { dockerProvider } from \"./docker\";\nimport { e2bProvider } from \"./e2b\";\nimport { localProvider } from \"./local\";\nimport { modalProvider } from \"./modal\";\nimport { noneProvider } from \"./none\";\nimport { runloopProvider } from \"./runloop\";\nimport { selfhostedProvider } from \"./selfhosted\";\nimport type { ProviderRegistration } from \"./types\";\nimport { vercelProvider } from \"./vercel\";\n\nexport const PROVIDER_REGISTRY: Record<SandboxBackend, ProviderRegistration> = {\n docker: dockerProvider,\n modal: modalProvider,\n local: localProvider,\n none: noneProvider,\n daytona: daytonaProvider,\n runloop: runloopProvider,\n e2b: e2bProvider,\n blaxel: blaxelProvider,\n cloudflare: cloudflareProvider,\n vercel: vercelProvider,\n selfhosted: selfhostedProvider,\n};\n\n// Stub settings carrying every per-provider credential, used ONLY by the\n// boot-time backendId assertion to construct each client without tripping\n// validateCredentials. The SDK client constructors are pure option-stores (the\n// underlying provider SDK is required lazily at create()/resume() time, never at\n// construction — verified against @openai/agents-extensions 0.11.6), so this is\n// safe with no provider peer dep installed and no network.\nconst ASSERTION_STUB_SETTINGS = {\n dockerImage: \"opengeni-sandbox:local\",\n modalAppName: \"opengeni-sandbox\",\n modalTimeoutSeconds: 900,\n daytonaApiKey: \"stub\",\n runloopApiKey: \"stub\",\n runloopTunnel: true,\n e2bApiKey: \"stub\",\n blaxelApiKey: \"stub\",\n cloudflareWorkerUrl: \"https://stub.example.com\",\n vercelToken: \"stub\",\n vercelProjectId: \"stub\",\n} as unknown as Settings;\n\n/**\n * Assert the descriptor table AND that each registered provider's SDK client\n * reports the backendId its descriptor claims. The latter is the\n * deferred-from-P0.1 invariant — it can only run here because it constructs the\n * real clients. Called once at registry build (and from a unit test).\n */\nexport function assertProviderRegistryInvariants(): void {\n assertDescriptorRegistryInvariants();\n for (const backend of SandboxBackend.options) {\n const registration = PROVIDER_REGISTRY[backend];\n if (registration.backend !== backend) {\n throw new Error(\n `PROVIDER_REGISTRY[\"${backend}\"].backend mismatch (got \"${registration.backend}\")`,\n );\n }\n if (registration.descriptor.backend !== backend) {\n throw new Error(\n `PROVIDER_REGISTRY[\"${backend}\"].descriptor.backend mismatch (got \"${registration.descriptor.backend}\")`,\n );\n }\n if (backend === \"none\") {\n // \"none\" has no SDK client (build returns undefined); the descriptor\n // backendId \"none\" is self-consistent.\n if (registration.descriptor.backendId !== \"none\") {\n throw new Error(\n `\"none\" descriptor.backendId must be \"none\" (got \"${registration.descriptor.backendId}\")`,\n );\n }\n continue;\n }\n const client = registration.build({\n settings: ASSERTION_STUB_SETTINGS,\n environment: {},\n exposedPorts: [],\n });\n const sdkBackendId = (client as { backendId?: unknown } | undefined)?.backendId;\n if (typeof sdkBackendId !== \"string\") {\n throw new Error(`Provider \"${backend}\" SDK client has no string backendId`);\n }\n if (sdkBackendId !== registration.descriptor.backendId) {\n throw new Error(\n `Provider \"${backend}\" backendId mismatch: descriptor.backendId=\"${registration.descriptor.backendId}\" but SDK client.backendId=\"${sdkBackendId}\"`,\n );\n }\n }\n}\n\n// Boot-validate the registry once at module load: the descriptor-table self-\n// test PLUS the descriptor.backendId === SDK client.backendId assertion (the\n// deferred-from-P0.1 invariant). The SDK client constructors are pure option-\n// stores (no network, no peer-dep require at construction), so this is a cheap,\n// side-effect-free guard that fails fast on any drift between the static matrix\n// and the installed @openai/agents-extensions.\nassertProviderRegistryInvariants();\n\nexport type { ProviderRegistration, ProviderConstructionContext } from \"./types\";\n","// Capability-descriptor access + boot-time registry invariants (module 03 §2.3).\n//\n// The CapabilityDescriptor type and the CAPABILITY_DESCRIPTORS table-as-data\n// live in @opengeni/contracts (NOT here) so config can read them without an\n// import cycle through runtime (ledger CR8). This module re-exports them for the\n// registry's convenience and owns the boot-time self-test that keeps the table\n// honest as providers are added.\n\nimport {\n CAPABILITY_DESCRIPTORS,\n DESKTOP_STREAM_PORT,\n SandboxBackend,\n type CapabilityDescriptor,\n} from \"@opengeni/contracts\";\n\nexport { CAPABILITY_DESCRIPTORS, DESKTOP_STREAM_PORT };\nexport type { CapabilityDescriptor };\n\n/**\n * Descriptor-table invariants, asserted once at registry build (and from a unit\n * test). This is the guardrail that keeps the static matrix internally coherent.\n * It validates the descriptor data only; the descriptor.backendId === SDK\n * client.backendId assertion (the deferred-from-P0.1 check) lives in\n * providers/index.ts because it must construct the real SDK clients.\n */\nexport function assertDescriptorRegistryInvariants(): void {\n for (const backend of SandboxBackend.options) {\n const descriptor = CAPABILITY_DESCRIPTORS[backend];\n if (!descriptor) {\n throw new Error(`No CapabilityDescriptor for backend \"${backend}\"`);\n }\n if (descriptor.backend !== backend) {\n throw new Error(`Descriptor.backend mismatch for \"${backend}\" (got \"${descriptor.backend}\")`);\n }\n\n // DesktopStream implies a non-\"none\" port-exposure mechanism (split-plane B\n // needs a way to surface 6080 to a viewer).\n if (\n descriptor.capabilities.DesktopStream.available &&\n descriptor.portExposure.kind === \"none\"\n ) {\n throw new Error(`\"${backend}\" claims DesktopStream but portExposure.kind=none`);\n }\n\n // DesktopStream implies a transport, and a desktop transport implies the\n // capability is available (no half-declared desktop rows).\n if (\n descriptor.capabilities.DesktopStream.available &&\n descriptor.capabilities.DesktopStream.transport === null\n ) {\n throw new Error(`\"${backend}\" claims DesktopStream but transport is null`);\n }\n\n // Recording feasibility is the same Xvfb display as DesktopStream: a desktop\n // backend MUST be able to x11grab; a non-desktop backend MUST NOT claim it\n // (Recording.available == DesktopStream.available && os==linux — Part D).\n if (\n descriptor.capabilities.DesktopStream.available !==\n descriptor.capabilities.Recording.available\n ) {\n throw new Error(\n `\"${backend}\" Recording.available (${descriptor.capabilities.Recording.available}) must equal DesktopStream.available (${descriptor.capabilities.DesktopStream.available})`,\n );\n }\n\n // Persistable backends are the only ones the lease can re-establish from an\n // envelope — they must carry a real snapshot mechanism.\n if (descriptor.persistable && descriptor.snapshot.kind === \"none\") {\n throw new Error(`\"${backend}\" persistable but snapshot.kind=none`);\n }\n\n // A nativeBucketMount backend must be desktop/headless-tier real (modal):\n // a dev/none tier cannot own a provider bucket mount.\n if (descriptor.nativeBucketMount && (descriptor.tier === \"dev\" || descriptor.tier === \"none\")) {\n throw new Error(`\"${backend}\" claims nativeBucketMount on tier=${descriptor.tier}`);\n }\n }\n}\n",null,null,null,null,null,null,null,null,null,null,null,null,null,"// Typed sandbox-construction errors for the provider registry (module 03 §5.1).\n//\n// SandboxConfigError is thrown by validateCredentials() and the factory on any\n// missing/contradictory provider config — a fail-fast typed error so an\n// unknown/misconfigured backend surfaces clearly instead of failing deep inside\n// the SDK at create() time.\n\nimport type { SandboxBackend } from \"@opengeni/contracts\";\n\nexport class SandboxConfigError extends Error {\n readonly backend: SandboxBackend | string;\n\n constructor(backend: SandboxBackend | string, message: string) {\n super(`[sandbox:${backend}] ${message}`);\n this.name = \"SandboxConfigError\";\n this.backend = backend;\n }\n}\n\n/** A resume-only caller was handed a warm lease without a provider identity it\n * can resume. The lease-aware caller must retire that exact epoch and re-enter\n * admission; silently creating here would bypass the single-spawner guard. */\nexport class SandboxResumeStateUnavailableError extends Error {\n readonly backend: SandboxBackend | string;\n\n constructor(backend: SandboxBackend | string) {\n super(`Sandbox lease for backend \"${backend}\" has no resumable provider identity`);\n this.name = \"SandboxResumeStateUnavailableError\";\n this.backend = backend;\n }\n}\n\n// Thrown by a provider's build() when its SDK client class is genuinely not\n// available in the installed @openai/agents-extensions. Per the P0.3 ruling we\n// NEVER fake a build body; if a provider cannot be constructed we register the\n// descriptor and make build() throw this. (As of @openai/agents-extensions\n// 0.11.6 every provider ships a concrete client, so this is currently unused —\n// it is the documented contract for a future drop that loses a provider.)\nexport class SandboxProviderUnavailableError extends Error {\n readonly backend: SandboxBackend | string;\n\n constructor(backend: SandboxBackend | string) {\n super(`provider ${backend} not available in installed @openai/agents-extensions`);\n this.name = \"SandboxProviderUnavailableError\";\n this.backend = backend;\n }\n}\n","import { BlaxelSandboxClient } from \"@openai/agents-extensions/sandbox/blaxel\";\nimport { CAPABILITY_DESCRIPTORS } from \"../capabilities\";\nimport { SandboxConfigError } from \"../errors\";\nimport type { ProviderRegistration } from \"./types\";\n\nexport const blaxelProvider: ProviderRegistration = {\n backend: \"blaxel\",\n descriptor: CAPABILITY_DESCRIPTORS.blaxel,\n validateCredentials(settings) {\n if (!settings.blaxelApiKey) {\n throw new SandboxConfigError(\"blaxel\", \"OPENGENI_BLAXEL_API_KEY is required\");\n }\n },\n build({ settings, environment }) {\n // Blaxel exposes ports ON DEMAND (the only such backend) — its options take\n // no `exposedPorts: number[]` list; 6080 is resolved at handshake time, so\n // we do NOT pre-declare it here (this is why the factory's 6080-merge is\n // gated on !supportsOnDemandPorts).\n const options: NonNullable<ConstructorParameters<typeof BlaxelSandboxClient>[0]> = {\n apiKey: settings.blaxelApiKey!,\n env: environment,\n };\n if (settings.blaxelImage) options.image = settings.blaxelImage;\n if (settings.blaxelRegion) options.region = settings.blaxelRegion;\n if (settings.blaxelExposedPortPublic !== undefined) {\n options.exposedPortPublic = settings.blaxelExposedPortPublic;\n }\n if (settings.blaxelExposedPortUrlTtlSeconds) {\n options.exposedPortUrlTtlS = settings.blaxelExposedPortUrlTtlSeconds;\n }\n if (settings.blaxelMemoryMb) options.memory = settings.blaxelMemoryMb;\n if (settings.blaxelTtl) options.ttl = settings.blaxelTtl;\n return new BlaxelSandboxClient(options);\n },\n};\n",null,null,"import { CloudflareSandboxClient } from \"@openai/agents-extensions/sandbox/cloudflare\";\nimport { CAPABILITY_DESCRIPTORS } from \"../capabilities\";\nimport { SandboxConfigError } from \"../errors\";\nimport type { ProviderRegistration } from \"./types\";\n\nexport const cloudflareProvider: ProviderRegistration = {\n backend: \"cloudflare\",\n descriptor: CAPABILITY_DESCRIPTORS.cloudflare,\n validateCredentials(settings) {\n // workerUrl is the addressing root for the Cloudflare Sandbox Worker — there\n // is no construction without it (it is the one non-optional client option).\n if (!settings.cloudflareWorkerUrl) {\n throw new SandboxConfigError(\"cloudflare\", \"OPENGENI_CLOUDFLARE_WORKER_URL is required\");\n }\n },\n build({ settings, exposedPorts }) {\n const options: NonNullable<ConstructorParameters<typeof CloudflareSandboxClient>[0]> = {\n workerUrl: settings.cloudflareWorkerUrl!,\n exposedPorts,\n };\n if (settings.cloudflareApiKey) options.apiKey = settings.cloudflareApiKey;\n return new CloudflareSandboxClient(options);\n },\n};\n",null,null,"import { DaytonaSandboxClient } from \"@openai/agents-extensions/sandbox/daytona\";\nimport { CAPABILITY_DESCRIPTORS } from \"../capabilities\";\nimport { SandboxConfigError } from \"../errors\";\nimport type { ProviderRegistration } from \"./types\";\n\nexport const daytonaProvider: ProviderRegistration = {\n backend: \"daytona\",\n descriptor: CAPABILITY_DESCRIPTORS.daytona,\n validateCredentials(settings) {\n if (!settings.daytonaApiKey) {\n throw new SandboxConfigError(\"daytona\", \"OPENGENI_DAYTONA_API_KEY is required\");\n }\n },\n build({ settings, environment, exposedPorts }) {\n const options: NonNullable<ConstructorParameters<typeof DaytonaSandboxClient>[0]> = {\n apiKey: settings.daytonaApiKey!,\n env: environment,\n exposedPorts,\n };\n if (settings.daytonaApiUrl) options.apiUrl = settings.daytonaApiUrl;\n if (settings.daytonaTarget) options.target = settings.daytonaTarget;\n if (settings.daytonaImage) options.image = settings.daytonaImage;\n if (settings.daytonaSnapshotName) options.sandboxSnapshotName = settings.daytonaSnapshotName;\n // autoStopInterval=0 disables the idle-kill, so forward 0 explicitly.\n if (settings.daytonaAutoStopInterval !== undefined) {\n options.autoStopInterval = settings.daytonaAutoStopInterval;\n }\n if (settings.daytonaTimeoutSeconds) options.timeoutSec = settings.daytonaTimeoutSeconds;\n if (settings.daytonaExposedPortUrlTtlSeconds) {\n options.exposedPortUrlTtlS = settings.daytonaExposedPortUrlTtlSeconds;\n }\n return new DaytonaSandboxClient(options);\n },\n};\n",null,null,null,null,null,null,null,null,null,"import { DockerSandboxClient } from \"@openai/agents/sandbox/local\";\nimport { CAPABILITY_DESCRIPTORS } from \"../capabilities\";\nimport type { ProviderRegistration } from \"./types\";\n\nexport const dockerProvider: ProviderRegistration = {\n backend: \"docker\",\n descriptor: CAPABILITY_DESCRIPTORS.docker,\n // Local dev container — no credentials. (The dockerNetwork decoration is\n // applied by the factory, not here: it wraps the constructed client.)\n validateCredentials() {},\n build({ settings, exposedPorts }) {\n return new DockerSandboxClient({\n image: settings.dockerImage,\n exposedPorts,\n });\n },\n};\n",null,null,"import { E2BSandboxClient } from \"@openai/agents-extensions/sandbox/e2b\";\nimport { CAPABILITY_DESCRIPTORS } from \"../capabilities\";\nimport { SandboxConfigError } from \"../errors\";\nimport type { ProviderRegistration } from \"./types\";\n\nexport const e2bProvider: ProviderRegistration = {\n backend: \"e2b\",\n descriptor: CAPABILITY_DESCRIPTORS.e2b,\n validateCredentials(settings) {\n // The underlying e2b SDK reads E2B_API_KEY from process.env; we mirror it to\n // settings so a misconfigured deployment fails fast here instead of deep in\n // the SDK at create() time.\n if (!settings.e2bApiKey) {\n throw new SandboxConfigError(\"e2b\", \"OPENGENI_E2B_API_KEY is required\");\n }\n },\n build({ settings, environment, exposedPorts }) {\n const options: NonNullable<ConstructorParameters<typeof E2BSandboxClient>[0]> = {\n env: environment,\n exposedPorts,\n };\n if (settings.e2bTemplate) options.template = settings.e2bTemplate;\n // e2b's `timeout` is in SECONDS (the SDK multiplies by 1000 internally) —\n // a different unit from Modal's `timeoutMs`.\n if (settings.e2bTimeoutSeconds) options.timeout = settings.e2bTimeoutSeconds;\n if (settings.e2bTimeoutAction) options.timeoutAction = settings.e2bTimeoutAction;\n if (settings.e2bAllowInternetAccess !== undefined) {\n options.allowInternetAccess = settings.e2bAllowInternetAccess;\n }\n if (settings.e2bAutoResume !== undefined) options.autoResume = settings.e2bAutoResume;\n if (settings.e2bWorkspacePersistence) {\n options.workspacePersistence = settings.e2bWorkspacePersistence;\n }\n return new E2BSandboxClient(options);\n },\n};\n","import { UnixLocalSandboxClient } from \"@openai/agents/sandbox/local\";\nimport { CAPABILITY_DESCRIPTORS } from \"../capabilities\";\nimport type { ProviderRegistration } from \"./types\";\n\nexport const localProvider: ProviderRegistration = {\n backend: \"local\",\n descriptor: CAPABILITY_DESCRIPTORS.local,\n // UnixLocalSandboxClient runs in-process — no credentials, no options.\n validateCredentials() {},\n build() {\n return new UnixLocalSandboxClient();\n },\n};\n",null,null,"import { ModalImageSelector, ModalSandboxClient } from \"@openai/agents-extensions/sandbox/modal\";\nimport { effectiveModalIdleTimeoutSeconds } from \"@opengeni/config\";\nimport type { Settings } from \"@opengeni/config\";\nimport { CAPABILITY_DESCRIPTORS } from \"../capabilities\";\nimport { SandboxConfigError } from \"../errors\";\nimport type { ProviderRegistration } from \"./types\";\n\nconst MODAL_ORPHAN_SWEEP_LIMIT = 50;\n// A provider box is invisible to the lease until Modal create + manifest\n// materialization returns and the creation callback records its instance id.\n// Production baseline (2026-07-15, all 8 turn workers): 155/155 completed creates\n// finished under 10s (154 under 2.5s). Two minutes is a 12x observed-max buffer,\n// while avoiding the former 30-minute retention of boxes abandoned by a rolling\n// worker restart. The live-instance guard below remains authoritative: once a box\n// is recorded by any lease, age and missing/stale tags can never terminate it.\nconst MODAL_UNATTRIBUTED_ORPHAN_GRACE_MS = 2 * 60_000;\n\nexport type ModalSandboxAttribution = {\n leaseId: string;\n workspaceId: string;\n sandboxGroupId: string;\n};\n\nexport type LiveModalSandboxLeaseAttribution = ModalSandboxAttribution & {\n instanceId: string | null;\n liveness?: string;\n};\n\nexport type ModalOrphanSweepTermination = {\n sandboxId: string;\n reason: \"stale_attribution\" | \"unattributed\";\n tags: Record<string, string>;\n};\n\nexport type ModalOrphanSweepResult = {\n examined: number;\n terminated: ModalOrphanSweepTermination[];\n skipped: number;\n};\n\nexport type RevalidateModalOrphanTermination = (\n candidate: ModalOrphanSweepTermination,\n) => Promise<boolean>;\n\nexport function modalSandboxAttributionEnvironment(\n input: ModalSandboxAttribution,\n): Record<string, string> {\n return {\n OPENGENI_SANDBOX_LEASE_ID: input.leaseId,\n OPENGENI_SANDBOX_GROUP_ID: input.sandboxGroupId,\n OPENGENI_WORKSPACE_ID: input.workspaceId,\n };\n}\n\nexport function modalSandboxAttributionTags(\n input: ModalSandboxAttribution,\n): Record<string, string> {\n return {\n opengeni: \"true\",\n opengeni_lease_id: input.leaseId,\n opengeni_workspace_id: input.workspaceId,\n opengeni_sandbox_group_id: input.sandboxGroupId,\n };\n}\n\nexport const modalProvider: ProviderRegistration = {\n backend: \"modal\",\n descriptor: CAPABILITY_DESCRIPTORS.modal,\n validateCredentials(settings) {\n // both-or-neither (preserves existing validation at config validateSettings).\n if (Boolean(settings.modalTokenId) !== Boolean(settings.modalTokenSecret)) {\n throw new SandboxConfigError(\n \"modal\",\n \"OPENGENI_MODAL_TOKEN_ID and OPENGENI_MODAL_TOKEN_SECRET must both be set or both omitted\",\n );\n }\n if (!settings.modalAppName) {\n throw new SandboxConfigError(\"modal\", \"OPENGENI_MODAL_APP_NAME is required\");\n }\n },\n build({ settings, environment, exposedPorts }) {\n const options: NonNullable<ConstructorParameters<typeof ModalSandboxClient>[0]> = {\n appName: settings.modalAppName,\n timeoutMs: settings.modalTimeoutSeconds * 1000,\n sandboxCreateTimeoutS: Math.ceil(settings.sandboxWarmingTimeoutMs / 1000),\n exposedPorts,\n env: environment,\n // A registry image's own CMD is not a sandbox keepalive contract (for\n // example, python:3.12-slim can exit immediately). Keep the provider's\n // control process alive so exec/resume remains available; Modal's hard\n // timeout and explicit OpenGeni teardown still own the box lifetime.\n useSleepCmd: true,\n };\n // gap-fill (module 03 §4.1): these SDK options were previously unmapped.\n // ALWAYS pin idleTimeoutMs (sandbox-file-persistence): an UNSET idle timeout\n // lets the SDK send idleTimeoutSecs=undefined, so Modal applies its short\n // server-default idle-reap and kills an idle (between-turns) box LONG before\n // OpenGeni's reaper can resume+snapshot it. effectiveModalIdleTimeoutSeconds\n // defaults this to the hard lifetime so the box survives its full warm window\n // and the reaper — not Modal's idle-reap — governs teardown (and snapshots\n // /workspace first).\n options.idleTimeoutMs = effectiveModalIdleTimeoutSeconds(settings) * 1000;\n if (settings.modalWorkspacePersistence) {\n options.workspacePersistence = settings.modalWorkspacePersistence;\n }\n const imageSelector = resolveModalImageSelector(settings);\n if (imageSelector) {\n options.image = imageSelector;\n }\n if (settings.modalTokenId) {\n options.tokenId = settings.modalTokenId;\n }\n if (settings.modalTokenSecret) {\n options.tokenSecret = settings.modalTokenSecret;\n }\n if (settings.modalEnvironment) {\n options.environment = settings.modalEnvironment;\n }\n return new ModalSandboxClient(options);\n },\n};\n\ntype ModalModule = typeof import(\"modal\");\ntype ModalClientLike = InstanceType<ModalModule[\"ModalClient\"]>;\n\n// --- Private-registry image resolution (OPENGENI_MODAL_IMAGE_REGISTRY_SECRET) ------\n//\n// The Agents-extension Modal backend resolves `modalImageRef` via\n// `Image.fromRegistry(tag)` with NO secret, so it can only pull PUBLIC images. To run\n// a PRIVATE image we resolve the named Modal Secret and pre-build the authenticated\n// `fromRegistry(tag, secret)` image ONCE per process, then hand the provider `build`\n// a `ModalImageSelector.fromImage(...)`. `build` is synchronous and modal is imported\n// lazily (never loaded for non-modal backends), so resolution can't happen inside\n// `build`; the worker awaits `ensureModalRegistryImage` at boot for global refs and\n// at turn time for pack-scoped refs, then `build` reads the settled result. Modal\n// images are lazy, workspace-scoped definitions, so an image built by this module's\n// client is usable by the ModalSandboxClient's own client.\n\n/** Loader seam so unit tests can inject a fake modal module. */\nexport type ModalModuleLoader = () => Promise<Pick<ModalModule, \"ModalClient\">>;\n\nconst defaultModalLoader: ModalModuleLoader = () => import(\"modal\");\n\n/** Settled, synchronously-readable resolved images, keyed per config. */\nconst resolvedRegistryImages = new Map<string, unknown>();\n/** In-flight resolutions, for cross-call de-duplication. */\nconst inFlightRegistryImages = new Map<string, Promise<void>>();\n\nfunction registryImageCacheKey(settings: Settings): string {\n return [\n settings.modalImageRef ?? \"\",\n settings.modalImageRegistrySecret ?? \"\",\n settings.modalEnvironment ?? \"\",\n ].join(\"|\");\n}\n\n/**\n * Resolve + cache the private-registry Modal image. No-op unless BOTH\n * `modalImageRef` and `modalImageRegistrySecret` are set. Memoized per\n * (imageRef, secret, environment) so it runs once per worker process. Awaited at\n * worker boot for the deployment-global image and at turn time for pack-scoped\n * images BEFORE the first sandbox using that ref is created; `build` then reads the\n * resolved image and otherwise falls back to the public `fromTag` path.\n */\nexport async function ensureModalRegistryImage(\n settings: Settings,\n loadModal: ModalModuleLoader = defaultModalLoader,\n): Promise<void> {\n if (!settings.modalImageRegistrySecret || !settings.modalImageRef) {\n return;\n }\n const key = registryImageCacheKey(settings);\n if (resolvedRegistryImages.has(key)) {\n return;\n }\n let pending = inFlightRegistryImages.get(key);\n if (!pending) {\n pending = (async () => {\n const modal = await loadModal();\n const client = new modal.ModalClient(modalClientOptions(settings));\n // Resolve the Secret via the AUTHENTICATED client (client.secrets.fromName),\n // NOT the static `modal.Secret.fromName`, which resolves against\n // `getDefaultClient()` — i.e. the standard MODAL_TOKEN_ID/MODAL_TOKEN_SECRET env\n // or ~/.modal.toml — and so would throw \"Profile is missing token_id\" in any host\n // that supplies the token only through OpenGeni settings (OPENGENI_MODAL_TOKEN_ID).\n const secret = await client.secrets.fromName(\n settings.modalImageRegistrySecret!,\n settings.modalEnvironment ? { environment: settings.modalEnvironment } : undefined,\n );\n // fromRegistry is synchronous and returns a lazy image definition (built\n // server-side at sandbox create); the resolved secretId travels with it.\n const image = client.images.fromRegistry(settings.modalImageRef!, secret);\n resolvedRegistryImages.set(key, image);\n })().finally(() => {\n inFlightRegistryImages.delete(key);\n });\n inFlightRegistryImages.set(key, pending);\n }\n await pending;\n}\n\n/** The resolved private-registry image for these settings, or undefined if none. */\nfunction cachedModalRegistryImage(settings: Settings): unknown | undefined {\n if (!settings.modalImageRegistrySecret || !settings.modalImageRef) {\n return undefined;\n }\n return resolvedRegistryImages.get(registryImageCacheKey(settings));\n}\n\n/**\n * Choose the image selector for a Modal sandbox client from settings. Returns:\n * - `fromImage(resolved)` when a private-registry secret is configured AND the\n * image has been resolved (ensureModalRegistryImage ran before create);\n * - `fromTag(modalImageRef)` for the public path (no secret, or cold cache — the\n * resume/attach paths never pull an image so the tag branch is harmless there);\n * - `undefined` when no image ref is set (Modal uses its default image).\n * Exported for unit tests.\n */\nexport function resolveModalImageSelector(settings: Settings): ModalImageSelector | undefined {\n if (!settings.modalImageRef) {\n return undefined;\n }\n const registryImage = cachedModalRegistryImage(settings);\n return registryImage\n ? ModalImageSelector.fromImage(\n registryImage as Parameters<typeof ModalImageSelector.fromImage>[0],\n )\n : ModalImageSelector.fromTag(settings.modalImageRef);\n}\n\n/** Test-only: clear the resolved/in-flight image caches. */\nexport function __resetModalRegistryImageCacheForTest(): void {\n resolvedRegistryImages.clear();\n inFlightRegistryImages.clear();\n}\n\nfunction modalClientOptions(\n settings: Settings,\n): ConstructorParameters<ModalModule[\"ModalClient\"]>[0] {\n return {\n ...(settings.modalTokenId ? { tokenId: settings.modalTokenId } : {}),\n ...(settings.modalTokenSecret ? { tokenSecret: settings.modalTokenSecret } : {}),\n ...(settings.modalEnvironment ? { environment: settings.modalEnvironment } : {}),\n ...(settings.modalTimeoutSeconds ? { timeoutMs: settings.modalTimeoutSeconds * 1000 } : {}),\n };\n}\n\nasync function createModalClient(settings: Settings): Promise<ModalClientLike> {\n const modal = await import(\"modal\");\n return new modal.ModalClient(modalClientOptions(settings));\n}\n\nexport async function tagModalSandbox(\n settings: Settings,\n sandboxId: string,\n attribution: ModalSandboxAttribution,\n): Promise<boolean> {\n if (!sandboxId) {\n return false;\n }\n const modal = await createModalClient(settings);\n try {\n const sandbox = await modal.sandboxes.fromId(sandboxId);\n await sandbox.setTags(modalSandboxAttributionTags(attribution));\n return true;\n } finally {\n modal.close();\n }\n}\n\nexport async function terminateModalSandboxById(\n settings: Settings,\n sandboxId: string,\n): Promise<boolean> {\n if (!sandboxId) {\n return true;\n }\n const modal = await createModalClient(settings);\n try {\n const sandbox = await modal.sandboxes.fromId(sandboxId);\n await sandbox.terminate();\n return true;\n } finally {\n modal.close();\n }\n}\n\ntype ModalSandboxInfo = {\n id: string;\n createdAt?: number;\n tags?: Array<{ tagName?: string; tagValue?: string }>;\n};\n\ntype ModalCpListClient = ModalClientLike & {\n cpClient: {\n sandboxList(input: {\n appId?: string;\n beforeTimestamp?: number;\n environmentName?: string;\n includeFinished?: boolean;\n tags?: Array<{ tagName: string; tagValue: string }>;\n }): Promise<{ sandboxes?: ModalSandboxInfo[] }>;\n };\n};\n\nfunction tagsFromInfo(info: ModalSandboxInfo): Record<string, string> {\n const tags: Record<string, string> = {};\n for (const tag of info.tags ?? []) {\n if (typeof tag.tagName === \"string\" && typeof tag.tagValue === \"string\") {\n tags[tag.tagName] = tag.tagValue;\n }\n }\n return tags;\n}\n\nfunction sandboxCreatedAtMs(info: ModalSandboxInfo): number | null {\n if (\n typeof info.createdAt !== \"number\" ||\n !Number.isFinite(info.createdAt) ||\n info.createdAt <= 0\n ) {\n return null;\n }\n // Modal protobuf timestamps in this SDK are seconds as doubles.\n return info.createdAt < 10_000_000_000\n ? Math.floor(info.createdAt * 1000)\n : Math.floor(info.createdAt);\n}\n\nfunction attributionKey(\n input: Pick<ModalSandboxAttribution, \"leaseId\" | \"workspaceId\" | \"sandboxGroupId\">,\n): string {\n return `${input.workspaceId}:${input.sandboxGroupId}:${input.leaseId}`;\n}\n\nexport async function sweepModalOrphanSandboxes(\n settings: Settings,\n liveLeases: LiveModalSandboxLeaseAttribution[],\n options: {\n now?: Date;\n maxTerminations?: number;\n unattributedGraceMs?: number;\n client?: ModalClientLike;\n /** Re-read durable ownership immediately before provider termination. A\n * false result or callback failure skips the destructive action. */\n revalidateTermination?: RevalidateModalOrphanTermination;\n } = {},\n): Promise<ModalOrphanSweepResult> {\n const nowMs = options.now?.getTime() ?? Date.now();\n const maxTerminations = options.maxTerminations ?? MODAL_ORPHAN_SWEEP_LIMIT;\n const unattributedGraceMs = options.unattributedGraceMs ?? MODAL_UNATTRIBUTED_ORPHAN_GRACE_MS;\n const liveByAttribution = new Map(liveLeases.map((lease) => [attributionKey(lease), lease]));\n // LIVE-INSTANCE GUARD: a box that any live lease's envelope points at is NEVER\n // an orphan, whatever its tags say. Tags are best-effort attribution (setTags\n // is a separate call after create and can fail or lag); the lease envelope is\n // the source of truth the turn path actually resumes by. Judging by tags alone\n // terminated a LIVE box mid-turn at exactly creation+30min (staging session\n // e644e8a8, 2026-07-06) — the box's unpushed work was unrecoverable because\n // nothing outside the reaper drain persists /workspace.\n const liveByInstanceId = new Map(\n liveLeases\n .filter((lease) => lease.instanceId)\n .map((lease) => [lease.instanceId as string, lease]),\n );\n const ownedClient = options.client ? null : await createModalClient(settings);\n const modal = (options.client ?? ownedClient)! as ModalCpListClient;\n try {\n const app = await modal.apps.fromName(settings.modalAppName, {\n createIfMissing: false,\n ...(settings.modalEnvironment ? { environment: settings.modalEnvironment } : {}),\n });\n const appId = app.appId;\n if (!appId) {\n return { examined: 0, terminated: [], skipped: 0 };\n }\n\n let examined = 0;\n let skipped = 0;\n const terminated: ModalOrphanSweepTermination[] = [];\n let beforeTimestamp: number | undefined;\n while (terminated.length < maxTerminations) {\n const response = await modal.cpClient.sandboxList({\n appId,\n ...(beforeTimestamp !== undefined ? { beforeTimestamp } : {}),\n includeFinished: false,\n ...(settings.modalEnvironment ? { environmentName: settings.modalEnvironment } : {}),\n tags: [],\n });\n const sandboxes = response.sandboxes ?? [];\n if (sandboxes.length === 0) {\n break;\n }\n for (const info of sandboxes) {\n examined += 1;\n const tags = tagsFromInfo(info);\n const leaseId = tags.opengeni_lease_id;\n const workspaceId = tags.opengeni_workspace_id;\n const sandboxGroupId = tags.opengeni_sandbox_group_id;\n const liveByInstance = info.id ? liveByInstanceId.get(info.id) : undefined;\n if (liveByInstance) {\n // Live-instance guard (see above): a live lease resumes this exact box\n // by id — hard-skip it, and HEAL its attribution tags when they are\n // missing/stale so it stops looking sweep-eligible. Best-effort: a\n // failed re-tag must never fail the sweep (the guard, not the tags,\n // is what protects the box now).\n if (\n leaseId !== liveByInstance.leaseId ||\n workspaceId !== liveByInstance.workspaceId ||\n sandboxGroupId !== liveByInstance.sandboxGroupId\n ) {\n try {\n const sandbox = await modal.sandboxes.fromId(info.id);\n await sandbox.setTags(\n modalSandboxAttributionTags({\n leaseId: liveByInstance.leaseId,\n workspaceId: liveByInstance.workspaceId,\n sandboxGroupId: liveByInstance.sandboxGroupId,\n }),\n );\n } catch {\n // Tag healing is opportunistic; the instance guard already\n // protects this box on every future sweep pass.\n }\n }\n skipped += 1;\n continue;\n }\n let reason: ModalOrphanSweepTermination[\"reason\"] | null = null;\n if (leaseId && workspaceId && sandboxGroupId) {\n const live = liveByAttribution.get(\n attributionKey({ leaseId, workspaceId, sandboxGroupId }),\n );\n if (!live || (live.instanceId && live.instanceId !== info.id)) {\n reason = \"stale_attribution\";\n }\n } else {\n const createdAtMs = sandboxCreatedAtMs(info);\n if (createdAtMs !== null && nowMs - createdAtMs >= unattributedGraceMs) {\n reason = \"unattributed\";\n }\n }\n\n if (!reason) {\n skipped += 1;\n continue;\n }\n const candidate = { sandboxId: info.id, reason, tags };\n let sandbox: Awaited<ReturnType<typeof modal.sandboxes.fromId>>;\n try {\n sandbox = await modal.sandboxes.fromId(info.id);\n } catch {\n skipped += 1;\n continue;\n }\n if (options.revalidateTermination) {\n try {\n if (!(await options.revalidateTermination(candidate))) {\n skipped += 1;\n continue;\n }\n } catch {\n // Destructive provider cleanup fails closed when the fresh durable\n // ownership read is unavailable or otherwise inconclusive.\n skipped += 1;\n continue;\n }\n }\n try {\n await sandbox.terminate();\n terminated.push(candidate);\n } catch {\n skipped += 1;\n }\n if (terminated.length >= maxTerminations) {\n break;\n }\n }\n beforeTimestamp = sandboxes[sandboxes.length - 1]?.createdAt;\n if (beforeTimestamp === undefined) {\n break;\n }\n }\n return { examined, terminated, skipped };\n } finally {\n ownedClient?.close();\n }\n}\n","import { CAPABILITY_DESCRIPTORS } from \"../capabilities\";\nimport type { ProviderRegistration } from \"./types\";\n\nexport const noneProvider: ProviderRegistration = {\n backend: \"none\",\n descriptor: CAPABILITY_DESCRIPTORS.none,\n // No sandbox: nothing to validate, and build() returns undefined. The factory\n // short-circuits on \"none\" before calling build, but we keep build honest.\n validateCredentials() {},\n build() {\n return undefined;\n },\n};\n",null,null,"import { RunloopSandboxClient } from \"@openai/agents-extensions/sandbox/runloop\";\nimport { CAPABILITY_DESCRIPTORS } from \"../capabilities\";\nimport { SandboxConfigError } from \"../errors\";\nimport type { ProviderRegistration } from \"./types\";\n\nexport const runloopProvider: ProviderRegistration = {\n backend: \"runloop\",\n descriptor: CAPABILITY_DESCRIPTORS.runloop,\n validateCredentials(settings) {\n if (!settings.runloopApiKey) {\n throw new SandboxConfigError(\"runloop\", \"OPENGENI_RUNLOOP_API_KEY is required\");\n }\n },\n build({ settings, environment, exposedPorts }) {\n const options: NonNullable<ConstructorParameters<typeof RunloopSandboxClient>[0]> = {\n apiKey: settings.runloopApiKey!,\n env: environment,\n exposedPorts,\n // Tunnel v2: one tunnel for all ports. Defaults to true in our config.\n tunnel: settings.runloopTunnel,\n };\n if (settings.runloopBaseUrl) options.baseUrl = settings.runloopBaseUrl;\n if (settings.runloopBlueprintName) options.blueprintName = settings.runloopBlueprintName;\n if (settings.runloopBlueprintId) options.blueprintId = settings.runloopBlueprintId;\n // Runloop's keep-alive lives under the timeouts bag (keepAliveTimeoutMs),\n // NOT a top-level field — the units differ from Modal's idleTimeoutMs.\n if (settings.runloopKeepAliveSeconds) {\n options.timeouts = { keepAliveTimeoutMs: settings.runloopKeepAliveSeconds * 1000 };\n }\n return new RunloopSandboxClient(options);\n },\n};\n","// The selfhosted CONTROL-PLANE transport seam (the M3/M4 layering boundary).\n//\n// `ControlRpc` is the ONE seam the `SelfhostedSession` depends on to reach a\n// user's enrolled machine: request/reply addressed by the subject\n// `agent.<workspaceId>.<agentId>.rpc`, payloads encoded/decoded via\n// `@opengeni/agent-proto` (the single-source-of-truth wire types). The session\n// knows NOTHING about NATS — it speaks only `ControlRpc`.\n//\n// M3 ships TWO implementors behind this interface:\n// - `NatsControlRpc` — a thin wrapper over a NATS request/reply connection\n// (the existing `@opengeni/events` bus connection). Constructed LAZILY: if\n// NATS/the relay is not configured it surfaces `agent_offline` rather than\n// throwing at construction, so boot never requires a live NATS.\n// - `MockAgentResponder` — an in-process test double that answers\n// exec/fs.read/fs.write/ping (and the rest of the op table) without any\n// broker, so the session surface + the AgentError→reason mapping are unit-\n// and integration-testable with no live NATS (that is M4).\n//\n// M4 will HARDEN/REPLACE `NatsControlRpc` (NATS Accounts, real request\n// hardening, retries) behind this SAME `ControlRpc` interface — design for that,\n// do not duplicate.\n\nimport { AgentError, ControlRequest, ControlResponse, ErrorCode } from \"@opengeni/agent-proto\";\nimport type { CapabilityUnavailableReason } from \"@opengeni/contracts\";\n\n// Re-export the contracts reason union locally so callers of the mapping below\n// don't have to import from two places. CapabilityUnavailableReason here is the\n// agent-proto mirror of the contracts enum (same string values); the runtime\n// negotiation maps to the contracts type, which is structurally identical.\nexport type SelfhostedUnavailableReason = Extract<\n CapabilityUnavailableReason,\n \"agent_offline\" | \"agent_reconnecting\" | \"consent_required\" | \"display_unavailable\"\n>;\n\n/**\n * The selfhosted control-plane transport seam. ONE method: `request` — send a\n * `ControlRequest` to the agent addressed by subject and await its\n * `ControlResponse`. The subject is `subjectFor(workspaceId, agentId)`.\n *\n * The CONTRACT every implementor MUST honour (the M3 ruling): a\n * no-responder / request-timeout is NOT an exception that means \"not found\" — it\n * is surfaced as a `ControlResponse` carrying an `AgentError` with code\n * `AGENT_OFFLINE` (no responder at all) or, when the caller can distinguish a\n * transient blip, `TIMEOUT` (→ `agent_reconnecting`). The session maps these to\n * the runtime error taxonomy; it NEVER lets agent-offline look like a provider\n * NotFound (which would cold-create a rival box for a user's real machine).\n */\nexport interface ControlRpc {\n request(\n subject: string,\n req: ControlRequest,\n opts: { timeoutMs: number },\n ): Promise<ControlResponse>;\n}\n\n/** The control-plane RPC subject for an enrolled agent — its subscription IS the\n * registry (the binding two-plane decision). */\nexport function subjectFor(workspaceId: string, agentId: string): string {\n return `agent.${workspaceId}.${agentId}.rpc`;\n}\n\n// ── The runtime error taxonomy for a selfhosted control op ────────────────────\n\n/**\n * The runtime-level error a `SelfhostedSession` op throws when the agent returns\n * an `AgentError` (or no responder / timeout maps to one). It carries:\n * - `code` — the wire `ErrorCode` (single-source-of-truth);\n * - `reason` — the negotiated `CapabilityUnavailableReason` the capability /\n * liveness surface uses (`agent_offline` / `agent_reconnecting`\n * / `consent_required`), or null for op-level errors\n * (OS/NOT_FOUND/UNSUPPORTED/STREAM/PROTOCOL) that are not a\n * machine-liveness condition;\n * - `retryable`— whether the caller should re-resolve + retry (DRAINING /\n * FENCED / a reconnecting blip);\n * - `notFound` — ALWAYS the provider-NotFound discriminator value: for\n * selfhosted this is true ONLY for an OS-level NOT_FOUND of a\n * path/ref (a real \"the file does not exist\"), and is FALSE for\n * AGENT_OFFLINE (the machine isn't recreatable — never let the\n * lease cold-create a rival). `isProviderSandboxNotFoundError`\n * reads this.\n */\nexport class SelfhostedControlError extends Error {\n readonly name = \"SelfhostedControlError\";\n readonly code: ErrorCode;\n readonly reason: SelfhostedUnavailableReason | null;\n readonly retryable: boolean;\n readonly fenced: boolean;\n readonly draining: boolean;\n readonly agentOffline: boolean;\n readonly osNotFound: boolean;\n /** The reply exceeded the transport's max payload (a distinguishing flag so the\n * fault renderer can name the size wall + recovery instead of a generic OS error). */\n readonly payloadTooLarge: boolean;\n /** The transport synthesized this fault PRE-SEND — it KNOWS the request never\n * reached the machine (no connection, or no responder on the subject), so the op\n * provably did not execute. Only such a fault is safe to re-issue for ANY op kind\n * (a post-send timeout is ambiguous — at-least-once — and must not be re-sent\n * unless the op is read-only). Never set for an agent-returned error. */\n readonly neverSent: boolean;\n readonly detail: Record<string, string>;\n\n constructor(input: {\n message: string;\n code: ErrorCode;\n reason: SelfhostedUnavailableReason | null;\n retryable: boolean;\n fenced?: boolean;\n draining?: boolean;\n agentOffline?: boolean;\n osNotFound?: boolean;\n payloadTooLarge?: boolean;\n neverSent?: boolean;\n detail?: Record<string, string>;\n }) {\n super(input.message);\n this.code = input.code;\n this.reason = input.reason;\n this.retryable = input.retryable;\n this.fenced = input.fenced ?? false;\n this.draining = input.draining ?? false;\n this.agentOffline = input.agentOffline ?? false;\n this.osNotFound = input.osNotFound ?? false;\n this.payloadTooLarge = input.payloadTooLarge ?? false;\n this.neverSent = input.neverSent ?? false;\n this.detail = input.detail ?? {};\n }\n}\n\n/**\n * Map an `AgentError` (from a `ControlResponse`) to the runtime\n * `SelfhostedControlError`. THE load-bearing mapping (the M3 ruling):\n * - AGENT_OFFLINE → reason `agent_offline`, agentOffline=true,\n * osNotFound=FALSE (NEVER a provider NotFound).\n * - TIMEOUT (a transient missed-window / no-responder blip the caller marked\n * retryable) → reason `agent_reconnecting`.\n * - CONSENT_REQUIRED → reason `consent_required`.\n * - DRAINING → no capability reason; retryable (turn pauses + retries).\n * - FENCED → no capability reason; retryable (the existing\n * epoch-fence retry; the caller re-resolves + retries).\n * - NOT_FOUND → an OS-level path/ref NotFound — osNotFound=true (a\n * real \"file does not exist\"), no machine-liveness\n * reason. (This is the ONLY NotFound; it is NOT the\n * box-gone NotFound that licenses a cold restore.)\n * - PAYLOAD_TOO_LARGE → the reply exceeded the transport's max payload;\n * non-retryable, with actionable copy (the sizes + a\n * redirect-to-file workaround).\n * - OS / UNSUPPORTED / STREAM / PROTOCOL / UNSPECIFIED → op-level error, no\n * reason, non-retryable.\n */\nexport function agentErrorToControlError(err: AgentError): SelfhostedControlError {\n const message = err.message || `agent error (${err.code})`;\n const detail = err.detail ?? {};\n switch (err.code) {\n case ErrorCode.ERROR_CODE_AGENT_OFFLINE:\n // AGENT_OFFLINE is ONLY ever synthesized by our transport (the agent never\n // sends it). The synthesis marks `neverSent` on the pre-send paths (no NATS\n // connection, or no responder on the subject) — the op provably never reached\n // the machine — via the reserved detail key `NEVER_SENT_DETAIL_KEY`.\n return new SelfhostedControlError({\n message: message || \"the enrolled agent is offline\",\n code: err.code,\n reason: \"agent_offline\",\n retryable: false,\n agentOffline: true,\n neverSent: detail[NEVER_SENT_DETAIL_KEY] === \"1\",\n detail,\n });\n case ErrorCode.ERROR_CODE_TIMEOUT:\n // A timeout is a transient blip: the agent may be reconnecting. The turn\n // pauses-with-timeout then retries against the re-resolved active sandbox.\n return new SelfhostedControlError({\n message: message || \"the enrolled agent did not respond in time\",\n code: err.code,\n reason: \"agent_reconnecting\",\n retryable: true,\n detail,\n });\n case ErrorCode.ERROR_CODE_CONSENT_REQUIRED:\n return new SelfhostedControlError({\n message: message || \"the op requires consent that has not been granted\",\n code: err.code,\n reason: \"consent_required\",\n retryable: false,\n detail,\n });\n case ErrorCode.ERROR_CODE_DRAINING:\n // A pre-admission backpressure rejection (the machine's bounded host-work\n // pool is full, or it is shutting down): the op NEVER started, so it is safe\n // to retry (SelfhostedSession.call retries it a bounded number of times).\n // Replace the agent's internal \"N in flight\" phrasing with human-language,\n // actionable copy; call() appends the retry count when it finally surfaces.\n return new SelfhostedControlError({\n message: drainingMessage(0),\n code: err.code,\n reason: null,\n retryable: true,\n draining: true,\n detail,\n });\n case ErrorCode.ERROR_CODE_PAYLOAD_TOO_LARGE:\n // The op's reply exceeded the control transport's negotiated max payload and\n // could not be published (a huge file read, an unbounded exec dump, a full-res\n // screenshot). Not retryable — the same op reproduces the same oversized reply.\n // Surface the actual sizes + a concrete workaround (write to a file, read in\n // ranges) instead of the raw byte-count message.\n return new SelfhostedControlError({\n message: payloadTooLargeMessage(detail),\n code: err.code,\n reason: null,\n retryable: false,\n payloadTooLarge: true,\n detail,\n });\n case ErrorCode.ERROR_CODE_FENCED:\n return new SelfhostedControlError({\n message: message || \"a stale op was fenced by the epoch guard; re-resolve and retry\",\n code: err.code,\n reason: null,\n retryable: true,\n fenced: true,\n detail,\n });\n case ErrorCode.ERROR_CODE_NOT_FOUND:\n // An OS-level path/ref NotFound — a real \"the file/ref does not exist\". This\n // is NOT the box-gone NotFound (selfhosted has no box-gone — the machine is\n // not recreatable). osNotFound is surfaced so a fs-layer caller can 404 the\n // path, but isProviderSandboxNotFoundError stays FALSE for selfhosted (see\n // session.ts) — a missing file must never license a cold re-create.\n return new SelfhostedControlError({\n message: message || \"the referenced path or ref does not exist\",\n code: err.code,\n reason: null,\n retryable: Boolean(err.retryable),\n osNotFound: true,\n detail,\n });\n default:\n // OS / UNSUPPORTED / STREAM / PROTOCOL / UNSPECIFIED — an op-level failure.\n return new SelfhostedControlError({\n message,\n code: err.code,\n reason: null,\n retryable: Boolean(err.retryable),\n detail,\n });\n }\n}\n\n// ── Actionable, human-language error copy ─────────────────────────────────────\n// These build the messages the model / API caller sees for the failure modes that\n// have a concrete workaround. They live here (next to the mapping) so the phrasing\n// is single-sourced and unit-testable, and deliberately avoid the wire's internal\n// vocabulary (\"in flight\", \"negotiated max payload\", raw byte counts alone).\n\n/**\n * PAYLOAD_TOO_LARGE copy: state the actual sizes (from the agent's `detail` map —\n * `encoded_bytes` / `max_payload`) and tell the caller how to get the data anyway:\n * redirect the output to a file and read it back in ranges/chunks.\n */\nexport function payloadTooLargeMessage(detail: Record<string, string>): string {\n const encoded = detail.encoded_bytes;\n const max = detail.max_payload;\n const sizes =\n encoded && max\n ? `The result was ${encoded} bytes, over the machine link's ${max}-byte per-message limit. `\n : \"The result was larger than the machine link can deliver in a single message. \";\n return (\n `${sizes}Redirect the command's output to a file (for example ` +\n \"`<command> > /tmp/out.log 2>&1`) and then read that file back in ranges or chunks \" +\n \"instead of returning it all at once.\"\n );\n}\n\n/**\n * DRAINING copy: the machine is at its concurrent-work capacity. `retries` is the\n * number of times `SelfhostedSession.call` already re-tried before giving up (0 at\n * the mapping layer, the final count when it surfaces after exhausting retries).\n */\nexport function drainingMessage(retries: number): string {\n const retried =\n retries > 0 ? ` It was retried ${retries} time${retries === 1 ? \"\" : \"s\"} first.` : \"\";\n return (\n \"The machine is at its concurrent-work capacity and could not accept this command.\" +\n retried +\n \" Try again shortly, or reduce the number of commands you run in parallel.\"\n );\n}\n\n/** Rebuild a DRAINING error with the final retry count folded into its message —\n * used by `SelfhostedSession.call` when the bounded DRAINING retries are exhausted. */\nexport function drainingExhaustedError(\n base: SelfhostedControlError,\n retries: number,\n): SelfhostedControlError {\n return new SelfhostedControlError({\n message: drainingMessage(retries),\n code: base.code,\n reason: base.reason,\n retryable: base.retryable,\n draining: base.draining,\n // Carry the retry count in `detail` so the fault renderer can state it.\n detail: { ...base.detail, retries: String(retries) },\n });\n}\n\n/**\n * exec-deadline copy: the command was terminated at the exec time limit. Advise\n * running long jobs in the background and polling their output rather than blocking\n * the turn on one long command. Surfaced on a timed-out exec result's stderr.\n */\nexport function execDeadlineHint(seconds: number): string {\n return (\n `The command was terminated at the ${seconds}-second execution limit. ` +\n \"Run long jobs in the background (for example \" +\n \"`nohup <command> > /tmp/job.log 2>&1 &`, or start them in a terminal session) \" +\n \"and poll the output file instead of blocking on a single command.\"\n );\n}\n\n/** The reserved `detail` key the transport sets to \"1\" when it KNOWS a synthesized\n * AGENT_OFFLINE fault occurred pre-send (no connection / no responder) — so the op\n * provably never reached the machine. `agentErrorToControlError` reads it into\n * `SelfhostedControlError.neverSent`. Reserved (never sent by the agent). */\nexport const NEVER_SENT_DETAIL_KEY = \"_never_sent\";\n\n/** Build a synthesized AGENT_OFFLINE `AgentError` — the control plane uses this\n * when no agent responds on the subject at all. `neverSent` marks that the request\n * provably never reached the machine (no connection / no responder), which makes it\n * safe to re-issue for ANY op kind; leave it false for an AMBIGUOUS transport error\n * (a connection torn mid-request may have delivered the op). */\nexport function offlineAgentError(\n message = \"no agent responded (offline)\",\n neverSent = false,\n): AgentError {\n return {\n code: ErrorCode.ERROR_CODE_AGENT_OFFLINE,\n message,\n retryable: false,\n detail: neverSent ? { [NEVER_SENT_DETAIL_KEY]: \"1\" } : {},\n };\n}\n\n/** Build a synthesized TIMEOUT `AgentError` — the control plane uses this when a\n * responder existed but the request timed out (a transient blip → reconnecting). */\nexport function timeoutAgentError(message = \"the agent did not respond in time\"): AgentError {\n return {\n code: ErrorCode.ERROR_CODE_TIMEOUT,\n message,\n retryable: true,\n detail: {},\n };\n}\n\n// ── NatsControlRpc — the thin request/reply wrapper (M4 hardens this) ─────────\n\n/**\n * The minimal NATS request/reply surface `NatsControlRpc` needs. It mirrors the\n * `nats` `NatsConnection.request` signature WITHOUT importing `nats` into the\n * agent-loop-free runtime leaf: the API/worker injects the live connection (the\n * SAME `@opengeni/events` bus connection). A factory may return `null` when NATS\n * is not configured (boot must not require a live NATS) — `NatsControlRpc` then\n * surfaces `agent_offline` for every request rather than throwing.\n */\nexport interface NatsRequestConnection {\n request(\n subject: string,\n payload: Uint8Array,\n opts: { timeout: number },\n ): Promise<{ data: Uint8Array }>;\n}\n\n/** A NATS error whose `code` marks \"no responder on the subject\" (NATS 503). The\n * selfhosted control plane reads this as `agent_offline`, NEVER a NotFound. */\nconst NATS_NO_RESPONDERS_CODE = \"503\";\n\nfunction isNoRespondersError(err: unknown): boolean {\n const code = (err as { code?: unknown })?.code;\n if (typeof code === \"string\" && code === NATS_NO_RESPONDERS_CODE) {\n return true;\n }\n const message = err instanceof Error ? err.message : String(err);\n return /no responders|503/i.test(message);\n}\n\nfunction isRequestTimeoutError(err: unknown): boolean {\n const code = (err as { code?: unknown })?.code;\n // nats.js uses \"TIMEOUT\" for a request timeout.\n if (typeof code === \"string\" && /timeout/i.test(code)) {\n return true;\n }\n const message = err instanceof Error ? err.message : String(err);\n return /timeout|timed out/i.test(message);\n}\n\n/**\n * A thin `ControlRpc` over a NATS request/reply connection. Constructed with a\n * LAZY factory: the connection is resolved on first `request` (so boot never\n * requires a live NATS). A null factory result, a no-responder error, or a\n * request timeout each yield a `ControlResponse` carrying a synthesized\n * `AgentError` (AGENT_OFFLINE / TIMEOUT) — NEVER a thrown transport error and\n * NEVER a NotFound.\n *\n * The factory is async and memoized; it may itself dial the bus. M4 replaces the\n * factory's body with the Accounts-scoped, hardened connection — this class's\n * shape does not change.\n */\nexport class NatsControlRpc implements ControlRpc {\n private readonly connect: () => Promise<NatsRequestConnection | null>;\n private connection: NatsRequestConnection | undefined;\n private connecting: Promise<NatsRequestConnection | null> | undefined;\n\n constructor(connect: () => Promise<NatsRequestConnection | null>) {\n this.connect = connect;\n }\n\n private async resolveConnection(): Promise<NatsRequestConnection | null> {\n if (this.connection) {\n return this.connection;\n }\n // Share one in-flight dial across concurrent callers, but cache only a real\n // connection. A transient null/throw must be retried by the next request;\n // pinning null here would make a recovered NATS bus look offline until the\n // API/worker process restarted.\n this.connecting ??= this.connect()\n .then((connection) => {\n if (connection) {\n this.connection = connection;\n }\n return connection;\n })\n .catch(() => null)\n .finally(() => {\n this.connecting = undefined;\n });\n return this.connecting;\n }\n\n async request(\n subject: string,\n req: ControlRequest,\n opts: { timeoutMs: number },\n ): Promise<ControlResponse> {\n const conn = await this.resolveConnection();\n if (!conn) {\n // No NATS configured / not reachable → the agent is unaddressable → offline.\n // The request was never published (no connection) → NEVER SENT: safe to re-issue.\n return offlineControlResponse(req.requestId, true);\n }\n const payload = ControlRequest.encode(req).finish();\n try {\n const reply = await conn.request(subject, payload, { timeout: opts.timeoutMs });\n return ControlResponse.decode(reply.data);\n } catch (err) {\n // Re-allow a future request to re-dial if the cached conn was torn down.\n if (isNoRespondersError(err)) {\n // No subscriber on the subject at all → the request reached no responder and\n // was NOT delivered → NEVER SENT (provably not executed): safe to re-issue.\n return offlineControlResponse(req.requestId, true);\n }\n if (isRequestTimeoutError(err)) {\n // A responder may exist but the request timed out → a transient blip. AMBIGUOUS\n // (the op may have run and only the reply was lost) — never marked never-sent.\n return timeoutControlResponse(req.requestId);\n }\n // Any other transport error → treat as offline (never a NotFound). The op\n // surfaces agent_offline and the lease never cold-creates a rival.\n this.connection = undefined; // force a re-dial next time\n return offlineControlResponse(req.requestId);\n }\n }\n}\n\n/** A `ControlResponse` carrying a synthesized AGENT_OFFLINE error. `neverSent` marks\n * a pre-send synthesis (no connection / no responder) — the op provably never\n * reached the machine, so it is safe to re-issue for any op kind. */\nexport function offlineControlResponse(requestId: string, neverSent = false): ControlResponse {\n return { requestId, error: offlineAgentError(undefined, neverSent), result: undefined };\n}\n\n/** A `ControlResponse` carrying a synthesized TIMEOUT error (→ reconnecting). */\nexport function timeoutControlResponse(requestId: string): ControlResponse {\n return { requestId, error: timeoutAgentError(), result: undefined };\n}\n","// `SelfhostedSession` + `SelfhostedSandboxClient` — the NATS-backed structural\n// sandbox surface for the `selfhosted` backend (bring-your-own-compute).\n//\n// The insight: every existing seam (Channel-A exec/fs/git, the\n// viewer's `resolveExposedPort`, computer-use) consumes a provider session\n// STRUCTURALLY — `session.exec ?? session.execCommand`, `session.readFile`,\n// `session.resolveExposedPort`, `session.serializeSessionState`. If the\n// selfhosted client's `create()`/`resume()` return a session presenting that\n// EXACT surface — but backed by `ControlRpc` (request/reply to the agent over\n// `agent.<ws>.<id>.rpc`, encoded via `@opengeni/agent-proto`) instead of a\n// provider SDK — then those seams work UNCHANGED. The agent IS the box.\n//\n// The session depends ONLY on `ControlRpc` + `{workspaceId, agentId}` (+ the\n// relay config for the stream-URL SHAPE). It knows nothing about NATS directly\n// (the M3/M4 seam). `serializeSessionState`/`deserializeSessionState` round-trip\n// `{agentId}` ONLY — resume = re-address the live subject, NO provider state.\n\nimport {\n ControlRequest,\n ControlResponse,\n ErrorCode,\n FsEntryKind,\n StreamKind,\n type DesktopInputRequest,\n type ExecRequest,\n type ExecResponse,\n type StreamChannel,\n} from \"@opengeni/agent-proto\";\nimport { DESKTOP_STREAM_PORT } from \"@opengeni/contracts\";\n// `Manifest` from the ALLOWED sandbox-leaf entrypoint (`@openai/agents/sandbox`\n// re-exports `@openai/agents-core/sandbox`, which exports the Manifest class) —\n// NOT the agent-loop `@openai/agents` root the sandbox leaf forbids. The live\n// `state.manifest` slice the @openai/agents SDK reads per turn must be a real\n// Manifest (see the `state` field below); selfhosted exec routes over NATS and\n// does not use the manifest, but the SDK requires it present + well-formed.\nimport { Manifest } from \"@openai/agents/sandbox\";\nimport type { ExposedPortEndpoint } from \"../stream-port\";\nimport {\n agentErrorToControlError,\n drainingExhaustedError,\n execDeadlineHint,\n SelfhostedControlError,\n subjectFor,\n type ControlRpc,\n} from \"./control-rpc\";\nimport {\n decideSelfhostedRetry,\n defaultSelfhostedRetryClock,\n type SelfhostedRetryClock,\n} from \"./retry-policy\";\nimport type { SelfhostedOpObservation, SelfhostedOpObserver } from \"./op-observer\";\nimport { selfhostedFaultClass } from \"./fault-rendering\";\nimport { nextDurableOpId } from \"../op-correlation\";\nimport { OpStreamExecClient, type OpStreamJournal } from \"./op-stream\";\nimport { OpStreamUnavailableError, type OpStreamTransport } from \"./op-transport\";\n\nconst decoder = new TextDecoder();\nconst encoder = new TextEncoder();\n\n/**\n * The SDK's VIRTUAL sandbox root. The `@openai/agents` agent loop presents the\n * sandbox to the model rooted at this path — it equals `state.manifest.root`,\n * which is held at \"/workspace\" to match the Modal createManifest root for the\n * provided-session root-delta guard (`validateProvidedSessionManifestUpdate`).\n *\n * On a bring-your-own machine this path DOES NOT EXIST: the machine's real root\n * is the agent's `workspace_root` (reported in Hello, e.g. \"/home/user/repo\").\n * The Rust agent's `resolve_cwd` maps an EMPTY cwd / a RELATIVE path onto its\n * `workspace_root`, but takes an ABSOLUTE path AS-IS. So a virtual-root-anchored\n * path the SDK hands us (\"/workspace\" or \"/workspace/sub\", e.g. an exec workdir\n * or a model-relative file the SDK resolved against the manifest root) would hit\n * the machine as a literal absolute \"/workspace/…\" → `current_dir`/open ENOENT\n * (the live-swap exec crash: `spawn hostname: No such file or directory`).\n *\n * `toMachinePath` rewrites the virtual frame onto the machine's: the root itself\n * → the session `workingDir` (empty by default ⇒ \"\", so the agent substitutes its\n * workspace_root); a child → `workingDir`-rooted remainder (the agent joins it onto\n * workspace_root). A genuine machine-ABSOLUTE path the model/agent chose (\"/tmp/x\"),\n * or a real path echoed back by `listDir`, passes through UNTOUCHED. This is the\n * SOLE adapter rule between the SDK's virtual space and the machine's real\n * filesystem; it is applied at every NATS path/cwd boundary below (exec cwd, fs\n * read/write/list/stat, the editor's delete, the terminal's pty cwd). The\n * per-session `workingDir` (default \"\" ⇒ a byte-identical no-op) is the base.\n */\nconst SELFHOSTED_VIRTUAL_ROOT = \"/workspace\";\n\n/**\n * `workingDir` is the session's per-session working directory — the frame's BASE.\n * It is the launch-workspace_root-relative subdir (or an absolute machine path)\n * the agent/terminal/dock operate under. An EMPTY `workingDir` (the default) makes\n * this byte-identical to before: `base === \"\"`, so every branch returns the\n * original value (empty/virtual → \"\", virtual-child → its remainder, a relative or\n * absolute path → itself). A trailing slash on `workingDir` is stripped so a join\n * never doubles; relative stays relative and absolute stays absolute otherwise.\n */\nfunction toMachinePath(p: string | undefined, workingDir: string): string {\n const base = workingDir.replace(/\\/$/, \"\");\n if (!p || p === SELFHOSTED_VIRTUAL_ROOT) return base;\n if (p.startsWith(`${SELFHOSTED_VIRTUAL_ROOT}/`)) {\n const rel = p.slice(SELFHOSTED_VIRTUAL_ROOT.length + 1);\n return base ? `${base}/${rel}` : rel;\n }\n // An ABSOLUTE machine path — a genuine path the model/agent chose (\"/tmp/x\") or\n // a real path echoed back by `listDir` — points anywhere and passes through\n // UNTOUCHED (the agent's `resolve_cwd` takes an absolute path as-is).\n if (p.startsWith(\"/\")) return p;\n // A BARE-RELATIVE path is the structural Channel-A surface's frame: the file dock\n // joins fs read/list/git sub-paths under an EMPTY workspaceRoot (yielding a bare\n // relative), and a model-supplied relative exec workdir is bare too. Root it under\n // the session working dir so those reads/stats stay in the SAME frame as the dock's\n // working-dir-rooted listing/exec (which run with cwd = workingDir). The SDK agent\n // loop never emits a bare-relative path — it anchors everything at the manifest\n // root (\"/workspace/…\") — so this only re-homes the structural surface. With an\n // empty workingDir it is a no-op (base === \"\" ⇒ returns the path unchanged).\n return base ? `${base}/${p}` : p;\n}\n\n// ── The agent-turn provided-session contract (@openai/agents-core) ──────────\n// When the routing proxy resolves a selfhosted ACTIVE backend, the @openai/agents\n// agent loop binds its filesystem/shell/skills capabilities to THIS session and\n// calls a richer method set than the Channel-A structural surface: `createEditor`\n// + `viewImage` (filesystem), `execCommand` + `supportsPty` (shell), `pathExists`\n// + `listDir` + `materializeEntry` + `readFile` (skills). The session must present\n// all of them or the turn crashes (e.g. \"Filesystem sandbox sessions must provide\n// createEditor()\"). These run over the SAME NATS exec/fs primitives; the machine\n// owns its filesystem so source materialization is a no-op.\n\n/** The V4A-diff applier the SDK's apply_patch editor uses. The leaf cannot import\n * `@openai/agents`'s `applyDiff` (the agent-loop root the leaf forbids), so the\n * runtime barrel (`packages/runtime/src/index.ts`, which DOES import that root)\n * injects it via `setSelfhostedApplyDiff` at module load. Until injected,\n * `createEditor()` surfaces a clear error rather than a silent wrong-edit. */\nexport type SelfhostedApplyDiff = (\n input: string,\n diff: string,\n mode?: \"default\" | \"create\",\n) => string;\nlet injectedApplyDiff: SelfhostedApplyDiff | undefined;\n\n/** Register the SDK's `applyDiff` so `SelfhostedSession.createEditor()` can apply\n * V4A diffs over the NATS fs ops. Called once by the runtime barrel. */\nexport function setSelfhostedApplyDiff(fn: SelfhostedApplyDiff): void {\n injectedApplyDiff = fn;\n}\n\n/** The structural Editor surface the SDK's filesystem capability consumes (the\n * three apply_patch operations). Mirrors `@openai/agents-core`'s `Editor`. */\nexport interface SelfhostedEditor {\n createFile(\n operation: { path: string; diff: string },\n context?: unknown,\n ): Promise<{ output?: string } | void>;\n updateFile(\n operation: { path: string; diff: string; moveTo?: string },\n context?: unknown,\n ): Promise<{ output?: string } | void>;\n deleteFile(operation: { path: string }, context?: unknown): Promise<{ output?: string } | void>;\n}\n\n/** The image tool-output shape the SDK's view_image tool expects (mirror of\n * `ToolOutputImage` — not re-exported by `@openai/agents/sandbox`, so structural). */\nexport interface SelfhostedImageOutput {\n type: \"image\";\n image: { data: Uint8Array; mediaType: string };\n}\n\n/** Default control-op timeout. A transient miss surfaces as `agent_reconnecting`\n * (the turn pauses + retries); it is NOT a hard failure. */\nexport const SELFHOSTED_DEFAULT_TIMEOUT_MS = 30_000;\n/** Reply grace after an agent-side exec deadline. The child is terminated at\n * `ExecRequest.timeoutMs`; this outer window lets the typed `timedOut` response\n * cross NATS before request/reply gives up. */\nconst SELFHOSTED_EXEC_REPLY_GRACE_MS = 5_000;\n/** nats.js ultimately schedules a JS timer; stay inside the signed 32-bit timer\n * range while also fitting the reply grace. */\nconst SELFHOSTED_MAX_EXEC_TIMEOUT_MS = 2_147_483_647 - SELFHOSTED_EXEC_REPLY_GRACE_MS;\n\n/**\n * The ONLY manifest-environment keys exported into a selfhosted machine's exec\n * shell. The manifest env is otherwise NOT consumed by selfhosted exec — the\n * machine owns its own environment, and pushing HOME, GIT_ vars, and the like\n * onto a real computer would clobber it. The toolspace pointers are the exception:\n * `ogtool` (and the token-seed hook) need the non-secret programmatic-calling URL\n * and the token-FILE PATH to reach the tool surface. The token VALUE never rides\n * here — it is seeded to that file off-manifest over the same exec channel.\n */\nconst SELFHOSTED_EXEC_ENV_ALLOWLIST = [\n \"OPENGENI_TOOLSPACE_URL\",\n \"OPENGENI_TOOLSPACE_TOKEN_FILE\",\n \"OPENGENI_OGTOOL_PACKAGE_SPEC\",\n] as const;\n\nfunction selfhostedExecEnv(environment: Record<string, string>): Record<string, string> {\n const env: Record<string, string> = {};\n for (const key of SELFHOSTED_EXEC_ENV_ALLOWLIST) {\n const value = environment[key];\n if (value) {\n env[key] = value;\n }\n }\n return env;\n}\n\n/** The relay-URL shape config the session needs to build a stream endpoint. M8b\n * wires the real relay deployment behind THIS seam so `buildStreamUrl` works\n * unchanged behind `resolveExposedPort`. */\nexport interface SelfhostedRelayConfig {\n /** The relay edge host (no scheme), e.g. \"relay.opengeni.ai\". */\n host: string;\n /** The relay port. Defaults to 443 (the relay terminates TLS). */\n port?: number;\n /** Whether the relay endpoint is TLS (wss/https). Defaults true. */\n tls?: boolean;\n /** The relay's stream-dial path (the `opengeni-relay` wss route). Defaults to\n * \"/stream\" — the route the relay listens on (M8b). */\n path?: string;\n}\n\n/** The relay's default wss dial path (the `opengeni-relay` server route). */\nexport const SELFHOSTED_RELAY_STREAM_PATH = \"/stream\";\n\n/**\n * The op-stream injection (op-stream protocol v1.1 — see op-stream.ts). PRESENT\n * = the streaming exec transport is enabled for this session (the worker\n * injects it only when the runner advertised `Capabilities.op_stream` AND the\n * server flag is on — the leaf carries no flag logic). ABSENT = the legacy\n * monolithic exec, byte-identical to before. The timing knobs exist for tests.\n */\nexport interface SelfhostedOpStreamDeps {\n transport: OpStreamTransport;\n /** The durable-resume journal (attach generation + settled-frontier persist).\n * Absent (tests, non-activity callers) ⇒ generation \"1\", no persistence. */\n journal?: OpStreamJournal;\n windowBytes?: number;\n ackIntervalMs?: number;\n silenceTimeoutMs?: number;\n reconnectHoldMs?: number;\n}\n\nexport interface SelfhostedSessionDeps {\n workspaceId: string;\n agentId: string;\n controlRpc: ControlRpc;\n relay: SelfhostedRelayConfig;\n /** Op-stream exec transport (present = enabled; see SelfhostedOpStreamDeps). */\n opStream?: SelfhostedOpStreamDeps;\n /** The lease/active epoch this session is fenced under (echoed on every\n * ControlRequest so the agent can reject a stale op with ERROR_CODE_FENCED).\n * Defaults to 0 (no fence) for the negotiation-only / test path. */\n epoch?: number;\n /** The CONTROL-op timeout (ping/fs/desktop/pty and the exec wire fallback). The\n * agent's own control liveness must stay responsive, so this is short (the 30s\n * default). Override for tests or per-deployment tuning. */\n timeoutMs?: number;\n /**\n * The EXEC process deadline — distinct from `timeoutMs`. A real command\n * (compile, test run, install) routinely outlives the short control timeout, so\n * exec gets its own, much larger budget: the agent kills the child at this wall,\n * and the wire waits `execTimeoutMs + SELFHOSTED_EXEC_REPLY_GRACE_MS`. Omitted ⇒\n * falls back to `timeoutMs` (byte-identical to before this split), so any caller\n * that does not opt in keeps today's behavior.\n */\n execTimeoutMs?: number;\n /** The clock the bounded control-op retry loop drives (sleep + jitter). Injected\n * so tests are deterministic; defaults to a real timer + `Math.random()`. */\n retryClock?: SelfhostedRetryClock;\n /** A fire-and-forget observer invoked once per completed control op (out-of-band\n * telemetry — metrics + `machine.*` events). The worker/api wire it to the sinks;\n * the leaf only invokes it (guarded so it can never break an op). Omitted ⇒ no-op. */\n onOp?: SelfhostedOpObserver;\n /**\n * The run's declared sandbox environment — the SAME `Record<string,string>` the\n * worker turn passes to `runtime.buildAgent`'s `sandboxEnvironment` (and that the\n * agent's TARGET manifest, `buildManifest`, carries). The SDK injects this\n * selfhosted session NON-OWNED and applies the agent's manifest as a provided-\n * session delta; `validateNoEnvironmentDelta` throws \"Live sandbox sessions cannot\n * change manifest environment variables\" on ANY env mismatch. So `state.manifest`'s\n * `environment` MUST EQUAL the turn's environment for the delta to be empty. The\n * selfhosted exec routes over NATS and does NOT consume this env wholesale (the\n * machine owns its own shell), EXCEPT the allowlisted toolspace pointers it\n * exports per exec so `ogtool` works — see SELFHOSTED_EXEC_ENV_ALLOWLIST. The\n * manifest carries the full env for parity. Omitted → `{}` (the negotiation-only\n * / test path, which never applies a turn manifest, so there is no delta).\n */\n environment?: Record<string, string>;\n /**\n * The session's working directory — the BASE every path/cwd is rooted under (see\n * `toMachinePath` / SELFHOSTED_VIRTUAL_ROOT). A launch-workspace_root-relative\n * subdir (resolved under workspace_root by the agent's `resolve_cwd`) or an\n * absolute machine path. Omitted/empty (the default) ⇒ \"\" ⇒ today's behavior\n * exactly (an empty cwd lets the agent substitute its workspace_root).\n */\n workingDir?: string;\n}\n\n/** The Channel-A `exec` result shape (a structural superset of the SDK's). */\nexport interface SelfhostedExecResult {\n output: string;\n stdout: string;\n stderr: string;\n exitCode: number | null;\n /** True when the agent killed the child at the exec deadline. Additive to the\n * Channel-A superset (consumers that don't read it are unaffected); `execCommand`\n * reads it to surface the deadline hint on the stdout-only SDK path. */\n timedOut?: boolean;\n}\n\n/** The `exec` args the structural surface accepts (mirrors ChannelAExecArgs). */\nexport interface SelfhostedExecArgs {\n cmd: string;\n workdir?: string | undefined;\n shell?: string | undefined;\n login?: boolean | undefined;\n tty?: boolean | undefined;\n runAs?: string | undefined;\n}\n\n/**\n * The persistable session state. For selfhosted this is `{agentId}` ONLY — there\n * is NO provider box id, no snapshot, no manifest. Resume re-addresses the live\n * subject; the machine itself is the persistence (`persistable:false`).\n */\nexport interface SelfhostedSessionState {\n agentId: string;\n}\n\n/**\n * A live selfhosted session — the structural `SandboxSessionLike` surface over a\n * `ControlRpc`. Mirrors Modal's session shape so Channel-A/viewer/computer-use\n * consume it unchanged.\n */\nexport class SelfhostedSession {\n readonly backendId = \"selfhosted\" as const;\n readonly workspaceId: string;\n readonly agentId: string;\n private readonly controlRpc: ControlRpc;\n private readonly relay: SelfhostedRelayConfig;\n private readonly epoch: number;\n private readonly timeoutMs: number;\n /** The exec process deadline (falls back to `timeoutMs` when unset). */\n private readonly execTimeoutMs: number | undefined;\n private readonly retryClock: SelfhostedRetryClock;\n private readonly onOp: SelfhostedOpObserver | undefined;\n private readonly subject: string;\n /** The op-stream exec client — constructed iff `deps.opStream` was injected\n * (= the streaming transport is enabled for this session). */\n private readonly opStreamClient: OpStreamExecClient | undefined;\n /** The session working directory — the path/cwd base every op is rooted under\n * (see `toMachinePath`). \"\" by default ⇒ today's workspace_root behavior. */\n private readonly workingDir: string;\n\n /**\n * The structural `state` slice consumers read. `agentId`/`instanceId` serve the\n * channel-a `readInstanceId` + docker-network decoration (the agentId IS the\n * identity). `manifest` is the slice the @openai/agents SDK reads AND writes per\n * turn (serializeManifestEnvironment / validateProvidedSessionManifestUpdate read\n * `manifest.root` + iterate `manifest.environment`; providedSessionManifest WRITES\n * `state.manifest = next`). It must be a real, MUTABLE Manifest field — when the\n * RoutingSandboxSession proxy resolves THIS as the active backend it returns\n * `session.state` BY REFERENCE, so the SDK's read and write must both land on a\n * well-formed Manifest here (defined `root`, object `environment`). Without it the\n * SDK crashes with `undefined is not an object (evaluating 'current.root')`.\n *\n * `manifest` is intentionally a plain mutable field (not `readonly`) so the SDK's\n * `state.manifest = next` write succeeds. It is NOT part of the persistable state\n * (`serializeSessionState` round-trips `{agentId}` only).\n *\n * `environment` is the SDK `SandboxSessionState.environment` (a `Record<string,\n * string>`). It MUST be present because the GROUP box's client serializes THIS\n * (the active backend's) state at end-of-turn — the non-owned injected session is\n * serialized via the CONFIGURED client (modal in prod), NOT the selfhosted client.\n * Modal's `serializeRemoteSandboxSessionState` does `Object.entries(state.environment)`;\n * an absent field crashes the post-turn RunState serialize with \"Object.entries\n * requires that input parameter not be null or undefined\". It carries the run's\n * threaded environment (or `{}`). The resulting modal-tagged envelope is inert for\n * selfhosted (resume re-addresses the machine by agentId via the lease pointer,\n * never from this SDK envelope), so its only job is to not crash the serialize.\n */\n readonly state: {\n agentId: string;\n instanceId: string;\n manifest: Manifest;\n environment: Record<string, string>;\n };\n\n constructor(deps: SelfhostedSessionDeps) {\n this.workspaceId = deps.workspaceId;\n this.agentId = deps.agentId;\n this.controlRpc = deps.controlRpc;\n this.relay = deps.relay;\n this.epoch = deps.epoch ?? 0;\n this.timeoutMs = deps.timeoutMs ?? SELFHOSTED_DEFAULT_TIMEOUT_MS;\n this.execTimeoutMs = deps.execTimeoutMs;\n this.retryClock = deps.retryClock ?? defaultSelfhostedRetryClock;\n this.onOp = deps.onOp;\n this.subject = subjectFor(deps.workspaceId, deps.agentId);\n this.workingDir = deps.workingDir ?? \"\";\n this.opStreamClient = deps.opStream\n ? new OpStreamExecClient({\n workspaceId: deps.workspaceId,\n agentId: deps.agentId,\n epoch: this.epoch,\n controlRpc: deps.controlRpc,\n rpcSubject: this.subject,\n transport: deps.opStream.transport,\n controlTimeoutMs: this.timeoutMs,\n retryClock: this.retryClock,\n ...(deps.opStream.journal !== undefined ? { journal: deps.opStream.journal } : {}),\n ...(deps.opStream.windowBytes !== undefined\n ? { windowBytes: deps.opStream.windowBytes }\n : {}),\n ...(deps.opStream.ackIntervalMs !== undefined\n ? { ackIntervalMs: deps.opStream.ackIntervalMs }\n : {}),\n ...(deps.opStream.silenceTimeoutMs !== undefined\n ? { silenceTimeoutMs: deps.opStream.silenceTimeoutMs }\n : {}),\n ...(deps.opStream.reconnectHoldMs !== undefined\n ? { reconnectHoldMs: deps.opStream.reconnectHoldMs }\n : {}),\n })\n : undefined;\n // A valid Manifest mirroring the Modal create-manifest shape (sandbox/index.ts\n // `createManifest`: `new Manifest({ root: \"/workspace\", environment })`). `root`\n // is \"/workspace\" to match `buildManifest`'s declared root (the root-delta guard\n // in validateProvidedSessionManifestUpdate). This is the VIRTUAL root the SDK\n // presents to the model; `toMachinePath` (see SELFHOSTED_VIRTUAL_ROOT) rewrites\n // it onto the machine's real `workspace_root` at every exec/fs NATS boundary,\n // so the manifest never needs to carry the machine's true root. `environment`\n // is the run's declared\n // sandbox environment — the SAME object the worker turn threads into the agent's\n // TARGET manifest — so the SDK's per-turn provided-session delta\n // (validateNoEnvironmentDelta) finds NO mismatch. `entries: {}` because the\n // selfhosted machine already owns its filesystem (no SDK materialization; exec\n // routes over NATS). Omitted env (the negotiation-only / test path) defaults to\n // `{}` — no turn manifest is applied there, so there is no delta to validate.\n this.state = {\n agentId: deps.agentId,\n instanceId: deps.agentId,\n manifest: new Manifest({\n root: \"/workspace\",\n entries: {},\n environment: deps.environment ?? {},\n }),\n // The SDK `SandboxSessionState.environment` — the run's threaded env (or `{}`).\n // The group client's end-of-turn serialize reads `state.environment` directly\n // (Object.entries), so it must be a defined object, not absent.\n environment: deps.environment ?? {},\n };\n }\n\n /** Invoke the injected per-op observer, guarded: a telemetry tap must NEVER break\n * an op (a throwing sink is swallowed). No-op when no observer is wired. */\n private emitOp(observation: SelfhostedOpObservation): void {\n if (!this.onOp) {\n return;\n }\n try {\n this.onOp(observation);\n } catch {\n // A telemetry sink must never surface into the op path.\n }\n }\n\n /**\n * Issue a control op, decoding the agent's reply or throwing the mapped\n * `SelfhostedControlError` on an AgentError (incl. a synthesized offline /\n * timeout error from the transport).\n *\n * Two failure modes are retried in-place (the decision is the pure\n * `decideSelfhostedRetry` policy):\n * - DRAINING — a pre-admission host-work backpressure rejection; the op never\n * started, so it is safe to re-issue for ANY op kind (bounded).\n * - a TIMEOUT / `agent_reconnecting` blip — re-issued ONCE, and ONLY for a\n * read-only idempotent-safe op. A timed-out MUTATION is NEVER re-issued: it\n * may already have executed on the machine (at-least-once), which would\n * duplicate the write/command. FENCED is intentionally NOT retried here — the\n * routing proxy retries it against a re-resolved backend under a fresh epoch.\n * Each attempt carries a FRESH `requestId` (a retry is a distinct request).\n */\n private async call(\n op: NonNullable<ControlRequest[\"op\"]>,\n timeoutMs = this.timeoutMs,\n ): Promise<NonNullable<ControlResponse[\"result\"]>> {\n const opKind = op.$case;\n const startedAt = Date.now();\n let drainingRetries = 0;\n let timeoutRetries = 0;\n let neverSentRetries = 0;\n for (;;) {\n const req: ControlRequest = {\n requestId: crypto.randomUUID(),\n epoch: this.epoch,\n op,\n };\n const res = await this.controlRpc.request(this.subject, req, { timeoutMs });\n if (!res.error && res.result) {\n const retries = drainingRetries + timeoutRetries + neverSentRetries;\n this.emitOp({\n op: opKind,\n outcome: \"ok\",\n healed: retries > 0,\n retries,\n durationMs: Date.now() - startedAt,\n machineId: this.agentId,\n // A healed op's class is whichever retry budget it recovered from.\n ...(retries > 0\n ? {\n faultClass:\n neverSentRetries > 0\n ? \"offline\"\n : drainingRetries > 0\n ? \"draining\"\n : \"reconnecting\",\n }\n : {}),\n });\n return res.result;\n }\n const error = res.error\n ? agentErrorToControlError(res.error)\n : agentErrorToControlError({\n code: 7, // ERROR_CODE_PROTOCOL — an empty result is a protocol violation\n message: \"agent returned an empty control response\",\n retryable: false,\n detail: {},\n });\n const decision = decideSelfhostedRetry({\n opKind,\n error,\n drainingRetries,\n timeoutRetries,\n neverSentRetries,\n jitter: this.retryClock.jitter(),\n });\n if (decision.action === \"fail\") {\n const retries = drainingRetries + timeoutRetries + neverSentRetries;\n const encoded = Number(error.detail.encoded_bytes);\n this.emitOp({\n op: opKind,\n outcome: \"failed\",\n healed: false,\n retries,\n durationMs: Date.now() - startedAt,\n code: error.code,\n reason: error.reason,\n neverSent: error.neverSent,\n machineId: this.agentId,\n faultClass: selfhostedFaultClass(error),\n // Known only on a PAYLOAD_TOO_LARGE fault (the agent's encoded_bytes detail).\n ...(Number.isFinite(encoded) ? { replyBytes: encoded } : {}),\n });\n // Fold the retry count into the DRAINING copy when we actually retried, so\n // the surfaced message reads \"…retried N times first…\".\n if (error.draining && drainingRetries > 0) {\n throw drainingExhaustedError(error, drainingRetries);\n }\n throw error;\n }\n await this.retryClock.sleep(decision.delayMs);\n // Advance the counter for the class that was retried (separate budgets).\n if (error.neverSent) {\n neverSentRetries += 1;\n } else if (error.draining) {\n drainingRetries += 1;\n } else {\n timeoutRetries += 1;\n }\n }\n }\n\n /** The clamped exec process deadline (ms): the exec-specific budget when threaded,\n * else the control timeout. Shared by `exec()` (the wire deadline) and\n * `execCommand()` (the timed-out hint's \"N-second limit\"), so the two never drift. */\n private execDeadlineMs(): number {\n // exec gets its OWN (much larger) deadline distinct from the short control\n // timeout — a real command routinely outlives 30s. Falls back to `timeoutMs`\n // when no exec deadline is threaded (unchanged for those callers).\n return Math.max(\n 1,\n Math.min(Math.trunc(this.execTimeoutMs ?? this.timeoutMs), SELFHOSTED_MAX_EXEC_TIMEOUT_MS),\n );\n }\n\n /** Channel-A `exec`: run a command on the machine and return its output. */\n async exec(args: SelfhostedExecArgs): Promise<SelfhostedExecResult> {\n // Keep the process deadline inside the request/reply deadline. Previously the\n // wire carried timeoutMs=0 (unbounded) while the caller stopped waiting after\n // ~30s, leaving accepted work invisible and able to starve control liveness.\n const executionTimeoutMs = this.execDeadlineMs();\n const execReq: ExecRequest = {\n // The agent does NOT shell-interpret unless `shell` — Channel-A passes a\n // single shell command string, so run it through the platform shell.\n command: [args.cmd],\n shell: true,\n // Rewrite a virtual-root cwd (\"/workspace[/…]\") onto the machine's frame —\n // an absolute \"/workspace\" would ENOENT on a real machine (see\n // SELFHOSTED_VIRTUAL_ROOT). Empty → the session workingDir (itself \"\" by\n // default ⇒ the agent runs in its workspace_root).\n cwd: toMachinePath(args.workdir, this.workingDir),\n // The machine owns its own shell environment; the manifest env is NOT\n // exported here. The ONE exception is the non-secret toolspace pointers\n // (URL + token-file path), so a programmatic `ogtool` call and the token-\n // seed hook can find the tool surface. See SELFHOSTED_EXEC_ENV_ALLOWLIST.\n env: selfhostedExecEnv(this.state.environment),\n stdin: new Uint8Array(0),\n timeoutMs: executionTimeoutMs,\n };\n if (this.opStreamClient) {\n try {\n return await this.execViaOpStream(this.opStreamClient, execReq, executionTimeoutMs);\n } catch (error) {\n // The transport had no live connection, or the runner refused the START\n // itself (capability/downgrade race) — the op provably never ran, so\n // the legacy monolithic exec (the permanent fallback wire form) is safe.\n if (!(error instanceof OpStreamUnavailableError)) {\n throw error;\n }\n }\n }\n return this.execLegacy(execReq, executionTimeoutMs);\n }\n\n /** The legacy monolithic exec request/reply — the permanent fallback wire\n * form (and the only form for runners without `op_stream`). */\n private async execLegacy(\n execReq: ExecRequest,\n executionTimeoutMs: number,\n ): Promise<SelfhostedExecResult> {\n const result = await this.call(\n { $case: \"exec\", exec: execReq },\n executionTimeoutMs + SELFHOSTED_EXEC_REPLY_GRACE_MS,\n );\n if (result.$case !== \"exec\") {\n throw new Error(`selfhosted exec: unexpected result ${result.$case}`);\n }\n return execResultToChannelA(result.exec, executionTimeoutMs);\n }\n\n /**\n * The op-stream exec path: the SAME `ExecRequest`, streamed (see\n * op-stream.ts). The durable op id comes from the tool-call correlation\n * context (`{callId}:{ordinal}` — B1) when this exec runs inside an SDK tool\n * invocation; a non-tool caller falls back to a random unique id (never\n * collides, merely not stable across a turn re-dispatch). Emits the SAME\n * per-op observation the legacy path does, with `replyBytes` filled from the\n * reassembled stream (the field the framed transport was designed to own).\n */\n private async execViaOpStream(\n client: OpStreamExecClient,\n execReq: ExecRequest,\n executionTimeoutMs: number,\n ): Promise<SelfhostedExecResult> {\n const startedAt = Date.now();\n const opId = nextDurableOpId() ?? `anon_${crypto.randomUUID()}`;\n try {\n const outcome = await client.exec(\n opId,\n execReq,\n executionTimeoutMs,\n executionTimeoutMs + SELFHOSTED_EXEC_REPLY_GRACE_MS,\n );\n const retries = outcome.heals + outcome.startRetries;\n this.emitOp({\n op: \"exec\",\n outcome: \"ok\",\n healed: retries > 0,\n retries,\n durationMs: Date.now() - startedAt,\n machineId: this.agentId,\n replyBytes: outcome.replyBytes,\n // A healed op's class: attach heals are link blips (reconnecting);\n // start retries without heals were admission backpressure (draining).\n ...(retries > 0 ? { faultClass: outcome.heals > 0 ? \"reconnecting\" : \"draining\" } : {}),\n });\n return execResultToChannelA(outcome.response, executionTimeoutMs);\n } catch (error) {\n if (error instanceof OpStreamUnavailableError) {\n // Not a fault: the caller falls back to the legacy exec, which emits\n // its own observation.\n throw error;\n }\n const controlError =\n error instanceof SelfhostedControlError\n ? error\n : new SelfhostedControlError({\n message: error instanceof Error ? error.message : String(error),\n code: ErrorCode.ERROR_CODE_PROTOCOL,\n reason: null,\n retryable: false,\n });\n this.emitOp({\n op: \"exec\",\n outcome: \"failed\",\n healed: false,\n retries: 0,\n durationMs: Date.now() - startedAt,\n code: controlError.code,\n reason: controlError.reason,\n neverSent: controlError.neverSent,\n machineId: this.agentId,\n faultClass: selfhostedFaultClass(controlError),\n });\n throw controlError;\n }\n }\n\n /**\n * The turn-end op-stream durability hook: persists each settled op's frontier\n * to the journal, then final-acks it on the wire (licensing the runner to GC\n * its retained frames). The WORKER calls this after the turn's results are\n * durably recorded — never mid-turn (the durable-before-wire-ack ordering).\n * A no-op for sessions without the op-stream transport.\n */\n async finalizeOpStreamOps(): Promise<void> {\n await this.opStreamClient?.finalizeSettledOps();\n }\n\n // ── The agent-turn provided-session contract (over the SAME NATS primitives) ──\n // These are what the @openai/agents shell/filesystem/skills capabilities call on\n // the ACTIVE session once the routing proxy resolves selfhosted. They reuse the\n // exec/fs ops above; the machine owns its filesystem (materialization is a no-op).\n\n /** SDK shell capability `execCommand`: run a command and return its stdout (the\n * `exec_command` tool). Selfhosted exec is non-interactive (no PTY) — `tty` is\n * ignored; `supportsPty()` is false so the SDK never offers a stdin session.\n *\n * On a DEADLINE timeout the SDK path is stdout-only (the model sees `result.output`\n * and nothing else), so the deadline hint that `exec()` puts on stderr would be\n * invisible — a >deadline command would return `{\"output\":\"\"}` and the model would\n * conclude \"no output\" with no idea it was killed. So when the result timed out we\n * surface the hint HERE, on stdout: the hint alone when stdout is empty, or appended\n * after a newline when there is partial output (a timed-out result is already not\n * cleanly parseable — silence is worse than an explanatory suffix). The structured\n * `exec()` result is left untouched for the Channel-A parsers. */\n async execCommand(args: { cmd: string; workdir?: string; runAs?: string }): Promise<string> {\n const result = await this.exec({ cmd: args.cmd, workdir: args.workdir, runAs: args.runAs });\n if (result.timedOut) {\n const hint = execDeadlineHint(Math.round(this.execDeadlineMs() / 1000));\n return result.output ? `${result.output}\\n${hint}` : hint;\n }\n return result.output;\n }\n\n /**\n * Physical turn-cancellation seam used by the runtime tool fence. Only the\n * op-stream transport has a process-tree cancellation protocol; a legacy\n * runner returns false and the caller remains fail-closed until its exec\n * deadline rather than claiming the machine is quiescent.\n */\n async cancelExecCommand(opId: string): Promise<boolean> {\n if (!this.opStreamClient) return false;\n await this.opStreamClient.cancel(opId);\n return true;\n }\n\n /** SDK shell capability never calls this (gated on `supportsPty()` which is\n * false), but the surface advertises it. Selfhosted exec has no interactive PTY\n * session over the structured RPC, so a stdin write is unsupported. */\n supportsPty(): boolean {\n return false;\n }\n\n /** SDK filesystem capability `view_image`: read the image bytes off the machine\n * and wrap them in the tool-output image shape (magic-byte sniff + path fallback,\n * mirroring the SDK's `imageOutputFromBytes`). */\n async viewImage(args: { path: string; runAs?: string }): Promise<SelfhostedImageOutput> {\n const bytes = await this.readFile({\n path: args.path,\n ...(args.runAs ? { runAs: args.runAs } : {}),\n });\n const mediaType = sniffImageMediaType(bytes, args.path);\n if (!mediaType) {\n throw new Error(`selfhosted view_image: unsupported image format for ${args.path}`);\n }\n return { type: \"image\", image: { data: Uint8Array.from(bytes), mediaType } };\n }\n\n /** SDK skills/filesystem `pathExists`: whether a path exists on the machine. */\n async pathExists(path: string, _runAs?: string): Promise<boolean> {\n const { exists } = await this.statFile({ path });\n return exists;\n }\n\n /** SDK skills `listDir`: list a directory as `{name, path, type}[]`. */\n async listDir(args: {\n path: string;\n runAs?: string;\n }): Promise<Array<{ name: string; path: string; type: \"file\" | \"dir\" | \"other\" }>> {\n const result = await this.listFiles({ path: args.path });\n return result.fsList.entries.map((entry) => ({\n name: entry.name,\n path: entry.path,\n type:\n entry.kind === FsEntryKind.FS_ENTRY_KIND_DIRECTORY\n ? (\"dir\" as const)\n : entry.kind === FsEntryKind.FS_ENTRY_KIND_FILE\n ? (\"file\" as const)\n : (\"other\" as const),\n }));\n }\n\n /** SDK manifest-delta `materializeEntry`: a NO-OP for selfhosted. Source\n * materialization (cloning repos / staging files into the box) is how cloud\n * providers prepare a fresh box; a bring-your-own machine already owns its\n * filesystem and is prepared by the agent itself, so there is nothing to stage.\n * Present (not absent) so the SDK's provided-session manifest apply path — which\n * requires `applyManifest()` OR `materializeEntry()` when the agent declares\n * entries — is satisfied without error. The selfhosted manifest declares no\n * entries, so in practice this is never invoked with a real entry. */\n async materializeEntry(_args: { path: string; entry: unknown; runAs?: string }): Promise<void> {\n return;\n }\n\n /** SDK filesystem capability `createEditor`: the apply_patch host. Applies V4A\n * diffs over the NATS fs ops (read → applyDiff → write). `applyDiff` is the SDK's\n * own parser, injected by the runtime barrel (the leaf cannot import it). */\n createEditor(runAs?: string): SelfhostedEditor {\n const applyDiff = injectedApplyDiff;\n if (!applyDiff) {\n throw new Error(\n \"selfhosted createEditor: applyDiff not injected (the runtime barrel must call setSelfhostedApplyDiff before an agent turn binds the filesystem capability)\",\n );\n }\n const pathExists = (path: string): Promise<boolean> => this.pathExists(path, runAs);\n const readText = async (path: string): Promise<string> =>\n decoder.decode(await this.readFile({ path, ...(runAs ? { runAs } : {}) }));\n const writeText = async (path: string, content: string): Promise<void> => {\n await this.writeFile({ path, content, createParents: true });\n };\n const deletePath = async (path: string): Promise<void> => {\n // No fs-delete op in the proto; remove via the shell (the machine's own rm).\n // The path arg is embedded in the command, and this.exec runs it with the\n // DEFAULT cwd = the session workingDir. So target the path RELATIVE to that\n // cwd: strip the virtual root to its bare remainder (toMachinePath with an\n // EMPTY base) — prefixing workingDir here too would DOUBLE it (the cwd is\n // already workingDir). A non-virtual absolute path passes through and rm\n // uses it as-is; an empty workingDir is byte-identical to before.\n await this.exec({\n cmd: `rm -rf -- ${shellQuote(toMachinePath(path, \"\"))}`,\n ...(runAs ? { runAs } : {}),\n });\n };\n return {\n async createFile(operation) {\n if (await pathExists(operation.path)) {\n throw new Error(`selfhosted createFile: file already exists: ${operation.path}`);\n }\n await writeText(operation.path, applyDiff(\"\", operation.diff, \"create\"));\n return {};\n },\n async updateFile(operation) {\n const current = await readText(operation.path);\n const next = applyDiff(current, operation.diff);\n const destination = operation.moveTo ?? operation.path;\n await writeText(destination, next);\n if (operation.moveTo && destination !== operation.path) {\n await deletePath(operation.path);\n }\n return {};\n },\n async deleteFile(operation) {\n await deletePath(operation.path);\n return {};\n },\n };\n }\n\n /** Channel-A `readFile`: read a file off the machine (binary-safe). */\n async readFile(args: { path: string; runAs?: string; maxBytes?: number }): Promise<Uint8Array> {\n const result = await this.call({\n $case: \"fsRead\",\n fsRead: {\n path: toMachinePath(args.path, this.workingDir),\n offset: \"0\",\n length: args.maxBytes ? String(args.maxBytes) : \"0\",\n },\n });\n if (result.$case !== \"fsRead\") {\n throw new Error(`selfhosted readFile: unexpected result ${result.$case}`);\n }\n return result.fsRead.content;\n }\n\n /** Write a file onto the machine (the fs surface the descriptor advertises). */\n async writeFile(args: {\n path: string;\n content: string | Uint8Array;\n createParents?: boolean;\n append?: boolean;\n }): Promise<number> {\n const content = typeof args.content === \"string\" ? encoder.encode(args.content) : args.content;\n const result = await this.call({\n $case: \"fsWrite\",\n fsWrite: {\n path: toMachinePath(args.path, this.workingDir),\n content,\n createParents: args.createParents ?? true,\n append: args.append ?? false,\n mode: 0,\n },\n });\n if (result.$case !== \"fsWrite\") {\n throw new Error(`selfhosted writeFile: unexpected result ${result.$case}`);\n }\n return Number(result.fsWrite.bytesWritten);\n }\n\n /** List a directory on the machine. */\n async listFiles(args: {\n path: string;\n recursive?: boolean;\n }): Promise<NonNullable<ControlResponse[\"result\"]> & { $case: \"fsList\" }> {\n const result = await this.call({\n $case: \"fsList\",\n fsList: {\n path: toMachinePath(args.path, this.workingDir),\n recursive: args.recursive ?? false,\n },\n });\n if (result.$case !== \"fsList\") {\n throw new Error(`selfhosted listFiles: unexpected result ${result.$case}`);\n }\n return result;\n }\n\n /** Stat a path on the machine. */\n async statFile(args: { path: string }): Promise<{ exists: boolean }> {\n const result = await this.call({\n $case: \"fsStat\",\n fsStat: { path: toMachinePath(args.path, this.workingDir) },\n });\n if (result.$case !== \"fsStat\") {\n throw new Error(`selfhosted statFile: unexpected result ${result.$case}`);\n }\n return { exists: result.fsStat.exists };\n }\n\n // ── Computer-use control plane (the agent drives its OWN screen) ──────────────\n // The CONTROL-PLANE twin of the relay DesktopInput/desktop stream: instead of a\n // human viewer channel, the agent injects synthetic input into — and captures —\n // its own display for the model's computer-use loop. Both route over the SAME\n // `call()` primitive, so a consent/epoch rejection surfaces as the mapped\n // `SelfhostedControlError` exactly like every other op. `NativeDesktopComputer`\n // (sandbox-computer.ts) is the sole consumer.\n\n /** Computer-use WRITE op: inject one synthetic desktop input event (pointer/key/\n * scroll) on the machine's OWN display. The agent injects via CGEvent (macOS) /\n * XTEST (Linux) and CONSENT-GATES it — an unconsented call never touches the OS\n * and surfaces the mapped control error (ERROR_CODE_CONSENT_REQUIRED) via `call()`. */\n async desktopInput(event: DesktopInputRequest[\"event\"]): Promise<void> {\n const result = await this.call({ $case: \"desktopInput\", desktopInput: { event } });\n if (result.$case !== \"desktopInput\") {\n throw new Error(`selfhosted desktopInput: unexpected result ${result.$case}`);\n }\n }\n\n /** Computer-use VIEW op: capture a single PNG screenshot of the machine's desktop\n * plus its geometry (via ScreenCaptureKit / x11). NOT consent-gated (a view op —\n * the view/control decoupling), so it works with a display but no screen-control\n * consent. Returns the raw encoded bytes + the ENCODED width/height, plus the\n * NATIVE (pre-downscale) geometry: when the agent had to downscale the PNG to fit\n * the transport's max payload, `nativeWidth`/`nativeHeight` carry the original\n * capture size so the computer-use layer can scale model clicks (in encoded-pixel\n * space) back to native pixels. An older agent leaves them 0 → read as \"same as\n * width/height\" (no downscale). */\n async screenshot(): Promise<{\n png: Uint8Array;\n width: number;\n height: number;\n nativeWidth: number;\n nativeHeight: number;\n }> {\n const result = await this.call({ $case: \"desktopScreenshot\", desktopScreenshot: {} });\n if (result.$case !== \"desktopScreenshot\") {\n throw new Error(`selfhosted screenshot: unexpected result ${result.$case}`);\n }\n const s = result.desktopScreenshot;\n // Back-compat: an agent predating the native-geometry fields sends 0 → treat the\n // encoded geometry AS the native geometry (scale factor 1.0, no coordinate shift).\n return {\n png: s.png,\n width: s.width,\n height: s.height,\n nativeWidth: s.nativeWidth || s.width,\n nativeHeight: s.nativeHeight || s.height,\n };\n }\n\n /** A cheap liveness probe — request a Ping on the subject; returns true iff a\n * responder answered (no AgentError). Used by `negotiateSelfhostedCapabilities`.\n * The wire `nonce` is a uint64 (a numeric string), so the default is a random\n * numeric value — NOT a UUID (which would fail proto uint64 encoding). */\n async ping(nonce = randomNonce()): Promise<boolean> {\n const req: ControlRequest = {\n requestId: crypto.randomUUID(),\n epoch: this.epoch,\n op: { $case: \"ping\", ping: { nonce } },\n };\n const res = await this.controlRpc.request(this.subject, req, { timeoutMs: this.timeoutMs });\n return !res.error && res.result?.$case === \"ping\";\n }\n\n /**\n * Resolve an exposed port to a relay stream endpoint (the viewer/pty plane).\n * Returns the relay URL SHAPE — `{host:relay, port, tls, query:channel-key}` —\n * after asking the agent to ensure a stream channel for the port. M8b wires the\n * real relay tier (the byte pump) behind THIS seam.\n *\n * THE CHANNEL-KEY QUERY (the M8b relay-dial contract): the relay\n * routes by `{workspaceId, agentId, port}` — the EXACT `ChannelKey::query` the\n * agent's relay client (`opengeni-agent-stream`) appends when it registers the\n * producer side: `ws=<workspaceId>&agent=<agentId>&port=<port>`. We append the\n * agent-registered `channel=<channelId>` as a correlation hint. So the viewer\n * dials `wss://<relay>/stream?ws=&agent=&port=&channel=` and presents the minted\n * `ogs_` token in-band (NEVER as a URL param) — the relay pairs it with the\n * producer by the routing key.\n */\n async resolveExposedPort(port: number): Promise<ExposedPortEndpoint> {\n // Ask the agent to ensure a relay PRODUCER channel exists for the port, using the\n // PORT-APPROPRIATE op. The PTY plane (7681) is INDEPENDENT of the desktop display:\n // route it through `ptyOpen` (which spawns/attaches a PTY and NEVER touches X11),\n // and ONLY the desktop framebuffer plane (6080) through `desktopEnsure` (which\n // hard-requires a live virtual display). Earlier M8b used `desktopEnsure` for\n // EVERY port — that wrongly coupled the terminal to the desktop probe, so a\n // headless (or display-degraded) machine could never get a terminal even though\n // `ptyOpen` would have succeeded. The returned channelId is the relay\n // correlation hint; both ops carry a `StreamChannel` on their response.\n let channel: StreamChannel | undefined;\n if (port === DESKTOP_STREAM_PORT) {\n const result = await this.call({\n $case: \"desktopEnsure\",\n desktopEnsure: { width: 0, height: 0 },\n });\n if (result.$case !== \"desktopEnsure\") {\n throw new Error(\n `selfhosted resolveExposedPort(${port}): unexpected result ${result.$case}`,\n );\n }\n channel = result.desktopEnsure.channel;\n } else {\n // The PTY plane (7681) + any non-desktop stream port. `command: []` => the\n // user's default login shell; the agent's pty_pump bridges the PTY master to\n // the relay channel. Display-INDEPENDENT — works on a headless machine.\n const result = await this.call({\n $case: \"ptyOpen\",\n // Open the terminal in the session workingDir (default \"\" ⇒ the agent's\n // workspace_root, byte-identical to before). A relative workingDir resolves\n // under workspace_root; an absolute one is used as-is by the agent.\n ptyOpen: {\n command: [],\n cwd: this.workingDir,\n env: {},\n cols: 0,\n rows: 0,\n term: \"xterm-256color\",\n },\n });\n if (result.$case !== \"ptyOpen\") {\n throw new Error(\n `selfhosted resolveExposedPort(${port}): unexpected result ${result.$case}`,\n );\n }\n channel = result.ptyOpen.channel;\n }\n const channelId = channel?.channelId ?? channelKey(this.workspaceId, this.agentId, port);\n const tls = this.relay.tls ?? true;\n // The routing key the relay pairs producer↔consumer by — IDENTICAL to the\n // agent's `ChannelKey::query` — plus the channel-id correlation hint.\n const routingQuery =\n `ws=${encodeURIComponent(this.workspaceId)}` +\n `&agent=${encodeURIComponent(this.agentId)}` +\n `&port=${port}` +\n `&channel=${encodeURIComponent(channelId)}`;\n return {\n host: this.relay.host,\n port: this.relay.port ?? (tls ? 443 : 80),\n tls,\n // The relay's wss route (`/stream`); buildStreamUrl honors `path`.\n path: this.relay.path ?? SELFHOSTED_RELAY_STREAM_PATH,\n query: routingQuery,\n protocol: kindToProtocol(channel?.kind),\n };\n }\n\n /** Round-trip the persistable state — `{agentId}` ONLY (resume = re-address). */\n async serializeSessionState(): Promise<SelfhostedSessionState> {\n return { agentId: this.agentId };\n }\n}\n\n/**\n * The selfhosted SDK-client surface the registry builds. `backendId:\"selfhosted\"`\n * (the resume-fence field asserted against the descriptor). `create()`/`resume()`\n * return a `SelfhostedSession` bound to `{workspaceId, agentId, controlRpc}`.\n *\n * `create()` and `resume()` are IDENTICAL for selfhosted — there is no box to\n * provision (the machine already exists); both just bind a session to the live\n * subject. `serializeSessionState`/`deserializeSessionState` round-trip\n * `{agentId}` only.\n *\n * The `controlRpc` is constructed LAZILY via an injected factory (defaulting to\n * `NatsControlRpc`); a session built before NATS is configured surfaces\n * `agent_offline` on its first op rather than failing at construction.\n */\nexport class SelfhostedSandboxClient {\n readonly backendId = \"selfhosted\" as const;\n readonly supportsDefaultOptions = false;\n private readonly workspaceId: string;\n private readonly relay: SelfhostedRelayConfig;\n private readonly controlRpcFactory: () => ControlRpc;\n private readonly defaultAgentId: string | undefined;\n private readonly epoch: number | undefined;\n private readonly timeoutMs: number | undefined;\n private readonly execTimeoutMs: number | undefined;\n private readonly environment: Record<string, string> | undefined;\n private readonly workingDir: string | undefined;\n private readonly onOp: SelfhostedOpObserver | undefined;\n private readonly opStream: SelfhostedOpStreamDeps | undefined;\n private controlRpcMemo: ControlRpc | undefined;\n\n constructor(opts: {\n workspaceId: string;\n relay: SelfhostedRelayConfig;\n /** Lazily build the ControlRpc (defaults to NatsControlRpc in the provider). */\n controlRpcFactory: () => ControlRpc;\n /** The agentId a bare create()/resume() (no state) binds to. Optional: the\n * resume path supplies it via deserializeSessionState. */\n agentId?: string;\n epoch?: number;\n /** The control-op timeout threaded into every bound session. */\n timeoutMs?: number;\n /** The exec process deadline threaded into every bound session (distinct from\n * `timeoutMs`; falls back to it when unset). See SelfhostedSessionDeps.execTimeoutMs. */\n execTimeoutMs?: number;\n /** The run's declared sandbox environment, threaded into every bound session's\n * `state.manifest.environment` so the SDK's per-turn manifest-env delta is\n * empty (validateNoEnvironmentDelta). See SelfhostedSessionDeps.environment.\n * Omitted → `{}` (the negotiation-only path; no turn manifest is applied). */\n environment?: Record<string, string>;\n /** The session working directory threaded into every bound session (the path/\n * cwd base; see SelfhostedSessionDeps.workingDir). Omitted/empty ⇒ the default\n * workspace_root behavior. */\n workingDir?: string;\n /** The per-op observer threaded into every bound session (out-of-band telemetry). */\n onOp?: SelfhostedOpObserver;\n /** The op-stream exec transport threaded into every bound session (present\n * = enabled; see SelfhostedOpStreamDeps). */\n opStream?: SelfhostedOpStreamDeps;\n }) {\n this.workspaceId = opts.workspaceId;\n this.relay = opts.relay;\n this.controlRpcFactory = opts.controlRpcFactory;\n this.defaultAgentId = opts.agentId;\n this.epoch = opts.epoch;\n this.timeoutMs = opts.timeoutMs;\n this.execTimeoutMs = opts.execTimeoutMs;\n this.environment = opts.environment;\n this.workingDir = opts.workingDir;\n this.onOp = opts.onOp;\n this.opStream = opts.opStream;\n }\n\n private controlRpc(): ControlRpc {\n if (!this.controlRpcMemo) {\n this.controlRpcMemo = this.controlRpcFactory();\n }\n return this.controlRpcMemo;\n }\n\n private bind(agentId: string): SelfhostedSession {\n return new SelfhostedSession({\n workspaceId: this.workspaceId,\n agentId,\n controlRpc: this.controlRpc(),\n relay: this.relay,\n ...(this.epoch !== undefined ? { epoch: this.epoch } : {}),\n ...(this.timeoutMs !== undefined ? { timeoutMs: this.timeoutMs } : {}),\n ...(this.execTimeoutMs !== undefined ? { execTimeoutMs: this.execTimeoutMs } : {}),\n ...(this.environment !== undefined ? { environment: this.environment } : {}),\n ...(this.workingDir !== undefined ? { workingDir: this.workingDir } : {}),\n ...(this.onOp !== undefined ? { onOp: this.onOp } : {}),\n ...(this.opStream !== undefined ? { opStream: this.opStream } : {}),\n });\n }\n\n /** Bind a session to the live agent subject. There is no box to provision. */\n async create(_manifest?: unknown, _options?: unknown): Promise<SelfhostedSession> {\n const agentId = this.requireAgentId();\n return this.bind(agentId);\n }\n\n /** Resume = re-address the subject. Identical to create — no provider state. */\n async resume(\n state: SelfhostedSessionState | Record<string, unknown>,\n _options?: unknown,\n ): Promise<SelfhostedSession> {\n const agentId = readAgentId(state) ?? this.requireAgentId();\n return this.bind(agentId);\n }\n\n /** Serialize a live session's state → `{agentId}` ONLY. */\n async serializeSessionState(\n state: SelfhostedSessionState | { agentId?: string } | unknown,\n ): Promise<SelfhostedSessionState> {\n const agentId = readAgentId(state) ?? this.requireAgentId();\n return { agentId };\n }\n\n /** Deserialize `{agentId}` from the persisted envelope. */\n async deserializeSessionState(state: Record<string, unknown>): Promise<SelfhostedSessionState> {\n const agentId = readAgentId(state) ?? this.requireAgentId();\n return { agentId };\n }\n\n /** selfhosted is NOT persistable — there is no owned session state to preserve\n * (the machine is the persistence). The lease never snapshots it. */\n async canPersistOwnedSessionState(): Promise<boolean> {\n return false;\n }\n\n private requireAgentId(): string {\n if (!this.defaultAgentId) {\n throw new Error(\n \"selfhosted sandbox client: no agentId bound (create()/resume() need a session state carrying agentId)\",\n );\n }\n return this.defaultAgentId;\n }\n}\n\n/**\n * The dependency shape `buildSelfhostedBackendSession` needs to bind a live\n * selfhosted session to a target machine. A structural superset of the fields the\n * routing resolver (backend-resolver.ts) reads off its deps + pointer, and the\n * fields the WORKER turn's machine-primary establish branch threads in — so a\n * SINGLE build shape is shared by both (never two divergent constructions of the\n * same SelfhostedSandboxClient/resume pair).\n */\nexport interface SelfhostedSessionBuild {\n /** The workspace the machine's control-plane subject is scoped to. */\n workspaceId: string;\n /** The enrollment id == the agent id `agent.<ws>.<id>.rpc` addresses. */\n agentId: string;\n /** The relay-URL shape for stream endpoints. */\n relay: SelfhostedRelayConfig;\n /** Lazily build the live ControlRpc (the request-scoped NATS connection). */\n controlRpcFactory: () => ControlRpc;\n /** The lease/active epoch the session is fenced under (echoed on every op). */\n epoch: number;\n /** The run's declared sandbox environment → the session manifest.environment\n * (env-parity; see SelfhostedSessionDeps.environment). */\n environment?: Record<string, string>;\n /** The session working directory (the path/cwd base). Null/absent ⇒ workspace_root. */\n workingDir?: string | null;\n /** The control-op timeout (ping/fs/desktop/pty). Absent ⇒ the 30s default. */\n timeoutMs?: number;\n /** The exec process deadline, distinct from `timeoutMs`. Absent ⇒ falls back to\n * `timeoutMs` (a real turn threads the long exec budget here). */\n execTimeoutMs?: number;\n /** The per-op observer (out-of-band telemetry). Absent ⇒ no-op. */\n onOp?: SelfhostedOpObserver;\n /** The op-stream exec transport (present = enabled for the session; the\n * worker injects it only when the runner advertised the capability AND the\n * server flag is on). Absent ⇒ the legacy exec, byte-identical to before. */\n opStream?: SelfhostedOpStreamDeps;\n}\n\n/**\n * Build a live selfhosted session bound to a target machine: construct a request-\n * scoped `SelfhostedSandboxClient` (fenced under `epoch`, carrying the run's env +\n * working dir) and `resume()` it (= re-address the live subject — no provider box\n * is created). Returns BOTH the client (the OWNED-sandbox client the turn injects,\n * whose `serializeSessionState` round-trips `{agentId}`) and the live session.\n *\n * Shared by:\n * - the routing resolver (backend-resolver.ts) — a swap target, where only the\n * session is needed; and\n * - the worker turn's machine-primary establish branch — where the client is the\n * owned-sandbox client AND the session is the pinned routing default.\n * Factoring it here keeps the two builds identical (no divergence in the fence\n * epoch, env threading, or working-dir base).\n */\nexport async function buildSelfhostedBackendSession(\n deps: SelfhostedSessionBuild,\n): Promise<{ client: SelfhostedSandboxClient; session: SelfhostedSession }> {\n const client = new SelfhostedSandboxClient({\n workspaceId: deps.workspaceId,\n relay: deps.relay,\n controlRpcFactory: deps.controlRpcFactory,\n agentId: deps.agentId,\n epoch: deps.epoch,\n ...(deps.timeoutMs !== undefined ? { timeoutMs: deps.timeoutMs } : {}),\n ...(deps.execTimeoutMs !== undefined ? { execTimeoutMs: deps.execTimeoutMs } : {}),\n ...(deps.onOp !== undefined ? { onOp: deps.onOp } : {}),\n ...(deps.environment !== undefined ? { environment: deps.environment } : {}),\n ...(deps.workingDir ? { workingDir: deps.workingDir } : {}),\n ...(deps.opStream !== undefined ? { opStream: deps.opStream } : {}),\n });\n const session = await client.resume({ agentId: deps.agentId });\n return { client, session };\n}\n\nfunction readAgentId(state: unknown): string | undefined {\n if (state && typeof state === \"object\") {\n const candidate =\n (state as { agentId?: unknown }).agentId ??\n (state as { providerState?: { agentId?: unknown } }).providerState?.agentId;\n if (typeof candidate === \"string\" && candidate.length > 0) {\n return candidate;\n }\n }\n return undefined;\n}\n\nfunction execResultToChannelA(res: ExecResponse, execDeadlineMs: number): SelfhostedExecResult {\n const stdout = decoder.decode(res.stdout);\n let stderr = decoder.decode(res.stderr);\n if (res.timedOut) {\n // The agent killed the child at the exec deadline. Surface an actionable hint\n // on STDERR ONLY — stdout is left byte-exact because the structural Channel-A\n // surface parses command stdout (find/stat/git listings); a hint injected there\n // would corrupt those parsers.\n const hint = execDeadlineHint(Math.round(execDeadlineMs / 1000));\n stderr = stderr ? `${stderr}\\n${hint}` : hint;\n }\n return {\n output: stdout,\n stdout,\n stderr,\n exitCode: res.exitCode,\n timedOut: res.timedOut,\n };\n}\n\nfunction channelKey(workspaceId: string, agentId: string, port: number): string {\n return `${workspaceId}:${agentId}:${port}`;\n}\n\n/** Single-quote a string for POSIX shell (the editor's delete uses the machine's\n * own `rm`). Mirrors the standard `'…'` quoting with `'\\''` escaping. */\nfunction shellQuote(value: string): string {\n return `'${value.replace(/'/g, `'\\\\''`)}'`;\n}\n\n/** Detect an image media type from magic bytes (with a path-extension fallback),\n * mirroring @openai/agents-core's `sniffImageMediaType` so `viewImage` returns the\n * SAME media types the SDK would. Returns undefined for an unrecognized format. */\nfunction sniffImageMediaType(bytes: Uint8Array, path: string): string | undefined {\n if (bytes[0] === 0x89 && bytes[1] === 0x50 && bytes[2] === 0x4e && bytes[3] === 0x47)\n return \"image/png\";\n if (bytes[0] === 0xff && bytes[1] === 0xd8 && bytes[2] === 0xff) return \"image/jpeg\";\n if (bytes[0] === 0x47 && bytes[1] === 0x49 && bytes[2] === 0x46 && bytes[3] === 0x38)\n return \"image/gif\";\n if (\n bytes[0] === 0x52 &&\n bytes[1] === 0x49 &&\n bytes[2] === 0x46 &&\n bytes[3] === 0x46 &&\n bytes[8] === 0x57 &&\n bytes[9] === 0x45 &&\n bytes[10] === 0x42 &&\n bytes[11] === 0x50\n )\n return \"image/webp\";\n if (bytes[0] === 0x42 && bytes[1] === 0x4d) return \"image/bmp\";\n if (\n (bytes[0] === 0x49 && bytes[1] === 0x49 && bytes[2] === 0x2a && bytes[3] === 0x00) ||\n (bytes[0] === 0x4d && bytes[1] === 0x4d && bytes[2] === 0x00 && bytes[3] === 0x2a)\n )\n return \"image/tiff\";\n if (looksLikeSvg(bytes)) return \"image/svg+xml\";\n return mediaTypeFromPath(path);\n}\n\nfunction looksLikeSvg(bytes: Uint8Array): boolean {\n const prefix = decoder\n .decode(bytes.subarray(0, Math.min(bytes.byteLength, 512)))\n .trimStart()\n .toLowerCase();\n return prefix.startsWith(\"<svg\") || /^<\\?xml[\\s\\S]*<svg/u.test(prefix);\n}\n\nfunction mediaTypeFromPath(path: string): string | undefined {\n const p = path?.trim().toLowerCase() ?? \"\";\n if (p.endsWith(\".png\")) return \"image/png\";\n if (p.endsWith(\".jpg\") || p.endsWith(\".jpeg\")) return \"image/jpeg\";\n if (p.endsWith(\".gif\")) return \"image/gif\";\n if (p.endsWith(\".webp\")) return \"image/webp\";\n if (p.endsWith(\".bmp\")) return \"image/bmp\";\n if (p.endsWith(\".tif\") || p.endsWith(\".tiff\")) return \"image/tiff\";\n if (p.endsWith(\".svg\") || p.endsWith(\".svgz\")) return \"image/svg+xml\";\n return undefined;\n}\n\n/** A random uint64-safe numeric nonce (the wire `PingRequest.nonce` is a uint64,\n * represented as a numeric string by ts-proto). */\nfunction randomNonce(): string {\n // 2^53-safe random integer as a decimal string.\n return String(Math.floor(Math.random() * Number.MAX_SAFE_INTEGER));\n}\n\nfunction kindToProtocol(kind: StreamKind | undefined): string {\n switch (kind) {\n case StreamKind.STREAM_KIND_PTY:\n return \"pty\";\n case StreamKind.STREAM_KIND_DESKTOP:\n return \"vnc\";\n default:\n return \"raw\";\n }\n}\n\n/**\n * The selfhosted NotFound discriminator — THE load-bearing safety property\n *: for selfhosted, `agent-offline` (no responder) is NEVER a\n * provider NotFound. A user's real machine is not recreatable; if the lease saw\n * agent-offline as NotFound it would cold-create a RIVAL box (a Modal box) for\n * the user's machine. So this ALWAYS returns FALSE for selfhosted — there is no\n * \"box gone, recreate it\" condition. An OS-level file NotFound is an op-level\n * error the fs layer 404s; it is likewise NOT a session-recreate condition.\n *\n * `establishSandboxSessionFromEnvelope` cold-restores ONLY when the per-backend\n * NotFound discriminator returns true; returning false here guarantees the\n * selfhosted path never cold-creates a rival — the op surfaces agent_offline and\n * the caller backs off / retries.\n */\nexport function isSelfhostedProviderNotFoundError(_error: unknown): false {\n return false;\n}\n","// The selfhosted control-op RETRY POLICY — a small, PURE decision function the\n// `SelfhostedSession.call()` loop consults after each control-plane reply.\n//\n// Before this, a typed AgentError surfaced straight to the model as a failed tool\n// call: a `DRAINING` backpressure rejection (the machine was momentarily at its\n// concurrent-work capacity) and a transient `TIMEOUT` / `agent_reconnecting` blip\n// both looked like hard failures even though the op never ran (DRAINING) or was a\n// pure read that is safe to re-issue (a read that timed out). This policy retries\n// exactly those two, with a hard safety line around anything that MUTATES state.\n//\n// It is intentionally a pure function (op kind + error + prior-retry counts +\n// injected jitter → a decision) so the whole retry matrix is unit-testable with no\n// clock, no transport, and no session. The sleep + jitter side effects live behind\n// the injected `SelfhostedRetryClock` so tests are deterministic.\n\nimport type { SelfhostedControlError } from \"./control-rpc\";\n\n/**\n * The read-only, idempotent-safe control ops that MAY be retried after a TIMEOUT\n * / `agent_reconnecting` blip.\n *\n * A timed-out request is AT-LEAST-ONCE on the wire: the agent may have RECEIVED\n * and fully EXECUTED the op before its reply was lost, so re-issuing it is only\n * safe when a second execution is observably identical to one — i.e. a pure read.\n * Every MUTATING op (`exec`, `git`, `fsWrite`/`fsMove`/`fsMkdir`/`fsRemove`, and\n * the pty/desktop input ops) is DELIBERATELY EXCLUDED: re-running a mutation that\n * already ran on the machine is a real correctness hazard (a duplicated write, a\n * second `git push`, a re-applied command). Only DRAINING (a pre-admission\n * rejection — see `decideSelfhostedRetry`) is safe to retry for those.\n */\nexport const SELFHOSTED_IDEMPOTENT_READONLY_OPS: ReadonlySet<string> = new Set([\n \"ping\",\n \"metrics\",\n \"fsStat\",\n \"fsList\",\n \"fsRead\",\n]);\n\n/**\n * DRAINING is a pre-admission backpressure rejection (the op never started), so it\n * is safe to retry for ANY op kind. The budget is split by op class:\n *\n * - NON-EXEC control ops (fs/git/desktop/pty) keep a SHORT budget — 3 retries,\n * worst-case backoff 500+1000+2000 = 3.5s (≤5s). Their start latency matters\n * (fs/git ops gate the model's next step), so a saturated machine should surface\n * quickly rather than stall.\n * - EXEC gets a LONG, patient budget — 10 retries, worst-case ≈55.5s (<60s). exec\n * start is not latency-critical, and the agent-side admission pool is (until a\n * later agent release) a FLAT 8 permits with no per-class split: a burst of slow\n * execs can hold every permit and blanket-DRAIN all fs/git ops. A patient exec\n * retry converts those DRAINING storms into mild queueing instead of a wall of\n * failed tool calls, and pairs with the deliberately modest exec deadline (which,\n * for the same 8-permit reason, defaults to 2min, not 5).\n */\nexport const SELFHOSTED_DRAINING_MAX_RETRIES = 3;\nexport const SELFHOSTED_EXEC_DRAINING_MAX_RETRIES = 10;\n/** A read-only op that timed out is retried at most once (see the at-least-once\n * note above — even a read gets a single re-issue, not an unbounded loop). */\nexport const SELFHOSTED_TIMEOUT_MAX_RETRIES = 1;\n/** A fault the transport synthesized PRE-SEND (no connection / no responder) — the\n * op provably never reached the machine, so it is safe to re-issue for ANY op kind.\n * Short bounded budget (≈3.5s summed): enough to ride out a NATS reconnect blip\n * quietly, not so long it stalls the model on a machine that is genuinely down. */\nexport const SELFHOSTED_NEVER_SENT_MAX_RETRIES = 3;\n\n/** Full-jitter backoff base (ms). Delay N is sampled in `[0, base * factor^N)`. */\nexport const SELFHOSTED_RETRY_BACKOFF_BASE_MS = 500;\nexport const SELFHOSTED_RETRY_BACKOFF_FACTOR = 2;\n/** Per-delay ceiling: 500 → 1s → 2s → 4s → 8s, then flat at 8s. Bounds the summed\n * backoff — non-exec (3 retries) ≈3.5s ≤5s; exec (10 retries) ≈55.5s <60s. */\nexport const SELFHOSTED_RETRY_BACKOFF_CAP_MS = 8_000;\n\nexport type SelfhostedRetryDecision =\n | { readonly action: \"fail\" }\n | { readonly action: \"retry\"; readonly delayMs: number };\n\n/**\n * Full-jitter exponential backoff. Returns a delay in\n * `[0, min(cap, base * factor^attempt))`. `jitter` is an injected sample in\n * `[0, 1)` so the delay is fully deterministic under test.\n */\nexport function selfhostedRetryBackoffMs(attempt: number, jitter: number): number {\n const uncapped = SELFHOSTED_RETRY_BACKOFF_BASE_MS * SELFHOSTED_RETRY_BACKOFF_FACTOR ** attempt;\n const ceiling = Math.min(SELFHOSTED_RETRY_BACKOFF_CAP_MS, uncapped);\n const clampedJitter = Math.min(0.999_999, Math.max(0, jitter));\n return Math.floor(clampedJitter * ceiling);\n}\n\n/**\n * PURE retry policy for one selfhosted control-op reply.\n *\n * - `error.draining` (DRAINING — pre-admission host-work backpressure; the op was\n * rejected at the pool gate and NEVER started) → retry for ANY op kind, since\n * nothing executed. exec gets the long `SELFHOSTED_EXEC_DRAINING_MAX_RETRIES`\n * budget (≈60s of patient queueing under the flat 8-permit pool); every other op\n * keeps the short `SELFHOSTED_DRAINING_MAX_RETRIES` budget (≤5s).\n * - `error.neverSent` (a pre-send AGENT_OFFLINE synthesis — no connection / no\n * responder; the op provably never reached the machine) → retry for ANY op kind\n * up to `SELFHOSTED_NEVER_SENT_MAX_RETRIES`. At-least-once does NOT apply (nothing\n * executed), so even a mutation is safe to re-issue; this heals a NATS reconnect\n * blip quietly. A truly-offline machine surfaces honestly after the short budget.\n * - `error.reason === \"agent_reconnecting\"` (a TIMEOUT / transient blip AFTER send)\n * → retry at most `SELFHOSTED_TIMEOUT_MAX_RETRIES`, and ONLY for a read-only\n * idempotent-safe op (`SELFHOSTED_IDEMPOTENT_READONLY_OPS`). A timed-out\n * MUTATION is never retried here — it may already have run (at-least-once).\n * - Everything else → no retry at this layer:\n * · FENCED is retried by the routing proxy against a RE-RESOLVED backend\n * (retrying here under the same stale epoch would just re-fence);\n * · AGENT_OFFLINE / OS / PROTOCOL / PAYLOAD_TOO_LARGE / CONSENT_REQUIRED are\n * not transient and must surface to the caller.\n *\n * The draining and timeout budgets are SEPARATE counters so a read that first hit\n * backpressure still keeps its single timeout re-issue (and vice versa); both are\n * bounded, so the total number of attempts — and the summed backoff — is bounded.\n */\nexport function decideSelfhostedRetry(input: {\n opKind: string;\n error: SelfhostedControlError;\n drainingRetries: number;\n timeoutRetries: number;\n /** Prior never-sent retries. Optional (default 0) — only the pre-send AGENT_OFFLINE\n * branch reads it, so callers that cannot hit that class may omit it. */\n neverSentRetries?: number;\n jitter: number;\n}): SelfhostedRetryDecision {\n const { opKind, error, drainingRetries, timeoutRetries, neverSentRetries = 0, jitter } = input;\n\n if (error.neverSent) {\n // Provably not executed (the request never reached the machine) → safe to\n // re-issue for ANY op kind. Bounded so a genuinely-offline machine surfaces\n // honestly rather than hanging the turn.\n if (neverSentRetries >= SELFHOSTED_NEVER_SENT_MAX_RETRIES) {\n return { action: \"fail\" };\n }\n return { action: \"retry\", delayMs: selfhostedRetryBackoffMs(neverSentRetries, jitter) };\n }\n\n if (error.draining) {\n // exec is patient (the flat 8-permit pool needs longer than 5s to free a slot);\n // every other op keeps the short budget so fs/git latency stays snappy.\n const maxDrainingRetries =\n opKind === \"exec\" ? SELFHOSTED_EXEC_DRAINING_MAX_RETRIES : SELFHOSTED_DRAINING_MAX_RETRIES;\n if (drainingRetries >= maxDrainingRetries) {\n return { action: \"fail\" };\n }\n return { action: \"retry\", delayMs: selfhostedRetryBackoffMs(drainingRetries, jitter) };\n }\n\n if (error.reason === \"agent_reconnecting\") {\n if (!SELFHOSTED_IDEMPOTENT_READONLY_OPS.has(opKind)) {\n // A timed-out mutation may already have executed on the machine — never\n // re-issue it (at-least-once). Surface the reconnecting error instead.\n return { action: \"fail\" };\n }\n if (timeoutRetries >= SELFHOSTED_TIMEOUT_MAX_RETRIES) {\n return { action: \"fail\" };\n }\n return { action: \"retry\", delayMs: selfhostedRetryBackoffMs(timeoutRetries, jitter) };\n }\n\n return { action: \"fail\" };\n}\n\n/**\n * The injected clock the retry loop drives — real in production, a deterministic\n * fake in tests. `jitter()` returns a full-jitter sample in `[0, 1)`.\n */\nexport interface SelfhostedRetryClock {\n sleep(ms: number): Promise<void>;\n jitter(): number;\n}\n\n/** The production clock: a real timer + `Math.random()` jitter. */\nexport const defaultSelfhostedRetryClock: SelfhostedRetryClock = {\n sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),\n jitter: () => Math.random(),\n};\n","// The in-band fault renderer for Connected Machine (selfhosted) control faults.\n//\n// The failure-visibility doctrine: every fault the model sees at the point of\n// impact must carry FOUR fields — what happened, which layer, what was preserved,\n// what to try — with a retry verdict that is actually correct for the fault class.\n//\n// Why this exists: a thrown `SelfhostedControlError` reaches the model already\n// wrapped by the SDK's generic tool-error function as\n// \"An error occurred while running the tool. Please try again. Error: …\". That\n// \"Please try again\" is actively wrong for a machine that is offline, a consent\n// that has not been granted, or a reply that was too large — the model retries a\n// fault that a retry cannot fix, and must parse prose to recover which layer\n// failed. The typed `SelfhostedControlError` flags carry the truth; this renders\n// them into the four structural fields so the capability tools can surface a\n// legible fault as their result instead of the misleading wrapper.\n\nimport { errorCodeToJSON, ErrorCode } from \"@opengeni/agent-proto\";\nimport { SelfhostedControlError } from \"./control-rpc\";\n\n/**\n * A stable, low-cardinality fault-class string for a `SelfhostedControlError` — the\n * out-of-band twin of the in-band renderer's class taxonomy (single-sourced here).\n * Used for the `machine.op.*` event class + the metrics label + the infra filter.\n */\nexport function selfhostedFaultClass(error: SelfhostedControlError): string {\n if (error.agentOffline || error.code === ErrorCode.ERROR_CODE_AGENT_OFFLINE) return \"offline\";\n if (error.draining) return \"draining\";\n if (error.payloadTooLarge || error.code === ErrorCode.ERROR_CODE_PAYLOAD_TOO_LARGE)\n return \"payload_too_large\";\n if (error.reason === \"agent_reconnecting\") return \"reconnecting\";\n if (error.reason === \"consent_required\") return \"consent\";\n if (error.osNotFound || error.code === ErrorCode.ERROR_CODE_NOT_FOUND) return \"not_found\";\n if (error.fenced || error.code === ErrorCode.ERROR_CODE_FENCED) return \"fenced\";\n switch (error.code) {\n case ErrorCode.ERROR_CODE_OS:\n return \"os\";\n case ErrorCode.ERROR_CODE_STREAM:\n return \"stream\";\n case ErrorCode.ERROR_CODE_PROTOCOL:\n return \"protocol\";\n default:\n return \"unspecified\";\n }\n}\n\n/**\n * The fault classes that count as an INFRASTRUCTURE fault (a `machine.op.failed`\n * event). A semantic miss the model asked about — a missing path (`not_found`), a\n * consent gate (`consent`), a nonzero exit (never a fault at all) — is an OUTCOME,\n * not an infra fault, and is DELIBERATELY excluded; `fenced` is a routing/session\n * condition, not a machine fault. (Doctrine two-planes / the team ruling.)\n */\nexport const SELFHOSTED_INFRASTRUCTURE_FAULT_CLASSES: ReadonlySet<string> = new Set([\n \"offline\",\n \"draining\",\n \"payload_too_large\",\n \"reconnecting\",\n \"os\",\n \"stream\",\n \"protocol\",\n]);\n\n/** The four mandatory field labels (exported so tests can assert their presence). */\nexport const FAULT_FIELD_WHAT_HAPPENED = \"What happened:\";\nexport const FAULT_FIELD_WHICH_LAYER = \"Which layer:\";\nexport const FAULT_FIELD_WHAT_PRESERVED = \"What was preserved:\";\nexport const FAULT_FIELD_WHAT_TO_TRY = \"What to try:\";\n\ninterface FaultFields {\n headline: string;\n happened: string;\n layer: string;\n preserved: string;\n tryNext: string;\n}\n\n/** Assemble the four-field block. The typed wire code is folded into \"what\n * happened\" so the model has both the plain language and the precise code. */\nfunction assemble(error: SelfhostedControlError, f: FaultFields): string {\n const code = errorCodeToJSON(error.code);\n return [\n `[connected machine] ${f.headline}`,\n `${FAULT_FIELD_WHAT_HAPPENED} ${f.happened} (control code ${code}).`,\n `${FAULT_FIELD_WHICH_LAYER} ${f.layer}`,\n `${FAULT_FIELD_WHAT_PRESERVED} ${f.preserved}`,\n `${FAULT_FIELD_WHAT_TO_TRY} ${f.tryNext}`,\n ].join(\"\\n\");\n}\n\n/**\n * Render a `SelfhostedControlError` into the doctrine's four in-band fields with a\n * correct retry verdict. The fault CLASS is read from the typed flags (never the\n * message prose), so each class gets the right \"which layer\" and \"what to try\":\n *\n * - PAYLOAD_TOO_LARGE → the command ran but its reply was too big to return; the\n * fix is to bound the output, not to retry.\n * - DRAINING → pre-admission backpressure; nothing ran; safe to retry shortly.\n * - CONSENT_REQUIRED → a machine-side consent gate; retrying cannot help.\n * - AGENT_OFFLINE → the machine link is down. If the transport KNOWS the request\n * never left (`neverSent`), nothing ran; otherwise the effect is ambiguous and\n * the model must check before re-running. Either way \"try again\" is wrong until\n * the machine reconnects.\n * - agent_reconnecting (TIMEOUT) → a transient link blip AFTER send: ambiguous, so\n * a state-changing command must be checked before re-running (at-least-once).\n * - NOT_FOUND → a command/filesystem miss, not a link fault.\n * - FENCED → the active machine session changed (a swap); re-run.\n * - default (OS/UNSUPPORTED/STREAM/PROTOCOL) → the command/op failed on the machine.\n */\nexport function renderSelfhostedFault(error: SelfhostedControlError): string {\n const detail = error.detail;\n\n if (error.payloadTooLarge || error.code === ErrorCode.ERROR_CODE_PAYLOAD_TOO_LARGE) {\n // The STREAMING retention-ceiling overflow (op-stream OP_OVERFLOW) is a\n // different truth than the legacy reply-size wall: the machine STOPPED the\n // command at the ceiling (it did not run to completion), and none of its\n // output was returned. Same correct next action, honest distinct fields.\n if (detail.failure_code === \"OP_OVERFLOW\") {\n const retained = detail.retained_bytes\n ? `after retaining ${detail.retained_bytes} bytes of output`\n : \"when its output exceeded what the machine can retain for delivery\";\n return assemble(error, {\n headline: \"the command produced more output than the machine link can deliver\",\n happened: `the machine stopped the command ${retained} — its output-retention ceiling was reached`,\n layer:\n \"the machine link's output-retention ceiling — the command was terminated at the ceiling, not by its own logic\",\n preserved:\n \"no output was returned, and the command did NOT run to completion — any side effects up to the stop point may have applied.\",\n tryNext:\n \"re-run with the output bounded: redirect to a file (`> /tmp/out.log 2>&1`) then read it \" +\n \"back in ranges/chunks, or slice it with `head -c` / `tail -c` / `head` / `tail`.\",\n });\n }\n const sizes =\n detail.encoded_bytes && detail.max_payload\n ? `its ${detail.encoded_bytes}-byte reply exceeded the machine link's ${detail.max_payload}-byte per-message limit`\n : \"its reply was larger than the machine link can deliver in one message\";\n return assemble(error, {\n headline: \"the command's output was too large to return\",\n happened: `the command ran on the machine, but ${sizes}`,\n layer: \"the machine link's per-message size limit — the command itself executed\",\n preserved: \"nothing was returned; the oversized reply was dropped whole.\",\n tryNext:\n \"re-run with the output bounded: redirect to a file (`> /tmp/out.log 2>&1`) then read it \" +\n \"back in ranges/chunks, or slice it with `head -c` / `tail -c` / `head` / `tail`.\",\n });\n }\n\n if (error.draining) {\n const retried = detail.retries ? ` after ${detail.retries} retries` : \"\";\n return assemble(error, {\n headline: \"the machine is at its concurrent-work capacity\",\n happened: `the machine rejected this command at its admission gate${retried} because its work pool is full`,\n layer: \"the machine's host-work admission — the machine is online, just saturated\",\n preserved: \"nothing ran; the command was rejected before it started.\",\n tryNext: \"try again shortly, or reduce the number of commands you run in parallel.\",\n });\n }\n\n if (error.reason === \"consent_required\") {\n return assemble(error, {\n headline: \"the operation needs consent that has not been granted\",\n happened: \"the machine rejected the operation because the required consent is not granted\",\n layer: \"the machine's consent gate — not your command\",\n preserved: \"nothing ran; the operation was rejected.\",\n tryNext:\n \"the consent must be granted on the machine itself; retrying will keep failing until it is.\",\n });\n }\n\n if (error.agentOffline || error.code === ErrorCode.ERROR_CODE_AGENT_OFFLINE) {\n const preserved = error.neverSent\n ? \"nothing ran; the command never reached the machine.\"\n : \"unknown — the link dropped and the command may or may not have run.\";\n const tryNext = error.neverSent\n ? \"the machine appears offline; check that it is powered on and connected. Retrying will not help until it reconnects.\"\n : \"check the machine, and check whether the command already took effect before re-running it.\";\n return assemble(error, {\n headline: \"the machine is unreachable\",\n happened: \"the enrolled machine did not respond; it appears offline\",\n layer: \"the machine link — the machine itself, not your command\",\n preserved,\n tryNext,\n });\n }\n\n if (error.reason === \"agent_reconnecting\") {\n return assemble(error, {\n headline: \"the machine link blipped\",\n happened: \"the machine did not respond in time; the link may be reconnecting\",\n layer: \"the machine link (transport) — not your command\",\n preserved: \"unknown — the command may or may not have run (its reply was lost).\",\n tryNext:\n \"wait a moment and try again; if this was a state-changing command, check whether it \" +\n \"already took effect before re-running it.\",\n });\n }\n\n if (error.osNotFound || error.code === ErrorCode.ERROR_CODE_NOT_FOUND) {\n return assemble(error, {\n headline: \"the path or reference was not found on the machine\",\n happened: `the machine reported: ${error.message}`,\n layer: \"the command / filesystem on the machine — not the machine link\",\n preserved: \"not applicable; the operation did not apply.\",\n tryNext: \"check the path or reference exists on the machine, then re-run.\",\n });\n }\n\n if (error.fenced || error.code === ErrorCode.ERROR_CODE_FENCED) {\n return assemble(error, {\n headline: \"the active machine session changed\",\n happened: \"the machine session was swapped underneath the command\",\n layer: \"the session-routing layer — not your command\",\n preserved: \"nothing ran on this session.\",\n tryNext: \"re-run the command; it will target the machine's current session.\",\n });\n }\n\n // OS / UNSUPPORTED / STREAM / PROTOCOL / UNSPECIFIED — a command/op-level failure.\n return assemble(error, {\n headline: \"the command failed on the machine\",\n happened: `the machine reported: ${error.message}`,\n layer: \"the command / operating system on the machine\",\n preserved: \"not applicable; the command did not complete successfully.\",\n tryNext: \"read the message above and adjust the command; a blind retry is unlikely to help.\",\n });\n}\n","// Durable op-identity correlation (op-stream ruling B1): the DURABLE op id a\n// sandbox transport op carries is `{sdk_tool_call_id}:{ordinal}` — minted ABOVE\n// the transport, at the semantic layer. The tool call id lives in the model's\n// function_call (persisted run history), so a re-dispatched turn re-executes the\n// SAME function_call with the SAME call id, and the transport's idempotent\n// OpStart turns an at-least-once re-execution into an ATTACH instead of a\n// re-run. The ordinal is the deterministic position of the physical sub-op\n// inside one tool invocation (a tool that performs read→write→rm mints :0, :1,\n// :2), so a re-executed invocation re-mints identical ids.\n//\n// The correlation rides an AsyncLocalStorage bound around the SDK tool's\n// `execute` (see `withExecOpCorrelation` in the runtime barrel): the SDK's tool\n// machinery passes `details.toolCall` (with `callId`) into every function-tool\n// invocation, and the shell capability's `configureTools` hook lets us wrap\n// exec_command without touching the SDK. Per-async-chain storage keeps PARALLEL\n// tool calls correctly separated.\n//\n// This module is deliberately dependency-free (node:async_hooks only) so the\n// agent-loop-free sandbox leaf may import it: the leaf READS the context; only\n// the runtime barrel (which owns the SDK imports) BINDS it.\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\n\ninterface ToolCallCorrelation {\n /** The sanitized sdk tool call id (a legal NATS subject-token fragment). */\n callId: string;\n /** The next sub-op ordinal within this tool invocation (mutable). */\n ordinal: number;\n}\n\nconst storage = new AsyncLocalStorage<ToolCallCorrelation>();\n\n/**\n * Sanitize a tool call id into a legal NATS subject TOKEN fragment. The op id\n * is interpolated into the per-op frame subject, whose tokens must not contain\n * whitespace/control characters or the subject-structure characters (`.`,\n * `*`, `>`); the runner refuses illegal ids loudly. The mapping is INJECTIVE\n * (each disallowed char becomes `_<hex>_`), so two distinct call ids can never\n * collide into one op id — a collision would merge two different execs through\n * the idempotent-OpStart dedup and return the wrong result.\n */\nexport function sanitizeOpIdToken(raw: string): string {\n return raw.replace(/[^A-Za-z0-9_-]/g, (c) => `_${c.charCodeAt(0).toString(16)}_`);\n}\n\n/**\n * Bind a tool-call correlation context around `fn` (the tool's execute). Every\n * durable op id minted inside — however deep in the transport — is\n * `{callId}:{ordinal}` with ordinals starting at 0 per invocation.\n */\nexport function runWithToolCallCorrelation<T>(callId: string, fn: () => T): T {\n return storage.run({ callId: sanitizeOpIdToken(callId), ordinal: 0 }, fn);\n}\n\n/**\n * Mint the next durable op id for the current tool invocation, or null when no\n * correlation context is bound (a non-tool caller, e.g. Channel-A structural\n * exec). Callers fall back to a random unique id — safe (never collides, never\n * wrongly dedups), merely not stable across a turn re-dispatch, which degrades\n * that one op to today's at-least-once semantics.\n */\nexport function nextDurableOpId(): string | null {\n const context = storage.getStore();\n if (!context) {\n return null;\n }\n const ordinal = context.ordinal;\n context.ordinal += 1;\n return `${context.callId}:${ordinal}`;\n}\n","// The op-stream EXEC client (op-stream protocol v1.1, server half; PROTOCOL.md\n// + ENGINE-INTEGRATION.md step 6 in .agent/).\n//\n// Replaces the legacy monolithic exec request/reply with sequenced, acked,\n// credit-flowed frames when the runner advertises `Capabilities.op_stream` AND\n// the server flag is on. What it buys, in order of importance:\n//\n// * ATTACH-NOT-RERUN (B1/B2): the op id is durable (`{tool_call_id}:{ordinal}`)\n// and OpStart is idempotent by it — a re-dispatched turn that re-executes the\n// same function_call COLLECTS the already-running/completed op instead of\n// re-running the command. The at-least-once re-run hazard dies here.\n// * No reply-size wall: output streams in ≤128 KiB frames; the runner retains\n// ring→spool for replay, and a too-big stream fails TYPED (OP_OVERFLOW with\n// exact counters), never silently truncated.\n// * Blip tolerance: a connection loss detaches, never kills; frames resume via\n// OpAttach replay (gap-triggered attach is a ROUTINE heal, incl. seq-0 loss).\n//\n// ACK POLICY (design delta Δ2, DESIGN-OPSTREAM-CLIENT.md): mid-op acks are\n// CREDIT-ONLY — `OpAck{acked_seq: 0, credit_bytes: received_total + window}`.\n// The runner FREES retained frames at acked_seq, and a re-dispatched consumer\n// must reassemble from seq 0 (its predecessor's buffered bytes died with it),\n// so no mid-op acked_seq > 0 is ever durably backed. Credit is an ABSOLUTE\n// window replacement on the wire, so growing it keeps the child flowing while\n// the runner retains everything (bounded by its ring+spool quotas — the honest\n// output ceiling, typed when hit). The acked frontier advances exactly once,\n// at the FINAL ack, after the consumed result is durable (the hard gate's\n// ordering: result durable → journal persist → wire final ack — see\n// `finalizeSettledOps`).\n//\n// Everything above the transport is unchanged: the caller builds the same\n// `ExecRequest`, receives the same `ExecResponse` shape, and every failure is a\n// `SelfhostedControlError` in the existing taxonomy so the fault renderer and\n// the op observer behave identically across the transport swap.\n\nimport { blake3 } from \"@noble/hashes/blake3\";\nimport { bytesToHex } from \"@noble/hashes/utils\";\nimport {\n ControlRequest,\n ErrorCode,\n OpAck,\n OpChannel,\n OpFrame,\n OpLostReason,\n OpState,\n type ExecRequest,\n type ExecResponse,\n type OpExit,\n type OpStatus,\n} from \"@opengeni/agent-proto\";\nimport {\n agentErrorToControlError,\n SelfhostedControlError,\n timeoutAgentError,\n type ControlRpc,\n} from \"./control-rpc\";\nimport { selfhostedRetryBackoffMs, type SelfhostedRetryClock } from \"./retry-policy\";\nimport {\n opAckSubject,\n opFrameSubject,\n OpStreamUnavailableError,\n type OpStreamSubscription,\n type OpStreamTransport,\n} from \"./op-transport\";\n\n/** Initial send-credit window (bytes) when the caller does not size it. Matches\n * the wire default OpStart advertises (~4 MiB). */\nexport const OP_STREAM_DEFAULT_WINDOW_BYTES = 4 * 1024 * 1024;\n/** Cumulative-ack repetition cadence while an op is live (ruling M1: acks are\n * best-effort and healed by repetition). */\nexport const OP_STREAM_ACK_INTERVAL_MS = 5_000;\n/** Frame-silence threshold before the client starts probing with OpQuery. The\n * runner emits Progress every 5s while an op is alive and quiet, so 30s of\n * TOTAL silence means frames are not reaching us (or the op is gone). */\nexport const OP_STREAM_SILENCE_TIMEOUT_MS = 30_000;\n/** How long a silent op is held open across a machine reconnect window before\n * the client fails it typed (PROTOCOL liveness rule: hold ≤120s, then only a\n * definitive answer fails the op). */\nexport const OP_STREAM_RECONNECT_HOLD_MS = 120_000;\n/** Bound on stashed out-of-order frames per op (each ≤128 KiB payload). A gap\n * that outgrows this is healed by attach-replay, not by buffering forever. */\nconst OP_STREAM_MAX_STASHED_FRAMES = 4_096;\n/** OpStart DRAINING retry budget — mirrors the legacy exec's patient budget\n * (retry-policy.ts): op start is not latency-critical and a saturated machine\n * should queue, not fail. OpStart is idempotent by op id, so timeout blips are\n * also safe to re-issue (unlike legacy exec) — same small bounded budget. */\nconst OP_START_DRAINING_MAX_RETRIES = 10;\nconst OP_START_BLIP_MAX_RETRIES = 3;\n\n/**\n * The durable-resume journal the worker adapts onto Temporal (design delta Δ1:\n * the attach generation is `Info.currentAttemptScheduledTimestampMs` — strictly\n * monotonic across worker-death redispatches, which `Info.attempt` is NOT under\n * `maximumAttempts: 1`). `persistSettled` folds the op's settled frontier into\n * the activity heartbeat details and MUST complete before the wire final ack\n * (the durable-before-wire-ack gate); the default no-journal client (tests,\n * non-activity callers) uses generation \"1\" and skips persistence.\n */\nexport interface OpStreamJournal {\n /** The consumer's attach generation (u64 decimal string). */\n attachGeneration(): string;\n /** Durably record `opId` as settled at `exitSeq` BEFORE its final ack. */\n persistSettled(opId: string, exitSeq: string): void | Promise<void>;\n}\n\nexport interface OpStreamExecClientDeps {\n workspaceId: string;\n agentId: string;\n /** The lease/active epoch every ControlRequest is fenced under. */\n epoch: number;\n /** The rpc request/reply seam (OpStart/OpQuery/OpAttach ride here). */\n controlRpc: ControlRpc;\n /** The rpc subject (`agent.<ws>.<id>.rpc`). */\n rpcSubject: string;\n /** The frame/ack seam (subscribe + publish). */\n transport: OpStreamTransport;\n journal?: OpStreamJournal;\n windowBytes?: number;\n /** Control-op round-trip timeout for OpStart/OpQuery/OpAttach (the SHORT\n * control budget, not the exec deadline). */\n controlTimeoutMs: number;\n /** The retry clock (sleep + jitter), injected for deterministic tests. */\n retryClock: SelfhostedRetryClock;\n ackIntervalMs?: number;\n silenceTimeoutMs?: number;\n reconnectHoldMs?: number;\n}\n\n/** A completed op-stream exec: the legacy-shaped response plus the healing\n * telemetry the session folds into its op observation. */\nexport interface OpStreamExecOutcome {\n response: ExecResponse;\n /** Attach/query heals that occurred after streaming began (gap replays,\n * silence probes that re-attached). >0 marks the op `healed`. */\n heals: number;\n /** OpStart-level retries (draining/blip) before the op was accepted. */\n startRetries: number;\n /** Total reassembled Data payload bytes (the observer's replyBytes). */\n replyBytes: number;\n}\n\n/** One op settled but not yet final-acked (awaiting the turn's durable point). */\ninterface SettledOp {\n opId: string;\n exitSeq: string;\n generation: string;\n}\n\nconst OP_CHANNEL_NAMES: Partial<Record<OpChannel, \"stdout\" | \"stderr\">> = {\n [OpChannel.OP_CHANNEL_STDOUT]: \"stdout\",\n [OpChannel.OP_CHANNEL_STDERR]: \"stderr\",\n};\n\n/**\n * The per-session op-stream exec client. One instance per `SelfhostedSession`;\n * `exec()` runs one op end-to-end; `finalizeSettledOps()` is the turn-end hook\n * that advances the acked frontier durably (journal) and then on the wire.\n */\nexport class OpStreamExecClient {\n private readonly deps: OpStreamExecClientDeps;\n private readonly settled: SettledOp[] = [];\n private readonly inFlight = new Set<string>();\n\n constructor(deps: OpStreamExecClientDeps) {\n this.deps = deps;\n }\n\n private generation(): string {\n return this.deps.journal?.attachGeneration() ?? \"1\";\n }\n\n /**\n * Cancel an exec by its durable op id. OpCancel is idempotent and also acts\n * as a cancel-before-start tombstone, so calling this while OpStart is still\n * racing is safe: the runner either kills the accepted process tree or\n * refuses the later start without spawning it.\n */\n async cancel(opId: string): Promise<void> {\n const response = await this.deps.controlRpc.request(\n this.deps.rpcSubject,\n {\n requestId: crypto.randomUUID(),\n epoch: this.deps.epoch,\n op: { $case: \"opCancel\", opCancel: { opId } },\n },\n { timeoutMs: this.deps.controlTimeoutMs },\n );\n if (response.error || !response.result) {\n throw agentErrorToControlError(\n response.error ?? {\n code: ErrorCode.ERROR_CODE_PROTOCOL,\n message: \"op-stream cancel returned an empty result\",\n retryable: false,\n detail: {},\n },\n );\n }\n if (response.result.$case !== \"opStatus\") {\n throw protocolError(`op-stream cancel: unexpected result ${response.result.$case}`);\n }\n }\n\n /**\n * Run one exec over the op stream. `opId` is the durable id (B1) — a re-issue\n * with the same id attaches instead of re-running. `deadlineMs` is the exec\n * process budget (relative); the runner's enforcement is authoritative.\n * `wallMs` is the client-side give-up wall (deadline + reply grace).\n */\n async exec(\n opId: string,\n exec: ExecRequest,\n deadlineMs: number,\n wallMs: number,\n ): Promise<OpStreamExecOutcome> {\n if (this.inFlight.has(opId)) {\n throw new SelfhostedControlError({\n message: `op-stream exec: duplicate concurrent op id ${opId}`,\n code: ErrorCode.ERROR_CODE_PROTOCOL,\n reason: null,\n retryable: false,\n });\n }\n this.inFlight.add(opId);\n try {\n const consumer = new OpConsumer(this.deps, opId, this.generation());\n try {\n const outcome = await consumer.run(exec, deadlineMs, wallMs);\n this.settled.push({ opId, exitSeq: outcome.exitSeq, generation: consumer.generation });\n return outcome.outcome;\n } finally {\n consumer.teardown();\n }\n } finally {\n this.inFlight.delete(opId);\n }\n }\n\n /**\n * The turn-end durability hook (the hard gate's ordering): for every op whose\n * result the turn has durably consumed — (1) already true when this runs —\n * (2) persist the settled frontier to the journal, then (3) publish the wire\n * final ack (`acked_seq = exit_seq, final = true`), which licenses the runner\n * to GC the op. A kill between (2) and (3) is safe: the re-dispatched turn\n * does not re-execute a durably-recorded call, and the runner's retention TTL\n * reaps the never-final-acked op — no loss, bounded residue. Publish failures\n * are swallowed for the same reason.\n */\n async finalizeSettledOps(): Promise<void> {\n const ackSubject = opAckSubject(this.deps.workspaceId, this.deps.agentId);\n while (this.settled.length > 0) {\n // Non-null: length checked above (single-threaded event loop).\n const op = this.settled.shift() as SettledOp;\n await this.deps.journal?.persistSettled(op.opId, op.exitSeq);\n const ack = OpAck.encode({\n opId: op.opId,\n ackedSeq: op.exitSeq,\n creditBytes: \"0\",\n final: true,\n attachGeneration: op.generation,\n }).finish();\n try {\n await this.deps.transport.publish(ackSubject, ack);\n } catch {\n // Best-effort: the runner's retention TTL owns the fallback.\n }\n }\n }\n}\n\n/** Internal per-op consumer: subscription, reassembly, flow, liveness. */\nclass OpConsumer {\n private readonly deps: OpStreamExecClientDeps;\n private readonly opId: string;\n readonly generation: string;\n private readonly windowBytes: number;\n\n /** Highest contiguously APPLIED seq (frames start at 1; 0 = none yet). */\n private lastApplied = 0n;\n private readonly stash = new Map<bigint, OpFrame>();\n private readonly chunks: { stdout: Uint8Array[]; stderr: Uint8Array[] } = {\n stdout: [],\n stderr: [],\n };\n private receivedPayloadBytes = 0n;\n private creditAtLastAck = 0n;\n private exit: OpExit | undefined;\n private exitSeq: bigint | undefined;\n private heals = 0;\n private lastFrameAt: number;\n private silenceSince: number | undefined;\n private attachInFlight = false;\n private subscription: OpStreamSubscription | undefined;\n private ackTimer: ReturnType<typeof setInterval> | undefined;\n private settleResolve: (() => void) | undefined;\n private settleReject: ((error: unknown) => void) | undefined;\n private torn = false;\n\n constructor(deps: OpStreamExecClientDeps, opId: string, generation: string) {\n this.deps = deps;\n this.opId = opId;\n this.generation = generation;\n this.windowBytes = deps.windowBytes ?? OP_STREAM_DEFAULT_WINDOW_BYTES;\n this.lastFrameAt = Date.now();\n }\n\n private get ackIntervalMs(): number {\n return this.deps.ackIntervalMs ?? OP_STREAM_ACK_INTERVAL_MS;\n }\n private get silenceTimeoutMs(): number {\n return this.deps.silenceTimeoutMs ?? OP_STREAM_SILENCE_TIMEOUT_MS;\n }\n private get reconnectHoldMs(): number {\n return this.deps.reconnectHoldMs ?? OP_STREAM_RECONNECT_HOLD_MS;\n }\n\n teardown(): void {\n this.torn = true;\n if (this.ackTimer) {\n clearInterval(this.ackTimer);\n this.ackTimer = undefined;\n }\n this.subscription?.unsubscribe();\n this.subscription = undefined;\n }\n\n async run(\n exec: ExecRequest,\n deadlineMs: number,\n wallMs: number,\n ): Promise<{\n outcome: OpStreamExecOutcome;\n exitSeq: string;\n }> {\n // Arm the settle promise FIRST: frames can start applying the moment the\n // attach below returns (replay is asynchronous), and a completion that\n // fires before the resolver exists would strand the op on its wall.\n const settled = new Promise<void>((resolve, reject) => {\n this.settleResolve = resolve;\n this.settleReject = reject;\n });\n\n // Subscription BEFORE OpStart (protocol invariant): no frame can be\n // published before the consumer exists on a healthy path.\n this.subscription = await this.deps.transport.subscribe(\n opFrameSubject(this.deps.workspaceId, this.deps.agentId, this.opId),\n (payload) => this.onFramePayload(payload),\n );\n\n const startRetries = await this.startOp(exec, deadlineMs);\n\n // The universal begin (B2): attach from our contiguous frontier under the\n // initial window — for a FRESH op that is seq 0 (replay nothing, start live\n // flow); for a KNOWN op (re-dispatch) it replays everything we do not hold.\n await this.attach(this.windowBytes);\n\n // Cumulative-ack repetition (M1) — the periodic leg.\n this.ackTimer = setInterval(() => {\n void this.sendAck();\n }, this.ackIntervalMs);\n const liveness = this.watchLiveness(wallMs);\n try {\n await Promise.race([settled, liveness.wall]);\n } finally {\n liveness.stop();\n }\n\n // Settled: the exit frame and every frame before it are applied.\n const exit = this.exit as OpExit;\n const exitSeq = this.exitSeq as bigint;\n this.verifyByteExact(exit);\n if (exit.failureCode) {\n throw runnerFailureToControlError(exit);\n }\n const stdout = concatChunks(this.chunks.stdout);\n const stderr = concatChunks(this.chunks.stderr);\n return {\n outcome: {\n response: {\n exitCode: exit.exitCode,\n stdout,\n stderr,\n timedOut: exit.timedOut,\n durationMs: exit.durationMs,\n },\n heals: this.heals,\n startRetries,\n replyBytes: stdout.byteLength + stderr.byteLength,\n },\n exitSeq: exitSeq.toString(),\n };\n }\n\n /** OpStart with the patient DRAINING budget and a small blip budget. OpStart\n * is IDEMPOTENT BY OP ID (the request id), so a timed-out/never-sent start\n * is safe to re-issue even though exec mutates — the runner either never saw\n * it or answers the SAME op. The stable request id is what makes that true. */\n private async startOp(exec: ExecRequest, deadlineMs: number): Promise<number> {\n let drainingRetries = 0;\n let blipRetries = 0;\n for (;;) {\n try {\n const result = await this.controlOp(\n {\n $case: \"opStart\",\n opStart: {\n op: { $case: \"exec\", exec },\n windowBytes: String(this.windowBytes),\n // Absolute epoch deadline (the runner's clock decides the actual\n // budget; host clock skew shifts it — a known wire caveat).\n deadlineMs: deadlineMs > 0 ? String(Date.now() + deadlineMs) : \"0\",\n originId: this.deps.rpcSubject,\n },\n },\n this.opId,\n );\n if (result.$case !== \"opStart\") {\n throw protocolError(`op-stream start: unexpected result ${result.$case}`);\n }\n const status = result.opStart.status;\n if (!result.opStart.accepted) {\n throw this.refusedStart(status);\n }\n if (status?.state === OpState.OP_STATE_LOST) {\n throw lostToControlError(status);\n }\n return drainingRetries + blipRetries;\n } catch (error) {\n if (!(error instanceof SelfhostedControlError)) {\n throw error;\n }\n // A PROTOCOL/UNSUPPORTED refusal of the START ITSELF means the runner\n // does not speak op-stream (a capability/downgrade race — M8 latches\n // the transport per-op, and the legacy exec is the permanent fallback\n // wire form). The op provably never started, so falling back is safe.\n if (\n error.code === ErrorCode.ERROR_CODE_PROTOCOL ||\n error.code === ErrorCode.ERROR_CODE_UNSUPPORTED\n ) {\n throw new OpStreamUnavailableError(\n `the runner refused OpStart (${error.message}); falling back to the legacy exec`,\n );\n }\n const blip = error.reason === \"agent_reconnecting\" || error.neverSent;\n if (error.draining && drainingRetries < OP_START_DRAINING_MAX_RETRIES) {\n await this.deps.retryClock.sleep(\n selfhostedRetryBackoffMs(drainingRetries, this.deps.retryClock.jitter()),\n );\n drainingRetries += 1;\n continue;\n }\n if (blip && blipRetries < OP_START_BLIP_MAX_RETRIES) {\n await this.deps.retryClock.sleep(\n selfhostedRetryBackoffMs(blipRetries, this.deps.retryClock.jitter()),\n );\n blipRetries += 1;\n continue;\n }\n throw error;\n }\n }\n }\n\n private refusedStart(status: OpStatus | undefined): SelfhostedControlError {\n if (status?.exit?.cancelled) {\n return new SelfhostedControlError({\n message: \"The command was cancelled before the machine admitted it.\",\n code: ErrorCode.ERROR_CODE_TIMEOUT,\n reason: null,\n retryable: false,\n detail: { cancelled: \"true\" },\n });\n }\n if (status?.state === OpState.OP_STATE_LOST) {\n return lostToControlError(status);\n }\n return protocolError(\"op-stream start: the runner refused the op without a typed reason\");\n }\n\n /** One control op on the rpc subject; throws the mapped\n * `SelfhostedControlError` on any AgentError. `requestId` is overridable\n * because OpStart's REQUEST ID IS THE OP ID (its idempotency key) and must\n * be STABLE across retries — every other op uses a fresh UUID per attempt. */\n private async controlOp(\n op: NonNullable<ControlRequest[\"op\"]>,\n requestId: string = crypto.randomUUID(),\n ) {\n const res = await this.deps.controlRpc.request(\n this.deps.rpcSubject,\n { requestId, epoch: this.deps.epoch, op },\n { timeoutMs: this.deps.controlTimeoutMs },\n );\n if (res.error || !res.result) {\n throw agentErrorToControlError(\n res.error ?? {\n code: ErrorCode.ERROR_CODE_PROTOCOL,\n message: \"agent returned an empty control response\",\n retryable: false,\n detail: {},\n },\n );\n }\n return res.result;\n }\n\n /** OpAttach from the contiguous frontier. `windowBytes` sizes the fresh\n * replay window; 0 = reuse the OpStart grant (the gap-heal path). */\n private async attach(windowBytes: number): Promise<OpStatus> {\n const result = await this.controlOp({\n $case: \"opAttach\",\n opAttach: {\n opId: this.opId,\n fromSeq: this.lastApplied.toString(),\n attachGeneration: this.generation,\n windowBytes: String(windowBytes),\n },\n });\n if (result.$case !== \"opStatus\") {\n throw protocolError(`op-stream attach: unexpected result ${result.$case}`);\n }\n if (result.opStatus.state === OpState.OP_STATE_LOST) {\n throw lostToControlError(result.opStatus);\n }\n return result.opStatus;\n }\n\n /** Gap/silence heal: one re-attach in flight at a time; each success counts\n * as a heal (the observer's `healed` breadcrumb). Failures are left to the\n * liveness watcher — a dead link fails typed there, not here. */\n private requestAttachHeal(): void {\n if (this.attachInFlight || this.torn) {\n return;\n }\n this.attachInFlight = true;\n void this.attach(0)\n .then(() => {\n this.heals += 1;\n })\n .catch((error) => {\n if (error instanceof SelfhostedControlError && !error.retryable && !error.agentOffline) {\n this.settleReject?.(error);\n }\n })\n .finally(() => {\n this.attachInFlight = false;\n });\n }\n\n private onFramePayload(payload: Uint8Array): void {\n let frame: OpFrame;\n try {\n frame = OpFrame.decode(payload);\n } catch {\n // A torn frame never kills the subscription; the seq gap it leaves is\n // healed by attach-replay.\n return;\n }\n if (frame.opId !== this.opId) {\n return;\n }\n this.lastFrameAt = Date.now();\n this.silenceSince = undefined;\n const seq = BigInt(frame.seq);\n if (seq <= this.lastApplied) {\n return; // Duplicate (re-delivery / replay overlap) — reassembly is seq-idempotent.\n }\n if (seq !== this.lastApplied + 1n) {\n // Out of order: stash and ask for the gap. Replay heals from the frontier,\n // so an overgrown stash is dropped, not grown without bound.\n if (this.stash.size < OP_STREAM_MAX_STASHED_FRAMES) {\n this.stash.set(seq, frame);\n }\n this.requestAttachHeal();\n return;\n }\n this.applyFrame(frame);\n // Drain any stashed continuation.\n for (;;) {\n const next = this.stash.get(this.lastApplied + 1n);\n if (!next) {\n break;\n }\n this.stash.delete(this.lastApplied + 1n);\n this.applyFrame(next);\n }\n this.maybeSettle();\n this.maybeGrantCredit();\n }\n\n private applyFrame(frame: OpFrame): void {\n this.lastApplied = BigInt(frame.seq);\n const body = frame.body;\n if (!body) {\n return;\n }\n switch (body.$case) {\n case \"data\": {\n const channel = OP_CHANNEL_NAMES[body.data.channel];\n if (channel) {\n this.chunks[channel].push(body.data.bytes);\n }\n this.receivedPayloadBytes += BigInt(body.data.bytes.byteLength);\n break;\n }\n case \"progress\":\n // A liveness tick; echo our cumulative ack (M1's on-progress leg).\n void this.sendAck();\n break;\n case \"exit\":\n this.exit = body.exit;\n this.exitSeq = BigInt(frame.seq);\n break;\n }\n }\n\n private maybeSettle(): void {\n if (this.exitSeq !== undefined && this.lastApplied >= this.exitSeq) {\n this.settleResolve?.();\n }\n }\n\n /** Prompt credit replenishment: the periodic ack alone would stall a fast\n * child for up to the ack interval each window; grant as soon as half the\n * window has been consumed since the last grant. */\n private maybeGrantCredit(): void {\n if (this.receivedPayloadBytes - this.creditAtLastAck >= BigInt(this.windowBytes) / 2n) {\n void this.sendAck();\n }\n }\n\n /** The mid-op cumulative ack: CREDIT-ONLY (Δ2 — acked_seq stays 0 so the\n * runner retains every frame for a possible successor consumer; the credit\n * is an absolute replacement sized to keep ~one window of live headroom). */\n private async sendAck(): Promise<void> {\n if (this.torn) {\n return;\n }\n this.creditAtLastAck = this.receivedPayloadBytes;\n const ack = OpAck.encode({\n opId: this.opId,\n ackedSeq: \"0\",\n creditBytes: (this.receivedPayloadBytes + BigInt(this.windowBytes)).toString(),\n final: false,\n attachGeneration: this.generation,\n }).finish();\n try {\n await this.deps.transport.publish(\n opAckSubject(this.deps.workspaceId, this.deps.agentId),\n ack,\n );\n } catch {\n // Acks are best-effort and healed by repetition (M1).\n }\n }\n\n /**\n * The liveness watcher: probes a silent op with OpQuery, re-attaches when the\n * runner is ahead of us (frames lost in flight), holds a quiet-but-alive op\n * open through the reconnect window, and enforces the client-side wall.\n * Resolves only by rejection (typed failure) or by `stop()` at settle.\n */\n private watchLiveness(wallMs: number): { wall: Promise<never>; stop: () => void } {\n let stopped = false;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const wall = new Promise<never>((_, reject) => {\n const startedAt = Date.now();\n const tick = async () => {\n if (stopped) {\n return;\n }\n try {\n if (Date.now() - startedAt >= wallMs) {\n // The runner enforces the exec deadline and emits Exit{timed_out};\n // reaching OUR wall means even that terminal frame never arrived —\n // the same ambiguity as a legacy reply timeout, surfaced the same.\n reject(agentErrorToControlError(timeoutAgentError()));\n return;\n }\n if (Date.now() - this.lastFrameAt >= this.silenceTimeoutMs) {\n await this.probeSilence(reject);\n }\n } catch (error) {\n reject(error);\n return;\n }\n timer = setTimeout(tick, Math.min(this.silenceTimeoutMs / 3, 2_500));\n };\n timer = setTimeout(tick, Math.min(this.silenceTimeoutMs / 3, 2_500));\n });\n return {\n wall,\n stop: () => {\n stopped = true;\n if (timer) {\n clearTimeout(timer);\n }\n },\n };\n }\n\n /** One silence probe: OpQuery the op; a definitive answer acts, an offline /\n * blip answer holds through the reconnect window, then fails typed. */\n private async probeSilence(reject: (error: unknown) => void): Promise<void> {\n this.silenceSince ??= Date.now();\n try {\n const result = await this.controlOp({ $case: \"opQuery\", opQuery: { opId: this.opId } });\n if (result.$case !== \"opStatus\") {\n throw protocolError(`op-stream query: unexpected result ${result.$case}`);\n }\n const status = result.opStatus;\n if (status.state === OpState.OP_STATE_LOST) {\n reject(lostToControlError(status));\n return;\n }\n // Alive on the runner. If it is ahead of our frontier, frames were lost\n // in flight — re-attach to replay them (this also restores live flow\n // after a reconnect). A quiet-but-current op just keeps holding.\n if (BigInt(status.nextSeq) > this.lastApplied + 1n) {\n this.requestAttachHeal();\n }\n } catch (error) {\n if (!(error instanceof SelfhostedControlError)) {\n throw error;\n }\n const transient =\n error.agentOffline || error.reason === \"agent_reconnecting\" || error.draining;\n if (!transient) {\n throw error;\n }\n const heldFor = Date.now() - (this.silenceSince ?? Date.now());\n if (heldFor >= this.reconnectHoldMs) {\n // The hold window expired without the machine coming back — surface\n // the LAST probe's typed error (offline/reconnecting), same taxonomy\n // as the legacy path.\n reject(error);\n }\n // Otherwise: keep holding — op ⊥ connection (the runner keeps the child\n // running and retains its output through the blip).\n }\n }\n\n /** Byte-exactness proof: totals AND blake3 digests of the reassembled\n * channels must match the runner's Exit record exactly. */\n private verifyByteExact(exit: OpExit): void {\n for (const channel of [\"stdout\", \"stderr\"] as const) {\n const bytes = concatChunks(this.chunks[channel]);\n const declaredTotal = exit.totals[channel];\n if (declaredTotal !== undefined && BigInt(declaredTotal) !== BigInt(bytes.byteLength)) {\n throw protocolError(\n `op-stream reassembly: ${channel} total mismatch (got ${bytes.byteLength}, ` +\n `runner declared ${declaredTotal})`,\n );\n }\n const declaredDigest = exit.digests[channel];\n if (declaredDigest) {\n const digest = bytesToHex(blake3(bytes));\n if (digest !== declaredDigest) {\n throw protocolError(\n `op-stream reassembly: ${channel} digest mismatch (got ${digest}, ` +\n `runner declared ${declaredDigest})`,\n );\n }\n }\n }\n }\n}\n\nfunction concatChunks(chunks: Uint8Array[]): Uint8Array {\n const total = chunks.reduce((sum, chunk) => sum + chunk.byteLength, 0);\n const out = new Uint8Array(total);\n let offset = 0;\n for (const chunk of chunks) {\n out.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return out;\n}\n\nfunction protocolError(message: string): SelfhostedControlError {\n return new SelfhostedControlError({\n message,\n code: ErrorCode.ERROR_CODE_PROTOCOL,\n reason: null,\n retryable: false,\n });\n}\n\n/** A definitive `lost` status → a typed op-level failure. The result was\n * bounded-retention collateral (LRU eviction / a runner restart predating the\n * persistence milestone) — honest, never silent. */\nfunction lostToControlError(status: OpStatus): SelfhostedControlError {\n const reason =\n status.lostReason === OpLostReason.OP_LOST_REASON_EVICTED\n ? \"its retained result was evicted before collection\"\n : status.lostReason === OpLostReason.OP_LOST_REASON_AGENT_RESTARTED\n ? \"the machine agent restarted and the op did not survive\"\n : \"the runner reported it lost\";\n return new SelfhostedControlError({\n message:\n `The command's result is no longer available on the machine (${reason}). ` +\n \"Check whether its effects already took place before re-running it.\",\n code: ErrorCode.ERROR_CODE_STREAM,\n reason: null,\n retryable: false,\n detail: { lost_reason: String(status.lostReason) },\n });\n}\n\n/**\n * A runner-typed terminal failure (OpExit.failure_code — OP_OVERFLOW /\n * OP_SPOOL_IO / OP_PIPE_IO; never an exit-code sentinel). OP_OVERFLOW maps to\n * the PAYLOAD_TOO_LARGE taxonomy: the semantics differ (retention quota vs\n * reply size) but the model's correct next action is identical — bound the\n * output, redirect to a file, read it back in ranges — so it gets the same\n * actionable rendering, with the runner's exact counters in the detail.\n */\nfunction runnerFailureToControlError(exit: OpExit): SelfhostedControlError {\n if (exit.failureCode === \"OP_OVERFLOW\") {\n return new SelfhostedControlError({\n message:\n \"The command produced more output than the machine link can retain for delivery. \" +\n \"Redirect the command's output to a file (for example `<command> > /tmp/out.log 2>&1`) \" +\n \"and then read that file back in ranges or chunks instead of returning it all at once.\",\n code: ErrorCode.ERROR_CODE_PAYLOAD_TOO_LARGE,\n reason: null,\n retryable: false,\n payloadTooLarge: true,\n // failure_code lets the fault renderer distinguish the retention-ceiling\n // overflow (command TERMINATED at the ceiling) from the legacy reply-size\n // wall (command ran to completion) — the four fields must tell the truth.\n detail: { ...exit.failureDetail, failure_code: exit.failureCode },\n });\n }\n return new SelfhostedControlError({\n message:\n `The command failed on the machine's streaming transport (${exit.failureCode}). ` +\n \"The machine kept running it, but its output could not be captured intact.\",\n code: ErrorCode.ERROR_CODE_STREAM,\n reason: null,\n retryable: false,\n detail: { ...exit.failureDetail, failure_code: exit.failureCode },\n });\n}\n","// The op-stream TRANSPORT seam (op-stream protocol v1.1, server half).\n//\n// The op-stream client needs two primitives the request/reply `ControlRpc`\n// cannot express: a plain SUBSCRIPTION (runner→server op frames on\n// `agent.<ws>.<id>.op.<op_id>`, fire-and-forget publishes) and a plain PUBLISH\n// (server→runner acks on `agent.<ws>.<id>.ack`). This module defines that seam\n// exactly like control-rpc.ts defines `ControlRpc`: the session leaf speaks\n// ONLY `OpStreamTransport`; the worker/api inject a live NATS-backed\n// implementation (the same lazy-factory discipline — boot never requires a\n// live NATS), and tests inject an in-memory one.\n//\n// The control ops that START/steer an op (OpStart/OpCancel/OpQuery/OpAttach)\n// deliberately do NOT ride this seam — they are ordinary `ControlRequest`s on\n// the existing rpc subject through the existing `ControlRpc`, with its typed\n// offline/timeout synthesis and retry taxonomy.\n\n/** The per-op frame subject (runner→server, fire-and-forget). Mirrors the\n * runner's wire constant: `agent.<ws>.<id>.op.<op_id>`. */\nexport function opFrameSubject(workspaceId: string, agentId: string, opId: string): string {\n return `agent.${workspaceId}.${agentId}.op.${opId}`;\n}\n\n/** The per-agent ack subject (server→runner, fire-and-forget). Mirrors the\n * runner's wire constant: `agent.<ws>.<id>.ack`. */\nexport function opAckSubject(workspaceId: string, agentId: string): string {\n return `agent.${workspaceId}.${agentId}.ack`;\n}\n\n/** A live subscription handle. `unsubscribe` is idempotent and never throws. */\nexport interface OpStreamSubscription {\n unsubscribe(): void;\n}\n\n/**\n * The op-stream transport seam. `subscribe` MUST be established before the\n * OpStart that makes frames flow (subscription-before-start is a protocol\n * invariant: no frame is published before the consumer exists on a healthy\n * path; a missed frame is healed via OpAttach replay regardless). `onMessage`\n * is invoked in arrival order; a decode failure inside the handler must be\n * contained by the caller (a torn frame must never kill the subscription).\n */\nexport interface OpStreamTransport {\n subscribe(\n subject: string,\n onMessage: (payload: Uint8Array) => void,\n ): Promise<OpStreamSubscription>;\n publish(subject: string, payload: Uint8Array): Promise<void>;\n}\n\n/** Thrown when the transport has no live connection: the op-stream path is\n * UNAVAILABLE (never silently degraded). The session catches this pre-start\n * and falls back to the legacy exec — the op provably never started. */\nexport class OpStreamUnavailableError extends Error {\n readonly name = \"OpStreamUnavailableError\";\n}\n\n/**\n * The minimal NATS surface the transport needs — mirrors the `nats`\n * `NatsConnection` subscribe/publish WITHOUT importing `nats` into the\n * agent-loop-free runtime leaf (the worker injects the live `@opengeni/events`\n * bus connection, exactly like `NatsRequestConnection` in control-rpc.ts).\n * `subscribe` returns the nats.js Subscription shape: an async iterable of\n * messages plus `unsubscribe()`.\n */\nexport interface NatsOpStreamConnection {\n subscribe(subject: string): AsyncIterable<{ data: Uint8Array }> & { unsubscribe(): void };\n publish(subject: string, payload: Uint8Array): void;\n}\n\n/**\n * The NATS-backed transport. Lazy memoized factory (identical discipline to\n * `NatsControlRpc`): the connection resolves on first use; a null factory\n * result or a dial failure surfaces `OpStreamUnavailableError` — the caller\n * (the session) falls back to the LEGACY exec path rather than failing the op,\n * so a NATS-less boot or a torn bus never strands a turn on a dead transport.\n */\nexport class NatsOpStreamTransport implements OpStreamTransport {\n private readonly connect: () => Promise<NatsOpStreamConnection | null>;\n private connection: NatsOpStreamConnection | undefined;\n private connecting: Promise<NatsOpStreamConnection | null> | undefined;\n\n constructor(connect: () => Promise<NatsOpStreamConnection | null>) {\n this.connect = connect;\n }\n\n private async resolveConnection(): Promise<NatsOpStreamConnection | null> {\n if (this.connection) {\n return this.connection;\n }\n // Share one in-flight dial; cache only a real connection (a transient\n // null/throw must be retried by the next call — see NatsControlRpc).\n this.connecting ??= this.connect()\n .then((connection) => {\n if (connection) {\n this.connection = connection;\n }\n return connection;\n })\n .catch(() => null)\n .finally(() => {\n this.connecting = undefined;\n });\n return this.connecting;\n }\n\n async subscribe(\n subject: string,\n onMessage: (payload: Uint8Array) => void,\n ): Promise<OpStreamSubscription> {\n const conn = await this.resolveConnection();\n if (!conn) {\n throw new OpStreamUnavailableError(\"op-stream transport has no live connection\");\n }\n const subscription = conn.subscribe(subject);\n // Pump the async iterator into the callback. The iterator ends when\n // `unsubscribe()` is called (nats.js closes the iterator); a pump error\n // (torn connection) simply ends delivery — the op-stream client's silence\n // handling (OpQuery + re-attach) owns recovery, not the transport.\n void (async () => {\n try {\n for await (const message of subscription) {\n onMessage(message.data);\n }\n } catch {\n // Delivery ended with the connection; recovery is the client's job.\n }\n })();\n let unsubscribed = false;\n return {\n unsubscribe: () => {\n if (unsubscribed) {\n return;\n }\n unsubscribed = true;\n try {\n subscription.unsubscribe();\n } catch {\n // Idempotent teardown: a torn connection already unsubscribed us.\n }\n },\n };\n }\n\n async publish(subject: string, payload: Uint8Array): Promise<void> {\n const conn = await this.resolveConnection();\n if (!conn) {\n throw new OpStreamUnavailableError(\"op-stream transport has no live connection\");\n }\n conn.publish(subject, payload);\n }\n}\n","// Bring-your-own-compute: the user's own machine, enrolled via the Rust agent,\n// is reached over the NATS request/reply control plane (the agent subscribes to\n// `agent.<workspace>.<agentId>.rpc`; the subject IS the registry). There is NO\n// provider SDK and NO per-box credential — \"the agent is the box\".\n//\n// M3 ships the REAL `SelfhostedSandboxClient`: its `create()`/`resume()` return a\n// `SelfhostedSession` presenting the structural surface (`exec`/`readFile`/\n// `writeFile`/`resolveExposedPort`/`serializeSessionState`) that Channel-A, the\n// viewer, and computer-use consume unchanged — backed by a `ControlRpc` seam\n// (request/reply encoded via `@opengeni/agent-proto`) instead of a provider SDK.\n// `serializeSessionState`/`deserializeSessionState` round-trip `{agentId}` ONLY:\n// resume = re-address the live subject, never a cold re-create (the machine is\n// not recreatable). The live NATS request/reply transport + Accounts land in M4\n// behind the SAME `ControlRpc`.\n\nimport type { Settings } from \"@opengeni/config\";\nimport { CAPABILITY_DESCRIPTORS } from \"../capabilities\";\nimport {\n NatsControlRpc,\n type ControlRpc,\n type NatsRequestConnection,\n} from \"../selfhosted/control-rpc\";\nimport { SelfhostedSandboxClient, type SelfhostedRelayConfig } from \"../selfhosted/session\";\nimport type { ProviderRegistration } from \"./types\";\n\n/**\n * Resolve the relay-URL shape config from settings. M8b threads the real relay\n * deployment URL (`OPENGENI_SELFHOSTED_RELAY_URL`, ops-repo IaC) behind this seam:\n * `resolveExposedPort` returns `{host, port, tls, path, query}` so `buildStreamUrl`\n * assembles the relay dial URL. A path-less URL defaults to the relay's `/stream`\n * route; an unconfigured deployment falls back to a placeholder host (the URL shape\n * is still well-formed; the relay is simply unreachable until configured).\n */\nfunction resolveRelayConfig(settings: Settings): SelfhostedRelayConfig {\n const raw = settings.selfhostedRelayUrl?.trim();\n if (!raw) {\n return { host: \"relay.opengeni.local\", port: 443, tls: true, path: \"/stream\" };\n }\n try {\n const url = new URL(raw.includes(\"://\") ? raw : `wss://${raw}`);\n const tls = url.protocol === \"wss:\" || url.protocol === \"https:\";\n const port = url.port ? Number(url.port) : tls ? 443 : 80;\n const path = url.pathname && url.pathname !== \"/\" ? url.pathname : \"/stream\";\n return { host: url.hostname, port, tls, path };\n } catch {\n return { host: raw, port: 443, tls: true, path: \"/stream\" };\n }\n}\n\n/**\n * The default `ControlRpc` factory for a registry-built client: a\n * `NatsControlRpc` whose connection factory returns null — there is NO live NATS\n * connection wired into the agent-loop-free runtime leaf at build() time (the\n * API/worker inject the live `@opengeni/events` connection per request in M4).\n * A null connection surfaces `agent_offline` on every op rather than throwing at\n * construction, so boot never requires a live NATS — exactly the M3 ruling.\n */\nfunction defaultControlRpcFactory(): ControlRpc {\n return new NatsControlRpc(async (): Promise<NatsRequestConnection | null> => null);\n}\n\nexport const selfhostedProvider: ProviderRegistration = {\n backend: \"selfhosted\",\n descriptor: CAPABILITY_DESCRIPTORS.selfhosted,\n /**\n * No per-box credentials: the machine is reached over the agent's own\n * enrollment. The enrollment-signing + relay-token secrets are deployment-level\n * config that lands with the connectivity/enrollment milestones (M4/M5) — and\n * the whole feature is gated by a `sandboxSelfhostedEnabled` flag (default off)\n * that does not yet exist in Settings. So validation is LENIENT (no-op) in M3:\n * boot must never break, and there is nothing per-box to validate. M4/M5 add\n * the (flag-gated) signing/relay presence checks here behind the same seam.\n */\n validateCredentials() {},\n /**\n * Build the registry client. `create()`/`resume()` bind a `SelfhostedSession`\n * to the agent subject; the per-request `{workspaceId, agentId, controlRpc}`\n * are supplied by the resume path (the lease's enrollment) — the registry\n * client carries the relay config + the default (offline-until-M4) ControlRpc\n * factory and a backendId-correct surface for `assertProviderRegistryInvariants`.\n */\n build({ settings }) {\n return new SelfhostedSandboxClient({\n // The workspaceId is bound per-request by the resume path (the API/worker\n // construct a request-scoped client with the lease's workspace + a live\n // ControlRpc). The registry-built client is the boot/assertion shape; an\n // empty workspaceId is fine until a session is bound with a real one.\n workspaceId: \"\",\n relay: resolveRelayConfig(settings),\n controlRpcFactory: defaultControlRpcFactory,\n });\n },\n};\n",null,"import { VercelSandboxClient } from \"@openai/agents-extensions/sandbox/vercel\";\nimport { CAPABILITY_DESCRIPTORS } from \"../capabilities\";\nimport { SandboxConfigError } from \"../errors\";\nimport type { ProviderRegistration } from \"./types\";\n\nexport const vercelProvider: ProviderRegistration = {\n backend: \"vercel\",\n descriptor: CAPABILITY_DESCRIPTORS.vercel,\n validateCredentials(settings) {\n // Vercel needs the access token + the project/team it scopes to.\n if (!settings.vercelToken) {\n throw new SandboxConfigError(\"vercel\", \"OPENGENI_VERCEL_TOKEN is required\");\n }\n if (!settings.vercelProjectId) {\n throw new SandboxConfigError(\"vercel\", \"OPENGENI_VERCEL_PROJECT_ID is required\");\n }\n },\n build({ settings, environment, exposedPorts }) {\n const options: NonNullable<ConstructorParameters<typeof VercelSandboxClient>[0]> = {\n token: settings.vercelToken!,\n projectId: settings.vercelProjectId!,\n env: environment,\n exposedPorts,\n };\n if (settings.vercelTeamId) options.teamId = settings.vercelTeamId;\n if (settings.vercelRuntime) options.runtime = settings.vercelRuntime;\n return new VercelSandboxClient(options);\n },\n};\n","/**\n * Provider sandbox failure classification.\n *\n * This is deliberately structural and fail-closed. DNS failures often contain\n * the word \"not found\" (`ENOTFOUND`) while gRPC status values are also used by\n * unrelated SDKs and command routers. A bare numeric status (including gRPC's\n * numeric 5) is therefore not enough to retire a provider instance. Only\n * authoritative, non-transient evidence may retire a provider instance and\n * license lease recovery.\n */\nexport type ProviderSandboxFailureKind = \"not_found\" | \"transient_transport\" | \"other\";\n\nexport type ProviderSandboxFailure = {\n kind: ProviderSandboxFailureKind;\n /** Bounded, non-secret diagnostic suitable for logs and lifecycle events. */\n diagnostic: string;\n};\n\nconst GRPC_TRANSIENT = new Set([1, 2, 4, 13, 14]);\nconst TRANSIENT_CODES = new Set([\n \"CANCELLED\",\n \"UNKNOWN\",\n \"DEADLINE_EXCEEDED\",\n \"INTERNAL\",\n \"UNAVAILABLE\",\n \"ECONNRESET\",\n \"ECONNREFUSED\",\n \"ETIMEDOUT\",\n \"EAI_AGAIN\",\n \"ENOTFOUND\",\n]);\nconst NOT_FOUND_CODES = new Set([\"404\", \"NOT_FOUND\", \"RESOURCE_NOT_FOUND\", \"SANDBOX_NOT_FOUND\"]);\nconst SAFE_CODE = /^[A-Z0-9._:-]{1,64}$/;\n\ntype ErrorSignals = {\n numbers: number[];\n codes: string[];\n messages: string[];\n};\n\nfunction safeRead(record: object, key: string): unknown {\n try {\n return Reflect.get(record, key);\n } catch {\n return undefined;\n }\n}\n\nfunction collectSignals(value: unknown): ErrorSignals {\n const out: ErrorSignals = { numbers: [], codes: [], messages: [] };\n const seen = new Set<object>();\n const visit = (current: unknown, depth: number): void => {\n if (depth > 3 || current === null || current === undefined) return;\n if (typeof current === \"string\") {\n if (current.length <= 512) out.messages.push(current);\n return;\n }\n if (typeof current !== \"object\" || seen.has(current)) return;\n seen.add(current);\n for (const key of [\n \"status\",\n \"statusCode\",\n \"httpStatus\",\n \"httpStatusCode\",\n \"responseStatus\",\n \"errorCode\",\n \"code\",\n ]) {\n const signal = safeRead(current, key);\n if (typeof signal === \"number\" && Number.isFinite(signal)) out.numbers.push(signal);\n if (typeof signal === \"string\") {\n const code = signal.trim().toUpperCase();\n if (SAFE_CODE.test(code)) out.codes.push(code);\n }\n }\n for (const key of [\"name\", \"message\", \"details\", \"cause\"]) {\n const signal = safeRead(current, key);\n if (typeof signal === \"string\" && signal.length <= 512) out.messages.push(signal);\n else visit(signal, depth + 1);\n }\n visit(safeRead(current, \"response\"), depth + 1);\n visit(safeRead(current, \"error\"), depth + 1);\n };\n visit(value, 0);\n return out;\n}\n\nfunction safeDiagnostic(signals: ErrorSignals): string {\n const code = signals.codes.find(Boolean);\n const numeric = signals.numbers.find((value) => Number.isFinite(value));\n return [code ? `code=${code}` : \"\", numeric !== undefined ? `status=${numeric}` : \"\"]\n .filter(Boolean)\n .join(\" \");\n}\n\nfunction hasTransientSignal(signals: ErrorSignals): boolean {\n return (\n signals.codes.some((code) => TRANSIENT_CODES.has(code)) ||\n signals.numbers.some((status) => GRPC_TRANSIENT.has(status))\n );\n}\n\nfunction hasModalTerminalSandboxMessage(signals: ErrorSignals): boolean {\n return signals.messages.some(\n (message) =>\n /^Modal sandbox [A-Za-z0-9_-]+ is no longer running\\.$/.test(message) ||\n /^Modal sandbox [A-Za-z0-9_-]+ not found \\(has been terminated\\)$/.test(message),\n );\n}\n\n/** Typed transport evidence always dominates nested/string NotFound text. */\nexport function classifyProviderSandboxFailure(\n backendId: string,\n error: unknown,\n): ProviderSandboxFailure {\n if (backendId === \"selfhosted\" || !error) {\n return { kind: \"other\", diagnostic: \"selfhosted-or-empty\" };\n }\n const signals = collectSignals(error);\n const diagnostic = safeDiagnostic(signals) || \"unclassified_provider_failure\";\n\n if (hasTransientSignal(signals)) {\n return { kind: \"transient_transport\", diagnostic };\n }\n if (\n signals.numbers.some((status) => status === 404) ||\n signals.codes.some((code) => NOT_FOUND_CODES.has(code))\n ) {\n return { kind: \"not_found\", diagnostic };\n }\n\n // Modal's SDK emits these exact terminal grammars after resolving one exact\n // sandbox id. Generic \"not found\" prose is intentionally not authoritative.\n if (backendId === \"modal\" && hasModalTerminalSandboxMessage(signals)) {\n return {\n kind: \"not_found\",\n diagnostic:\n diagnostic === \"unclassified_provider_failure\"\n ? \"modal_terminal_message\"\n : `${diagnostic} modal_terminal_message`,\n };\n }\n\n return { kind: \"other\", diagnostic };\n}\n\nexport function isProviderSandboxNotFoundError(backendId: string, error: unknown): boolean {\n return classifyProviderSandboxFailure(backendId, error).kind === \"not_found\";\n}\n\n/**\n * Whether a failure from an operation routed through an already-established\n * sandbox proves that exact provider sandbox disappeared.\n *\n * Routed operations can legitimately return HTTP 404 / `NOT_FOUND` for paths,\n * files, ports, processes, and other subresources. Those generic signals are\n * sufficient for provider create/resume APIs, but they must never retire the\n * live sandbox identity after an arbitrary operation. Only an explicit\n * sandbox-scoped provider code or Modal's exact terminal sandbox grammar is\n * authoritative on this path. Transient transport evidence still dominates.\n */\nexport function isProviderSandboxGoneDuringRoutedOperation(\n backendId: string,\n error: unknown,\n): boolean {\n if (backendId === \"selfhosted\" || !error) return false;\n const signals = collectSignals(error);\n if (hasTransientSignal(signals)) return false;\n if (signals.codes.includes(\"SANDBOX_NOT_FOUND\")) return true;\n return backendId === \"modal\" && hasModalTerminalSandboxMessage(signals);\n}\n\nexport function isProviderSandboxTransientError(backendId: string, error: unknown): boolean {\n return classifyProviderSandboxFailure(backendId, error).kind === \"transient_transport\";\n}\n","import { createHash } from \"node:crypto\";\n\nexport const WORKSPACE_ARCHIVE_DESCRIPTOR_VERSION = 1 as const;\n\nexport type WorkspaceTreeFingerprint = {\n algorithm: \"sha256\";\n sha256: string;\n entryCount: number;\n fileCount: number;\n totalFileBytes: number;\n};\n\nexport type WorkspaceArchiveDescriptor = {\n version: typeof WORKSPACE_ARCHIVE_DESCRIPTOR_VERSION;\n revision: string;\n archiveSha256: string;\n archiveBytes: number;\n capturedAt: string;\n workspace: WorkspaceTreeFingerprint;\n};\n\nexport type VerifiedWorkspaceArchive = {\n bytes: Uint8Array;\n base64: string;\n descriptor: WorkspaceArchiveDescriptor;\n};\n\nexport type WorkspaceArchiveIntegrityCode =\n | \"archive_metadata_missing\"\n | \"archive_metadata_invalid\"\n | \"archive_base64_invalid\"\n | \"archive_hash_mismatch\"\n | \"archive_hydration_failed\"\n | \"workspace_fingerprint_unavailable\"\n | \"workspace_changed_during_capture\"\n | \"workspace_fingerprint_mismatch\";\n\nexport class WorkspaceArchiveIntegrityError extends Error {\n readonly name = \"WorkspaceArchiveIntegrityError\";\n readonly retryable: boolean;\n\n constructor(\n public readonly code: WorkspaceArchiveIntegrityCode,\n message: string,\n options: { retryable?: boolean } = {},\n ) {\n super(message);\n this.retryable = options.retryable ?? false;\n }\n}\n\ntype WorkspaceSession = {\n exec?: (args: {\n cmd: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n }) => Promise<unknown>;\n execCommand?: (args: {\n cmd: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n }) => Promise<unknown>;\n persistWorkspace?: () => Promise<Uint8Array | undefined>;\n};\n\nconst SHA256 = /^[a-f0-9]{64}$/;\nconst REVISION = /^wa1:[0-9]{13}:[a-f0-9]{64}$/;\n\nfunction sha256(bytes: Uint8Array): string {\n return createHash(\"sha256\").update(bytes).digest(\"hex\");\n}\n\nfunction nonnegativeInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0;\n}\n\nexport function parseWorkspaceArchiveDescriptor(value: unknown): WorkspaceArchiveDescriptor | null {\n if (!value || typeof value !== \"object\") return null;\n const candidate = value as Partial<WorkspaceArchiveDescriptor>;\n const workspace = candidate.workspace as Partial<WorkspaceTreeFingerprint> | undefined;\n if (\n candidate.version !== WORKSPACE_ARCHIVE_DESCRIPTOR_VERSION ||\n typeof candidate.revision !== \"string\" ||\n !REVISION.test(candidate.revision) ||\n typeof candidate.archiveSha256 !== \"string\" ||\n !SHA256.test(candidate.archiveSha256) ||\n !nonnegativeInteger(candidate.archiveBytes) ||\n candidate.archiveBytes === 0 ||\n typeof candidate.capturedAt !== \"string\" ||\n !Number.isFinite(Date.parse(candidate.capturedAt)) ||\n !workspace ||\n workspace.algorithm !== \"sha256\" ||\n typeof workspace.sha256 !== \"string\" ||\n !SHA256.test(workspace.sha256) ||\n !nonnegativeInteger(workspace.entryCount) ||\n !nonnegativeInteger(workspace.fileCount) ||\n !nonnegativeInteger(workspace.totalFileBytes)\n ) {\n return null;\n }\n return candidate as WorkspaceArchiveDescriptor;\n}\n\nfunction decodeBase64Strict(value: string): Uint8Array | null {\n if (value.length === 0 || value.length % 4 !== 0 || !/^[A-Za-z0-9+/]+={0,2}$/.test(value)) {\n return null;\n }\n const bytes = Uint8Array.from(Buffer.from(value, \"base64\"));\n return Buffer.from(bytes).toString(\"base64\") === value ? bytes : null;\n}\n\nexport function readVerifiedWorkspaceArchive(\n base64: unknown,\n metadata: unknown,\n): VerifiedWorkspaceArchive | null {\n if (base64 === undefined || base64 === null || base64 === \"\") return null;\n if (typeof base64 !== \"string\") {\n throw new WorkspaceArchiveIntegrityError(\n \"archive_base64_invalid\",\n \"selected workspace archive is not a base64 string\",\n );\n }\n if (metadata === undefined || metadata === null) {\n throw new WorkspaceArchiveIntegrityError(\n \"archive_metadata_missing\",\n \"selected workspace archive has no durable revision/fingerprint metadata\",\n );\n }\n const descriptor = parseWorkspaceArchiveDescriptor(metadata);\n if (!descriptor) {\n throw new WorkspaceArchiveIntegrityError(\n \"archive_metadata_invalid\",\n \"selected workspace archive metadata is invalid\",\n );\n }\n const bytes = decodeBase64Strict(base64);\n if (!bytes) {\n throw new WorkspaceArchiveIntegrityError(\n \"archive_base64_invalid\",\n `workspace archive revision ${descriptor.revision} has invalid base64 bytes`,\n );\n }\n const actualHash = sha256(bytes);\n if (bytes.length !== descriptor.archiveBytes || actualHash !== descriptor.archiveSha256) {\n throw new WorkspaceArchiveIntegrityError(\n \"archive_hash_mismatch\",\n `workspace archive revision ${descriptor.revision} failed SHA-256/size verification`,\n );\n }\n return { bytes, base64, descriptor };\n}\n\nfunction stdoutFromExecResult(value: unknown): string {\n if (typeof value === \"string\") {\n const delimiter = /\\r?\\nOutput:\\r?\\n/u.exec(value);\n return delimiter ? value.slice(delimiter.index + delimiter[0].length) : value;\n }\n if (!value || typeof value !== \"object\") return \"\";\n const output = value as { stdout?: unknown; output?: unknown };\n return typeof output.stdout === \"string\"\n ? output.stdout\n : typeof output.output === \"string\"\n ? output.output\n : \"\";\n}\n\nconst WORKSPACE_FINGERPRINT_COMMAND = String.raw`bash -o pipefail -c '\nset -eu\ncd /workspace\ndigest=$(LC_ALL=C tar --sort=name --mtime=\"@0\" --owner=0 --group=0 --numeric-owner --format=gnu -cf - . | sha256sum | awk \"{print \\$1}\")\nentries=$(find . -xdev -mindepth 1 -printf x | wc -c | tr -d \" \")\nfiles=$(find . -xdev -type f -printf x | wc -c | tr -d \" \")\nbytes=$(find . -xdev -type f -printf \"%s\\n\" | awk \"{s+=\\$1} END {printf \\\"%.0f\\\", s+0}\")\nprintf \"OPENGENI_WORKSPACE_FINGERPRINT_V1 %s %s %s %s\\n\" \"$digest\" \"$entries\" \"$files\" \"$bytes\"\n'`;\n\n/** Hashes names, kinds, modes, symlink targets and all file bytes through one\n * deterministic GNU tar stream. Only the aggregate is returned; paths and file\n * contents never enter logs or durable metadata. */\nexport async function fingerprintSandboxWorkspace(\n session: unknown,\n): Promise<WorkspaceTreeFingerprint> {\n const target = session as WorkspaceSession;\n const run = target.exec ?? target.execCommand;\n if (!run) {\n throw new WorkspaceArchiveIntegrityError(\n \"workspace_fingerprint_unavailable\",\n \"sandbox session cannot execute the workspace fingerprint probe\",\n );\n }\n const result = await run.call(target, {\n cmd: WORKSPACE_FINGERPRINT_COMMAND,\n yieldTimeMs: 120_000,\n maxOutputTokens: 1_000,\n });\n const match = stdoutFromExecResult(result)\n .trim()\n .match(/^OPENGENI_WORKSPACE_FINGERPRINT_V1 ([a-f0-9]{64}) ([0-9]+) ([0-9]+) ([0-9]+)$/);\n if (!match) {\n throw new WorkspaceArchiveIntegrityError(\n \"workspace_fingerprint_unavailable\",\n \"sandbox workspace fingerprint probe returned no valid digest\",\n { retryable: true },\n );\n }\n const entryCount = Number(match[2]);\n const fileCount = Number(match[3]);\n const totalFileBytes = Number(match[4]);\n if (![entryCount, fileCount, totalFileBytes].every(Number.isSafeInteger)) {\n throw new WorkspaceArchiveIntegrityError(\n \"workspace_fingerprint_unavailable\",\n \"sandbox workspace fingerprint counters exceeded the supported range\",\n );\n }\n return {\n algorithm: \"sha256\",\n sha256: match[1]!,\n entryCount,\n fileCount,\n totalFileBytes,\n };\n}\n\nfunction fingerprintsEqual(a: WorkspaceTreeFingerprint, b: WorkspaceTreeFingerprint): boolean {\n return (\n a.sha256 === b.sha256 &&\n a.entryCount === b.entryCount &&\n a.fileCount === b.fileCount &&\n a.totalFileBytes === b.totalFileBytes\n );\n}\n\n/** Capture is accepted only when the complete tree is byte-identical immediately\n * before and after the provider snapshot. A concurrent mutation makes the\n * candidate non-durable and it is never folded onto the lease. */\nexport async function captureVerifiedWorkspaceArchive(\n session: unknown,\n capturedAtMs = Date.now(),\n): Promise<VerifiedWorkspaceArchive> {\n const target = session as WorkspaceSession;\n if (typeof target.persistWorkspace !== \"function\") {\n throw new WorkspaceArchiveIntegrityError(\n \"workspace_fingerprint_unavailable\",\n \"sandbox session does not support workspace persistence\",\n );\n }\n const before = await fingerprintSandboxWorkspace(target);\n const bytes = await target.persistWorkspace();\n if (!bytes || bytes.length === 0) {\n throw new WorkspaceArchiveIntegrityError(\n \"archive_base64_invalid\",\n \"sandbox workspace persistence returned an empty archive\",\n { retryable: true },\n );\n }\n const after = await fingerprintSandboxWorkspace(target);\n if (!fingerprintsEqual(before, after)) {\n throw new WorkspaceArchiveIntegrityError(\n \"workspace_changed_during_capture\",\n \"workspace changed while its durable archive was being captured\",\n { retryable: true },\n );\n }\n const archiveSha256 = sha256(bytes);\n const descriptor: WorkspaceArchiveDescriptor = {\n version: WORKSPACE_ARCHIVE_DESCRIPTOR_VERSION,\n revision: `wa1:${String(capturedAtMs).padStart(13, \"0\")}:${archiveSha256}`,\n archiveSha256,\n archiveBytes: bytes.length,\n capturedAt: new Date(capturedAtMs).toISOString(),\n workspace: before,\n };\n return {\n bytes,\n base64: Buffer.from(bytes).toString(\"base64\"),\n descriptor,\n };\n}\n\nexport async function verifyRestoredWorkspace(\n session: unknown,\n descriptor: WorkspaceArchiveDescriptor,\n): Promise<WorkspaceTreeFingerprint> {\n const actual = await fingerprintSandboxWorkspace(session);\n if (!fingerprintsEqual(actual, descriptor.workspace)) {\n throw new WorkspaceArchiveIntegrityError(\n \"workspace_fingerprint_mismatch\",\n `restored workspace does not match selected archive revision ${descriptor.revision}`,\n );\n }\n return actual;\n}\n","// Backend selection + capability negotiation/degradation (module 03 §0, §5).\n//\n// negotiateCapabilities() turns a static CapabilityDescriptor + runtime context\n// (the selected OS, the lease liveness/epoch, and the deployment's desktop\n// policy) into a coherent SessionCapabilities document. The load-bearing rule\n// (sandbox contract Part D): a capability cell is ALWAYS present — when unavailable\n// it is `available:false` + a typed `reason`, NEVER absent. Degradation is a\n// value, not a silent drop.\n\nimport {\n CAPABILITY_DESCRIPTORS,\n type CapabilityDescriptor,\n type CapabilityUnavailableReason,\n type SandboxBackend,\n type SandboxOs,\n type SessionCapabilities,\n} from \"@opengeni/contracts\";\n\nexport interface NegotiationContext {\n sessionId: string;\n backend: SandboxBackend;\n os: SandboxOs;\n /** Current lease liveness; cold means nothing is provisioned yet. */\n liveness: \"cold\" | \"warming\" | \"warm\" | \"draining\";\n /** The lease epoch echoed on viewer heartbeats (the split-brain fence). */\n leaseEpoch: number;\n /** Numeric/boolean archive completeness truth. Non-persistable targets use\n * null/null/false; archive locations and provider details are never exposed. */\n workspaceGeneration?: number | null;\n archiveGeneration?: number | null;\n archiveComplete?: boolean;\n /** The deployment desktop toggle (settings.sandboxDesktopEnabled). */\n desktopEnabled: boolean;\n /**\n * The HUMAN take-control toggle (settings.sandboxDesktopInteractive). When true\n * (default) and the desktop cell is available, the negotiated DesktopStream.mode\n * is \"interactive\" — the noVNC viewer can drive mouse+keyboard into :0 (the box's\n * x11vnc runs without -viewonly). When false the cell reports mode \"read-only\"\n * and the client disables the \"Take control\" affordance (a genuinely read-only\n * deployment). Independent of `computerUseReadOnly`, which gates the AGENT\n * driver, not the human viewer plane. Defaults to true so a caller that never\n * threads it (e.g. headless tests) still gets the interactive plane when the\n * desktop is available.\n */\n desktopInteractive?: boolean;\n /** The deployment computer-use toggle (settings.computerUseEnabled). The agent\n * drives :0 via xdotool/scrot; availability tracks desktop. Defaults to true. */\n computerUseEnabled?: boolean;\n /** Whether the agent computer-use driver is gated to no-op input\n * (settings.computerUseReadOnly). v1 default false (the agent clicks/types). */\n computerUseReadOnly?: boolean;\n /**\n * Whether a scoped-stream-token secret is resolvable (stream-token availability contract). When desktop\n * is enabled but this is false (no streamTokenSecret AND no delegationSecret),\n * the desktop plane GRACEFULLY DEGRADES to transport:null — the deployment\n * boots, but the pixel plane cannot mint scoped tokens. Defaults to true so a\n * caller that never threads it (e.g. headless tests) is unaffected.\n */\n streamTokenSecretAvailable?: boolean;\n /** Whether the calling principal has acknowledged the un-redacted desktop\n * pixels (and, for a shared box, the shared-exposure disclosure). When the\n * box is shared this must be the SHARED acknowledgment; a bare un-redacted ack\n * does not satisfy a shared box. */\n desktopAcknowledged?: boolean;\n /** True when the box's group has >1 session: watching this desktop also shows\n * the sibling sessions' agents on the one :0 framebuffer (addendum E.1). */\n shared?: boolean;\n /** The OTHER sessions whose agents may appear on the shared desktop — IDS\n * ONLY, never their conversation/metadata (stress g). Empty for a solo box. */\n sharedSessionIds?: string[];\n /**\n * The minted pixel-plane endpoint (P4.2): the direct-to-provider WS URL + the\n * scoped stream token + its expiry + the framebuffer geometry. Threaded by the\n * API-direct handshake AFTER it has resumed the box, ensured the display stack,\n * and resolved the provider tunnel. When ABSENT (the negotiation-only read, a\n * cold lease, or a degraded desktop) the DesktopStream cell reports url/token/\n * expiresAt as null — the capability is advertised, the live address is not yet\n * minted (the caller POSTs to /viewers to mint it). Presence does NOT override\n * the gates: a degraded/cold/unacked desktop still reports transport:null and\n * the minted endpoint is dropped.\n */\n desktopStream?: {\n url: string;\n token: string;\n expiresAt: string;\n resolution: [number, number];\n };\n /** The deployment terminal toggle (settings.sandboxTerminalEnabled). The REAL\n * PTY (ttyd pty-ws) is gated on this + a real-PTY backend; when off the\n * Terminal cell still advertises the read-only sse-events firehose. Defaults to\n * true so a caller that never threads it is unaffected. */\n terminalEnabled?: boolean;\n /**\n * The minted terminal-plane endpoint (P5.t): the direct-to-provider ttyd\n * PTY-over-websocket URL + the scoped stream token + its expiry. Threaded by the\n * API-direct handshake AFTER it has resumed the box, ensured the terminal\n * server, and resolved the provider tunnel (mintTerminalStream) — SYMMETRIC with\n * `desktopStream`. When ABSENT (the negotiation-only read, a cold lease, or a\n * degraded terminal) the Terminal cell reports url/token/expiresAt as null and\n * falls back to transport \"sse-events\" (the read-only firehose) — the caller\n * POSTs to /viewers to mint the live pty-ws address.\n */\n terminalStream?: {\n url: string;\n token: string;\n expiresAt: string;\n };\n /** Override the negotiation clock (tests). */\n now?: Date;\n}\n\n/**\n * Resolve the descriptor for a backend. Throws on an unknown backend rather than\n * returning a half-formed default (the registry is the single source of truth).\n */\nexport function selectBackend(backend: SandboxBackend): CapabilityDescriptor {\n const descriptor = CAPABILITY_DESCRIPTORS[backend];\n if (!descriptor) {\n throw new Error(`Unknown sandbox backend \"${backend}\"`);\n }\n return descriptor;\n}\n\n/** True iff the descriptor lists the requested OS as supported. */\nexport function backendSupportsOs(descriptor: CapabilityDescriptor, os: SandboxOs): boolean {\n return descriptor.os.supported.includes(os);\n}\n\n/**\n * True iff the backend can serve the Channel-B desktop pixel plane at all — i.e.\n * its static descriptor advertises DesktopStream as available. The gate the\n * worker / API use before launching the display stack (so a headless-only\n * backend like cloudflare/vercel/none never tries). This is the STATIC\n * feasibility only; the runtime `sandboxDesktopEnabled` policy toggle and the\n * stream-token-secret gate are layered on by the caller / negotiateCapabilities.\n *\n * Accepts EITHER the SandboxBackend enum value (e.g. \"local\") OR the SDK\n * client backendId (e.g. \"unix_local\") — they diverge for the local backend —\n * so a caller holding only `established.backendId` resolves correctly.\n */\nexport function desktopCapableBackend(backend: SandboxBackend | string): boolean {\n const direct = CAPABILITY_DESCRIPTORS[backend as SandboxBackend];\n if (direct) {\n return direct.capabilities.DesktopStream.available === true;\n }\n // Fall back to a backendId lookup (the SDK client id, which differs from the\n // enum key for `local`/`unix_local`).\n for (const descriptor of Object.values(CAPABILITY_DESCRIPTORS)) {\n if (descriptor.backendId === backend) {\n return descriptor.capabilities.DesktopStream.available === true;\n }\n }\n return false;\n}\n\n/**\n * Negotiate a coherent SessionCapabilities document for (backend, os). Every\n * capability is reported with availability + a reason-when-unavailable; nothing\n * is ever absent. The reason precedence is: os_unsupported (the OS axis can't be\n * served at all) > the per-capability static feasibility > policy/liveness gates.\n */\nexport function negotiateCapabilities(ctx: NegotiationContext): SessionCapabilities {\n const descriptor = selectBackend(ctx.backend);\n const osSupported = backendSupportsOs(descriptor, ctx.os);\n const negotiatedAt = (ctx.now ?? new Date()).toISOString();\n\n // The dominant degrade: an unsupported OS knocks out every capability with a\n // single coherent reason.\n const osReason: CapabilityUnavailableReason | null = osSupported ? null : \"os_unsupported\";\n\n const fileSystem = (() => {\n if (osReason) {\n return {\n available: false,\n readOnly: true,\n root: descriptor.workspaceRoot,\n pathSep: \"/\" as const,\n treeMode: \"lazy\" as const,\n reason: osReason,\n };\n }\n const cap = descriptor.capabilities.FileSystem;\n return {\n available: cap.available,\n readOnly: cap.readOnly,\n root: descriptor.workspaceRoot,\n pathSep: \"/\" as const,\n treeMode: \"lazy\" as const,\n reason: cap.available ? null : (\"backend_unsupported\" as const),\n };\n })();\n\n const terminal = (() => {\n const cap = descriptor.capabilities.Terminal;\n if (osReason) {\n return {\n transport: null,\n ptyCapable: false,\n shell: \"/bin/bash\",\n url: null,\n token: null,\n expiresAt: null,\n reason: osReason,\n };\n }\n if (!cap.available) {\n return {\n transport: null,\n ptyCapable: false,\n shell: \"/bin/bash\",\n url: null,\n token: null,\n expiresAt: null,\n reason: \"backend_unsupported\" as const,\n };\n }\n // The REAL PTY (ttyd pty-ws) rides the SAME tunnel as the desktop, so it is\n // gated identically: a real-PTY backend (cap.pty), the terminal policy toggle\n // ON, and a live box. Until those hold the cell advertises the read-only\n // sse-events firehose (Channel-A command.output still works) with a typed\n // reason — degradation is a value, never an absent capability.\n // - terminal off -> sse-events + disabled_by_policy.\n // - cold lease + NO mint -> sse-events + lease_cold (no live pty-ws address;\n // the caller mints it via mintTerminalStream at\n // viewer attach).\n // - not a real-PTY backend-> sse-events (no reason; the firehose IS the cap).\n // A PRESENT minted pty-ws url (ctx.terminalStream) is ITSELF proof of liveness:\n // the box (Modal-warm OR selfhosted-online) actually served the ttyd port, so a\n // cold MODAL-GROUP lease liveness must NOT degrade it. lease_cold only fires\n // when nothing was minted. A selfhosted-active session has no warm Modal lease\n // (liveness \"cold\") yet mints a valid RELAY pty-ws cell — honour it.\n const ptyCapable = cap.pty;\n let transport: \"pty-ws\" | \"sse-events\" = ptyCapable ? \"pty-ws\" : \"sse-events\";\n let reason: CapabilityUnavailableReason | null = null;\n if (ptyCapable && ctx.terminalEnabled === false) {\n transport = \"sse-events\";\n reason = \"disabled_by_policy\";\n } else if (ptyCapable && ctx.liveness === \"cold\" && !ctx.terminalStream) {\n transport = \"sse-events\";\n reason = \"lease_cold\";\n }\n // The minted pty-ws endpoint is folded in ONLY when the terminal is actually\n // serving pty-ws (the gates passed). When absent the cell advertises the\n // capability with a null live address — the caller mints it via POST /viewers.\n const minted = transport === \"pty-ws\" ? ctx.terminalStream : undefined;\n return {\n transport,\n ptyCapable,\n shell: \"/bin/bash\",\n url: minted?.url ?? null,\n token: minted?.token ?? null,\n expiresAt: minted?.expiresAt ?? null,\n reason,\n };\n })();\n\n const git = (() => {\n const cap = descriptor.capabilities.Git;\n if (osReason) {\n return { available: false, repos: [], reason: osReason };\n }\n return {\n available: cap.available,\n repos: [],\n reason: cap.available ? null : (\"backend_unsupported\" as const),\n };\n })();\n\n const desktop = (() => {\n const cap = descriptor.capabilities.DesktopStream;\n // Reason precedence: OS > backend-tier feasibility > policy disable >\n // stream-token-secret > cold lease WITHOUT a mint.\n let reason: CapabilityUnavailableReason | null = null;\n let available = cap.available;\n if (osReason) {\n available = false;\n reason = osReason;\n } else if (!cap.available) {\n available = false;\n // Headless tiers expose the typed tier_headless reason; dev/none are\n // backend_unsupported for desktop.\n reason = descriptor.tier === \"headless\" ? \"tier_headless\" : \"backend_unsupported\";\n } else if (!ctx.desktopEnabled) {\n available = false;\n reason = \"disabled_by_policy\";\n } else if (ctx.streamTokenSecretAvailable === false) {\n // Graceful degrade (stream-token availability contract): desktop is enabled + backend-capable, but no\n // stream-token secret is resolvable, so no scoped token can be minted. The\n // deployment boots; the desktop cell reports transport:null + a typed\n // reason rather than crashing the API.\n available = false;\n reason = \"disabled_by_policy\";\n } else if (ctx.liveness === \"cold\" && !ctx.desktopStream) {\n // A PRESENT minted pixel url (ctx.desktopStream) is ITSELF proof of liveness:\n // the box (Modal-warm OR selfhosted-online) actually served the noVNC port,\n // so a cold MODAL-GROUP lease liveness must NOT degrade it. lease_cold only\n // fires when nothing was minted. A selfhosted-active session has no warm\n // Modal lease (liveness \"cold\") yet mints a valid RELAY framebuffer cell —\n // honour it (the un-redacted-pixel ack gate below still applies).\n available = false;\n reason = \"lease_cold\";\n }\n const shared = available ? Boolean(ctx.shared) : false;\n // The minted pixel endpoint is handed out ONLY when the desktop is actually\n // available (the gates passed) AND acknowledged: an unacked/cold/degraded\n // desktop never leaks a live URL (the un-redacted-pixel consent gate). When\n // absent the cell advertises the capability with a null live address — the\n // caller mints it via POST /viewers.\n const acknowledged = available ? Boolean(ctx.desktopAcknowledged) : false;\n const minted = available && acknowledged ? ctx.desktopStream : undefined;\n // Human take-control: the cell is \"interactive\" when the desktop is actually\n // available AND the deployment's take-control policy is on (default true). The\n // box's x11vnc runs without -viewonly, so a viewer driving input reaches :0;\n // this mode bit is the CLIENT gate (the \"Take control\" affordance). A\n // deployment that wants a genuinely read-only desktop sets\n // sandboxDesktopInteractive=false → mode \"read-only\" and the client disables\n // take-control. An unavailable cell is always \"read-only\" (nothing to drive).\n // Selfhosted desktop is the RELAY framebuffer: PNG-per-frame protobuf datagrams\n // spliced over the relay, rendered by the \"frames\" canvas client — NOT noVNC/RFB\n // (that x11vnc path exists only for Modal boxes). It is VIEW-ONLY in v1 (the\n // frame client does not forward input yet), so its mode is always read-only\n // regardless of the take-control policy.\n const selfhostedFrames = ctx.backend === \"selfhosted\";\n const interactive = available && !selfhostedFrames && ctx.desktopInteractive !== false;\n const mode = interactive ? (\"interactive\" as const) : (\"read-only\" as const);\n return {\n transport: available ? (selfhostedFrames ? (\"relay-frames\" as const) : cap.transport) : null,\n client: available ? (selfhostedFrames ? (\"frames\" as const) : (\"novnc\" as const)) : null,\n mode,\n url: minted?.url ?? null,\n token: minted?.token ?? null,\n expiresAt: minted?.expiresAt ?? null,\n resolution: minted?.resolution ?? ([1024, 768] as [number, number]),\n // Desktop pixels are ALWAYS un-redacted when present (the literal\n // framebuffer); the acknowledgment gate rests on this.\n unredacted: true,\n requiresAcknowledgment: available,\n acknowledged: available ? Boolean(ctx.desktopAcknowledged) : false,\n // Shared-exposure disclosure (addendum E.1): `shared` when the group has\n // >1 session; `sharedSessionIds` is the OTHER sessions' ids ONLY (never\n // their conversation/metadata). Empty/false for a solo box or when the\n // desktop cell is unavailable.\n shared,\n sharedSessionIds: shared ? (ctx.sharedSessionIds ?? []) : [],\n reason,\n };\n })();\n\n const recording = (() => {\n const cap = descriptor.capabilities.Recording;\n if (osReason) {\n return {\n available: false,\n modes: [] as (\"manual\" | \"on-turn\" | \"on-verify\")[],\n codecs: [] as (\"h264-mp4\" | \"vp9-webm\")[],\n reason: osReason,\n };\n }\n if (!cap.available) {\n return {\n available: false,\n modes: [] as (\"manual\" | \"on-turn\" | \"on-verify\")[],\n codecs: [] as (\"h264-mp4\" | \"vp9-webm\")[],\n reason:\n descriptor.tier === \"headless\"\n ? (\"tier_headless\" as const)\n : (\"backend_unsupported\" as const),\n };\n }\n // Recording feasibility tracks desktop; policy-gate it the same way.\n if (!ctx.desktopEnabled) {\n return {\n available: false,\n modes: [] as (\"manual\" | \"on-turn\" | \"on-verify\")[],\n codecs: [] as (\"h264-mp4\" | \"vp9-webm\")[],\n reason: \"disabled_by_policy\" as const,\n };\n }\n return {\n available: true,\n modes: [\"manual\", \"on-turn\", \"on-verify\"] as (\"manual\" | \"on-turn\" | \"on-verify\")[],\n codecs: [\"h264-mp4\", \"vp9-webm\"] as (\"h264-mp4\" | \"vp9-webm\")[],\n reason: null,\n };\n })();\n\n const computerUse = (() => {\n // The agent computer-use driver requires the same desktop image (X stack) as\n // the pixel plane: it drives :0 with xdotool/scrot. Availability == desktop-\n // capable backend && desktopEnabled && computerUseEnabled. Degradation is a\n // value, never silent (an unavailable cell carries a reason).\n const desktopCapable = descriptor.capabilities.DesktopStream.available;\n const readOnly = ctx.computerUseReadOnly ?? false;\n if (osReason) {\n return { available: false, readOnly, reason: osReason };\n }\n if (!desktopCapable) {\n return {\n available: false,\n readOnly,\n reason:\n descriptor.tier === \"headless\"\n ? (\"tier_headless\" as const)\n : (\"backend_unsupported\" as const),\n };\n }\n if (!ctx.desktopEnabled || ctx.computerUseEnabled === false) {\n return { available: false, readOnly, reason: \"disabled_by_policy\" as const };\n }\n return { available: true, readOnly, reason: null };\n })();\n\n return {\n sessionId: ctx.sessionId,\n backend: ctx.backend,\n os: ctx.os,\n liveness: ctx.liveness,\n leaseEpoch: ctx.leaseEpoch,\n workspaceGeneration: ctx.workspaceGeneration ?? null,\n archiveGeneration: ctx.archiveGeneration ?? null,\n archiveComplete: ctx.archiveComplete ?? false,\n viewerHeartbeatIntervalMs: 30_000,\n FileSystem: fileSystem,\n Terminal: terminal,\n Git: git,\n DesktopStream: desktop,\n Recording: recording,\n ComputerUse: computerUse,\n negotiatedAt,\n };\n}\n","// @opengeni/runtime/sandbox — scoped stream-token mint/verify (P3.1).\n//\n// The agent-loop-free home for the scoped data-plane stream token used by the\n// desktop pixel plane (Channel B, sandbox contract §C.3 / crosscut PART 1.3). It is\n// a THIN wrapper over the contracts HMAC envelope (signStreamToken /\n// verifyStreamToken) — NOT a second crypto: it REUSES the exact base64Url +\n// hmacSha256 construction that backs signDelegatedAccessToken, with the distinct\n// `ogs_` prefix and the hard-narrow StreamTokenPayload claim set.\n//\n// It lives under @opengeni/runtime/sandbox so the API-direct control plane\n// (apps/api) can mint + verify stream tokens from the same single agent-loop-free\n// leaf it already pulls createSandboxClient / resume-by-id from.\n\nimport {\n DESKTOP_STREAM_PORT,\n StreamTokenPayload,\n signStreamToken,\n verifyStreamToken as verifyStreamTokenEnvelope,\n type StreamTokenPayload as StreamTokenPayloadType,\n} from \"@opengeni/contracts\";\n\n// The default stream-token TTL (seconds). The token is short-lived by design:\n// URL rotation is event-driven under the epoch fence (re-resolve recorded on the\n// lease), not on a keepalive clock — so the token never needs a long life.\nexport const STREAM_TOKEN_DEFAULT_TTL_SECONDS = 120;\n\nexport type MintStreamTokenInput = {\n workspaceId: string;\n sessionId: string;\n /** The sandbox_lease_holders viewer row id. */\n viewerId: string;\n /** The epoch the token is fenced to. For a Modal box this is the live LEASE\n * epoch (re-minted on box rollover). For a SELFHOSTED relay stream (M8b) this is\n * the session's swap `active_epoch`: the relay tracks the highest epoch any\n * viewer presented per channel and REJECTS a token with a lower epoch, so a\n * viewer whose token predates a swap-away cannot reach the machine the session\n * swapped off of. One field, two fences — the relay/in-box edge reads it as the\n * stale-viewer floor either way. */\n leaseEpoch: number;\n /** v1 is always \"view\"; \"control\" is the never-granted raw-input plane. */\n mode?: \"view\" | \"control\";\n /** The exposed stream port (noVNC); defaults to 6080. */\n port?: number;\n /** TTL in seconds; defaults to STREAM_TOKEN_DEFAULT_TTL_SECONDS. */\n ttlSeconds?: number;\n /** Override the issue clock (tests). Seconds since the epoch. */\n nowSeconds?: number;\n};\n\n/**\n * Mint a scoped stream token for one viewer holder. Builds the hard-narrow\n * StreamTokenPayload (the claim set the in-box edge / control plane validates)\n * and signs it with the resolved stream-token secret via the contracts HMAC\n * envelope (`ogs_` prefix). The token is RECORDED against the holder row by the\n * caller and is NEVER appended to the data-plane URL as a query param.\n */\nexport async function mintStreamToken(\n secret: string,\n input: MintStreamTokenInput,\n): Promise<string> {\n const nowSeconds = input.nowSeconds ?? Math.floor(Date.now() / 1000);\n const ttlSeconds = input.ttlSeconds ?? STREAM_TOKEN_DEFAULT_TTL_SECONDS;\n const payload: StreamTokenPayloadType = StreamTokenPayload.parse({\n workspaceId: input.workspaceId,\n sessionId: input.sessionId,\n viewerId: input.viewerId,\n leaseEpoch: input.leaseEpoch,\n mode: input.mode ?? \"view\",\n port: input.port ?? DESKTOP_STREAM_PORT,\n exp: nowSeconds + ttlSeconds,\n });\n return signStreamToken(secret, payload);\n}\n\n/**\n * Verify a scoped stream token. Returns the parsed claims on success, or null on\n * a bad prefix / malformed envelope / bad HMAC signature / schema-invalid claims\n * / expiry. Re-exports the contracts verify; the leaf is the agent-loop-free\n * import surface the API uses.\n *\n * The epoch fence (claim.leaseEpoch vs the LIVE lease epoch) and the\n * workspace+session scope are enforced at USE by the caller against the live\n * lease + route params — verify proves authenticity + freshness only.\n */\nexport async function verifyStreamToken(\n secret: string,\n token: string,\n nowSeconds = Math.floor(Date.now() / 1000),\n): Promise<StreamTokenPayloadType | null> {\n return verifyStreamTokenEnvelope(secret, token, nowSeconds);\n}\n\nexport {\n StreamTokenPayload,\n type StreamTokenPayload as StreamTokenPayloadType,\n} from \"@opengeni/contracts\";\n","// @opengeni/runtime/sandbox — the desktop display-stack launcher (P4.1).\n//\n// The agent-loop-free home for `ensureDisplayStack`: the exec-launched,\n// flock-idempotent procedure that brings up the Channel-B pixel stack\n// (Xvfb :0 -> XFCE -> x11vnc -> websockify:6080 -> noVNC) on a live,\n// externally-owned box. It is driven over the box's `exec`/`execCommand` channel\n// (NOT a container CMD) so it re-establishes after a snapshot rollover / box\n// re-election, and it is safe to call from the API on a viewer op OR from the\n// agent turn — a second concurrent call serializes on the in-box flock and\n// no-ops when the stack is already up.\n//\n// It lives under @opengeni/runtime/sandbox so the API-direct control plane\n// (apps/api) and the worker (apps/worker) both pull it from the same single\n// agent-loop-free leaf.\n//\n// Productionized from the PROVEN spike (spikes/desktop-stack PASSED locally:\n// noVNC 200, WS 101 + RFB banner, OCR'd a secret off the framebuffer) + the\n// gVisor harness (V2 PASSED live on Modal: XTEST input read-back under runsc).\n\nimport { DESKTOP_STREAM_PORT } from \"@opengeni/contracts\";\nimport { parseExecResponseBanner } from \"./exec-banner\";\n\n// Re-export under the canonical name the module spec uses (STREAM_PORT) while\n// keeping DESKTOP_STREAM_PORT as the single source of truth (contracts).\nexport { DESKTOP_STREAM_PORT };\nexport const STREAM_PORT = DESKTOP_STREAM_PORT;\n\n// The whole-stack launch is bounded by the readiness gates inside the up-script\n// (four loops of 50 * 0.1s = ~5s each, ~20s worst case) PLUS the PAINTABLE-FRAME\n// gate we append (up to ~30s of scrot probing) PLUS first-boot XFCE/dbus + font-cache\n// warm-up on a cold gVisor box. 90s gives headroom over the spike's observed ~5-10s\n// warm path AND the cold-box paint warm-up without masking a genuine wedge.\nexport const DISPLAY_STACK_TIMEOUT_MS = 90_000;\n\n// Provider exec APIs use `yieldTimeMs` as an output-yield window, not a process\n// deadline. Poll often enough to surface stage telemetry while the command keeps\n// running, but let the in-box `timeout(1)` own termination (see\n// `boundedDisplayStackCommand`).\nconst DISPLAY_STACK_PROVIDER_YIELD_MS = 15_000;\nconst DISPLAY_STACK_PROVIDER_POLL_MS = 5_000;\nconst DISPLAY_STACK_TERMINATION_GRACE_MS = 5_000;\n// Provider cancellation is transport-level and may never settle. Keep the\n// JavaScript-side cleanup/drain bounded as well; a later caller either gets a\n// positive in-box quiescence proof or remains fail-closed, but it must never\n// wait forever on a provider promise.\nconst DISPLAY_STACK_CLEANUP_CALL_MS = 250;\nconst DISPLAY_STACK_DRAIN_GRACE_MS = 100;\n\n// PAINTABLE-FRAME gate: poll scrot up to this many times, this many seconds apart,\n// waiting for an actually-PAINTED frame before declaring the stack \"up\" (~30s worst case).\nconst PAINT_PROBE_ATTEMPTS = 150;\nconst PAINT_PROBE_INTERVAL_S = 0.2;\n\n// The paint FLOOR (bytes): a scrot at/above this size is a real painted desktop; below\n// it, the root is still unpainted and the frame would read as \"blank\" to the model.\n//\n// WHY A SIZE FLOOR, NOT NON-EMPTINESS (the bug this fixes): the old gate only checked\n// `[ -s frame.png ]` (non-empty). But an UNPAINTED root is never zero-byte — a fresh\n// Xvfb draws either the `-retro` weave stipple or (with `-retro` dropped) solid black,\n// and scrot happily encodes that as a small-but-non-empty PNG. So the old gate passed\n// the instant the VNC ports bound — MEASURED at ~1.4s (fast runc host) to several\n// seconds (cold gVisor) BEFORE xfdesktop finishes its first wallpaper paint — handing\n// the model the pre-paint frame. That pre-paint frame is exactly the \"blank/black\"\n// screenshot that 400s the model and blanks the human viewer.\n//\n// The sizes are unambiguous and were measured on the canonical desktop image (1280x800)\n// under runc — both the current staging image and a fresh local build:\n// painted XFCE desktop (blue-gradient wallpaper + panel + icons): ~210-222 KB\n// `-retro` stipple root (unpainted, current image): ~17 KB\n// solid-black root (unpainted, after we drop `-retro`): ~13.5 KB\n// 60 KB sits ~3.5x above every unpainted state and ~3.5x below a real paint — a wide,\n// unambiguous margin. It holds against BOTH the currently-deployed `-retro` image and\n// the `-retro`-dropped image this change ships, so the runtime gate is correct before\n// AND after the image rebuild lands. (Assumes the default ~1280x800 geometry; a larger\n// framebuffer only scales the painted frame further above the floor.)\nconst PAINT_MIN_BYTES = 60_000;\n\n// SETTLE gate (the gVisor staged-paint fix): crossing the 60 KB floor is necessary but\n// NOT sufficient. On a fast runc host the paint is atomic (black 13.5 KB -> full 209 KB\n// in one step, panel + icons included). On a STONE-COLD gVisor Modal box it is STAGED:\n// the wallpaper gradient paints and crosses 60 KB a beat BEFORE xfdesktop draws the\n// panel / launcher icons / logo. A screenshot in that window shows a bare teal wallpaper\n// with no panel — which the model correctly reports as \"graphical, but the desktop\n// hasn't fully loaded\" (VERIFIED live on staging: a cold-box turn's first agent\n// screenshot caught exactly this). So the gate additionally waits for the frame to\n// SETTLE: two consecutive probes both above the floor whose byte-sizes agree within\n// PAINT_SETTLE_DELTA_BYTES. A still-painting desktop grows between probes; a fully\n// rendered, static one is byte-stable (scrot -o omits the cursor, and the clock is\n// minute-precision, so consecutive captures of a settled desktop are near-identical).\n// This makes ensureDisplayStack block until the FULL desktop is up, so the turn's first\n// screenshot — which runs AFTER this gate — sees the panel, not a bare wallpaper.\nconst PAINT_SETTLE_DELTA_BYTES = 2_000;\n\n/** Desktop geometry for the framebuffer. v1 has no live RANDR: a resolution\n * change is a full down -> up restart (a separate op). */\nexport type DesktopGeometry = {\n width: number; // default 1280\n height: number; // default 800\n dpi: number; // default 96\n};\n\nexport const DEFAULT_DESKTOP_GEOMETRY: DesktopGeometry = { width: 1280, height: 800, dpi: 96 };\n\n/** Thrown when a stage of the launch script failed. exitCode 11/12/13 map to\n * Xvfb / x11vnc / websockify respectively (the stage that died); 14 is the\n * PAINTABLE-FRAME gate (ports listening but scrot still yields an empty frame —\n * the display is up but not actually painting). Degradation is surfaced as a\n * value to viewers by the caller; this error is for diagnostics. */\nexport class DisplayStackError extends Error {\n readonly exitCode: number;\n readonly stage: \"xvfb\" | \"x11vnc\" | \"websockify\" | \"paint\" | \"lock\" | \"timeout\" | \"unknown\";\n\n constructor(exitCode: number, output: string) {\n const stage =\n exitCode === 11\n ? \"xvfb\"\n : exitCode === 12\n ? \"x11vnc\"\n : exitCode === 13\n ? \"websockify\"\n : exitCode === 14\n ? \"paint\"\n : exitCode === 15\n ? \"lock\"\n : exitCode === 124 || /OPENGENI_DISPLAY_TIMEOUT/u.test(output)\n ? \"timeout\"\n : \"unknown\";\n super(\n `desktop display stack failed at stage \"${stage}\" (exit ${exitCode})${output ? `:\\n${output}` : \"\"}`,\n );\n this.name = \"DisplayStackError\";\n this.exitCode = exitCode;\n this.stage = stage;\n }\n}\n\n/** Thrown when the provider session cannot run commands (a headless-only\n * backend with neither `exec` nor `execCommand`). The desktop tier degrades to\n * Channel-A-only — the caller maps this to `DesktopStream.transport: null`. */\nexport class DisplayStackUnsupportedError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"DisplayStackUnsupportedError\";\n }\n}\n\n// The structural slice of a provider session we need: run a command (preferring\n// `exec` for the structured exit code, falling back to `execCommand`).\ntype ExecResultLike = {\n output?: string;\n stdout?: string;\n stderr?: string;\n exitCode?: number | null;\n sessionId?: number;\n session_id?: number;\n};\ntype ExecCapableSession = {\n state?: unknown;\n exec?: (args: {\n cmd: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n signal?: AbortSignal;\n }) => Promise<ExecResultLike>;\n execCommand?: (args: {\n cmd: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n signal?: AbortSignal;\n }) => Promise<string>;\n writeStdin?: (args: {\n sessionId: number;\n chars: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n signal?: AbortSignal;\n }) => Promise<ExecResultLike | string>;\n};\n\nexport type DisplayStackCallerKind = \"viewer\" | \"computer\" | \"unknown\";\nexport type DisplayStackClassification = \"cold\" | \"already_ready\" | \"contention\" | \"unknown\";\nexport type DisplayStackTelemetryStatus = \"started\" | \"waiting\" | \"completed\" | \"failed\";\n\n/** Secret-free, bounded-cardinality stage observation. Provider/sandbox IDs are\n * log correlation fields, never metric labels. */\nexport type DisplayStackTelemetryEvent = {\n type: \"display_stack.stage\";\n requestId: string;\n stage: string;\n status: DisplayStackTelemetryStatus;\n elapsedMs: number;\n source: \"host\" | \"sandbox\";\n classification: DisplayStackClassification;\n callerKind: DisplayStackCallerKind;\n sandboxId?: string;\n leaseEpoch?: number;\n providerSessionId?: number;\n};\n\nexport type DisplayStackTelemetryContext = {\n callerKind: DisplayStackCallerKind;\n sandboxId?: string;\n leaseEpoch?: number;\n};\n\nexport type EnsureDisplayStackOptions = {\n geometry?: DesktopGeometry;\n /** The exposed stream port; defaults to 6080. */\n port?: number;\n /** Whole-operation wall-clock timeout; defaults to DISPLAY_STACK_TIMEOUT_MS. */\n timeoutMs?: number;\n /** Caller correlation. Supplying it enables the default structured log sink. */\n telemetryContext?: DisplayStackTelemetryContext;\n /** Optional non-blocking telemetry sink (tests/embedders may replace logging). */\n onTelemetry?: (event: DisplayStackTelemetryEvent) => void | Promise<void>;\n};\n\nexport type EnsureDisplayStackResult = {\n /** The exposed port the stack listens on (websockify/noVNC). */\n port: number;\n geometry: DesktopGeometry;\n /** The raw `OPENGENI_DESKTOP_UP …` marker line, for diagnostics. Never\n * surfaced to viewers. */\n marker: string;\n};\n\n/**\n * Build the shell command that runs the idempotent up-script under an in-box\n * `flock`. The script is shipped in the image at /usr/local/bin/opengeni-desktop-up\n * (the canonical desktop image); we set the geometry/port env and wrap the call\n * in `flock` so two concurrent ensureDisplayStack callers (the API viewer op +\n * the agent turn, both racing after a rollover) serialize without a double\n * launch. The up-script's own per-stage PID guards make the second call a no-op.\n *\n * Exported (pure, side-effect-free) so the ensureDisplayStack unit test can\n * assert the exact command sequence without a live box.\n */\nexport function buildDisplayStackScript(options: EnsureDisplayStackOptions = {}): string {\n const geometry = options.geometry ?? DEFAULT_DESKTOP_GEOMETRY;\n const port = options.port ?? DESKTOP_STREAM_PORT;\n const env =\n `DESKTOP_W=${geometry.width} DESKTOP_H=${geometry.height} ` +\n `DESKTOP_DPI=${geometry.dpi} STREAM_PORT=${port}`;\n // FAST PRE-CHECK (lock-free) before the outer flock: if the exposed port and\n // x11vnc are ALREADY listening, the stack is up — print the marker and short-\n // circuit, so a no-op caller (the agent turn re-ensuring after a viewer attach\n // already brought the stack up) never serializes behind a lock holder and never\n // burns the 45s flock -w timeout. `nc -z` to the two loopback ports is the cheap\n // (sub-millisecond) \"already up?\" signal; on a miss we fall through to the\n // flock-wrapped up-script (which ALSO pre-checks under its own lock).\n //\n // flock -w bounds the wait so a wedged holder can't deadlock the caller; the\n // up-script itself ALSO takes the same lock (belt + braces) so this works even\n // against an older image that predates the wrapper.\n //\n // PAINTABLE-FRAME GATE (the completion criterion): the up-script's readiness gates\n // only assert that Xvfb answers xdpyinfo and that x11vnc:5900 + websockify:PORT are\n // LISTENING — NOT that the display actually PAINTS. On a stone-cold gVisor box (the\n // machine→sandbox swap-recovery turn always hits one), Xvfb answers and the VNC ports\n // bind ~1.4s (fast host) to several seconds BEFORE xfdesktop finishes its first\n // wallpaper paint. In that window a scrot yields a small UNPAINTED frame (the -retro\n // stipple or a solid-black root) — never zero-byte — which is exactly the \"blank/black\"\n // screenshot that 400s the model and blanks the human viewer. (VERIFIED locally: the\n // real xfdesktop backdrop window maps at full 1280x800 the whole time; the render is\n // never structurally broken — it is purely this pre-paint capture race.)\n //\n // We therefore chain a real scrot probe as the completion gate: after the up-script\n // reports success, poll scrot until it produces an actually-PAINTED frame — a PNG at or\n // above PAINT_MIN_BYTES, not merely NON-EMPTY (the old `[ -s ]` check passed on the\n // ~17 KB pre-paint stipple immediately; that WAS the bug) — bounded ~30s, and only THEN\n // let the command exit 0. If it never paints we exit 14 so the caller sees a typed\n // DisplayStackError(\"paint\") — an HONEST failure the worker can degrade + log, rather\n // than a false \"up\" that hands the model an unpainted image. `-ac` on Xvfb disables\n // access control so this root-side scrot reaches :0. Runs on a pre-check hit too (cheap\n // — an already-up display paints on the first probe). Lives in the runtime-built script\n // (not the baked image up-script) so it ships with the worker/api, no image rebuild —\n // and its size floor holds against the currently-deployed image too.\n const lockedLauncher =\n `ds_started=$1; fw=$2; ds_class=cold; ` +\n `ds_stage() { ds_now=$(date +%s%3N); echo \"OPENGENI_DISPLAY_STAGE stage=$1 elapsed_ms=$((ds_now-ds_started)) classification=$ds_class\"; }; ` +\n `fa=$(date +%s%3N); fd=$((fa-fw)); [ \"$fd\" -ge 50 ] && ds_class=contention; ` +\n `ds_stage outer_flock_acquired; ds_stage launcher_issued; ` +\n `env ${env} opengeni-desktop-up; urc=$?; ds_stage launcher_complete; exit \"$urc\"`;\n const bringUp =\n `if nc -z 127.0.0.1 ${port} >/dev/null 2>&1 && nc -z 127.0.0.1 5900 >/dev/null 2>&1; then ` +\n `ds_class=already_ready; ds_stage precheck_ready; ` +\n `echo \"OPENGENI_DESKTOP_UP port=${port} geometry=${geometry.width}x${geometry.height} dpi=${geometry.dpi} (precheck)\"; ` +\n `else ` +\n `ds_class=cold; ds_stage precheck_miss; ` +\n `mkdir -p /tmp/opengeni-desktop; ` +\n `ds_stage outer_flock_wait; fw=$(date +%s%3N); ` +\n // Command-mode flock is the supervisor: it retains the lock until the launcher\n // exits, while --close prevents Xvfb/XFCE/x11vnc/websockify from inheriting the\n // lock descriptor when the launcher intentionally detaches them.\n `flock --close --conflict-exit-code 75 --wait 45 /tmp/opengeni-desktop/up.outer.lock ` +\n `bash -c ${shellQuote(lockedLauncher)} _ \"$ds_started\" \"$fw\"; frc=$?; ` +\n `if [ \"$frc\" -eq 75 ]; then ds_stage outer_flock_timeout; echo \"OPENGENI_DESKTOP_LOCK_TIMEOUT\"; exit 15; fi; ` +\n `if [ \"$frc\" -ne 0 ]; then exit \"$frc\"; fi; ` +\n `fi`;\n const paintProbe =\n `ds_stage paint_probe_started; p=/tmp/opengeni-desktop/paint-probe.png; prev=0; ` +\n `for i in $(seq 1 ${PAINT_PROBE_ATTEMPTS}); do ` +\n // Capture, then measure the PNG byte-size. `wc -c < \"$p\"` yields a bare integer; a\n // failed scrot leaves sz=0. A frame at/above PAINT_MIN_BYTES is a real painted desktop.\n `if DISPLAY=:0 scrot -o \"$p\" >/dev/null 2>&1; then sz=$(wc -c < \"$p\" 2>/dev/null || echo 0); else sz=0; fi; ` +\n `rm -f \"$p\"; ` +\n // SETTLE: accept only when THIS probe AND the PREVIOUS one are both above the floor\n // and their sizes agree within PAINT_SETTLE_DELTA_BYTES — i.e., the paint has stopped\n // growing (the full desktop, panel + icons included, is up), not merely crossed the\n // floor mid-paint on a staged gVisor boot. ($sz/$prev/$d are bare shell — no ${}\n // braces — so JS leaves them for bash; ${PAINT_*} ARE JS constants and interpolate.)\n `if [ \"$sz\" -ge ${PAINT_MIN_BYTES} ] && [ \"$prev\" -ge ${PAINT_MIN_BYTES} ]; then d=$((sz-prev)); [ \"$d\" -lt 0 ] && d=$((0-d)); if [ \"$d\" -le ${PAINT_SETTLE_DELTA_BYTES} ]; then ds_stage paint_ready; break; fi; fi; ` +\n `prev=$sz; ` +\n // NOTE: NOT_PAINTING goes to STDOUT (not stderr): Modal is execCommand-only, so the\n // caller infers the outcome by string-matching the output — stdout is always captured.\n `if [ \"$i\" = \"${PAINT_PROBE_ATTEMPTS}\" ]; then ds_stage paint_failed; echo \"OPENGENI_DESKTOP_NOT_PAINTING scrot below ${PAINT_MIN_BYTES}B or unsettled after warmup (last=$sz)\"; exit 14; fi; ` +\n `sleep ${PAINT_PROBE_INTERVAL_S}; ` +\n `done`;\n const trace =\n `ds_started=$(date +%s%3N); ds_class=unknown; ` +\n `ds_stage() { ds_now=$(date +%s%3N); echo \"OPENGENI_DISPLAY_STAGE stage=$1 elapsed_ms=$((ds_now-ds_started)) classification=$ds_class\"; }; ` +\n `ds_stage script_entry`;\n return `${trace}; mkdir -p /tmp/opengeni-desktop; { ${bringUp} ; } && { ${paintProbe} ; }`;\n}\n\nfunction execResultOutput(result: ExecResultLike | string): string {\n if (typeof result === \"string\") {\n return result;\n }\n return [result.output, result.stderr, result.stdout]\n .filter((v): v is string => typeof v === \"string\" && v.length > 0)\n .join(\"\\n\");\n}\n\nfunction execResultExitCode(result: ExecResultLike | string): number | null {\n if (typeof result === \"string\") {\n const banner = parseExecResponseBanner(result);\n if (banner.kind === \"exited\") return banner.exitCode;\n // A malformed/truncated SDK response must not fall through to command-body\n // marker inference, because its real terminal status is unknowable.\n return banner.kind === \"invalid\" ? -1 : null;\n }\n return typeof result.exitCode === \"number\" ? result.exitCode : null;\n}\n\nfunction execResultSessionId(result: ExecResultLike | string): number | null {\n if (typeof result === \"string\") {\n const banner = parseExecResponseBanner(result);\n return banner.kind === \"running\" ? banner.sessionId : null;\n }\n const value = result.sessionId ?? result.session_id;\n return typeof value === \"number\" ? value : null;\n}\n\nfunction shellQuote(value: string): string {\n return `'${value.replaceAll(\"'\", `'\"'\"'`)}'`;\n}\n\n/** The provider yield is not a deadline. Bound the actual lock-owning process in\n * the box, leaving time for TERM/KILL cleanup and the final exit result to reach\n * the caller before the outer JavaScript deadline. */\nfunction boundedDisplayStackCommand(\n command: string,\n timeoutMs: number,\n markerPath: string,\n markerToken: string,\n): string {\n const graceMs = Math.min(\n DISPLAY_STACK_TERMINATION_GRACE_MS,\n Math.max(20, Math.floor(timeoutMs / 4)),\n );\n const commandTimeoutMs = Math.max(1, timeoutMs - graceMs);\n const killAfterMs = Math.max(1, Math.floor(graceMs / 2));\n const commandTimeoutSeconds = (commandTimeoutMs / 1_000).toFixed(3);\n const killAfterSeconds = (killAfterMs / 1_000).toFixed(3);\n const managedCommand =\n `marker=${shellQuote(markerPath)}; token=${shellQuote(markerToken)}; ` +\n `cancel=\"$marker.cancelled\"; ` +\n `if [ -e \"$cancel\" ]; then echo \"OPENGENI_DISPLAY_CANCELLED\"; exit 124; fi; ` +\n `pid=$$; pgid=$(ps -o pgid= -p \"$pid\" 2>/dev/null | tr -d ' '); ` +\n `start=$(awk '{print $22}' \"/proc/$pid/stat\" 2>/dev/null || true); ` +\n `printf '%s %s %s %s\\\\n' \"$pid\" \"$pgid\" \"$start\" \"$token\" >\"$marker\"; ` +\n `if [ -e \"$cancel\" ]; then rm -f \"$marker\"; echo \"OPENGENI_DISPLAY_CANCELLED\"; exit 124; fi; ` +\n // Do not install an EXIT trap: GNU timeout may terminate this supervisor\n // while descendants survive. The marker must remain for the independent\n // cleanup command to find and kill that orphaned process group.\n `bash -c ${shellQuote(command)}; rc=$?; rm -f \"$marker\"; exit \"$rc\"`;\n return (\n // Do not use timeout --foreground here. The display command contains flock\n // supervisors and launcher children; default process-group mode is required\n // so a deadline cannot leave a waiter alive to acquire the lock and launch\n // after the caller has already failed.\n `timeout --signal=TERM --kill-after=${killAfterSeconds}s ${commandTimeoutSeconds}s ` +\n `bash -c ${shellQuote(managedCommand)}; rc=$?; ` +\n // Exit 137 is also a normal SIGKILL/OOM/provider-termination result. Only\n // attach timeout attribution to the exit code that this wrapper positively\n // knows GNU timeout emitted for its own deadline. A kill-after escalation\n // may still be reported as 137, but it is not safe to infer that here.\n `if [ \"$rc\" -eq 124 ]; then ` +\n `echo \"OPENGENI_DISPLAY_TIMEOUT elapsed_ms=${commandTimeoutMs}\"; fi; exit \"$rc\"`\n );\n}\n\nclass DisplayStackWallTimeoutError extends Error {}\nclass DisplayStackOperationFencedError extends Error {}\n\ntype PendingDisplayStackCleanup = {\n markerPath: string;\n markerToken: string;\n};\n\ntype DisplayStackOperationWaiter = {\n epoch: number;\n settled: boolean;\n resolve: () => void;\n reject: (error: unknown) => void;\n timer?: ReturnType<typeof setTimeout>;\n};\n\ntype DisplayStackOperationState = {\n /** Incremented before a timed-out operation is reported to its caller. */\n epoch: number;\n /** One provider operation at a time for each physical sandbox. */\n owner: DisplayStackOperationWaiter | null;\n /** Calls that started in the current epoch but are waiting for admission. */\n waiters: DisplayStackOperationWaiter[];\n /** Raw provider calls from fenced operations; only the in-box proof gates retries. */\n inFlight: Set<Promise<unknown>>;\n /** A bounded advisory drain for provider calls that may never settle. */\n drain: Promise<void> | null;\n /** Timed-out in-box processes that still need an independent kill/verify. */\n pendingCleanup: Map<string, PendingDisplayStackCleanup>;\n /** True only after every timed-out process has a positive quiescence proof. */\n physicallyQuiescent: boolean;\n};\n\nconst stableDisplayStackOperationStates = new Map<string, DisplayStackOperationState>();\nconst stableSessionStateOperationStates = new WeakMap<object, DisplayStackOperationState>();\nconst displayStackOperationStates = new WeakMap<object, DisplayStackOperationState>();\n\nfunction asRecord(value: unknown): Record<string, unknown> | null {\n return value !== null && typeof value === \"object\" ? (value as Record<string, unknown>) : null;\n}\n\nfunction nonEmptyString(value: unknown): string | null {\n return typeof value === \"string\" && value.length > 0 ? value : null;\n}\n\nfunction readSessionState(session: unknown): unknown {\n try {\n return asRecord(session)?.state;\n } catch {\n return undefined;\n }\n}\n\nfunction stableSandboxIdentity(\n session: unknown,\n options: EnsureDisplayStackOptions,\n): string | null {\n const explicit = nonEmptyString(options.telemetryContext?.sandboxId);\n if (explicit) return `sandbox:${explicit}`;\n\n const sessionRecord = asRecord(session);\n const state = asRecord(readSessionState(session));\n const providerState = state ? asRecord(state.providerState) : null;\n const candidates = [sessionRecord, state, providerState];\n const fields = [\n \"sandboxId\",\n \"instanceId\",\n \"agentId\",\n \"hostId\",\n \"containerId\",\n \"id\",\n \"workspaceRootPath\",\n ];\n for (const candidate of candidates) {\n if (!candidate) continue;\n for (const field of fields) {\n const value = nonEmptyString(candidate[field]);\n if (value) return `sandbox:${value}`;\n }\n }\n return null;\n}\n\nfunction newOperationState(): DisplayStackOperationState {\n return {\n epoch: 0,\n owner: null,\n waiters: [],\n inFlight: new Set(),\n drain: null,\n pendingCleanup: new Map(),\n physicallyQuiescent: true,\n };\n}\n\nfunction operationState(\n session: unknown,\n options: EnsureDisplayStackOptions,\n): DisplayStackOperationState | null {\n if ((typeof session !== \"object\" || session === null) && typeof session !== \"function\") {\n return null;\n }\n const stableKey = stableSandboxIdentity(session, options);\n if (stableKey) {\n let state = stableDisplayStackOperationStates.get(stableKey);\n if (!state) {\n state = newOperationState();\n stableDisplayStackOperationStates.set(stableKey, state);\n }\n return state;\n }\n\n // Modal resumed wrappers share their provider `state` object even when the\n // wrapper instance is reconstructed. This is a useful stable fallback when\n // an older/provider-specific state shape has no named identity field.\n const providerState = readSessionState(session);\n if (providerState && (typeof providerState === \"object\" || typeof providerState === \"function\")) {\n const stateKey = providerState as object;\n let state = stableSessionStateOperationStates.get(stateKey);\n if (!state) {\n state = newOperationState();\n stableSessionStateOperationStates.set(stateKey, state);\n }\n return state;\n }\n\n const key = session as object;\n let state = displayStackOperationStates.get(key);\n if (!state) {\n state = newOperationState();\n displayStackOperationStates.set(key, state);\n }\n return state;\n}\n\nfunction settleOperationWaiter(waiter: DisplayStackOperationWaiter, error?: unknown): void {\n if (waiter.settled) return;\n waiter.settled = true;\n if (waiter.timer) clearTimeout(waiter.timer);\n if (error === undefined) waiter.resolve();\n else waiter.reject(error);\n}\n\nfunction pumpOperationWaiters(state: DisplayStackOperationState): void {\n if (state.owner) return;\n while (state.waiters.length > 0) {\n const waiter = state.waiters.shift()!;\n if (waiter.settled) continue;\n if (waiter.epoch !== state.epoch) {\n settleOperationWaiter(waiter, new DisplayStackOperationFencedError());\n continue;\n }\n state.owner = waiter;\n settleOperationWaiter(waiter);\n return;\n }\n}\n\nfunction acquireOperation(\n state: DisplayStackOperationState,\n deadline: number,\n): Promise<() => void> {\n return new Promise<() => void>((resolve, reject) => {\n const waiter: DisplayStackOperationWaiter = {\n epoch: state.epoch,\n settled: false,\n resolve: () => {\n resolve(() => {\n if (state.owner !== waiter) return;\n state.owner = null;\n pumpOperationWaiters(state);\n });\n },\n reject,\n };\n state.waiters.push(waiter);\n const remainingMs = deadline - monotonicNow();\n if (remainingMs <= 0) {\n waiter.settled = true;\n state.waiters = state.waiters.filter((candidate) => candidate !== waiter);\n reject(new DisplayStackWallTimeoutError());\n return;\n }\n waiter.timer = setTimeout(() => {\n if (waiter.settled) return;\n waiter.settled = true;\n state.waiters = state.waiters.filter((candidate) => candidate !== waiter);\n reject(new DisplayStackWallTimeoutError());\n }, remainingMs);\n waiter.timer.unref?.();\n pumpOperationWaiters(state);\n });\n}\n\nfunction invalidateQueuedOperations(state: DisplayStackOperationState, epoch: number): void {\n const retained: DisplayStackOperationWaiter[] = [];\n for (const waiter of state.waiters) {\n if (waiter.epoch === epoch)\n settleOperationWaiter(waiter, new DisplayStackOperationFencedError());\n else retained.push(waiter);\n }\n state.waiters = retained;\n}\n\nfunction monotonicNow(): number {\n return performance.now();\n}\n\nasync function waitForFencedOperation(\n state: DisplayStackOperationState,\n deadline: number,\n): Promise<boolean> {\n const drain = state.drain;\n if (!drain) return true;\n try {\n await beforeDeadline(drain, deadline);\n } catch {\n return false;\n }\n if (state.drain === drain) state.drain = null;\n return true;\n}\n\nfunction trackProviderCall<T>(\n state: DisplayStackOperationState | null,\n promise: Promise<T>,\n): Promise<T> {\n if (!state) return promise;\n state.inFlight.add(promise);\n void promise.then(\n () => state.inFlight.delete(promise),\n () => state.inFlight.delete(promise),\n );\n return promise;\n}\n\nfunction boundedProviderDrain(pending: Promise<unknown>[]): Promise<void> {\n if (pending.length === 0) return Promise.resolve();\n return new Promise<void>((resolve) => {\n let remaining = pending.length;\n let timer: ReturnType<typeof setTimeout> | undefined;\n const finish = () => {\n if (timer) clearTimeout(timer);\n resolve();\n };\n timer = setTimeout(finish, DISPLAY_STACK_DRAIN_GRACE_MS);\n timer.unref?.();\n for (const promise of pending) {\n void promise.then(\n () => {\n remaining -= 1;\n if (remaining === 0) finish();\n },\n () => {\n remaining -= 1;\n if (remaining === 0) finish();\n },\n );\n }\n });\n}\n\nfunction fenceOperation(\n state: DisplayStackOperationState | null,\n epoch: number,\n abortController: AbortController,\n cleanup: PendingDisplayStackCleanup,\n): void {\n abortController.abort(new DisplayStackWallTimeoutError());\n if (!state) return;\n\n if (state.epoch !== epoch) return;\n\n state.pendingCleanup.set(cleanup.markerToken, cleanup);\n state.physicallyQuiescent = false;\n invalidateQueuedOperations(state, epoch);\n\n // Advance the ownership epoch BEFORE the timeout error is surfaced. Any\n // completion from this operation is now stale. A retry is gated by the\n // independent in-box cleanup proof, not by an SDK promise that may hang.\n state.epoch += 1;\n const pending = [...state.inFlight];\n const drain = boundedProviderDrain(pending);\n state.drain = state.drain ? Promise.all([state.drain, drain]).then(() => undefined) : drain;\n // A provider transport can retain an unresolved promise forever. Once the\n // bounded advisory window ends, release those promises from the registry;\n // the tombstone and in-box process-group proof remain the authoritative fence.\n void drain.then(() => {\n for (const promise of pending) state.inFlight.delete(promise);\n });\n}\n\nfunction assertCurrentOperation(state: DisplayStackOperationState | null, epoch: number): void {\n if (state && state.epoch !== epoch) throw new DisplayStackOperationFencedError();\n}\n\nasync function beforeDeadline<T>(\n promise: Promise<T>,\n deadline: number,\n now: () => number = monotonicNow,\n): Promise<T> {\n const remainingMs = deadline - now();\n if (remainingMs <= 0) throw new DisplayStackWallTimeoutError();\n let timer: ReturnType<typeof setTimeout> | undefined;\n try {\n return await Promise.race([\n promise,\n new Promise<T>((_resolve, reject) => {\n timer = setTimeout(() => reject(new DisplayStackWallTimeoutError()), remainingMs);\n timer.unref?.();\n }),\n ]);\n } finally {\n if (timer) clearTimeout(timer);\n }\n}\n\nfunction displayStackCleanupCommand(markerPath: string, markerToken: string): string {\n const marker = shellQuote(markerPath);\n const token = shellQuote(markerToken);\n // The launcher writes pid, process-group id, /proc start time, and a random\n // token before it starts the lock-owning command. The start-time check keeps\n // a stale marker from killing an unrelated process after PID reuse. The\n // process group is the authority: a provider session can disappear while\n // descendants of the shell continue to hold the display lock.\n const script =\n `marker=${marker}; token=${token}; ` +\n `cancel=\"$marker.cancelled\"; ` +\n `: >\"$cancel\" || { echo \"OPENGENI_DISPLAY_CLEANUP status=invalid\"; exit 75; }; ` +\n `if [ ! -r \"$marker\" ]; then echo \"OPENGENI_DISPLAY_CLEANUP status=stopped\"; exit 0; fi; ` +\n `read -r pid pgid start actual <\"$marker\" || { echo \"OPENGENI_DISPLAY_CLEANUP status=invalid\"; exit 75; }; ` +\n `[ \"$actual\" = \"$token\" ] || { echo \"OPENGENI_DISPLAY_CLEANUP status=invalid\"; exit 75; }; ` +\n `case \"$pid\" in ''|*[!0-9]*) echo \"OPENGENI_DISPLAY_CLEANUP status=invalid\"; exit 75;; esac; ` +\n `case \"$pgid\" in ''|*[!0-9]*) echo \"OPENGENI_DISPLAY_CLEANUP status=invalid\"; exit 75;; esac; ` +\n `case \"$start\" in ''|*[!0-9]*) echo \"OPENGENI_DISPLAY_CLEANUP status=invalid\"; exit 75;; esac; ` +\n `current=$(awk '{print $22}' \"/proc/$pid/stat\" 2>/dev/null || true); ` +\n `if [ -z \"$current\" ] || [ \"$current\" != \"$start\" ]; then rm -f \"$marker\"; echo \"OPENGENI_DISPLAY_CLEANUP status=stopped\"; exit 0; fi; ` +\n `kill -TERM -- \"-$pgid\" 2>/dev/null || true; ` +\n `for i in $(seq 1 10); do ` +\n `if ! kill -0 -- \"-$pgid\" 2>/dev/null; then rm -f \"$marker\"; echo \"OPENGENI_DISPLAY_CLEANUP status=stopped\"; exit 0; fi; ` +\n `sleep 0.05; done; ` +\n `kill -KILL -- \"-$pgid\" 2>/dev/null || true; ` +\n `for i in $(seq 1 20); do ` +\n `if ! kill -0 -- \"-$pgid\" 2>/dev/null; then rm -f \"$marker\"; echo \"OPENGENI_DISPLAY_CLEANUP status=stopped\"; exit 0; fi; ` +\n `sleep 0.05; done; ` +\n `echo \"OPENGENI_DISPLAY_CLEANUP status=alive\"; exit 75`;\n return `timeout --signal=TERM --kill-after=0.2s 1.5s bash -c ${shellQuote(script)}`;\n}\n\nasync function runProviderCommandToDeadline(\n session: ExecCapableSession,\n command: string,\n deadline: number,\n): Promise<ExecResultLike | string> {\n const controller = new AbortController();\n let result: ExecResultLike | string = await beforeDeadline(\n Promise.resolve(\n typeof session.exec === \"function\"\n ? session.exec({\n cmd: command,\n yieldTimeMs: Math.min(500, DISPLAY_STACK_CLEANUP_CALL_MS),\n maxOutputTokens: 4_000,\n signal: controller.signal,\n })\n : session.execCommand!({\n cmd: command,\n yieldTimeMs: Math.min(500, DISPLAY_STACK_CLEANUP_CALL_MS),\n maxOutputTokens: 4_000,\n signal: controller.signal,\n }),\n ),\n deadline,\n );\n\n let providerSessionId = execResultSessionId(result);\n while (providerSessionId !== null) {\n if (typeof session.writeStdin !== \"function\") {\n throw new Error(\"display cleanup provider yielded without writeStdin\");\n }\n const remainingMs = deadline - monotonicNow();\n if (remainingMs <= 1) throw new DisplayStackWallTimeoutError();\n result = await beforeDeadline(\n session.writeStdin({\n sessionId: providerSessionId,\n chars: \"\",\n yieldTimeMs: Math.max(1, Math.min(250, remainingMs - 1)),\n maxOutputTokens: 4_000,\n signal: controller.signal,\n }),\n deadline,\n );\n providerSessionId = execResultSessionId(result);\n }\n return result;\n}\n\nasync function interruptProviderProcess(\n session: ExecCapableSession,\n providerSessionId: number | null,\n deadline: number,\n): Promise<void> {\n if (providerSessionId === null || typeof session.writeStdin !== \"function\") return;\n try {\n // This is an advisory provider-level interrupt. The marker/PGID cleanup\n // below remains authoritative because Modal 0.13.3 ignores AbortSignal.\n await beforeDeadline(\n session.writeStdin({\n sessionId: providerSessionId,\n chars: \"\\u0003\",\n yieldTimeMs: 100,\n maxOutputTokens: 256,\n }),\n deadline,\n );\n } catch {\n // A hung provider write is not evidence either way; in-box cleanup decides.\n }\n}\n\nasync function cleanupDisplayStackProcess(\n session: ExecCapableSession,\n pending: PendingDisplayStackCleanup,\n deadline: number,\n): Promise<boolean> {\n try {\n const result = await runProviderCommandToDeadline(\n session,\n displayStackCleanupCommand(pending.markerPath, pending.markerToken),\n deadline,\n );\n const output = execResultOutput(result);\n const status = /OPENGENI_DISPLAY_CLEANUP status=(stopped|absent|alive|invalid)/u.exec(\n output,\n )?.[1];\n return status === \"stopped\";\n } catch {\n return false;\n }\n}\n\nasync function reconcilePendingCleanup(\n session: ExecCapableSession,\n state: DisplayStackOperationState,\n deadline: number,\n): Promise<boolean> {\n const entries = [...state.pendingCleanup.values()];\n if (entries.length === 0) {\n state.physicallyQuiescent = true;\n return true;\n }\n const results = await Promise.all(\n entries.map(async (pending) => ({\n pending,\n stopped: await cleanupDisplayStackProcess(session, pending, deadline),\n })),\n );\n for (const { pending, stopped } of results) {\n if (stopped) state.pendingCleanup.delete(pending.markerToken);\n }\n state.physicallyQuiescent = state.pendingCleanup.size === 0;\n return state.physicallyQuiescent;\n}\n\nfunction requestId(): string {\n return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;\n}\n\nfunction telemetryReporter(\n options: EnsureDisplayStackOptions,\n started: number,\n now: () => number = monotonicNow,\n) {\n const id = requestId();\n const context = options.telemetryContext;\n const sink =\n options.onTelemetry ??\n (context\n ? (event: DisplayStackTelemetryEvent) =>\n console.info(`[display-stack] ${JSON.stringify(event)}`)\n : undefined);\n const emittedSandboxStages = new Set<string>();\n\n const emit = (\n stage: string,\n status: DisplayStackTelemetryStatus,\n fields: {\n source?: \"host\" | \"sandbox\";\n elapsedMs?: number;\n classification?: DisplayStackClassification;\n providerSessionId?: number;\n } = {},\n ) => {\n if (!sink) return;\n const event: DisplayStackTelemetryEvent = {\n type: \"display_stack.stage\",\n requestId: id,\n stage,\n status,\n elapsedMs: fields.elapsedMs ?? now() - started,\n source: fields.source ?? \"host\",\n classification: fields.classification ?? \"unknown\",\n callerKind: context?.callerKind ?? \"unknown\",\n ...(context?.sandboxId ? { sandboxId: context.sandboxId } : {}),\n ...(context?.leaseEpoch !== undefined ? { leaseEpoch: context.leaseEpoch } : {}),\n ...(fields.providerSessionId !== undefined\n ? { providerSessionId: fields.providerSessionId }\n : {}),\n };\n try {\n void Promise.resolve(sink(event)).catch(() => undefined);\n } catch {\n // Telemetry must never affect display readiness.\n }\n };\n\n const emitSandboxStages = (output: string) => {\n for (const match of output.matchAll(\n /OPENGENI_(?:DISPLAY|DESKTOP)_STAGE stage=([a-z0-9_]+) elapsed_ms=(\\d+)(?: classification=(cold|already_ready|contention|unknown))?/gu,\n )) {\n const [line, stage, elapsed, classification] = match;\n if (!stage || !elapsed || emittedSandboxStages.has(line)) continue;\n emittedSandboxStages.add(line);\n emit(stage, \"completed\", {\n source: \"sandbox\",\n elapsedMs: Number(elapsed),\n classification: (classification as DisplayStackClassification | undefined) ?? \"unknown\",\n });\n }\n };\n\n return { emit, emitSandboxStages };\n}\n\n// Parse the exit code the up-script signals via its trailing marker. When we ran\n// through `exec` we have the real exitCode; when we only had `execCommand` (a\n// bare string), we infer success from the OPENGENI_DESKTOP_UP marker and infer\n// the failing stage from the stage-failure message the script prints to stderr.\nfunction inferExitFromOutput(output: string): number {\n if (/OPENGENI_DISPLAY_TIMEOUT/.test(output)) {\n return 124;\n }\n if (/OPENGENI_DESKTOP_LOCK_TIMEOUT/.test(output)) {\n return 15;\n }\n // Check the PAINTABLE-FRAME failure FIRST: on that path the up-script already\n // printed OPENGENI_DESKTOP_UP (bring-up succeeded) and THEN the paint gate failed,\n // so both markers are present — the NOT_PAINTING one is the authoritative outcome.\n // (Modal is execCommand-only, so this string-inference path is the live one.)\n if (/OPENGENI_DESKTOP_NOT_PAINTING/.test(output)) {\n return 14;\n }\n if (/OPENGENI_DESKTOP_UP\\b/.test(output)) {\n return 0;\n }\n if (/Xvfb failed to come up/.test(output)) {\n return 11;\n }\n if (/x11vnc failed on/.test(output)) {\n return 12;\n }\n if (/websockify failed on/.test(output)) {\n return 13;\n }\n return -1;\n}\n\n/**\n * Idempotently bring up the desktop display stack on the live box. Safe to call\n * N times (the in-box flock + the up-script's PID guards make a second call a\n * no-op). Resolves with the exposed port + geometry on success; throws\n * `DisplayStackError` on a stage failure and `DisplayStackUnsupportedError` when\n * the session cannot run commands.\n *\n * `session` is the externally-owned provider session (the `established.session`\n * from establishSandboxSessionFromEnvelope, or any SandboxSessionLike). We\n * prefer `session.exec` (structured `{exitCode}`) and fall back to\n * `session.execCommand` (bare string), inferring success from the up-script's\n * marker line in the fallback case.\n */\nexport async function ensureDisplayStack(\n session: unknown,\n options: EnsureDisplayStackOptions = {},\n): Promise<EnsureDisplayStackResult> {\n const s = session as ExecCapableSession;\n if (typeof s?.exec !== \"function\" && typeof s?.execCommand !== \"function\") {\n throw new DisplayStackUnsupportedError(\n \"provider session cannot run commands (no exec/execCommand) — desktop tier unavailable\",\n );\n }\n\n const geometry = options.geometry ?? DEFAULT_DESKTOP_GEOMETRY;\n const port = options.port ?? DESKTOP_STREAM_PORT;\n const timeoutMs = options.timeoutMs ?? DISPLAY_STACK_TIMEOUT_MS;\n if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {\n throw new RangeError(\"ensureDisplayStack timeoutMs must be a positive finite number\");\n }\n const started = monotonicNow();\n const deadline = started + timeoutMs;\n const telemetry = telemetryReporter(options, started, monotonicNow);\n const operationToken = requestId();\n const markerPath = `/tmp/opengeni-desktop/display-stack-${operationToken}.pid`;\n const cmd = boundedDisplayStackCommand(\n buildDisplayStackScript({ geometry, port }),\n timeoutMs,\n markerPath,\n operationToken,\n );\n const outputParts: string[] = [];\n const state = operationState(session, options);\n let release: (() => void) | undefined;\n if (state) {\n try {\n release = await acquireOperation(state, deadline);\n } catch (error) {\n if (\n error instanceof DisplayStackWallTimeoutError ||\n error instanceof DisplayStackOperationFencedError\n ) {\n throw new DisplayStackError(\n 124,\n \"OPENGENI_DISPLAY_TIMEOUT display operation admission was fenced\",\n );\n }\n throw error;\n }\n }\n\n try {\n if (state && !state.physicallyQuiescent) {\n const cleanupDeadline = monotonicNow() + DISPLAY_STACK_CLEANUP_CALL_MS;\n const quiesced = await reconcilePendingCleanup(s, state, cleanupDeadline);\n if (!quiesced) {\n // Fail closed. A new session wrapper may share this physical sandbox,\n // but without a positive marker/PGID proof it must not issue overlapping\n // display work merely because the old SDK promise remains unresolved.\n throw new DisplayStackError(\n 124,\n \"OPENGENI_DISPLAY_TIMEOUT physical cleanup is still pending; retry is fenced\",\n );\n }\n }\n const epoch = state?.epoch ?? 0;\n const abortController = new AbortController();\n let activeProviderSessionId: number | null = null;\n telemetry.emit(\"request_entry\", \"started\");\n telemetry.emit(\"exec_issued\", \"started\");\n\n try {\n const initialYieldMs = Math.max(1, Math.min(DISPLAY_STACK_PROVIDER_YIELD_MS, timeoutMs - 1));\n const initialExec: Promise<ExecResultLike | string> = trackProviderCall<\n ExecResultLike | string\n >(\n state,\n Promise.resolve(\n typeof s.exec === \"function\"\n ? s.exec({\n cmd,\n yieldTimeMs: initialYieldMs,\n maxOutputTokens: 20_000,\n signal: abortController.signal,\n })\n : s.execCommand!({\n cmd,\n yieldTimeMs: initialYieldMs,\n maxOutputTokens: 20_000,\n signal: abortController.signal,\n }),\n ),\n );\n let result: ExecResultLike | string = await beforeDeadline(\n initialExec,\n deadline,\n monotonicNow,\n );\n assertCurrentOperation(state, epoch);\n let chunk = execResultOutput(result);\n outputParts.push(chunk);\n telemetry.emitSandboxStages(chunk);\n telemetry.emit(\"provider_first_result\", \"completed\");\n\n let providerSessionId = execResultSessionId(result);\n activeProviderSessionId = providerSessionId;\n while (providerSessionId !== null) {\n telemetry.emit(\"provider_yield\", \"waiting\", { providerSessionId });\n if (typeof s.writeStdin !== \"function\") {\n throw new DisplayStackError(\n -1,\n `${outputParts.join(\"\\n\")}\\nprovider yielded process ${providerSessionId} but exposes no writeStdin poll surface`,\n );\n }\n assertCurrentOperation(state, epoch);\n const remainingMs = deadline - monotonicNow();\n if (remainingMs <= 1) throw new DisplayStackWallTimeoutError();\n const pollYieldMs = Math.max(1, Math.min(DISPLAY_STACK_PROVIDER_POLL_MS, remainingMs - 1));\n result = await beforeDeadline(\n trackProviderCall(\n state,\n s.writeStdin({\n sessionId: providerSessionId,\n chars: \"\",\n yieldTimeMs: pollYieldMs,\n maxOutputTokens: 20_000,\n signal: abortController.signal,\n }),\n ),\n deadline,\n monotonicNow,\n );\n assertCurrentOperation(state, epoch);\n chunk = execResultOutput(result);\n outputParts.push(chunk);\n telemetry.emitSandboxStages(chunk);\n providerSessionId = execResultSessionId(result);\n activeProviderSessionId = providerSessionId;\n }\n\n const output = outputParts.join(\"\\n\");\n const exitCode = execResultExitCode(result) ?? inferExitFromOutput(output);\n telemetry.emit(\"process_complete\", exitCode === 0 ? \"completed\" : \"failed\");\n if (exitCode !== 0) {\n throw new DisplayStackError(exitCode, output);\n }\n\n const marker = (output.match(/OPENGENI_DESKTOP_UP[^\\n]*/) ?? [\"\"])[0];\n telemetry.emit(\"readiness_complete\", \"completed\");\n return { port, geometry, marker };\n } catch (error) {\n if (\n error instanceof DisplayStackWallTimeoutError ||\n error instanceof DisplayStackOperationFencedError\n ) {\n const pendingCleanup: PendingDisplayStackCleanup = {\n markerPath,\n markerToken: operationToken,\n };\n fenceOperation(state, epoch, abortController, pendingCleanup);\n const cleanupDeadline = monotonicNow() + DISPLAY_STACK_CLEANUP_CALL_MS;\n telemetry.emit(\"process_cleanup\", \"started\");\n await interruptProviderProcess(\n s,\n activeProviderSessionId,\n Math.min(cleanupDeadline, monotonicNow() + 50),\n );\n let quiesced = false;\n if (state) {\n quiesced = await reconcilePendingCleanup(s, state, cleanupDeadline);\n if (!quiesced) {\n await waitForFencedOperation(\n state,\n Math.min(cleanupDeadline, monotonicNow() + DISPLAY_STACK_DRAIN_GRACE_MS),\n );\n }\n } else {\n quiesced = await cleanupDisplayStackProcess(s, pendingCleanup, cleanupDeadline);\n }\n telemetry.emit(\"process_cleanup\", quiesced ? \"completed\" : \"failed\");\n const output = `${outputParts.join(\"\\n\")}\\nOPENGENI_DISPLAY_TIMEOUT wall_ms=${timeoutMs}`;\n telemetry.emit(\"wall_deadline\", \"failed\");\n throw new DisplayStackError(124, output);\n }\n telemetry.emit(\"request_failed\", \"failed\");\n throw error;\n }\n } finally {\n release?.();\n }\n}\n\n/** Tear the stack down (down-script). Best-effort; never throws on a missing\n * process. Used by the geometry-change restart and cold/drain. */\nexport async function tearDownDisplayStack(session: unknown): Promise<void> {\n const s = session as ExecCapableSession;\n if (typeof s?.exec === \"function\") {\n await s.exec({ cmd: \"opengeni-desktop-down\", yieldTimeMs: 10_000, maxOutputTokens: 4_000 });\n return;\n }\n if (typeof s?.execCommand === \"function\") {\n await s.execCommand({\n cmd: \"opengeni-desktop-down\",\n yieldTimeMs: 10_000,\n maxOutputTokens: 4_000,\n });\n }\n}\n","// The SDK's execCommand/writeStdin fallback returns a formatted response with\n// provider metadata followed by an `Output:` delimiter and command-controlled\n// output. Terminal status is authoritative only in the metadata header; the\n// output body is untrusted and may contain exact copies of SDK banner lines.\n\nconst EXEC_BANNER_HEADER_MAX_CHARS = 16 * 1024;\nconst OUTPUT_DELIMITER = /\\r?\\nOutput:\\r?\\n/u;\nconst SDK_METADATA_LINE =\n /^(?:Chunk ID:|Wall time:|Original token count:|Output:|Process (?:running with session ID|exited with code))/mu;\nconst RUNNING_LINE = /^Process running with session ID (\\d+)$/u;\nconst EXITED_LINE = /^Process exited with code (-?\\d+)$/u;\nconst PROCESS_STATUS_PREFIX = /^Process (?:running with session ID|exited with code)/u;\n\nexport type ExecResponseBanner =\n | { kind: \"absent\" }\n | { kind: \"invalid\" }\n | { kind: \"running\"; sessionId: number }\n | { kind: \"exited\"; exitCode: number };\n\n/** Parse exactly one terminal status from the SDK metadata header. Responses\n * that resemble SDK output but lack a complete delimiter/header are invalid,\n * while raw provider output without SDK metadata remains `absent` so callers\n * may use their provider-specific body markers. */\nexport function parseExecResponseBanner(raw: string): ExecResponseBanner {\n const delimiter = OUTPUT_DELIMITER.exec(raw);\n if (!delimiter) {\n return SDK_METADATA_LINE.test(raw) ? { kind: \"invalid\" } : { kind: \"absent\" };\n }\n if (delimiter.index > EXEC_BANNER_HEADER_MAX_CHARS) return { kind: \"invalid\" };\n\n const header = raw.slice(0, delimiter.index);\n const status: Array<{ kind: \"running\"; value: string } | { kind: \"exited\"; value: string }> = [];\n for (const line of header.split(/\\r?\\n/u)) {\n const running = RUNNING_LINE.exec(line);\n if (running) {\n status.push({ kind: \"running\", value: running[1]! });\n continue;\n }\n const exited = EXITED_LINE.exec(line);\n if (exited) {\n status.push({ kind: \"exited\", value: exited[1]! });\n continue;\n }\n // A status-looking metadata line that is malformed is ambiguous and must\n // not be normalized into another process identity or terminal result.\n if (PROCESS_STATUS_PREFIX.test(line)) return { kind: \"invalid\" };\n }\n if (status.length !== 1) return { kind: \"invalid\" };\n\n const terminal = status[0]!;\n const value = Number(terminal.value);\n if (!Number.isSafeInteger(value)) return { kind: \"invalid\" };\n if (terminal.kind === \"running\") {\n return value >= 0 ? { kind: \"running\", sessionId: value } : { kind: \"invalid\" };\n }\n return { kind: \"exited\", exitCode: value };\n}\n\nexport function parseExecBannerSessionId(raw: string): number | null {\n const banner = parseExecResponseBanner(raw);\n return banner.kind === \"running\" ? banner.sessionId : null;\n}\n\nexport function parseExecBannerExitCode(raw: string): number | null {\n const banner = parseExecResponseBanner(raw);\n return banner.kind === \"exited\" ? banner.exitCode : null;\n}\n\n// Detect the Modal \"the exec-session you're writing to no longer exists\" fact.\n// This is process-lifetime authority, so classify only the complete known\n// banner (or its bare provider form) carrying the exact tracked numeric id.\nexport function isExecSessionLostBanner(out: string, execSessionId: number): boolean {\n if (!out || !Number.isSafeInteger(execSessionId) || execSessionId < 0) return false;\n const match = out.match(/^(?:write_stdin failed: )?session not found: (\\d+)$/);\n // JavaScript's `$` also matches immediately before one final line terminator.\n // Requiring the regex match to consume the entire string keeps even that\n // otherwise-special case fail-closed.\n if (!match || match[0] !== out) return false;\n // String equality is intentional: parseInt would normalize malformed facts\n // such as `01` and can round an out-of-range integer into another identity.\n return match[1] === String(execSessionId);\n}\n","// @opengeni/runtime/sandbox — the REAL PTY terminal-server launcher (P5.t).\n//\n// The agent-loop-free home for `ensureTerminalServer`: the exec-launched,\n// flock-idempotent procedure that brings up the ttyd PTY-over-websocket server\n// (a live PTY-backed `bash -l` per ws client, listening on 7681) on a live,\n// externally-owned box. It is the SYMMETRIC TWIN of ensureDisplayStack (the\n// Channel-B pixel stack) — same exec/execCommand channel (NOT a container CMD)\n// so it re-establishes after a snapshot rollover / box re-election, same flock\n// idempotency so a second concurrent caller (the API viewer op + the agent turn,\n// both racing after a rollover) serializes and no-ops when ttyd is already up.\n//\n// WHY A REAL PTY OVER THE TUNNEL (not the old ptyWrite-over-HTTP): the stateless\n// HTTP plane builds a fresh provider session per call, so the in-memory live-PTY\n// process handle (Modal's per-call activeProcesses Map) is gone by the next\n// write (\"session not found: 1\"). ttyd holds the live PTY in-box and streams it\n// over the SAME Modal raw-TLS tunnel the desktop noVNC already uses, gated by the\n// SAME scoped stream-token mechanism (the server records the token; the boundary\n// is the unguessable short-TTL tunnel URL + the recorded token — no in-box gate).\n//\n// It lives under @opengeni/runtime/sandbox so the API-direct control plane\n// (apps/api) and the worker (apps/worker) both pull it from the same single\n// agent-loop-free leaf.\n\nimport { TERMINAL_STREAM_PORT } from \"@opengeni/contracts\";\n\n// Re-export the canonical terminal port so callers (exposeStreamPort, the API\n// mint) pull the single source of truth (contracts) from this leaf.\nexport { TERMINAL_STREAM_PORT };\n\n// The ttyd launch is bounded by the readiness gate inside the up-script (50 *\n// 0.1s = ~5s) PLUS first-boot warm-up on a cold gVisor box. 60s gives headroom\n// over the observed warm path (~1-2s; ttyd is a single static binary) without\n// masking a genuine wedge. Symmetric with DISPLAY_STACK_TIMEOUT_MS.\nexport const TERMINAL_SERVER_TIMEOUT_MS = 60_000;\n\n/** Thrown when the ttyd launch failed inside the box. exitCode 14 maps to the\n * up-script's \"ttyd failed to come up\" stage; any other non-zero is unknown.\n * Degradation is surfaced as a value to clients by the caller (Terminal\n * transport falls back to sse-events / null); this error is for diagnostics. */\nexport class TerminalServerError extends Error {\n readonly exitCode: number;\n readonly stage: \"ttyd\" | \"unknown\";\n\n constructor(exitCode: number, output: string) {\n const stage = exitCode === 14 ? \"ttyd\" : \"unknown\";\n super(\n `terminal server failed at stage \"${stage}\" (exit ${exitCode})${output ? `:\\n${output}` : \"\"}`,\n );\n this.name = \"TerminalServerError\";\n this.exitCode = exitCode;\n this.stage = stage;\n }\n}\n\n/** Thrown when the provider session cannot run commands (a headless-only backend\n * with neither `exec` nor `execCommand`). The terminal tier degrades to the\n * Channel-A sse-events firehose — the caller maps this to a `transport:null`\n * pty-ws (the read-only firehose still works). */\nexport class TerminalServerUnsupportedError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"TerminalServerUnsupportedError\";\n }\n}\n\n// The structural slice of a provider session we need: run a command (preferring\n// `exec` for the structured exit code, falling back to `execCommand`).\ntype ExecResultLike = {\n output?: string;\n stdout?: string;\n stderr?: string;\n exitCode?: number | null;\n};\ntype ExecCapableSession = {\n exec?: (args: {\n cmd: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n }) => Promise<ExecResultLike>;\n execCommand?: (args: {\n cmd: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n }) => Promise<string>;\n};\n\nexport type EnsureTerminalServerOptions = {\n /** The exposed terminal port; defaults to 7681 (ttyd default). */\n port?: number;\n /** Per-exec timeout; defaults to TERMINAL_SERVER_TIMEOUT_MS. */\n timeoutMs?: number;\n};\n\nexport type EnsureTerminalServerResult = {\n /** The exposed port ttyd listens on (PTY-over-websocket). */\n port: number;\n /** The raw `OPENGENI_TERMINAL_UP …` marker line, for diagnostics. Never\n * surfaced to clients. */\n marker: string;\n};\n\n/**\n * Build the shell command that runs the idempotent up-script under an in-box\n * `flock`. The script is shipped in the image at /usr/local/bin/opengeni-terminal-up\n * (the canonical desktop image, alongside opengeni-desktop-up); we set the port\n * env and wrap the call in `flock` so two concurrent ensureTerminalServer callers\n * (the API viewer op + the agent turn, both racing after a rollover) serialize\n * without a double launch. The up-script's own curl readiness probe makes the\n * second call a no-op.\n *\n * Exported (pure, side-effect-free) so the ensureTerminalServer unit test can\n * assert the exact command sequence without a live box. Mirrors\n * buildDisplayStackScript. A ttyd process is sandbox-group-global, not\n * OpenGeni-session-specific, so it must never inherit the box-global legacy\n * Toolspace pointer. Session-scoped interactive exec/PTY uses Channel A; the\n * shared ttyd shell fails closed for Toolspace until that stream plane itself is\n * session-isolated.\n */\nexport function buildTerminalServerScript(options: EnsureTerminalServerOptions = {}): string {\n const port = options.port ?? TERMINAL_STREAM_PORT;\n // flock -w bounds the wait so a wedged holder can't deadlock the caller; the\n // up-script's curl probe ALSO makes the launch idempotent (belt + braces) so\n // this works even against an older image that predates the wrapper.\n return (\n `mkdir -p /tmp/opengeni-terminal && ` +\n `flock -w 30 /tmp/opengeni-terminal/up.outer.lock ` +\n `env TERMINAL_PORT=${port} OPENGENI_TOOLSPACE_TOKEN_FILE=/dev/null opengeni-terminal-up`\n );\n}\n\nfunction execResultOutput(result: ExecResultLike | string): string {\n if (typeof result === \"string\") {\n return result;\n }\n return [result.output, result.stderr, result.stdout]\n .filter((v): v is string => typeof v === \"string\" && v.length > 0)\n .join(\"\\n\");\n}\n\nfunction execResultExitCode(result: ExecResultLike | string): number | null {\n if (typeof result === \"string\") {\n return null; // execCommand returns a bare string — no exit code available.\n }\n return typeof result.exitCode === \"number\" ? result.exitCode : null;\n}\n\n// Parse the exit code the up-script signals via its trailing marker. When we ran\n// through `exec` we have the real exitCode; when we only had `execCommand` (a\n// bare string), we infer success from the OPENGENI_TERMINAL_UP marker and infer\n// the failing stage from the stage-failure message the script prints to stderr.\n// Mirrors inferExitFromOutput (display-stack).\nfunction inferExitFromOutput(output: string): number {\n if (/OPENGENI_TERMINAL_UP\\b/.test(output)) {\n return 0;\n }\n if (/ttyd failed to come up/.test(output)) {\n return 14;\n }\n return -1;\n}\n\n/**\n * Idempotently bring up the ttyd PTY-over-websocket server on the live box. Safe\n * to call N times (the in-box flock + the up-script's curl readiness probe make a\n * second call a no-op). Resolves with the exposed port on success; throws\n * `TerminalServerError` on a launch failure and `TerminalServerUnsupportedError`\n * when the session cannot run commands.\n *\n * `session` is the externally-owned provider session (the `established.session`\n * from establishSandboxSessionFromEnvelope, or any SandboxSessionLike). We prefer\n * `session.exec` (structured `{exitCode}`) and fall back to `session.execCommand`\n * (bare string), inferring success from the up-script's marker line in the\n * fallback case. Mirrors ensureDisplayStack exactly.\n */\nexport async function ensureTerminalServer(\n session: unknown,\n options: EnsureTerminalServerOptions = {},\n): Promise<EnsureTerminalServerResult> {\n const s = session as ExecCapableSession;\n if (typeof s?.exec !== \"function\" && typeof s?.execCommand !== \"function\") {\n throw new TerminalServerUnsupportedError(\n \"provider session cannot run commands (no exec/execCommand) — terminal pty-ws unavailable\",\n );\n }\n\n const port = options.port ?? TERMINAL_STREAM_PORT;\n const timeoutMs = options.timeoutMs ?? TERMINAL_SERVER_TIMEOUT_MS;\n const cmd = buildTerminalServerScript({ port });\n\n const result =\n typeof s.exec === \"function\"\n ? await s.exec({ cmd, yieldTimeMs: timeoutMs, maxOutputTokens: 20_000 })\n : await s.execCommand!({ cmd, yieldTimeMs: timeoutMs, maxOutputTokens: 20_000 });\n\n const output = execResultOutput(result);\n const exitCode = execResultExitCode(result) ?? inferExitFromOutput(output);\n\n if (exitCode !== 0) {\n throw new TerminalServerError(exitCode, output);\n }\n\n const marker = (output.match(/OPENGENI_TERMINAL_UP[^\\n]*/) ?? [\"\"])[0];\n return { port, marker };\n}\n\n/** Tear the terminal server down (down-script). Best-effort; never throws on a\n * missing process. Mirrors tearDownDisplayStack. */\nexport async function tearDownTerminalServer(session: unknown): Promise<void> {\n const s = session as ExecCapableSession;\n if (typeof s?.exec === \"function\") {\n await s.exec({ cmd: \"opengeni-terminal-down\", yieldTimeMs: 10_000, maxOutputTokens: 4_000 });\n return;\n }\n if (typeof s?.execCommand === \"function\") {\n await s.execCommand({\n cmd: \"opengeni-terminal-down\",\n yieldTimeMs: 10_000,\n maxOutputTokens: 4_000,\n });\n }\n}\n","import type {\n RunCredentialAuthNeeded,\n RunCredentialFile,\n RunCredentialRedaction,\n RunCredentialsResolution,\n} from \"@opengeni/contracts\";\nimport type {\n ExecCommandArgs,\n SandboxClient,\n SandboxSessionLike,\n SandboxSessionState,\n} from \"@openai/agents/sandbox\";\n\nconst MAX_ENVIRONMENT_ENTRIES = 256;\nconst MAX_ENVIRONMENT_VALUE_BYTES = 64 * 1024;\nconst MAX_CREDENTIAL_FILES = 64;\nconst MAX_CREDENTIAL_FILE_BYTES = 1024 * 1024;\nconst MAX_TOTAL_MATERIAL_BYTES = 4 * 1024 * 1024;\nconst MAX_AUTH_NEEDED_NOTICES = 32;\nconst MAX_REDACTION_VALUES = 256;\nconst WRITE_CHUNK_BYTES = 24 * 1024;\nconst COMMAND_OK_MARKER = \"__OPENGENI_RUN_CREDENTIAL_COMMAND_OK__\";\nconst AUTH_NEEDED_REASONS = new Set([\n \"missing_connection\",\n \"expired\",\n \"insufficient_scope\",\n \"refresh_failed\",\n]);\nconst PORTABLE_LOCK_STALE_MINUTES = 2;\n\nexport type RunCredentialExpectedScope = {\n accountId: string;\n workspaceId: string;\n sessionId: string;\n};\n\nexport type NormalizedRunCredentialMaterial = {\n environment: Record<string, string>;\n files: RunCredentialFile[];\n fileEnvironment: Record<string, string>;\n expiresAt: Date | null;\n authNeeded: RunCredentialAuthNeeded[];\n redactions: RunCredentialRedaction[];\n};\n\nexport type RunCredentialCommandSession = Pick<SandboxSessionLike, \"exec\" | \"execCommand\">;\nexport type RunCredentialCommandRunner = (\n session: RunCredentialCommandSession,\n args: ExecCommandArgs,\n) => Promise<unknown>;\nexport type RunCredentialSessionReady = (\n session: RunCredentialCommandSession,\n) => Promise<void> | void;\n\nexport class RunCredentialValidationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"RunCredentialValidationError\";\n }\n}\n\nfunction byteLength(value: string): number {\n return new TextEncoder().encode(value).byteLength;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction assertBoundedString(value: unknown, label: string, maxBytes: number): void {\n if (value === undefined) return;\n if (typeof value !== \"string\") {\n throw new RunCredentialValidationError(`${label} must be a string`);\n }\n if (byteLength(value) > maxBytes) {\n throw new RunCredentialValidationError(`${label} exceeds ${maxBytes} bytes`);\n }\n if (value?.includes(\"\\0\")) {\n throw new RunCredentialValidationError(`${label} contains a NUL byte`);\n }\n}\n\nfunction requiredBoundedString(value: unknown, label: string, maxBytes: number): string {\n if (typeof value !== \"string\") {\n throw new RunCredentialValidationError(`${label} must be a string`);\n }\n assertBoundedString(value, label, maxBytes);\n return value;\n}\n\nfunction assertOptionalNonEmptyString(value: unknown, label: string, maxBytes: number): void {\n assertBoundedString(value, label, maxBytes);\n if (typeof value === \"string\" && !value.trim()) {\n throw new RunCredentialValidationError(`${label} must not be empty`);\n }\n}\n\nfunction normalizeAuthNeeded(notices: unknown, required: boolean): RunCredentialAuthNeeded[] {\n if (notices !== undefined && !Array.isArray(notices)) {\n throw new RunCredentialValidationError(\"authNeeded must be an array\");\n }\n const rawNotices = notices ?? [];\n const normalized: RunCredentialAuthNeeded[] = [];\n if (required && rawNotices.length === 0) {\n throw new RunCredentialValidationError(\"auth_needed resolution must contain a notice\");\n }\n if (rawNotices.length > MAX_AUTH_NEEDED_NOTICES) {\n throw new RunCredentialValidationError(\n `auth-needed notice count exceeds ${MAX_AUTH_NEEDED_NOTICES}`,\n );\n }\n for (const [index, notice] of rawNotices.entries()) {\n if (!isRecord(notice)) {\n throw new RunCredentialValidationError(`authNeeded[${index}] must be an object`);\n }\n const reason = notice.reason;\n if (typeof reason !== \"string\" || !AUTH_NEEDED_REASONS.has(reason)) {\n throw new RunCredentialValidationError(`authNeeded[${index}].reason is invalid`);\n }\n assertOptionalNonEmptyString(notice.providerDomain, `authNeeded[${index}].providerDomain`, 512);\n assertOptionalNonEmptyString(notice.connectionId, `authNeeded[${index}].connectionId`, 512);\n assertOptionalNonEmptyString(notice.resource, `authNeeded[${index}].resource`, 2_048);\n assertOptionalNonEmptyString(notice.message, `authNeeded[${index}].message`, 2_048);\n if (notice.scopes !== undefined && !Array.isArray(notice.scopes)) {\n throw new RunCredentialValidationError(`authNeeded[${index}].scopes must be an array`);\n }\n const scopes = notice.scopes ?? [];\n if (scopes.length > 128) {\n throw new RunCredentialValidationError(`authNeeded[${index}].scopes exceeds 128 entries`);\n }\n for (const scope of scopes) {\n requiredBoundedString(scope, `authNeeded[${index}].scope`, 512);\n if (!scope.trim()) {\n throw new RunCredentialValidationError(`authNeeded[${index}].scope must not be empty`);\n }\n }\n if (notice.authorizationUrl !== undefined) {\n const authorizationUrl = requiredBoundedString(\n notice.authorizationUrl,\n `authNeeded[${index}].authorizationUrl`,\n 4_096,\n );\n let url: URL;\n try {\n url = new URL(authorizationUrl);\n } catch {\n throw new RunCredentialValidationError(`authNeeded[${index}].authorizationUrl is invalid`);\n }\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") {\n throw new RunCredentialValidationError(\n `authNeeded[${index}].authorizationUrl must use http or https`,\n );\n }\n }\n normalized.push({\n reason: reason as RunCredentialAuthNeeded[\"reason\"],\n ...(typeof notice.providerDomain === \"string\"\n ? { providerDomain: notice.providerDomain }\n : {}),\n ...(typeof notice.connectionId === \"string\" ? { connectionId: notice.connectionId } : {}),\n ...(scopes.length > 0 ? { scopes: scopes as string[] } : {}),\n ...(typeof notice.resource === \"string\" ? { resource: notice.resource } : {}),\n ...(typeof notice.authorizationUrl === \"string\"\n ? { authorizationUrl: notice.authorizationUrl }\n : {}),\n ...(typeof notice.message === \"string\" ? { message: notice.message } : {}),\n });\n }\n return normalized;\n}\n\nfunction assertResolutionScope(\n resolution: Record<string, unknown>,\n expected: RunCredentialExpectedScope,\n): void {\n if (\n resolution.accountId !== expected.accountId ||\n resolution.workspaceId !== expected.workspaceId ||\n resolution.sessionId !== expected.sessionId\n ) {\n throw new RunCredentialValidationError(\"run credential provider returned a scope mismatch\");\n }\n}\n\nfunction normalizeRelativeFilePath(path: string): string {\n if (\n path.length === 0 ||\n path.length > 240 ||\n path.startsWith(\"/\") ||\n path.includes(\"\\\\\") ||\n path.includes(\"\\0\")\n ) {\n throw new RunCredentialValidationError(`invalid run credential file path: ${path}`);\n }\n const segments = path.split(\"/\");\n if (segments.some((segment) => segment.length === 0 || segment === \".\" || segment === \"..\")) {\n throw new RunCredentialValidationError(`invalid run credential file path: ${path}`);\n }\n return path;\n}\n\nfunction assertEnvironmentName(name: string, label: string): void {\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(name)) {\n throw new RunCredentialValidationError(`invalid ${label}: ${name}`);\n }\n}\n\n/**\n * Validate the untrusted host-port response before any secret is written to a\n * box. The host owns credential selection; OpenGeni owns scope checks, bounds,\n * path safety, and the transport lifecycle.\n */\nexport function normalizeRunCredentialsResolution(\n resolution: Extract<RunCredentialsResolution, { status: \"not_applicable\" }>,\n expected: RunCredentialExpectedScope,\n now?: Date,\n): null;\nexport function normalizeRunCredentialsResolution(\n resolution: Exclude<RunCredentialsResolution, { status: \"not_applicable\" }>,\n expected: RunCredentialExpectedScope,\n now?: Date,\n): NormalizedRunCredentialMaterial;\nexport function normalizeRunCredentialsResolution(\n resolution: RunCredentialsResolution,\n expected: RunCredentialExpectedScope,\n now?: Date,\n): NormalizedRunCredentialMaterial | null;\nexport function normalizeRunCredentialsResolution(\n resolution: RunCredentialsResolution,\n expected: RunCredentialExpectedScope,\n now: Date = new Date(),\n): NormalizedRunCredentialMaterial | null {\n if (!isRecord(resolution)) {\n throw new RunCredentialValidationError(\"run credential resolution must be an object\");\n }\n const candidate = resolution as unknown as Record<string, unknown>;\n if (\n candidate.status !== \"ok\" &&\n candidate.status !== \"auth_needed\" &&\n candidate.status !== \"not_applicable\"\n ) {\n throw new RunCredentialValidationError(\"run credential resolution status is invalid\");\n }\n assertResolutionScope(candidate, expected);\n if (candidate.status === \"not_applicable\") return null;\n const authNeeded = normalizeAuthNeeded(candidate.authNeeded, candidate.status === \"auth_needed\");\n if (candidate.status === \"auth_needed\") {\n return {\n environment: {},\n files: [],\n fileEnvironment: {},\n expiresAt: null,\n authNeeded,\n redactions: [],\n };\n }\n\n if (!isRecord(candidate.environment)) {\n throw new RunCredentialValidationError(\"run credential environment must be an object\");\n }\n const environmentEntries = Object.entries(candidate.environment);\n if (environmentEntries.length > MAX_ENVIRONMENT_ENTRIES) {\n throw new RunCredentialValidationError(\n `run credential environment exceeds ${MAX_ENVIRONMENT_ENTRIES} entries`,\n );\n }\n let totalBytes = 0;\n const environment: Record<string, string> = {};\n for (const [name, rawValue] of environmentEntries) {\n assertEnvironmentName(name, \"run credential environment name\");\n const value = requiredBoundedString(\n rawValue,\n `run credential environment value: ${name}`,\n MAX_ENVIRONMENT_VALUE_BYTES,\n );\n const valueBytes = byteLength(value);\n totalBytes += valueBytes;\n Object.defineProperty(environment, name, {\n value,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n }\n\n if (candidate.files !== undefined && !Array.isArray(candidate.files)) {\n throw new RunCredentialValidationError(\"run credential files must be an array\");\n }\n const files = candidate.files ?? [];\n if (files.length > MAX_CREDENTIAL_FILES) {\n throw new RunCredentialValidationError(\n `run credential file count exceeds ${MAX_CREDENTIAL_FILES}`,\n );\n }\n const paths = new Map<string, string>();\n const normalizedFiles = files.map((file, index) => {\n if (!isRecord(file)) {\n throw new RunCredentialValidationError(`run credential file ${index} must be an object`);\n }\n const path = normalizeRelativeFilePath(\n requiredBoundedString(file.path, `run credential file ${index} path`, 240),\n );\n const folded = path.toLocaleLowerCase(\"en-US\");\n const collision = paths.get(folded);\n if (collision !== undefined) {\n throw new RunCredentialValidationError(\n `run credential file path collision: ${collision} and ${path}`,\n );\n }\n paths.set(folded, path);\n const content = requiredBoundedString(\n file.content,\n `run credential file content: ${path}`,\n MAX_CREDENTIAL_FILE_BYTES,\n );\n const contentBytes = byteLength(content);\n if (file.mode !== undefined && file.mode !== \"0400\" && file.mode !== \"0600\") {\n throw new RunCredentialValidationError(`run credential file mode is invalid: ${path}`);\n }\n totalBytes += contentBytes;\n return { path, content, mode: file.mode ?? \"0600\" } as RunCredentialFile;\n });\n\n if (candidate.fileEnvironment !== undefined && !isRecord(candidate.fileEnvironment)) {\n throw new RunCredentialValidationError(\"run credential fileEnvironment must be an object\");\n }\n const fileEnvironment: Record<string, string> = {};\n for (const [name, unresolvedPath] of Object.entries(candidate.fileEnvironment ?? {})) {\n assertEnvironmentName(name, \"run credential file environment name\");\n if (Object.prototype.hasOwnProperty.call(environment, name)) {\n throw new RunCredentialValidationError(\n `run credential environment name is declared twice: ${name}`,\n );\n }\n const path = normalizeRelativeFilePath(\n requiredBoundedString(unresolvedPath, `run credential file environment path: ${name}`, 240),\n );\n if (!paths.has(path.toLocaleLowerCase(\"en-US\"))) {\n throw new RunCredentialValidationError(\n `run credential file environment references an unknown file: ${path}`,\n );\n }\n Object.defineProperty(fileEnvironment, name, {\n value: path,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n }\n if (environmentEntries.length + Object.keys(fileEnvironment).length > MAX_ENVIRONMENT_ENTRIES) {\n throw new RunCredentialValidationError(\n `combined run credential environment exceeds ${MAX_ENVIRONMENT_ENTRIES} entries`,\n );\n }\n if (totalBytes > MAX_TOTAL_MATERIAL_BYTES) {\n throw new RunCredentialValidationError(\n `run credential material exceeds ${MAX_TOTAL_MATERIAL_BYTES} bytes`,\n );\n }\n\n const redactions: RunCredentialRedaction[] = Object.entries(environment).map(([name, value]) => ({\n name,\n value,\n }));\n if (candidate.redactions !== undefined && !Array.isArray(candidate.redactions)) {\n throw new RunCredentialValidationError(\"run credential redactions must be an array\");\n }\n const additionalRedactions = candidate.redactions ?? [];\n if (additionalRedactions.length > MAX_REDACTION_VALUES) {\n throw new RunCredentialValidationError(\n `run credential redactions exceed ${MAX_REDACTION_VALUES} entries`,\n );\n }\n for (const [index, redaction] of additionalRedactions.entries()) {\n if (!isRecord(redaction)) {\n throw new RunCredentialValidationError(`redactions[${index}] must be an object`);\n }\n const name = requiredBoundedString(redaction.name, `redactions[${index}].name`, 128);\n const value = requiredBoundedString(\n redaction.value,\n `redactions[${index}].value`,\n MAX_ENVIRONMENT_VALUE_BYTES,\n );\n if (!name.trim() || !value) {\n throw new RunCredentialValidationError(`redactions[${index}] must contain a name and value`);\n }\n redactions.push({ name, value });\n }\n\n let expiresAt: Date | null = null;\n if (candidate.expiresAt !== undefined && candidate.expiresAt !== null) {\n const expiry = requiredBoundedString(candidate.expiresAt, \"run credential expiry\", 128);\n expiresAt = new Date(expiry);\n if (!Number.isFinite(expiresAt.getTime()) || expiresAt.getTime() <= now.getTime()) {\n throw new RunCredentialValidationError(\"run credential expiry is invalid or already expired\");\n }\n }\n return {\n environment,\n files: normalizedFiles,\n fileEnvironment,\n expiresAt,\n authNeeded,\n redactions,\n };\n}\n\nfunction assertPathIdentity(value: string, label: string): string {\n if (!/^[A-Za-z0-9_-]{1,128}$/.test(value)) {\n throw new RunCredentialValidationError(`${label} is not safe for a credential path`);\n }\n return value;\n}\n\nexport function runCredentialRoot(sessionId: string): string {\n return `/tmp/opengeni-run-credentials/${assertPathIdentity(sessionId, \"sessionId\")}`;\n}\n\nexport function runCredentialPointerFile(sessionId: string): string {\n return `${runCredentialRoot(sessionId)}/current`;\n}\n\nfunction shellQuote(value: string): string {\n return `'${value.replace(/'/g, \"'\\\\''\")}'`;\n}\n\nfunction base64(value: string): string {\n return Buffer.from(value, \"utf8\").toString(\"base64\");\n}\n\nfunction portableBase64DecodeCommand(): string {\n return [\n \"{\",\n \"if printf %s QQ== | base64 -d >/dev/null 2>&1; then base64 -d\",\n \"elif printf %s QQ== | base64 -D >/dev/null 2>&1; then base64 -D\",\n \"elif command -v openssl >/dev/null 2>&1; then openssl base64 -d -A\",\n \"else exit 69\",\n \"fi\",\n \"}\",\n ].join(\"\\n\");\n}\n\n/** Prefer util-linux flock; fall back to an atomic, stale-reaped mkdir lock. */\nfunction pointerLockAcquireCommands(root: string): string[] {\n const lockFile = shellQuote(`${root}/.pointer.lock`);\n const lockDirectory = shellQuote(`${root}/.pointer.lockdir`);\n return [\n `if command -v flock >/dev/null 2>&1; then`,\n ` exec 9>${lockFile}`,\n \" flock -w 30 9\",\n \" _opengeni_pointer_lock_kind=flock\",\n \"else\",\n ` _opengeni_pointer_lock_dir=${lockDirectory}`,\n \" _opengeni_pointer_lock_deadline=$(($(date +%s) + 30))\",\n ' while ! mkdir \"$_opengeni_pointer_lock_dir\" 2>/dev/null; do',\n ` if find \"$_opengeni_pointer_lock_dir\" -prune -mmin +${PORTABLE_LOCK_STALE_MINUTES} -print 2>/dev/null | grep -q .; then`,\n ' _opengeni_stale_lock=\"${_opengeni_pointer_lock_dir}.stale.$$\"',\n ' if mv \"$_opengeni_pointer_lock_dir\" \"$_opengeni_stale_lock\" 2>/dev/null; then',\n ' rm -rf -- \"$_opengeni_stale_lock\"',\n \" continue\",\n \" fi\",\n \" fi\",\n ' [ \"$(date +%s)\" -lt \"$_opengeni_pointer_lock_deadline\" ] || exit 73',\n \" sleep 0.1\",\n \" done\",\n \" _opengeni_pointer_lock_kind=directory\",\n ` trap 'rmdir ${lockDirectory} 2>/dev/null || :' EXIT HUP INT TERM`,\n \"fi\",\n ];\n}\n\nfunction pointerLockReleaseCommands(): string[] {\n return [\n 'if [ \"${_opengeni_pointer_lock_kind:-}\" = directory ]; then',\n ' rmdir \"$_opengeni_pointer_lock_dir\" 2>/dev/null || :',\n \" trap - EXIT HUP INT TERM\",\n \"fi\",\n ];\n}\n\nfunction outputOf(result: unknown): string {\n if (typeof result === \"string\") return result;\n if (!result || typeof result !== \"object\") return \"\";\n const candidate = result as {\n output?: unknown;\n stdout?: unknown;\n stderr?: unknown;\n };\n return [candidate.output, candidate.stdout, candidate.stderr]\n .filter((value): value is string => typeof value === \"string\")\n .join(\"\\n\");\n}\n\nasync function runCredentialCommand(\n session: RunCredentialCommandSession,\n cmd: string,\n commandRunner?: RunCredentialCommandRunner,\n): Promise<void> {\n const marked = `set +x\\nset -eu\\n${cmd}\\nprintf '\\\\n${COMMAND_OK_MARKER}\\\\n'`;\n const args: ExecCommandArgs = {\n cmd: `set +x\\nenv -u BASH_ENV bash --noprofile --norc -c ${shellQuote(marked)}`,\n yieldTimeMs: 120_000,\n maxOutputTokens: 4_000,\n };\n const result = commandRunner\n ? await commandRunner(session, args)\n : session.exec\n ? await session.exec(args)\n : session.execCommand\n ? await session.execCommand(args)\n : undefined;\n if (!outputOf(result).includes(COMMAND_OK_MARKER)) {\n throw new Error(\"run credential materialization command failed\");\n }\n}\n\nasync function writeCredentialFile(\n session: RunCredentialCommandSession,\n path: string,\n content: string,\n commandRunner?: RunCredentialCommandRunner,\n): Promise<void> {\n await runCredentialCommand(session, `: > ${shellQuote(path)}`, commandRunner);\n const encoded = base64(content);\n for (let offset = 0; offset < encoded.length; offset += WRITE_CHUNK_BYTES) {\n const chunk = encoded.slice(offset, offset + WRITE_CHUNK_BYTES);\n await runCredentialCommand(\n session,\n `printf %s ${shellQuote(chunk)} | ${portableBase64DecodeCommand()} >> ${shellQuote(path)}`,\n commandRunner,\n );\n }\n await runCredentialCommand(\n session,\n `[ \"$(wc -c < ${shellQuote(path)} | tr -d '[:space:]')\" = ${shellQuote(String(byteLength(content)))} ]`,\n commandRunner,\n );\n}\n\nexport type MaterializeRunCredentialsOptions = {\n sessionId: string;\n attemptId: string;\n executionGeneration: number;\n /** Initial provision after recovery may prune generations from older attempts. */\n pruneOtherAttempts?: boolean;\n /** An all-auth-needed replacement removes every prior readable generation. */\n prunePreviousGenerations?: boolean;\n /** Renewal keeps the active and immediately prior same-attempt generations. */\n pruneSupersededGenerations?: boolean;\n commandRunner?: RunCredentialCommandRunner;\n};\n\n/** Materialize one complete immutable generation, then atomically flip current. */\nexport async function materializeRunCredentials(\n session: RunCredentialCommandSession,\n material: NormalizedRunCredentialMaterial,\n options: MaterializeRunCredentialsOptions,\n): Promise<void> {\n const root = runCredentialRoot(options.sessionId);\n const attemptId = assertPathIdentity(options.attemptId, \"attemptId\");\n if (!Number.isSafeInteger(options.executionGeneration) || options.executionGeneration < 0) {\n throw new RunCredentialValidationError(\"executionGeneration must be a non-negative integer\");\n }\n const nonce = crypto.randomUUID();\n const prefix = `${attemptId}-${options.executionGeneration}-`;\n const versionName = `${attemptId}-${options.executionGeneration}-${nonce}`;\n const stage = `${root}/versions/.stage-${versionName}`;\n const version = `${root}/versions/${versionName}`;\n for (const file of material.files) {\n const mode = file.mode ?? \"0600\";\n if (mode !== \"0400\" && mode !== \"0600\") {\n throw new RunCredentialValidationError(`run credential file mode is invalid: ${file.path}`);\n }\n }\n await runCredentialCommand(\n session,\n [\n \"umask 077\",\n `mkdir -p -- ${shellQuote(`${root}/versions`)}`,\n `chmod 0700 -- ${shellQuote(root)} ${shellQuote(`${root}/versions`)}`,\n `rm -rf -- ${shellQuote(stage)}`,\n `mkdir -p -- ${shellQuote(`${stage}/files`)}`,\n ].join(\"\\n\"),\n options.commandRunner,\n );\n\n const environmentLines = [\n ...Object.entries(material.environment).map(\n ([name, value]) => `export ${name}=${shellQuote(value)}`,\n ),\n ...Object.entries(material.fileEnvironment).map(\n ([name, path]) => `export ${name}=${shellQuote(`${version}/files/${path}`)}`,\n ),\n ];\n await writeCredentialFile(\n session,\n `${stage}/env`,\n environmentLines.length > 0 ? `${environmentLines.join(\"\\n\")}\\n` : \"\",\n options.commandRunner,\n );\n await runCredentialCommand(\n session,\n `chmod 0600 -- ${shellQuote(`${stage}/env`)}`,\n options.commandRunner,\n );\n\n for (const file of material.files) {\n const target = `${stage}/files/${file.path}`;\n const parent = target.slice(0, target.lastIndexOf(\"/\"));\n await runCredentialCommand(session, `mkdir -p -- ${shellQuote(parent)}`, options.commandRunner);\n await writeCredentialFile(session, target, file.content, options.commandRunner);\n await runCredentialCommand(\n session,\n `chmod ${shellQuote(file.mode ?? \"0600\")} -- ${shellQuote(target)}`,\n options.commandRunner,\n );\n }\n\n await runCredentialCommand(\n session,\n [\n ...pointerLockAcquireCommands(root),\n `previous=$(cat -- ${shellQuote(`${root}/current`)} 2>/dev/null || :)`,\n `mv -- ${shellQuote(stage)} ${shellQuote(version)}`,\n `printf '%s\\\\n' ${shellQuote(versionName)} > ${shellQuote(`${root}/.next`)}`,\n `mv -f -- ${shellQuote(`${root}/.next`)} ${shellQuote(`${root}/current`)}`,\n ...(options.prunePreviousGenerations\n ? [\n `find ${shellQuote(`${root}/versions`)} -mindepth 1 -maxdepth 1 ! -name ${shellQuote(versionName)} -exec rm -rf -- {} +`,\n ]\n : options.pruneOtherAttempts\n ? [\n `find ${shellQuote(`${root}/versions`)} -mindepth 1 -maxdepth 1 ! -name ${shellQuote(`${attemptId}-${options.executionGeneration}-*`)} -exec rm -rf -- {} +`,\n ]\n : options.pruneSupersededGenerations\n ? [\n `for candidate in ${shellQuote(`${root}/versions`)}/${prefix}*; do`,\n ` [ -e \"$candidate\" ] || continue`,\n ` name=\\${candidate##*/}`,\n ` [ \"$name\" = ${shellQuote(versionName)} ] || [ \"$name\" = \"$previous\" ] || rm -rf -- \"$candidate\"`,\n \"done\",\n ]\n : []),\n ...pointerLockReleaseCommands(),\n ].join(\"\\n\"),\n options.commandRunner,\n );\n}\n\nexport async function clearRunCredentials(\n session: RunCredentialCommandSession,\n sessionId: string,\n commandRunner?: RunCredentialCommandRunner,\n): Promise<void> {\n const root = runCredentialRoot(sessionId);\n await runCredentialCommand(\n session,\n [\n `if [ -d ${shellQuote(root)} ]; then`,\n ...pointerLockAcquireCommands(root).map((line) => ` ${line}`),\n ` rm -f -- ${shellQuote(`${root}/current`)} ${shellQuote(`${root}/.next`)}`,\n ` rm -rf -- ${shellQuote(`${root}/versions`)}`,\n ...pointerLockReleaseCommands().map((line) => ` ${line}`),\n \"fi\",\n ].join(\"\\n\"),\n commandRunner,\n );\n}\n\n/**\n * Remove only generations owned by one attempt. A successor may already have\n * atomically activated its own pointer after queue admission; this cleanup must\n * never clear or overwrite that newer generation.\n */\nexport async function clearRunCredentialsForAttempt(\n session: RunCredentialCommandSession,\n options: Pick<\n MaterializeRunCredentialsOptions,\n \"sessionId\" | \"attemptId\" | \"executionGeneration\"\n >,\n commandRunner?: RunCredentialCommandRunner,\n): Promise<void> {\n const root = runCredentialRoot(options.sessionId);\n const attemptId = assertPathIdentity(options.attemptId, \"attemptId\");\n if (!Number.isSafeInteger(options.executionGeneration) || options.executionGeneration < 0) {\n throw new RunCredentialValidationError(\"executionGeneration must be a non-negative integer\");\n }\n const prefix = `${attemptId}-${options.executionGeneration}-`;\n await runCredentialCommand(\n session,\n [\n `if [ -d ${shellQuote(root)} ]; then`,\n ...pointerLockAcquireCommands(root).map((line) => ` ${line}`),\n ` if [ -r ${shellQuote(`${root}/current`)} ]; then`,\n ` current=$(cat -- ${shellQuote(`${root}/current`)} 2>/dev/null || :)`,\n ` case \"$current\" in ${shellQuote(prefix)}*) rm -f -- ${shellQuote(`${root}/current`)} ;; esac`,\n \" fi\",\n ` if [ -d ${shellQuote(`${root}/versions`)} ]; then`,\n ` find ${shellQuote(`${root}/versions`)} -mindepth 1 -maxdepth 1 -name ${shellQuote(`${prefix}*`)} -exec rm -rf -- {} +`,\n ` find ${shellQuote(`${root}/versions`)} -mindepth 1 -maxdepth 1 -name ${shellQuote(`.stage-${prefix}*`)} -exec rm -rf -- {} +`,\n \" fi\",\n ...pointerLockReleaseCommands().map((line) => ` ${line}`),\n \"fi\",\n ].join(\"\\n\"),\n commandRunner,\n );\n}\n\n/** Prefix one sandbox command so every new process observes the active generation. */\nexport function withRunCredentialEnvironment(cmd: string, sessionId: string): string {\n const root = runCredentialRoot(sessionId);\n const pointerFile = runCredentialPointerFile(sessionId);\n return [\n `if [ -r ${shellQuote(pointerFile)} ]; then`,\n ` _opengeni_credential_version=$(cat -- ${shellQuote(pointerFile)} 2>/dev/null || :)`,\n ' case \"$_opengeni_credential_version\" in',\n \" ''|*[!A-Za-z0-9_-]*) ;;\",\n \" *)\",\n ` _opengeni_credential_env=${shellQuote(`${root}/versions`)}/\"$_opengeni_credential_version/env\"`,\n ' if [ -r \"$_opengeni_credential_env\" ]; then',\n \" set -a\",\n ' . \"$_opengeni_credential_env\"',\n \" set +a\",\n \" fi\",\n \" unset _opengeni_credential_env\",\n \" ;;\",\n \" esac\",\n \" unset _opengeni_credential_version\",\n \"fi\",\n cmd,\n ].join(\"\\n\");\n}\n\n/**\n * Preserve the provider session identity/capabilities while decorating only\n * command creation. Non-command methods stay bound to the original instance.\n */\nexport function withRunCredentialsSession<T extends object>(session: T, sessionId: string): T {\n return new Proxy(session, {\n get(target, property, receiver) {\n if (property === \"exec\" || property === \"execCommand\") {\n const command = Reflect.get(target, property, target) as\n | ((args: ExecCommandArgs) => Promise<unknown>)\n | undefined;\n if (!command) return undefined;\n return async (args: ExecCommandArgs) =>\n await command.call(target, {\n ...args,\n cmd: withRunCredentialEnvironment(args.cmd, sessionId),\n });\n }\n const value = Reflect.get(target, property, receiver) as unknown;\n return typeof value === \"function\" ? value.bind(target) : value;\n },\n });\n}\n\n/** Decorate every client-created/resumed session after the host seeds it. */\nexport function withRunCredentialsClient(\n client: SandboxClient,\n sessionId: string,\n onSessionReady?: RunCredentialSessionReady,\n): SandboxClient {\n const decorated = new WeakMap<object, SandboxSessionLike>();\n const wrap = async <T extends SandboxSessionLike>(session: T): Promise<T> => {\n const existing = decorated.get(session);\n if (existing) return existing as T;\n await onSessionReady?.(session);\n const wrapped = withRunCredentialsSession(session, sessionId);\n decorated.set(session, wrapped);\n return wrapped;\n };\n return {\n backendId: client.backendId,\n ...(client.supportsDefaultOptions !== undefined\n ? { supportsDefaultOptions: client.supportsDefaultOptions }\n : {}),\n ...(client.create\n ? {\n create: async (...args: any[]) => await wrap(await (client.create as any)(...args)),\n }\n : {}),\n ...(client.resume\n ? {\n resume: async (...args: any[]) => await wrap(await (client.resume as any)(...args)),\n }\n : {}),\n ...(client.delete\n ? {\n delete: async (state: SandboxSessionState) => await client.delete!(state),\n }\n : {}),\n ...(client.serializeSessionState\n ? {\n serializeSessionState: async (state: SandboxSessionState, options) =>\n await client.serializeSessionState!(state, options),\n }\n : {}),\n ...(client.canPersistOwnedSessionState\n ? {\n canPersistOwnedSessionState: async (state: SandboxSessionState) =>\n await client.canPersistOwnedSessionState!(state),\n }\n : {}),\n ...(client.canReusePreservedOwnedSession\n ? {\n canReusePreservedOwnedSession: async (state: SandboxSessionState) =>\n await client.canReusePreservedOwnedSession!(state),\n }\n : {}),\n ...(client.deserializeSessionState\n ? {\n deserializeSessionState: async (state: Record<string, unknown>) =>\n await client.deserializeSessionState!(state),\n }\n : {}),\n };\n}\n","import { createHash } from \"node:crypto\";\nimport { posix as posixPath } from \"node:path\";\n\nimport type {\n ExecCommandArgs,\n SandboxClient,\n SandboxSessionLike,\n SandboxSessionState,\n} from \"@openai/agents/sandbox\";\n\nconst MAX_TOOLSPACE_SESSION_ID_BYTES = 512;\n\nexport class ToolspaceTokenPathError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ToolspaceTokenPathError\";\n }\n}\n\nfunction shellQuote(value: string): string {\n return `'${value.replace(/'/g, \"'\\\\''\")}'`;\n}\n\nfunction assertToolspaceSessionId(sessionId: string): string {\n if (\n !sessionId ||\n sessionId.trim() !== sessionId ||\n new TextEncoder().encode(sessionId).byteLength > MAX_TOOLSPACE_SESSION_ID_BYTES ||\n sessionId.includes(\"\\0\")\n ) {\n throw new ToolspaceTokenPathError(\"Toolspace session id is invalid\");\n }\n return sessionId;\n}\n\n/**\n * Derive the per-session token file beside the legacy manifest pointer.\n *\n * The manifest pointer stays box-global so an already-warm shared sandbox does\n * not receive an illegal environment delta. Every OpenGeni command overrides\n * that pointer with this deterministic path. The hash is path hygiene and\n * avoids disclosing host/session ids in filenames; filesystem paths are not an\n * authorization boundary. The delegated bearer's session claim remains the\n * authority boundary for Toolspace calls.\n */\nexport function toolspaceTokenFileForSession(manifestTokenFile: string, sessionId: string): string {\n if (\n !manifestTokenFile ||\n manifestTokenFile.includes(\"\\0\") ||\n !posixPath.isAbsolute(manifestTokenFile)\n ) {\n throw new ToolspaceTokenPathError(\"Toolspace manifest token file must be absolute\");\n }\n const normalizedManifestFile = posixPath.normalize(manifestTokenFile);\n const digest = createHash(\"sha256\").update(assertToolspaceSessionId(sessionId)).digest(\"hex\");\n return posixPath.join(posixPath.dirname(normalizedManifestFile), \"toolspace-tokens\", digest);\n}\n\nexport function toolspaceTokenFileFromEnvironment(\n environment: Readonly<Record<string, string>>,\n sessionId: string,\n): string {\n const manifestTokenFile =\n environment.OPENGENI_TOOLSPACE_TOKEN_FILE ??\n `${environment.HOME ?? \"/workspace\"}/.opengeni/toolspace-token`;\n return toolspaceTokenFileForSession(manifestTokenFile, sessionId);\n}\n\n/** Prefix one sandbox command with its session-specific Toolspace pointer. */\nexport function withToolspaceTokenEnvironment(cmd: string, tokenFile: string): string {\n if (!tokenFile || tokenFile.includes(\"\\0\") || !posixPath.isAbsolute(tokenFile)) {\n throw new ToolspaceTokenPathError(\"Toolspace token file must be absolute\");\n }\n return [`export OPENGENI_TOOLSPACE_TOKEN_FILE=${shellQuote(tokenFile)}`, cmd].join(\"\\n\");\n}\n\n/** Preserve provider identity/capabilities while decorating command creation. */\nexport function withToolspaceTokenSession<T extends object>(session: T, tokenFile: string): T {\n return new Proxy(session, {\n get(target, property, receiver) {\n if (property === \"exec\" || property === \"execCommand\") {\n const command = Reflect.get(target, property, target) as\n | ((args: ExecCommandArgs) => Promise<unknown>)\n | undefined;\n if (!command) return undefined;\n return async (args: ExecCommandArgs) =>\n await command.call(target, {\n ...args,\n cmd: withToolspaceTokenEnvironment(args.cmd, tokenFile),\n });\n }\n const value = Reflect.get(target, property, receiver) as unknown;\n return typeof value === \"function\" ? value.bind(target) : value;\n },\n });\n}\n\n/** Decorate every client-created/resumed session with one session pointer. */\nexport function withToolspaceTokenClient(client: SandboxClient, tokenFile: string): SandboxClient {\n const decorated = new WeakMap<object, SandboxSessionLike>();\n const wrap = <T extends SandboxSessionLike>(session: T): T => {\n const existing = decorated.get(session);\n if (existing) return existing as T;\n const wrapped = withToolspaceTokenSession(session, tokenFile);\n decorated.set(session, wrapped);\n return wrapped;\n };\n return {\n backendId: client.backendId,\n ...(client.supportsDefaultOptions !== undefined\n ? { supportsDefaultOptions: client.supportsDefaultOptions }\n : {}),\n ...(client.create\n ? { create: async (...args: any[]) => wrap(await (client.create as any)(...args)) }\n : {}),\n ...(client.resume\n ? { resume: async (...args: any[]) => wrap(await (client.resume as any)(...args)) }\n : {}),\n ...(client.delete\n ? { delete: async (state: SandboxSessionState) => await client.delete!(state) }\n : {}),\n ...(client.serializeSessionState\n ? {\n serializeSessionState: async (state: SandboxSessionState, options) =>\n await client.serializeSessionState!(state, options),\n }\n : {}),\n ...(client.canPersistOwnedSessionState\n ? {\n canPersistOwnedSessionState: async (state: SandboxSessionState) =>\n await client.canPersistOwnedSessionState!(state),\n }\n : {}),\n ...(client.canReusePreservedOwnedSession\n ? {\n canReusePreservedOwnedSession: async (state: SandboxSessionState) =>\n await client.canReusePreservedOwnedSession!(state),\n }\n : {}),\n ...(client.deserializeSessionState\n ? {\n deserializeSessionState: async (state: Record<string, unknown>) =>\n await client.deserializeSessionState!(state),\n }\n : {}),\n } as SandboxClient;\n}\n","// @opengeni/runtime/sandbox — the pixel DATA PLANE: exposeStreamPort (P4.2).\n//\n// This is the heart of Channel B's data plane. exposeStreamPort resolves the\n// provider's scoped tunnel for the ONE exposed stream port (6080), assembles the\n// direct-to-provider WS URL (client → provider-tunnel direct; the pixel socket\n// never traverses OpenGeni), and mints the scoped OpenGeni stream token. It is a\n// plain function over a live, externally-owned `{session}` handle — NO Temporal,\n// NO worker RPC, NO actor. The API-direct handshake handler (apps/api) calls it\n// in-process on a freshly-resumed-by-id box and returns the result as the HTTP\n// response; the worker's per-turn resume path calls the same function when a turn\n// is the first to bring the box up. Both pull it from this single agent-loop-free\n// leaf (@opengeni/runtime/sandbox).\n//\n// THE TOKEN IS NOT A URL QUERY PARAM. The provider's own scoped tunnel URL\n// (Modal raw-TLS host:port, Daytona signed preview, Blaxel preview-token query)\n// carries the reach-the-port boundary; the OpenGeni stream token is RECORDED\n// against the viewer holder and is the in-box websockify edge boundary (P3/P5).\n// Per the sandbox contract ruling, exposeStreamPort returns the token alongside the\n// URL so the caller records it; it does NOT append it to `url`.\n\nimport { DESKTOP_STREAM_PORT } from \"@opengeni/contracts\";\nimport { mintStreamToken, STREAM_TOKEN_DEFAULT_TTL_SECONDS } from \"./stream-token\";\n\n/** The provider-resolved endpoint for an exposed port. Mirrors the SDK's\n * `ExposedPortEndpoint` (host/port/tls/query/...) WITHOUT importing the\n * agent-loop barrel — the leaf stays agent-loop-free. */\nexport type ExposedPortEndpoint = {\n host: string;\n port: number;\n tls?: boolean;\n query?: string;\n protocol?: string;\n url?: string;\n /** The URL path the socket connects on. Modal/Daytona/Blaxel serve the edge at\n * the root (`/`, the default); the selfhosted relay serves it at `/stream`\n * (M8b). When set, buildStreamUrl uses it instead of the root. */\n path?: string;\n [key: string]: unknown;\n};\n\n/** The structural slice of a provider session we need to resolve a tunnel. */\ntype PortResolvableSession = {\n resolveExposedPort?: (port: number) => Promise<ExposedPortEndpoint>;\n};\n\n/** Thrown when the provider cannot expose the stream port (no resolveExposedPort,\n * or the provider tunnel lookup failed). The caller degrades the desktop cell to\n * `transport:null` (a value, never a crash) — a headless-only provider or a\n * transient tunnel failure must not fail the whole handshake. */\nexport class StreamPortUnavailableError extends Error {\n constructor(\n message: string,\n readonly cause?: unknown,\n ) {\n super(message);\n this.name = \"StreamPortUnavailableError\";\n }\n}\n\nexport type ExposeStreamPortInput = {\n workspaceId: string;\n sessionId: string;\n /** The sandbox_lease_holders viewer row id the token is scoped to. */\n viewerId: string;\n /** The live lease epoch — the fence the token is pinned to. */\n leaseEpoch: number;\n /** The HMAC secret for the scoped stream token (resolveStreamTokenSecret). */\n streamTokenSecret: string;\n /** The exposed stream port; defaults to 6080. */\n port?: number;\n /** Token TTL in seconds; defaults to STREAM_TOKEN_DEFAULT_TTL_SECONDS. */\n ttlSeconds?: number;\n /** The framebuffer geometry to echo back to the client. */\n resolution?: [number, number];\n /** Override the issue clock (tests). Seconds since the epoch. */\n nowSeconds?: number;\n};\n\nexport type ExposeStreamPortResult = {\n /** The direct-to-provider WS URL the viewer connects to (provider-scoped; the\n * OpenGeni token is NOT appended). */\n url: string;\n /** The scoped OpenGeni stream token — recorded against the holder, NEVER a URL\n * query param. */\n token: string;\n /** ISO absolute expiry of the token (the rotation hot-swap window backstop). */\n expiresAt: string;\n /** The pixel transport the client speaks. */\n transport: \"vnc-ws\";\n /** The reference noVNC client the SDK helper mounts. */\n client: \"novnc\";\n resolution: [number, number];\n leaseEpoch: number;\n};\n\nconst DEFAULT_RESOLUTION: [number, number] = [1280, 800];\n\n/**\n * Assemble the direct-to-provider WS URL from a resolved endpoint. The SDK's\n * `urlForExposedPort(endpoint,'ws')` is the canonical tls-aware, IPv6-bracketing,\n * provider-query-preserving assembler — we reimplement its exact logic here so\n * the leaf stays agent-loop-free (the helper lives behind the bare\n * `@openai/agents-core` root, which the import-discipline test forbids). The\n * provider's own `endpoint.query` (Blaxel `bl_preview_token`, Daytona signed\n * token) is preserved; the OpenGeni token is NOT appended (it is recorded against\n * the holder + validated at the in-box websockify edge).\n */\nexport function buildStreamUrl(endpoint: ExposedPortEndpoint): string {\n if (\n typeof endpoint.host !== \"string\" ||\n endpoint.host.length === 0 ||\n typeof endpoint.port !== \"number\"\n ) {\n throw new StreamPortUnavailableError(\n `provider returned a malformed exposed-port endpoint (host=${String(endpoint.host)}, port=${String(endpoint.port)})`,\n );\n }\n const tls = endpoint.tls ?? false;\n const scheme = tls ? \"wss\" : \"ws\";\n const defaultPort = tls ? 443 : 80;\n // Bracket a bare IPv6 host (urlForExposedPort parity).\n const host =\n endpoint.host.includes(\":\") && !endpoint.host.startsWith(\"[\")\n ? `[${endpoint.host}]`\n : endpoint.host;\n // The path: default the root `/` (Modal/Daytona/Blaxel edge), or the\n // provider-supplied path (the selfhosted relay's `/stream` route, M8b). Always\n // leading-slash-normalized.\n const rawPath =\n typeof endpoint.path === \"string\" && endpoint.path.length > 0 ? endpoint.path : \"/\";\n const path = rawPath.startsWith(\"/\") ? rawPath : `/${rawPath}`;\n const origin =\n endpoint.port === defaultPort ? `${scheme}://${host}` : `${scheme}://${host}:${endpoint.port}`;\n const authority = `${origin}${path}`;\n const query = endpoint.query ?? \"\";\n return query ? `${authority}?${query}` : authority;\n}\n\n/**\n * Resolve the provider's scoped tunnel for the stream port and mint the scoped\n * OpenGeni stream token. Returns a coherent `{url, token, expiresAt, transport,\n * client, resolution}` cell the caller records on the lease (data_plane_url) and\n * returns in the DesktopStream handshake.\n *\n * Throws `StreamPortUnavailableError` when the provider session cannot resolve\n * the port (no `resolveExposedPort`, or the tunnel lookup failed) — the caller\n * maps this to a `transport:null` degradation (a value, never a crash).\n */\nexport async function exposeStreamPort(\n session: unknown,\n input: ExposeStreamPortInput,\n): Promise<ExposeStreamPortResult> {\n const s = session as PortResolvableSession;\n const port = input.port ?? DESKTOP_STREAM_PORT;\n if (typeof s?.resolveExposedPort !== \"function\") {\n throw new StreamPortUnavailableError(\n \"provider session cannot resolve exposed ports (no resolveExposedPort) — desktop stream unavailable\",\n );\n }\n\n let endpoint: ExposedPortEndpoint;\n try {\n // (I7/OD-7) per-provider URL re-resolution folds in here: a provider with a\n // preview/signed token (Daytona/Blaxel) re-resolves its own short-TTL token\n // on every call, so a rotation re-mints both planes' freshness in one place.\n endpoint = await s.resolveExposedPort(port);\n } catch (error) {\n throw new StreamPortUnavailableError(\n `provider failed to resolve the stream port ${port}: ${error instanceof Error ? error.message : String(error)}`,\n error,\n );\n }\n\n const url = buildStreamUrl(endpoint);\n const ttlSeconds = input.ttlSeconds ?? STREAM_TOKEN_DEFAULT_TTL_SECONDS;\n const nowSeconds = input.nowSeconds ?? Math.floor(Date.now() / 1000);\n const token = await mintStreamToken(input.streamTokenSecret, {\n workspaceId: input.workspaceId,\n sessionId: input.sessionId,\n viewerId: input.viewerId,\n leaseEpoch: input.leaseEpoch,\n mode: \"view\",\n port,\n ttlSeconds,\n nowSeconds,\n });\n\n return {\n url,\n token,\n expiresAt: new Date((nowSeconds + ttlSeconds) * 1000).toISOString(),\n transport: \"vnc-ws\",\n client: \"novnc\",\n resolution: input.resolution ?? DEFAULT_RESOLUTION,\n leaseEpoch: input.leaseEpoch,\n };\n}\n","// @opengeni/runtime/sandbox — the recording loop (P4.3).\n//\n// ffmpeg x11grab on :0 → mp4/webm artifact on the box → direct scoped PUT to\n// object storage → recording.available. The \"agent films itself proving the fix\"\n// loop: ffmpeg reads exactly the :0 framebuffer the agent's computer-use draws to\n// and the human watches over Channel B (zero projection).\n//\n// These are PLAIN functions over a live, externally-owned session handle — NO\n// Temporal, NO worker RPC, NO actor. They live in the agent-loop-free leaf so the\n// SAME process that already holds the resumed-by-id box (the agent turn's own\n// activity for an on-turn recording, or the API in-process for an off-turn/manual\n// finalize) authorizes a direct box-to-storage upload. Recording bytes never\n// enter worker memory or a Temporal payload (F10).\n//\n// ── Adversarial-review fixes folded in (module 05 §Adversarial) ──────────────\n// F1 exec is OPTIONAL on Modal (only execCommand) — every command dual-paths.\n// F3 exec/execCommand YIELDS — the stop and direct-upload commands are bounded.\n// F8 size is gated on the box first (stat); over-limit artifacts fail instead\n// of being uploaded partially.\n// FR curl reads the absolute /tmp artifact in the box and sends it directly to\n// the short-lived scoped URL. No workspace-root read API is involved.\n// F9 the box file is deleted ONLY after the storage PUT confirms — never\n// before (so a failed upload leaves the bytes recoverable for a retry).\n// F12 ffmpeg/x11vnc backgrounding does not block the yield (nohup … & echo $!).\n// F14 duration is computed from wall-clock (stop − start), not assumed.\n\nimport { DESKTOP_STREAM_PORT } from \"@opengeni/contracts\";\n\nexport { DESKTOP_STREAM_PORT };\n\nexport type RecordingCodec = \"h264-mp4\" | \"vp9-webm\";\nexport type RecordingContentType = \"video/mp4\" | \"video/webm\";\n\nconst DEFAULT_MAX_SECONDS = 600; // 10 min hard ceiling (the -t bound)\nconst DEFAULT_FRAMERATE = 15;\nconst DEFAULT_MAX_BYTES = 268_435_456; // 256 MB\nconst DEFAULT_DIMENSIONS: [number, number] = [1280, 800];\n// The SIGINT-and-wait loop is bounded well under the command yield window (F3).\nconst STOP_YIELD_MS = 20_000;\nconst EXEC_YIELD_MS = 15_000;\n\nexport function contentTypeForCodec(codec: RecordingCodec): RecordingContentType {\n return codec === \"vp9-webm\" ? \"video/webm\" : \"video/mp4\";\n}\nexport function extForCodec(codec: RecordingCodec): string {\n return codec === \"vp9-webm\" ? \"webm\" : \"mp4\";\n}\n\n/** No exec/execCommand on the session — the box cannot run ffmpeg. */\nexport class RecordingUnavailableError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"RecordingUnavailableError\";\n }\n}\n/** ffmpeg failed, the file is missing, or the artifact is over its size limit. */\nexport class RecordingError extends Error {\n constructor(\n message: string,\n readonly reason: \"ffmpeg-error\" | \"box-death\" | \"max-bytes-exceeded\" | \"display-unavailable\",\n ) {\n super(message);\n this.name = \"RecordingError\";\n }\n}\n\n// The structural slice of a provider session the recording loop drives. exec and\n// execCommand are optional (Modal has only execCommand — F1).\ntype ExecResultLike = {\n output?: string;\n stdout?: string;\n stderr?: string;\n exitCode?: number | null;\n sessionId?: number;\n};\ntype RecordingSession = {\n exec?: (args: {\n cmd: string;\n runAs?: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n }) => Promise<ExecResultLike>;\n execCommand?: (args: {\n cmd: string;\n runAs?: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n }) => Promise<string>;\n};\n\nfunction shq(s: string): string {\n return `'${s.replace(/'/g, `'\\\\''`)}'`;\n}\n\nfunction resultOutput(result: ExecResultLike | string): string {\n if (typeof result === \"string\") return result;\n return [result.output, result.stderr, result.stdout]\n .filter((v): v is string => typeof v === \"string\" && v.length > 0)\n .join(\"\\n\");\n}\n\n// Default per-command output cap (tokens). Recording transfer does not use stdout.\nconst DEFAULT_MAX_OUTPUT_TOKENS = 4_000;\n\nasync function run(\n session: RecordingSession,\n cmd: string,\n runAs?: string,\n yieldTimeMs = EXEC_YIELD_MS,\n maxOutputTokens = DEFAULT_MAX_OUTPUT_TOKENS,\n): Promise<string> {\n const args: {\n cmd: string;\n runAs?: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n } = { cmd, ...(runAs ? { runAs } : {}), yieldTimeMs, maxOutputTokens };\n if (typeof session.exec === \"function\") {\n return resultOutput(await session.exec(args));\n }\n if (typeof session.execCommand === \"function\") {\n return resultOutput(await session.execCommand(args));\n }\n throw new RecordingUnavailableError(\n \"session cannot run commands (no exec/execCommand) — recording unavailable\",\n );\n}\n\n// Extract the command body from a provider exec banner. Modal's execCommand\n// returns \"<chunk banner>\\nProcess exited…\\nOutput:\\n<body>\"; the body is what\n// follows the last \"Output:\\n\" marker. Plain exec results (no banner) pass\n// through unchanged.\nfunction stripExecBanner(raw: string): string {\n const marker = raw.lastIndexOf(\"\\nOutput:\\n\");\n if (marker >= 0) return raw.slice(marker + \"\\nOutput:\\n\".length);\n if (raw.startsWith(\"Output:\\n\")) return raw.slice(\"Output:\\n\".length);\n return raw;\n}\n\nexport type StartRecordingInput = {\n recordingId: string;\n codec?: RecordingCodec;\n framerate?: number;\n maxSeconds?: number;\n dimensions?: [number, number];\n display?: string; // \":0\"\n runAs?: string;\n tmpDir?: string; // \"/tmp\"\n};\n\nexport type RecordingProcess = {\n recordingId: string;\n codec: RecordingCodec;\n boxPath: string;\n pidFile: string;\n dimensions: [number, number];\n framerate: number;\n /** epoch-ms when ffmpeg was launched (for duration computation, F14). */\n startedAt: number;\n display: string;\n runAs?: string;\n};\n\n/**\n * Launch ffmpeg x11grab on :0 → an mp4/webm file on the box. Backgrounded with\n * `nohup … & echo $!` so the launch returns immediately (F12 — the exec does not\n * block on the recording). A hard `-t <maxSeconds>` ceiling bounds a runaway file\n * across a multi-day turn. Returns the handle the caller carries to stop+finalize.\n */\nexport async function startRecording(\n session: unknown,\n input: StartRecordingInput,\n): Promise<RecordingProcess> {\n const s = session as RecordingSession;\n const codec = input.codec ?? \"h264-mp4\";\n const dimensions = input.dimensions ?? DEFAULT_DIMENSIONS;\n const framerate = input.framerate ?? DEFAULT_FRAMERATE;\n const maxSeconds = input.maxSeconds ?? DEFAULT_MAX_SECONDS;\n const display = input.display ?? \":0\";\n const tmp = input.tmpDir ?? \"/tmp\";\n const ext = extForCodec(codec);\n const boxPath = `${tmp}/og-rec-${input.recordingId}.${ext}`;\n const pidFile = `${tmp}/og-rec-${input.recordingId}.pid`;\n const logFile = `${tmp}/og-rec-${input.recordingId}.log`;\n const [w, h] = dimensions;\n const enc =\n codec === \"vp9-webm\"\n ? `-c:v libvpx-vp9 -b:v 0 -crf 32 -row-mt 1`\n : `-c:v libx264 -preset veryfast -pix_fmt yuv420p -movflags +faststart`;\n const ffmpeg =\n `nohup ffmpeg -hide_banner -loglevel error -f x11grab -draw_mouse 1 -framerate ${framerate} ` +\n `-video_size ${w}x${h} -i ${display}.0 -t ${maxSeconds} ${enc} ${boxPath} ` +\n `</dev/null >${logFile} 2>&1 & echo $! > ${pidFile}`;\n await run(s, `bash -lc ${shq(ffmpeg)}`, input.runAs);\n return {\n recordingId: input.recordingId,\n codec,\n boxPath,\n pidFile,\n dimensions,\n framerate,\n startedAt: Date.now(),\n display,\n ...(input.runAs ? { runAs: input.runAs } : {}),\n };\n}\n\n/**\n * SIGINT ffmpeg (so it writes a clean moov atom / webm trailer) and wait for the\n * pid to exit. Bounded well under the yield window (F3). Idempotent: a missing\n * pid file is a no-op.\n */\nexport async function stopRecording(session: unknown, proc: RecordingProcess): Promise<void> {\n const s = session as RecordingSession;\n const wait = `kill -INT \"$(cat ${proc.pidFile})\" 2>/dev/null; for i in $(seq 1 80); do kill -0 \"$(cat ${proc.pidFile})\" 2>/dev/null || break; sleep 0.1; done`;\n await run(s, `bash -lc ${shq(wait)}`, proc.runAs, STOP_YIELD_MS).catch(() => undefined);\n}\n\nexport type RecordingArtifactMetadata = {\n contentType: RecordingContentType;\n sizeBytes: number;\n durationSeconds: number;\n};\n\n/**\n * Inspect and size-gate the finalized recording while it is still on the box.\n * No recording bytes cross into the worker process.\n */\nexport async function inspectRecordingArtifact(\n session: unknown,\n proc: RecordingProcess,\n maxBytes = DEFAULT_MAX_BYTES,\n): Promise<RecordingArtifactMetadata> {\n const s = session as RecordingSession;\n if (typeof s.exec !== \"function\" && typeof s.execCommand !== \"function\") {\n throw new RecordingUnavailableError(\n \"session cannot run commands (no exec/execCommand) — recording finalize unavailable\",\n );\n }\n // F8: size-gate on the box before authorizing the upload.\n const sizeOut = (\n await run(\n s,\n `bash -lc ${shq(`stat -c %s ${proc.boxPath} 2>/dev/null || echo MISSING`)}`,\n proc.runAs,\n )\n ).trim();\n const sizeLine =\n sizeOut\n .split(\"\\n\")\n .map((l) => l.trim())\n .filter(Boolean)\n .pop() ?? \"MISSING\";\n if (sizeLine === \"MISSING\" || sizeLine === \"\") {\n throw new RecordingError(`recording file missing on box: ${proc.boxPath}`, \"box-death\");\n }\n const size = Number(sizeLine);\n if (!Number.isFinite(size) || size <= 0) {\n throw new RecordingError(`recording file empty on box: ${proc.boxPath}`, \"ffmpeg-error\");\n }\n if (size > maxBytes) {\n throw new RecordingError(`recording ${size}B exceeds max ${maxBytes}B`, \"max-bytes-exceeded\");\n }\n return {\n contentType: contentTypeForCodec(proc.codec),\n sizeBytes: size,\n durationSeconds: Math.max(0, Math.round((Date.now() - proc.startedAt) / 1000)),\n };\n}\n\nconst RECORDING_UPLOAD_OK = \"OPENGENI_RECORDING_UPLOAD_OK\";\nconst RECORDING_UPLOAD_MAX_SECONDS = 300;\n\n/**\n * Upload the finalized artifact directly from the sandbox to a scoped object-\n * storage URL. The worker carries only the short URL/headers and metadata; it\n * never materializes a base64 string or Uint8Array for a recording that may be\n * hundreds of megabytes. curl's success marker makes an exec transport that\n * returns non-zero command output instead of throwing still fail closed.\n */\nexport async function uploadRecordingArtifact(\n session: unknown,\n proc: RecordingProcess,\n input: {\n url: string;\n requiredHeaders: Record<string, string>;\n maxBytes?: number;\n maxSeconds?: number;\n },\n): Promise<RecordingArtifactMetadata> {\n const maxSeconds = input.maxSeconds ?? RECORDING_UPLOAD_MAX_SECONDS;\n if (!Number.isSafeInteger(maxSeconds) || maxSeconds <= 0 || maxSeconds > 300) {\n throw new Error(\"recording upload maxSeconds must be an integer between 1 and 300\");\n }\n const metadata = await inspectRecordingArtifact(session, proc, input.maxBytes);\n const headers = Object.entries(input.requiredHeaders)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([name, value]) => `--header ${shq(`${name}: ${value}`)}`)\n .join(\" \");\n const upload = [\n \"set -euo pipefail\",\n `curl --fail --silent --show-error --connect-timeout 20 --max-time ${maxSeconds} --request PUT ${headers} --upload-file ${shq(proc.boxPath)} ${shq(input.url)}`,\n `printf '${RECORDING_UPLOAD_OK}\\\\n'`,\n ].join(\"; \");\n const output = stripExecBanner(\n await run(\n session as RecordingSession,\n `bash -lc ${shq(upload)}`,\n proc.runAs,\n (maxSeconds + 10) * 1_000,\n ),\n );\n if (!output.includes(RECORDING_UPLOAD_OK)) {\n throw new Error(\"recording upload did not confirm success\");\n }\n return metadata;\n}\n\n/**\n * Delete the box artifacts. F9: call this ONLY after the storage PUT confirmed\n * and the `available` row committed — never before. Best-effort; never throws.\n */\nexport async function deleteRecordingArtifacts(\n session: unknown,\n proc: RecordingProcess,\n): Promise<void> {\n const s = session as RecordingSession;\n const logFile = proc.boxPath.replace(/\\.(mp4|webm)$/, \".log\");\n await run(s, `rm -f ${proc.boxPath} ${proc.pidFile} ${logFile}`, proc.runAs).catch(\n () => undefined,\n );\n}\n\n/** The storage object key for a recording artifact (parallels the file-asset layout). */\nexport function recordingStorageKey(\n workspaceId: string,\n sessionId: string,\n recordingId: string,\n codec: RecordingCodec,\n): string {\n return `recordings/${workspaceId}/${sessionId}/${recordingId}.${extForCodec(codec)}`;\n}\n","// `RoutingSandboxSession` — the per-session hot-swap routing proxy (M7).\n//\n// THE load-bearing SDK finding: when a box is injected\n// NON-OWNED into a turn (`ownedSandbox.session`), the agent SDK's sandbox\n// capabilities bind to that ONE session OBJECT ONCE and call ITS methods\n// (`exec`/`execCommand`/`readFile`/`listDir`/`resolveExposedPort`/…) per tool\n// call WITHOUT re-resolving the session. So to make the active sandbox flippable\n// mid-turn we cannot swap the object the SDK holds — we must give the SDK ONE\n// STABLE session-shaped object that, on EACH method call, re-reads the\n// per-session active pointer `(active_sandbox_id, active_epoch)` and DISPATCHES\n// to the CURRENTLY-active backend session (Modal or selfhosted).\n//\n// The contract:\n// - ONE stable object implementing the `SandboxSessionLike` structural surface.\n// - On EVERY op, re-read `(activeSandboxId, activeEpoch)` via `readPointer`.\n// - Cache the resolved backend session keyed by `activeEpoch`; when the epoch\n// changes mid-turn (a swap bumped it), re-resolve so the NEXT op hits the new\n// backend. Single active at a time (NOT parallel multi-attach).\n// - An in-flight op fenced by a STALE `active_epoch` (the backend rejects with a\n// fence error, OR the pointer moved under us between read and dispatch)\n// RETRIES against the new active sandbox — reusing the existing fenced-retry\n// role. Bounded retries so a pathological swap-storm can't loop forever.\n//\n// This module is agent-loop-free (it lives in the sandbox leaf). It depends ONLY\n// on injected closures (`readPointer` + `resolveActiveBackend`), so the API\n// (`withChannelA`) and the worker (`resumeBoxForTurn`/the turn) wire it to the\n// real `readActiveSandbox` DAO + a backend resolver without coupling the leaf to\n// `@opengeni/db`.\n\nimport type { ExposedPortEndpoint } from \"../stream-port\";\nimport { SelfhostedControlError } from \"../selfhosted/control-rpc\";\nimport { renderSelfhostedFault } from \"../selfhosted/fault-rendering\";\nimport { isExecSessionLostBanner } from \"../channel-a\";\nimport { parseExecBannerExitCode, parseExecBannerSessionId } from \"../exec-banner\";\n\n/** The per-session active-sandbox pointer the proxy re-reads on every op. Mirror\n * of `@opengeni/db`'s `ActiveSandboxPointer` (structural, so the leaf does not\n * import the DB package). `activeSandboxId === null` == \"use the session's own\n * group sandbox\" (the default/backward-compat target). */\nexport interface ActivePointer {\n activeSandboxId: string | null;\n activeEpoch: number;\n /** The session's working directory — the path/cwd base for a selfhosted backend\n * (threaded into the SelfhostedSession via the resolver). `null`/absent ⇒ the\n * default workspace_root behavior. Optional so the default-pointer fallback\n * (`{ activeSandboxId: null, activeEpoch: 0 }`) the readPointer wiring synthesizes\n * when no row exists needs no extra field. Only the selfhosted branch reads it;\n * the modal/default branches ignore it. */\n workingDir?: string | null;\n}\n\n/**\n * The structural slice of a backend session the routing proxy forwards to. It is\n * a superset-by-optionality of every backend's surface (Modal's `SandboxSession`\n * AND the `SelfhostedSession`): each method is optional because a heterogeneous\n * target may or may not implement it, and the proxy reflects that at call-time.\n */\nexport interface RoutableBackendSession {\n state?: unknown;\n exec?(args: unknown): Promise<unknown>;\n execCommand?(args: unknown): Promise<string>;\n writeStdin?(args: unknown): Promise<string>;\n cancelExecCommand?(opId: string): Promise<boolean>;\n readFile?(args: unknown): Promise<string | Uint8Array>;\n writeFile?(args: unknown): Promise<unknown>;\n createEditor?(runAs?: string): unknown;\n listDir?(args: unknown): Promise<unknown>;\n pathExists?(path: string, runAs?: string): Promise<boolean>;\n viewImage?(args: unknown): Promise<unknown>;\n materializeEntry?(args: unknown): Promise<void>;\n supportsPty?(): boolean;\n resolveExposedPort?(port: number): Promise<ExposedPortEndpoint>;\n serializeSessionState?(): Promise<unknown>;\n // The native-desktop control-plane surface (self-hosted / macOS): a backend that\n // drives the desktop NATIVELY (input inject + frame capture) instead of shelling\n // xdotool/scrot over `exec`. Optional like the rest — only a `SelfhostedSession`\n // implements these; a Modal box does not. The computer-use capability duck-types\n // on their PRESENCE (`isNativeDesktopSession`) to pick the native vs exec Computer.\n // `event` is kept `unknown` (mirroring the interface's structural style + avoiding\n // a proto import into the leaf); the SelfhostedSession takes `DesktopInputRequest[\"event\"]`.\n desktopInput?(event: unknown): Promise<void>;\n screenshot?(): Promise<{\n png: Uint8Array;\n width: number;\n height: number;\n nativeWidth: number;\n nativeHeight: number;\n }>;\n}\n\n/** The resolved active backend for an epoch: the live session + the sandbox id it\n * belongs to (`null` == the group sandbox) so a fence-retry can detect a move. */\nexport interface ResolvedActiveBackend {\n session: RoutableBackendSession;\n /** The sandbox id this backend serves (`null` == the session's group sandbox). */\n sandboxId: string | null;\n /** A label for diagnostics (\"modal\" | \"selfhosted\" | the sandbox name). */\n kind: string;\n /** Exact durable home-lease epoch for a persistable provider. Absent for\n * connected-machine and other non-persistable route targets. */\n leaseEpoch?: number;\n /** Exact durable provider identity paired with `leaseEpoch`. This is internal\n * routing metadata only; it is never projected to an agent or public API. */\n providerInstanceId?: string;\n /** Active-pointer epoch observed when this route was resolved. The proxy fills\n * this internally even when a resolver omits it. */\n activeEpoch?: number;\n}\n\n/** Durable identity assigned to a provider exec that yielded instead of\n * exiting. The UUID is OpenGeni authority; the numeric provider session id is\n * only a locator within the exact copied backend route. */\nexport type RoutingRetainedProcess = {\n id: string;\n providerSessionId: number;\n};\n\n/** A yielded process was durably promoted, but the mutable authority checked\n * after that commit was stale. The provider output must still be rejected;\n * this result carries only the safe process identity needed to drain the exact\n * original backend without replaying the mutation. */\nexport type RoutingMutationSettlementResult = {\n status: \"retained_process_durable_output_rejected\";\n retainedProcess: RoutingRetainedProcess;\n};\n\n/** Exact copied route identity required to reconstruct an already-durable\n * retained process after the request/runtime object that opened it is gone.\n * The live session is deliberately not caller-supplied: adoption may bind only\n * to this proxy's construction-time default backend, so it cannot resolve or\n * follow the current active pointer. */\nexport type RoutingRetainedProcessAdoption = {\n process: RoutingRetainedProcess;\n backend: {\n sandboxId: string | null;\n leaseEpoch?: number;\n providerInstanceId?: string;\n activeEpoch: number;\n };\n};\n\nexport type RoutingRetainedProcessTerminalProof =\n | { outcome: \"exited\"; exitCode: number; reason: \"provider_exit_banner\" }\n | { outcome: \"lost\"; exitCode: null; reason: \"provider_session_lost_banner\" };\n\nexport interface RoutingSandboxSessionDeps {\n /**\n * The DEFAULT backend resolved at construction time (the same shape `resolve()`\n * caches as `lastResolved`). This seeds `session.state` BEFORE the first op so a\n * consumer that reads `session.state.manifest` at turn START — the @openai/agents\n * SDK does, before any tool runs — sees the real default backend's state object\n * (and writes to `session.state.manifest = …` land on it by reference), instead\n * of an empty `{}` that crashes serializeManifestEnvironment /\n * validateProvidedSessionManifestUpdate. The default-pointer case\n * (`activeSandboxId === null`) resolves synchronously to this same backend, so\n * seeding it here is byte-identical to what the first `resolve()` would produce.\n */\n defaultResolved?: ResolvedActiveBackend;\n /** Re-read the per-session active pointer. Called on EVERY op (the per-call\n * re-resolve that makes a mid-turn swap visible to the next tool call). */\n readPointer(): Promise<ActivePointer>;\n /**\n * Resolve the active backend session for a pointer. The proxy memoizes the\n * result by `activeEpoch`, so this is called at most once per epoch (per op the\n * pointer is re-read, but the heavy resolve only re-runs when the epoch moved).\n * For `pointer.activeSandboxId === null` this returns the default/group backend\n * (typically the already-established turn box); for a non-null target it builds\n * the target backend (a sibling Modal box or a selfhosted machine session).\n */\n resolveActiveBackend(pointer: ActivePointer): Promise<ResolvedActiveBackend>;\n /** Max fence/stale retries within a single op before surfacing the error.\n * Defaults to 3 — enough to absorb a couple of concurrent swaps, bounded so a\n * swap-storm cannot loop forever. */\n maxFenceRetries?: number;\n /** Optional structured-log sink for swap/fence transitions (diagnostics). */\n onTransition?: (event: RoutingTransitionEvent) => void;\n /** Admit a filesystem-writing operation after resolving its exact route but\n * before invoking the provider. A rejection fails closed and is deliberately\n * outside provider fence-retry/error handling, so it can never replay the op\n * against a rival backend. */\n beforeMutation?: (input: { op: string; backend: ResolvedActiveBackend }) => Promise<unknown>;\n /** Mark a mutation physically settled after its provider promise resolves OR\n * rejects. A resolved result is also revalidated against the same durable\n * route and attempt fence before its output is accepted. Settlement rejection\n * leaves a fail-closed blocker and the mutation must never be replayed. */\n afterMutation?: (input: {\n op: string;\n backend: ResolvedActiveBackend;\n admission: unknown;\n outcome: \"resolved\" | \"rejected\";\n /** Provider result for a resolved call. Never present for rejection. */\n result?: unknown;\n /** Stable candidate generated before durable promotion is attempted. It is\n * supplied only when the provider returned a positive yielded-session id. */\n retainedProcess?: RoutingRetainedProcess;\n }) => Promise<void | RoutingMutationSettlementResult>;\n /** Admit one model/user-visible stdin mutation under the already-durable\n * retained process authority. Control polling and helper execs never call it. */\n beforeProcessMutation?: (input: {\n op: string;\n backend: ResolvedActiveBackend;\n process: RoutingRetainedProcess;\n }) => Promise<unknown>;\n /** Physically settle one process-scoped stdin admission. */\n afterProcessMutation?: (input: {\n op: string;\n backend: ResolvedActiveBackend;\n process: RoutingRetainedProcess;\n admission: unknown;\n outcome: \"resolved\" | \"rejected\";\n result?: unknown;\n }) => Promise<void>;\n /** Close the durable parent admission/process holder only after exact exit or\n * matching provider-loss proof. Tracking is removed only after this resolves. */\n settleProcess?: (input: {\n backend: ResolvedActiveBackend;\n process: RoutingRetainedProcess;\n proof: RoutingRetainedProcessTerminalProof;\n }) => Promise<void>;\n /** Called only when an operation against the default/home backend throws a\n * non-fence error. Wiring may classify definitive provider disappearance and\n * atomically retire the exact lease epoch. Returning a result makes dispatch\n * throw a typed recovery-required error WITHOUT replaying the operation (the\n * original mutation may have reached the provider). */\n onDefaultBackendError?: (input: {\n op: string;\n error: unknown;\n kind: string;\n backend: ResolvedActiveBackend;\n }) => Promise<DefaultBackendLossResult | null>;\n}\n\nexport type DefaultBackendLossResult = {\n leaseEpoch: number;\n recovery: \"pending\" | \"degraded\" | \"unrecoverable\" | \"superseded\";\n};\n\nexport interface RoutingTransitionEvent {\n type: \"resolved\" | \"fenced-retry\" | \"epoch-changed\";\n fromEpoch: number;\n toEpoch: number;\n sandboxId: string | null;\n kind: string;\n}\n\n/** Thrown when the active backend does not implement the requested op (a\n * heterogeneous target whose surface lacks the method the caller reached for). */\nexport class RoutingUnsupportedError extends Error {\n readonly name = \"RoutingUnsupportedError\";\n constructor(op: string, kind: string) {\n super(`the active sandbox (${kind}) does not support \"${op}\"`);\n }\n}\n\nexport class RoutingBackendRecoveryRequiredError extends Error {\n readonly name = \"RoutingBackendRecoveryRequiredError\";\n readonly retryable: boolean;\n\n constructor(\n public readonly op: string,\n public readonly leaseEpoch: number,\n public readonly recovery: DefaultBackendLossResult[\"recovery\"],\n ) {\n super(\n `sandbox backend disappeared during ${op}; recovery is ${recovery} at epoch ${leaseEpoch}`,\n );\n this.retryable = recovery === \"pending\" || recovery === \"superseded\";\n }\n}\n\n/** A mutating provider call was admitted but could not be settled against the\n * exact route that admitted it. The provider may have applied the effect, so the\n * proxy rejects the output and explicitly forbids an automatic replay. */\nexport class RoutingMutationOutcomeUnknownError extends Error {\n readonly name = \"RoutingMutationOutcomeUnknownError\";\n readonly retryable = false;\n readonly retainedProcess: RoutingRetainedProcess | null;\n\n constructor(\n public readonly op: string,\n message: string,\n options?: { cause?: unknown; retainedProcess?: RoutingRetainedProcess },\n ) {\n super(message, options);\n this.retainedProcess = options?.retainedProcess ?? null;\n }\n}\n\n/** An explicit process-aware operation named a numeric provider locator that\n * is not retained by this routing session. Callers must never fall back to the\n * current active pointer for such an operation. */\nexport class RoutingRetainedProcessNotFoundError extends Error {\n readonly name = \"RoutingRetainedProcessNotFoundError\";\n readonly retryable = false;\n\n constructor(public readonly providerSessionId: number) {\n super(`retained sandbox process ${providerSessionId} is not tracked on its original route`);\n }\n}\n\ntype PendingParentPromotion = Parameters<\n NonNullable<RoutingSandboxSessionDeps[\"afterMutation\"]>\n>[0];\n\ntype PendingProcessMutationSettlement = Parameters<\n NonNullable<RoutingSandboxSessionDeps[\"afterProcessMutation\"]>\n>[0];\n\ntype RetainedProcessRecord = {\n process: RoutingRetainedProcess;\n backend: ResolvedActiveBackend;\n durable: boolean;\n pendingParentPromotion: PendingParentPromotion | null;\n pendingMutationSettlement: PendingProcessMutationSettlement | null;\n pendingTerminal: {\n proof: RoutingRetainedProcessTerminalProof;\n result: string;\n } | null;\n settlement: Promise<void> | null;\n};\n\n/** Recognize a stale-epoch FENCE error from a backend op so the proxy retries\n * against the re-resolved active sandbox (the existing fenced-retry role). A\n * selfhosted `SelfhostedControlError` carries `.fenced`; a generic fence is\n * matched on the message as a fallback. */\nfunction isFenceError(error: unknown): boolean {\n if (!error || typeof error !== \"object\") {\n return false;\n }\n if ((error as { fenced?: unknown }).fenced === true) {\n return true;\n }\n const name =\n typeof (error as { name?: unknown }).name === \"string\" ? (error as { name: string }).name : \"\";\n const message =\n error instanceof Error ? error.message : String((error as { message?: unknown }).message ?? \"\");\n const haystack = `${name} ${message}`.toLowerCase();\n return haystack.includes(\"fenced\") || (haystack.includes(\"epoch\") && haystack.includes(\"super\"));\n}\n\nfunction positiveProviderSessionId(value: unknown): number | null {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value > 0 ? value : null;\n}\n\nfunction canonicalUuid(value: string): boolean {\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value);\n}\n\nfunction providerSessionIdFromResult(result: unknown): number | null {\n if (typeof result === \"string\") {\n return positiveProviderSessionId(parseExecBannerSessionId(result));\n }\n if (!result || typeof result !== \"object\") return null;\n const record = result as { sessionId?: unknown; session_id?: unknown };\n return (\n positiveProviderSessionId(record.sessionId) ?? positiveProviderSessionId(record.session_id)\n );\n}\n\nfunction providerSessionIdFromArgs(args: unknown): number | null {\n if (!args || typeof args !== \"object\") return null;\n const record = args as { sessionId?: unknown; session_id?: unknown };\n return (\n positiveProviderSessionId(record.sessionId) ?? positiveProviderSessionId(record.session_id)\n );\n}\n\nfunction retainedProcessTerminalProof(\n result: string,\n providerSessionId: number,\n): RoutingRetainedProcessTerminalProof | null {\n if (isExecSessionLostBanner(result, providerSessionId)) {\n return {\n outcome: \"lost\",\n exitCode: null,\n reason: \"provider_session_lost_banner\",\n };\n }\n const exitCode = parseExecBannerExitCode(result);\n return exitCode === null ? null : { outcome: \"exited\", exitCode, reason: \"provider_exit_banner\" };\n}\n\nfunction formatExecResult(result: unknown): string {\n if (typeof result === \"string\") return result;\n if (!result || typeof result !== \"object\") {\n throw new Error(\"sandbox process-control exec returned an invalid result\");\n }\n const record = result as {\n output?: unknown;\n stdout?: unknown;\n stderr?: unknown;\n exitCode?: unknown;\n exit_code?: unknown;\n sessionId?: unknown;\n session_id?: unknown;\n };\n const output = [record.output, record.stderr, record.stdout]\n .filter((value): value is string => typeof value === \"string\" && value.length > 0)\n .join(\"\\n\");\n const sessionId =\n positiveProviderSessionId(record.sessionId) ?? positiveProviderSessionId(record.session_id);\n if (sessionId !== null) {\n return `Process running with session ID ${sessionId}\\n\\nOutput:\\n${output}`;\n }\n const exitCode =\n typeof record.exitCode === \"number\"\n ? record.exitCode\n : typeof record.exit_code === \"number\"\n ? record.exit_code\n : null;\n if (exitCode !== null && Number.isSafeInteger(exitCode)) {\n return `Process exited with code ${exitCode}\\n\\nOutput:\\n${output}`;\n }\n throw new Error(\"sandbox process-control exec reported neither session id nor exit code\");\n}\n\n/**\n * ONE stable session-shaped object the SDK binds to. Every method re-reads the\n * pointer, resolves the active backend (cached by epoch), and dispatches. A\n * stale-epoch fence (the pointer moved mid-op) re-resolves and retries.\n *\n * The proxy implements ALL of the consumed surface so the SDK (which binds method\n * presence ONCE) always sees `exec`/`readFile`/`resolveExposedPort`/… present. If\n * the CURRENTLY-active backend lacks a method, the proxy applies the natural\n * fallback (`exec`→`execCommand`) or throws `RoutingUnsupportedError` — degrade is\n * a value, not a crash.\n *\n * `state` is a STABLE getter so a consumer reading `session.state` (channel-a's\n * `readInstanceId`, the docker-network decoration) gets a coherent snapshot of the\n * currently-active backend without a method call.\n */\nexport class RoutingSandboxSession implements RoutableBackendSession {\n private readonly deps: RoutingSandboxSessionDeps;\n private readonly maxFenceRetries: number;\n // The resolved-backend cache. Keyed by the FULL pointer tuple\n // `(activeEpoch, activeSandboxId)` — NOT the epoch alone. A swap bumps the epoch,\n // but a pointer can also change its target id WITHOUT an epoch bump: the\n // `sessions.active_sandbox_id` FK is `ON DELETE SET NULL`, so a cascade that\n // deletes the pointed-at sandbox row nulls the id at the SAME epoch. Keying on the\n // epoch alone would then keep serving the deleted/stale backend for that epoch\n // (issue #341 §5.2 — a swap-free route to the Shape-3 symptom). Keying on the tuple\n // makes any target change — epoch-bumped OR not — invalidate the cache so the next\n // op re-resolves (and, for a null id, re-resolves the session HOME).\n private cachedEpoch: number | undefined;\n private cachedSandboxId: string | null | undefined;\n private cached: ResolvedActiveBackend | undefined;\n // The last-resolved backend, exposed via the `state` getter (a method-free read\n // of the active backend's `state`). Updated on every resolve.\n private lastResolved: ResolvedActiveBackend | undefined;\n /** Provider session ids are scoped to one backend instance. Each entry copies\n * that exact resolved route so pointer movement can never redirect stdin,\n * polling, or process-group helpers to another box. */\n private readonly retainedProcesses = new Map<number, RetainedProcessRecord>();\n\n // The native-desktop control-plane ops (self-hosted / macOS). Declared as OPTIONAL\n // INSTANCE fields — NOT prototype methods — because their PRESENCE is the selection\n // signal `isNativeDesktopSession` (sandbox-computer.ts) uses to pick the native vs\n // exec-shelling Computer. If they were unconditional prototype methods, this proxy\n // would ALWAYS duck-type as native — misclassifying a Modal-fronting proxy (whose\n // real backend has no native surface) and driving CGEvent/screenshot ops at a box\n // that cannot serve them. So the constructor assigns them ONLY when the\n // construction-time default backend actually implements the native surface (below).\n desktopInput?: (event: unknown) => Promise<void>;\n screenshot?: () => Promise<{\n png: Uint8Array;\n width: number;\n height: number;\n nativeWidth: number;\n nativeHeight: number;\n }>;\n\n constructor(deps: RoutingSandboxSessionDeps) {\n this.deps = deps;\n this.maxFenceRetries = deps.maxFenceRetries ?? 3;\n\n // Conditionally expose the native-desktop surface. Presence = the computer-use\n // native/exec selection signal (isNativeDesktopSession duck-types on\n // desktopInput+screenshot being functions); unconditional presence would\n // misclassify Modal-fronting proxies as native. So we mint these per-INSTANCE\n // arrow properties ONLY when the default backend resolved at construction is\n // itself native-capable — the machine-primary (selfhosted) case. Each dispatches\n // to the ACTIVE backend at call-time; if a mid-turn swap lands on a backend that\n // lacks the op (a cross-kind swap to a Modal box), dispatch throws\n // RoutingUnsupportedError — a legible tool failure, never a silent Linux-tool\n // shell onto a Mac.\n const def = deps.defaultResolved?.session;\n if (typeof def?.desktopInput === \"function\" && typeof def?.screenshot === \"function\") {\n this.desktopInput = (event: unknown) =>\n this.dispatch(\"desktopInput\", true, async (s) => {\n if (!s.desktopInput) {\n throw new RoutingUnsupportedError(\"desktopInput\", this.cached?.kind ?? \"unknown\");\n }\n return s.desktopInput(event);\n });\n this.screenshot = () =>\n this.dispatch(\"screenshot\", false, async (s) => {\n if (!s.screenshot) {\n throw new RoutingUnsupportedError(\"screenshot\", this.cached?.kind ?? \"unknown\");\n }\n return s.screenshot();\n });\n }\n }\n\n /**\n * A method-free read of the active backend's `state` (best-effort: the last\n * resolved backend, falling back to the default backend resolved at construction\n * so this is non-empty BEFORE the first op). Consumers that read `session.state`\n * (instanceId/decoration) get the active backend's state.\n *\n * CRITICAL: this returns the underlying backend's `state` OBJECT BY REFERENCE\n * (never a fresh `{}` when a backend exists). The @openai/agents SDK both READS\n * `session.state.manifest` and WRITES `session.state.manifest = nextManifest`\n * (providedSessionManifest); returning the live object by reference means those\n * property writes land on the real backend state and persist. Only when NO\n * backend has been resolved yet (no default seeded, no op dispatched) do we\n * return an empty object — and that path no longer occurs in the turn wiring,\n * which always seeds `defaultResolved`.\n */\n get state(): unknown {\n const backendState = (this.lastResolved ?? this.deps.defaultResolved)?.session.state;\n return backendState ?? {};\n }\n\n /**\n * Re-read the pointer and resolve the active backend, using the per-epoch cache.\n * The cache is keyed by `activeEpoch`: if the epoch is unchanged we return the\n * cached backend; if it moved (a swap) we re-resolve and update the cache. This\n * is THE per-call re-read that makes a mid-turn swap land on the next op.\n */\n private async resolve(): Promise<ResolvedActiveBackend> {\n const pointer = await this.deps.readPointer();\n if (\n this.cachedEpoch === pointer.activeEpoch &&\n this.cachedSandboxId === pointer.activeSandboxId &&\n this.cached\n ) {\n return this.cached;\n }\n const fromEpoch = this.cachedEpoch ?? pointer.activeEpoch;\n const resolved = await this.deps.resolveActiveBackend(pointer);\n // Re-entrancy guard: a resolver that returns THIS proxy as the active backend\n // makes every op (exec/readFile/…) dispatch back into resolve() -> the same\n // backend -> forever (a silent async infinite recursion that HANGS the turn,\n // not a stack overflow). Fail loud instead — a wiring bug must surface as a\n // legible error, never a hung turn.\n if ((resolved.session as unknown) === this) {\n throw new Error(\n \"RoutingSandboxSession.resolveActiveBackend returned the proxy itself as the active backend (re-entrancy) — the resolver must return the underlying box session, not the routing proxy.\",\n );\n }\n const routed: ResolvedActiveBackend = {\n ...resolved,\n activeEpoch: pointer.activeEpoch,\n };\n this.cachedEpoch = pointer.activeEpoch;\n this.cachedSandboxId = pointer.activeSandboxId;\n this.cached = routed;\n this.lastResolved = routed;\n this.deps.onTransition?.({\n type:\n this.cachedEpoch !== undefined && fromEpoch !== pointer.activeEpoch\n ? \"epoch-changed\"\n : \"resolved\",\n fromEpoch,\n toEpoch: pointer.activeEpoch,\n sandboxId: routed.sandboxId,\n kind: routed.kind,\n });\n return routed;\n }\n\n private invalidate(backend: ResolvedActiveBackend): void {\n this.cachedEpoch = undefined;\n this.cachedSandboxId = undefined;\n this.cached = undefined;\n this.deps.onTransition?.({\n type: \"fenced-retry\",\n fromEpoch: backend.activeEpoch ?? 0,\n toEpoch: 0,\n sandboxId: backend.sandboxId,\n kind: backend.kind,\n });\n }\n\n private registerRetainedProcess(\n process: RoutingRetainedProcess,\n backend: ResolvedActiveBackend,\n ): RetainedProcessRecord {\n if (this.retainedProcesses.has(process.providerSessionId)) {\n throw new RoutingMutationOutcomeUnknownError(\n \"retainProcess\",\n `Provider session ${process.providerSessionId} was yielded while that locator was already retained; neither process was rebound`,\n );\n }\n const record: RetainedProcessRecord = {\n process,\n backend,\n durable: !this.deps.afterMutation,\n pendingParentPromotion: null,\n pendingMutationSettlement: null,\n pendingTerminal: null,\n settlement: null,\n };\n this.retainedProcesses.set(process.providerSessionId, record);\n return record;\n }\n\n private retainedProcess(providerSessionId: number): RetainedProcessRecord {\n const retained = this.retainedProcesses.get(providerSessionId);\n if (!retained) throw new RoutingRetainedProcessNotFoundError(providerSessionId);\n return retained;\n }\n\n /** Reconstruct one process that was already promoted durably by an earlier\n * request. Adoption never reads the active pointer and never repeats parent\n * promotion. It can bind only to the exact construction-time default backend;\n * callers must reject non-default routes until they can independently rebuild\n * that provider session from its copied durable identity. */\n adoptRetainedProcess(input: RoutingRetainedProcessAdoption): void {\n const providerSessionId = positiveProviderSessionId(input.process.providerSessionId);\n const seed = this.deps.defaultResolved;\n if (\n providerSessionId === null ||\n !canonicalUuid(input.process.id) ||\n !seed ||\n seed.sandboxId !== input.backend.sandboxId ||\n seed.leaseEpoch !== input.backend.leaseEpoch ||\n seed.providerInstanceId !== input.backend.providerInstanceId ||\n !Number.isSafeInteger(input.backend.activeEpoch) ||\n input.backend.activeEpoch < 0\n ) {\n throw new RoutingMutationOutcomeUnknownError(\n \"adoptRetainedProcess\",\n `Retained provider session ${input.process.providerSessionId} did not match the exact default backend identity`,\n );\n }\n const existing = this.retainedProcesses.get(providerSessionId);\n if (existing) {\n if (\n existing.process.id === input.process.id &&\n existing.backend.session === seed.session &&\n existing.backend.sandboxId === input.backend.sandboxId &&\n existing.backend.leaseEpoch === input.backend.leaseEpoch &&\n existing.backend.providerInstanceId === input.backend.providerInstanceId &&\n existing.backend.activeEpoch === input.backend.activeEpoch\n ) {\n return;\n }\n throw new RoutingMutationOutcomeUnknownError(\n \"adoptRetainedProcess\",\n `Provider session ${providerSessionId} is already bound to a different retained process identity`,\n );\n }\n this.retainedProcesses.set(providerSessionId, {\n process: { ...input.process },\n backend: {\n ...seed,\n activeEpoch: input.backend.activeEpoch,\n },\n durable: true,\n pendingParentPromotion: null,\n pendingMutationSettlement: null,\n pendingTerminal: null,\n settlement: null,\n });\n }\n\n private async ensureParentPromotion(record: RetainedProcessRecord): Promise<void> {\n if (record.durable) return;\n const pending = record.pendingParentPromotion;\n if (!pending || !this.deps.afterMutation) {\n throw new RoutingMutationOutcomeUnknownError(\n \"retainProcess\",\n `Retained provider session ${record.process.providerSessionId} has no confirmed durable parent admission`,\n );\n }\n try {\n const result = await this.deps.afterMutation(pending);\n if (result) this.confirmDurableRejectedPromotion(record, result);\n record.pendingParentPromotion = null;\n record.durable = true;\n } catch (error) {\n throw new RoutingMutationOutcomeUnknownError(\n pending.op,\n `Yielded sandbox process ${record.process.providerSessionId} could not confirm its durable promotion; tracking remains pinned to the original backend`,\n { cause: error },\n );\n }\n }\n\n private confirmDurableRejectedPromotion(\n record: RetainedProcessRecord,\n result: RoutingMutationSettlementResult,\n ): void {\n if (\n result.status !== \"retained_process_durable_output_rejected\" ||\n result.retainedProcess.id !== record.process.id ||\n result.retainedProcess.providerSessionId !== record.process.providerSessionId\n ) {\n throw new RoutingMutationOutcomeUnknownError(\n \"retainProcess\",\n `Durable promotion result did not match retained provider session ${record.process.providerSessionId}`,\n );\n }\n record.pendingParentPromotion = null;\n record.durable = true;\n }\n\n private async settleRetainedProcess(\n record: RetainedProcessRecord,\n proof: RoutingRetainedProcessTerminalProof,\n result: string,\n ): Promise<void> {\n record.pendingTerminal ??= { proof, result };\n const pending = record.pendingTerminal;\n if (\n pending.proof.outcome !== proof.outcome ||\n pending.proof.exitCode !== proof.exitCode ||\n pending.proof.reason !== proof.reason\n ) {\n throw new RoutingMutationOutcomeUnknownError(\n \"settleProcess\",\n `Retained provider session ${record.process.providerSessionId} produced conflicting terminal proof`,\n );\n }\n record.settlement ??= (async () => {\n await this.ensureParentPromotion(record);\n await this.deps.settleProcess?.({\n backend: record.backend,\n process: record.process,\n proof: pending.proof,\n });\n this.retainedProcesses.delete(record.process.providerSessionId);\n record.pendingTerminal = null;\n })();\n try {\n await record.settlement;\n } catch (error) {\n // A failed DB settlement is not permission to forget the physical process.\n // Keep the exact route and immutable proof so the next control poll retries\n // settlement without issuing a command against a new backend.\n record.settlement = null;\n throw new RoutingMutationOutcomeUnknownError(\n \"settleProcess\",\n `Retained provider session ${record.process.providerSessionId} reached a terminal state but durable settlement failed; tracking remains pinned`,\n { cause: error },\n );\n }\n }\n\n private async flushPendingProcessMutation(record: RetainedProcessRecord): Promise<string | null> {\n const pending = record.pendingMutationSettlement;\n if (!pending) return null;\n try {\n await this.deps.afterProcessMutation?.(pending);\n record.pendingMutationSettlement = null;\n } catch (error) {\n throw new RoutingMutationOutcomeUnknownError(\n pending.op,\n `Retained-process mutation ${pending.op} still lacks durable physical settlement; no later process mutation was admitted`,\n { cause: error },\n );\n }\n if (pending.outcome === \"resolved\" && typeof pending.result === \"string\") {\n const proof = retainedProcessTerminalProof(pending.result, record.process.providerSessionId);\n if (proof) {\n await this.settleRetainedProcess(record, proof, pending.result);\n return pending.result;\n }\n }\n return null;\n }\n\n private async dispatchProcessMutation(args: unknown): Promise<string> {\n const providerSessionId = providerSessionIdFromArgs(args);\n if (providerSessionId === null) throw new RoutingRetainedProcessNotFoundError(-1);\n const record = this.retainedProcess(providerSessionId);\n const priorTerminal = await this.flushPendingProcessMutation(record);\n if (priorTerminal !== null) return priorTerminal;\n if (record.pendingTerminal) {\n const terminal = record.pendingTerminal;\n await this.settleRetainedProcess(record, terminal.proof, terminal.result);\n return terminal.result;\n }\n await this.ensureParentPromotion(record);\n const op = \"writeStdin\";\n const admission = await this.deps.beforeProcessMutation?.({\n op,\n backend: record.backend,\n process: record.process,\n });\n const write = record.backend.session.writeStdin;\n if (!write) throw new RoutingUnsupportedError(op, record.backend.kind);\n let result: string;\n try {\n result = await write.call(record.backend.session, args);\n } catch (error) {\n if (this.deps.afterProcessMutation) {\n const pending: PendingProcessMutationSettlement = {\n op,\n backend: record.backend,\n process: record.process,\n admission,\n outcome: \"rejected\",\n };\n try {\n await this.deps.afterProcessMutation(pending);\n } catch (settlementError) {\n record.pendingMutationSettlement = pending;\n throw new RoutingMutationOutcomeUnknownError(\n op,\n `Retained-process stdin rejected at the provider but lost durable settlement; it was not replayed`,\n { cause: settlementError },\n );\n }\n }\n throw error;\n }\n if (this.deps.afterProcessMutation) {\n const pending: PendingProcessMutationSettlement = {\n op,\n backend: record.backend,\n process: record.process,\n admission,\n outcome: \"resolved\",\n result,\n };\n try {\n await this.deps.afterProcessMutation(pending);\n } catch (error) {\n record.pendingMutationSettlement = pending;\n throw new RoutingMutationOutcomeUnknownError(\n op,\n `Retained-process stdin returned from the provider but lost durable settlement; tracking remains pinned and it was not replayed`,\n { cause: error },\n );\n }\n }\n const proof = retainedProcessTerminalProof(result, providerSessionId);\n if (proof) await this.settleRetainedProcess(record, proof, result);\n return result;\n }\n\n private async dispatchProcessControl(args: unknown): Promise<string> {\n const providerSessionId = providerSessionIdFromArgs(args);\n if (providerSessionId === null) throw new RoutingRetainedProcessNotFoundError(-1);\n const record = this.retainedProcess(providerSessionId);\n const priorTerminal = await this.flushPendingProcessMutation(record);\n if (priorTerminal !== null) return priorTerminal;\n if (record.pendingTerminal) {\n const terminal = record.pendingTerminal;\n await this.settleRetainedProcess(record, terminal.proof, terminal.result);\n return terminal.result;\n }\n await this.ensureParentPromotion(record);\n const write = record.backend.session.writeStdin;\n if (!write) throw new RoutingUnsupportedError(\"writeStdin\", record.backend.kind);\n const result = await write.call(record.backend.session, args);\n const proof = retainedProcessTerminalProof(result, providerSessionId);\n if (proof) await this.settleRetainedProcess(record, proof, result);\n return result;\n }\n\n /**\n * Dispatch an op to the currently-active backend, retrying on a stale-epoch\n * fence. The sequence per attempt:\n * 1. re-read the pointer + resolve the active backend (cached by epoch),\n * 2. run `fn(activeSession)`,\n * 3. on a FENCE error (the pointer moved under us / the backend rejected a\n * stale epoch), INVALIDATE the cache and retry against the re-resolved\n * active sandbox — up to `maxFenceRetries`.\n * A non-fence error propagates immediately (it is a real op failure, not a swap\n * race).\n */\n private async dispatch<T>(\n op: string,\n mutatesWorkspace: boolean,\n fn: (session: RoutableBackendSession) => Promise<T>,\n ): Promise<T> {\n let attempt = 0;\n let lastError: unknown;\n while (attempt <= this.maxFenceRetries) {\n const backend = await this.resolve();\n // Admission failures are NOT provider fence errors and must never enter\n // the retry/rebind loop. If this exact route cannot advance its durable\n // mutation generation, fail before the provider sees the operation.\n const admission = mutatesWorkspace\n ? await this.deps.beforeMutation?.({ op, backend })\n : undefined;\n let result: T;\n try {\n result = await fn(backend.session);\n } catch (error) {\n if (mutatesWorkspace && this.deps.afterMutation) {\n try {\n await this.deps.afterMutation({\n op,\n backend,\n admission,\n outcome: \"rejected\",\n });\n } catch (settlementError) {\n this.invalidate(backend);\n throw new RoutingMutationOutcomeUnknownError(\n op,\n `Mutating sandbox operation \"${op}\" rejected at the provider but lost its durable physical settlement; its outcome is unknown and it was not replayed`,\n { cause: settlementError },\n );\n }\n }\n if (!isFenceError(error)) {\n if (backend.sandboxId === null && this.deps.onDefaultBackendError) {\n const loss = await this.deps.onDefaultBackendError({\n op,\n error,\n kind: backend.kind,\n backend,\n });\n if (loss) {\n // Never replay an operation after provider disappearance. Even a\n // read may race a route change, and a mutation's provider outcome\n // is ambiguous. The next independently-admitted call observes the\n // advanced epoch and elected recovery state.\n this.invalidate(backend);\n throw new RoutingBackendRecoveryRequiredError(op, loss.leaseEpoch, loss.recovery);\n }\n }\n throw error;\n }\n this.invalidate(backend);\n if (mutatesWorkspace) {\n throw new RoutingMutationOutcomeUnknownError(\n op,\n `Mutating sandbox operation \"${op}\" was fenced after provider admission; its outcome is unknown and it was not replayed`,\n { cause: error },\n );\n }\n // Stale-epoch fence: the active pointer moved mid-op. Drop the cache so\n // the next resolve re-reads the NEW pointer and the op lands on the new\n // active sandbox (the fenced-retry role). Bounded by maxFenceRetries.\n lastError = error;\n attempt += 1;\n continue;\n }\n\n const yieldedSessionId =\n mutatesWorkspace && (op === \"exec\" || op === \"execCommand\")\n ? providerSessionIdFromResult(result)\n : null;\n const retainedProcess =\n yieldedSessionId === null\n ? undefined\n : { id: crypto.randomUUID(), providerSessionId: yieldedSessionId };\n const retainedRecord = retainedProcess\n ? this.registerRetainedProcess(retainedProcess, backend)\n : null;\n\n if (mutatesWorkspace && this.deps.afterMutation) {\n const settlement: PendingParentPromotion = {\n op,\n backend,\n admission,\n outcome: \"resolved\",\n result,\n ...(retainedProcess ? { retainedProcess } : {}),\n };\n try {\n const settlementResult = await this.deps.afterMutation(settlement);\n if (retainedRecord && settlementResult) {\n this.confirmDurableRejectedPromotion(retainedRecord, settlementResult);\n this.invalidate(backend);\n throw new RoutingMutationOutcomeUnknownError(\n op,\n `Mutating sandbox operation \"${op}\" yielded provider session ${retainedRecord.process.providerSessionId}; durable promotion succeeded but stale authority rejected its output, and the operation was not replayed`,\n { retainedProcess: retainedRecord.process },\n );\n }\n if (retainedRecord) retainedRecord.durable = true;\n } catch (error) {\n if (\n error instanceof RoutingMutationOutcomeUnknownError &&\n error.retainedProcess !== null\n ) {\n throw error;\n }\n if (retainedRecord) retainedRecord.pendingParentPromotion = settlement;\n this.invalidate(backend);\n throw new RoutingMutationOutcomeUnknownError(\n op,\n retainedRecord\n ? `Mutating sandbox operation \"${op}\" yielded provider session ${retainedRecord.process.providerSessionId} but lost durable process promotion; exact-backend tracking remains and the operation was not replayed`\n : `Mutating sandbox operation \"${op}\" returned from the provider but lost its durable route settlement; its outcome is unknown and it was not replayed`,\n { cause: error },\n );\n }\n }\n\n // Durable process promotion validated this exact route under the same\n // transaction that retained the parent admission. Later pointer movement\n // cannot invalidate or redirect that process, so return its locator and\n // let process-aware methods use the copied backend identity.\n if (retainedRecord) return result;\n\n // Reject output produced by a route that changed while the provider call\n // was in flight. Reads can safely retry on the new route. Mutations cannot:\n // their provider effect may already have happened on the old route.\n let current: ActivePointer;\n try {\n current = await this.deps.readPointer();\n } catch (error) {\n if (mutatesWorkspace) {\n this.invalidate(backend);\n throw new RoutingMutationOutcomeUnknownError(\n op,\n `Mutating sandbox operation \"${op}\" returned from the provider but its route could not be revalidated; its outcome is unknown and it was not replayed`,\n { cause: error },\n );\n }\n throw error;\n }\n if (\n current.activeEpoch !== backend.activeEpoch ||\n current.activeSandboxId !== backend.sandboxId\n ) {\n this.invalidate(backend);\n if (mutatesWorkspace) {\n throw new RoutingMutationOutcomeUnknownError(\n op,\n `Mutating sandbox operation \"${op}\" completed on a superseded route; its output was rejected and it was not replayed`,\n );\n }\n lastError = new Error(`sandbox route changed while \"${op}\" was in flight`);\n attempt += 1;\n continue;\n }\n return result;\n }\n // Exhausted retries against a relentless swap-storm: surface the fence so the\n // caller (turn) backs off — never loop forever.\n throw lastError ?? new Error(`routing op \"${op}\" exhausted fence retries`);\n }\n\n /**\n * The failure-visibility boundary for the `exec_command` SDK capability tool — the\n * dominant fault surface, and the one whose thrown `SelfhostedControlError` reaches\n * the model wrapped by the SDK's generic tool-error function as\n * \"…Please try again. Error: …\" — actively wrong for a machine that is offline, a\n * consent that is not granted, or an oversized reply. Since the SDK closure-captures\n * its `errorFunction` (there is no seam to attach one to its internally-built tools),\n * we render the fault into the doctrine's four fields HERE and return it as the\n * tool's string result — legible, in-band, and free of the misleading wrapper.\n * (`apply_patch` already surfaces `error.message` via the SDK's own catch; the\n * skills / `view_image` tools consume their session methods internally, so they are\n * rendered elsewhere or left to their own SDK renderers — not this string boundary.)\n *\n * A FENCE error is re-thrown, NEVER rendered: `dispatch` already retries it against\n * a re-resolved backend, and a fence that escapes retries is a routing condition the\n * turn handles, not a model-facing fault. Any non-selfhosted error (a Modal fault, a\n * `RoutingUnsupportedError`) is re-thrown unchanged.\n */\n private renderSelfhostedFaultOrThrow(error: unknown): string {\n if (error instanceof SelfhostedControlError && !error.fenced) {\n return renderSelfhostedFault(error);\n }\n throw error;\n }\n\n // ── The forwarded structural surface ──────────────────────────────────────\n // Every method is PRESENT on the proxy (the SDK binds presence once) and\n // dispatches to the active backend at call-time. A missing backend method\n // degrades via the natural fallback or RoutingUnsupportedError.\n\n async exec(args: unknown): Promise<unknown> {\n return this.dispatch(\"exec\", true, async (s) => {\n if (s.exec) {\n return s.exec(args);\n }\n // Some backends (selfhosted) only expose exec; others only execCommand.\n if (s.execCommand) {\n return s.execCommand(args);\n }\n throw new RoutingUnsupportedError(\"exec\", this.cached?.kind ?? \"unknown\");\n });\n }\n\n async execCommand(args: unknown): Promise<string> {\n try {\n return await this.dispatch(\"execCommand\", true, async (s) => {\n if (s.execCommand) {\n return s.execCommand(args);\n }\n if (s.exec) {\n const r = (await s.exec(args)) as { stdout?: string; output?: string };\n return r.stdout ?? r.output ?? \"\";\n }\n throw new RoutingUnsupportedError(\"execCommand\", this.cached?.kind ?? \"unknown\");\n });\n } catch (error) {\n // Render a terminal selfhosted fault as the tool's result (four fields, correct\n // verdict) instead of letting the SDK mislabel it \"Please try again\".\n return this.renderSelfhostedFaultOrThrow(error);\n }\n }\n\n async writeStdin(args: unknown): Promise<string> {\n const providerSessionId = providerSessionIdFromArgs(args);\n if (providerSessionId !== null && this.retainedProcesses.has(providerSessionId)) {\n return await this.dispatchProcessMutation(args);\n }\n return this.dispatch(\"writeStdin\", true, async (s) => {\n if (!s.writeStdin) {\n throw new RoutingUnsupportedError(\"writeStdin\", this.cached?.kind ?? \"unknown\");\n }\n return s.writeStdin(args);\n });\n }\n\n /** Whether a positive provider session locator is still pinned to the exact\n * backend that yielded it. This synchronous probe is used only to select the\n * process-aware routing surface; it is not itself durable authority. */\n hasRetainedProcess(providerSessionId: number): boolean {\n return (\n positiveProviderSessionId(providerSessionId) !== null &&\n this.retainedProcesses.has(providerSessionId)\n );\n }\n\n /** Return only OpenGeni's durable UUID + provider locator. Backend/session\n * objects remain private so a caller cannot forge route authority from this\n * diagnostic handoff. */\n retainedProcessIdentity(providerSessionId: number): RoutingRetainedProcess | null {\n const record = this.retainedProcesses.get(providerSessionId);\n return record ? { ...record.process } : null;\n }\n\n /** Model/user-visible stdin is a distinct workspace mutation admission under\n * the durable retained-process holder. It never re-reads the active pointer. */\n async writeStdinForProcessMutation(args: unknown): Promise<string> {\n return await this.dispatchProcessMutation(args);\n }\n\n /** Cancellation and drain polling are control operations. They stay pinned to\n * the process backend and may prove terminal state, but never advance the\n * workspace generation. */\n async writeStdinForProcessControl(args: unknown): Promise<string> {\n return await this.dispatchProcessControl(args);\n }\n\n /** Run a PID/PGID marker or signal helper on the retained process's exact\n * backend. The helper is control-plane work and therefore has no workspace\n * mutation admission of its own. */\n async execCommandForProcessControl(providerSessionId: number, args: unknown): Promise<string> {\n const exactProviderSessionId = positiveProviderSessionId(providerSessionId);\n if (exactProviderSessionId === null) throw new RoutingRetainedProcessNotFoundError(-1);\n const record = this.retainedProcess(exactProviderSessionId);\n const priorTerminal = await this.flushPendingProcessMutation(record);\n if (priorTerminal !== null) return priorTerminal;\n if (record.pendingTerminal) {\n const terminal = record.pendingTerminal;\n await this.settleRetainedProcess(record, terminal.proof, terminal.result);\n return terminal.result;\n }\n await this.ensureParentPromotion(record);\n if (record.backend.session.execCommand) {\n return await record.backend.session.execCommand(args);\n }\n if (record.backend.session.exec) {\n return formatExecResult(await record.backend.session.exec(args));\n }\n throw new RoutingUnsupportedError(\"execCommand\", record.backend.kind);\n }\n\n async cancelExecCommand(opId: string): Promise<boolean> {\n return await this.dispatch(\"cancelExecCommand\", false, async (session) => {\n if (!session.cancelExecCommand) return false;\n return await session.cancelExecCommand(opId);\n });\n }\n\n async readFile(args: unknown): Promise<string | Uint8Array> {\n return this.dispatch(\"readFile\", false, async (s) => {\n if (!s.readFile) {\n throw new RoutingUnsupportedError(\"readFile\", this.cached?.kind ?? \"unknown\");\n }\n return s.readFile(args);\n });\n }\n\n async writeFile(args: unknown): Promise<unknown> {\n return this.dispatch(\"writeFile\", true, async (s) => {\n if (!s.writeFile) {\n throw new RoutingUnsupportedError(\"writeFile\", this.cached?.kind ?? \"unknown\");\n }\n return s.writeFile(args);\n });\n }\n\n async listDir(args: unknown): Promise<unknown> {\n return this.dispatch(\"listDir\", false, async (s) => {\n if (!s.listDir) {\n throw new RoutingUnsupportedError(\"listDir\", this.cached?.kind ?? \"unknown\");\n }\n return s.listDir(args);\n });\n }\n\n async pathExists(path: string, runAs?: string): Promise<boolean> {\n return this.dispatch(\"pathExists\", false, async (s) => {\n if (!s.pathExists) {\n throw new RoutingUnsupportedError(\"pathExists\", this.cached?.kind ?? \"unknown\");\n }\n return s.pathExists(path, runAs);\n });\n }\n\n async viewImage(args: unknown): Promise<unknown> {\n return this.dispatch(\"viewImage\", false, async (s) => {\n if (!s.viewImage) {\n throw new RoutingUnsupportedError(\"viewImage\", this.cached?.kind ?? \"unknown\");\n }\n return s.viewImage(args);\n });\n }\n\n async materializeEntry(args: unknown): Promise<void> {\n return this.dispatch(\"materializeEntry\", true, async (s) => {\n if (!s.materializeEntry) {\n throw new RoutingUnsupportedError(\"materializeEntry\", this.cached?.kind ?? \"unknown\");\n }\n return s.materializeEntry(args);\n });\n }\n\n /** PTY support reflects the LAST-resolved backend (a synchronous probe; the SDK\n * reads it to decide if the terminal is interactive). It cannot re-read the\n * pointer (synchronous), so it answers from the last resolve — coherent with\n * the resolve the surrounding op already performed. Defaults false before the\n * first resolve. */\n supportsPty(): boolean {\n const s = (this.lastResolved ?? this.deps.defaultResolved)?.session;\n return Boolean(s?.supportsPty?.());\n }\n\n /** createEditor is a synchronous factory in the SDK surface. The SDK's filesystem\n * capability calls it ONCE at tool-BIND time — `FilesystemCapability.tools()`,\n * every turn, before any tool runs — and throws \"Filesystem sandbox sessions must\n * provide createEditor()\" if it returns falsy. When a backend is already resolved\n * (eager/selfhosted routing) we bind to its editor directly, byte-for-byte as\n * before. But under LAZY provisioning the backend is not established yet\n * (defaultResolved is the synthetic unprovisioned session with no editor), so a\n * direct delegate returns undefined and every lazy turn would die at bind. Return a\n * LAZY EDITOR PROXY instead: a non-null editor whose async ops resolve the active\n * backend (establishing the box on first use, via `dispatch`) and delegate to its\n * real editor — mirroring how this proxy defers exec/readFile. Even when an\n * eager editor already exists, returning it directly would bypass per-edit\n * route resolution and mutation-generation admission, so every editor is\n * represented by this dispatching proxy. */\n createEditor(runAs?: string): unknown {\n const op =\n (name: \"createFile\" | \"updateFile\" | \"deleteFile\") =>\n (operation: unknown, context?: unknown): Promise<unknown> =>\n this.dispatch(`editor.${name}`, true, async (s) => {\n const editor = s.createEditor?.(runAs) as\n | Record<string, (operation: unknown, context?: unknown) => Promise<unknown>>\n | undefined;\n if (!editor?.[name]) {\n throw new RoutingUnsupportedError(`editor.${name}`, this.cached?.kind ?? \"unknown\");\n }\n return editor[name](operation, context);\n });\n return {\n createFile: op(\"createFile\"),\n updateFile: op(\"updateFile\"),\n deleteFile: op(\"deleteFile\"),\n };\n }\n\n async resolveExposedPort(port: number): Promise<ExposedPortEndpoint> {\n return this.dispatch(\"resolveExposedPort\", false, async (s) => {\n if (!s.resolveExposedPort) {\n throw new RoutingUnsupportedError(\"resolveExposedPort\", this.cached?.kind ?? \"unknown\");\n }\n return s.resolveExposedPort(port);\n });\n }\n\n /** Serialize the active backend's session state. Used by the resume-by-id seam\n * to fold the live box onto the lease. Dispatches to the active backend. */\n async serializeSessionState(): Promise<unknown> {\n return this.dispatch(\"serializeSessionState\", false, async (s) => {\n if (!s.serializeSessionState) {\n // No-op for a backend with no serializable state (selfhosted state is\n // re-addressed, not snapshotted) — surface undefined, not an error.\n return undefined;\n }\n return s.serializeSessionState();\n });\n }\n\n /** Force a resolve (priming the proxy before the first op so `state`/`supportsPty`\n * read a real backend). Optional — every op resolves lazily anyway. */\n async prime(): Promise<ResolvedActiveBackend> {\n return this.resolve();\n }\n}\n","import { runWithToolCallCorrelation, sanitizeOpIdToken } from \"./op-correlation\";\nimport {\n isExecSessionLostBanner,\n parseExecBannerExitCode,\n parseExecBannerSessionId,\n} from \"./exec-banner\";\nimport { RoutingMutationOutcomeUnknownError } from \"./routing/routing-session\";\n\nconst TURN_EXEC_YIELD_MS = 250;\nconst TURN_WRITE_YIELD_MS = 250;\nconst SHELL_HELPER_YIELD_MS = 1_000;\nconst SHELL_GRACEFUL_POLLS = 2;\nconst SHELL_POLL_MS = 100;\nconst SHELL_MARKER_DIR = \"/tmp/opengeni-turn-shell\";\n\ntype ToolCallDetails = {\n toolCall?: {\n callId?: string;\n };\n};\n\ntype FunctionToolInvoke = (\n runContext: unknown,\n input: string,\n details?: ToolCallDetails,\n) => Promise<unknown>;\n\ntype FunctionTool = Record<string, unknown> & {\n type: \"function\";\n name: string;\n invoke: FunctionToolInvoke;\n};\n\ntype ApplyPatchEditor = {\n createFile(operation: unknown, context?: unknown): Promise<unknown>;\n updateFile(operation: unknown, context?: unknown): Promise<unknown>;\n deleteFile(operation: unknown, context?: unknown): Promise<unknown>;\n};\n\ntype ApplyPatchTool = Record<string, unknown> & {\n type: \"apply_patch\";\n editor: ApplyPatchEditor;\n};\n\ntype ComputerTool = Record<string, unknown> & {\n type: \"computer\";\n computer: unknown;\n};\n\nconst delay = async (milliseconds: number): Promise<void> =>\n await new Promise((resolve) => setTimeout(resolve, milliseconds));\n\ntype ShellProcessIdentity = {\n pid: number;\n processGroupId: number;\n};\n\ntype ActiveShellSession = {\n sessionId: number;\n markerPath: string | null;\n token: string | null;\n runContext: Parameters<FunctionToolInvoke>[0];\n execInvoke: FunctionToolInvoke;\n writeInvoke: FunctionToolInvoke | null;\n processSession: CommandCancellationSession | null;\n identity: ShellProcessIdentity | null;\n identityValidated: boolean;\n cancellation: Promise<void> | null;\n};\n\ntype CommandCancellationSession = {\n cancelExecCommand?(opId: string): Promise<boolean>;\n supportsPty?(): boolean;\n hasRetainedProcess?(providerSessionId: number): boolean;\n writeStdinForProcessMutation?(args: {\n sessionId: number;\n chars?: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n }): Promise<string>;\n writeStdinForProcessControl?(args: {\n sessionId: number;\n chars?: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n }): Promise<string>;\n execCommandForProcessControl?(\n providerSessionId: number,\n args: TurnSandboxCommandArgs,\n ): Promise<string>;\n};\n\nexport type TurnSandboxCommandArgs = {\n cmd: string;\n workdir?: string;\n shell?: string;\n login?: boolean;\n tty?: boolean;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n runAs?: string;\n};\n\nexport type TurnSandboxCommandResult = {\n stdout: string;\n stderr: string;\n exitCode: number;\n wallTimeSeconds: number;\n};\n\nexport type TurnSandboxCommandSession = CommandCancellationSession & {\n exec?(args: TurnSandboxCommandArgs): Promise<unknown>;\n execCommand?(args: TurnSandboxCommandArgs): Promise<string>;\n writeStdin?(args: {\n sessionId: number;\n chars?: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n }): Promise<string>;\n};\n\ntype ActiveRemoteExec = {\n settled: boolean;\n settledPromise: Promise<void>;\n settle(): void;\n cancel(): Promise<void>;\n};\n\n/**\n * The worker may publish an attempt-quiesced receipt only after this fence\n * resolves. `cancel()` prevents new turn-owned sandbox calls, actively stops\n * shell processes, and `waitForQuiescence()` drains every capability call that\n * was already in flight. Cleanup/telemetry outside the sandbox capability set\n * remains independently attempt-fenced.\n */\nexport type TurnToolCancellationFence = {\n cancel(reason?: unknown): void;\n waitForQuiescence(): Promise<void>;\n runSandboxCommand(\n session: TurnSandboxCommandSession,\n args: TurnSandboxCommandArgs,\n ): Promise<unknown>;\n runSandboxCommandStructured(\n session: TurnSandboxCommandSession,\n args: TurnSandboxCommandArgs,\n ): Promise<TurnSandboxCommandResult>;\n};\n\nexport type TurnToolCancellationController = TurnToolCancellationFence & {\n wrapTools<T>(tools: T[], session?: CommandCancellationSession): T[];\n};\n\nexport class TurnSandboxCommandCancelledError extends Error {\n readonly name = \"TurnSandboxCommandCancelledError\";\n\n constructor(reason: unknown) {\n super(\n reason instanceof Error\n ? reason.message\n : String(reason ?? \"Turn sandbox tools were cancelled\"),\n {\n ...(reason instanceof Error ? { cause: reason } : {}),\n },\n );\n }\n}\n\nfunction cancellationError(reason: unknown): Error {\n return new TurnSandboxCommandCancelledError(reason);\n}\n\nfunction parsedObject(input: string): Record<string, unknown> | null {\n try {\n const parsed = JSON.parse(input) as unknown;\n return parsed !== null && typeof parsed === \"object\" && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : null;\n } catch {\n return null;\n }\n}\n\nfunction cappedYield(value: unknown, cap: number): number {\n return typeof value === \"number\" && Number.isInteger(value) && value >= 0\n ? Math.min(value, cap)\n : cap;\n}\n\nfunction execOutput(raw: string): string {\n const marker = \"\\nOutput:\\n\";\n const index = raw.indexOf(marker);\n return index >= 0 ? raw.slice(index + marker.length) : \"\";\n}\n\nfunction nativeCommandBanner(result: unknown): string {\n if (typeof result === \"string\") return result;\n if (!result || typeof result !== \"object\") {\n throw new Error(\"Sandbox command returned an invalid result\");\n }\n const value = result as {\n output?: unknown;\n stdout?: unknown;\n stderr?: unknown;\n exitCode?: unknown;\n exit_code?: unknown;\n sessionId?: unknown;\n session_id?: unknown;\n };\n const sessionId =\n typeof value.sessionId === \"number\"\n ? value.sessionId\n : typeof value.session_id === \"number\"\n ? value.session_id\n : null;\n const exitCode =\n typeof value.exitCode === \"number\"\n ? value.exitCode\n : typeof value.exit_code === \"number\"\n ? value.exit_code\n : null;\n const output = [value.output, value.stderr, value.stdout]\n .filter(\n (candidate): candidate is string => typeof candidate === \"string\" && candidate.length > 0,\n )\n .join(\"\\n\");\n if (sessionId !== null) {\n return `Process running with session ID ${sessionId}\\n\\nOutput:\\n${output}`;\n }\n if (exitCode !== null) {\n return `Process exited with code ${exitCode}\\n\\nOutput:\\n${output}`;\n }\n throw new Error(\"Sandbox command did not report a session id or exit code\");\n}\n\ntype NativeCommandResult = {\n stdout: string;\n stderr: string;\n exitCode: number | null;\n sessionId: number | null;\n wallTimeSeconds: number;\n};\n\nfunction nativeCommandResult(result: unknown): NativeCommandResult {\n if (typeof result === \"string\") {\n return {\n stdout: execOutput(result),\n stderr: \"\",\n exitCode: parseExecBannerExitCode(result),\n sessionId: parseExecBannerSessionId(result),\n wallTimeSeconds: 0,\n };\n }\n if (!result || typeof result !== \"object\") {\n throw new Error(\"Sandbox command returned an invalid result\");\n }\n const value = result as {\n output?: unknown;\n stdout?: unknown;\n stderr?: unknown;\n exitCode?: unknown;\n exit_code?: unknown;\n sessionId?: unknown;\n session_id?: unknown;\n wallTimeSeconds?: unknown;\n };\n return {\n stdout:\n typeof value.stdout === \"string\"\n ? value.stdout\n : typeof value.output === \"string\"\n ? value.output\n : \"\",\n stderr: typeof value.stderr === \"string\" ? value.stderr : \"\",\n exitCode:\n typeof value.exitCode === \"number\"\n ? value.exitCode\n : typeof value.exit_code === \"number\"\n ? value.exit_code\n : null,\n sessionId:\n typeof value.sessionId === \"number\"\n ? value.sessionId\n : typeof value.session_id === \"number\"\n ? value.session_id\n : null,\n wallTimeSeconds:\n typeof value.wallTimeSeconds === \"number\" && value.wallTimeSeconds >= 0\n ? value.wallTimeSeconds\n : 0,\n };\n}\n\nfunction completedCommandBanner(exitCode: number, output: string): string {\n return `Process exited with code ${exitCode}\\n\\nOutput:\\n${output}`;\n}\n\nfunction appendBoundedOutput(current: string, chunk: string, maxOutputTokens: number): string {\n const maxChars = Math.max(512, maxOutputTokens * 4);\n const combined = current + chunk;\n return combined.length <= maxChars ? combined : combined.slice(-maxChars);\n}\n\nfunction singleQuote(value: string): string {\n return `'${value.replaceAll(\"'\", `'\"'\"'`)}'`;\n}\n\nfunction shellMarkerPath(token: string): string {\n return `${SHELL_MARKER_DIR}/${token}`;\n}\n\nfunction cancellableGroupLeaderCommand(command: string, markerPath: string): string {\n const marker = singleQuote(markerPath);\n const markerDir = singleQuote(SHELL_MARKER_DIR);\n return [\n `__opengeni_marker=${marker}`,\n \"umask 077\",\n `command mkdir -p ${markerDir} || exit 125`,\n '__opengeni_pid=\"$$\"',\n '__opengeni_pgid=\"$(command ps -o pgid= -p \"$__opengeni_pid\" 2>/dev/null | command tr -d \\'[:space:]\\')\"',\n 'case \"$__opengeni_pid:$__opengeni_pgid\" in *[!0-9:]*|*:|:*) exit 125 ;; esac',\n '[ \"$__opengeni_pid\" -gt 1 ] && [ \"$__opengeni_pgid\" -gt 1 ] || exit 125',\n // Never signal a provider/container-wide process group. A cancellable PTY\n // command must be its group's leader; fail the command closed otherwise.\n '[ \"$__opengeni_pid\" = \"$__opengeni_pgid\" ] || exit 125',\n 'command printf \\'%s %s\\\\n\\' \"$__opengeni_pid\" \"$__opengeni_pgid\" > \"$__opengeni_marker\" || exit 125',\n \"trap 'command rm -f \\\"$__opengeni_marker\\\"' EXIT\",\n \"(\",\n command,\n \")\",\n \"__opengeni_status=$?\",\n 'exit \"$__opengeni_status\"',\n ].join(\"\\n\");\n}\n\nexport function cancellableShellCommand(command: string, markerPath: string): string {\n const groupLeaderCommand = cancellableGroupLeaderCommand(command, markerPath);\n return [\n '__opengeni_outer_pid=\"$$\"',\n '__opengeni_outer_pgid=\"$(command ps -o pgid= -p \"$__opengeni_outer_pid\" 2>/dev/null | command tr -d \\'[:space:]\\')\"',\n 'case \"$__opengeni_outer_pid:$__opengeni_outer_pgid\" in *[!0-9:]*|*:|:*) exit 125 ;; esac',\n 'if [ \"$__opengeni_outer_pid\" != \"$__opengeni_outer_pgid\" ]; then',\n ' __opengeni_setsid=\"$(command -v setsid 2>/dev/null)\"',\n ' [ -n \"$__opengeni_setsid\" ] || exit 125',\n ` exec \"$__opengeni_setsid\" /bin/sh -c ${singleQuote(groupLeaderCommand)}`,\n \"fi\",\n groupLeaderCommand,\n ].join(\"\\n\");\n}\n\nfunction shellHelperInput(command: string): string {\n const args = shellHelperArgs(command);\n return JSON.stringify({\n cmd: args.cmd,\n login: args.login,\n tty: args.tty,\n yield_time_ms: args.yieldTimeMs,\n max_output_tokens: args.maxOutputTokens,\n });\n}\n\nfunction shellHelperArgs(command: string): TurnSandboxCommandArgs {\n return {\n cmd: command,\n login: false,\n tty: false,\n yieldTimeMs: SHELL_HELPER_YIELD_MS,\n maxOutputTokens: 128,\n };\n}\n\nfunction retainedProcessSession(\n session: CommandCancellationSession | undefined,\n providerSessionId: number,\n): CommandCancellationSession | null {\n return session?.hasRetainedProcess?.(providerSessionId) === true ? session : null;\n}\n\nfunction safeProcessIdentity(raw: string): ShellProcessIdentity | null {\n if (parseExecBannerExitCode(raw) !== 0) return null;\n const match = execOutput(raw)\n .trim()\n .match(/^(\\d+)\\s+(\\d+)$/);\n if (!match) return null;\n const pid = Number.parseInt(match[1]!, 10);\n const processGroupId = Number.parseInt(match[2]!, 10);\n return Number.isSafeInteger(pid) &&\n Number.isSafeInteger(processGroupId) &&\n pid > 1 &&\n processGroupId > 1\n ? { pid, processGroupId }\n : null;\n}\n\nfunction identityGuardScript(\n state: ActiveShellSession,\n body: string,\n missingIdentityExitCode: number,\n): string {\n const identity = state.identity;\n if (!identity || !state.token) return `exit ${missingIdentityExitCode}`;\n const token = singleQuote(state.token);\n return [\n `__opengeni_pid=${identity.pid}`,\n `__opengeni_pgid=${identity.processGroupId}`,\n `__opengeni_token=${token}`,\n // The randomized token lands late in the wrapped command line. Procps\n // otherwise truncates `args` to the terminal width, which can make a live\n // group look stale and open the quiescence fence without signalling it.\n '__opengeni_args=\"$(command ps -ww -o args= -p \"$__opengeni_pid\" 2>/dev/null)\"',\n 'case \"$__opengeni_args\" in *\"$__opengeni_token\"*) ;; *) exit 0 ;; esac',\n '__opengeni_live_pgid=\"$(command ps -o pgid= -p \"$__opengeni_pid\" 2>/dev/null | command tr -d \\'[:space:]\\')\"',\n '[ \"$__opengeni_live_pgid\" = \"$__opengeni_pgid\" ] || exit 0',\n body,\n ].join(\"\\n\");\n}\n\nfunction wrapComputer<T extends object>(\n computer: T,\n track: <U>(operation: () => Promise<U>) => Promise<U>,\n): T {\n const wrapped = Object.create(Object.getPrototypeOf(computer)) as T & Record<string, unknown>;\n const wrappedRecord = wrapped as Record<string, unknown>;\n Object.assign(wrapped, computer);\n for (const method of [\n \"initRun\",\n \"screenshot\",\n \"click\",\n \"doubleClick\",\n \"scroll\",\n \"type\",\n \"wait\",\n \"move\",\n \"keypress\",\n \"drag\",\n ] as const) {\n const original = (computer as Record<string, unknown>)[method];\n if (typeof original !== \"function\") continue;\n wrappedRecord[method] = (...args: unknown[]) =>\n track(async () => await original.apply(computer, args));\n }\n return wrapped;\n}\n\nclass TurnToolCancellationControllerImpl implements TurnToolCancellationController {\n private cancelled = false;\n private reason: unknown;\n private readonly inFlight = new Set<Promise<unknown>>();\n private readonly shellSessions = new Map<number, ActiveShellSession>();\n private readonly remoteExecs = new Set<ActiveRemoteExec>();\n private rawExecInvoke: FunctionToolInvoke | null = null;\n private rawWriteInvoke: FunctionToolInvoke | null = null;\n private drainPromise: Promise<void> | null = null;\n private readonly signal: AbortSignal | undefined;\n private readonly onAbort = (): void => this.cancel(this.signal?.reason);\n\n constructor(signal?: AbortSignal) {\n this.signal = signal;\n if (signal?.aborted) {\n this.cancel(signal.reason);\n } else {\n signal?.addEventListener(\"abort\", this.onAbort, { once: true });\n }\n }\n\n cancel(reason?: unknown): void {\n if (!this.cancelled) {\n this.cancelled = true;\n this.reason = reason;\n this.signal?.removeEventListener(\"abort\", this.onAbort);\n }\n void this.ensureDrain().catch(() => undefined);\n }\n\n async waitForQuiescence(): Promise<void> {\n this.cancel(this.reason);\n await this.ensureDrain();\n }\n\n runSandboxCommand(\n session: TurnSandboxCommandSession,\n args: TurnSandboxCommandArgs,\n ): Promise<unknown> {\n return this.runSandboxCommandInternal(session, args, false);\n }\n\n async runSandboxCommandStructured(\n session: TurnSandboxCommandSession,\n args: TurnSandboxCommandArgs,\n ): Promise<TurnSandboxCommandResult> {\n return (await this.runSandboxCommandInternal(session, args, true)) as TurnSandboxCommandResult;\n }\n\n private runSandboxCommandInternal(\n session: TurnSandboxCommandSession,\n args: TurnSandboxCommandArgs,\n structured: boolean,\n ): Promise<unknown> {\n return this.track(async () => {\n const startedAt = performance.now();\n if (!session.exec && !session.execCommand) {\n throw new Error(\"Sandbox session does not support command execution\");\n }\n const lifecycleRunContext = {} as Parameters<FunctionToolInvoke>[0];\n\n const invokeExecNative = async (input: string): Promise<unknown> => {\n const parsed = parsedObject(input);\n if (!parsed || typeof parsed.cmd !== \"string\") {\n throw new Error(\"Sandbox lifecycle command input was invalid\");\n }\n const commandArgs: TurnSandboxCommandArgs = {\n cmd: parsed.cmd,\n ...(typeof parsed.workdir === \"string\" ? { workdir: parsed.workdir } : {}),\n ...(typeof parsed.shell === \"string\" ? { shell: parsed.shell } : {}),\n ...(typeof parsed.login === \"boolean\" ? { login: parsed.login } : {}),\n ...(typeof parsed.tty === \"boolean\" ? { tty: parsed.tty } : {}),\n ...(typeof parsed.yield_time_ms === \"number\"\n ? { yieldTimeMs: parsed.yield_time_ms }\n : {}),\n ...(typeof parsed.max_output_tokens === \"number\"\n ? { maxOutputTokens: parsed.max_output_tokens }\n : {}),\n ...(typeof parsed.run_as === \"string\" ? { runAs: parsed.run_as } : {}),\n };\n // Provider PTY/session semantics live on execCommand (the same surface\n // used by the SDK shell tool). Some providers expose a lower-level exec\n // that waits for natural completion even when tty/yield are supplied;\n // choosing it here would put lifecycle setup back outside the <=2s\n // Steer/Pause boundary. Connected machines advertise no PTY and use the\n // structured exec path so their durable OpCancel correlation is retained.\n const result =\n session.supportsPty?.() !== false && session.execCommand\n ? await session.execCommand(commandArgs)\n : session.exec\n ? await session.exec(commandArgs)\n : await session.execCommand!(commandArgs);\n return result;\n };\n const invokeExec: FunctionToolInvoke = async (_runContext, input) =>\n nativeCommandBanner(await invokeExecNative(input));\n const invokeWrite: FunctionToolInvoke | null =\n session.writeStdin || session.writeStdinForProcessControl\n ? async (_runContext, input) => {\n const parsed = parsedObject(input);\n if (!parsed || typeof parsed.session_id !== \"number\") {\n throw new Error(\"Sandbox lifecycle stdin input was invalid\");\n }\n const directArgs = {\n sessionId: parsed.session_id,\n ...(typeof parsed.chars === \"string\" ? { chars: parsed.chars } : {}),\n ...(typeof parsed.yield_time_ms === \"number\"\n ? { yieldTimeMs: parsed.yield_time_ms }\n : {}),\n ...(typeof parsed.max_output_tokens === \"number\"\n ? { maxOutputTokens: parsed.max_output_tokens }\n : {}),\n };\n if (\n session.hasRetainedProcess?.(parsed.session_id) === true &&\n session.writeStdinForProcessControl\n ) {\n return await session.writeStdinForProcessControl(directArgs);\n }\n if (!session.writeStdin) {\n throw new Error(\n \"Sandbox lifecycle command yielded an unretained session without stdin support\",\n );\n }\n return await session.writeStdin!(directArgs);\n }\n : null;\n const correlationId = `turn_lifecycle_${crypto.randomUUID()}`;\n const useRemoteOpCancellation =\n Boolean(session.cancelExecCommand) && session.supportsPty?.() === false;\n const remoteExec =\n session.cancelExecCommand && useRemoteOpCancellation\n ? this.registerRemoteExec(\n { cancelExecCommand: session.cancelExecCommand.bind(session) },\n `${sanitizeOpIdToken(correlationId)}:0`,\n )\n : null;\n const markerPath = shellMarkerPath(crypto.randomUUID());\n const commandInput = JSON.stringify({\n cmd: useRemoteOpCancellation ? args.cmd : cancellableShellCommand(args.cmd, markerPath),\n ...(args.workdir ? { workdir: args.workdir } : {}),\n ...(args.shell ? { shell: args.shell } : {}),\n ...(args.login !== undefined ? { login: args.login } : {}),\n ...(args.runAs ? { run_as: args.runAs } : {}),\n tty: useRemoteOpCancellation ? args.tty : true,\n yield_time_ms: useRemoteOpCancellation\n ? args.yieldTimeMs\n : cappedYield(args.yieldTimeMs, TURN_EXEC_YIELD_MS),\n ...(args.maxOutputTokens !== undefined ? { max_output_tokens: args.maxOutputTokens } : {}),\n });\n\n let initialNative: Awaited<ReturnType<FunctionToolInvoke>>;\n try {\n initialNative = await runWithToolCallCorrelation(\n correlationId,\n async () => await invokeExecNative(commandInput),\n );\n } finally {\n remoteExec?.settle();\n }\n const initial = nativeCommandBanner(initialNative);\n const initialResult = nativeCommandResult(initialNative);\n if (useRemoteOpCancellation) {\n if (!structured) return initial;\n if (initialResult.exitCode === null) {\n throw new Error(\"Sandbox command did not report a terminal exit code\");\n }\n return {\n stdout: initialResult.stdout,\n stderr: initialResult.stderr,\n exitCode: initialResult.exitCode,\n wallTimeSeconds: Math.max(\n initialResult.wallTimeSeconds,\n (performance.now() - startedAt) / 1_000,\n ),\n } satisfies TurnSandboxCommandResult;\n }\n\n const sessionId = parseExecBannerSessionId(initial);\n if (sessionId === null) {\n if (!structured) return initial;\n if (initialResult.exitCode === null) {\n throw new Error(\"Sandbox command did not report a terminal exit code\");\n }\n return {\n stdout: initialResult.stdout,\n stderr: initialResult.stderr,\n exitCode: initialResult.exitCode,\n wallTimeSeconds: Math.max(\n initialResult.wallTimeSeconds,\n (performance.now() - startedAt) / 1_000,\n ),\n } satisfies TurnSandboxCommandResult;\n }\n if (!invokeWrite) {\n throw new Error(\"Sandbox lifecycle command yielded without stdin support\");\n }\n const token = markerPath.slice(markerPath.lastIndexOf(\"/\") + 1);\n const state: ActiveShellSession = {\n sessionId,\n markerPath,\n token,\n runContext: lifecycleRunContext,\n execInvoke: invokeExec,\n writeInvoke: invokeWrite,\n processSession: retainedProcessSession(session, sessionId),\n identity: null,\n identityValidated: false,\n cancellation: null,\n };\n this.shellSessions.set(sessionId, state);\n const maxOutputTokens = args.maxOutputTokens ?? 20_000;\n const initialOutput = execOutput(initial);\n let output = initialOutput ? appendBoundedOutput(\"\", initialOutput, maxOutputTokens) : \"\";\n let stdout = appendBoundedOutput(\"\", initialResult.stdout, maxOutputTokens);\n const stderr = appendBoundedOutput(\"\", initialResult.stderr, maxOutputTokens);\n while (true) {\n if (this.cancelled) throw cancellationError(this.reason);\n const next = await invokeWrite(\n lifecycleRunContext,\n JSON.stringify({\n session_id: sessionId,\n chars: \"\",\n yield_time_ms: TURN_WRITE_YIELD_MS,\n max_output_tokens: maxOutputTokens,\n }),\n undefined,\n );\n if (typeof next !== \"string\") {\n throw new Error(\"Sandbox lifecycle stdin returned an invalid result\");\n }\n const nextOutput = execOutput(next);\n if (nextOutput) {\n output = appendBoundedOutput(output, nextOutput, maxOutputTokens);\n stdout = appendBoundedOutput(stdout, nextOutput, maxOutputTokens);\n }\n const exitCode = parseExecBannerExitCode(next);\n if (exitCode !== null) {\n this.shellSessions.delete(sessionId);\n if (!structured) return completedCommandBanner(exitCode, output);\n return {\n stdout,\n stderr,\n exitCode,\n wallTimeSeconds: (performance.now() - startedAt) / 1_000,\n } satisfies TurnSandboxCommandResult;\n }\n // A conforming provider blocks for the requested yield. This fallback\n // prevents a non-conforming implementation from turning a long setup\n // command into a hot control-plane polling loop.\n await delay(SHELL_POLL_MS);\n }\n });\n }\n\n wrapTools<T>(tools: T[], session?: CommandCancellationSession): T[] {\n const structuralTools = tools as unknown as Array<Record<string, unknown>>;\n for (const tool of structuralTools) {\n if (tool.type !== \"function\") continue;\n const functionTool = tool as FunctionTool;\n if (functionTool.name === \"exec_command\") this.rawExecInvoke = functionTool.invoke;\n if (functionTool.name === \"write_stdin\") this.rawWriteInvoke = functionTool.invoke;\n }\n\n return structuralTools.map((tool) => {\n if (tool.type === \"function\") return this.wrapFunctionTool(tool as FunctionTool, session);\n if (tool.type === \"apply_patch\") return this.wrapApplyPatchTool(tool as ApplyPatchTool);\n if (tool.type === \"computer\") return this.wrapComputerTool(tool as ComputerTool);\n return tool;\n }) as unknown as T[];\n }\n\n private wrapFunctionTool(\n tool: FunctionTool,\n cancellationSession?: CommandCancellationSession,\n ): FunctionTool {\n if (tool.name === \"exec_command\") {\n return {\n ...tool,\n invoke: (runContext, input, details) =>\n this.track(async () => {\n const parsed = parsedObject(input);\n if (!parsed || typeof parsed.cmd !== \"string\") {\n return await this.correlatedInvoke(tool.invoke, runContext, input, details);\n }\n const token = crypto.randomUUID();\n const markerPath = shellMarkerPath(token);\n const correlationId = details?.toolCall?.callId ?? `turn_exec_${token}`;\n const cancelExecCommand = cancellationSession?.cancelExecCommand;\n // Connected-machine exec is already a durable process-tree op and\n // may run on Windows/macOS/Linux. Its OpCancel needs no POSIX shell\n // wrapper and preserves the user's command byte-for-byte. PTY-backed\n // cloud/local sessions use the portable SDK session + POSIX marker.\n const useRemoteOpCancellation =\n Boolean(cancelExecCommand) && cancellationSession?.supportsPty?.() === false;\n const remoteExec =\n cancelExecCommand && useRemoteOpCancellation\n ? this.registerRemoteExec(\n { cancelExecCommand: cancelExecCommand.bind(cancellationSession) },\n `${sanitizeOpIdToken(correlationId)}:0`,\n )\n : null;\n const cancellableInput = useRemoteOpCancellation\n ? input\n : JSON.stringify({\n ...parsed,\n cmd: cancellableShellCommand(parsed.cmd, markerPath),\n // The SDK's only provider-neutral live-process interrupt is a PTY.\n // The process marker provides TERM/KILL escalation when Ctrl-C is\n // ignored; the short yield exposes the provider session promptly.\n tty: true,\n yield_time_ms: cappedYield(parsed.yield_time_ms, TURN_EXEC_YIELD_MS),\n });\n let output: Awaited<ReturnType<FunctionToolInvoke>>;\n try {\n output = await runWithToolCallCorrelation(\n correlationId,\n async () => await tool.invoke(runContext, cancellableInput, details),\n );\n } catch (error) {\n const retainedProcess =\n !useRemoteOpCancellation && error instanceof RoutingMutationOutcomeUnknownError\n ? error.retainedProcess\n : null;\n const processSession =\n retainedProcess === null\n ? null\n : retainedProcessSession(cancellationSession, retainedProcess.providerSessionId);\n if (retainedProcess && processSession) {\n // The provider output remains rejected, but DB promotion is\n // already durable. Preserve only the safe process locator and\n // exact routing session so turn finalization can drain it; never\n // invoke a helper through the mutable current route.\n this.shellSessions.set(retainedProcess.providerSessionId, {\n sessionId: retainedProcess.providerSessionId,\n markerPath,\n token,\n runContext,\n execInvoke: tool.invoke,\n writeInvoke: this.rawWriteInvoke,\n processSession,\n identity: null,\n identityValidated: false,\n cancellation: null,\n });\n }\n throw error;\n } finally {\n remoteExec?.settle();\n }\n if (typeof output !== \"string\") return output;\n const sessionId = useRemoteOpCancellation ? null : parseExecBannerSessionId(output);\n if (sessionId !== null) {\n this.shellSessions.set(sessionId, {\n sessionId,\n markerPath,\n token,\n runContext,\n execInvoke: tool.invoke,\n writeInvoke: this.rawWriteInvoke,\n processSession: retainedProcessSession(cancellationSession, sessionId),\n identity: null,\n identityValidated: false,\n cancellation: null,\n });\n }\n return output;\n }),\n };\n }\n\n if (tool.name === \"write_stdin\") {\n return {\n ...tool,\n invoke: (runContext, input, details) =>\n this.track(async () => {\n const parsed = parsedObject(input);\n const sessionId =\n parsed &&\n typeof parsed.session_id === \"number\" &&\n Number.isSafeInteger(parsed.session_id)\n ? parsed.session_id\n : null;\n const cappedInput = parsed\n ? JSON.stringify({\n ...parsed,\n yield_time_ms: cappedYield(parsed.yield_time_ms, TURN_WRITE_YIELD_MS),\n })\n : input;\n const directProcessSession =\n sessionId === null ? null : retainedProcessSession(cancellationSession, sessionId);\n const output =\n sessionId !== null && directProcessSession?.writeStdinForProcessMutation\n ? await directProcessSession.writeStdinForProcessMutation({\n sessionId,\n ...(typeof parsed?.chars === \"string\" ? { chars: parsed.chars } : {}),\n yieldTimeMs: cappedYield(parsed?.yield_time_ms, TURN_WRITE_YIELD_MS),\n ...(typeof parsed?.max_output_tokens === \"number\"\n ? { maxOutputTokens: parsed.max_output_tokens }\n : {}),\n })\n : await tool.invoke(runContext, cappedInput, details);\n if (sessionId !== null && typeof output === \"string\") {\n if (isExecSessionLostBanner(output, sessionId)) {\n // Modal reports a vanished exec session as a non-throwing\n // string. The matching provider banner is positive evidence\n // that this exact tracked PTY no longer exists; a different id\n // or an ambiguous error must leave the registration fenced.\n this.shellSessions.delete(sessionId);\n } else if (parseExecBannerSessionId(output) === sessionId) {\n if (!this.shellSessions.has(sessionId)) {\n this.shellSessions.set(sessionId, {\n sessionId,\n markerPath: null,\n token: null,\n runContext,\n execInvoke: this.rawExecInvoke ?? tool.invoke,\n writeInvoke: tool.invoke,\n processSession: directProcessSession,\n identity: null,\n identityValidated: false,\n cancellation: null,\n });\n }\n } else if (parseExecBannerExitCode(output) !== null) {\n this.shellSessions.delete(sessionId);\n }\n }\n return output;\n }),\n };\n }\n\n return {\n ...tool,\n invoke: (runContext, input, details) =>\n this.track(async () => await tool.invoke(runContext, input, details)),\n };\n }\n\n private wrapApplyPatchTool(tool: ApplyPatchTool): ApplyPatchTool {\n const editor = tool.editor;\n const wrappedEditor: ApplyPatchEditor = {\n createFile: (operation, context) =>\n this.track(async () => await editor.createFile(operation, context)),\n updateFile: (operation, context) =>\n this.track(async () => await editor.updateFile(operation, context)),\n deleteFile: (operation, context) =>\n this.track(async () => await editor.deleteFile(operation, context)),\n };\n return { ...tool, editor: wrappedEditor };\n }\n\n private wrapComputerTool(tool: ComputerTool): ComputerTool {\n const computer = tool.computer;\n if (typeof computer === \"function\") {\n const createComputer = computer as (...args: unknown[]) => object | Promise<object>;\n return {\n ...tool,\n computer: async (...args: unknown[]) =>\n wrapComputer(await this.track(async () => await createComputer(...args)), (operation) =>\n this.track(operation),\n ),\n };\n }\n if (computer && typeof computer === \"object\" && \"create\" in computer) {\n const provider = computer as Record<string, unknown>;\n if (typeof provider.create !== \"function\") return tool;\n const createComputer = provider.create as (...args: unknown[]) => object | Promise<object>;\n return {\n ...tool,\n computer: {\n ...provider,\n create: async (...args: unknown[]) =>\n wrapComputer(await this.track(async () => await createComputer(...args)), (operation) =>\n this.track(operation),\n ),\n },\n };\n }\n if (!computer || typeof computer !== \"object\") return tool;\n return {\n ...tool,\n computer: wrapComputer(computer, (operation) => this.track(operation)),\n };\n }\n\n private async correlatedInvoke(\n invoke: FunctionToolInvoke,\n runContext: Parameters<FunctionToolInvoke>[0],\n input: string,\n details: Parameters<FunctionToolInvoke>[2],\n ) {\n const callId = details?.toolCall?.callId;\n return callId\n ? await runWithToolCallCorrelation(\n callId,\n async () => await invoke(runContext, input, details),\n )\n : await invoke(runContext, input, details);\n }\n\n private track<T>(operation: () => Promise<T>): Promise<T> {\n if (this.cancelled) return Promise.reject(cancellationError(this.reason));\n const promise = Promise.resolve().then(async () => {\n if (this.cancelled) throw cancellationError(this.reason);\n return await operation();\n });\n this.inFlight.add(promise);\n void promise\n .finally(() => {\n this.inFlight.delete(promise);\n })\n .catch(() => undefined);\n return promise;\n }\n\n private ensureDrain(): Promise<void> {\n this.drainPromise ??= this.drain();\n return this.drainPromise;\n }\n\n private async drain(): Promise<void> {\n while (true) {\n // Op-stream commands (connected/self-hosted machines) do not yield a PTY\n // session id. Issue their idempotent OpCancel first so the in-flight tool\n // promise can physically settle; cancellation-before-start is tombstoned\n // by the runner and therefore cannot race into a late process spawn.\n const remoteCancellations = [...this.remoteExecs].map(async (exec) => await exec.cancel());\n const inFlight = [...this.inFlight];\n if (inFlight.length > 0 || remoteCancellations.length > 0) {\n await Promise.allSettled([...inFlight, ...remoteCancellations]);\n }\n\n const sessions = [...this.shellSessions.values()];\n if (sessions.length > 0) {\n await Promise.all(sessions.map(async (session) => await this.cancelShellSession(session)));\n }\n\n if (this.inFlight.size === 0 && this.shellSessions.size === 0 && this.remoteExecs.size === 0)\n return;\n }\n }\n\n private registerRemoteExec(\n session: Required<Pick<CommandCancellationSession, \"cancelExecCommand\">>,\n opId: string,\n ): ActiveRemoteExec {\n let resolveSettled!: () => void;\n const settledPromise = new Promise<void>((resolve) => {\n resolveSettled = resolve;\n });\n let cancellation: Promise<void> | null = null;\n const entry: ActiveRemoteExec = {\n settled: false,\n settledPromise,\n settle: () => {\n if (entry.settled) return;\n entry.settled = true;\n resolveSettled();\n this.remoteExecs.delete(entry);\n },\n cancel: () => {\n cancellation ??= (async () => {\n while (!entry.settled) {\n const attempt = session.cancelExecCommand(opId).catch(() => false);\n // A routing/provider cancellation request can itself hang while the\n // ordinary PTY exec has already yielded. Do not let that advisory\n // route hold the authoritative local/session fence; its late result\n // is idempotent and already rejection-contained.\n await Promise.race([attempt, entry.settledPromise]);\n await Promise.race([entry.settledPromise, delay(SHELL_POLL_MS)]);\n }\n })();\n return cancellation;\n },\n };\n this.remoteExecs.add(entry);\n return entry;\n }\n\n private cancelShellSession(state: ActiveShellSession): Promise<void> {\n state.cancellation ??= this.cancelShellSessionOnce(state).finally(() => {\n state.cancellation = null;\n });\n return state.cancellation;\n }\n\n private async cancelShellSessionOnce(state: ActiveShellSession): Promise<void> {\n // A session inherited from an older/unwrapped invocation has no durable\n // process marker. Ctrl-C + provider completion is the only safe generic\n // authority available for that legacy shape.\n if (!state.markerPath) {\n while (true) {\n if (\n (state.writeInvoke || state.processSession?.writeStdinForProcessControl) &&\n (await this.rawWrite(state, \"\\u0003\", SHELL_POLL_MS))\n ) {\n await this.forgetShellSessionAfterExactSettlement(state);\n return;\n }\n await delay(SHELL_POLL_MS);\n }\n }\n\n // Capture PID/PGID BEFORE Ctrl-C. A foreground child may ignore INT/TERM\n // while its supervising shell exits; provider-session completion alone is\n // therefore not proof that the whole process group stopped.\n while (!state.identity) {\n state.identity = await this.readIdentity(state);\n if (state.identity) break;\n if (state.writeInvoke || state.processSession?.writeStdinForProcessControl) {\n const completed = await this.rawWrite(state, \"\", SHELL_POLL_MS);\n if (completed) {\n await this.forgetShellSessionAfterExactSettlement(state);\n return;\n }\n }\n await delay(SHELL_POLL_MS);\n }\n\n if (!(await this.identityAlive(state))) {\n await this.forgetShellSessionAfterExactSettlement(state);\n return;\n }\n\n // A retained provider session must remain pinned until its process group is\n // absent. Polling it first could settle/delete the durable route while an\n // ignored-signal descendant still lives, making the exact helper backend\n // unavailable. Generic legacy sessions retain their Ctrl-C fast path.\n if (!state.processSession && state.writeInvoke) {\n await this.rawWrite(state, \"\\u0003\", SHELL_POLL_MS);\n if (!(await this.identityAlive(state))) {\n await this.forgetShellSessionAfterExactSettlement(state);\n return;\n }\n }\n\n await this.signalIdentity(state, \"TERM\");\n for (let attempt = 0; attempt < SHELL_GRACEFUL_POLLS; attempt++) {\n if (!state.processSession && state.writeInvoke) {\n await this.rawWrite(state, \"\", SHELL_POLL_MS);\n }\n if (!(await this.identityAlive(state))) {\n await this.forgetShellSessionAfterExactSettlement(state);\n return;\n }\n }\n\n await this.signalIdentity(state, \"KILL\");\n while (await this.identityAlive(state)) {\n if (!state.processSession && state.writeInvoke) {\n await this.rawWrite(state, \"\", SHELL_POLL_MS);\n }\n // A transient helper failure must not turn the first KILL into a single\n // best-effort shot. Re-issue it until the process group is provably gone.\n await this.signalIdentity(state, \"KILL\");\n await delay(SHELL_POLL_MS);\n }\n await this.forgetShellSessionAfterExactSettlement(state);\n }\n\n private async forgetShellSessionAfterExactSettlement(state: ActiveShellSession): Promise<void> {\n // OS process-group absence is necessary but not sufficient for a routed\n // retained process. One final exact provider-session poll must publish an\n // exit/loss proof and durably settle the process holder before tracking is\n // removed. Settlement failure keeps hasRetainedProcess true and retries.\n while (state.processSession?.hasRetainedProcess?.(state.sessionId) === true) {\n if (await this.rawWrite(state, \"\", SHELL_POLL_MS)) break;\n await delay(SHELL_POLL_MS);\n }\n this.shellSessions.delete(state.sessionId);\n }\n\n private async rawWrite(\n state: ActiveShellSession,\n chars: string,\n yieldTimeMs: number,\n ): Promise<boolean> {\n if (!state.writeInvoke && !state.processSession?.writeStdinForProcessControl) return false;\n try {\n const output = state.processSession?.writeStdinForProcessControl\n ? await state.processSession.writeStdinForProcessControl({\n sessionId: state.sessionId,\n chars,\n yieldTimeMs,\n maxOutputTokens: 128,\n })\n : await state.writeInvoke!(\n state.runContext,\n JSON.stringify({\n session_id: state.sessionId,\n chars,\n yield_time_ms: yieldTimeMs,\n max_output_tokens: 128,\n }),\n undefined,\n );\n if (typeof output !== \"string\") return false;\n // Marker files can already be gone when a process exited outside the\n // model-facing write path. Modal's exact matching lost-session banner is\n // then the only positive provider proof that this tracked PTY is absent.\n if (isExecSessionLostBanner(output, state.sessionId)) return true;\n if (parseExecBannerSessionId(output) === state.sessionId) return false;\n if (parseExecBannerExitCode(output) !== null) return true;\n } catch {\n // A transient provider/control-plane failure is not evidence that the\n // remote process stopped. The identity probe/escalation remains the\n // authority and retries until it can prove quiescence.\n }\n return false;\n }\n\n private async readIdentity(state: ActiveShellSession): Promise<ShellProcessIdentity | null> {\n if (!state.markerPath) return null;\n try {\n const command = `command cat ${singleQuote(state.markerPath)} 2>/dev/null`;\n const output = state.processSession?.execCommandForProcessControl\n ? await state.processSession.execCommandForProcessControl(\n state.sessionId,\n shellHelperArgs(command),\n )\n : await state.execInvoke(state.runContext, shellHelperInput(command), undefined);\n return typeof output === \"string\" ? safeProcessIdentity(output) : null;\n } catch {\n return null;\n }\n }\n\n private async identityAlive(state: ActiveShellSession): Promise<boolean> {\n const script = state.identityValidated\n ? [\n `__opengeni_pgid=${state.identity?.processGroupId ?? 0}`,\n 'command kill -0 \"-$__opengeni_pgid\" 2>/dev/null && exit 75',\n \"exit 0\",\n ].join(\"\\n\")\n : identityGuardScript(\n state,\n 'command kill -0 \"-$__opengeni_pgid\" 2>/dev/null && exit 75\\nexit 0',\n 76,\n );\n try {\n const output = state.processSession?.execCommandForProcessControl\n ? await state.processSession.execCommandForProcessControl(\n state.sessionId,\n shellHelperArgs(script),\n )\n : await state.execInvoke(state.runContext, shellHelperInput(script), undefined);\n if (typeof output !== \"string\") return true;\n const exitCode = parseExecBannerExitCode(output);\n if (exitCode === 75) {\n state.identityValidated = true;\n return true;\n }\n return exitCode !== 0;\n } catch {\n return true;\n }\n }\n\n private async signalIdentity(state: ActiveShellSession, signal: \"TERM\" | \"KILL\"): Promise<void> {\n const script = state.identityValidated\n ? `command kill -${signal} \"-${state.identity?.processGroupId ?? 0}\" 2>/dev/null || exit 76`\n : identityGuardScript(\n state,\n `command kill -${signal} \"-$__opengeni_pgid\" 2>/dev/null || exit 76\\nexit 0`,\n 76,\n );\n try {\n if (state.processSession?.execCommandForProcessControl) {\n await state.processSession.execCommandForProcessControl(\n state.sessionId,\n shellHelperArgs(script),\n );\n } else {\n await state.execInvoke(state.runContext, shellHelperInput(script), undefined);\n }\n } catch {\n // Confirmation is performed by identityAlive(). A failed signal helper\n // never opens the fence; it is retried/escalated until the process is gone.\n }\n }\n}\n\nexport function createTurnToolCancellationController(\n signal?: AbortSignal,\n): TurnToolCancellationController {\n return new TurnToolCancellationControllerImpl(signal);\n}\n\n/** Wrap a capability instance without depending on SDK-private subclasses. */\nexport function wrapCapabilityToolsForTurnCancellation(\n capability: { tools(): unknown[]; _session?: CommandCancellationSession },\n controller: TurnToolCancellationController,\n): void {\n const originalTools = capability.tools;\n capability.tools = function () {\n return controller.wrapTools(originalTools.call(this), this._session);\n };\n}\n","// Provider-agnostic structured sandbox services, called API-direct.\n//\n// THE NON-PIXEL SURFACE: file tree + read/write (the Pierre tree), git\n// status/diff hunks (the Pierre diff), and a terminal exec + interactive PTY.\n// Served client -> API -> box IN-PROCESS: the API resumes the box by id, builds\n// ONE service around the live `session` handle for the call's lifetime, runs the\n// op, returns inline JSON, and drops the handle. There is NO ownership/singleton\n// here — the live handle is whatever the caller resumed; it is non-owned and\n// dropped when the call returns. The same module is importable by the worker's\n// agent turn for the fs.changed side effect it produces in-process.\n//\n// Built on `session.exec(args): Promise<SandboxExecResult>`, which\n// returns RAW {stdout,stderr,exitCode} on the agents-core local/docker sessions\n// (and Modal/the extensions providers expose the equivalent). `execCommand`\n// returns a BANNER-DECORATED string (formatExecResponse). Structured reads use\n// it only with bounded, explicit framing and strip the banner before parsing;\n// raw `exec` remains preferred. `readFile` returns string|Uint8Array\n// (binary-safe). Writes go\n// through `exec` (a base64 heredoc — raw + binary capable, unlike createEditor's\n// apply-patch-only path which cannot do binary, C4), falling back to\n// `createEditor` for text when `exec` is absent.\n\nimport type {\n FsChangedPayload,\n FsDeleteRequest,\n FsDeleteResponse,\n FsListRequest,\n FsListResponse,\n FsMkdirRequest,\n FsMkdirResponse,\n FsMoveRequest,\n FsMoveResponse,\n FsReadRequest,\n FsReadResponse,\n FsTreeNode,\n FsWriteRequest,\n FsWriteResponse,\n GitChangedPayload,\n GitCommit,\n GitDiffHunk,\n GitDiffRequest,\n GitDiffResponse,\n GitFileDiff,\n GitFileStatus,\n GitFileStatusCode,\n GitLogRequest,\n GitLogResponse,\n GitShowRequest,\n GitShowResponse,\n GitStatusRequest,\n GitStatusResponse,\n PtyCloseRequest,\n PtyOpenRequest,\n PtyOpenResponse,\n PtyResizeRequest,\n PtyWriteRequest,\n SessionEventType,\n SessionStructuredCapabilities,\n TerminalExecRequest,\n TerminalExecResponse,\n} from \"@opengeni/contracts\";\nimport {\n isExecSessionLostBanner,\n parseExecBannerExitCode,\n parseExecBannerSessionId,\n} from \"./exec-banner\";\nimport {\n createTurnToolCancellationController,\n TurnSandboxCommandCancelledError,\n} from \"./turn-tool-cancellation\";\n\nexport {\n isExecSessionLostBanner,\n parseExecBannerExitCode,\n parseExecBannerSessionId,\n} from \"./exec-banner\";\n\n// ── The minimal session surface Channel A consumes (a structural subset of the\n// SDK's SandboxSession, all optional — capability-probed before use). ─────────\nexport type ChannelAExecResult = {\n output?: string;\n stdout?: string;\n stderr?: string;\n exitCode?: number | null;\n sessionId?: number;\n wallTimeSeconds?: number;\n};\nexport type ChannelAExecArgs = {\n cmd: string;\n workdir?: string | undefined;\n shell?: string | undefined;\n login?: boolean | undefined;\n tty?: boolean | undefined;\n yieldTimeMs?: number | undefined;\n maxOutputTokens?: number | undefined;\n runAs?: string | undefined;\n};\nexport type ChannelAEditor = {\n createFile?(op: unknown): Promise<unknown>;\n updateFile?(op: unknown): Promise<unknown>;\n deleteFile?(op: unknown): Promise<unknown>;\n};\nexport type ChannelASession = {\n exec?(args: ChannelAExecArgs): Promise<ChannelAExecResult>;\n execCommand?(args: ChannelAExecArgs): Promise<string>;\n readFile?(args: {\n path: string;\n runAs?: string;\n maxBytes?: number;\n }): Promise<string | Uint8Array>;\n writeStdin?(args: {\n sessionId: number;\n chars?: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n }): Promise<string>;\n writeStdinForProcessMutation?(args: {\n sessionId: number;\n chars?: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n }): Promise<string>;\n writeStdinForProcessControl?(args: {\n sessionId: number;\n chars?: string;\n yieldTimeMs?: number;\n maxOutputTokens?: number;\n }): Promise<string>;\n cancelExecCommand?(opId: string): Promise<boolean>;\n hasRetainedProcess?(providerSessionId: number): boolean;\n execCommandForProcessControl?(providerSessionId: number, args: ChannelAExecArgs): Promise<string>;\n createEditor?(runAs?: string): ChannelAEditor;\n supportsPty?(): boolean;\n};\n\n// ── Errors mapped to HTTP status at the route. ───────────────────────────────\nexport class ChannelAValidationError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ChannelAValidationError\";\n }\n}\n/** A structurally valid Channel-A request could not be completed because the\n * sandbox/provider control plane was temporarily unavailable. Callers may retry\n * this class; it must never be presented as a bad user path. */\nexport class ChannelAUnavailableError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ChannelAUnavailableError\";\n }\n}\nexport class ChannelAConflictError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ChannelAConflictError\";\n }\n}\nexport class ChannelANotFoundError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ChannelANotFoundError\";\n }\n}\nexport class ChannelAUnsupportedError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ChannelAUnsupportedError\";\n }\n}\n\nexport type ChannelAEmitter = (\n events: { type: SessionEventType; payload: unknown }[],\n) => Promise<void>;\n\nexport type SandboxChannelAServiceOptions = {\n session: ChannelASession;\n // The workspace-relative root the box maps \"\" to (the SDK normalizes against\n // its own workspaceRoot, so \"\" is the workspace root here).\n workspaceRoot?: string;\n // The lease epoch the box was resumed under (paired with `revision` for cache\n // invalidation — H3). 0 when ownership is off / no lease.\n leaseEpoch?: number;\n // The starting FS revision (monotonic; the caller may seed it from a prior\n // value so it doesn't reset to 0 mid-session — H3). Defaults to 0.\n revision?: number;\n // A1 emitter — appendAndPublishEvents bound to the caller's db+bus. Optional:\n // a pure read (fsList/fsRead/gitDiff) needs no emitter; only the mutating /\n // PTY paths emit. When absent the notification is silently skipped.\n emit?: ChannelAEmitter;\n // runAs is omitted unless the backend supports it (modal/daytona/cloudflare);\n // e2b/runloop/blaxel/vercel throw on runAs (SDK survey). Default off — the\n // local/docker test backends are single-user.\n runAs?: string;\n};\n\nexport const REPOSITORY_DISCOVERY_LIMIT = 256;\nexport type RepositoryDiscoveryDegradedReason =\n | \"command_failed\"\n | \"command_timed_out\"\n | \"result_limit_exceeded\";\nexport type RepositoryDiscoveryResult = {\n repos: string[];\n complete: boolean;\n degradedReason: RepositoryDiscoveryDegradedReason | null;\n};\n\nconst REPOSITORY_DISCOVERY_TRUNCATED_SENTINEL = \"__OPENGENI_REPOSITORY_DISCOVERY_TRUNCATED__\";\nconst REPOSITORY_DISCOVERY_STATUS_PREFIX = \"__OPENGENI_REPOSITORY_DISCOVERY_STATUS__:\";\n\nconst NUL = String.fromCharCode(0); // \\0 NUL — find/porcelain/numstat -z separator\nconst FS_LIST_TRUNCATED_MARKER = \"__OPENGENI_FS_LIST_TRUNCATED__\";\n// Both the local and Modal SDK sessions retain at most 1 MiB per active output\n// stream. Leave ample framing/translation headroom and emit an explicit marker\n// instead of allowing the SDK to drop the tree's leading parent records.\nconst FS_LIST_MAX_OUTPUT_BYTES = 768 * 1024;\n// Modal and the local SDK retain at most 1 MiB of command output and discard\n// the prefix when that limit is crossed. Git's NUL-delimited metadata and\n// unified patches therefore travel as bounded base64 chunks. 512 KiB of raw\n// data expands to ~683 KiB, leaving room for confinement/provider framing.\nconst GIT_COMMAND_CHUNK_BYTES = 512 * 1024;\nconst GIT_METADATA_MAX_BYTES = 2 * 1024 * 1024;\nconst US = String.fromCharCode(0x1f); // \\x1f unit sep — git-log field separator\nconst RS = String.fromCharCode(0x1e); // \\x1e record sep — git-log record separator\nconst SELFHOSTED_VIRTUAL_ROOT = \"/workspace\";\n\nexport class SandboxChannelAService {\n private readonly session: ChannelASession;\n private readonly workspaceRoot: string;\n private readonly leaseEpoch: number;\n private revision: number;\n private readonly emit?: ChannelAEmitter | undefined;\n private readonly runAs?: string | undefined;\n\n constructor(opts: SandboxChannelAServiceOptions) {\n this.session = opts.session;\n this.workspaceRoot = opts.workspaceRoot ?? \"\";\n this.leaseEpoch = opts.leaseEpoch ?? 0;\n this.revision = opts.revision ?? 0;\n this.emit = opts.emit;\n this.runAs = opts.runAs;\n }\n\n /** Capability probe — the compact Channel-A projection. */\n capabilities(repos: string[] = []): SessionStructuredCapabilities {\n const s = this.session;\n const hasExec = Boolean(s.exec || s.execCommand);\n const hasFs = Boolean(s.readFile && (s.exec || s.execCommand || s.createEditor));\n return {\n FileSystem: {\n available: hasFs,\n readOnly: !(s.exec || s.createEditor),\n root: this.workspaceRoot,\n },\n Terminal: {\n events: hasExec,\n exec: hasExec,\n pty: { available: Boolean(s.supportsPty?.() && s.writeStdin) },\n },\n Git: { available: hasExec, repos },\n };\n }\n\n // ════════════════════════════ exec primitive ══════════════════════════════\n // RAW exec — returns {stdout, stderr, exitCode}. Uses session.exec when present\n // (the local/docker sessions return raw output); falls back to execCommand +\n // a banner strip. Callers that parse output must independently bound/frame it\n // because provider retained-output truncation drops command prefixes. Throws\n // ChannelAUnsupportedError when neither exists.\n private async run(args: ChannelAExecArgs): Promise<{\n stdout: string;\n stderr: string;\n exitCode: number | null;\n sessionId?: number;\n wallTimeSeconds: number;\n }> {\n const withRunAs = this.runAs ? { ...args, runAs: this.runAs } : args;\n if (this.session.exec) {\n const r = await this.session.exec(withRunAs);\n return {\n stdout: r.stdout ?? r.output ?? \"\",\n stderr: r.stderr ?? \"\",\n exitCode: r.exitCode ?? null,\n ...(typeof r.sessionId === \"number\" ? { sessionId: r.sessionId } : {}),\n wallTimeSeconds: r.wallTimeSeconds ?? 0,\n };\n }\n if (this.session.execCommand) {\n const raw = await this.session.execCommand(withRunAs);\n // The SDK's execCommand returns the formatExecResponse BANNER string. When a\n // command stays running (an interactive `bash` opened with tty:true), the\n // banner carries a `Process running with session ID <N>` line — the numeric\n // exec-session id writeStdin() needs to drive that PTY. The exec() fast-path\n // above surfaces sessionId structurally; this fallback must recover it from\n // the banner or the PTY appears non-interactive (execSessionId=null ->\n // pty/write 409) even on backends (Modal) whose only exec surface is\n // execCommand. We DON'T close over the banner for stdout (that is stripped).\n const sessionId = parseExecBannerSessionId(raw);\n return {\n stdout: stripExecBanner(raw),\n stderr: \"\",\n exitCode: parseExecBannerExitCode(raw),\n ...(sessionId !== null ? { sessionId } : {}),\n wallTimeSeconds: 0,\n };\n }\n throw new ChannelAUnsupportedError(\"the box does not support command execution\");\n }\n\n // ════════════════════════════ FileSystem (A2) ═════════════════════════════\n\n async fsList(req: FsListRequest): Promise<FsListResponse> {\n return await this.fsListInternal(req, []);\n }\n\n /**\n * Worker-only fast path for a bounded whole-workspace index. Matching\n * directory nodes are emitted but pruned by `find` before descent, so residue\n * such as node_modules cannot consume the result budget. The public fs/list\n * wire remains unchanged; interactive callers still expand every directory\n * they explicitly request.\n */\n async fsListPruned(\n req: FsListRequest,\n pruneDirectoryNames: readonly string[],\n ): Promise<FsListResponse> {\n return await this.fsListInternal(req, pruneDirectoryNames);\n }\n\n private async fsListInternal(\n req: FsListRequest,\n pruneDirectoryNames: readonly string[],\n ): Promise<FsListResponse> {\n const root = assertSafeRelPathOrRoot(req.path);\n const pruneNames = [...new Set(pruneDirectoryNames)].map(assertSafePruneDirectoryName);\n // A single bounded command (NUL-delimited) builds the whole subtree in one\n // round-trip. Prefer GNU find's -printf on the Ubuntu-based images; on\n // macOS/BSD, use a depth-bounded Bash glob walker because their find has no\n // -mindepth/-maxdepth/-printf contract.\n const findRoot = \".\";\n const depthArg = Math.max(1, req.depth);\n const maxCommandEntries = req.maxEntries + 1;\n const gnuPrint = `-printf '%y\\\\t%s\\\\t%T@\\\\t%m\\\\t%p\\\\0'`;\n const gnuSelector = pruneNames.length\n ? `\\\\( -type d \\\\( ${pruneNames.map((name) => `-name ${shellQuote(name)}`).join(\" -o \")} \\\\) ${gnuPrint} -prune \\\\) -o ${gnuPrint}`\n : gnuPrint;\n const gnuVisibleSelector = req.includeHidden\n ? gnuSelector\n : `\\\\( -path '*/.*' -prune \\\\) -o \\\\( ${gnuSelector} \\\\)`;\n const gnuFind = `find ${findRoot} -mindepth 1 -maxdepth ${depthArg} \\\\( ${gnuVisibleSelector} \\\\) 2>/dev/null`;\n const portableHiddenGuard = req.includeHidden\n ? \"\"\n : `if [[ \"$base\" == .* ]]; then continue; fi;`;\n const portablePruneCase = pruneNames.length\n ? `case \"$base\" in ${pruneNames.map(shellQuote).join(\"|\")}) pruned=1 ;; *) pruned=0 ;; esac;`\n : \"pruned=0;\";\n const portableWalk = [\n \"shopt -s nullglob dotglob; count=0; stop=0;\",\n 'walk() { local dir=\"$1\" level=\"$2\" p base t size mtime mode pruned;',\n 'for p in \"$dir\"/*; do [ \"$stop\" -eq 1 ] && return; base=${p##*/};',\n portableHiddenGuard,\n `if [ -L \"$p\" ]; then t=l; size=0; elif [ -d \"$p\" ]; then t=d; size=0; elif [ -f \"$p\" ]; then t=f; size=$(wc -c < \"$p\" | tr -d ' '); else t=o; size=0; fi;`,\n `mtime=$(date -r \"$p\" +%s 2>/dev/null || stat -c %Y \"$p\" 2>/dev/null || echo 0);`,\n `mode=$(stat -f %Lp \"$p\" 2>/dev/null || stat -c %a \"$p\" 2>/dev/null || echo 0);`,\n `printf '%s\\\\t%s\\\\t%s\\\\t%s\\\\t%s\\\\0' \"$t\" \"$size\" \"$mtime\" \"$mode\" \"$p\";`,\n `count=$((count + 1)); if [ \"$count\" -ge ${maxCommandEntries} ]; then stop=1; return; fi;`,\n portablePruneCase,\n `if [ \"$t\" = d ] && [ \"$pruned\" -eq 0 ] && [ \"$level\" -lt ${depthArg} ]; then walk \"$p\" $((level + 1)); fi;`,\n \"done; }; walk . 1\",\n ].join(\" \");\n // Capability selection lives inside the confined command. Even a BSD/macOS\n // box therefore pays exactly one provider round-trip, and an empty GNU\n // listing cannot be mistaken for a failed capability probe.\n const rawFindCommand = [\n `if find --version >/dev/null 2>&1 && head -z -n 0 </dev/null >/dev/null 2>&1; then`,\n `${gnuFind};`,\n \"else\",\n `${portableWalk};`,\n \"fi\",\n ].join(\" \");\n const boundedOutput = [\n \"LC_ALL=C; bytes=0; records=0; truncated=0;\",\n \"while IFS= read -r -d '' record; do\",\n \"record_bytes=${#record};\",\n `if [ \"$records\" -ge ${req.maxEntries} ] || [ $((bytes + record_bytes + 1)) -gt ${FS_LIST_MAX_OUTPUT_BYTES} ]; then truncated=1; break; fi;`,\n \"printf '%s\\\\0' \\\"$record\\\"; bytes=$((bytes + record_bytes + 1)); records=$((records + 1));\",\n \"done;\",\n `if [ \"$truncated\" -eq 1 ]; then printf '%s\\\\0' ${shellQuote(FS_LIST_TRUNCATED_MARKER)}; fi`,\n ].join(\" \");\n const findCommand = [\n `{ ${rawFindCommand}; } | { ${boundedOutput}; };`,\n \"producer_status=${PIPESTATUS[0]};\",\n `if [ \"$producer_status\" -ne 0 ] && [ \"$producer_status\" -ne 141 ]; then printf '%s\\\\0' ${shellQuote(FS_LIST_TRUNCATED_MARKER)}; fi`,\n ].join(\" \");\n const { stdout, exitCode } = await this.runInConfinedDirectory(root, {\n cmd: internalBashCommand(findCommand),\n yieldTimeMs: 10_000,\n maxOutputTokens: Math.ceil(FS_LIST_MAX_OUTPUT_BYTES / 4) + 1_024,\n });\n if (exitCode !== 0) {\n throw new ChannelAUnavailableError(\n \"Workspace files are temporarily unavailable. Retry the file list.\",\n );\n }\n\n const entries = stdout.split(NUL).filter((s) => s.length > 0);\n const transportTruncated = entries.at(-1) === FS_LIST_TRUNCATED_MARKER;\n if (transportTruncated) entries.pop();\n const rootNode: FsTreeNode = {\n name: basename(root) || (root === \"\" ? \"\" : root),\n path: root,\n type: \"dir\",\n sizeBytes: null,\n mtimeMs: null,\n mode: null,\n children: [],\n truncated: false,\n };\n // Index nodes by path for O(1) parent attach.\n const byPath = new Map<string, FsTreeNode>();\n byPath.set(root, rootNode);\n let count = 0;\n let truncated = transportTruncated;\n for (const entry of entries) {\n if (count >= req.maxEntries) {\n truncated = true;\n break;\n }\n const parts = entry.split(\"\\t\");\n if (parts.length < 5) continue;\n const [typeChar, sizeStr, mtimeStr, modeStr, ...pathParts] = parts;\n const rawPath = pathParts.join(\"\\t\");\n const relPath = stripDotSlash(rawPath, root);\n const node: FsTreeNode = {\n name: basename(relPath),\n path: relPath,\n type: findTypeToNode(typeChar ?? \"\"),\n sizeBytes: typeChar === \"d\" ? null : safeInt(sizeStr),\n mtimeMs: mtimeToMs(mtimeStr),\n mode: safeOctal(modeStr),\n ...(typeChar === \"d\" ? { children: [] as FsTreeNode[] } : {}),\n truncated: false,\n };\n byPath.set(relPath, node);\n count++;\n }\n // Second pass: attach each node to its parent (parents always present\n // because find emits ancestors before descendants at increasing depth).\n for (const [path, node] of byPath) {\n if (path === root) continue;\n const parentPath = dirnameRel(path, root);\n const parent = byPath.get(parentPath) ?? rootNode;\n (parent.children ??= []).push(node);\n }\n sortTree(rootNode);\n return { root: rootNode, revision: this.revision, truncated };\n }\n\n async fsRead(req: FsReadRequest): Promise<FsReadResponse> {\n const path = assertSafeRelPath(req.path);\n if (!this.session.readFile) {\n // No native readFile: open the file once, prove that exact descriptor is\n // rooted beneath the workspace, then base64 it through exec.\n return await this.fsReadViaExec(path, req);\n }\n let raw: string | Uint8Array;\n try {\n raw = await this.session.readFile({\n path: this.joinRoot(path),\n maxBytes: req.maxBytes,\n ...(this.runAs ? { runAs: this.runAs } : {}),\n });\n } catch (error) {\n // A provider guard is the final race-safe check after our preflight. Never\n // bypass it through exec: that would turn an in-workspace symlink into an\n // arbitrary read outside the workspace root.\n if (isWorkspaceEscapeError(error)) {\n throw new ChannelAValidationError(`path resolves outside workspace: ${path}`);\n }\n if (isDefinitePathNotFoundError(error)) {\n throw new ChannelANotFoundError(`file not found: ${path}`);\n }\n // A native provider read can fail while exec on the same live box remains\n // healthy. The descriptor path below is equally confined and binary-safe,\n // so use it as a single recovery path. Unknown provider failures must never\n // be downgraded into a false 404.\n if (this.session.exec || this.session.execCommand) {\n return await this.fsReadViaExec(path, req);\n }\n throw new ChannelAUnavailableError(\n \"Workspace files are temporarily unavailable. Retry the file read.\",\n );\n }\n const bytes = typeof raw === \"string\" ? Buffer.from(raw, \"utf8\") : Buffer.from(raw);\n return this.shapeRead(path, bytes, req);\n }\n\n private async assertConfinedExistingDirectory(path: string): Promise<void> {\n const root = this.workspaceRoot || \".\";\n const abs = this.joinRoot(path);\n const rejectLink = path\n ? `test ! -L ${shellQuote(abs)} || { printf '__OPENGENI_FS_SYMLINK__'; exit 68; }`\n : \":\";\n const script = [\n `root=$(realpath -e -- ${shellQuote(root)}) || { printf '__OPENGENI_FS_NOT_FOUND__'; exit 66; }`,\n rejectLink,\n `target=$(realpath -e -- ${shellQuote(abs)}) || { printf '__OPENGENI_FS_NOT_FOUND__'; exit 66; }`,\n `case \"$target\" in \"$root\"|\"$root\"/*) ;; *) printf '__OPENGENI_FS_ESCAPE__'; exit 67 ;; esac`,\n `test -d \"$target\" || { printf '__OPENGENI_FS_NOT_FOUND__'; exit 66; }`,\n `printf '__OPENGENI_FS_CONFINED_OK__'`,\n ].join(\"; \");\n const result = await this.run({ cmd: internalBashCommand(script) });\n this.assertConfinementResult(result, path || \".\", \"directory\");\n }\n\n private async assertConfinedMutationParent(\n path: string,\n options: { allowMissingParents: boolean; rejectFinalSymlink: boolean },\n ): Promise<void> {\n const root = this.workspaceRoot || \".\";\n const abs = this.joinRoot(path);\n const rejectLink = options.rejectFinalSymlink\n ? `test ! -L ${shellQuote(abs)} || { printf '__OPENGENI_FS_SYMLINK__'; exit 68; }`\n : \":\";\n const locateParent = options.allowMissingParents\n ? 'probe=\"$parent\"; while [ ! -e \"$probe\" ] && [ ! -L \"$probe\" ]; do next=$(dirname -- \"$probe\"); [ \"$next\" != \"$probe\" ] || break; probe=\"$next\"; done'\n : 'probe=\"$parent\"';\n const requireParent = options.allowMissingParents\n ? \":\"\n : 'test -d \"$parent\" || { printf \"__OPENGENI_FS_NOT_FOUND__\"; exit 66; }';\n const script = [\n `root=$(realpath -e -- ${shellQuote(root)}) || { printf '__OPENGENI_FS_NOT_FOUND__'; exit 66; }`,\n rejectLink,\n `parent=$(dirname -- ${shellQuote(abs)})`,\n locateParent,\n `target=$(realpath -e -- \"$probe\") || { printf '__OPENGENI_FS_NOT_FOUND__'; exit 66; }`,\n `case \"$target\" in \"$root\"|\"$root\"/*) ;; *) printf '__OPENGENI_FS_ESCAPE__'; exit 67 ;; esac`,\n requireParent,\n `printf '__OPENGENI_FS_CONFINED_OK__'`,\n ].join(\"; \");\n const result = await this.run({ cmd: internalBashCommand(script) });\n this.assertConfinementResult(result, path, \"mutation\");\n }\n\n private assertConfinementResult(\n result: { stdout: string; exitCode: number | null; sessionId?: number },\n path: string,\n kind: \"directory\" | \"mutation\",\n ): void {\n if (result.sessionId !== undefined) {\n throw new ChannelAUnavailableError(\n \"Workspace files are temporarily unavailable. Retry the operation.\",\n );\n }\n if (result.stdout.includes(\"__OPENGENI_FS_CONFINED_OK__\")) return;\n if (result.stdout.includes(\"__OPENGENI_FS_ESCAPE__\") || result.exitCode === 67) {\n throw new ChannelAValidationError(`path resolves outside workspace: ${path}`);\n }\n if (result.stdout.includes(\"__OPENGENI_FS_SYMLINK__\") || result.exitCode === 68) {\n throw new ChannelAValidationError(`${kind} path must not be a symbolic link: ${path}`);\n }\n if (result.stdout.includes(\"__OPENGENI_FS_NOT_FOUND__\") || result.exitCode === 66) {\n throw new ChannelANotFoundError(`${kind} path not found: ${path}`);\n }\n throw new ChannelAUnavailableError(\n \"Workspace files are temporarily unavailable. Retry the operation.\",\n );\n }\n\n /** Binary-safe fallback for sessions without native reads. The file is opened\n * before checking `/proc/.../fd/3`, so a symlink swap cannot redirect the\n * subsequent read after confinement has been established. */\n private async fsReadViaExec(path: string, req: FsReadRequest): Promise<FsReadResponse> {\n const root = this.workspaceRoot || \".\";\n const abs = this.joinRoot(path);\n const script = [\n `root=$(realpath -e -- ${shellQuote(root)}) || { printf '__OPENGENI_FS_NOT_FOUND__'; exit 66; }`,\n `exec 3<${shellQuote(abs)} || { printf '__OPENGENI_FS_NOT_FOUND__'; exit 66; }`,\n `target=$(readlink -f -- \"/proc/$$/fd/3\") || { printf '__OPENGENI_FS_NOT_FOUND__'; exit 66; }`,\n `case \"$target\" in \"$root\"|\"$root\"/*) ;; *) printf '__OPENGENI_FS_ESCAPE__'; exit 67 ;; esac`,\n `test -f \"$target\" || { printf '__OPENGENI_FS_NOT_FOUND__'; exit 66; }`,\n `printf '__OPENGENI_FS_READ_OK__\\\\n'`,\n `head -c ${req.maxBytes} <&3 | base64 | tr -d '\\\\n'`,\n ].join(\"; \");\n let result: Awaited<ReturnType<SandboxChannelAService[\"run\"]>>;\n try {\n result = await this.run({\n cmd: internalBashCommand(script),\n maxOutputTokens: Math.ceil((req.maxBytes * 4) / 3) + 1_024,\n });\n } catch (error) {\n if (error instanceof ChannelAUnsupportedError) throw error;\n throw new ChannelAUnavailableError(\n \"Workspace files are temporarily unavailable. Retry the file read.\",\n );\n }\n const { stdout, exitCode, sessionId } = result;\n if (sessionId !== undefined) {\n throw new ChannelAUnavailableError(\n \"Workspace files are temporarily unavailable. Retry the file read.\",\n );\n }\n if (stdout.includes(\"__OPENGENI_FS_ESCAPE__\") || exitCode === 67) {\n throw new ChannelAValidationError(`path resolves outside workspace: ${path}`);\n }\n if (stdout.includes(\"__OPENGENI_FS_NOT_FOUND__\") || exitCode === 66) {\n throw new ChannelANotFoundError(`file not found: ${path}`);\n }\n const prefix = \"__OPENGENI_FS_READ_OK__\\n\";\n const successIndex = stdout.indexOf(prefix);\n if (successIndex < 0 || (exitCode !== null && exitCode !== 0)) {\n throw new ChannelAUnavailableError(\n \"Workspace files are temporarily unavailable. Retry the file read.\",\n );\n }\n const bytes = Buffer.from(\n stdout.slice(successIndex + prefix.length).replace(/\\n/g, \"\"),\n \"base64\",\n );\n return this.shapeRead(path, bytes, req);\n }\n\n private shapeRead(path: string, bytes: Buffer, req: FsReadRequest): FsReadResponse {\n const truncated = bytes.byteLength >= req.maxBytes;\n const isBinary = sniffBinary(bytes);\n const encoding = req.encoding === \"base64\" || isBinary ? \"base64\" : \"utf8\";\n const content = encoding === \"base64\" ? bytes.toString(\"base64\") : bytes.toString(\"utf8\");\n return {\n path,\n encoding,\n content,\n sizeBytes: bytes.byteLength,\n truncated,\n isBinary,\n revision: this.revision,\n };\n }\n\n async fsWrite(req: FsWriteRequest): Promise<FsWriteResponse> {\n const path = assertSafeRelPath(req.path);\n const abs = this.joinRoot(path);\n const bytes =\n req.encoding === \"base64\"\n ? Buffer.from(req.content, \"base64\")\n : Buffer.from(req.content, \"utf8\");\n\n await this.assertConfinedMutationParent(path, {\n allowMissingParents: req.createParents,\n rejectFinalSymlink: true,\n });\n\n if (!req.overwrite) {\n const { exitCode } = await this.run({\n cmd: `test -e ${shellQuote(abs)} || test -L ${shellQuote(abs)}`,\n });\n if (exitCode === 0) {\n throw new ChannelAConflictError(`path exists and overwrite is false: ${path}`);\n }\n }\n if (req.createParents) {\n const dir = dirnameAbs(abs);\n if (dir) await this.run({ cmd: `mkdir -p ${shellQuote(dir)}` });\n await this.assertConfinedMutationParent(path, {\n allowMissingParents: false,\n rejectFinalSymlink: true,\n });\n }\n // base64-decode heredoc — raw + binary capable, single round-trip, last-\n // writer-wins (the I4 default; no read-modify-write race because we write\n // the whole file). A non-existent parent with createParents:false surfaces a\n // non-zero exit -> 400.\n const b64 = bytes.toString(\"base64\");\n const { exitCode, stderr } = await this.run({\n cmd: `printf %s ${shellQuote(b64)} | base64 -d > ${shellQuote(abs)}`,\n });\n if (exitCode !== null && exitCode !== 0) {\n // createEditor fallback for text when exec-write failed and we have a\n // text payload (binary cannot go through apply-patch).\n if (req.encoding !== \"base64\" && this.session.createEditor) {\n const ok = await this.tryEditorWrite(abs, req.content);\n if (!ok)\n throw new ChannelAValidationError(\n `failed to write ${path}: ${stderr || `exit ${exitCode}`}`,\n );\n } else {\n throw new ChannelAValidationError(\n `failed to write ${path}: ${stderr || `exit ${exitCode}`}`,\n );\n }\n }\n this.revision++;\n await this.emitFsChanged(\n [{ path, kind: \"modified\", isDir: false, sizeBytes: bytes.byteLength }],\n \"write\",\n );\n return { path, sizeBytes: bytes.byteLength, revision: this.revision };\n }\n\n private async tryEditorWrite(absPath: string, content: string): Promise<boolean> {\n const editor = this.session.createEditor?.(this.runAs);\n if (!editor?.createFile) return false;\n try {\n // The apply-patch op shape — a whole-file \"create\" diff (last-writer-wins).\n const diff = content\n .split(\"\\n\")\n .map((line) => `+${line}`)\n .join(\"\\n\");\n await editor.createFile({ type: \"create_file\", path: absPath, diff });\n return true;\n } catch {\n return false;\n }\n }\n\n async fsDelete(req: FsDeleteRequest): Promise<FsDeleteResponse> {\n const path = assertSafeRelPath(req.path);\n const abs = this.joinRoot(path);\n await this.assertConfinedMutationParent(path, {\n allowMissingParents: false,\n rejectFinalSymlink: false,\n });\n const flag = req.recursive ? \"-rf\" : \"-f\";\n const { exitCode, stderr } = await this.run({ cmd: `rm ${flag} ${shellQuote(abs)}` });\n if (exitCode !== null && exitCode !== 0) {\n throw new ChannelAValidationError(\n `failed to delete ${path}: ${stderr || `exit ${exitCode}`}`,\n );\n }\n this.revision++;\n await this.emitFsChanged([{ path, kind: \"deleted\", isDir: false, sizeBytes: null }], \"write\");\n return { revision: this.revision };\n }\n\n async fsMove(req: FsMoveRequest): Promise<FsMoveResponse> {\n const path = assertSafeRelPath(req.path);\n const newPath = assertSafeRelPath(req.newPath);\n const abs = this.joinRoot(path);\n const newAbs = this.joinRoot(newPath);\n\n await this.assertConfinedMutationParent(path, {\n allowMissingParents: false,\n rejectFinalSymlink: false,\n });\n await this.assertConfinedMutationParent(newPath, {\n allowMissingParents: req.createParents,\n rejectFinalSymlink: true,\n });\n\n if (!req.overwrite) {\n const { exitCode } = await this.run({\n cmd: `test -e ${shellQuote(newAbs)} || test -L ${shellQuote(newAbs)}`,\n });\n if (exitCode === 0) {\n throw new ChannelAConflictError(`destination exists and overwrite is false: ${newPath}`);\n }\n }\n if (req.createParents) {\n const dir = dirnameAbs(newAbs);\n if (dir) await this.run({ cmd: `mkdir -p ${shellQuote(dir)}` });\n await this.assertConfinedMutationParent(newPath, {\n allowMissingParents: false,\n rejectFinalSymlink: true,\n });\n }\n // -f only when overwrite — otherwise a clobber would silently succeed past\n // the guard above on a race. A missing source surfaces a non-zero exit -> 400.\n const flag = req.overwrite ? \"-f \" : \"\";\n const { exitCode, stderr } = await this.run({\n cmd: `mv ${flag}${shellQuote(abs)} ${shellQuote(newAbs)}`,\n });\n if (exitCode !== null && exitCode !== 0) {\n throw new ChannelAValidationError(\n `failed to move ${path} -> ${newPath}: ${stderr || `exit ${exitCode}`}`,\n );\n }\n this.revision++;\n await this.emitFsChanged(\n [\n { path, kind: \"deleted\", isDir: false, sizeBytes: null },\n { path: newPath, kind: \"created\", isDir: false, sizeBytes: null },\n ],\n \"write\",\n );\n return { path, newPath, revision: this.revision };\n }\n\n async fsMkdir(req: FsMkdirRequest): Promise<FsMkdirResponse> {\n const path = assertSafeRelPath(req.path);\n const abs = this.joinRoot(path);\n await this.assertConfinedMutationParent(path, {\n allowMissingParents: req.recursive,\n rejectFinalSymlink: true,\n });\n // A plain mkdir on an existing path returns non-zero -> 400, matching the\n // write-on-existing semantics; -p makes the create idempotent + builds parents.\n const flag = req.recursive ? \"-p \" : \"\";\n const { exitCode, stderr } = await this.run({ cmd: `mkdir ${flag}${shellQuote(abs)}` });\n if (exitCode !== null && exitCode !== 0) {\n throw new ChannelAValidationError(`failed to mkdir ${path}: ${stderr || `exit ${exitCode}`}`);\n }\n await this.assertConfinedExistingDirectory(path);\n this.revision++;\n await this.emitFsChanged([{ path, kind: \"created\", isDir: true, sizeBytes: null }], \"write\");\n return { path, revision: this.revision };\n }\n\n // ════════════════════════════ Git (A2, read-only) ═════════════════════════\n\n /** Measure one Git command without returning its potentially large or\n * NUL-bearing output through the provider's text transport. */\n private async measureConfinedCommandBytes(repo: string, command: string): Promise<number> {\n const measured = await this.runInConfinedDirectory(repo, {\n cmd: [\n \"set -o pipefail\",\n `{ ${command}; } 2>/dev/null | { bytes=$(wc -c | tr -d ' \\\\n'); printf '%s' \"$bytes\"; }`,\n \"producer_status=${PIPESTATUS[0]}\",\n \"printf '\\\\t%s\\\\n' \\\"$producer_status\\\"\",\n ].join(\"; \"),\n maxOutputTokens: 1_024,\n });\n const match = measured.stdout.match(/^(\\d+)\\t(\\d+)\\n?$/);\n if (\n !match ||\n (measured.exitCode !== null && measured.exitCode !== 0) ||\n Number(match[2]) !== 0\n ) {\n throw new ChannelAUnavailableError(\n \"Workspace Git data is temporarily unavailable. Retry the operation.\",\n );\n }\n const size = Number(match[1]);\n if (!Number.isSafeInteger(size) || size < 0) {\n throw new ChannelAUnavailableError(\n \"Workspace Git data is temporarily unavailable. Retry the operation.\",\n );\n }\n return size;\n }\n\n /** Read an exact prefix of a command's output in chunks that remain below\n * every supported execCommand retained-output ceiling. The producer is\n * intentionally rerun per chunk; turn-end capture calls this only after the\n * durable mutation authority has quiesced the workspace. */\n private async readConfinedCommandPrefix(\n repo: string,\n command: string,\n byteLength: number,\n ): Promise<Buffer> {\n if (byteLength === 0) return Buffer.alloc(0);\n const chunks: Buffer[] = [];\n for (let offset = 0; offset < byteLength; offset += GIT_COMMAND_CHUNK_BYTES) {\n const expected = Math.min(GIT_COMMAND_CHUNK_BYTES, byteLength - offset);\n const chunk = await this.runInConfinedDirectory(repo, {\n cmd: [\n `{ ${command}; } 2>/dev/null`,\n `tail -c +${offset + 1}`,\n `head -c ${expected}`,\n \"base64\",\n `tr -d '\\\\n'`,\n ].join(\" | \"),\n maxOutputTokens: Math.ceil((GIT_COMMAND_CHUNK_BYTES * 4) / 3) + 1_024,\n });\n if (chunk.exitCode !== null && chunk.exitCode !== 0) {\n throw new ChannelAUnavailableError(\n \"Workspace Git data is temporarily unavailable. Retry the operation.\",\n );\n }\n const encoded = chunk.stdout.replace(/\\s/g, \"\");\n const bytes = Buffer.from(encoded, \"base64\");\n if (bytes.byteLength !== expected || bytes.toString(\"base64\") !== encoded) {\n throw new ChannelAUnavailableError(\n \"Workspace Git data is temporarily unavailable. Retry the operation.\",\n );\n }\n chunks.push(bytes);\n }\n return Buffer.concat(chunks, byteLength);\n }\n\n private async readConfinedCommandBytes(\n repo: string,\n command: string,\n maxBytes: number,\n ): Promise<{ bytes: Buffer; sizeBytes: number; truncated: boolean }> {\n const sizeBytes = await this.measureConfinedCommandBytes(repo, command);\n if (sizeBytes > maxBytes) {\n return { bytes: Buffer.alloc(0), sizeBytes, truncated: true };\n }\n return {\n bytes: await this.readConfinedCommandPrefix(repo, command, sizeBytes),\n sizeBytes,\n truncated: false,\n };\n }\n\n /** Read a regular untracked file without routing its body through one large\n * execCommand response. Native provider reads are binary-safe; providers\n * without that surface use the same bounded chunk protocol as Git patches. */\n private async readUntrackedRegularFile(\n repo: string,\n target: string,\n byteLength: number,\n ): Promise<Buffer> {\n if (byteLength === 0) return Buffer.alloc(0);\n const path = repo ? `${repo}/${target}` : target;\n assertSafeRelPath(path);\n if (this.session.readFile) {\n try {\n const raw = await this.session.readFile({\n path: this.joinRoot(path),\n maxBytes: byteLength,\n ...(this.runAs ? { runAs: this.runAs } : {}),\n });\n const bytes = typeof raw === \"string\" ? Buffer.from(raw, \"utf8\") : Buffer.from(raw);\n if (bytes.byteLength !== byteLength) {\n throw new ChannelAUnavailableError(\n \"Workspace Git data changed during capture. Retry the operation.\",\n );\n }\n return bytes;\n } catch (error) {\n if (error instanceof ChannelAUnavailableError) throw error;\n if (isWorkspaceEscapeError(error)) {\n throw new ChannelAValidationError(`path resolves outside workspace: ${path}`);\n }\n if (isDefinitePathNotFoundError(error)) {\n throw new ChannelANotFoundError(`file not found: ${path}`);\n }\n if (!this.session.exec && !this.session.execCommand) {\n throw new ChannelAUnavailableError(\n \"Workspace Git data is temporarily unavailable. Retry the operation.\",\n );\n }\n }\n }\n const fileArg = target.startsWith(\"./\") ? target : `./${target}`;\n return await this.readConfinedCommandPrefix(\n repo,\n `file=${shellQuote(fileArg)}; test ! -L \"$file\" && test -f \"$file\" || exit 66; cat -- \"$file\"`,\n byteLength,\n );\n }\n\n async gitStatus(req: GitStatusRequest): Promise<GitStatusResponse> {\n const repo = assertSafeRelPathOrRoot(req.path);\n const inside = await this.runInConfinedDirectory(repo, {\n cmd: \"git rev-parse --is-inside-work-tree 2>/dev/null\",\n });\n if (inside.stdout.trim() !== \"true\") {\n return {\n isRepo: false,\n head: null,\n detached: false,\n upstream: null,\n ahead: 0,\n behind: 0,\n files: [],\n revision: this.revision,\n };\n }\n const status = await this.readConfinedCommandBytes(\n repo,\n \"git status --porcelain=v2 --branch -z\",\n GIT_METADATA_MAX_BYTES,\n );\n if (status.truncated) {\n throw new ChannelAUnavailableError(\n \"Workspace Git metadata exceeded the safe capture limit. Retry with a narrower path.\",\n );\n }\n return { ...parsePorcelainV2(status.bytes.toString(\"utf8\")), revision: this.revision };\n }\n\n async gitDiff(req: GitDiffRequest): Promise<GitDiffResponse> {\n const repo = assertSafeRelPathOrRoot(req.path);\n const ctx = req.contextLines;\n // Selector precedence: refs > staged > worktree.\n let range = \"\";\n if (req.fromRef && req.toRef) range = `${shellQuote(req.fromRef)} ${shellQuote(req.toRef)}`;\n else if (req.fromRef) {\n if (req.fromRef === \"HEAD\") {\n const head = await this.runInConfinedDirectory(repo, {\n cmd: \"if git rev-parse --verify --quiet HEAD >/dev/null; then printf 'present'; else printf 'unborn'; fi\",\n });\n // An unborn repository has no HEAD tree. `--cached` compares its index\n // to Git's empty tree and preserves staged additions; every other\n // invalid ref remains a real read failure in the bounded command path.\n range = head.stdout.trim() === \"present\" ? shellQuote(req.fromRef) : \"--cached\";\n } else {\n range = shellQuote(req.fromRef);\n }\n } else if (req.staged) range = \"--cached\";\n const pathspec = req.pathspec.length ? ` -- ${req.pathspec.map(shellQuote).join(\" \")}` : \"\";\n\n // Pass 1: numstat (stats + binary detection). -z gives NUL-separated fields;\n // a rename emits old\\0new for that record's path fields.\n const numstat = await this.readConfinedCommandBytes(\n repo,\n `git -c core.quotePath=false diff --no-color -z --numstat ${range}${pathspec}`.trim(),\n GIT_METADATA_MAX_BYTES,\n );\n if (numstat.truncated) {\n throw new ChannelAUnavailableError(\n \"Workspace Git metadata exceeded the safe capture limit. Retry with a narrower path.\",\n );\n }\n const stats = parseNumstatZ(numstat.bytes.toString(\"utf8\"));\n\n const files: GitFileDiff[] = [];\n for (const stat of stats) {\n const target = stat.newPath;\n const fileStatus: GitFileStatusCode = stat.binary ? \"modified\" : \"modified\";\n if (stat.binary) {\n files.push({\n path: target,\n oldPath: stat.oldPath,\n status: fileStatus,\n isBinary: true,\n isImage: isImagePath(target),\n additions: 0,\n deletions: 0,\n hunks: [],\n truncated: false,\n });\n continue;\n }\n // Pass 2: the per-file unified patch -> hunks.\n const patch = await this.readConfinedCommandBytes(\n repo,\n `git -c core.quotePath=false diff --no-color -U${ctx} ${range} -- ${shellQuote(target)}`.trim(),\n req.maxBytesPerFile,\n );\n const parsed = patch.truncated\n ? { hunks: [] as GitDiffHunk[], status: \"modified\" as GitFileStatusCode }\n : parseUnifiedPatch(patch.bytes.toString(\"utf8\"));\n files.push({\n path: target,\n oldPath: stat.oldPath,\n status: parsed.status,\n isBinary: false,\n isImage: isImagePath(target),\n additions: stat.additions,\n deletions: stat.deletions,\n hunks: parsed.hunks,\n truncated: patch.truncated,\n });\n }\n\n if (req.includeUntracked) {\n // Native `git diff` deliberately omits untracked files, but a workspace\n // review cannot: an untracked-only turn is still a real change surface.\n // Ask Git for the exact NUL-delimited set, then synthesize an added-file\n // hunk from a bounded read. The explicit request flag keeps commit/staged\n // consumers on native Git semantics.\n const untracked = await this.readConfinedCommandBytes(\n repo,\n `git -c core.quotePath=false ls-files --others --exclude-standard -z${pathspec}`,\n GIT_METADATA_MAX_BYTES,\n );\n if (untracked.truncated) {\n throw new ChannelAUnavailableError(\n \"Workspace Git metadata exceeded the safe capture limit. Retry with a narrower path.\",\n );\n }\n for (const target of untracked.bytes.toString(\"utf8\").split(NUL).filter(Boolean)) {\n const fileArg = target.startsWith(\"./\") ? target : `./${target}`;\n const read = await this.runInConfinedDirectory(repo, {\n cmd: [\n `file=${shellQuote(fileArg)}`,\n 'if [ -L \"$file\" ]; then printf \"L\\\\t\"; readlink -z -- \"$file\" | base64 | tr -d \"\\\\n\"; exit; fi',\n 'size=$(wc -c < \"$file\") || exit 66',\n 'line_count=$(wc -l < \"$file\") || exit 66',\n 'if [ \"$size\" -gt 0 ]; then last_byte=$(tail -c 1 \"$file\" | od -An -tu1 | tr -d \" \\\\n\"); if [ \"$last_byte\" != \"10\" ]; then line_count=$((line_count + 1)); fi; fi',\n 'printf \"F\\\\t%s\\\\t%s\" \"$size\" \"$line_count\"',\n ].join(\"; \"),\n });\n if (read.exitCode !== null && read.exitCode !== 0) {\n throw new ChannelAUnavailableError(\n \"Workspace Git data is temporarily unavailable. Retry the operation.\",\n );\n }\n\n const [kind, first, second] = read.stdout.split(\"\\t\");\n let sampled: Buffer = Buffer.alloc(0);\n let sizeBytes: number;\n let lineCount: number;\n if (kind === \"L\") {\n const encoded = (first ?? \"\").replace(/\\s/g, \"\");\n sampled = Buffer.from(encoded, \"base64\");\n // GNU readlink -z preserves every byte (including trailing newlines)\n // and adds one NUL framing byte. The diff shows the link destination\n // itself, matching Git's symlink-blob semantics, never target content.\n if (sampled.at(-1) !== 0) continue;\n sampled = sampled.subarray(0, -1);\n sizeBytes = sampled.length;\n lineCount = addedLines(sampled).length;\n } else {\n if (kind !== \"F\") continue;\n const parsedSize = safeInt(first);\n const parsedLineCount = safeInt(second);\n if (\n parsedSize === null ||\n parsedSize < 0 ||\n parsedLineCount === null ||\n parsedLineCount < 0\n ) {\n continue;\n }\n sizeBytes = parsedSize;\n lineCount = parsedLineCount;\n const truncated = sizeBytes > req.maxBytesPerFile;\n const sampleSize = Math.min(sizeBytes, 8_192);\n sampled = await this.readUntrackedRegularFile(repo, target, sampleSize);\n if (!sniffBinary(sampled) && !truncated && sampleSize < sizeBytes) {\n sampled = await this.readUntrackedRegularFile(repo, target, sizeBytes);\n }\n }\n const truncated = sizeBytes > req.maxBytesPerFile || sampled.length > req.maxBytesPerFile;\n const bytes = truncated ? sampled.subarray(0, req.maxBytesPerFile) : sampled;\n const isBinary = sniffBinary(bytes);\n const hunkLines = !isBinary && !truncated ? addedLines(bytes) : [];\n files.push({\n path: target,\n oldPath: null,\n status: \"untracked\",\n isBinary,\n isImage: isImagePath(target),\n additions: isBinary ? 0 : lineCount,\n deletions: 0,\n hunks:\n hunkLines.length > 0\n ? [\n {\n oldStart: 0,\n oldLines: 0,\n newStart: 1,\n newLines: hunkLines.length,\n header: `@@ -0,0 +1,${hunkLines.length} @@`,\n lines: hunkLines,\n },\n ]\n : [],\n truncated,\n });\n }\n }\n return { files, revision: this.revision };\n }\n\n async gitLog(req: GitLogRequest): Promise<GitLogResponse> {\n const repo = assertSafeRelPathOrRoot(req.path);\n const fmt = `%H${US}%h${US}%P${US}%an${US}%ae${US}%at${US}%cn${US}%ce${US}%ct${US}%s${US}%b${RS}`;\n const pathspec = req.pathspec.length ? ` -- ${req.pathspec.map(shellQuote).join(\" \")}` : \"\";\n const { stdout, exitCode } = await this.runInConfinedDirectory(repo, {\n cmd: `git log --format=${shellQuote(fmt)} -n${req.maxCount + 1} --skip=${req.skip} ${shellQuote(req.ref)}${pathspec}`,\n });\n if (exitCode !== null && exitCode !== 0) {\n return { commits: [], hasMore: false };\n }\n const records = stdout\n .split(RS)\n .map((r) => r.replace(/^\\n/, \"\"))\n .filter((r) => r.trim().length > 0);\n const commits: GitCommit[] = [];\n for (const rec of records.slice(0, req.maxCount)) {\n const f = rec.split(US);\n if (f.length < 11) continue;\n commits.push({\n sha: f[0]!,\n shortSha: f[1]!,\n parents: (f[2] ?? \"\").trim() ? f[2]!.trim().split(\" \") : [],\n author: { name: f[3]!, email: f[4]!, timestamp: safeInt(f[5]) ?? 0 },\n committer: { name: f[6]!, email: f[7]!, timestamp: safeInt(f[8]) ?? 0 },\n subject: f[9]!,\n body: f.slice(10).join(US),\n refs: [],\n });\n }\n return { commits, hasMore: records.length > req.maxCount };\n }\n\n async gitShow(req: GitShowRequest): Promise<GitShowResponse> {\n const repo = assertSafeRelPathOrRoot(req.path);\n if (req.filePath) {\n // Raw blob mode: ref:filePath -> bytes.\n const { stdout, exitCode } = await this.runInConfinedDirectory(repo, {\n cmd: `git cat-file blob ${shellQuote(`${req.ref}:${req.filePath}`)} 2>/dev/null | base64`,\n });\n if (exitCode !== null && exitCode !== 0 && stdout.trim() === \"\") {\n throw new ChannelANotFoundError(`blob not found: ${req.ref}:${req.filePath}`);\n }\n const bytes = Buffer.from(stdout.replace(/\\n/g, \"\"), \"base64\");\n const truncated = bytes.byteLength > req.maxBytesPerFile;\n const clamped = truncated ? bytes.subarray(0, req.maxBytesPerFile) : bytes;\n const isBinary = sniffBinary(clamped);\n const encoding = req.encoding === \"base64\" || isBinary ? \"base64\" : \"utf8\";\n return {\n commit: null,\n files: [],\n blob: {\n content: encoding === \"base64\" ? clamped.toString(\"base64\") : clamped.toString(\"utf8\"),\n encoding,\n sizeBytes: clamped.byteLength,\n truncated,\n },\n revision: this.revision,\n };\n }\n // Commit mode: metadata + diff vs first parent.\n const log = await this.gitLog({\n path: req.path,\n ref: req.ref,\n maxCount: 1,\n skip: 0,\n pathspec: [],\n });\n const commit = log.commits[0] ?? null;\n const diff = await this.gitDiff({\n path: req.path,\n staged: false,\n includeUntracked: false,\n fromRef: `${req.ref}^`,\n toRef: req.ref,\n pathspec: [],\n contextLines: 3,\n maxBytesPerFile: req.maxBytesPerFile,\n });\n return { commit, files: diff.files, blob: null, revision: this.revision };\n }\n\n /**\n * Detect repo roots within every supported workspace layout.\n *\n * The platform normally seeds repositories at\n * `repos/<encoded-host>/<owner>/<repo>`, while explicit mount paths and\n * connected-machine layouts can be deeper. Do not reintroduce a fixed\n * maxdepth here. Traversal is\n * bounded instead by pruning known machine/build residue, a wall-clock\n * timeout, and a result limit. `.git` may be either a directory (ordinary\n * clone/submodule) or a file (linked worktree).\n *\n * Callers that persist an authoritative snapshot must use this detailed\n * result and surface an incomplete discovery. The compact `detectRepos()`\n * wrapper remains for capability negotiation, where the best available list\n * is preferable to failing the whole capabilities document.\n */\n async detectReposDetailed(): Promise<RepositoryDiscoveryResult> {\n try {\n const discovery = [\n \"find . -xdev\",\n \"\\\\( -name .git \\\\( -type d -o -type f \\\\) -print -prune \\\\)\",\n \"-o \\\\( -type d \\\\( -name node_modules -o -name .cache -o -name .local\",\n \"-o -name dist -o -name build -o -name target -o -name .venv\",\n \"-o -name __pycache__ -o -name .next \\\\) -prune \\\\)\",\n \"2>/dev/null\",\n ].join(\" \");\n // The status trailer is necessary for providers whose only structural\n // surface is `execCommand`: that fallback has stdout but no numeric exit\n // code. Without the trailer a timed-out discovery could look like a\n // successful authoritative zero-repo result.\n //\n // Do not use GNU `timeout` here. Connected Machines include macOS, whose\n // stock userland does not provide it. The watchdog kills `find` directly\n // after the wall-clock budget and records whether that kill won the race.\n // Its stdio is detached so cancelling a fast discovery cannot leave the\n // watchdog's `sleep` holding the provider output pipe open.\n const command = [\n 'results_file=$(mktemp \"${TMPDIR:-/tmp}/opengeni-repository-discovery.XXXXXX\") || exit 70',\n 'timeout_file=\"${results_file}.timed-out\"',\n \"discovery_pid=\",\n \"watchdog_pid=\",\n 'cleanup() { if [ -n \"$discovery_pid\" ]; then kill \"$discovery_pid\" 2>/dev/null || true; fi; if [ -n \"$watchdog_pid\" ]; then kill \"$watchdog_pid\" 2>/dev/null || true; fi; rm -f \"$results_file\" \"$timeout_file\"; }',\n \"abort() { trap - EXIT; cleanup; exit 143; }\",\n \"trap cleanup EXIT\",\n \"trap abort HUP INT TERM\",\n `${discovery} > \"$results_file\" &`,\n \"discovery_pid=$!\",\n '(sleeper_pid=; stop_watchdog() { if [ -n \"$sleeper_pid\" ]; then kill \"$sleeper_pid\" 2>/dev/null || true; wait \"$sleeper_pid\" 2>/dev/null || true; fi; exit 0; }; trap stop_watchdog HUP INT TERM; sleep 15 & sleeper_pid=$!; wait \"$sleeper_pid\"; sleeper_pid=; if kill -TERM \"$discovery_pid\" 2>/dev/null; then : > \"$timeout_file\"; fi) </dev/null >/dev/null 2>&1 &',\n \"watchdog_pid=$!\",\n 'wait \"$discovery_pid\"',\n \"status=$?\",\n \"discovery_pid=\",\n 'kill \"$watchdog_pid\" 2>/dev/null || true',\n 'wait \"$watchdog_pid\" 2>/dev/null || true',\n \"watchdog_pid=\",\n 'if [ \"$status\" -ne 0 ] && [ -f \"$timeout_file\" ]; then status=124; fi',\n `if [ \"$status\" -eq 0 ]; then awk 'NR <= ${REPOSITORY_DISCOVERY_LIMIT} { print } NR == ${\n REPOSITORY_DISCOVERY_LIMIT + 1\n } { print \"${REPOSITORY_DISCOVERY_TRUNCATED_SENTINEL}\" }' \"$results_file\"; fi`,\n `printf '\\\\n${REPOSITORY_DISCOVERY_STATUS_PREFIX}%s\\\\n' \"$status\"`,\n 'exit \"$status\"',\n ].join(\"\\n\");\n const { stdout } = await this.run({\n cmd: internalBashCommand(command),\n workdir: this.workspaceRoot || undefined,\n yieldTimeMs: 20_000,\n // At most 256 Unix paths (PATH_MAX each) plus the status trailer. This\n // prevents a provider's ordinary output cap from dropping the trailer\n // and making a partial list look complete.\n maxOutputTokens: 300_000,\n });\n const statusLine = stdout\n .split(\"\\n\")\n .find((line) => line.startsWith(REPOSITORY_DISCOVERY_STATUS_PREFIX));\n const embeddedStatus = statusLine\n ? Number.parseInt(statusLine.slice(REPOSITORY_DISCOVERY_STATUS_PREFIX.length), 10)\n : null;\n // The command always prints this trailer after discovery settles. Missing\n // means provider-side output truncation or an outer-shell failure, neither\n // of which is authoritative discovery even if exec reports exit 0.\n const status = Number.isInteger(embeddedStatus) ? embeddedStatus : null;\n if (status === 124) {\n return { repos: [], complete: false, degradedReason: \"command_timed_out\" };\n }\n if (status !== 0) {\n return { repos: [], complete: false, degradedReason: \"command_failed\" };\n }\n const lines = stdout\n .split(\"\\n\")\n .map((l) => l.trim())\n .filter((line) => Boolean(line) && !line.startsWith(REPOSITORY_DISCOVERY_STATUS_PREFIX));\n const truncated = lines.includes(REPOSITORY_DISCOVERY_TRUNCATED_SENTINEL);\n const repos = [\n ...new Set(\n lines\n .filter((line) => line !== REPOSITORY_DISCOVERY_TRUNCATED_SENTINEL)\n .map((gitMarker) => dirnameAbs(stripDotSlash(gitMarker, \"\")) || \"\"),\n ),\n ].sort();\n return {\n repos,\n complete: !truncated,\n degradedReason: truncated ? \"result_limit_exceeded\" : null,\n };\n } catch {\n return { repos: [], complete: false, degradedReason: \"command_failed\" };\n }\n }\n\n /** Detect repo roots within the workspace (for the Git.repos capability). */\n async detectRepos(): Promise<string[]> {\n return (await this.detectReposDetailed()).repos;\n }\n\n // ════════════════════════ Terminal exec + PTY (A2) ════════════════════════\n\n /** Run a bounded command to physical completion and return buffered output.\n * A deadline cancels the exact provider operation, proves its process group\n * absent, and settles any retained-process admission before returning 124. */\n async terminalExec(req: TerminalExecRequest): Promise<TerminalExecResponse> {\n const abort = new AbortController();\n const controller = createTurnToolCancellationController(abort.signal);\n const timeoutReason = new Error(`Terminal command exceeded ${req.timeoutMs}ms`);\n let timedOut = false;\n const timer = setTimeout(() => {\n timedOut = true;\n abort.abort(timeoutReason);\n }, req.timeoutMs);\n const terminalWorkdir = this.terminalWorkdir(req.cwd);\n let r: Awaited<ReturnType<typeof controller.runSandboxCommandStructured>>;\n try {\n r = await controller.runSandboxCommandStructured(this.session, {\n cmd: req.command,\n ...(terminalWorkdir ? { workdir: terminalWorkdir } : {}),\n ...(this.runAs ? { runAs: this.runAs } : {}),\n yieldTimeMs: req.timeoutMs,\n });\n if (timedOut) {\n await controller.waitForQuiescence();\n r = {\n stdout: \"\",\n stderr: timeoutReason.message,\n exitCode: 124,\n wallTimeSeconds: req.timeoutMs / 1_000,\n };\n }\n } catch (error) {\n controller.cancel(error);\n await controller.waitForQuiescence();\n if (!timedOut && !(error instanceof TurnSandboxCommandCancelledError)) throw error;\n r = {\n stdout: \"\",\n stderr: timeoutReason.message,\n exitCode: 124,\n wallTimeSeconds: req.timeoutMs / 1_000,\n };\n } finally {\n clearTimeout(timer);\n }\n if (req.emitStream && (r.stdout || r.stderr)) {\n const events: { type: SessionEventType; payload: unknown }[] = [];\n const commandId = crypto.randomUUID();\n if (r.stdout)\n events.push({\n type: \"sandbox.command.output.delta\",\n payload: { stream: \"stdout\", chunk: r.stdout, commandId, seq: 0 },\n });\n if (r.stderr)\n events.push({\n type: \"sandbox.command.output.delta\",\n payload: { stream: \"stderr\", chunk: r.stderr, commandId, seq: 1 },\n });\n await this.emitEvents(events);\n }\n return {\n stdout: r.stdout,\n stderr: r.stderr,\n exitCode: r.exitCode,\n running: false,\n wallTimeSeconds: r.wallTimeSeconds,\n };\n }\n\n /** Open an interactive PTY: exec the shell with tty:true, yielding the numeric\n * exec-session id the caller persists (ptyId<->execSessionId) so subsequent\n * writeStdin can drive it. Returns the supportsInput gate (false when the\n * backend has no writeStdin). The caller emits terminal.pty.started after it\n * persists the row. */\n async ptyOpen(\n req: PtyOpenRequest,\n ptyId: string,\n ): Promise<{\n response: PtyOpenResponse;\n execSessionId: number | null;\n shell: string;\n initialOutput: string;\n }> {\n const supportsInput = Boolean(this.session.supportsPty?.() && this.session.writeStdin);\n const shell = req.shell ?? \"/bin/bash\";\n const r = await this.run({\n cmd: shell,\n workdir: this.terminalWorkdir(req.cwd),\n tty: true,\n login: true,\n yieldTimeMs: 250,\n });\n return {\n response: { ptyId, streamVia: \"sse-events\", supportsInput },\n execSessionId: typeof r.sessionId === \"number\" ? r.sessionId : null,\n shell,\n initialOutput: r.stdout,\n };\n }\n\n /** Drive an open PTY's stdin. Returns the drained output (the caller publishes\n * it as terminal.pty.output.delta). Throws ChannelAUnsupportedError when the\n * backend has no writeStdin. */\n async ptyWrite(_req: PtyWriteRequest, execSessionId: number, data: string): Promise<string> {\n const write =\n this.session.writeStdinForProcessMutation?.bind(this.session) ??\n this.session.writeStdin?.bind(this.session);\n if (!write) {\n throw new ChannelAUnsupportedError(\"interactive terminal unsupported on this backend\");\n }\n const out = await write({\n sessionId: execSessionId,\n chars: data,\n yieldTimeMs: 250,\n });\n // The Modal exec surface reports a vanished exec-session as a NON-throwing\n // string (\"write_stdin failed: session not found: N\") that we used to stream\n // verbatim into the terminal. That happens when the persisted exec-session no\n // longer exists on the live box — historically the box-mismatch (resume_state\n // pointing at a rival box; fixed at the lease layer), or a genuine box\n // rollover after the PTY opened. Surface it as a typed CONFLICT so the route\n // returns 409 and the client cleanly RE-OPENS the PTY against the live box,\n // instead of writing a raw \"session not found: 1\" into the user's xterm.\n if (isExecSessionLostBanner(out, execSessionId)) {\n throw new ChannelAConflictError(\"pty session lost on the live box; reopen the terminal\");\n }\n return stripExecBanner(out);\n }\n\n /** Resize an open PTY (SIGWINCH via stty against the exec-session). The SDK has\n * no resize method; stty in the same tty session updates the geometry. */\n async ptyResize(req: PtyResizeRequest, execSessionId: number): Promise<void> {\n const write =\n this.session.writeStdinForProcessControl?.bind(this.session) ??\n this.session.writeStdin?.bind(this.session);\n if (!write) return;\n // Send a stty in-band on the same pty session.\n await write({\n sessionId: execSessionId,\n chars: `stty cols ${req.cols} rows ${req.rows}\\n`,\n yieldTimeMs: 50,\n });\n }\n\n /** Ask an open PTY to exit and return the exact provider banner. The routing\n * session settles durable process authority only when that banner proves this\n * locator exited or was lost; callers must keep metadata open otherwise. */\n async ptyClose(_req: PtyCloseRequest, execSessionId: number | null): Promise<string> {\n const write =\n this.session.writeStdinForProcessControl?.bind(this.session) ??\n this.session.writeStdin?.bind(this.session);\n if (execSessionId === null || !write) return \"\";\n return await write({ sessionId: execSessionId, chars: \"\u0004\", yieldTimeMs: 250 }); // EOF\n }\n\n // ──────────────────────────── helpers ──────────────────────────────────────\n\n /** The current FS revision (for the caller to persist/seed). */\n currentRevision(): number {\n return this.revision;\n }\n\n private joinRoot(rel: string): string {\n if (!this.workspaceRoot) return rel === \"\" ? \".\" : rel;\n return rel === \"\" ? this.workspaceRoot : `${this.workspaceRoot}/${rel}`;\n }\n\n /** Validate and enter an FS/Git directory in the same remote command that\n * performs the operation. This preserves confinement without adding a full\n * provider round-trip to every tree expansion or Git query. */\n private async runInConfinedDirectory(\n rel: string,\n args: ChannelAExecArgs,\n ): Promise<{\n stdout: string;\n stderr: string;\n exitCode: number | null;\n sessionId?: number;\n wallTimeSeconds: number;\n }> {\n const safe = assertSafeRelPathOrRoot(rel);\n const root = this.workspaceRoot || \".\";\n const abs = this.joinRoot(safe);\n const rejectLink = safe\n ? `test ! -L ${shellQuote(abs)} || { printf '__OPENGENI_FS_SYMLINK__'; exit 68; }`\n : \":\";\n const script = [\n `root=$(realpath -e -- ${shellQuote(root)}) || { printf '__OPENGENI_FS_NOT_FOUND__'; exit 66; }`,\n rejectLink,\n `target=$(realpath -e -- ${shellQuote(abs)}) || { printf '__OPENGENI_FS_NOT_FOUND__'; exit 66; }`,\n `case \"$target\" in \"$root\"|\"$root\"/*) ;; *) printf '__OPENGENI_FS_ESCAPE__'; exit 67 ;; esac`,\n `test -d \"$target\" || { printf '__OPENGENI_FS_NOT_FOUND__'; exit 66; }`,\n `cd -P -- \"$target\"`,\n `printf '__OPENGENI_FS_CONFINED_OK__\\\\n'`,\n args.cmd,\n ].join(\"; \");\n const successPrefix = \"__OPENGENI_FS_CONFINED_OK__\\n\";\n for (let attempt = 0; attempt < 2; attempt += 1) {\n let result: Awaited<ReturnType<SandboxChannelAService[\"run\"]>>;\n try {\n result = await this.run({\n ...args,\n cmd: internalBashCommand(script),\n workdir: undefined,\n });\n } catch (error) {\n if (error instanceof ChannelAUnsupportedError) throw error;\n if (attempt === 0) continue;\n throw new ChannelAUnavailableError(\n \"Workspace files are temporarily unavailable. Retry the operation.\",\n );\n }\n if (result.sessionId !== undefined) {\n throw new ChannelAUnavailableError(\n \"Workspace files are temporarily unavailable. Retry after the current file operation finishes.\",\n );\n }\n const successIndex = result.stdout.indexOf(successPrefix);\n if (successIndex >= 0) {\n return { ...result, stdout: result.stdout.slice(successIndex + successPrefix.length) };\n }\n if (result.stdout.includes(\"__OPENGENI_FS_ESCAPE__\") || result.exitCode === 67) {\n throw new ChannelAValidationError(`path resolves outside workspace: ${safe || \".\"}`);\n }\n if (result.stdout.includes(\"__OPENGENI_FS_SYMLINK__\") || result.exitCode === 68) {\n throw new ChannelAValidationError(`directory path must not be a symbolic link: ${safe}`);\n }\n if (result.stdout.includes(\"__OPENGENI_FS_NOT_FOUND__\") || result.exitCode === 66) {\n throw new ChannelANotFoundError(`directory path not found: ${safe || \".\"}`);\n }\n // Every operation using this helper is read-only. A completed result with\n // no trusted marker can be retried once, but is never downgraded into a\n // user-input error.\n if (attempt === 0) continue;\n }\n throw new ChannelAUnavailableError(\n \"Workspace files are temporarily unavailable. Retry the operation.\",\n );\n }\n\n private repoWorkdir(rel: string): string | undefined {\n const safe = assertSafeRelPathOrRoot(rel);\n const joined = this.joinRoot(safe);\n return joined === \".\" ? this.workspaceRoot || undefined : joined;\n }\n\n private terminalWorkdir(cwd: string): string | undefined {\n // Model-facing terminal tools may send the manifest-rooted virtual frame.\n // Preserve it for sessions like selfhosted whose own adapter maps it onto\n // the real machine working dir; repo-relative dock fs/git still use repoWorkdir.\n if (cwd === SELFHOSTED_VIRTUAL_ROOT || cwd.startsWith(`${SELFHOSTED_VIRTUAL_ROOT}/`)) {\n return cwd;\n }\n return this.repoWorkdir(cwd);\n }\n\n private async emitEvents(events: { type: SessionEventType; payload: unknown }[]): Promise<void> {\n if (!this.emit || events.length === 0) return;\n try {\n await this.emit(events);\n } catch {\n /* durable spine retries; not fatal */\n }\n }\n\n private async emitFsChanged(\n changes: FsChangedPayload[\"changes\"],\n source: FsChangedPayload[\"source\"],\n ): Promise<void> {\n const payload: FsChangedPayload = {\n changes,\n source,\n revision: this.revision,\n leaseEpoch: this.leaseEpoch,\n };\n await this.emitEvents([{ type: \"fs.changed\", payload }]);\n }\n\n /** Re-probe git after a mutation and emit git.changed (best-effort, used by the\n * worker agent-turn side after FS-mutating tools). */\n async emitGitChanged(repoPath: string, reason: GitChangedPayload[\"reason\"]): Promise<void> {\n try {\n const status = await this.gitStatus({ path: repoPath });\n const payload: GitChangedPayload = {\n head: status.head,\n dirty: status.files.length > 0,\n ahead: status.ahead,\n behind: status.behind,\n changedFileCount: status.files.length,\n reason,\n revision: this.revision,\n leaseEpoch: this.leaseEpoch,\n };\n await this.emitEvents([{ type: \"git.changed\", payload }]);\n } catch {\n // non-repo / git absent — no notification.\n }\n }\n}\n\n// ════════════════════════════ pure parsers/helpers ══════════════════════════\n\n// Strip the formatExecResponse banner (Chunk ID / Wall time / Process … / Output:)\n// — only used when exec() is absent and we fall back to execCommand's string.\nexport function stripExecBanner(raw: string): string {\n const marker = raw.indexOf(\"\\nOutput:\\n\");\n if (marker >= 0) return raw.slice(marker + \"\\nOutput:\\n\".length);\n if (raw.startsWith(\"Output:\\n\")) return raw.slice(\"Output:\\n\".length);\n return raw;\n}\n\n// Detect the provider's native-readFile workspace-escape rejection — a symlink\n// whose target resolves outside the sandbox root. Modal phrases it \"Sandbox path\n// failed remote validation: workspace escape: <target>\"; we match loosely so a\n// wording tweak still classifies it. The caller must preserve the rejection;\n// it must never fall back to a path that follows the escaping link.\nfunction isWorkspaceEscapeError(error: unknown): boolean {\n const msg = error instanceof Error ? error.message : String(error ?? \"\");\n const lower = msg.toLowerCase();\n return (\n lower.includes(\"workspace escape\") ||\n lower.includes(\"escapes the workspace\") ||\n lower.includes(\"outside workspace\") ||\n (lower.includes(\"remote validation\") && lower.includes(\"escape\"))\n );\n}\n\n/** Classify only provider errors that carry an explicit path-miss fact. Generic\n * 404s and \"not found\" text are unsafe here because they can describe the box or\n * session disappearing rather than the requested file. */\nfunction isDefinitePathNotFoundError(error: unknown): boolean {\n if (!error || typeof error !== \"object\") return false;\n const candidate = error as { code?: unknown; errno?: unknown; osNotFound?: unknown };\n return (\n candidate.osNotFound === true ||\n candidate.code === \"ENOENT\" ||\n candidate.errno === \"ENOENT\" ||\n candidate.errno === -2\n );\n}\n\nfunction sniffBinary(bytes: Buffer): boolean {\n const n = Math.min(bytes.byteLength, 8192);\n for (let i = 0; i < n; i++) if (bytes[i] === 0) return true;\n return false;\n}\n\nfunction addedLines(bytes: Buffer): GitDiffHunk[\"lines\"] {\n if (bytes.length === 0) return [];\n const lines = bytes.toString(\"utf8\").split(\"\\n\");\n if (lines.at(-1) === \"\") lines.pop();\n return lines.map((text, index) => ({\n type: \"add\",\n oldNo: null,\n newNo: index + 1,\n text,\n }));\n}\n\nfunction normalizeRelPath(p: string): string {\n const trimmed = (p ?? \"\").replace(/^\\/+/, \"\").replace(/\\/+$/, \"\");\n return trimmed;\n}\n\nfunction assertSafeRelPathOrRoot(p: string): string {\n const norm = normalizeRelPath(p);\n if (p.startsWith(\"/\")) throw new ChannelAValidationError(`absolute paths are not allowed: ${p}`);\n if (norm.split(\"/\").some((seg) => seg === \"..\")) {\n throw new ChannelAValidationError(`path traversal is not allowed: ${p}`);\n }\n return norm;\n}\n\n// Reject path traversal / absolute paths (case 4); the box normalizes against\n// the workspace root, so a leading slash or `..` is a 400.\nexport function assertSafeRelPath(p: string): string {\n const norm = assertSafeRelPathOrRoot(p);\n if (norm === \"\") throw new ChannelAValidationError(\"path is required\");\n return norm;\n}\n\nfunction shellQuote(s: string): string {\n return `'${s.replace(/'/g, `'\\\\''`)}'`;\n}\n\n/** Run control-plane-generated Bash without user/provider startup files. The\n * marker protocol is private control data; profile output must not corrupt it. */\nfunction internalBashCommand(script: string): string {\n return `env -u BASH_ENV bash --noprofile --norc -c ${shellQuote(script)}`;\n}\n\nfunction assertSafePruneDirectoryName(name: string): string {\n if (name.length > 255 || !/^[A-Za-z0-9._@+-]+$/.test(name) || name === \".\" || name === \"..\") {\n throw new ChannelAValidationError(`invalid directory prune name: ${JSON.stringify(name)}`);\n }\n return name;\n}\n\nfunction basename(p: string): string {\n const parts = p.split(\"/\").filter(Boolean);\n return parts.length ? parts[parts.length - 1]! : \"\";\n}\n\nfunction dirnameAbs(p: string): string {\n const idx = p.lastIndexOf(\"/\");\n return idx > 0 ? p.slice(0, idx) : \"\";\n}\n\nfunction dirnameRel(p: string, root: string): string {\n const idx = p.lastIndexOf(\"/\");\n if (idx < 0) return root;\n return p.slice(0, idx);\n}\n\nfunction stripDotSlash(rawPath: string, root: string): string {\n let p = rawPath.startsWith(\"./\") ? rawPath.slice(2) : rawPath;\n p = p.replace(/^\\/+/, \"\");\n // find run with workdir=root and findRoot=\".\" gives paths relative to root,\n // but if root is non-empty the relPath should still be workspace-relative.\n if (root && !p.startsWith(`${root}/`) && p !== root) {\n return root ? `${root}/${p}` : p;\n }\n return p;\n}\n\nfunction findTypeToNode(t: string): FsTreeNode[\"type\"] {\n if (t === \"d\") return \"dir\";\n if (t === \"f\") return \"file\";\n if (t === \"l\") return \"symlink\";\n return \"other\";\n}\n\nfunction safeInt(s: string | undefined): number | null {\n if (s === undefined) return null;\n const n = Number.parseInt(s, 10);\n return Number.isFinite(n) ? n : null;\n}\n\nfunction safeOctal(s: string | undefined): number | null {\n if (s === undefined) return null;\n const n = Number.parseInt(s, 8);\n return Number.isFinite(n) ? n : null;\n}\n\nfunction mtimeToMs(s: string | undefined): number | null {\n if (s === undefined) return null;\n const f = Number.parseFloat(s);\n return Number.isFinite(f) ? Math.round(f * 1000) : null;\n}\n\nfunction sortTree(node: FsTreeNode): void {\n if (!node.children) return;\n node.children.sort((a, b) => {\n if (a.type === \"dir\" && b.type !== \"dir\") return -1;\n if (a.type !== \"dir\" && b.type === \"dir\") return 1;\n return a.name.localeCompare(b.name);\n });\n for (const child of node.children) sortTree(child);\n}\n\nfunction isImagePath(p: string): boolean {\n return /\\.(png|jpe?g|gif|webp|bmp|ico|svg|tiff?)$/i.test(p);\n}\n\n// ── git status --porcelain=v2 --branch -z parser ────────────────────────────\nexport function parsePorcelainV2(z: string): Omit<GitStatusResponse, \"revision\"> {\n const records = z.split(NUL);\n let head: string | null = null;\n let upstream: string | null = null;\n let detached = false;\n let ahead = 0;\n let behind = 0;\n const files: GitFileStatus[] = [];\n for (let i = 0; i < records.length; i++) {\n const rec = records[i]!;\n if (rec === \"\") continue;\n if (rec.startsWith(\"# branch.head \")) {\n const v = rec.slice(\"# branch.head \".length);\n if (v === \"(detached)\") {\n detached = true;\n head = null;\n } else head = v;\n } else if (rec.startsWith(\"# branch.upstream \")) {\n upstream = rec.slice(\"# branch.upstream \".length);\n } else if (rec.startsWith(\"# branch.ab \")) {\n const m = rec.slice(\"# branch.ab \".length).match(/\\+(\\d+)\\s+-(\\d+)/);\n if (m) {\n ahead = Number(m[1]);\n behind = Number(m[2]);\n }\n } else if (rec.startsWith(\"1 \")) {\n // 1 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <path>\n const fields = rec.split(\" \");\n const xy = fields[1] ?? \"..\";\n const path = fields.slice(8).join(\" \");\n files.push(statusFromXY(xy, path, null));\n } else if (rec.startsWith(\"2 \")) {\n // 2 <XY> ... <Xscore> <path>\\0<origPath> — the origPath is the NEXT NUL rec\n const fields = rec.split(\" \");\n const xy = fields[1] ?? \"..\";\n const path = fields.slice(9).join(\" \");\n const oldPath = records[i + 1] ?? null;\n i++; // consume the origPath record\n files.push(statusFromXY(xy, path, oldPath));\n } else if (rec.startsWith(\"u \")) {\n const fields = rec.split(\" \");\n const path = fields.slice(10).join(\" \");\n files.push({\n path,\n oldPath: null,\n index: \"conflicted\",\n worktree: \"conflicted\",\n isConflicted: true,\n });\n } else if (rec.startsWith(\"? \")) {\n files.push({\n path: rec.slice(2),\n oldPath: null,\n index: null,\n worktree: \"untracked\",\n isConflicted: false,\n });\n } else if (rec.startsWith(\"! \")) {\n files.push({\n path: rec.slice(2),\n oldPath: null,\n index: null,\n worktree: \"ignored\",\n isConflicted: false,\n });\n }\n }\n return { isRepo: true, head, detached, upstream, ahead, behind, files };\n}\n\nfunction xyCode(c: string): GitFileStatusCode | null {\n switch (c) {\n case \"A\":\n return \"added\";\n case \"M\":\n return \"modified\";\n case \"D\":\n return \"deleted\";\n case \"R\":\n return \"renamed\";\n case \"C\":\n return \"copied\";\n case \"T\":\n return \"typechange\";\n case \"U\":\n return \"conflicted\";\n case \".\":\n return null;\n default:\n return null;\n }\n}\n\nfunction statusFromXY(xy: string, path: string, oldPath: string | null): GitFileStatus {\n const x = xy[0] ?? \".\";\n const y = xy[1] ?? \".\";\n return {\n path,\n oldPath,\n index: xyCode(x),\n worktree: xyCode(y),\n isConflicted: x === \"U\" || y === \"U\",\n };\n}\n\n// ── numstat -z parser (additions/deletions/binary + rename old\\0new) ─────────\nexport type NumstatEntry = {\n additions: number;\n deletions: number;\n binary: boolean;\n oldPath: string | null;\n newPath: string;\n};\nexport function parseNumstatZ(z: string): NumstatEntry[] {\n const fields = z.split(NUL);\n const out: NumstatEntry[] = [];\n let i = 0;\n while (i < fields.length) {\n const head = fields[i]!;\n if (head === \"\") {\n i++;\n continue;\n }\n // \"<add>\\t<del>\\t<path>\" OR for a rename \"<add>\\t<del>\\t\" then old\\0new follow.\n const m = head.match(/^(\\d+|-)\\t(\\d+|-)\\t(.*)$/s);\n if (!m) {\n i++;\n continue;\n }\n const addStr = m[1]!;\n const delStr = m[2]!;\n const pathPart = m[3]!;\n const binary = addStr === \"-\" && delStr === \"-\";\n if (pathPart === \"\") {\n // rename: the next two NUL fields are old, new\n const oldPath = fields[i + 1] ?? null;\n const newPath = fields[i + 2] ?? \"\";\n out.push({\n additions: binary ? 0 : Number(addStr),\n deletions: binary ? 0 : Number(delStr),\n binary,\n oldPath,\n newPath,\n });\n i += 3;\n } else {\n out.push({\n additions: binary ? 0 : Number(addStr),\n deletions: binary ? 0 : Number(delStr),\n binary,\n oldPath: null,\n newPath: pathPart,\n });\n i++;\n }\n }\n return out;\n}\n\n// ── unified-diff parser -> GitDiffHunk[] (the Pierre-diff shape) ─────────────\nexport function parseUnifiedPatch(patch: string): {\n hunks: GitDiffHunk[];\n status: GitFileStatusCode;\n} {\n const lines = patch.split(\"\\n\");\n const hunks: GitDiffHunk[] = [];\n let status: GitFileStatusCode = \"modified\";\n let current: GitDiffHunk | null = null;\n let oldNo = 0;\n let newNo = 0;\n for (const line of lines) {\n if (line.startsWith(\"new file mode\")) status = \"added\";\n else if (line.startsWith(\"deleted file mode\")) status = \"deleted\";\n else if (line.startsWith(\"rename from\") || line.startsWith(\"rename to\")) status = \"renamed\";\n if (line.startsWith(\"@@\")) {\n const m = line.match(/^@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@(.*)$/);\n if (m) {\n const oldStart = Number(m[1]);\n const oldLines = m[2] !== undefined ? Number(m[2]) : 1;\n const newStart = Number(m[3]);\n const newLines = m[4] !== undefined ? Number(m[4]) : 1;\n current = {\n oldStart,\n oldLines,\n newStart,\n newLines,\n header: (m[5] ?? \"\").trim(),\n lines: [],\n };\n hunks.push(current);\n oldNo = oldStart;\n newNo = newStart;\n }\n continue;\n }\n if (!current) continue;\n if (line.startsWith(\"\\\\\")) continue; // \"\\"\n const marker = line[0];\n const text = line.slice(1);\n if (marker === \"+\") {\n current.lines.push({ type: \"add\", oldNo: null, newNo, text });\n newNo++;\n } else if (marker === \"-\") {\n current.lines.push({ type: \"del\", oldNo, newNo: null, text });\n oldNo++;\n } else if (marker === \" \") {\n current.lines.push({ type: \"context\", oldNo, newNo, text });\n oldNo++;\n newNo++;\n }\n }\n return { hunks, status };\n}\n","// Selfhosted capability negotiation (M3, item 4).\n//\n// `negotiateSelfhostedCapabilities` resolves the selfhosted-specific cells from\n// (a) the M2 enrollment row (consent / display / status / lastSeenAt), and\n// (b) a LIVENESS PROBE (a `ControlRpc` Ping, mockable) — \"is there a responder\n// on the subject right now?\"\n// into the right `SessionCapabilities` cells with the selfhosted reasons:\n// - online → responder + consented: cells available.\n// - offline → no enrollment / revoked / no responder: agent_offline.\n// - reconnecting → a transient blip (a recent lastSeenAt but the probe\n// missed): agent_reconnecting.\n// - consent_required → enrolled but whole-machine / screen-control not acked:\n// consent_required on the desktop/computer-use cells.\n// - display_unavailable → online but the machine has no display (headless, no\n// Xvfb): the desktop/computer-use cells degrade with\n// display_unavailable.\n//\n// It REUSES `negotiateCapabilities` for the descriptor-shaped cells (so the\n// \"every cell present, degradation is a value\" rule and the FS/Terminal/Git\n// surface stay identical to Modal), then overlays the selfhosted liveness/consent\n// /display reasons. The base function stays pure + synchronous; this is the\n// selfhosted-aware entrypoint the API/worker call.\n\nimport type {\n CapabilityUnavailableReason,\n SandboxOs,\n SessionCapabilities,\n} from \"@opengeni/contracts\";\nimport { negotiateCapabilities, type NegotiationContext } from \"../select\";\nimport type { SelfhostedSession } from \"./session\";\n\n/**\n * The structural slice of the M2 `@opengeni/db` `EnrollmentRecord` the selfhosted\n * negotiation reads. Defined STRUCTURALLY (not imported from `@opengeni/db`) so\n * the agent-loop-free sandbox leaf does not couple to the DB package's graph —\n * the API/worker pass an `EnrollmentRecord`, which satisfies this shape. The\n * fields: `status` (active gates reachability), `exposure` +\n * `allowScreenControl` (whole-machine + screen-control consent),`hasDisplay`\n * (the display plane), `lastSeenAt` (the reconnecting-window disambiguator).\n */\nexport interface SelfhostedEnrollment {\n status: string;\n exposure: string;\n allowScreenControl: boolean;\n hasDisplay: boolean;\n lastSeenAt: string | null;\n /** An un-cleared clean going-offline marker (the machine announced a typed\n * GoingOffline). When set, the derivation reads the machine OFFLINE immediately,\n * regardless of a still-fresh `lastSeenAt`. NULL ⇒ no pending goodbye. */\n wentOfflineAt: string | null;\n /** The typed reason string of the pending goodbye (rides alongside\n * `wentOfflineAt`; NULL when there is no un-cleared marker). */\n wentOfflineReason: string | null;\n}\n\n/** The derived liveness state of a selfhosted machine (the online/offline/\n * reconnecting/consent/display matrix). */\nexport interface SelfhostedLivenessState {\n /** The dominant machine state. */\n state: \"online\" | \"reconnecting\" | \"offline\";\n /** Whole-machine + screen-control consent acknowledged (gates desktop input). */\n consented: boolean;\n /** A display (real or Xvfb) is present (gates the desktop pixel plane). */\n hasDisplay: boolean;\n}\n\n/**\n * The window after `lastSeenAt` within which a missed liveness probe is read as a\n * transient BLIP (`reconnecting`) rather than a hard `offline`. Mirrors the\n * resiliency model (§10.6: reconnecting after 1 missed window, offline after\n * ~30s). A probe miss with a lastSeenAt inside this window → reconnecting.\n */\nexport const SELFHOSTED_RECONNECT_WINDOW_MS = 30_000;\n\n/**\n * Derive the selfhosted liveness state from the enrollment row + a liveness probe\n * outcome. The probe is the authoritative \"is the agent answering NOW\" signal;\n * `lastSeenAt` disambiguates a probe-miss into reconnecting (recent) vs offline\n * (stale / never seen).\n *\n * - no enrollment / revoked → offline (the machine isn't enrolled).\n * - un-cleared clean goodbye → offline (an announced GoingOffline beats\n * last_seen aging AND a lingering probe).\n * - probe responded → online.\n * - probe missed, lastSeenAt recent → reconnecting (a transient blip).\n * - probe missed, lastSeenAt stale → offline.\n */\nexport function selfhostedLiveness(input: {\n enrollment: SelfhostedEnrollment | null;\n /** The ControlRpc Ping outcome: true iff a responder answered. */\n probeResponded: boolean;\n /** Override the clock (tests). */\n now?: Date;\n}): SelfhostedLivenessState {\n const { enrollment } = input;\n if (!enrollment || enrollment.status !== \"active\") {\n return { state: \"offline\", consented: false, hasDisplay: false };\n }\n const consented = enrollment.exposure === \"whole-machine\" && enrollment.allowScreenControl;\n const hasDisplay = enrollment.hasDisplay;\n // A CLEAN going-offline the machine announced takes precedence over BOTH\n // last_seen aging and a lingering probe: a machine that said \"I'm stopping\" must\n // read offline immediately (so no new work is routed at it) until a NEWER\n // liveness signal — a reconnect Hello or a fresher heartbeat — clears the marker\n // in the row. `status: \"revoked\"` above still trumps this (a revoked machine is\n // offline regardless). This is the #348 lease-waits-on-dead-detect fix.\n if (enrollment.wentOfflineAt) {\n return { state: \"offline\", consented, hasDisplay };\n }\n if (input.probeResponded) {\n return { state: \"online\", consented, hasDisplay };\n }\n // Probe missed → reconnecting if we saw it recently, else offline.\n const now = (input.now ?? new Date()).getTime();\n const lastSeen = enrollment.lastSeenAt ? new Date(enrollment.lastSeenAt).getTime() : null;\n if (lastSeen !== null && now - lastSeen <= SELFHOSTED_RECONNECT_WINDOW_MS) {\n return { state: \"reconnecting\", consented, hasDisplay };\n }\n return { state: \"offline\", consented, hasDisplay };\n}\n\nexport interface SelfhostedNegotiationInput {\n sessionId: string;\n os?: SandboxOs;\n leaseEpoch: number;\n /** The M2 enrollment row for the machine (null → never enrolled → offline). */\n enrollment: SelfhostedEnrollment | null;\n /** A live liveness probe — typically `session.ping()`. When a session is\n * provided this is called; otherwise pass `probeResponded` explicitly. */\n session?: Pick<SelfhostedSession, \"ping\">;\n /** Explicit probe outcome (when no session is given, e.g. a pure read). */\n probeResponded?: boolean;\n /** The deployment desktop/terminal/computer-use policy toggles (threaded\n * through to the base negotiation). */\n desktopEnabled?: boolean;\n terminalEnabled?: boolean;\n computerUseEnabled?: boolean;\n /** Whether the calling principal acknowledged the un-redacted desktop. */\n desktopAcknowledged?: boolean;\n shared?: boolean;\n sharedSessionIds?: string[];\n /** Override the clock (tests). */\n now?: Date;\n}\n\n/**\n * Negotiate the full `SessionCapabilities` document for a selfhosted machine,\n * with the online/offline/reconnecting/consent_required/display_unavailable cells\n * correctly decided. Async because it issues the liveness probe.\n */\nexport async function negotiateSelfhostedCapabilities(\n input: SelfhostedNegotiationInput,\n): Promise<SessionCapabilities> {\n const probeResponded =\n input.probeResponded ?? (input.session ? await input.session.ping() : false);\n const liveness = selfhostedLiveness({\n enrollment: input.enrollment,\n probeResponded,\n ...(input.now ? { now: input.now } : {}),\n });\n\n // The base context: map the machine state onto the lease `liveness` axis so the\n // descriptor-shaped cells (FS/Terminal/Git/Desktop) negotiate as on a warm box\n // when online, and a cold box when not reachable (no live tunnel). The\n // selfhosted overlay below then stamps the selfhosted-specific reasons.\n const baseLiveness: NegotiationContext[\"liveness\"] =\n liveness.state === \"online\" ? \"warm\" : \"cold\";\n const base: NegotiationContext = {\n sessionId: input.sessionId,\n backend: \"selfhosted\",\n os: input.os ?? \"linux\",\n liveness: baseLiveness,\n leaseEpoch: input.leaseEpoch,\n desktopEnabled: input.desktopEnabled ?? true,\n terminalEnabled: input.terminalEnabled ?? true,\n computerUseEnabled: input.computerUseEnabled ?? true,\n ...(input.desktopAcknowledged !== undefined\n ? { desktopAcknowledged: input.desktopAcknowledged }\n : {}),\n ...(input.shared !== undefined ? { shared: input.shared } : {}),\n ...(input.sharedSessionIds !== undefined ? { sharedSessionIds: input.sharedSessionIds } : {}),\n ...(input.now ? { now: input.now } : {}),\n };\n const caps = negotiateCapabilities(base);\n\n // ── Overlay the selfhosted liveness/consent/display reasons ────────────────\n\n // When the machine is not online, the Channel-A surface (FS/Terminal/Git) and\n // the desktop plane cannot be reached — stamp the machine-liveness reason. This\n // is the dominant degrade (like os_unsupported): an offline/reconnecting agent\n // knocks out every reachable capability with the single coherent reason.\n if (liveness.state !== \"online\") {\n const reason: CapabilityUnavailableReason =\n liveness.state === \"offline\" ? \"agent_offline\" : \"agent_reconnecting\";\n return {\n ...caps,\n FileSystem: { ...caps.FileSystem, available: false, readOnly: true, reason },\n Terminal: {\n ...caps.Terminal,\n transport: null,\n url: null,\n token: null,\n expiresAt: null,\n reason,\n },\n Git: { ...caps.Git, available: false, reason },\n DesktopStream: {\n ...caps.DesktopStream,\n transport: null,\n client: null,\n mode: \"read-only\",\n url: null,\n token: null,\n expiresAt: null,\n requiresAcknowledgment: false,\n acknowledged: false,\n shared: false,\n sharedSessionIds: [],\n reason,\n },\n Recording: { ...caps.Recording, available: false, modes: [], codecs: [], reason },\n ComputerUse: { ...caps.ComputerUse, available: false, reason },\n };\n }\n\n // Online: FS/Terminal/Git stay as the base negotiated them (the machine is\n // reachable). The desktop plane splits VIEW from CONTROL:\n // - VIEW (a read-only DesktopStream, Recording) requires a DISPLAY only. The\n // agent already holds whole-machine shell exec (it can `screencapture` the\n // screen itself), so passive viewing is within the exposure the user already\n // consented to; a missing display (headless, no Xvfb / no macOS Screen\n // Recording grant) is the only blocker.\n // - CONTROL — driving input (ComputerUse) or an INTERACTIVE stream —\n // additionally requires the explicit allowScreenControl consent (`consented`).\n // Precedence: a headless machine blocks everything (display_unavailable); a\n // displayed-but-unconsented machine can be VIEWED (read-only) + RECORDED but not\n // CONTROLLED (consent_required). (If the base already degraded a cell for a\n // policy reason — desktop disabled / no stream-token secret — that base reason\n // wins; we only stamp a selfhosted reason on a cell the base left AVAILABLE.)\n if (!liveness.hasDisplay) {\n const reason: CapabilityUnavailableReason = \"display_unavailable\";\n return {\n ...caps,\n DesktopStream:\n caps.DesktopStream.transport !== null\n ? {\n ...caps.DesktopStream,\n transport: null,\n client: null,\n mode: \"read-only\",\n url: null,\n token: null,\n expiresAt: null,\n requiresAcknowledgment: false,\n acknowledged: false,\n shared: false,\n sharedSessionIds: [],\n reason,\n }\n : caps.DesktopStream,\n Recording: caps.Recording.available\n ? { ...caps.Recording, available: false, modes: [], codecs: [], reason }\n : caps.Recording,\n ComputerUse: caps.ComputerUse.available\n ? { ...caps.ComputerUse, available: false, reason }\n : caps.ComputerUse,\n };\n }\n\n if (!liveness.consented) {\n // Displayed but no screen-CONTROL consent: VIEW (read-only) + Recording stay\n // available; only CONTROL (input) is withheld. Force the stream to read-only\n // so no input is forwarded even if the base offered an interactive mode.\n return {\n ...caps,\n DesktopStream:\n caps.DesktopStream.transport !== null\n ? { ...caps.DesktopStream, mode: \"read-only\" }\n : caps.DesktopStream,\n ComputerUse: caps.ComputerUse.available\n ? { ...caps.ComputerUse, available: false, reason: \"consent_required\" }\n : caps.ComputerUse,\n };\n }\n\n // Fully online + displayed + consented: the base negotiation already produced\n // the correct available cells (desktop vnc-ws, computer-use available, etc.).\n return caps;\n}\n","// `MockAgentResponder` — an in-process `ControlRpc` test double standing in for\n// a real enrolled agent over NATS (the live NATS transport is M4). It answers\n// the op table (ping / exec / fs.read / fs.write / fs.list / fs.stat / git /\n// metrics / desktopEnsure) against an in-memory virtual filesystem + a pluggable\n// exec handler, so the `SelfhostedSession` surface and the mocked-NATS\n// integration tests run with zero broker.\n//\n// It is shipped from the runtime package (a testing util, not test-only-private)\n// because the API/worker integration suites (M4+) reuse it to drive\n// `withChannelA`/viewer/swap end-to-end without a real machine.\n\nimport {\n AgentError,\n ControlRequest,\n ControlResponse,\n ErrorCode,\n FsEntryKind,\n type ExecRequest,\n type ExecResponse,\n type FsListResponse,\n type FsReadResponse,\n type FsStatResponse,\n type FsWriteResponse,\n} from \"@opengeni/agent-proto\";\nimport type { ControlRpc } from \"./control-rpc\";\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\n\n/** A pluggable exec handler — given an ExecRequest, return an ExecResponse (or\n * throw to surface a synthesized error). Defaults to a trivial echo. */\nexport type MockExecHandler = (req: ExecRequest) => ExecResponse | Promise<ExecResponse>;\n\nexport interface MockAgentResponderOptions {\n /** Whether a responder exists at all. When false EVERY request yields an\n * AGENT_OFFLINE error (the \"machine is offline\" condition) — used to drive the\n * agent_offline capability + the isProviderSandboxNotFoundError test. */\n online?: boolean;\n /** Whether the agent has acknowledged whole-machine / screen-control consent.\n * When false, an op gated on consent yields CONSENT_REQUIRED. Defaults true. */\n consented?: boolean;\n /** Force the agent into a draining posture (every op → DRAINING). */\n draining?: boolean;\n /** Seed files (path → string|Uint8Array) into the virtual filesystem. */\n files?: Record<string, string | Uint8Array>;\n /** A custom exec handler; defaults to an echo of argv. */\n exec?: MockExecHandler;\n /** The hostname the mock reports (so PTY/exec `$HOSTNAME`-style asserts work). */\n hostname?: string;\n}\n\n/**\n * An in-process `ControlRpc` answering the agent op table against an in-memory\n * virtual filesystem. Drive a `SelfhostedSession` with this to test exec /\n * readFile / writeFile / list / stat round-trips without any NATS.\n */\nexport class MockAgentResponder implements ControlRpc {\n private online: boolean;\n private readonly consented: boolean;\n private readonly draining: boolean;\n private readonly files = new Map<string, Uint8Array>();\n private readonly execHandler: MockExecHandler;\n readonly hostname: string;\n\n /** Every request seen, for assertion (subject + decoded ControlRequest). */\n readonly requests: Array<{ subject: string; req: ControlRequest }> = [];\n\n constructor(opts: MockAgentResponderOptions = {}) {\n this.online = opts.online ?? true;\n this.consented = opts.consented ?? true;\n this.draining = opts.draining ?? false;\n this.hostname = opts.hostname ?? \"mock-machine\";\n this.execHandler = opts.exec ?? ((req) => defaultEcho(req, this.hostname));\n for (const [path, content] of Object.entries(opts.files ?? {})) {\n this.files.set(\n normalize(path),\n typeof content === \"string\" ? encoder.encode(content) : content,\n );\n }\n }\n\n /** Flip the responder offline mid-test (a deliberate stop / blip). */\n setOnline(online: boolean): void {\n this.online = online;\n }\n\n /** Read a file the session wrote (test assertion helper). */\n fileText(path: string): string | undefined {\n const bytes = this.files.get(normalize(path));\n return bytes ? decoder.decode(bytes) : undefined;\n }\n\n async request(\n subject: string,\n req: ControlRequest,\n _opts: { timeoutMs: number },\n ): Promise<ControlResponse> {\n this.requests.push({ subject, req });\n if (!this.online) {\n return errorResponse(\n req.requestId,\n ErrorCode.ERROR_CODE_AGENT_OFFLINE,\n \"the enrolled agent is offline\",\n false,\n );\n }\n if (this.draining) {\n return errorResponse(\n req.requestId,\n ErrorCode.ERROR_CODE_DRAINING,\n \"the agent is draining\",\n true,\n );\n }\n const op = req.op;\n if (!op) {\n return errorResponse(req.requestId, ErrorCode.ERROR_CODE_PROTOCOL, \"empty op\", false);\n }\n switch (op.$case) {\n case \"ping\":\n return ok(req.requestId, {\n $case: \"ping\",\n ping: { nonce: op.ping.nonce, agentMonotonicMs: \"0\" },\n });\n case \"exec\": {\n const res = await this.execHandler(op.exec);\n return ok(req.requestId, { $case: \"exec\", exec: res });\n }\n case \"fsRead\": {\n const bytes = this.files.get(normalize(op.fsRead.path));\n if (!bytes) {\n return errorResponse(\n req.requestId,\n ErrorCode.ERROR_CODE_NOT_FOUND,\n `no such file: ${op.fsRead.path}`,\n false,\n );\n }\n const res: FsReadResponse = { content: bytes, totalSize: String(bytes.length) };\n return ok(req.requestId, { $case: \"fsRead\", fsRead: res });\n }\n case \"fsWrite\": {\n const path = normalize(op.fsWrite.path);\n const next = op.fsWrite.append\n ? concat(this.files.get(path) ?? new Uint8Array(0), op.fsWrite.content)\n : op.fsWrite.content;\n this.files.set(path, next);\n const res: FsWriteResponse = { bytesWritten: String(op.fsWrite.content.length) };\n return ok(req.requestId, { $case: \"fsWrite\", fsWrite: res });\n }\n case \"fsList\": {\n const prefix = normalize(op.fsList.path).replace(/\\/?$/, \"/\");\n const res: FsListResponse = {\n entries: [...this.files.keys()]\n .filter((p) => p.startsWith(prefix))\n .map((p) => {\n const bytes = this.files.get(p)!;\n const rel = p.slice(prefix.length);\n return {\n name: rel.split(\"/\").pop() ?? rel,\n path: rel,\n kind: FsEntryKind.FS_ENTRY_KIND_FILE,\n size: String(bytes.length),\n modifiedMs: \"0\",\n mode: 0o644,\n };\n }),\n };\n return ok(req.requestId, { $case: \"fsList\", fsList: res });\n }\n case \"fsStat\": {\n const bytes = this.files.get(normalize(op.fsStat.path));\n const res: FsStatResponse = bytes\n ? {\n exists: true,\n entry: {\n name: normalize(op.fsStat.path).split(\"/\").pop() ?? \"\",\n path: op.fsStat.path,\n kind: FsEntryKind.FS_ENTRY_KIND_FILE,\n size: String(bytes.length),\n modifiedMs: \"0\",\n mode: 0o644,\n },\n }\n : { exists: false, entry: undefined };\n return ok(req.requestId, { $case: \"fsStat\", fsStat: res });\n }\n case \"desktopEnsure\": {\n // The desktop STREAM (view) is DISPLAY-gated, not consent-gated: the real\n // agent registers the channel + captures frames regardless of screen-control\n // consent (`register_desktop` in hub.rs sets `allow_input` from consent and\n // the pump captures anyway) — only INPUT injection is gated. This stub has a\n // (mock) display and does not model input injection, so desktopEnsure always\n // succeeds; `consented` only affects the computer-use INPUT plane.\n return ok(req.requestId, {\n $case: \"desktopEnsure\",\n desktopEnsure: {\n channel: {\n channelId: \"mock-desktop\",\n workspaceId: \"\",\n agentId: \"\",\n kind: 1,\n port: 6080,\n },\n display: { id: \":99\", width: 1024, height: 768, virtual: true },\n },\n });\n }\n case \"ptyOpen\": {\n // The PTY plane is display-INDEPENDENT and has NO consent gate (unlike\n // desktopEnsure) — a terminal works on a headless machine. Returns a PTY\n // StreamChannel on the 7681 port.\n return ok(req.requestId, {\n $case: \"ptyOpen\",\n ptyOpen: {\n ptyId: \"mock-pty\",\n channel: { channelId: \"mock-pty\", workspaceId: \"\", agentId: \"\", kind: 1, port: 7681 },\n },\n });\n }\n default:\n return errorResponse(\n req.requestId,\n ErrorCode.ERROR_CODE_UNSUPPORTED,\n `mock does not implement ${op.$case}`,\n false,\n );\n }\n }\n}\n\nfunction defaultEcho(req: ExecRequest, hostname: string): ExecResponse {\n // A trivial deterministic exec: echo the joined argv; if argv mentions\n // HOSTNAME, emit the mock hostname so terminal-style asserts work.\n const joined = req.command.join(\" \");\n const stdout = /hostname|HOSTNAME/.test(joined) ? hostname : joined;\n return {\n exitCode: 0,\n stdout: encoder.encode(`${stdout}\\n`),\n stderr: new Uint8Array(0),\n timedOut: false,\n durationMs: \"1\",\n };\n}\n\nfunction ok(requestId: string, result: NonNullable<ControlResponse[\"result\"]>): ControlResponse {\n return { requestId, error: undefined, result };\n}\n\nfunction errorResponse(\n requestId: string,\n code: ErrorCode,\n message: string,\n retryable: boolean,\n): ControlResponse {\n const error: AgentError = { code, message, retryable, detail: {} };\n return { requestId, error, result: undefined };\n}\n\nfunction normalize(path: string): string {\n // Collapse to a leading-slash absolute form for stable keys.\n const trimmed = path.replace(/\\/+$/, \"\");\n return trimmed.startsWith(\"/\") ? trimmed : `/${trimmed}`;\n}\n\nfunction concat(a: Uint8Array, b: Uint8Array): Uint8Array {\n const out = new Uint8Array(a.length + b.length);\n out.set(a, 0);\n out.set(b, a.length);\n return out;\n}\n","// `makeActiveBackendResolver` — builds the `resolveActiveBackend` closure the\n// `RoutingSandboxSession` calls to turn an active pointer into a live backend\n// session (M7). It is the heterogeneous-dispatch core: a pointer's target is\n// EITHER the session's own group sandbox (the default, `activeSandboxId === null`)\n// OR a first-class named sandbox the session swapped to — a sibling Modal box or\n// a selfhosted machine.\n//\n// This lives in the agent-loop-free leaf and depends ONLY on injected closures +\n// the selfhosted session builder, so the API/worker wire it to the real DB\n// (`getSandbox`/`getEnrollment`/`readActiveSandbox`) + the live NATS ControlRpc\n// without coupling the leaf to `@opengeni/db`.\n//\n// The DEFAULT target (the group box) is supplied as an already-established\n// session (the turn box `resumeBoxForTurn` produced, or the Channel-A established\n// handle) — the proxy does NOT re-establish it (the lease owns its lifecycle). A\n// NON-DEFAULT selfhosted target builds a `SelfhostedSession` bound to the target's\n// enrollment agentId, fenced under the swap's active_epoch. A non-default MODAL\n// target is established via the injected `establishModalTarget` resolver (the\n// API/worker pass a resume-by-id closure for the sibling box's lease).\n\nimport { buildSelfhostedBackendSession, type SelfhostedRelayConfig } from \"../selfhosted/session\";\nimport type { SelfhostedOpObserver } from \"../selfhosted/op-observer\";\nimport type { ControlRpc } from \"../selfhosted/control-rpc\";\nimport type {\n ActivePointer,\n RoutableBackendSession,\n ResolvedActiveBackend,\n} from \"./routing-session\";\n\n/** The structural slice of a first-class sandbox the resolver reads (mirror of\n * `@opengeni/db`'s `SandboxRecord`; structural so the leaf does not import DB). */\nexport interface RoutableSandbox {\n id: string;\n kind: \"modal\" | \"selfhosted\" | string;\n name: string;\n /** For a selfhosted sandbox this is its enrollment id (== the agent id the\n * control-plane subject `agent.<ws>.<id>.rpc` addresses). Null for modal. */\n enrollmentId: string | null;\n}\n\nexport interface ActiveBackendResolverDeps {\n /** The workspace the session belongs to (the control-plane subject scope). */\n workspaceId: string;\n /** The session's own group sandbox session — the DEFAULT target\n * (`activeSandboxId === null`). Already established (lease-owned); the proxy\n * never re-establishes it. */\n defaultBackend: RoutableBackendSession;\n /** A label for the default backend (its backend id: \"modal\"/\"selfhosted\"/…). */\n defaultKind: string;\n /**\n * Re-resolve the session's HOME backend after the route cache is fenced.\n *\n * The normal path returns `defaultBackend` (the turn's already-established\n * handle), but an API-side same-target repair can rematerialize that lease\n * while a worker turn is still alive. Such a repair advances the route epoch\n * without changing the null pointer; callers that can resume the current\n * lease-owned identity may provide this callback so the next epoch does not\n * keep dispatching to the dead pre-repair object. This callback must never\n * create a provider or replay an operation.\n */\n resolveDefaultBackend?: (pointer: ActivePointer) => Promise<ResolvedActiveBackend>;\n /** Look up a first-class sandbox by id (the swap target). Returns null when the\n * id is unknown or not in this workspace (the caller 409s the swap). */\n getSandbox(sandboxId: string): Promise<RoutableSandbox | null>;\n /** Build a live `ControlRpc` for the selfhosted control plane (the request-\n * scoped NATS connection). Returns a ControlRpc whose offline/timeout maps to\n * agent_offline/agent_reconnecting (never a NotFound). */\n controlRpcFactory(): ControlRpc;\n /** The relay-URL shape config for selfhosted stream endpoints. */\n relay: SelfhostedRelayConfig;\n /** Establish (resume-by-id) a NON-DEFAULT modal target's box session for a swap.\n * Supplied by the API/worker (a closure over the sibling sandbox's lease). When\n * absent, a modal swap target surfaces as unsupported (the caller validated\n * liveness, so this is the \"modal swap not wired in this context\" guard). */\n establishModalTarget?: (sandbox: RoutableSandbox) => Promise<RoutableBackendSession>;\n /** The selfhosted CONTROL-op timeout (ping/fs/desktop/pty) for a swap/pin target.\n * Absent ⇒ the session's 30s default. */\n selfhostedTimeoutMs?: number;\n /** The selfhosted EXEC process deadline for a swap/pin target, distinct from the\n * control timeout (a swapped-to machine runs real commands too). Absent ⇒ falls\n * back to the control timeout, as in the session leaf. */\n selfhostedExecTimeoutMs?: number;\n /** The per-op observer threaded into a selfhosted swap/pin target (out-of-band\n * telemetry — metrics + machine.* events). Absent ⇒ no-op. */\n selfhostedOnOp?: SelfhostedOpObserver;\n /**\n * The run's declared sandbox environment — the SAME `Record<string,string>` the\n * worker turn threads into the agent's TARGET manifest (and into the group box at\n * create). Threaded into a selfhosted swap target's session so its\n * `state.manifest.environment` EQUALS the turn's, making the SDK's per-turn\n * provided-session manifest-env delta empty (validateNoEnvironmentDelta).\n * WITHOUT this a pin-to-vm turn throws \"Live sandbox sessions cannot change\n * manifest environment variables\". Omitted → `{}` (the test/negotiation path).\n */\n environment?: Record<string, string>;\n /**\n * A pre-established selfhosted session to PIN for the STEADY-STATE machine\n * pointer (the worker turn's machine-primary path, Stage D). When the pointer\n * targets THIS sandbox at THIS epoch, the resolver returns this SAME instance\n * instead of building a fresh `SelfhostedSession`. This is the instance-identity\n * pin: the SDK reads/writes `state.manifest` at turn START via the proxy's `state`\n * getter (which reads the default/last-resolved backend's state) and then reads it\n * per op via this resolver — those MUST land on ONE SelfhostedSession/manifest, or\n * a turn-start manifest write is invisible to the per-op reads (two-instance\n * divergence). A swap AWAY (a different sandbox id, or the same id at a moved epoch)\n * falls through to a fresh build under the new epoch. Omitted for the API/live-swap\n * path (which always builds fresh — it has no pre-established turn session).\n */\n pinnedSelfhosted?: { sandboxId: string; epoch: number; session: RoutableBackendSession };\n /**\n * Whether `defaultBackend` IS the session's home box — i.e. whether the null pointer\n * (== home) may resolve to it. Defaults to TRUE (omitted): a genuine machine-HOME turn\n * (home IS the machine) and a Modal-home turn established on its group box both pass/omit\n * true, so null resolves to `defaultBackend` as before. Set explicitly FALSE only for a\n * machine-primary turn of a Modal-HOME session (pinned to a machine, group box never\n * established this turn): the null pointer then has nothing to resolve to THIS turn, so\n * rather than silently keep serving the pinned machine as if the detach never happened,\n * the null branch throws a typed `home_unavailable_this_turn` error — the detach's pointer\n * commit stands and takes effect on the NEXT turn, which starts null and establishes the\n * home box normally. Lazily establishing the home box mid-turn on such a clear is a\n * deferred follow-up (issue #341); until then this makes the gap fail typed-and-specific,\n * never silent.\n */\n defaultIsHome?: boolean;\n}\n\n/** Why a persisted pointer / swap target cannot be turned into a live backend. A\n * typed discriminant so callers (turn-start reconcile, the swap tool, future\n * reports) can distinguish a stale pointer from an unaddressable enrollment from a\n * backend the turn context simply cannot establish — instead of string-matching\n * one opaque message (issue #341: \"typed diagnostics that distinguish stale\n * pointer, offline enrollment, unsupported backend context, transient failure\").\n * - `stale_pointer` — the pointed-at sandbox row is gone (deleted/orphaned).\n * - `offline_enrollment` — a selfhosted target carries no enrollment/agent id to address.\n * - `unsupported_backend_context` — a target no turn routing context can establish\n * (a non-group Modal sibling; an unknown kind).\n * - `transient_establishment` — a momentary establish failure worth a retry (reserved;\n * control-plane timeouts surface as their own typed error).\n * - `home_unavailable_this_turn` — the pointer was cleared to the session default (home)\n * mid-turn, but this turn started pinned to a machine and\n * never established the home box, so null has nothing to\n * resolve to THIS turn (the detach takes effect next turn). */\nexport type BackendUnresolvableCode =\n | \"stale_pointer\"\n | \"offline_enrollment\"\n | \"unsupported_backend_context\"\n | \"transient_establishment\"\n | \"home_unavailable_this_turn\";\n\n/** Thrown when a swap target cannot be resolved (unknown sandbox, or a modal\n * target with no establisher in this context). The caller maps it to a 409.\n * Carries a typed {@link BackendUnresolvableCode} in addition to the message. */\nexport class ActiveBackendUnresolvableError extends Error {\n readonly name = \"ActiveBackendUnresolvableError\";\n readonly code: BackendUnresolvableCode;\n constructor(code: BackendUnresolvableCode, message: string) {\n super(message);\n this.code = code;\n }\n}\n\n/** The outcome of {@link swapTargetEstablishability}. */\nexport type SwapTargetEstablishability =\n | { ok: true }\n | { ok: false; code: BackendUnresolvableCode; reason: string };\n\n/**\n * THE SINGLE SOURCE OF TRUTH for \"can a turn's routing context ESTABLISH this swap\n * target?\" — shared by swap/seed ADMISSION (`fleet.resolveTarget`, before the CAS\n * pointer commit) and turn-time ESTABLISHMENT (this resolver + `wrapTurnBoxWithRouting`).\n * Admission MUST reject any target this predicate calls unestablishable, so the\n * pointer is never committed to a backend no turn can resume (issue #341 Shape 1:\n * a Modal-sibling swap was admitted + epoch-bumped, then every following op\n * stranded because no context wires an establisher for it).\n *\n * - the session's OWN group box (`isSessionGroup`) is the null/home target and is\n * always establishable (it IS the default backend);\n * - a `selfhosted` machine target is establishable (`buildSelfhostedBackendSession`);\n * admission's separate liveness probe — not this predicate — gates online-ness;\n * - a NON-group `modal` target is NOT establishable: no turn context wires\n * `establishModalTarget` (cross-group Modal resume-by-id is a future, billing-\n * touching feature — sandbox-routing.ts). Wiring that establisher is the ONE\n * toggle that flips this branch; keep admission and the resolver in lockstep.\n */\nexport function swapTargetEstablishability(target: {\n kind: string;\n isSessionGroup: boolean;\n}): SwapTargetEstablishability {\n if (target.isSessionGroup) {\n return { ok: true };\n }\n if (target.kind === \"selfhosted\") {\n return { ok: true };\n }\n if (target.kind === \"modal\") {\n return {\n ok: false,\n code: \"unsupported_backend_context\",\n reason:\n \"a Modal sandbox other than this session's own box cannot be established by a turn yet; swap back to the session default or attach a Connected Machine\",\n };\n }\n return {\n ok: false,\n code: \"unsupported_backend_context\",\n reason: `a sandbox of kind \"${target.kind}\" cannot be established by a turn`,\n };\n}\n\n/**\n * Build the `resolveActiveBackend(pointer)` closure for a `RoutingSandboxSession`.\n * The returned closure is re-invoked by the proxy whenever the active_epoch moves\n * (the per-epoch cache miss), so it must be cheap-and-correct for the steady-state\n * (default pointer → the already-established group box) and build a fresh backend\n * for a swap target.\n *\n * - `activeSandboxId === null` → the default group backend (no re-establish).\n * - a selfhosted target → a `SelfhostedSession` bound to the enrollment agentId,\n * fenced under `pointer.activeEpoch` (echoed on every ControlRequest so the\n * agent can reject a stale op with ERROR_CODE_FENCED — the swap-race fence).\n * - a modal target → `establishModalTarget` (the resume-by-id closure), else\n * unresolvable.\n */\nexport function makeActiveBackendResolver(\n deps: ActiveBackendResolverDeps,\n): (pointer: ActivePointer) => Promise<ResolvedActiveBackend> {\n return async (pointer: ActivePointer): Promise<ResolvedActiveBackend> => {\n // NULL == the session's HOME backend (issue #341 invariant 1). `defaultBackend`\n // is the already-established home the wiring handed us — the Modal group box for a\n // Modal-home turn, or the machine itself for a machine-home turn. It is NEVER a\n // swap target's SelfhostedSession: a clear-to-null must re-land on the home, never\n // keep serving the machine a prior op swapped to. (The proxy caches by the FULL\n // pointer tuple, so a clear-to-null — epoch-bumped OR a same-epoch FK null —\n // invalidates the cached machine and re-enters this branch.) The lease owns the\n // home box lifecycle; the proxy does not re-establish it.\n if (pointer.activeSandboxId === null) {\n // A machine-pinned turn (Modal-home session pinned to a machine) never\n // established its home box, so a mid-turn clear-to-null has no home to resolve\n // THIS turn. Fail typed-and-specific — the detach was accepted and its pointer\n // commit STANDS, taking effect on the next turn (which starts null and\n // establishes the home box) — instead of silently serving the pinned machine as\n // if the clear never happened. Only an EXPLICIT `false` throws; omitted (the\n // common path) resolves to the home default as before. (Lazily establishing the\n // home box mid-turn on such a clear is a deferred follow-up; issue #341.)\n if (deps.defaultIsHome === false) {\n throw new ActiveBackendUnresolvableError(\n \"home_unavailable_this_turn\",\n \"the active sandbox was detached to the session default (home), but this turn started pinned to a machine and established no home box; the detach is accepted and takes effect on the next turn — this turn has no active home box\",\n );\n }\n if (deps.resolveDefaultBackend) {\n return await deps.resolveDefaultBackend(pointer);\n }\n return { session: deps.defaultBackend, sandboxId: null, kind: deps.defaultKind };\n }\n\n // INSTANCE PIN (Stage D machine-primary): the steady-state machine pointer\n // returns the pre-established turn session BY REFERENCE — never a fresh build —\n // so the turn-start manifest write + the per-op reads land on ONE\n // SelfhostedSession/manifest. Matched on BOTH the sandbox id AND the epoch: a\n // swap away (different id) or a swap-back (same id, higher epoch) falls through\n // to a fresh build fenced under the CURRENT epoch (the stale pinned instance is\n // fenced at the old epoch and must not be reused).\n if (\n deps.pinnedSelfhosted &&\n pointer.activeSandboxId === deps.pinnedSelfhosted.sandboxId &&\n pointer.activeEpoch === deps.pinnedSelfhosted.epoch\n ) {\n return {\n session: deps.pinnedSelfhosted.session,\n sandboxId: pointer.activeSandboxId,\n kind: \"selfhosted\",\n };\n }\n\n const sandbox = await deps.getSandbox(pointer.activeSandboxId);\n if (!sandbox) {\n throw new ActiveBackendUnresolvableError(\n \"stale_pointer\",\n `active sandbox ${pointer.activeSandboxId} not found in workspace ${deps.workspaceId}`,\n );\n }\n\n if (sandbox.kind === \"selfhosted\") {\n if (!sandbox.enrollmentId) {\n throw new ActiveBackendUnresolvableError(\n \"offline_enrollment\",\n `selfhosted sandbox ${sandbox.id} has no enrollment (agent id) to address`,\n );\n }\n // Build a request-scoped selfhosted client bound to the target's workspace +\n // enrollment agentId, fenced under the swap's active_epoch. The agent echoes\n // the epoch and rejects a stale op with ERROR_CODE_FENCED → the proxy\n // re-resolves + retries against the new active sandbox. The SAME factory the\n // worker turn's machine-primary establish branch uses (one build shape).\n const { session } = await buildSelfhostedBackendSession({\n workspaceId: deps.workspaceId,\n relay: deps.relay,\n controlRpcFactory: deps.controlRpcFactory,\n agentId: sandbox.enrollmentId,\n epoch: pointer.activeEpoch,\n ...(deps.selfhostedTimeoutMs !== undefined ? { timeoutMs: deps.selfhostedTimeoutMs } : {}),\n ...(deps.selfhostedExecTimeoutMs !== undefined\n ? { execTimeoutMs: deps.selfhostedExecTimeoutMs }\n : {}),\n ...(deps.selfhostedOnOp !== undefined ? { onOp: deps.selfhostedOnOp } : {}),\n // The turn's declared environment → the session's manifest.environment, so\n // the SDK's per-turn manifest-env delta is empty (no \"cannot change manifest\n // environment variables\" throw on a pin-to-vm turn).\n ...(deps.environment !== undefined ? { environment: deps.environment } : {}),\n // The session's working directory (per-session pointer) → the path/cwd base\n // for this selfhosted backend. Absent/empty ⇒ the default workspace_root.\n ...(pointer.workingDir ? { workingDir: pointer.workingDir } : {}),\n });\n return {\n session: session as RoutableBackendSession,\n sandboxId: sandbox.id,\n kind: \"selfhosted\",\n };\n }\n\n if (sandbox.kind === \"modal\") {\n if (!deps.establishModalTarget) {\n throw new ActiveBackendUnresolvableError(\n \"unsupported_backend_context\",\n `modal swap target ${sandbox.id} cannot be established in this context (no establisher wired)`,\n );\n }\n const session = await deps.establishModalTarget(sandbox);\n return { session, sandboxId: sandbox.id, kind: \"modal\" };\n }\n\n throw new ActiveBackendUnresolvableError(\n \"unsupported_backend_context\",\n `unsupported swap target kind \"${sandbox.kind}\" for sandbox ${sandbox.id}`,\n );\n };\n}\n"],"mappings":"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","names":["DESKTOP_STREAM_PORT","TERMINAL_STREAM_PORT","SandboxBackend","resolve","randomUUID","randomUUID","validateCredentialPair","mountStrategyType","secretAccessKey","validateCredentialPair","shellCommand","sandboxName","validateCredentialPair","buildShellCommand","applyLocalSourceManifestEntryToState","applyLocalSourceManifestToState","shellCommand","decoder","resolve","webSocketEventText","resolve","chmod","mkdir","mkdtemp","rm","createHash","randomUUID","spawn","isAbsolute","join","resolve","tmpdir","mkdir","mkdtemp","readFile","readdir","rm","stat","lstatSync","spawn","dirname","isAbsolute","join","relative","resolve","tmpdir","dirname","join","resolve","resolve","join","dirname","normalizeGitRepository","lstat","mkdir","mkdtemp","open","readdir","realpath","rm","stat","constants","createHash","randomUUID","dirname","join","relative","sep","tmpdir","join","constants","randomUUID","fingerprint","snapshot","rm","pathExists","createHash","mkdir","join","lstat","dirname","readdir","mkdtemp","stat","sameFilesystemEntry","open","isPathChangedError","realpath","relative","sep","processOutput","output","sessionId","stat","readFile","readdir","rm","resolve","relative","spawn","mkdtemp","join","tmpdir","isAbsolute","lstatSync","dirname","mkdir","logicalPath","spawn","mkdtemp","join","tmpdir","restoredState","rm","chmod","resolve","randomUUID","mkdir","isAbsolute","rclonePatternString","rclonePatternStringArray","shellCommand","azureBlobEndpoint","joinRemotePath","s3CredentialLines","validateCredentialPair","normalizeBoxRemotePath","createHash","result","isS3Mount","validateCredentialPair","isR2Mount","isGCSMount","isTypedBucketMount","DEFAULT_EXEC_YIELD_TIME_MS","DEFAULT_WRITE_STDIN_YIELD_TIME_MS","MAX_ACTIVE_PROCESS_OUTPUT_CHARS","buildShellCommand","process","waitForProcessOrTimeout","DEFAULT_EXEC_YIELD_TIME_MS","output","DEFAULT_WRITE_STDIN_YIELD_TIME_MS","validateOptions","image","appendActiveProcessOutput","resolve","withDroppedOutputPrefix","appendBoundedOutput","MAX_ACTIVE_PROCESS_OUTPUT_CHARS","sandbox","pathPosix","pathPosix","shellCommand","buildShellCommand","requestId","ErrorCode","DESKTOP_STREAM_PORT","resolve","ErrorCode","ErrorCode","ErrorCode","resolve","requestId","ErrorCode","sniffImageMediaType","applyDiff","pathExists","shellQuote","DESKTOP_STREAM_PORT","resolveManifestRoot","resolvedCredentials","resolve","SandboxBackend","isProviderSandboxNotFoundError","createHash","base64","run","collectSandboxEnvironment","parseExposedPorts","CAPABILITY_DESCRIPTORS","DESKTOP_STREAM_PORT","StreamTokenPayload","DESKTOP_STREAM_PORT","DESKTOP_STREAM_PORT","shellQuote","state","resolve","execResultOutput","execResultExitCode","inferExitFromOutput","isRecord","shellQuote","createHash","shellQuote","DESKTOP_STREAM_PORT","DESKTOP_STREAM_PORT","DESKTOP_STREAM_PORT","process","resolve","appendBoundedOutput","SELFHOSTED_VIRTUAL_ROOT","stripExecBanner","shellQuote","basename","parentPath","exitCode","ok","byteLength","stat","truncated","ErrorCode","FsEntryKind","encoder","decoder","requestId","DESKTOP_STREAM_PORT","TERMINAL_STREAM_PORT","spawnSync","run","isProviderSandboxNotFoundError"]}