@agent-vm/gateway-control-contracts 0.0.114 → 0.0.115

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/gateway-control-admission.ts","../src/gateway-control-admission-executor.ts","../src/gateway-control-admission-classification.ts","../src/index.ts"],"sourcesContent":["export const GATEWAY_CONTROL_ADMISSION_LIMITS = {\n\tauthority: { maxBytes: 1_572_864, maxMessages: 96 },\n\tdiagnostic: { maxBytes: 1_048_576, maxMessages: 64 },\n\tliveness: { maxBytes: 1_048_576, maxMessages: 64 },\n\tmaxFrameBytes: 65_536,\n\tperPrincipalAuthority: { maxBytes: 131_072, maxMessages: 8 },\n\tsafety: { maxBytes: 524_288, maxMessages: 32 },\n} as const;\n\nexport const GATEWAY_CONTROL_PROCESS_ADMISSION_LIMITS = {\n\tmaxActiveSessions: 32,\n\tmaxNonSafetyBytes: 33_554_432,\n\tmaxNonSafetyMessages: 2_048,\n} as const;\n\nexport type GatewayControlAdmissionClass = 'authority' | 'diagnostic' | 'liveness' | 'safety';\n\nexport interface GatewayControlAdmissionMessage<TPayload> {\n\treadonly byteLength: number;\n\treadonly coalesceKey?: string;\n\treadonly id: string;\n\treadonly messageClass: GatewayControlAdmissionClass;\n\treadonly payload: TPayload;\n\treadonly stablePrincipal?: string;\n}\n\nexport type GatewayControlAdmissionResult<TPayload = unknown> =\n\t| { readonly status: 'admitted' }\n\t| {\n\t\t\treadonly replacedMessage: GatewayControlAdmissionMessage<TPayload>;\n\t\t\treadonly status: 'replaced';\n\t }\n\t| { readonly reason: 'diagnostic_capacity'; readonly status: 'dropped' }\n\t| { readonly reason: 'liveness_capacity'; readonly status: 'shed' }\n\t| { readonly reason: 'principal_capacity'; readonly status: 'refused' }\n\t| { readonly reason: 'global_capacity'; readonly status: 'dropped' | 'refused' | 'shed' }\n\t| {\n\t\t\treadonly reason:\n\t\t\t\t| 'authority_capacity'\n\t\t\t\t| 'frame_too_large'\n\t\t\t\t| 'invalid_message'\n\t\t\t\t| 'safety_capacity';\n\t\t\treadonly status: 'fence';\n\t };\n\ninterface QueueAccounting {\n\tbyteCount: number;\n\tmessageCount: number;\n}\n\ninterface AuthorityQueue<TPayload> extends QueueAccounting {\n\tmessages: GatewayControlAdmissionMessage<TPayload>[];\n}\n\nfunction dequeueFirstCoalescedMessage<TPayload>(\n\tmessages: Map<string, GatewayControlAdmissionMessage<TPayload>>,\n): GatewayControlAdmissionMessage<TPayload> | undefined {\n\tconst first = messages.entries().next().value;\n\tif (first === undefined) {\n\t\treturn undefined;\n\t}\n\tmessages.delete(first[0]);\n\treturn first[1];\n}\n\nexport interface GatewayControlAdmissionDiagnostics {\n\treadonly authorityBytes: number;\n\treadonly authorityMessages: number;\n\treadonly diagnosticBytes: number;\n\treadonly diagnosticMessages: number;\n\treadonly livenessBytes: number;\n\treadonly livenessMessages: number;\n\treadonly safetyBytes: number;\n\treadonly safetyMessages: number;\n\treadonly coalescedMessages: number;\n\treadonly droppedMessages: number;\n\treadonly fencedMessages: number;\n\treadonly refusedMessages: number;\n\treadonly shedMessages: number;\n}\n\nexport interface GatewayControlAdmissionCompletionToken {\n\treadonly completionTokenId: symbol;\n}\n\nexport interface GatewayControlAdmissionWork<TPayload> {\n\treadonly completionToken: GatewayControlAdmissionCompletionToken;\n\treadonly message: GatewayControlAdmissionMessage<TPayload>;\n}\n\nexport interface GatewayControlAdmissionScheduler<TPayload> {\n\tcancelQueued(): readonly GatewayControlAdmissionMessage<TPayload>[];\n\tcomplete(completionToken: GatewayControlAdmissionCompletionToken): void;\n\tdequeue(options?: {\n\t\treadonly allowedMessageClasses?: readonly GatewayControlAdmissionClass[];\n\t}): GatewayControlAdmissionWork<TPayload> | undefined;\n\tdiagnostics(): GatewayControlAdmissionDiagnostics;\n\tenqueue(\n\t\tmessage: GatewayControlAdmissionMessage<TPayload>,\n\t): GatewayControlAdmissionResult<TPayload>;\n}\n\nexport interface GatewayControlProcessAdmissionMessage<\n\tTPayload,\n> extends GatewayControlAdmissionMessage<TPayload> {\n\treadonly zoneId: string;\n}\n\nexport interface GatewayControlProcessAdmissionWork<TPayload> {\n\treadonly completionToken: GatewayControlAdmissionCompletionToken;\n\treadonly message: GatewayControlProcessAdmissionMessage<TPayload>;\n}\n\nexport interface GatewayControlProcessAdmission<TPayload> {\n\tcomplete(completionToken: GatewayControlAdmissionCompletionToken): void;\n\tdequeue(): GatewayControlProcessAdmissionWork<TPayload> | undefined;\n\tdiagnostics(): {\n\t\treadonly activeSessions: number;\n\t\treadonly nonSafetyBytes: number;\n\t\treadonly nonSafetyMessages: number;\n\t};\n\tenqueue(\n\t\tmessage: GatewayControlProcessAdmissionMessage<TPayload>,\n\t): GatewayControlAdmissionResult<TPayload>;\n\tregisterZone(zoneId: string): { readonly status: 'admitted' | 'capacity_refused' };\n\tunregisterZone(zoneId: string): void;\n}\n\nconst serviceCycle: readonly GatewayControlAdmissionClass[] = [\n\t'safety',\n\t'safety',\n\t'safety',\n\t'safety',\n\t'safety',\n\t'safety',\n\t'safety',\n\t'safety',\n\t'authority',\n\t'authority',\n\t'authority',\n\t'authority',\n\t'liveness',\n\t'liveness',\n\t'diagnostic',\n];\n\nfunction canReserve(\n\taccounting: QueueAccounting,\n\tbyteLength: number,\n\tlimits: { readonly maxBytes: number; readonly maxMessages: number },\n): boolean {\n\treturn (\n\t\taccounting.byteCount + byteLength <= limits.maxBytes &&\n\t\taccounting.messageCount + 1 <= limits.maxMessages\n\t);\n}\n\nfunction release(accounting: QueueAccounting, byteLength: number): void {\n\taccounting.byteCount -= byteLength;\n\taccounting.messageCount -= 1;\n}\n\nfunction requirePositiveLimit(name: string, value: number): void {\n\tif (!Number.isSafeInteger(value) || value <= 0) {\n\t\tthrow new RangeError(`${name} must be a positive safe integer.`);\n\t}\n}\n\nfunction validateMessage<TPayload>(\n\tmessage: GatewayControlAdmissionMessage<TPayload>,\n): GatewayControlAdmissionResult<TPayload> | undefined {\n\tif (\n\t\tmessage.id.length === 0 ||\n\t\t!Number.isSafeInteger(message.byteLength) ||\n\t\tmessage.byteLength <= 0\n\t) {\n\t\treturn { reason: 'invalid_message', status: 'fence' };\n\t}\n\tif (message.byteLength > GATEWAY_CONTROL_ADMISSION_LIMITS.maxFrameBytes) {\n\t\treturn { reason: 'frame_too_large', status: 'fence' };\n\t}\n\tif (\n\t\tmessage.messageClass === 'authority' &&\n\t\t(message.stablePrincipal === undefined || message.stablePrincipal.length === 0)\n\t) {\n\t\treturn { reason: 'invalid_message', status: 'fence' };\n\t}\n\tif (\n\t\t(message.messageClass === 'diagnostic' || message.messageClass === 'liveness') &&\n\t\t(message.coalesceKey === undefined || message.coalesceKey.length === 0)\n\t) {\n\t\treturn { reason: 'invalid_message', status: 'fence' };\n\t}\n\treturn undefined;\n}\n\nfunction isGatewayControlProcessAdmissionMessage<TPayload>(\n\tmessage: GatewayControlAdmissionMessage<TPayload>,\n): message is GatewayControlProcessAdmissionMessage<TPayload> {\n\treturn 'zoneId' in message && typeof message.zoneId === 'string';\n}\n\nfunction gatewayControlProcessCoalescingKey<TPayload>(\n\tmessage: GatewayControlProcessAdmissionMessage<TPayload>,\n): string | undefined {\n\treturn message.messageClass === 'liveness' || message.messageClass === 'diagnostic'\n\t\t? `${message.messageClass}\\u0000${message.coalesceKey ?? ''}`\n\t\t: undefined;\n}\n\nexport function createGatewayControlAdmissionScheduler<\n\tTPayload,\n>(): GatewayControlAdmissionScheduler<TPayload> {\n\tconst safety: GatewayControlAdmissionMessage<TPayload>[] = [];\n\tconst safetyAccounting: QueueAccounting = { byteCount: 0, messageCount: 0 };\n\tconst authorityByPrincipal = new Map<string, AuthorityQueue<TPayload>>();\n\tconst authorityPrincipalOrder: string[] = [];\n\tconst authorityAccounting: QueueAccounting = { byteCount: 0, messageCount: 0 };\n\tconst livenessByKey = new Map<string, GatewayControlAdmissionMessage<TPayload>>();\n\tconst livenessAccounting: QueueAccounting = { byteCount: 0, messageCount: 0 };\n\tconst diagnosticByKey = new Map<string, GatewayControlAdmissionMessage<TPayload>>();\n\tconst diagnosticAccounting: QueueAccounting = { byteCount: 0, messageCount: 0 };\n\tconst inFlightMessages = new Map<\n\t\tGatewayControlAdmissionCompletionToken,\n\t\tGatewayControlAdmissionMessage<TPayload>\n\t>();\n\tlet serviceCursor = 0;\n\tlet authorityPrincipalCursor = 0;\n\tlet coalescedMessages = 0;\n\tlet droppedMessages = 0;\n\tlet fencedMessages = 0;\n\tlet refusedMessages = 0;\n\tlet shedMessages = 0;\n\n\tconst dequeueAuthority = (): GatewayControlAdmissionMessage<TPayload> | undefined => {\n\t\tif (authorityPrincipalOrder.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tfor (let offset = 0; offset < authorityPrincipalOrder.length; offset += 1) {\n\t\t\tconst index = (authorityPrincipalCursor + offset) % authorityPrincipalOrder.length;\n\t\t\tconst principal = authorityPrincipalOrder[index];\n\t\t\tif (principal === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst queue = authorityByPrincipal.get(principal);\n\t\t\tconst message = queue?.messages.shift();\n\t\t\tif (queue === undefined || message === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tauthorityPrincipalCursor = (index + 1) % authorityPrincipalOrder.length;\n\t\t\treturn message;\n\t\t}\n\t\treturn undefined;\n\t};\n\n\tconst dequeueClass = (\n\t\tmessageClass: GatewayControlAdmissionClass,\n\t): GatewayControlAdmissionMessage<TPayload> | undefined => {\n\t\tswitch (messageClass) {\n\t\t\tcase 'safety': {\n\t\t\t\tconst message = safety.shift();\n\t\t\t\treturn message;\n\t\t\t}\n\t\t\tcase 'authority':\n\t\t\t\treturn dequeueAuthority();\n\t\t\tcase 'liveness':\n\t\t\t\treturn dequeueFirstCoalescedMessage(livenessByKey);\n\t\t\tcase 'diagnostic':\n\t\t\t\treturn dequeueFirstCoalescedMessage(diagnosticByKey);\n\t\t}\n\t\tthrow new Error('unsupported gateway control admission class');\n\t};\n\n\treturn {\n\t\tcancelQueued() {\n\t\t\tconst cancelled: GatewayControlAdmissionMessage<TPayload>[] = [];\n\t\t\tfor (const message of safety.splice(0)) {\n\t\t\t\trelease(safetyAccounting, message.byteLength);\n\t\t\t\tcancelled.push(message);\n\t\t\t}\n\t\t\tfor (const [principal, queue] of authorityByPrincipal) {\n\t\t\t\tfor (const message of queue.messages.splice(0)) {\n\t\t\t\t\trelease(queue, message.byteLength);\n\t\t\t\t\trelease(authorityAccounting, message.byteLength);\n\t\t\t\t\tcancelled.push(message);\n\t\t\t\t}\n\t\t\t\tif (queue.messageCount === 0) {\n\t\t\t\t\tauthorityByPrincipal.delete(principal);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let index = authorityPrincipalOrder.length - 1; index >= 0; index -= 1) {\n\t\t\t\tif (!authorityByPrincipal.has(authorityPrincipalOrder[index] ?? '')) {\n\t\t\t\t\tauthorityPrincipalOrder.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tauthorityPrincipalCursor =\n\t\t\t\tauthorityPrincipalOrder.length === 0\n\t\t\t\t\t? 0\n\t\t\t\t\t: Math.min(authorityPrincipalCursor, authorityPrincipalOrder.length - 1);\n\t\t\tfor (const message of livenessByKey.values()) {\n\t\t\t\trelease(livenessAccounting, message.byteLength);\n\t\t\t\tcancelled.push(message);\n\t\t\t}\n\t\t\tlivenessByKey.clear();\n\t\t\tfor (const message of diagnosticByKey.values()) {\n\t\t\t\trelease(diagnosticAccounting, message.byteLength);\n\t\t\t\tcancelled.push(message);\n\t\t\t}\n\t\t\tdiagnosticByKey.clear();\n\t\t\treturn cancelled;\n\t\t},\n\t\tcomplete(completionToken) {\n\t\t\tconst message = inFlightMessages.get(completionToken);\n\t\t\tif (message === undefined || !inFlightMessages.delete(completionToken)) {\n\t\t\t\tthrow new Error('gateway control admission message is not in flight');\n\t\t\t}\n\t\t\tswitch (message.messageClass) {\n\t\t\t\tcase 'safety':\n\t\t\t\t\trelease(safetyAccounting, message.byteLength);\n\t\t\t\t\treturn;\n\t\t\t\tcase 'authority': {\n\t\t\t\t\tconst principal = message.stablePrincipal ?? '';\n\t\t\t\t\tconst queue = authorityByPrincipal.get(principal);\n\t\t\t\t\tif (queue === undefined) {\n\t\t\t\t\t\tthrow new Error('gateway control authority principal is not admitted');\n\t\t\t\t\t}\n\t\t\t\t\trelease(queue, message.byteLength);\n\t\t\t\t\trelease(authorityAccounting, message.byteLength);\n\t\t\t\t\tif (queue.messageCount === 0) {\n\t\t\t\t\t\tauthorityByPrincipal.delete(principal);\n\t\t\t\t\t\tconst index = authorityPrincipalOrder.indexOf(principal);\n\t\t\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\t\tauthorityPrincipalOrder.splice(index, 1);\n\t\t\t\t\t\t\tauthorityPrincipalCursor =\n\t\t\t\t\t\t\t\tauthorityPrincipalOrder.length === 0\n\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t: Math.min(authorityPrincipalCursor, authorityPrincipalOrder.length - 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase 'liveness':\n\t\t\t\t\trelease(livenessAccounting, message.byteLength);\n\t\t\t\t\treturn;\n\t\t\t\tcase 'diagnostic':\n\t\t\t\t\trelease(diagnosticAccounting, message.byteLength);\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\tenqueue(message) {\n\t\t\tconst invalid = validateMessage(message);\n\t\t\tif (invalid !== undefined) {\n\t\t\t\tfencedMessages += 1;\n\t\t\t\treturn invalid;\n\t\t\t}\n\t\t\tswitch (message.messageClass) {\n\t\t\t\tcase 'safety':\n\t\t\t\t\tif (\n\t\t\t\t\t\t!canReserve(\n\t\t\t\t\t\t\tsafetyAccounting,\n\t\t\t\t\t\t\tmessage.byteLength,\n\t\t\t\t\t\t\tGATEWAY_CONTROL_ADMISSION_LIMITS.safety,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tfencedMessages += 1;\n\t\t\t\t\t\treturn { reason: 'safety_capacity', status: 'fence' };\n\t\t\t\t\t}\n\t\t\t\t\tsafety.push(message);\n\t\t\t\t\tsafetyAccounting.byteCount += message.byteLength;\n\t\t\t\t\tsafetyAccounting.messageCount += 1;\n\t\t\t\t\treturn { status: 'admitted' };\n\t\t\t\tcase 'authority': {\n\t\t\t\t\tconst principal = message.stablePrincipal ?? '';\n\t\t\t\t\tconst queue = authorityByPrincipal.get(principal) ?? {\n\t\t\t\t\t\tbyteCount: 0,\n\t\t\t\t\t\tmessageCount: 0,\n\t\t\t\t\t\tmessages: [],\n\t\t\t\t\t};\n\t\t\t\t\tif (\n\t\t\t\t\t\t!canReserve(\n\t\t\t\t\t\t\tqueue,\n\t\t\t\t\t\t\tmessage.byteLength,\n\t\t\t\t\t\t\tGATEWAY_CONTROL_ADMISSION_LIMITS.perPrincipalAuthority,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\trefusedMessages += 1;\n\t\t\t\t\t\treturn { reason: 'principal_capacity', status: 'refused' };\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\t!canReserve(\n\t\t\t\t\t\t\tauthorityAccounting,\n\t\t\t\t\t\t\tmessage.byteLength,\n\t\t\t\t\t\t\tGATEWAY_CONTROL_ADMISSION_LIMITS.authority,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tfencedMessages += 1;\n\t\t\t\t\t\treturn { reason: 'authority_capacity', status: 'fence' };\n\t\t\t\t\t}\n\t\t\t\t\tif (!authorityByPrincipal.has(principal)) {\n\t\t\t\t\t\tauthorityByPrincipal.set(principal, queue);\n\t\t\t\t\t\tauthorityPrincipalOrder.push(principal);\n\t\t\t\t\t}\n\t\t\t\t\tqueue.messages.push(message);\n\t\t\t\t\tqueue.byteCount += message.byteLength;\n\t\t\t\t\tqueue.messageCount += 1;\n\t\t\t\t\tauthorityAccounting.byteCount += message.byteLength;\n\t\t\t\t\tauthorityAccounting.messageCount += 1;\n\t\t\t\t\treturn { status: 'admitted' };\n\t\t\t\t}\n\t\t\t\tcase 'liveness':\n\t\t\t\tcase 'diagnostic': {\n\t\t\t\t\tconst isLiveness = message.messageClass === 'liveness';\n\t\t\t\t\tconst messages = isLiveness ? livenessByKey : diagnosticByKey;\n\t\t\t\t\tconst accounting = isLiveness ? livenessAccounting : diagnosticAccounting;\n\t\t\t\t\tconst limits = isLiveness\n\t\t\t\t\t\t? GATEWAY_CONTROL_ADMISSION_LIMITS.liveness\n\t\t\t\t\t\t: GATEWAY_CONTROL_ADMISSION_LIMITS.diagnostic;\n\t\t\t\t\tconst key = message.coalesceKey ?? '';\n\t\t\t\t\tconst prior = messages.get(key);\n\t\t\t\t\tconst nextBytes = accounting.byteCount - (prior?.byteLength ?? 0) + message.byteLength;\n\t\t\t\t\tconst nextMessages = accounting.messageCount + (prior === undefined ? 1 : 0);\n\t\t\t\t\tif (nextBytes > limits.maxBytes || nextMessages > limits.maxMessages) {\n\t\t\t\t\t\tif (isLiveness) {\n\t\t\t\t\t\t\tshedMessages += 1;\n\t\t\t\t\t\t\treturn { reason: 'liveness_capacity', status: 'shed' };\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdroppedMessages += 1;\n\t\t\t\t\t\treturn { reason: 'diagnostic_capacity', status: 'dropped' };\n\t\t\t\t\t}\n\t\t\t\t\tmessages.set(key, message);\n\t\t\t\t\taccounting.byteCount = nextBytes;\n\t\t\t\t\taccounting.messageCount = nextMessages;\n\t\t\t\t\tif (prior !== undefined) {\n\t\t\t\t\t\tcoalescedMessages += 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn prior === undefined\n\t\t\t\t\t\t? { status: 'admitted' }\n\t\t\t\t\t\t: { replacedMessage: prior, status: 'replaced' };\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new Error('unsupported gateway control admission class');\n\t\t},\n\t\tdequeue(options = {}) {\n\t\t\tfor (let offset = 0; offset < serviceCycle.length; offset += 1) {\n\t\t\t\tconst index = (serviceCursor + offset) % serviceCycle.length;\n\t\t\t\tconst messageClass = serviceCycle[index];\n\t\t\t\tif (messageClass === undefined) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\toptions.allowedMessageClasses !== undefined &&\n\t\t\t\t\t!options.allowedMessageClasses.includes(messageClass)\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst message = dequeueClass(messageClass);\n\t\t\t\tif (message !== undefined) {\n\t\t\t\t\tserviceCursor = (index + 1) % serviceCycle.length;\n\t\t\t\t\tconst completionToken = Object.freeze({\n\t\t\t\t\t\tcompletionTokenId: Symbol('gateway-control-admission-completion'),\n\t\t\t\t\t}) satisfies GatewayControlAdmissionCompletionToken;\n\t\t\t\t\tinFlightMessages.set(completionToken, message);\n\t\t\t\t\treturn { completionToken, message };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\tdiagnostics() {\n\t\t\treturn {\n\t\t\t\tauthorityBytes: authorityAccounting.byteCount,\n\t\t\t\tauthorityMessages: authorityAccounting.messageCount,\n\t\t\t\tdiagnosticBytes: diagnosticAccounting.byteCount,\n\t\t\t\tdiagnosticMessages: diagnosticAccounting.messageCount,\n\t\t\t\tlivenessBytes: livenessAccounting.byteCount,\n\t\t\t\tlivenessMessages: livenessAccounting.messageCount,\n\t\t\t\tsafetyBytes: safetyAccounting.byteCount,\n\t\t\t\tsafetyMessages: safetyAccounting.messageCount,\n\t\t\t\tcoalescedMessages,\n\t\t\t\tdroppedMessages,\n\t\t\t\tfencedMessages,\n\t\t\t\trefusedMessages,\n\t\t\t\tshedMessages,\n\t\t\t};\n\t\t},\n\t};\n}\n\nexport function createGatewayControlProcessAdmission<TPayload>(\n\toptions: {\n\t\treadonly maxActiveSessions?: number;\n\t\treadonly maxNonSafetyBytes?: number;\n\t\treadonly maxNonSafetyMessages?: number;\n\t} = {},\n): GatewayControlProcessAdmission<TPayload> {\n\tconst maxActiveSessions =\n\t\toptions.maxActiveSessions ?? GATEWAY_CONTROL_PROCESS_ADMISSION_LIMITS.maxActiveSessions;\n\tconst maxNonSafetyBytes =\n\t\toptions.maxNonSafetyBytes ?? GATEWAY_CONTROL_PROCESS_ADMISSION_LIMITS.maxNonSafetyBytes;\n\tconst maxNonSafetyMessages =\n\t\toptions.maxNonSafetyMessages ?? GATEWAY_CONTROL_PROCESS_ADMISSION_LIMITS.maxNonSafetyMessages;\n\tconst schedulersByZone = new Map<string, GatewayControlAdmissionScheduler<TPayload>>();\n\tconst queuedCoalescibleMessagesByZone = new Map<\n\t\tstring,\n\t\tMap<string, GatewayControlProcessAdmissionMessage<TPayload>>\n\t>();\n\tconst inFlightMessages = new Map<\n\t\tGatewayControlAdmissionCompletionToken,\n\t\tGatewayControlProcessAdmissionMessage<TPayload>\n\t>();\n\tconst zoneOrder: string[] = [];\n\tlet zoneCursor = 0;\n\tlet nonSafetyBytes = 0;\n\tlet nonSafetyMessages = 0;\n\n\trequirePositiveLimit('maxActiveSessions', maxActiveSessions);\n\trequirePositiveLimit('maxNonSafetyBytes', maxNonSafetyBytes);\n\trequirePositiveLimit('maxNonSafetyMessages', maxNonSafetyMessages);\n\n\treturn {\n\t\tcomplete(completionToken) {\n\t\t\tconst message = inFlightMessages.get(completionToken);\n\t\t\tif (message === undefined || !inFlightMessages.delete(completionToken)) {\n\t\t\t\tthrow new Error('gateway control process admission message is not in flight');\n\t\t\t}\n\t\t\tconst scheduler = schedulersByZone.get(message.zoneId);\n\t\t\tif (scheduler === undefined) {\n\t\t\t\tthrow new Error('gateway control process admission zone is not registered');\n\t\t\t}\n\t\t\tscheduler.complete(completionToken);\n\t\t\tif (message.messageClass !== 'safety') {\n\t\t\t\tnonSafetyMessages -= 1;\n\t\t\t\tnonSafetyBytes -= message.byteLength;\n\t\t\t}\n\t\t},\n\t\tregisterZone(zoneId) {\n\t\t\tif (zoneId.length === 0) {\n\t\t\t\treturn { status: 'capacity_refused' };\n\t\t\t}\n\t\t\tif (schedulersByZone.has(zoneId)) {\n\t\t\t\treturn { status: 'admitted' };\n\t\t\t}\n\t\t\tif (schedulersByZone.size >= maxActiveSessions) {\n\t\t\t\treturn { status: 'capacity_refused' };\n\t\t\t}\n\t\t\tschedulersByZone.set(zoneId, createGatewayControlAdmissionScheduler<TPayload>());\n\t\t\tqueuedCoalescibleMessagesByZone.set(zoneId, new Map());\n\t\t\tzoneOrder.push(zoneId);\n\t\t\treturn { status: 'admitted' };\n\t\t},\n\t\tunregisterZone(zoneId) {\n\t\t\tconst scheduler = schedulersByZone.get(zoneId);\n\t\t\tif (scheduler === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (;;) {\n\t\t\t\tconst work = scheduler.dequeue();\n\t\t\t\tif (work === undefined) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tconst { completionToken, message } = work;\n\t\t\t\tif (message.messageClass !== 'safety') {\n\t\t\t\t\tnonSafetyBytes -= message.byteLength;\n\t\t\t\t\tnonSafetyMessages -= 1;\n\t\t\t\t}\n\t\t\t\tscheduler.complete(completionToken);\n\t\t\t}\n\t\t\tfor (const [completionToken, message] of inFlightMessages) {\n\t\t\t\tif (message.zoneId !== zoneId) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tinFlightMessages.delete(completionToken);\n\t\t\t\tscheduler.complete(completionToken);\n\t\t\t\tif (message.messageClass !== 'safety') {\n\t\t\t\t\tnonSafetyBytes -= message.byteLength;\n\t\t\t\t\tnonSafetyMessages -= 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tschedulersByZone.delete(zoneId);\n\t\t\tqueuedCoalescibleMessagesByZone.delete(zoneId);\n\t\t\tconst index = zoneOrder.indexOf(zoneId);\n\t\t\tif (index >= 0) {\n\t\t\t\tzoneOrder.splice(index, 1);\n\t\t\t\tzoneCursor = zoneOrder.length === 0 ? 0 : Math.min(zoneCursor, zoneOrder.length - 1);\n\t\t\t}\n\t\t},\n\t\tenqueue(message) {\n\t\t\tconst scheduler = schedulersByZone.get(message.zoneId);\n\t\t\tif (scheduler === undefined) {\n\t\t\t\treturn { reason: 'global_capacity', status: 'refused' };\n\t\t\t}\n\t\t\tconst coalescingKey = gatewayControlProcessCoalescingKey(message);\n\t\t\tconst priorCoalescibleMessage =\n\t\t\t\tcoalescingKey === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: queuedCoalescibleMessagesByZone.get(message.zoneId)?.get(coalescingKey);\n\t\t\tconst nonSafetyMessageDelta = priorCoalescibleMessage === undefined ? 1 : 0;\n\t\t\tconst nonSafetyByteDelta = message.byteLength - (priorCoalescibleMessage?.byteLength ?? 0);\n\t\t\tif (\n\t\t\t\tmessage.messageClass !== 'safety' &&\n\t\t\t\t(nonSafetyMessages + nonSafetyMessageDelta > maxNonSafetyMessages ||\n\t\t\t\t\tnonSafetyBytes + nonSafetyByteDelta > maxNonSafetyBytes)\n\t\t\t) {\n\t\t\t\treturn message.messageClass === 'authority'\n\t\t\t\t\t? { reason: 'global_capacity', status: 'refused' }\n\t\t\t\t\t: message.messageClass === 'liveness'\n\t\t\t\t\t\t? { reason: 'global_capacity', status: 'shed' }\n\t\t\t\t\t\t: { reason: 'global_capacity', status: 'dropped' };\n\t\t\t}\n\t\t\tconst before = scheduler.diagnostics();\n\t\t\tconst result = scheduler.enqueue(message);\n\t\t\tif (\n\t\t\t\tmessage.messageClass !== 'safety' &&\n\t\t\t\t(result.status === 'admitted' || result.status === 'replaced')\n\t\t\t) {\n\t\t\t\tconst after = scheduler.diagnostics();\n\t\t\t\tconst beforeMessages =\n\t\t\t\t\tbefore.authorityMessages + before.livenessMessages + before.diagnosticMessages;\n\t\t\t\tconst afterMessages =\n\t\t\t\t\tafter.authorityMessages + after.livenessMessages + after.diagnosticMessages;\n\t\t\t\tconst beforeBytes = before.authorityBytes + before.livenessBytes + before.diagnosticBytes;\n\t\t\t\tconst afterBytes = after.authorityBytes + after.livenessBytes + after.diagnosticBytes;\n\t\t\t\tnonSafetyMessages += afterMessages - beforeMessages;\n\t\t\t\tnonSafetyBytes += afterBytes - beforeBytes;\n\t\t\t\tif (coalescingKey !== undefined) {\n\t\t\t\t\tqueuedCoalescibleMessagesByZone.get(message.zoneId)?.set(coalescingKey, message);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\tdequeue() {\n\t\t\tif (zoneOrder.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tfor (let offset = 0; offset < zoneOrder.length; offset += 1) {\n\t\t\t\tconst index = (zoneCursor + offset) % zoneOrder.length;\n\t\t\t\tconst zoneId = zoneOrder[index];\n\t\t\t\tconst scheduler = zoneId === undefined ? undefined : schedulersByZone.get(zoneId);\n\t\t\t\tconst work = scheduler?.dequeue();\n\t\t\t\tif (zoneId === undefined || work === undefined) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst { completionToken, message } = work;\n\t\t\t\tif (!isGatewayControlProcessAdmissionMessage(message) || message.zoneId !== zoneId) {\n\t\t\t\t\tthrow new Error('gateway control process admission message lost its zone identity');\n\t\t\t\t}\n\t\t\t\tconst coalescingKey = gatewayControlProcessCoalescingKey(message);\n\t\t\t\tif (coalescingKey !== undefined) {\n\t\t\t\t\tconst queuedMessages = queuedCoalescibleMessagesByZone.get(zoneId);\n\t\t\t\t\tif (queuedMessages?.get(coalescingKey) === message) {\n\t\t\t\t\t\tqueuedMessages.delete(coalescingKey);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tzoneCursor = (index + 1) % zoneOrder.length;\n\t\t\t\tinFlightMessages.set(completionToken, message);\n\t\t\t\treturn { completionToken, message };\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\tdiagnostics() {\n\t\t\treturn { activeSessions: schedulersByZone.size, nonSafetyBytes, nonSafetyMessages };\n\t\t},\n\t};\n}\n","import {\n\tcreateGatewayControlAdmissionScheduler,\n\ttype GatewayControlAdmissionClass,\n\ttype GatewayControlAdmissionMessage,\n\ttype GatewayControlAdmissionResult,\n\ttype GatewayControlAdmissionScheduler,\n} from './gateway-control-admission.js';\n\nexport const GATEWAY_CONTROL_ADMISSION_EXECUTION_LIMITS = {\n\tauthority: 4,\n\tdiagnostic: 1,\n\tliveness: 2,\n\tsafety: 8,\n} as const satisfies Readonly<Record<GatewayControlAdmissionClass, number>>;\n\nconst GATEWAY_CONTROL_ADMISSION_CLASSES: readonly GatewayControlAdmissionClass[] = [\n\t'authority',\n\t'diagnostic',\n\t'liveness',\n\t'safety',\n];\n\ntype GatewayControlAdmissionNonExecutionResult<TPayload> = Exclude<\n\tGatewayControlAdmissionResult<TPayload>,\n\t{ readonly status: 'admitted' | 'replaced' }\n>;\n\nexport type GatewayControlAdmissionExecutionResult =\n\t| { readonly reason: string; readonly status: 'closed' }\n\t| { readonly status: 'executed' }\n\t| { readonly status: 'replaced' }\n\t| GatewayControlAdmissionNonExecutionResult<unknown>;\n\nexport type GatewayControlAdmissionSubmissionResult =\n\t| { readonly reason: string; readonly status: 'closed' }\n\t| { readonly status: 'admitted' | 'replaced' }\n\t| GatewayControlAdmissionNonExecutionResult<unknown>;\n\nexport interface GatewayControlAdmissionSubmission {\n\treadonly admission: GatewayControlAdmissionSubmissionResult;\n\treadonly completion: Promise<GatewayControlAdmissionExecutionResult>;\n}\n\nexport interface GatewayControlAdmissionExecutionRequest<TPayload> {\n\treadonly byteLength: number;\n\treadonly coalesceKey?: string;\n\treadonly execute: () => Promise<void>;\n\treadonly id: string;\n\treadonly messageClass: GatewayControlAdmissionClass;\n\treadonly onCancel?: (reason: string) => void;\n\treadonly payload: TPayload;\n\treadonly stablePrincipal?: string;\n}\n\nexport interface GatewayControlAdmissionExecutor<TPayload> {\n\tclose(reason: string): void;\n\tdiagnostics(): {\n\t\treadonly activeByClass: Readonly<Record<GatewayControlAdmissionClass, number>>;\n\t\treadonly scheduler: ReturnType<GatewayControlAdmissionScheduler<unknown>['diagnostics']>;\n\t};\n\tsubmit(\n\t\trequest: GatewayControlAdmissionExecutionRequest<TPayload>,\n\t): GatewayControlAdmissionSubmission;\n}\n\ninterface PendingGatewayControlAdmissionExecution<TPayload> {\n\treadonly admissionGeneration: number;\n\treadonly execute: () => Promise<void>;\n\treadonly onCancel?: (reason: string) => void;\n\treadonly payload: TPayload;\n\treadonly reject: (error: unknown) => void;\n\treadonly resolve: (result: GatewayControlAdmissionExecutionResult) => void;\n\tsettled: boolean;\n}\n\nfunction executionMessage<TPayload>(\n\trequest: GatewayControlAdmissionExecutionRequest<TPayload>,\n\twork: PendingGatewayControlAdmissionExecution<TPayload>,\n): GatewayControlAdmissionMessage<PendingGatewayControlAdmissionExecution<TPayload>> {\n\treturn {\n\t\tbyteLength: request.byteLength,\n\t\t...(request.coalesceKey === undefined ? {} : { coalesceKey: request.coalesceKey }),\n\t\tid: request.id,\n\t\tmessageClass: request.messageClass,\n\t\tpayload: work,\n\t\t...(request.stablePrincipal === undefined ? {} : { stablePrincipal: request.stablePrincipal }),\n\t};\n}\n\nexport function createGatewayControlAdmissionExecutor<TPayload>(\n\toptions: {\n\t\treadonly executionLimits?: Partial<Readonly<Record<GatewayControlAdmissionClass, number>>>;\n\t\treadonly scheduleImmediate?: (callback: () => void) => void;\n\t} = {},\n): GatewayControlAdmissionExecutor<TPayload> {\n\tconst scheduler =\n\t\tcreateGatewayControlAdmissionScheduler<PendingGatewayControlAdmissionExecution<TPayload>>();\n\tconst scheduleImmediate =\n\t\toptions.scheduleImmediate ?? ((callback: () => void) => setImmediate(callback));\n\tconst executionLimits = {\n\t\t...GATEWAY_CONTROL_ADMISSION_EXECUTION_LIMITS,\n\t\t...options.executionLimits,\n\t};\n\tconst activeByClass: Record<GatewayControlAdmissionClass, number> = {\n\t\tauthority: 0,\n\t\tdiagnostic: 0,\n\t\tliveness: 0,\n\t\tsafety: 0,\n\t};\n\tlet pumpScheduled = false;\n\tlet admissionGeneration = 0;\n\tlet closedReason: string | undefined;\n\tconst activeWork = new Set<PendingGatewayControlAdmissionExecution<TPayload>>();\n\n\tfor (const messageClass of GATEWAY_CONTROL_ADMISSION_CLASSES) {\n\t\tconst limit = executionLimits[messageClass];\n\t\tif (!Number.isSafeInteger(limit) || limit <= 0) {\n\t\t\tthrow new RangeError(`${messageClass} execution limit must be a positive safe integer.`);\n\t\t}\n\t}\n\n\tconst schedulePump = (): void => {\n\t\tif (pumpScheduled || closedReason !== undefined) {\n\t\t\treturn;\n\t\t}\n\t\tpumpScheduled = true;\n\t\tscheduleImmediate(() => {\n\t\t\tpumpScheduled = false;\n\t\t\tpump();\n\t\t});\n\t};\n\n\tconst pump = (): void => {\n\t\tif (closedReason !== undefined) {\n\t\t\treturn;\n\t\t}\n\t\tfor (;;) {\n\t\t\tconst allowedMessageClasses = GATEWAY_CONTROL_ADMISSION_CLASSES.filter(\n\t\t\t\t(messageClass) => activeByClass[messageClass] < executionLimits[messageClass],\n\t\t\t);\n\t\t\tif (allowedMessageClasses.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst admittedWork = scheduler.dequeue({ allowedMessageClasses });\n\t\t\tif (admittedWork === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { completionToken, message } = admittedWork;\n\t\t\tconst messageClass = message.messageClass;\n\t\t\tconst work = message.payload;\n\t\t\tactiveByClass[messageClass] += 1;\n\t\t\tactiveWork.add(work);\n\t\t\tvoid (async (): Promise<void> => {\n\t\t\t\tlet executionError: unknown;\n\t\t\t\ttry {\n\t\t\t\t\tawait work.execute();\n\t\t\t\t} catch (error) {\n\t\t\t\t\texecutionError = error;\n\t\t\t\t} finally {\n\t\t\t\t\tscheduler.complete(completionToken);\n\t\t\t\t\tactiveByClass[messageClass] -= 1;\n\t\t\t\t\tactiveWork.delete(work);\n\t\t\t\t\tschedulePump();\n\t\t\t\t}\n\t\t\t\tif (work.settled || work.admissionGeneration !== admissionGeneration) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\twork.settled = true;\n\t\t\t\tif (executionError === undefined) {\n\t\t\t\t\twork.resolve({ status: 'executed' });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\twork.reject(executionError);\n\t\t\t})();\n\t\t}\n\t};\n\n\treturn {\n\t\tclose: (reason) => {\n\t\t\tif (closedReason !== undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclosedReason = reason;\n\t\t\tadmissionGeneration += 1;\n\t\t\tfor (const message of scheduler.cancelQueued()) {\n\t\t\t\tconst work = message.payload;\n\t\t\t\tif (!work.settled) {\n\t\t\t\t\twork.settled = true;\n\t\t\t\t\twork.onCancel?.(reason);\n\t\t\t\t\twork.resolve({ reason, status: 'closed' });\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const work of activeWork) {\n\t\t\t\tif (!work.settled) {\n\t\t\t\t\twork.settled = true;\n\t\t\t\t\twork.onCancel?.(reason);\n\t\t\t\t\twork.resolve({ reason, status: 'closed' });\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdiagnostics: () => ({\n\t\t\tactiveByClass: { ...activeByClass },\n\t\t\tscheduler: scheduler.diagnostics(),\n\t\t}),\n\t\tsubmit: (request) => {\n\t\t\tif (closedReason !== undefined) {\n\t\t\t\tconst closed = { reason: closedReason, status: 'closed' } as const;\n\t\t\t\treturn { admission: closed, completion: Promise.resolve(closed) };\n\t\t\t}\n\t\t\tlet resolveCompletion!: (result: GatewayControlAdmissionExecutionResult) => void;\n\t\t\tlet rejectCompletion!: (error: unknown) => void;\n\t\t\tconst completion = new Promise<GatewayControlAdmissionExecutionResult>((resolve, reject) => {\n\t\t\t\tresolveCompletion = resolve;\n\t\t\t\trejectCompletion = reject;\n\t\t\t});\n\t\t\tconst work = {\n\t\t\t\tadmissionGeneration,\n\t\t\t\texecute: request.execute,\n\t\t\t\t...(request.onCancel === undefined ? {} : { onCancel: request.onCancel }),\n\t\t\t\tpayload: request.payload,\n\t\t\t\treject: rejectCompletion,\n\t\t\t\tresolve: resolveCompletion,\n\t\t\t\tsettled: false,\n\t\t\t} satisfies PendingGatewayControlAdmissionExecution<TPayload>;\n\t\t\tconst result = scheduler.enqueue(executionMessage(request, work));\n\t\t\tswitch (result.status) {\n\t\t\t\tcase 'admitted':\n\t\t\t\t\tschedulePump();\n\t\t\t\t\treturn { admission: { status: 'admitted' }, completion };\n\t\t\t\tcase 'replaced':\n\t\t\t\t\tif (!result.replacedMessage.payload.settled) {\n\t\t\t\t\t\tresult.replacedMessage.payload.settled = true;\n\t\t\t\t\t\tresult.replacedMessage.payload.onCancel?.('replaced');\n\t\t\t\t\t\tresult.replacedMessage.payload.resolve({ status: 'replaced' });\n\t\t\t\t\t}\n\t\t\t\t\tschedulePump();\n\t\t\t\t\treturn { admission: { status: 'replaced' }, completion };\n\t\t\t\tcase 'dropped':\n\t\t\t\tcase 'fence':\n\t\t\t\tcase 'refused':\n\t\t\t\tcase 'shed':\n\t\t\t\t\tresolveCompletion(result);\n\t\t\t\t\treturn { admission: result, completion };\n\t\t\t}\n\t\t\tthrow new Error('unsupported gateway control admission result');\n\t\t},\n\t};\n}\n","import type { GatewayControlAdmissionClass } from './gateway-control-admission.js';\nimport type { GatewayControlRpcMessage } from './index.js';\n\nexport type GatewayControlAdmissionDirection = 'controller_to_gateway' | 'gateway_to_controller';\n\nexport type GatewayControlAdmissionClassification =\n\t| {\n\t\t\treadonly authoritySchedulingKey?: string;\n\t\t\treadonly coalesceKey?: string;\n\t\t\treadonly messageClass: GatewayControlAdmissionClass;\n\t\t\treadonly stablePrincipal?: string;\n\t\t\treadonly status: 'classified';\n\t }\n\t| {\n\t\t\treadonly reason: 'stable_principal_required' | 'unproven_gateway_cancel';\n\t\t\treadonly status: 'refused';\n\t }\n\t| {\n\t\t\treadonly reason: 'direction_violation' | 'forged_command_result';\n\t\t\treadonly status: 'fence';\n\t };\n\nexport interface ClassifyGatewayControlAdmissionOptions {\n\treadonly controllerSafetyOperation?: boolean;\n\treadonly direction: GatewayControlAdmissionDirection;\n\treadonly matchedPendingResult?: boolean;\n\treadonly message: GatewayControlRpcMessage;\n\treadonly stablePrincipal?: string;\n}\n\nfunction authorityClassification(\n\tstablePrincipal: string | undefined,\n): GatewayControlAdmissionClassification {\n\treturn stablePrincipal === undefined || stablePrincipal.length === 0\n\t\t? { reason: 'stable_principal_required', status: 'refused' }\n\t\t: {\n\t\t\t\tauthoritySchedulingKey: stablePrincipal,\n\t\t\t\tmessageClass: 'authority',\n\t\t\t\tstablePrincipal,\n\t\t\t\tstatus: 'classified',\n\t\t\t};\n}\n\nfunction diagnosticCoalesceKey(\n\tpayload: Extract<GatewayControlRpcMessage, { readonly operation: 'health_event' }>['payload'],\n): string {\n\treturn JSON.stringify([\n\t\tpayload.eventKind,\n\t\t'leaseId' in payload ? payload.leaseId : undefined,\n\t\t'transitionId' in payload ? payload.transitionId : undefined,\n\t\t'operation' in payload ? payload.operation : undefined,\n\t\t'channelProviderId' in payload ? payload.channelProviderId : undefined,\n\t]);\n}\n\nexport function classifyGatewayControlAdmission(\n\toptions: ClassifyGatewayControlAdmissionOptions,\n): GatewayControlAdmissionClassification {\n\tconst message = options.message;\n\tif (message.kind === 'command_result') {\n\t\treturn options.matchedPendingResult === true\n\t\t\t? { messageClass: 'safety', status: 'classified' }\n\t\t\t: { reason: 'forged_command_result', status: 'fence' };\n\t}\n\tif (message.kind === 'heartbeat') {\n\t\treturn {\n\t\t\tcoalesceKey: `${options.direction}:control-heartbeat`,\n\t\t\tmessageClass: 'liveness',\n\t\t\tstatus: 'classified',\n\t\t};\n\t}\n\tif (message.kind === 'event') {\n\t\tif (options.direction !== 'gateway_to_controller') {\n\t\t\treturn { reason: 'direction_violation', status: 'fence' };\n\t\t}\n\t\tswitch (message.operation) {\n\t\t\tcase 'runtime_status':\n\t\t\t\treturn {\n\t\t\t\t\tcoalesceKey: `runtime-status:${message.payload.statusKind}`,\n\t\t\t\t\tmessageClass: 'liveness',\n\t\t\t\t\tstatus: 'classified',\n\t\t\t\t};\n\t\t\tcase 'health_event':\n\t\t\t\treturn {\n\t\t\t\t\tcoalesceKey: diagnosticCoalesceKey(message.payload),\n\t\t\t\t\tmessageClass: 'diagnostic',\n\t\t\t\t\tstatus: 'classified',\n\t\t\t\t};\n\t\t}\n\t}\n\tif (message.operation === 'control_ping') {\n\t\treturn {\n\t\t\tcoalesceKey: `${options.direction}:control-ping`,\n\t\t\tmessageClass: 'liveness',\n\t\t\tstatus: 'classified',\n\t\t};\n\t}\n\tif (options.direction === 'controller_to_gateway') {\n\t\tswitch (message.operation) {\n\t\t\tcase 'operation_cancel':\n\t\t\t\treturn options.controllerSafetyOperation === true &&\n\t\t\t\t\tmessage.payload.initiatedBy === 'controller'\n\t\t\t\t\t? { messageClass: 'safety', status: 'classified' }\n\t\t\t\t\t: { reason: 'direction_violation', status: 'fence' };\n\t\t\tcase 'recovery_command':\n\t\t\t\treturn options.controllerSafetyOperation === true\n\t\t\t\t\t? { messageClass: 'safety', status: 'classified' }\n\t\t\t\t\t: { reason: 'direction_violation', status: 'fence' };\n\t\t\tcase 'caller_context_register':\n\t\t\tcase 'lease_create':\n\t\t\tcase 'lease_get':\n\t\t\tcase 'lease_peek':\n\t\t\tcase 'lease_reacquire':\n\t\t\tcase 'lease_release':\n\t\t\tcase 'lease_renew':\n\t\t\tcase 'lease_use_start':\n\t\t\tcase 'lease_use_heartbeat':\n\t\t\tcase 'lease_use_end':\n\t\t\tcase 'tool_portal_controller_host_action':\n\t\t\t\treturn { reason: 'direction_violation', status: 'fence' };\n\t\t}\n\t}\n\tswitch (message.operation) {\n\t\tcase 'caller_context_register':\n\t\t\treturn authorityClassification(options.stablePrincipal);\n\t\tcase 'lease_renew':\n\t\t\treturn options.stablePrincipal === undefined\n\t\t\t\t? { reason: 'stable_principal_required', status: 'refused' }\n\t\t\t\t: {\n\t\t\t\t\t\tcoalesceKey: `${options.stablePrincipal}:lease:${message.payload.leaseId}`,\n\t\t\t\t\t\tmessageClass: 'liveness',\n\t\t\t\t\t\tstatus: 'classified',\n\t\t\t\t\t};\n\t\tcase 'lease_use_heartbeat':\n\t\t\treturn options.stablePrincipal === undefined\n\t\t\t\t? { reason: 'stable_principal_required', status: 'refused' }\n\t\t\t\t: {\n\t\t\t\t\t\tcoalesceKey: `${options.stablePrincipal}:lease:${message.payload.leaseId}:use:${message.payload.useId}`,\n\t\t\t\t\t\tmessageClass: 'liveness',\n\t\t\t\t\t\tstatus: 'classified',\n\t\t\t\t\t};\n\t\tcase 'operation_cancel':\n\t\t\treturn message.payload.initiatedBy === 'gateway'\n\t\t\t\t? { reason: 'unproven_gateway_cancel', status: 'refused' }\n\t\t\t\t: { reason: 'direction_violation', status: 'fence' };\n\t\tcase 'recovery_command':\n\t\t\treturn { reason: 'direction_violation', status: 'fence' };\n\t\tcase 'lease_create':\n\t\tcase 'lease_get':\n\t\tcase 'lease_peek':\n\t\tcase 'lease_reacquire':\n\t\tcase 'lease_release':\n\t\tcase 'lease_use_start':\n\t\tcase 'lease_use_end':\n\t\tcase 'tool_portal_controller_host_action':\n\t\t\treturn authorityClassification(options.stablePrincipal);\n\t}\n\treturn { reason: 'direction_violation', status: 'fence' };\n}\n","import {\n\tCONTROL_PROTOCOL_VERSION,\n\tControlCorrelationSchema,\n\tControlRpcErrorSchema,\n\tControlRpcResultBaseSchema,\n\tControlSessionStateSchema,\n\ttype ControlSessionControllerToPeerEvents,\n\ttype ControlSessionPeerToControllerEvents,\n\tKnownControlDomainSchema,\n\ttype ControlDeliveryPolicy,\n\ttype ControlEnvelope,\n\ttype ControlMessageKind,\n} from '@agent-vm/control-protocol-contracts';\nimport { z } from 'zod/v4';\n\nexport * from './gateway-control-admission.js';\nexport * from './gateway-control-admission-executor.js';\nexport * from './gateway-control-admission-classification.js';\n\nexport const GatewayControlDomainSchema = z.literal('gateway_control');\n\nexport const GatewayControlHelloSchema = z\n\t.object({\n\t\tattachmentGeneration: z.number().int().positive(),\n\t\tcontrollerEpoch: z.string().min(1),\n\t\tdomain: GatewayControlDomainSchema,\n\t\tgatewayEpoch: z.string().min(1),\n\t\tpeerId: z.string().min(1),\n\t\tprocessEpoch: z.string().min(1),\n\t\tprotocolVersion: z.literal(CONTROL_PROTOCOL_VERSION),\n\t})\n\t.strict();\n\nexport const GatewayControlHelloResponseSchema = z\n\t.object({\n\t\tattachmentGeneration: z.number().int().positive(),\n\t\tconnectionId: z.string().uuid(),\n\t\tcontrollerEpoch: z.string().min(1),\n\t\toutcome: z.enum(['accepted', 'rejected', 'generation_mismatch', 'stale_attachment']),\n\t\tsessionId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayControlRpcOperationSchema = z.enum([\n\t'control_ping',\n\t'caller_context_register',\n\t'lease_create',\n\t'lease_get',\n\t'lease_peek',\n\t'lease_reacquire',\n\t'lease_renew',\n\t'lease_release',\n\t'lease_use_start',\n\t'lease_use_heartbeat',\n\t'lease_use_end',\n\t'health_event',\n\t'runtime_status',\n\t'tool_portal_controller_host_action',\n\t'operation_cancel',\n\t'recovery_command',\n]);\n\nexport const GatewayControlRpcResultSchema = z.enum([\n\t...ControlRpcResultBaseSchema.options,\n\t'approval_required',\n\t'approval_stale',\n]);\n\nexport const GatewayControlForbiddenPayloadFieldSchema = z.enum([\n\t'adminToken',\n\t'agentId',\n\t'approvalProof',\n\t'argv',\n\t'controllerInstanceId',\n\t'cwd',\n\t'credentialProfileId',\n\t'egressPolicy',\n\t'env',\n\t'executablePath',\n\t'hostWorkMountDir',\n\t'profileId',\n\t'rawCredentialRef',\n\t'retryPolicy',\n\t'routeToken',\n\t'sessionKey',\n\t'sshIdentityPem',\n\t'vmGenerationOverride',\n\t'workMountDir',\n]);\n\nexport const GatewayControlCapabilityRefSchema = z\n\t.object({\n\t\tname: z.string().min(1),\n\t\tnamespace: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayControlToolCallCorrelationSchema = ControlCorrelationSchema.extend({\n\tcapability: GatewayControlCapabilityRefSchema.optional(),\n}).strict();\n\nexport const GatewayControlTrustedCallerContextIdSchema = z.string().uuid();\nexport const GatewayControlAdmissionPrincipalSchema = z.string().regex(/^[a-f0-9]{64}$/u);\n\nexport const GatewayControlTrustedLeaseContextSchema = z\n\t.object({\n\t\tagentId: z.string().min(1),\n\t\tagentWorkspaceDir: z.string().min(1),\n\t\tapprovalScopeId: z.string().min(1).optional(),\n\t\tcallerContextId: GatewayControlTrustedCallerContextIdSchema,\n\t\tcustodyScopeId: z.string().min(1).optional(),\n\t\thostWorkMountDir: z.string().min(1),\n\t\tprofileId: z.string().min(1),\n\t\tsessionKeyDigest: z.string().min(32),\n\t\tworkMountDir: z.string().min(1),\n\t\tzoneId: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayControlCallerContextRefSchema = z\n\t.object({\n\t\tcallerContextId: GatewayControlTrustedCallerContextIdSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlRegisteredCallerContextRefSchema =\n\tGatewayControlCallerContextRefSchema.extend({\n\t\tadmissionPrincipal: GatewayControlAdmissionPrincipalSchema,\n\t}).strict();\n\nexport const GatewayControlCallerContextProofAlgorithmSchema = z.literal('hmac-sha256');\n\nexport const GatewayControlCallerContextProofSchema = z\n\t.object({\n\t\talgorithm: GatewayControlCallerContextProofAlgorithmSchema,\n\t\tdigest: z.string().min(32),\n\t})\n\t.strict();\n\nexport const GatewayControlCallerContextAgentAuthoritySchema = z\n\t.object({\n\t\talgorithm: GatewayControlCallerContextProofAlgorithmSchema,\n\t\tdigest: z.string().min(32),\n\t\tkeyId: z.string().min(1),\n\t})\n\t.strict();\n\nexport interface GatewayControlCallerContextProofPayloadInput {\n\treadonly agentId: string;\n\treadonly agentWorkspaceDir: string;\n\treadonly purpose?: 'tool_vm_lease' | 'tool_portal_controller_host_action' | undefined;\n\treadonly sessionKey: string;\n\treadonly workMountDir: string;\n\treadonly zoneId: string;\n}\n\nexport function buildGatewayControlCallerContextProofPayload(\n\tinput: GatewayControlCallerContextProofPayloadInput,\n): string {\n\tconst purpose = input.purpose ?? 'tool_vm_lease';\n\treturn [\n\t\t'gateway-control-caller-context-v1',\n\t\tinput.zoneId,\n\t\tinput.agentId,\n\t\tinput.agentWorkspaceDir,\n\t\tinput.workMountDir,\n\t\tinput.sessionKey,\n\t\tpurpose,\n\t].join('\\u0000');\n}\n\nexport function buildGatewayControlCallerContextAgentAuthorityPayload(\n\tinput: GatewayControlCallerContextProofPayloadInput,\n): string {\n\tconst purpose = input.purpose ?? 'tool_vm_lease';\n\treturn [\n\t\t'gateway-control-agent-authority-v1',\n\t\tinput.zoneId,\n\t\tinput.agentId,\n\t\tinput.agentWorkspaceDir,\n\t\tinput.workMountDir,\n\t\tinput.sessionKey,\n\t\tpurpose,\n\t].join('\\u0000');\n}\n\nexport const GatewayControlCallerContextRegisterPayloadSchema = z\n\t.object({\n\t\tadapterEvidence: z\n\t\t\t.object({\n\t\t\t\tagentAuthority: GatewayControlCallerContextAgentAuthoritySchema,\n\t\t\t\tagentId: z.string().min(1),\n\t\t\t\tagentWorkspaceDir: z.string().min(1),\n\t\t\t\tproof: GatewayControlCallerContextProofSchema,\n\t\t\t\tpurpose: z.enum(['tool_vm_lease', 'tool_portal_controller_host_action']).optional(),\n\t\t\t\tsessionKey: z.string().min(1),\n\t\t\t\tworkMountDir: z.string().min(1),\n\t\t\t\tzoneId: z.string().min(1),\n\t\t\t})\n\t\t\t.strict(),\n\t\tcorrelation: GatewayControlToolCallCorrelationSchema.optional(),\n\t})\n\t.strict();\n\nexport const GatewayControlLeaseCreateIntentPayloadSchema = z\n\t.object({\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tcorrelation: GatewayControlToolCallCorrelationSchema.optional(),\n\t\tgatewayWorkspaceDir: z.string().min(1).optional(),\n\t\tidleTtlHintMs: z.number().int().positive().optional(),\n\t})\n\t.strict();\n\nexport const GatewayControlLeaseIdPayloadSchema = z\n\t.object({\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tleaseId: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayControlLeaseUseStartPayloadSchema = z\n\t.object({\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tcorrelation: GatewayControlToolCallCorrelationSchema.optional(),\n\t\tleaseId: z.string().min(1),\n\t\tuseId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayControlLeaseUseHeartbeatPayloadSchema = z\n\t.object({\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tleaseId: z.string().min(1),\n\t\tobservedAtMs: z.number().int().positive().optional(),\n\t\tuseId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayControlLeaseUseEndPayloadSchema = z\n\t.object({\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tleaseId: z.string().min(1),\n\t\treason: z.enum(['completed', 'failed', 'cancelled', 'timed_out']),\n\t\tuseId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayControlLeaseStaleEvidenceSchema = z.discriminatedUnion('kind', [\n\tz\n\t\t.object({\n\t\t\terrorCode: z.string().min(1).optional(),\n\t\t\tkind: z.literal('tool-vm-ssh'),\n\t\t\tobservedAtMs: z.number().int().positive(),\n\t\t\toperation: z.enum(['command', 'file-bridge', 'finalize', 'probe']),\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('caller-context'),\n\t\t\tobservedAtMs: z.number().int().positive(),\n\t\t\treason: z.enum(['absent', 'stale', 'session_mismatch', 'lease_authority_absent']).optional(),\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('lease-manager'),\n\t\t\tobservedAtMs: z.number().int().positive(),\n\t\t\treason: z.enum(['expired', 'released', 'force_released', 'generation_stale']).optional(),\n\t\t})\n\t\t.strict(),\n]);\n\nexport const GatewayControlLeaseReacquireIntentPayloadSchema = z\n\t.object({\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tcorrelation: GatewayControlToolCallCorrelationSchema.optional(),\n\t\tidleTtlHintMs: z.number().int().positive().optional(),\n\t\toldLeaseId: z.string().min(1),\n\t\tstaleEvidence: GatewayControlLeaseStaleEvidenceSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlHealthEventResultSchema = z.enum([\n\t'ok',\n\t'failed',\n\t'timeout',\n\t'degraded',\n]);\n\nexport const GatewayControlProviderRuntimeHealthSchema = z.enum([\n\t'healthy',\n\t'transitioning',\n\t'unhealthy_recoverable',\n\t'unhealthy_unrecoverable',\n]);\n\nexport const GatewayControlLeaseRejectionReasonSchema = z.enum([\n\t'caller_context_absent',\n\t'caller_context_session_mismatch',\n\t'caller_context_stale',\n\t'lease_absent',\n\t'lease_authority_absent',\n\t'lease_force_released',\n\t'lease_generation_stale',\n\t'lease_reacquire_required',\n\t'lease_releasing',\n\t'lease_retired',\n\t'lease_use_tombstoned',\n\t'ownership_denied',\n\t'runtime_not_ready',\n]);\n\nexport const GatewayControlToolVmLeaseLifecycleEventRoleSchema = z.literal('plugin_observation');\n\nexport const GatewayControlToolVmLeaseLifecycleTransitionSchema = z.enum([\n\t'current_to_stale',\n\t'current_to_retired',\n\t'deprecated_to_reacquired',\n\t'deprecated_to_retired',\n\t'stale_to_reacquired',\n\t'stale_to_retired',\n\t'retired_rejected',\n]);\n\nexport const GatewayControlToolVmLeaseCallerContextStateSchema = z.enum([\n\t'ok',\n\t'absent',\n\t'stale',\n\t'session_mismatch',\n\t'not_applicable',\n]);\n\nexport const GatewayControlControllerRequestHealthOperationSchema = z.enum([\n\t'zone-git-push',\n\t'lease-create',\n\t'lease-get',\n\t'lease-peek',\n\t'lease-release',\n\t'lease-use-start',\n\t'lease-use-end',\n]);\n\nexport const GatewayControlSessionHealthOperationSchema = z.enum([\n\t'control-session-hello',\n\t'control-session-heartbeat',\n\t'control-session-disconnect',\n\t'control-session-reconnect',\n]);\n\nexport const GatewayControlToolVmSshHealthOperationSchema = z.enum([\n\t'command',\n\t'file-bridge',\n\t'finalize',\n\t'probe',\n]);\n\nconst GatewayControlToolVmLeaseReacquiredLifecycleTransitionSchema = z.enum([\n\t'deprecated_to_reacquired',\n\t'stale_to_reacquired',\n]);\n\nconst GatewayControlHealthEventBaseSchema = z\n\t.object({\n\t\tcorrelation: ControlCorrelationSchema.optional(),\n\t\tobservedAtMs: z.number().int().positive(),\n\t\tresult: GatewayControlHealthEventResultSchema,\n\t})\n\t.strict();\n\nconst GatewayControlToolVmSshHealthEventBaseSchema = GatewayControlHealthEventBaseSchema.extend({\n\tagentId: z.string().min(1),\n\telapsedMs: z.number().int().nonnegative(),\n\terrorCode: z.string().min(1).optional(),\n\teventKind: z.literal('tool-vm-ssh'),\n\tleaseId: z.string().min(1),\n\toperation: GatewayControlToolVmSshHealthOperationSchema,\n}).strict();\n\nconst GatewayControlToolVmSshLifecycleHealthEventSchema =\n\tGatewayControlToolVmSshHealthEventBaseSchema.extend({\n\t\tactiveUseId: z.string().min(1).optional(),\n\t\tcallerContextState: GatewayControlToolVmLeaseCallerContextStateSchema.optional(),\n\t\tleaseRejectionReason: GatewayControlLeaseRejectionReasonSchema.optional(),\n\t\tlifecycleEventRole: GatewayControlToolVmLeaseLifecycleEventRoleSchema,\n\t\tlifecycleTransition: GatewayControlToolVmLeaseLifecycleTransitionSchema,\n\t\toldLeaseId: z.string().min(1),\n\t\treplacementLeaseId: z.string().min(1).optional(),\n\t\ttransitionId: z.string().min(1),\n\t})\n\t\t.strict()\n\t\t.superRefine((event, context) => {\n\t\t\tconst isReacquiredTransition =\n\t\t\t\tGatewayControlToolVmLeaseReacquiredLifecycleTransitionSchema.safeParse(\n\t\t\t\t\tevent.lifecycleTransition,\n\t\t\t\t).success;\n\t\t\tif (isReacquiredTransition && event.replacementLeaseId === undefined) {\n\t\t\t\tcontext.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'replacementLeaseId is required for reacquired lifecycle transitions',\n\t\t\t\t\tpath: ['replacementLeaseId'],\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (!isReacquiredTransition && event.replacementLeaseId !== undefined) {\n\t\t\t\tcontext.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'replacementLeaseId is only valid for reacquired lifecycle transitions',\n\t\t\t\t\tpath: ['replacementLeaseId'],\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\nexport const GatewayControlHealthEventPayloadSchema = z.union([\n\tGatewayControlHealthEventBaseSchema.extend({\n\t\tchannelProviderId: z.string().min(1),\n\t\teventKind: z.literal('agent-channel-provider-health'),\n\t\tproviderRuntimeHealth: GatewayControlProviderRuntimeHealthSchema,\n\t\tsafeDetails: z.record(z.string(), z.string()).optional(),\n\t}).strict(),\n\tGatewayControlHealthEventBaseSchema.extend({\n\t\tattempt: z.number().int().positive(),\n\t\telapsedMs: z.number().int().nonnegative(),\n\t\terrorCode: z.string().min(1).optional(),\n\t\teventKind: z.literal('controller-request'),\n\t\tmaxAttempts: z.number().int().positive(),\n\t\toperation: GatewayControlControllerRequestHealthOperationSchema,\n\t\tstatusCode: z.number().int().positive().optional(),\n\t}).strict(),\n\tGatewayControlHealthEventBaseSchema.extend({\n\t\telapsedMs: z.number().int().nonnegative(),\n\t\teventKind: z.literal('gateway-control-session'),\n\t\toperation: GatewayControlSessionHealthOperationSchema,\n\t\tsafeDetails: z\n\t\t\t.object({\n\t\t\t\tpeerId: z.string().min(1),\n\t\t\t})\n\t\t\t.catchall(z.string()),\n\t}).strict(),\n\tGatewayControlHealthEventBaseSchema.extend({\n\t\teventKind: z.literal('gateway-plugin-health'),\n\t}).strict(),\n\tGatewayControlToolVmSshHealthEventBaseSchema,\n\tGatewayControlToolVmSshLifecycleHealthEventSchema,\n]);\n\nexport const GatewayControlRuntimeFindingSchema = z\n\t.object({\n\t\tid: z.string().min(1),\n\t\tok: z.boolean(),\n\t\tsafeMessage: z.string().min(1).optional(),\n\t\tseverity: z.enum(['info', 'warning', 'error']).optional(),\n\t})\n\t.strict();\n\nexport const GatewayControlRuntimeStatusPayloadSchema = z\n\t.object({\n\t\tfindings: z.array(GatewayControlRuntimeFindingSchema),\n\t\tobservedAtMs: z.number().int().positive(),\n\t\tproviderRuntimeHealth: z\n\t\t\t.enum(['healthy', 'transitioning', 'unhealthy_recoverable', 'unhealthy_unrecoverable'])\n\t\t\t.optional(),\n\t\tstatusKind: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayControlZoneGitPushControllerHostActionPayloadSchema = z\n\t.object({\n\t\tactionId: z.literal('zone_git_push'),\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tcorrelation: GatewayControlToolCallCorrelationSchema,\n\t\texpectedHead: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayControlControllerHostProbePayloadSchema = z\n\t.object({\n\t\tactionId: z.literal('controller_host_probe'),\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tcorrelation: GatewayControlToolCallCorrelationSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlToolPortalControllerHostActionPayloadSchema = z.discriminatedUnion(\n\t'actionId',\n\t[\n\t\tGatewayControlZoneGitPushControllerHostActionPayloadSchema,\n\t\tGatewayControlControllerHostProbePayloadSchema,\n\t],\n);\n\nexport const GatewayControlZoneGitCommitSummarySchema = z\n\t.object({\n\t\tsha: z.string().min(1),\n\t\tsubject: z.string(),\n\t})\n\t.strict();\n\nexport const GatewayControlZoneGitPushResultSchema = z\n\t.object({\n\t\tbranch: z.string().min(1),\n\t\tlocalHead: z.string().min(1),\n\t\tpushedCommits: z.array(GatewayControlZoneGitCommitSummarySchema),\n\t\tremoteHead: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayControlControllerHostProbeResultSchema = z\n\t.object({\n\t\tentryNames: z.array(z.string().min(1)).max(64),\n\t\tprobeKind: z.literal('controller_cache_dir_listing'),\n\t})\n\t.strict();\n\nexport const GatewayControlZoneGitPushControllerHostActionResultSchema = z\n\t.object({\n\t\tactionId: z.literal('zone_git_push'),\n\t\tresult: GatewayControlZoneGitPushResultSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlControllerHostProbeActionResultSchema = z\n\t.object({\n\t\tactionId: z.literal('controller_host_probe'),\n\t\tresult: GatewayControlControllerHostProbeResultSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlToolPortalControllerHostActionResultSchema = z.discriminatedUnion(\n\t'actionId',\n\t[\n\t\tGatewayControlZoneGitPushControllerHostActionResultSchema,\n\t\tGatewayControlControllerHostProbeActionResultSchema,\n\t],\n);\n\nexport const GatewayControlActiveOperationIdSchema = z.string().uuid();\n\nexport const GatewayInitiatedOperationCancelPayloadSchema = z\n\t.object({\n\t\tactiveOperationId: GatewayControlActiveOperationIdSchema,\n\t\tinitiatedBy: z.literal('gateway'),\n\t\treason: z.enum(['caller_cancelled', 'gateway_shutdown', 'operation_failed']),\n\t})\n\t.strict();\n\nexport const ControllerInitiatedGatewayOperationCancelPayloadSchema = z\n\t.object({\n\t\tactiveOperationId: GatewayControlActiveOperationIdSchema,\n\t\tinitiatedBy: z.literal('controller'),\n\t\treason: z.enum(['controller_recovery', 'operator_cancelled', 'timeout']),\n\t})\n\t.strict();\n\nexport const GatewayControlOperationCancelPayloadSchema = z.discriminatedUnion('initiatedBy', [\n\tGatewayInitiatedOperationCancelPayloadSchema,\n\tControllerInitiatedGatewayOperationCancelPayloadSchema,\n]);\n\nexport const GatewayControlRecoveryCommandPayloadSchema = z.discriminatedUnion('action', [\n\tz.object({ action: z.literal('refresh_runtime_status') }).strict(),\n\tz.object({ action: z.literal('restart_control_service') }).strict(),\n\tz\n\t\t.object({\n\t\t\taction: z.literal('close_stale_session'),\n\t\t\ttargetSessionId: z.string().uuid(),\n\t\t})\n\t\t.strict(),\n]);\n\nexport const GatewayControlPingPayloadSchema = z.object({}).strict();\n\nexport const GatewayControlHeartbeatPayloadSchema = z\n\t.object({\n\t\telapsedMs: z.number().int().nonnegative().optional(),\n\t\tobservedAtMs: z.number().int().positive(),\n\t})\n\t.strict();\n\nexport const GatewayControlRpcErrorSchema = ControlRpcErrorSchema;\n\nexport const GatewayControlSessionStateSchema = ControlSessionStateSchema;\n\nexport const GatewayControlToolVmSshAccessSchema = z\n\t.object({\n\t\thost: z.string().min(1),\n\t\tidentityPem: z.string().min(1).optional(),\n\t\tknownHostsLine: z.string().min(1).optional(),\n\t\tport: z.number().int().positive(),\n\t\tuser: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayControlLeaseSnapshotSchema = z\n\t.object({\n\t\tagentId: z.string().min(1),\n\t\tactiveUseId: z.string().uuid().optional(),\n\t\texpiresAtMs: z.number().int().positive().optional(),\n\t\tidleTtlMs: z.number().int().positive(),\n\t\tleaseId: z.string().min(1),\n\t\tssh: GatewayControlToolVmSshAccessSchema.optional(),\n\t\tstate: z.enum(['idle', 'active', 'expired', 'released']),\n\t\ttcpSlot: z.number().int().nonnegative(),\n\t\ttransport: z.literal('ssh-sandbox'),\n\t\tworkdir: z.string().min(1),\n\t\tzoneId: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayControlLeaseUseSnapshotSchema = z\n\t.object({\n\t\texpiresAt: z.number().int().positive().optional(),\n\t\theartbeatAfterMs: z.number().int().positive().optional(),\n\t\tleaseId: z.string().min(1),\n\t\tstate: z.enum(['active', 'ended', 'expired']),\n\t\tuseId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayControlRpcDomainCorrelationSchema = ControlCorrelationSchema;\n\nconst GatewayControlRpcForbiddenResponseFieldsSchema = {\n\tactiveOperationId: z.never().optional(),\n\tapprovalRequired: z.never().optional(),\n\tcallerContext: z.never().optional(),\n\tcontrollerHostAction: z.never().optional(),\n\terror: z.never().optional(),\n\tlease: z.never().optional(),\n\tleaseRejectionReason: z.never().optional(),\n\tleaseUse: z.never().optional(),\n} as const;\n\nexport const GatewayControlRpcResponseBasePayloadSchema = z.object({\n\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\tresponseToMessageId: z.string().uuid(),\n\tresult: GatewayControlRpcResultSchema,\n});\n\nconst GatewayControlRpcErrorResponseResultSchema = z.enum([\n\t'failed',\n\t'timeout',\n\t'rejected',\n\t'cancelled',\n\t'stale_generation',\n\t'approval_required',\n\t'approval_stale',\n]);\n\nconst GatewayControlRpcResponseCorrelationSchema = z\n\t.object({\n\t\tresponseToMessageId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayControlRpcBareResponsePayloadSchema = z.discriminatedUnion('result', [\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\tresult: z.literal('ok'),\n\t}).strict(),\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\terror: GatewayControlRpcErrorSchema,\n\t\tresult: GatewayControlRpcErrorResponseResultSchema,\n\t}).strict(),\n]);\n\nexport const GatewayControlRpcCallerContextResponsePayloadSchema = z.discriminatedUnion('result', [\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\tcallerContext: GatewayControlRegisteredCallerContextRefSchema,\n\t\tresult: z.literal('ok'),\n\t}).strict(),\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\terror: GatewayControlRpcErrorSchema,\n\t\tresult: GatewayControlRpcErrorResponseResultSchema,\n\t}).strict(),\n]);\n\nexport const GatewayControlRpcLeaseResponsePayloadSchema = z.discriminatedUnion('result', [\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\tlease: GatewayControlLeaseSnapshotSchema,\n\t\tresult: z.literal('ok'),\n\t}).strict(),\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\terror: GatewayControlRpcErrorSchema.optional(),\n\t\tleaseRejectionReason: GatewayControlLeaseRejectionReasonSchema,\n\t\tresult: z.literal('rejected'),\n\t}).strict(),\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\terror: GatewayControlRpcErrorSchema,\n\t\tleaseRejectionReason: GatewayControlLeaseRejectionReasonSchema.optional(),\n\t\tresult: z.enum([\n\t\t\t'failed',\n\t\t\t'timeout',\n\t\t\t'cancelled',\n\t\t\t'stale_generation',\n\t\t\t'approval_required',\n\t\t\t'approval_stale',\n\t\t]),\n\t}).strict(),\n]);\n\nexport const GatewayControlRpcLeaseUseResponsePayloadSchema = z.discriminatedUnion('result', [\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\tleaseUse: GatewayControlLeaseUseSnapshotSchema,\n\t\tresult: z.literal('ok'),\n\t}).strict(),\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\terror: GatewayControlRpcErrorSchema.optional(),\n\t\tleaseRejectionReason: GatewayControlLeaseRejectionReasonSchema,\n\t\tresult: z.literal('rejected'),\n\t}).strict(),\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\terror: GatewayControlRpcErrorSchema,\n\t\tleaseRejectionReason: GatewayControlLeaseRejectionReasonSchema.optional(),\n\t\tresult: z.enum([\n\t\t\t'failed',\n\t\t\t'timeout',\n\t\t\t'cancelled',\n\t\t\t'stale_generation',\n\t\t\t'approval_required',\n\t\t\t'approval_stale',\n\t\t]),\n\t}).strict(),\n]);\n\nexport const GatewayControlRpcControllerHostActionResponsePayloadSchema = z.discriminatedUnion(\n\t'result',\n\t[\n\t\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\t\tcontrollerHostAction: GatewayControlToolPortalControllerHostActionResultSchema,\n\t\t\tresult: z.literal('ok'),\n\t\t}).strict(),\n\t\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\t\terror: GatewayControlRpcErrorSchema,\n\t\t\tresult: GatewayControlRpcErrorResponseResultSchema,\n\t\t}).strict(),\n\t],\n);\n\nexport const GatewayControlRpcOperationCancelResponsePayloadSchema = z.discriminatedUnion(\n\t'result',\n\t[\n\t\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\t\tactiveOperationId: GatewayControlActiveOperationIdSchema,\n\t\t\tresult: z.literal('ok'),\n\t\t}).strict(),\n\t\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\t\tactiveOperationId: GatewayControlActiveOperationIdSchema.optional(),\n\t\t\terror: GatewayControlRpcErrorSchema,\n\t\t\tresult: GatewayControlRpcErrorResponseResultSchema,\n\t\t}).strict(),\n\t],\n);\n\nexport const GatewayControlRpcResponsePayloadSchema = z.union([\n\tGatewayControlRpcBareResponsePayloadSchema,\n\tGatewayControlRpcCallerContextResponsePayloadSchema,\n\tGatewayControlRpcLeaseResponsePayloadSchema,\n\tGatewayControlRpcLeaseUseResponsePayloadSchema,\n\tGatewayControlRpcControllerHostActionResponsePayloadSchema,\n\tGatewayControlRpcOperationCancelResponsePayloadSchema,\n]);\n\nconst GatewayControlRpcControlPingCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.literal('control_ping'),\n\t\tpayload: GatewayControlRpcBareResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcCallerContextRegisterCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.literal('caller_context_register'),\n\t\tpayload: GatewayControlRpcCallerContextResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcLeaseCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.enum([\n\t\t\t'lease_create',\n\t\t\t'lease_get',\n\t\t\t'lease_peek',\n\t\t\t'lease_reacquire',\n\t\t\t'lease_renew',\n\t\t\t'lease_release',\n\t\t]),\n\t\tpayload: GatewayControlRpcLeaseResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcLeaseUseCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.enum(['lease_use_start', 'lease_use_heartbeat', 'lease_use_end']),\n\t\tpayload: GatewayControlRpcLeaseUseResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcControllerHostActionCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.literal('tool_portal_controller_host_action'),\n\t\tpayload: GatewayControlRpcControllerHostActionResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcOperationCancelCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.literal('operation_cancel'),\n\t\tpayload: GatewayControlRpcOperationCancelResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcRecoveryCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.literal('recovery_command'),\n\t\tpayload: GatewayControlRpcBareResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlHeartbeatMessageSchema = z\n\t.object({\n\t\tkind: z.literal('heartbeat'),\n\t\toperation: z.never().optional(),\n\t\tpayload: GatewayControlHeartbeatPayloadSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlRpcCommandResultMessageSchema = z.discriminatedUnion('operation', [\n\tGatewayControlRpcControlPingCommandResultMessageSchema,\n\tGatewayControlRpcCallerContextRegisterCommandResultMessageSchema,\n\tGatewayControlRpcLeaseCommandResultMessageSchema,\n\tGatewayControlRpcLeaseUseCommandResultMessageSchema,\n\tGatewayControlRpcControllerHostActionCommandResultMessageSchema,\n\tGatewayControlRpcOperationCancelCommandResultMessageSchema,\n\tGatewayControlRpcRecoveryCommandResultMessageSchema,\n]);\n\nexport const GatewayControlRpcCommandMessageSchema = z.discriminatedUnion('operation', [\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('control_ping'),\n\t\tpayload: GatewayControlPingPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('caller_context_register'),\n\t\tpayload: GatewayControlCallerContextRegisterPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_create'),\n\t\tpayload: GatewayControlLeaseCreateIntentPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_get'),\n\t\tpayload: GatewayControlLeaseIdPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_peek'),\n\t\tpayload: GatewayControlLeaseIdPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_reacquire'),\n\t\tpayload: GatewayControlLeaseReacquireIntentPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_renew'),\n\t\tpayload: GatewayControlLeaseIdPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_release'),\n\t\tpayload: GatewayControlLeaseIdPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_use_start'),\n\t\tpayload: GatewayControlLeaseUseStartPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_use_heartbeat'),\n\t\tpayload: GatewayControlLeaseUseHeartbeatPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_use_end'),\n\t\tpayload: GatewayControlLeaseUseEndPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('tool_portal_controller_host_action'),\n\t\tpayload: GatewayControlToolPortalControllerHostActionPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('operation_cancel'),\n\t\tpayload: GatewayControlOperationCancelPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('recovery_command'),\n\t\tpayload: GatewayControlRecoveryCommandPayloadSchema,\n\t}).strict(),\n]);\n\nexport const GatewayControlRpcEventMessageSchema = z.discriminatedUnion('operation', [\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('event'),\n\t\toperation: z.literal('health_event'),\n\t\tpayload: GatewayControlHealthEventPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('event'),\n\t\toperation: z.literal('runtime_status'),\n\t\tpayload: GatewayControlRuntimeStatusPayloadSchema,\n\t}).strict(),\n]);\n\nexport const GatewayControlEventOnlyOperationSchema = z.enum(['health_event', 'runtime_status']);\n\nexport const GatewayControlRpcCommandResultOperationSchema =\n\tGatewayControlRpcOperationSchema.exclude(GatewayControlEventOnlyOperationSchema.options);\n\nexport const GatewayControlRpcMessageSchema = z.union([\n\tGatewayControlHeartbeatMessageSchema,\n\tGatewayControlRpcCommandMessageSchema,\n\tGatewayControlRpcEventMessageSchema,\n\tGatewayControlRpcCommandResultMessageSchema,\n]);\n\nexport const gatewayControlDeliveryPolicyByKind = {\n\theartbeat: 'critical_idempotent',\n} as const satisfies Partial<Record<ControlMessageKind, ControlDeliveryPolicy>>;\n\nexport const gatewayControlDeliveryPolicyByOperation = {\n\tcaller_context_register: 'critical_idempotent',\n\tcontrol_ping: 'acked_idempotent',\n\thealth_event: 'append_only_observation',\n\tlease_create: 'critical_idempotent',\n\tlease_get: 'acked_idempotent',\n\tlease_peek: 'acked_idempotent',\n\tlease_reacquire: 'critical_idempotent',\n\tlease_release: 'acked_idempotent',\n\tlease_renew: 'single_use_critical',\n\tlease_use_end: 'acked_idempotent',\n\tlease_use_heartbeat: 'single_use_critical',\n\tlease_use_start: 'critical_idempotent',\n\toperation_cancel: 'acked_idempotent',\n\trecovery_command: 'critical_idempotent',\n\truntime_status: 'latest_wins',\n\ttool_portal_controller_host_action: 'single_use_critical',\n} as const satisfies Record<GatewayControlRpcOperation, ControlDeliveryPolicy>;\n\nexport function deriveGatewayControlDeliveryPolicy(\n\tenvelope: Pick<ControlEnvelope, 'idempotencyKey' | 'kind' | 'operation'>,\n): ControlDeliveryPolicy {\n\tif (envelope.operation === 'lease_create' && envelope.idempotencyKey === undefined) {\n\t\treturn 'single_use_critical';\n\t}\n\tconst parsedOperation = GatewayControlRpcOperationSchema.safeParse(envelope.operation);\n\tif (parsedOperation.success) {\n\t\tconst operationPolicy = gatewayControlDeliveryPolicyByOperation[parsedOperation.data];\n\t\tif (operationPolicy !== undefined) {\n\t\t\treturn operationPolicy;\n\t\t}\n\t}\n\tconst kindPolicy =\n\t\tenvelope.kind === 'heartbeat' ? gatewayControlDeliveryPolicyByKind.heartbeat : undefined;\n\tif (kindPolicy !== undefined) {\n\t\treturn kindPolicy;\n\t}\n\tthrow new Error(\n\t\t`no gateway control delivery policy for ${envelope.kind}:${envelope.operation ?? '<none>'}`,\n\t);\n}\n\nexport function assertGatewayControlEnvelopeDeliveryPolicy(envelope: ControlEnvelope): void {\n\tconst derivedPolicy = deriveGatewayControlDeliveryPolicy(envelope);\n\tif (envelope.deliveryPolicy !== derivedPolicy) {\n\t\tthrow new Error(\n\t\t\t`control delivery policy mismatch: ${envelope.deliveryPolicy} !== ${derivedPolicy}`,\n\t\t);\n\t}\n}\n\nexport const gatewayControlCommandExecutionTimeoutMsByOperation = {\n\tcaller_context_register: 5_000,\n\tcontrol_ping: 5_000,\n\thealth_event: 5_000,\n\tlease_create: 180_000,\n\tlease_get: 5_000,\n\tlease_peek: 5_000,\n\tlease_reacquire: 180_000,\n\tlease_release: 5_000,\n\tlease_renew: 10_000,\n\tlease_use_end: 5_000,\n\tlease_use_heartbeat: 5_000,\n\tlease_use_start: 10_000,\n\toperation_cancel: 5_000,\n\trecovery_command: 10_000,\n\truntime_status: 5_000,\n\ttool_portal_controller_host_action: 120_000,\n} as const satisfies Record<GatewayControlRpcOperation, number>;\n\nexport type GatewayControlRpcOperation = z.infer<typeof GatewayControlRpcOperationSchema>;\nexport type GatewayControlRpcMessage = z.infer<typeof GatewayControlRpcMessageSchema>;\nexport type GatewayControlHello = z.infer<typeof GatewayControlHelloSchema>;\nexport type GatewayControlHelloResponse = z.infer<typeof GatewayControlHelloResponseSchema>;\nexport type GatewayControlControllerToGatewayEvents = ControlSessionControllerToPeerEvents<\n\tGatewayControlRpcMessage,\n\tGatewayControlHello,\n\tGatewayControlHelloResponse\n>;\nexport type GatewayControlGatewayToControllerEvents =\n\tControlSessionPeerToControllerEvents<GatewayControlRpcMessage>;\nexport type GatewayControlCallerContextRef = z.infer<typeof GatewayControlCallerContextRefSchema>;\nexport type GatewayControlCallerContextProof = z.infer<\n\ttypeof GatewayControlCallerContextProofSchema\n>;\nexport type GatewayControlCallerContextAgentAuthority = z.infer<\n\ttypeof GatewayControlCallerContextAgentAuthoritySchema\n>;\nexport type GatewayControlCallerContextRegisterPayload = z.infer<\n\ttypeof GatewayControlCallerContextRegisterPayloadSchema\n>;\nexport type GatewayControlLeaseCreateIntentPayload = z.infer<\n\ttypeof GatewayControlLeaseCreateIntentPayloadSchema\n>;\nexport type GatewayControlLeaseIdPayload = z.infer<typeof GatewayControlLeaseIdPayloadSchema>;\nexport type GatewayControlLeaseReacquireIntentPayload = z.infer<\n\ttypeof GatewayControlLeaseReacquireIntentPayloadSchema\n>;\nexport type GatewayControlLeaseRejectionReason = z.infer<\n\ttypeof GatewayControlLeaseRejectionReasonSchema\n>;\nexport type GatewayControlLeaseStaleEvidence = z.infer<\n\ttypeof GatewayControlLeaseStaleEvidenceSchema\n>;\nexport type GatewayControlLeaseSnapshot = z.infer<typeof GatewayControlLeaseSnapshotSchema>;\nexport type GatewayControlLeaseUseEndPayload = z.infer<\n\ttypeof GatewayControlLeaseUseEndPayloadSchema\n>;\nexport type GatewayControlLeaseUseHeartbeatPayload = z.infer<\n\ttypeof GatewayControlLeaseUseHeartbeatPayloadSchema\n>;\nexport type GatewayControlLeaseUseSnapshot = z.infer<typeof GatewayControlLeaseUseSnapshotSchema>;\nexport type GatewayControlLeaseUseStartPayload = z.infer<\n\ttypeof GatewayControlLeaseUseStartPayloadSchema\n>;\nexport type GatewayControlProviderRuntimeHealth = z.infer<\n\ttypeof GatewayControlProviderRuntimeHealthSchema\n>;\nexport type GatewayControlHeartbeatPayload = z.infer<typeof GatewayControlHeartbeatPayloadSchema>;\nexport type GatewayControlHealthEventPayload = z.infer<\n\ttypeof GatewayControlHealthEventPayloadSchema\n>;\nexport type GatewayControlRuntimeStatusPayload = z.infer<\n\ttypeof GatewayControlRuntimeStatusPayloadSchema\n>;\nexport type GatewayControlControllerHostProbeResult = z.infer<\n\ttypeof GatewayControlControllerHostProbeResultSchema\n>;\nexport type GatewayControlToolPortalControllerHostActionPayload = z.infer<\n\ttypeof GatewayControlToolPortalControllerHostActionPayloadSchema\n>;\nexport type GatewayControlToolPortalControllerHostActionResult = z.infer<\n\ttypeof GatewayControlToolPortalControllerHostActionResultSchema\n>;\nexport type GatewayControlZoneGitPushResult = z.infer<typeof GatewayControlZoneGitPushResultSchema>;\n\nexport function buildGatewayControlJsonSchemas(): Readonly<Record<string, unknown>> {\n\treturn {\n\t\tdomain: z.toJSONSchema(GatewayControlDomainSchema, {\n\t\t\tio: 'input',\n\t\t\tunrepresentable: 'any',\n\t\t}),\n\t\thello: z.toJSONSchema(GatewayControlHelloSchema, {\n\t\t\tio: 'input',\n\t\t\tunrepresentable: 'any',\n\t\t}),\n\t\thelloResponse: z.toJSONSchema(GatewayControlHelloResponseSchema, {\n\t\t\tio: 'input',\n\t\t\tunrepresentable: 'any',\n\t\t}),\n\t\tmessage: z.toJSONSchema(GatewayControlRpcMessageSchema, {\n\t\t\tio: 'input',\n\t\t\tunrepresentable: 'any',\n\t\t}),\n\t\toperation: z.toJSONSchema(GatewayControlRpcOperationSchema, {\n\t\t\tio: 'input',\n\t\t\tunrepresentable: 'any',\n\t\t}),\n\t};\n}\n\nexport function assertGatewayControlDomainRegistered(): 'gateway_control' {\n\treturn KnownControlDomainSchema.extract(['gateway_control']).parse('gateway_control');\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["ManagedAgentProjectionSchema","GatewayRuntimeTrustedInvocationPrincipalSchema"],"sources":["../src/gateway-control-principal.ts","../src/gateway-runtime-portal-context.ts","../src/gateway-runtime-approval.ts","../src/gateway-runtime-readiness-snapshot.ts","../src/gateway-control-admission.ts","../src/gateway-control-admission-executor.ts","../src/gateway-control-admission-classification.ts","../src/gateway-runtime-control-endpoint.ts","../src/gateway-runtime-portal-admission.ts","../src/gateway-runtime-portal-semantic-revision.ts","../src/index.ts"],"sourcesContent":["import { Buffer } from 'node:buffer';\nimport { createHash } from 'node:crypto';\n\nimport {\n\ttype GatewayRuntimeTrustedInvocationPrincipal,\n\ttype GatewayStablePrincipalDigest,\n\tGatewayStablePrincipalDigestSchema,\n} from '@agent-vm/agent-portal-sdk/contracts';\n\nfunction lengthPrefixedUtf8(value: string): string {\n\treturn `${Buffer.byteLength(value, 'utf8')}:${value}`;\n}\n\nfunction canonicalStablePrincipalMaterial(\n\tprincipal: GatewayRuntimeTrustedInvocationPrincipal,\n): string {\n\tconst frameworkIdentityValue =\n\t\tprincipal.frameworkIdentity.kind === 'openclaw'\n\t\t\t? principal.frameworkIdentity.agentId\n\t\t\t: principal.frameworkIdentity.profileName;\n\treturn [\n\t\tprincipal.agentId,\n\t\tprincipal.frameworkIdentity.kind,\n\t\tframeworkIdentityValue,\n\t\tprincipal.toolPortalProfileId,\n\t\tprincipal.profileAssignmentRevision,\n\t]\n\t\t.map(lengthPrefixedUtf8)\n\t\t.join('');\n}\n\nexport function deriveGatewayControlStablePrincipal(options: {\n\treadonly principal: GatewayRuntimeTrustedInvocationPrincipal;\n}): GatewayStablePrincipalDigest {\n\treturn GatewayStablePrincipalDigestSchema.parse(\n\t\tcreateHash('sha256')\n\t\t\t.update('agent-vm-gateway-stable-principal-v4', 'utf8')\n\t\t\t.update('\\0')\n\t\t\t.update(canonicalStablePrincipalMaterial(options.principal), 'utf8')\n\t\t\t.digest('hex'),\n\t);\n}\n","import { ManagedAgentProjectionSchema } from '@agent-vm/agent-portal-sdk/contracts';\nimport { z } from 'zod/v4';\n\nexport {\n\tGatewayRuntimeFrameworkKindSchema,\n\tGatewayRuntimeFrameworkIdentitySchema,\n\tGatewayRuntimeTrustedInvocationCorrelationSchema,\n\tGatewayRuntimeTrustedInvocationContextSchema,\n\tGatewayRuntimeTrustedInvocationPrincipalSchema,\n\tGatewayRuntimeTrustedInvocationRequesterSchema,\n\tManagedAgentProjectionSchema,\n} from '@agent-vm/agent-portal-sdk/contracts';\nexport type {\n\tGatewayRuntimeFrameworkKind,\n\tGatewayRuntimeFrameworkIdentity,\n\tGatewayRuntimeTrustedInvocationCorrelation,\n\tGatewayRuntimeTrustedInvocationContext,\n\tGatewayRuntimeTrustedInvocationPrincipal,\n\tGatewayRuntimeTrustedInvocationRequester,\n\tManagedAgentProjection,\n} from '@agent-vm/agent-portal-sdk/contracts';\n\nexport const GatewayRuntimePortalSurfaceClassSchema = z.enum(['mcp', 'protected_uds']);\n\nexport const GatewayRuntimePortalSemanticSnapshotSchema = z\n\t.object({\n\t\tactiveRevision: z.string().min(1),\n\t\tagentProjections: z.record(z.string().min(1), ManagedAgentProjectionSchema),\n\t\tbindingRevision: z.string().min(1),\n\t\tcatalogRevision: z.string().min(1),\n\t\tdesiredRevision: z.string().min(1),\n\t\tprofilePolicyRevision: z.string().min(1),\n\t\tprojectionCohortDigest: z.string().regex(/^projection-cohort:[a-f0-9]{64}$/u),\n\t\tproviderRevision: z.string().min(1),\n\t\tschemaRevision: z.string().min(1),\n\t\tschemaVersion: z.literal(1),\n\t\tsurfaceEligibilityByProfile: z.record(\n\t\t\tz.string().min(1),\n\t\t\tz.record(z.string().min(1), z.array(GatewayRuntimePortalSurfaceClassSchema).min(1)),\n\t\t),\n\t})\n\t.strict();\n\nexport type GatewayRuntimePortalSurfaceClass = z.infer<\n\ttypeof GatewayRuntimePortalSurfaceClassSchema\n>;\nexport type GatewayRuntimePortalSemanticSnapshot = z.infer<\n\ttypeof GatewayRuntimePortalSemanticSnapshotSchema\n>;\n","import { createHash } from 'node:crypto';\n\nimport { GatewayStablePrincipalDigestSchema } from '@agent-vm/agent-portal-sdk/contracts';\nimport {\n\tjsonObjectSchema,\n\ttoolPortalBackendKindSchema,\n\ttype ToolPortalBackendKind,\n} from '@agent-vm/config-contracts';\nimport { z } from 'zod/v4';\n\nimport {\n\tGatewayRuntimePortalSurfaceClassSchema,\n\tGatewayRuntimeTrustedInvocationContextSchema,\n} from './gateway-runtime-portal-context.js';\n\nexport const GATEWAY_RUNTIME_APPROVAL_AUDIENCE = 'agent-vm-controller-approval';\n\nexport const GatewayRuntimeApprovalFingerprintSchema = z.string().regex(/^sha256:[a-f0-9]{64}$/u);\n\nfunction canonicalApprovalJson(value: unknown): string {\n\tif (value === null || typeof value === 'boolean' || typeof value === 'string') {\n\t\treturn JSON.stringify(value);\n\t}\n\tif (typeof value === 'number') {\n\t\tif (!Number.isFinite(value)) {\n\t\t\tthrow new TypeError('Approval fingerprint values must be finite.');\n\t\t}\n\t\treturn JSON.stringify(value);\n\t}\n\tif (Array.isArray(value)) {\n\t\treturn `[${value.map((item) => canonicalApprovalJson(item)).join(',')}]`;\n\t}\n\tif (typeof value === 'object') {\n\t\tconst fields = Object.entries(value)\n\t\t\t.filter(([, fieldValue]) => fieldValue !== undefined)\n\t\t\t.toSorted(([leftName], [rightName]) => leftName.localeCompare(rightName));\n\t\treturn `{${fields\n\t\t\t.map(\n\t\t\t\t([fieldName, fieldValue]) =>\n\t\t\t\t\t`${JSON.stringify(fieldName)}:${canonicalApprovalJson(fieldValue)}`,\n\t\t\t)\n\t\t\t.join(',')}}`;\n\t}\n\tthrow new TypeError('Approval fingerprint values must be JSON-compatible.');\n}\n\nexport const GatewayRuntimeApprovalAuthorityContextSchema = z\n\t.object({\n\t\tcontrollerEpoch: z.string().min(1),\n\t\tframeworkEpoch: z.string().min(1),\n\t\tgatewayEpoch: z.string().min(1),\n\t\truntimeEpoch: z.string().min(1),\n\t\tzoneId: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeApprovalSemanticRevisionCohortSchema = z\n\t.object({\n\t\tactiveRevision: z.string().min(1),\n\t\tbindingRevision: z.string().min(1),\n\t\tcatalogRevision: z.string().min(1),\n\t\tprofilePolicyRevision: z.string().min(1),\n\t\tproviderRevision: z.string().min(1),\n\t\tschemaRevision: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeApprovalCallSchema = z\n\t.object({\n\t\targuments: jsonObjectSchema,\n\t\tid: z.string().min(1),\n\t\tname: z.string().min(1),\n\t\tnamespace: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeApprovalChallengeIntentSchema = z\n\t.object({\n\t\tbackendKind: toolPortalBackendKindSchema,\n\t\tcall: GatewayRuntimeApprovalCallSchema,\n\t\toperationId: z.string().uuid(),\n\t\tsemanticRevisions: GatewayRuntimeApprovalSemanticRevisionCohortSchema,\n\t\tsurfaceClass: GatewayRuntimePortalSurfaceClassSchema,\n\t\ttrustedContext: GatewayRuntimeTrustedInvocationContextSchema,\n\t})\n\t.strict();\n\nexport const GatewayRuntimeApprovalChallengeSchema = z\n\t.object({\n\t\tapprovalId: z.string().uuid(),\n\t\tcreatedAt: z.string().datetime(),\n\t\texpiresAt: z.string().datetime(),\n\t\tfingerprint: GatewayRuntimeApprovalFingerprintSchema,\n\t\tintent: GatewayRuntimeApprovalChallengeIntentSchema,\n\t})\n\t.strict();\n\nconst approvalDispatchAuthorityShape = {\n\tapprovalId: z.string().uuid(),\n\tauthorityContext: GatewayRuntimeApprovalAuthorityContextSchema,\n\texpiresAt: z.string().datetime(),\n\tfingerprint: GatewayRuntimeApprovalFingerprintSchema,\n\toperationId: z.string().uuid(),\n\tstablePrincipal: GatewayStablePrincipalDigestSchema,\n} as const;\n\nexport const GatewayRuntimeMcpProviderDispatchReservationSchema = z\n\t.object({\n\t\t...approvalDispatchAuthorityShape,\n\t\tbackendKind: z.literal(toolPortalBackendKindSchema.enum.mcp_provider),\n\t\treservationId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeControllerHostActionDispatchReservationSchema = z\n\t.object({\n\t\t...approvalDispatchAuthorityShape,\n\t\tbackendKind: z.literal(toolPortalBackendKindSchema.enum.controller_host_action),\n\t\treservationId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeToolVmRunnerDispatchReservationSchema = z\n\t.object({\n\t\t...approvalDispatchAuthorityShape,\n\t\tbackendKind: z.literal(toolPortalBackendKindSchema.enum.tool_vm_runner),\n\t\treservationId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeApprovalDispatchReservationSchema = z.discriminatedUnion('backendKind', [\n\tGatewayRuntimeMcpProviderDispatchReservationSchema,\n\tGatewayRuntimeControllerHostActionDispatchReservationSchema,\n\tGatewayRuntimeToolVmRunnerDispatchReservationSchema,\n]);\n\nexport const GatewayRuntimeGatewayDispatchReservationSchema = z.discriminatedUnion('backendKind', [\n\tGatewayRuntimeMcpProviderDispatchReservationSchema,\n\tGatewayRuntimeToolVmRunnerDispatchReservationSchema,\n]);\n\nexport const GatewayRuntimeMcpProviderDispatchGrantSchema = z\n\t.object({\n\t\t...approvalDispatchAuthorityShape,\n\t\tbackendKind: z.literal(toolPortalBackendKindSchema.enum.mcp_provider),\n\t\tgrantId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeToolVmRunnerDispatchGrantSchema = z\n\t.object({\n\t\t...approvalDispatchAuthorityShape,\n\t\tbackendKind: z.literal(toolPortalBackendKindSchema.enum.tool_vm_runner),\n\t\tgrantId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeApprovalDispatchGrantSchema = z.discriminatedUnion('backendKind', [\n\tGatewayRuntimeMcpProviderDispatchGrantSchema,\n\tGatewayRuntimeToolVmRunnerDispatchGrantSchema,\n]);\n\nconst directDispatchAuthorityShape = {\n\tfingerprint: GatewayRuntimeApprovalFingerprintSchema,\n\tkind: z.literal('without-approval'),\n\toperationId: z.string().uuid(),\n} as const;\n\nexport const GatewayRuntimeMcpProviderDirectDispatchAuthoritySchema = z\n\t.object({\n\t\t...directDispatchAuthorityShape,\n\t\tbackendKind: z.literal(toolPortalBackendKindSchema.enum.mcp_provider),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeToolVmRunnerDirectDispatchAuthoritySchema = z\n\t.object({\n\t\t...directDispatchAuthorityShape,\n\t\tbackendKind: z.literal(toolPortalBackendKindSchema.enum.tool_vm_runner),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeControllerHostActionDirectDispatchAuthoritySchema = z\n\t.object({\n\t\t...directDispatchAuthorityShape,\n\t\tbackendKind: z.literal(toolPortalBackendKindSchema.enum.controller_host_action),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeMcpProviderApprovalGrantDispatchAuthoritySchema = z\n\t.object({\n\t\tbackendKind: z.literal(toolPortalBackendKindSchema.enum.mcp_provider),\n\t\tgrant: GatewayRuntimeMcpProviderDispatchGrantSchema,\n\t\tkind: z.literal('approval-grant'),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeToolVmRunnerApprovalGrantDispatchAuthoritySchema = z\n\t.object({\n\t\tbackendKind: z.literal(toolPortalBackendKindSchema.enum.tool_vm_runner),\n\t\tgrant: GatewayRuntimeToolVmRunnerDispatchGrantSchema,\n\t\tkind: z.literal('approval-grant'),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeControllerHostActionApprovalReservationDispatchAuthoritySchema = z\n\t.object({\n\t\tbackendKind: z.literal(toolPortalBackendKindSchema.enum.controller_host_action),\n\t\tkind: z.literal('controller-approval-reservation'),\n\t\treservation: GatewayRuntimeControllerHostActionDispatchReservationSchema,\n\t})\n\t.strict();\n\nexport const GatewayRuntimeToolPortalDispatchAuthoritySchema = z.union([\n\tGatewayRuntimeMcpProviderDirectDispatchAuthoritySchema,\n\tGatewayRuntimeToolVmRunnerDirectDispatchAuthoritySchema,\n\tGatewayRuntimeControllerHostActionDirectDispatchAuthoritySchema,\n\tGatewayRuntimeMcpProviderApprovalGrantDispatchAuthoritySchema,\n\tGatewayRuntimeToolVmRunnerApprovalGrantDispatchAuthoritySchema,\n\tGatewayRuntimeControllerHostActionApprovalReservationDispatchAuthoritySchema,\n]);\n\nexport const GatewayRuntimeApprovalNotDispatchedReasonSchema = z.enum([\n\t'consumed-without-dispatch',\n\t'denied',\n\t'expired',\n\t'revoked',\n\t'stale-authority',\n\t'stale-fingerprint',\n]);\n\nexport const GatewayRuntimeApprovalAmbiguousReasonSchema = z.literal('dispatch-armed');\n\nexport const GatewayRuntimeApprovalAdmissionResultSchema = z.discriminatedUnion('kind', [\n\tz\n\t\t.object({\n\t\t\tchallenge: GatewayRuntimeApprovalChallengeSchema,\n\t\t\tkind: z.literal('approval-required'),\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('dispatch-reserved'),\n\t\t\treservation: GatewayRuntimeApprovalDispatchReservationSchema,\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('not-dispatched'),\n\t\t\toperationId: z.string().uuid(),\n\t\t\treason: GatewayRuntimeApprovalNotDispatchedReasonSchema,\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('ambiguous'),\n\t\t\toperationId: z.string().uuid(),\n\t\t\treason: GatewayRuntimeApprovalAmbiguousReasonSchema,\n\t\t})\n\t\t.strict(),\n]);\n\nexport const GatewayRuntimeApprovalArmDispatchCommandSchema = z\n\t.object({\n\t\treservation: GatewayRuntimeGatewayDispatchReservationSchema,\n\t})\n\t.strict();\n\nexport const GatewayRuntimeApprovalArmDispatchResultSchema = z.discriminatedUnion('kind', [\n\tz\n\t\t.object({\n\t\t\tgrant: GatewayRuntimeApprovalDispatchGrantSchema,\n\t\t\tkind: z.literal('dispatch-armed'),\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('not-dispatched'),\n\t\t\toperationId: z.string().uuid(),\n\t\t\treason: GatewayRuntimeApprovalNotDispatchedReasonSchema,\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('ambiguous'),\n\t\t\toperationId: z.string().uuid(),\n\t\t\treason: GatewayRuntimeApprovalAmbiguousReasonSchema,\n\t\t})\n\t\t.strict(),\n]);\n\nexport const GatewayRuntimeApprovalDecisionCommandSchema = z\n\t.object({\n\t\tapprovalId: z.string().uuid(),\n\t\tdecision: z.enum(['approve', 'deny']),\n\t})\n\t.strict();\n\nexport const GatewayRuntimeApprovalRevokeCommandSchema = z\n\t.object({\n\t\tapprovalId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport type GatewayRuntimeApprovalAuthorityContext = z.infer<\n\ttypeof GatewayRuntimeApprovalAuthorityContextSchema\n>;\nexport type GatewayRuntimeApprovalChallengeIntent = z.infer<\n\ttypeof GatewayRuntimeApprovalChallengeIntentSchema\n>;\nexport type GatewayRuntimeApprovalChallenge = z.infer<typeof GatewayRuntimeApprovalChallengeSchema>;\nexport type GatewayRuntimeApprovalDispatchReservation = z.infer<\n\ttypeof GatewayRuntimeApprovalDispatchReservationSchema\n>;\nexport type GatewayRuntimeGatewayDispatchReservation = z.infer<\n\ttypeof GatewayRuntimeGatewayDispatchReservationSchema\n>;\nexport type GatewayRuntimeControllerHostActionDispatchReservation = z.infer<\n\ttypeof GatewayRuntimeControllerHostActionDispatchReservationSchema\n>;\nexport type GatewayRuntimeApprovalDispatchGrant = z.infer<\n\ttypeof GatewayRuntimeApprovalDispatchGrantSchema\n>;\nexport type GatewayRuntimeToolPortalDispatchAuthority = z.infer<\n\ttypeof GatewayRuntimeToolPortalDispatchAuthoritySchema\n>;\nexport type GatewayRuntimeToolPortalDispatchAuthorityForBackendKind<\n\tTBackendKind extends ToolPortalBackendKind,\n> = Extract<GatewayRuntimeToolPortalDispatchAuthority, { readonly backendKind: TBackendKind }>;\nexport type GatewayRuntimeApprovalAdmissionResult = z.infer<\n\ttypeof GatewayRuntimeApprovalAdmissionResultSchema\n>;\nexport type GatewayRuntimeApprovalArmDispatchResult = z.infer<\n\ttypeof GatewayRuntimeApprovalArmDispatchResultSchema\n>;\nexport type GatewayRuntimeApprovalArmDispatchCommand = z.infer<\n\ttypeof GatewayRuntimeApprovalArmDispatchCommandSchema\n>;\nexport type GatewayRuntimeApprovalDecisionCommand = z.infer<\n\ttypeof GatewayRuntimeApprovalDecisionCommandSchema\n>;\nexport type GatewayRuntimeApprovalRevokeCommand = z.infer<\n\ttypeof GatewayRuntimeApprovalRevokeCommandSchema\n>;\n\nexport function deriveGatewayRuntimeApprovalFingerprint(props: {\n\treadonly authorityContext: GatewayRuntimeApprovalAuthorityContext;\n\treadonly intent: GatewayRuntimeApprovalChallengeIntent;\n}): `sha256:${string}` {\n\treturn `sha256:${createHash('sha256').update(canonicalApprovalJson(props), 'utf8').digest('hex')}`;\n}\n\nexport function deriveGatewayRuntimeApprovalId(fingerprint: `sha256:${string}`): string {\n\tconst hexadecimal = fingerprint.slice('sha256:'.length, 'sha256:'.length + 32).split('');\n\thexadecimal[12] = '5';\n\tconst variantNibble = Number.parseInt(hexadecimal[16] ?? '0', 16);\n\thexadecimal[16] = ((variantNibble & 0x3) | 0x8).toString(16);\n\tconst value = hexadecimal.join('');\n\treturn `${value.slice(0, 8)}-${value.slice(8, 12)}-${value.slice(12, 16)}-${value.slice(16, 20)}-${value.slice(20)}`;\n}\n","import { z } from 'zod/v4';\n\nexport const GATEWAY_RUNTIME_READINESS_SNAPSHOT_VERSION = 1;\nexport const GATEWAY_RUNTIME_ATTACHMENT_SNAPSHOT_VERSION = 1;\n\nconst BoundedIdentitySchema = z.string().min(1).max(256);\nconst PositiveSafeIntegerSchema = z.number().int().positive().max(Number.MAX_SAFE_INTEGER);\nconst NonNegativeSafeIntegerSchema = z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);\n\nexport const GatewayRuntimeManagedPluginClientKindSchema = z.enum([\n\t'openclaw-managed-plugin',\n\t'hermes-managed-plugin',\n]);\n\nexport const GatewayRuntimeExpectedAttachmentIdentitySchema = z\n\t.object({\n\t\tattachmentGeneration: PositiveSafeIntegerSchema,\n\t\tclientKind: GatewayRuntimeManagedPluginClientKindSchema,\n\t\tconfiguredAgentIds: z.array(BoundedIdentitySchema).min(1).max(128).readonly(),\n\t\tframeworkEpoch: BoundedIdentitySchema,\n\t\tgatewayEpoch: BoundedIdentitySchema,\n\t\tprotocolVersion: PositiveSafeIntegerSchema,\n\t\tprojectionCohortDigest: z.string().regex(/^projection-cohort:[a-f0-9]{64}$/u),\n\t\truntimeEpoch: BoundedIdentitySchema,\n\t\tschemaVersion: PositiveSafeIntegerSchema,\n\t})\n\t.strict()\n\t.superRefine((identity, context) => {\n\t\tif (new Set(identity.configuredAgentIds).size !== identity.configuredAgentIds.length) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'Gateway runtime configured agent ids must be unique.',\n\t\t\t\tpath: ['configuredAgentIds'],\n\t\t\t});\n\t\t}\n\t})\n\t.readonly();\n\nexport const GatewayRuntimeAttachmentSnapshotSchema = z\n\t.object({\n\t\tconnectionId: z.string().uuid().optional(),\n\t\texpected: GatewayRuntimeExpectedAttachmentIdentitySchema,\n\t\tobservationSequence: NonNegativeSafeIntegerSchema,\n\t\tsnapshotVersion: z.literal(GATEWAY_RUNTIME_ATTACHMENT_SNAPSHOT_VERSION),\n\t\tstatus: z.enum(['awaiting-attachment', 'attached', 'attachment-lost', 'retired']),\n\t})\n\t.strict()\n\t.superRefine((snapshot, context) => {\n\t\tconst requiresConnectionIdentity =\n\t\t\tsnapshot.status === 'attached' || snapshot.status === 'attachment-lost';\n\t\tif (requiresConnectionIdentity && snapshot.connectionId === undefined) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'Accepted and lost attachment snapshots require a connection identity.',\n\t\t\t\tpath: ['connectionId'],\n\t\t\t});\n\t\t}\n\t\tif (!requiresConnectionIdentity && snapshot.connectionId !== undefined) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'Awaiting and retired attachment snapshots cannot claim a connection identity.',\n\t\t\t\tpath: ['connectionId'],\n\t\t\t});\n\t\t}\n\t})\n\t.readonly();\n\nexport type GatewayRuntimeAttachmentSnapshot = z.infer<\n\ttypeof GatewayRuntimeAttachmentSnapshotSchema\n>;\nexport type GatewayRuntimeAttachmentSnapshotInput = z.input<\n\ttypeof GatewayRuntimeAttachmentSnapshotSchema\n>;\n\nexport const GatewayRuntimeUdsPublicationSnapshotSchema = z\n\t.object({\n\t\tidentity: z.literal('managed-plugin-private-uds'),\n\t\tprotocolVersion: PositiveSafeIntegerSchema,\n\t\tschemaVersion: PositiveSafeIntegerSchema,\n\t\tsocketPath: z.string().min(1).max(256).startsWith('/'),\n\t\tstatus: z.enum(['published', 'retired']),\n\t})\n\t.strict()\n\t.readonly();\n\nexport const GatewayRuntimeRequiredBackendKindSchema = z.enum([\n\t'controller_host_action',\n\t'mcp_provider',\n\t'tool_vm_runner',\n]);\n\nexport const GatewayRuntimeRequiredBackendsReadinessSchema = z\n\t.object({\n\t\treadyBackendKinds: z.array(GatewayRuntimeRequiredBackendKindSchema).max(3).readonly(),\n\t\trevision: BoundedIdentitySchema,\n\t\tstatus: z.literal('ready'),\n\t})\n\t.strict()\n\t.superRefine((readiness, context) => {\n\t\tif (new Set(readiness.readyBackendKinds).size !== readiness.readyBackendKinds.length) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'Gateway runtime ready backend kinds must be unique.',\n\t\t\t\tpath: ['readyBackendKinds'],\n\t\t\t});\n\t\t}\n\t})\n\t.readonly();\n\nexport const GatewayRuntimeFatalEvidenceSchema = z\n\t.object({\n\t\tfailureCode: BoundedIdentitySchema,\n\t\tkind: z.literal('fatal'),\n\t\tobservedGatewayEpoch: BoundedIdentitySchema,\n\t\tprocessEpoch: BoundedIdentitySchema,\n\t\trole: z.enum(['framework-service', 'tool-portal-service']),\n\t\tschemaVersion: z.literal(1),\n\t\tserviceId: BoundedIdentitySchema,\n\t})\n\t.strict()\n\t.readonly();\n\nexport type GatewayRuntimeFatalEvidence = z.infer<typeof GatewayRuntimeFatalEvidenceSchema>;\n\n/**\n * Role-local Tool Portal evidence. The controller must join this with framework,\n * backend, ingress, and control-session evidence before admitting the Gateway.\n */\nexport const GatewayRuntimeReadinessSnapshotSchema = z\n\t.object({\n\t\tcontrolEndpoint: z\n\t\t\t.object({\n\t\t\t\tidentity: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\tbootId: BoundedIdentitySchema,\n\t\t\t\t\t\tcontrollerEpoch: BoundedIdentitySchema,\n\t\t\t\t\t\tgenerationId: BoundedIdentitySchema,\n\t\t\t\t\t\tpeerId: BoundedIdentitySchema,\n\t\t\t\t\t\tprocessEpoch: BoundedIdentitySchema,\n\t\t\t\t\t\tzoneId: BoundedIdentitySchema,\n\t\t\t\t\t})\n\t\t\t\t\t.strict()\n\t\t\t\t\t.readonly(),\n\t\t\t\tlistener: z\n\t\t\t\t\t.object({\n\t\t\t\t\t\thost: z.string().min(1).max(253),\n\t\t\t\t\t\tport: z.number().int().min(1).max(65_535),\n\t\t\t\t\t\treadyPath: z.string().min(1).max(256).startsWith('/'),\n\t\t\t\t\t\tsocketPath: z.string().min(1).max(256).startsWith('/'),\n\t\t\t\t\t})\n\t\t\t\t\t.strict()\n\t\t\t\t\t.readonly(),\n\t\t\t})\n\t\t\t.strict()\n\t\t\t.readonly(),\n\t\tkind: z.literal('tool-portal-role-readiness'),\n\t\tproviderRevision: BoundedIdentitySchema,\n\t\trequiredBackends: GatewayRuntimeRequiredBackendsReadinessSchema,\n\t\tsemanticRevision: BoundedIdentitySchema,\n\t\tserviceIdentity: z\n\t\t\t.object({\n\t\t\t\tprocessEpoch: BoundedIdentitySchema,\n\t\t\t\trole: z.literal('tool-portal'),\n\t\t\t\tserviceId: BoundedIdentitySchema,\n\t\t\t})\n\t\t\t.strict()\n\t\t\t.readonly(),\n\t\tsnapshotVersion: z.literal(GATEWAY_RUNTIME_READINESS_SNAPSHOT_VERSION),\n\t\tuds: z\n\t\t\t.object({\n\t\t\t\tattachment: GatewayRuntimeAttachmentSnapshotSchema,\n\t\t\t\tpublication: GatewayRuntimeUdsPublicationSnapshotSchema,\n\t\t\t})\n\t\t\t.strict()\n\t\t\t.readonly(),\n\t})\n\t.strict()\n\t.superRefine((snapshot, context) => {\n\t\tif (snapshot.controlEndpoint.identity.processEpoch !== snapshot.serviceIdentity.processEpoch) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'Gateway runtime service and control endpoint process epochs must match.',\n\t\t\t\tpath: ['controlEndpoint', 'identity', 'processEpoch'],\n\t\t\t});\n\t\t}\n\t\tif (\n\t\t\tsnapshot.uds.publication.status === 'retired' &&\n\t\t\tsnapshot.uds.attachment.status !== 'retired'\n\t\t) {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'A retired UDS publication requires a retired attachment lifecycle.',\n\t\t\t\tpath: ['uds', 'attachment', 'status'],\n\t\t\t});\n\t\t}\n\t})\n\t.readonly();\n\nexport type GatewayRuntimeReadinessSnapshot = z.infer<typeof GatewayRuntimeReadinessSnapshotSchema>;\nexport type GatewayRuntimeReadinessSnapshotInput = z.input<\n\ttypeof GatewayRuntimeReadinessSnapshotSchema\n>;\n\nfunction freezeExpectedAttachmentIdentity(\n\tidentity: GatewayRuntimeAttachmentSnapshot['expected'],\n): GatewayRuntimeAttachmentSnapshot['expected'] {\n\treturn Object.freeze({\n\t\t...identity,\n\t\tconfiguredAgentIds: Object.freeze([...identity.configuredAgentIds].toSorted()),\n\t});\n}\n\nexport function createGatewayRuntimeAttachmentSnapshot(\n\tinput: GatewayRuntimeAttachmentSnapshotInput,\n): GatewayRuntimeAttachmentSnapshot {\n\tconst parsed = GatewayRuntimeAttachmentSnapshotSchema.parse(input);\n\treturn Object.freeze({\n\t\t...parsed,\n\t\texpected: freezeExpectedAttachmentIdentity(parsed.expected),\n\t});\n}\n\nexport function createGatewayRuntimeReadinessSnapshot(\n\tinput: GatewayRuntimeReadinessSnapshotInput,\n): GatewayRuntimeReadinessSnapshot {\n\tconst parsed = GatewayRuntimeReadinessSnapshotSchema.parse(input);\n\tconst attachment = createGatewayRuntimeAttachmentSnapshot(parsed.uds.attachment);\n\treturn Object.freeze({\n\t\t...parsed,\n\t\tcontrolEndpoint: Object.freeze({\n\t\t\tidentity: Object.freeze({ ...parsed.controlEndpoint.identity }),\n\t\t\tlistener: Object.freeze({ ...parsed.controlEndpoint.listener }),\n\t\t}),\n\t\tserviceIdentity: Object.freeze({ ...parsed.serviceIdentity }),\n\t\trequiredBackends: Object.freeze({\n\t\t\t...parsed.requiredBackends,\n\t\t\treadyBackendKinds: Object.freeze([...parsed.requiredBackends.readyBackendKinds].toSorted()),\n\t\t}),\n\t\tuds: Object.freeze({\n\t\t\tattachment,\n\t\t\tpublication: Object.freeze({ ...parsed.uds.publication }),\n\t\t}),\n\t});\n}\n","export const GATEWAY_CONTROL_ADMISSION_LIMITS = {\n\tauthority: { maxBytes: 1_572_864, maxMessages: 96 },\n\tdiagnostic: { maxBytes: 1_048_576, maxMessages: 64 },\n\tliveness: { maxBytes: 1_048_576, maxMessages: 64 },\n\tmaxFrameBytes: 65_536,\n\tperPrincipalAuthority: { maxBytes: 131_072, maxMessages: 8 },\n\tsafety: { maxBytes: 524_288, maxMessages: 32 },\n} as const;\n\nexport const GATEWAY_CONTROL_PROCESS_ADMISSION_LIMITS = {\n\tmaxActiveSessions: 32,\n\tmaxNonSafetyBytes: 33_554_432,\n\tmaxNonSafetyMessages: 2_048,\n} as const;\n\nexport type GatewayControlAdmissionClass = 'authority' | 'diagnostic' | 'liveness' | 'safety';\n\nexport interface GatewayControlAdmissionMessage<TPayload> {\n\treadonly byteLength: number;\n\treadonly coalesceKey?: string;\n\treadonly id: string;\n\treadonly messageClass: GatewayControlAdmissionClass;\n\treadonly payload: TPayload;\n\treadonly stablePrincipal?: string;\n}\n\nexport type GatewayControlAdmissionResult<TPayload = unknown> =\n\t| { readonly status: 'admitted' }\n\t| {\n\t\t\treadonly replacedMessage: GatewayControlAdmissionMessage<TPayload>;\n\t\t\treadonly status: 'replaced';\n\t }\n\t| { readonly reason: 'diagnostic_capacity'; readonly status: 'dropped' }\n\t| { readonly reason: 'liveness_capacity'; readonly status: 'shed' }\n\t| { readonly reason: 'principal_capacity'; readonly status: 'refused' }\n\t| { readonly reason: 'global_capacity'; readonly status: 'dropped' | 'refused' | 'shed' }\n\t| {\n\t\t\treadonly reason:\n\t\t\t\t| 'authority_capacity'\n\t\t\t\t| 'frame_too_large'\n\t\t\t\t| 'invalid_message'\n\t\t\t\t| 'safety_capacity';\n\t\t\treadonly status: 'fence';\n\t };\n\ninterface QueueAccounting {\n\tbyteCount: number;\n\tmessageCount: number;\n}\n\ninterface AuthorityQueue<TPayload> extends QueueAccounting {\n\tmessages: GatewayControlAdmissionMessage<TPayload>[];\n}\n\nfunction dequeueFirstCoalescedMessage<TPayload>(\n\tmessages: Map<string, GatewayControlAdmissionMessage<TPayload>>,\n): GatewayControlAdmissionMessage<TPayload> | undefined {\n\tconst first = messages.entries().next().value;\n\tif (first === undefined) {\n\t\treturn undefined;\n\t}\n\tmessages.delete(first[0]);\n\treturn first[1];\n}\n\nexport interface GatewayControlAdmissionDiagnostics {\n\treadonly authorityBytes: number;\n\treadonly authorityMessages: number;\n\treadonly diagnosticBytes: number;\n\treadonly diagnosticMessages: number;\n\treadonly livenessBytes: number;\n\treadonly livenessMessages: number;\n\treadonly safetyBytes: number;\n\treadonly safetyMessages: number;\n\treadonly coalescedMessages: number;\n\treadonly droppedMessages: number;\n\treadonly fencedMessages: number;\n\treadonly refusedMessages: number;\n\treadonly shedMessages: number;\n}\n\nexport interface GatewayControlAdmissionCompletionToken {\n\treadonly completionTokenId: symbol;\n}\n\nexport interface GatewayControlAdmissionWork<TPayload> {\n\treadonly completionToken: GatewayControlAdmissionCompletionToken;\n\treadonly message: GatewayControlAdmissionMessage<TPayload>;\n}\n\nexport interface GatewayControlAdmissionScheduler<TPayload> {\n\tcancelQueued(): readonly GatewayControlAdmissionMessage<TPayload>[];\n\tcomplete(completionToken: GatewayControlAdmissionCompletionToken): void;\n\tdequeue(options?: {\n\t\treadonly allowedMessageClasses?: readonly GatewayControlAdmissionClass[];\n\t}): GatewayControlAdmissionWork<TPayload> | undefined;\n\tdiagnostics(): GatewayControlAdmissionDiagnostics;\n\tenqueue(\n\t\tmessage: GatewayControlAdmissionMessage<TPayload>,\n\t): GatewayControlAdmissionResult<TPayload>;\n}\n\nexport interface GatewayControlProcessAdmissionMessage<\n\tTPayload,\n> extends GatewayControlAdmissionMessage<TPayload> {\n\treadonly zoneId: string;\n}\n\nexport interface GatewayControlProcessAdmissionWork<TPayload> {\n\treadonly completionToken: GatewayControlAdmissionCompletionToken;\n\treadonly message: GatewayControlProcessAdmissionMessage<TPayload>;\n}\n\nexport interface GatewayControlProcessAdmission<TPayload> {\n\tcomplete(completionToken: GatewayControlAdmissionCompletionToken): void;\n\tdequeue(): GatewayControlProcessAdmissionWork<TPayload> | undefined;\n\tdiagnostics(): {\n\t\treadonly activeSessions: number;\n\t\treadonly nonSafetyBytes: number;\n\t\treadonly nonSafetyMessages: number;\n\t};\n\tenqueue(\n\t\tmessage: GatewayControlProcessAdmissionMessage<TPayload>,\n\t): GatewayControlAdmissionResult<TPayload>;\n\tregisterZone(zoneId: string): { readonly status: 'admitted' | 'capacity_refused' };\n\tunregisterZone(zoneId: string): void;\n}\n\nconst serviceCycle: readonly GatewayControlAdmissionClass[] = [\n\t'safety',\n\t'safety',\n\t'safety',\n\t'safety',\n\t'safety',\n\t'safety',\n\t'safety',\n\t'safety',\n\t'authority',\n\t'authority',\n\t'authority',\n\t'authority',\n\t'liveness',\n\t'liveness',\n\t'diagnostic',\n];\n\nfunction canReserve(\n\taccounting: QueueAccounting,\n\tbyteLength: number,\n\tlimits: { readonly maxBytes: number; readonly maxMessages: number },\n): boolean {\n\treturn (\n\t\taccounting.byteCount + byteLength <= limits.maxBytes &&\n\t\taccounting.messageCount + 1 <= limits.maxMessages\n\t);\n}\n\nfunction release(accounting: QueueAccounting, byteLength: number): void {\n\taccounting.byteCount -= byteLength;\n\taccounting.messageCount -= 1;\n}\n\nfunction requirePositiveLimit(name: string, value: number): void {\n\tif (!Number.isSafeInteger(value) || value <= 0) {\n\t\tthrow new RangeError(`${name} must be a positive safe integer.`);\n\t}\n}\n\nfunction validateMessage<TPayload>(\n\tmessage: GatewayControlAdmissionMessage<TPayload>,\n): GatewayControlAdmissionResult<TPayload> | undefined {\n\tif (\n\t\tmessage.id.length === 0 ||\n\t\t!Number.isSafeInteger(message.byteLength) ||\n\t\tmessage.byteLength <= 0\n\t) {\n\t\treturn { reason: 'invalid_message', status: 'fence' };\n\t}\n\tif (message.byteLength > GATEWAY_CONTROL_ADMISSION_LIMITS.maxFrameBytes) {\n\t\treturn { reason: 'frame_too_large', status: 'fence' };\n\t}\n\tif (\n\t\tmessage.messageClass === 'authority' &&\n\t\t(message.stablePrincipal === undefined || message.stablePrincipal.length === 0)\n\t) {\n\t\treturn { reason: 'invalid_message', status: 'fence' };\n\t}\n\tif (\n\t\t(message.messageClass === 'diagnostic' || message.messageClass === 'liveness') &&\n\t\t(message.coalesceKey === undefined || message.coalesceKey.length === 0)\n\t) {\n\t\treturn { reason: 'invalid_message', status: 'fence' };\n\t}\n\treturn undefined;\n}\n\nfunction isGatewayControlProcessAdmissionMessage<TPayload>(\n\tmessage: GatewayControlAdmissionMessage<TPayload>,\n): message is GatewayControlProcessAdmissionMessage<TPayload> {\n\treturn 'zoneId' in message && typeof message.zoneId === 'string';\n}\n\nfunction gatewayControlProcessCoalescingKey<TPayload>(\n\tmessage: GatewayControlProcessAdmissionMessage<TPayload>,\n): string | undefined {\n\treturn message.messageClass === 'liveness' || message.messageClass === 'diagnostic'\n\t\t? `${message.messageClass}\\u0000${message.coalesceKey ?? ''}`\n\t\t: undefined;\n}\n\nexport function createGatewayControlAdmissionScheduler<\n\tTPayload,\n>(): GatewayControlAdmissionScheduler<TPayload> {\n\tconst safety: GatewayControlAdmissionMessage<TPayload>[] = [];\n\tconst safetyAccounting: QueueAccounting = { byteCount: 0, messageCount: 0 };\n\tconst authorityByPrincipal = new Map<string, AuthorityQueue<TPayload>>();\n\tconst authorityPrincipalOrder: string[] = [];\n\tconst authorityAccounting: QueueAccounting = { byteCount: 0, messageCount: 0 };\n\tconst livenessByKey = new Map<string, GatewayControlAdmissionMessage<TPayload>>();\n\tconst livenessAccounting: QueueAccounting = { byteCount: 0, messageCount: 0 };\n\tconst diagnosticByKey = new Map<string, GatewayControlAdmissionMessage<TPayload>>();\n\tconst diagnosticAccounting: QueueAccounting = { byteCount: 0, messageCount: 0 };\n\tconst inFlightMessages = new Map<\n\t\tGatewayControlAdmissionCompletionToken,\n\t\tGatewayControlAdmissionMessage<TPayload>\n\t>();\n\tlet serviceCursor = 0;\n\tlet authorityPrincipalCursor = 0;\n\tlet coalescedMessages = 0;\n\tlet droppedMessages = 0;\n\tlet fencedMessages = 0;\n\tlet refusedMessages = 0;\n\tlet shedMessages = 0;\n\n\tconst dequeueAuthority = (): GatewayControlAdmissionMessage<TPayload> | undefined => {\n\t\tif (authorityPrincipalOrder.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tfor (let offset = 0; offset < authorityPrincipalOrder.length; offset += 1) {\n\t\t\tconst index = (authorityPrincipalCursor + offset) % authorityPrincipalOrder.length;\n\t\t\tconst principal = authorityPrincipalOrder[index];\n\t\t\tif (principal === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst queue = authorityByPrincipal.get(principal);\n\t\t\tconst message = queue?.messages.shift();\n\t\t\tif (queue === undefined || message === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tauthorityPrincipalCursor = (index + 1) % authorityPrincipalOrder.length;\n\t\t\treturn message;\n\t\t}\n\t\treturn undefined;\n\t};\n\n\tconst dequeueClass = (\n\t\tmessageClass: GatewayControlAdmissionClass,\n\t): GatewayControlAdmissionMessage<TPayload> | undefined => {\n\t\tswitch (messageClass) {\n\t\t\tcase 'safety': {\n\t\t\t\tconst message = safety.shift();\n\t\t\t\treturn message;\n\t\t\t}\n\t\t\tcase 'authority':\n\t\t\t\treturn dequeueAuthority();\n\t\t\tcase 'liveness':\n\t\t\t\treturn dequeueFirstCoalescedMessage(livenessByKey);\n\t\t\tcase 'diagnostic':\n\t\t\t\treturn dequeueFirstCoalescedMessage(diagnosticByKey);\n\t\t}\n\t\tthrow new Error('unsupported gateway control admission class');\n\t};\n\n\treturn {\n\t\tcancelQueued() {\n\t\t\tconst cancelled: GatewayControlAdmissionMessage<TPayload>[] = [];\n\t\t\tfor (const message of safety.splice(0)) {\n\t\t\t\trelease(safetyAccounting, message.byteLength);\n\t\t\t\tcancelled.push(message);\n\t\t\t}\n\t\t\tfor (const [principal, queue] of authorityByPrincipal) {\n\t\t\t\tfor (const message of queue.messages.splice(0)) {\n\t\t\t\t\trelease(queue, message.byteLength);\n\t\t\t\t\trelease(authorityAccounting, message.byteLength);\n\t\t\t\t\tcancelled.push(message);\n\t\t\t\t}\n\t\t\t\tif (queue.messageCount === 0) {\n\t\t\t\t\tauthorityByPrincipal.delete(principal);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let index = authorityPrincipalOrder.length - 1; index >= 0; index -= 1) {\n\t\t\t\tif (!authorityByPrincipal.has(authorityPrincipalOrder[index] ?? '')) {\n\t\t\t\t\tauthorityPrincipalOrder.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tauthorityPrincipalCursor =\n\t\t\t\tauthorityPrincipalOrder.length === 0\n\t\t\t\t\t? 0\n\t\t\t\t\t: Math.min(authorityPrincipalCursor, authorityPrincipalOrder.length - 1);\n\t\t\tfor (const message of livenessByKey.values()) {\n\t\t\t\trelease(livenessAccounting, message.byteLength);\n\t\t\t\tcancelled.push(message);\n\t\t\t}\n\t\t\tlivenessByKey.clear();\n\t\t\tfor (const message of diagnosticByKey.values()) {\n\t\t\t\trelease(diagnosticAccounting, message.byteLength);\n\t\t\t\tcancelled.push(message);\n\t\t\t}\n\t\t\tdiagnosticByKey.clear();\n\t\t\treturn cancelled;\n\t\t},\n\t\tcomplete(completionToken) {\n\t\t\tconst message = inFlightMessages.get(completionToken);\n\t\t\tif (message === undefined || !inFlightMessages.delete(completionToken)) {\n\t\t\t\tthrow new Error('gateway control admission message is not in flight');\n\t\t\t}\n\t\t\tswitch (message.messageClass) {\n\t\t\t\tcase 'safety':\n\t\t\t\t\trelease(safetyAccounting, message.byteLength);\n\t\t\t\t\treturn;\n\t\t\t\tcase 'authority': {\n\t\t\t\t\tconst principal = message.stablePrincipal ?? '';\n\t\t\t\t\tconst queue = authorityByPrincipal.get(principal);\n\t\t\t\t\tif (queue === undefined) {\n\t\t\t\t\t\tthrow new Error('gateway control authority principal is not admitted');\n\t\t\t\t\t}\n\t\t\t\t\trelease(queue, message.byteLength);\n\t\t\t\t\trelease(authorityAccounting, message.byteLength);\n\t\t\t\t\tif (queue.messageCount === 0) {\n\t\t\t\t\t\tauthorityByPrincipal.delete(principal);\n\t\t\t\t\t\tconst index = authorityPrincipalOrder.indexOf(principal);\n\t\t\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\t\tauthorityPrincipalOrder.splice(index, 1);\n\t\t\t\t\t\t\tauthorityPrincipalCursor =\n\t\t\t\t\t\t\t\tauthorityPrincipalOrder.length === 0\n\t\t\t\t\t\t\t\t\t? 0\n\t\t\t\t\t\t\t\t\t: Math.min(authorityPrincipalCursor, authorityPrincipalOrder.length - 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tcase 'liveness':\n\t\t\t\t\trelease(livenessAccounting, message.byteLength);\n\t\t\t\t\treturn;\n\t\t\t\tcase 'diagnostic':\n\t\t\t\t\trelease(diagnosticAccounting, message.byteLength);\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t},\n\t\tenqueue(message) {\n\t\t\tconst invalid = validateMessage(message);\n\t\t\tif (invalid !== undefined) {\n\t\t\t\tfencedMessages += 1;\n\t\t\t\treturn invalid;\n\t\t\t}\n\t\t\tswitch (message.messageClass) {\n\t\t\t\tcase 'safety':\n\t\t\t\t\tif (\n\t\t\t\t\t\t!canReserve(\n\t\t\t\t\t\t\tsafetyAccounting,\n\t\t\t\t\t\t\tmessage.byteLength,\n\t\t\t\t\t\t\tGATEWAY_CONTROL_ADMISSION_LIMITS.safety,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tfencedMessages += 1;\n\t\t\t\t\t\treturn { reason: 'safety_capacity', status: 'fence' };\n\t\t\t\t\t}\n\t\t\t\t\tsafety.push(message);\n\t\t\t\t\tsafetyAccounting.byteCount += message.byteLength;\n\t\t\t\t\tsafetyAccounting.messageCount += 1;\n\t\t\t\t\treturn { status: 'admitted' };\n\t\t\t\tcase 'authority': {\n\t\t\t\t\tconst principal = message.stablePrincipal ?? '';\n\t\t\t\t\tconst queue = authorityByPrincipal.get(principal) ?? {\n\t\t\t\t\t\tbyteCount: 0,\n\t\t\t\t\t\tmessageCount: 0,\n\t\t\t\t\t\tmessages: [],\n\t\t\t\t\t};\n\t\t\t\t\tif (\n\t\t\t\t\t\t!canReserve(\n\t\t\t\t\t\t\tqueue,\n\t\t\t\t\t\t\tmessage.byteLength,\n\t\t\t\t\t\t\tGATEWAY_CONTROL_ADMISSION_LIMITS.perPrincipalAuthority,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\trefusedMessages += 1;\n\t\t\t\t\t\treturn { reason: 'principal_capacity', status: 'refused' };\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\t!canReserve(\n\t\t\t\t\t\t\tauthorityAccounting,\n\t\t\t\t\t\t\tmessage.byteLength,\n\t\t\t\t\t\t\tGATEWAY_CONTROL_ADMISSION_LIMITS.authority,\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tfencedMessages += 1;\n\t\t\t\t\t\treturn { reason: 'authority_capacity', status: 'fence' };\n\t\t\t\t\t}\n\t\t\t\t\tif (!authorityByPrincipal.has(principal)) {\n\t\t\t\t\t\tauthorityByPrincipal.set(principal, queue);\n\t\t\t\t\t\tauthorityPrincipalOrder.push(principal);\n\t\t\t\t\t}\n\t\t\t\t\tqueue.messages.push(message);\n\t\t\t\t\tqueue.byteCount += message.byteLength;\n\t\t\t\t\tqueue.messageCount += 1;\n\t\t\t\t\tauthorityAccounting.byteCount += message.byteLength;\n\t\t\t\t\tauthorityAccounting.messageCount += 1;\n\t\t\t\t\treturn { status: 'admitted' };\n\t\t\t\t}\n\t\t\t\tcase 'liveness':\n\t\t\t\tcase 'diagnostic': {\n\t\t\t\t\tconst isLiveness = message.messageClass === 'liveness';\n\t\t\t\t\tconst messages = isLiveness ? livenessByKey : diagnosticByKey;\n\t\t\t\t\tconst accounting = isLiveness ? livenessAccounting : diagnosticAccounting;\n\t\t\t\t\tconst limits = isLiveness\n\t\t\t\t\t\t? GATEWAY_CONTROL_ADMISSION_LIMITS.liveness\n\t\t\t\t\t\t: GATEWAY_CONTROL_ADMISSION_LIMITS.diagnostic;\n\t\t\t\t\tconst key = message.coalesceKey ?? '';\n\t\t\t\t\tconst prior = messages.get(key);\n\t\t\t\t\tconst nextBytes = accounting.byteCount - (prior?.byteLength ?? 0) + message.byteLength;\n\t\t\t\t\tconst nextMessages = accounting.messageCount + (prior === undefined ? 1 : 0);\n\t\t\t\t\tif (nextBytes > limits.maxBytes || nextMessages > limits.maxMessages) {\n\t\t\t\t\t\tif (isLiveness) {\n\t\t\t\t\t\t\tshedMessages += 1;\n\t\t\t\t\t\t\treturn { reason: 'liveness_capacity', status: 'shed' };\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdroppedMessages += 1;\n\t\t\t\t\t\treturn { reason: 'diagnostic_capacity', status: 'dropped' };\n\t\t\t\t\t}\n\t\t\t\t\tmessages.set(key, message);\n\t\t\t\t\taccounting.byteCount = nextBytes;\n\t\t\t\t\taccounting.messageCount = nextMessages;\n\t\t\t\t\tif (prior !== undefined) {\n\t\t\t\t\t\tcoalescedMessages += 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn prior === undefined\n\t\t\t\t\t\t? { status: 'admitted' }\n\t\t\t\t\t\t: { replacedMessage: prior, status: 'replaced' };\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new Error('unsupported gateway control admission class');\n\t\t},\n\t\tdequeue(options = {}) {\n\t\t\tfor (let offset = 0; offset < serviceCycle.length; offset += 1) {\n\t\t\t\tconst index = (serviceCursor + offset) % serviceCycle.length;\n\t\t\t\tconst messageClass = serviceCycle[index];\n\t\t\t\tif (messageClass === undefined) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\toptions.allowedMessageClasses !== undefined &&\n\t\t\t\t\t!options.allowedMessageClasses.includes(messageClass)\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst message = dequeueClass(messageClass);\n\t\t\t\tif (message !== undefined) {\n\t\t\t\t\tserviceCursor = (index + 1) % serviceCycle.length;\n\t\t\t\t\tconst completionToken = Object.freeze({\n\t\t\t\t\t\tcompletionTokenId: Symbol('gateway-control-admission-completion'),\n\t\t\t\t\t}) satisfies GatewayControlAdmissionCompletionToken;\n\t\t\t\t\tinFlightMessages.set(completionToken, message);\n\t\t\t\t\treturn { completionToken, message };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\tdiagnostics() {\n\t\t\treturn {\n\t\t\t\tauthorityBytes: authorityAccounting.byteCount,\n\t\t\t\tauthorityMessages: authorityAccounting.messageCount,\n\t\t\t\tdiagnosticBytes: diagnosticAccounting.byteCount,\n\t\t\t\tdiagnosticMessages: diagnosticAccounting.messageCount,\n\t\t\t\tlivenessBytes: livenessAccounting.byteCount,\n\t\t\t\tlivenessMessages: livenessAccounting.messageCount,\n\t\t\t\tsafetyBytes: safetyAccounting.byteCount,\n\t\t\t\tsafetyMessages: safetyAccounting.messageCount,\n\t\t\t\tcoalescedMessages,\n\t\t\t\tdroppedMessages,\n\t\t\t\tfencedMessages,\n\t\t\t\trefusedMessages,\n\t\t\t\tshedMessages,\n\t\t\t};\n\t\t},\n\t};\n}\n\nexport function createGatewayControlProcessAdmission<TPayload>(\n\toptions: {\n\t\treadonly maxActiveSessions?: number;\n\t\treadonly maxNonSafetyBytes?: number;\n\t\treadonly maxNonSafetyMessages?: number;\n\t} = {},\n): GatewayControlProcessAdmission<TPayload> {\n\tconst maxActiveSessions =\n\t\toptions.maxActiveSessions ?? GATEWAY_CONTROL_PROCESS_ADMISSION_LIMITS.maxActiveSessions;\n\tconst maxNonSafetyBytes =\n\t\toptions.maxNonSafetyBytes ?? GATEWAY_CONTROL_PROCESS_ADMISSION_LIMITS.maxNonSafetyBytes;\n\tconst maxNonSafetyMessages =\n\t\toptions.maxNonSafetyMessages ?? GATEWAY_CONTROL_PROCESS_ADMISSION_LIMITS.maxNonSafetyMessages;\n\tconst schedulersByZone = new Map<string, GatewayControlAdmissionScheduler<TPayload>>();\n\tconst queuedCoalescibleMessagesByZone = new Map<\n\t\tstring,\n\t\tMap<string, GatewayControlProcessAdmissionMessage<TPayload>>\n\t>();\n\tconst inFlightMessages = new Map<\n\t\tGatewayControlAdmissionCompletionToken,\n\t\tGatewayControlProcessAdmissionMessage<TPayload>\n\t>();\n\tconst zoneOrder: string[] = [];\n\tlet zoneCursor = 0;\n\tlet nonSafetyBytes = 0;\n\tlet nonSafetyMessages = 0;\n\n\trequirePositiveLimit('maxActiveSessions', maxActiveSessions);\n\trequirePositiveLimit('maxNonSafetyBytes', maxNonSafetyBytes);\n\trequirePositiveLimit('maxNonSafetyMessages', maxNonSafetyMessages);\n\n\treturn {\n\t\tcomplete(completionToken) {\n\t\t\tconst message = inFlightMessages.get(completionToken);\n\t\t\tif (message === undefined || !inFlightMessages.delete(completionToken)) {\n\t\t\t\tthrow new Error('gateway control process admission message is not in flight');\n\t\t\t}\n\t\t\tconst scheduler = schedulersByZone.get(message.zoneId);\n\t\t\tif (scheduler === undefined) {\n\t\t\t\tthrow new Error('gateway control process admission zone is not registered');\n\t\t\t}\n\t\t\tscheduler.complete(completionToken);\n\t\t\tif (message.messageClass !== 'safety') {\n\t\t\t\tnonSafetyMessages -= 1;\n\t\t\t\tnonSafetyBytes -= message.byteLength;\n\t\t\t}\n\t\t},\n\t\tregisterZone(zoneId) {\n\t\t\tif (zoneId.length === 0) {\n\t\t\t\treturn { status: 'capacity_refused' };\n\t\t\t}\n\t\t\tif (schedulersByZone.has(zoneId)) {\n\t\t\t\treturn { status: 'admitted' };\n\t\t\t}\n\t\t\tif (schedulersByZone.size >= maxActiveSessions) {\n\t\t\t\treturn { status: 'capacity_refused' };\n\t\t\t}\n\t\t\tschedulersByZone.set(zoneId, createGatewayControlAdmissionScheduler<TPayload>());\n\t\t\tqueuedCoalescibleMessagesByZone.set(zoneId, new Map());\n\t\t\tzoneOrder.push(zoneId);\n\t\t\treturn { status: 'admitted' };\n\t\t},\n\t\tunregisterZone(zoneId) {\n\t\t\tconst scheduler = schedulersByZone.get(zoneId);\n\t\t\tif (scheduler === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (;;) {\n\t\t\t\tconst work = scheduler.dequeue();\n\t\t\t\tif (work === undefined) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tconst { completionToken, message } = work;\n\t\t\t\tif (message.messageClass !== 'safety') {\n\t\t\t\t\tnonSafetyBytes -= message.byteLength;\n\t\t\t\t\tnonSafetyMessages -= 1;\n\t\t\t\t}\n\t\t\t\tscheduler.complete(completionToken);\n\t\t\t}\n\t\t\tfor (const [completionToken, message] of inFlightMessages) {\n\t\t\t\tif (message.zoneId !== zoneId) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tinFlightMessages.delete(completionToken);\n\t\t\t\tscheduler.complete(completionToken);\n\t\t\t\tif (message.messageClass !== 'safety') {\n\t\t\t\t\tnonSafetyBytes -= message.byteLength;\n\t\t\t\t\tnonSafetyMessages -= 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tschedulersByZone.delete(zoneId);\n\t\t\tqueuedCoalescibleMessagesByZone.delete(zoneId);\n\t\t\tconst index = zoneOrder.indexOf(zoneId);\n\t\t\tif (index >= 0) {\n\t\t\t\tzoneOrder.splice(index, 1);\n\t\t\t\tzoneCursor = zoneOrder.length === 0 ? 0 : Math.min(zoneCursor, zoneOrder.length - 1);\n\t\t\t}\n\t\t},\n\t\tenqueue(message) {\n\t\t\tconst scheduler = schedulersByZone.get(message.zoneId);\n\t\t\tif (scheduler === undefined) {\n\t\t\t\treturn { reason: 'global_capacity', status: 'refused' };\n\t\t\t}\n\t\t\tconst coalescingKey = gatewayControlProcessCoalescingKey(message);\n\t\t\tconst priorCoalescibleMessage =\n\t\t\t\tcoalescingKey === undefined\n\t\t\t\t\t? undefined\n\t\t\t\t\t: queuedCoalescibleMessagesByZone.get(message.zoneId)?.get(coalescingKey);\n\t\t\tconst nonSafetyMessageDelta = priorCoalescibleMessage === undefined ? 1 : 0;\n\t\t\tconst nonSafetyByteDelta = message.byteLength - (priorCoalescibleMessage?.byteLength ?? 0);\n\t\t\tif (\n\t\t\t\tmessage.messageClass !== 'safety' &&\n\t\t\t\t(nonSafetyMessages + nonSafetyMessageDelta > maxNonSafetyMessages ||\n\t\t\t\t\tnonSafetyBytes + nonSafetyByteDelta > maxNonSafetyBytes)\n\t\t\t) {\n\t\t\t\treturn message.messageClass === 'authority'\n\t\t\t\t\t? { reason: 'global_capacity', status: 'refused' }\n\t\t\t\t\t: message.messageClass === 'liveness'\n\t\t\t\t\t\t? { reason: 'global_capacity', status: 'shed' }\n\t\t\t\t\t\t: { reason: 'global_capacity', status: 'dropped' };\n\t\t\t}\n\t\t\tconst before = scheduler.diagnostics();\n\t\t\tconst result = scheduler.enqueue(message);\n\t\t\tif (\n\t\t\t\tmessage.messageClass !== 'safety' &&\n\t\t\t\t(result.status === 'admitted' || result.status === 'replaced')\n\t\t\t) {\n\t\t\t\tconst after = scheduler.diagnostics();\n\t\t\t\tconst beforeMessages =\n\t\t\t\t\tbefore.authorityMessages + before.livenessMessages + before.diagnosticMessages;\n\t\t\t\tconst afterMessages =\n\t\t\t\t\tafter.authorityMessages + after.livenessMessages + after.diagnosticMessages;\n\t\t\t\tconst beforeBytes = before.authorityBytes + before.livenessBytes + before.diagnosticBytes;\n\t\t\t\tconst afterBytes = after.authorityBytes + after.livenessBytes + after.diagnosticBytes;\n\t\t\t\tnonSafetyMessages += afterMessages - beforeMessages;\n\t\t\t\tnonSafetyBytes += afterBytes - beforeBytes;\n\t\t\t\tif (coalescingKey !== undefined) {\n\t\t\t\t\tqueuedCoalescibleMessagesByZone.get(message.zoneId)?.set(coalescingKey, message);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\tdequeue() {\n\t\t\tif (zoneOrder.length === 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tfor (let offset = 0; offset < zoneOrder.length; offset += 1) {\n\t\t\t\tconst index = (zoneCursor + offset) % zoneOrder.length;\n\t\t\t\tconst zoneId = zoneOrder[index];\n\t\t\t\tconst scheduler = zoneId === undefined ? undefined : schedulersByZone.get(zoneId);\n\t\t\t\tconst work = scheduler?.dequeue();\n\t\t\t\tif (zoneId === undefined || work === undefined) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst { completionToken, message } = work;\n\t\t\t\tif (!isGatewayControlProcessAdmissionMessage(message) || message.zoneId !== zoneId) {\n\t\t\t\t\tthrow new Error('gateway control process admission message lost its zone identity');\n\t\t\t\t}\n\t\t\t\tconst coalescingKey = gatewayControlProcessCoalescingKey(message);\n\t\t\t\tif (coalescingKey !== undefined) {\n\t\t\t\t\tconst queuedMessages = queuedCoalescibleMessagesByZone.get(zoneId);\n\t\t\t\t\tif (queuedMessages?.get(coalescingKey) === message) {\n\t\t\t\t\t\tqueuedMessages.delete(coalescingKey);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tzoneCursor = (index + 1) % zoneOrder.length;\n\t\t\t\tinFlightMessages.set(completionToken, message);\n\t\t\t\treturn { completionToken, message };\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\tdiagnostics() {\n\t\t\treturn { activeSessions: schedulersByZone.size, nonSafetyBytes, nonSafetyMessages };\n\t\t},\n\t};\n}\n","import {\n\tcreateGatewayControlAdmissionScheduler,\n\ttype GatewayControlAdmissionClass,\n\ttype GatewayControlAdmissionMessage,\n\ttype GatewayControlAdmissionResult,\n\ttype GatewayControlAdmissionScheduler,\n} from './gateway-control-admission.js';\n\nexport const GATEWAY_CONTROL_ADMISSION_EXECUTION_LIMITS = {\n\tauthority: 4,\n\tdiagnostic: 1,\n\tliveness: 2,\n\tsafety: 8,\n} as const satisfies Readonly<Record<GatewayControlAdmissionClass, number>>;\n\nconst GATEWAY_CONTROL_ADMISSION_CLASSES: readonly GatewayControlAdmissionClass[] = [\n\t'authority',\n\t'diagnostic',\n\t'liveness',\n\t'safety',\n];\n\ntype GatewayControlAdmissionNonExecutionResult<TPayload> = Exclude<\n\tGatewayControlAdmissionResult<TPayload>,\n\t{ readonly status: 'admitted' | 'replaced' }\n>;\n\nexport type GatewayControlAdmissionExecutionResult =\n\t| { readonly reason: string; readonly status: 'closed' }\n\t| { readonly status: 'executed' }\n\t| { readonly status: 'replaced' }\n\t| GatewayControlAdmissionNonExecutionResult<unknown>;\n\nexport type GatewayControlAdmissionSubmissionResult =\n\t| { readonly reason: string; readonly status: 'closed' }\n\t| { readonly status: 'admitted' | 'replaced' }\n\t| GatewayControlAdmissionNonExecutionResult<unknown>;\n\nexport interface GatewayControlAdmissionSubmission {\n\treadonly admission: GatewayControlAdmissionSubmissionResult;\n\treadonly completion: Promise<GatewayControlAdmissionExecutionResult>;\n}\n\nexport interface GatewayControlAdmissionExecutionRequest<TPayload> {\n\treadonly byteLength: number;\n\treadonly coalesceKey?: string;\n\treadonly execute: () => Promise<void>;\n\treadonly id: string;\n\treadonly messageClass: GatewayControlAdmissionClass;\n\treadonly onCancel?: (reason: string) => void;\n\treadonly payload: TPayload;\n\treadonly stablePrincipal?: string;\n}\n\nexport interface GatewayControlAdmissionExecutor<TPayload> {\n\tclose(reason: string): void;\n\tdiagnostics(): {\n\t\treadonly activeByClass: Readonly<Record<GatewayControlAdmissionClass, number>>;\n\t\treadonly scheduler: ReturnType<GatewayControlAdmissionScheduler<unknown>['diagnostics']>;\n\t};\n\tsubmit(\n\t\trequest: GatewayControlAdmissionExecutionRequest<TPayload>,\n\t): GatewayControlAdmissionSubmission;\n}\n\ninterface PendingGatewayControlAdmissionExecution<TPayload> {\n\treadonly admissionGeneration: number;\n\treadonly execute: () => Promise<void>;\n\treadonly onCancel?: (reason: string) => void;\n\treadonly payload: TPayload;\n\treadonly reject: (error: unknown) => void;\n\treadonly resolve: (result: GatewayControlAdmissionExecutionResult) => void;\n\tsettled: boolean;\n}\n\nfunction executionMessage<TPayload>(\n\trequest: GatewayControlAdmissionExecutionRequest<TPayload>,\n\twork: PendingGatewayControlAdmissionExecution<TPayload>,\n): GatewayControlAdmissionMessage<PendingGatewayControlAdmissionExecution<TPayload>> {\n\treturn {\n\t\tbyteLength: request.byteLength,\n\t\t...(request.coalesceKey === undefined ? {} : { coalesceKey: request.coalesceKey }),\n\t\tid: request.id,\n\t\tmessageClass: request.messageClass,\n\t\tpayload: work,\n\t\t...(request.stablePrincipal === undefined ? {} : { stablePrincipal: request.stablePrincipal }),\n\t};\n}\n\nexport function createGatewayControlAdmissionExecutor<TPayload>(\n\toptions: {\n\t\treadonly executionLimits?: Partial<Readonly<Record<GatewayControlAdmissionClass, number>>>;\n\t\treadonly scheduleImmediate?: (callback: () => void) => void;\n\t} = {},\n): GatewayControlAdmissionExecutor<TPayload> {\n\tconst scheduler =\n\t\tcreateGatewayControlAdmissionScheduler<PendingGatewayControlAdmissionExecution<TPayload>>();\n\tconst scheduleImmediate =\n\t\toptions.scheduleImmediate ?? ((callback: () => void) => setImmediate(callback));\n\tconst executionLimits = {\n\t\t...GATEWAY_CONTROL_ADMISSION_EXECUTION_LIMITS,\n\t\t...options.executionLimits,\n\t};\n\tconst activeByClass: Record<GatewayControlAdmissionClass, number> = {\n\t\tauthority: 0,\n\t\tdiagnostic: 0,\n\t\tliveness: 0,\n\t\tsafety: 0,\n\t};\n\tlet pumpScheduled = false;\n\tlet admissionGeneration = 0;\n\tlet closedReason: string | undefined;\n\tconst activeWork = new Set<PendingGatewayControlAdmissionExecution<TPayload>>();\n\n\tfor (const messageClass of GATEWAY_CONTROL_ADMISSION_CLASSES) {\n\t\tconst limit = executionLimits[messageClass];\n\t\tif (!Number.isSafeInteger(limit) || limit <= 0) {\n\t\t\tthrow new RangeError(`${messageClass} execution limit must be a positive safe integer.`);\n\t\t}\n\t}\n\n\tconst schedulePump = (): void => {\n\t\tif (pumpScheduled || closedReason !== undefined) {\n\t\t\treturn;\n\t\t}\n\t\tpumpScheduled = true;\n\t\tscheduleImmediate(() => {\n\t\t\tpumpScheduled = false;\n\t\t\tpump();\n\t\t});\n\t};\n\n\tconst pump = (): void => {\n\t\tif (closedReason !== undefined) {\n\t\t\treturn;\n\t\t}\n\t\tfor (;;) {\n\t\t\tconst allowedMessageClasses = GATEWAY_CONTROL_ADMISSION_CLASSES.filter(\n\t\t\t\t(messageClass) => activeByClass[messageClass] < executionLimits[messageClass],\n\t\t\t);\n\t\t\tif (allowedMessageClasses.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst admittedWork = scheduler.dequeue({ allowedMessageClasses });\n\t\t\tif (admittedWork === undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { completionToken, message } = admittedWork;\n\t\t\tconst messageClass = message.messageClass;\n\t\t\tconst work = message.payload;\n\t\t\tactiveByClass[messageClass] += 1;\n\t\t\tactiveWork.add(work);\n\t\t\tvoid (async (): Promise<void> => {\n\t\t\t\tlet executionError: unknown;\n\t\t\t\ttry {\n\t\t\t\t\tawait work.execute();\n\t\t\t\t} catch (error) {\n\t\t\t\t\texecutionError = error;\n\t\t\t\t} finally {\n\t\t\t\t\tscheduler.complete(completionToken);\n\t\t\t\t\tactiveByClass[messageClass] -= 1;\n\t\t\t\t\tactiveWork.delete(work);\n\t\t\t\t\tschedulePump();\n\t\t\t\t}\n\t\t\t\tif (work.settled || work.admissionGeneration !== admissionGeneration) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\twork.settled = true;\n\t\t\t\tif (executionError === undefined) {\n\t\t\t\t\twork.resolve({ status: 'executed' });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\twork.reject(executionError);\n\t\t\t})();\n\t\t}\n\t};\n\n\treturn {\n\t\tclose: (reason) => {\n\t\t\tif (closedReason !== undefined) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclosedReason = reason;\n\t\t\tadmissionGeneration += 1;\n\t\t\tfor (const message of scheduler.cancelQueued()) {\n\t\t\t\tconst work = message.payload;\n\t\t\t\tif (!work.settled) {\n\t\t\t\t\twork.settled = true;\n\t\t\t\t\twork.onCancel?.(reason);\n\t\t\t\t\twork.resolve({ reason, status: 'closed' });\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const work of activeWork) {\n\t\t\t\tif (!work.settled) {\n\t\t\t\t\twork.settled = true;\n\t\t\t\t\twork.onCancel?.(reason);\n\t\t\t\t\twork.resolve({ reason, status: 'closed' });\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdiagnostics: () => ({\n\t\t\tactiveByClass: { ...activeByClass },\n\t\t\tscheduler: scheduler.diagnostics(),\n\t\t}),\n\t\tsubmit: (request) => {\n\t\t\tif (closedReason !== undefined) {\n\t\t\t\tconst closed = { reason: closedReason, status: 'closed' } as const;\n\t\t\t\treturn { admission: closed, completion: Promise.resolve(closed) };\n\t\t\t}\n\t\t\tlet resolveCompletion!: (result: GatewayControlAdmissionExecutionResult) => void;\n\t\t\tlet rejectCompletion!: (error: unknown) => void;\n\t\t\tconst completion = new Promise<GatewayControlAdmissionExecutionResult>((resolve, reject) => {\n\t\t\t\tresolveCompletion = resolve;\n\t\t\t\trejectCompletion = reject;\n\t\t\t});\n\t\t\tconst work = {\n\t\t\t\tadmissionGeneration,\n\t\t\t\texecute: request.execute,\n\t\t\t\t...(request.onCancel === undefined ? {} : { onCancel: request.onCancel }),\n\t\t\t\tpayload: request.payload,\n\t\t\t\treject: rejectCompletion,\n\t\t\t\tresolve: resolveCompletion,\n\t\t\t\tsettled: false,\n\t\t\t} satisfies PendingGatewayControlAdmissionExecution<TPayload>;\n\t\t\tconst result = scheduler.enqueue(executionMessage(request, work));\n\t\t\tswitch (result.status) {\n\t\t\t\tcase 'admitted':\n\t\t\t\t\tschedulePump();\n\t\t\t\t\treturn { admission: { status: 'admitted' }, completion };\n\t\t\t\tcase 'replaced':\n\t\t\t\t\tif (!result.replacedMessage.payload.settled) {\n\t\t\t\t\t\tresult.replacedMessage.payload.settled = true;\n\t\t\t\t\t\tresult.replacedMessage.payload.onCancel?.('replaced');\n\t\t\t\t\t\tresult.replacedMessage.payload.resolve({ status: 'replaced' });\n\t\t\t\t\t}\n\t\t\t\t\tschedulePump();\n\t\t\t\t\treturn { admission: { status: 'replaced' }, completion };\n\t\t\t\tcase 'dropped':\n\t\t\t\tcase 'fence':\n\t\t\t\tcase 'refused':\n\t\t\t\tcase 'shed':\n\t\t\t\t\tresolveCompletion(result);\n\t\t\t\t\treturn { admission: result, completion };\n\t\t\t}\n\t\t\tthrow new Error('unsupported gateway control admission result');\n\t\t},\n\t};\n}\n","import type { GatewayControlAdmissionClass } from './gateway-control-admission.js';\nimport type { GatewayControlRpcMessage } from './index.js';\n\nexport type GatewayControlAdmissionDirection = 'controller_to_gateway' | 'gateway_to_controller';\n\nexport type GatewayControlAdmissionClassification =\n\t| {\n\t\t\treadonly authoritySchedulingKey?: string;\n\t\t\treadonly coalesceKey?: string;\n\t\t\treadonly messageClass: GatewayControlAdmissionClass;\n\t\t\treadonly stablePrincipal?: string;\n\t\t\treadonly status: 'classified';\n\t }\n\t| {\n\t\t\treadonly reason: 'stable_principal_required' | 'unproven_gateway_cancel';\n\t\t\treadonly status: 'refused';\n\t }\n\t| {\n\t\t\treadonly reason: 'direction_violation' | 'forged_command_result';\n\t\t\treadonly status: 'fence';\n\t };\n\nexport interface ClassifyGatewayControlAdmissionOptions {\n\treadonly controllerSafetyOperation?: boolean;\n\treadonly direction: GatewayControlAdmissionDirection;\n\treadonly matchedPendingResult?: boolean;\n\treadonly message: GatewayControlRpcMessage;\n\treadonly stablePrincipal?: string;\n}\n\nfunction authorityClassification(\n\tstablePrincipal: string | undefined,\n): GatewayControlAdmissionClassification {\n\treturn stablePrincipal === undefined || stablePrincipal.length === 0\n\t\t? { reason: 'stable_principal_required', status: 'refused' }\n\t\t: {\n\t\t\t\tauthoritySchedulingKey: stablePrincipal,\n\t\t\t\tmessageClass: 'authority',\n\t\t\t\tstablePrincipal,\n\t\t\t\tstatus: 'classified',\n\t\t\t};\n}\n\nfunction diagnosticCoalesceKey(\n\tpayload: Extract<GatewayControlRpcMessage, { readonly operation: 'health_event' }>['payload'],\n): string {\n\treturn JSON.stringify([\n\t\tpayload.eventKind,\n\t\t'leaseId' in payload ? payload.leaseId : undefined,\n\t\t'transitionId' in payload ? payload.transitionId : undefined,\n\t\t'operation' in payload ? payload.operation : undefined,\n\t\t'channelProviderId' in payload ? payload.channelProviderId : undefined,\n\t]);\n}\n\nexport function classifyGatewayControlAdmission(\n\toptions: ClassifyGatewayControlAdmissionOptions,\n): GatewayControlAdmissionClassification {\n\tconst message = options.message;\n\tif (message.kind === 'command_result') {\n\t\treturn options.matchedPendingResult === true\n\t\t\t? { messageClass: 'safety', status: 'classified' }\n\t\t\t: { reason: 'forged_command_result', status: 'fence' };\n\t}\n\tif (message.kind === 'heartbeat') {\n\t\treturn {\n\t\t\tcoalesceKey: `${options.direction}:control-heartbeat`,\n\t\t\tmessageClass: 'liveness',\n\t\t\tstatus: 'classified',\n\t\t};\n\t}\n\tif (message.kind === 'event') {\n\t\tif (options.direction !== 'gateway_to_controller') {\n\t\t\treturn { reason: 'direction_violation', status: 'fence' };\n\t\t}\n\t\tswitch (message.operation) {\n\t\t\tcase 'gateway_runtime_readiness':\n\t\t\t\treturn {\n\t\t\t\t\tcoalesceKey: 'gateway-runtime-readiness',\n\t\t\t\t\tmessageClass: 'liveness',\n\t\t\t\t\tstatus: 'classified',\n\t\t\t\t};\n\t\t\tcase 'runtime_status':\n\t\t\t\treturn {\n\t\t\t\t\tcoalesceKey: `runtime-status:${message.payload.statusKind}`,\n\t\t\t\t\tmessageClass: 'liveness',\n\t\t\t\t\tstatus: 'classified',\n\t\t\t\t};\n\t\t\tcase 'health_event':\n\t\t\t\treturn {\n\t\t\t\t\tcoalesceKey: diagnosticCoalesceKey(message.payload),\n\t\t\t\t\tmessageClass: 'diagnostic',\n\t\t\t\t\tstatus: 'classified',\n\t\t\t\t};\n\t\t}\n\t}\n\tif (message.operation === 'control_ping') {\n\t\treturn {\n\t\t\tcoalesceKey: `${options.direction}:control-ping`,\n\t\t\tmessageClass: 'liveness',\n\t\t\tstatus: 'classified',\n\t\t};\n\t}\n\tif (options.direction === 'controller_to_gateway') {\n\t\tswitch (message.operation) {\n\t\t\tcase 'tool_vm_binding_publish': {\n\t\t\t\tif (message.kind !== 'command') {\n\t\t\t\t\treturn { reason: 'direction_violation', status: 'fence' };\n\t\t\t\t}\n\t\t\t\tconst stablePrincipal = message.payload.binding.stablePrincipal;\n\t\t\t\treturn {\n\t\t\t\t\tauthoritySchedulingKey: stablePrincipal,\n\t\t\t\t\tcoalesceKey: `tool-vm-binding:${stablePrincipal}`,\n\t\t\t\t\tmessageClass: 'authority',\n\t\t\t\t\tstablePrincipal,\n\t\t\t\t\tstatus: 'classified',\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase 'operation_cancel':\n\t\t\t\treturn options.controllerSafetyOperation === true &&\n\t\t\t\t\tmessage.payload.initiatedBy === 'controller'\n\t\t\t\t\t? { messageClass: 'safety', status: 'classified' }\n\t\t\t\t\t: { reason: 'direction_violation', status: 'fence' };\n\t\t\tcase 'recovery_command':\n\t\t\t\treturn options.controllerSafetyOperation === true\n\t\t\t\t\t? { messageClass: 'safety', status: 'classified' }\n\t\t\t\t\t: { reason: 'direction_violation', status: 'fence' };\n\t\t\tcase 'caller_context_register':\n\t\t\tcase 'lease_create':\n\t\t\tcase 'lease_get':\n\t\t\tcase 'lease_peek':\n\t\t\tcase 'lease_reacquire':\n\t\t\tcase 'lease_release':\n\t\t\tcase 'lease_renew':\n\t\t\tcase 'lease_use_start':\n\t\t\tcase 'lease_use_heartbeat':\n\t\t\tcase 'lease_use_end':\n\t\t\tcase 'tool_portal_controller_host_action':\n\t\t\tcase 'tool_portal_admission_reserve':\n\t\t\tcase 'tool_portal_dispatch_arm':\n\t\t\tcase 'tool_vm_binding_request':\n\t\t\t\treturn { reason: 'direction_violation', status: 'fence' };\n\t\t}\n\t}\n\tswitch (message.operation) {\n\t\tcase 'caller_context_register':\n\t\t\treturn authorityClassification(options.stablePrincipal);\n\t\tcase 'lease_renew':\n\t\t\treturn options.stablePrincipal === undefined\n\t\t\t\t? { reason: 'stable_principal_required', status: 'refused' }\n\t\t\t\t: {\n\t\t\t\t\t\tcoalesceKey: `${options.stablePrincipal}:lease:${message.payload.leaseId}`,\n\t\t\t\t\t\tmessageClass: 'liveness',\n\t\t\t\t\t\tstatus: 'classified',\n\t\t\t\t\t};\n\t\tcase 'lease_use_heartbeat':\n\t\t\treturn options.stablePrincipal === undefined\n\t\t\t\t? { reason: 'stable_principal_required', status: 'refused' }\n\t\t\t\t: {\n\t\t\t\t\t\tcoalesceKey: `${options.stablePrincipal}:lease:${message.payload.leaseId}:use:${message.payload.useId}`,\n\t\t\t\t\t\tmessageClass: 'liveness',\n\t\t\t\t\t\tstatus: 'classified',\n\t\t\t\t\t};\n\t\tcase 'operation_cancel':\n\t\t\treturn message.payload.initiatedBy === 'gateway'\n\t\t\t\t? { reason: 'unproven_gateway_cancel', status: 'refused' }\n\t\t\t\t: { reason: 'direction_violation', status: 'fence' };\n\t\tcase 'recovery_command':\n\t\t\treturn { reason: 'direction_violation', status: 'fence' };\n\t\tcase 'tool_vm_binding_publish':\n\t\t\treturn { reason: 'direction_violation', status: 'fence' };\n\t\tcase 'lease_create':\n\t\tcase 'lease_get':\n\t\tcase 'lease_peek':\n\t\tcase 'lease_reacquire':\n\t\tcase 'lease_release':\n\t\tcase 'lease_use_start':\n\t\tcase 'lease_use_end':\n\t\tcase 'tool_portal_controller_host_action':\n\t\tcase 'tool_portal_admission_reserve':\n\t\tcase 'tool_portal_dispatch_arm':\n\t\tcase 'tool_vm_binding_request':\n\t\t\treturn authorityClassification(options.stablePrincipal);\n\t}\n\treturn { reason: 'direction_violation', status: 'fence' };\n}\n","import { z } from 'zod/v4';\n\nexport const GATEWAY_RUNTIME_TOOL_PORTAL_CONTROL_LISTEN_HOST = '127.0.0.1';\nexport const GATEWAY_RUNTIME_TOOL_PORTAL_CONTROL_GUEST_PORT = 18_790;\n\nexport const GatewayRuntimeToolPortalProductionControlEndpointSchema = z\n\t.object({\n\t\thost: z.literal(GATEWAY_RUNTIME_TOOL_PORTAL_CONTROL_LISTEN_HOST),\n\t\tport: z.literal(GATEWAY_RUNTIME_TOOL_PORTAL_CONTROL_GUEST_PORT),\n\t})\n\t.strict()\n\t.readonly();\n\nexport type GatewayRuntimeToolPortalProductionControlEndpoint = z.infer<\n\ttypeof GatewayRuntimeToolPortalProductionControlEndpointSchema\n>;\n\nexport const GATEWAY_RUNTIME_TOOL_PORTAL_PRODUCTION_CONTROL_ENDPOINT =\n\tGatewayRuntimeToolPortalProductionControlEndpointSchema.parse({\n\t\thost: GATEWAY_RUNTIME_TOOL_PORTAL_CONTROL_LISTEN_HOST,\n\t\tport: GATEWAY_RUNTIME_TOOL_PORTAL_CONTROL_GUEST_PORT,\n\t});\n","import {\n\tmcpConfigSchema,\n\ttoolPortalConfigSchema,\n\ttype ManagedToolPortalConfig,\n} from '@agent-vm/config-contracts';\nimport { z } from 'zod/v4';\n\nimport { GatewayRuntimePortalSemanticSnapshotSchema } from './gateway-runtime-portal-context.js';\n\nexport const GATEWAY_RUNTIME_PORTAL_ADMISSION_FILE_NAME = 'gateway-runtime-portal-admission.json';\n\nconst GatewayRuntimeManagedToolPortalConfigSchema = toolPortalConfigSchema.transform(\n\t(config, context): ManagedToolPortalConfig => {\n\t\tif (config.mode !== 'managed') {\n\t\t\tcontext.addIssue({\n\t\t\t\tcode: 'custom',\n\t\t\t\tmessage: 'Gateway runtime admission requires managed Tool Portal configuration.',\n\t\t\t\tpath: ['mode'],\n\t\t\t});\n\t\t\treturn z.NEVER;\n\t\t}\n\t\treturn config;\n\t},\n);\n\nexport const GatewayRuntimePortalAdmissionMaterialSchema = z\n\t.object({\n\t\teffectiveMcpConfig: mcpConfigSchema,\n\t\teffectiveToolPortalConfig: GatewayRuntimeManagedToolPortalConfigSchema,\n\t\tsemanticSnapshot: GatewayRuntimePortalSemanticSnapshotSchema,\n\t})\n\t.strict();\n\nexport type GatewayRuntimePortalAdmissionMaterial = z.infer<\n\ttypeof GatewayRuntimePortalAdmissionMaterialSchema\n>;\n","import { createHash } from 'node:crypto';\n\nimport type {\n\tFormattedSecretValue,\n\tManagedToolPortalConfig,\n\tMcpConfig,\n} from '@agent-vm/config-contracts';\n\nimport {\n\tGatewayRuntimePortalSemanticSnapshotSchema,\n\tManagedAgentProjectionSchema,\n\ttype GatewayRuntimeFrameworkIdentity,\n\ttype GatewayRuntimePortalSemanticSnapshot,\n\ttype GatewayRuntimePortalSurfaceClass,\n\ttype ManagedAgentProjection,\n} from './gateway-runtime-portal-context.js';\n\ninterface ToolSelector {\n\treadonly allow: '*' | readonly string[];\n\treadonly deny: readonly string[];\n}\n\ninterface NormalizedToolSelector {\n\treadonly allow: '*' | readonly string[];\n\treadonly deny: readonly string[];\n}\n\ntype NormalizedMcpTransport =\n\t| {\n\t\t\treadonly args: readonly string[];\n\t\t\treadonly command: string;\n\t\t\treadonly connectionTimeoutMs?: number;\n\t\t\treadonly cwd?: string;\n\t\t\treadonly env: Readonly<Record<string, FormattedSecretValue>>;\n\t\t\treadonly kind: 'stdio';\n\t\t\treadonly networkAccess?: 'declared' | 'none';\n\t\t\treadonly requiredEgressHosts: readonly string[];\n\t }\n\t| {\n\t\t\treadonly connectionTimeoutMs?: number;\n\t\t\treadonly headers: Readonly<Record<string, FormattedSecretValue>>;\n\t\t\treadonly kind: 'sse' | 'streamable-http';\n\t\t\treadonly requiredEgressHosts: readonly string[];\n\t\t\treadonly url: string;\n\t };\n\ninterface NormalizedMcpProvider {\n\treadonly discovery: McpConfig['providers'][string]['discovery'];\n\treadonly kind: 'mcp';\n\treadonly namespace: string;\n\treadonly secretPolicies: Readonly<\n\t\tRecord<\n\t\t\tstring,\n\t\t\t{\n\t\t\t\treadonly hosts: readonly string[];\n\t\t\t\treadonly injection: 'env' | 'http-mediation';\n\t\t\t}\n\t\t>\n\t>;\n\treadonly transport: NormalizedMcpTransport;\n}\n\ntype NormalizedMcpProviders = Readonly<Record<string, NormalizedMcpProvider>>;\ntype NormalizedSurfaceEligibility = Readonly<\n\tRecord<string, Readonly<Record<string, readonly GatewayRuntimePortalSurfaceClass[]>>>\n>;\n\ninterface NormalizedCatalogInputs {\n\treadonly profiles: Readonly<\n\t\tRecord<\n\t\t\tstring,\n\t\t\tReadonly<\n\t\t\t\tRecord<\n\t\t\t\t\tstring,\n\t\t\t\t\t{\n\t\t\t\t\t\treadonly operations?: Readonly<\n\t\t\t\t\t\t\tRecord<\n\t\t\t\t\t\t\t\tstring,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\treadonly description: string;\n\t\t\t\t\t\t\t\t\treadonly kind:\n\t\t\t\t\t\t\t\t\t\t| 'command.fixed'\n\t\t\t\t\t\t\t\t\t\t| 'filesystem.read'\n\t\t\t\t\t\t\t\t\t\t| 'filesystem.write'\n\t\t\t\t\t\t\t\t\t\t| 'process.cancel'\n\t\t\t\t\t\t\t\t\t\t| 'process.logs'\n\t\t\t\t\t\t\t\t\t\t| 'process.start'\n\t\t\t\t\t\t\t\t\t\t| 'process.status'\n\t\t\t\t\t\t\t\t\t\t| 'process.wait';\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\treadonly tools: NormalizedToolSelector;\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t>\n\t\t>\n\t>;\n\treadonly providers: NormalizedMcpProviders;\n}\n\ninterface NormalizedProfilePolicyInputs {\n\treadonly profiles: Readonly<\n\t\tRecord<\n\t\t\tstring,\n\t\t\tReadonly<\n\t\t\t\tRecord<\n\t\t\t\t\tstring,\n\t\t\t\t\t{\n\t\t\t\t\t\treadonly calls: {\n\t\t\t\t\t\t\treadonly requiresApproval: NormalizedToolSelector;\n\t\t\t\t\t\t\treadonly withoutApproval: NormalizedToolSelector;\n\t\t\t\t\t\t};\n\t\t\t\t\t\treadonly tools: NormalizedToolSelector;\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t>\n\t\t>\n\t>;\n\treadonly surfaceEligibilityByProfile: NormalizedSurfaceEligibility;\n}\n\ntype NormalizedBindingInputs = Readonly<\n\tRecord<\n\t\tstring,\n\t\tReadonly<\n\t\t\tRecord<\n\t\t\t\tstring,\n\t\t\t\t| { readonly kind: 'controller_host_action' | 'mcp_provider' }\n\t\t\t\t| {\n\t\t\t\t\t\treadonly kind: 'tool_vm_runner';\n\t\t\t\t\t\treadonly operations: Readonly<\n\t\t\t\t\t\t\tRecord<\n\t\t\t\t\t\t\t\tstring,\n\t\t\t\t\t\t\t\t| {\n\t\t\t\t\t\t\t\t\t\treadonly executable: string;\n\t\t\t\t\t\t\t\t\t\treadonly kind: 'command.fixed';\n\t\t\t\t\t\t\t\t\t\treadonly mandatoryArgvPrefix: readonly string[];\n\t\t\t\t\t\t\t\t\t\treadonly workingDirectory: string;\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t| {\n\t\t\t\t\t\t\t\t\t\treadonly kind:\n\t\t\t\t\t\t\t\t\t\t\t| 'filesystem.read'\n\t\t\t\t\t\t\t\t\t\t\t| 'filesystem.write'\n\t\t\t\t\t\t\t\t\t\t\t| 'process.cancel'\n\t\t\t\t\t\t\t\t\t\t\t| 'process.logs'\n\t\t\t\t\t\t\t\t\t\t\t| 'process.status';\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t| {\n\t\t\t\t\t\t\t\t\t\treadonly executable: string;\n\t\t\t\t\t\t\t\t\t\treadonly kind: 'process.start';\n\t\t\t\t\t\t\t\t\t\treadonly mandatoryArgvPrefix: readonly string[];\n\t\t\t\t\t\t\t\t\t\treadonly maxRuntimeMs: number;\n\t\t\t\t\t\t\t\t\t\treadonly retainOutputBytes: number;\n\t\t\t\t\t\t\t\t\t\treadonly workingDirectory: string;\n\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t| {\n\t\t\t\t\t\t\t\t\t\treadonly kind: 'process.wait';\n\t\t\t\t\t\t\t\t\t\treadonly timeoutMs: number;\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\treadonly profile: 'sandbox_ssh';\n\t\t\t\t }\n\t\t\t>\n\t\t>\n\t>\n>;\n\ntype CanonicalJsonValue =\n\t| boolean\n\t| null\n\t| number\n\t| string\n\t| undefined\n\t| readonly CanonicalJsonValue[]\n\t| { readonly [key: string]: CanonicalJsonValue };\n\nexport interface DeriveGatewayRuntimePortalSemanticSnapshotProps {\n\treadonly agentProjections: readonly ManagedAgentProjectionInput[];\n\treadonly mcpConfig: McpConfig;\n\treadonly surfaceEligibilityByProfile: GatewayRuntimePortalSemanticSnapshot['surfaceEligibilityByProfile'];\n\treadonly toolPortalConfig: ManagedToolPortalConfig;\n}\n\nexport interface ManagedAgentProjectionInput {\n\treadonly agentId: string;\n\treadonly frameworkIdentity: GatewayRuntimeFrameworkIdentity;\n\treadonly toolPortalProfileId: string;\n}\n\nexport interface AssertGatewayRuntimePortalSemanticSnapshotMatchesInputsProps {\n\treadonly mcpConfig: McpConfig;\n\treadonly semanticSnapshot: GatewayRuntimePortalSemanticSnapshot;\n\treadonly toolPortalConfig: ManagedToolPortalConfig;\n}\n\nfunction sortedStrings<TString extends string>(values: readonly TString[]): readonly TString[] {\n\treturn [...values].toSorted();\n}\n\nfunction normalizedToolSelector(selector: ToolSelector): NormalizedToolSelector {\n\treturn {\n\t\tallow: selector.allow === '*' ? '*' : sortedStrings(selector.allow),\n\t\tdeny: sortedStrings(selector.deny),\n\t};\n}\n\nfunction normalizedMcpProviders(providers: McpConfig['providers']): NormalizedMcpProviders {\n\treturn Object.fromEntries(\n\t\tObject.entries(providers).map(([providerId, provider]) => {\n\t\t\tconst secretPolicies = Object.fromEntries(\n\t\t\t\tObject.entries(provider.secretPolicies).map(([secretName, policy]) => [\n\t\t\t\t\tsecretName,\n\t\t\t\t\t{\n\t\t\t\t\t\thosts: sortedStrings(policy.hosts),\n\t\t\t\t\t\tinjection: policy.injection,\n\t\t\t\t\t},\n\t\t\t\t]),\n\t\t\t);\n\t\t\tconst transport =\n\t\t\t\tprovider.transport.kind === 'stdio'\n\t\t\t\t\t? {\n\t\t\t\t\t\t\targs: provider.transport.args,\n\t\t\t\t\t\t\tcommand: provider.transport.command,\n\t\t\t\t\t\t\t...(provider.transport.connectionTimeoutMs === undefined\n\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t: { connectionTimeoutMs: provider.transport.connectionTimeoutMs }),\n\t\t\t\t\t\t\t...(provider.transport.cwd === undefined ? {} : { cwd: provider.transport.cwd }),\n\t\t\t\t\t\t\tenv: provider.transport.env,\n\t\t\t\t\t\t\tkind: provider.transport.kind,\n\t\t\t\t\t\t\t...(provider.transport.networkAccess === undefined\n\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t: { networkAccess: provider.transport.networkAccess }),\n\t\t\t\t\t\t\trequiredEgressHosts: sortedStrings(provider.transport.requiredEgressHosts),\n\t\t\t\t\t\t}\n\t\t\t\t\t: {\n\t\t\t\t\t\t\t...(provider.transport.connectionTimeoutMs === undefined\n\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t: { connectionTimeoutMs: provider.transport.connectionTimeoutMs }),\n\t\t\t\t\t\t\theaders: provider.transport.headers,\n\t\t\t\t\t\t\tkind: provider.transport.kind,\n\t\t\t\t\t\t\trequiredEgressHosts: sortedStrings(provider.transport.requiredEgressHosts),\n\t\t\t\t\t\t\turl: provider.transport.url,\n\t\t\t\t\t\t};\n\t\t\treturn [\n\t\t\t\tproviderId,\n\t\t\t\t{\n\t\t\t\t\tdiscovery: provider.discovery,\n\t\t\t\t\tkind: provider.kind,\n\t\t\t\t\tnamespace: provider.namespace,\n\t\t\t\t\tsecretPolicies,\n\t\t\t\t\ttransport,\n\t\t\t\t},\n\t\t\t];\n\t\t}),\n\t);\n}\n\nfunction normalizedSurfaceEligibility(\n\tsurfaceEligibilityByProfile: GatewayRuntimePortalSemanticSnapshot['surfaceEligibilityByProfile'],\n): NormalizedSurfaceEligibility {\n\treturn Object.fromEntries(\n\t\tObject.entries(surfaceEligibilityByProfile).map(([profileId, capabilities]) => [\n\t\t\tprofileId,\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries(capabilities).map(([capabilityId, surfaceClasses]) => [\n\t\t\t\t\tcapabilityId,\n\t\t\t\t\tsortedStrings(surfaceClasses),\n\t\t\t\t]),\n\t\t\t),\n\t\t]),\n\t);\n}\n\nfunction normalizedCatalogInputs(props: {\n\treadonly mcpConfig: McpConfig;\n\treadonly toolPortalConfig: ManagedToolPortalConfig;\n}): NormalizedCatalogInputs {\n\treturn {\n\t\tprofiles: Object.fromEntries(\n\t\t\tObject.entries(props.toolPortalConfig.profiles).map(([profileId, profile]) => [\n\t\t\t\tprofileId,\n\t\t\t\tObject.fromEntries(\n\t\t\t\t\tObject.entries(profile.namespaces).map(([namespaceId, namespacePolicy]) => [\n\t\t\t\t\t\tnamespaceId,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...(namespacePolicy.backend.kind === 'tool_vm_runner'\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\toperations: Object.fromEntries(\n\t\t\t\t\t\t\t\t\t\t\tObject.entries(namespacePolicy.backend.operations).map(\n\t\t\t\t\t\t\t\t\t\t\t\t([operationName, operation]) => [\n\t\t\t\t\t\t\t\t\t\t\t\t\toperationName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ description: operation.description, kind: operation.kind },\n\t\t\t\t\t\t\t\t\t\t\t\t],\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\t: {}),\n\t\t\t\t\t\t\ttools: normalizedToolSelector(namespacePolicy.tools),\n\t\t\t\t\t\t},\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t]),\n\t\t),\n\t\tproviders: normalizedMcpProviders(props.mcpConfig.providers),\n\t};\n}\n\nfunction normalizedProfilePolicyInputs(props: {\n\treadonly surfaceEligibilityByProfile: GatewayRuntimePortalSemanticSnapshot['surfaceEligibilityByProfile'];\n\treadonly toolPortalConfig: ManagedToolPortalConfig;\n}): NormalizedProfilePolicyInputs {\n\treturn {\n\t\tprofiles: Object.fromEntries(\n\t\t\tObject.entries(props.toolPortalConfig.profiles).map(([profileId, profile]) => [\n\t\t\t\tprofileId,\n\t\t\t\tObject.fromEntries(\n\t\t\t\t\tObject.entries(profile.namespaces).map(([namespaceId, namespacePolicy]) => [\n\t\t\t\t\t\tnamespaceId,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcalls: {\n\t\t\t\t\t\t\t\trequiresApproval: normalizedToolSelector(namespacePolicy.calls.requiresApproval),\n\t\t\t\t\t\t\t\twithoutApproval: normalizedToolSelector(namespacePolicy.calls.withoutApproval),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttools: normalizedToolSelector(namespacePolicy.tools),\n\t\t\t\t\t\t},\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t]),\n\t\t),\n\t\tsurfaceEligibilityByProfile: normalizedSurfaceEligibility(props.surfaceEligibilityByProfile),\n\t};\n}\n\nfunction normalizedBindingInputs(config: ManagedToolPortalConfig): NormalizedBindingInputs {\n\treturn Object.fromEntries(\n\t\tObject.entries(config.profiles).map(([profileId, profile]) => [\n\t\t\tprofileId,\n\t\t\tObject.fromEntries(\n\t\t\t\tObject.entries(profile.namespaces).map(([namespaceId, namespacePolicy]) => [\n\t\t\t\t\tnamespaceId,\n\t\t\t\t\tnamespacePolicy.backend.kind === 'tool_vm_runner'\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tkind: namespacePolicy.backend.kind,\n\t\t\t\t\t\t\t\toperations: Object.fromEntries(\n\t\t\t\t\t\t\t\t\tObject.entries(namespacePolicy.backend.operations).map(\n\t\t\t\t\t\t\t\t\t\t([operationName, operation]) => [\n\t\t\t\t\t\t\t\t\t\t\toperationName,\n\t\t\t\t\t\t\t\t\t\t\toperation.kind === 'command.fixed'\n\t\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\texecutable: operation.executable,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkind: operation.kind,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmandatoryArgvPrefix: operation.mandatoryArgvPrefix,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tworkingDirectory: operation.workingDirectory,\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t: operation.kind === 'process.start'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texecutable: operation.executable,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkind: operation.kind,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmandatoryArgvPrefix: operation.mandatoryArgvPrefix,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxRuntimeMs: operation.maxRuntimeMs,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tretainOutputBytes: operation.retainOutputBytes,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tworkingDirectory: operation.workingDirectory,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t: operation.kind === 'process.wait'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? { kind: operation.kind, timeoutMs: operation.timeoutMs }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: { kind: operation.kind },\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\t),\n\t\t\t\t\t\t\t\tprofile: namespacePolicy.backend.profile,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: { kind: namespacePolicy.backend.kind },\n\t\t\t\t]),\n\t\t\t),\n\t\t]),\n\t);\n}\n\nfunction canonicalJson(value: object): string {\n\treturn JSON.stringify(value, (_key, nestedValue: CanonicalJsonValue) => {\n\t\tif (typeof nestedValue !== 'object' || nestedValue === null || Array.isArray(nestedValue)) {\n\t\t\treturn nestedValue;\n\t\t}\n\t\treturn Object.fromEntries(\n\t\t\tObject.entries(nestedValue).toSorted(([leftKey], [rightKey]) =>\n\t\t\t\tleftKey.localeCompare(rightKey),\n\t\t\t),\n\t\t);\n\t});\n}\n\nfunction revision(domain: string, material: object): string {\n\tconst digest = createHash('sha256')\n\t\t.update(`${domain}\\0`, 'utf8')\n\t\t.update(canonicalJson(material), 'utf8')\n\t\t.digest('hex');\n\treturn `${domain}:${digest}`;\n}\n\nfunction frameworkIdentityKey(identity: GatewayRuntimeFrameworkIdentity): string {\n\treturn identity.kind === 'openclaw'\n\t\t? `openclaw:${identity.agentId}`\n\t\t: `hermes:${identity.profileName}`;\n}\n\nfunction assertExactManagedAgentProjectionInputs(props: {\n\treadonly agentProjections: readonly ManagedAgentProjectionInput[];\n\treadonly configuredAgents: ManagedToolPortalConfig['agents'];\n}): void {\n\tconst projectionAgentIds = props.agentProjections.map((projection) => projection.agentId);\n\tif (new Set(projectionAgentIds).size !== projectionAgentIds.length) {\n\t\tthrow new Error('Managed Agent Projection agent ids must be unique.');\n\t}\n\tconst configuredAgentIds = sortedStrings(Object.keys(props.configuredAgents));\n\tconst sortedProjectionAgentIds = sortedStrings(projectionAgentIds);\n\tif (\n\t\tconfiguredAgentIds.length !== sortedProjectionAgentIds.length ||\n\t\tconfiguredAgentIds.some((agentId, index) => agentId !== sortedProjectionAgentIds[index])\n\t) {\n\t\tthrow new Error(\n\t\t\t'Managed Agent Projection agent ids must exactly match configured Tool Portal agent ids.',\n\t\t);\n\t}\n\tconst frameworkKinds = new Set(\n\t\tprops.agentProjections.map((projection) => projection.frameworkIdentity.kind),\n\t);\n\tif (frameworkKinds.size !== 1) {\n\t\tthrow new Error('Managed Agent Projections must share one framework kind.');\n\t}\n\tconst frameworkIdentityKeys = props.agentProjections.map((projection) =>\n\t\tframeworkIdentityKey(projection.frameworkIdentity),\n\t);\n\tif (new Set(frameworkIdentityKeys).size !== frameworkIdentityKeys.length) {\n\t\tthrow new Error('Managed Agent Projection framework identities must be unique.');\n\t}\n\tfor (const projection of props.agentProjections) {\n\t\tif (\n\t\t\tprojection.frameworkIdentity.kind === 'openclaw' &&\n\t\t\tprojection.frameworkIdentity.agentId !== projection.agentId\n\t\t) {\n\t\t\tthrow new Error(`OpenClaw projection identity must match agent '${projection.agentId}'.`);\n\t\t}\n\t\tconst configuredAgent = props.configuredAgents[projection.agentId];\n\t\tif (configuredAgent?.profile !== projection.toolPortalProfileId) {\n\t\t\tthrow new Error(\n\t\t\t\t`Managed Agent Projection Tool Portal profile does not match for agent '${projection.agentId}'.`,\n\t\t\t);\n\t\t}\n\t}\n}\n\nexport function deriveManagedAgentProjection(\n\tinput: ManagedAgentProjectionInput,\n): ManagedAgentProjection {\n\treturn ManagedAgentProjectionSchema.parse({\n\t\t...input,\n\t\tprofileAssignmentRevision: revision('profile-assignment', input),\n\t});\n}\n\nfunction deriveManagedAgentProjectionCohortDigest(\n\tagentProjections: readonly ManagedAgentProjection[],\n): string {\n\treturn revision('projection-cohort', {\n\t\tagentProjections: [...agentProjections].toSorted((leftProjection, rightProjection) =>\n\t\t\tleftProjection.agentId.localeCompare(rightProjection.agentId),\n\t\t),\n\t});\n}\n\nexport function deriveGatewayRuntimePortalSemanticSnapshot(\n\tprops: DeriveGatewayRuntimePortalSemanticSnapshotProps,\n): GatewayRuntimePortalSemanticSnapshot {\n\tassertExactManagedAgentProjectionInputs({\n\t\tagentProjections: props.agentProjections,\n\t\tconfiguredAgents: props.toolPortalConfig.agents,\n\t});\n\tconst projections = props.agentProjections\n\t\t.map((projection) => deriveManagedAgentProjection(projection))\n\t\t.toSorted((leftProjection, rightProjection) =>\n\t\t\tleftProjection.agentId.localeCompare(rightProjection.agentId),\n\t\t);\n\tconst agentProjections = Object.fromEntries(\n\t\tprojections.map((projection) => [projection.agentId, projection]),\n\t);\n\tconst projectionCohortDigest = deriveManagedAgentProjectionCohortDigest(projections);\n\tconst providerRevision = revision('provider', normalizedMcpProviders(props.mcpConfig.providers));\n\tconst catalogRevision = revision(\n\t\t'catalog',\n\t\tnormalizedCatalogInputs({\n\t\t\tmcpConfig: props.mcpConfig,\n\t\t\ttoolPortalConfig: props.toolPortalConfig,\n\t\t}),\n\t);\n\tconst profilePolicyRevision = revision(\n\t\t'profile-policy',\n\t\tnormalizedProfilePolicyInputs({\n\t\t\tsurfaceEligibilityByProfile: props.surfaceEligibilityByProfile,\n\t\t\ttoolPortalConfig: props.toolPortalConfig,\n\t\t}),\n\t);\n\tconst bindingRevision = revision('binding', normalizedBindingInputs(props.toolPortalConfig));\n\tconst schemaRevision = revision('schema', {\n\t\tmcpConfigSchemaVersion: props.mcpConfig.schemaVersion,\n\t\ttoolPortalConfigSchemaVersion: props.toolPortalConfig.schemaVersion,\n\t});\n\tconst desiredRevision = revision('portal-admission', {\n\t\tagentProjections,\n\t\tbindingRevision,\n\t\tcatalogRevision,\n\t\tprofilePolicyRevision,\n\t\tprojectionCohortDigest,\n\t\tproviderRevision,\n\t\tschemaRevision,\n\t\tsurfaceEligibilityByProfile: normalizedSurfaceEligibility(props.surfaceEligibilityByProfile),\n\t});\n\treturn GatewayRuntimePortalSemanticSnapshotSchema.parse({\n\t\tactiveRevision: desiredRevision,\n\t\tagentProjections,\n\t\tbindingRevision,\n\t\tcatalogRevision,\n\t\tdesiredRevision,\n\t\tprofilePolicyRevision,\n\t\tprojectionCohortDigest,\n\t\tproviderRevision,\n\t\tschemaRevision,\n\t\tschemaVersion: 1,\n\t\tsurfaceEligibilityByProfile: normalizedSurfaceEligibility(props.surfaceEligibilityByProfile),\n\t});\n}\n\nexport function assertGatewayRuntimePortalSemanticSnapshotMatchesInputs(\n\tprops: AssertGatewayRuntimePortalSemanticSnapshotMatchesInputsProps,\n): void {\n\tconst expectedSnapshot = deriveGatewayRuntimePortalSemanticSnapshot({\n\t\tagentProjections: Object.values(props.semanticSnapshot.agentProjections).map((projection) => ({\n\t\t\tagentId: projection.agentId,\n\t\t\tframeworkIdentity: projection.frameworkIdentity,\n\t\t\ttoolPortalProfileId: projection.toolPortalProfileId,\n\t\t})),\n\t\tmcpConfig: props.mcpConfig,\n\t\tsurfaceEligibilityByProfile: props.semanticSnapshot.surfaceEligibilityByProfile,\n\t\ttoolPortalConfig: props.toolPortalConfig,\n\t});\n\tif (canonicalJson(expectedSnapshot) !== canonicalJson(props.semanticSnapshot)) {\n\t\tthrow new Error(\n\t\t\t'Gateway runtime semantic snapshot does not match the protected Tool Portal and MCP inputs.',\n\t\t);\n\t}\n}\n","import {\n\ttype GatewayRuntimeTrustedInvocationPrincipal,\n\tGatewayRuntimeTrustedInvocationPrincipalSchema,\n\tGatewayStablePrincipalDigestSchema,\n} from '@agent-vm/agent-portal-sdk/contracts';\nimport {\n\tCONTROL_PROTOCOL_VERSION,\n\tControlCorrelationSchema,\n\tControlRpcErrorSchema,\n\tControlRpcResultBaseSchema,\n\tControlSessionStateSchema,\n\ttype ControlSessionControllerToPeerEvents,\n\ttype ControlSessionPeerToControllerEvents,\n\tKnownControlDomainSchema,\n\ttype ControlDeliveryPolicy,\n\ttype ControlEnvelope,\n\ttype ControlMessageKind,\n} from '@agent-vm/control-protocol-contracts';\nimport { z } from 'zod/v4';\n\nimport { deriveGatewayControlStablePrincipal } from './gateway-control-principal.js';\nimport {\n\tGatewayRuntimeApprovalAdmissionResultSchema,\n\tGatewayRuntimeApprovalArmDispatchResultSchema,\n\tGatewayRuntimeApprovalChallengeIntentSchema,\n\tGatewayRuntimeControllerHostActionDispatchReservationSchema,\n\tGatewayRuntimeGatewayDispatchReservationSchema,\n} from './gateway-runtime-approval.js';\nimport { GatewayRuntimeReadinessSnapshotSchema } from './gateway-runtime-readiness-snapshot.js';\n\nexport * from './gateway-control-admission.js';\nexport * from './gateway-control-admission-executor.js';\nexport * from './gateway-control-admission-classification.js';\nexport * from './gateway-control-principal.js';\nexport * from './gateway-runtime-approval.js';\nexport * from './gateway-runtime-control-endpoint.js';\nexport * from './gateway-runtime-portal-admission.js';\nexport * from './gateway-runtime-portal-context.js';\nexport * from './gateway-runtime-portal-semantic-revision.js';\nexport * from './gateway-runtime-readiness-snapshot.js';\n\nexport const GatewayControlDomainSchema = z.literal('gateway_control');\n\nexport const GatewayControlHelloSchema = z\n\t.object({\n\t\tattachmentGeneration: z.number().int().positive(),\n\t\tcontrollerEpoch: z.string().min(1),\n\t\tdomain: GatewayControlDomainSchema,\n\t\tgatewayEpoch: z.string().min(1),\n\t\tpeerId: z.string().min(1),\n\t\tprocessEpoch: z.string().min(1),\n\t\tprotocolVersion: z.literal(CONTROL_PROTOCOL_VERSION),\n\t})\n\t.strict();\n\nexport const GatewayControlHelloResponseSchema = z\n\t.object({\n\t\tattachmentGeneration: z.number().int().positive(),\n\t\tconnectionId: z.string().uuid(),\n\t\tcontrollerEpoch: z.string().min(1),\n\t\toutcome: z.enum(['accepted', 'rejected', 'generation_mismatch', 'stale_attachment']),\n\t\tsessionId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayControlRpcOperationSchema = z.enum([\n\t'control_ping',\n\t'gateway_runtime_readiness',\n\t'caller_context_register',\n\t'lease_create',\n\t'lease_get',\n\t'lease_peek',\n\t'lease_reacquire',\n\t'lease_renew',\n\t'lease_release',\n\t'lease_use_start',\n\t'lease_use_heartbeat',\n\t'lease_use_end',\n\t'health_event',\n\t'runtime_status',\n\t'tool_vm_binding_publish',\n\t'tool_vm_binding_request',\n\t'tool_portal_controller_host_action',\n\t'tool_portal_admission_reserve',\n\t'tool_portal_dispatch_arm',\n\t'operation_cancel',\n\t'recovery_command',\n]);\n\nexport const GatewayControlRpcResultSchema = z.enum([\n\t...ControlRpcResultBaseSchema.options,\n\t'approval_required',\n\t'approval_stale',\n]);\n\nexport const GatewayControlForbiddenPayloadFieldSchema = z.enum([\n\t'adminToken',\n\t'agentId',\n\t'approvalProof',\n\t'argv',\n\t'controllerInstanceId',\n\t'cwd',\n\t'credentialProfileId',\n\t'egressPolicy',\n\t'env',\n\t'executablePath',\n\t'hostWorkMountDir',\n\t'profileId',\n\t'rawCredentialRef',\n\t'retryPolicy',\n\t'routeToken',\n\t'sessionKey',\n\t'sshIdentityPem',\n\t'vmGenerationOverride',\n\t'workMountDir',\n]);\n\nexport const GatewayControlCapabilityRefSchema = z\n\t.object({\n\t\tname: z.string().min(1),\n\t\tnamespace: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayControlToolCallCorrelationSchema = ControlCorrelationSchema.extend({\n\tcapability: GatewayControlCapabilityRefSchema.optional(),\n}).strict();\n\nexport const GatewayControlTrustedCallerContextIdSchema = z.string().uuid();\nexport const GatewayControlCallerContextRefSchema = z\n\t.object({\n\t\tcallerContextId: GatewayControlTrustedCallerContextIdSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlRegisteredCallerContextRefSchema =\n\tGatewayControlCallerContextRefSchema.extend({\n\t\tadmissionPrincipal: GatewayStablePrincipalDigestSchema,\n\t}).strict();\n\nexport const GatewayControlCallerContextProofAlgorithmSchema = z.literal('hmac-sha256');\n\nexport const GatewayControlCallerContextProofSchema = z\n\t.object({\n\t\talgorithm: GatewayControlCallerContextProofAlgorithmSchema,\n\t\tdigest: z.string().min(32),\n\t})\n\t.strict();\n\nexport const GatewayControlCallerContextAgentAuthoritySchema = z\n\t.object({\n\t\talgorithm: GatewayControlCallerContextProofAlgorithmSchema,\n\t\tdigest: z.string().min(32),\n\t\tkeyId: z.string().min(1),\n\t})\n\t.strict();\n\nexport interface GatewayControlCallerContextProofPayloadInput {\n\treadonly principal: GatewayRuntimeTrustedInvocationPrincipal;\n\treadonly purpose?: 'tool_vm_lease' | 'tool_portal_controller_host_action' | undefined;\n\treadonly zoneId: string;\n}\n\nexport function buildGatewayControlCallerContextProofPayload(\n\tinput: GatewayControlCallerContextProofPayloadInput,\n): string {\n\tconst purpose = input.purpose ?? 'tool_vm_lease';\n\treturn [\n\t\t'gateway-control-caller-context-v4',\n\t\tinput.zoneId,\n\t\tderiveGatewayControlStablePrincipal({ principal: input.principal }),\n\t\tpurpose,\n\t].join('\\u0000');\n}\n\nexport function buildGatewayControlCallerContextAgentAuthorityPayload(\n\tinput: GatewayControlCallerContextProofPayloadInput,\n): string {\n\tconst purpose = input.purpose ?? 'tool_vm_lease';\n\treturn [\n\t\t'gateway-control-agent-authority-v4',\n\t\tinput.zoneId,\n\t\tderiveGatewayControlStablePrincipal({ principal: input.principal }),\n\t\tpurpose,\n\t].join('\\u0000');\n}\n\nexport const GatewayControlCallerContextRegisterPayloadSchema = z\n\t.object({\n\t\tadapterEvidence: z\n\t\t\t.object({\n\t\t\t\tagentAuthority: GatewayControlCallerContextAgentAuthoritySchema,\n\t\t\t\tprincipal: GatewayRuntimeTrustedInvocationPrincipalSchema,\n\t\t\t\tproof: GatewayControlCallerContextProofSchema,\n\t\t\t\tpurpose: z.enum(['tool_vm_lease', 'tool_portal_controller_host_action']).optional(),\n\t\t\t\tzoneId: z.string().min(1),\n\t\t\t})\n\t\t\t.strict(),\n\t\tcorrelation: GatewayControlToolCallCorrelationSchema.optional(),\n\t})\n\t.strict();\n\nexport const GatewayControlLeaseCreateIntentPayloadSchema = z\n\t.object({\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tcorrelation: GatewayControlToolCallCorrelationSchema.optional(),\n\t\tidleTtlHintMs: z.number().int().positive().optional(),\n\t})\n\t.strict();\n\nexport const GatewayControlToolVmBindingRequestPayloadSchema = z\n\t.object({\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tcorrelation: GatewayControlToolCallCorrelationSchema.optional(),\n\t\tidleTtlHintMs: z.number().int().positive().optional(),\n\t})\n\t.strict();\n\nexport const GatewayControlLeaseIdPayloadSchema = z\n\t.object({\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tleaseId: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayControlLeaseUseStartPayloadSchema = z\n\t.object({\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tcorrelation: GatewayControlToolCallCorrelationSchema.optional(),\n\t\tleaseId: z.string().min(1),\n\t\tuseId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayControlLeaseUseHeartbeatPayloadSchema = z\n\t.object({\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tleaseId: z.string().min(1),\n\t\tobservedAtMs: z.number().int().positive().optional(),\n\t\tuseId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayControlLeaseUseEndPayloadSchema = z\n\t.object({\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tleaseId: z.string().min(1),\n\t\treason: z.enum(['completed', 'failed', 'cancelled', 'timed_out']),\n\t\tuseId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayControlLeaseStaleEvidenceSchema = z.discriminatedUnion('kind', [\n\tz\n\t\t.object({\n\t\t\terrorCode: z.string().min(1).optional(),\n\t\t\tkind: z.literal('tool-vm-ssh'),\n\t\t\tobservedAtMs: z.number().int().positive(),\n\t\t\toperation: z.enum(['command', 'file-bridge', 'finalize', 'probe']),\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('caller-context'),\n\t\t\tobservedAtMs: z.number().int().positive(),\n\t\t\treason: z.enum(['absent', 'stale', 'session_mismatch', 'lease_authority_absent']).optional(),\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tkind: z.literal('lease-manager'),\n\t\t\tobservedAtMs: z.number().int().positive(),\n\t\t\treason: z.enum(['expired', 'released', 'force_released', 'generation_stale']).optional(),\n\t\t})\n\t\t.strict(),\n]);\n\nexport const GatewayControlLeaseReacquireIntentPayloadSchema = z\n\t.object({\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tcorrelation: GatewayControlToolCallCorrelationSchema.optional(),\n\t\tidleTtlHintMs: z.number().int().positive().optional(),\n\t\toldLeaseId: z.string().min(1),\n\t\tstaleEvidence: GatewayControlLeaseStaleEvidenceSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlHealthEventResultSchema = z.enum([\n\t'ok',\n\t'failed',\n\t'timeout',\n\t'degraded',\n]);\n\nexport const GatewayControlProviderRuntimeHealthSchema = z.enum([\n\t'healthy',\n\t'transitioning',\n\t'unhealthy_recoverable',\n\t'unhealthy_unrecoverable',\n]);\n\nexport const GatewayControlLeaseRejectionReasonSchema = z.enum([\n\t'caller_context_absent',\n\t'caller_context_session_mismatch',\n\t'caller_context_stale',\n\t'lease_absent',\n\t'lease_authority_absent',\n\t'lease_force_released',\n\t'lease_generation_stale',\n\t'lease_reacquire_required',\n\t'lease_releasing',\n\t'lease_retired',\n\t'lease_use_tombstoned',\n\t'ownership_denied',\n\t'runtime_not_ready',\n]);\n\nexport const GatewayControlToolVmLeaseLifecycleEventRoleSchema = z.literal('plugin_observation');\n\nexport const GatewayControlToolVmLeaseLifecycleTransitionSchema = z.enum([\n\t'current_to_stale',\n\t'current_to_retired',\n\t'deprecated_to_reacquired',\n\t'deprecated_to_retired',\n\t'stale_to_reacquired',\n\t'stale_to_retired',\n\t'retired_rejected',\n]);\n\nexport const GatewayControlToolVmLeaseCallerContextStateSchema = z.enum([\n\t'ok',\n\t'absent',\n\t'stale',\n\t'session_mismatch',\n\t'not_applicable',\n]);\n\nexport const GatewayControlControllerRequestHealthOperationSchema = z.enum([\n\t'workspace-git-push',\n\t'lease-create',\n\t'lease-get',\n\t'lease-peek',\n\t'lease-release',\n\t'lease-use-start',\n\t'lease-use-end',\n]);\n\nexport const GatewayControlSessionHealthOperationSchema = z.enum([\n\t'control-session-hello',\n\t'control-session-heartbeat',\n\t'control-session-disconnect',\n\t'control-session-reconnect',\n]);\n\nexport const GatewayControlToolVmSshHealthOperationSchema = z.enum([\n\t'command',\n\t'file-bridge',\n\t'finalize',\n\t'probe',\n]);\n\nconst GatewayControlToolVmLeaseReacquiredLifecycleTransitionSchema = z.enum([\n\t'deprecated_to_reacquired',\n\t'stale_to_reacquired',\n]);\n\nconst GatewayControlHealthEventBaseSchema = z\n\t.object({\n\t\tcorrelation: ControlCorrelationSchema.optional(),\n\t\tobservedAtMs: z.number().int().positive(),\n\t\tresult: GatewayControlHealthEventResultSchema,\n\t})\n\t.strict();\n\nconst GatewayControlToolVmSshHealthEventBaseSchema = GatewayControlHealthEventBaseSchema.extend({\n\tagentId: z.string().min(1),\n\telapsedMs: z.number().int().nonnegative(),\n\terrorCode: z.string().min(1).optional(),\n\teventKind: z.literal('tool-vm-ssh'),\n\tleaseId: z.string().min(1),\n\toperation: GatewayControlToolVmSshHealthOperationSchema,\n}).strict();\n\nconst GatewayControlToolVmSshLifecycleHealthEventSchema =\n\tGatewayControlToolVmSshHealthEventBaseSchema.extend({\n\t\tactiveUseId: z.string().min(1).optional(),\n\t\tcallerContextState: GatewayControlToolVmLeaseCallerContextStateSchema.optional(),\n\t\tleaseRejectionReason: GatewayControlLeaseRejectionReasonSchema.optional(),\n\t\tlifecycleEventRole: GatewayControlToolVmLeaseLifecycleEventRoleSchema,\n\t\tlifecycleTransition: GatewayControlToolVmLeaseLifecycleTransitionSchema,\n\t\toldLeaseId: z.string().min(1),\n\t\treplacementLeaseId: z.string().min(1).optional(),\n\t\ttransitionId: z.string().min(1),\n\t})\n\t\t.strict()\n\t\t.superRefine((event, context) => {\n\t\t\tconst isReacquiredTransition =\n\t\t\t\tGatewayControlToolVmLeaseReacquiredLifecycleTransitionSchema.safeParse(\n\t\t\t\t\tevent.lifecycleTransition,\n\t\t\t\t).success;\n\t\t\tif (isReacquiredTransition && event.replacementLeaseId === undefined) {\n\t\t\t\tcontext.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'replacementLeaseId is required for reacquired lifecycle transitions',\n\t\t\t\t\tpath: ['replacementLeaseId'],\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (!isReacquiredTransition && event.replacementLeaseId !== undefined) {\n\t\t\t\tcontext.addIssue({\n\t\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\t\tmessage: 'replacementLeaseId is only valid for reacquired lifecycle transitions',\n\t\t\t\t\tpath: ['replacementLeaseId'],\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\nexport const GatewayControlHealthEventPayloadSchema = z.union([\n\tGatewayControlHealthEventBaseSchema.extend({\n\t\tchannelProviderId: z.string().min(1),\n\t\teventKind: z.literal('agent-channel-provider-health'),\n\t\tproviderRuntimeHealth: GatewayControlProviderRuntimeHealthSchema,\n\t\tsafeDetails: z.record(z.string(), z.string()).optional(),\n\t}).strict(),\n\tGatewayControlHealthEventBaseSchema.extend({\n\t\tattempt: z.number().int().positive(),\n\t\telapsedMs: z.number().int().nonnegative(),\n\t\terrorCode: z.string().min(1).optional(),\n\t\teventKind: z.literal('controller-request'),\n\t\tmaxAttempts: z.number().int().positive(),\n\t\toperation: GatewayControlControllerRequestHealthOperationSchema,\n\t\tstatusCode: z.number().int().positive().optional(),\n\t}).strict(),\n\tGatewayControlHealthEventBaseSchema.extend({\n\t\telapsedMs: z.number().int().nonnegative(),\n\t\teventKind: z.literal('gateway-control-session'),\n\t\toperation: GatewayControlSessionHealthOperationSchema,\n\t\tsafeDetails: z\n\t\t\t.object({\n\t\t\t\tpeerId: z.string().min(1),\n\t\t\t})\n\t\t\t.catchall(z.string()),\n\t}).strict(),\n\tGatewayControlHealthEventBaseSchema.extend({\n\t\teventKind: z.literal('gateway-plugin-health'),\n\t}).strict(),\n\tGatewayControlToolVmSshHealthEventBaseSchema,\n\tGatewayControlToolVmSshLifecycleHealthEventSchema,\n]);\n\nexport const GatewayControlRuntimeFindingSchema = z\n\t.object({\n\t\tid: z.string().min(1),\n\t\tok: z.boolean(),\n\t\tsafeMessage: z.string().min(1).optional(),\n\t\tseverity: z.enum(['info', 'warning', 'error']).optional(),\n\t})\n\t.strict();\n\nexport const GatewayControlRuntimeStatusPayloadSchema = z\n\t.object({\n\t\tfindings: z.array(GatewayControlRuntimeFindingSchema),\n\t\tobservedAtMs: z.number().int().positive(),\n\t\tproviderRuntimeHealth: z\n\t\t\t.enum(['healthy', 'transitioning', 'unhealthy_recoverable', 'unhealthy_unrecoverable'])\n\t\t\t.optional(),\n\t\tstatusKind: z.string().min(1),\n\t})\n\t.strict();\n\nconst GatewayControlGitObjectIdSchema = z\n\t.string()\n\t.regex(\n\t\t/^(?:[0-9a-f]{40}|[0-9a-f]{64})$/u,\n\t\t'expected an exact lowercase SHA-1 or SHA-256 object id',\n\t);\n\nexport const GatewayControlWorkspaceGitPushControllerHostActionPayloadSchema = z\n\t.object({\n\t\tactionId: z.literal('workspace_git_push'),\n\t\tapprovalReservation: GatewayRuntimeControllerHostActionDispatchReservationSchema.optional(),\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tcorrelation: GatewayControlToolCallCorrelationSchema,\n\t\texpectedHead: GatewayControlGitObjectIdSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlControllerHostProbePayloadSchema = z\n\t.object({\n\t\tactionId: z.literal('controller_host_probe'),\n\t\tapprovalReservation: GatewayRuntimeControllerHostActionDispatchReservationSchema.optional(),\n\t\tcallerContext: GatewayControlCallerContextRefSchema,\n\t\tcorrelation: GatewayControlToolCallCorrelationSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlToolPortalControllerHostActionPayloadSchema = z.discriminatedUnion(\n\t'actionId',\n\t[\n\t\tGatewayControlWorkspaceGitPushControllerHostActionPayloadSchema,\n\t\tGatewayControlControllerHostProbePayloadSchema,\n\t],\n);\n\nexport const GatewayControlWorkspaceGitCommitSummarySchema = z\n\t.object({\n\t\tsha: GatewayControlGitObjectIdSchema,\n\t\tsubject: z.string(),\n\t})\n\t.strict();\n\nexport const GatewayControlWorkspaceGitPushResultSchema = z\n\t.object({\n\t\tbranch: z.string().min(1),\n\t\tlocalHead: GatewayControlGitObjectIdSchema,\n\t\tpushedCommits: z.array(GatewayControlWorkspaceGitCommitSummarySchema),\n\t\tremoteHead: GatewayControlGitObjectIdSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlControllerHostProbeResultSchema = z\n\t.object({\n\t\tentryNames: z.array(z.string().min(1)).max(64),\n\t\tprobeKind: z.literal('controller_cache_dir_listing'),\n\t})\n\t.strict();\n\nexport const GatewayControlWorkspaceGitPushControllerHostActionResultSchema = z\n\t.object({\n\t\tactionId: z.literal('workspace_git_push'),\n\t\tresult: GatewayControlWorkspaceGitPushResultSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlControllerHostProbeActionResultSchema = z\n\t.object({\n\t\tactionId: z.literal('controller_host_probe'),\n\t\tresult: GatewayControlControllerHostProbeResultSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlToolPortalControllerHostActionResultSchema = z.discriminatedUnion(\n\t'actionId',\n\t[\n\t\tGatewayControlWorkspaceGitPushControllerHostActionResultSchema,\n\t\tGatewayControlControllerHostProbeActionResultSchema,\n\t],\n);\n\nexport const GatewayControlActiveOperationIdSchema = z.string().uuid();\n\nexport const GatewayInitiatedOperationCancelPayloadSchema = z\n\t.object({\n\t\tactiveOperationId: GatewayControlActiveOperationIdSchema,\n\t\tinitiatedBy: z.literal('gateway'),\n\t\treason: z.enum(['caller_cancelled', 'gateway_shutdown', 'operation_failed']),\n\t})\n\t.strict();\n\nexport const ControllerInitiatedGatewayOperationCancelPayloadSchema = z\n\t.object({\n\t\tactiveOperationId: GatewayControlActiveOperationIdSchema,\n\t\tinitiatedBy: z.literal('controller'),\n\t\treason: z.enum(['controller_recovery', 'operator_cancelled', 'timeout']),\n\t})\n\t.strict();\n\nexport const GatewayControlOperationCancelPayloadSchema = z.discriminatedUnion('initiatedBy', [\n\tGatewayInitiatedOperationCancelPayloadSchema,\n\tControllerInitiatedGatewayOperationCancelPayloadSchema,\n]);\n\nexport const GatewayControlRecoveryCommandPayloadSchema = z.discriminatedUnion('action', [\n\tz.object({ action: z.literal('refresh_runtime_status') }).strict(),\n\tz.object({ action: z.literal('restart_control_service') }).strict(),\n\tz\n\t\t.object({\n\t\t\taction: z.literal('close_stale_session'),\n\t\t\ttargetSessionId: z.string().uuid(),\n\t\t})\n\t\t.strict(),\n]);\n\nexport const GatewayControlPingPayloadSchema = z.object({}).strict();\n\nexport const GatewayControlToolPortalAdmissionReservePayloadSchema = z\n\t.object({\n\t\tintent: GatewayRuntimeApprovalChallengeIntentSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlToolPortalDispatchArmPayloadSchema = z\n\t.object({\n\t\treservation: GatewayRuntimeGatewayDispatchReservationSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlHeartbeatPayloadSchema = z\n\t.object({\n\t\telapsedMs: z.number().int().nonnegative().optional(),\n\t\tobservedAtMs: z.number().int().positive(),\n\t})\n\t.strict();\n\nexport const GatewayControlRpcErrorSchema = ControlRpcErrorSchema;\n\nexport const GatewayControlSessionStateSchema = ControlSessionStateSchema;\n\nexport const GatewayControlToolVmSshAccessSchema = z\n\t.object({\n\t\thost: z.string().min(1),\n\t\tport: z.number().int().positive(),\n\t\tuser: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayControlPrivateToolVmSshAccessSchema =\n\tGatewayControlToolVmSshAccessSchema.extend({\n\t\tidentityPem: z.string().min(1),\n\t\tknownHostsLine: z.string().min(1),\n\t}).strict();\n\nexport const GatewayControlToolVmBindingPublicationAuthoritySchema = z\n\t.object({\n\t\tattachmentGeneration: z.number().int().positive(),\n\t\tconnectionId: z.string().uuid(),\n\t\tcontrollerEpoch: z.string().min(1),\n\t\tgatewayEpoch: z.string().min(1),\n\t\tprocessEpoch: z.string().min(1),\n\t\tsessionId: z.string().uuid(),\n\t\tzoneId: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayControlToolVmBindingAccessGrantSchema = z\n\t.object({\n\t\tagentId: z.string().min(1),\n\t\tidleTtlMs: z.number().int().positive(),\n\t\tleafGeneration: z.string().min(1),\n\t\tleaseId: z.string().min(1),\n\t\tprofileAssignmentRevision: z.string().min(1),\n\t\tssh: GatewayControlPrivateToolVmSshAccessSchema,\n\t\tsshBindingId: z.string().min(1),\n\t\tstablePrincipal: GatewayStablePrincipalDigestSchema,\n\t\ttcpSlot: z.number().int().nonnegative(),\n\t\ttransport: z.literal('ssh-sandbox'),\n\t\tworkdir: z.string().min(1),\n\t\tzoneId: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayControlToolVmBindingIdentitySchema =\n\tGatewayControlToolVmBindingAccessGrantSchema.pick({\n\t\tagentId: true,\n\t\tleafGeneration: true,\n\t\tleaseId: true,\n\t\tprofileAssignmentRevision: true,\n\t\tsshBindingId: true,\n\t\tstablePrincipal: true,\n\t\tzoneId: true,\n\t}).strict();\n\nexport const GatewayControlToolVmBindingPublicationSchema = z.discriminatedUnion('kind', [\n\tz\n\t\t.object({\n\t\t\tauthority: GatewayControlToolVmBindingPublicationAuthoritySchema,\n\t\t\tbinding: GatewayControlToolVmBindingAccessGrantSchema,\n\t\t\tkind: z.literal('current'),\n\t\t\tobservedAtMs: z.number().int().positive(),\n\t\t})\n\t\t.strict(),\n\tz\n\t\t.object({\n\t\t\tauthority: GatewayControlToolVmBindingPublicationAuthoritySchema,\n\t\t\tbinding: GatewayControlToolVmBindingIdentitySchema,\n\t\t\tkind: z.literal('retired'),\n\t\t\tobservedAtMs: z.number().int().positive(),\n\t\t\treason: z.enum(['dead', 'expired', 'released', 'replaced', 'session_retired']),\n\t\t})\n\t\t.strict(),\n]);\n\nexport const GatewayControlToolVmBindingRequestResultSchema = z\n\t.object({\n\t\tagentId: z.string().min(1),\n\t\tstablePrincipal: GatewayStablePrincipalDigestSchema,\n\t\tstatus: z.literal('publication_pending'),\n\t})\n\t.strict();\n\nconst GatewayControlLeaseSnapshotBaseSchema = z\n\t.object({\n\t\tagentId: z.string().min(1),\n\t\tactiveUseId: z.string().uuid().optional(),\n\t\texpiresAtMs: z.number().int().positive().optional(),\n\t\tidleTtlMs: z.number().int().positive(),\n\t\tleaseId: z.string().min(1),\n\t\tssh: GatewayControlToolVmSshAccessSchema.optional(),\n\t\tstate: z.enum(['idle', 'active', 'expired', 'released']),\n\t\ttcpSlot: z.number().int().nonnegative(),\n\t\ttransport: z.literal('ssh-sandbox'),\n\t\tworkdir: z.string().min(1),\n\t\tzoneId: z.string().min(1),\n\t})\n\t.strict();\n\nexport const GatewayControlPublicLeaseSnapshotSchema = GatewayControlLeaseSnapshotBaseSchema;\n\nexport const GatewayControlPrivateLeaseSnapshotSchema =\n\tGatewayControlLeaseSnapshotBaseSchema.extend({\n\t\tleafGeneration: z.string().min(1),\n\t\tssh: GatewayControlPrivateToolVmSshAccessSchema,\n\t\tsshBindingId: z.string().min(1),\n\t}).strict();\n\nexport const GatewayControlLeaseSnapshotSchema = z.union([\n\tGatewayControlPrivateLeaseSnapshotSchema,\n\tGatewayControlPublicLeaseSnapshotSchema,\n]);\n\nexport const GatewayControlLeaseUseSnapshotSchema = z\n\t.object({\n\t\texpiresAt: z.number().int().positive().optional(),\n\t\theartbeatAfterMs: z.number().int().positive().optional(),\n\t\tleaseId: z.string().min(1),\n\t\tstate: z.enum(['active', 'ended', 'expired']),\n\t\tuseId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayControlRpcDomainCorrelationSchema = ControlCorrelationSchema;\n\nconst GatewayControlRpcForbiddenResponseFieldsSchema = {\n\tactiveOperationId: z.never().optional(),\n\tapprovalAdmission: z.never().optional(),\n\tapprovalDispatch: z.never().optional(),\n\tapprovalRequired: z.never().optional(),\n\tcallerContext: z.never().optional(),\n\tbindingRequest: z.never().optional(),\n\tcontrollerHostAction: z.never().optional(),\n\terror: z.never().optional(),\n\tlease: z.never().optional(),\n\tleaseRejectionReason: z.never().optional(),\n\tleaseUse: z.never().optional(),\n} as const;\n\nexport const GatewayControlRpcResponseBasePayloadSchema = z.object({\n\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\tresponseToMessageId: z.string().uuid(),\n\tresult: GatewayControlRpcResultSchema,\n});\n\nconst GatewayControlRpcErrorResponseResultSchema = z.enum([\n\t'failed',\n\t'timeout',\n\t'rejected',\n\t'cancelled',\n\t'stale_generation',\n\t'approval_required',\n\t'approval_stale',\n]);\n\nconst GatewayControlRpcResponseCorrelationSchema = z\n\t.object({\n\t\tresponseToMessageId: z.string().uuid(),\n\t})\n\t.strict();\n\nexport const GatewayControlRpcBareResponsePayloadSchema = z.discriminatedUnion('result', [\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\tresult: z.literal('ok'),\n\t}).strict(),\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\terror: GatewayControlRpcErrorSchema,\n\t\tresult: GatewayControlRpcErrorResponseResultSchema,\n\t}).strict(),\n]);\n\nexport const GatewayControlRpcCallerContextResponsePayloadSchema = z.discriminatedUnion('result', [\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\tcallerContext: GatewayControlRegisteredCallerContextRefSchema,\n\t\tresult: z.literal('ok'),\n\t}).strict(),\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\terror: GatewayControlRpcErrorSchema,\n\t\tresult: GatewayControlRpcErrorResponseResultSchema,\n\t}).strict(),\n]);\n\nexport const GatewayControlRpcToolVmBindingRequestResponsePayloadSchema = z.discriminatedUnion(\n\t'result',\n\t[\n\t\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\t\tbindingRequest: GatewayControlToolVmBindingRequestResultSchema,\n\t\t\tresult: z.literal('ok'),\n\t\t}).strict(),\n\t\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\t\terror: GatewayControlRpcErrorSchema,\n\t\t\tresult: GatewayControlRpcErrorResponseResultSchema,\n\t\t}).strict(),\n\t],\n);\n\nconst GatewayControlRpcLeaseRejectedResponsePayloadSchema =\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\terror: GatewayControlRpcErrorSchema.optional(),\n\t\tleaseRejectionReason: GatewayControlLeaseRejectionReasonSchema,\n\t\tresult: z.literal('rejected'),\n\t}).strict();\n\nconst GatewayControlRpcLeaseFailedResponsePayloadSchema =\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\terror: GatewayControlRpcErrorSchema,\n\t\tleaseRejectionReason: GatewayControlLeaseRejectionReasonSchema.optional(),\n\t\tresult: z.enum([\n\t\t\t'failed',\n\t\t\t'timeout',\n\t\t\t'cancelled',\n\t\t\t'stale_generation',\n\t\t\t'approval_required',\n\t\t\t'approval_stale',\n\t\t]),\n\t}).strict();\n\nexport const GatewayControlRpcPrivateLeaseResponsePayloadSchema = z.discriminatedUnion('result', [\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\tlease: GatewayControlPrivateLeaseSnapshotSchema,\n\t\tresult: z.literal('ok'),\n\t}).strict(),\n\tGatewayControlRpcLeaseRejectedResponsePayloadSchema,\n\tGatewayControlRpcLeaseFailedResponsePayloadSchema,\n]);\n\nexport const GatewayControlRpcPublicLeaseResponsePayloadSchema = z.discriminatedUnion('result', [\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\tlease: GatewayControlPublicLeaseSnapshotSchema,\n\t\tresult: z.literal('ok'),\n\t}).strict(),\n\tGatewayControlRpcLeaseRejectedResponsePayloadSchema,\n\tGatewayControlRpcLeaseFailedResponsePayloadSchema,\n]);\n\nexport const GatewayControlRpcLeaseResponsePayloadSchema = z.union([\n\tGatewayControlRpcPrivateLeaseResponsePayloadSchema,\n\tGatewayControlRpcPublicLeaseResponsePayloadSchema,\n]);\n\nexport const GatewayControlRpcLeaseUseResponsePayloadSchema = z.discriminatedUnion('result', [\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\tleaseUse: GatewayControlLeaseUseSnapshotSchema,\n\t\tresult: z.literal('ok'),\n\t}).strict(),\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\terror: GatewayControlRpcErrorSchema.optional(),\n\t\tleaseRejectionReason: GatewayControlLeaseRejectionReasonSchema,\n\t\tresult: z.literal('rejected'),\n\t}).strict(),\n\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\terror: GatewayControlRpcErrorSchema,\n\t\tleaseRejectionReason: GatewayControlLeaseRejectionReasonSchema.optional(),\n\t\tresult: z.enum([\n\t\t\t'failed',\n\t\t\t'timeout',\n\t\t\t'cancelled',\n\t\t\t'stale_generation',\n\t\t\t'approval_required',\n\t\t\t'approval_stale',\n\t\t]),\n\t}).strict(),\n]);\n\nexport const GatewayControlRpcControllerHostActionResponsePayloadSchema = z.discriminatedUnion(\n\t'result',\n\t[\n\t\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\t\tcontrollerHostAction: GatewayControlToolPortalControllerHostActionResultSchema,\n\t\t\tresult: z.literal('ok'),\n\t\t}).strict(),\n\t\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\t\terror: GatewayControlRpcErrorSchema,\n\t\t\tresult: GatewayControlRpcErrorResponseResultSchema,\n\t\t}).strict(),\n\t],\n);\n\nexport const GatewayControlRpcOperationCancelResponsePayloadSchema = z.discriminatedUnion(\n\t'result',\n\t[\n\t\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\t\tactiveOperationId: GatewayControlActiveOperationIdSchema,\n\t\t\tresult: z.literal('ok'),\n\t\t}).strict(),\n\t\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\t\tactiveOperationId: GatewayControlActiveOperationIdSchema.optional(),\n\t\t\terror: GatewayControlRpcErrorSchema,\n\t\t\tresult: GatewayControlRpcErrorResponseResultSchema,\n\t\t}).strict(),\n\t],\n);\n\nexport const GatewayControlRpcApprovalAdmissionResponsePayloadSchema = z.discriminatedUnion(\n\t'result',\n\t[\n\t\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\t\tapprovalAdmission: GatewayRuntimeApprovalAdmissionResultSchema,\n\t\t\tresult: z.literal('ok'),\n\t\t}).strict(),\n\t\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\t\terror: GatewayControlRpcErrorSchema,\n\t\t\tresult: GatewayControlRpcErrorResponseResultSchema,\n\t\t}).strict(),\n\t],\n);\n\nexport const GatewayControlRpcApprovalDispatchResponsePayloadSchema = z.discriminatedUnion(\n\t'result',\n\t[\n\t\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\t\tapprovalDispatch: GatewayRuntimeApprovalArmDispatchResultSchema,\n\t\t\tresult: z.literal('ok'),\n\t\t}).strict(),\n\t\tGatewayControlRpcResponseCorrelationSchema.extend({\n\t\t\t...GatewayControlRpcForbiddenResponseFieldsSchema,\n\t\t\terror: GatewayControlRpcErrorSchema,\n\t\t\tresult: GatewayControlRpcErrorResponseResultSchema,\n\t\t}).strict(),\n\t],\n);\n\nexport const GatewayControlRpcResponsePayloadSchema = z.union([\n\tGatewayControlRpcBareResponsePayloadSchema,\n\tGatewayControlRpcCallerContextResponsePayloadSchema,\n\tGatewayControlRpcToolVmBindingRequestResponsePayloadSchema,\n\tGatewayControlRpcLeaseResponsePayloadSchema,\n\tGatewayControlRpcLeaseUseResponsePayloadSchema,\n\tGatewayControlRpcControllerHostActionResponsePayloadSchema,\n\tGatewayControlRpcOperationCancelResponsePayloadSchema,\n\tGatewayControlRpcApprovalAdmissionResponsePayloadSchema,\n\tGatewayControlRpcApprovalDispatchResponsePayloadSchema,\n]);\n\nconst GatewayControlRpcControlPingCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.literal('control_ping'),\n\t\tpayload: GatewayControlRpcBareResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcCallerContextRegisterCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.literal('caller_context_register'),\n\t\tpayload: GatewayControlRpcCallerContextResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcPrivateLeaseCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.enum(['lease_create', 'lease_get', 'lease_reacquire', 'lease_renew']),\n\t\tpayload: GatewayControlRpcPrivateLeaseResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcPublicLeaseCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.enum(['lease_peek', 'lease_release']),\n\t\tpayload: GatewayControlRpcPublicLeaseResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcLeaseUseCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.enum(['lease_use_start', 'lease_use_heartbeat', 'lease_use_end']),\n\t\tpayload: GatewayControlRpcLeaseUseResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcControllerHostActionCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.literal('tool_portal_controller_host_action'),\n\t\tpayload: GatewayControlRpcControllerHostActionResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcOperationCancelCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.literal('operation_cancel'),\n\t\tpayload: GatewayControlRpcOperationCancelResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcRecoveryCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.literal('recovery_command'),\n\t\tpayload: GatewayControlRpcBareResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcApprovalAdmissionCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.literal('tool_portal_admission_reserve'),\n\t\tpayload: GatewayControlRpcApprovalAdmissionResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcApprovalDispatchCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.literal('tool_portal_dispatch_arm'),\n\t\tpayload: GatewayControlRpcApprovalDispatchResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcToolVmBindingRequestCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.literal('tool_vm_binding_request'),\n\t\tpayload: GatewayControlRpcToolVmBindingRequestResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlRpcToolVmBindingPublishCommandResultMessageSchema =\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command_result'),\n\t\toperation: z.literal('tool_vm_binding_publish'),\n\t\tpayload: GatewayControlRpcBareResponsePayloadSchema,\n\t}).strict();\n\nconst GatewayControlHeartbeatMessageSchema = z\n\t.object({\n\t\tkind: z.literal('heartbeat'),\n\t\toperation: z.never().optional(),\n\t\tpayload: GatewayControlHeartbeatPayloadSchema,\n\t})\n\t.strict();\n\nexport const GatewayControlRpcCommandResultMessageSchema = z.discriminatedUnion('operation', [\n\tGatewayControlRpcControlPingCommandResultMessageSchema,\n\tGatewayControlRpcCallerContextRegisterCommandResultMessageSchema,\n\tGatewayControlRpcPrivateLeaseCommandResultMessageSchema,\n\tGatewayControlRpcPublicLeaseCommandResultMessageSchema,\n\tGatewayControlRpcLeaseUseCommandResultMessageSchema,\n\tGatewayControlRpcControllerHostActionCommandResultMessageSchema,\n\tGatewayControlRpcOperationCancelCommandResultMessageSchema,\n\tGatewayControlRpcRecoveryCommandResultMessageSchema,\n\tGatewayControlRpcApprovalAdmissionCommandResultMessageSchema,\n\tGatewayControlRpcApprovalDispatchCommandResultMessageSchema,\n\tGatewayControlRpcToolVmBindingRequestCommandResultMessageSchema,\n\tGatewayControlRpcToolVmBindingPublishCommandResultMessageSchema,\n]);\n\nexport const GatewayControlRpcCommandMessageSchema = z.discriminatedUnion('operation', [\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('tool_vm_binding_request'),\n\t\tpayload: GatewayControlToolVmBindingRequestPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('tool_vm_binding_publish'),\n\t\tpayload: GatewayControlToolVmBindingPublicationSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('control_ping'),\n\t\tpayload: GatewayControlPingPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('caller_context_register'),\n\t\tpayload: GatewayControlCallerContextRegisterPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_create'),\n\t\tpayload: GatewayControlLeaseCreateIntentPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_get'),\n\t\tpayload: GatewayControlLeaseIdPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_peek'),\n\t\tpayload: GatewayControlLeaseIdPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_reacquire'),\n\t\tpayload: GatewayControlLeaseReacquireIntentPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_renew'),\n\t\tpayload: GatewayControlLeaseIdPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_release'),\n\t\tpayload: GatewayControlLeaseIdPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_use_start'),\n\t\tpayload: GatewayControlLeaseUseStartPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_use_heartbeat'),\n\t\tpayload: GatewayControlLeaseUseHeartbeatPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('lease_use_end'),\n\t\tpayload: GatewayControlLeaseUseEndPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('tool_portal_controller_host_action'),\n\t\tpayload: GatewayControlToolPortalControllerHostActionPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('tool_portal_admission_reserve'),\n\t\tpayload: GatewayControlToolPortalAdmissionReservePayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('tool_portal_dispatch_arm'),\n\t\tpayload: GatewayControlToolPortalDispatchArmPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('operation_cancel'),\n\t\tpayload: GatewayControlOperationCancelPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('command'),\n\t\toperation: z.literal('recovery_command'),\n\t\tpayload: GatewayControlRecoveryCommandPayloadSchema,\n\t}).strict(),\n]);\n\nexport const GatewayControlRpcEventMessageSchema = z.discriminatedUnion('operation', [\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('event'),\n\t\toperation: z.literal('gateway_runtime_readiness'),\n\t\tpayload: GatewayRuntimeReadinessSnapshotSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('event'),\n\t\toperation: z.literal('health_event'),\n\t\tpayload: GatewayControlHealthEventPayloadSchema,\n\t}).strict(),\n\tGatewayControlRpcDomainCorrelationSchema.extend({\n\t\tkind: z.literal('event'),\n\t\toperation: z.literal('runtime_status'),\n\t\tpayload: GatewayControlRuntimeStatusPayloadSchema,\n\t}).strict(),\n]);\n\nexport const GatewayControlEventOnlyOperationSchema = z.enum([\n\t'gateway_runtime_readiness',\n\t'health_event',\n\t'runtime_status',\n]);\n\nexport const GatewayControlRpcCommandResultOperationSchema =\n\tGatewayControlRpcOperationSchema.exclude(GatewayControlEventOnlyOperationSchema.options);\n\nexport const GatewayControlRpcMessageSchema = z.union([\n\tGatewayControlHeartbeatMessageSchema,\n\tGatewayControlRpcCommandMessageSchema,\n\tGatewayControlRpcEventMessageSchema,\n\tGatewayControlRpcCommandResultMessageSchema,\n]);\n\nexport const gatewayControlDeliveryPolicyByKind = {\n\theartbeat: 'critical_idempotent',\n} as const satisfies Partial<Record<ControlMessageKind, ControlDeliveryPolicy>>;\n\nexport const gatewayControlDeliveryPolicyByOperation = {\n\tcaller_context_register: 'critical_idempotent',\n\tcontrol_ping: 'acked_idempotent',\n\tgateway_runtime_readiness: 'latest_wins',\n\thealth_event: 'append_only_observation',\n\tlease_create: 'critical_idempotent',\n\tlease_get: 'acked_idempotent',\n\tlease_peek: 'acked_idempotent',\n\tlease_reacquire: 'critical_idempotent',\n\tlease_release: 'acked_idempotent',\n\tlease_renew: 'single_use_critical',\n\tlease_use_end: 'acked_idempotent',\n\tlease_use_heartbeat: 'single_use_critical',\n\tlease_use_start: 'critical_idempotent',\n\toperation_cancel: 'acked_idempotent',\n\trecovery_command: 'critical_idempotent',\n\truntime_status: 'latest_wins',\n\ttool_vm_binding_publish: 'critical_idempotent',\n\ttool_vm_binding_request: 'critical_idempotent',\n\ttool_portal_controller_host_action: 'single_use_critical',\n\ttool_portal_admission_reserve: 'single_use_critical',\n\ttool_portal_dispatch_arm: 'single_use_critical',\n} as const satisfies Record<GatewayControlRpcOperation, ControlDeliveryPolicy>;\n\nexport function deriveGatewayControlDeliveryPolicy(\n\tenvelope: Pick<ControlEnvelope, 'idempotencyKey' | 'kind' | 'operation'>,\n): ControlDeliveryPolicy {\n\tif (envelope.operation === 'lease_create' && envelope.idempotencyKey === undefined) {\n\t\treturn 'single_use_critical';\n\t}\n\tconst parsedOperation = GatewayControlRpcOperationSchema.safeParse(envelope.operation);\n\tif (parsedOperation.success) {\n\t\tconst operationPolicy = gatewayControlDeliveryPolicyByOperation[parsedOperation.data];\n\t\tif (operationPolicy !== undefined) {\n\t\t\treturn operationPolicy;\n\t\t}\n\t}\n\tconst kindPolicy =\n\t\tenvelope.kind === 'heartbeat' ? gatewayControlDeliveryPolicyByKind.heartbeat : undefined;\n\tif (kindPolicy !== undefined) {\n\t\treturn kindPolicy;\n\t}\n\tthrow new Error(\n\t\t`no gateway control delivery policy for ${envelope.kind}:${envelope.operation ?? '<none>'}`,\n\t);\n}\n\nexport function assertGatewayControlEnvelopeDeliveryPolicy(envelope: ControlEnvelope): void {\n\tconst derivedPolicy = deriveGatewayControlDeliveryPolicy(envelope);\n\tif (envelope.deliveryPolicy !== derivedPolicy) {\n\t\tthrow new Error(\n\t\t\t`control delivery policy mismatch: ${envelope.deliveryPolicy} !== ${derivedPolicy}`,\n\t\t);\n\t}\n}\n\nexport const gatewayControlCommandExecutionTimeoutMsByOperation = {\n\tcaller_context_register: 5_000,\n\tcontrol_ping: 5_000,\n\tgateway_runtime_readiness: 5_000,\n\thealth_event: 5_000,\n\tlease_create: 180_000,\n\tlease_get: 5_000,\n\tlease_peek: 5_000,\n\tlease_reacquire: 180_000,\n\tlease_release: 5_000,\n\tlease_renew: 10_000,\n\tlease_use_end: 5_000,\n\tlease_use_heartbeat: 5_000,\n\tlease_use_start: 10_000,\n\toperation_cancel: 5_000,\n\trecovery_command: 10_000,\n\truntime_status: 5_000,\n\ttool_vm_binding_publish: 10_000,\n\ttool_vm_binding_request: 180_000,\n\ttool_portal_controller_host_action: 120_000,\n\ttool_portal_admission_reserve: 10_000,\n\ttool_portal_dispatch_arm: 10_000,\n} as const satisfies Record<GatewayControlRpcOperation, number>;\n\nexport type GatewayControlRpcOperation = z.infer<typeof GatewayControlRpcOperationSchema>;\nexport type GatewayControlRpcMessage = z.infer<typeof GatewayControlRpcMessageSchema>;\nexport type GatewayControlHello = z.infer<typeof GatewayControlHelloSchema>;\nexport type GatewayControlHelloResponse = z.infer<typeof GatewayControlHelloResponseSchema>;\nexport type GatewayControlControllerToGatewayEvents = ControlSessionControllerToPeerEvents<\n\tGatewayControlRpcMessage,\n\tGatewayControlHello,\n\tGatewayControlHelloResponse\n>;\nexport type GatewayControlGatewayToControllerEvents =\n\tControlSessionPeerToControllerEvents<GatewayControlRpcMessage>;\nexport type GatewayControlCallerContextRef = z.infer<typeof GatewayControlCallerContextRefSchema>;\nexport type GatewayControlCallerContextProof = z.infer<\n\ttypeof GatewayControlCallerContextProofSchema\n>;\nexport type GatewayControlCallerContextAgentAuthority = z.infer<\n\ttypeof GatewayControlCallerContextAgentAuthoritySchema\n>;\nexport type GatewayControlCallerContextRegisterPayload = z.infer<\n\ttypeof GatewayControlCallerContextRegisterPayloadSchema\n>;\nexport type GatewayControlLeaseCreateIntentPayload = z.infer<\n\ttypeof GatewayControlLeaseCreateIntentPayloadSchema\n>;\nexport type GatewayControlToolVmBindingRequestPayload = z.infer<\n\ttypeof GatewayControlToolVmBindingRequestPayloadSchema\n>;\nexport type GatewayControlToolVmBindingAccessGrant = z.infer<\n\ttypeof GatewayControlToolVmBindingAccessGrantSchema\n>;\nexport type GatewayControlToolVmBindingPublicationAuthority = z.infer<\n\ttypeof GatewayControlToolVmBindingPublicationAuthoritySchema\n>;\nexport type GatewayControlToolVmBindingIdentity = z.infer<\n\ttypeof GatewayControlToolVmBindingIdentitySchema\n>;\nexport type GatewayControlToolVmBindingPublication = z.infer<\n\ttypeof GatewayControlToolVmBindingPublicationSchema\n>;\nexport type GatewayControlToolVmBindingRequestResult = z.infer<\n\ttypeof GatewayControlToolVmBindingRequestResultSchema\n>;\nexport type GatewayControlLeaseIdPayload = z.infer<typeof GatewayControlLeaseIdPayloadSchema>;\nexport type GatewayControlLeaseReacquireIntentPayload = z.infer<\n\ttypeof GatewayControlLeaseReacquireIntentPayloadSchema\n>;\nexport type GatewayControlLeaseRejectionReason = z.infer<\n\ttypeof GatewayControlLeaseRejectionReasonSchema\n>;\nexport type GatewayControlLeaseStaleEvidence = z.infer<\n\ttypeof GatewayControlLeaseStaleEvidenceSchema\n>;\nexport type GatewayControlLeaseSnapshot = z.infer<typeof GatewayControlLeaseSnapshotSchema>;\nexport type GatewayControlPrivateLeaseSnapshot = z.infer<\n\ttypeof GatewayControlPrivateLeaseSnapshotSchema\n>;\nexport type GatewayControlLeaseUseEndPayload = z.infer<\n\ttypeof GatewayControlLeaseUseEndPayloadSchema\n>;\nexport type GatewayControlLeaseUseHeartbeatPayload = z.infer<\n\ttypeof GatewayControlLeaseUseHeartbeatPayloadSchema\n>;\nexport type GatewayControlLeaseUseSnapshot = z.infer<typeof GatewayControlLeaseUseSnapshotSchema>;\nexport type GatewayControlLeaseUseStartPayload = z.infer<\n\ttypeof GatewayControlLeaseUseStartPayloadSchema\n>;\nexport type GatewayControlProviderRuntimeHealth = z.infer<\n\ttypeof GatewayControlProviderRuntimeHealthSchema\n>;\nexport type GatewayControlHeartbeatPayload = z.infer<typeof GatewayControlHeartbeatPayloadSchema>;\nexport type GatewayControlHealthEventPayload = z.infer<\n\ttypeof GatewayControlHealthEventPayloadSchema\n>;\nexport type GatewayControlRuntimeStatusPayload = z.infer<\n\ttypeof GatewayControlRuntimeStatusPayloadSchema\n>;\nexport type GatewayControlControllerHostProbeResult = z.infer<\n\ttypeof GatewayControlControllerHostProbeResultSchema\n>;\nexport type GatewayControlToolPortalControllerHostActionPayload = z.infer<\n\ttypeof GatewayControlToolPortalControllerHostActionPayloadSchema\n>;\nexport type GatewayControlToolPortalControllerHostActionResult = z.infer<\n\ttypeof GatewayControlToolPortalControllerHostActionResultSchema\n>;\nexport type GatewayControlWorkspaceGitPushResult = z.infer<\n\ttypeof GatewayControlWorkspaceGitPushResultSchema\n>;\n\nexport function buildGatewayControlJsonSchemas(): Readonly<Record<string, unknown>> {\n\treturn {\n\t\tdomain: z.toJSONSchema(GatewayControlDomainSchema, {\n\t\t\tio: 'input',\n\t\t\tunrepresentable: 'any',\n\t\t}),\n\t\thello: z.toJSONSchema(GatewayControlHelloSchema, {\n\t\t\tio: 'input',\n\t\t\tunrepresentable: 'any',\n\t\t}),\n\t\thelloResponse: z.toJSONSchema(GatewayControlHelloResponseSchema, {\n\t\t\tio: 'input',\n\t\t\tunrepresentable: 'any',\n\t\t}),\n\t\tmessage: z.toJSONSchema(GatewayControlRpcMessageSchema, {\n\t\t\tio: 'input',\n\t\t\tunrepresentable: 'any',\n\t\t}),\n\t\toperation: z.toJSONSchema(GatewayControlRpcOperationSchema, {\n\t\t\tio: 'input',\n\t\t\tunrepresentable: 'any',\n\t\t}),\n\t};\n}\n\nexport function assertGatewayControlDomainRegistered(): 'gateway_control' {\n\treturn KnownControlDomainSchema.extract(['gateway_control']).parse('gateway_control');\n}\n"],"mappings":"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"}