@evalops/maestro 0.10.46 → 0.10.47

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.
Files changed (101) hide show
  1. package/dist/agent/providers/openai-codex-session.js +1 -1
  2. package/dist/agent/providers/openai-codex-session.js.map +1 -1
  3. package/dist/app-server/in-process-client.d.ts +2 -2
  4. package/dist/app-server/in-process-client.js.map +1 -1
  5. package/dist/app-server/protocol-modes-api.js +1 -1
  6. package/dist/app-server/protocol-modes-api.js.map +1 -1
  7. package/dist/app-server/sandbox-check-api.d.ts +21 -0
  8. package/dist/app-server/{sandbox-proof-api.d.ts.map → sandbox-check-api.d.ts.map} +1 -1
  9. package/dist/app-server/{sandbox-proof-api.js → sandbox-check-api.js} +18 -18
  10. package/dist/app-server/{sandbox-proof-api.js.map → sandbox-check-api.js.map} +1 -1
  11. package/dist/app-server/session-api.d.ts +5 -5
  12. package/dist/app-server/session-api.js +18 -18
  13. package/dist/app-server/session-api.js.map +1 -1
  14. package/dist/audit/logger.d.ts +1 -1
  15. package/dist/cli/args.js +1 -1
  16. package/dist/cli/args.js.map +1 -1
  17. package/dist/cli/commands/codex.js +30 -3
  18. package/dist/cli/commands/codex.js.map +1 -1
  19. package/dist/cli-tui/auth-state.d.ts +7 -0
  20. package/dist/cli-tui/auth-state.d.ts.map +1 -0
  21. package/dist/cli-tui/auth-state.js +46 -0
  22. package/dist/cli-tui/auth-state.js.map +1 -0
  23. package/dist/cli-tui/commands/command-catalog.d.ts.map +1 -1
  24. package/dist/cli-tui/commands/command-catalog.js +6 -1
  25. package/dist/cli-tui/commands/command-catalog.js.map +1 -1
  26. package/dist/cli-tui/commands/command-suite-handlers.d.ts +2 -5
  27. package/dist/cli-tui/commands/command-suite-handlers.d.ts.map +1 -1
  28. package/dist/cli-tui/commands/command-suite-handlers.js.map +1 -1
  29. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts +6 -5
  30. package/dist/cli-tui/commands/subcommands/auth-commands.d.ts.map +1 -1
  31. package/dist/cli-tui/commands/subcommands/auth-commands.js +2 -2
  32. package/dist/cli-tui/commands/subcommands/auth-commands.js.map +1 -1
  33. package/dist/cli-tui/oauth/oauth-flow-controller.d.ts.map +1 -1
  34. package/dist/cli-tui/oauth/oauth-flow-controller.js +24 -11
  35. package/dist/cli-tui/oauth/oauth-flow-controller.js.map +1 -1
  36. package/dist/cli-tui/selectors/oauth-selector-view.d.ts +1 -0
  37. package/dist/cli-tui/selectors/oauth-selector-view.d.ts.map +1 -1
  38. package/dist/cli-tui/selectors/oauth-selector-view.js +1 -1
  39. package/dist/cli-tui/selectors/oauth-selector-view.js.map +1 -1
  40. package/dist/cli-tui/selectors/oauth-selector.d.ts +2 -1
  41. package/dist/cli-tui/selectors/oauth-selector.d.ts.map +1 -1
  42. package/dist/cli-tui/selectors/oauth-selector.js +25 -2
  43. package/dist/cli-tui/selectors/oauth-selector.js.map +1 -1
  44. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts +2 -5
  45. package/dist/cli-tui/tui-renderer/command-suite-wiring.d.ts.map +1 -1
  46. package/dist/cli-tui/tui-renderer/command-suite-wiring.js.map +1 -1
  47. package/dist/cli-tui/tui-renderer.d.ts +0 -4
  48. package/dist/cli-tui/tui-renderer.d.ts.map +1 -1
  49. package/dist/cli-tui/tui-renderer.js +3 -28
  50. package/dist/cli-tui/tui-renderer.js.map +1 -1
  51. package/dist/cli.js +896 -497
  52. package/dist/codex/app-server-client.d.ts +8 -2
  53. package/dist/codex/app-server-client.d.ts.map +1 -1
  54. package/dist/codex/app-server-client.js +18 -4
  55. package/dist/codex/app-server-client.js.map +1 -1
  56. package/dist/codex/auth.d.ts +4 -0
  57. package/dist/codex/auth.d.ts.map +1 -0
  58. package/dist/codex/auth.js +103 -0
  59. package/dist/codex/auth.js.map +1 -0
  60. package/dist/db/schema.d.ts +1 -1
  61. package/dist/evalops/agent-bootstrap.js +2 -2
  62. package/dist/evalops/agent-bootstrap.js.map +1 -1
  63. package/dist/main.d.ts.map +1 -1
  64. package/dist/main.js +5 -1
  65. package/dist/main.js.map +1 -1
  66. package/dist/models/config-loader.d.ts +5 -5
  67. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts +19 -19
  68. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.d.ts.map +1 -1
  69. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js +12 -13
  70. package/dist/node_modules/@evalops/contracts/dist/maestro-app-server.js.map +1 -1
  71. package/dist/node_modules/@evalops/contracts/package.json +1 -1
  72. package/dist/node_modules/@evalops/tui/package.json +1 -1
  73. package/dist/oauth/index.d.ts +1 -0
  74. package/dist/oauth/index.d.ts.map +1 -1
  75. package/dist/oauth/index.js +42 -2
  76. package/dist/oauth/index.js.map +1 -1
  77. package/dist/server/app-context.d.ts +2 -0
  78. package/dist/server/app-context.d.ts.map +1 -1
  79. package/dist/server/app-context.js.map +1 -1
  80. package/dist/server/handlers/headless-sessions.d.ts.map +1 -1
  81. package/dist/server/handlers/headless-sessions.js +44 -10
  82. package/dist/server/handlers/headless-sessions.js.map +1 -1
  83. package/dist/server/handlers/hosted-runner-identity.d.ts +2 -0
  84. package/dist/server/handlers/hosted-runner-identity.d.ts.map +1 -1
  85. package/dist/server/handlers/hosted-runner-identity.js +2 -0
  86. package/dist/server/handlers/hosted-runner-identity.js.map +1 -1
  87. package/dist/server/handlers/platform-a2a-push.d.ts.map +1 -1
  88. package/dist/server/handlers/platform-a2a-push.js +113 -2
  89. package/dist/server/handlers/platform-a2a-push.js.map +1 -1
  90. package/dist/server/headless-in-process-host.d.ts.map +1 -1
  91. package/dist/server/headless-in-process-host.js +1 -1
  92. package/dist/server/headless-in-process-host.js.map +1 -1
  93. package/dist/server/headless-runtime-service.d.ts +9 -2
  94. package/dist/server/headless-runtime-service.d.ts.map +1 -1
  95. package/dist/server/headless-runtime-service.js +54 -15
  96. package/dist/server/headless-runtime-service.js.map +1 -1
  97. package/dist/tools/background/task-runtime.js +1 -1
  98. package/dist/tools/background/task-runtime.js.map +1 -1
  99. package/dist/version.json +2 -2
  100. package/package.json +1 -1
  101. package/dist/app-server/sandbox-proof-api.d.ts +0 -21
@@ -1 +1 @@
1
- {"version":3,"file":"platform-a2a-push.js","sourceRoot":"","sources":["../../../src/server/handlers/platform-a2a-push.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IncomingMessage, ServerResponse } from \"node:http\";\nimport type { HostedRunnerContext, WebServerContext } from \"../app-context.js\";\nimport {\n\tApiError,\n\tgetRequestHeader,\n\treadJsonBody,\n\tsecureCompare,\n\tsendJson,\n} from \"../server-utils.js\";\n\nexport const PLATFORM_A2A_PUSH_CALLBACK_PATH = \"/api/platform/a2a/push\";\n\nconst CALLBACK_TOKEN_ENV_VARS = [\n\t\"MAESTRO_PLATFORM_A2A_CALLBACK_TOKEN\",\n\t\"MAESTRO_A2A_CALLBACK_TOKEN\",\n] as const;\n\nexport function platformA2APushAuthBoundaryExemptPaths(): readonly string[] {\n\treturn callbackToken() ? [PLATFORM_A2A_PUSH_CALLBACK_PATH] : [];\n}\n\ntype JsonObject = Record<string, unknown>;\n\ninterface PlatformA2APushSnapshot {\n\tkind: \"statusUpdate\" | \"artifactUpdate\" | \"task\" | \"message\";\n\ttaskId?: string;\n\tcontextId?: string;\n\tworkspaceId?: string;\n\torganizationId?: string;\n\ttenantId?: string;\n\tstate?: string;\n\tfinal?: boolean;\n\treceivedAt: string;\n\truntimeEventId?: string;\n\truntimeEventType?: string;\n\ttraceparent?: string;\n\ttracestate?: string;\n\tagentId?: string;\n\tactorId?: string;\n}\n\ntype PlatformA2APushContext = Pick<\n\tPlatformA2APushSnapshot,\n\t| \"traceparent\"\n\t| \"tracestate\"\n\t| \"organizationId\"\n\t| \"workspaceId\"\n\t| \"agentId\"\n\t| \"actorId\"\n>;\n\nexport async function handlePlatformA2APushCallback(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcontext: WebServerContext,\n): Promise<void> {\n\tif (req.method !== \"POST\") {\n\t\tthrow new ApiError(405, \"Method not allowed\");\n\t}\n\tassertCallbackToken(req);\n\tconst body = await readJsonBody<unknown>(req);\n\tconst snapshot = platformA2APushSnapshot(body, req);\n\tif (!snapshot) {\n\t\tthrow new ApiError(400, \"Invalid A2A push notification payload\");\n\t}\n\tconst hostedRunner = context.hostedRunner;\n\tassertHostedRunnerA2APushBoundary(hostedRunner, snapshot);\n\tif (hostedRunner) {\n\t\trecordHostedRunnerA2APush(hostedRunner, snapshot);\n\t}\n\tsendJson(res, 202, { accepted: true, ...snapshot }, context.corsHeaders, req);\n}\n\nfunction assertCallbackToken(req: IncomingMessage): void {\n\tconst expected = callbackToken();\n\tif (!expected) {\n\t\treturn;\n\t}\n\tconst provided = getRequestHeader(req, \"x-a2a-notification-token\");\n\tif (!provided || !secureCompare(provided, expected)) {\n\t\tthrow new ApiError(401, \"Invalid A2A notification token\");\n\t}\n}\n\nfunction platformA2APushSnapshot(\n\tpayload: unknown,\n\treq: IncomingMessage,\n): PlatformA2APushSnapshot | null {\n\tif (!isJsonObject(payload)) {\n\t\treturn null;\n\t}\n\tconst requestContext = platformA2APushRequestContext(req);\n\tif (isJsonObject(payload.statusUpdate)) {\n\t\tconst taskId = stringField(payload.statusUpdate, \"taskId\");\n\t\tif (!taskId) {\n\t\t\treturn null;\n\t\t}\n\t\treturn withPlatformA2APushContext(\n\t\t\t{\n\t\t\t\tkind: \"statusUpdate\",\n\t\t\t\ttaskId,\n\t\t\t\tcontextId: stringField(payload.statusUpdate, \"contextId\"),\n\t\t\t\t...ownershipFields(payload, payload.statusUpdate),\n\t\t\t\tstate: statusState(payload.statusUpdate),\n\t\t\t\tfinal: booleanField(payload.statusUpdate, \"final\"),\n\t\t\t\treceivedAt: new Date().toISOString(),\n\t\t\t\truntimeEventId: metadataString(payload.statusUpdate, \"runtimeEventId\"),\n\t\t\t\truntimeEventType: metadataString(\n\t\t\t\t\tpayload.statusUpdate,\n\t\t\t\t\t\"runtimeEventType\",\n\t\t\t\t),\n\t\t\t},\n\t\t\tpayload.statusUpdate,\n\t\t\trequestContext,\n\t\t);\n\t}\n\tif (isJsonObject(payload.task)) {\n\t\tconst taskId = stringField(payload.task, \"id\");\n\t\tif (!taskId) {\n\t\t\treturn null;\n\t\t}\n\t\treturn withPlatformA2APushContext(\n\t\t\t{\n\t\t\t\tkind: \"task\",\n\t\t\t\ttaskId,\n\t\t\t\tcontextId: stringField(payload.task, \"contextId\"),\n\t\t\t\t...ownershipFields(payload, payload.task),\n\t\t\t\tstate: statusState(payload.task),\n\t\t\t\treceivedAt: new Date().toISOString(),\n\t\t\t},\n\t\t\tpayload.task,\n\t\t\trequestContext,\n\t\t);\n\t}\n\tif (isJsonObject(payload.artifactUpdate)) {\n\t\tconst taskId = stringField(payload.artifactUpdate, \"taskId\");\n\t\tif (!taskId) {\n\t\t\treturn null;\n\t\t}\n\t\treturn withPlatformA2APushContext(\n\t\t\t{\n\t\t\t\tkind: \"artifactUpdate\",\n\t\t\t\ttaskId,\n\t\t\t\tcontextId: stringField(payload.artifactUpdate, \"contextId\"),\n\t\t\t\t...ownershipFields(payload, payload.artifactUpdate),\n\t\t\t\treceivedAt: new Date().toISOString(),\n\t\t\t},\n\t\t\tpayload.artifactUpdate,\n\t\t\trequestContext,\n\t\t);\n\t}\n\tif (isJsonObject(payload.message)) {\n\t\tconst taskId = stringField(payload.message, \"taskId\");\n\t\tif (!taskId) {\n\t\t\treturn null;\n\t\t}\n\t\treturn withPlatformA2APushContext(\n\t\t\t{\n\t\t\t\tkind: \"message\",\n\t\t\t\ttaskId,\n\t\t\t\tcontextId: stringField(payload.message, \"contextId\"),\n\t\t\t\t...ownershipFields(payload, payload.message),\n\t\t\t\treceivedAt: new Date().toISOString(),\n\t\t\t},\n\t\t\tpayload.message,\n\t\t\trequestContext,\n\t\t);\n\t}\n\treturn null;\n}\n\nfunction withPlatformA2APushContext(\n\tsnapshot: PlatformA2APushSnapshot,\n\tpayload: JsonObject,\n\trequestContext: PlatformA2APushContext,\n): PlatformA2APushSnapshot {\n\tconst metadataContext = platformA2APushMetadataContext(payload);\n\treturn {\n\t\t...snapshot,\n\t\t...metadataContext,\n\t\t...requestContext,\n\t\torganizationId:\n\t\t\tsnapshot.organizationId ??\n\t\t\tmetadataContext.organizationId ??\n\t\t\trequestContext.organizationId,\n\t\tworkspaceId:\n\t\t\tsnapshot.workspaceId ??\n\t\t\tmetadataContext.workspaceId ??\n\t\t\trequestContext.workspaceId,\n\t};\n}\n\nfunction platformA2APushRequestContext(\n\treq: IncomingMessage,\n): PlatformA2APushContext {\n\treturn compactPlatformA2APushContext({\n\t\ttraceparent: getRequestHeader(req, \"traceparent\") ?? undefined,\n\t\ttracestate: getRequestHeader(req, \"tracestate\") ?? undefined,\n\t\torganizationId:\n\t\t\tgetRequestHeader(req, \"x-organization-id\", \"x-evalops-organization-id\") ??\n\t\t\tundefined,\n\t\tworkspaceId:\n\t\t\tgetRequestHeader(req, \"x-workspace-id\", \"x-evalops-workspace-id\") ??\n\t\t\tundefined,\n\t\tagentId:\n\t\t\tgetRequestHeader(req, \"x-evalops-agent-id\", \"x-maestro-agent-id\") ??\n\t\t\tundefined,\n\t\tactorId:\n\t\t\tgetRequestHeader(req, \"x-evalops-actor-id\", \"x-evalops-user-id\") ??\n\t\t\tundefined,\n\t});\n}\n\nfunction platformA2APushMetadataContext(\n\tvalue: JsonObject,\n): PlatformA2APushContext {\n\tconst metadata = isJsonObject(value.metadata) ? value.metadata : undefined;\n\tif (!metadata) {\n\t\treturn {};\n\t}\n\treturn compactPlatformA2APushContext({\n\t\ttraceparent:\n\t\t\tstringField(metadata, \"traceparent\") ??\n\t\t\tstringField(metadata, \"traceParent\") ??\n\t\t\tstringField(metadata, \"trace_parent\"),\n\t\ttracestate:\n\t\t\tstringField(metadata, \"tracestate\") ??\n\t\t\tstringField(metadata, \"traceState\") ??\n\t\t\tstringField(metadata, \"trace_state\"),\n\t\torganizationId:\n\t\t\tstringField(metadata, \"organizationId\") ??\n\t\t\tstringField(metadata, \"organization_id\"),\n\t\tworkspaceId:\n\t\t\tstringField(metadata, \"workspaceId\") ??\n\t\t\tstringField(metadata, \"workspace_id\"),\n\t\tagentId:\n\t\t\tstringField(metadata, \"agentId\") ?? stringField(metadata, \"agent_id\"),\n\t\tactorId:\n\t\t\tstringField(metadata, \"actorId\") ?? stringField(metadata, \"actor_id\"),\n\t});\n}\n\nfunction compactPlatformA2APushContext(\n\tcontext: PlatformA2APushContext,\n): PlatformA2APushContext {\n\treturn Object.fromEntries(\n\t\tObject.entries(context).filter(\n\t\t\t([, value]) => typeof value === \"string\" && value.length > 0,\n\t\t),\n\t) as PlatformA2APushContext;\n}\n\nfunction assertHostedRunnerA2APushBoundary(\n\thostedRunner: HostedRunnerContext | undefined,\n\tsnapshot: PlatformA2APushSnapshot,\n): void {\n\tif (\n\t\thostedRunner?.a2aTaskId &&\n\t\tsnapshot.taskId &&\n\t\thostedRunner.a2aTaskId !== snapshot.taskId\n\t) {\n\t\tthrow new ApiError(404, \"A2A task not found\");\n\t}\n\tif (!hostedRunner?.workspaceId) {\n\t\treturn;\n\t}\n\n\tconst workspaceMarker = snapshot.workspaceId;\n\tif (workspaceMarker) {\n\t\tif (!sameIdentifier(workspaceMarker, hostedRunner.workspaceId)) {\n\t\t\tthrow new ApiError(403, \"A2A push notification workspace mismatch\");\n\t\t}\n\t\treturn;\n\t}\n\n\tif (!hostedRunner.a2aTaskId) {\n\t\tthrow new ApiError(\n\t\t\t403,\n\t\t\t\"A2A push notification is missing workspace metadata\",\n\t\t);\n\t}\n}\n\nfunction recordHostedRunnerA2APush(\n\thostedRunner: HostedRunnerContext,\n\tsnapshot: PlatformA2APushSnapshot,\n): void {\n\thostedRunner.lastPlatformA2APush = snapshot;\n\tif (snapshot.taskId && !hostedRunner.a2aTaskId) {\n\t\thostedRunner.a2aTaskId = snapshot.taskId;\n\t}\n}\n\nfunction statusState(value: JsonObject): string | undefined {\n\tconst status = isJsonObject(value.status) ? value.status : undefined;\n\treturn status ? stringField(status, \"state\") : undefined;\n}\n\nfunction metadataString(value: JsonObject, key: string): string | undefined {\n\tconst metadata = isJsonObject(value.metadata) ? value.metadata : undefined;\n\treturn metadata ? stringField(metadata, key) : undefined;\n}\n\nfunction ownershipFields(\n\tpayload: JsonObject,\n\tvalue: JsonObject,\n): Pick<\n\tPlatformA2APushSnapshot,\n\t\"workspaceId\" | \"organizationId\" | \"tenantId\"\n> {\n\treturn {\n\t\t...optionalField(\n\t\t\t\"workspaceId\",\n\t\t\townershipString(payload, value, [\"workspaceId\", \"workspace_id\"]),\n\t\t),\n\t\t...optionalField(\n\t\t\t\"organizationId\",\n\t\t\townershipString(payload, value, [\n\t\t\t\t\"organizationId\",\n\t\t\t\t\"organization_id\",\n\t\t\t\t\"orgId\",\n\t\t\t\t\"org_id\",\n\t\t\t]),\n\t\t),\n\t\t...optionalField(\n\t\t\t\"tenantId\",\n\t\t\townershipString(payload, value, [\"tenantId\", \"tenant_id\", \"tenant\"]),\n\t\t),\n\t};\n}\n\nfunction ownershipString(\n\tpayload: JsonObject,\n\tvalue: JsonObject,\n\tkeys: readonly string[],\n): string | undefined {\n\tfor (const source of ownershipSources(payload, value)) {\n\t\tfor (const key of keys) {\n\t\t\tconst direct = stringField(source, key);\n\t\t\tif (direct) {\n\t\t\t\treturn direct;\n\t\t\t}\n\t\t\tconst metadata = metadataString(source, key);\n\t\t\tif (metadata) {\n\t\t\t\treturn metadata;\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction ownershipSources(\n\tpayload: JsonObject,\n\tvalue: JsonObject,\n): JsonObject[] {\n\tconst sources = [value, payload];\n\tconst status = isJsonObject(value.status) ? value.status : undefined;\n\tif (status) {\n\t\tsources.push(status);\n\t\tif (isJsonObject(status.message)) {\n\t\t\tsources.push(status.message);\n\t\t}\n\t}\n\tif (isJsonObject(value.artifact)) {\n\t\tsources.push(value.artifact);\n\t}\n\treturn sources;\n}\n\nfunction optionalField<K extends string>(\n\tkey: K,\n\tvalue: string | undefined,\n): Partial<Record<K, string>> {\n\treturn value ? ({ [key]: value } as Partial<Record<K, string>>) : {};\n}\n\nfunction sameIdentifier(left: string, right: string): boolean {\n\treturn left.trim().toLowerCase() === right.trim().toLowerCase();\n}\n\nfunction stringField(value: JsonObject, key: string): string | undefined {\n\tconst field = value[key];\n\treturn typeof field === \"string\" && field.trim().length > 0\n\t\t? field.trim()\n\t\t: undefined;\n}\n\nfunction booleanField(value: JsonObject, key: string): boolean | undefined {\n\tconst field = value[key];\n\treturn typeof field === \"boolean\" ? field : undefined;\n}\n\nfunction isJsonObject(value: unknown): value is JsonObject {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction callbackToken(): string | undefined {\n\tfor (const name of CALLBACK_TOKEN_ENV_VARS) {\n\t\tconst value = process.env[name]?.trim();\n\t\tif (value) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n"]}
1
+ {"version":3,"file":"platform-a2a-push.js","sourceRoot":"","sources":["../../../src/server/handlers/platform-a2a-push.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IncomingMessage, ServerResponse } from \"node:http\";\nimport type { HostedRunnerContext, WebServerContext } from \"../app-context.js\";\nimport {\n\tApiError,\n\tgetRequestHeader,\n\treadJsonBody,\n\tsecureCompare,\n\tsendJson,\n} from \"../server-utils.js\";\n\nexport const PLATFORM_A2A_PUSH_CALLBACK_PATH = \"/api/platform/a2a/push\";\n\nconst CALLBACK_TOKEN_ENV_VARS = [\n\t\"MAESTRO_PLATFORM_A2A_CALLBACK_TOKEN\",\n\t\"MAESTRO_A2A_CALLBACK_TOKEN\",\n] as const;\n\nexport function platformA2APushAuthBoundaryExemptPaths(): readonly string[] {\n\treturn callbackToken() ? [PLATFORM_A2A_PUSH_CALLBACK_PATH] : [];\n}\n\ntype JsonObject = Record<string, unknown>;\n\ninterface PlatformA2APushSnapshot {\n\tkind: \"statusUpdate\" | \"artifactUpdate\" | \"task\" | \"message\";\n\ttaskId?: string;\n\tmessageId?: string;\n\tmessageIds?: string[];\n\tcontextId?: string;\n\tworkspaceId?: string;\n\torganizationId?: string;\n\ttenantId?: string;\n\tstate?: string;\n\tfinal?: boolean;\n\treceivedAt: string;\n\truntimeEventId?: string;\n\truntimeEventType?: string;\n\ttraceparent?: string;\n\ttracestate?: string;\n\tagentId?: string;\n\tactorId?: string;\n}\n\ntype PlatformA2APushContext = Pick<\n\tPlatformA2APushSnapshot,\n\t| \"traceparent\"\n\t| \"tracestate\"\n\t| \"organizationId\"\n\t| \"workspaceId\"\n\t| \"agentId\"\n\t| \"actorId\"\n>;\n\nexport async function handlePlatformA2APushCallback(\n\treq: IncomingMessage,\n\tres: ServerResponse,\n\tcontext: WebServerContext,\n): Promise<void> {\n\tif (req.method !== \"POST\") {\n\t\tthrow new ApiError(405, \"Method not allowed\");\n\t}\n\tassertCallbackToken(req);\n\tconst body = await readJsonBody<unknown>(req);\n\tconst snapshot = platformA2APushSnapshot(body, req);\n\tif (!snapshot) {\n\t\tthrow new ApiError(400, \"Invalid A2A push notification payload\");\n\t}\n\tconst hostedRunner = context.hostedRunner;\n\tassertHostedRunnerA2APushBoundary(hostedRunner, snapshot);\n\tif (hostedRunner) {\n\t\trecordHostedRunnerA2APush(hostedRunner, snapshot);\n\t}\n\tsendJson(res, 202, { accepted: true, ...snapshot }, context.corsHeaders, req);\n}\n\nfunction assertCallbackToken(req: IncomingMessage): void {\n\tconst expected = callbackToken();\n\tif (!expected) {\n\t\treturn;\n\t}\n\tconst provided = getRequestHeader(req, \"x-a2a-notification-token\");\n\tif (!provided || !secureCompare(provided, expected)) {\n\t\tthrow new ApiError(401, \"Invalid A2A notification token\");\n\t}\n}\n\nfunction platformA2APushSnapshot(\n\tpayload: unknown,\n\treq: IncomingMessage,\n): PlatformA2APushSnapshot | null {\n\tif (!isJsonObject(payload)) {\n\t\treturn null;\n\t}\n\tconst requestContext = platformA2APushRequestContext(req);\n\tif (isJsonObject(payload.statusUpdate)) {\n\t\tconst taskId = stringField(payload.statusUpdate, \"taskId\");\n\t\tif (!taskId) {\n\t\t\treturn null;\n\t\t}\n\t\treturn withPlatformA2APushContext(\n\t\t\t{\n\t\t\t\tkind: \"statusUpdate\",\n\t\t\t\ttaskId,\n\t\t\t\t...messageIdFields(payload, payload.statusUpdate),\n\t\t\t\tcontextId: stringField(payload.statusUpdate, \"contextId\"),\n\t\t\t\t...ownershipFields(payload, payload.statusUpdate),\n\t\t\t\tstate: statusState(payload.statusUpdate),\n\t\t\t\tfinal: booleanField(payload.statusUpdate, \"final\"),\n\t\t\t\treceivedAt: new Date().toISOString(),\n\t\t\t\truntimeEventId: metadataString(payload.statusUpdate, \"runtimeEventId\"),\n\t\t\t\truntimeEventType: metadataString(\n\t\t\t\t\tpayload.statusUpdate,\n\t\t\t\t\t\"runtimeEventType\",\n\t\t\t\t),\n\t\t\t},\n\t\t\tpayload.statusUpdate,\n\t\t\trequestContext,\n\t\t);\n\t}\n\tif (isJsonObject(payload.task)) {\n\t\tconst taskId = stringField(payload.task, \"id\");\n\t\tif (!taskId) {\n\t\t\treturn null;\n\t\t}\n\t\treturn withPlatformA2APushContext(\n\t\t\t{\n\t\t\t\tkind: \"task\",\n\t\t\t\ttaskId,\n\t\t\t\t...messageIdFields(payload, payload.task),\n\t\t\t\tcontextId: stringField(payload.task, \"contextId\"),\n\t\t\t\t...ownershipFields(payload, payload.task),\n\t\t\t\tstate: statusState(payload.task),\n\t\t\t\treceivedAt: new Date().toISOString(),\n\t\t\t},\n\t\t\tpayload.task,\n\t\t\trequestContext,\n\t\t);\n\t}\n\tif (isJsonObject(payload.artifactUpdate)) {\n\t\tconst taskId = stringField(payload.artifactUpdate, \"taskId\");\n\t\tif (!taskId) {\n\t\t\treturn null;\n\t\t}\n\t\treturn withPlatformA2APushContext(\n\t\t\t{\n\t\t\t\tkind: \"artifactUpdate\",\n\t\t\t\ttaskId,\n\t\t\t\t...messageIdFields(payload, payload.artifactUpdate),\n\t\t\t\tcontextId: stringField(payload.artifactUpdate, \"contextId\"),\n\t\t\t\t...ownershipFields(payload, payload.artifactUpdate),\n\t\t\t\treceivedAt: new Date().toISOString(),\n\t\t\t},\n\t\t\tpayload.artifactUpdate,\n\t\t\trequestContext,\n\t\t);\n\t}\n\tif (isJsonObject(payload.message)) {\n\t\tconst taskId = stringField(payload.message, \"taskId\");\n\t\tconst messageFields = messageIdFields(payload, payload.message);\n\t\tif (!messageFields.messageId) {\n\t\t\treturn null;\n\t\t}\n\t\treturn withPlatformA2APushContext(\n\t\t\t{\n\t\t\t\tkind: \"message\",\n\t\t\t\t...optionalField(\"taskId\", taskId),\n\t\t\t\t...messageFields,\n\t\t\t\tcontextId: stringField(payload.message, \"contextId\"),\n\t\t\t\t...ownershipFields(payload, payload.message),\n\t\t\t\treceivedAt: new Date().toISOString(),\n\t\t\t},\n\t\t\tpayload.message,\n\t\t\trequestContext,\n\t\t);\n\t}\n\treturn null;\n}\n\nfunction withPlatformA2APushContext(\n\tsnapshot: PlatformA2APushSnapshot,\n\tpayload: JsonObject,\n\trequestContext: PlatformA2APushContext,\n): PlatformA2APushSnapshot {\n\tconst metadataContext = platformA2APushMetadataContext(payload);\n\treturn {\n\t\t...snapshot,\n\t\t...metadataContext,\n\t\t...requestContext,\n\t\torganizationId:\n\t\t\tsnapshot.organizationId ??\n\t\t\tmetadataContext.organizationId ??\n\t\t\trequestContext.organizationId,\n\t\tworkspaceId:\n\t\t\tsnapshot.workspaceId ??\n\t\t\tmetadataContext.workspaceId ??\n\t\t\trequestContext.workspaceId,\n\t};\n}\n\nfunction platformA2APushRequestContext(\n\treq: IncomingMessage,\n): PlatformA2APushContext {\n\treturn compactPlatformA2APushContext({\n\t\ttraceparent: getRequestHeader(req, \"traceparent\") ?? undefined,\n\t\ttracestate: getRequestHeader(req, \"tracestate\") ?? undefined,\n\t\torganizationId:\n\t\t\tgetRequestHeader(req, \"x-organization-id\", \"x-evalops-organization-id\") ??\n\t\t\tundefined,\n\t\tworkspaceId:\n\t\t\tgetRequestHeader(req, \"x-workspace-id\", \"x-evalops-workspace-id\") ??\n\t\t\tundefined,\n\t\tagentId:\n\t\t\tgetRequestHeader(req, \"x-evalops-agent-id\", \"x-maestro-agent-id\") ??\n\t\t\tundefined,\n\t\tactorId:\n\t\t\tgetRequestHeader(req, \"x-evalops-actor-id\", \"x-evalops-user-id\") ??\n\t\t\tundefined,\n\t});\n}\n\nfunction platformA2APushMetadataContext(\n\tvalue: JsonObject,\n): PlatformA2APushContext {\n\tconst metadata = isJsonObject(value.metadata) ? value.metadata : undefined;\n\tif (!metadata) {\n\t\treturn {};\n\t}\n\treturn compactPlatformA2APushContext({\n\t\ttraceparent:\n\t\t\tstringField(metadata, \"traceparent\") ??\n\t\t\tstringField(metadata, \"traceParent\") ??\n\t\t\tstringField(metadata, \"trace_parent\"),\n\t\ttracestate:\n\t\t\tstringField(metadata, \"tracestate\") ??\n\t\t\tstringField(metadata, \"traceState\") ??\n\t\t\tstringField(metadata, \"trace_state\"),\n\t\torganizationId:\n\t\t\tstringField(metadata, \"organizationId\") ??\n\t\t\tstringField(metadata, \"organization_id\"),\n\t\tworkspaceId:\n\t\t\tstringField(metadata, \"workspaceId\") ??\n\t\t\tstringField(metadata, \"workspace_id\"),\n\t\tagentId:\n\t\t\tstringField(metadata, \"agentId\") ?? stringField(metadata, \"agent_id\"),\n\t\tactorId:\n\t\t\tstringField(metadata, \"actorId\") ?? stringField(metadata, \"actor_id\"),\n\t});\n}\n\nfunction compactPlatformA2APushContext(\n\tcontext: PlatformA2APushContext,\n): PlatformA2APushContext {\n\treturn Object.fromEntries(\n\t\tObject.entries(context).filter(\n\t\t\t([, value]) => typeof value === \"string\" && value.length > 0,\n\t\t),\n\t) as PlatformA2APushContext;\n}\n\nfunction assertHostedRunnerA2APushBoundary(\n\thostedRunner: HostedRunnerContext | undefined,\n\tsnapshot: PlatformA2APushSnapshot,\n): void {\n\tif (\n\t\thostedRunner?.a2aTaskId &&\n\t\tsnapshot.taskId &&\n\t\thostedRunner.a2aTaskId !== snapshot.taskId\n\t) {\n\t\tthrow new ApiError(404, \"A2A task not found\");\n\t}\n\tif (\n\t\thostedRunner?.a2aMessageId &&\n\t\tsnapshotHasBoundaryMessageIdEvidence(snapshot) &&\n\t\t!snapshotIncludesMessageId(snapshot, hostedRunner.a2aMessageId)\n\t) {\n\t\tthrow new ApiError(404, \"A2A message not found\");\n\t}\n\tif (\n\t\thostedRunner &&\n\t\tsnapshot.kind === \"message\" &&\n\t\t!hostedRunner.a2aMessageId &&\n\t\t!snapshotHasMessageBindingCorrelation(snapshot)\n\t) {\n\t\tthrow new ApiError(403, \"A2A message push is missing correlation metadata\");\n\t}\n\tif (!hostedRunner?.workspaceId) {\n\t\treturn;\n\t}\n\n\tconst workspaceMarker = snapshot.workspaceId;\n\tif (workspaceMarker) {\n\t\tif (!sameIdentifier(workspaceMarker, hostedRunner.workspaceId)) {\n\t\t\tthrow new ApiError(403, \"A2A push notification workspace mismatch\");\n\t\t}\n\t\treturn;\n\t}\n\n\tif (!hostedRunner.a2aTaskId) {\n\t\tthrow new ApiError(\n\t\t\t403,\n\t\t\t\"A2A push notification is missing workspace metadata\",\n\t\t);\n\t}\n}\n\nfunction recordHostedRunnerA2APush(\n\thostedRunner: HostedRunnerContext,\n\tsnapshot: PlatformA2APushSnapshot,\n): void {\n\thostedRunner.lastPlatformA2APush = snapshot;\n\tif (snapshot.taskId && !hostedRunner.a2aTaskId) {\n\t\thostedRunner.a2aTaskId = snapshot.taskId;\n\t}\n\tif (\n\t\tsnapshot.messageId &&\n\t\t!hostedRunner.a2aMessageId &&\n\t\tsnapshot.kind === \"message\" &&\n\t\tsnapshotHasMessageBindingCorrelation(snapshot)\n\t) {\n\t\thostedRunner.a2aMessageId = snapshot.messageId;\n\t}\n}\n\nfunction statusState(value: JsonObject): string | undefined {\n\tconst status = isJsonObject(value.status) ? value.status : undefined;\n\treturn status ? stringField(status, \"state\") : undefined;\n}\n\nfunction metadataString(value: JsonObject, key: string): string | undefined {\n\tconst metadata = isJsonObject(value.metadata) ? value.metadata : undefined;\n\treturn metadata ? stringField(metadata, key) : undefined;\n}\n\nfunction ownershipFields(\n\tpayload: JsonObject,\n\tvalue: JsonObject,\n): Pick<\n\tPlatformA2APushSnapshot,\n\t\"workspaceId\" | \"organizationId\" | \"tenantId\"\n> {\n\treturn {\n\t\t...optionalField(\n\t\t\t\"workspaceId\",\n\t\t\townershipString(payload, value, [\"workspaceId\", \"workspace_id\"]),\n\t\t),\n\t\t...optionalField(\n\t\t\t\"organizationId\",\n\t\t\townershipString(payload, value, [\n\t\t\t\t\"organizationId\",\n\t\t\t\t\"organization_id\",\n\t\t\t\t\"orgId\",\n\t\t\t\t\"org_id\",\n\t\t\t]),\n\t\t),\n\t\t...optionalField(\n\t\t\t\"tenantId\",\n\t\t\townershipString(payload, value, [\"tenantId\", \"tenant_id\", \"tenant\"]),\n\t\t),\n\t};\n}\n\nfunction messageIdFields(\n\tpayload: JsonObject,\n\tvalue: JsonObject,\n): Pick<PlatformA2APushSnapshot, \"messageId\" | \"messageIds\"> {\n\tconst messageIds = messageIdsFromSources(payload, value);\n\treturn {\n\t\t...optionalField(\"messageId\", messageIds[0]),\n\t\t...(messageIds.length > 0 ? { messageIds } : {}),\n\t};\n}\n\nfunction messageIdsFromSources(\n\tpayload: JsonObject,\n\tvalue: JsonObject,\n): string[] {\n\tconst result: string[] = [];\n\tfor (const source of messageIdSources(payload, value)) {\n\t\tpushIdentifierStrings(result, source, [\n\t\t\t\"messageId\",\n\t\t\t\"message_id\",\n\t\t\t\"a2aMessageId\",\n\t\t\t\"a2a_message_id\",\n\t\t]);\n\t\tpushIdentifierArrayStrings(result, source, [\"messageIds\", \"message_ids\"]);\n\t}\n\tconst payloadMessage = isJsonObject(payload.message)\n\t\t? payload.message\n\t\t: undefined;\n\tif (payloadMessage) {\n\t\tpushMessageObjectIdentifier(result, payloadMessage);\n\t}\n\treturn result;\n}\n\nfunction messageIdSources(\n\tpayload: JsonObject,\n\tvalue: JsonObject,\n): JsonObject[] {\n\tconst sources = [value, payload];\n\tif (isJsonObject(value.artifact)) {\n\t\tsources.push(value.artifact);\n\t}\n\treturn sources;\n}\n\nfunction pushMessageObjectIdentifier(\n\ttarget: string[],\n\tmessage: JsonObject,\n): void {\n\tpushUniqueIdentifier(target, stringField(message, \"id\"));\n\tpushIdentifierStrings(target, message, [\n\t\t\"messageId\",\n\t\t\"message_id\",\n\t\t\"a2aMessageId\",\n\t\t\"a2a_message_id\",\n\t]);\n}\n\nfunction pushIdentifierStrings(\n\ttarget: string[],\n\tvalue: JsonObject,\n\tkeys: readonly string[],\n): void {\n\tfor (const key of keys) {\n\t\tpushUniqueIdentifier(target, stringField(value, key));\n\t\tconst metadata = metadataString(value, key);\n\t\tpushUniqueIdentifier(target, metadata);\n\t}\n}\n\nfunction pushIdentifierArrayStrings(\n\ttarget: string[],\n\tvalue: JsonObject,\n\tkeys: readonly string[],\n): void {\n\tfor (const key of keys) {\n\t\tconst direct = value[key];\n\t\tif (Array.isArray(direct)) {\n\t\t\tfor (const entry of direct) {\n\t\t\t\tpushUniqueIdentifier(\n\t\t\t\t\ttarget,\n\t\t\t\t\ttypeof entry === \"string\" ? entry.trim() : undefined,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tconst metadata = isJsonObject(value.metadata)\n\t\t\t? value.metadata[key]\n\t\t\t: undefined;\n\t\tif (Array.isArray(metadata)) {\n\t\t\tfor (const entry of metadata) {\n\t\t\t\tpushUniqueIdentifier(\n\t\t\t\t\ttarget,\n\t\t\t\t\ttypeof entry === \"string\" ? entry.trim() : undefined,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction pushUniqueIdentifier(\n\ttarget: string[],\n\tvalue: string | undefined,\n): void {\n\tif (!value || target.some((entry) => sameMessageIdentifier(entry, value))) {\n\t\treturn;\n\t}\n\ttarget.push(value);\n}\n\nfunction snapshotHasBoundaryMessageIdEvidence(\n\tsnapshot: PlatformA2APushSnapshot,\n): boolean {\n\treturn (\n\t\tsnapshot.kind === \"message\" ||\n\t\t(snapshot.kind === \"task\" && Boolean(snapshot.messageIds?.length))\n\t);\n}\n\nfunction snapshotHasMessageBindingCorrelation(\n\tsnapshot: PlatformA2APushSnapshot,\n): boolean {\n\treturn Boolean(snapshot.taskId || snapshot.workspaceId);\n}\n\nfunction snapshotIncludesMessageId(\n\tsnapshot: PlatformA2APushSnapshot,\n\tmessageId: string,\n): boolean {\n\treturn (\n\t\t(snapshot.messageId\n\t\t\t? sameMessageIdentifier(snapshot.messageId, messageId)\n\t\t\t: false) ||\n\t\t(snapshot.messageIds ?? []).some((candidate) =>\n\t\t\tsameMessageIdentifier(candidate, messageId),\n\t\t)\n\t);\n}\n\nfunction ownershipString(\n\tpayload: JsonObject,\n\tvalue: JsonObject,\n\tkeys: readonly string[],\n): string | undefined {\n\tfor (const source of ownershipSources(payload, value)) {\n\t\tfor (const key of keys) {\n\t\t\tconst direct = stringField(source, key);\n\t\t\tif (direct) {\n\t\t\t\treturn direct;\n\t\t\t}\n\t\t\tconst metadata = metadataString(source, key);\n\t\t\tif (metadata) {\n\t\t\t\treturn metadata;\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction ownershipSources(\n\tpayload: JsonObject,\n\tvalue: JsonObject,\n): JsonObject[] {\n\tconst sources = [value, payload];\n\tconst status = isJsonObject(value.status) ? value.status : undefined;\n\tif (status) {\n\t\tsources.push(status);\n\t\tif (isJsonObject(status.message)) {\n\t\t\tsources.push(status.message);\n\t\t}\n\t}\n\tif (isJsonObject(value.artifact)) {\n\t\tsources.push(value.artifact);\n\t}\n\treturn sources;\n}\n\nfunction optionalField<K extends string>(\n\tkey: K,\n\tvalue: string | undefined,\n): Partial<Record<K, string>> {\n\treturn value ? ({ [key]: value } as Partial<Record<K, string>>) : {};\n}\n\nfunction sameIdentifier(left: string, right: string): boolean {\n\treturn left.trim().toLowerCase() === right.trim().toLowerCase();\n}\n\nfunction sameMessageIdentifier(left: string, right: string): boolean {\n\treturn left.trim() === right.trim();\n}\n\nfunction stringField(value: JsonObject, key: string): string | undefined {\n\tconst field = value[key];\n\treturn typeof field === \"string\" && field.trim().length > 0\n\t\t? field.trim()\n\t\t: undefined;\n}\n\nfunction booleanField(value: JsonObject, key: string): boolean | undefined {\n\tconst field = value[key];\n\treturn typeof field === \"boolean\" ? field : undefined;\n}\n\nfunction isJsonObject(value: unknown): value is JsonObject {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction callbackToken(): string | undefined {\n\tfor (const name of CALLBACK_TOKEN_ENV_VARS) {\n\t\tconst value = process.env[name]?.trim();\n\t\tif (value) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"headless-in-process-host.d.ts","sourceRoot":"","sources":["../../src/server/headless-in-process-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EACX,oBAAoB,EACpB,4BAA4B,EAC5B,uCAAuC,EACvC,gCAAgC,EAChC,sBAAsB,EACtB,uBAAuB,EACvB,6BAA6B,EAC7B,mCAAmC,EACnC,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,sBAAsB,CAAC;CAChC;AAED,MAAM,WAAW,kCAAkC;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,iCAAiC;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,iCAAiC;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mBAAmB,CAAC,EAAE,wBAAwB,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mBAAmB,CAAC,EAAE,wBAAwB,EAAE,CAAC;CACjD;AAED,qBAAa,qBAAqB;IACrB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,sBAAsB;IAE7D,aAAa,CAClB,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC,uBAAuB,CAAC;IAKnC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,uBAAuB;IAIzE,UAAU,CACT,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACZ,6BAA6B,EAAE,GAAG,IAAI;IAIzC,SAAS,CACR,OAAO,EAAE,iCAAiC,GACxC,mCAAmC;IAYtC,YAAY,CACX,OAAO,EAAE,8BAA8B,GACrC,4BAA4B;IAWzB,WAAW,CAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC;IAIb,UAAU,CACf,OAAO,EAAE,kCAAkC,GACzC,OAAO,CAAC,uCAAuC,CAAC;IAUnD,SAAS,CACR,OAAO,EAAE,iCAAiC,GACxC,gCAAgC;IAU7B,IAAI,CACT,OAAO,EAAE,4BAA4B,GACnC,OAAO,CAAC,uBAAuB,CAAC;IAoBnC,OAAO,CAAC,UAAU;CAOlB"}
1
+ {"version":3,"file":"headless-in-process-host.d.ts","sourceRoot":"","sources":["../../src/server/headless-in-process-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,KAAK,EACX,oBAAoB,EACpB,4BAA4B,EAC5B,uCAAuC,EACvC,gCAAgC,EAChC,sBAAsB,EACtB,uBAAuB,EACvB,6BAA6B,EAC7B,mCAAmC,EACnC,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,sBAAsB,CAAC;CAChC;AAED,MAAM,WAAW,kCAAkC;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,iCAAiC;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,iCAAiC;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mBAAmB,CAAC,EAAE,wBAAwB,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,8BAA8B;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mBAAmB,CAAC,EAAE,wBAAwB,EAAE,CAAC;CACjD;AAED,qBAAa,qBAAqB;IACrB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,EAAE,sBAAsB;IAE7D,aAAa,CAClB,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC,uBAAuB,CAAC;IAKnC,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,uBAAuB;IAIzE,UAAU,CACT,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACZ,6BAA6B,EAAE,GAAG,IAAI;IAIzC,SAAS,CACR,OAAO,EAAE,iCAAiC,GACxC,mCAAmC;IAYtC,YAAY,CACX,OAAO,EAAE,8BAA8B,GACrC,4BAA4B;IAWzB,WAAW,CAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC;IAIb,UAAU,CACf,OAAO,EAAE,kCAAkC,GACzC,OAAO,CAAC,uCAAuC,CAAC;IAUnD,SAAS,CACR,OAAO,EAAE,iCAAiC,GACxC,gCAAgC;IAU7B,IAAI,CACT,OAAO,EAAE,4BAA4B,GACnC,OAAO,CAAC,uBAAuB,CAAC;IAqBnC,OAAO,CAAC,UAAU;CAOlB"}
@@ -49,7 +49,7 @@ export class HeadlessInProcessHost {
49
49
  ((options.role ?? "controller") === "controller"
50
50
  ? (snapshot.state.controller_connection_id ?? undefined)
51
51
  : undefined);
52
- runtime.assertCanSend(options.role ?? "controller", options.subscriptionId ?? undefined, controllerConnectionId);
52
+ runtime.assertCanSend(options.role ?? "controller", options.subscriptionId ?? undefined, controllerConnectionId, { allowNotReady: options.message.type === "shutdown" });
53
53
  await runtime.send(options.message, {
54
54
  connectionId: controllerConnectionId,
55
55
  subscriptionId: options.subscriptionId ?? undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"headless-in-process-host.js","sourceRoot":"","sources":["../../src/server/headless-in-process-host.ts"],"names":[],"mappings":"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","sourcesContent":["import type { HeadlessNotificationType } from \"@evalops/contracts\";\nimport type { HeadlessToAgentMessage } from \"../cli/headless-protocol.js\";\nimport type {\n\tEnsureRuntimeOptions,\n\tHeadlessAttachedSubscription,\n\tHeadlessRuntimeConnectionClosedSnapshot,\n\tHeadlessRuntimeHeartbeatSnapshot,\n\tHeadlessRuntimeService,\n\tHeadlessRuntimeSnapshot,\n\tHeadlessRuntimeStreamEnvelope,\n\tHeadlessRuntimeSubscriptionSnapshot,\n} from \"./headless-runtime-service.js\";\n\nexport interface HeadlessInProcessSendOptions {\n\tscopeKey: string;\n\tsessionId: string;\n\trole?: \"viewer\" | \"controller\";\n\tconnectionId?: string | null;\n\tsubscriptionId?: string | null;\n\tmessage: HeadlessToAgentMessage;\n}\n\nexport interface HeadlessInProcessDisconnectOptions {\n\tscopeKey: string;\n\tsessionId: string;\n\tconnectionId?: string | null;\n\tsubscriptionId?: string | null;\n}\n\nexport interface HeadlessInProcessHeartbeatOptions {\n\tscopeKey: string;\n\tsessionId: string;\n\tconnectionId?: string | null;\n\tsubscriptionId?: string | null;\n}\n\nexport interface HeadlessInProcessSubscribeOptions {\n\tscopeKey: string;\n\tsessionId: string;\n\trole?: \"viewer\" | \"controller\";\n\ttakeControl?: boolean;\n\toptOutNotifications?: HeadlessNotificationType[];\n}\n\nexport interface HeadlessInProcessStreamOptions {\n\tscopeKey: string;\n\tsessionId: string;\n\trole?: \"viewer\" | \"controller\";\n\tcursor?: number | null;\n\toptOutNotifications?: HeadlessNotificationType[];\n}\n\nexport class HeadlessInProcessHost {\n\tconstructor(private readonly runtimeService: HeadlessRuntimeService) {}\n\n\tasync ensureSession(\n\t\toptions: EnsureRuntimeOptions,\n\t): Promise<HeadlessRuntimeSnapshot> {\n\t\tconst runtime = await this.runtimeService.ensureRuntime(options);\n\t\treturn runtime.getSnapshot();\n\t}\n\n\tgetSnapshot(scopeKey: string, sessionId: string): HeadlessRuntimeSnapshot {\n\t\treturn this.getRuntime(scopeKey, sessionId).getSnapshot();\n\t}\n\n\treplayFrom(\n\t\tscopeKey: string,\n\t\tsessionId: string,\n\t\tcursor: number,\n\t): HeadlessRuntimeStreamEnvelope[] | null {\n\t\treturn this.getRuntime(scopeKey, sessionId).replayFrom(cursor);\n\t}\n\n\tsubscribe(\n\t\toptions: HeadlessInProcessSubscribeOptions,\n\t): HeadlessRuntimeSubscriptionSnapshot {\n\t\treturn this.getRuntime(\n\t\t\toptions.scopeKey,\n\t\t\toptions.sessionId,\n\t\t).createSubscription({\n\t\t\trole: options.role ?? \"controller\",\n\t\t\texplicit: true,\n\t\t\ttakeControl: options.takeControl,\n\t\t\toptOutNotifications: options.optOutNotifications,\n\t\t});\n\t}\n\n\tattachStream(\n\t\toptions: HeadlessInProcessStreamOptions,\n\t): HeadlessAttachedSubscription {\n\t\treturn this.getRuntime(\n\t\t\toptions.scopeKey,\n\t\t\toptions.sessionId,\n\t\t).createImplicitStream({\n\t\t\tcursor: options.cursor ?? null,\n\t\t\trole: options.role,\n\t\t\toptOutNotifications: options.optOutNotifications,\n\t\t});\n\t}\n\n\tasync unsubscribe(\n\t\tscopeKey: string,\n\t\tsessionId: string,\n\t\tsubscriptionId: string,\n\t): Promise<boolean> {\n\t\treturn this.getRuntime(scopeKey, sessionId).unsubscribe(subscriptionId);\n\t}\n\n\tasync disconnect(\n\t\toptions: HeadlessInProcessDisconnectOptions,\n\t): Promise<HeadlessRuntimeConnectionClosedSnapshot> {\n\t\treturn this.getRuntime(\n\t\t\toptions.scopeKey,\n\t\t\toptions.sessionId,\n\t\t).disconnectConnection({\n\t\t\tconnectionId: options.connectionId,\n\t\t\tsubscriptionId: options.subscriptionId,\n\t\t});\n\t}\n\n\theartbeat(\n\t\toptions: HeadlessInProcessHeartbeatOptions,\n\t): HeadlessRuntimeHeartbeatSnapshot {\n\t\treturn this.getRuntime(\n\t\t\toptions.scopeKey,\n\t\t\toptions.sessionId,\n\t\t).heartbeatConnection({\n\t\t\tconnectionId: options.connectionId,\n\t\t\tsubscriptionId: options.subscriptionId,\n\t\t});\n\t}\n\n\tasync send(\n\t\toptions: HeadlessInProcessSendOptions,\n\t): Promise<HeadlessRuntimeSnapshot> {\n\t\tconst runtime = this.getRuntime(options.scopeKey, options.sessionId);\n\t\tconst snapshot = runtime.getSnapshot();\n\t\tconst controllerConnectionId =\n\t\t\toptions.connectionId ??\n\t\t\t((options.role ?? \"controller\") === \"controller\"\n\t\t\t\t? (snapshot.state.controller_connection_id ?? undefined)\n\t\t\t\t: undefined);\n\t\truntime.assertCanSend(\n\t\t\toptions.role ?? \"controller\",\n\t\t\toptions.subscriptionId ?? undefined,\n\t\t\tcontrollerConnectionId,\n\t\t);\n\t\tawait runtime.send(options.message, {\n\t\t\tconnectionId: controllerConnectionId,\n\t\t\tsubscriptionId: options.subscriptionId ?? undefined,\n\t\t});\n\t\treturn runtime.getSnapshot();\n\t}\n\n\tprivate getRuntime(scopeKey: string, sessionId: string) {\n\t\tconst runtime = this.runtimeService.getRuntime(scopeKey, sessionId);\n\t\tif (!runtime) {\n\t\t\tthrow new Error(`Headless session not found: ${scopeKey}:${sessionId}`);\n\t\t}\n\t\treturn runtime;\n\t}\n}\n"]}
1
+ {"version":3,"file":"headless-in-process-host.js","sourceRoot":"","sources":["../../src/server/headless-in-process-host.ts"],"names":[],"mappings":"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","sourcesContent":["import type { HeadlessNotificationType } from \"@evalops/contracts\";\nimport type { HeadlessToAgentMessage } from \"../cli/headless-protocol.js\";\nimport type {\n\tEnsureRuntimeOptions,\n\tHeadlessAttachedSubscription,\n\tHeadlessRuntimeConnectionClosedSnapshot,\n\tHeadlessRuntimeHeartbeatSnapshot,\n\tHeadlessRuntimeService,\n\tHeadlessRuntimeSnapshot,\n\tHeadlessRuntimeStreamEnvelope,\n\tHeadlessRuntimeSubscriptionSnapshot,\n} from \"./headless-runtime-service.js\";\n\nexport interface HeadlessInProcessSendOptions {\n\tscopeKey: string;\n\tsessionId: string;\n\trole?: \"viewer\" | \"controller\";\n\tconnectionId?: string | null;\n\tsubscriptionId?: string | null;\n\tmessage: HeadlessToAgentMessage;\n}\n\nexport interface HeadlessInProcessDisconnectOptions {\n\tscopeKey: string;\n\tsessionId: string;\n\tconnectionId?: string | null;\n\tsubscriptionId?: string | null;\n}\n\nexport interface HeadlessInProcessHeartbeatOptions {\n\tscopeKey: string;\n\tsessionId: string;\n\tconnectionId?: string | null;\n\tsubscriptionId?: string | null;\n}\n\nexport interface HeadlessInProcessSubscribeOptions {\n\tscopeKey: string;\n\tsessionId: string;\n\trole?: \"viewer\" | \"controller\";\n\ttakeControl?: boolean;\n\toptOutNotifications?: HeadlessNotificationType[];\n}\n\nexport interface HeadlessInProcessStreamOptions {\n\tscopeKey: string;\n\tsessionId: string;\n\trole?: \"viewer\" | \"controller\";\n\tcursor?: number | null;\n\toptOutNotifications?: HeadlessNotificationType[];\n}\n\nexport class HeadlessInProcessHost {\n\tconstructor(private readonly runtimeService: HeadlessRuntimeService) {}\n\n\tasync ensureSession(\n\t\toptions: EnsureRuntimeOptions,\n\t): Promise<HeadlessRuntimeSnapshot> {\n\t\tconst runtime = await this.runtimeService.ensureRuntime(options);\n\t\treturn runtime.getSnapshot();\n\t}\n\n\tgetSnapshot(scopeKey: string, sessionId: string): HeadlessRuntimeSnapshot {\n\t\treturn this.getRuntime(scopeKey, sessionId).getSnapshot();\n\t}\n\n\treplayFrom(\n\t\tscopeKey: string,\n\t\tsessionId: string,\n\t\tcursor: number,\n\t): HeadlessRuntimeStreamEnvelope[] | null {\n\t\treturn this.getRuntime(scopeKey, sessionId).replayFrom(cursor);\n\t}\n\n\tsubscribe(\n\t\toptions: HeadlessInProcessSubscribeOptions,\n\t): HeadlessRuntimeSubscriptionSnapshot {\n\t\treturn this.getRuntime(\n\t\t\toptions.scopeKey,\n\t\t\toptions.sessionId,\n\t\t).createSubscription({\n\t\t\trole: options.role ?? \"controller\",\n\t\t\texplicit: true,\n\t\t\ttakeControl: options.takeControl,\n\t\t\toptOutNotifications: options.optOutNotifications,\n\t\t});\n\t}\n\n\tattachStream(\n\t\toptions: HeadlessInProcessStreamOptions,\n\t): HeadlessAttachedSubscription {\n\t\treturn this.getRuntime(\n\t\t\toptions.scopeKey,\n\t\t\toptions.sessionId,\n\t\t).createImplicitStream({\n\t\t\tcursor: options.cursor ?? null,\n\t\t\trole: options.role,\n\t\t\toptOutNotifications: options.optOutNotifications,\n\t\t});\n\t}\n\n\tasync unsubscribe(\n\t\tscopeKey: string,\n\t\tsessionId: string,\n\t\tsubscriptionId: string,\n\t): Promise<boolean> {\n\t\treturn this.getRuntime(scopeKey, sessionId).unsubscribe(subscriptionId);\n\t}\n\n\tasync disconnect(\n\t\toptions: HeadlessInProcessDisconnectOptions,\n\t): Promise<HeadlessRuntimeConnectionClosedSnapshot> {\n\t\treturn this.getRuntime(\n\t\t\toptions.scopeKey,\n\t\t\toptions.sessionId,\n\t\t).disconnectConnection({\n\t\t\tconnectionId: options.connectionId,\n\t\t\tsubscriptionId: options.subscriptionId,\n\t\t});\n\t}\n\n\theartbeat(\n\t\toptions: HeadlessInProcessHeartbeatOptions,\n\t): HeadlessRuntimeHeartbeatSnapshot {\n\t\treturn this.getRuntime(\n\t\t\toptions.scopeKey,\n\t\t\toptions.sessionId,\n\t\t).heartbeatConnection({\n\t\t\tconnectionId: options.connectionId,\n\t\t\tsubscriptionId: options.subscriptionId,\n\t\t});\n\t}\n\n\tasync send(\n\t\toptions: HeadlessInProcessSendOptions,\n\t): Promise<HeadlessRuntimeSnapshot> {\n\t\tconst runtime = this.getRuntime(options.scopeKey, options.sessionId);\n\t\tconst snapshot = runtime.getSnapshot();\n\t\tconst controllerConnectionId =\n\t\t\toptions.connectionId ??\n\t\t\t((options.role ?? \"controller\") === \"controller\"\n\t\t\t\t? (snapshot.state.controller_connection_id ?? undefined)\n\t\t\t\t: undefined);\n\t\truntime.assertCanSend(\n\t\t\toptions.role ?? \"controller\",\n\t\t\toptions.subscriptionId ?? undefined,\n\t\t\tcontrollerConnectionId,\n\t\t\t{ allowNotReady: options.message.type === \"shutdown\" },\n\t\t);\n\t\tawait runtime.send(options.message, {\n\t\t\tconnectionId: controllerConnectionId,\n\t\t\tsubscriptionId: options.subscriptionId ?? undefined,\n\t\t});\n\t\treturn runtime.getSnapshot();\n\t}\n\n\tprivate getRuntime(scopeKey: string, sessionId: string) {\n\t\tconst runtime = this.runtimeService.getRuntime(scopeKey, sessionId);\n\t\tif (!runtime) {\n\t\t\tthrow new Error(`Headless session not found: ${scopeKey}:${sessionId}`);\n\t\t}\n\t\treturn runtime;\n\t}\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { type HeadlessConnectionRole, type HeadlessNotificationType } from "@evalops/contracts";
2
2
  import type { ApprovalMode } from "../agent/action-approval.js";
3
3
  import type { ThinkingLevel } from "../agent/types.js";
4
- import { type HeadlessClientCapabilities, type HeadlessClientInfo, type HeadlessToAgentMessage } from "../cli/headless-protocol.js";
4
+ import { type HeadlessClientCapabilities, type HeadlessClientInfo, type HeadlessRuntimeState, type HeadlessToAgentMessage } from "../cli/headless-protocol.js";
5
5
  import type { RegisteredModel } from "../models/registry.js";
6
6
  import type { SessionManager } from "../session/manager.js";
7
7
  import type { WebServerContext } from "./app-context.js";
@@ -12,6 +12,10 @@ declare const HOSTED_RUNNER_SNAPSHOT_MANIFEST_VERSION = "evalops.remote-runner.s
12
12
  export declare function inferFleetModelTier(provider: string, model: string): string | undefined;
13
13
  export declare function getFleetPlatformEventBusStatus(): NonNullable<FleetAgentInstance["platformEventBus"]> | undefined;
14
14
  export type HostedRunnerRestoreFlushStatus = "completed" | "failed" | "skipped";
15
+ export declare class HeadlessRuntimeNotReadyError extends Error {
16
+ readonly code = "runtime_not_ready";
17
+ constructor(action: string, state: HeadlessRuntimeState);
18
+ }
15
19
  export interface HostedRunnerRestoreManifest {
16
20
  protocol_version: typeof HOSTED_RUNNER_SNAPSHOT_MANIFEST_VERSION;
17
21
  maestro_session_id: string;
@@ -201,6 +205,7 @@ export declare class HeadlessSessionRuntime {
201
205
  recordHostedAgentRuntimeDrain(input: HostedAgentRuntimeDrainInput): Promise<void>;
202
206
  disposeBestEffort(reason: string): void;
203
207
  getSnapshot(): HeadlessRuntimeSnapshot;
208
+ private assertRuntimeReady;
204
209
  getSessionFile(): string;
205
210
  getFleetAgentInstance(now?: number): FleetAgentInstance;
206
211
  private getFleetModelRoutingMetadata;
@@ -245,7 +250,9 @@ export declare class HeadlessSessionRuntime {
245
250
  optOutNotifications?: HeadlessNotificationType[];
246
251
  }): HeadlessAttachedSubscription;
247
252
  unsubscribe(subscriptionId: string, publish?: boolean): Promise<boolean>;
248
- assertCanSend(role: "viewer" | "controller", subscriptionId?: string | null, connectionId?: string | null): void;
253
+ assertCanSend(role: "viewer" | "controller", subscriptionId?: string | null, connectionId?: string | null, options?: {
254
+ allowNotReady?: boolean;
255
+ }): void;
249
256
  hasSubscription(subscriptionId: string): boolean;
250
257
  expireIdleSubscriptions(now?: number): Promise<void>;
251
258
  expireIdleConnections(now?: number): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"headless-runtime-service.d.ts","sourceRoot":"","sources":["../../src/server/headless-runtime-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"headless-runtime-service.d.ts","sourceRoot":"","sources":["../../src/server/headless-runtime-service.ts"],"names":[],"mappings":"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"}
@@ -111,6 +111,15 @@ function parseBooleanEnv(value) {
111
111
  return undefined;
112
112
  }
113
113
  }
114
+ export class HeadlessRuntimeNotReadyError extends Error {
115
+ constructor(action, state) {
116
+ const status = state.last_status ? `: ${state.last_status}` : "";
117
+ const error = state.last_error ? ` (${state.last_error})` : "";
118
+ super(`Headless runtime is not ready for ${action}${status}${error}`);
119
+ this.code = "runtime_not_ready";
120
+ this.name = "HeadlessRuntimeNotReadyError";
121
+ }
122
+ }
114
123
  function isRecord(value) {
115
124
  return Boolean(value && typeof value === "object" && !Array.isArray(value));
116
125
  }
@@ -509,6 +518,11 @@ export class HeadlessSessionRuntime {
509
518
  assertHeadlessRuntimeSnapshot(snapshot, "headless runtime snapshot");
510
519
  return snapshot;
511
520
  }
521
+ assertRuntimeReady(action) {
522
+ if (!this.state.is_ready) {
523
+ throw new HeadlessRuntimeNotReadyError(action, this.state);
524
+ }
525
+ }
512
526
  getSessionFile() {
513
527
  return this.sessionManager.getSessionFile();
514
528
  }
@@ -845,6 +859,9 @@ export class HeadlessSessionRuntime {
845
859
  createSubscription(options) {
846
860
  const role = options?.role ?? "controller";
847
861
  const explicit = options?.explicit ?? true;
862
+ if (explicit) {
863
+ this.assertRuntimeReady("new attachments");
864
+ }
848
865
  const announceConnectionInfo = options?.announceConnectionInfo ?? true;
849
866
  const reusableControllerConnectionId = !options?.connectionId &&
850
867
  role === "controller" &&
@@ -983,10 +1000,13 @@ export class HeadlessSessionRuntime {
983
1000
  this.syncSubscriptionState(publish && subscriber.explicit);
984
1001
  return true;
985
1002
  }
986
- assertCanSend(role, subscriptionId, connectionId) {
1003
+ assertCanSend(role, subscriptionId, connectionId, options) {
987
1004
  if (role === "viewer") {
988
1005
  throw new Error("Viewer headless connections cannot send messages");
989
1006
  }
1007
+ if (!options?.allowNotReady) {
1008
+ this.assertRuntimeReady("controller messages");
1009
+ }
990
1010
  const subscriber = subscriptionId
991
1011
  ? this.subscribers.get(subscriptionId)
992
1012
  : undefined;
@@ -1111,6 +1131,7 @@ export class HeadlessSessionRuntime {
1111
1131
  };
1112
1132
  }
1113
1133
  registerConnection(metadata) {
1134
+ this.assertRuntimeReady("new attachments");
1114
1135
  const role = metadata.role ?? "controller";
1115
1136
  const connection = this.ensureConnection({
1116
1137
  connectionId: metadata.connectionId,
@@ -1163,6 +1184,9 @@ export class HeadlessSessionRuntime {
1163
1184
  if (this.disposed) {
1164
1185
  throw new Error("Headless runtime is no longer available");
1165
1186
  }
1187
+ if (msg.type !== "shutdown") {
1188
+ this.assertRuntimeReady("controller messages");
1189
+ }
1166
1190
  this.updatedAt = Date.now();
1167
1191
  switch (msg.type) {
1168
1192
  case "hello": {
@@ -1703,9 +1727,21 @@ export class HeadlessRuntimeService {
1703
1727
  }, 60 * 1000).unref();
1704
1728
  }
1705
1729
  async ensureRuntime(options) {
1730
+ const shouldRegisterConnection = options.registerConnection !== false &&
1731
+ (options.clientProtocolVersion ||
1732
+ options.clientInfo ||
1733
+ options.capabilities ||
1734
+ options.optOutNotifications ||
1735
+ options.role);
1706
1736
  if (options.sessionId) {
1707
1737
  const existing = this.getRuntime(options.scope_key, options.sessionId);
1708
1738
  if (existing) {
1739
+ if (shouldRegisterConnection) {
1740
+ const snapshot = existing.getSnapshot();
1741
+ if (!snapshot.state.is_ready) {
1742
+ throw new HeadlessRuntimeNotReadyError("new attachments", snapshot.state);
1743
+ }
1744
+ }
1709
1745
  return existing;
1710
1746
  }
1711
1747
  }
@@ -1732,21 +1768,24 @@ export class HeadlessRuntimeService {
1732
1768
  context: options.context,
1733
1769
  sessionManager: options.sessionManager,
1734
1770
  });
1735
- if (options.registerConnection !== false &&
1736
- (options.clientProtocolVersion ||
1737
- options.clientInfo ||
1738
- options.capabilities ||
1739
- options.optOutNotifications ||
1740
- options.role)) {
1741
- runtime.registerConnection({
1742
- clientProtocolVersion: options.clientProtocolVersion,
1743
- clientInfo: options.clientInfo,
1744
- capabilities: options.capabilities,
1745
- optOutNotifications: options.optOutNotifications,
1746
- role: options.role,
1747
- });
1748
- }
1749
1771
  this.runtimes.set(runtime.key(), runtime);
1772
+ if (shouldRegisterConnection) {
1773
+ try {
1774
+ runtime.registerConnection({
1775
+ clientProtocolVersion: options.clientProtocolVersion,
1776
+ clientInfo: options.clientInfo,
1777
+ capabilities: options.capabilities,
1778
+ optOutNotifications: options.optOutNotifications,
1779
+ role: options.role,
1780
+ });
1781
+ }
1782
+ catch (error) {
1783
+ if (!(error instanceof HeadlessRuntimeNotReadyError)) {
1784
+ this.runtimes.delete(runtime.key());
1785
+ }
1786
+ throw error;
1787
+ }
1788
+ }
1750
1789
  return runtime;
1751
1790
  }
1752
1791
  getRuntime(scopeKey, sessionId) {