@evalops/maestro 0.10.11 → 0.10.13

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 (88) hide show
  1. package/dist/agent/transport/tool-execution-bridge.d.ts.map +1 -1
  2. package/dist/agent/transport/tool-execution-bridge.js +4 -0
  3. package/dist/agent/transport/tool-execution-bridge.js.map +1 -1
  4. package/dist/audit/logger.d.ts +1 -1
  5. package/dist/cli/args.d.ts.map +1 -1
  6. package/dist/cli/args.js +5 -1
  7. package/dist/cli/args.js.map +1 -1
  8. package/dist/cli/commands/config.d.ts.map +1 -1
  9. package/dist/cli/commands/config.js +3 -2
  10. package/dist/cli/commands/config.js.map +1 -1
  11. package/dist/cli/commands/evalops.d.ts +2 -1
  12. package/dist/cli/commands/evalops.d.ts.map +1 -1
  13. package/dist/cli/commands/evalops.js +9 -29
  14. package/dist/cli/commands/evalops.js.map +1 -1
  15. package/dist/cli/commands/init.d.ts +3 -1
  16. package/dist/cli/commands/init.d.ts.map +1 -1
  17. package/dist/cli/commands/init.js +61 -21
  18. package/dist/cli/commands/init.js.map +1 -1
  19. package/dist/cli/commands/status.d.ts +2 -0
  20. package/dist/cli/commands/status.d.ts.map +1 -0
  21. package/dist/cli/commands/status.js +11 -0
  22. package/dist/cli/commands/status.js.map +1 -0
  23. package/dist/cli/help.d.ts.map +1 -1
  24. package/dist/cli/help.js +3 -0
  25. package/dist/cli/help.js.map +1 -1
  26. package/dist/cli-tui/tui-renderer/attachment-controller.d.ts.map +1 -1
  27. package/dist/cli-tui/tui-renderer/attachment-controller.js +18 -1
  28. package/dist/cli-tui/tui-renderer/attachment-controller.js.map +1 -1
  29. package/dist/cli.js +2316 -1716
  30. package/dist/evalops/agent-bootstrap.d.ts +9 -0
  31. package/dist/evalops/agent-bootstrap.d.ts.map +1 -1
  32. package/dist/evalops/agent-bootstrap.js +254 -36
  33. package/dist/evalops/agent-bootstrap.js.map +1 -1
  34. package/dist/evalops/managed-context.d.ts +34 -0
  35. package/dist/evalops/managed-context.d.ts.map +1 -0
  36. package/dist/evalops/managed-context.js +183 -0
  37. package/dist/evalops/managed-context.js.map +1 -0
  38. package/dist/main.d.ts.map +1 -1
  39. package/dist/main.js +6 -1
  40. package/dist/main.js.map +1 -1
  41. package/dist/memory/auto-extraction.d.ts.map +1 -1
  42. package/dist/memory/auto-extraction.js +58 -0
  43. package/dist/memory/auto-extraction.js.map +1 -1
  44. package/dist/memory/backend.d.ts +1 -0
  45. package/dist/memory/backend.d.ts.map +1 -1
  46. package/dist/memory/backend.js.map +1 -1
  47. package/dist/memory/service-client.d.ts +1 -0
  48. package/dist/memory/service-client.d.ts.map +1 -1
  49. package/dist/memory/service-client.js +32 -8
  50. package/dist/memory/service-client.js.map +1 -1
  51. package/dist/models/builtin.d.ts.map +1 -1
  52. package/dist/models/builtin.js +2 -3
  53. package/dist/models/builtin.js.map +1 -1
  54. package/dist/oauth/evalops.d.ts.map +1 -1
  55. package/dist/oauth/evalops.js +2 -1
  56. package/dist/oauth/evalops.js.map +1 -1
  57. package/dist/oauth/storage.d.ts +1 -0
  58. package/dist/oauth/storage.d.ts.map +1 -1
  59. package/dist/oauth/storage.js +6 -0
  60. package/dist/oauth/storage.js.map +1 -1
  61. package/dist/platform/client.d.ts.map +1 -1
  62. package/dist/platform/client.js +3 -0
  63. package/dist/platform/client.js.map +1 -1
  64. package/dist/platform/core-services.d.ts +1 -0
  65. package/dist/platform/core-services.d.ts.map +1 -1
  66. package/dist/platform/core-services.js +1 -0
  67. package/dist/platform/core-services.js.map +1 -1
  68. package/dist/platform/tool-execution-client.d.ts.map +1 -1
  69. package/dist/platform/tool-execution-client.js +3 -0
  70. package/dist/platform/tool-execution-client.js.map +1 -1
  71. package/dist/providers/auth.d.ts +1 -1
  72. package/dist/providers/auth.d.ts.map +1 -1
  73. package/dist/providers/auth.js +30 -2
  74. package/dist/providers/auth.js.map +1 -1
  75. package/dist/providers/evalops-managed.d.ts +1 -0
  76. package/dist/providers/evalops-managed.d.ts.map +1 -1
  77. package/dist/providers/evalops-managed.js +1 -0
  78. package/dist/providers/evalops-managed.js.map +1 -1
  79. package/dist/telemetry/maestro-event-bus.d.ts.map +1 -1
  80. package/dist/telemetry/maestro-event-bus.js +16 -47
  81. package/dist/telemetry/maestro-event-bus.js.map +1 -1
  82. package/dist/telemetry.d.ts.map +1 -1
  83. package/dist/telemetry.js +98 -2
  84. package/dist/telemetry.js.map +1 -1
  85. package/dist/version.json +2 -2
  86. package/node_modules/@evalops/contracts/package.json +1 -1
  87. package/node_modules/@evalops/tui/package.json +1 -1
  88. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"evalops.js","sourceRoot":"","sources":["../../src/oauth/evalops.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype IncomingMessage,\n\ttype Server,\n\ttype ServerResponse,\n\tcreateServer,\n} from \"node:http\";\nimport { PLATFORM_HTTP_ROUTES } from \"../platform/core-services.js\";\nimport { fetchDownstream } from \"../utils/downstream-http.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport {\n\tbuildDesktopDeviceProof,\n\tenrollDesktopDeviceIdentity,\n} from \"./device-identity.js\";\nimport {\n\ttype OAuthCredentials,\n\tloadOAuthCredentials,\n\tsaveOAuthCredentials,\n} from \"./storage.js\";\n\nconst logger = createLogger(\"oauth:evalops\");\n\nconst CALLBACK_PORT = 1460;\nconst CALLBACK_PATH = \"/auth/callback/evalops\";\nconst CALLBACK_ORIGIN = `http://127.0.0.1:${CALLBACK_PORT}`;\nconst CALLBACK_URI = `${CALLBACK_ORIGIN}${CALLBACK_PATH}`;\nconst DEFAULT_IDENTITY_URL = \"https://identity.evalops.dev\";\nconst IDENTITY_BASE_URL_ENV_VARS = [\n\t\"MAESTRO_IDENTITY_URL\",\n\t\"EVALOPS_IDENTITY_URL\",\n] as const;\nconst SHARED_PLATFORM_BASE_URL_ENV_VARS = [\n\t\"MAESTRO_PLATFORM_BASE_URL\",\n\t\"MAESTRO_EVALOPS_BASE_URL\",\n\t\"EVALOPS_BASE_URL\",\n] as const;\nconst DEFAULT_PROVIDER_REF_PROVIDER = \"openai\";\nconst DEFAULT_PROVIDER_REF_ENVIRONMENT = \"prod\";\nconst DEFAULT_IDENTITY_TIMEOUT_MS = 10_000;\nconst DEFAULT_IDENTITY_MAX_ATTEMPTS = 2;\nconst REQUIRED_SCOPE = \"llm_gateway:invoke\";\n\ninterface IdentityStartResponse {\n\tauthorization_url?: string;\n\terror?: string;\n}\n\ninterface IdentityRefreshResponse {\n\taccess_token?: string;\n\terror?: string;\n\texpires_at?: string;\n\torganization_id?: string;\n\trefresh_expires_at?: string;\n\trefresh_token?: string;\n\tscopes?: unknown;\n}\n\ninterface IdentityRevokeResponse {\n\terror?: string;\n\trevoked?: boolean;\n}\n\ninterface IdentityDelegationResponse {\n\tagent_id?: string;\n\terror?: string;\n\texpires_at?: string;\n\trun_id?: string;\n\tscopes_denied?: unknown;\n\tscopes_granted?: unknown;\n\tscopes_requested?: unknown;\n\ttoken?: string;\n\ttoken_type?: string;\n}\n\nexport interface EvalOpsProviderRef {\n\tprovider: string;\n\tenvironment: string;\n\tcredential_name?: string;\n\tteam_id?: string;\n}\n\ninterface EvalOpsCallbackResult {\n\taccessToken: string;\n\texpiresAt: number;\n\torganizationId: string;\n\trefreshExpiresAt?: number;\n\trefreshToken?: string;\n\tscopes: string[];\n}\n\nexport interface EvalOpsDelegationTokenRequest {\n\tagentId: string;\n\tagentType: string;\n\tcapabilities?: string[];\n\tmetadata?: Record<string, unknown>;\n\trunId: string;\n\tscopes?: string[];\n\tsurface: string;\n\ttoken?: string;\n\tttlSeconds?: number;\n}\n\nexport interface EvalOpsDelegationTokenResult {\n\tagentId: string;\n\texpiresAt: number;\n\torganizationId: string;\n\tproviderRef: EvalOpsProviderRef;\n\trunId: string;\n\tscopesDenied: string[];\n\tscopesGranted: string[];\n\tscopesRequested: string[];\n\ttoken: string;\n\ttokenType: string;\n}\n\nfunction getEnvValue(names: string[]): string | undefined {\n\tfor (const name of names) {\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\nfunction parsePositiveInt(value: string | undefined, fallback: number): number {\n\tconst parsed = Number.parseInt(value ?? \"\", 10);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n}\n\nfunction normalizeIdentityBaseUrl(\n\tbaseUrl: string,\n\tsuffixes: readonly string[] = [],\n): string {\n\tlet normalized = baseUrl.trim().replace(/\\/+$/u, \"\");\n\tfor (const suffix of suffixes) {\n\t\tif (normalized.endsWith(suffix)) {\n\t\t\tnormalized = normalized.slice(0, -suffix.length).replace(/\\/+$/u, \"\");\n\t\t}\n\t}\n\treturn normalized;\n}\n\nfunction getIdentityBaseUrl(): string {\n\treturn normalizeIdentityBaseUrl(\n\t\tgetEnvValue([\n\t\t\t...IDENTITY_BASE_URL_ENV_VARS,\n\t\t\t...SHARED_PLATFORM_BASE_URL_ENV_VARS,\n\t\t]) ?? DEFAULT_IDENTITY_URL,\n\t\tObject.values(PLATFORM_HTTP_ROUTES.identity),\n\t);\n}\n\nfunction getIdentityTimeoutMs(): number {\n\treturn parsePositiveInt(\n\t\tgetEnvValue([\n\t\t\t\"MAESTRO_EVALOPS_IDENTITY_TIMEOUT_MS\",\n\t\t\t\"EVALOPS_IDENTITY_TIMEOUT_MS\",\n\t\t]),\n\t\tDEFAULT_IDENTITY_TIMEOUT_MS,\n\t);\n}\n\nfunction getIdentityMaxAttempts(): number {\n\treturn parsePositiveInt(\n\t\tgetEnvValue([\n\t\t\t\"MAESTRO_EVALOPS_IDENTITY_MAX_ATTEMPTS\",\n\t\t\t\"EVALOPS_IDENTITY_MAX_ATTEMPTS\",\n\t\t]),\n\t\tDEFAULT_IDENTITY_MAX_ATTEMPTS,\n\t);\n}\n\nfunction fetchIdentity(\n\tidentityBaseUrl: string,\n\tpath: string,\n\tinit: RequestInit,\n): Promise<Response> {\n\treturn fetchDownstream(`${identityBaseUrl}${path}`, init, {\n\t\tserviceName: \"EvalOps identity service\",\n\t\tfailureMode: \"required\",\n\t\ttimeoutMs: getIdentityTimeoutMs(),\n\t\tmaxAttempts: getIdentityMaxAttempts(),\n\t});\n}\n\nfunction getConfiguredOrganizationId(): string | undefined {\n\tconst organizationId = getEnvValue([\n\t\t\"MAESTRO_EVALOPS_ORG_ID\",\n\t\t\"EVALOPS_ORGANIZATION_ID\",\n\t\t\"MAESTRO_ENTERPRISE_ORG_ID\",\n\t]);\n\treturn organizationId;\n}\n\nfunction getProviderRef(): EvalOpsProviderRef {\n\tconst credentialName = getEnvValue([\n\t\t\"MAESTRO_EVALOPS_CREDENTIAL_NAME\",\n\t\t\"MAESTRO_LLM_GATEWAY_CREDENTIAL_NAME\",\n\t]);\n\tconst teamID = getEnvValue([\n\t\t\"MAESTRO_EVALOPS_TEAM_ID\",\n\t\t\"MAESTRO_LLM_GATEWAY_TEAM_ID\",\n\t]);\n\treturn {\n\t\tprovider:\n\t\t\tgetEnvValue([\n\t\t\t\t\"MAESTRO_EVALOPS_PROVIDER\",\n\t\t\t\t\"MAESTRO_LLM_GATEWAY_PROVIDER\",\n\t\t\t]) ?? DEFAULT_PROVIDER_REF_PROVIDER,\n\t\tenvironment:\n\t\t\tgetEnvValue([\n\t\t\t\t\"MAESTRO_EVALOPS_ENVIRONMENT\",\n\t\t\t\t\"MAESTRO_LLM_GATEWAY_ENVIRONMENT\",\n\t\t\t]) ?? DEFAULT_PROVIDER_REF_ENVIRONMENT,\n\t\t...(credentialName ? { credential_name: credentialName } : {}),\n\t\t...(teamID ? { team_id: teamID } : {}),\n\t};\n}\n\nfunction parseExpiresAt(value: string | null): number {\n\treturn parseTimestamp(value, \"expires_at\");\n}\n\nfunction parseTimestamp(\n\tvalue: string | null | undefined,\n\tfieldName: string,\n): number {\n\tif (!value) {\n\t\tthrow new Error(`Missing ${fieldName} in EvalOps response`);\n\t}\n\tconst expiresAt = Date.parse(value);\n\tif (Number.isNaN(expiresAt)) {\n\t\tthrow new Error(`Invalid ${fieldName} in EvalOps response: ${value}`);\n\t}\n\treturn expiresAt;\n}\n\nfunction parseScopes(value: string | null): string[] {\n\tif (!value) {\n\t\treturn [REQUIRED_SCOPE];\n\t}\n\treturn value\n\t\t.split(\" \")\n\t\t.map((entry) => entry.trim())\n\t\t.filter((entry) => entry.length > 0);\n}\n\nfunction parseScopesPayload(value: unknown): string[] {\n\tif (!Array.isArray(value)) {\n\t\treturn [];\n\t}\n\treturn value\n\t\t.filter((entry): entry is string => typeof entry === \"string\")\n\t\t.map((entry) => entry.trim())\n\t\t.filter((entry) => entry.length > 0);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction getMetadataString(\n\tmetadata: Record<string, unknown> | undefined,\n\tkey: string,\n): string | undefined {\n\tconst value = metadata?.[key];\n\treturn typeof value === \"string\" && value.trim().length > 0\n\t\t? value\n\t\t: undefined;\n}\n\nfunction getMetadataNumber(\n\tmetadata: Record<string, unknown> | undefined,\n\tkey: string,\n): number | undefined {\n\tconst value = metadata?.[key];\n\treturn typeof value === \"number\" && Number.isFinite(value)\n\t\t? value\n\t\t: undefined;\n}\n\nfunction getMetadataScopes(\n\tmetadata: Record<string, unknown> | undefined,\n): string[] {\n\treturn parseScopesPayload(metadata?.scopes);\n}\n\nfunction resolveProviderRef(\n\tmetadata: Record<string, unknown> | undefined,\n): EvalOpsProviderRef {\n\tconst fallback = getProviderRef();\n\tconst providerRef = isRecord(metadata?.providerRef)\n\t\t? metadata.providerRef\n\t\t: undefined;\n\treturn {\n\t\tprovider: getMetadataString(providerRef, \"provider\") ?? fallback.provider,\n\t\tenvironment:\n\t\t\tgetMetadataString(providerRef, \"environment\") ?? fallback.environment,\n\t\t...(getMetadataString(providerRef, \"credential_name\")\n\t\t\t? {\n\t\t\t\t\tcredential_name: getMetadataString(providerRef, \"credential_name\"),\n\t\t\t\t}\n\t\t\t: fallback.credential_name\n\t\t\t\t? { credential_name: fallback.credential_name }\n\t\t\t\t: {}),\n\t\t...(getMetadataString(providerRef, \"team_id\")\n\t\t\t? { team_id: getMetadataString(providerRef, \"team_id\") }\n\t\t\t: fallback.team_id\n\t\t\t\t? { team_id: fallback.team_id }\n\t\t\t\t: {}),\n\t};\n}\n\nfunction resolveStoredEvalOpsMetadata(\n\tmetadata?: Record<string, unknown>,\n): Record<string, unknown> | undefined {\n\tif (metadata) {\n\t\treturn metadata;\n\t}\n\tconst stored = loadOAuthCredentials(\"evalops\");\n\treturn stored?.metadata;\n}\n\nfunction resolveDelegationOrganizationId(\n\tmetadata: Record<string, unknown> | undefined,\n): string {\n\tconst organizationId =\n\t\tgetMetadataString(metadata, \"organizationId\") ??\n\t\tgetConfiguredOrganizationId();\n\tif (!organizationId) {\n\t\tthrow new Error(\n\t\t\t\"EvalOps delegation requires an organization id from /login evalops or MAESTRO_EVALOPS_ORG_ID.\",\n\t\t);\n\t}\n\treturn organizationId;\n}\n\nasync function getFreshEvalOpsAccessToken(\n\tmetadata?: Record<string, unknown>,\n): Promise<string | null> {\n\tconst credentials = loadOAuthCredentials(\"evalops\");\n\tif (!credentials) {\n\t\treturn null;\n\t}\n\tif (Date.now() < credentials.expires - 60_000) {\n\t\treturn credentials.access;\n\t}\n\tconst refreshed = await refreshEvalOpsToken(\n\t\tcredentials.refresh,\n\t\tmetadata ?? credentials.metadata,\n\t);\n\tsaveOAuthCredentials(\"evalops\", refreshed);\n\treturn refreshed.access;\n}\n\nexport function buildEvalOpsDelegationEnvironment(\n\tresult: Pick<\n\t\tEvalOpsDelegationTokenResult,\n\t\t\"organizationId\" | \"providerRef\" | \"token\"\n\t> &\n\t\tPartial<Pick<EvalOpsDelegationTokenResult, \"agentId\" | \"runId\">>,\n): Record<string, string> {\n\treturn {\n\t\tMAESTRO_EVALOPS_ACCESS_TOKEN: result.token,\n\t\tMAESTRO_EVALOPS_ORG_ID: result.organizationId,\n\t\tMAESTRO_EVALOPS_PROVIDER: result.providerRef.provider,\n\t\tMAESTRO_EVALOPS_ENVIRONMENT: result.providerRef.environment,\n\t\t...(result.agentId\n\t\t\t? {\n\t\t\t\t\tMAESTRO_AGENT_ID: result.agentId,\n\t\t\t\t\tMAESTRO_EVALOPS_AGENT_ID: result.agentId,\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(result.runId ? { MAESTRO_EVALOPS_RUN_ID: result.runId } : {}),\n\t\t...(result.providerRef.credential_name\n\t\t\t? {\n\t\t\t\t\tMAESTRO_EVALOPS_CREDENTIAL_NAME: result.providerRef.credential_name,\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(result.providerRef.team_id\n\t\t\t? { MAESTRO_EVALOPS_TEAM_ID: result.providerRef.team_id }\n\t\t\t: {}),\n\t};\n}\n\nexport async function issueEvalOpsDelegationToken(\n\trequest: EvalOpsDelegationTokenRequest,\n): Promise<EvalOpsDelegationTokenResult> {\n\tconst metadata = resolveStoredEvalOpsMetadata(request.metadata);\n\tconst identityBaseUrl =\n\t\tgetMetadataString(metadata, \"identityBaseUrl\") ?? getIdentityBaseUrl();\n\tconst deviceProof = await buildDesktopDeviceProof(\n\t\tidentityBaseUrl,\n\t\t\"delegation\",\n\t);\n\tconst token = request.token ?? (await getFreshEvalOpsAccessToken(metadata));\n\tif (!token) {\n\t\tthrow new Error(\n\t\t\t\"EvalOps delegation requires a valid access token. Run /login evalops first.\",\n\t\t);\n\t}\n\tconst response = await fetchIdentity(\n\t\tidentityBaseUrl,\n\t\tPLATFORM_HTTP_ROUTES.identity.delegationTokens,\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${token}`,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tagent_id: request.agentId,\n\t\t\t\tagent_type: request.agentType,\n\t\t\t\t...(request.capabilities?.length\n\t\t\t\t\t? { capabilities: request.capabilities }\n\t\t\t\t\t: {}),\n\t\t\t\trun_id: request.runId,\n\t\t\t\t...(request.scopes?.length ? { scopes: request.scopes } : {}),\n\t\t\t\t...(deviceProof ? { device_proof: deviceProof } : {}),\n\t\t\t\tsurface: request.surface,\n\t\t\t\t...(request.ttlSeconds ? { ttl_seconds: request.ttlSeconds } : {}),\n\t\t\t}),\n\t\t},\n\t);\n\n\tlet payload: IdentityDelegationResponse | undefined;\n\ttry {\n\t\tpayload = (await response.json()) as IdentityDelegationResponse;\n\t} catch {\n\t\t// Ignore JSON parse failure and fall back to a generic error below.\n\t}\n\n\tif (!response.ok || !payload?.token || !payload.expires_at) {\n\t\tthrow new Error(\n\t\t\tpayload?.error ?? \"EvalOps delegation token request failed\",\n\t\t);\n\t}\n\n\treturn {\n\t\tagentId: payload.agent_id ?? request.agentId,\n\t\texpiresAt: parseTimestamp(payload.expires_at, \"expires_at\"),\n\t\torganizationId: resolveDelegationOrganizationId(metadata),\n\t\tproviderRef: resolveProviderRef(metadata),\n\t\trunId: payload.run_id ?? request.runId,\n\t\tscopesDenied: parseScopesPayload(payload.scopes_denied),\n\t\tscopesGranted: parseScopesPayload(payload.scopes_granted),\n\t\tscopesRequested: parseScopesPayload(payload.scopes_requested),\n\t\ttoken: payload.token,\n\t\ttokenType: payload.token_type ?? \"Bearer\",\n\t};\n}\n\nasync function startCallbackServer(): Promise<{\n\tserver: Server;\n\tgetResult: () => Promise<EvalOpsCallbackResult>;\n}> {\n\treturn new Promise((resolve, reject) => {\n\t\tlet resultResolve: (value: EvalOpsCallbackResult) => void;\n\t\tlet resultReject: (error: Error) => void;\n\n\t\tconst resultPromise = new Promise<EvalOpsCallbackResult>((res, rej) => {\n\t\t\tresultResolve = res;\n\t\t\tresultReject = rej;\n\t\t});\n\n\t\tconst server = createServer((req: IncomingMessage, res: ServerResponse) => {\n\t\t\tconst requestUrl = new URL(req.url ?? \"\", CALLBACK_ORIGIN);\n\t\t\tif (requestUrl.pathname !== CALLBACK_PATH) {\n\t\t\t\tres.writeHead(404);\n\t\t\t\tres.end(\"Not found\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst error = requestUrl.searchParams.get(\"error\");\n\t\t\tif (error) {\n\t\t\t\tres.writeHead(400, { \"Content-Type\": \"text/html\" });\n\t\t\t\tres.end(\n\t\t\t\t\t`<html><body><h1>EvalOps Login Failed</h1><p>Error: ${error}</p><p>You can close this window.</p></body></html>`,\n\t\t\t\t);\n\t\t\t\tresultReject(new Error(`EvalOps identity login failed: ${error}`));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst accessToken = requestUrl.searchParams.get(\"access_token\");\n\t\t\tconst organizationId = requestUrl.searchParams.get(\"organization_id\");\n\t\t\tif (!accessToken || !organizationId) {\n\t\t\t\tres.writeHead(400, { \"Content-Type\": \"text/html\" });\n\t\t\t\tres.end(\n\t\t\t\t\t\"<html><body><h1>Invalid Callback</h1><p>Missing access_token or organization_id.</p><p>You can close this window.</p></body></html>\",\n\t\t\t\t);\n\t\t\t\tresultReject(\n\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\"EvalOps callback was missing access_token or organization_id.\",\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst expiresAt = parseExpiresAt(\n\t\t\t\t\trequestUrl.searchParams.get(\"expires_at\"),\n\t\t\t\t);\n\t\t\t\tconst refreshToken =\n\t\t\t\t\trequestUrl.searchParams.get(\"refresh_token\")?.trim() || undefined;\n\t\t\t\tconst refreshExpiresAtValue =\n\t\t\t\t\trequestUrl.searchParams.get(\"refresh_expires_at\");\n\t\t\t\tconst refreshExpiresAt = refreshExpiresAtValue\n\t\t\t\t\t? parseTimestamp(refreshExpiresAtValue, \"refresh_expires_at\")\n\t\t\t\t\t: undefined;\n\t\t\t\tconst scopes = parseScopes(requestUrl.searchParams.get(\"scope\"));\n\n\t\t\t\tres.writeHead(200, { \"Content-Type\": \"text/html\" });\n\t\t\t\tres.end(\n\t\t\t\t\t\"<html><body><h1>Authentication Successful</h1><p>You can close this window and return to Maestro.</p></body></html>\",\n\t\t\t\t);\n\t\t\t\tresultResolve({\n\t\t\t\t\taccessToken,\n\t\t\t\t\texpiresAt,\n\t\t\t\t\torganizationId,\n\t\t\t\t\trefreshExpiresAt,\n\t\t\t\t\trefreshToken,\n\t\t\t\t\tscopes,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tres.writeHead(400, { \"Content-Type\": \"text/html\" });\n\t\t\t\tres.end(\n\t\t\t\t\t`<html><body><h1>Invalid Callback</h1><p>${error instanceof Error ? error.message : String(error)}</p><p>You can close this window.</p></body></html>`,\n\t\t\t\t);\n\t\t\t\tresultReject(error instanceof Error ? error : new Error(String(error)));\n\t\t\t}\n\t\t});\n\n\t\tserver.on(\"error\", (error: NodeJS.ErrnoException) => {\n\t\t\tif (error.code === \"EADDRINUSE\") {\n\t\t\t\treject(\n\t\t\t\t\tnew Error(\n\t\t\t\t\t\t`Port ${CALLBACK_PORT} is already in use. Close the other process and retry /login evalops.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treject(error);\n\t\t});\n\n\t\tserver.listen(CALLBACK_PORT, \"127.0.0.1\", () => {\n\t\t\tresolve({\n\t\t\t\tserver,\n\t\t\t\tgetResult: () => resultPromise,\n\t\t\t});\n\t\t});\n\t});\n}\n\nfunction closeServer(server: Server): Promise<void> {\n\treturn new Promise((resolve) => {\n\t\tserver.close(() => resolve());\n\t});\n}\n\nasync function startIdentityLogin(\n\tidentityBaseUrl: string,\n\torganizationId: string | undefined,\n\tonStatus?: (status: string) => void,\n): Promise<string> {\n\tonStatus?.(\"Requesting EvalOps managed login URL...\");\n\tconst response = await fetchIdentity(\n\t\tidentityBaseUrl,\n\t\tPLATFORM_HTTP_ROUTES.identity.authGoogleStart,\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\tbody: JSON.stringify({\n\t\t\t\tredirect_uri: CALLBACK_URI,\n\t\t\t\tresponse_mode: \"query\",\n\t\t\t\t...(organizationId ? { organization_id: organizationId } : {}),\n\t\t\t\tprompt: \"select_account\",\n\t\t\t\tscopes: [REQUIRED_SCOPE],\n\t\t\t}),\n\t\t},\n\t);\n\n\tlet payload: IdentityStartResponse | undefined;\n\ttry {\n\t\tpayload = (await response.json()) as IdentityStartResponse;\n\t} catch {\n\t\t// Ignore JSON parse failure and fall back to a generic message below.\n\t}\n\n\tif (!response.ok || !payload?.authorization_url) {\n\t\tif (payload?.error === \"redirect_uri_not_allowed\") {\n\t\t\tthrow new Error(\n\t\t\t\t`Identity rejected ${CALLBACK_URI}. Add it to IDENTITY_GOOGLE_ALLOWED_REDIRECT_URIS and retry.`,\n\t\t\t);\n\t\t}\n\t\tthrow new Error(payload?.error ?? \"EvalOps identity start failed\");\n\t}\n\n\treturn payload.authorization_url;\n}\n\nexport async function loginEvalOps(\n\tonAuthUrl: (url: string) => void,\n\tonStatus?: (status: string) => void,\n): Promise<void> {\n\tconst identityBaseUrl = getIdentityBaseUrl();\n\tconst organizationId = getConfiguredOrganizationId();\n\tconst providerRef = getProviderRef();\n\tconst { server, getResult } = await startCallbackServer();\n\n\ttry {\n\t\tconst authorizationUrl = await startIdentityLogin(\n\t\t\tidentityBaseUrl,\n\t\t\torganizationId,\n\t\t\tonStatus,\n\t\t);\n\t\tonStatus?.(\"Waiting for EvalOps identity callback...\");\n\t\tonAuthUrl(authorizationUrl);\n\n\t\tconst result = await Promise.race([\n\t\t\tgetResult(),\n\t\t\tnew Promise<EvalOpsCallbackResult>((_, reject) => {\n\t\t\t\tsetTimeout(\n\t\t\t\t\t() => reject(new Error(\"EvalOps login timed out after 5 minutes\")),\n\t\t\t\t\t5 * 60 * 1000,\n\t\t\t\t);\n\t\t\t}),\n\t\t]);\n\n\t\tconst deviceId = await enrollDesktopDeviceIdentity(\n\t\t\tidentityBaseUrl,\n\t\t\tresult.accessToken,\n\t\t\tprocess.env.npm_package_version,\n\t\t);\n\n\t\tconst credentials: OAuthCredentials = {\n\t\t\ttype: \"oauth\",\n\t\t\taccess: result.accessToken,\n\t\t\trefresh: result.refreshToken ?? \"\",\n\t\t\texpires: result.expiresAt,\n\t\t\tmetadata: {\n\t\t\t\tidentityBaseUrl,\n\t\t\t\torganizationId: result.organizationId,\n\t\t\t\tproviderRef,\n\t\t\t\t...(deviceId ? { deviceId } : {}),\n\t\t\t\t...(result.refreshExpiresAt\n\t\t\t\t\t? { refreshExpiresAt: result.refreshExpiresAt }\n\t\t\t\t\t: {}),\n\t\t\t\tscopes: result.scopes,\n\t\t\t},\n\t\t};\n\t\tsaveOAuthCredentials(\"evalops\", credentials);\n\t\tlogger.info(\"EvalOps managed login successful\", {\n\t\t\torganizationId: result.organizationId,\n\t\t\tprovider: providerRef.provider,\n\t\t\tenvironment: providerRef.environment,\n\t\t});\n\t} finally {\n\t\tawait closeServer(server);\n\t}\n}\n\nexport async function refreshEvalOpsToken(\n\trefreshToken: string,\n\tmetadata?: Record<string, unknown>,\n): Promise<OAuthCredentials> {\n\tif (!refreshToken) {\n\t\tthrow new Error(\"EvalOps refresh token missing. Run /login evalops again.\");\n\t}\n\n\tconst identityBaseUrl =\n\t\tgetMetadataString(metadata, \"identityBaseUrl\") ?? getIdentityBaseUrl();\n\tconst deviceProof = await buildDesktopDeviceProof(identityBaseUrl, \"refresh\");\n\tconst response = await fetchIdentity(\n\t\tidentityBaseUrl,\n\t\tPLATFORM_HTTP_ROUTES.identity.tokenRefresh,\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\tbody: JSON.stringify({\n\t\t\t\trefresh_token: refreshToken,\n\t\t\t\t...(deviceProof ? { device_proof: deviceProof } : {}),\n\t\t\t}),\n\t\t},\n\t);\n\n\tlet payload: IdentityRefreshResponse | undefined;\n\ttry {\n\t\tpayload = (await response.json()) as IdentityRefreshResponse;\n\t} catch {\n\t\t// Ignore JSON parse failure and surface a generic error below.\n\t}\n\n\tif (!response.ok || !payload?.access_token || !payload.expires_at) {\n\t\tthrow new Error(payload?.error ?? \"EvalOps token refresh failed\");\n\t}\n\n\tconst expires = parseTimestamp(payload.expires_at, \"expires_at\");\n\tconst nextRefreshToken =\n\t\ttypeof payload.refresh_token === \"string\" &&\n\t\tpayload.refresh_token.trim().length > 0\n\t\t\t? payload.refresh_token\n\t\t\t: refreshToken;\n\tconst scopes = parseScopesPayload(payload.scopes);\n\tconst refreshExpiresAt =\n\t\tpayload.refresh_expires_at != null\n\t\t\t? parseTimestamp(payload.refresh_expires_at, \"refresh_expires_at\")\n\t\t\t: getMetadataNumber(metadata, \"refreshExpiresAt\");\n\n\treturn {\n\t\ttype: \"oauth\",\n\t\taccess: payload.access_token,\n\t\trefresh: nextRefreshToken,\n\t\texpires,\n\t\tmetadata: {\n\t\t\t...metadata,\n\t\t\tidentityBaseUrl,\n\t\t\torganizationId:\n\t\t\t\ttypeof payload.organization_id === \"string\" &&\n\t\t\t\tpayload.organization_id.length > 0\n\t\t\t\t\t? payload.organization_id\n\t\t\t\t\t: getMetadataString(metadata, \"organizationId\"),\n\t\t\t...(refreshExpiresAt ? { refreshExpiresAt } : {}),\n\t\t\tscopes: scopes.length > 0 ? scopes : getMetadataScopes(metadata),\n\t\t},\n\t};\n}\n\nexport async function revokeEvalOpsToken(\n\trefreshToken: string,\n\tmetadata?: Record<string, unknown>,\n): Promise<void> {\n\tif (!refreshToken) {\n\t\treturn;\n\t}\n\n\tconst identityBaseUrl =\n\t\tgetMetadataString(metadata, \"identityBaseUrl\") ?? getIdentityBaseUrl();\n\tconst response = await fetchIdentity(\n\t\tidentityBaseUrl,\n\t\tPLATFORM_HTTP_ROUTES.identity.tokenRevoke,\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\tbody: JSON.stringify({ refresh_token: refreshToken }),\n\t\t},\n\t);\n\n\tlet payload: IdentityRevokeResponse | undefined;\n\ttry {\n\t\tpayload = (await response.json()) as IdentityRevokeResponse;\n\t} catch {\n\t\t// Ignore JSON parse failure and surface a generic error below.\n\t}\n\n\tif (!response.ok) {\n\t\tthrow new Error(payload?.error ?? \"EvalOps token revoke failed\");\n\t}\n}\n"]}
1
+ {"version":3,"file":"evalops.js","sourceRoot":"","sources":["../../src/oauth/evalops.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype IncomingMessage,\n\ttype Server,\n\ttype ServerResponse,\n\tcreateServer,\n} from \"node:http\";\nimport { PLATFORM_HTTP_ROUTES } from \"../platform/core-services.js\";\nimport { fetchDownstream } from \"../utils/downstream-http.js\";\nimport { createLogger } from \"../utils/logger.js\";\nimport {\n\tbuildDesktopDeviceProof,\n\tenrollDesktopDeviceIdentity,\n} from \"./device-identity.js\";\nimport {\n\ttype OAuthCredentials,\n\tloadOAuthCredentials,\n\tsaveOAuthCredentials,\n} from \"./storage.js\";\n\nconst logger = createLogger(\"oauth:evalops\");\n\nconst CALLBACK_PORT = 1460;\nconst CALLBACK_PATH = \"/auth/callback/evalops\";\nconst CALLBACK_ORIGIN = `http://127.0.0.1:${CALLBACK_PORT}`;\nconst CALLBACK_URI = `${CALLBACK_ORIGIN}${CALLBACK_PATH}`;\nconst DEFAULT_IDENTITY_URL = \"https://identity.evalops.dev\";\nconst IDENTITY_BASE_URL_ENV_VARS = [\n\t\"MAESTRO_IDENTITY_URL\",\n\t\"EVALOPS_IDENTITY_URL\",\n] as const;\nconst SHARED_PLATFORM_BASE_URL_ENV_VARS = [\n\t\"MAESTRO_PLATFORM_BASE_URL\",\n\t\"MAESTRO_EVALOPS_BASE_URL\",\n\t\"EVALOPS_BASE_URL\",\n] as const;\nconst DEFAULT_PROVIDER_REF_PROVIDER = \"openai\";\nconst DEFAULT_PROVIDER_REF_ENVIRONMENT = \"prod\";\nconst DEFAULT_IDENTITY_TIMEOUT_MS = 10_000;\nconst DEFAULT_IDENTITY_MAX_ATTEMPTS = 2;\nconst REQUIRED_SCOPE = \"llm_gateway:invoke\";\n\ninterface IdentityStartResponse {\n\tauthorization_url?: string;\n\terror?: string;\n}\n\ninterface IdentityRefreshResponse {\n\taccess_token?: string;\n\terror?: string;\n\texpires_at?: string;\n\torganization_id?: string;\n\trefresh_expires_at?: string;\n\trefresh_token?: string;\n\tscopes?: unknown;\n}\n\ninterface IdentityRevokeResponse {\n\terror?: string;\n\trevoked?: boolean;\n}\n\ninterface IdentityDelegationResponse {\n\tagent_id?: string;\n\terror?: string;\n\texpires_at?: string;\n\trun_id?: string;\n\tscopes_denied?: unknown;\n\tscopes_granted?: unknown;\n\tscopes_requested?: unknown;\n\ttoken?: string;\n\ttoken_type?: string;\n}\n\nexport interface EvalOpsProviderRef {\n\tprovider: string;\n\tenvironment: string;\n\tcredential_name?: string;\n\tteam_id?: string;\n}\n\ninterface EvalOpsCallbackResult {\n\taccessToken: string;\n\texpiresAt: number;\n\torganizationId: string;\n\trefreshExpiresAt?: number;\n\trefreshToken?: string;\n\tscopes: string[];\n}\n\nexport interface EvalOpsDelegationTokenRequest {\n\tagentId: string;\n\tagentType: string;\n\tcapabilities?: string[];\n\tmetadata?: Record<string, unknown>;\n\trunId: string;\n\tscopes?: string[];\n\tsurface: string;\n\ttoken?: string;\n\tttlSeconds?: number;\n}\n\nexport interface EvalOpsDelegationTokenResult {\n\tagentId: string;\n\texpiresAt: number;\n\torganizationId: string;\n\tproviderRef: EvalOpsProviderRef;\n\trunId: string;\n\tscopesDenied: string[];\n\tscopesGranted: string[];\n\tscopesRequested: string[];\n\ttoken: string;\n\ttokenType: string;\n}\n\nfunction getEnvValue(names: string[]): string | undefined {\n\tfor (const name of names) {\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\nfunction parsePositiveInt(value: string | undefined, fallback: number): number {\n\tconst parsed = Number.parseInt(value ?? \"\", 10);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n}\n\nfunction normalizeIdentityBaseUrl(\n\tbaseUrl: string,\n\tsuffixes: readonly string[] = [],\n): string {\n\tlet normalized = baseUrl.trim().replace(/\\/+$/u, \"\");\n\tfor (const suffix of suffixes) {\n\t\tif (normalized.endsWith(suffix)) {\n\t\t\tnormalized = normalized.slice(0, -suffix.length).replace(/\\/+$/u, \"\");\n\t\t}\n\t}\n\treturn normalized;\n}\n\nfunction getIdentityBaseUrl(): string {\n\treturn normalizeIdentityBaseUrl(\n\t\tgetEnvValue([\n\t\t\t...IDENTITY_BASE_URL_ENV_VARS,\n\t\t\t...SHARED_PLATFORM_BASE_URL_ENV_VARS,\n\t\t]) ?? DEFAULT_IDENTITY_URL,\n\t\tObject.values(PLATFORM_HTTP_ROUTES.identity),\n\t);\n}\n\nfunction getIdentityTimeoutMs(): number {\n\treturn parsePositiveInt(\n\t\tgetEnvValue([\n\t\t\t\"MAESTRO_EVALOPS_IDENTITY_TIMEOUT_MS\",\n\t\t\t\"EVALOPS_IDENTITY_TIMEOUT_MS\",\n\t\t]),\n\t\tDEFAULT_IDENTITY_TIMEOUT_MS,\n\t);\n}\n\nfunction getIdentityMaxAttempts(): number {\n\treturn parsePositiveInt(\n\t\tgetEnvValue([\n\t\t\t\"MAESTRO_EVALOPS_IDENTITY_MAX_ATTEMPTS\",\n\t\t\t\"EVALOPS_IDENTITY_MAX_ATTEMPTS\",\n\t\t]),\n\t\tDEFAULT_IDENTITY_MAX_ATTEMPTS,\n\t);\n}\n\nfunction fetchIdentity(\n\tidentityBaseUrl: string,\n\tpath: string,\n\tinit: RequestInit,\n): Promise<Response> {\n\treturn fetchDownstream(`${identityBaseUrl}${path}`, init, {\n\t\tserviceName: \"EvalOps identity service\",\n\t\tfailureMode: \"required\",\n\t\ttimeoutMs: getIdentityTimeoutMs(),\n\t\tmaxAttempts: getIdentityMaxAttempts(),\n\t});\n}\n\nfunction getConfiguredOrganizationId(): string | undefined {\n\tconst organizationId = getEnvValue([\n\t\t\"MAESTRO_EVALOPS_ORG_ID\",\n\t\t\"EVALOPS_ORGANIZATION_ID\",\n\t\t\"MAESTRO_ENTERPRISE_ORG_ID\",\n\t]);\n\treturn organizationId;\n}\n\nfunction getProviderRef(): EvalOpsProviderRef {\n\tconst credentialName = getEnvValue([\n\t\t\"MAESTRO_EVALOPS_CREDENTIAL_NAME\",\n\t\t\"MAESTRO_LLM_GATEWAY_CREDENTIAL_NAME\",\n\t]);\n\tconst teamID = getEnvValue([\n\t\t\"MAESTRO_EVALOPS_TEAM_ID\",\n\t\t\"MAESTRO_LLM_GATEWAY_TEAM_ID\",\n\t]);\n\treturn {\n\t\tprovider:\n\t\t\tgetEnvValue([\n\t\t\t\t\"MAESTRO_EVALOPS_PROVIDER\",\n\t\t\t\t\"MAESTRO_LLM_GATEWAY_PROVIDER\",\n\t\t\t]) ?? DEFAULT_PROVIDER_REF_PROVIDER,\n\t\tenvironment:\n\t\t\tgetEnvValue([\n\t\t\t\t\"MAESTRO_EVALOPS_ENVIRONMENT\",\n\t\t\t\t\"MAESTRO_LLM_GATEWAY_ENVIRONMENT\",\n\t\t\t]) ?? DEFAULT_PROVIDER_REF_ENVIRONMENT,\n\t\t...(credentialName ? { credential_name: credentialName } : {}),\n\t\t...(teamID ? { team_id: teamID } : {}),\n\t};\n}\n\nfunction parseExpiresAt(value: string | null): number {\n\treturn parseTimestamp(value, \"expires_at\");\n}\n\nfunction parseTimestamp(\n\tvalue: string | null | undefined,\n\tfieldName: string,\n): number {\n\tif (!value) {\n\t\tthrow new Error(`Missing ${fieldName} in EvalOps response`);\n\t}\n\tconst expiresAt = Date.parse(value);\n\tif (Number.isNaN(expiresAt)) {\n\t\tthrow new Error(`Invalid ${fieldName} in EvalOps response: ${value}`);\n\t}\n\treturn expiresAt;\n}\n\nfunction parseScopes(value: string | null): string[] {\n\tif (!value) {\n\t\treturn [REQUIRED_SCOPE];\n\t}\n\treturn value\n\t\t.split(\" \")\n\t\t.map((entry) => entry.trim())\n\t\t.filter((entry) => entry.length > 0);\n}\n\nfunction parseScopesPayload(value: unknown): string[] {\n\tif (!Array.isArray(value)) {\n\t\treturn [];\n\t}\n\treturn value\n\t\t.filter((entry): entry is string => typeof entry === \"string\")\n\t\t.map((entry) => entry.trim())\n\t\t.filter((entry) => entry.length > 0);\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction getMetadataString(\n\tmetadata: Record<string, unknown> | undefined,\n\tkey: string,\n): string | undefined {\n\tconst value = metadata?.[key];\n\treturn typeof value === \"string\" && value.trim().length > 0\n\t\t? value\n\t\t: undefined;\n}\n\nfunction getMetadataNumber(\n\tmetadata: Record<string, unknown> | undefined,\n\tkey: string,\n): number | undefined {\n\tconst value = metadata?.[key];\n\treturn typeof value === \"number\" && Number.isFinite(value)\n\t\t? value\n\t\t: undefined;\n}\n\nfunction getMetadataScopes(\n\tmetadata: Record<string, unknown> | undefined,\n): string[] {\n\treturn parseScopesPayload(metadata?.scopes);\n}\n\nfunction resolveProviderRef(\n\tmetadata: Record<string, unknown> | undefined,\n): EvalOpsProviderRef {\n\tconst fallback = getProviderRef();\n\tconst providerRef = isRecord(metadata?.providerRef)\n\t\t? metadata.providerRef\n\t\t: undefined;\n\treturn {\n\t\tprovider: getMetadataString(providerRef, \"provider\") ?? fallback.provider,\n\t\tenvironment:\n\t\t\tgetMetadataString(providerRef, \"environment\") ?? fallback.environment,\n\t\t...(getMetadataString(providerRef, \"credential_name\")\n\t\t\t? {\n\t\t\t\t\tcredential_name: getMetadataString(providerRef, \"credential_name\"),\n\t\t\t\t}\n\t\t\t: fallback.credential_name\n\t\t\t\t? { credential_name: fallback.credential_name }\n\t\t\t\t: {}),\n\t\t...(getMetadataString(providerRef, \"team_id\")\n\t\t\t? { team_id: getMetadataString(providerRef, \"team_id\") }\n\t\t\t: fallback.team_id\n\t\t\t\t? { team_id: fallback.team_id }\n\t\t\t\t: {}),\n\t};\n}\n\nfunction resolveStoredEvalOpsMetadata(\n\tmetadata?: Record<string, unknown>,\n): Record<string, unknown> | undefined {\n\tif (metadata) {\n\t\treturn metadata;\n\t}\n\tconst stored = loadOAuthCredentials(\"evalops\");\n\treturn stored?.metadata;\n}\n\nfunction resolveDelegationOrganizationId(\n\tmetadata: Record<string, unknown> | undefined,\n): string {\n\tconst organizationId =\n\t\tgetMetadataString(metadata, \"organizationId\") ??\n\t\tgetConfiguredOrganizationId();\n\tif (!organizationId) {\n\t\tthrow new Error(\n\t\t\t\"EvalOps delegation requires an organization id from /login evalops or MAESTRO_EVALOPS_ORG_ID.\",\n\t\t);\n\t}\n\treturn organizationId;\n}\n\nasync function getFreshEvalOpsAccessToken(\n\tmetadata?: Record<string, unknown>,\n): Promise<string | null> {\n\tconst credentials = loadOAuthCredentials(\"evalops\");\n\tif (!credentials) {\n\t\treturn null;\n\t}\n\tif (Date.now() < credentials.expires - 60_000) {\n\t\treturn credentials.access;\n\t}\n\tconst refreshed = await refreshEvalOpsToken(\n\t\tcredentials.refresh,\n\t\tmetadata ?? credentials.metadata,\n\t);\n\tsaveOAuthCredentials(\"evalops\", refreshed);\n\treturn refreshed.access;\n}\n\nexport function buildEvalOpsDelegationEnvironment(\n\tresult: Pick<\n\t\tEvalOpsDelegationTokenResult,\n\t\t\"organizationId\" | \"providerRef\" | \"token\"\n\t> &\n\t\tPartial<Pick<EvalOpsDelegationTokenResult, \"agentId\" | \"runId\">>,\n): Record<string, string> {\n\treturn {\n\t\tMAESTRO_EVALOPS_ACCESS_TOKEN: result.token,\n\t\tMAESTRO_EVALOPS_ORG_ID: result.organizationId,\n\t\tMAESTRO_EVALOPS_PROVIDER: result.providerRef.provider,\n\t\tMAESTRO_EVALOPS_ENVIRONMENT: result.providerRef.environment,\n\t\t...(result.agentId\n\t\t\t? {\n\t\t\t\t\tMAESTRO_AGENT_ID: result.agentId,\n\t\t\t\t\tMAESTRO_EVALOPS_AGENT_ID: result.agentId,\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(result.runId ? { MAESTRO_EVALOPS_RUN_ID: result.runId } : {}),\n\t\t...(result.providerRef.credential_name\n\t\t\t? {\n\t\t\t\t\tMAESTRO_EVALOPS_CREDENTIAL_NAME: result.providerRef.credential_name,\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(result.providerRef.team_id\n\t\t\t? { MAESTRO_EVALOPS_TEAM_ID: result.providerRef.team_id }\n\t\t\t: {}),\n\t};\n}\n\nexport async function issueEvalOpsDelegationToken(\n\trequest: EvalOpsDelegationTokenRequest,\n): Promise<EvalOpsDelegationTokenResult> {\n\tconst metadata = resolveStoredEvalOpsMetadata(request.metadata);\n\tconst identityBaseUrl =\n\t\tgetMetadataString(metadata, \"identityBaseUrl\") ?? getIdentityBaseUrl();\n\tconst deviceProof = await buildDesktopDeviceProof(\n\t\tidentityBaseUrl,\n\t\t\"delegation\",\n\t);\n\tconst token = request.token ?? (await getFreshEvalOpsAccessToken(metadata));\n\tif (!token) {\n\t\tthrow new Error(\n\t\t\t\"EvalOps delegation requires a valid access token. Run /login evalops first.\",\n\t\t);\n\t}\n\tconst response = await fetchIdentity(\n\t\tidentityBaseUrl,\n\t\tPLATFORM_HTTP_ROUTES.identity.delegationTokens,\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${token}`,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tagent_id: request.agentId,\n\t\t\t\tagent_type: request.agentType,\n\t\t\t\t...(request.capabilities?.length\n\t\t\t\t\t? { capabilities: request.capabilities }\n\t\t\t\t\t: {}),\n\t\t\t\trun_id: request.runId,\n\t\t\t\t...(request.scopes?.length ? { scopes: request.scopes } : {}),\n\t\t\t\t...(deviceProof ? { device_proof: deviceProof } : {}),\n\t\t\t\tsurface: request.surface,\n\t\t\t\t...(request.ttlSeconds ? { ttl_seconds: request.ttlSeconds } : {}),\n\t\t\t}),\n\t\t},\n\t);\n\n\tlet payload: IdentityDelegationResponse | undefined;\n\ttry {\n\t\tpayload = (await response.json()) as IdentityDelegationResponse;\n\t} catch {\n\t\t// Ignore JSON parse failure and fall back to a generic error below.\n\t}\n\n\tif (!response.ok || !payload?.token || !payload.expires_at) {\n\t\tthrow new Error(\n\t\t\tpayload?.error ?? \"EvalOps delegation token request failed\",\n\t\t);\n\t}\n\n\treturn {\n\t\tagentId: payload.agent_id ?? request.agentId,\n\t\texpiresAt: parseTimestamp(payload.expires_at, \"expires_at\"),\n\t\torganizationId: resolveDelegationOrganizationId(metadata),\n\t\tproviderRef: resolveProviderRef(metadata),\n\t\trunId: payload.run_id ?? request.runId,\n\t\tscopesDenied: parseScopesPayload(payload.scopes_denied),\n\t\tscopesGranted: parseScopesPayload(payload.scopes_granted),\n\t\tscopesRequested: parseScopesPayload(payload.scopes_requested),\n\t\ttoken: payload.token,\n\t\ttokenType: payload.token_type ?? \"Bearer\",\n\t};\n}\n\nasync function startCallbackServer(): Promise<{\n\tserver: Server;\n\tgetResult: () => Promise<EvalOpsCallbackResult>;\n}> {\n\treturn new Promise((resolve, reject) => {\n\t\tlet resultResolve: (value: EvalOpsCallbackResult) => void;\n\t\tlet resultReject: (error: Error) => void;\n\n\t\tconst resultPromise = new Promise<EvalOpsCallbackResult>((res, rej) => {\n\t\t\tresultResolve = res;\n\t\t\tresultReject = rej;\n\t\t});\n\n\t\tconst server = createServer((req: IncomingMessage, res: ServerResponse) => {\n\t\t\tconst requestUrl = new URL(req.url ?? \"\", CALLBACK_ORIGIN);\n\t\t\tif (requestUrl.pathname !== CALLBACK_PATH) {\n\t\t\t\tres.writeHead(404);\n\t\t\t\tres.end(\"Not found\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst error = requestUrl.searchParams.get(\"error\");\n\t\t\tif (error) {\n\t\t\t\tres.writeHead(400, { \"Content-Type\": \"text/html\" });\n\t\t\t\tres.end(\n\t\t\t\t\t`<html><body><h1>EvalOps Login Failed</h1><p>Error: ${error}</p><p>You can close this window.</p></body></html>`,\n\t\t\t\t);\n\t\t\t\tresultReject(new Error(`EvalOps identity login failed: ${error}`));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst accessToken = requestUrl.searchParams.get(\"access_token\");\n\t\t\tconst organizationId = requestUrl.searchParams.get(\"organization_id\");\n\t\t\tif (!accessToken || !organizationId) {\n\t\t\t\tres.writeHead(400, { \"Content-Type\": \"text/html\" });\n\t\t\t\tres.end(\n\t\t\t\t\t\"<html><body><h1>Invalid Callback</h1><p>Missing access_token or organization_id.</p><p>You can close this window.</p></body></html>\",\n\t\t\t\t);\n\t\t\t\tresultReject(\n\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\"EvalOps callback was missing access_token or organization_id.\",\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst expiresAt = parseExpiresAt(\n\t\t\t\t\trequestUrl.searchParams.get(\"expires_at\"),\n\t\t\t\t);\n\t\t\t\tconst refreshToken =\n\t\t\t\t\trequestUrl.searchParams.get(\"refresh_token\")?.trim() || undefined;\n\t\t\t\tconst refreshExpiresAtValue =\n\t\t\t\t\trequestUrl.searchParams.get(\"refresh_expires_at\");\n\t\t\t\tconst refreshExpiresAt = refreshExpiresAtValue\n\t\t\t\t\t? parseTimestamp(refreshExpiresAtValue, \"refresh_expires_at\")\n\t\t\t\t\t: undefined;\n\t\t\t\tconst scopes = parseScopes(requestUrl.searchParams.get(\"scope\"));\n\n\t\t\t\tres.writeHead(200, { \"Content-Type\": \"text/html\" });\n\t\t\t\tres.end(\n\t\t\t\t\t\"<html><body><h1>Authentication Successful</h1><p>You can close this window and return to Maestro.</p></body></html>\",\n\t\t\t\t);\n\t\t\t\tresultResolve({\n\t\t\t\t\taccessToken,\n\t\t\t\t\texpiresAt,\n\t\t\t\t\torganizationId,\n\t\t\t\t\trefreshExpiresAt,\n\t\t\t\t\trefreshToken,\n\t\t\t\t\tscopes,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tres.writeHead(400, { \"Content-Type\": \"text/html\" });\n\t\t\t\tres.end(\n\t\t\t\t\t`<html><body><h1>Invalid Callback</h1><p>${error instanceof Error ? error.message : String(error)}</p><p>You can close this window.</p></body></html>`,\n\t\t\t\t);\n\t\t\t\tresultReject(error instanceof Error ? error : new Error(String(error)));\n\t\t\t}\n\t\t});\n\n\t\tserver.on(\"error\", (error: NodeJS.ErrnoException) => {\n\t\t\tif (error.code === \"EADDRINUSE\") {\n\t\t\t\treject(\n\t\t\t\t\tnew Error(\n\t\t\t\t\t\t`Port ${CALLBACK_PORT} is already in use. Close the other process and retry /login evalops.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treject(error);\n\t\t});\n\n\t\tserver.listen(CALLBACK_PORT, \"127.0.0.1\", () => {\n\t\t\tresolve({\n\t\t\t\tserver,\n\t\t\t\tgetResult: () => resultPromise,\n\t\t\t});\n\t\t});\n\t});\n}\n\nfunction closeServer(server: Server): Promise<void> {\n\treturn new Promise((resolve) => {\n\t\tserver.close(() => resolve());\n\t});\n}\n\nasync function startIdentityLogin(\n\tidentityBaseUrl: string,\n\torganizationId: string | undefined,\n\tonStatus?: (status: string) => void,\n): Promise<string> {\n\tonStatus?.(\"Requesting EvalOps managed login URL...\");\n\tconst response = await fetchIdentity(\n\t\tidentityBaseUrl,\n\t\tPLATFORM_HTTP_ROUTES.identity.authGoogleStart,\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\tbody: JSON.stringify({\n\t\t\t\tredirect_uri: CALLBACK_URI,\n\t\t\t\tresponse_mode: \"query\",\n\t\t\t\t...(organizationId ? { organization_id: organizationId } : {}),\n\t\t\t\tprompt: \"select_account\",\n\t\t\t\tscopes: [REQUIRED_SCOPE],\n\t\t\t}),\n\t\t},\n\t);\n\n\tlet payload: IdentityStartResponse | undefined;\n\ttry {\n\t\tpayload = (await response.json()) as IdentityStartResponse;\n\t} catch {\n\t\t// Ignore JSON parse failure and fall back to a generic message below.\n\t}\n\n\tif (!response.ok || !payload?.authorization_url) {\n\t\tif (payload?.error === \"redirect_uri_not_allowed\") {\n\t\t\tthrow new Error(\n\t\t\t\t`Identity rejected ${CALLBACK_URI}. Add it to IDENTITY_GOOGLE_ALLOWED_REDIRECT_URIS and retry.`,\n\t\t\t);\n\t\t}\n\t\tthrow new Error(payload?.error ?? \"EvalOps identity start failed\");\n\t}\n\n\treturn payload.authorization_url;\n}\n\nexport async function loginEvalOps(\n\tonAuthUrl: (url: string) => void,\n\tonStatus?: (status: string) => void,\n): Promise<void> {\n\tconst identityBaseUrl = getIdentityBaseUrl();\n\tconst organizationId = getConfiguredOrganizationId();\n\tconst providerRef = getProviderRef();\n\tconst { server, getResult } = await startCallbackServer();\n\n\ttry {\n\t\tconst authorizationUrl = await startIdentityLogin(\n\t\t\tidentityBaseUrl,\n\t\t\torganizationId,\n\t\t\tonStatus,\n\t\t);\n\t\tonStatus?.(\"Waiting for EvalOps identity callback...\");\n\t\tonAuthUrl(authorizationUrl);\n\n\t\tconst result = await Promise.race([\n\t\t\tgetResult(),\n\t\t\tnew Promise<EvalOpsCallbackResult>((_, reject) => {\n\t\t\t\tconst timeout = setTimeout(\n\t\t\t\t\t() => reject(new Error(\"EvalOps login timed out after 5 minutes\")),\n\t\t\t\t\t5 * 60 * 1000,\n\t\t\t\t);\n\t\t\t\ttimeout.unref?.();\n\t\t\t}),\n\t\t]);\n\n\t\tconst deviceId = await enrollDesktopDeviceIdentity(\n\t\t\tidentityBaseUrl,\n\t\t\tresult.accessToken,\n\t\t\tprocess.env.npm_package_version,\n\t\t);\n\n\t\tconst credentials: OAuthCredentials = {\n\t\t\ttype: \"oauth\",\n\t\t\taccess: result.accessToken,\n\t\t\trefresh: result.refreshToken ?? \"\",\n\t\t\texpires: result.expiresAt,\n\t\t\tmetadata: {\n\t\t\t\tidentityBaseUrl,\n\t\t\t\torganizationId: result.organizationId,\n\t\t\t\tproviderRef,\n\t\t\t\t...(deviceId ? { deviceId } : {}),\n\t\t\t\t...(result.refreshExpiresAt\n\t\t\t\t\t? { refreshExpiresAt: result.refreshExpiresAt }\n\t\t\t\t\t: {}),\n\t\t\t\tscopes: result.scopes,\n\t\t\t},\n\t\t};\n\t\tsaveOAuthCredentials(\"evalops\", credentials);\n\t\tlogger.info(\"EvalOps managed login successful\", {\n\t\t\torganizationId: result.organizationId,\n\t\t\tprovider: providerRef.provider,\n\t\t\tenvironment: providerRef.environment,\n\t\t});\n\t} finally {\n\t\tawait closeServer(server);\n\t}\n}\n\nexport async function refreshEvalOpsToken(\n\trefreshToken: string,\n\tmetadata?: Record<string, unknown>,\n): Promise<OAuthCredentials> {\n\tif (!refreshToken) {\n\t\tthrow new Error(\"EvalOps refresh token missing. Run /login evalops again.\");\n\t}\n\n\tconst identityBaseUrl =\n\t\tgetMetadataString(metadata, \"identityBaseUrl\") ?? getIdentityBaseUrl();\n\tconst deviceProof = await buildDesktopDeviceProof(identityBaseUrl, \"refresh\");\n\tconst response = await fetchIdentity(\n\t\tidentityBaseUrl,\n\t\tPLATFORM_HTTP_ROUTES.identity.tokenRefresh,\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\tbody: JSON.stringify({\n\t\t\t\trefresh_token: refreshToken,\n\t\t\t\t...(deviceProof ? { device_proof: deviceProof } : {}),\n\t\t\t}),\n\t\t},\n\t);\n\n\tlet payload: IdentityRefreshResponse | undefined;\n\ttry {\n\t\tpayload = (await response.json()) as IdentityRefreshResponse;\n\t} catch {\n\t\t// Ignore JSON parse failure and surface a generic error below.\n\t}\n\n\tif (!response.ok || !payload?.access_token || !payload.expires_at) {\n\t\tthrow new Error(payload?.error ?? \"EvalOps token refresh failed\");\n\t}\n\n\tconst expires = parseTimestamp(payload.expires_at, \"expires_at\");\n\tconst nextRefreshToken =\n\t\ttypeof payload.refresh_token === \"string\" &&\n\t\tpayload.refresh_token.trim().length > 0\n\t\t\t? payload.refresh_token\n\t\t\t: refreshToken;\n\tconst scopes = parseScopesPayload(payload.scopes);\n\tconst refreshExpiresAt =\n\t\tpayload.refresh_expires_at != null\n\t\t\t? parseTimestamp(payload.refresh_expires_at, \"refresh_expires_at\")\n\t\t\t: getMetadataNumber(metadata, \"refreshExpiresAt\");\n\n\treturn {\n\t\ttype: \"oauth\",\n\t\taccess: payload.access_token,\n\t\trefresh: nextRefreshToken,\n\t\texpires,\n\t\tmetadata: {\n\t\t\t...metadata,\n\t\t\tidentityBaseUrl,\n\t\t\torganizationId:\n\t\t\t\ttypeof payload.organization_id === \"string\" &&\n\t\t\t\tpayload.organization_id.length > 0\n\t\t\t\t\t? payload.organization_id\n\t\t\t\t\t: getMetadataString(metadata, \"organizationId\"),\n\t\t\t...(refreshExpiresAt ? { refreshExpiresAt } : {}),\n\t\t\tscopes: scopes.length > 0 ? scopes : getMetadataScopes(metadata),\n\t\t},\n\t};\n}\n\nexport async function revokeEvalOpsToken(\n\trefreshToken: string,\n\tmetadata?: Record<string, unknown>,\n): Promise<void> {\n\tif (!refreshToken) {\n\t\treturn;\n\t}\n\n\tconst identityBaseUrl =\n\t\tgetMetadataString(metadata, \"identityBaseUrl\") ?? getIdentityBaseUrl();\n\tconst response = await fetchIdentity(\n\t\tidentityBaseUrl,\n\t\tPLATFORM_HTTP_ROUTES.identity.tokenRevoke,\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\t\tbody: JSON.stringify({ refresh_token: refreshToken }),\n\t\t},\n\t);\n\n\tlet payload: IdentityRevokeResponse | undefined;\n\ttry {\n\t\tpayload = (await response.json()) as IdentityRevokeResponse;\n\t} catch {\n\t\t// Ignore JSON parse failure and surface a generic error below.\n\t}\n\n\tif (!response.ok) {\n\t\tthrow new Error(payload?.error ?? \"EvalOps token revoke failed\");\n\t}\n}\n"]}
@@ -5,6 +5,7 @@ export interface OAuthCredentials {
5
5
  expires: number;
6
6
  metadata?: Record<string, unknown>;
7
7
  }
8
+ export declare function getOAuthStorageRevision(): number;
8
9
  /**
9
10
  * Load OAuth credentials for a specific provider
10
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/oauth/storage.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAyDD;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,MAAM,GACd,gBAAgB,GAAG,IAAI,CAGzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,gBAAgB,GACrB,IAAI,CAIN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAG7C"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/oauth/storage.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAQD,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAqDD;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,MAAM,GACd,gBAAgB,GAAG,IAAI,CAGzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,gBAAgB,GACrB,IAAI,CAKN;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAK7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAG7C"}
@@ -3,6 +3,10 @@ import { join } from "node:path";
3
3
  import { getAgentDir } from "../config/constants.js";
4
4
  import { createLogger } from "../utils/logger.js";
5
5
  const logger = createLogger("oauth:storage");
6
+ let oauthStorageRevision = 0;
7
+ export function getOAuthStorageRevision() {
8
+ return oauthStorageRevision;
9
+ }
6
10
  /**
7
11
  * Get path to oauth.json
8
12
  */
@@ -64,6 +68,7 @@ export function saveOAuthCredentials(provider, creds) {
64
68
  const storage = loadStorage();
65
69
  storage[provider] = creds;
66
70
  saveStorage(storage);
71
+ oauthStorageRevision += 1;
67
72
  }
68
73
  /**
69
74
  * Remove OAuth credentials for a specific provider
@@ -72,6 +77,7 @@ export function removeOAuthCredentials(provider) {
72
77
  const storage = loadStorage();
73
78
  delete storage[provider];
74
79
  saveStorage(storage);
80
+ oauthStorageRevision += 1;
75
81
  }
76
82
  /**
77
83
  * List all providers with OAuth credentials
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/oauth/storage.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tchmodSync,\n\texistsSync,\n\tmkdirSync,\n\treadFileSync,\n\twriteFileSync,\n} from \"node:fs\";\nimport { join } from \"node:path\";\nimport { getAgentDir } from \"../config/constants.js\";\nimport { createLogger } from \"../utils/logger.js\";\n\nconst logger = createLogger(\"oauth:storage\");\n\nexport interface OAuthCredentials {\n\ttype: \"oauth\";\n\trefresh: string;\n\taccess: string;\n\texpires: number;\n\tmetadata?: Record<string, unknown>;\n}\n\ninterface OAuthStorageFormat {\n\t[provider: string]: OAuthCredentials;\n}\n\n/**\n * Get path to oauth.json\n */\nfunction getOAuthFilePath(): string {\n\tconst configDir = join(getAgentDir(), \"..\");\n\treturn join(configDir, \"oauth.json\");\n}\n\n/**\n * Ensure the config directory exists\n */\nfunction ensureConfigDir(): void {\n\tconst filePath = getOAuthFilePath();\n\tconst configDir = join(filePath, \"..\");\n\tif (!existsSync(configDir)) {\n\t\tmkdirSync(configDir, { recursive: true, mode: 0o700 });\n\t}\n}\n\n/**\n * Load all OAuth credentials from oauth.json\n */\nfunction loadStorage(): OAuthStorageFormat {\n\tconst filePath = getOAuthFilePath();\n\tif (!existsSync(filePath)) {\n\t\treturn {};\n\t}\n\n\ttry {\n\t\tconst content = readFileSync(filePath, \"utf-8\");\n\t\treturn JSON.parse(content);\n\t} catch (error) {\n\t\tlogger.warn(\"Failed to load OAuth credentials; ignoring stored file\", {\n\t\t\tfilePath,\n\t\t\terrorType: error instanceof Error ? error.name : \"unknown\",\n\t\t});\n\t\treturn {};\n\t}\n}\n\n/**\n * Save all OAuth credentials to oauth.json\n */\nfunction saveStorage(storage: OAuthStorageFormat): void {\n\tensureConfigDir();\n\tconst filePath = getOAuthFilePath();\n\twriteFileSync(filePath, JSON.stringify(storage, null, 2), \"utf-8\");\n\t// Set permissions to owner read/write only\n\tchmodSync(filePath, 0o600);\n}\n\n/**\n * Load OAuth credentials for a specific provider\n */\nexport function loadOAuthCredentials(\n\tprovider: string,\n): OAuthCredentials | null {\n\tconst storage = loadStorage();\n\treturn storage[provider] || null;\n}\n\n/**\n * Save OAuth credentials for a specific provider\n */\nexport function saveOAuthCredentials(\n\tprovider: string,\n\tcreds: OAuthCredentials,\n): void {\n\tconst storage = loadStorage();\n\tstorage[provider] = creds;\n\tsaveStorage(storage);\n}\n\n/**\n * Remove OAuth credentials for a specific provider\n */\nexport function removeOAuthCredentials(provider: string): void {\n\tconst storage = loadStorage();\n\tdelete storage[provider];\n\tsaveStorage(storage);\n}\n\n/**\n * List all providers with OAuth credentials\n */\nexport function listOAuthProviders(): string[] {\n\tconst storage = loadStorage();\n\treturn Object.keys(storage);\n}\n"]}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/oauth/storage.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tchmodSync,\n\texistsSync,\n\tmkdirSync,\n\treadFileSync,\n\twriteFileSync,\n} from \"node:fs\";\nimport { join } from \"node:path\";\nimport { getAgentDir } from \"../config/constants.js\";\nimport { createLogger } from \"../utils/logger.js\";\n\nconst logger = createLogger(\"oauth:storage\");\n\nexport interface OAuthCredentials {\n\ttype: \"oauth\";\n\trefresh: string;\n\taccess: string;\n\texpires: number;\n\tmetadata?: Record<string, unknown>;\n}\n\ninterface OAuthStorageFormat {\n\t[provider: string]: OAuthCredentials;\n}\n\nlet oauthStorageRevision = 0;\n\nexport function getOAuthStorageRevision(): number {\n\treturn oauthStorageRevision;\n}\n\n/**\n * Get path to oauth.json\n */\nfunction getOAuthFilePath(): string {\n\tconst configDir = join(getAgentDir(), \"..\");\n\treturn join(configDir, \"oauth.json\");\n}\n\n/**\n * Ensure the config directory exists\n */\nfunction ensureConfigDir(): void {\n\tconst filePath = getOAuthFilePath();\n\tconst configDir = join(filePath, \"..\");\n\tif (!existsSync(configDir)) {\n\t\tmkdirSync(configDir, { recursive: true, mode: 0o700 });\n\t}\n}\n\n/**\n * Load all OAuth credentials from oauth.json\n */\nfunction loadStorage(): OAuthStorageFormat {\n\tconst filePath = getOAuthFilePath();\n\tif (!existsSync(filePath)) {\n\t\treturn {};\n\t}\n\n\ttry {\n\t\tconst content = readFileSync(filePath, \"utf-8\");\n\t\treturn JSON.parse(content);\n\t} catch (error) {\n\t\tlogger.warn(\"Failed to load OAuth credentials; ignoring stored file\", {\n\t\t\tfilePath,\n\t\t\terrorType: error instanceof Error ? error.name : \"unknown\",\n\t\t});\n\t\treturn {};\n\t}\n}\n\n/**\n * Save all OAuth credentials to oauth.json\n */\nfunction saveStorage(storage: OAuthStorageFormat): void {\n\tensureConfigDir();\n\tconst filePath = getOAuthFilePath();\n\twriteFileSync(filePath, JSON.stringify(storage, null, 2), \"utf-8\");\n\t// Set permissions to owner read/write only\n\tchmodSync(filePath, 0o600);\n}\n\n/**\n * Load OAuth credentials for a specific provider\n */\nexport function loadOAuthCredentials(\n\tprovider: string,\n): OAuthCredentials | null {\n\tconst storage = loadStorage();\n\treturn storage[provider] || null;\n}\n\n/**\n * Save OAuth credentials for a specific provider\n */\nexport function saveOAuthCredentials(\n\tprovider: string,\n\tcreds: OAuthCredentials,\n): void {\n\tconst storage = loadStorage();\n\tstorage[provider] = creds;\n\tsaveStorage(storage);\n\toauthStorageRevision += 1;\n}\n\n/**\n * Remove OAuth credentials for a specific provider\n */\nexport function removeOAuthCredentials(provider: string): void {\n\tconst storage = loadStorage();\n\tdelete storage[provider];\n\tsaveStorage(storage);\n\toauthStorageRevision += 1;\n}\n\n/**\n * List all providers with OAuth credentials\n */\nexport function listOAuthProviders(): string[] {\n\tconst storage = loadStorage();\n\treturn Object.keys(storage);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/platform/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/platform/client.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,10 @@ const DEFAULT_TOKEN_ENV_VARS = [
16
16
  const DEFAULT_ORGANIZATION_ENV_VARS = [
17
17
  "MAESTRO_EVALOPS_ORG_ID",
18
18
  "EVALOPS_ORGANIZATION_ID",
19
+ "EVALOPS_ORG_ID",
19
20
  "MAESTRO_ENTERPRISE_ORG_ID",
21
+ "MAESTRO_LLM_GATEWAY_ORG_ID",
22
+ "MAESTRO_REMOTE_RUNNER_ORG_ID",
20
23
  ];
21
24
  const DEFAULT_TEAM_ENV_VARS = [
22
25
  "MAESTRO_EVALOPS_TEAM_ID",
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/platform/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { getOAuthToken } from \"../oauth/index.js\";\nimport { loadOAuthCredentials } from \"../oauth/storage.js\";\nimport {\n\ttype DownstreamFailureMode,\n\tfetchDownstream,\n} from \"../utils/downstream-http.js\";\n\nexport const CONNECT_PROTOCOL_VERSION = \"1\";\nexport const DEFAULT_PLATFORM_TIMEOUT_MS = 2_000;\nexport const DEFAULT_PLATFORM_MAX_ATTEMPTS = 2;\n\nexport interface PlatformServiceConfig {\n\tbaseUrl: string;\n\ttoken?: string;\n\torganizationId?: string;\n\tteamId?: string;\n\tworkspaceId?: string;\n\ttimeoutMs: number;\n\tmaxAttempts: number;\n}\n\nexport interface ResolvePlatformServiceConfigOptions {\n\tbaseUrlEnvVars: readonly string[];\n\ttokenEnvVars?: readonly string[];\n\torganizationEnvVars?: readonly string[];\n\tteamEnvVars?: readonly string[];\n\tworkspaceEnvVars?: readonly string[];\n\ttimeoutEnvVars?: readonly string[];\n\tmaxAttemptsEnvVars?: readonly string[];\n\tbaseUrlSuffixes?: readonly string[];\n\tdefaultTimeoutMs?: number;\n\tdefaultMaxAttempts?: number;\n\trequireBaseUrl?: boolean;\n\trequireOrganizationId?: boolean;\n\trequireToken?: boolean;\n}\n\nexport interface PlatformRequestOptions {\n\tserviceName: string;\n\tfailureMode: DownstreamFailureMode;\n\ttimeoutMs: number;\n\tmaxAttempts?: number;\n\tsignal?: AbortSignal;\n}\n\nconst SHARED_PLATFORM_BASE_URL_ENV_VARS = [\n\t\"MAESTRO_PLATFORM_BASE_URL\",\n\t\"MAESTRO_EVALOPS_BASE_URL\",\n\t\"EVALOPS_BASE_URL\",\n] as const;\n\nconst DEFAULT_TOKEN_ENV_VARS = [\n\t\"MAESTRO_EVALOPS_ACCESS_TOKEN\",\n\t\"EVALOPS_TOKEN\",\n] as const;\n\nconst DEFAULT_ORGANIZATION_ENV_VARS = [\n\t\"MAESTRO_EVALOPS_ORG_ID\",\n\t\"EVALOPS_ORGANIZATION_ID\",\n\t\"MAESTRO_ENTERPRISE_ORG_ID\",\n] as const;\n\nconst DEFAULT_TEAM_ENV_VARS = [\n\t\"MAESTRO_EVALOPS_TEAM_ID\",\n\t\"MAESTRO_LLM_GATEWAY_TEAM_ID\",\n] as const;\n\nexport function trimString(value: string | undefined): string | undefined {\n\tconst trimmed = value?.trim();\n\treturn trimmed ? trimmed : undefined;\n}\n\nexport function getEnvValue(names: readonly string[]): string | undefined {\n\tfor (const name of names) {\n\t\tconst value = trimString(process.env[name]);\n\t\tif (value) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport function parsePositiveInt(\n\tvalue: string | undefined,\n\tfallback: number,\n): number {\n\tconst parsed = Number.parseInt(value ?? \"\", 10);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n}\n\nexport function normalizeBaseUrl(\n\tbaseUrl: string,\n\tsuffixes: readonly string[] = [],\n): string {\n\tlet normalized = baseUrl.trim().replace(/\\/+$/u, \"\");\n\tfor (const suffix of suffixes) {\n\t\tif (normalized.endsWith(suffix)) {\n\t\t\tnormalized = normalized.slice(0, -suffix.length).replace(/\\/+$/u, \"\");\n\t\t}\n\t}\n\treturn normalized;\n}\n\nexport function resolveOrganizationId(\n\tenvVars: readonly string[] = DEFAULT_ORGANIZATION_ENV_VARS,\n): string | undefined {\n\tconst envOrgId = getEnvValue(envVars);\n\tif (envOrgId) {\n\t\treturn envOrgId;\n\t}\n\tconst stored = loadOAuthCredentials(\"evalops\")?.metadata?.organizationId;\n\treturn typeof stored === \"string\" ? trimString(stored) : undefined;\n}\n\nexport function resolveTeamId(\n\tenvVars: readonly string[] = DEFAULT_TEAM_ENV_VARS,\n): string | undefined {\n\treturn getEnvValue(envVars);\n}\n\nexport function resolveWorkspaceId(\n\tenvVars: readonly string[] = DEFAULT_ORGANIZATION_ENV_VARS,\n): string | undefined {\n\treturn getEnvValue(envVars) ?? resolveOrganizationId();\n}\n\nexport function resolveConfiguredToken(\n\tenvVars: readonly string[] = DEFAULT_TOKEN_ENV_VARS,\n): string | undefined {\n\tconst envToken = getEnvValue(envVars);\n\tif (envToken) {\n\t\treturn envToken;\n\t}\n\tconst stored = loadOAuthCredentials(\"evalops\")?.access;\n\treturn typeof stored === \"string\" ? trimString(stored) : undefined;\n}\n\nexport async function resolvePlatformToken(\n\tenvVars: readonly string[] = DEFAULT_TOKEN_ENV_VARS,\n): Promise<string | undefined> {\n\treturn getEnvValue(envVars) ?? (await getOAuthToken(\"evalops\")) ?? undefined;\n}\n\nexport async function resolvePlatformServiceConfig(\n\toptions: ResolvePlatformServiceConfigOptions,\n): Promise<PlatformServiceConfig | null> {\n\tconst baseUrl = getEnvValue([\n\t\t...options.baseUrlEnvVars,\n\t\t...SHARED_PLATFORM_BASE_URL_ENV_VARS,\n\t]);\n\tif (!baseUrl && options.requireBaseUrl !== false) {\n\t\treturn null;\n\t}\n\n\tconst organizationId = resolveOrganizationId(options.organizationEnvVars);\n\tif (!organizationId && options.requireOrganizationId !== false) {\n\t\treturn null;\n\t}\n\n\tconst token = await resolvePlatformToken(options.tokenEnvVars);\n\tif (!token && options.requireToken !== false) {\n\t\treturn null;\n\t}\n\n\tconst workspaceId = options.workspaceEnvVars\n\t\t? resolveWorkspaceId(options.workspaceEnvVars)\n\t\t: organizationId;\n\n\treturn {\n\t\tbaseUrl: normalizeBaseUrl(baseUrl ?? \"\", options.baseUrlSuffixes),\n\t\t...(token ? { token } : {}),\n\t\t...(organizationId ? { organizationId } : {}),\n\t\tteamId: resolveTeamId(options.teamEnvVars),\n\t\t...(workspaceId ? { workspaceId } : {}),\n\t\ttimeoutMs: parsePositiveInt(\n\t\t\tgetEnvValue(options.timeoutEnvVars ?? []),\n\t\t\toptions.defaultTimeoutMs ?? DEFAULT_PLATFORM_TIMEOUT_MS,\n\t\t),\n\t\tmaxAttempts: parsePositiveInt(\n\t\t\tgetEnvValue(options.maxAttemptsEnvVars ?? []),\n\t\t\toptions.defaultMaxAttempts ?? DEFAULT_PLATFORM_MAX_ATTEMPTS,\n\t\t),\n\t};\n}\n\nfunction buildPlatformJsonHeaders(\n\tconfig: Pick<PlatformServiceConfig, \"organizationId\" | \"token\">,\n\textraHeaders?: Record<string, string | undefined>,\n): Record<string, string> {\n\treturn Object.fromEntries(\n\t\tObject.entries({\n\t\t\t...(config.token ? { Authorization: `Bearer ${config.token}` } : {}),\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...(config.organizationId\n\t\t\t\t? { \"X-Organization-ID\": config.organizationId }\n\t\t\t\t: {}),\n\t\t\t...(extraHeaders ?? {}),\n\t\t}).filter(\n\t\t\t(entry): entry is [string, string] =>\n\t\t\t\ttypeof entry[1] === \"string\" && entry[1].trim().length > 0,\n\t\t),\n\t);\n}\n\nexport function buildPlatformConnectHeaders(\n\tconfig: Pick<PlatformServiceConfig, \"organizationId\" | \"token\">,\n\textraHeaders?: Record<string, string | undefined>,\n): Record<string, string> {\n\treturn buildPlatformJsonHeaders(config, {\n\t\t\"Connect-Protocol-Version\": CONNECT_PROTOCOL_VERSION,\n\t\t...(extraHeaders ?? {}),\n\t});\n}\n\nexport async function postPlatformConnect(\n\tconfig: PlatformServiceConfig,\n\tpath: string,\n\tbody: Record<string, unknown>,\n\toptions: PlatformRequestOptions,\n\theaders?: Record<string, string | undefined>,\n): Promise<Response> {\n\treturn fetchDownstream(\n\t\t`${config.baseUrl}${path}`,\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\theaders: buildPlatformConnectHeaders(config, headers),\n\t\t\tbody: JSON.stringify(body),\n\t\t\tsignal: options.signal,\n\t\t},\n\t\t{\n\t\t\tserviceName: options.serviceName,\n\t\t\tfailureMode: options.failureMode,\n\t\t\ttimeoutMs: options.timeoutMs,\n\t\t\tmaxAttempts: options.maxAttempts,\n\t\t},\n\t);\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/platform/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { getOAuthToken } from \"../oauth/index.js\";\nimport { loadOAuthCredentials } from \"../oauth/storage.js\";\nimport {\n\ttype DownstreamFailureMode,\n\tfetchDownstream,\n} from \"../utils/downstream-http.js\";\n\nexport const CONNECT_PROTOCOL_VERSION = \"1\";\nexport const DEFAULT_PLATFORM_TIMEOUT_MS = 2_000;\nexport const DEFAULT_PLATFORM_MAX_ATTEMPTS = 2;\n\nexport interface PlatformServiceConfig {\n\tbaseUrl: string;\n\ttoken?: string;\n\torganizationId?: string;\n\tteamId?: string;\n\tworkspaceId?: string;\n\ttimeoutMs: number;\n\tmaxAttempts: number;\n}\n\nexport interface ResolvePlatformServiceConfigOptions {\n\tbaseUrlEnvVars: readonly string[];\n\ttokenEnvVars?: readonly string[];\n\torganizationEnvVars?: readonly string[];\n\tteamEnvVars?: readonly string[];\n\tworkspaceEnvVars?: readonly string[];\n\ttimeoutEnvVars?: readonly string[];\n\tmaxAttemptsEnvVars?: readonly string[];\n\tbaseUrlSuffixes?: readonly string[];\n\tdefaultTimeoutMs?: number;\n\tdefaultMaxAttempts?: number;\n\trequireBaseUrl?: boolean;\n\trequireOrganizationId?: boolean;\n\trequireToken?: boolean;\n}\n\nexport interface PlatformRequestOptions {\n\tserviceName: string;\n\tfailureMode: DownstreamFailureMode;\n\ttimeoutMs: number;\n\tmaxAttempts?: number;\n\tsignal?: AbortSignal;\n}\n\nconst SHARED_PLATFORM_BASE_URL_ENV_VARS = [\n\t\"MAESTRO_PLATFORM_BASE_URL\",\n\t\"MAESTRO_EVALOPS_BASE_URL\",\n\t\"EVALOPS_BASE_URL\",\n] as const;\n\nconst DEFAULT_TOKEN_ENV_VARS = [\n\t\"MAESTRO_EVALOPS_ACCESS_TOKEN\",\n\t\"EVALOPS_TOKEN\",\n] as const;\n\nconst DEFAULT_ORGANIZATION_ENV_VARS = [\n\t\"MAESTRO_EVALOPS_ORG_ID\",\n\t\"EVALOPS_ORGANIZATION_ID\",\n\t\"EVALOPS_ORG_ID\",\n\t\"MAESTRO_ENTERPRISE_ORG_ID\",\n\t\"MAESTRO_LLM_GATEWAY_ORG_ID\",\n\t\"MAESTRO_REMOTE_RUNNER_ORG_ID\",\n] as const;\n\nconst DEFAULT_TEAM_ENV_VARS = [\n\t\"MAESTRO_EVALOPS_TEAM_ID\",\n\t\"MAESTRO_LLM_GATEWAY_TEAM_ID\",\n] as const;\n\nexport function trimString(value: string | undefined): string | undefined {\n\tconst trimmed = value?.trim();\n\treturn trimmed ? trimmed : undefined;\n}\n\nexport function getEnvValue(names: readonly string[]): string | undefined {\n\tfor (const name of names) {\n\t\tconst value = trimString(process.env[name]);\n\t\tif (value) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport function parsePositiveInt(\n\tvalue: string | undefined,\n\tfallback: number,\n): number {\n\tconst parsed = Number.parseInt(value ?? \"\", 10);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n}\n\nexport function normalizeBaseUrl(\n\tbaseUrl: string,\n\tsuffixes: readonly string[] = [],\n): string {\n\tlet normalized = baseUrl.trim().replace(/\\/+$/u, \"\");\n\tfor (const suffix of suffixes) {\n\t\tif (normalized.endsWith(suffix)) {\n\t\t\tnormalized = normalized.slice(0, -suffix.length).replace(/\\/+$/u, \"\");\n\t\t}\n\t}\n\treturn normalized;\n}\n\nexport function resolveOrganizationId(\n\tenvVars: readonly string[] = DEFAULT_ORGANIZATION_ENV_VARS,\n): string | undefined {\n\tconst envOrgId = getEnvValue(envVars);\n\tif (envOrgId) {\n\t\treturn envOrgId;\n\t}\n\tconst stored = loadOAuthCredentials(\"evalops\")?.metadata?.organizationId;\n\treturn typeof stored === \"string\" ? trimString(stored) : undefined;\n}\n\nexport function resolveTeamId(\n\tenvVars: readonly string[] = DEFAULT_TEAM_ENV_VARS,\n): string | undefined {\n\treturn getEnvValue(envVars);\n}\n\nexport function resolveWorkspaceId(\n\tenvVars: readonly string[] = DEFAULT_ORGANIZATION_ENV_VARS,\n): string | undefined {\n\treturn getEnvValue(envVars) ?? resolveOrganizationId();\n}\n\nexport function resolveConfiguredToken(\n\tenvVars: readonly string[] = DEFAULT_TOKEN_ENV_VARS,\n): string | undefined {\n\tconst envToken = getEnvValue(envVars);\n\tif (envToken) {\n\t\treturn envToken;\n\t}\n\tconst stored = loadOAuthCredentials(\"evalops\")?.access;\n\treturn typeof stored === \"string\" ? trimString(stored) : undefined;\n}\n\nexport async function resolvePlatformToken(\n\tenvVars: readonly string[] = DEFAULT_TOKEN_ENV_VARS,\n): Promise<string | undefined> {\n\treturn getEnvValue(envVars) ?? (await getOAuthToken(\"evalops\")) ?? undefined;\n}\n\nexport async function resolvePlatformServiceConfig(\n\toptions: ResolvePlatformServiceConfigOptions,\n): Promise<PlatformServiceConfig | null> {\n\tconst baseUrl = getEnvValue([\n\t\t...options.baseUrlEnvVars,\n\t\t...SHARED_PLATFORM_BASE_URL_ENV_VARS,\n\t]);\n\tif (!baseUrl && options.requireBaseUrl !== false) {\n\t\treturn null;\n\t}\n\n\tconst organizationId = resolveOrganizationId(options.organizationEnvVars);\n\tif (!organizationId && options.requireOrganizationId !== false) {\n\t\treturn null;\n\t}\n\n\tconst token = await resolvePlatformToken(options.tokenEnvVars);\n\tif (!token && options.requireToken !== false) {\n\t\treturn null;\n\t}\n\n\tconst workspaceId = options.workspaceEnvVars\n\t\t? resolveWorkspaceId(options.workspaceEnvVars)\n\t\t: organizationId;\n\n\treturn {\n\t\tbaseUrl: normalizeBaseUrl(baseUrl ?? \"\", options.baseUrlSuffixes),\n\t\t...(token ? { token } : {}),\n\t\t...(organizationId ? { organizationId } : {}),\n\t\tteamId: resolveTeamId(options.teamEnvVars),\n\t\t...(workspaceId ? { workspaceId } : {}),\n\t\ttimeoutMs: parsePositiveInt(\n\t\t\tgetEnvValue(options.timeoutEnvVars ?? []),\n\t\t\toptions.defaultTimeoutMs ?? DEFAULT_PLATFORM_TIMEOUT_MS,\n\t\t),\n\t\tmaxAttempts: parsePositiveInt(\n\t\t\tgetEnvValue(options.maxAttemptsEnvVars ?? []),\n\t\t\toptions.defaultMaxAttempts ?? DEFAULT_PLATFORM_MAX_ATTEMPTS,\n\t\t),\n\t};\n}\n\nfunction buildPlatformJsonHeaders(\n\tconfig: Pick<PlatformServiceConfig, \"organizationId\" | \"token\">,\n\textraHeaders?: Record<string, string | undefined>,\n): Record<string, string> {\n\treturn Object.fromEntries(\n\t\tObject.entries({\n\t\t\t...(config.token ? { Authorization: `Bearer ${config.token}` } : {}),\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t...(config.organizationId\n\t\t\t\t? { \"X-Organization-ID\": config.organizationId }\n\t\t\t\t: {}),\n\t\t\t...(extraHeaders ?? {}),\n\t\t}).filter(\n\t\t\t(entry): entry is [string, string] =>\n\t\t\t\ttypeof entry[1] === \"string\" && entry[1].trim().length > 0,\n\t\t),\n\t);\n}\n\nexport function buildPlatformConnectHeaders(\n\tconfig: Pick<PlatformServiceConfig, \"organizationId\" | \"token\">,\n\textraHeaders?: Record<string, string | undefined>,\n): Record<string, string> {\n\treturn buildPlatformJsonHeaders(config, {\n\t\t\"Connect-Protocol-Version\": CONNECT_PROTOCOL_VERSION,\n\t\t...(extraHeaders ?? {}),\n\t});\n}\n\nexport async function postPlatformConnect(\n\tconfig: PlatformServiceConfig,\n\tpath: string,\n\tbody: Record<string, unknown>,\n\toptions: PlatformRequestOptions,\n\theaders?: Record<string, string | undefined>,\n): Promise<Response> {\n\treturn fetchDownstream(\n\t\t`${config.baseUrl}${path}`,\n\t\t{\n\t\t\tmethod: \"POST\",\n\t\t\theaders: buildPlatformConnectHeaders(config, headers),\n\t\t\tbody: JSON.stringify(body),\n\t\t\tsignal: options.signal,\n\t\t},\n\t\t{\n\t\t\tserviceName: options.serviceName,\n\t\t\tfailureMode: options.failureMode,\n\t\t\ttimeoutMs: options.timeoutMs,\n\t\t\tmaxAttempts: options.maxAttempts,\n\t\t},\n\t);\n}\n"]}
@@ -230,6 +230,7 @@ export declare const PLATFORM_CONNECT_METHODS: {
230
230
  };
231
231
  export declare const PLATFORM_HTTP_ROUTES: {
232
232
  readonly identity: {
233
+ readonly apiKeys: "/v1/api-keys";
233
234
  readonly authGoogleStart: "/v1/auth/google/start";
234
235
  readonly deviceChallenges: "/v1/device-challenges";
235
236
  readonly devices: "/v1/devices";
@@ -1 +1 @@
1
- {"version":3,"file":"core-services.d.ts","sourceRoot":"","sources":["../../src/platform/core-services.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,yBAAyB;;;;;;;;;;;CAW5B,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqN3B,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;CAYvB,CAAC;AAEX,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,yBAAyB,CACxC,UAAU,EAAE,+BAA+B,GACzC,MAAM,CAER"}
1
+ {"version":3,"file":"core-services.d.ts","sourceRoot":"","sources":["../../src/platform/core-services.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,+BAA+B;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,yBAAyB;;;;;;;;;;;CAW5B,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqN3B,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;CAavB,CAAC;AAEX,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,yBAAyB,CACxC,UAAU,EAAE,+BAA+B,GACzC,MAAM,CAER"}
@@ -226,6 +226,7 @@ export const PLATFORM_CONNECT_METHODS = {
226
226
  };
227
227
  export const PLATFORM_HTTP_ROUTES = {
228
228
  identity: {
229
+ apiKeys: "/v1/api-keys",
229
230
  authGoogleStart: "/v1/auth/google/start",
230
231
  deviceChallenges: "/v1/device-challenges",
231
232
  devices: "/v1/devices",
@@ -1 +1 @@
1
- {"version":3,"file":"core-services.js","sourceRoot":"","sources":["../../src/platform/core-services.ts"],"names":[],"mappings":"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","sourcesContent":["export interface PlatformConnectMethodDescriptor {\n\treadonly service: string;\n\treadonly method: string;\n}\n\nexport const PLATFORM_CONNECT_SERVICES = {\n\tagentRuntime: \"agentruntime.v1.AgentRuntimeService\",\n\tapprovals: \"approvals.v1.ApprovalService\",\n\tconnectors: \"connectors.v1.ConnectorService\",\n\tgovernance: \"governance.v1.GovernanceService\",\n\tllmGateway: \"llmgateway.v1.GatewayService\",\n\tmaestroTimeline: \"maestro.v1.MaestroTimelineService\",\n\tmeter: \"meter.v1.MeterService\",\n\tprompts: \"prompts.v1.PromptService\",\n\tremoteRunner: \"remoterunner.v1.RemoteRunnerService\",\n\ttoolexecution: \"toolexecution.v1.ToolExecutionService\",\n} as const;\n\nexport const PLATFORM_CONNECT_METHODS = {\n\tagentRuntime: {\n\t\tclaimNextRun: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"ClaimNextRun\",\n\t\t},\n\t\tcompleteRun: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"CompleteRun\",\n\t\t},\n\t\tfailRun: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"FailRun\",\n\t\t},\n\t\tgetRun: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"GetRun\",\n\t\t},\n\t\thandleTrigger: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"HandleTrigger\",\n\t\t},\n\t\tlistRunEvents: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"ListRunEvents\",\n\t\t},\n\t\trecordRunCheckpoint: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"RecordRunCheckpoint\",\n\t\t},\n\t\trecordRunCost: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"RecordRunCost\",\n\t\t},\n\t\trecordRunStep: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"RecordRunStep\",\n\t\t},\n\t\tresumeRun: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"ResumeRun\",\n\t\t},\n\t\twaitRun: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"WaitRun\",\n\t\t},\n\t},\n\tapprovals: {\n\t\trequestApproval: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.approvals,\n\t\t\tmethod: \"RequestApproval\",\n\t\t},\n\t\tresolveApproval: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.approvals,\n\t\t\tmethod: \"ResolveApproval\",\n\t\t},\n\t},\n\tconnectors: {\n\t\tgetCapabilities: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"GetCapabilities\",\n\t\t},\n\t\tgetConnection: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"GetConnection\",\n\t\t},\n\t\tgetDegradedReadPolicy: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"GetDegradedReadPolicy\",\n\t\t},\n\t\tgetHealth: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"GetHealth\",\n\t\t},\n\t\tlistConnections: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"ListConnections\",\n\t\t},\n\t\trefreshConnection: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"RefreshConnection\",\n\t\t},\n\t\tregisterConnection: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"RegisterConnection\",\n\t\t},\n\t\tresolveSourceOfTruth: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"ResolveSourceOfTruth\",\n\t\t},\n\t\trevokeConnection: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"RevokeConnection\",\n\t\t},\n\t\tsetSourceOfTruthPolicy: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"SetSourceOfTruthPolicy\",\n\t\t},\n\t},\n\tgovernance: {\n\t\tevaluateAction: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.governance,\n\t\t\tmethod: \"EvaluateAction\",\n\t\t},\n\t},\n\tllmGateway: {\n\t\tcreateChatCompletion: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.llmGateway,\n\t\t\tmethod: \"CreateChatCompletion\",\n\t\t},\n\t\tcreateEmbedding: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.llmGateway,\n\t\t\tmethod: \"CreateEmbedding\",\n\t\t},\n\t\tcreateMessage: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.llmGateway,\n\t\t\tmethod: \"CreateMessage\",\n\t\t},\n\t\tcreateResponse: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.llmGateway,\n\t\t\tmethod: \"CreateResponse\",\n\t\t},\n\t\tgetInfo: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.llmGateway,\n\t\t\tmethod: \"GetInfo\",\n\t\t},\n\t},\n\tmaestroTimeline: {\n\t\tlistRunTimeline: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.maestroTimeline,\n\t\t\tmethod: \"ListRunTimeline\",\n\t\t},\n\t},\n\tmeter: {\n\t\tgetEventDashboard: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.meter,\n\t\t\tmethod: \"GetEventDashboard\",\n\t\t},\n\t\tingestWideEvent: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.meter,\n\t\t\tmethod: \"IngestWideEvent\",\n\t\t},\n\t\tqueryWideEvents: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.meter,\n\t\t\tmethod: \"QueryWideEvents\",\n\t\t},\n\t},\n\tprompts: {\n\t\tresolve: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.prompts,\n\t\t\tmethod: \"Resolve\",\n\t\t},\n\t},\n\tremoteRunner: {\n\t\tcreateRunnerSession: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"CreateRunnerSession\",\n\t\t},\n\t\textendRunnerSession: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"ExtendRunnerSession\",\n\t\t},\n\t\tgetRunnerSession: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"GetRunnerSession\",\n\t\t},\n\t\tgetStatus: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"GetStatus\",\n\t\t},\n\t\tlistRunnerSessionEvents: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"ListRunnerSessionEvents\",\n\t\t},\n\t\tlistRunnerSessions: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"ListRunnerSessions\",\n\t\t},\n\t\tmintAttachToken: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"MintAttachToken\",\n\t\t},\n\t\trevokeAttachToken: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"RevokeAttachToken\",\n\t\t},\n\t\tstopRunnerSession: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"StopRunnerSession\",\n\t\t},\n\t},\n\ttoolexecution: {\n\t\texecuteTool: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.toolexecution,\n\t\t\tmethod: \"ExecuteTool\",\n\t\t},\n\t\tgetToolExecution: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.toolexecution,\n\t\t\tmethod: \"GetToolExecution\",\n\t\t},\n\t\tlistToolExecutions: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.toolexecution,\n\t\t\tmethod: \"ListToolExecutions\",\n\t\t},\n\t\trecordToolExecutionOutput: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.toolexecution,\n\t\t\tmethod: \"RecordToolExecutionOutput\",\n\t\t},\n\t\tresumeToolExecution: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.toolexecution,\n\t\t\tmethod: \"ResumeToolExecution\",\n\t\t},\n\t},\n} as const;\n\nexport const PLATFORM_HTTP_ROUTES = {\n\tidentity: {\n\t\tauthGoogleStart: \"/v1/auth/google/start\",\n\t\tdeviceChallenges: \"/v1/device-challenges\",\n\t\tdevices: \"/v1/devices\",\n\t\ttokenRefresh: \"/v1/tokens/refresh\",\n\t\ttokenRevoke: \"/v1/tokens/revoke\",\n\t\tdelegationTokens: \"/v1/delegation-tokens\",\n\t},\n\tmemory: {\n\t\trecall: \"/v1/memories/recall\",\n\t},\n} as const;\n\nexport function platformConnectServicePath(service: string): string {\n\treturn `/${service}`;\n}\n\nexport function platformConnectMethodPath(\n\tdescriptor: PlatformConnectMethodDescriptor,\n): string {\n\treturn `${platformConnectServicePath(descriptor.service)}/${descriptor.method}`;\n}\n"]}
1
+ {"version":3,"file":"core-services.js","sourceRoot":"","sources":["../../src/platform/core-services.ts"],"names":[],"mappings":"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","sourcesContent":["export interface PlatformConnectMethodDescriptor {\n\treadonly service: string;\n\treadonly method: string;\n}\n\nexport const PLATFORM_CONNECT_SERVICES = {\n\tagentRuntime: \"agentruntime.v1.AgentRuntimeService\",\n\tapprovals: \"approvals.v1.ApprovalService\",\n\tconnectors: \"connectors.v1.ConnectorService\",\n\tgovernance: \"governance.v1.GovernanceService\",\n\tllmGateway: \"llmgateway.v1.GatewayService\",\n\tmaestroTimeline: \"maestro.v1.MaestroTimelineService\",\n\tmeter: \"meter.v1.MeterService\",\n\tprompts: \"prompts.v1.PromptService\",\n\tremoteRunner: \"remoterunner.v1.RemoteRunnerService\",\n\ttoolexecution: \"toolexecution.v1.ToolExecutionService\",\n} as const;\n\nexport const PLATFORM_CONNECT_METHODS = {\n\tagentRuntime: {\n\t\tclaimNextRun: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"ClaimNextRun\",\n\t\t},\n\t\tcompleteRun: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"CompleteRun\",\n\t\t},\n\t\tfailRun: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"FailRun\",\n\t\t},\n\t\tgetRun: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"GetRun\",\n\t\t},\n\t\thandleTrigger: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"HandleTrigger\",\n\t\t},\n\t\tlistRunEvents: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"ListRunEvents\",\n\t\t},\n\t\trecordRunCheckpoint: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"RecordRunCheckpoint\",\n\t\t},\n\t\trecordRunCost: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"RecordRunCost\",\n\t\t},\n\t\trecordRunStep: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"RecordRunStep\",\n\t\t},\n\t\tresumeRun: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"ResumeRun\",\n\t\t},\n\t\twaitRun: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.agentRuntime,\n\t\t\tmethod: \"WaitRun\",\n\t\t},\n\t},\n\tapprovals: {\n\t\trequestApproval: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.approvals,\n\t\t\tmethod: \"RequestApproval\",\n\t\t},\n\t\tresolveApproval: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.approvals,\n\t\t\tmethod: \"ResolveApproval\",\n\t\t},\n\t},\n\tconnectors: {\n\t\tgetCapabilities: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"GetCapabilities\",\n\t\t},\n\t\tgetConnection: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"GetConnection\",\n\t\t},\n\t\tgetDegradedReadPolicy: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"GetDegradedReadPolicy\",\n\t\t},\n\t\tgetHealth: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"GetHealth\",\n\t\t},\n\t\tlistConnections: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"ListConnections\",\n\t\t},\n\t\trefreshConnection: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"RefreshConnection\",\n\t\t},\n\t\tregisterConnection: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"RegisterConnection\",\n\t\t},\n\t\tresolveSourceOfTruth: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"ResolveSourceOfTruth\",\n\t\t},\n\t\trevokeConnection: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"RevokeConnection\",\n\t\t},\n\t\tsetSourceOfTruthPolicy: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.connectors,\n\t\t\tmethod: \"SetSourceOfTruthPolicy\",\n\t\t},\n\t},\n\tgovernance: {\n\t\tevaluateAction: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.governance,\n\t\t\tmethod: \"EvaluateAction\",\n\t\t},\n\t},\n\tllmGateway: {\n\t\tcreateChatCompletion: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.llmGateway,\n\t\t\tmethod: \"CreateChatCompletion\",\n\t\t},\n\t\tcreateEmbedding: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.llmGateway,\n\t\t\tmethod: \"CreateEmbedding\",\n\t\t},\n\t\tcreateMessage: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.llmGateway,\n\t\t\tmethod: \"CreateMessage\",\n\t\t},\n\t\tcreateResponse: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.llmGateway,\n\t\t\tmethod: \"CreateResponse\",\n\t\t},\n\t\tgetInfo: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.llmGateway,\n\t\t\tmethod: \"GetInfo\",\n\t\t},\n\t},\n\tmaestroTimeline: {\n\t\tlistRunTimeline: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.maestroTimeline,\n\t\t\tmethod: \"ListRunTimeline\",\n\t\t},\n\t},\n\tmeter: {\n\t\tgetEventDashboard: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.meter,\n\t\t\tmethod: \"GetEventDashboard\",\n\t\t},\n\t\tingestWideEvent: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.meter,\n\t\t\tmethod: \"IngestWideEvent\",\n\t\t},\n\t\tqueryWideEvents: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.meter,\n\t\t\tmethod: \"QueryWideEvents\",\n\t\t},\n\t},\n\tprompts: {\n\t\tresolve: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.prompts,\n\t\t\tmethod: \"Resolve\",\n\t\t},\n\t},\n\tremoteRunner: {\n\t\tcreateRunnerSession: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"CreateRunnerSession\",\n\t\t},\n\t\textendRunnerSession: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"ExtendRunnerSession\",\n\t\t},\n\t\tgetRunnerSession: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"GetRunnerSession\",\n\t\t},\n\t\tgetStatus: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"GetStatus\",\n\t\t},\n\t\tlistRunnerSessionEvents: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"ListRunnerSessionEvents\",\n\t\t},\n\t\tlistRunnerSessions: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"ListRunnerSessions\",\n\t\t},\n\t\tmintAttachToken: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"MintAttachToken\",\n\t\t},\n\t\trevokeAttachToken: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"RevokeAttachToken\",\n\t\t},\n\t\tstopRunnerSession: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.remoteRunner,\n\t\t\tmethod: \"StopRunnerSession\",\n\t\t},\n\t},\n\ttoolexecution: {\n\t\texecuteTool: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.toolexecution,\n\t\t\tmethod: \"ExecuteTool\",\n\t\t},\n\t\tgetToolExecution: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.toolexecution,\n\t\t\tmethod: \"GetToolExecution\",\n\t\t},\n\t\tlistToolExecutions: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.toolexecution,\n\t\t\tmethod: \"ListToolExecutions\",\n\t\t},\n\t\trecordToolExecutionOutput: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.toolexecution,\n\t\t\tmethod: \"RecordToolExecutionOutput\",\n\t\t},\n\t\tresumeToolExecution: {\n\t\t\tservice: PLATFORM_CONNECT_SERVICES.toolexecution,\n\t\t\tmethod: \"ResumeToolExecution\",\n\t\t},\n\t},\n} as const;\n\nexport const PLATFORM_HTTP_ROUTES = {\n\tidentity: {\n\t\tapiKeys: \"/v1/api-keys\",\n\t\tauthGoogleStart: \"/v1/auth/google/start\",\n\t\tdeviceChallenges: \"/v1/device-challenges\",\n\t\tdevices: \"/v1/devices\",\n\t\ttokenRefresh: \"/v1/tokens/refresh\",\n\t\ttokenRevoke: \"/v1/tokens/revoke\",\n\t\tdelegationTokens: \"/v1/delegation-tokens\",\n\t},\n\tmemory: {\n\t\trecall: \"/v1/memories/recall\",\n\t},\n} as const;\n\nexport function platformConnectServicePath(service: string): string {\n\treturn `/${service}`;\n}\n\nexport function platformConnectMethodPath(\n\tdescriptor: PlatformConnectMethodDescriptor,\n): string {\n\treturn `${platformConnectServicePath(descriptor.service)}/${descriptor.method}`;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-execution-client.d.ts","sourceRoot":"","sources":["../../src/platform/tool-execution-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-execution-client.d.ts","sourceRoot":"","sources":["../../src/platform/tool-execution-client.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,10 @@ const TOOL_EXECUTION_ORGANIZATION_ENV_VARS = [
20
20
  "MAESTRO_TOOL_EXECUTION_ORGANIZATION_ID",
21
21
  "MAESTRO_EVALOPS_ORG_ID",
22
22
  "EVALOPS_ORGANIZATION_ID",
23
+ "EVALOPS_ORG_ID",
23
24
  "MAESTRO_ENTERPRISE_ORG_ID",
25
+ "MAESTRO_LLM_GATEWAY_ORG_ID",
26
+ "MAESTRO_REMOTE_RUNNER_ORG_ID",
24
27
  ];
25
28
  const TOOL_EXECUTION_WORKSPACE_ENV_VARS = [
26
29
  "TOOL_EXECUTION_SERVICE_WORKSPACE_ID",