@humain/humain-code 0.3.8 → 0.4.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.
- package/CHANGELOG.md +45 -0
- package/dist/bundle/agent-monitor.js +1 -1
- package/dist/bundle/chunks/bedrock-converse-stream.js +45 -39
- package/dist/bundle/chunks/{chunk-REZ7FW4X.js → chunk-2KKLZK2N.js} +1 -1
- package/dist/bundle/chunks/{chunk-3ZYKCI45.js → chunk-3ZI2TEVB.js} +1 -1
- package/dist/bundle/chunks/{chunk-WQN4VIAM.js → chunk-7LDXR4AN.js} +424 -378
- package/dist/bundle/chunks/{chunk-YEG6NREY.js → chunk-DUZY4PDA.js} +16 -16
- package/dist/bundle/chunks/{chunk-QJZ5QYKE.js → chunk-E22S6D55.js} +1 -1
- package/dist/bundle/chunks/{chunk-74L7EWMA.js → chunk-E7WGCXWK.js} +1 -1
- package/dist/bundle/chunks/{chunk-MNB52OYZ.js → chunk-ERT2BD7V.js} +36 -36
- package/dist/bundle/chunks/{chunk-2KVH67UZ.js → chunk-H5CZL7M5.js} +1 -1
- package/dist/bundle/chunks/{chunk-TEOX3AWC.js → chunk-ICLZNV4V.js} +2 -2
- package/dist/bundle/chunks/{chunk-VHVY22A2.js → chunk-JQZ7BIAI.js} +2 -13
- package/dist/bundle/chunks/{chunk-HL54JCNV.js → chunk-KMMH6Z2Y.js} +3 -3
- package/dist/bundle/chunks/{chunk-6HQRNHO7.js → chunk-N23FFKJU.js} +40 -25
- package/dist/bundle/chunks/{chunk-X5JUC5RE.js → chunk-OXJXKCLB.js} +1 -1
- package/dist/bundle/chunks/{chunk-QWB2GGVH.js → chunk-OYDXJK4L.js} +731 -736
- package/dist/bundle/chunks/{chunk-7CYWKPFS.js → chunk-UBQSONVR.js} +9 -8
- package/dist/bundle/chunks/{chunk-6MMGBL46.js → chunk-VZV7GLZT.js} +2 -2
- package/dist/bundle/chunks/{chunk-FF26YENK.js → chunk-W2QRCQBX.js} +4 -3
- package/dist/bundle/chunks/{cli-5NYUGRWC.js → cli-5YRA5PFB.js} +2 -2
- package/dist/bundle/chunks/{compat-UPJNJCGF.js → compat-GXD2ZGMZ.js} +1 -1
- package/dist/bundle/chunks/dist-IKSCGVMG.js +1953 -0
- package/dist/bundle/chunks/{easter-egg-3d-XUJ4HNAR.js → easter-egg-3d-ARXMB2RN.js} +1 -1
- package/dist/bundle/chunks/{esm-763X2IA7.js → esm-NCUV2DF7.js} +1 -1
- package/dist/bundle/chunks/{event-streams-4Q22QRY2.js → event-streams-CGCQQL5M.js} +1 -1
- package/dist/bundle/chunks/{execute-IAU7EI3P.js → execute-KEUC5IWA.js} +1 -1
- package/dist/bundle/chunks/{extract-QIC545HI.js → extract-WUAT5T4V.js} +4 -4
- package/dist/bundle/chunks/{google-generative-ai-ICWD4YIE.js → google-generative-ai-MDUVUFFQ.js} +1 -1
- package/dist/bundle/chunks/{google-vertex-XIACVW6H.js → google-vertex-UQGG6LEW.js} +1 -1
- package/dist/bundle/chunks/{host-QBIXSMNN.js → host-SPBJ4YAA.js} +1 -1
- package/dist/bundle/chunks/{node-W47VUEGE.js → node-XGNY74WT.js} +1 -1
- package/dist/bundle/chunks/{runtime-NBGMTCI6.js → runtime-HBWXEJT3.js} +1 -1
- package/dist/bundle/chunks/{virtual-modules-P2MH665T.js → virtual-modules-BYOLP3HY.js} +2 -2
- package/dist/bundle/cli-runtime.js +2 -2
- package/dist/bundle/flow/agents/.gitkeep +0 -0
- package/dist/bundle/flow/agents/orch-architect.md +33 -0
- package/dist/bundle/flow/agents/orch-implementation-fast.md +13 -0
- package/dist/bundle/flow/agents/orch-implementation-strong.md +28 -0
- package/dist/bundle/flow/agents/orch-qa-agent.md +29 -0
- package/dist/bundle/flow/agents/orch-scout.md +35 -0
- package/dist/bundle/flow/agents/orch-security-review.md +28 -0
- package/dist/bundle/flow/agents/orch-technical-lead.md +37 -0
- package/dist/bundle/flow/agents/orch-technical-review.md +28 -0
- package/dist/bundle/flow/agents/orch-worker.md +13 -0
- package/dist/bundle/flow/agents/orchestrator-lead.md +55 -0
- package/dist/bundle/flow/assets/.gitkeep +0 -0
- package/dist/bundle/flow/assets/contract.json +84 -0
- package/dist/bundle/flow/assets/forge-protocol-schema.sha256 +1 -0
- package/dist/bundle/flow/assets/method.json +193 -0
- package/dist/bundle/flow/assets/orchestrator-profiles.json +131 -0
- package/dist/bundle/flow/assets/profiles/anthropic.json +189 -0
- package/dist/bundle/flow/assets/profiles/openai.json +177 -0
- package/dist/bundle/flow/assets/profiles/oss-first.json +236 -0
- package/dist/bundle/flow/assets/profiles/premium.json +203 -0
- package/dist/bundle/flow/package.json +48 -0
- package/dist/bundle/index.js +5 -5
- package/dist/bundle/rpc-entry.js +2 -2
- package/dist/config.d.ts +12 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +21 -0
- package/dist/config.js.map +1 -1
- package/dist/core/tools/subagent.d.ts +20 -0
- package/dist/core/tools/subagent.d.ts.map +1 -1
- package/dist/core/tools/subagent.js +124 -12
- package/dist/core/tools/subagent.js.map +1 -1
- package/dist/humain/flow-loader.d.ts +62 -0
- package/dist/humain/flow-loader.d.ts.map +1 -0
- package/dist/humain/flow-loader.js +291 -0
- package/dist/humain/flow-loader.js.map +1 -0
- package/dist/humain/index.d.ts.map +1 -1
- package/dist/humain/index.js +2 -0
- package/dist/humain/index.js.map +1 -1
- package/dist/humain/trace-capture/child-launch.d.ts +1 -0
- package/dist/humain/trace-capture/child-launch.d.ts.map +1 -1
- package/dist/humain/trace-capture/child-launch.js +2 -1
- package/dist/humain/trace-capture/child-launch.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +136 -1
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/docs/docs.json +8 -0
- package/docs/environment-variables.md +1 -0
- package/docs/flow-profiles.md +173 -0
- package/docs/flow.md +112 -0
- package/docs/index.md +2 -0
- package/npm-shrinkwrap.json +6 -6
- package/package.json +6 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"child-launch.js","sourceRoot":"","sources":["../../../src/humain/trace-capture/child-launch.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ChildProcess, spawn } from \"node:child_process\";\nimport { createHash, createHmac, randomBytes, timingSafeEqual } from \"node:crypto\";\nimport { chmodSync, closeSync, createReadStream, fstatSync, mkdtempSync, rmdirSync } from \"node:fs\";\nimport { createConnection, createServer, type Socket } from \"node:net\";\nimport { tmpdir } from \"node:os\";\nimport { isAbsolute, join } from \"node:path\";\nimport type { Duplex, Readable, Writable } from \"node:stream\";\nimport {\n\tassertDhOriginDelegation,\n\tassertDhProducerAudience,\n\ttype DhControlTarget,\n\ttype DhEventKind,\n\ttype DhEventV1,\n\ttype DhOriginDelegation,\n\ttype DhOutcome,\n\ttype DhProducerEnrollmentRequest,\n\ttype DhProducerTokenResponse,\n\ttype DhReceiptOwner,\n\ttype DhRetryAdmissionContext,\n\ttype DhWorkloadBinding,\n\tdhCanonicalText,\n\tdhStrictDtoParser,\n\tparseDhControlTarget,\n\tparseDhOriginDelegation,\n\tparseDhProducerEnrollment,\n\tparseDhProducerEnrollmentRequest,\n\tparseDhProducerTokenResponse,\n\tparseDhRawJson,\n\tparseDhWorkloadAuthorizationHeader,\n\tparseDhWorkloadBinding,\n\tvalidateDhBatchAck,\n} from \"@humain/humain-code-contracts/trace\";\nimport { Type } from \"typebox\";\nimport type { ExtensionContext } from \"../../core/extensions/types.ts\";\nimport {\n\tparseTraceSpoolBinding,\n\treadTraceStreamBinding,\n\ttype TraceSpoolBinding,\n\twriteTraceStreamBinding,\n} from \"../../core/trace/binding.ts\";\nimport {\n\tbuildChildTraceEnv,\n\treadTraceProducerConfig,\n\tTRACE_ENV,\n\ttype TraceCaptureActivation,\n\ttype TraceProducerConfig,\n\ttraceCaptureDisabledReason,\n} from \"../../core/trace/config.ts\";\nimport { HttpTraceIngestTransport, type TraceIngestTransport } from \"../../core/trace/ingest-transport.ts\";\nimport {\n\tacquireTraceSpoolLock,\n\tensureTraceSpoolDirs,\n\tfsyncDir,\n\treadTraceStateFile,\n\treadTraceStream,\n\ttraceStreamPrefixChain,\n\tverifyTraceStreamOffset,\n\twriteTraceFileAtomic,\n} from \"../../core/trace/journal.ts\";\nimport { isSpoolQuarantinedInProcess, QuarantineGateError, withQuarantineGate } from \"../../core/trace/quarantine.ts\";\nimport type { TraceRecorder } from \"../../core/trace/recorder.ts\";\nimport { traceCursorPath } from \"../../core/trace/uploader.ts\";\nimport { registerTrustedTraceSecrets, type TrustedTraceSession } from \"./active-recorder.ts\";\nimport { getFlowTraceProducer, resolveTrustedTraceSession } from \"./flow-producer.ts\";\n\nconst MAX_BOOTSTRAP_BYTES = 65_536;\nconst BOOTSTRAP_FD_ENV = \"HUMAIN_TERMINAL_TRACE_BOOTSTRAP_FD\";\nconst UNAVAILABLE = \"binding_unavailable\";\nconst id = (prefix: string) => `${prefix}_${randomBytes(24).toString(\"base64url\")}`;\n\n/** Internal Forge launcher-service inputs, not a new HTTP registration endpoint. */\nexport interface FlowWorkloadRegistration {\n\tid: string;\n\tbindingId: string;\n\tgenerationId: string;\n\ttenantId: string;\n\tenvironmentId: string;\n\tprojectId: string;\n\tproducerId: string;\n\tstreamId: string;\n\tissuer: \"cli\";\n\tsecretHash: string;\n\tbuildSha256: string;\n\tmode: string;\n\tcredentialVersion: number;\n\texpiresAt: Date;\n}\nexport interface FlowWriterRegistration {\n\tid: string;\n\tbindingId: string;\n\tgenerationId: string;\n\ttenantId: string;\n\tenvironmentId: string;\n\tprojectId: string;\n\tproducerId: string;\n\tstreamId: string;\n\tissuer: \"cli\" | \"flow\";\n\trecordKind: DhEventKind | \"artifact\";\n\tagentId: string;\n\tattemptId?: string;\n\tlifecycleOwner: \"self\" | \"parent\";\n\tresolveUnknown: boolean;\n\tcontinuationTarget: boolean;\n}\n\n/** Privileged fixture launcher supplies this privately. Every operation reconciles identical replay. */\nexport interface FlowChildRegistrationPort {\n\t/** Privileged launcher maps allocated identities before registering any writer authority. Replays must match. */\n\tregisterActivityChildIdentity(registration: {\n\t\tbindingId: string;\n\t\tgenerationId: string;\n\t\tparentAgentId: string;\n\t\tagentId: string;\n\t\tattemptId: string;\n\t}): Promise<void>;\n\t/** Allocator material travels only on the private launcher RPC, never to the authority registry. */\n\tregisterSyntheticAuthority(registration: FlowWorkloadRegistration, allocationKey?: string): Promise<string>;\n\tregisterActivityWriterAuthority(\n\t\tworkloadId: string,\n\t\tcredentialVersion: number,\n\t\tregistration: FlowWriterRegistration,\n\t): Promise<string>;\n\tenrollProducer(request: DhProducerEnrollmentRequest, authorization: string): Promise<unknown>;\n\tissueProducerCredential(request: { enrollmentId: string }, authorization: string): Promise<unknown>;\n\tregisterActivityOriginDelegation(registration: DhOriginDelegation): Promise<string>;\n}\n\n/** Trusted capture configuration. Never exposed through a Flow capability. */\nexport interface FlowChildLaunchOptions {\n\tregistrationPort: FlowChildRegistrationPort;\n\trootRelayProducerInstanceId: string;\n\t/** Trusted launcher expiry; inherited descendants cannot outlive this relay. */\n\trootRelayExpiresAt: string;\n\t/** Present only in a bootstrapped writer; grants exact descendant identities on its stream. */\n\twriterWorkload?: DhWorkloadBinding;\n\t/** Private workload-derived allocator key; never exposed through the Flow capability. */\n\tallocationKey?: string;\n\tbuildSha256: string;\n\tmode: string;\n}\nexport interface FlowChildLaunchInvocation {\n\tcommand: string;\n\targs: readonly string[];\n\tcwd?: string;\n\tenv?: NodeJS.ProcessEnv;\n\tstdout?: \"pipe\" | \"inherit\" | \"ignore\";\n\tstderr?: \"pipe\" | \"inherit\" | \"ignore\";\n\t/** POSIX detached spawn: process.pid is the new process-group id for caller-owned group cancellation. */\n\tprocessGroup?: boolean;\n}\nexport interface FlowChildLaunchIdentity {\n\tgenerationId: string;\n\tagentId: string;\n\tattemptId: string;\n\tbindingId: string;\n\tbindingEpoch: string;\n\tsessionEpoch: string;\n}\nexport interface FlowChildLaunchResult {\n\treadonly process: ChildProcess;\n\treadonly control: Duplex;\n\t/** Observed from spawn time, including close before launch resolves. Never rejects. */\n\treadonly closed: Promise<{ exitCode: number | null; signal: NodeJS.Signals | null }>;\n\t/** First observed process error, or undefined after an error-free close. Never rejects. */\n\treadonly error: Promise<Error | undefined>;\n\t/** Only this recorded direct process is signalled. */\n\tcancel(signal?: NodeJS.Signals): boolean;\n}\nexport interface FlowChildLaunchHandle {\n\treadonly streamId: string;\n\treadonly producerInstanceId: string;\n\treadonly enrollmentId: string;\n\treadonly delegationIds: readonly string[];\n\treadonly identity: Readonly<FlowChildLaunchIdentity>;\n\tlaunch(invocation: FlowChildLaunchInvocation): Promise<FlowChildLaunchResult>;\n}\nexport interface FlowChildLaunchHost {\n\tprepareChildLaunch(\n\t\tagentId: string,\n\t\tattemptId: string,\n\t\toptions: { launchId: string },\n\t): Promise<FlowChildLaunchHandle>;\n\tgetRetryAdmissionContext(input: { agentId: string; sourceAttemptId: string }): DhRetryAdmissionContext | undefined;\n}\n\n/** Registration failures can contain credentials. Only explicitly retryable failures are replayed. */\nasync function reconcile<T>(operation: () => Promise<T>): Promise<T> {\n\tfor (let attempt = 0; attempt < 3; attempt++) {\n\t\ttry {\n\t\t\treturn await operation();\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\tattempt === 2 ||\n\t\t\t\ttypeof error !== \"object\" ||\n\t\t\t\terror === null ||\n\t\t\t\t!(\"retryable\" in error) ||\n\t\t\t\terror.retryable !== true\n\t\t\t)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t}\n\t}\n\tthrow new Error(UNAVAILABLE);\n}\n\nfunction hostEvents(session: TrustedTraceSession): DhEventV1[] {\n\tconst config = session.recorder.config;\n\tconst binding = readTraceStreamBinding(config.spoolDir, session.recorder.streamId);\n\tif (dhCanonicalText(binding.admission) !== dhCanonicalText(session.admission)) throw new Error(UNAVAILABLE);\n\t// ponytail: one host journal in memory; use a filtered scanner if long-lived hosts exceed this ceiling.\n\tconst read = readTraceStream(join(config.spoolDir, \"streams\", `${session.recorder.streamId}.jsonl`));\n\tif (read.corrupt || read.tornTail) throw new Error(UNAVAILABLE);\n\treturn read.records.flatMap((record) => (record.t === \"event\" ? [record.r] : []));\n}\n\nconst allocationCounters = new WeakMap<TraceRecorder, number>();\n\n/** Scoped minting: inherited writers cannot select identities allocated to another workload. */\nexport function mintChildLaunchId(session: TrustedTraceSession, prefix: \"agt\" | \"att\"): string {\n\tif (!session.childLaunch?.writerWorkload) return id(prefix);\n\tconst key = session.childLaunch.allocationKey;\n\tconst counter = (allocationCounters.get(session.recorder) ?? 0) + 1;\n\tif (!key || !/^[0-9a-f]{64}$/.test(key) || counter > 4096) throw new Error(UNAVAILABLE);\n\tallocationCounters.set(session.recorder, counter);\n\treturn `${prefix}_${counter}_${createHmac(\"sha256\", Buffer.from(key, \"hex\")).update(`${prefix}:${counter}`).digest(\"hex\")}`;\n}\n\nconst allocatedAttempts = new WeakMap<TraceRecorder, Map<string, { agentId: string; parentAttemptId: string }>>();\n\n/** Internal allocation hook: journal content alone never grants launch authority. */\nexport function noteChildLaunchAllocation(recorder: TraceRecorder, agentId: string, attemptId: string): void {\n\tlet attempts = allocatedAttempts.get(recorder);\n\tif (!attempts) {\n\t\tattempts = new Map();\n\t\tallocatedAttempts.set(recorder, attempts);\n\t}\n\tif (attempts.size >= 4096) throw new Error(UNAVAILABLE);\n\tattempts.set(attemptId, { agentId, parentAttemptId: recorder.ownAttemptId });\n}\n\nfunction directStart(session: TrustedTraceSession, agentId: string, attemptId: string): DhEventV1 {\n\tconst allocation = allocatedAttempts.get(session.recorder)?.get(attemptId);\n\t// The root launcher owns its native recorder. Inherited writers need an actual host allocation,\n\t// not a claimed start they appended to their own journal.\n\tif (\n\t\tsession.childLaunch?.writerWorkload &&\n\t\t(allocation?.agentId !== agentId || allocation.parentAttemptId !== session.recorder.ownAttemptId)\n\t)\n\t\tthrow new Error(UNAVAILABLE);\n\tconst events = hostEvents(session);\n\tconst starts = events.filter(\n\t\t(event) => event.kind === \"attempt.started\" && event.agentId === agentId && event.attemptId === attemptId,\n\t);\n\tconst start = starts[0];\n\tif (\n\t\tstarts.length !== 1 ||\n\t\t!start ||\n\t\tstart.parentAgentId !== session.recorder.config.agentId ||\n\t\t!events.some(\n\t\t\t(event) =>\n\t\t\t\tevent.kind === \"agent.spawned\" && event.agentId === agentId && event.parentAgentId === start.parentAgentId,\n\t\t) ||\n\t\tevents.some((event) => event.kind === \"attempt.finished\" && event.attemptId === attemptId)\n\t)\n\t\tthrow new Error(UNAVAILABLE);\n\treturn start;\n}\n\n/** Prefix cursor is a committed metadata receipt; verify its entire journal prefix before trusting it. */\nexport function retryContext(\n\tsession: TrustedTraceSession,\n\tinput: { agentId: string; sourceAttemptId: string },\n): DhRetryAdmissionContext | undefined {\n\ttry {\n\t\tconst spool = session.recorder.config.spoolDir;\n\t\tconst stream = session.recorder.streamId;\n\t\tconst binding = readTraceStreamBinding(spool, stream);\n\t\tconst cursor: unknown = parseDhRawJson(Buffer.from(readTraceStateFile(traceCursorPath(spool, stream), 65_536)), {\n\t\t\tmaxBytes: 65_536,\n\t\t});\n\t\tif (cursor === null || Array.isArray(cursor) || typeof cursor !== \"object\") return undefined;\n\t\tconst { ackedThroughSequence, ackedByteOffset, ackedRecordDigest, ackedPrefixDigest } = cursor as Record<\n\t\t\tstring,\n\t\t\tunknown\n\t\t>;\n\t\tconst path = join(spool, \"streams\", `${stream}.jsonl`);\n\t\tif (\n\t\t\ttypeof ackedThroughSequence !== \"number\" ||\n\t\t\t!Number.isSafeInteger(ackedThroughSequence) ||\n\t\t\tackedThroughSequence < 0 ||\n\t\t\ttypeof ackedByteOffset !== \"number\" ||\n\t\t\ttypeof ackedRecordDigest !== \"string\" ||\n\t\t\ttypeof ackedPrefixDigest !== \"string\" ||\n\t\t\t!verifyTraceStreamOffset(path, ackedByteOffset, {\n\t\t\t\tstreamId: stream,\n\t\t\t\tsequence: ackedThroughSequence,\n\t\t\t\tdigest: ackedRecordDigest,\n\t\t\t}) ||\n\t\t\ttraceStreamPrefixChain(path, ackedByteOffset) !== ackedPrefixDigest\n\t\t)\n\t\t\treturn undefined;\n\t\tconst events = hostEvents(session).filter((event) => event.sequence <= ackedThroughSequence);\n\t\tconst starts = events.filter((event) => event.kind === \"attempt.started\");\n\t\tconst terminals = events.filter((event) => event.kind === \"attempt.finished\");\n\t\tif (\n\t\t\t!starts.some((event) => event.agentId === input.agentId && event.attemptId === input.sourceAttemptId) ||\n\t\t\t!terminals.some((event) => event.agentId === input.agentId && event.attemptId === input.sourceAttemptId)\n\t\t)\n\t\t\treturn undefined;\n\t\tconst amendments = events.filter((event) => event.kind === \"event.amendment\");\n\t\tconst receiptOwners = new Map<string, DhReceiptOwner>(\n\t\t\tevents.map((event) => [\n\t\t\t\tevent.eventId,\n\t\t\t\t{\n\t\t\t\t\tbindingId: binding.admission.bindingId,\n\t\t\t\t\toriginProducerInstanceId: binding.producerInstanceId,\n\t\t\t\t\toriginStreamId: stream,\n\t\t\t\t\toriginIssuer: event.producer.issuer,\n\t\t\t\t},\n\t\t\t]),\n\t\t);\n\t\tconst authorizedAmendmentEventIds = new Set<string>();\n\t\tfor (const amendment of amendments) {\n\t\t\tconst target = terminals.find((event) => event.eventId === amendment.payload.amendsEventId);\n\t\t\tif (target && target.producer.issuer === amendment.producer.issuer && target.streamId === amendment.streamId)\n\t\t\t\tauthorizedAmendmentEventIds.add(amendment.eventId);\n\t\t}\n\t\tconst retryClaims = new Map<string, string>();\n\t\tfor (const start of starts)\n\t\t\tif (start.retryOfAttemptId !== undefined && start.attemptId !== undefined) {\n\t\t\t\tconst prior = retryClaims.get(start.retryOfAttemptId);\n\t\t\t\tif (prior !== undefined && prior !== start.attemptId) return undefined;\n\t\t\t\tretryClaims.set(start.retryOfAttemptId, start.attemptId);\n\t\t\t}\n\t\treturn { starts, terminals, amendments, receiptOwners, authorizedAmendmentEventIds, retryClaims };\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nconst hosts = new WeakMap<TrustedTraceSession, { ownAttemptId: string; host: FlowChildLaunchHost }>();\nconst launchedChildren = new WeakMap<FlowChildLaunchHandle, FlowChildLaunchResult>();\n\n/** Internal C15 custody lookup: only a C14 handle that actually launched has a channel. */\nexport function resolveFlowChildLaunch(handle: FlowChildLaunchHandle): FlowChildLaunchResult | undefined {\n\treturn launchedChildren.get(handle);\n}\n\n/** Runtime-only host. No launcher or writer credentials are reachable through its public object. */\nexport function getFlowChildLaunchHost(ctx: ExtensionContext): FlowChildLaunchHost | undefined {\n\tconst session = resolveTrustedTraceSession(ctx);\n\tif (!session?.childLaunch || !session.admission) return undefined;\n\tconst cached = hosts.get(session);\n\tif (cached?.ownAttemptId === session.recorder.ownAttemptId) return cached.host;\n\tconst producer = getFlowTraceProducer(ctx);\n\tif (!producer) return undefined;\n\tconst ownAttemptId = session.recorder.ownAttemptId;\n\tconst live = () => resolveTrustedTraceSession(ctx) === session && session.recorder.ownAttemptId === ownAttemptId;\n\tconst launches = new Map<string, { agentId: string; attemptId: string; promise: Promise<FlowChildLaunchHandle> }>();\n\tconst host: FlowChildLaunchHost = Object.freeze({\n\t\tasync prepareChildLaunch(agentId: string, attemptId: string, options: { launchId: string }) {\n\t\t\tif (!live() || !/^[A-Za-z0-9_.-]{1,128}$/.test(options?.launchId ?? \"\")) throw new Error(UNAVAILABLE);\n\t\t\tconst start = directStart(session, agentId, attemptId);\n\t\t\tconst prior = launches.get(options.launchId);\n\t\t\tif (prior) {\n\t\t\t\tif (prior.agentId !== agentId || prior.attemptId !== attemptId) throw new Error(UNAVAILABLE);\n\t\t\t\treturn prior.promise;\n\t\t\t}\n\t\t\tif (launches.size >= 4096) throw new Error(UNAVAILABLE);\n\t\t\tconst finish =\n\t\t\t\tstart.producer.issuer === \"flow\"\n\t\t\t\t\t? producer.finishChildAttempt.bind(producer)\n\t\t\t\t\t: session.recorder.finishChildAttempt.bind(session.recorder);\n\t\t\tconst promise = registerChild(session, start, options.launchId, live, finish);\n\t\t\tlaunches.set(options.launchId, { agentId, attemptId, promise });\n\t\t\treturn promise;\n\t\t},\n\t\tgetRetryAdmissionContext(input: { agentId: string; sourceAttemptId: string }) {\n\t\t\treturn live() ? retryContext(session, input) : undefined;\n\t\t},\n\t});\n\thosts.set(session, { ownAttemptId, host });\n\treturn host;\n}\n\nexport async function prepareChildLaunch(\n\tctx: ExtensionContext,\n\tagentId: string,\n\tattemptId: string,\n\toptions: { launchId: string },\n): Promise<FlowChildLaunchHandle> {\n\tconst host = getFlowChildLaunchHost(ctx);\n\tif (!host) throw new Error(UNAVAILABLE);\n\treturn host.prepareChildLaunch(agentId, attemptId, options);\n}\n\nconst CHILD_KINDS: readonly (DhEventKind | \"artifact\")[] = [\n\t\"model.request\",\n\t\"model.response\",\n\t\"tool.call\",\n\t\"tool.result\",\n\t\"file.change\",\n\t\"usage.reported\",\n\t\"capture.health\",\n\t\"artifact\",\n];\n\nconst DESCENDANT_KINDS: readonly DhEventKind[] = [\n\t\"agent.spawned\",\n\t\"attempt.started\",\n\t\"attempt.finished\",\n\t\"attempt.retry_scheduled\",\n];\nconst CANCELLATION_KINDS: readonly DhEventKind[] = [\"cancellation.requested\", \"cancellation.outcome\"];\n\nconst launchClaimParser = dhStrictDtoParser(\"launch ownership\", () =>\n\tType.Object(\n\t\t{\n\t\t\tschema: Type.Literal(\"dh.launch-ownership/1\"),\n\t\t\tfingerprint: Type.String({ pattern: \"^[0-9a-f]{64}$\" }),\n\t\t\tstreamId: Type.String({ pattern: \"^[A-Za-z0-9_-]{1,128}$\" }),\n\t\t\tproducerId: Type.String({ pattern: \"^prd_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\tworkloadId: Type.String({ pattern: \"^wld_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\tbindingId: Type.String(),\n\t\t\tgenerationId: Type.String(),\n\t\t\tparentProducerId: Type.String({ pattern: \"^prd_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\tparentStreamId: Type.String({ pattern: \"^[A-Za-z0-9_-]{1,128}$\" }),\n\t\t\tparentAgentId: Type.String({ pattern: \"^agt_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\tagentId: Type.String({ pattern: \"^agt_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\tattemptId: Type.String({ pattern: \"^att_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\tstate: Type.Enum([\"registering\", \"prepared\", \"launching\"]),\n\t\t\tauthentication: Type.Optional(Type.String({ pattern: \"^[0-9a-f]{64}$\" })),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n);\ntype LaunchClaim = ReturnType<typeof launchClaimParser>;\nconst launchRegistries = new Map<\n\tstring,\n\t{ key: Buffer; claims: Map<string, LaunchClaim>; allocationKeys: Map<string, string> }\n>();\nconst claimForwarders = new WeakMap<FlowChildRegistrationPort, (claim: LaunchClaim) => Promise<LaunchClaim>>();\n\nfunction launchRegistry(spool: string) {\n\tlet registry = launchRegistries.get(spool);\n\tif (!registry) {\n\t\t// The signing key never leaves the privileged launcher. Restart needs explicit reauthorization.\n\t\tregistry = { key: randomBytes(32), claims: new Map(), allocationKeys: new Map() };\n\t\tlaunchRegistries.set(spool, registry);\n\t}\n\treturn registry;\n}\n\nfunction claimText(claim: LaunchClaim): string {\n\tconst { state: _state, authentication: _authentication, ...identity } = claim;\n\treturn dhCanonicalText(identity);\n}\n\nasync function authenticateLaunchClaim(session: TrustedTraceSession, claim: LaunchClaim): Promise<LaunchClaim> {\n\tconst registry = launchRegistry(session.recorder.config.spoolDir);\n\tconst known = registry.claims.get(claim.producerId);\n\tif (known) {\n\t\tif (claimText(known) !== claimText(claim)) throw new Error(UNAVAILABLE);\n\t\treturn { ...claim, authentication: known.authentication };\n\t}\n\tif (registry.claims.size >= 4096) throw new Error(UNAVAILABLE);\n\tconst forward = claimForwarders.get(session.childLaunch!.registrationPort);\n\tlet authenticated: LaunchClaim;\n\tif (forward) {\n\t\tauthenticated = await forward(claim);\n\t\tif (claimText(authenticated) !== claimText(claim) || !authenticated.authentication) throw new Error(UNAVAILABLE);\n\t} else {\n\t\tconst own = readTraceStreamBinding(session.recorder.config.spoolDir, session.recorder.streamId);\n\t\tif (claim.parentProducerId !== own.producerInstanceId) {\n\t\t\tconst key = registry.allocationKeys.get(claim.parentProducerId);\n\t\t\tfor (const [prefix, identity] of [\n\t\t\t\t[\"agt\", claim.agentId],\n\t\t\t\t[\"att\", claim.attemptId],\n\t\t\t] as const) {\n\t\t\t\tconst match = new RegExp(`^${prefix}_([1-9][0-9]{0,3})_([0-9a-f]{64})$`).exec(identity);\n\t\t\t\tif (\n\t\t\t\t\t!key ||\n\t\t\t\t\t!match ||\n\t\t\t\t\tNumber(match[1]) > 4096 ||\n\t\t\t\t\t!timingSafeEqual(\n\t\t\t\t\t\tcreateHmac(\"sha256\", Buffer.from(key, \"hex\")).update(`${prefix}:${match[1]}`).digest(),\n\t\t\t\t\t\tBuffer.from(match[2], \"hex\"),\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t}\n\t\t\tconst parent = registry.claims.get(claim.parentProducerId);\n\t\t\tif (!parent || parent.streamId !== claim.parentStreamId || parent.agentId !== claim.parentAgentId)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\tconst read = readTraceStream(join(session.recorder.config.spoolDir, \"streams\", `${parent.streamId}.jsonl`));\n\t\t\tconst events = read.records.flatMap((record) => (record.t === \"event\" ? [record.r] : []));\n\t\t\tif (\n\t\t\t\tread.corrupt ||\n\t\t\t\tread.tornTail ||\n\t\t\t\tevents.filter(\n\t\t\t\t\t(event) =>\n\t\t\t\t\t\tevent.kind === \"attempt.started\" &&\n\t\t\t\t\t\tevent.agentId === claim.agentId &&\n\t\t\t\t\t\tevent.attemptId === claim.attemptId &&\n\t\t\t\t\t\tevent.parentAgentId === parent.agentId,\n\t\t\t\t).length !== 1 ||\n\t\t\t\t!events.some(\n\t\t\t\t\t(event) =>\n\t\t\t\t\t\tevent.kind === \"agent.spawned\" &&\n\t\t\t\t\t\tevent.agentId === claim.agentId &&\n\t\t\t\t\t\tevent.parentAgentId === parent.agentId,\n\t\t\t\t) ||\n\t\t\t\tevents.some((event) => event.kind === \"attempt.finished\" && event.attemptId === claim.attemptId)\n\t\t\t)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t}\n\t\tif (\n\t\t\tclaim.parentProducerId !== own.producerInstanceId &&\n\t\t\thostEvents(session).some((event) => event.agentId === claim.agentId || event.attemptId === claim.attemptId)\n\t\t)\n\t\t\tthrow new Error(UNAVAILABLE);\n\t\tif (\n\t\t\tclaim.agentId === session.recorder.config.agentId ||\n\t\t\t[...registry.claims.values()].some(\n\t\t\t\t(prior) =>\n\t\t\t\t\tprior.attemptId === claim.attemptId ||\n\t\t\t\t\tprior.streamId === claim.streamId ||\n\t\t\t\t\tprior.workloadId === claim.workloadId ||\n\t\t\t\t\t(prior.agentId === claim.agentId && prior.parentProducerId !== claim.parentProducerId),\n\t\t\t)\n\t\t)\n\t\t\tthrow new Error(UNAVAILABLE);\n\t\tauthenticated = {\n\t\t\t...claim,\n\t\t\tauthentication: createHmac(\"sha256\", registry.key).update(claimText(claim)).digest(\"hex\"),\n\t\t};\n\t\t// Reserve before awaiting the registration port. Ambiguous completion cannot reassign identities.\n\t\tregistry.claims.set(claim.producerId, authenticated);\n\t\tawait reconcile(() =>\n\t\t\tsession.childLaunch!.registrationPort.registerActivityChildIdentity({\n\t\t\t\tbindingId: claim.bindingId,\n\t\t\t\tgenerationId: claim.generationId,\n\t\t\t\tparentAgentId: claim.parentAgentId,\n\t\t\t\tagentId: claim.agentId,\n\t\t\t\tattemptId: claim.attemptId,\n\t\t\t}),\n\t\t);\n\t}\n\tregistry.claims.set(claim.producerId, authenticated);\n\treturn authenticated;\n}\n\n// Credentials survive a session rebind, never a process restart. Restart requires explicit same-owner reauthorization.\nconst preparedBootstraps = new Map<string, Bootstrap>();\n\nasync function registerChild(\n\tsession: TrustedTraceSession,\n\tstart: DhEventV1,\n\tlaunchId: string,\n\tlive: () => boolean,\n\tfinish: (agentId: string, attemptId: string, outcome: DhOutcome, failure: { code: string }) => string | undefined,\n): Promise<FlowChildLaunchHandle> {\n\tconst spool = session.recorder.config.spoolDir;\n\tconst key = createHash(\"sha256\")\n\t\t.update(dhCanonicalText([session.recorder.streamId, session.recorder.ownAttemptId, launchId]))\n\t\t.digest(\"hex\");\n\tconst name = `launch-${key}.json`;\n\tconst path = join(spool, \"bindings\", name);\n\tensureTraceSpoolDirs(spool, [\"bindings\"]);\n\tconst release = acquireTraceSpoolLock(spool, `launch-${key}.lock`);\n\tif (!release) throw new Error(UNAVAILABLE);\n\tconst publish = (claim: ReturnType<typeof launchClaimParser>) =>\n\t\twriteTraceFileAtomic(join(spool, \"bindings\"), name, dhCanonicalText(claim), {\n\t\t\tfsyncDir: (dir) => fsyncDir(dir, true),\n\t\t});\n\ttry {\n\t\tconst options = session.childLaunch!;\n\t\tif (\n\t\t\t!Number.isFinite(Date.parse(options.rootRelayExpiresAt)) ||\n\t\t\tDate.parse(options.rootRelayExpiresAt) <= Date.now()\n\t\t)\n\t\t\tthrow new Error(UNAVAILABLE);\n\t\tconst admission = session.admission!;\n\t\tconst port = options.registrationPort;\n\t\tconst register = <T>(operation: () => Promise<T>) =>\n\t\t\treconcile(() => {\n\t\t\t\tif (!live()) throw new Error(UNAVAILABLE);\n\t\t\t\treturn operation();\n\t\t\t});\n\t\tconst fingerprint = createHash(\"sha256\")\n\t\t\t.update(\n\t\t\t\tdhCanonicalText({\n\t\t\t\t\tadmission,\n\t\t\t\t\tstart,\n\t\t\t\t\trootRelay: options.rootRelayProducerInstanceId,\n\t\t\t\t\tbuild: options.buildSha256,\n\t\t\t\t\tmode: options.mode,\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.digest(\"hex\");\n\t\tlet stored: ReturnType<typeof launchClaimParser> | undefined;\n\t\ttry {\n\t\t\tstored = launchClaimParser(\n\t\t\t\tparseDhRawJson(Buffer.from(readTraceStateFile(path, MAX_BOOTSTRAP_BYTES)), {\n\t\t\t\t\tmaxBytes: MAX_BOOTSTRAP_BYTES,\n\t\t\t\t}),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code !== \"ENOENT\") throw error;\n\t\t}\n\t\tlet bootstrap = preparedBootstraps.get(path);\n\t\tif (!stored && bootstrap) throw new Error(UNAVAILABLE);\n\t\tif (\n\t\t\tstored &&\n\t\t\t(stored.fingerprint !== fingerprint ||\n\t\t\t\tstored.state !== \"prepared\" ||\n\t\t\t\t!bootstrap ||\n\t\t\t\tstored.streamId !== bootstrap.binding.originStreamId ||\n\t\t\t\tstored.producerId !== bootstrap.binding.producerInstanceId ||\n\t\t\t\tstored.workloadId !== bootstrap.workload.workloadId)\n\t\t)\n\t\t\tthrow new Error(UNAVAILABLE);\n\t\tif (!stored) {\n\t\t\tconst streamId = `cli-${randomBytes(24).toString(\"base64url\")}`;\n\t\t\tconst producerId = id(\"prd\");\n\t\t\tconst secret = randomBytes(32).toString(\"base64url\");\n\t\t\tif (!registerTrustedTraceSecrets(session, [secret])) throw new Error(UNAVAILABLE);\n\t\t\tconst expiresAt = new Date(\n\t\t\t\tMath.min(\n\t\t\t\t\tDate.now() + 3_600_000,\n\t\t\t\t\tDate.parse(options.rootRelayExpiresAt),\n\t\t\t\t\toptions.writerWorkload === undefined ? Infinity : Date.parse(options.writerWorkload.expiresAt),\n\t\t\t\t),\n\t\t\t);\n\t\t\tif (!Number.isFinite(expiresAt.getTime()) || expiresAt.getTime() <= Date.now()) throw new Error(UNAVAILABLE);\n\t\t\tconst workload = parseDhWorkloadBinding({\n\t\t\t\tschema: \"dh.workload-binding/1\",\n\t\t\t\tworkloadId: id(\"wld\"),\n\t\t\t\tbindingId: admission.bindingId,\n\t\t\t\tproducerInstanceId: producerId,\n\t\t\t\tlaunchNonce: launchId,\n\t\t\t\tissuer: \"cli\",\n\t\t\t\tbuildSha256: options.buildSha256,\n\t\t\t\tmode: options.mode,\n\t\t\t\tcredentialVersion: 1,\n\t\t\t\texpiresAt: expiresAt.toISOString(),\n\t\t\t});\n\t\t\tconst owner = {\n\t\t\t\tbindingId: admission.bindingId,\n\t\t\t\tgenerationId: admission.generationId,\n\t\t\t\ttenantId: admission.tenantId,\n\t\t\t\tenvironmentId: admission.environmentId,\n\t\t\t\tprojectId: admission.projectId,\n\t\t\t\tproducerId,\n\t\t\t\tstreamId,\n\t\t\t};\n\t\t\tconst registration: FlowWorkloadRegistration = {\n\t\t\t\t...owner,\n\t\t\t\tid: workload.workloadId,\n\t\t\t\tissuer: \"cli\",\n\t\t\t\tsecretHash: createHash(\"sha256\").update(secret).digest(\"hex\"),\n\t\t\t\tbuildSha256: workload.buildSha256,\n\t\t\t\tmode: workload.mode,\n\t\t\t\tcredentialVersion: 1,\n\t\t\t\texpiresAt,\n\t\t\t};\n\t\t\tstored = {\n\t\t\t\tschema: \"dh.launch-ownership/1\",\n\t\t\t\tfingerprint,\n\t\t\t\tstreamId,\n\t\t\t\tproducerId,\n\t\t\t\tworkloadId: workload.workloadId,\n\t\t\t\tbindingId: admission.bindingId,\n\t\t\t\tgenerationId: admission.generationId,\n\t\t\t\tparentProducerId: readTraceStreamBinding(spool, session.recorder.streamId).producerInstanceId,\n\t\t\t\tparentStreamId: session.recorder.streamId,\n\t\t\t\tparentAgentId: session.recorder.config.agentId,\n\t\t\t\tagentId: start.agentId,\n\t\t\t\tattemptId: start.attemptId!,\n\t\t\t\tstate: \"registering\",\n\t\t\t};\n\t\t\tif (!registerTrustedTraceSecrets(session, [registration.secretHash])) throw new Error(UNAVAILABLE);\n\t\t\tstored = await register(() => authenticateLaunchClaim(session, stored!));\n\t\t\tpublish(stored);\n\t\t\tconst allocationKey = createHmac(\"sha256\", secret).update(\"dh-launch-alloc\").digest(\"hex\");\n\t\t\tif (!registerTrustedTraceSecrets(session, [allocationKey])) throw new Error(UNAVAILABLE);\n\t\t\tif (\n\t\t\t\t(await register(() => port.registerSyntheticAuthority(registration, allocationKey))) !== workload.workloadId\n\t\t\t)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\tlaunchRegistry(spool).allocationKeys.set(producerId, allocationKey);\n\t\t\tconst authorization = `DH-Workload ${secret}`;\n\t\t\tconst request = parseDhProducerEnrollmentRequest({\n\t\t\t\tschema: \"dh.producer-enrollment-request/2\",\n\t\t\t\tgenerationId: admission.generationId,\n\t\t\t\tbindingId: admission.bindingId,\n\t\t\t\tproducerInstanceId: producerId,\n\t\t\t\toriginStreamId: streamId,\n\t\t\t\tproducer: { issuer: \"cli\", version: \"1\", mode: options.mode },\n\t\t\t});\n\t\t\tlet enrollment = parseDhProducerEnrollment(await register(() => port.enrollProducer(request, authorization)));\n\t\t\tif (\n\t\t\t\tenrollment.bindingId !== admission.bindingId ||\n\t\t\t\tenrollment.producerInstanceId !== producerId ||\n\t\t\t\tenrollment.originStreamId !== streamId ||\n\t\t\t\tenrollment.generationId !== admission.generationId ||\n\t\t\t\tenrollment.issuer !== \"cli\" ||\n\t\t\t\tenrollment.credentialVersion !== 1 ||\n\t\t\t\tenrollment.tenantScope.environmentId !== admission.environmentId ||\n\t\t\t\tenrollment.tenantScope.projectId !== admission.projectId\n\t\t\t)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\tconst delegation = parseDhOriginDelegation({\n\t\t\t\tschema: \"dh.origin-delegation/1\",\n\t\t\t\tdelegationId: id(\"dlg\"),\n\t\t\t\tbindingId: admission.bindingId,\n\t\t\t\toriginProducerInstanceId: producerId,\n\t\t\t\toriginStreamId: streamId,\n\t\t\t\toriginIssuer: \"cli\",\n\t\t\t\trelayProducerInstanceId: options.rootRelayProducerInstanceId,\n\t\t\t\tenrollmentId: enrollment.enrollmentId,\n\t\t\t\tcredentialVersion: 1,\n\t\t\t\texpiresAt: workload.expiresAt,\n\t\t\t});\n\t\t\tif ((await register(() => port.registerActivityOriginDelegation(delegation))) !== delegation.delegationId)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\tconst flowDelegation = parseDhOriginDelegation({\n\t\t\t\t...delegation,\n\t\t\t\tdelegationId: id(\"dlg\"),\n\t\t\t\toriginIssuer: \"flow\",\n\t\t\t\trelayProducerInstanceId: producerId,\n\t\t\t});\n\t\t\tif (\n\t\t\t\t(await register(() => port.registerActivityOriginDelegation(flowDelegation))) !==\n\t\t\t\tflowDelegation.delegationId\n\t\t\t)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\tenrollment = parseDhProducerEnrollment(await register(() => port.enrollProducer(request, authorization)));\n\t\t\tfor (const [issuer, kinds] of [\n\t\t\t\t[\"cli\", session.control ? [...CHILD_KINDS, ...([\"orchestration.decision\"] as const)] : CHILD_KINDS],\n\t\t\t\t[\"flow\", [\"orchestration.decision\", \"cancellation.requested\", \"cancellation.outcome\", \"usage.reported\"]],\n\t\t\t] as const) {\n\t\t\t\tfor (const recordKind of kinds) {\n\t\t\t\t\tconst writer: FlowWriterRegistration = {\n\t\t\t\t\t\t...owner,\n\t\t\t\t\t\tid: id(\"aut\"),\n\t\t\t\t\t\tissuer,\n\t\t\t\t\t\trecordKind,\n\t\t\t\t\t\tagentId: start.agentId,\n\t\t\t\t\t\tattemptId: start.attemptId!,\n\t\t\t\t\t\tlifecycleOwner: \"parent\",\n\t\t\t\t\t\tresolveUnknown: false,\n\t\t\t\t\t\tcontinuationTarget: issuer === \"cli\" && recordKind === \"orchestration.decision\",\n\t\t\t\t\t};\n\t\t\t\t\tif (\n\t\t\t\t\t\t(await register(() => port.registerActivityWriterAuthority(workload.workloadId, 1, writer))) !==\n\t\t\t\t\t\twriter.id\n\t\t\t\t\t)\n\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (options.writerWorkload) {\n\t\t\t\tconst parent = readTraceStreamBinding(session.recorder.config.spoolDir, session.recorder.streamId);\n\t\t\t\tfor (const issuer of [\"cli\", \"flow\"] as const)\n\t\t\t\t\tfor (const recordKind of issuer === \"flow\"\n\t\t\t\t\t\t? [...DESCENDANT_KINDS, ...CANCELLATION_KINDS]\n\t\t\t\t\t\t: DESCENDANT_KINDS) {\n\t\t\t\t\t\tconst writer: FlowWriterRegistration = {\n\t\t\t\t\t\t\t...owner,\n\t\t\t\t\t\t\tproducerId: parent.producerInstanceId,\n\t\t\t\t\t\t\tstreamId: parent.originStreamId,\n\t\t\t\t\t\t\tid: id(\"aut\"),\n\t\t\t\t\t\t\tissuer,\n\t\t\t\t\t\t\trecordKind,\n\t\t\t\t\t\t\tagentId: start.agentId,\n\t\t\t\t\t\t\t...(recordKind === \"agent.spawned\" ? {} : { attemptId: start.attemptId! }),\n\t\t\t\t\t\t\tlifecycleOwner: issuer === \"cli\" ? \"self\" : \"parent\",\n\t\t\t\t\t\t\tresolveUnknown: false,\n\t\t\t\t\t\t\tcontinuationTarget: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(await register(() =>\n\t\t\t\t\t\t\t\tport.registerActivityWriterAuthority(\n\t\t\t\t\t\t\t\t\toptions.writerWorkload!.workloadId,\n\t\t\t\t\t\t\t\t\tparent.credentialVersion,\n\t\t\t\t\t\t\t\t\twriter,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)) !== writer.id\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t}\n\t\t\t}\n\t\t\tconst credential = parseDhProducerTokenResponse(\n\t\t\t\tawait register(() =>\n\t\t\t\t\tport.issueProducerCredential({ enrollmentId: enrollment.enrollmentId }, authorization),\n\t\t\t\t),\n\t\t\t);\n\t\t\tassertDhProducerAudience(credential.audience, { ...enrollment, ...enrollment.tenantScope });\n\t\t\tif (!registerTrustedTraceSecrets(session, [credential.access_token])) throw new Error(UNAVAILABLE);\n\t\t\tif (!live()) throw new Error(UNAVAILABLE);\n\t\t\tdirectStart(session, start.agentId, start.attemptId!);\n\t\t\tconst binding = parseTraceSpoolBinding({\n\t\t\t\tschema: \"dh.spool-binding/1\",\n\t\t\t\toriginStreamId: streamId,\n\t\t\t\tgenerationId: admission.generationId,\n\t\t\t\tadmission,\n\t\t\t\tproducerInstanceId: producerId,\n\t\t\t\tenrollmentId: enrollment.enrollmentId,\n\t\t\t\tcredentialVersion: 1,\n\t\t\t\tdelegationIds: [delegation.delegationId, flowDelegation.delegationId],\n\t\t\t});\n\t\t\twriteTraceStreamBinding(session.recorder.config.spoolDir, binding);\n\t\t\tconst childEnv = buildChildTraceEnv(session.recorder.config, {\n\t\t\t\tagentId: start.agentId,\n\t\t\t\tattemptId: start.attemptId!,\n\t\t\t\tattemptNumber: start.attemptNumber!,\n\t\t\t\t...(start.retryOfAttemptId ? { retryOfAttemptId: start.retryOfAttemptId } : {}),\n\t\t\t});\n\t\t\tconst parsed = readTraceProducerConfig(childEnv.set);\n\t\t\tif (!parsed.enabled) throw new Error(UNAVAILABLE);\n\t\t\tconst config = {\n\t\t\t\t...parsed.config,\n\t\t\t\t...(session.recorder.config.ingestUrl ? { ingestUrl: session.recorder.config.ingestUrl } : {}),\n\t\t\t};\n\t\t\tbootstrap = {\n\t\t\t\tschema: \"dh.child-bootstrap/1\",\n\t\t\t\tconfig,\n\t\t\t\tbinding,\n\t\t\t\tworkload,\n\t\t\t\tenrollment,\n\t\t\t\tdelegation,\n\t\t\t\tflowDelegation,\n\t\t\t\tcredential,\n\t\t\t\tcredentialExpiresAtMs: Date.now() + credential.expires_in * 1000,\n\t\t\t\tworkloadSecret: secret,\n\t\t\t};\n\t\t\tpreparedBootstraps.set(path, bootstrap);\n\t\t\tstored = { ...stored, state: \"prepared\" };\n\t\t\tpublish(stored);\n\t\t}\n\t\tif (!bootstrap || !stored) throw new Error(UNAVAILABLE);\n\t\tconst ready = bootstrap;\n\t\tconst { binding, workload, credential } = ready;\n\t\tif (\n\t\t\t!live() ||\n\t\t\tdhCanonicalText(readTraceStreamBinding(spool, binding.originStreamId)) !== dhCanonicalText(binding)\n\t\t)\n\t\t\tthrow new Error(UNAVAILABLE);\n\t\tconst streamId = binding.originStreamId;\n\t\tconst producerId = binding.producerInstanceId;\n\t\tconst secret = ready.workloadSecret;\n\t\tconst expiresAt = new Date(workload.expiresAt);\n\t\tif (!registerTrustedTraceSecrets(session, [secret, credential.access_token])) throw new Error(UNAVAILABLE);\n\t\tconst bytes = Buffer.from(dhCanonicalText(ready));\n\t\tif (bytes.length > MAX_BOOTSTRAP_BYTES) throw new Error(UNAVAILABLE);\n\t\tlet used = false;\n\t\tconst identity = Object.freeze({\n\t\t\tgenerationId: admission.generationId,\n\t\t\tagentId: start.agentId,\n\t\t\tattemptId: start.attemptId!,\n\t\t\tbindingId: admission.bindingId,\n\t\t\tbindingEpoch: admission.bindingEpoch,\n\t\t\tsessionEpoch: session.epoch,\n\t\t});\n\t\tconst handle: FlowChildLaunchHandle = Object.freeze({\n\t\t\tstreamId,\n\t\t\tproducerInstanceId: producerId,\n\t\t\tenrollmentId: binding.enrollmentId,\n\t\t\tdelegationIds: Object.freeze([...binding.delegationIds]),\n\t\t\tidentity,\n\t\t\ttoJSON() {\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t},\n\t\t\tasync launch(invocation: FlowChildLaunchInvocation) {\n\t\t\t\tif (used || !live() || Date.now() >= expiresAt.getTime() || Date.now() >= ready.credentialExpiresAtMs)\n\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\tdirectStart(session, start.agentId, start.attemptId!);\n\t\t\t\tconst copied = copyInvocation(invocation);\n\t\t\t\tfor (const key of Object.keys(copied.env)) {\n\t\t\t\t\tif (Object.values(TRACE_ENV).some((name) => name === key.toUpperCase())) delete copied.env[key];\n\t\t\t\t}\n\t\t\t\tconst values = [copied.command, ...copied.args, copied.cwd, ...Object.values(copied.env)];\n\t\t\t\tif (\n\t\t\t\t\tvalues.some(\n\t\t\t\t\t\t(value) =>\n\t\t\t\t\t\t\tvalue?.includes(secret) ||\n\t\t\t\t\t\t\tvalue?.includes(credential.access_token) ||\n\t\t\t\t\t\t\t(ready.launcher && value?.includes(ready.launcher.secret)),\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\tcopied.env[BOOTSTRAP_FD_ENV] = \"4\";\n\t\t\t\tconst unlock = acquireTraceSpoolLock(spool, `launch-${key}.lock`);\n\t\t\t\tif (!unlock) throw new Error(UNAVAILABLE);\n\t\t\t\ttry {\n\t\t\t\t\tconst current = launchClaimParser(\n\t\t\t\t\t\tparseDhRawJson(Buffer.from(readTraceStateFile(path, MAX_BOOTSTRAP_BYTES)), {\n\t\t\t\t\t\t\tmaxBytes: MAX_BOOTSTRAP_BYTES,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t\tconst authenticated = launchRegistry(spool).claims.get(current.producerId);\n\t\t\t\t\tif (\n\t\t\t\t\t\tcurrent.state !== \"prepared\" ||\n\t\t\t\t\t\tcurrent.fingerprint !== fingerprint ||\n\t\t\t\t\t\t!authenticated ||\n\t\t\t\t\t\tclaimText(current) !== claimText(authenticated) ||\n\t\t\t\t\t\tcurrent.authentication !== authenticated.authentication\n\t\t\t\t\t)\n\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\tpublish({ ...current, state: \"launching\" });\n\t\t\t\t} finally {\n\t\t\t\t\tunlock();\n\t\t\t\t}\n\t\t\t\tused = true;\n\t\t\t\tpreparedBootstraps.delete(path);\n\t\t\t\tconst bridge = await registrationBridge(session, ready, live);\n\t\t\t\tconst authorizeLaunch = (): void => {\n\t\t\t\t\tconst checked = withQuarantineGate(spool, () => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tsession.revoked ||\n\t\t\t\t\t\t\t!live() ||\n\t\t\t\t\t\t\tDate.now() >= expiresAt.getTime() ||\n\t\t\t\t\t\t\tDate.now() >= ready.credentialExpiresAtMs ||\n\t\t\t\t\t\t\tDate.now() >= Date.parse(session.childLaunch!.rootRelayExpiresAt)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tdirectStart(session, start.agentId, start.attemptId!);\n\t\t\t\t\t});\n\t\t\t\t\tif (checked.status !== \"ok\") throw new Error(UNAVAILABLE);\n\t\t\t\t};\n\t\t\t\ttry {\n\t\t\t\t\tconst launched = await spawnChild(\n\t\t\t\t\t\tcopied,\n\t\t\t\t\t\tBuffer.from(\n\t\t\t\t\t\t\tdhCanonicalText({\n\t\t\t\t\t\t\t\t...ready,\n\t\t\t\t\t\t\t\tlauncher: bridge.descriptor,\n\t\t\t\t\t\t\t\t...(session.control\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\tcontrolTarget: {\n\t\t\t\t\t\t\t\t\t\t\t\tschema: \"dh.control-target/1\",\n\t\t\t\t\t\t\t\t\t\t\t\t...identity,\n\t\t\t\t\t\t\t\t\t\t\t\tcapabilityRevision: session.control.capabilityRevision,\n\t\t\t\t\t\t\t\t\t\t\t\tupdatedAt: new Date().toISOString(),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tauthorizeLaunch,\n\t\t\t\t\t);\n\t\t\t\t\tlaunchedChildren.set(handle, launched);\n\t\t\t\t\tvoid launched.closed.then(() => {\n\t\t\t\t\t\tlaunchedChildren.delete(handle);\n\t\t\t\t\t\tbridge.close();\n\t\t\t\t\t});\n\t\t\t\t\treturn launched;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tbridge.close();\n\t\t\t\t\tconst failed = error instanceof Error && error.message === \"child_spawn_failed\";\n\t\t\t\t\tconst code = failed ? \"child_spawn_failed\" : \"child_bootstrap_unconfirmed\";\n\t\t\t\t\tif (!finish(start.agentId, start.attemptId!, failed ? \"failed\" : \"unknown\", { code }))\n\t\t\t\t\t\tthrow new Error(\"child_finish_unconfirmed\");\n\t\t\t\t\tthrow new Error(code);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t\treturn handle;\n\t} catch {\n\t\tthrow new Error(UNAVAILABLE);\n\t} finally {\n\t\trelease();\n\t}\n}\n\nconst invocationParser = dhStrictDtoParser(\"child invocation\", () =>\n\tType.Object(\n\t\t{\n\t\t\tcommand: Type.String({ minLength: 1, maxLength: 4096, pattern: \"^[^\\\\u0000]+$\" }),\n\t\t\targs: Type.Array(Type.String({ maxLength: 65_536, pattern: \"^[^\\\\u0000]*$\" }), { maxItems: 2048 }),\n\t\t\tcwd: Type.Optional(Type.String({ minLength: 1, maxLength: 4096, pattern: \"^[^\\\\u0000]+$\" })),\n\t\t\tenv: Type.Optional(\n\t\t\t\tType.Record(\n\t\t\t\t\tType.String({ pattern: \"^[A-Za-z_][A-Za-z0-9_]*$\" }),\n\t\t\t\t\tType.String({ maxLength: 65_536, pattern: \"^[^\\\\u0000]*$\" }),\n\t\t\t\t),\n\t\t\t),\n\t\t\tstdout: Type.Optional(Type.Enum([\"pipe\", \"inherit\", \"ignore\"])),\n\t\t\tstderr: Type.Optional(Type.Enum([\"pipe\", \"inherit\", \"ignore\"])),\n\t\t\tprocessGroup: Type.Optional(Type.Boolean()),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n);\n\nfunction copyInvocation(input: FlowChildLaunchInvocation) {\n\tif (Buffer.byteLength(dhCanonicalText(input)) > 1_048_576) throw new Error(UNAVAILABLE);\n\tconst copy = invocationParser(input);\n\tif (copy.cwd !== undefined && !isAbsolute(copy.cwd)) throw new Error(UNAVAILABLE);\n\treturn { ...copy, env: { ...copy.env }, stdout: copy.stdout ?? \"pipe\", stderr: copy.stderr ?? \"pipe\" };\n}\n\nconst rpcParser = dhStrictDtoParser(\"launcher request\", () =>\n\tType.Object(\n\t\t{\n\t\t\tsecret: Type.String({ pattern: \"^[A-Za-z0-9_-]{43}$\" }),\n\t\t\tmethod: Type.Enum([\"claim\", \"workload\", \"writer\", \"enroll\", \"credential\", \"delegation\"]),\n\t\t\targs: Type.Array(Type.Unknown(), { minItems: 1, maxItems: 3 }),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n);\nconst ownerShape = {\n\tid: Type.String({ pattern: \"^[A-Za-z0-9_.-]{1,128}$\" }),\n\tbindingId: Type.String(),\n\tgenerationId: Type.String(),\n\ttenantId: Type.String(),\n\tenvironmentId: Type.String(),\n\tprojectId: Type.String(),\n\tproducerId: Type.String({ pattern: \"^prd_[A-Za-z0-9_-]{8,128}$\" }),\n\tstreamId: Type.String({ pattern: \"^[A-Za-z0-9_-]{1,128}$\" }),\n};\nconst workloadParser = dhStrictDtoParser(\"launcher workload\", () =>\n\tType.Object(\n\t\t{\n\t\t\t...ownerShape,\n\t\t\tissuer: Type.Literal(\"cli\"),\n\t\t\tsecretHash: Type.String({ pattern: \"^[0-9a-f]{64}$\" }),\n\t\t\tbuildSha256: Type.String({ pattern: \"^[0-9a-f]{64}$\" }),\n\t\t\tmode: Type.String({ minLength: 1, maxLength: 256 }),\n\t\t\tcredentialVersion: Type.Literal(1),\n\t\t\texpiresAt: Type.String(),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n);\nconst writerParser = dhStrictDtoParser(\"launcher writer\", () =>\n\tType.Object(\n\t\t{\n\t\t\t...ownerShape,\n\t\t\tissuer: Type.Enum([\"cli\", \"flow\"]),\n\t\t\trecordKind: Type.String(),\n\t\t\tagentId: Type.String({ pattern: \"^agt_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\tattemptId: Type.Optional(Type.String({ pattern: \"^att_[A-Za-z0-9_-]{8,128}$\" })),\n\t\t\tlifecycleOwner: Type.Enum([\"self\", \"parent\"]),\n\t\t\tresolveUnknown: Type.Literal(false),\n\t\t\tcontinuationTarget: Type.Literal(false),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n);\n\nfunction privateFrame(value: unknown): Buffer {\n\tconst bytes = Buffer.from(dhCanonicalText(value));\n\tif (bytes.length > MAX_BOOTSTRAP_BYTES) throw new Error(UNAVAILABLE);\n\tconst prefix = Buffer.alloc(4);\n\tprefix.writeUInt32BE(bytes.length);\n\treturn Buffer.concat([prefix, bytes]);\n}\n\n/** A scoped private launcher channel, not a producer bearer or public registration endpoint. */\nasync function registrationBridge(session: TrustedTraceSession, child: Bootstrap, live: () => boolean) {\n\tconst dir = mkdtempSync(join(tmpdir(), \"dh-launch-\"));\n\tchmodSync(dir, 0o700);\n\tconst path = join(dir, \"launcher.sock\");\n\tconst secret = randomBytes(32).toString(\"base64url\");\n\tif (!registerTrustedTraceSecrets(session, [secret])) throw new Error(UNAVAILABLE);\n\tconst port = session.childLaunch!.registrationPort;\n\tconst admission = child.binding.admission;\n\tconst workloads = new Map<string, { id: string; hash: string; stream: string; expiresAt: string }>([\n\t\t[\n\t\t\tchild.binding.producerInstanceId,\n\t\t\t{\n\t\t\t\tid: child.workload.workloadId,\n\t\t\t\thash: createHash(\"sha256\").update(child.workloadSecret).digest(\"hex\"),\n\t\t\t\tstream: child.binding.originStreamId,\n\t\t\t\texpiresAt: child.workload.expiresAt,\n\t\t\t},\n\t\t],\n\t]);\n\tconst enrollments = new Map([[child.enrollment.enrollmentId, child.binding.producerInstanceId]]);\n\tconst sockets = new Set<Socket>();\n\tconst sameScope = (row: {\n\t\tbindingId: string;\n\t\tgenerationId: string;\n\t\ttenantId: string;\n\t\tenvironmentId: string;\n\t\tprojectId: string;\n\t}) => {\n\t\tif (\n\t\t\trow.bindingId !== admission.bindingId ||\n\t\t\trow.generationId !== admission.generationId ||\n\t\t\trow.tenantId !== admission.tenantId ||\n\t\t\trow.environmentId !== admission.environmentId ||\n\t\t\trow.projectId !== admission.projectId\n\t\t)\n\t\t\tthrow new Error(UNAVAILABLE);\n\t};\n\tconst descendant = (agentId?: string, attemptId?: string, producerId?: string) => {\n\t\t// ponytail: bounded allocation scan; index launcher lineage if large runs exceed this ceiling.\n\t\t// Shared-spool files are evidence, never launcher authority. Only approved allocations enter this registry.\n\t\tconst claims = [...launchRegistry(child.config.spoolDir).claims.values()];\n\t\tconst parents = new Map([\n\t\t\t[child.binding.producerInstanceId, { agentId: child.config.agentId, streamId: child.binding.originStreamId }],\n\t\t]);\n\t\tconst descendants: ReturnType<typeof launchClaimParser>[] = [];\n\t\tfor (let depth = 0; depth < 64; depth++) {\n\t\t\tconst before = parents.size;\n\t\t\tfor (const claim of claims) {\n\t\t\t\tconst parent = parents.get(claim.parentProducerId);\n\t\t\t\tif (\n\t\t\t\t\t!parent ||\n\t\t\t\t\tclaim.bindingId !== admission.bindingId ||\n\t\t\t\t\tclaim.generationId !== admission.generationId ||\n\t\t\t\t\tclaim.parentStreamId !== parent.streamId ||\n\t\t\t\t\tclaim.parentAgentId !== parent.agentId ||\n\t\t\t\t\tclaim.agentId === admission.rootAgentId ||\n\t\t\t\t\tclaim.agentId === child.config.agentId ||\n\t\t\t\t\tparents.has(claim.producerId)\n\t\t\t\t)\n\t\t\t\t\tcontinue;\n\t\t\t\tparents.set(claim.producerId, { agentId: claim.agentId, streamId: claim.streamId });\n\t\t\t\tdescendants.push(claim);\n\t\t\t}\n\t\t\tif (before === parents.size) break;\n\t\t}\n\t\tconst matches = descendants.filter(\n\t\t\t(claim) =>\n\t\t\t\t(agentId === undefined || claim.agentId === agentId) &&\n\t\t\t\t(attemptId === undefined || claim.attemptId === attemptId) &&\n\t\t\t\t(producerId === undefined || claim.producerId === producerId),\n\t\t);\n\t\tif (matches.length !== 1) throw new Error(UNAVAILABLE);\n\t\treturn matches[0]!;\n\t};\n\tconst authorize = (producer: string, authorization: unknown) => {\n\t\tif (typeof authorization !== \"string\") throw new Error(UNAVAILABLE);\n\t\tconst proof = parseDhWorkloadAuthorizationHeader(authorization);\n\t\tconst workload = workloads.get(producer);\n\t\tif (!workload || workload.hash !== createHash(\"sha256\").update(proof).digest(\"hex\")) throw new Error(UNAVAILABLE);\n\t};\n\tconst server = createServer({ allowHalfOpen: true }, (socket) => {\n\t\tif (sockets.size >= 16) {\n\t\t\tsocket.destroy();\n\t\t\treturn;\n\t\t}\n\t\tsockets.add(socket);\n\t\tsocket.once(\"close\", () => sockets.delete(socket));\n\t\tsocket.on(\"error\", () => socket.destroy());\n\t\tvoid (async () => {\n\t\t\ttry {\n\t\t\t\tconst request = rpcParser(\n\t\t\t\t\tparseDhRawJson(await readBootstrapFrame(socket), { maxBytes: MAX_BOOTSTRAP_BYTES }),\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\t!live() ||\n\t\t\t\t\tDate.now() >= Date.parse(child.workload.expiresAt) ||\n\t\t\t\t\t!timingSafeEqual(Buffer.from(secret), Buffer.from(request.secret))\n\t\t\t\t)\n\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\tconst args = request.args;\n\t\t\t\tlet result: unknown;\n\t\t\t\tswitch (request.method) {\n\t\t\t\t\tcase \"claim\": {\n\t\t\t\t\t\tif (args.length !== 1) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst claim = launchClaimParser(args[0]);\n\t\t\t\t\t\tconst parent =\n\t\t\t\t\t\t\tclaim.parentProducerId === child.binding.producerInstanceId\n\t\t\t\t\t\t\t\t? { agentId: child.config.agentId, streamId: child.binding.originStreamId }\n\t\t\t\t\t\t\t\t: descendant(undefined, undefined, claim.parentProducerId);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tclaim.bindingId !== admission.bindingId ||\n\t\t\t\t\t\t\tclaim.generationId !== admission.generationId ||\n\t\t\t\t\t\t\tclaim.parentAgentId !== parent.agentId ||\n\t\t\t\t\t\t\tclaim.parentStreamId !== parent.streamId ||\n\t\t\t\t\t\t\tclaim.state !== \"registering\"\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tresult = await authenticateLaunchClaim(session, claim);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"workload\": {\n\t\t\t\t\t\tif (args.length !== 2 || typeof args[1] !== \"string\" || !/^[0-9a-f]{64}$/.test(args[1]))\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst allocationKey = args[1];\n\t\t\t\t\t\tconst row = workloadParser(args[0]);\n\t\t\t\t\t\tsameScope(row);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trow.buildSha256 !== child.workload.buildSha256 ||\n\t\t\t\t\t\t\trow.mode !== child.workload.mode ||\n\t\t\t\t\t\t\t!Number.isFinite(Date.parse(row.expiresAt)) ||\n\t\t\t\t\t\t\tDate.parse(row.expiresAt) <= Date.now() ||\n\t\t\t\t\t\t\tDate.parse(row.expiresAt) >\n\t\t\t\t\t\t\t\tMath.min(\n\t\t\t\t\t\t\t\t\tDate.now() + 3_600_000,\n\t\t\t\t\t\t\t\t\tDate.parse(child.workload.expiresAt),\n\t\t\t\t\t\t\t\t\tDate.parse(session.childLaunch!.rootRelayExpiresAt),\n\t\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\trow.producerId === child.binding.producerInstanceId\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst claim = descendant(undefined, undefined, row.producerId);\n\t\t\t\t\t\tif (row.id !== claim.workloadId || row.streamId !== claim.streamId) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst known = workloads.get(row.producerId);\n\t\t\t\t\t\tif (!known && workloads.size >= 4096) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst proposed = { id: row.id, hash: row.secretHash, stream: row.streamId, expiresAt: row.expiresAt };\n\t\t\t\t\t\tif (known && dhCanonicalText(known) !== dhCanonicalText(proposed)) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tif (!registerTrustedTraceSecrets(session, [row.secretHash, allocationKey]))\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tresult = await port.registerSyntheticAuthority(\n\t\t\t\t\t\t\t{ ...row, expiresAt: new Date(row.expiresAt) },\n\t\t\t\t\t\t\tallocationKey,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (result !== row.id) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tworkloads.set(row.producerId, proposed);\n\t\t\t\t\t\tlaunchRegistry(child.config.spoolDir).allocationKeys.set(row.producerId, allocationKey);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"enroll\": {\n\t\t\t\t\t\tif (args.length !== 2) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst row = parseDhProducerEnrollmentRequest(args[0]);\n\t\t\t\t\t\tauthorize(row.producerInstanceId, args[1]);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trow.bindingId !== admission.bindingId ||\n\t\t\t\t\t\t\trow.generationId !== admission.generationId ||\n\t\t\t\t\t\t\trow.originStreamId !== workloads.get(row.producerInstanceId)!.stream ||\n\t\t\t\t\t\t\trow.producer.issuer !== \"cli\"\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tresult = await port.enrollProducer(row, args[1] as string);\n\t\t\t\t\t\tenrollments.set(parseDhProducerEnrollment(result).enrollmentId, row.producerInstanceId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"writer\": {\n\t\t\t\t\t\tif (args.length !== 3 || args[1] !== 1) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst row = writerParser(args[2]);\n\t\t\t\t\t\tsameScope(row);\n\t\t\t\t\t\tconst workload = workloads.get(row.producerId);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!workload ||\n\t\t\t\t\t\t\targs[0] !== workload.id ||\n\t\t\t\t\t\t\trow.streamId !== workload.stream ||\n\t\t\t\t\t\t\t(row.attemptId === undefined && row.recordKind !== \"agent.spawned\")\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst claim = descendant(row.agentId, row.attemptId);\n\t\t\t\t\t\tconst parentKind =\n\t\t\t\t\t\t\t(DESCENDANT_KINDS as readonly string[]).includes(row.recordKind) ||\n\t\t\t\t\t\t\t(row.issuer === \"flow\" &&\n\t\t\t\t\t\t\t\t(CANCELLATION_KINDS as readonly string[]).includes(row.recordKind) &&\n\t\t\t\t\t\t\t\trow.producerId === claim.parentProducerId);\n\t\t\t\t\t\tif (parentKind) {\n\t\t\t\t\t\t\tif (row.lifecycleOwner !== (row.issuer === \"cli\" ? \"self\" : \"parent\"))\n\t\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\trow.producerId !== claim.parentProducerId ||\n\t\t\t\t\t\t\t\trow.streamId !== claim.parentStreamId ||\n\t\t\t\t\t\t\t\t(row.recordKind === \"agent.spawned\" && row.attemptId !== undefined)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst kinds: readonly string[] =\n\t\t\t\t\t\t\t\trow.issuer === \"cli\"\n\t\t\t\t\t\t\t\t\t? CHILD_KINDS\n\t\t\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t\t\t\"orchestration.decision\",\n\t\t\t\t\t\t\t\t\t\t\t\"cancellation.requested\",\n\t\t\t\t\t\t\t\t\t\t\t\"cancellation.outcome\",\n\t\t\t\t\t\t\t\t\t\t\t\"usage.reported\",\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\trow.lifecycleOwner !== \"parent\" ||\n\t\t\t\t\t\t\t\trow.producerId === child.binding.producerInstanceId ||\n\t\t\t\t\t\t\t\t!kinds.includes(row.recordKind) ||\n\t\t\t\t\t\t\t\trow.producerId !== claim.producerId ||\n\t\t\t\t\t\t\t\trow.streamId !== claim.streamId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult = await port.registerActivityWriterAuthority(workload.id, 1, row as FlowWriterRegistration);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"credential\": {\n\t\t\t\t\t\tif (args.length !== 2) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst row = credentialRequestParser(args[0]);\n\t\t\t\t\t\tconst producer = enrollments.get(row.enrollmentId);\n\t\t\t\t\t\tif (!producer) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tauthorize(producer, args[1]);\n\t\t\t\t\t\tconst issued = parseDhProducerTokenResponse(\n\t\t\t\t\t\t\tawait port.issueProducerCredential(row, args[1] as string),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!registerTrustedTraceSecrets(session, [issued.access_token])) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tresult = issued;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"delegation\": {\n\t\t\t\t\t\tif (args.length !== 1) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst row = parseDhOriginDelegation(args[0]);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trow.bindingId !== admission.bindingId ||\n\t\t\t\t\t\t\trow.relayProducerInstanceId !==\n\t\t\t\t\t\t\t\t(row.originIssuer === \"flow\"\n\t\t\t\t\t\t\t\t\t? row.originProducerInstanceId\n\t\t\t\t\t\t\t\t\t: session.childLaunch!.rootRelayProducerInstanceId) ||\n\t\t\t\t\t\t\tDate.parse(row.expiresAt) <= Date.now() ||\n\t\t\t\t\t\t\tDate.parse(row.expiresAt) >\n\t\t\t\t\t\t\t\tMath.min(\n\t\t\t\t\t\t\t\t\tDate.parse(child.workload.expiresAt),\n\t\t\t\t\t\t\t\t\tDate.parse(session.childLaunch!.rootRelayExpiresAt),\n\t\t\t\t\t\t\t\t\tDate.parse(workloads.get(row.originProducerInstanceId)?.expiresAt ?? \"\"),\n\t\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\t!workloads.has(row.originProducerInstanceId) ||\n\t\t\t\t\t\t\trow.originStreamId !== workloads.get(row.originProducerInstanceId)!.stream ||\n\t\t\t\t\t\t\tenrollments.get(row.enrollmentId) !== row.originProducerInstanceId ||\n\t\t\t\t\t\t\trow.credentialVersion !== 1 ||\n\t\t\t\t\t\t\t![\"cli\", \"flow\"].includes(row.originIssuer)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tresult = await port.registerActivityOriginDelegation(row);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!live()) throw new Error(UNAVAILABLE);\n\t\t\t\tsocket.end(privateFrame({ ok: true, result }));\n\t\t\t} catch {\n\t\t\t\tsocket.end(privateFrame({ ok: false }));\n\t\t\t}\n\t\t})();\n\t});\n\tserver.on(\"error\", () => {\n\t\tfor (const socket of sockets) socket.destroy();\n\t});\n\ttry {\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tserver.once(\"error\", reject);\n\t\t\tserver.listen(path, resolve);\n\t\t});\n\t\tchmodSync(path, 0o600);\n\t\tserver.unref();\n\t} catch {\n\t\tserver.close();\n\t\trmdirSync(dir);\n\t\tthrow new Error(UNAVAILABLE);\n\t}\n\treturn {\n\t\tdescriptor: {\n\t\t\tpath,\n\t\t\tsecret,\n\t\t\trootRelay: session.childLaunch!.rootRelayProducerInstanceId,\n\t\t\tbuildSha256: child.workload.buildSha256,\n\t\t\tmode: child.workload.mode,\n\t\t\trootRelayExpiresAt: session.childLaunch!.rootRelayExpiresAt,\n\t\t},\n\t\tclose() {\n\t\t\tfor (const socket of sockets) socket.destroy();\n\t\t\tserver.close(() => {\n\t\t\t\ttry {\n\t\t\t\t\trmdirSync(dir);\n\t\t\t\t} catch {\n\t\t\t\t\t/* already removed */\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t};\n}\nconst credentialRequestParser = dhStrictDtoParser(\"credential request\", () =>\n\tType.Object(\n\t\t{ enrollmentId: Type.String({ pattern: \"^enr_[A-Za-z0-9_-]{8,128}$\" }) },\n\t\t{ additionalProperties: false },\n\t),\n);\nconst rpcResponseParser = dhStrictDtoParser(\"launcher response\", () =>\n\tType.Union([\n\t\tType.Object({ ok: Type.Literal(true), result: Type.Unknown() }, { additionalProperties: false }),\n\t\tType.Object({ ok: Type.Literal(false) }, { additionalProperties: false }),\n\t]),\n);\nfunction remoteRegistrationPort(launcher: NonNullable<Bootstrap[\"launcher\"]>): FlowChildRegistrationPort {\n\tconst call = async (method: ReturnType<typeof rpcParser>[\"method\"], args: unknown[]) => {\n\t\tconst socket = createConnection({ path: launcher.path, allowHalfOpen: true });\n\t\ttry {\n\t\t\tconst response = readBootstrapFrame(socket);\n\t\t\tsocket.end(privateFrame({ secret: launcher.secret, method, args }));\n\t\t\tconst parsed = rpcResponseParser(parseDhRawJson(await response, { maxBytes: MAX_BOOTSTRAP_BYTES }));\n\t\t\tif (!parsed.ok) throw new Error(UNAVAILABLE);\n\t\t\treturn parsed.result;\n\t\t} finally {\n\t\t\tsocket.destroy();\n\t\t}\n\t};\n\tconst stringResult = (value: unknown): string => {\n\t\tif (typeof value !== \"string\") throw new Error(UNAVAILABLE);\n\t\treturn value;\n\t};\n\tconst port: FlowChildRegistrationPort = {\n\t\tregisterActivityChildIdentity: async () => {\n\t\t\tthrow new Error(UNAVAILABLE);\n\t\t},\n\t\tregisterSyntheticAuthority: async (row, allocationKey) =>\n\t\t\tstringResult(await call(\"workload\", [{ ...row, expiresAt: row.expiresAt.toISOString() }, allocationKey])),\n\t\tregisterActivityWriterAuthority: async (workload, version, row) =>\n\t\t\tstringResult(await call(\"writer\", [workload, version, row])),\n\t\tenrollProducer: (row, authorization) => call(\"enroll\", [row, authorization]),\n\t\tissueProducerCredential: (row, authorization) => call(\"credential\", [row, authorization]),\n\t\tregisterActivityOriginDelegation: async (row) => stringResult(await call(\"delegation\", [row])),\n\t};\n\tclaimForwarders.set(port, async (claim) => launchClaimParser(await call(\"claim\", [claim])));\n\treturn port;\n}\n\nasync function spawnChild(\n\tinvocation: ReturnType<typeof copyInvocation>,\n\tbytes: Buffer,\n\tauthorize: () => void,\n): Promise<FlowChildLaunchResult> {\n\tauthorize();\n\tconst proc = spawn(invocation.command, invocation.args, {\n\t\tcwd: invocation.cwd,\n\t\tenv: invocation.env,\n\t\tshell: false,\n\t\tdetached: invocation.processGroup === true,\n\t\tstdio: [\"ignore\", invocation.stdout, invocation.stderr, \"pipe\", \"pipe\"],\n\t});\n\tlet observedError: Error | undefined;\n\tlet resolveError!: (error: Error | undefined) => void;\n\tconst error = new Promise<Error | undefined>((resolve) => {\n\t\tresolveError = resolve;\n\t});\n\tproc.on(\"error\", (failure: Error) => {\n\t\tobservedError ??= failure;\n\t\tresolveError(observedError);\n\t});\n\tconst closed = new Promise<{ exitCode: number | null; signal: NodeJS.Signals | null }>((resolve) => {\n\t\tproc.once(\"close\", (exitCode, signal) => {\n\t\t\tresolveError(observedError);\n\t\t\tresolve({ exitCode, signal });\n\t\t});\n\t});\n\tconst control = proc.stdio[3] as Duplex;\n\tconst bootstrap = proc.stdio[4] as Writable;\n\tconst closeOwned = () => {\n\t\tcontrol?.destroy();\n\t\tbootstrap?.destroy();\n\t};\n\tproc.once(\"close\", closeOwned);\n\ttry {\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tproc.once(\"spawn\", resolve);\n\t\t\tproc.once(\"error\", reject);\n\t\t});\n\t\tauthorize();\n\t\tconst prefix = Buffer.alloc(4);\n\t\tprefix.writeUInt32BE(bytes.length);\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tbootstrap.once(\"error\", reject);\n\t\t\tbootstrap.end(Buffer.concat([prefix, bytes]), resolve);\n\t\t});\n\t\tbootstrap.destroy();\n\t\tproc.stdio[4] = null;\n\t\treturn Object.freeze({\n\t\t\tprocess: proc,\n\t\t\tcontrol,\n\t\t\tclosed,\n\t\t\terror,\n\t\t\tcancel: (signal: NodeJS.Signals = \"SIGTERM\") => proc.kill(signal),\n\t\t});\n\t} catch {\n\t\tcloseOwned();\n\t\tif (proc.pid !== undefined && proc.exitCode === null && proc.signalCode === null) proc.kill(\"SIGTERM\");\n\t\tthrow new Error(proc.pid === undefined ? \"child_spawn_failed\" : \"child_bootstrap_unconfirmed\");\n\t}\n}\n\ninterface Bootstrap {\n\tschema: \"dh.child-bootstrap/1\";\n\tconfig: TraceProducerConfig;\n\tbinding: TraceSpoolBinding;\n\tworkload: DhWorkloadBinding;\n\tenrollment: ReturnType<typeof parseDhProducerEnrollment>;\n\tdelegation: DhOriginDelegation;\n\tflowDelegation: DhOriginDelegation;\n\tcredential: DhProducerTokenResponse;\n\tcredentialExpiresAtMs: number;\n\tworkloadSecret: string;\n\tlauncher?: {\n\t\tpath: string;\n\t\tsecret: string;\n\t\trootRelay: string;\n\t\tbuildSha256: string;\n\t\tmode: string;\n\t\trootRelayExpiresAt: string;\n\t};\n\tcontrolTarget?: DhControlTarget;\n}\nconst launcherParser = dhStrictDtoParser(\"child launcher\", () =>\n\tType.Object(\n\t\t{\n\t\t\tpath: Type.String({ minLength: 1, maxLength: 256 }),\n\t\t\tsecret: Type.String({ pattern: \"^[A-Za-z0-9_-]{43}$\" }),\n\t\t\trootRelay: Type.String({ pattern: \"^prd_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\trootRelayExpiresAt: Type.String(),\n\t\t\tbuildSha256: Type.String({ pattern: \"^[0-9a-f]{64}$\" }),\n\t\t\tmode: Type.String({ minLength: 1, maxLength: 256, pattern: \"^[ -~]+$\" }),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n);\nconst bootstrapParser = dhStrictDtoParser(\"child bootstrap\", () =>\n\tType.Object(\n\t\t{\n\t\t\tschema: Type.Literal(\"dh.child-bootstrap/1\"),\n\t\t\tconfig: Type.Unknown(),\n\t\t\tbinding: Type.Unknown(),\n\t\t\tworkload: Type.Unknown(),\n\t\t\tenrollment: Type.Unknown(),\n\t\t\tdelegation: Type.Unknown(),\n\t\t\tflowDelegation: Type.Unknown(),\n\t\t\tcredential: Type.Unknown(),\n\t\t\tcredentialExpiresAtMs: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\t\tworkloadSecret: Type.String({ pattern: \"^[A-Za-z0-9_-]{43}$\" }),\n\t\t\tlauncher: Type.Unknown(),\n\t\t\tcontrolTarget: Type.Optional(Type.Unknown()),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n);\n\nfunction parseBootstrap(input: unknown): Bootstrap {\n\tconst parsed = bootstrapParser(input);\n\tconst launcher = launcherParser(parsed.launcher);\n\tif (!isAbsolute(launcher.path)) throw new Error(UNAVAILABLE);\n\tparseDhWorkloadAuthorizationHeader(`DH-Workload ${parsed.workloadSecret}`);\n\tconst binding = parseTraceSpoolBinding(parsed.binding);\n\tconst workload = parseDhWorkloadBinding(parsed.workload);\n\tconst enrollment = parseDhProducerEnrollment(parsed.enrollment);\n\tconst credential = parseDhProducerTokenResponse(parsed.credential);\n\tconst delegation = parseDhOriginDelegation(parsed.delegation);\n\tconst flowDelegation = parseDhOriginDelegation(parsed.flowDelegation);\n\tassertDhOriginDelegation(flowDelegation, {\n\t\t...flowDelegation,\n\t\tbindingId: binding.admission.bindingId,\n\t\toriginProducerInstanceId: binding.producerInstanceId,\n\t\toriginStreamId: binding.originStreamId,\n\t\toriginIssuer: \"flow\",\n\t\trelayProducerInstanceId: binding.producerInstanceId,\n\t\tenrollmentId: binding.enrollmentId,\n\t\tcredentialVersion: binding.credentialVersion,\n\t});\n\tassertDhProducerAudience(credential.audience, { ...enrollment, ...enrollment.tenantScope });\n\tassertDhOriginDelegation(delegation, {\n\t\t...delegation,\n\t\tbindingId: binding.admission.bindingId,\n\t\toriginProducerInstanceId: binding.producerInstanceId,\n\t\toriginStreamId: binding.originStreamId,\n\t\toriginIssuer: \"cli\",\n\t\trelayProducerInstanceId: delegation.relayProducerInstanceId,\n\t\tenrollmentId: binding.enrollmentId,\n\t\tcredentialVersion: binding.credentialVersion,\n\t});\n\tconst controlTarget = parsed.controlTarget === undefined ? undefined : parseDhControlTarget(parsed.controlTarget);\n\tconst config = parsed.config as TraceProducerConfig;\n\tif (\n\t\t!config ||\n\t\ttypeof config !== \"object\" ||\n\t\t!isAbsolute(config.spoolDir ?? \"\") ||\n\t\tconfig.lifecycleOwner !== \"parent\" ||\n\t\t(controlTarget !== undefined &&\n\t\t\t(controlTarget.agentId !== config.agentId ||\n\t\t\t\tcontrolTarget.attemptId !== config.attemptId ||\n\t\t\t\tcontrolTarget.generationId !== binding.generationId ||\n\t\t\t\tcontrolTarget.bindingId !== binding.admission.bindingId ||\n\t\t\t\tcontrolTarget.bindingEpoch !== binding.admission.bindingEpoch)) ||\n\t\t\"ingestToken\" in config ||\n\t\tconfig.generationId !== binding.generationId ||\n\t\tconfig.tenantScope?.environmentId !== binding.admission.environmentId ||\n\t\tconfig.tenantScope?.projectId !== binding.admission.projectId ||\n\t\tworkload.bindingId !== binding.admission.bindingId ||\n\t\tworkload.producerInstanceId !== binding.producerInstanceId ||\n\t\tworkload.issuer !== \"cli\" ||\n\t\tworkload.credentialVersion !== binding.credentialVersion ||\n\t\tenrollment.bindingId !== binding.admission.bindingId ||\n\t\tenrollment.enrollmentId !== binding.enrollmentId ||\n\t\tenrollment.producerInstanceId !== binding.producerInstanceId ||\n\t\tenrollment.originStreamId !== binding.originStreamId ||\n\t\tenrollment.generationId !== binding.generationId ||\n\t\tenrollment.issuer !== \"cli\" ||\n\t\tenrollment.credentialVersion !== binding.credentialVersion ||\n\t\tenrollment.tenantScope.environmentId !== config.tenantScope.environmentId ||\n\t\tenrollment.tenantScope.projectId !== config.tenantScope.projectId ||\n\t\t!binding.delegationIds.includes(delegation.delegationId) ||\n\t\t!binding.delegationIds.includes(flowDelegation.delegationId) ||\n\t\tDate.now() >= Date.parse(flowDelegation.expiresAt) ||\n\t\t!Number.isFinite(Date.parse(launcher.rootRelayExpiresAt)) ||\n\t\tDate.now() >= Date.parse(launcher.rootRelayExpiresAt) ||\n\t\tDate.parse(workload.expiresAt) > Date.parse(launcher.rootRelayExpiresAt) ||\n\t\tDate.now() >= Date.parse(workload.expiresAt) ||\n\t\tDate.now() >= Date.parse(delegation.expiresAt) ||\n\t\tDate.now() >= parsed.credentialExpiresAtMs\n\t)\n\t\tthrow new Error(UNAVAILABLE);\n\tconst read = readTraceProducerConfig(buildChildTraceEnv({ ...config, agentId: config.parentAgentId! }, config).set);\n\tif (!read.enabled) throw new Error(UNAVAILABLE);\n\tconst normalized = { ...read.config, ...(config.ingestUrl ? { ingestUrl: config.ingestUrl } : {}) };\n\tif (\n\t\tdhCanonicalText(normalized) !== dhCanonicalText(config) ||\n\t\ttraceCaptureDisabledReason(config, activationFor(config, binding)) !== undefined\n\t)\n\t\tthrow new Error(UNAVAILABLE);\n\tif (dhCanonicalText(readTraceStreamBinding(config.spoolDir, binding.originStreamId)) !== dhCanonicalText(binding))\n\t\tthrow new Error(UNAVAILABLE);\n\treturn {\n\t\tschema: \"dh.child-bootstrap/1\",\n\t\tconfig,\n\t\tbinding,\n\t\tworkload,\n\t\tenrollment,\n\t\tdelegation,\n\t\tflowDelegation,\n\t\tcredential,\n\t\tcredentialExpiresAtMs: parsed.credentialExpiresAtMs,\n\t\tworkloadSecret: parsed.workloadSecret,\n\t\tlauncher,\n\t\t...(controlTarget ? { controlTarget } : {}),\n\t};\n}\n\nlet bootstrapRead = false;\nlet heldBootstrap: Bootstrap | undefined;\nlet inheritedControlTarget: DhControlTarget | undefined;\n\n/** Internal mode-owner hook. A validated fd4 bootstrap, not environment or descriptor presence, grants fd3 custody. */\nexport function getFlowChildControlTarget(): DhControlTarget | undefined {\n\tconst target = inheritedControlTarget;\n\tinheritedControlTarget = undefined;\n\treturn target;\n}\n\n/** Called before extensions/tools at CLI startup. The environment selector is not authority. */\nexport async function initializeFlowChildBootstrap(env: NodeJS.ProcessEnv): Promise<void> {\n\tconst selector = env[BOOTSTRAP_FD_ENV];\n\tdelete env[BOOTSTRAP_FD_ENV];\n\tif (selector === undefined) return;\n\tfor (const key of Object.keys(env)) {\n\t\tif (key.toUpperCase() === TRACE_ENV.ingestToken) delete env[key];\n\t}\n\tif (bootstrapRead || selector !== \"4\" || process.platform === \"win32\") throw new Error(UNAVAILABLE);\n\tbootstrapRead = true;\n\tlet socket: Readable | undefined;\n\ttry {\n\t\tconst stat = fstatSync(4);\n\t\tif (!stat.isFIFO() && !stat.isSocket()) throw new Error(UNAVAILABLE);\n\t\t// Bun's net.Socket({fd}) does not read inherited stdio descriptors. Its fs reader does.\n\t\tsocket = createReadStream(\"\", { fd: 4, autoClose: true });\n\t\tconst bytes = await readBootstrapFrame(socket);\n\t\theldBootstrap = parseBootstrap(parseDhRawJson(bytes, { maxBytes: MAX_BOOTSTRAP_BYTES }));\n\t\tinheritedControlTarget = heldBootstrap.controlTarget;\n\t\tfor (const key of Object.keys(env)) {\n\t\t\tif (Object.values(TRACE_ENV).some((name) => name === key.toUpperCase())) delete env[key];\n\t\t}\n\t\tconst config = heldBootstrap.config;\n\t\tconst childEnv = buildChildTraceEnv({ ...config, agentId: config.parentAgentId! }, config);\n\t\tObject.assign(env, childEnv.set);\n\t\tif (config.ingestUrl) env[TRACE_ENV.ingestUrl] = config.ingestUrl;\n\t} catch {\n\t\theldBootstrap = undefined;\n\t\tthrow new Error(UNAVAILABLE);\n\t} finally {\n\t\tif (socket) socket.destroy();\n\t\telse {\n\t\t\ttry {\n\t\t\t\tcloseSync(4);\n\t\t\t} catch {\n\t\t\t\t/* descriptor absent */\n\t\t\t}\n\t\t}\n\t}\n}\n\nasync function readBootstrapFrame(stream: Readable): Promise<Buffer> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst chunks: Buffer[] = [];\n\t\tlet total = 0;\n\t\tconst timer = setTimeout(() => {\n\t\t\tstream.destroy();\n\t\t\treject(new Error(UNAVAILABLE));\n\t\t}, 5000);\n\t\tstream.on(\"data\", (chunk: Buffer) => {\n\t\t\ttotal += chunk.length;\n\t\t\tif (total > MAX_BOOTSTRAP_BYTES + 4) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tstream.destroy();\n\t\t\t\treject(new Error(UNAVAILABLE));\n\t\t\t} else chunks.push(chunk);\n\t\t});\n\t\tstream.once(\"error\", () => {\n\t\t\tclearTimeout(timer);\n\t\t\treject(new Error(UNAVAILABLE));\n\t\t});\n\t\tstream.once(\"end\", () => {\n\t\t\tclearTimeout(timer);\n\t\t\tconst frame = Buffer.concat(chunks);\n\t\t\tif (frame.length < 5 || frame.readUInt32BE(0) !== frame.length - 4) reject(new Error(UNAVAILABLE));\n\t\t\telse resolve(frame.subarray(4));\n\t\t});\n\t});\n}\n\nfunction activationFor(config: TraceProducerConfig, binding: TraceSpoolBinding): TraceCaptureActivation {\n\treturn {\n\t\tenabled: true,\n\t\tenvironment: \"local\",\n\t\tpolicy: {\n\t\t\tkind: \"synthetic-local\",\n\t\t\trevision: binding.admission.policyRevision,\n\t\t\tsyntheticOnly: true,\n\t\t\tenvironmentIds: [binding.admission.environmentId],\n\t\t\tprojectIds: [binding.admission.projectId],\n\t\t},\n\t\tsyntheticAttestation: {\n\t\t\tsyntheticBindings: true,\n\t\t\tnonProductionResources: true,\n\t\t\tspoolDir: config.spoolDir,\n\t\t\tingestUrl: config.ingestUrl,\n\t\t},\n\t};\n}\n\n/** Capture-only consumer. Private credentials stay in closures, never in config or Flow objects. */\nexport function consumeFlowChildBootstrap():\n\t| {\n\t\t\tconfig: TraceProducerConfig;\n\t\t\tspoolBinding: TraceSpoolBinding;\n\t\t\tactivation: TraceCaptureActivation;\n\t\t\tprivateSecrets: readonly string[];\n\t\t\tchildLaunch: FlowChildLaunchOptions;\n\t\t\tresolveStreamTransport: (binding: TraceSpoolBinding, signal?: AbortSignal) => Promise<TraceIngestTransport>;\n\t }\n\t| undefined {\n\tconst bootstrap = heldBootstrap;\n\theldBootstrap = undefined;\n\tif (!bootstrap) return undefined;\n\tconst { config, binding, credential } = bootstrap;\n\treturn {\n\t\tconfig,\n\t\tspoolBinding: binding,\n\t\tprivateSecrets: [\n\t\t\tbootstrap.workloadSecret,\n\t\t\tcredential.access_token,\n\t\t\tbootstrap.launcher!.secret,\n\t\t\tcreateHash(\"sha256\").update(bootstrap.workloadSecret).digest(\"hex\"),\n\t\t\tcreateHmac(\"sha256\", bootstrap.workloadSecret).update(\"dh-launch-alloc\").digest(\"hex\"),\n\t\t],\n\t\tchildLaunch: {\n\t\t\tregistrationPort: remoteRegistrationPort(bootstrap.launcher!),\n\t\t\trootRelayProducerInstanceId: bootstrap.launcher!.rootRelay,\n\t\t\trootRelayExpiresAt: bootstrap.launcher!.rootRelayExpiresAt,\n\t\t\twriterWorkload: bootstrap.workload,\n\t\t\tallocationKey: createHmac(\"sha256\", bootstrap.workloadSecret).update(\"dh-launch-alloc\").digest(\"hex\"),\n\t\t\tbuildSha256: bootstrap.launcher!.buildSha256,\n\t\t\tmode: bootstrap.launcher!.mode,\n\t\t},\n\t\tactivation: activationFor(config, binding),\n\t\tasync resolveStreamTransport(requested) {\n\t\t\tif (\n\t\t\t\tdhCanonicalText(requested) !== dhCanonicalText(binding) ||\n\t\t\t\t!config.ingestUrl ||\n\t\t\t\tDate.now() >= Date.parse(bootstrap.workload.expiresAt) ||\n\t\t\t\tDate.now() >= bootstrap.credentialExpiresAtMs\n\t\t\t)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\tconst reauthorize = () => {\n\t\t\t\tif (\n\t\t\t\t\tDate.now() >= Date.parse(bootstrap.workload.expiresAt) ||\n\t\t\t\t\tDate.now() >= bootstrap.credentialExpiresAtMs ||\n\t\t\t\t\tDate.now() >= Date.parse(bootstrap.flowDelegation.expiresAt)\n\t\t\t\t)\n\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\tingestUrl: config.ingestUrl,\n\t\t\t\ttoken: credential.access_token,\n\t\t\t\tscope: config.tenantScope,\n\t\t\t\tallowInsecureLoopback: true,\n\t\t\t\treauthorize,\n\t\t\t};\n\t\t\tconst direct = new HttpTraceIngestTransport(options);\n\t\t\tconst flow = new HttpTraceIngestTransport({\n\t\t\t\t...options,\n\t\t\t\toriginDelegationId: bootstrap.flowDelegation.delegationId,\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tstartsRequestsSynchronously: true,\n\t\t\t\tscope: direct.scope,\n\t\t\t\treauthorize,\n\t\t\t\tasync sendBatch(batch, signal) {\n\t\t\t\t\treauthorize();\n\t\t\t\t\tif (batch.events.some((event) => ![\"cli\", \"flow\"].includes(event.producer.issuer)))\n\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\tlet previous = batch.previousAckedSequence;\n\t\t\t\t\tconst accepted: { eventIds: string[]; artifactIds: string[] } = { eventIds: [], artifactIds: [] };\n\t\t\t\t\tconst rejected: Awaited<ReturnType<TraceIngestTransport[\"sendBatch\"]>>[\"rejected\"] = [];\n\t\t\t\t\tlet receivedAt = \"\";\n\t\t\t\t\tlet firstRequest = true;\n\t\t\t\t\tconst send = async (\n\t\t\t\t\t\tevents: readonly DhEventV1[],\n\t\t\t\t\t\tartifacts: typeof batch.artifacts,\n\t\t\t\t\t\ttransport: HttpTraceIngestTransport,\n\t\t\t\t\t) => {\n\t\t\t\t\t\treauthorize();\n\t\t\t\t\t\tconst sent = { streamId: batch.streamId, previousAckedSequence: previous, events, artifacts };\n\t\t\t\t\t\tlet request: ReturnType<TraceIngestTransport[\"sendBatch\"]> | undefined;\n\t\t\t\t\t\tif (firstRequest) {\n\t\t\t\t\t\t\t// The uploader's synchronous initiation gate covers the first request, not later awaits.\n\t\t\t\t\t\t\tfirstRequest = false;\n\t\t\t\t\t\t\trequest = transport.sendBatch(sent, signal);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst gated = withQuarantineGate(config.spoolDir, () => {\n\t\t\t\t\t\t\t\treauthorize();\n\t\t\t\t\t\t\t\trequest = transport.sendBatch(sent, signal);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (gated.status !== \"ok\") {\n\t\t\t\t\t\t\t\tvoid request?.catch(() => undefined);\n\t\t\t\t\t\t\t\tthrow new QuarantineGateError(\n\t\t\t\t\t\t\t\t\tgated.status === \"quarantined\" || isSpoolQuarantinedInProcess(config.spoolDir),\n\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst ack = await request!;\n\t\t\t\t\t\tconst validated = validateDhBatchAck(sent, ack, { previousAckedSequence: previous });\n\t\t\t\t\t\tif (validated.eventPrefix.kind === \"prefix\") previous = validated.eventPrefix.throughSequence;\n\t\t\t\t\t\taccepted.eventIds.push(...ack.accepted.eventIds);\n\t\t\t\t\t\taccepted.artifactIds.push(...ack.accepted.artifactIds);\n\t\t\t\t\t\trejected.push(...ack.rejected);\n\t\t\t\t\t\treceivedAt = ack.receivedAt;\n\t\t\t\t\t\treturn ack.accepted.eventIds.length === events.length;\n\t\t\t\t\t};\n\t\t\t\t\tlet artifacts = batch.artifacts;\n\t\t\t\t\tif (batch.events.length === 0 || (artifacts.length > 0 && batch.events[0]!.producer.issuer === \"flow\")) {\n\t\t\t\t\t\tawait send([], artifacts, direct);\n\t\t\t\t\t\tartifacts = [];\n\t\t\t\t\t}\n\t\t\t\t\t// One delegation header names one issuer. Keep the shared stream sequence and ACK prefix unchanged.\n\t\t\t\t\tfor (let start = 0; start < batch.events.length; ) {\n\t\t\t\t\t\tconst issuer = batch.events[start]!.producer.issuer;\n\t\t\t\t\t\tlet end = start + 1;\n\t\t\t\t\t\twhile (end < batch.events.length && batch.events[end]!.producer.issuer === issuer) end++;\n\t\t\t\t\t\tif (!(await send(batch.events.slice(start, end), artifacts, issuer === \"flow\" ? flow : direct)))\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tartifacts = [];\n\t\t\t\t\t\tstart = end;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tschema: \"dh.ack/1\",\n\t\t\t\t\t\tstreamId: batch.streamId,\n\t\t\t\t\t\tackedThroughSequence: Math.max(previous, 0),\n\t\t\t\t\t\taccepted,\n\t\t\t\t\t\trejected,\n\t\t\t\t\t\treceivedAt,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tputArtifact(upload, signal) {\n\t\t\t\t\treauthorize();\n\t\t\t\t\treturn direct.putArtifact(upload, signal);\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"child-launch.js","sourceRoot":"","sources":["../../../src/humain/trace-capture/child-launch.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ChildProcess, spawn } from \"node:child_process\";\nimport { createHash, createHmac, randomBytes, timingSafeEqual } from \"node:crypto\";\nimport { chmodSync, closeSync, createReadStream, fstatSync, mkdtempSync, rmdirSync } from \"node:fs\";\nimport { createConnection, createServer, type Socket } from \"node:net\";\nimport { tmpdir } from \"node:os\";\nimport { isAbsolute, join } from \"node:path\";\nimport type { Duplex, Readable, Writable } from \"node:stream\";\nimport {\n\tassertDhOriginDelegation,\n\tassertDhProducerAudience,\n\ttype DhControlTarget,\n\ttype DhEventKind,\n\ttype DhEventV1,\n\ttype DhOriginDelegation,\n\ttype DhOutcome,\n\ttype DhProducerEnrollmentRequest,\n\ttype DhProducerTokenResponse,\n\ttype DhReceiptOwner,\n\ttype DhRetryAdmissionContext,\n\ttype DhWorkloadBinding,\n\tdhCanonicalText,\n\tdhStrictDtoParser,\n\tparseDhControlTarget,\n\tparseDhOriginDelegation,\n\tparseDhProducerEnrollment,\n\tparseDhProducerEnrollmentRequest,\n\tparseDhProducerTokenResponse,\n\tparseDhRawJson,\n\tparseDhWorkloadAuthorizationHeader,\n\tparseDhWorkloadBinding,\n\tvalidateDhBatchAck,\n} from \"@humain/humain-code-contracts/trace\";\nimport { Type } from \"typebox\";\nimport type { ExtensionContext } from \"../../core/extensions/types.ts\";\nimport {\n\tparseTraceSpoolBinding,\n\treadTraceStreamBinding,\n\ttype TraceSpoolBinding,\n\twriteTraceStreamBinding,\n} from \"../../core/trace/binding.ts\";\nimport {\n\tbuildChildTraceEnv,\n\treadTraceProducerConfig,\n\tTRACE_ENV,\n\ttype TraceCaptureActivation,\n\ttype TraceProducerConfig,\n\ttraceCaptureDisabledReason,\n} from \"../../core/trace/config.ts\";\nimport { HttpTraceIngestTransport, type TraceIngestTransport } from \"../../core/trace/ingest-transport.ts\";\nimport {\n\tacquireTraceSpoolLock,\n\tensureTraceSpoolDirs,\n\tfsyncDir,\n\treadTraceStateFile,\n\treadTraceStream,\n\ttraceStreamPrefixChain,\n\tverifyTraceStreamOffset,\n\twriteTraceFileAtomic,\n} from \"../../core/trace/journal.ts\";\nimport { isSpoolQuarantinedInProcess, QuarantineGateError, withQuarantineGate } from \"../../core/trace/quarantine.ts\";\nimport type { TraceRecorder } from \"../../core/trace/recorder.ts\";\nimport { traceCursorPath } from \"../../core/trace/uploader.ts\";\nimport { registerTrustedTraceSecrets, type TrustedTraceSession } from \"./active-recorder.ts\";\nimport { getFlowTraceProducer, resolveTrustedTraceSession } from \"./flow-producer.ts\";\n\nconst MAX_BOOTSTRAP_BYTES = 65_536;\nconst BOOTSTRAP_FD_ENV = \"HUMAIN_TERMINAL_TRACE_BOOTSTRAP_FD\";\nconst UNAVAILABLE = \"binding_unavailable\";\nconst id = (prefix: string) => `${prefix}_${randomBytes(24).toString(\"base64url\")}`;\n\n/** Internal Forge launcher-service inputs, not a new HTTP registration endpoint. */\nexport interface FlowWorkloadRegistration {\n\tid: string;\n\tbindingId: string;\n\tgenerationId: string;\n\ttenantId: string;\n\tenvironmentId: string;\n\tprojectId: string;\n\tproducerId: string;\n\tstreamId: string;\n\tissuer: \"cli\";\n\tsecretHash: string;\n\tbuildSha256: string;\n\tmode: string;\n\tcredentialVersion: number;\n\texpiresAt: Date;\n}\nexport interface FlowWriterRegistration {\n\tid: string;\n\tbindingId: string;\n\tgenerationId: string;\n\ttenantId: string;\n\tenvironmentId: string;\n\tprojectId: string;\n\tproducerId: string;\n\tstreamId: string;\n\tissuer: \"cli\" | \"flow\";\n\trecordKind: DhEventKind | \"artifact\";\n\tagentId: string;\n\tattemptId?: string;\n\tlifecycleOwner: \"self\" | \"parent\";\n\tresolveUnknown: boolean;\n\tcontinuationTarget: boolean;\n}\n\n/** Privileged fixture launcher supplies this privately. Every operation reconciles identical replay. */\nexport interface FlowChildRegistrationPort {\n\t/** Privileged launcher maps allocated identities before registering any writer authority. Replays must match. */\n\tregisterActivityChildIdentity(registration: {\n\t\tbindingId: string;\n\t\tgenerationId: string;\n\t\tparentAgentId: string;\n\t\tagentId: string;\n\t\tattemptId: string;\n\t}): Promise<void>;\n\t/** Allocator material travels only on the private launcher RPC, never to the authority registry. */\n\tregisterSyntheticAuthority(registration: FlowWorkloadRegistration, allocationKey?: string): Promise<string>;\n\tregisterActivityWriterAuthority(\n\t\tworkloadId: string,\n\t\tcredentialVersion: number,\n\t\tregistration: FlowWriterRegistration,\n\t): Promise<string>;\n\tenrollProducer(request: DhProducerEnrollmentRequest, authorization: string): Promise<unknown>;\n\tissueProducerCredential(request: { enrollmentId: string }, authorization: string): Promise<unknown>;\n\tregisterActivityOriginDelegation(registration: DhOriginDelegation): Promise<string>;\n}\n\n/** Trusted capture configuration. Never exposed through a Flow capability. */\nexport interface FlowChildLaunchOptions {\n\tregistrationPort: FlowChildRegistrationPort;\n\trootRelayProducerInstanceId: string;\n\t/** Trusted launcher expiry; inherited descendants cannot outlive this relay. */\n\trootRelayExpiresAt: string;\n\t/** Present only in a bootstrapped writer; grants exact descendant identities on its stream. */\n\twriterWorkload?: DhWorkloadBinding;\n\t/** Private workload-derived allocator key; never exposed through the Flow capability. */\n\tallocationKey?: string;\n\tbuildSha256: string;\n\tmode: string;\n}\nexport interface FlowChildLaunchInvocation {\n\tcommand: string;\n\targs: readonly string[];\n\tcwd?: string;\n\tenv?: NodeJS.ProcessEnv;\n\tstdin?: \"pipe\" | \"ignore\";\n\tstdout?: \"pipe\" | \"inherit\" | \"ignore\";\n\tstderr?: \"pipe\" | \"inherit\" | \"ignore\";\n\t/** POSIX detached spawn: process.pid is the new process-group id for caller-owned group cancellation. */\n\tprocessGroup?: boolean;\n}\nexport interface FlowChildLaunchIdentity {\n\tgenerationId: string;\n\tagentId: string;\n\tattemptId: string;\n\tbindingId: string;\n\tbindingEpoch: string;\n\tsessionEpoch: string;\n}\nexport interface FlowChildLaunchResult {\n\treadonly process: ChildProcess;\n\treadonly control: Duplex;\n\t/** Observed from spawn time, including close before launch resolves. Never rejects. */\n\treadonly closed: Promise<{ exitCode: number | null; signal: NodeJS.Signals | null }>;\n\t/** First observed process error, or undefined after an error-free close. Never rejects. */\n\treadonly error: Promise<Error | undefined>;\n\t/** Only this recorded direct process is signalled. */\n\tcancel(signal?: NodeJS.Signals): boolean;\n}\nexport interface FlowChildLaunchHandle {\n\treadonly streamId: string;\n\treadonly producerInstanceId: string;\n\treadonly enrollmentId: string;\n\treadonly delegationIds: readonly string[];\n\treadonly identity: Readonly<FlowChildLaunchIdentity>;\n\tlaunch(invocation: FlowChildLaunchInvocation): Promise<FlowChildLaunchResult>;\n}\nexport interface FlowChildLaunchHost {\n\tprepareChildLaunch(\n\t\tagentId: string,\n\t\tattemptId: string,\n\t\toptions: { launchId: string },\n\t): Promise<FlowChildLaunchHandle>;\n\tgetRetryAdmissionContext(input: { agentId: string; sourceAttemptId: string }): DhRetryAdmissionContext | undefined;\n}\n\n/** Registration failures can contain credentials. Only explicitly retryable failures are replayed. */\nasync function reconcile<T>(operation: () => Promise<T>): Promise<T> {\n\tfor (let attempt = 0; attempt < 3; attempt++) {\n\t\ttry {\n\t\t\treturn await operation();\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\tattempt === 2 ||\n\t\t\t\ttypeof error !== \"object\" ||\n\t\t\t\terror === null ||\n\t\t\t\t!(\"retryable\" in error) ||\n\t\t\t\terror.retryable !== true\n\t\t\t)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t}\n\t}\n\tthrow new Error(UNAVAILABLE);\n}\n\nfunction hostEvents(session: TrustedTraceSession): DhEventV1[] {\n\tconst config = session.recorder.config;\n\tconst binding = readTraceStreamBinding(config.spoolDir, session.recorder.streamId);\n\tif (dhCanonicalText(binding.admission) !== dhCanonicalText(session.admission)) throw new Error(UNAVAILABLE);\n\t// ponytail: one host journal in memory; use a filtered scanner if long-lived hosts exceed this ceiling.\n\tconst read = readTraceStream(join(config.spoolDir, \"streams\", `${session.recorder.streamId}.jsonl`));\n\tif (read.corrupt || read.tornTail) throw new Error(UNAVAILABLE);\n\treturn read.records.flatMap((record) => (record.t === \"event\" ? [record.r] : []));\n}\n\nconst allocationCounters = new WeakMap<TraceRecorder, number>();\n\n/** Scoped minting: inherited writers cannot select identities allocated to another workload. */\nexport function mintChildLaunchId(session: TrustedTraceSession, prefix: \"agt\" | \"att\"): string {\n\tif (!session.childLaunch?.writerWorkload) return id(prefix);\n\tconst key = session.childLaunch.allocationKey;\n\tconst counter = (allocationCounters.get(session.recorder) ?? 0) + 1;\n\tif (!key || !/^[0-9a-f]{64}$/.test(key) || counter > 4096) throw new Error(UNAVAILABLE);\n\tallocationCounters.set(session.recorder, counter);\n\treturn `${prefix}_${counter}_${createHmac(\"sha256\", Buffer.from(key, \"hex\")).update(`${prefix}:${counter}`).digest(\"hex\")}`;\n}\n\nconst allocatedAttempts = new WeakMap<TraceRecorder, Map<string, { agentId: string; parentAttemptId: string }>>();\n\n/** Internal allocation hook: journal content alone never grants launch authority. */\nexport function noteChildLaunchAllocation(recorder: TraceRecorder, agentId: string, attemptId: string): void {\n\tlet attempts = allocatedAttempts.get(recorder);\n\tif (!attempts) {\n\t\tattempts = new Map();\n\t\tallocatedAttempts.set(recorder, attempts);\n\t}\n\tif (attempts.size >= 4096) throw new Error(UNAVAILABLE);\n\tattempts.set(attemptId, { agentId, parentAttemptId: recorder.ownAttemptId });\n}\n\nfunction directStart(session: TrustedTraceSession, agentId: string, attemptId: string): DhEventV1 {\n\tconst allocation = allocatedAttempts.get(session.recorder)?.get(attemptId);\n\t// The root launcher owns its native recorder. Inherited writers need an actual host allocation,\n\t// not a claimed start they appended to their own journal.\n\tif (\n\t\tsession.childLaunch?.writerWorkload &&\n\t\t(allocation?.agentId !== agentId || allocation.parentAttemptId !== session.recorder.ownAttemptId)\n\t)\n\t\tthrow new Error(UNAVAILABLE);\n\tconst events = hostEvents(session);\n\tconst starts = events.filter(\n\t\t(event) => event.kind === \"attempt.started\" && event.agentId === agentId && event.attemptId === attemptId,\n\t);\n\tconst start = starts[0];\n\tif (\n\t\tstarts.length !== 1 ||\n\t\t!start ||\n\t\tstart.parentAgentId !== session.recorder.config.agentId ||\n\t\t!events.some(\n\t\t\t(event) =>\n\t\t\t\tevent.kind === \"agent.spawned\" && event.agentId === agentId && event.parentAgentId === start.parentAgentId,\n\t\t) ||\n\t\tevents.some((event) => event.kind === \"attempt.finished\" && event.attemptId === attemptId)\n\t)\n\t\tthrow new Error(UNAVAILABLE);\n\treturn start;\n}\n\n/** Prefix cursor is a committed metadata receipt; verify its entire journal prefix before trusting it. */\nexport function retryContext(\n\tsession: TrustedTraceSession,\n\tinput: { agentId: string; sourceAttemptId: string },\n): DhRetryAdmissionContext | undefined {\n\ttry {\n\t\tconst spool = session.recorder.config.spoolDir;\n\t\tconst stream = session.recorder.streamId;\n\t\tconst binding = readTraceStreamBinding(spool, stream);\n\t\tconst cursor: unknown = parseDhRawJson(Buffer.from(readTraceStateFile(traceCursorPath(spool, stream), 65_536)), {\n\t\t\tmaxBytes: 65_536,\n\t\t});\n\t\tif (cursor === null || Array.isArray(cursor) || typeof cursor !== \"object\") return undefined;\n\t\tconst { ackedThroughSequence, ackedByteOffset, ackedRecordDigest, ackedPrefixDigest } = cursor as Record<\n\t\t\tstring,\n\t\t\tunknown\n\t\t>;\n\t\tconst path = join(spool, \"streams\", `${stream}.jsonl`);\n\t\tif (\n\t\t\ttypeof ackedThroughSequence !== \"number\" ||\n\t\t\t!Number.isSafeInteger(ackedThroughSequence) ||\n\t\t\tackedThroughSequence < 0 ||\n\t\t\ttypeof ackedByteOffset !== \"number\" ||\n\t\t\ttypeof ackedRecordDigest !== \"string\" ||\n\t\t\ttypeof ackedPrefixDigest !== \"string\" ||\n\t\t\t!verifyTraceStreamOffset(path, ackedByteOffset, {\n\t\t\t\tstreamId: stream,\n\t\t\t\tsequence: ackedThroughSequence,\n\t\t\t\tdigest: ackedRecordDigest,\n\t\t\t}) ||\n\t\t\ttraceStreamPrefixChain(path, ackedByteOffset) !== ackedPrefixDigest\n\t\t)\n\t\t\treturn undefined;\n\t\tconst events = hostEvents(session).filter((event) => event.sequence <= ackedThroughSequence);\n\t\tconst starts = events.filter((event) => event.kind === \"attempt.started\");\n\t\tconst terminals = events.filter((event) => event.kind === \"attempt.finished\");\n\t\tif (\n\t\t\t!starts.some((event) => event.agentId === input.agentId && event.attemptId === input.sourceAttemptId) ||\n\t\t\t!terminals.some((event) => event.agentId === input.agentId && event.attemptId === input.sourceAttemptId)\n\t\t)\n\t\t\treturn undefined;\n\t\tconst amendments = events.filter((event) => event.kind === \"event.amendment\");\n\t\tconst receiptOwners = new Map<string, DhReceiptOwner>(\n\t\t\tevents.map((event) => [\n\t\t\t\tevent.eventId,\n\t\t\t\t{\n\t\t\t\t\tbindingId: binding.admission.bindingId,\n\t\t\t\t\toriginProducerInstanceId: binding.producerInstanceId,\n\t\t\t\t\toriginStreamId: stream,\n\t\t\t\t\toriginIssuer: event.producer.issuer,\n\t\t\t\t},\n\t\t\t]),\n\t\t);\n\t\tconst authorizedAmendmentEventIds = new Set<string>();\n\t\tfor (const amendment of amendments) {\n\t\t\tconst target = terminals.find((event) => event.eventId === amendment.payload.amendsEventId);\n\t\t\tif (target && target.producer.issuer === amendment.producer.issuer && target.streamId === amendment.streamId)\n\t\t\t\tauthorizedAmendmentEventIds.add(amendment.eventId);\n\t\t}\n\t\tconst retryClaims = new Map<string, string>();\n\t\tfor (const start of starts)\n\t\t\tif (start.retryOfAttemptId !== undefined && start.attemptId !== undefined) {\n\t\t\t\tconst prior = retryClaims.get(start.retryOfAttemptId);\n\t\t\t\tif (prior !== undefined && prior !== start.attemptId) return undefined;\n\t\t\t\tretryClaims.set(start.retryOfAttemptId, start.attemptId);\n\t\t\t}\n\t\treturn { starts, terminals, amendments, receiptOwners, authorizedAmendmentEventIds, retryClaims };\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nconst hosts = new WeakMap<TrustedTraceSession, { ownAttemptId: string; host: FlowChildLaunchHost }>();\nconst launchedChildren = new WeakMap<FlowChildLaunchHandle, FlowChildLaunchResult>();\n\n/** Internal C15 custody lookup: only a C14 handle that actually launched has a channel. */\nexport function resolveFlowChildLaunch(handle: FlowChildLaunchHandle): FlowChildLaunchResult | undefined {\n\treturn launchedChildren.get(handle);\n}\n\n/** Runtime-only host. No launcher or writer credentials are reachable through its public object. */\nexport function getFlowChildLaunchHost(ctx: ExtensionContext): FlowChildLaunchHost | undefined {\n\tconst session = resolveTrustedTraceSession(ctx);\n\tif (!session?.childLaunch || !session.admission) return undefined;\n\tconst cached = hosts.get(session);\n\tif (cached?.ownAttemptId === session.recorder.ownAttemptId) return cached.host;\n\tconst producer = getFlowTraceProducer(ctx);\n\tif (!producer) return undefined;\n\tconst ownAttemptId = session.recorder.ownAttemptId;\n\tconst live = () => resolveTrustedTraceSession(ctx) === session && session.recorder.ownAttemptId === ownAttemptId;\n\tconst launches = new Map<string, { agentId: string; attemptId: string; promise: Promise<FlowChildLaunchHandle> }>();\n\tconst host: FlowChildLaunchHost = Object.freeze({\n\t\tasync prepareChildLaunch(agentId: string, attemptId: string, options: { launchId: string }) {\n\t\t\tif (!live() || !/^[A-Za-z0-9_.-]{1,128}$/.test(options?.launchId ?? \"\")) throw new Error(UNAVAILABLE);\n\t\t\tconst start = directStart(session, agentId, attemptId);\n\t\t\tconst prior = launches.get(options.launchId);\n\t\t\tif (prior) {\n\t\t\t\tif (prior.agentId !== agentId || prior.attemptId !== attemptId) throw new Error(UNAVAILABLE);\n\t\t\t\treturn prior.promise;\n\t\t\t}\n\t\t\tif (launches.size >= 4096) throw new Error(UNAVAILABLE);\n\t\t\tconst finish =\n\t\t\t\tstart.producer.issuer === \"flow\"\n\t\t\t\t\t? producer.finishChildAttempt.bind(producer)\n\t\t\t\t\t: session.recorder.finishChildAttempt.bind(session.recorder);\n\t\t\tconst promise = registerChild(session, start, options.launchId, live, finish);\n\t\t\tlaunches.set(options.launchId, { agentId, attemptId, promise });\n\t\t\treturn promise;\n\t\t},\n\t\tgetRetryAdmissionContext(input: { agentId: string; sourceAttemptId: string }) {\n\t\t\treturn live() ? retryContext(session, input) : undefined;\n\t\t},\n\t});\n\thosts.set(session, { ownAttemptId, host });\n\treturn host;\n}\n\nexport async function prepareChildLaunch(\n\tctx: ExtensionContext,\n\tagentId: string,\n\tattemptId: string,\n\toptions: { launchId: string },\n): Promise<FlowChildLaunchHandle> {\n\tconst host = getFlowChildLaunchHost(ctx);\n\tif (!host) throw new Error(UNAVAILABLE);\n\treturn host.prepareChildLaunch(agentId, attemptId, options);\n}\n\nconst CHILD_KINDS: readonly (DhEventKind | \"artifact\")[] = [\n\t\"model.request\",\n\t\"model.response\",\n\t\"tool.call\",\n\t\"tool.result\",\n\t\"file.change\",\n\t\"usage.reported\",\n\t\"capture.health\",\n\t\"artifact\",\n];\n\nconst DESCENDANT_KINDS: readonly DhEventKind[] = [\n\t\"agent.spawned\",\n\t\"attempt.started\",\n\t\"attempt.finished\",\n\t\"attempt.retry_scheduled\",\n];\nconst CANCELLATION_KINDS: readonly DhEventKind[] = [\"cancellation.requested\", \"cancellation.outcome\"];\n\nconst launchClaimParser = dhStrictDtoParser(\"launch ownership\", () =>\n\tType.Object(\n\t\t{\n\t\t\tschema: Type.Literal(\"dh.launch-ownership/1\"),\n\t\t\tfingerprint: Type.String({ pattern: \"^[0-9a-f]{64}$\" }),\n\t\t\tstreamId: Type.String({ pattern: \"^[A-Za-z0-9_-]{1,128}$\" }),\n\t\t\tproducerId: Type.String({ pattern: \"^prd_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\tworkloadId: Type.String({ pattern: \"^wld_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\tbindingId: Type.String(),\n\t\t\tgenerationId: Type.String(),\n\t\t\tparentProducerId: Type.String({ pattern: \"^prd_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\tparentStreamId: Type.String({ pattern: \"^[A-Za-z0-9_-]{1,128}$\" }),\n\t\t\tparentAgentId: Type.String({ pattern: \"^agt_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\tagentId: Type.String({ pattern: \"^agt_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\tattemptId: Type.String({ pattern: \"^att_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\tstate: Type.Enum([\"registering\", \"prepared\", \"launching\"]),\n\t\t\tauthentication: Type.Optional(Type.String({ pattern: \"^[0-9a-f]{64}$\" })),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n);\ntype LaunchClaim = ReturnType<typeof launchClaimParser>;\nconst launchRegistries = new Map<\n\tstring,\n\t{ key: Buffer; claims: Map<string, LaunchClaim>; allocationKeys: Map<string, string> }\n>();\nconst claimForwarders = new WeakMap<FlowChildRegistrationPort, (claim: LaunchClaim) => Promise<LaunchClaim>>();\n\nfunction launchRegistry(spool: string) {\n\tlet registry = launchRegistries.get(spool);\n\tif (!registry) {\n\t\t// The signing key never leaves the privileged launcher. Restart needs explicit reauthorization.\n\t\tregistry = { key: randomBytes(32), claims: new Map(), allocationKeys: new Map() };\n\t\tlaunchRegistries.set(spool, registry);\n\t}\n\treturn registry;\n}\n\nfunction claimText(claim: LaunchClaim): string {\n\tconst { state: _state, authentication: _authentication, ...identity } = claim;\n\treturn dhCanonicalText(identity);\n}\n\nasync function authenticateLaunchClaim(session: TrustedTraceSession, claim: LaunchClaim): Promise<LaunchClaim> {\n\tconst registry = launchRegistry(session.recorder.config.spoolDir);\n\tconst known = registry.claims.get(claim.producerId);\n\tif (known) {\n\t\tif (claimText(known) !== claimText(claim)) throw new Error(UNAVAILABLE);\n\t\treturn { ...claim, authentication: known.authentication };\n\t}\n\tif (registry.claims.size >= 4096) throw new Error(UNAVAILABLE);\n\tconst forward = claimForwarders.get(session.childLaunch!.registrationPort);\n\tlet authenticated: LaunchClaim;\n\tif (forward) {\n\t\tauthenticated = await forward(claim);\n\t\tif (claimText(authenticated) !== claimText(claim) || !authenticated.authentication) throw new Error(UNAVAILABLE);\n\t} else {\n\t\tconst own = readTraceStreamBinding(session.recorder.config.spoolDir, session.recorder.streamId);\n\t\tif (claim.parentProducerId !== own.producerInstanceId) {\n\t\t\tconst key = registry.allocationKeys.get(claim.parentProducerId);\n\t\t\tfor (const [prefix, identity] of [\n\t\t\t\t[\"agt\", claim.agentId],\n\t\t\t\t[\"att\", claim.attemptId],\n\t\t\t] as const) {\n\t\t\t\tconst match = new RegExp(`^${prefix}_([1-9][0-9]{0,3})_([0-9a-f]{64})$`).exec(identity);\n\t\t\t\tif (\n\t\t\t\t\t!key ||\n\t\t\t\t\t!match ||\n\t\t\t\t\tNumber(match[1]) > 4096 ||\n\t\t\t\t\t!timingSafeEqual(\n\t\t\t\t\t\tcreateHmac(\"sha256\", Buffer.from(key, \"hex\")).update(`${prefix}:${match[1]}`).digest(),\n\t\t\t\t\t\tBuffer.from(match[2], \"hex\"),\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t}\n\t\t\tconst parent = registry.claims.get(claim.parentProducerId);\n\t\t\tif (!parent || parent.streamId !== claim.parentStreamId || parent.agentId !== claim.parentAgentId)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\tconst read = readTraceStream(join(session.recorder.config.spoolDir, \"streams\", `${parent.streamId}.jsonl`));\n\t\t\tconst events = read.records.flatMap((record) => (record.t === \"event\" ? [record.r] : []));\n\t\t\tif (\n\t\t\t\tread.corrupt ||\n\t\t\t\tread.tornTail ||\n\t\t\t\tevents.filter(\n\t\t\t\t\t(event) =>\n\t\t\t\t\t\tevent.kind === \"attempt.started\" &&\n\t\t\t\t\t\tevent.agentId === claim.agentId &&\n\t\t\t\t\t\tevent.attemptId === claim.attemptId &&\n\t\t\t\t\t\tevent.parentAgentId === parent.agentId,\n\t\t\t\t).length !== 1 ||\n\t\t\t\t!events.some(\n\t\t\t\t\t(event) =>\n\t\t\t\t\t\tevent.kind === \"agent.spawned\" &&\n\t\t\t\t\t\tevent.agentId === claim.agentId &&\n\t\t\t\t\t\tevent.parentAgentId === parent.agentId,\n\t\t\t\t) ||\n\t\t\t\tevents.some((event) => event.kind === \"attempt.finished\" && event.attemptId === claim.attemptId)\n\t\t\t)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t}\n\t\tif (\n\t\t\tclaim.parentProducerId !== own.producerInstanceId &&\n\t\t\thostEvents(session).some((event) => event.agentId === claim.agentId || event.attemptId === claim.attemptId)\n\t\t)\n\t\t\tthrow new Error(UNAVAILABLE);\n\t\tif (\n\t\t\tclaim.agentId === session.recorder.config.agentId ||\n\t\t\t[...registry.claims.values()].some(\n\t\t\t\t(prior) =>\n\t\t\t\t\tprior.attemptId === claim.attemptId ||\n\t\t\t\t\tprior.streamId === claim.streamId ||\n\t\t\t\t\tprior.workloadId === claim.workloadId ||\n\t\t\t\t\t(prior.agentId === claim.agentId && prior.parentProducerId !== claim.parentProducerId),\n\t\t\t)\n\t\t)\n\t\t\tthrow new Error(UNAVAILABLE);\n\t\tauthenticated = {\n\t\t\t...claim,\n\t\t\tauthentication: createHmac(\"sha256\", registry.key).update(claimText(claim)).digest(\"hex\"),\n\t\t};\n\t\t// Reserve before awaiting the registration port. Ambiguous completion cannot reassign identities.\n\t\tregistry.claims.set(claim.producerId, authenticated);\n\t\tawait reconcile(() =>\n\t\t\tsession.childLaunch!.registrationPort.registerActivityChildIdentity({\n\t\t\t\tbindingId: claim.bindingId,\n\t\t\t\tgenerationId: claim.generationId,\n\t\t\t\tparentAgentId: claim.parentAgentId,\n\t\t\t\tagentId: claim.agentId,\n\t\t\t\tattemptId: claim.attemptId,\n\t\t\t}),\n\t\t);\n\t}\n\tregistry.claims.set(claim.producerId, authenticated);\n\treturn authenticated;\n}\n\n// Credentials survive a session rebind, never a process restart. Restart requires explicit same-owner reauthorization.\nconst preparedBootstraps = new Map<string, Bootstrap>();\n\nasync function registerChild(\n\tsession: TrustedTraceSession,\n\tstart: DhEventV1,\n\tlaunchId: string,\n\tlive: () => boolean,\n\tfinish: (agentId: string, attemptId: string, outcome: DhOutcome, failure: { code: string }) => string | undefined,\n): Promise<FlowChildLaunchHandle> {\n\tconst spool = session.recorder.config.spoolDir;\n\tconst key = createHash(\"sha256\")\n\t\t.update(dhCanonicalText([session.recorder.streamId, session.recorder.ownAttemptId, launchId]))\n\t\t.digest(\"hex\");\n\tconst name = `launch-${key}.json`;\n\tconst path = join(spool, \"bindings\", name);\n\tensureTraceSpoolDirs(spool, [\"bindings\"]);\n\tconst release = acquireTraceSpoolLock(spool, `launch-${key}.lock`);\n\tif (!release) throw new Error(UNAVAILABLE);\n\tconst publish = (claim: ReturnType<typeof launchClaimParser>) =>\n\t\twriteTraceFileAtomic(join(spool, \"bindings\"), name, dhCanonicalText(claim), {\n\t\t\tfsyncDir: (dir) => fsyncDir(dir, true),\n\t\t});\n\ttry {\n\t\tconst options = session.childLaunch!;\n\t\tif (\n\t\t\t!Number.isFinite(Date.parse(options.rootRelayExpiresAt)) ||\n\t\t\tDate.parse(options.rootRelayExpiresAt) <= Date.now()\n\t\t)\n\t\t\tthrow new Error(UNAVAILABLE);\n\t\tconst admission = session.admission!;\n\t\tconst port = options.registrationPort;\n\t\tconst register = <T>(operation: () => Promise<T>) =>\n\t\t\treconcile(() => {\n\t\t\t\tif (!live()) throw new Error(UNAVAILABLE);\n\t\t\t\treturn operation();\n\t\t\t});\n\t\tconst fingerprint = createHash(\"sha256\")\n\t\t\t.update(\n\t\t\t\tdhCanonicalText({\n\t\t\t\t\tadmission,\n\t\t\t\t\tstart,\n\t\t\t\t\trootRelay: options.rootRelayProducerInstanceId,\n\t\t\t\t\tbuild: options.buildSha256,\n\t\t\t\t\tmode: options.mode,\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.digest(\"hex\");\n\t\tlet stored: ReturnType<typeof launchClaimParser> | undefined;\n\t\ttry {\n\t\t\tstored = launchClaimParser(\n\t\t\t\tparseDhRawJson(Buffer.from(readTraceStateFile(path, MAX_BOOTSTRAP_BYTES)), {\n\t\t\t\t\tmaxBytes: MAX_BOOTSTRAP_BYTES,\n\t\t\t\t}),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif ((error as NodeJS.ErrnoException).code !== \"ENOENT\") throw error;\n\t\t}\n\t\tlet bootstrap = preparedBootstraps.get(path);\n\t\tif (!stored && bootstrap) throw new Error(UNAVAILABLE);\n\t\tif (\n\t\t\tstored &&\n\t\t\t(stored.fingerprint !== fingerprint ||\n\t\t\t\tstored.state !== \"prepared\" ||\n\t\t\t\t!bootstrap ||\n\t\t\t\tstored.streamId !== bootstrap.binding.originStreamId ||\n\t\t\t\tstored.producerId !== bootstrap.binding.producerInstanceId ||\n\t\t\t\tstored.workloadId !== bootstrap.workload.workloadId)\n\t\t)\n\t\t\tthrow new Error(UNAVAILABLE);\n\t\tif (!stored) {\n\t\t\tconst streamId = `cli-${randomBytes(24).toString(\"base64url\")}`;\n\t\t\tconst producerId = id(\"prd\");\n\t\t\tconst secret = randomBytes(32).toString(\"base64url\");\n\t\t\tif (!registerTrustedTraceSecrets(session, [secret])) throw new Error(UNAVAILABLE);\n\t\t\tconst expiresAt = new Date(\n\t\t\t\tMath.min(\n\t\t\t\t\tDate.now() + 3_600_000,\n\t\t\t\t\tDate.parse(options.rootRelayExpiresAt),\n\t\t\t\t\toptions.writerWorkload === undefined ? Infinity : Date.parse(options.writerWorkload.expiresAt),\n\t\t\t\t),\n\t\t\t);\n\t\t\tif (!Number.isFinite(expiresAt.getTime()) || expiresAt.getTime() <= Date.now()) throw new Error(UNAVAILABLE);\n\t\t\tconst workload = parseDhWorkloadBinding({\n\t\t\t\tschema: \"dh.workload-binding/1\",\n\t\t\t\tworkloadId: id(\"wld\"),\n\t\t\t\tbindingId: admission.bindingId,\n\t\t\t\tproducerInstanceId: producerId,\n\t\t\t\tlaunchNonce: launchId,\n\t\t\t\tissuer: \"cli\",\n\t\t\t\tbuildSha256: options.buildSha256,\n\t\t\t\tmode: options.mode,\n\t\t\t\tcredentialVersion: 1,\n\t\t\t\texpiresAt: expiresAt.toISOString(),\n\t\t\t});\n\t\t\tconst owner = {\n\t\t\t\tbindingId: admission.bindingId,\n\t\t\t\tgenerationId: admission.generationId,\n\t\t\t\ttenantId: admission.tenantId,\n\t\t\t\tenvironmentId: admission.environmentId,\n\t\t\t\tprojectId: admission.projectId,\n\t\t\t\tproducerId,\n\t\t\t\tstreamId,\n\t\t\t};\n\t\t\tconst registration: FlowWorkloadRegistration = {\n\t\t\t\t...owner,\n\t\t\t\tid: workload.workloadId,\n\t\t\t\tissuer: \"cli\",\n\t\t\t\tsecretHash: createHash(\"sha256\").update(secret).digest(\"hex\"),\n\t\t\t\tbuildSha256: workload.buildSha256,\n\t\t\t\tmode: workload.mode,\n\t\t\t\tcredentialVersion: 1,\n\t\t\t\texpiresAt,\n\t\t\t};\n\t\t\tstored = {\n\t\t\t\tschema: \"dh.launch-ownership/1\",\n\t\t\t\tfingerprint,\n\t\t\t\tstreamId,\n\t\t\t\tproducerId,\n\t\t\t\tworkloadId: workload.workloadId,\n\t\t\t\tbindingId: admission.bindingId,\n\t\t\t\tgenerationId: admission.generationId,\n\t\t\t\tparentProducerId: readTraceStreamBinding(spool, session.recorder.streamId).producerInstanceId,\n\t\t\t\tparentStreamId: session.recorder.streamId,\n\t\t\t\tparentAgentId: session.recorder.config.agentId,\n\t\t\t\tagentId: start.agentId,\n\t\t\t\tattemptId: start.attemptId!,\n\t\t\t\tstate: \"registering\",\n\t\t\t};\n\t\t\tif (!registerTrustedTraceSecrets(session, [registration.secretHash])) throw new Error(UNAVAILABLE);\n\t\t\tstored = await register(() => authenticateLaunchClaim(session, stored!));\n\t\t\tpublish(stored);\n\t\t\tconst allocationKey = createHmac(\"sha256\", secret).update(\"dh-launch-alloc\").digest(\"hex\");\n\t\t\tif (!registerTrustedTraceSecrets(session, [allocationKey])) throw new Error(UNAVAILABLE);\n\t\t\tif (\n\t\t\t\t(await register(() => port.registerSyntheticAuthority(registration, allocationKey))) !== workload.workloadId\n\t\t\t)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\tlaunchRegistry(spool).allocationKeys.set(producerId, allocationKey);\n\t\t\tconst authorization = `DH-Workload ${secret}`;\n\t\t\tconst request = parseDhProducerEnrollmentRequest({\n\t\t\t\tschema: \"dh.producer-enrollment-request/2\",\n\t\t\t\tgenerationId: admission.generationId,\n\t\t\t\tbindingId: admission.bindingId,\n\t\t\t\tproducerInstanceId: producerId,\n\t\t\t\toriginStreamId: streamId,\n\t\t\t\tproducer: { issuer: \"cli\", version: \"1\", mode: options.mode },\n\t\t\t});\n\t\t\tlet enrollment = parseDhProducerEnrollment(await register(() => port.enrollProducer(request, authorization)));\n\t\t\tif (\n\t\t\t\tenrollment.bindingId !== admission.bindingId ||\n\t\t\t\tenrollment.producerInstanceId !== producerId ||\n\t\t\t\tenrollment.originStreamId !== streamId ||\n\t\t\t\tenrollment.generationId !== admission.generationId ||\n\t\t\t\tenrollment.issuer !== \"cli\" ||\n\t\t\t\tenrollment.credentialVersion !== 1 ||\n\t\t\t\tenrollment.tenantScope.environmentId !== admission.environmentId ||\n\t\t\t\tenrollment.tenantScope.projectId !== admission.projectId\n\t\t\t)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\tconst delegation = parseDhOriginDelegation({\n\t\t\t\tschema: \"dh.origin-delegation/1\",\n\t\t\t\tdelegationId: id(\"dlg\"),\n\t\t\t\tbindingId: admission.bindingId,\n\t\t\t\toriginProducerInstanceId: producerId,\n\t\t\t\toriginStreamId: streamId,\n\t\t\t\toriginIssuer: \"cli\",\n\t\t\t\trelayProducerInstanceId: options.rootRelayProducerInstanceId,\n\t\t\t\tenrollmentId: enrollment.enrollmentId,\n\t\t\t\tcredentialVersion: 1,\n\t\t\t\texpiresAt: workload.expiresAt,\n\t\t\t});\n\t\t\tif ((await register(() => port.registerActivityOriginDelegation(delegation))) !== delegation.delegationId)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\tconst flowDelegation = parseDhOriginDelegation({\n\t\t\t\t...delegation,\n\t\t\t\tdelegationId: id(\"dlg\"),\n\t\t\t\toriginIssuer: \"flow\",\n\t\t\t\trelayProducerInstanceId: producerId,\n\t\t\t});\n\t\t\tif (\n\t\t\t\t(await register(() => port.registerActivityOriginDelegation(flowDelegation))) !==\n\t\t\t\tflowDelegation.delegationId\n\t\t\t)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\tenrollment = parseDhProducerEnrollment(await register(() => port.enrollProducer(request, authorization)));\n\t\t\tfor (const [issuer, kinds] of [\n\t\t\t\t[\"cli\", session.control ? [...CHILD_KINDS, ...([\"orchestration.decision\"] as const)] : CHILD_KINDS],\n\t\t\t\t[\"flow\", [\"orchestration.decision\", \"cancellation.requested\", \"cancellation.outcome\", \"usage.reported\"]],\n\t\t\t] as const) {\n\t\t\t\tfor (const recordKind of kinds) {\n\t\t\t\t\tconst writer: FlowWriterRegistration = {\n\t\t\t\t\t\t...owner,\n\t\t\t\t\t\tid: id(\"aut\"),\n\t\t\t\t\t\tissuer,\n\t\t\t\t\t\trecordKind,\n\t\t\t\t\t\tagentId: start.agentId,\n\t\t\t\t\t\tattemptId: start.attemptId!,\n\t\t\t\t\t\tlifecycleOwner: \"parent\",\n\t\t\t\t\t\tresolveUnknown: false,\n\t\t\t\t\t\tcontinuationTarget: issuer === \"cli\" && recordKind === \"orchestration.decision\",\n\t\t\t\t\t};\n\t\t\t\t\tif (\n\t\t\t\t\t\t(await register(() => port.registerActivityWriterAuthority(workload.workloadId, 1, writer))) !==\n\t\t\t\t\t\twriter.id\n\t\t\t\t\t)\n\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (options.writerWorkload) {\n\t\t\t\tconst parent = readTraceStreamBinding(session.recorder.config.spoolDir, session.recorder.streamId);\n\t\t\t\tfor (const issuer of [\"cli\", \"flow\"] as const)\n\t\t\t\t\tfor (const recordKind of issuer === \"flow\"\n\t\t\t\t\t\t? [...DESCENDANT_KINDS, ...CANCELLATION_KINDS]\n\t\t\t\t\t\t: DESCENDANT_KINDS) {\n\t\t\t\t\t\tconst writer: FlowWriterRegistration = {\n\t\t\t\t\t\t\t...owner,\n\t\t\t\t\t\t\tproducerId: parent.producerInstanceId,\n\t\t\t\t\t\t\tstreamId: parent.originStreamId,\n\t\t\t\t\t\t\tid: id(\"aut\"),\n\t\t\t\t\t\t\tissuer,\n\t\t\t\t\t\t\trecordKind,\n\t\t\t\t\t\t\tagentId: start.agentId,\n\t\t\t\t\t\t\t...(recordKind === \"agent.spawned\" ? {} : { attemptId: start.attemptId! }),\n\t\t\t\t\t\t\tlifecycleOwner: issuer === \"cli\" ? \"self\" : \"parent\",\n\t\t\t\t\t\t\tresolveUnknown: false,\n\t\t\t\t\t\t\tcontinuationTarget: false,\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(await register(() =>\n\t\t\t\t\t\t\t\tport.registerActivityWriterAuthority(\n\t\t\t\t\t\t\t\t\toptions.writerWorkload!.workloadId,\n\t\t\t\t\t\t\t\t\tparent.credentialVersion,\n\t\t\t\t\t\t\t\t\twriter,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t)) !== writer.id\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t}\n\t\t\t}\n\t\t\tconst credential = parseDhProducerTokenResponse(\n\t\t\t\tawait register(() =>\n\t\t\t\t\tport.issueProducerCredential({ enrollmentId: enrollment.enrollmentId }, authorization),\n\t\t\t\t),\n\t\t\t);\n\t\t\tassertDhProducerAudience(credential.audience, { ...enrollment, ...enrollment.tenantScope });\n\t\t\tif (!registerTrustedTraceSecrets(session, [credential.access_token])) throw new Error(UNAVAILABLE);\n\t\t\tif (!live()) throw new Error(UNAVAILABLE);\n\t\t\tdirectStart(session, start.agentId, start.attemptId!);\n\t\t\tconst binding = parseTraceSpoolBinding({\n\t\t\t\tschema: \"dh.spool-binding/1\",\n\t\t\t\toriginStreamId: streamId,\n\t\t\t\tgenerationId: admission.generationId,\n\t\t\t\tadmission,\n\t\t\t\tproducerInstanceId: producerId,\n\t\t\t\tenrollmentId: enrollment.enrollmentId,\n\t\t\t\tcredentialVersion: 1,\n\t\t\t\tdelegationIds: [delegation.delegationId, flowDelegation.delegationId],\n\t\t\t});\n\t\t\twriteTraceStreamBinding(session.recorder.config.spoolDir, binding);\n\t\t\tconst childEnv = buildChildTraceEnv(session.recorder.config, {\n\t\t\t\tagentId: start.agentId,\n\t\t\t\tattemptId: start.attemptId!,\n\t\t\t\tattemptNumber: start.attemptNumber!,\n\t\t\t\t...(start.retryOfAttemptId ? { retryOfAttemptId: start.retryOfAttemptId } : {}),\n\t\t\t});\n\t\t\tconst parsed = readTraceProducerConfig(childEnv.set);\n\t\t\tif (!parsed.enabled) throw new Error(UNAVAILABLE);\n\t\t\tconst config = {\n\t\t\t\t...parsed.config,\n\t\t\t\t...(session.recorder.config.ingestUrl ? { ingestUrl: session.recorder.config.ingestUrl } : {}),\n\t\t\t};\n\t\t\tbootstrap = {\n\t\t\t\tschema: \"dh.child-bootstrap/1\",\n\t\t\t\tconfig,\n\t\t\t\tbinding,\n\t\t\t\tworkload,\n\t\t\t\tenrollment,\n\t\t\t\tdelegation,\n\t\t\t\tflowDelegation,\n\t\t\t\tcredential,\n\t\t\t\tcredentialExpiresAtMs: Date.now() + credential.expires_in * 1000,\n\t\t\t\tworkloadSecret: secret,\n\t\t\t};\n\t\t\tpreparedBootstraps.set(path, bootstrap);\n\t\t\tstored = { ...stored, state: \"prepared\" };\n\t\t\tpublish(stored);\n\t\t}\n\t\tif (!bootstrap || !stored) throw new Error(UNAVAILABLE);\n\t\tconst ready = bootstrap;\n\t\tconst { binding, workload, credential } = ready;\n\t\tif (\n\t\t\t!live() ||\n\t\t\tdhCanonicalText(readTraceStreamBinding(spool, binding.originStreamId)) !== dhCanonicalText(binding)\n\t\t)\n\t\t\tthrow new Error(UNAVAILABLE);\n\t\tconst streamId = binding.originStreamId;\n\t\tconst producerId = binding.producerInstanceId;\n\t\tconst secret = ready.workloadSecret;\n\t\tconst expiresAt = new Date(workload.expiresAt);\n\t\tif (!registerTrustedTraceSecrets(session, [secret, credential.access_token])) throw new Error(UNAVAILABLE);\n\t\tconst bytes = Buffer.from(dhCanonicalText(ready));\n\t\tif (bytes.length > MAX_BOOTSTRAP_BYTES) throw new Error(UNAVAILABLE);\n\t\tlet used = false;\n\t\tconst identity = Object.freeze({\n\t\t\tgenerationId: admission.generationId,\n\t\t\tagentId: start.agentId,\n\t\t\tattemptId: start.attemptId!,\n\t\t\tbindingId: admission.bindingId,\n\t\t\tbindingEpoch: admission.bindingEpoch,\n\t\t\tsessionEpoch: session.epoch,\n\t\t});\n\t\tconst handle: FlowChildLaunchHandle = Object.freeze({\n\t\t\tstreamId,\n\t\t\tproducerInstanceId: producerId,\n\t\t\tenrollmentId: binding.enrollmentId,\n\t\t\tdelegationIds: Object.freeze([...binding.delegationIds]),\n\t\t\tidentity,\n\t\t\ttoJSON() {\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t},\n\t\t\tasync launch(invocation: FlowChildLaunchInvocation) {\n\t\t\t\tif (used || !live() || Date.now() >= expiresAt.getTime() || Date.now() >= ready.credentialExpiresAtMs)\n\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\tdirectStart(session, start.agentId, start.attemptId!);\n\t\t\t\tconst copied = copyInvocation(invocation);\n\t\t\t\tfor (const key of Object.keys(copied.env)) {\n\t\t\t\t\tif (Object.values(TRACE_ENV).some((name) => name === key.toUpperCase())) delete copied.env[key];\n\t\t\t\t}\n\t\t\t\tconst values = [copied.command, ...copied.args, copied.cwd, ...Object.values(copied.env)];\n\t\t\t\tif (\n\t\t\t\t\tvalues.some(\n\t\t\t\t\t\t(value) =>\n\t\t\t\t\t\t\tvalue?.includes(secret) ||\n\t\t\t\t\t\t\tvalue?.includes(credential.access_token) ||\n\t\t\t\t\t\t\t(ready.launcher && value?.includes(ready.launcher.secret)),\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\tcopied.env[BOOTSTRAP_FD_ENV] = \"4\";\n\t\t\t\tconst unlock = acquireTraceSpoolLock(spool, `launch-${key}.lock`);\n\t\t\t\tif (!unlock) throw new Error(UNAVAILABLE);\n\t\t\t\ttry {\n\t\t\t\t\tconst current = launchClaimParser(\n\t\t\t\t\t\tparseDhRawJson(Buffer.from(readTraceStateFile(path, MAX_BOOTSTRAP_BYTES)), {\n\t\t\t\t\t\t\tmaxBytes: MAX_BOOTSTRAP_BYTES,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t\tconst authenticated = launchRegistry(spool).claims.get(current.producerId);\n\t\t\t\t\tif (\n\t\t\t\t\t\tcurrent.state !== \"prepared\" ||\n\t\t\t\t\t\tcurrent.fingerprint !== fingerprint ||\n\t\t\t\t\t\t!authenticated ||\n\t\t\t\t\t\tclaimText(current) !== claimText(authenticated) ||\n\t\t\t\t\t\tcurrent.authentication !== authenticated.authentication\n\t\t\t\t\t)\n\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\tpublish({ ...current, state: \"launching\" });\n\t\t\t\t} finally {\n\t\t\t\t\tunlock();\n\t\t\t\t}\n\t\t\t\tused = true;\n\t\t\t\tpreparedBootstraps.delete(path);\n\t\t\t\tconst bridge = await registrationBridge(session, ready, live);\n\t\t\t\tconst authorizeLaunch = (): void => {\n\t\t\t\t\tconst checked = withQuarantineGate(spool, () => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tsession.revoked ||\n\t\t\t\t\t\t\t!live() ||\n\t\t\t\t\t\t\tDate.now() >= expiresAt.getTime() ||\n\t\t\t\t\t\t\tDate.now() >= ready.credentialExpiresAtMs ||\n\t\t\t\t\t\t\tDate.now() >= Date.parse(session.childLaunch!.rootRelayExpiresAt)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tdirectStart(session, start.agentId, start.attemptId!);\n\t\t\t\t\t});\n\t\t\t\t\tif (checked.status !== \"ok\") throw new Error(UNAVAILABLE);\n\t\t\t\t};\n\t\t\t\ttry {\n\t\t\t\t\tconst launched = await spawnChild(\n\t\t\t\t\t\tcopied,\n\t\t\t\t\t\tBuffer.from(\n\t\t\t\t\t\t\tdhCanonicalText({\n\t\t\t\t\t\t\t\t...ready,\n\t\t\t\t\t\t\t\tlauncher: bridge.descriptor,\n\t\t\t\t\t\t\t\t...(session.control\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\tcontrolTarget: {\n\t\t\t\t\t\t\t\t\t\t\t\tschema: \"dh.control-target/1\",\n\t\t\t\t\t\t\t\t\t\t\t\t...identity,\n\t\t\t\t\t\t\t\t\t\t\t\tcapabilityRevision: session.control.capabilityRevision,\n\t\t\t\t\t\t\t\t\t\t\t\tupdatedAt: new Date().toISOString(),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tauthorizeLaunch,\n\t\t\t\t\t);\n\t\t\t\t\tlaunchedChildren.set(handle, launched);\n\t\t\t\t\tvoid launched.closed.then(() => {\n\t\t\t\t\t\tlaunchedChildren.delete(handle);\n\t\t\t\t\t\tbridge.close();\n\t\t\t\t\t});\n\t\t\t\t\treturn launched;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tbridge.close();\n\t\t\t\t\tconst failed = error instanceof Error && error.message === \"child_spawn_failed\";\n\t\t\t\t\tconst code = failed ? \"child_spawn_failed\" : \"child_bootstrap_unconfirmed\";\n\t\t\t\t\tif (!finish(start.agentId, start.attemptId!, failed ? \"failed\" : \"unknown\", { code }))\n\t\t\t\t\t\tthrow new Error(\"child_finish_unconfirmed\");\n\t\t\t\t\tthrow new Error(code);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t\treturn handle;\n\t} catch {\n\t\tthrow new Error(UNAVAILABLE);\n\t} finally {\n\t\trelease();\n\t}\n}\n\nconst invocationParser = dhStrictDtoParser(\"child invocation\", () =>\n\tType.Object(\n\t\t{\n\t\t\tcommand: Type.String({ minLength: 1, maxLength: 4096, pattern: \"^[^\\\\u0000]+$\" }),\n\t\t\targs: Type.Array(Type.String({ maxLength: 65_536, pattern: \"^[^\\\\u0000]*$\" }), { maxItems: 2048 }),\n\t\t\tcwd: Type.Optional(Type.String({ minLength: 1, maxLength: 4096, pattern: \"^[^\\\\u0000]+$\" })),\n\t\t\tenv: Type.Optional(\n\t\t\t\tType.Record(\n\t\t\t\t\tType.String({ pattern: \"^[A-Za-z_][A-Za-z0-9_]*$\" }),\n\t\t\t\t\tType.String({ maxLength: 65_536, pattern: \"^[^\\\\u0000]*$\" }),\n\t\t\t\t),\n\t\t\t),\n\t\t\tstdin: Type.Optional(Type.Enum([\"pipe\", \"ignore\"])),\n\t\t\tstdout: Type.Optional(Type.Enum([\"pipe\", \"inherit\", \"ignore\"])),\n\t\t\tstderr: Type.Optional(Type.Enum([\"pipe\", \"inherit\", \"ignore\"])),\n\t\t\tprocessGroup: Type.Optional(Type.Boolean()),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n);\n\nfunction copyInvocation(input: FlowChildLaunchInvocation) {\n\tif (Buffer.byteLength(dhCanonicalText(input)) > 1_048_576) throw new Error(UNAVAILABLE);\n\tconst copy = invocationParser(input);\n\tif (copy.cwd !== undefined && !isAbsolute(copy.cwd)) throw new Error(UNAVAILABLE);\n\treturn { ...copy, env: { ...copy.env }, stdout: copy.stdout ?? \"pipe\", stderr: copy.stderr ?? \"pipe\" };\n}\n\nconst rpcParser = dhStrictDtoParser(\"launcher request\", () =>\n\tType.Object(\n\t\t{\n\t\t\tsecret: Type.String({ pattern: \"^[A-Za-z0-9_-]{43}$\" }),\n\t\t\tmethod: Type.Enum([\"claim\", \"workload\", \"writer\", \"enroll\", \"credential\", \"delegation\"]),\n\t\t\targs: Type.Array(Type.Unknown(), { minItems: 1, maxItems: 3 }),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n);\nconst ownerShape = {\n\tid: Type.String({ pattern: \"^[A-Za-z0-9_.-]{1,128}$\" }),\n\tbindingId: Type.String(),\n\tgenerationId: Type.String(),\n\ttenantId: Type.String(),\n\tenvironmentId: Type.String(),\n\tprojectId: Type.String(),\n\tproducerId: Type.String({ pattern: \"^prd_[A-Za-z0-9_-]{8,128}$\" }),\n\tstreamId: Type.String({ pattern: \"^[A-Za-z0-9_-]{1,128}$\" }),\n};\nconst workloadParser = dhStrictDtoParser(\"launcher workload\", () =>\n\tType.Object(\n\t\t{\n\t\t\t...ownerShape,\n\t\t\tissuer: Type.Literal(\"cli\"),\n\t\t\tsecretHash: Type.String({ pattern: \"^[0-9a-f]{64}$\" }),\n\t\t\tbuildSha256: Type.String({ pattern: \"^[0-9a-f]{64}$\" }),\n\t\t\tmode: Type.String({ minLength: 1, maxLength: 256 }),\n\t\t\tcredentialVersion: Type.Literal(1),\n\t\t\texpiresAt: Type.String(),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n);\nconst writerParser = dhStrictDtoParser(\"launcher writer\", () =>\n\tType.Object(\n\t\t{\n\t\t\t...ownerShape,\n\t\t\tissuer: Type.Enum([\"cli\", \"flow\"]),\n\t\t\trecordKind: Type.String(),\n\t\t\tagentId: Type.String({ pattern: \"^agt_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\tattemptId: Type.Optional(Type.String({ pattern: \"^att_[A-Za-z0-9_-]{8,128}$\" })),\n\t\t\tlifecycleOwner: Type.Enum([\"self\", \"parent\"]),\n\t\t\tresolveUnknown: Type.Literal(false),\n\t\t\tcontinuationTarget: Type.Literal(false),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n);\n\nfunction privateFrame(value: unknown): Buffer {\n\tconst bytes = Buffer.from(dhCanonicalText(value));\n\tif (bytes.length > MAX_BOOTSTRAP_BYTES) throw new Error(UNAVAILABLE);\n\tconst prefix = Buffer.alloc(4);\n\tprefix.writeUInt32BE(bytes.length);\n\treturn Buffer.concat([prefix, bytes]);\n}\n\n/** A scoped private launcher channel, not a producer bearer or public registration endpoint. */\nasync function registrationBridge(session: TrustedTraceSession, child: Bootstrap, live: () => boolean) {\n\tconst dir = mkdtempSync(join(tmpdir(), \"dh-launch-\"));\n\tchmodSync(dir, 0o700);\n\tconst path = join(dir, \"launcher.sock\");\n\tconst secret = randomBytes(32).toString(\"base64url\");\n\tif (!registerTrustedTraceSecrets(session, [secret])) throw new Error(UNAVAILABLE);\n\tconst port = session.childLaunch!.registrationPort;\n\tconst admission = child.binding.admission;\n\tconst workloads = new Map<string, { id: string; hash: string; stream: string; expiresAt: string }>([\n\t\t[\n\t\t\tchild.binding.producerInstanceId,\n\t\t\t{\n\t\t\t\tid: child.workload.workloadId,\n\t\t\t\thash: createHash(\"sha256\").update(child.workloadSecret).digest(\"hex\"),\n\t\t\t\tstream: child.binding.originStreamId,\n\t\t\t\texpiresAt: child.workload.expiresAt,\n\t\t\t},\n\t\t],\n\t]);\n\tconst enrollments = new Map([[child.enrollment.enrollmentId, child.binding.producerInstanceId]]);\n\tconst sockets = new Set<Socket>();\n\tconst sameScope = (row: {\n\t\tbindingId: string;\n\t\tgenerationId: string;\n\t\ttenantId: string;\n\t\tenvironmentId: string;\n\t\tprojectId: string;\n\t}) => {\n\t\tif (\n\t\t\trow.bindingId !== admission.bindingId ||\n\t\t\trow.generationId !== admission.generationId ||\n\t\t\trow.tenantId !== admission.tenantId ||\n\t\t\trow.environmentId !== admission.environmentId ||\n\t\t\trow.projectId !== admission.projectId\n\t\t)\n\t\t\tthrow new Error(UNAVAILABLE);\n\t};\n\tconst descendant = (agentId?: string, attemptId?: string, producerId?: string) => {\n\t\t// ponytail: bounded allocation scan; index launcher lineage if large runs exceed this ceiling.\n\t\t// Shared-spool files are evidence, never launcher authority. Only approved allocations enter this registry.\n\t\tconst claims = [...launchRegistry(child.config.spoolDir).claims.values()];\n\t\tconst parents = new Map([\n\t\t\t[child.binding.producerInstanceId, { agentId: child.config.agentId, streamId: child.binding.originStreamId }],\n\t\t]);\n\t\tconst descendants: ReturnType<typeof launchClaimParser>[] = [];\n\t\tfor (let depth = 0; depth < 64; depth++) {\n\t\t\tconst before = parents.size;\n\t\t\tfor (const claim of claims) {\n\t\t\t\tconst parent = parents.get(claim.parentProducerId);\n\t\t\t\tif (\n\t\t\t\t\t!parent ||\n\t\t\t\t\tclaim.bindingId !== admission.bindingId ||\n\t\t\t\t\tclaim.generationId !== admission.generationId ||\n\t\t\t\t\tclaim.parentStreamId !== parent.streamId ||\n\t\t\t\t\tclaim.parentAgentId !== parent.agentId ||\n\t\t\t\t\tclaim.agentId === admission.rootAgentId ||\n\t\t\t\t\tclaim.agentId === child.config.agentId ||\n\t\t\t\t\tparents.has(claim.producerId)\n\t\t\t\t)\n\t\t\t\t\tcontinue;\n\t\t\t\tparents.set(claim.producerId, { agentId: claim.agentId, streamId: claim.streamId });\n\t\t\t\tdescendants.push(claim);\n\t\t\t}\n\t\t\tif (before === parents.size) break;\n\t\t}\n\t\tconst matches = descendants.filter(\n\t\t\t(claim) =>\n\t\t\t\t(agentId === undefined || claim.agentId === agentId) &&\n\t\t\t\t(attemptId === undefined || claim.attemptId === attemptId) &&\n\t\t\t\t(producerId === undefined || claim.producerId === producerId),\n\t\t);\n\t\tif (matches.length !== 1) throw new Error(UNAVAILABLE);\n\t\treturn matches[0]!;\n\t};\n\tconst authorize = (producer: string, authorization: unknown) => {\n\t\tif (typeof authorization !== \"string\") throw new Error(UNAVAILABLE);\n\t\tconst proof = parseDhWorkloadAuthorizationHeader(authorization);\n\t\tconst workload = workloads.get(producer);\n\t\tif (!workload || workload.hash !== createHash(\"sha256\").update(proof).digest(\"hex\")) throw new Error(UNAVAILABLE);\n\t};\n\tconst server = createServer({ allowHalfOpen: true }, (socket) => {\n\t\tif (sockets.size >= 16) {\n\t\t\tsocket.destroy();\n\t\t\treturn;\n\t\t}\n\t\tsockets.add(socket);\n\t\tsocket.once(\"close\", () => sockets.delete(socket));\n\t\tsocket.on(\"error\", () => socket.destroy());\n\t\tvoid (async () => {\n\t\t\ttry {\n\t\t\t\tconst request = rpcParser(\n\t\t\t\t\tparseDhRawJson(await readBootstrapFrame(socket), { maxBytes: MAX_BOOTSTRAP_BYTES }),\n\t\t\t\t);\n\t\t\t\tif (\n\t\t\t\t\t!live() ||\n\t\t\t\t\tDate.now() >= Date.parse(child.workload.expiresAt) ||\n\t\t\t\t\t!timingSafeEqual(Buffer.from(secret), Buffer.from(request.secret))\n\t\t\t\t)\n\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\tconst args = request.args;\n\t\t\t\tlet result: unknown;\n\t\t\t\tswitch (request.method) {\n\t\t\t\t\tcase \"claim\": {\n\t\t\t\t\t\tif (args.length !== 1) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst claim = launchClaimParser(args[0]);\n\t\t\t\t\t\tconst parent =\n\t\t\t\t\t\t\tclaim.parentProducerId === child.binding.producerInstanceId\n\t\t\t\t\t\t\t\t? { agentId: child.config.agentId, streamId: child.binding.originStreamId }\n\t\t\t\t\t\t\t\t: descendant(undefined, undefined, claim.parentProducerId);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tclaim.bindingId !== admission.bindingId ||\n\t\t\t\t\t\t\tclaim.generationId !== admission.generationId ||\n\t\t\t\t\t\t\tclaim.parentAgentId !== parent.agentId ||\n\t\t\t\t\t\t\tclaim.parentStreamId !== parent.streamId ||\n\t\t\t\t\t\t\tclaim.state !== \"registering\"\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tresult = await authenticateLaunchClaim(session, claim);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"workload\": {\n\t\t\t\t\t\tif (args.length !== 2 || typeof args[1] !== \"string\" || !/^[0-9a-f]{64}$/.test(args[1]))\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst allocationKey = args[1];\n\t\t\t\t\t\tconst row = workloadParser(args[0]);\n\t\t\t\t\t\tsameScope(row);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trow.buildSha256 !== child.workload.buildSha256 ||\n\t\t\t\t\t\t\trow.mode !== child.workload.mode ||\n\t\t\t\t\t\t\t!Number.isFinite(Date.parse(row.expiresAt)) ||\n\t\t\t\t\t\t\tDate.parse(row.expiresAt) <= Date.now() ||\n\t\t\t\t\t\t\tDate.parse(row.expiresAt) >\n\t\t\t\t\t\t\t\tMath.min(\n\t\t\t\t\t\t\t\t\tDate.now() + 3_600_000,\n\t\t\t\t\t\t\t\t\tDate.parse(child.workload.expiresAt),\n\t\t\t\t\t\t\t\t\tDate.parse(session.childLaunch!.rootRelayExpiresAt),\n\t\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\trow.producerId === child.binding.producerInstanceId\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst claim = descendant(undefined, undefined, row.producerId);\n\t\t\t\t\t\tif (row.id !== claim.workloadId || row.streamId !== claim.streamId) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst known = workloads.get(row.producerId);\n\t\t\t\t\t\tif (!known && workloads.size >= 4096) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst proposed = { id: row.id, hash: row.secretHash, stream: row.streamId, expiresAt: row.expiresAt };\n\t\t\t\t\t\tif (known && dhCanonicalText(known) !== dhCanonicalText(proposed)) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tif (!registerTrustedTraceSecrets(session, [row.secretHash, allocationKey]))\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tresult = await port.registerSyntheticAuthority(\n\t\t\t\t\t\t\t{ ...row, expiresAt: new Date(row.expiresAt) },\n\t\t\t\t\t\t\tallocationKey,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (result !== row.id) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tworkloads.set(row.producerId, proposed);\n\t\t\t\t\t\tlaunchRegistry(child.config.spoolDir).allocationKeys.set(row.producerId, allocationKey);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"enroll\": {\n\t\t\t\t\t\tif (args.length !== 2) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst row = parseDhProducerEnrollmentRequest(args[0]);\n\t\t\t\t\t\tauthorize(row.producerInstanceId, args[1]);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trow.bindingId !== admission.bindingId ||\n\t\t\t\t\t\t\trow.generationId !== admission.generationId ||\n\t\t\t\t\t\t\trow.originStreamId !== workloads.get(row.producerInstanceId)!.stream ||\n\t\t\t\t\t\t\trow.producer.issuer !== \"cli\"\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tresult = await port.enrollProducer(row, args[1] as string);\n\t\t\t\t\t\tenrollments.set(parseDhProducerEnrollment(result).enrollmentId, row.producerInstanceId);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"writer\": {\n\t\t\t\t\t\tif (args.length !== 3 || args[1] !== 1) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst row = writerParser(args[2]);\n\t\t\t\t\t\tsameScope(row);\n\t\t\t\t\t\tconst workload = workloads.get(row.producerId);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!workload ||\n\t\t\t\t\t\t\targs[0] !== workload.id ||\n\t\t\t\t\t\t\trow.streamId !== workload.stream ||\n\t\t\t\t\t\t\t(row.attemptId === undefined && row.recordKind !== \"agent.spawned\")\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst claim = descendant(row.agentId, row.attemptId);\n\t\t\t\t\t\tconst parentKind =\n\t\t\t\t\t\t\t(DESCENDANT_KINDS as readonly string[]).includes(row.recordKind) ||\n\t\t\t\t\t\t\t(row.issuer === \"flow\" &&\n\t\t\t\t\t\t\t\t(CANCELLATION_KINDS as readonly string[]).includes(row.recordKind) &&\n\t\t\t\t\t\t\t\trow.producerId === claim.parentProducerId);\n\t\t\t\t\t\tif (parentKind) {\n\t\t\t\t\t\t\tif (row.lifecycleOwner !== (row.issuer === \"cli\" ? \"self\" : \"parent\"))\n\t\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\trow.producerId !== claim.parentProducerId ||\n\t\t\t\t\t\t\t\trow.streamId !== claim.parentStreamId ||\n\t\t\t\t\t\t\t\t(row.recordKind === \"agent.spawned\" && row.attemptId !== undefined)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst kinds: readonly string[] =\n\t\t\t\t\t\t\t\trow.issuer === \"cli\"\n\t\t\t\t\t\t\t\t\t? CHILD_KINDS\n\t\t\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t\t\t\"orchestration.decision\",\n\t\t\t\t\t\t\t\t\t\t\t\"cancellation.requested\",\n\t\t\t\t\t\t\t\t\t\t\t\"cancellation.outcome\",\n\t\t\t\t\t\t\t\t\t\t\t\"usage.reported\",\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\trow.lifecycleOwner !== \"parent\" ||\n\t\t\t\t\t\t\t\trow.producerId === child.binding.producerInstanceId ||\n\t\t\t\t\t\t\t\t!kinds.includes(row.recordKind) ||\n\t\t\t\t\t\t\t\trow.producerId !== claim.producerId ||\n\t\t\t\t\t\t\t\trow.streamId !== claim.streamId\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult = await port.registerActivityWriterAuthority(workload.id, 1, row as FlowWriterRegistration);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"credential\": {\n\t\t\t\t\t\tif (args.length !== 2) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst row = credentialRequestParser(args[0]);\n\t\t\t\t\t\tconst producer = enrollments.get(row.enrollmentId);\n\t\t\t\t\t\tif (!producer) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tauthorize(producer, args[1]);\n\t\t\t\t\t\tconst issued = parseDhProducerTokenResponse(\n\t\t\t\t\t\t\tawait port.issueProducerCredential(row, args[1] as string),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!registerTrustedTraceSecrets(session, [issued.access_token])) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tresult = issued;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tcase \"delegation\": {\n\t\t\t\t\t\tif (args.length !== 1) throw new Error(UNAVAILABLE);\n\t\t\t\t\t\tconst row = parseDhOriginDelegation(args[0]);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trow.bindingId !== admission.bindingId ||\n\t\t\t\t\t\t\trow.relayProducerInstanceId !==\n\t\t\t\t\t\t\t\t(row.originIssuer === \"flow\"\n\t\t\t\t\t\t\t\t\t? row.originProducerInstanceId\n\t\t\t\t\t\t\t\t\t: session.childLaunch!.rootRelayProducerInstanceId) ||\n\t\t\t\t\t\t\tDate.parse(row.expiresAt) <= Date.now() ||\n\t\t\t\t\t\t\tDate.parse(row.expiresAt) >\n\t\t\t\t\t\t\t\tMath.min(\n\t\t\t\t\t\t\t\t\tDate.parse(child.workload.expiresAt),\n\t\t\t\t\t\t\t\t\tDate.parse(session.childLaunch!.rootRelayExpiresAt),\n\t\t\t\t\t\t\t\t\tDate.parse(workloads.get(row.originProducerInstanceId)?.expiresAt ?? \"\"),\n\t\t\t\t\t\t\t\t) ||\n\t\t\t\t\t\t\t!workloads.has(row.originProducerInstanceId) ||\n\t\t\t\t\t\t\trow.originStreamId !== workloads.get(row.originProducerInstanceId)!.stream ||\n\t\t\t\t\t\t\tenrollments.get(row.enrollmentId) !== row.originProducerInstanceId ||\n\t\t\t\t\t\t\trow.credentialVersion !== 1 ||\n\t\t\t\t\t\t\t![\"cli\", \"flow\"].includes(row.originIssuer)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\t\tresult = await port.registerActivityOriginDelegation(row);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!live()) throw new Error(UNAVAILABLE);\n\t\t\t\tsocket.end(privateFrame({ ok: true, result }));\n\t\t\t} catch {\n\t\t\t\tsocket.end(privateFrame({ ok: false }));\n\t\t\t}\n\t\t})();\n\t});\n\tserver.on(\"error\", () => {\n\t\tfor (const socket of sockets) socket.destroy();\n\t});\n\ttry {\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tserver.once(\"error\", reject);\n\t\t\tserver.listen(path, resolve);\n\t\t});\n\t\tchmodSync(path, 0o600);\n\t\tserver.unref();\n\t} catch {\n\t\tserver.close();\n\t\trmdirSync(dir);\n\t\tthrow new Error(UNAVAILABLE);\n\t}\n\treturn {\n\t\tdescriptor: {\n\t\t\tpath,\n\t\t\tsecret,\n\t\t\trootRelay: session.childLaunch!.rootRelayProducerInstanceId,\n\t\t\tbuildSha256: child.workload.buildSha256,\n\t\t\tmode: child.workload.mode,\n\t\t\trootRelayExpiresAt: session.childLaunch!.rootRelayExpiresAt,\n\t\t},\n\t\tclose() {\n\t\t\tfor (const socket of sockets) socket.destroy();\n\t\t\tserver.close(() => {\n\t\t\t\ttry {\n\t\t\t\t\trmdirSync(dir);\n\t\t\t\t} catch {\n\t\t\t\t\t/* already removed */\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t};\n}\nconst credentialRequestParser = dhStrictDtoParser(\"credential request\", () =>\n\tType.Object(\n\t\t{ enrollmentId: Type.String({ pattern: \"^enr_[A-Za-z0-9_-]{8,128}$\" }) },\n\t\t{ additionalProperties: false },\n\t),\n);\nconst rpcResponseParser = dhStrictDtoParser(\"launcher response\", () =>\n\tType.Union([\n\t\tType.Object({ ok: Type.Literal(true), result: Type.Unknown() }, { additionalProperties: false }),\n\t\tType.Object({ ok: Type.Literal(false) }, { additionalProperties: false }),\n\t]),\n);\nfunction remoteRegistrationPort(launcher: NonNullable<Bootstrap[\"launcher\"]>): FlowChildRegistrationPort {\n\tconst call = async (method: ReturnType<typeof rpcParser>[\"method\"], args: unknown[]) => {\n\t\tconst socket = createConnection({ path: launcher.path, allowHalfOpen: true });\n\t\ttry {\n\t\t\tconst response = readBootstrapFrame(socket);\n\t\t\tsocket.end(privateFrame({ secret: launcher.secret, method, args }));\n\t\t\tconst parsed = rpcResponseParser(parseDhRawJson(await response, { maxBytes: MAX_BOOTSTRAP_BYTES }));\n\t\t\tif (!parsed.ok) throw new Error(UNAVAILABLE);\n\t\t\treturn parsed.result;\n\t\t} finally {\n\t\t\tsocket.destroy();\n\t\t}\n\t};\n\tconst stringResult = (value: unknown): string => {\n\t\tif (typeof value !== \"string\") throw new Error(UNAVAILABLE);\n\t\treturn value;\n\t};\n\tconst port: FlowChildRegistrationPort = {\n\t\tregisterActivityChildIdentity: async () => {\n\t\t\tthrow new Error(UNAVAILABLE);\n\t\t},\n\t\tregisterSyntheticAuthority: async (row, allocationKey) =>\n\t\t\tstringResult(await call(\"workload\", [{ ...row, expiresAt: row.expiresAt.toISOString() }, allocationKey])),\n\t\tregisterActivityWriterAuthority: async (workload, version, row) =>\n\t\t\tstringResult(await call(\"writer\", [workload, version, row])),\n\t\tenrollProducer: (row, authorization) => call(\"enroll\", [row, authorization]),\n\t\tissueProducerCredential: (row, authorization) => call(\"credential\", [row, authorization]),\n\t\tregisterActivityOriginDelegation: async (row) => stringResult(await call(\"delegation\", [row])),\n\t};\n\tclaimForwarders.set(port, async (claim) => launchClaimParser(await call(\"claim\", [claim])));\n\treturn port;\n}\n\nasync function spawnChild(\n\tinvocation: ReturnType<typeof copyInvocation>,\n\tbytes: Buffer,\n\tauthorize: () => void,\n): Promise<FlowChildLaunchResult> {\n\tauthorize();\n\tconst proc = spawn(invocation.command, invocation.args, {\n\t\tcwd: invocation.cwd,\n\t\tenv: invocation.env,\n\t\tshell: false,\n\t\tdetached: invocation.processGroup === true,\n\t\tstdio: [invocation.stdin ?? \"ignore\", invocation.stdout, invocation.stderr, \"pipe\", \"pipe\"],\n\t});\n\tlet observedError: Error | undefined;\n\tlet resolveError!: (error: Error | undefined) => void;\n\tconst error = new Promise<Error | undefined>((resolve) => {\n\t\tresolveError = resolve;\n\t});\n\tproc.on(\"error\", (failure: Error) => {\n\t\tobservedError ??= failure;\n\t\tresolveError(observedError);\n\t});\n\tconst closed = new Promise<{ exitCode: number | null; signal: NodeJS.Signals | null }>((resolve) => {\n\t\tproc.once(\"close\", (exitCode, signal) => {\n\t\t\tresolveError(observedError);\n\t\t\tresolve({ exitCode, signal });\n\t\t});\n\t});\n\tconst control = proc.stdio[3] as Duplex;\n\tconst bootstrap = proc.stdio[4] as Writable;\n\tconst closeOwned = () => {\n\t\tcontrol?.destroy();\n\t\tbootstrap?.destroy();\n\t};\n\tproc.once(\"close\", closeOwned);\n\ttry {\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tproc.once(\"spawn\", resolve);\n\t\t\tproc.once(\"error\", reject);\n\t\t});\n\t\tauthorize();\n\t\tconst prefix = Buffer.alloc(4);\n\t\tprefix.writeUInt32BE(bytes.length);\n\t\tawait new Promise<void>((resolve, reject) => {\n\t\t\tbootstrap.once(\"error\", reject);\n\t\t\tbootstrap.end(Buffer.concat([prefix, bytes]), resolve);\n\t\t});\n\t\tbootstrap.destroy();\n\t\tproc.stdio[4] = null;\n\t\treturn Object.freeze({\n\t\t\tprocess: proc,\n\t\t\tcontrol,\n\t\t\tclosed,\n\t\t\terror,\n\t\t\tcancel: (signal: NodeJS.Signals = \"SIGTERM\") => proc.kill(signal),\n\t\t});\n\t} catch {\n\t\tcloseOwned();\n\t\tif (proc.pid !== undefined && proc.exitCode === null && proc.signalCode === null) proc.kill(\"SIGTERM\");\n\t\tthrow new Error(proc.pid === undefined ? \"child_spawn_failed\" : \"child_bootstrap_unconfirmed\");\n\t}\n}\n\ninterface Bootstrap {\n\tschema: \"dh.child-bootstrap/1\";\n\tconfig: TraceProducerConfig;\n\tbinding: TraceSpoolBinding;\n\tworkload: DhWorkloadBinding;\n\tenrollment: ReturnType<typeof parseDhProducerEnrollment>;\n\tdelegation: DhOriginDelegation;\n\tflowDelegation: DhOriginDelegation;\n\tcredential: DhProducerTokenResponse;\n\tcredentialExpiresAtMs: number;\n\tworkloadSecret: string;\n\tlauncher?: {\n\t\tpath: string;\n\t\tsecret: string;\n\t\trootRelay: string;\n\t\tbuildSha256: string;\n\t\tmode: string;\n\t\trootRelayExpiresAt: string;\n\t};\n\tcontrolTarget?: DhControlTarget;\n}\nconst launcherParser = dhStrictDtoParser(\"child launcher\", () =>\n\tType.Object(\n\t\t{\n\t\t\tpath: Type.String({ minLength: 1, maxLength: 256 }),\n\t\t\tsecret: Type.String({ pattern: \"^[A-Za-z0-9_-]{43}$\" }),\n\t\t\trootRelay: Type.String({ pattern: \"^prd_[A-Za-z0-9_-]{8,128}$\" }),\n\t\t\trootRelayExpiresAt: Type.String(),\n\t\t\tbuildSha256: Type.String({ pattern: \"^[0-9a-f]{64}$\" }),\n\t\t\tmode: Type.String({ minLength: 1, maxLength: 256, pattern: \"^[ -~]+$\" }),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n);\nconst bootstrapParser = dhStrictDtoParser(\"child bootstrap\", () =>\n\tType.Object(\n\t\t{\n\t\t\tschema: Type.Literal(\"dh.child-bootstrap/1\"),\n\t\t\tconfig: Type.Unknown(),\n\t\t\tbinding: Type.Unknown(),\n\t\t\tworkload: Type.Unknown(),\n\t\t\tenrollment: Type.Unknown(),\n\t\t\tdelegation: Type.Unknown(),\n\t\t\tflowDelegation: Type.Unknown(),\n\t\t\tcredential: Type.Unknown(),\n\t\t\tcredentialExpiresAtMs: Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\t\tworkloadSecret: Type.String({ pattern: \"^[A-Za-z0-9_-]{43}$\" }),\n\t\t\tlauncher: Type.Unknown(),\n\t\t\tcontrolTarget: Type.Optional(Type.Unknown()),\n\t\t},\n\t\t{ additionalProperties: false },\n\t),\n);\n\nfunction parseBootstrap(input: unknown): Bootstrap {\n\tconst parsed = bootstrapParser(input);\n\tconst launcher = launcherParser(parsed.launcher);\n\tif (!isAbsolute(launcher.path)) throw new Error(UNAVAILABLE);\n\tparseDhWorkloadAuthorizationHeader(`DH-Workload ${parsed.workloadSecret}`);\n\tconst binding = parseTraceSpoolBinding(parsed.binding);\n\tconst workload = parseDhWorkloadBinding(parsed.workload);\n\tconst enrollment = parseDhProducerEnrollment(parsed.enrollment);\n\tconst credential = parseDhProducerTokenResponse(parsed.credential);\n\tconst delegation = parseDhOriginDelegation(parsed.delegation);\n\tconst flowDelegation = parseDhOriginDelegation(parsed.flowDelegation);\n\tassertDhOriginDelegation(flowDelegation, {\n\t\t...flowDelegation,\n\t\tbindingId: binding.admission.bindingId,\n\t\toriginProducerInstanceId: binding.producerInstanceId,\n\t\toriginStreamId: binding.originStreamId,\n\t\toriginIssuer: \"flow\",\n\t\trelayProducerInstanceId: binding.producerInstanceId,\n\t\tenrollmentId: binding.enrollmentId,\n\t\tcredentialVersion: binding.credentialVersion,\n\t});\n\tassertDhProducerAudience(credential.audience, { ...enrollment, ...enrollment.tenantScope });\n\tassertDhOriginDelegation(delegation, {\n\t\t...delegation,\n\t\tbindingId: binding.admission.bindingId,\n\t\toriginProducerInstanceId: binding.producerInstanceId,\n\t\toriginStreamId: binding.originStreamId,\n\t\toriginIssuer: \"cli\",\n\t\trelayProducerInstanceId: delegation.relayProducerInstanceId,\n\t\tenrollmentId: binding.enrollmentId,\n\t\tcredentialVersion: binding.credentialVersion,\n\t});\n\tconst controlTarget = parsed.controlTarget === undefined ? undefined : parseDhControlTarget(parsed.controlTarget);\n\tconst config = parsed.config as TraceProducerConfig;\n\tif (\n\t\t!config ||\n\t\ttypeof config !== \"object\" ||\n\t\t!isAbsolute(config.spoolDir ?? \"\") ||\n\t\tconfig.lifecycleOwner !== \"parent\" ||\n\t\t(controlTarget !== undefined &&\n\t\t\t(controlTarget.agentId !== config.agentId ||\n\t\t\t\tcontrolTarget.attemptId !== config.attemptId ||\n\t\t\t\tcontrolTarget.generationId !== binding.generationId ||\n\t\t\t\tcontrolTarget.bindingId !== binding.admission.bindingId ||\n\t\t\t\tcontrolTarget.bindingEpoch !== binding.admission.bindingEpoch)) ||\n\t\t\"ingestToken\" in config ||\n\t\tconfig.generationId !== binding.generationId ||\n\t\tconfig.tenantScope?.environmentId !== binding.admission.environmentId ||\n\t\tconfig.tenantScope?.projectId !== binding.admission.projectId ||\n\t\tworkload.bindingId !== binding.admission.bindingId ||\n\t\tworkload.producerInstanceId !== binding.producerInstanceId ||\n\t\tworkload.issuer !== \"cli\" ||\n\t\tworkload.credentialVersion !== binding.credentialVersion ||\n\t\tenrollment.bindingId !== binding.admission.bindingId ||\n\t\tenrollment.enrollmentId !== binding.enrollmentId ||\n\t\tenrollment.producerInstanceId !== binding.producerInstanceId ||\n\t\tenrollment.originStreamId !== binding.originStreamId ||\n\t\tenrollment.generationId !== binding.generationId ||\n\t\tenrollment.issuer !== \"cli\" ||\n\t\tenrollment.credentialVersion !== binding.credentialVersion ||\n\t\tenrollment.tenantScope.environmentId !== config.tenantScope.environmentId ||\n\t\tenrollment.tenantScope.projectId !== config.tenantScope.projectId ||\n\t\t!binding.delegationIds.includes(delegation.delegationId) ||\n\t\t!binding.delegationIds.includes(flowDelegation.delegationId) ||\n\t\tDate.now() >= Date.parse(flowDelegation.expiresAt) ||\n\t\t!Number.isFinite(Date.parse(launcher.rootRelayExpiresAt)) ||\n\t\tDate.now() >= Date.parse(launcher.rootRelayExpiresAt) ||\n\t\tDate.parse(workload.expiresAt) > Date.parse(launcher.rootRelayExpiresAt) ||\n\t\tDate.now() >= Date.parse(workload.expiresAt) ||\n\t\tDate.now() >= Date.parse(delegation.expiresAt) ||\n\t\tDate.now() >= parsed.credentialExpiresAtMs\n\t)\n\t\tthrow new Error(UNAVAILABLE);\n\tconst read = readTraceProducerConfig(buildChildTraceEnv({ ...config, agentId: config.parentAgentId! }, config).set);\n\tif (!read.enabled) throw new Error(UNAVAILABLE);\n\tconst normalized = { ...read.config, ...(config.ingestUrl ? { ingestUrl: config.ingestUrl } : {}) };\n\tif (\n\t\tdhCanonicalText(normalized) !== dhCanonicalText(config) ||\n\t\ttraceCaptureDisabledReason(config, activationFor(config, binding)) !== undefined\n\t)\n\t\tthrow new Error(UNAVAILABLE);\n\tif (dhCanonicalText(readTraceStreamBinding(config.spoolDir, binding.originStreamId)) !== dhCanonicalText(binding))\n\t\tthrow new Error(UNAVAILABLE);\n\treturn {\n\t\tschema: \"dh.child-bootstrap/1\",\n\t\tconfig,\n\t\tbinding,\n\t\tworkload,\n\t\tenrollment,\n\t\tdelegation,\n\t\tflowDelegation,\n\t\tcredential,\n\t\tcredentialExpiresAtMs: parsed.credentialExpiresAtMs,\n\t\tworkloadSecret: parsed.workloadSecret,\n\t\tlauncher,\n\t\t...(controlTarget ? { controlTarget } : {}),\n\t};\n}\n\nlet bootstrapRead = false;\nlet heldBootstrap: Bootstrap | undefined;\nlet inheritedControlTarget: DhControlTarget | undefined;\n\n/** Internal mode-owner hook. A validated fd4 bootstrap, not environment or descriptor presence, grants fd3 custody. */\nexport function getFlowChildControlTarget(): DhControlTarget | undefined {\n\tconst target = inheritedControlTarget;\n\tinheritedControlTarget = undefined;\n\treturn target;\n}\n\n/** Called before extensions/tools at CLI startup. The environment selector is not authority. */\nexport async function initializeFlowChildBootstrap(env: NodeJS.ProcessEnv): Promise<void> {\n\tconst selector = env[BOOTSTRAP_FD_ENV];\n\tdelete env[BOOTSTRAP_FD_ENV];\n\tif (selector === undefined) return;\n\tfor (const key of Object.keys(env)) {\n\t\tif (key.toUpperCase() === TRACE_ENV.ingestToken) delete env[key];\n\t}\n\tif (bootstrapRead || selector !== \"4\" || process.platform === \"win32\") throw new Error(UNAVAILABLE);\n\tbootstrapRead = true;\n\tlet socket: Readable | undefined;\n\ttry {\n\t\tconst stat = fstatSync(4);\n\t\tif (!stat.isFIFO() && !stat.isSocket()) throw new Error(UNAVAILABLE);\n\t\t// Bun's net.Socket({fd}) does not read inherited stdio descriptors. Its fs reader does.\n\t\tsocket = createReadStream(\"\", { fd: 4, autoClose: true });\n\t\tconst bytes = await readBootstrapFrame(socket);\n\t\theldBootstrap = parseBootstrap(parseDhRawJson(bytes, { maxBytes: MAX_BOOTSTRAP_BYTES }));\n\t\tinheritedControlTarget = heldBootstrap.controlTarget;\n\t\tfor (const key of Object.keys(env)) {\n\t\t\tif (Object.values(TRACE_ENV).some((name) => name === key.toUpperCase())) delete env[key];\n\t\t}\n\t\tconst config = heldBootstrap.config;\n\t\tconst childEnv = buildChildTraceEnv({ ...config, agentId: config.parentAgentId! }, config);\n\t\tObject.assign(env, childEnv.set);\n\t\tif (config.ingestUrl) env[TRACE_ENV.ingestUrl] = config.ingestUrl;\n\t} catch {\n\t\theldBootstrap = undefined;\n\t\tthrow new Error(UNAVAILABLE);\n\t} finally {\n\t\tif (socket) socket.destroy();\n\t\telse {\n\t\t\ttry {\n\t\t\t\tcloseSync(4);\n\t\t\t} catch {\n\t\t\t\t/* descriptor absent */\n\t\t\t}\n\t\t}\n\t}\n}\n\nasync function readBootstrapFrame(stream: Readable): Promise<Buffer> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst chunks: Buffer[] = [];\n\t\tlet total = 0;\n\t\tconst timer = setTimeout(() => {\n\t\t\tstream.destroy();\n\t\t\treject(new Error(UNAVAILABLE));\n\t\t}, 5000);\n\t\tstream.on(\"data\", (chunk: Buffer) => {\n\t\t\ttotal += chunk.length;\n\t\t\tif (total > MAX_BOOTSTRAP_BYTES + 4) {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tstream.destroy();\n\t\t\t\treject(new Error(UNAVAILABLE));\n\t\t\t} else chunks.push(chunk);\n\t\t});\n\t\tstream.once(\"error\", () => {\n\t\t\tclearTimeout(timer);\n\t\t\treject(new Error(UNAVAILABLE));\n\t\t});\n\t\tstream.once(\"end\", () => {\n\t\t\tclearTimeout(timer);\n\t\t\tconst frame = Buffer.concat(chunks);\n\t\t\tif (frame.length < 5 || frame.readUInt32BE(0) !== frame.length - 4) reject(new Error(UNAVAILABLE));\n\t\t\telse resolve(frame.subarray(4));\n\t\t});\n\t});\n}\n\nfunction activationFor(config: TraceProducerConfig, binding: TraceSpoolBinding): TraceCaptureActivation {\n\treturn {\n\t\tenabled: true,\n\t\tenvironment: \"local\",\n\t\tpolicy: {\n\t\t\tkind: \"synthetic-local\",\n\t\t\trevision: binding.admission.policyRevision,\n\t\t\tsyntheticOnly: true,\n\t\t\tenvironmentIds: [binding.admission.environmentId],\n\t\t\tprojectIds: [binding.admission.projectId],\n\t\t},\n\t\tsyntheticAttestation: {\n\t\t\tsyntheticBindings: true,\n\t\t\tnonProductionResources: true,\n\t\t\tspoolDir: config.spoolDir,\n\t\t\tingestUrl: config.ingestUrl,\n\t\t},\n\t};\n}\n\n/** Capture-only consumer. Private credentials stay in closures, never in config or Flow objects. */\nexport function consumeFlowChildBootstrap():\n\t| {\n\t\t\tconfig: TraceProducerConfig;\n\t\t\tspoolBinding: TraceSpoolBinding;\n\t\t\tactivation: TraceCaptureActivation;\n\t\t\tprivateSecrets: readonly string[];\n\t\t\tchildLaunch: FlowChildLaunchOptions;\n\t\t\tresolveStreamTransport: (binding: TraceSpoolBinding, signal?: AbortSignal) => Promise<TraceIngestTransport>;\n\t }\n\t| undefined {\n\tconst bootstrap = heldBootstrap;\n\theldBootstrap = undefined;\n\tif (!bootstrap) return undefined;\n\tconst { config, binding, credential } = bootstrap;\n\treturn {\n\t\tconfig,\n\t\tspoolBinding: binding,\n\t\tprivateSecrets: [\n\t\t\tbootstrap.workloadSecret,\n\t\t\tcredential.access_token,\n\t\t\tbootstrap.launcher!.secret,\n\t\t\tcreateHash(\"sha256\").update(bootstrap.workloadSecret).digest(\"hex\"),\n\t\t\tcreateHmac(\"sha256\", bootstrap.workloadSecret).update(\"dh-launch-alloc\").digest(\"hex\"),\n\t\t],\n\t\tchildLaunch: {\n\t\t\tregistrationPort: remoteRegistrationPort(bootstrap.launcher!),\n\t\t\trootRelayProducerInstanceId: bootstrap.launcher!.rootRelay,\n\t\t\trootRelayExpiresAt: bootstrap.launcher!.rootRelayExpiresAt,\n\t\t\twriterWorkload: bootstrap.workload,\n\t\t\tallocationKey: createHmac(\"sha256\", bootstrap.workloadSecret).update(\"dh-launch-alloc\").digest(\"hex\"),\n\t\t\tbuildSha256: bootstrap.launcher!.buildSha256,\n\t\t\tmode: bootstrap.launcher!.mode,\n\t\t},\n\t\tactivation: activationFor(config, binding),\n\t\tasync resolveStreamTransport(requested) {\n\t\t\tif (\n\t\t\t\tdhCanonicalText(requested) !== dhCanonicalText(binding) ||\n\t\t\t\t!config.ingestUrl ||\n\t\t\t\tDate.now() >= Date.parse(bootstrap.workload.expiresAt) ||\n\t\t\t\tDate.now() >= bootstrap.credentialExpiresAtMs\n\t\t\t)\n\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\tconst reauthorize = () => {\n\t\t\t\tif (\n\t\t\t\t\tDate.now() >= Date.parse(bootstrap.workload.expiresAt) ||\n\t\t\t\t\tDate.now() >= bootstrap.credentialExpiresAtMs ||\n\t\t\t\t\tDate.now() >= Date.parse(bootstrap.flowDelegation.expiresAt)\n\t\t\t\t)\n\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t};\n\t\t\tconst options = {\n\t\t\t\tingestUrl: config.ingestUrl,\n\t\t\t\ttoken: credential.access_token,\n\t\t\t\tscope: config.tenantScope,\n\t\t\t\tallowInsecureLoopback: true,\n\t\t\t\treauthorize,\n\t\t\t};\n\t\t\tconst direct = new HttpTraceIngestTransport(options);\n\t\t\tconst flow = new HttpTraceIngestTransport({\n\t\t\t\t...options,\n\t\t\t\toriginDelegationId: bootstrap.flowDelegation.delegationId,\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tstartsRequestsSynchronously: true,\n\t\t\t\tscope: direct.scope,\n\t\t\t\treauthorize,\n\t\t\t\tasync sendBatch(batch, signal) {\n\t\t\t\t\treauthorize();\n\t\t\t\t\tif (batch.events.some((event) => ![\"cli\", \"flow\"].includes(event.producer.issuer)))\n\t\t\t\t\t\tthrow new Error(UNAVAILABLE);\n\t\t\t\t\tlet previous = batch.previousAckedSequence;\n\t\t\t\t\tconst accepted: { eventIds: string[]; artifactIds: string[] } = { eventIds: [], artifactIds: [] };\n\t\t\t\t\tconst rejected: Awaited<ReturnType<TraceIngestTransport[\"sendBatch\"]>>[\"rejected\"] = [];\n\t\t\t\t\tlet receivedAt = \"\";\n\t\t\t\t\tlet firstRequest = true;\n\t\t\t\t\tconst send = async (\n\t\t\t\t\t\tevents: readonly DhEventV1[],\n\t\t\t\t\t\tartifacts: typeof batch.artifacts,\n\t\t\t\t\t\ttransport: HttpTraceIngestTransport,\n\t\t\t\t\t) => {\n\t\t\t\t\t\treauthorize();\n\t\t\t\t\t\tconst sent = { streamId: batch.streamId, previousAckedSequence: previous, events, artifacts };\n\t\t\t\t\t\tlet request: ReturnType<TraceIngestTransport[\"sendBatch\"]> | undefined;\n\t\t\t\t\t\tif (firstRequest) {\n\t\t\t\t\t\t\t// The uploader's synchronous initiation gate covers the first request, not later awaits.\n\t\t\t\t\t\t\tfirstRequest = false;\n\t\t\t\t\t\t\trequest = transport.sendBatch(sent, signal);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst gated = withQuarantineGate(config.spoolDir, () => {\n\t\t\t\t\t\t\t\treauthorize();\n\t\t\t\t\t\t\t\trequest = transport.sendBatch(sent, signal);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tif (gated.status !== \"ok\") {\n\t\t\t\t\t\t\t\tvoid request?.catch(() => undefined);\n\t\t\t\t\t\t\t\tthrow new QuarantineGateError(\n\t\t\t\t\t\t\t\t\tgated.status === \"quarantined\" || isSpoolQuarantinedInProcess(config.spoolDir),\n\t\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst ack = await request!;\n\t\t\t\t\t\tconst validated = validateDhBatchAck(sent, ack, { previousAckedSequence: previous });\n\t\t\t\t\t\tif (validated.eventPrefix.kind === \"prefix\") previous = validated.eventPrefix.throughSequence;\n\t\t\t\t\t\taccepted.eventIds.push(...ack.accepted.eventIds);\n\t\t\t\t\t\taccepted.artifactIds.push(...ack.accepted.artifactIds);\n\t\t\t\t\t\trejected.push(...ack.rejected);\n\t\t\t\t\t\treceivedAt = ack.receivedAt;\n\t\t\t\t\t\treturn ack.accepted.eventIds.length === events.length;\n\t\t\t\t\t};\n\t\t\t\t\tlet artifacts = batch.artifacts;\n\t\t\t\t\tif (batch.events.length === 0 || (artifacts.length > 0 && batch.events[0]!.producer.issuer === \"flow\")) {\n\t\t\t\t\t\tawait send([], artifacts, direct);\n\t\t\t\t\t\tartifacts = [];\n\t\t\t\t\t}\n\t\t\t\t\t// One delegation header names one issuer. Keep the shared stream sequence and ACK prefix unchanged.\n\t\t\t\t\tfor (let start = 0; start < batch.events.length; ) {\n\t\t\t\t\t\tconst issuer = batch.events[start]!.producer.issuer;\n\t\t\t\t\t\tlet end = start + 1;\n\t\t\t\t\t\twhile (end < batch.events.length && batch.events[end]!.producer.issuer === issuer) end++;\n\t\t\t\t\t\tif (!(await send(batch.events.slice(start, end), artifacts, issuer === \"flow\" ? flow : direct)))\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tartifacts = [];\n\t\t\t\t\t\tstart = end;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tschema: \"dh.ack/1\",\n\t\t\t\t\t\tstreamId: batch.streamId,\n\t\t\t\t\t\tackedThroughSequence: Math.max(previous, 0),\n\t\t\t\t\t\taccepted,\n\t\t\t\t\t\trejected,\n\t\t\t\t\t\treceivedAt,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\tputArtifact(upload, signal) {\n\t\t\t\t\treauthorize();\n\t\t\t\t\treturn direct.putArtifact(upload, signal);\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t};\n}\n"]}
|