@agent-native/core 0.35.0 → 0.35.3

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 (104) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/context-xray-local.d.ts +2 -2
  3. package/dist/cli/context-xray-local.d.ts.map +1 -1
  4. package/dist/cli/context-xray-local.js +1449 -53
  5. package/dist/cli/context-xray-local.js.map +1 -1
  6. package/dist/cli/create.d.ts.map +1 -1
  7. package/dist/cli/create.js +1 -0
  8. package/dist/cli/create.js.map +1 -1
  9. package/dist/cli/skills.d.ts.map +1 -1
  10. package/dist/cli/skills.js +226 -78
  11. package/dist/cli/skills.js.map +1 -1
  12. package/dist/cli/templates-meta.d.ts.map +1 -1
  13. package/dist/cli/templates-meta.js +8 -4
  14. package/dist/cli/templates-meta.js.map +1 -1
  15. package/dist/client/AgentPanel.d.ts.map +1 -1
  16. package/dist/client/AgentPanel.js +5 -11
  17. package/dist/client/AgentPanel.js.map +1 -1
  18. package/dist/client/AssistantChat.d.ts +6 -0
  19. package/dist/client/AssistantChat.d.ts.map +1 -1
  20. package/dist/client/AssistantChat.js +33 -5
  21. package/dist/client/AssistantChat.js.map +1 -1
  22. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  23. package/dist/client/MultiTabAssistantChat.js +63 -3
  24. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  25. package/dist/client/agent-chat.d.ts +39 -3
  26. package/dist/client/agent-chat.d.ts.map +1 -1
  27. package/dist/client/agent-chat.js +168 -33
  28. package/dist/client/agent-chat.js.map +1 -1
  29. package/dist/client/application-state.d.ts +13 -0
  30. package/dist/client/application-state.d.ts.map +1 -0
  31. package/dist/client/application-state.js +99 -0
  32. package/dist/client/application-state.js.map +1 -0
  33. package/dist/client/frame-protocol.d.ts +11 -3
  34. package/dist/client/frame-protocol.d.ts.map +1 -1
  35. package/dist/client/frame-protocol.js.map +1 -1
  36. package/dist/client/index.d.ts +4 -2
  37. package/dist/client/index.d.ts.map +1 -1
  38. package/dist/client/index.js +4 -2
  39. package/dist/client/index.js.map +1 -1
  40. package/dist/client/progress/RunsTray.d.ts +1 -0
  41. package/dist/client/progress/RunsTray.d.ts.map +1 -1
  42. package/dist/client/progress/RunsTray.js +50 -16
  43. package/dist/client/progress/RunsTray.js.map +1 -1
  44. package/dist/client/use-action.d.ts +12 -0
  45. package/dist/client/use-action.d.ts.map +1 -1
  46. package/dist/client/use-action.js +14 -2
  47. package/dist/client/use-action.js.map +1 -1
  48. package/dist/client/use-agent-chat-context.d.ts +15 -0
  49. package/dist/client/use-agent-chat-context.d.ts.map +1 -0
  50. package/dist/client/use-agent-chat-context.js +32 -0
  51. package/dist/client/use-agent-chat-context.js.map +1 -0
  52. package/dist/deploy/build.d.ts.map +1 -1
  53. package/dist/deploy/build.js +1 -2
  54. package/dist/deploy/build.js.map +1 -1
  55. package/dist/index.browser.d.ts +1 -1
  56. package/dist/index.browser.d.ts.map +1 -1
  57. package/dist/index.browser.js +1 -1
  58. package/dist/index.browser.js.map +1 -1
  59. package/dist/index.d.ts +1 -1
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +1 -1
  62. package/dist/index.js.map +1 -1
  63. package/dist/mcp/server.d.ts +4 -2
  64. package/dist/mcp/server.d.ts.map +1 -1
  65. package/dist/mcp/server.js +33 -4
  66. package/dist/mcp/server.js.map +1 -1
  67. package/dist/provider-api/index.d.ts.map +1 -1
  68. package/dist/provider-api/index.js +14 -6
  69. package/dist/provider-api/index.js.map +1 -1
  70. package/dist/server/agent-teams.d.ts +4 -1
  71. package/dist/server/agent-teams.d.ts.map +1 -1
  72. package/dist/server/agent-teams.js +104 -28
  73. package/dist/server/agent-teams.js.map +1 -1
  74. package/dist/server/auth.d.ts.map +1 -1
  75. package/dist/server/auth.js +21 -11
  76. package/dist/server/auth.js.map +1 -1
  77. package/dist/server/request-context.d.ts +3 -4
  78. package/dist/server/request-context.d.ts.map +1 -1
  79. package/dist/server/request-context.js.map +1 -1
  80. package/dist/server/self-dispatch.d.ts.map +1 -1
  81. package/dist/server/self-dispatch.js +17 -1
  82. package/dist/server/self-dispatch.js.map +1 -1
  83. package/dist/server/ssr-handler.d.ts.map +1 -1
  84. package/dist/server/ssr-handler.js +9 -18
  85. package/dist/server/ssr-handler.js.map +1 -1
  86. package/dist/templates/default/AGENTS.md +1 -1
  87. package/dist/templates/default/DEVELOPING.md +7 -13
  88. package/dist/templates/default/package.json +3 -3
  89. package/dist/templates/workspace-core/AGENTS.md +6 -4
  90. package/dist/templates/workspace-root/AGENTS.md +6 -4
  91. package/docs/content/actions.md +5 -7
  92. package/docs/content/client.md +49 -44
  93. package/docs/content/context-awareness.md +20 -33
  94. package/docs/content/creating-templates.md +2 -2
  95. package/docs/content/key-concepts.md +3 -3
  96. package/docs/content/sharing.md +1 -1
  97. package/docs/content/template-mail.md +1 -1
  98. package/docs/content/voice-input.md +1 -1
  99. package/package.json +11 -7
  100. package/src/templates/default/AGENTS.md +1 -1
  101. package/src/templates/default/DEVELOPING.md +7 -13
  102. package/src/templates/default/package.json +3 -3
  103. package/src/templates/workspace-core/AGENTS.md +6 -4
  104. package/src/templates/workspace-root/AGENTS.md +6 -4
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider-api/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport {\n resolveCredential,\n type CredentialContext,\n} from \"../credentials/index.js\";\nimport {\n createSsrfSafeDispatcher,\n isBlockedExtensionUrlWithDns,\n} from \"../extensions/url-safety.js\";\nimport {\n listOAuthAccountsByOwner,\n saveOAuthTokens,\n} from \"../oauth-tokens/index.js\";\nimport { getCredentialContext } from \"../server/request-context.js\";\nimport { resolveWorkspaceConnectionCredentialForApp } from \"../workspace-connections/credentials.js\";\nimport type { WorkspaceConnectionTemplateUse } from \"../connections/catalog.js\";\n\nexport const PROVIDER_API_IDS = [\n \"amplitude\",\n \"apollo\",\n \"bigquery\",\n \"commonroom\",\n \"dataforseo\",\n \"ga4\",\n \"gcloud\",\n \"github\",\n \"gmail\",\n \"gong\",\n \"google_calendar\",\n \"google_drive\",\n \"granola\",\n \"grafana\",\n \"hubspot\",\n \"jira\",\n \"mixpanel\",\n \"notion\",\n \"posthog\",\n \"prometheus\",\n \"pylon\",\n \"sentry\",\n \"slack\",\n \"stripe\",\n \"twitter\",\n] as const;\n\nexport type ProviderApiId = (typeof PROVIDER_API_IDS)[number];\n\nexport type ProviderApiMethod =\n | \"GET\"\n | \"POST\"\n | \"PUT\"\n | \"PATCH\"\n | \"DELETE\"\n | \"HEAD\";\n\nexport interface ProviderApiRequestArgs {\n provider: ProviderApiId | string;\n method?: ProviderApiMethod;\n path: string;\n query?: unknown;\n headers?: Record<string, unknown>;\n body?: unknown;\n auth?: \"default\" | \"none\";\n timeoutMs?: number;\n maxBytes?: number;\n connectionId?: string | null;\n accountId?: string | null;\n}\n\nexport type ProviderApiAuthKind =\n | { type: \"none\" }\n | {\n type: \"bearer\";\n keys: readonly string[];\n workspaceProvider?: string;\n }\n | {\n type: \"basic\";\n usernameKey: string;\n passwordKey: string;\n workspaceProvider?: string;\n }\n | {\n type: \"basic-raw\";\n key: string;\n workspaceProvider?: string;\n }\n | {\n type: \"api-key-header\";\n key: string;\n header: string;\n workspaceProvider?: string;\n }\n | {\n type: \"google-service-account\";\n scopes: readonly string[];\n }\n | {\n type: \"oauth-bearer\";\n oauthProvider: string;\n tokenLabel: string;\n }\n | {\n type: \"prometheus\";\n };\n\nexport interface ProviderApiConfig {\n id: ProviderApiId;\n label: string;\n defaultBaseUrl: string;\n baseUrlCredentialKey?: string;\n auth: ProviderApiAuthKind;\n credentialKeys: readonly string[];\n docsUrls: readonly string[];\n specUrls?: readonly string[];\n allowedHostSuffixes?: readonly string[];\n defaultHeaders?: Record<string, string>;\n placeholders?: readonly ProviderApiPlaceholder[];\n examples?: readonly ProviderApiExample[];\n notes?: readonly string[];\n templateUses?: readonly WorkspaceConnectionTemplateUse[];\n}\n\nexport interface ProviderApiPlaceholder {\n name: string;\n credentialKey: string;\n label: string;\n}\n\nexport interface ProviderApiExample {\n label: string;\n method: ProviderApiMethod;\n path: string;\n body?: unknown;\n}\n\nexport interface ProviderApiResolvedCredential {\n key: string;\n value: string;\n source: string;\n provider: string;\n connectionId?: string;\n connectionLabel?: string;\n accountId?: string;\n accountLabel?: string | null;\n scope?: string;\n}\n\nexport interface ProviderApiCredentialLookupOptions {\n appId: string;\n provider: string;\n key: string;\n ctx: CredentialContext;\n workspaceProvider?: string;\n connectionId?: string | null;\n localCredentialSource: string;\n}\n\nexport type ProviderApiCredentialResolver = (\n options: ProviderApiCredentialLookupOptions,\n) => Promise<ProviderApiResolvedCredential | null>;\n\nexport interface ProviderApiRuntimeOptions {\n appId: string;\n providerIds?: readonly (ProviderApiId | string)[];\n localCredentialSource?: string;\n getCredentialContext?: () => CredentialContext | null;\n resolveCredential?: ProviderApiCredentialResolver;\n}\n\ninterface ProviderApiRuntime {\n providerIds: readonly ProviderApiId[];\n listCatalog(\n provider?: ProviderApiId | string,\n ): ReturnType<typeof listProviderApiCatalog>;\n fetchDocs(options: {\n provider: ProviderApiId | string;\n url?: string;\n maxBytes?: number;\n }): Promise<unknown>;\n executeRequest(args: ProviderApiRequestArgs): Promise<unknown>;\n}\n\ninterface ResolvedAuth {\n headers: Record<string, string>;\n credentialSources: Array<Omit<ProviderApiResolvedCredential, \"value\">>;\n secretValues: string[];\n}\n\ninterface OAuthTokens {\n access_token?: string;\n accessToken?: string;\n refresh_token?: string;\n refreshToken?: string;\n expiry_date?: number;\n expiresAt?: number;\n expires_in?: number;\n token_type?: string;\n scope?: string;\n}\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst MAX_TIMEOUT_MS = 120_000;\nconst DEFAULT_MAX_BYTES = 1024 * 1024;\nconst MAX_MAX_BYTES = 4 * 1024 * 1024;\nconst HEADER_NAME_RE = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;\nconst BLOCKED_OUTBOUND_HEADERS = new Set([\n \"connection\",\n \"content-length\",\n \"cookie\",\n \"forwarded\",\n \"host\",\n \"keep-alive\",\n \"origin\",\n \"proxy-authenticate\",\n \"proxy-authorization\",\n \"referer\",\n \"set-cookie\",\n \"te\",\n \"trailer\",\n \"transfer-encoding\",\n \"upgrade\",\n \"x-forwarded-for\",\n \"x-forwarded-host\",\n \"x-forwarded-proto\",\n]);\n\nconst PROVIDER_CONFIGS: Record<ProviderApiId, ProviderApiConfig> = {\n amplitude: {\n id: \"amplitude\",\n label: \"Amplitude\",\n defaultBaseUrl: \"https://amplitude.com/api/2\",\n auth: {\n type: \"basic\",\n usernameKey: \"AMPLITUDE_API_KEY\",\n passwordKey: \"AMPLITUDE_SECRET_KEY\",\n },\n credentialKeys: [\"AMPLITUDE_API_KEY\", \"AMPLITUDE_SECRET_KEY\"],\n docsUrls: [\"https://amplitude.com/docs/apis\"],\n allowedHostSuffixes: [\"amplitude.com\"],\n templateUses: [\"analytics\"],\n examples: [\n {\n label: \"Export events\",\n method: \"GET\",\n path: \"/export?start=20260601T00&end=20260602T00\",\n },\n ],\n },\n apollo: {\n id: \"apollo\",\n label: \"Apollo\",\n defaultBaseUrl: \"https://api.apollo.io\",\n auth: {\n type: \"api-key-header\",\n key: \"APOLLO_API_KEY\",\n header: \"x-api-key\",\n },\n credentialKeys: [\"APOLLO_API_KEY\"],\n docsUrls: [\"https://docs.apollo.io/reference/api-reference\"],\n templateUses: [\"analytics\"],\n examples: [\n {\n label: \"Search people\",\n method: \"POST\",\n path: \"/api/v1/mixed_people/search\",\n body: { q_keywords: \"vp marketing\", page: 1, per_page: 10 },\n },\n ],\n },\n bigquery: {\n id: \"bigquery\",\n label: \"BigQuery REST API\",\n defaultBaseUrl: \"https://bigquery.googleapis.com/bigquery/v2\",\n auth: {\n type: \"google-service-account\",\n scopes: [\n \"https://www.googleapis.com/auth/cloud-platform\",\n \"https://www.googleapis.com/auth/bigquery\",\n ],\n },\n credentialKeys: [\n \"GOOGLE_APPLICATION_CREDENTIALS_JSON\",\n \"BIGQUERY_PROJECT_ID\",\n ],\n docsUrls: [\"https://cloud.google.com/bigquery/docs/reference/rest\"],\n specUrls: [\"https://bigquery.googleapis.com/$discovery/rest?version=v2\"],\n allowedHostSuffixes: [\"googleapis.com\"],\n templateUses: [\"analytics\"],\n placeholders: [\n {\n name: \"projectId\",\n credentialKey: \"BIGQUERY_PROJECT_ID\",\n label: \"Configured BigQuery project ID\",\n },\n ],\n examples: [\n {\n label: \"List datasets\",\n method: \"GET\",\n path: \"/projects/{projectId}/datasets\",\n },\n {\n label: \"Run query\",\n method: \"POST\",\n path: \"/projects/{projectId}/queries\",\n body: { query: \"SELECT 1\", useLegacySql: false },\n },\n ],\n },\n commonroom: {\n id: \"commonroom\",\n label: \"Common Room\",\n defaultBaseUrl: \"https://api.commonroom.io/community/v1\",\n auth: {\n type: \"bearer\",\n keys: [\"COMMONROOM_API_TOKEN\"],\n },\n credentialKeys: [\"COMMONROOM_API_TOKEN\"],\n docsUrls: [\"https://developer.commonroom.io/reference/overview\"],\n templateUses: [\"analytics\"],\n examples: [{ label: \"List members\", method: \"GET\", path: \"/members\" }],\n },\n dataforseo: {\n id: \"dataforseo\",\n label: \"DataForSEO\",\n defaultBaseUrl: \"https://api.dataforseo.com/v3\",\n auth: {\n type: \"basic\",\n usernameKey: \"DATAFORSEO_LOGIN\",\n passwordKey: \"DATAFORSEO_PASSWORD\",\n },\n credentialKeys: [\"DATAFORSEO_LOGIN\", \"DATAFORSEO_PASSWORD\"],\n docsUrls: [\"https://docs.dataforseo.com/v3/\"],\n templateUses: [\"analytics\"],\n examples: [\n {\n label: \"SERP task post\",\n method: \"POST\",\n path: \"/serp/google/organic/task_post\",\n body: [\n { keyword: \"builder.io\", location_code: 2840, language_code: \"en\" },\n ],\n },\n ],\n },\n ga4: {\n id: \"ga4\",\n label: \"Google Analytics Data API\",\n defaultBaseUrl: \"https://analyticsdata.googleapis.com/v1beta\",\n auth: {\n type: \"google-service-account\",\n scopes: [\"https://www.googleapis.com/auth/analytics.readonly\"],\n },\n credentialKeys: [\"GOOGLE_APPLICATION_CREDENTIALS_JSON\", \"GA4_PROPERTY_ID\"],\n docsUrls: [\n \"https://developers.google.com/analytics/devguides/reporting/data/v1/rest\",\n ],\n specUrls: [\n \"https://analyticsdata.googleapis.com/$discovery/rest?version=v1beta\",\n ],\n allowedHostSuffixes: [\"googleapis.com\"],\n templateUses: [\"analytics\"],\n placeholders: [\n {\n name: \"propertyId\",\n credentialKey: \"GA4_PROPERTY_ID\",\n label: \"Configured GA4 property ID\",\n },\n ],\n examples: [\n {\n label: \"Run report\",\n method: \"POST\",\n path: \"/properties/{propertyId}:runReport\",\n body: {\n dateRanges: [{ startDate: \"30daysAgo\", endDate: \"today\" }],\n metrics: [{ name: \"activeUsers\" }],\n },\n },\n ],\n },\n gcloud: {\n id: \"gcloud\",\n label: \"Google Cloud APIs\",\n defaultBaseUrl: \"https://cloudresourcemanager.googleapis.com\",\n auth: {\n type: \"google-service-account\",\n scopes: [\n \"https://www.googleapis.com/auth/cloud-platform\",\n \"https://www.googleapis.com/auth/monitoring.read\",\n \"https://www.googleapis.com/auth/logging.read\",\n \"https://www.googleapis.com/auth/bigquery\",\n ],\n },\n credentialKeys: [\n \"GOOGLE_APPLICATION_CREDENTIALS_JSON\",\n \"BIGQUERY_PROJECT_ID\",\n ],\n docsUrls: [\"https://cloud.google.com/apis/docs/overview\"],\n specUrls: [\"https://www.googleapis.com/discovery/v1/apis\"],\n allowedHostSuffixes: [\"googleapis.com\"],\n templateUses: [\"analytics\"],\n placeholders: [\n {\n name: \"projectId\",\n credentialKey: \"BIGQUERY_PROJECT_ID\",\n label: \"Configured Google Cloud project ID\",\n },\n ],\n examples: [\n {\n label: \"Get project\",\n method: \"GET\",\n path: \"https://cloudresourcemanager.googleapis.com/v1/projects/{projectId}\",\n },\n ],\n },\n github: {\n id: \"github\",\n label: \"GitHub REST API\",\n defaultBaseUrl: \"https://api.github.com\",\n auth: {\n type: \"bearer\",\n keys: [\"GITHUB_TOKEN\"],\n workspaceProvider: \"github\",\n },\n credentialKeys: [\"GITHUB_TOKEN\"],\n docsUrls: [\"https://docs.github.com/rest\"],\n specUrls: [\n \"https://raw.githubusercontent.com/github/rest-api-description/main/descriptions/api.github.com/api.github.com.json\",\n ],\n defaultHeaders: {\n Accept: \"application/vnd.github+json\",\n \"X-GitHub-Api-Version\": \"2022-11-28\",\n },\n templateUses: [\"analytics\", \"brain\", \"dispatch\"],\n examples: [\n { label: \"Authenticated user\", method: \"GET\", path: \"/user\" },\n { label: \"Search issues\", method: \"GET\", path: \"/search/issues\" },\n ],\n },\n gmail: {\n id: \"gmail\",\n label: \"Gmail API\",\n defaultBaseUrl: \"https://gmail.googleapis.com/gmail/v1\",\n auth: {\n type: \"oauth-bearer\",\n oauthProvider: \"google\",\n tokenLabel: \"Google OAuth token\",\n },\n credentialKeys: [\"GOOGLE_OAUTH_ACCOUNT\"],\n docsUrls: [\"https://developers.google.com/gmail/api/reference/rest\"],\n specUrls: [\"https://gmail.googleapis.com/$discovery/rest?version=v1\"],\n allowedHostSuffixes: [\"googleapis.com\"],\n templateUses: [\"brain\", \"mail\", \"dispatch\"],\n examples: [\n {\n label: \"List messages\",\n method: \"GET\",\n path: \"/users/me/messages\",\n },\n {\n label: \"Search messages\",\n method: \"GET\",\n path: \"/users/me/messages\",\n body: undefined,\n },\n ],\n notes: [\n \"Uses the current user's stored Google OAuth account. Pass accountId when the user has multiple Google accounts connected.\",\n ],\n },\n gong: {\n id: \"gong\",\n label: \"Gong\",\n defaultBaseUrl: \"https://api.gong.io/v2\",\n baseUrlCredentialKey: \"GONG_API_BASE\",\n auth: {\n type: \"basic\",\n usernameKey: \"GONG_ACCESS_KEY\",\n passwordKey: \"GONG_ACCESS_SECRET\",\n },\n credentialKeys: [\"GONG_ACCESS_KEY\", \"GONG_ACCESS_SECRET\", \"GONG_API_BASE\"],\n docsUrls: [\"https://gong.app.gong.io/settings/api/documentation\"],\n templateUses: [\"analytics\"],\n examples: [\n { label: \"List calls\", method: \"GET\", path: \"/calls\" },\n {\n label: \"Call transcript\",\n method: \"POST\",\n path: \"/calls/transcript\",\n body: { filter: { callIds: [\"<call-id>\"] } },\n },\n ],\n },\n google_calendar: {\n id: \"google_calendar\",\n label: \"Google Calendar API\",\n defaultBaseUrl: \"https://www.googleapis.com/calendar/v3\",\n auth: {\n type: \"oauth-bearer\",\n oauthProvider: \"google\",\n tokenLabel: \"Google OAuth token\",\n },\n credentialKeys: [\"GOOGLE_OAUTH_ACCOUNT\"],\n docsUrls: [\"https://developers.google.com/calendar/api/v3/reference\"],\n specUrls: [\"https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest\"],\n allowedHostSuffixes: [\"googleapis.com\"],\n templateUses: [\"brain\", \"calendar\", \"dispatch\"],\n examples: [\n {\n label: \"List calendars\",\n method: \"GET\",\n path: \"/users/me/calendarList\",\n },\n {\n label: \"Search events\",\n method: \"GET\",\n path: \"/calendars/primary/events\",\n },\n ],\n notes: [\n \"Uses the current user's stored Google OAuth account. Pass accountId when the user has multiple Google accounts connected.\",\n ],\n },\n google_drive: {\n id: \"google_drive\",\n label: \"Google Drive API\",\n defaultBaseUrl: \"https://www.googleapis.com/drive/v3\",\n auth: {\n type: \"oauth-bearer\",\n oauthProvider: \"google\",\n tokenLabel: \"Google OAuth token\",\n },\n credentialKeys: [\"GOOGLE_OAUTH_ACCOUNT\"],\n docsUrls: [\"https://developers.google.com/drive/api/reference/rest/v3\"],\n specUrls: [\"https://www.googleapis.com/discovery/v1/apis/drive/v3/rest\"],\n allowedHostSuffixes: [\"googleapis.com\"],\n templateUses: [\"brain\", \"content\", \"slides\", \"dispatch\"],\n examples: [\n { label: \"List files\", method: \"GET\", path: \"/files\" },\n { label: \"Get file metadata\", method: \"GET\", path: \"/files/{fileId}\" },\n ],\n notes: [\n \"Uses the current user's stored Google OAuth account. Pass accountId when the user has multiple Google accounts connected.\",\n ],\n },\n granola: {\n id: \"granola\",\n label: \"Granola Public API\",\n defaultBaseUrl: \"https://public-api.granola.ai/v1\",\n auth: {\n type: \"bearer\",\n keys: [\"GRANOLA_API_KEY\"],\n workspaceProvider: \"granola\",\n },\n credentialKeys: [\"GRANOLA_API_KEY\"],\n docsUrls: [\"https://docs.granola.ai/\"],\n templateUses: [\"brain\", \"dispatch\"],\n examples: [\n { label: \"List notes\", method: \"GET\", path: \"/notes\" },\n { label: \"Get note\", method: \"GET\", path: \"/notes/<note-id>\" },\n ],\n },\n grafana: {\n id: \"grafana\",\n label: \"Grafana\",\n defaultBaseUrl: \"https://grafana.example.com\",\n baseUrlCredentialKey: \"GRAFANA_URL\",\n auth: {\n type: \"bearer\",\n keys: [\"GRAFANA_API_TOKEN\"],\n },\n credentialKeys: [\"GRAFANA_URL\", \"GRAFANA_API_TOKEN\"],\n docsUrls: [\"https://grafana.com/docs/grafana/latest/developers/http_api/\"],\n templateUses: [\"analytics\"],\n examples: [\n { label: \"List dashboards\", method: \"GET\", path: \"/api/search\" },\n ],\n },\n hubspot: {\n id: \"hubspot\",\n label: \"HubSpot\",\n defaultBaseUrl: \"https://api.hubapi.com\",\n auth: {\n type: \"bearer\",\n keys: [\"HUBSPOT_PRIVATE_APP_TOKEN\", \"HUBSPOT_ACCESS_TOKEN\"],\n workspaceProvider: \"hubspot\",\n },\n credentialKeys: [\"HUBSPOT_PRIVATE_APP_TOKEN\", \"HUBSPOT_ACCESS_TOKEN\"],\n docsUrls: [\"https://developers.hubspot.com/docs/api/overview\"],\n templateUses: [\"analytics\", \"brain\", \"mail\", \"dispatch\"],\n examples: [\n {\n label: \"Search deals with any HubSpot CRM filter\",\n method: \"POST\",\n path: \"/crm/v3/objects/deals/search\",\n body: {\n filterGroups: [\n {\n filters: [\n {\n propertyName: \"products\",\n operator: \"CONTAINS_TOKEN\",\n value: \"Publish\",\n },\n ],\n },\n ],\n properties: [\"dealname\", \"products\", \"dealstage\", \"closedate\"],\n limit: 100,\n },\n },\n {\n label: \"List deal property metadata\",\n method: \"GET\",\n path: \"/crm/v3/properties/deals\",\n },\n ],\n },\n jira: {\n id: \"jira\",\n label: \"Jira Cloud\",\n defaultBaseUrl: \"https://example.atlassian.net\",\n baseUrlCredentialKey: \"JIRA_BASE_URL\",\n auth: {\n type: \"basic\",\n usernameKey: \"JIRA_USER_EMAIL\",\n passwordKey: \"JIRA_API_TOKEN\",\n },\n credentialKeys: [\"JIRA_BASE_URL\", \"JIRA_USER_EMAIL\", \"JIRA_API_TOKEN\"],\n docsUrls: [\n \"https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/\",\n ],\n specUrls: [\n \"https://dac-static.atlassian.com/cloud/jira/platform/swagger-v3.v3.json\",\n ],\n templateUses: [\"analytics\"],\n examples: [\n {\n label: \"JQL search\",\n method: \"GET\",\n path: \"/rest/api/3/search/jql\",\n },\n ],\n },\n mixpanel: {\n id: \"mixpanel\",\n label: \"Mixpanel\",\n defaultBaseUrl: \"https://mixpanel.com/api/query\",\n auth: {\n type: \"basic-raw\",\n key: \"MIXPANEL_SERVICE_ACCOUNT\",\n },\n credentialKeys: [\"MIXPANEL_PROJECT_ID\", \"MIXPANEL_SERVICE_ACCOUNT\"],\n docsUrls: [\"https://developer.mixpanel.com/reference/overview\"],\n allowedHostSuffixes: [\"mixpanel.com\"],\n templateUses: [\"analytics\"],\n placeholders: [\n {\n name: \"projectId\",\n credentialKey: \"MIXPANEL_PROJECT_ID\",\n label: \"Configured Mixpanel project ID\",\n },\n ],\n examples: [\n {\n label: \"Query events\",\n method: \"GET\",\n path: \"/events\",\n },\n ],\n notes: [\n \"Mixpanel uses multiple API hosts. You may pass full URLs for mixpanel.com or data.mixpanel.com endpoints.\",\n ],\n },\n notion: {\n id: \"notion\",\n label: \"Notion\",\n defaultBaseUrl: \"https://api.notion.com/v1\",\n auth: {\n type: \"bearer\",\n keys: [\"NOTION_API_KEY\"],\n workspaceProvider: \"notion\",\n },\n credentialKeys: [\"NOTION_API_KEY\"],\n docsUrls: [\"https://developers.notion.com/reference/intro\"],\n defaultHeaders: { \"Notion-Version\": \"2022-06-28\" },\n templateUses: [\"analytics\", \"brain\", \"content\", \"dispatch\"],\n examples: [{ label: \"Search\", method: \"POST\", path: \"/search\", body: {} }],\n },\n posthog: {\n id: \"posthog\",\n label: \"PostHog\",\n defaultBaseUrl: \"https://app.posthog.com\",\n baseUrlCredentialKey: \"POSTHOG_HOST\",\n auth: {\n type: \"bearer\",\n keys: [\"POSTHOG_API_KEY\"],\n },\n credentialKeys: [\"POSTHOG_API_KEY\", \"POSTHOG_PROJECT_ID\", \"POSTHOG_HOST\"],\n docsUrls: [\"https://posthog.com/docs/api\"],\n templateUses: [\"analytics\"],\n placeholders: [\n {\n name: \"projectId\",\n credentialKey: \"POSTHOG_PROJECT_ID\",\n label: \"Configured PostHog project ID\",\n },\n ],\n examples: [\n {\n label: \"List events\",\n method: \"GET\",\n path: \"/api/projects/{projectId}/events/\",\n },\n ],\n },\n prometheus: {\n id: \"prometheus\",\n label: \"Prometheus\",\n defaultBaseUrl: \"https://prometheus.example.com\",\n baseUrlCredentialKey: \"PROMETHEUS_URL\",\n auth: { type: \"prometheus\" },\n credentialKeys: [\n \"PROMETHEUS_URL\",\n \"PROMETHEUS_USERNAME\",\n \"PROMETHEUS_PASSWORD\",\n \"PROMETHEUS_BEARER_TOKEN\",\n ],\n docsUrls: [\"https://prometheus.io/docs/prometheus/latest/querying/api/\"],\n templateUses: [\"analytics\"],\n examples: [\n {\n label: \"Instant query\",\n method: \"GET\",\n path: \"/api/v1/query\",\n },\n ],\n },\n pylon: {\n id: \"pylon\",\n label: \"Pylon\",\n defaultBaseUrl: \"https://api.usepylon.com\",\n auth: {\n type: \"bearer\",\n keys: [\"PYLON_API_KEY\"],\n },\n credentialKeys: [\"PYLON_API_KEY\"],\n docsUrls: [\"https://docs.usepylon.com/pylon-docs/developer/api-reference\"],\n templateUses: [\"analytics\"],\n examples: [{ label: \"List issues\", method: \"GET\", path: \"/issues\" }],\n },\n sentry: {\n id: \"sentry\",\n label: \"Sentry\",\n defaultBaseUrl: \"https://sentry.io/api/0\",\n auth: {\n type: \"bearer\",\n keys: [\"SENTRY_AUTH_TOKEN\", \"SENTRY_SERVER_TOKEN\"],\n },\n credentialKeys: [\n \"SENTRY_AUTH_TOKEN\",\n \"SENTRY_SERVER_TOKEN\",\n \"SENTRY_ORG_SLUG\",\n ],\n docsUrls: [\"https://docs.sentry.io/api/\"],\n templateUses: [\"analytics\"],\n placeholders: [\n {\n name: \"orgSlug\",\n credentialKey: \"SENTRY_ORG_SLUG\",\n label: \"Configured Sentry organization slug\",\n },\n ],\n examples: [\n {\n label: \"List issues for org\",\n method: \"GET\",\n path: \"/organizations/{orgSlug}/issues/\",\n },\n ],\n },\n slack: {\n id: \"slack\",\n label: \"Slack Web API\",\n defaultBaseUrl: \"https://slack.com/api\",\n auth: {\n type: \"bearer\",\n keys: [\"SLACK_BOT_TOKEN\"],\n workspaceProvider: \"slack\",\n },\n credentialKeys: [\"SLACK_BOT_TOKEN\", \"SLACK_BOT_TOKEN_2\"],\n docsUrls: [\"https://api.slack.com/web\"],\n specUrls: [\n \"https://api.slack.com/specs/openapi/v2/slack_web_openapi_v2_without_examples.json\",\n ],\n templateUses: [\"analytics\", \"brain\", \"dispatch\"],\n examples: [\n { label: \"Search messages\", method: \"GET\", path: \"/search.messages\" },\n { label: \"Post message\", method: \"POST\", path: \"/chat.postMessage\" },\n ],\n },\n stripe: {\n id: \"stripe\",\n label: \"Stripe\",\n defaultBaseUrl: \"https://api.stripe.com/v1\",\n auth: {\n type: \"bearer\",\n keys: [\"STRIPE_SECRET_KEY\"],\n },\n credentialKeys: [\"STRIPE_SECRET_KEY\"],\n docsUrls: [\"https://docs.stripe.com/api\"],\n specUrls: [\n \"https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json\",\n ],\n templateUses: [\"analytics\"],\n examples: [{ label: \"List customers\", method: \"GET\", path: \"/customers\" }],\n },\n twitter: {\n id: \"twitter\",\n label: \"Twitter/X via twitterapi.io\",\n defaultBaseUrl: \"https://api.twitterapi.io\",\n auth: {\n type: \"api-key-header\",\n key: \"TWITTER_BEARER_TOKEN\",\n header: \"X-API-Key\",\n },\n credentialKeys: [\"TWITTER_BEARER_TOKEN\"],\n docsUrls: [\"https://twitterapi.io/docs\"],\n templateUses: [\"analytics\"],\n examples: [\n {\n label: \"User tweets\",\n method: \"GET\",\n path: \"/twitter/user/last_tweets\",\n },\n ],\n },\n};\n\nexport function getProviderApiConfig(\n provider: ProviderApiId | string,\n): ProviderApiConfig {\n const config = PROVIDER_CONFIGS[provider as ProviderApiId];\n if (!config) throw new Error(`Unsupported provider API: ${provider}`);\n return config;\n}\n\nexport function isProviderApiId(provider: string): provider is ProviderApiId {\n return Object.prototype.hasOwnProperty.call(PROVIDER_CONFIGS, provider);\n}\n\nexport function listProviderApiIdsForTemplateUse(\n templateUse: WorkspaceConnectionTemplateUse,\n): ProviderApiId[] {\n return PROVIDER_API_IDS.filter((id) =>\n (PROVIDER_CONFIGS[id].templateUses ?? []).includes(templateUse),\n );\n}\n\nexport function listProviderApiCatalog(\n provider?: ProviderApiId | string,\n options: { providerIds?: readonly (ProviderApiId | string)[] } = {},\n) {\n const providerIds = normalizeProviderIds(options.providerIds);\n const configs = provider\n ? [getProviderApiConfig(provider)]\n : providerIds.map((id) => getProviderApiConfig(id));\n return configs.map((config) => ({\n id: config.id,\n label: config.label,\n defaultBaseUrl: config.defaultBaseUrl,\n baseUrlCredentialKey: config.baseUrlCredentialKey ?? null,\n auth: describeAuth(config.auth),\n credentialKeys: config.credentialKeys,\n docsUrls: config.docsUrls,\n specUrls: config.specUrls ?? [],\n allowedHostSuffixes: config.allowedHostSuffixes ?? [],\n placeholders: config.placeholders ?? [],\n defaultHeaders: config.defaultHeaders ?? {},\n examples: config.examples ?? [],\n notes: config.notes ?? [],\n templateUses: config.templateUses ?? [],\n }));\n}\n\nexport function createProviderApiRuntime(\n options: ProviderApiRuntimeOptions,\n): ProviderApiRuntime {\n const providerIds = normalizeProviderIds(options.providerIds);\n const runtimeOptions: Required<\n Pick<ProviderApiRuntimeOptions, \"appId\" | \"localCredentialSource\">\n > &\n Omit<ProviderApiRuntimeOptions, \"appId\" | \"localCredentialSource\"> = {\n ...options,\n providerIds,\n localCredentialSource: options.localCredentialSource ?? \"app_local\",\n };\n return {\n providerIds,\n listCatalog: (provider) =>\n listProviderApiCatalog(provider, { providerIds }),\n fetchDocs: (docsOptions) =>\n fetchProviderApiDocs(docsOptions, runtimeOptions),\n executeRequest: (args) => executeProviderApiRequest(args, runtimeOptions),\n };\n}\n\nexport async function fetchProviderApiDocs(\n options: {\n provider: ProviderApiId | string;\n url?: string;\n maxBytes?: number;\n },\n runtime: ProviderApiRuntimeOptions = { appId: \"app\" },\n) {\n assertProviderAllowed(options.provider, runtime.providerIds);\n const config = getProviderApiConfig(options.provider);\n const catalog = listProviderApiCatalog(options.provider)[0];\n if (!options.url) return { provider: config.id, catalog };\n\n const url = new URL(options.url);\n const allowed = [\n ...config.docsUrls,\n ...(config.specUrls ?? []),\n config.defaultBaseUrl,\n ].some((allowedUrl) => sameOriginOrChild(url, new URL(allowedUrl)));\n if (!allowed) {\n throw new Error(\n `Docs URL must be one of the registered ${config.label} docs/spec origins.`,\n );\n }\n if (await isBlockedExtensionUrlWithDns(url.href)) {\n throw new Error(`Blocked private/internal docs URL: ${url.href}`);\n }\n\n const response = await fetchWithTimeout(url.href, {\n method: \"GET\",\n maxBytes: clampMaxBytes(options.maxBytes),\n });\n return {\n provider: config.id,\n catalog,\n request: { url: url.href },\n response,\n };\n}\n\nexport async function executeProviderApiRequest(\n args: ProviderApiRequestArgs,\n runtime: ProviderApiRuntimeOptions,\n) {\n assertProviderAllowed(args.provider, runtime.providerIds);\n const config = getProviderApiConfig(args.provider);\n const ctx = requireRuntimeCredentialContext(\n runtime,\n config.credentialKeys[0] ?? config.id,\n );\n const baseUrl = await resolveBaseUrl(config, runtime, ctx, args);\n const placeholders = await resolvePlaceholders(config, runtime, ctx, args);\n const method = normalizeMethod(args.method);\n const url = buildProviderUrl({\n config,\n baseUrl,\n rawPath: substituteString(args.path, placeholders),\n query: substituteUnknown(args.query, placeholders),\n });\n if (await isBlockedExtensionUrlWithDns(url.href)) {\n throw new Error(`Blocked private/internal provider URL: ${url.href}`);\n }\n\n const auth =\n args.auth === \"none\"\n ? emptyAuth()\n : await resolveAuth(config, runtime, ctx, args);\n const extraHeaders = substituteUnknown(args.headers ?? {}, placeholders);\n const headers = sanitizeOutboundHeaders({\n ...(config.defaultHeaders ?? {}),\n ...(isPlainRecord(extraHeaders) ? extraHeaders : {}),\n ...auth.headers,\n });\n const body = prepareBody(substituteUnknown(args.body, placeholders), headers);\n const response = await fetchWithTimeout(url.href, {\n method,\n headers,\n body,\n maxBytes: clampMaxBytes(args.maxBytes),\n timeoutMs: clampTimeout(args.timeoutMs),\n secretValues: auth.secretValues,\n });\n\n return {\n provider: {\n id: config.id,\n label: config.label,\n docsUrls: config.docsUrls,\n specUrls: config.specUrls ?? [],\n },\n request: {\n method,\n url: redactString(url.href, auth.secretValues),\n path: redactString(`${url.pathname}${url.search}`, auth.secretValues),\n auth: args.auth === \"none\" ? \"none\" : describeAuth(config.auth),\n credentialSources: auth.credentialSources.map((source) => ({\n ...source,\n fingerprint: fingerprint(source.key),\n })),\n headerNames: Object.keys(headers).filter(\n (name) => name.toLowerCase() !== \"authorization\",\n ),\n ...(args.accountId ? { accountId: args.accountId } : {}),\n ...(args.connectionId ? { connectionId: args.connectionId } : {}),\n },\n response,\n guidance:\n \"This was a raw provider API request. Use provider docs/spec URLs to choose endpoints and include method/path/status plus relevant filters in the methodology. Prefer this escape hatch whenever canned actions are too narrow.\",\n };\n}\n\nexport async function defaultProviderApiCredentialResolver(\n options: ProviderApiCredentialLookupOptions,\n): Promise<ProviderApiResolvedCredential | null> {\n if (options.workspaceProvider) {\n const result = await resolveWorkspaceConnectionCredentialForApp({\n appId: options.appId,\n provider: options.workspaceProvider,\n key: options.key,\n connectionId: options.connectionId,\n userEmail: options.ctx.userEmail,\n orgId: options.ctx.orgId,\n });\n if (result.available && result.value) {\n return {\n key: result.provenance?.resolvedKey ?? result.key,\n value: result.value,\n source: \"workspace_connection\",\n provider: result.provider,\n connectionId: result.provenance?.connectionId,\n connectionLabel: result.provenance?.connectionLabel,\n scope:\n typeof result.provenance?.secretScope === \"string\"\n ? result.provenance.secretScope\n : undefined,\n };\n }\n }\n\n const value = await resolveCredential(options.key, options.ctx);\n if (!value) return null;\n return {\n key: options.key,\n value,\n source: options.localCredentialSource,\n provider: options.provider,\n };\n}\n\nfunction normalizeProviderIds(\n providerIds?: readonly (ProviderApiId | string)[],\n): ProviderApiId[] {\n if (!providerIds) return [...PROVIDER_API_IDS];\n const result: ProviderApiId[] = [];\n const seen = new Set<string>();\n for (const providerId of providerIds) {\n if (!isProviderApiId(providerId)) {\n throw new Error(`Unsupported provider API: ${providerId}`);\n }\n if (seen.has(providerId)) continue;\n seen.add(providerId);\n result.push(providerId);\n }\n return result;\n}\n\nfunction assertProviderAllowed(\n provider: ProviderApiId | string,\n providerIds?: readonly (ProviderApiId | string)[],\n) {\n const allowed = normalizeProviderIds(providerIds);\n if (!allowed.includes(provider as ProviderApiId)) {\n throw new Error(`Provider API ${provider} is not enabled for this app.`);\n }\n}\n\nfunction describeAuth(auth: ProviderApiAuthKind): string {\n if (auth.type === \"none\") return \"none\";\n if (auth.type === \"bearer\") return \"bearer\";\n if (auth.type === \"basic\") return \"basic\";\n if (auth.type === \"basic-raw\") return \"basic\";\n if (auth.type === \"api-key-header\") return `api-key-header:${auth.header}`;\n if (auth.type === \"google-service-account\") return \"google-service-account\";\n if (auth.type === \"oauth-bearer\") return `oauth-bearer:${auth.oauthProvider}`;\n return \"prometheus-basic-or-bearer\";\n}\n\nfunction requireRuntimeCredentialContext(\n runtime: ProviderApiRuntimeOptions,\n credentialKey: string,\n): CredentialContext {\n const ctx = runtime.getCredentialContext?.() ?? getCredentialContext();\n if (!ctx) {\n throw new Error(\n `Cannot resolve credential \"${credentialKey}\" outside an authenticated request context.`,\n );\n }\n return ctx;\n}\n\nasync function resolveBaseUrl(\n config: ProviderApiConfig,\n runtime: ProviderApiRuntimeOptions,\n ctx: CredentialContext,\n args: ProviderApiRequestArgs,\n): Promise<string> {\n if (!config.baseUrlCredentialKey) return config.defaultBaseUrl;\n const configured = await resolveCredentialValue({\n config,\n runtime,\n ctx,\n key: config.baseUrlCredentialKey,\n args,\n });\n return (configured || config.defaultBaseUrl).replace(/\\/+$/, \"\");\n}\n\nasync function resolvePlaceholders(\n config: ProviderApiConfig,\n runtime: ProviderApiRuntimeOptions,\n ctx: CredentialContext,\n args: ProviderApiRequestArgs,\n): Promise<Record<string, string>> {\n const placeholders: Record<string, string> = {};\n for (const placeholder of config.placeholders ?? []) {\n const value = await resolveCredentialValue({\n config,\n runtime,\n ctx,\n key: placeholder.credentialKey,\n args,\n });\n if (value) placeholders[placeholder.name] = value;\n }\n return placeholders;\n}\n\nasync function resolveCredentialValue(options: {\n config: ProviderApiConfig;\n runtime: ProviderApiRuntimeOptions;\n ctx: CredentialContext;\n key: string;\n args: ProviderApiRequestArgs;\n workspaceProvider?: string;\n}): Promise<string | undefined> {\n const credential = await resolveOptionalCredential({\n provider: options.config.id,\n workspaceProvider: options.workspaceProvider,\n key: options.key,\n ctx: options.ctx,\n runtime: options.runtime,\n connectionId: options.args.connectionId,\n });\n return credential?.value;\n}\n\nfunction substituteString(\n value: string,\n placeholders: Record<string, string>,\n): string {\n let result = value;\n for (const [name, replacement] of Object.entries(placeholders)) {\n result = result.split(`{${name}}`).join(replacement);\n }\n return result;\n}\n\nfunction substituteUnknown(\n value: unknown,\n placeholders: Record<string, string>,\n): unknown {\n if (typeof value === \"string\") return substituteString(value, placeholders);\n if (Array.isArray(value)) {\n return value.map((item) => substituteUnknown(item, placeholders));\n }\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [\n key,\n substituteUnknown(entry, placeholders),\n ]),\n );\n }\n return value;\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction buildProviderUrl(options: {\n config: ProviderApiConfig;\n baseUrl: string;\n rawPath: string;\n query: unknown;\n}): URL {\n const base = new URL(options.baseUrl);\n const rawPath = options.rawPath.trim();\n const url = /^https?:\\/\\//i.test(rawPath)\n ? new URL(rawPath)\n : new URL(rawPath.startsWith(\"/\") ? rawPath : `/${rawPath}`, base);\n\n if (!isAllowedProviderUrl(url, base, options.config)) {\n throw new Error(\n `${options.config.label} API requests must stay on the configured provider host or registered provider host suffix.`,\n );\n }\n\n for (const [key, value] of queryEntries(options.query)) {\n url.searchParams.append(key, value);\n }\n\n return url;\n}\n\nfunction isAllowedProviderUrl(\n url: URL,\n base: URL,\n config: ProviderApiConfig,\n): boolean {\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") return false;\n if (url.origin === base.origin) return true;\n const host = url.hostname.toLowerCase();\n return (config.allowedHostSuffixes ?? []).some((suffix) => {\n const normalized = suffix.toLowerCase().replace(/^\\./, \"\");\n return host === normalized || host.endsWith(`.${normalized}`);\n });\n}\n\nfunction sameOriginOrChild(candidate: URL, allowed: URL): boolean {\n return (\n candidate.origin === allowed.origin &&\n (candidate.pathname === allowed.pathname ||\n candidate.pathname.startsWith(allowed.pathname.replace(/\\/?$/, \"/\")))\n );\n}\n\nfunction queryEntries(value: unknown): Array<[string, string]> {\n if (!value) return [];\n if (typeof value === \"string\") {\n const params = new URLSearchParams(value.replace(/^\\?/, \"\"));\n return Array.from(params.entries());\n }\n if (typeof value !== \"object\" || Array.isArray(value)) return [];\n const entries: Array<[string, string]> = [];\n for (const [key, raw] of Object.entries(value)) {\n if (raw === undefined || raw === null) continue;\n if (Array.isArray(raw)) {\n for (const item of raw) entries.push([key, String(item)]);\n } else {\n entries.push([key, String(raw)]);\n }\n }\n return entries;\n}\n\nasync function resolveAuth(\n config: ProviderApiConfig,\n runtime: ProviderApiRuntimeOptions,\n ctx: CredentialContext,\n args: ProviderApiRequestArgs,\n): Promise<ResolvedAuth> {\n const auth = config.auth;\n if (auth.type === \"none\") return emptyAuth();\n if (auth.type === \"bearer\") {\n const credential = await resolveAnyCredential({\n provider: config.id,\n workspaceProvider: auth.workspaceProvider,\n keys: auth.keys,\n ctx,\n runtime,\n connectionId: args.connectionId,\n });\n return {\n headers: { Authorization: `Bearer ${credential.value}` },\n credentialSources: [omitCredentialValue(credential)],\n secretValues: [credential.value],\n };\n }\n if (auth.type === \"basic\") {\n const username = await resolveRequiredCredential({\n provider: config.id,\n workspaceProvider: auth.workspaceProvider,\n key: auth.usernameKey,\n ctx,\n runtime,\n connectionId: args.connectionId,\n });\n const password =\n auth.passwordKey === auth.usernameKey\n ? username\n : await resolveRequiredCredential({\n provider: config.id,\n workspaceProvider: auth.workspaceProvider,\n key: auth.passwordKey,\n ctx,\n runtime,\n connectionId: args.connectionId,\n });\n const encoded = Buffer.from(`${username.value}:${password.value}`).toString(\n \"base64\",\n );\n return {\n headers: { Authorization: `Basic ${encoded}` },\n credentialSources: [\n omitCredentialValue(username),\n ...(password.key === username.key\n ? []\n : [omitCredentialValue(password)]),\n ],\n secretValues: [username.value, password.value, encoded],\n };\n }\n if (auth.type === \"basic-raw\") {\n const credential = await resolveRequiredCredential({\n provider: config.id,\n workspaceProvider: auth.workspaceProvider,\n key: auth.key,\n ctx,\n runtime,\n connectionId: args.connectionId,\n });\n const encoded = Buffer.from(credential.value).toString(\"base64\");\n return {\n headers: { Authorization: `Basic ${encoded}` },\n credentialSources: [omitCredentialValue(credential)],\n secretValues: [credential.value, encoded],\n };\n }\n if (auth.type === \"api-key-header\") {\n const credential = await resolveRequiredCredential({\n provider: config.id,\n workspaceProvider: auth.workspaceProvider,\n key: auth.key,\n ctx,\n runtime,\n connectionId: args.connectionId,\n });\n return {\n headers: { [auth.header]: credential.value },\n credentialSources: [omitCredentialValue(credential)],\n secretValues: [credential.value],\n };\n }\n if (auth.type === \"google-service-account\") {\n const token = await getGoogleServiceAccountToken(auth.scopes, runtime, ctx);\n return {\n headers: { Authorization: `Bearer ${token}` },\n credentialSources: [\n {\n key: \"GOOGLE_APPLICATION_CREDENTIALS_JSON\",\n provider: config.id,\n source: runtime.localCredentialSource ?? \"app_local\",\n },\n ],\n secretValues: [token],\n };\n }\n if (auth.type === \"oauth-bearer\") {\n const credential = await resolveOAuthBearerToken({\n auth,\n ctx,\n accountId: args.accountId,\n });\n return {\n headers: { Authorization: `Bearer ${credential.value}` },\n credentialSources: [omitCredentialValue(credential)],\n secretValues: [credential.value],\n };\n }\n\n const bearer = await resolveCredentialValue({\n config,\n runtime,\n ctx,\n key: \"PROMETHEUS_BEARER_TOKEN\",\n args,\n });\n if (bearer) {\n return {\n headers: { Authorization: `Bearer ${bearer}` },\n credentialSources: [\n {\n key: \"PROMETHEUS_BEARER_TOKEN\",\n provider: config.id,\n source: runtime.localCredentialSource ?? \"app_local\",\n },\n ],\n secretValues: [bearer],\n };\n }\n const username = await resolveCredentialValue({\n config,\n runtime,\n ctx,\n key: \"PROMETHEUS_USERNAME\",\n args,\n });\n const password = await resolveCredentialValue({\n config,\n runtime,\n ctx,\n key: \"PROMETHEUS_PASSWORD\",\n args,\n });\n if (username && password) {\n const encoded = Buffer.from(`${username}:${password}`).toString(\"base64\");\n return {\n headers: { Authorization: `Basic ${encoded}` },\n credentialSources: [\n {\n key: \"PROMETHEUS_USERNAME\",\n provider: config.id,\n source: runtime.localCredentialSource ?? \"app_local\",\n },\n {\n key: \"PROMETHEUS_PASSWORD\",\n provider: config.id,\n source: runtime.localCredentialSource ?? \"app_local\",\n },\n ],\n secretValues: [username, password, encoded],\n };\n }\n return emptyAuth();\n}\n\nfunction emptyAuth(): ResolvedAuth {\n return { headers: {}, credentialSources: [], secretValues: [] };\n}\n\nasync function resolveAnyCredential(options: {\n provider: ProviderApiId;\n workspaceProvider: string | undefined;\n keys: readonly string[];\n ctx: CredentialContext;\n runtime: ProviderApiRuntimeOptions;\n connectionId?: string | null;\n}): Promise<ProviderApiResolvedCredential> {\n for (const key of options.keys) {\n const credential = await resolveOptionalCredential({ ...options, key });\n if (credential?.value) return credential;\n }\n throw new Error(\n `${options.provider} credential not configured. Tried: ${options.keys.join(\n \", \",\n )}`,\n );\n}\n\nasync function resolveRequiredCredential(options: {\n provider: ProviderApiId;\n workspaceProvider: string | undefined;\n key: string;\n ctx: CredentialContext;\n runtime: ProviderApiRuntimeOptions;\n connectionId?: string | null;\n}): Promise<ProviderApiResolvedCredential> {\n const credential = await resolveOptionalCredential(options);\n if (!credential?.value) throw new Error(`${options.key} not configured`);\n return credential;\n}\n\nasync function resolveOptionalCredential(options: {\n provider: ProviderApiId;\n workspaceProvider: string | undefined;\n key: string;\n ctx: CredentialContext;\n runtime: ProviderApiRuntimeOptions;\n connectionId?: string | null;\n}): Promise<ProviderApiResolvedCredential | null> {\n const localCredentialSource =\n options.runtime.localCredentialSource ?? \"app_local\";\n const lookup: ProviderApiCredentialLookupOptions = {\n appId: options.runtime.appId,\n provider: options.provider,\n key: options.key,\n ctx: options.ctx,\n workspaceProvider: options.workspaceProvider,\n connectionId: options.connectionId,\n localCredentialSource,\n };\n const customCredential = await options.runtime.resolveCredential?.(lookup);\n if (customCredential?.value) return customCredential;\n return defaultProviderApiCredentialResolver(lookup);\n}\n\nfunction omitCredentialValue(\n credential: ProviderApiResolvedCredential,\n): Omit<ProviderApiResolvedCredential, \"value\"> {\n const { value: _value, ...rest } = credential;\n return rest;\n}\n\nconst googleServiceTokenCache = new Map<\n string,\n { token: string; expiresAt: number }\n>();\n\nasync function getGoogleServiceAccountToken(\n scopes: readonly string[],\n runtime: ProviderApiRuntimeOptions,\n ctx: CredentialContext,\n): Promise<string> {\n const cacheKey = createHash(\"sha256\")\n .update(\n `${runtime.appId}:${ctx.orgId ?? ctx.userEmail}:${scopes.join(\" \")}`,\n )\n .digest(\"hex\");\n const cached = googleServiceTokenCache.get(cacheKey);\n if (cached && Date.now() < cached.expiresAt - 30_000) return cached.token;\n\n const credsJson = await resolveCredentialValue({\n config: getProviderApiConfig(\"gcloud\"),\n runtime,\n ctx,\n key: \"GOOGLE_APPLICATION_CREDENTIALS_JSON\",\n args: { provider: \"gcloud\", path: \"/\" },\n });\n if (!credsJson) {\n throw new Error(\"GOOGLE_APPLICATION_CREDENTIALS_JSON not configured\");\n }\n let creds: {\n type?: string;\n client_email?: string;\n private_key?: string;\n token_uri?: string;\n };\n try {\n creds = JSON.parse(credsJson) as typeof creds;\n } catch {\n throw new Error(\n \"GOOGLE_APPLICATION_CREDENTIALS_JSON is not valid JSON. Upload a service account JSON key.\",\n );\n }\n if (!creds.client_email || !creds.private_key) {\n throw new Error(\n \"GOOGLE_APPLICATION_CREDENTIALS_JSON must be a service account JSON key.\",\n );\n }\n\n const now = Math.floor(Date.now() / 1000);\n const aud = creds.token_uri || \"https://oauth2.googleapis.com/token\";\n const jwt = await signRs256Jwt(\n {\n iss: creds.client_email,\n scope: scopes.join(\" \"),\n aud,\n iat: now,\n exp: now + 3600,\n },\n creds.private_key,\n );\n const res = await fetch(aud, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams({\n grant_type: \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\n assertion: jwt,\n }),\n });\n if (!res.ok) {\n throw new Error(`Google OAuth error ${res.status}: ${await res.text()}`);\n }\n const data = (await res.json()) as {\n access_token: string;\n expires_in?: number;\n };\n googleServiceTokenCache.set(cacheKey, {\n token: data.access_token,\n expiresAt: Date.now() + (data.expires_in ?? 3600) * 1000,\n });\n return data.access_token;\n}\n\nasync function resolveOAuthBearerToken(options: {\n auth: Extract<ProviderApiAuthKind, { type: \"oauth-bearer\" }>;\n ctx: CredentialContext;\n accountId?: string | null;\n}): Promise<ProviderApiResolvedCredential> {\n const accounts = await listOAuthAccountsByOwner(\n options.auth.oauthProvider,\n options.ctx.userEmail,\n );\n if (accounts.length === 0) {\n throw new Error(\n `${options.auth.tokenLabel} is not connected for ${options.ctx.userEmail}.`,\n );\n }\n const accountId = options.accountId?.trim();\n const account = accountId\n ? accounts.find((entry) => entry.accountId === accountId)\n : accounts[0];\n if (!account) {\n throw new Error(\n `${options.auth.tokenLabel} account ${accountId} is not available to ${options.ctx.userEmail}.`,\n );\n }\n const tokens = account.tokens as OAuthTokens;\n const token = await getValidOAuthAccessToken({\n oauthProvider: options.auth.oauthProvider,\n accountId: account.accountId,\n ownerEmail: options.ctx.userEmail,\n tokens,\n });\n return {\n key: `${options.auth.oauthProvider.toUpperCase()}_OAUTH_TOKEN`,\n value: token,\n source: \"oauth_token\",\n provider: options.auth.oauthProvider,\n accountId: account.accountId,\n accountLabel: account.displayName,\n };\n}\n\nasync function getValidOAuthAccessToken(options: {\n oauthProvider: string;\n accountId: string;\n ownerEmail: string;\n tokens: OAuthTokens;\n}): Promise<string> {\n const accessToken =\n options.tokens.access_token ?? options.tokens.accessToken ?? \"\";\n if (!accessToken) {\n throw new Error(\n `${options.oauthProvider} OAuth account has no access token.`,\n );\n }\n const expiresAt = options.tokens.expiry_date ?? options.tokens.expiresAt;\n if (\n !expiresAt ||\n !Number.isFinite(expiresAt) ||\n expiresAt > Date.now() + 60_000\n ) {\n return accessToken;\n }\n\n const refreshToken =\n options.tokens.refresh_token ?? options.tokens.refreshToken;\n if (!refreshToken) return accessToken;\n if (options.oauthProvider === \"google\") {\n return refreshGoogleOAuthToken(options, refreshToken);\n }\n throw new Error(\n `${options.oauthProvider} OAuth token is expired and automatic refresh is not configured for provider-api.`,\n );\n}\n\nasync function refreshGoogleOAuthToken(\n options: {\n oauthProvider: string;\n accountId: string;\n ownerEmail: string;\n tokens: OAuthTokens;\n },\n refreshToken: string,\n): Promise<string> {\n const clientId = process.env.GOOGLE_CLIENT_ID;\n const clientSecret = process.env.GOOGLE_CLIENT_SECRET;\n if (!clientId || !clientSecret) {\n throw new Error(\n \"GOOGLE_CLIENT_ID/SECRET not set for Google OAuth refresh.\",\n );\n }\n const res = await fetch(\"https://oauth2.googleapis.com/token\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams({\n refresh_token: refreshToken,\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: \"refresh_token\",\n }),\n });\n const data = (await res.json()) as {\n access_token?: string;\n expires_in?: number;\n token_type?: string;\n scope?: string;\n error?: string;\n error_description?: string;\n };\n if (!res.ok || !data.access_token) {\n const detail = data.error_description ?? data.error ?? res.statusText;\n throw new Error(`Google OAuth refresh failed: ${detail}`);\n }\n const merged: OAuthTokens = {\n ...options.tokens,\n access_token: data.access_token,\n expiry_date: Date.now() + (data.expires_in ?? 3600) * 1000,\n token_type: data.token_type ?? options.tokens.token_type,\n scope: data.scope ?? options.tokens.scope,\n };\n await saveOAuthTokens(\n options.oauthProvider,\n options.accountId,\n merged as unknown as Record<string, unknown>,\n options.ownerEmail,\n );\n return data.access_token;\n}\n\nfunction normalizeMethod(\n method: ProviderApiMethod | undefined,\n): ProviderApiMethod {\n const normalized = String(method || \"GET\").toUpperCase();\n if (\n normalized === \"GET\" ||\n normalized === \"POST\" ||\n normalized === \"PUT\" ||\n normalized === \"PATCH\" ||\n normalized === \"DELETE\" ||\n normalized === \"HEAD\"\n ) {\n return normalized;\n }\n throw new Error(`Unsupported HTTP method: ${method}`);\n}\n\nfunction sanitizeOutboundHeaders(value: unknown): Record<string, string> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return {};\n const headers: Record<string, string> = {};\n for (const [name, rawValue] of Object.entries(value)) {\n const lower = name.toLowerCase();\n if (!HEADER_NAME_RE.test(name) || BLOCKED_OUTBOUND_HEADERS.has(lower)) {\n continue;\n }\n if (rawValue === undefined || rawValue === null) continue;\n const headerValue = String(rawValue);\n if (/[\\r\\n]/.test(headerValue)) continue;\n headers[name] = headerValue;\n }\n return headers;\n}\n\nfunction prepareBody(\n body: unknown,\n headers: Record<string, string>,\n): BodyInit | undefined {\n if (body === undefined || body === null) return undefined;\n if (typeof body === \"string\") return body;\n const hasContentType = Object.keys(headers).some(\n (name) => name.toLowerCase() === \"content-type\",\n );\n if (!hasContentType) headers[\"Content-Type\"] = \"application/json\";\n return JSON.stringify(body);\n}\n\nasync function fetchWithTimeout(\n optionsUrl: string,\n options: {\n method?: ProviderApiMethod;\n headers?: Record<string, string>;\n body?: BodyInit;\n timeoutMs?: number;\n maxBytes?: number;\n secretValues?: string[];\n },\n) {\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n clampTimeout(options.timeoutMs),\n );\n try {\n const dispatcher = (await createSsrfSafeDispatcher()) ?? undefined;\n const fetchOptions: RequestInit & { dispatcher?: unknown } = {\n method: options.method ?? \"GET\",\n headers: options.headers,\n body: options.body,\n signal: controller.signal,\n redirect: \"manual\",\n };\n if (dispatcher) fetchOptions.dispatcher = dispatcher;\n const startedAt = Date.now();\n const res = await fetch(optionsUrl, fetchOptions);\n const elapsedMs = Date.now() - startedAt;\n const rawText = await readResponseTextWithLimit(\n res,\n clampMaxBytes(options.maxBytes),\n );\n const secretValues = options.secretValues ?? [];\n const redactedText = redactString(rawText.text, secretValues);\n const parsed = tryParseJson(redactedText);\n return {\n status: res.status,\n statusText: res.statusText,\n ok: res.ok,\n elapsedMs,\n headers: redactSecrets(headersToObject(res.headers), secretValues),\n contentType: res.headers.get(\"content-type\") ?? null,\n size: rawText.size,\n truncated: rawText.truncated,\n text: parsed === undefined ? redactedText : undefined,\n json: parsed,\n };\n } finally {\n clearTimeout(timeout);\n }\n}\n\nasync function readResponseTextWithLimit(\n response: Response,\n maxBytes: number,\n): Promise<{ text: string; truncated: boolean; size: number }> {\n const contentLength = response.headers.get(\"content-length\");\n if (contentLength && Number(contentLength) > maxBytes) {\n return {\n text: `(response too large - ${contentLength} bytes, max ${maxBytes})`,\n truncated: true,\n size: Number(contentLength),\n };\n }\n const buffer = await response.arrayBuffer();\n const size = buffer.byteLength;\n const bytes = new Uint8Array(buffer.slice(0, maxBytes));\n return {\n text: new TextDecoder().decode(bytes),\n truncated: size > maxBytes,\n size,\n };\n}\n\nfunction headersToObject(headers: Headers): Record<string, string> {\n const result: Record<string, string> = {};\n headers.forEach((value, key) => {\n if (key.toLowerCase() !== \"set-cookie\") result[key] = value;\n });\n return result;\n}\n\nfunction tryParseJson(text: string): unknown | undefined {\n const trimmed = text.trim();\n if (!trimmed || !/^[{[]/.test(trimmed)) return undefined;\n try {\n return JSON.parse(trimmed);\n } catch {\n return undefined;\n }\n}\n\nfunction redactSecrets<T>(value: T, secretValues: string[]): T {\n if (secretValues.length === 0) return value;\n if (typeof value === \"string\") return redactString(value, secretValues) as T;\n if (Array.isArray(value)) {\n return value.map((item) => redactSecrets(item, secretValues)) as T;\n }\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [\n key,\n redactSecrets(entry, secretValues),\n ]),\n ) as T;\n }\n return value;\n}\n\nfunction redactString(text: string, secretValues: string[]): string {\n let output = text;\n for (const secret of [...secretValues].sort((a, b) => b.length - a.length)) {\n if (!secret) continue;\n output = output.split(secret).join(\"[redacted]\");\n try {\n output = output.split(encodeURIComponent(secret)).join(\"[redacted]\");\n } catch {}\n }\n return output;\n}\n\nfunction clampTimeout(timeoutMs: number | undefined): number {\n if (!Number.isFinite(timeoutMs)) return DEFAULT_TIMEOUT_MS;\n return Math.max(1_000, Math.min(MAX_TIMEOUT_MS, Math.floor(timeoutMs!)));\n}\n\nfunction clampMaxBytes(maxBytes: number | undefined): number {\n if (!Number.isFinite(maxBytes)) return DEFAULT_MAX_BYTES;\n return Math.max(1_000, Math.min(MAX_MAX_BYTES, Math.floor(maxBytes!)));\n}\n\nfunction fingerprint(value: string): string {\n return createHash(\"sha256\").update(value).digest(\"hex\").slice(0, 12);\n}\n\nfunction base64UrlEncode(bytes: Uint8Array): string {\n let binary = \"\";\n for (let i = 0; i < bytes.length; i += 1) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary)\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n}\n\nfunction base64UrlEncodeString(value: string): string {\n return base64UrlEncode(new TextEncoder().encode(value));\n}\n\nfunction pemToPkcs8(pem: string): Uint8Array {\n const body = pem\n .replace(/-----BEGIN [^-]+-----/g, \"\")\n .replace(/-----END [^-]+-----/g, \"\")\n .replace(/\\s+/g, \"\");\n const binary = atob(body);\n const out = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i += 1) {\n out[i] = binary.charCodeAt(i);\n }\n return out;\n}\n\nconst keyCache = new Map<string, Promise<CryptoKey>>();\n\nfunction importRs256Key(privateKeyPem: string): Promise<CryptoKey> {\n let cached = keyCache.get(privateKeyPem);\n if (!cached) {\n cached = crypto.subtle.importKey(\n \"pkcs8\",\n pemToPkcs8(privateKeyPem) as BufferSource,\n { name: \"RSASSA-PKCS1-v1_5\", hash: \"SHA-256\" },\n false,\n [\"sign\"],\n );\n keyCache.set(privateKeyPem, cached);\n }\n return cached;\n}\n\nasync function signRs256Jwt(\n payload: Record<string, unknown>,\n privateKeyPem: string,\n): Promise<string> {\n const header = { alg: \"RS256\", typ: \"JWT\" };\n const signingInput = `${base64UrlEncodeString(\n JSON.stringify(header),\n )}.${base64UrlEncodeString(JSON.stringify(payload))}`;\n\n const key = await importRs256Key(privateKeyPem);\n const signature = await crypto.subtle.sign(\n \"RSASSA-PKCS1-v1_5\",\n key,\n new TextEncoder().encode(signingInput) as BufferSource,\n );\n\n return `${signingInput}.${base64UrlEncode(new Uint8Array(signature))}`;\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider-api/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport {\n resolveCredential,\n type CredentialContext,\n} from \"../credentials/index.js\";\nimport {\n createSsrfSafeDispatcher,\n isBlockedExtensionUrlWithDns,\n} from \"../extensions/url-safety.js\";\nimport {\n listOAuthAccountsByOwner,\n saveOAuthTokens,\n} from \"../oauth-tokens/index.js\";\nimport { getCredentialContext } from \"../server/request-context.js\";\nimport { resolveWorkspaceConnectionCredentialForApp } from \"../workspace-connections/credentials.js\";\nimport type { WorkspaceConnectionTemplateUse } from \"../connections/catalog.js\";\n\nexport const PROVIDER_API_IDS = [\n \"amplitude\",\n \"apollo\",\n \"bigquery\",\n \"commonroom\",\n \"dataforseo\",\n \"ga4\",\n \"gcloud\",\n \"github\",\n \"gmail\",\n \"gong\",\n \"google_calendar\",\n \"google_drive\",\n \"granola\",\n \"grafana\",\n \"hubspot\",\n \"jira\",\n \"mixpanel\",\n \"notion\",\n \"posthog\",\n \"prometheus\",\n \"pylon\",\n \"sentry\",\n \"slack\",\n \"stripe\",\n \"twitter\",\n] as const;\n\nexport type ProviderApiId = (typeof PROVIDER_API_IDS)[number];\n\nexport type ProviderApiMethod =\n | \"GET\"\n | \"POST\"\n | \"PUT\"\n | \"PATCH\"\n | \"DELETE\"\n | \"HEAD\";\n\nexport interface ProviderApiRequestArgs {\n provider: ProviderApiId | string;\n method?: ProviderApiMethod;\n path: string;\n query?: unknown;\n headers?: Record<string, unknown>;\n body?: unknown;\n auth?: \"default\" | \"none\";\n timeoutMs?: number;\n maxBytes?: number;\n connectionId?: string | null;\n accountId?: string | null;\n}\n\nexport type ProviderApiAuthKind =\n | { type: \"none\" }\n | {\n type: \"bearer\";\n keys: readonly string[];\n workspaceProvider?: string;\n }\n | {\n type: \"basic\";\n usernameKey: string;\n passwordKey: string;\n workspaceProvider?: string;\n }\n | {\n type: \"basic-raw\";\n key: string;\n workspaceProvider?: string;\n }\n | {\n type: \"api-key-header\";\n key: string;\n header: string;\n workspaceProvider?: string;\n }\n | {\n type: \"google-service-account\";\n scopes: readonly string[];\n }\n | {\n type: \"oauth-bearer\";\n oauthProvider: string;\n tokenLabel: string;\n }\n | {\n type: \"prometheus\";\n };\n\nexport interface ProviderApiConfig {\n id: ProviderApiId;\n label: string;\n defaultBaseUrl: string;\n baseUrlCredentialKey?: string;\n auth: ProviderApiAuthKind;\n credentialKeys: readonly string[];\n docsUrls: readonly string[];\n specUrls?: readonly string[];\n allowedHostSuffixes?: readonly string[];\n defaultHeaders?: Record<string, string>;\n placeholders?: readonly ProviderApiPlaceholder[];\n examples?: readonly ProviderApiExample[];\n notes?: readonly string[];\n templateUses?: readonly WorkspaceConnectionTemplateUse[];\n}\n\nexport interface ProviderApiPlaceholder {\n name: string;\n credentialKey: string;\n label: string;\n}\n\nexport interface ProviderApiExample {\n label: string;\n method: ProviderApiMethod;\n path: string;\n body?: unknown;\n}\n\nexport interface ProviderApiResolvedCredential {\n key: string;\n value: string;\n source: string;\n provider: string;\n connectionId?: string;\n connectionLabel?: string;\n accountId?: string;\n accountLabel?: string | null;\n scope?: string;\n}\n\nexport interface ProviderApiCredentialLookupOptions {\n appId: string;\n provider: string;\n key: string;\n ctx: CredentialContext;\n workspaceProvider?: string;\n connectionId?: string | null;\n localCredentialSource: string;\n}\n\nexport type ProviderApiCredentialResolver = (\n options: ProviderApiCredentialLookupOptions,\n) => Promise<ProviderApiResolvedCredential | null>;\n\nexport interface ProviderApiRuntimeOptions {\n appId: string;\n providerIds?: readonly (ProviderApiId | string)[];\n localCredentialSource?: string;\n getCredentialContext?: () => CredentialContext | null;\n resolveCredential?: ProviderApiCredentialResolver;\n}\n\ninterface ProviderApiRuntime {\n providerIds: readonly ProviderApiId[];\n listCatalog(\n provider?: ProviderApiId | string,\n ): ReturnType<typeof listProviderApiCatalog>;\n fetchDocs(options: {\n provider: ProviderApiId | string;\n url?: string;\n maxBytes?: number;\n }): Promise<unknown>;\n executeRequest(args: ProviderApiRequestArgs): Promise<unknown>;\n}\n\ninterface ResolvedAuth {\n headers: Record<string, string>;\n credentialSources: Array<Omit<ProviderApiResolvedCredential, \"value\">>;\n secretValues: string[];\n}\n\ninterface OAuthTokens {\n access_token?: string;\n accessToken?: string;\n refresh_token?: string;\n refreshToken?: string;\n expiry_date?: number;\n expiresAt?: number;\n expires_in?: number;\n token_type?: string;\n scope?: string;\n}\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst MAX_TIMEOUT_MS = 120_000;\nconst DEFAULT_MAX_BYTES = 1024 * 1024;\nconst MAX_MAX_BYTES = 4 * 1024 * 1024;\nconst HEADER_NAME_RE = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;\nconst BLOCKED_OUTBOUND_HEADERS = new Set([\n \"connection\",\n \"content-length\",\n \"cookie\",\n \"forwarded\",\n \"host\",\n \"keep-alive\",\n \"origin\",\n \"proxy-authenticate\",\n \"proxy-authorization\",\n \"referer\",\n \"set-cookie\",\n \"te\",\n \"trailer\",\n \"transfer-encoding\",\n \"upgrade\",\n \"x-forwarded-for\",\n \"x-forwarded-host\",\n \"x-forwarded-proto\",\n]);\n\nconst PROVIDER_CONFIGS: Record<ProviderApiId, ProviderApiConfig> = {\n amplitude: {\n id: \"amplitude\",\n label: \"Amplitude\",\n defaultBaseUrl: \"https://amplitude.com/api/2\",\n auth: {\n type: \"basic\",\n usernameKey: \"AMPLITUDE_API_KEY\",\n passwordKey: \"AMPLITUDE_SECRET_KEY\",\n },\n credentialKeys: [\"AMPLITUDE_API_KEY\", \"AMPLITUDE_SECRET_KEY\"],\n docsUrls: [\"https://amplitude.com/docs/apis\"],\n allowedHostSuffixes: [\"amplitude.com\"],\n templateUses: [\"analytics\"],\n examples: [\n {\n label: \"Export events\",\n method: \"GET\",\n path: \"/export?start=20260601T00&end=20260602T00\",\n },\n ],\n },\n apollo: {\n id: \"apollo\",\n label: \"Apollo\",\n defaultBaseUrl: \"https://api.apollo.io\",\n auth: {\n type: \"api-key-header\",\n key: \"APOLLO_API_KEY\",\n header: \"x-api-key\",\n },\n credentialKeys: [\"APOLLO_API_KEY\"],\n docsUrls: [\"https://docs.apollo.io/reference/api-reference\"],\n templateUses: [\"analytics\"],\n examples: [\n {\n label: \"Search people\",\n method: \"POST\",\n path: \"/api/v1/mixed_people/search\",\n body: { q_keywords: \"vp marketing\", page: 1, per_page: 10 },\n },\n ],\n },\n bigquery: {\n id: \"bigquery\",\n label: \"BigQuery REST API\",\n defaultBaseUrl: \"https://bigquery.googleapis.com/bigquery/v2\",\n auth: {\n type: \"google-service-account\",\n scopes: [\n \"https://www.googleapis.com/auth/cloud-platform\",\n \"https://www.googleapis.com/auth/bigquery\",\n ],\n },\n credentialKeys: [\n \"GOOGLE_APPLICATION_CREDENTIALS_JSON\",\n \"BIGQUERY_PROJECT_ID\",\n ],\n docsUrls: [\"https://cloud.google.com/bigquery/docs/reference/rest\"],\n specUrls: [\"https://bigquery.googleapis.com/$discovery/rest?version=v2\"],\n allowedHostSuffixes: [\"googleapis.com\"],\n templateUses: [\"analytics\"],\n placeholders: [\n {\n name: \"projectId\",\n credentialKey: \"BIGQUERY_PROJECT_ID\",\n label: \"Configured BigQuery project ID\",\n },\n ],\n examples: [\n {\n label: \"List datasets\",\n method: \"GET\",\n path: \"/projects/{projectId}/datasets\",\n },\n {\n label: \"Run query\",\n method: \"POST\",\n path: \"/projects/{projectId}/queries\",\n body: { query: \"SELECT 1\", useLegacySql: false },\n },\n ],\n },\n commonroom: {\n id: \"commonroom\",\n label: \"Common Room\",\n defaultBaseUrl: \"https://api.commonroom.io/community/v1\",\n auth: {\n type: \"bearer\",\n keys: [\"COMMONROOM_API_TOKEN\"],\n },\n credentialKeys: [\"COMMONROOM_API_TOKEN\"],\n docsUrls: [\"https://developer.commonroom.io/reference/overview\"],\n templateUses: [\"analytics\"],\n examples: [{ label: \"List members\", method: \"GET\", path: \"/members\" }],\n },\n dataforseo: {\n id: \"dataforseo\",\n label: \"DataForSEO\",\n defaultBaseUrl: \"https://api.dataforseo.com/v3\",\n auth: {\n type: \"basic\",\n usernameKey: \"DATAFORSEO_LOGIN\",\n passwordKey: \"DATAFORSEO_PASSWORD\",\n },\n credentialKeys: [\"DATAFORSEO_LOGIN\", \"DATAFORSEO_PASSWORD\"],\n docsUrls: [\"https://docs.dataforseo.com/v3/\"],\n templateUses: [\"analytics\"],\n examples: [\n {\n label: \"SERP task post\",\n method: \"POST\",\n path: \"/serp/google/organic/task_post\",\n body: [\n { keyword: \"builder.io\", location_code: 2840, language_code: \"en\" },\n ],\n },\n ],\n },\n ga4: {\n id: \"ga4\",\n label: \"Google Analytics Data API\",\n defaultBaseUrl: \"https://analyticsdata.googleapis.com/v1beta\",\n auth: {\n type: \"google-service-account\",\n scopes: [\"https://www.googleapis.com/auth/analytics.readonly\"],\n },\n credentialKeys: [\"GOOGLE_APPLICATION_CREDENTIALS_JSON\", \"GA4_PROPERTY_ID\"],\n docsUrls: [\n \"https://developers.google.com/analytics/devguides/reporting/data/v1/rest\",\n ],\n specUrls: [\n \"https://analyticsdata.googleapis.com/$discovery/rest?version=v1beta\",\n ],\n allowedHostSuffixes: [\"googleapis.com\"],\n templateUses: [\"analytics\"],\n placeholders: [\n {\n name: \"propertyId\",\n credentialKey: \"GA4_PROPERTY_ID\",\n label: \"Configured GA4 property ID\",\n },\n ],\n examples: [\n {\n label: \"Run report\",\n method: \"POST\",\n path: \"/properties/{propertyId}:runReport\",\n body: {\n dateRanges: [{ startDate: \"30daysAgo\", endDate: \"today\" }],\n metrics: [{ name: \"activeUsers\" }],\n },\n },\n ],\n },\n gcloud: {\n id: \"gcloud\",\n label: \"Google Cloud APIs\",\n defaultBaseUrl: \"https://cloudresourcemanager.googleapis.com\",\n auth: {\n type: \"google-service-account\",\n scopes: [\n \"https://www.googleapis.com/auth/cloud-platform\",\n \"https://www.googleapis.com/auth/monitoring.read\",\n \"https://www.googleapis.com/auth/logging.read\",\n \"https://www.googleapis.com/auth/bigquery\",\n ],\n },\n credentialKeys: [\n \"GOOGLE_APPLICATION_CREDENTIALS_JSON\",\n \"BIGQUERY_PROJECT_ID\",\n ],\n docsUrls: [\"https://cloud.google.com/apis/docs/overview\"],\n specUrls: [\"https://www.googleapis.com/discovery/v1/apis\"],\n allowedHostSuffixes: [\"googleapis.com\"],\n templateUses: [\"analytics\"],\n placeholders: [\n {\n name: \"projectId\",\n credentialKey: \"BIGQUERY_PROJECT_ID\",\n label: \"Configured Google Cloud project ID\",\n },\n ],\n examples: [\n {\n label: \"Get project\",\n method: \"GET\",\n path: \"https://cloudresourcemanager.googleapis.com/v1/projects/{projectId}\",\n },\n ],\n },\n github: {\n id: \"github\",\n label: \"GitHub REST API\",\n defaultBaseUrl: \"https://api.github.com\",\n auth: {\n type: \"bearer\",\n keys: [\"GITHUB_TOKEN\"],\n workspaceProvider: \"github\",\n },\n credentialKeys: [\"GITHUB_TOKEN\"],\n docsUrls: [\"https://docs.github.com/rest\"],\n specUrls: [\n \"https://raw.githubusercontent.com/github/rest-api-description/main/descriptions/api.github.com/api.github.com.json\",\n ],\n defaultHeaders: {\n Accept: \"application/vnd.github+json\",\n \"X-GitHub-Api-Version\": \"2022-11-28\",\n },\n templateUses: [\"analytics\", \"brain\", \"dispatch\"],\n examples: [\n { label: \"Authenticated user\", method: \"GET\", path: \"/user\" },\n { label: \"Search issues\", method: \"GET\", path: \"/search/issues\" },\n ],\n },\n gmail: {\n id: \"gmail\",\n label: \"Gmail API\",\n defaultBaseUrl: \"https://gmail.googleapis.com/gmail/v1\",\n auth: {\n type: \"oauth-bearer\",\n oauthProvider: \"google\",\n tokenLabel: \"Google OAuth token\",\n },\n credentialKeys: [\"GOOGLE_OAUTH_ACCOUNT\"],\n docsUrls: [\"https://developers.google.com/gmail/api/reference/rest\"],\n specUrls: [\"https://gmail.googleapis.com/$discovery/rest?version=v1\"],\n allowedHostSuffixes: [\"googleapis.com\"],\n templateUses: [\"brain\", \"mail\", \"dispatch\"],\n examples: [\n {\n label: \"List messages\",\n method: \"GET\",\n path: \"/users/me/messages\",\n },\n {\n label: \"Search messages\",\n method: \"GET\",\n path: \"/users/me/messages\",\n body: undefined,\n },\n ],\n notes: [\n \"Uses the current user's stored Google OAuth account. Pass accountId when the user has multiple Google accounts connected.\",\n ],\n },\n gong: {\n id: \"gong\",\n label: \"Gong\",\n defaultBaseUrl: \"https://api.gong.io/v2\",\n baseUrlCredentialKey: \"GONG_API_BASE\",\n auth: {\n type: \"basic\",\n usernameKey: \"GONG_ACCESS_KEY\",\n passwordKey: \"GONG_ACCESS_SECRET\",\n },\n credentialKeys: [\"GONG_ACCESS_KEY\", \"GONG_ACCESS_SECRET\", \"GONG_API_BASE\"],\n docsUrls: [\"https://gong.app.gong.io/settings/api/documentation\"],\n templateUses: [\"analytics\"],\n examples: [\n { label: \"List calls\", method: \"GET\", path: \"/calls\" },\n {\n label: \"Call transcript\",\n method: \"POST\",\n path: \"/calls/transcript\",\n body: { filter: { callIds: [\"<call-id>\"] } },\n },\n ],\n },\n google_calendar: {\n id: \"google_calendar\",\n label: \"Google Calendar API\",\n defaultBaseUrl: \"https://www.googleapis.com/calendar/v3\",\n auth: {\n type: \"oauth-bearer\",\n oauthProvider: \"google\",\n tokenLabel: \"Google OAuth token\",\n },\n credentialKeys: [\"GOOGLE_OAUTH_ACCOUNT\"],\n docsUrls: [\"https://developers.google.com/calendar/api/v3/reference\"],\n specUrls: [\"https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest\"],\n allowedHostSuffixes: [\"googleapis.com\"],\n templateUses: [\"brain\", \"calendar\", \"dispatch\"],\n examples: [\n {\n label: \"List calendars\",\n method: \"GET\",\n path: \"/users/me/calendarList\",\n },\n {\n label: \"Search events\",\n method: \"GET\",\n path: \"/calendars/primary/events\",\n },\n ],\n notes: [\n \"Uses the current user's stored Google OAuth account. Pass accountId when the user has multiple Google accounts connected.\",\n ],\n },\n google_drive: {\n id: \"google_drive\",\n label: \"Google Drive API\",\n defaultBaseUrl: \"https://www.googleapis.com/drive/v3\",\n auth: {\n type: \"oauth-bearer\",\n oauthProvider: \"google\",\n tokenLabel: \"Google OAuth token\",\n },\n credentialKeys: [\"GOOGLE_OAUTH_ACCOUNT\"],\n docsUrls: [\"https://developers.google.com/drive/api/reference/rest/v3\"],\n specUrls: [\"https://www.googleapis.com/discovery/v1/apis/drive/v3/rest\"],\n allowedHostSuffixes: [\"googleapis.com\"],\n templateUses: [\"brain\", \"content\", \"slides\", \"dispatch\"],\n examples: [\n { label: \"List files\", method: \"GET\", path: \"/files\" },\n { label: \"Get file metadata\", method: \"GET\", path: \"/files/{fileId}\" },\n ],\n notes: [\n \"Uses the current user's stored Google OAuth account. Pass accountId when the user has multiple Google accounts connected.\",\n ],\n },\n granola: {\n id: \"granola\",\n label: \"Granola Public API\",\n defaultBaseUrl: \"https://public-api.granola.ai/v1\",\n auth: {\n type: \"bearer\",\n keys: [\"GRANOLA_API_KEY\"],\n workspaceProvider: \"granola\",\n },\n credentialKeys: [\"GRANOLA_API_KEY\"],\n docsUrls: [\"https://docs.granola.ai/\"],\n templateUses: [\"brain\", \"dispatch\"],\n examples: [\n { label: \"List notes\", method: \"GET\", path: \"/notes\" },\n { label: \"Get note\", method: \"GET\", path: \"/notes/<note-id>\" },\n ],\n },\n grafana: {\n id: \"grafana\",\n label: \"Grafana\",\n defaultBaseUrl: \"https://grafana.example.com\",\n baseUrlCredentialKey: \"GRAFANA_URL\",\n auth: {\n type: \"bearer\",\n keys: [\"GRAFANA_API_TOKEN\"],\n },\n credentialKeys: [\"GRAFANA_URL\", \"GRAFANA_API_TOKEN\"],\n docsUrls: [\"https://grafana.com/docs/grafana/latest/developers/http_api/\"],\n templateUses: [\"analytics\"],\n examples: [\n { label: \"List dashboards\", method: \"GET\", path: \"/api/search\" },\n ],\n },\n hubspot: {\n id: \"hubspot\",\n label: \"HubSpot\",\n defaultBaseUrl: \"https://api.hubapi.com\",\n auth: {\n type: \"bearer\",\n keys: [\"HUBSPOT_PRIVATE_APP_TOKEN\", \"HUBSPOT_ACCESS_TOKEN\"],\n workspaceProvider: \"hubspot\",\n },\n credentialKeys: [\"HUBSPOT_PRIVATE_APP_TOKEN\", \"HUBSPOT_ACCESS_TOKEN\"],\n docsUrls: [\"https://developers.hubspot.com/docs/api/overview\"],\n templateUses: [\"analytics\", \"brain\", \"mail\", \"dispatch\"],\n examples: [\n {\n label: \"Search deals with any HubSpot CRM filter\",\n method: \"POST\",\n path: \"/crm/v3/objects/deals/search\",\n body: {\n filterGroups: [\n {\n filters: [\n {\n propertyName: \"products\",\n operator: \"CONTAINS_TOKEN\",\n value: \"Publish\",\n },\n ],\n },\n ],\n properties: [\"dealname\", \"products\", \"dealstage\", \"closedate\"],\n limit: 100,\n },\n },\n {\n label: \"List deal property metadata\",\n method: \"GET\",\n path: \"/crm/v3/properties/deals\",\n },\n ],\n },\n jira: {\n id: \"jira\",\n label: \"Jira Cloud\",\n defaultBaseUrl: \"https://example.atlassian.net\",\n baseUrlCredentialKey: \"JIRA_BASE_URL\",\n auth: {\n type: \"basic\",\n usernameKey: \"JIRA_USER_EMAIL\",\n passwordKey: \"JIRA_API_TOKEN\",\n },\n credentialKeys: [\"JIRA_BASE_URL\", \"JIRA_USER_EMAIL\", \"JIRA_API_TOKEN\"],\n docsUrls: [\n \"https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/\",\n ],\n specUrls: [\n \"https://dac-static.atlassian.com/cloud/jira/platform/swagger-v3.v3.json\",\n ],\n templateUses: [\"analytics\"],\n examples: [\n {\n label: \"JQL search\",\n method: \"GET\",\n path: \"/rest/api/3/search/jql\",\n },\n ],\n },\n mixpanel: {\n id: \"mixpanel\",\n label: \"Mixpanel\",\n defaultBaseUrl: \"https://mixpanel.com/api/query\",\n auth: {\n type: \"basic-raw\",\n key: \"MIXPANEL_SERVICE_ACCOUNT\",\n },\n credentialKeys: [\"MIXPANEL_PROJECT_ID\", \"MIXPANEL_SERVICE_ACCOUNT\"],\n docsUrls: [\"https://developer.mixpanel.com/reference/overview\"],\n allowedHostSuffixes: [\"mixpanel.com\"],\n templateUses: [\"analytics\"],\n placeholders: [\n {\n name: \"projectId\",\n credentialKey: \"MIXPANEL_PROJECT_ID\",\n label: \"Configured Mixpanel project ID\",\n },\n ],\n examples: [\n {\n label: \"Query events\",\n method: \"GET\",\n path: \"/events\",\n },\n ],\n notes: [\n \"Mixpanel uses multiple API hosts. You may pass full URLs for mixpanel.com or data.mixpanel.com endpoints.\",\n ],\n },\n notion: {\n id: \"notion\",\n label: \"Notion\",\n defaultBaseUrl: \"https://api.notion.com/v1\",\n auth: {\n type: \"bearer\",\n keys: [\"NOTION_API_KEY\"],\n workspaceProvider: \"notion\",\n },\n credentialKeys: [\"NOTION_API_KEY\"],\n docsUrls: [\"https://developers.notion.com/reference/intro\"],\n defaultHeaders: { \"Notion-Version\": \"2022-06-28\" },\n templateUses: [\"analytics\", \"brain\", \"content\", \"dispatch\"],\n examples: [{ label: \"Search\", method: \"POST\", path: \"/search\", body: {} }],\n },\n posthog: {\n id: \"posthog\",\n label: \"PostHog\",\n defaultBaseUrl: \"https://app.posthog.com\",\n baseUrlCredentialKey: \"POSTHOG_HOST\",\n auth: {\n type: \"bearer\",\n keys: [\"POSTHOG_API_KEY\"],\n },\n credentialKeys: [\"POSTHOG_API_KEY\", \"POSTHOG_PROJECT_ID\", \"POSTHOG_HOST\"],\n docsUrls: [\"https://posthog.com/docs/api\"],\n templateUses: [\"analytics\"],\n placeholders: [\n {\n name: \"projectId\",\n credentialKey: \"POSTHOG_PROJECT_ID\",\n label: \"Configured PostHog project ID\",\n },\n ],\n examples: [\n {\n label: \"List events\",\n method: \"GET\",\n path: \"/api/projects/{projectId}/events/\",\n },\n ],\n },\n prometheus: {\n id: \"prometheus\",\n label: \"Prometheus\",\n defaultBaseUrl: \"https://prometheus.example.com\",\n baseUrlCredentialKey: \"PROMETHEUS_URL\",\n auth: { type: \"prometheus\" },\n credentialKeys: [\n \"PROMETHEUS_URL\",\n \"PROMETHEUS_USERNAME\",\n \"PROMETHEUS_PASSWORD\",\n \"PROMETHEUS_BEARER_TOKEN\",\n ],\n docsUrls: [\"https://prometheus.io/docs/prometheus/latest/querying/api/\"],\n templateUses: [\"analytics\"],\n examples: [\n {\n label: \"Instant query\",\n method: \"GET\",\n path: \"/api/v1/query\",\n },\n ],\n },\n pylon: {\n id: \"pylon\",\n label: \"Pylon\",\n defaultBaseUrl: \"https://api.usepylon.com\",\n auth: {\n type: \"bearer\",\n keys: [\"PYLON_API_KEY\"],\n },\n credentialKeys: [\"PYLON_API_KEY\"],\n docsUrls: [\"https://docs.usepylon.com/pylon-docs/developer/api-reference\"],\n templateUses: [\"analytics\"],\n examples: [{ label: \"List issues\", method: \"GET\", path: \"/issues\" }],\n },\n sentry: {\n id: \"sentry\",\n label: \"Sentry\",\n defaultBaseUrl: \"https://sentry.io/api/0\",\n auth: {\n type: \"bearer\",\n keys: [\"SENTRY_AUTH_TOKEN\", \"SENTRY_SERVER_TOKEN\"],\n },\n credentialKeys: [\n \"SENTRY_AUTH_TOKEN\",\n \"SENTRY_SERVER_TOKEN\",\n \"SENTRY_ORG_SLUG\",\n ],\n docsUrls: [\"https://docs.sentry.io/api/\"],\n templateUses: [\"analytics\"],\n placeholders: [\n {\n name: \"orgSlug\",\n credentialKey: \"SENTRY_ORG_SLUG\",\n label: \"Configured Sentry organization slug\",\n },\n ],\n examples: [\n {\n label: \"List issues for org\",\n method: \"GET\",\n path: \"/organizations/{orgSlug}/issues/\",\n },\n ],\n },\n slack: {\n id: \"slack\",\n label: \"Slack Web API\",\n defaultBaseUrl: \"https://slack.com/api\",\n auth: {\n type: \"bearer\",\n keys: [\"SLACK_BOT_TOKEN\"],\n workspaceProvider: \"slack\",\n },\n credentialKeys: [\"SLACK_BOT_TOKEN\", \"SLACK_BOT_TOKEN_2\"],\n docsUrls: [\"https://api.slack.com/web\"],\n specUrls: [\n \"https://api.slack.com/specs/openapi/v2/slack_web_openapi_v2_without_examples.json\",\n ],\n templateUses: [\"analytics\", \"brain\", \"dispatch\"],\n examples: [\n { label: \"Search messages\", method: \"GET\", path: \"/search.messages\" },\n { label: \"Post message\", method: \"POST\", path: \"/chat.postMessage\" },\n ],\n },\n stripe: {\n id: \"stripe\",\n label: \"Stripe\",\n defaultBaseUrl: \"https://api.stripe.com/v1\",\n auth: {\n type: \"bearer\",\n keys: [\"STRIPE_SECRET_KEY\"],\n },\n credentialKeys: [\"STRIPE_SECRET_KEY\"],\n docsUrls: [\"https://docs.stripe.com/api\"],\n specUrls: [\n \"https://raw.githubusercontent.com/stripe/openapi/master/openapi/spec3.json\",\n ],\n templateUses: [\"analytics\"],\n examples: [{ label: \"List customers\", method: \"GET\", path: \"/customers\" }],\n },\n twitter: {\n id: \"twitter\",\n label: \"Twitter/X via twitterapi.io\",\n defaultBaseUrl: \"https://api.twitterapi.io\",\n auth: {\n type: \"api-key-header\",\n key: \"TWITTER_BEARER_TOKEN\",\n header: \"X-API-Key\",\n },\n credentialKeys: [\"TWITTER_BEARER_TOKEN\"],\n docsUrls: [\"https://twitterapi.io/docs\"],\n templateUses: [\"analytics\"],\n examples: [\n {\n label: \"User tweets\",\n method: \"GET\",\n path: \"/twitter/user/last_tweets\",\n },\n ],\n },\n};\n\nexport function getProviderApiConfig(\n provider: ProviderApiId | string,\n): ProviderApiConfig {\n const config = PROVIDER_CONFIGS[provider as ProviderApiId];\n if (!config) throw new Error(`Unsupported provider API: ${provider}`);\n return config;\n}\n\nexport function isProviderApiId(provider: string): provider is ProviderApiId {\n return Object.prototype.hasOwnProperty.call(PROVIDER_CONFIGS, provider);\n}\n\nexport function listProviderApiIdsForTemplateUse(\n templateUse: WorkspaceConnectionTemplateUse,\n): ProviderApiId[] {\n return PROVIDER_API_IDS.filter((id) =>\n (PROVIDER_CONFIGS[id].templateUses ?? []).includes(templateUse),\n );\n}\n\nexport function listProviderApiCatalog(\n provider?: ProviderApiId | string,\n options: { providerIds?: readonly (ProviderApiId | string)[] } = {},\n) {\n const providerIds = normalizeProviderIds(options.providerIds);\n if (provider) {\n assertProviderAllowed(provider, providerIds);\n }\n const configs = provider\n ? [getProviderApiConfig(provider)]\n : providerIds.map((id) => getProviderApiConfig(id));\n return configs.map((config) => ({\n id: config.id,\n label: config.label,\n defaultBaseUrl: config.defaultBaseUrl,\n baseUrlCredentialKey: config.baseUrlCredentialKey ?? null,\n auth: describeAuth(config.auth),\n credentialKeys: config.credentialKeys,\n docsUrls: config.docsUrls,\n specUrls: config.specUrls ?? [],\n allowedHostSuffixes: config.allowedHostSuffixes ?? [],\n placeholders: config.placeholders ?? [],\n defaultHeaders: config.defaultHeaders ?? {},\n examples: config.examples ?? [],\n notes: config.notes ?? [],\n templateUses: config.templateUses ?? [],\n }));\n}\n\nexport function createProviderApiRuntime(\n options: ProviderApiRuntimeOptions,\n): ProviderApiRuntime {\n const providerIds = normalizeProviderIds(options.providerIds);\n const runtimeOptions: Required<\n Pick<ProviderApiRuntimeOptions, \"appId\" | \"localCredentialSource\">\n > &\n Omit<ProviderApiRuntimeOptions, \"appId\" | \"localCredentialSource\"> = {\n ...options,\n providerIds,\n localCredentialSource: options.localCredentialSource ?? \"app_local\",\n };\n return {\n providerIds,\n listCatalog: (provider) =>\n listProviderApiCatalog(provider, { providerIds }),\n fetchDocs: (docsOptions) =>\n fetchProviderApiDocs(docsOptions, runtimeOptions),\n executeRequest: (args) => executeProviderApiRequest(args, runtimeOptions),\n };\n}\n\nexport async function fetchProviderApiDocs(\n options: {\n provider: ProviderApiId | string;\n url?: string;\n maxBytes?: number;\n },\n runtime: ProviderApiRuntimeOptions = { appId: \"app\" },\n) {\n assertProviderAllowed(options.provider, runtime.providerIds);\n const config = getProviderApiConfig(options.provider);\n const catalog = listProviderApiCatalog(options.provider)[0];\n if (!options.url) return { provider: config.id, catalog };\n\n const url = new URL(options.url);\n const allowed = [\n ...config.docsUrls,\n ...(config.specUrls ?? []),\n config.defaultBaseUrl,\n ].some((allowedUrl) => sameOriginOrChild(url, new URL(allowedUrl)));\n if (!allowed) {\n throw new Error(\n `Docs URL must be one of the registered ${config.label} docs/spec origins.`,\n );\n }\n if (await isBlockedExtensionUrlWithDns(url.href)) {\n throw new Error(`Blocked private/internal docs URL: ${url.href}`);\n }\n\n const response = await fetchWithTimeout(url.href, {\n method: \"GET\",\n maxBytes: clampMaxBytes(options.maxBytes),\n });\n return {\n provider: config.id,\n catalog,\n request: { url: url.href },\n response,\n };\n}\n\nexport async function executeProviderApiRequest(\n args: ProviderApiRequestArgs,\n runtime: ProviderApiRuntimeOptions,\n) {\n assertProviderAllowed(args.provider, runtime.providerIds);\n const config = getProviderApiConfig(args.provider);\n const ctx = requireRuntimeCredentialContext(\n runtime,\n config.credentialKeys[0] ?? config.id,\n );\n const baseUrl = await resolveBaseUrl(config, runtime, ctx, args);\n const placeholders = await resolvePlaceholders(config, runtime, ctx, args);\n const method = normalizeMethod(args.method);\n const url = buildProviderUrl({\n config,\n baseUrl,\n rawPath: substituteString(args.path, placeholders),\n query: substituteUnknown(args.query, placeholders),\n });\n if (await isBlockedExtensionUrlWithDns(url.href)) {\n throw new Error(`Blocked private/internal provider URL: ${url.href}`);\n }\n\n const auth =\n args.auth === \"none\"\n ? emptyAuth()\n : await resolveAuth(config, runtime, ctx, args);\n const extraHeaders = substituteUnknown(args.headers ?? {}, placeholders);\n const headers = sanitizeOutboundHeaders({\n ...(config.defaultHeaders ?? {}),\n ...(isPlainRecord(extraHeaders) ? extraHeaders : {}),\n ...auth.headers,\n });\n const body = prepareBody(substituteUnknown(args.body, placeholders), headers);\n const response = await fetchWithTimeout(url.href, {\n method,\n headers,\n body,\n maxBytes: clampMaxBytes(args.maxBytes),\n timeoutMs: clampTimeout(args.timeoutMs),\n secretValues: auth.secretValues,\n });\n\n return {\n provider: {\n id: config.id,\n label: config.label,\n docsUrls: config.docsUrls,\n specUrls: config.specUrls ?? [],\n },\n request: {\n method,\n url: redactString(url.href, auth.secretValues),\n path: redactString(`${url.pathname}${url.search}`, auth.secretValues),\n auth: args.auth === \"none\" ? \"none\" : describeAuth(config.auth),\n credentialSources: auth.credentialSources.map((source) => ({\n ...source,\n fingerprint: fingerprint(source.key),\n })),\n headerNames: Object.keys(headers).filter(\n (name) => name.toLowerCase() !== \"authorization\",\n ),\n ...(args.accountId ? { accountId: args.accountId } : {}),\n ...(args.connectionId ? { connectionId: args.connectionId } : {}),\n },\n response,\n guidance:\n \"This was a raw provider API request. Use provider docs/spec URLs to choose endpoints and include method/path/status plus relevant filters in the methodology. Prefer this escape hatch whenever canned actions are too narrow.\",\n };\n}\n\nexport async function defaultProviderApiCredentialResolver(\n options: ProviderApiCredentialLookupOptions,\n): Promise<ProviderApiResolvedCredential | null> {\n if (options.workspaceProvider) {\n const result = await resolveWorkspaceConnectionCredentialForApp({\n appId: options.appId,\n provider: options.workspaceProvider,\n key: options.key,\n connectionId: options.connectionId,\n userEmail: options.ctx.userEmail,\n orgId: options.ctx.orgId,\n });\n if (result.available && result.value) {\n return {\n key: result.provenance?.resolvedKey ?? result.key,\n value: result.value,\n source: \"workspace_connection\",\n provider: result.provider,\n connectionId: result.provenance?.connectionId,\n connectionLabel: result.provenance?.connectionLabel,\n scope:\n typeof result.provenance?.secretScope === \"string\"\n ? result.provenance.secretScope\n : undefined,\n };\n }\n }\n\n const value = await resolveCredential(options.key, options.ctx);\n if (!value) return null;\n return {\n key: options.key,\n value,\n source: options.localCredentialSource,\n provider: options.provider,\n };\n}\n\nfunction normalizeProviderIds(\n providerIds?: readonly (ProviderApiId | string)[],\n): ProviderApiId[] {\n if (!providerIds) return [...PROVIDER_API_IDS];\n const result: ProviderApiId[] = [];\n const seen = new Set<string>();\n for (const providerId of providerIds) {\n if (!isProviderApiId(providerId)) {\n throw new Error(`Unsupported provider API: ${providerId}`);\n }\n if (seen.has(providerId)) continue;\n seen.add(providerId);\n result.push(providerId);\n }\n return result;\n}\n\nfunction assertProviderAllowed(\n provider: ProviderApiId | string,\n providerIds?: readonly (ProviderApiId | string)[],\n) {\n const allowed = normalizeProviderIds(providerIds);\n if (!allowed.includes(provider as ProviderApiId)) {\n throw new Error(`Provider API ${provider} is not enabled for this app.`);\n }\n}\n\nfunction describeAuth(auth: ProviderApiAuthKind): string {\n if (auth.type === \"none\") return \"none\";\n if (auth.type === \"bearer\") return \"bearer\";\n if (auth.type === \"basic\") return \"basic\";\n if (auth.type === \"basic-raw\") return \"basic\";\n if (auth.type === \"api-key-header\") return `api-key-header:${auth.header}`;\n if (auth.type === \"google-service-account\") return \"google-service-account\";\n if (auth.type === \"oauth-bearer\") return `oauth-bearer:${auth.oauthProvider}`;\n return \"prometheus-basic-or-bearer\";\n}\n\nfunction requireRuntimeCredentialContext(\n runtime: ProviderApiRuntimeOptions,\n credentialKey: string,\n): CredentialContext {\n const ctx = runtime.getCredentialContext?.() ?? getCredentialContext();\n if (!ctx) {\n throw new Error(\n `Cannot resolve credential \"${credentialKey}\" outside an authenticated request context.`,\n );\n }\n return ctx;\n}\n\nasync function resolveBaseUrl(\n config: ProviderApiConfig,\n runtime: ProviderApiRuntimeOptions,\n ctx: CredentialContext,\n args: ProviderApiRequestArgs,\n): Promise<string> {\n if (!config.baseUrlCredentialKey) return config.defaultBaseUrl;\n const configured = await resolveCredentialValue({\n config,\n runtime,\n ctx,\n key: config.baseUrlCredentialKey,\n args,\n });\n return (configured || config.defaultBaseUrl).replace(/\\/+$/, \"\");\n}\n\nasync function resolvePlaceholders(\n config: ProviderApiConfig,\n runtime: ProviderApiRuntimeOptions,\n ctx: CredentialContext,\n args: ProviderApiRequestArgs,\n): Promise<Record<string, string>> {\n const placeholders: Record<string, string> = {};\n for (const placeholder of config.placeholders ?? []) {\n const value = await resolveCredentialValue({\n config,\n runtime,\n ctx,\n key: placeholder.credentialKey,\n args,\n });\n if (value) placeholders[placeholder.name] = value;\n }\n return placeholders;\n}\n\nasync function resolveCredentialValue(options: {\n config: ProviderApiConfig;\n runtime: ProviderApiRuntimeOptions;\n ctx: CredentialContext;\n key: string;\n args: ProviderApiRequestArgs;\n workspaceProvider?: string;\n}): Promise<string | undefined> {\n const credential = await resolveOptionalCredential({\n provider: options.config.id,\n workspaceProvider: options.workspaceProvider,\n key: options.key,\n ctx: options.ctx,\n runtime: options.runtime,\n connectionId: options.args.connectionId,\n });\n return credential?.value;\n}\n\nfunction substituteString(\n value: string,\n placeholders: Record<string, string>,\n): string {\n let result = value;\n for (const [name, replacement] of Object.entries(placeholders)) {\n result = result.split(`{${name}}`).join(replacement);\n }\n return result;\n}\n\nfunction substituteUnknown(\n value: unknown,\n placeholders: Record<string, string>,\n): unknown {\n if (typeof value === \"string\") return substituteString(value, placeholders);\n if (Array.isArray(value)) {\n return value.map((item) => substituteUnknown(item, placeholders));\n }\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [\n key,\n substituteUnknown(entry, placeholders),\n ]),\n );\n }\n return value;\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction buildProviderUrl(options: {\n config: ProviderApiConfig;\n baseUrl: string;\n rawPath: string;\n query: unknown;\n}): URL {\n const base = new URL(options.baseUrl);\n const rawPath = options.rawPath.trim();\n const url = /^https?:\\/\\//i.test(rawPath)\n ? new URL(rawPath)\n : new URL(rawPath.startsWith(\"/\") ? rawPath : `/${rawPath}`, base);\n\n if (!isAllowedProviderUrl(url, base, options.config)) {\n throw new Error(\n `${options.config.label} API requests must stay on the configured provider host or registered provider host suffix.`,\n );\n }\n\n for (const [key, value] of queryEntries(options.query)) {\n url.searchParams.append(key, value);\n }\n\n return url;\n}\n\nfunction isAllowedProviderUrl(\n url: URL,\n base: URL,\n config: ProviderApiConfig,\n): boolean {\n if (url.protocol !== \"https:\" && url.protocol !== \"http:\") return false;\n if (url.origin === base.origin) return true;\n const host = url.hostname.toLowerCase();\n return (config.allowedHostSuffixes ?? []).some((suffix) => {\n const normalized = suffix.toLowerCase().replace(/^\\./, \"\");\n return host === normalized || host.endsWith(`.${normalized}`);\n });\n}\n\nfunction sameOriginOrChild(candidate: URL, allowed: URL): boolean {\n return (\n candidate.origin === allowed.origin &&\n (candidate.pathname === allowed.pathname ||\n candidate.pathname.startsWith(allowed.pathname.replace(/\\/?$/, \"/\")))\n );\n}\n\nfunction queryEntries(value: unknown): Array<[string, string]> {\n if (!value) return [];\n if (typeof value === \"string\") {\n const params = new URLSearchParams(value.replace(/^\\?/, \"\"));\n return Array.from(params.entries());\n }\n if (typeof value !== \"object\" || Array.isArray(value)) return [];\n const entries: Array<[string, string]> = [];\n for (const [key, raw] of Object.entries(value)) {\n if (raw === undefined || raw === null) continue;\n if (Array.isArray(raw)) {\n for (const item of raw) entries.push([key, String(item)]);\n } else {\n entries.push([key, String(raw)]);\n }\n }\n return entries;\n}\n\nasync function resolveAuth(\n config: ProviderApiConfig,\n runtime: ProviderApiRuntimeOptions,\n ctx: CredentialContext,\n args: ProviderApiRequestArgs,\n): Promise<ResolvedAuth> {\n const auth = config.auth;\n if (auth.type === \"none\") return emptyAuth();\n if (auth.type === \"bearer\") {\n const credential = await resolveAnyCredential({\n provider: config.id,\n workspaceProvider: auth.workspaceProvider,\n keys: auth.keys,\n ctx,\n runtime,\n connectionId: args.connectionId,\n });\n return {\n headers: { Authorization: `Bearer ${credential.value}` },\n credentialSources: [omitCredentialValue(credential)],\n secretValues: [credential.value],\n };\n }\n if (auth.type === \"basic\") {\n const username = await resolveRequiredCredential({\n provider: config.id,\n workspaceProvider: auth.workspaceProvider,\n key: auth.usernameKey,\n ctx,\n runtime,\n connectionId: args.connectionId,\n });\n const password =\n auth.passwordKey === auth.usernameKey\n ? username\n : await resolveRequiredCredential({\n provider: config.id,\n workspaceProvider: auth.workspaceProvider,\n key: auth.passwordKey,\n ctx,\n runtime,\n connectionId: args.connectionId,\n });\n const encoded = Buffer.from(`${username.value}:${password.value}`).toString(\n \"base64\",\n );\n return {\n headers: { Authorization: `Basic ${encoded}` },\n credentialSources: [\n omitCredentialValue(username),\n ...(password.key === username.key\n ? []\n : [omitCredentialValue(password)]),\n ],\n secretValues: [username.value, password.value, encoded],\n };\n }\n if (auth.type === \"basic-raw\") {\n const credential = await resolveRequiredCredential({\n provider: config.id,\n workspaceProvider: auth.workspaceProvider,\n key: auth.key,\n ctx,\n runtime,\n connectionId: args.connectionId,\n });\n const encoded = Buffer.from(credential.value).toString(\"base64\");\n return {\n headers: { Authorization: `Basic ${encoded}` },\n credentialSources: [omitCredentialValue(credential)],\n secretValues: [credential.value, encoded],\n };\n }\n if (auth.type === \"api-key-header\") {\n const credential = await resolveRequiredCredential({\n provider: config.id,\n workspaceProvider: auth.workspaceProvider,\n key: auth.key,\n ctx,\n runtime,\n connectionId: args.connectionId,\n });\n return {\n headers: { [auth.header]: credential.value },\n credentialSources: [omitCredentialValue(credential)],\n secretValues: [credential.value],\n };\n }\n if (auth.type === \"google-service-account\") {\n const token = await getGoogleServiceAccountToken(auth.scopes, runtime, ctx);\n return {\n headers: { Authorization: `Bearer ${token}` },\n credentialSources: [\n {\n key: \"GOOGLE_APPLICATION_CREDENTIALS_JSON\",\n provider: config.id,\n source: runtime.localCredentialSource ?? \"app_local\",\n },\n ],\n secretValues: [token],\n };\n }\n if (auth.type === \"oauth-bearer\") {\n const credential = await resolveOAuthBearerToken({\n auth,\n ctx,\n accountId: args.accountId,\n });\n return {\n headers: { Authorization: `Bearer ${credential.value}` },\n credentialSources: [omitCredentialValue(credential)],\n secretValues: [credential.value],\n };\n }\n\n const bearer = await resolveCredentialValue({\n config,\n runtime,\n ctx,\n key: \"PROMETHEUS_BEARER_TOKEN\",\n args,\n });\n if (bearer) {\n return {\n headers: { Authorization: `Bearer ${bearer}` },\n credentialSources: [\n {\n key: \"PROMETHEUS_BEARER_TOKEN\",\n provider: config.id,\n source: runtime.localCredentialSource ?? \"app_local\",\n },\n ],\n secretValues: [bearer],\n };\n }\n const username = await resolveCredentialValue({\n config,\n runtime,\n ctx,\n key: \"PROMETHEUS_USERNAME\",\n args,\n });\n const password = await resolveCredentialValue({\n config,\n runtime,\n ctx,\n key: \"PROMETHEUS_PASSWORD\",\n args,\n });\n if (username && password) {\n const encoded = Buffer.from(`${username}:${password}`).toString(\"base64\");\n return {\n headers: { Authorization: `Basic ${encoded}` },\n credentialSources: [\n {\n key: \"PROMETHEUS_USERNAME\",\n provider: config.id,\n source: runtime.localCredentialSource ?? \"app_local\",\n },\n {\n key: \"PROMETHEUS_PASSWORD\",\n provider: config.id,\n source: runtime.localCredentialSource ?? \"app_local\",\n },\n ],\n secretValues: [username, password, encoded],\n };\n }\n return emptyAuth();\n}\n\nfunction emptyAuth(): ResolvedAuth {\n return { headers: {}, credentialSources: [], secretValues: [] };\n}\n\nasync function resolveAnyCredential(options: {\n provider: ProviderApiId;\n workspaceProvider: string | undefined;\n keys: readonly string[];\n ctx: CredentialContext;\n runtime: ProviderApiRuntimeOptions;\n connectionId?: string | null;\n}): Promise<ProviderApiResolvedCredential> {\n for (const key of options.keys) {\n const credential = await resolveOptionalCredential({ ...options, key });\n if (credential?.value) return credential;\n }\n throw new Error(\n `${options.provider} credential not configured. Tried: ${options.keys.join(\n \", \",\n )}`,\n );\n}\n\nasync function resolveRequiredCredential(options: {\n provider: ProviderApiId;\n workspaceProvider: string | undefined;\n key: string;\n ctx: CredentialContext;\n runtime: ProviderApiRuntimeOptions;\n connectionId?: string | null;\n}): Promise<ProviderApiResolvedCredential> {\n const credential = await resolveOptionalCredential(options);\n if (!credential?.value) throw new Error(`${options.key} not configured`);\n return credential;\n}\n\nasync function resolveOptionalCredential(options: {\n provider: ProviderApiId;\n workspaceProvider: string | undefined;\n key: string;\n ctx: CredentialContext;\n runtime: ProviderApiRuntimeOptions;\n connectionId?: string | null;\n}): Promise<ProviderApiResolvedCredential | null> {\n const localCredentialSource =\n options.runtime.localCredentialSource ?? \"app_local\";\n const lookup: ProviderApiCredentialLookupOptions = {\n appId: options.runtime.appId,\n provider: options.provider,\n key: options.key,\n ctx: options.ctx,\n workspaceProvider: options.workspaceProvider,\n connectionId: options.connectionId,\n localCredentialSource,\n };\n if (options.runtime.resolveCredential) {\n return options.runtime.resolveCredential(lookup);\n }\n return defaultProviderApiCredentialResolver(lookup);\n}\n\nfunction omitCredentialValue(\n credential: ProviderApiResolvedCredential,\n): Omit<ProviderApiResolvedCredential, \"value\"> {\n const { value: _value, ...rest } = credential;\n return rest;\n}\n\nconst googleServiceTokenCache = new Map<\n string,\n { token: string; expiresAt: number }\n>();\n\nasync function getGoogleServiceAccountToken(\n scopes: readonly string[],\n runtime: ProviderApiRuntimeOptions,\n ctx: CredentialContext,\n): Promise<string> {\n const cacheKey = createHash(\"sha256\")\n .update(\n `${runtime.appId}:${ctx.orgId ?? ctx.userEmail}:${scopes.join(\" \")}`,\n )\n .digest(\"hex\");\n const cached = googleServiceTokenCache.get(cacheKey);\n if (cached && Date.now() < cached.expiresAt - 30_000) return cached.token;\n\n const credsJson = await resolveCredentialValue({\n config: getProviderApiConfig(\"gcloud\"),\n runtime,\n ctx,\n key: \"GOOGLE_APPLICATION_CREDENTIALS_JSON\",\n args: { provider: \"gcloud\", path: \"/\" },\n });\n if (!credsJson) {\n throw new Error(\"GOOGLE_APPLICATION_CREDENTIALS_JSON not configured\");\n }\n let creds: {\n type?: string;\n client_email?: string;\n private_key?: string;\n token_uri?: string;\n };\n try {\n creds = JSON.parse(credsJson) as typeof creds;\n } catch {\n throw new Error(\n \"GOOGLE_APPLICATION_CREDENTIALS_JSON is not valid JSON. Upload a service account JSON key.\",\n );\n }\n if (!creds.client_email || !creds.private_key) {\n throw new Error(\n \"GOOGLE_APPLICATION_CREDENTIALS_JSON must be a service account JSON key.\",\n );\n }\n\n const now = Math.floor(Date.now() / 1000);\n const aud = creds.token_uri || \"https://oauth2.googleapis.com/token\";\n const jwt = await signRs256Jwt(\n {\n iss: creds.client_email,\n scope: scopes.join(\" \"),\n aud,\n iat: now,\n exp: now + 3600,\n },\n creds.private_key,\n );\n const res = await fetch(aud, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams({\n grant_type: \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\n assertion: jwt,\n }),\n });\n if (!res.ok) {\n throw new Error(`Google OAuth error ${res.status}: ${await res.text()}`);\n }\n const data = (await res.json()) as {\n access_token: string;\n expires_in?: number;\n };\n googleServiceTokenCache.set(cacheKey, {\n token: data.access_token,\n expiresAt: Date.now() + (data.expires_in ?? 3600) * 1000,\n });\n return data.access_token;\n}\n\nasync function resolveOAuthBearerToken(options: {\n auth: Extract<ProviderApiAuthKind, { type: \"oauth-bearer\" }>;\n ctx: CredentialContext;\n accountId?: string | null;\n}): Promise<ProviderApiResolvedCredential> {\n const accounts = await listOAuthAccountsByOwner(\n options.auth.oauthProvider,\n options.ctx.userEmail,\n );\n if (accounts.length === 0) {\n throw new Error(\n `${options.auth.tokenLabel} is not connected for ${options.ctx.userEmail}.`,\n );\n }\n const accountId = options.accountId?.trim();\n const account = accountId\n ? accounts.find((entry) => entry.accountId === accountId)\n : accounts[0];\n if (!account) {\n throw new Error(\n `${options.auth.tokenLabel} account ${accountId} is not available to ${options.ctx.userEmail}.`,\n );\n }\n const tokens = account.tokens as OAuthTokens;\n const token = await getValidOAuthAccessToken({\n oauthProvider: options.auth.oauthProvider,\n accountId: account.accountId,\n ownerEmail: options.ctx.userEmail,\n tokens,\n });\n return {\n key: `${options.auth.oauthProvider.toUpperCase()}_OAUTH_TOKEN`,\n value: token,\n source: \"oauth_token\",\n provider: options.auth.oauthProvider,\n accountId: account.accountId,\n accountLabel: account.displayName,\n };\n}\n\nasync function getValidOAuthAccessToken(options: {\n oauthProvider: string;\n accountId: string;\n ownerEmail: string;\n tokens: OAuthTokens;\n}): Promise<string> {\n const accessToken =\n options.tokens.access_token ?? options.tokens.accessToken ?? \"\";\n if (!accessToken) {\n throw new Error(\n `${options.oauthProvider} OAuth account has no access token.`,\n );\n }\n const expiresAt = options.tokens.expiry_date ?? options.tokens.expiresAt;\n if (\n !expiresAt ||\n !Number.isFinite(expiresAt) ||\n expiresAt > Date.now() + 60_000\n ) {\n return accessToken;\n }\n\n const refreshToken =\n options.tokens.refresh_token ?? options.tokens.refreshToken;\n if (!refreshToken) return accessToken;\n if (options.oauthProvider === \"google\") {\n return refreshGoogleOAuthToken(options, refreshToken);\n }\n throw new Error(\n `${options.oauthProvider} OAuth token is expired and automatic refresh is not configured for provider-api.`,\n );\n}\n\nasync function refreshGoogleOAuthToken(\n options: {\n oauthProvider: string;\n accountId: string;\n ownerEmail: string;\n tokens: OAuthTokens;\n },\n refreshToken: string,\n): Promise<string> {\n const clientId = process.env.GOOGLE_CLIENT_ID;\n const clientSecret = process.env.GOOGLE_CLIENT_SECRET;\n if (!clientId || !clientSecret) {\n throw new Error(\n \"GOOGLE_CLIENT_ID/SECRET not set for Google OAuth refresh.\",\n );\n }\n const res = await fetch(\"https://oauth2.googleapis.com/token\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: new URLSearchParams({\n refresh_token: refreshToken,\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: \"refresh_token\",\n }),\n });\n const data = (await res.json()) as {\n access_token?: string;\n expires_in?: number;\n token_type?: string;\n scope?: string;\n error?: string;\n error_description?: string;\n };\n if (!res.ok || !data.access_token) {\n const detail = data.error_description ?? data.error ?? res.statusText;\n throw new Error(`Google OAuth refresh failed: ${detail}`);\n }\n const merged: OAuthTokens = {\n ...options.tokens,\n access_token: data.access_token,\n expiry_date: Date.now() + (data.expires_in ?? 3600) * 1000,\n token_type: data.token_type ?? options.tokens.token_type,\n scope: data.scope ?? options.tokens.scope,\n };\n await saveOAuthTokens(\n options.oauthProvider,\n options.accountId,\n merged as unknown as Record<string, unknown>,\n options.ownerEmail,\n );\n return data.access_token;\n}\n\nfunction normalizeMethod(\n method: ProviderApiMethod | undefined,\n): ProviderApiMethod {\n const normalized = String(method || \"GET\").toUpperCase();\n if (\n normalized === \"GET\" ||\n normalized === \"POST\" ||\n normalized === \"PUT\" ||\n normalized === \"PATCH\" ||\n normalized === \"DELETE\" ||\n normalized === \"HEAD\"\n ) {\n return normalized;\n }\n throw new Error(`Unsupported HTTP method: ${method}`);\n}\n\nfunction sanitizeOutboundHeaders(value: unknown): Record<string, string> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return {};\n const headers: Record<string, string> = {};\n for (const [name, rawValue] of Object.entries(value)) {\n const lower = name.toLowerCase();\n if (!HEADER_NAME_RE.test(name) || BLOCKED_OUTBOUND_HEADERS.has(lower)) {\n continue;\n }\n if (rawValue === undefined || rawValue === null) continue;\n const headerValue = String(rawValue);\n if (/[\\r\\n]/.test(headerValue)) continue;\n headers[name] = headerValue;\n }\n return headers;\n}\n\nfunction prepareBody(\n body: unknown,\n headers: Record<string, string>,\n): BodyInit | undefined {\n if (body === undefined || body === null) return undefined;\n if (typeof body === \"string\") return body;\n const hasContentType = Object.keys(headers).some(\n (name) => name.toLowerCase() === \"content-type\",\n );\n if (!hasContentType) headers[\"Content-Type\"] = \"application/json\";\n return JSON.stringify(body);\n}\n\nasync function fetchWithTimeout(\n optionsUrl: string,\n options: {\n method?: ProviderApiMethod;\n headers?: Record<string, string>;\n body?: BodyInit;\n timeoutMs?: number;\n maxBytes?: number;\n secretValues?: string[];\n },\n) {\n const controller = new AbortController();\n const timeout = setTimeout(\n () => controller.abort(),\n clampTimeout(options.timeoutMs),\n );\n try {\n const dispatcher = (await createSsrfSafeDispatcher()) ?? undefined;\n const fetchOptions: RequestInit & { dispatcher?: unknown } = {\n method: options.method ?? \"GET\",\n headers: options.headers,\n body: options.body,\n signal: controller.signal,\n redirect: \"manual\",\n };\n if (dispatcher) fetchOptions.dispatcher = dispatcher;\n const startedAt = Date.now();\n const res = await fetch(optionsUrl, fetchOptions);\n const elapsedMs = Date.now() - startedAt;\n const rawText = await readResponseTextWithLimit(\n res,\n clampMaxBytes(options.maxBytes),\n );\n const secretValues = options.secretValues ?? [];\n const redactedText = redactString(rawText.text, secretValues);\n const parsed = tryParseJson(redactedText);\n return {\n status: res.status,\n statusText: res.statusText,\n ok: res.ok,\n elapsedMs,\n headers: redactSecrets(headersToObject(res.headers), secretValues),\n contentType: res.headers.get(\"content-type\") ?? null,\n size: rawText.size,\n truncated: rawText.truncated,\n text: parsed === undefined ? redactedText : undefined,\n json: parsed,\n };\n } finally {\n clearTimeout(timeout);\n }\n}\n\nasync function readResponseTextWithLimit(\n response: Response,\n maxBytes: number,\n): Promise<{ text: string; truncated: boolean; size: number }> {\n const contentLength = response.headers.get(\"content-length\");\n if (contentLength && Number(contentLength) > maxBytes) {\n return {\n text: `(response too large - ${contentLength} bytes, max ${maxBytes})`,\n truncated: true,\n size: Number(contentLength),\n };\n }\n const buffer = await response.arrayBuffer();\n const size = buffer.byteLength;\n const bytes = new Uint8Array(buffer.slice(0, maxBytes));\n return {\n text: new TextDecoder().decode(bytes),\n truncated: size > maxBytes,\n size,\n };\n}\n\nfunction headersToObject(headers: Headers): Record<string, string> {\n const result: Record<string, string> = {};\n headers.forEach((value, key) => {\n if (key.toLowerCase() !== \"set-cookie\") result[key] = value;\n });\n return result;\n}\n\nfunction tryParseJson(text: string): unknown | undefined {\n const trimmed = text.trim();\n if (!trimmed || !/^[{[]/.test(trimmed)) return undefined;\n try {\n return JSON.parse(trimmed);\n } catch {\n return undefined;\n }\n}\n\nfunction redactSecrets<T>(value: T, secretValues: string[]): T {\n if (secretValues.length === 0) return value;\n if (typeof value === \"string\") return redactString(value, secretValues) as T;\n if (Array.isArray(value)) {\n return value.map((item) => redactSecrets(item, secretValues)) as T;\n }\n if (value && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value).map(([key, entry]) => [\n key,\n redactSecrets(entry, secretValues),\n ]),\n ) as T;\n }\n return value;\n}\n\nfunction redactString(text: string, secretValues: string[]): string {\n let output = text;\n for (const secret of [...secretValues].sort((a, b) => b.length - a.length)) {\n if (!secret) continue;\n output = output.split(secret).join(\"[redacted]\");\n try {\n output = output.split(encodeURIComponent(secret)).join(\"[redacted]\");\n } catch {}\n }\n return output;\n}\n\nfunction clampTimeout(timeoutMs: number | undefined): number {\n if (!Number.isFinite(timeoutMs)) return DEFAULT_TIMEOUT_MS;\n return Math.max(1_000, Math.min(MAX_TIMEOUT_MS, Math.floor(timeoutMs!)));\n}\n\nfunction clampMaxBytes(maxBytes: number | undefined): number {\n if (!Number.isFinite(maxBytes)) return DEFAULT_MAX_BYTES;\n return Math.max(1_000, Math.min(MAX_MAX_BYTES, Math.floor(maxBytes!)));\n}\n\nfunction fingerprint(value: string): string {\n return createHash(\"sha256\").update(value).digest(\"hex\").slice(0, 12);\n}\n\nfunction base64UrlEncode(bytes: Uint8Array): string {\n let binary = \"\";\n for (let i = 0; i < bytes.length; i += 1) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary)\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=+$/, \"\");\n}\n\nfunction base64UrlEncodeString(value: string): string {\n return base64UrlEncode(new TextEncoder().encode(value));\n}\n\nfunction pemToPkcs8(pem: string): Uint8Array {\n const body = pem\n .replace(/-----BEGIN [^-]+-----/g, \"\")\n .replace(/-----END [^-]+-----/g, \"\")\n .replace(/\\s+/g, \"\");\n const binary = atob(body);\n const out = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i += 1) {\n out[i] = binary.charCodeAt(i);\n }\n return out;\n}\n\nconst keyCache = new Map<string, Promise<CryptoKey>>();\n\nasync function privateKeyCacheKey(privateKeyPem: string): Promise<string> {\n const digest = await crypto.subtle.digest(\n \"SHA-256\",\n new TextEncoder().encode(privateKeyPem) as BufferSource,\n );\n return `sha256:${base64UrlEncode(new Uint8Array(digest))}`;\n}\n\nasync function importRs256Key(privateKeyPem: string): Promise<CryptoKey> {\n const cacheKey = await privateKeyCacheKey(privateKeyPem);\n let cached = keyCache.get(cacheKey);\n if (!cached) {\n cached = crypto.subtle.importKey(\n \"pkcs8\",\n pemToPkcs8(privateKeyPem) as BufferSource,\n { name: \"RSASSA-PKCS1-v1_5\", hash: \"SHA-256\" },\n false,\n [\"sign\"],\n );\n keyCache.set(cacheKey, cached);\n }\n return cached;\n}\n\nasync function signRs256Jwt(\n payload: Record<string, unknown>,\n privateKeyPem: string,\n): Promise<string> {\n const header = { alg: \"RS256\", typ: \"JWT\" };\n const signingInput = `${base64UrlEncodeString(\n JSON.stringify(header),\n )}.${base64UrlEncodeString(JSON.stringify(payload))}`;\n\n const key = await importRs256Key(privateKeyPem);\n const signature = await crypto.subtle.sign(\n \"RSASSA-PKCS1-v1_5\",\n key,\n new TextEncoder().encode(signingInput) as BufferSource,\n );\n\n return `${signingInput}.${base64UrlEncode(new Uint8Array(signature))}`;\n}\n"]}
@@ -104,7 +104,10 @@ declare function resolveTaskCompletion(run: Pick<ActiveRun, "status" | "abortRea
104
104
  error?: string;
105
105
  };
106
106
  export declare function toAgentTaskBackgroundRun(task: AgentTask): AgentTeamBackgroundRun;
107
- export declare function toAgentTaskBackgroundTranscriptEvent(runId: string, event: RunEvent): AgentTeamBackgroundTranscriptEvent | null;
107
+ export declare function toAgentTaskBackgroundTranscriptEvent(runId: string, event: RunEvent, options?: {
108
+ seq?: number;
109
+ sourceRunId?: string;
110
+ }): AgentTeamBackgroundTranscriptEvent | null;
108
111
  export interface SpawnTaskOptions {
109
112
  /** Description of what the sub-agent should do */
110
113
  description: string;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-teams.d.ts","sourceRoot":"","sources":["../../src/server/agent-teams.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-teams.d.ts","sourceRoot":"","sources":["../../src/server/agent-teams.ts"],"names":[],"mappings":"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"}