@opengeni/api-router 3.0.1 → 3.0.2-canary.38894290271001

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 (546) hide show
  1. package/dist/access-grant-rls.d.ts +8 -1
  2. package/dist/admission-trace.d.ts +8 -0
  3. package/dist/app.d.ts +50 -3
  4. package/dist/app.js +10 -1
  5. package/dist/artifact-catalog-cursor.d.ts +1 -0
  6. package/dist/attached-browser-viewer.d.ts +11 -0
  7. package/dist/auth/managed-auth-attempt-context.d.ts +2 -0
  8. package/dist/auth/managed-auth-rate-limits.d.ts +167 -0
  9. package/dist/auth/managed-auth-session-adapter.d.ts +9 -1
  10. package/dist/auth/managed-auth.d.ts +72 -5
  11. package/dist/auth/managed-sign-in-notifications.d.ts +4 -0
  12. package/dist/auth/new-signups-gate.d.ts +23 -0
  13. package/dist/auth/signup-funnel-metrics.d.ts +44 -0
  14. package/dist/azure-live.d.ts +28 -0
  15. package/dist/browser-action-fences.d.ts +13 -0
  16. package/dist/browser-controller-authority.d.ts +1 -61
  17. package/dist/browser-ephemeral.d.ts +5 -0
  18. package/dist/browser-lost-runtime-end.d.ts +24 -0
  19. package/dist/browser-state-authority.d.ts +1 -27
  20. package/dist/{chunk-AJ62T5QN.js → chunk-GBUJ2DYZ.js} +80507 -39878
  21. package/dist/chunk-GBUJ2DYZ.js.map +1 -0
  22. package/dist/chunk-OGQDXVXY.js +18 -0
  23. package/dist/chunk-OGQDXVXY.js.map +1 -0
  24. package/dist/claude-default-models.d.ts +19 -0
  25. package/dist/claude-subscription-core.d.ts +50 -0
  26. package/dist/claude-subscription-oauth.d.ts +36 -0
  27. package/dist/claude-subscription-profile.d.ts +9 -0
  28. package/dist/claude-subscription-usage.d.ts +6 -0
  29. package/dist/claude-workspace-connection.d.ts +15 -0
  30. package/dist/codemode.d.ts +40 -5
  31. package/dist/codex-realtime.d.ts +29 -3
  32. package/dist/codex-session-pointers.d.ts +19 -0
  33. package/dist/connection-ownership.d.ts +6 -3
  34. package/dist/controller-data-plane.d.ts +16 -0
  35. package/dist/credit-promotion-snapshot.d.ts +6 -0
  36. package/dist/editable-artifact-source-session.d.ts +3 -0
  37. package/dist/editable-artifact-websocket.d.ts +5 -3
  38. package/dist/fatal-process-boundary.d.ts +9 -1
  39. package/dist/github-access.d.ts +7 -1
  40. package/dist/github-browser-flow.d.ts +1 -1
  41. package/dist/http/acting-person.d.ts +36 -0
  42. package/dist/http/api-contract-compat.d.ts +19 -0
  43. package/dist/http/api-error.d.ts +50 -1
  44. package/dist/http/auth.d.ts +8 -1
  45. package/dist/http/cors.d.ts +12 -0
  46. package/dist/http/deprecation.d.ts +42 -0
  47. package/dist/http/keyed-admission.d.ts +12 -0
  48. package/dist/http/local-browser-boundary.d.ts +72 -0
  49. package/dist/http/metrics-listener.d.ts +22 -0
  50. package/dist/http/path-identifier.d.ts +17 -0
  51. package/dist/http/registered-route-label.d.ts +16 -0
  52. package/dist/http/rejection-telemetry.d.ts +34 -0
  53. package/dist/http/request-body.d.ts +27 -0
  54. package/dist/http/request-source.d.ts +41 -3
  55. package/dist/http/sse.d.ts +12 -1
  56. package/dist/http/unmatched-route.d.ts +18 -0
  57. package/dist/http/user-content.d.ts +36 -0
  58. package/dist/http/variable-sets-removed.d.ts +41 -0
  59. package/dist/http/websocket-upgrade-dispatch.d.ts +18 -0
  60. package/dist/index.js +1279 -108
  61. package/dist/index.js.map +1 -1
  62. package/dist/integration-connect-metrics.d.ts +35 -0
  63. package/dist/integration-endpoint-test.d.ts +20 -0
  64. package/dist/integrations/api-integrations.d.ts +2 -2
  65. package/dist/integrations/atlassian.d.ts +8 -3
  66. package/dist/integrations/fiken.d.ts +3 -1
  67. package/dist/integrations/github-lens-connect.d.ts +37 -66
  68. package/dist/integrations/google-drive.d.ts +2 -0
  69. package/dist/integrations/integration-commit-authority.d.ts +13 -0
  70. package/dist/integrations/marketplace-plugin.d.ts +43 -43
  71. package/dist/integrations/oauth-client.d.ts +171 -12
  72. package/dist/integrations/oauth-profiles.d.ts +42 -13
  73. package/dist/integrations/onepassword-vault-provider.d.ts +9 -0
  74. package/dist/integrations/slack-bot.d.ts +285 -7
  75. package/dist/integrations/slack-file-upload-flow.d.ts +62 -0
  76. package/dist/integrations/slack-interactions.d.ts +89 -10
  77. package/dist/integrations/slack-mrkdwn.d.ts +41 -0
  78. package/dist/integrations/slack-routing.d.ts +1 -1
  79. package/dist/integrations/slack-session-defaults.d.ts +58 -0
  80. package/dist/integrations/slack-task-file-upload.d.ts +36 -0
  81. package/dist/integrations/slack-tool-review.d.ts +5 -0
  82. package/dist/interaction-agent-access.d.ts +13 -8
  83. package/dist/interaction-agent-version.d.ts +21 -0
  84. package/dist/interaction-holder-heartbeat.d.ts +5 -0
  85. package/dist/interaction-metrics.d.ts +27 -2
  86. package/dist/interaction-route-stages.d.ts +25 -0
  87. package/dist/interaction-secrets-vault.d.ts +20 -0
  88. package/dist/interaction-secrets.d.ts +103 -0
  89. package/dist/mcp/action-catalog-types.d.ts +14 -0
  90. package/dist/mcp/action-catalog.gen.d.ts +2 -0
  91. package/dist/mcp/action-descriptions.d.ts +4 -0
  92. package/dist/mcp/action-schema-imports.gen.d.ts +1 -0
  93. package/dist/mcp/capability-account-readiness.d.ts +7 -0
  94. package/dist/mcp/child-read-evidence.d.ts +9 -0
  95. package/dist/mcp/company-profile-agent-admin.d.ts +12 -0
  96. package/dist/mcp/contract-input.d.ts +13 -0
  97. package/dist/mcp/documents.d.ts +2 -0
  98. package/dist/mcp/first-party-tool-permissions.d.ts +3 -606
  99. package/dist/mcp/notification-tools.d.ts +26 -0
  100. package/dist/mcp/orchestration-failure-diagnostic.d.ts +43 -0
  101. package/dist/mcp/scheduled-task-input.d.ts +1309 -0
  102. package/dist/mcp/scheduled-task-view.d.ts +217 -3
  103. package/dist/mcp/secret-tools.d.ts +14 -0
  104. package/dist/mcp/server.d.ts +108 -5
  105. package/dist/mcp/session-admin-access-tools.d.ts +33 -0
  106. package/dist/mcp/session-event-errors.d.ts +28 -0
  107. package/dist/mcp/session-event-view.d.ts +62 -0
  108. package/dist/mcp/session-view.d.ts +15 -0
  109. package/dist/mcp/session-wait.d.ts +18 -0
  110. package/dist/mcp/site-agent-clamp-tools.d.ts +38 -0
  111. package/dist/mcp/site-data-tools.d.ts +22 -0
  112. package/dist/mcp/site-publication-tools.d.ts +19 -0
  113. package/dist/mcp/site-sql-tools.d.ts +27 -0
  114. package/dist/mcp-oauth.d.ts +37 -4
  115. package/dist/model-calls/chat-completions.d.ts +87 -0
  116. package/dist/model-calls/pending-usage-settlements.d.ts +57 -0
  117. package/dist/model-calls/service.d.ts +36 -0
  118. package/dist/model-catalog.d.ts +9 -3
  119. package/dist/native-push-dispatch.d.ts +69 -0
  120. package/dist/observability.d.ts +3 -1
  121. package/dist/organization-mcp.d.ts +82 -0
  122. package/dist/prepared-mcp-actor.d.ts +77 -0
  123. package/dist/prepared-mcp-permissions.d.ts +8 -0
  124. package/dist/routes/analytics-consent.d.ts +26 -0
  125. package/dist/routes/api-integrations.d.ts +11 -0
  126. package/dist/routes/api-keys.d.ts +7 -7
  127. package/dist/routes/automations.d.ts +2 -0
  128. package/dist/routes/billing.d.ts +59 -0
  129. package/dist/routes/browser-sessions.d.ts +65 -2
  130. package/dist/routes/chat-completions.d.ts +11 -0
  131. package/dist/routes/claude-core-usage.d.ts +20 -0
  132. package/dist/routes/claude-subscription-accounts.d.ts +3 -0
  133. package/dist/routes/claude-subscription-oauth.d.ts +3 -0
  134. package/dist/routes/client-errors.d.ts +182 -0
  135. package/dist/routes/codex-core.d.ts +401 -0
  136. package/dist/routes/codex.d.ts +64 -2
  137. package/dist/routes/computer-sessions.d.ts +6 -1
  138. package/dist/routes/desktop-distribution.d.ts +32 -0
  139. package/dist/routes/github-browser-fonts.gen.d.ts +2 -0
  140. package/dist/routes/github-browser-pages.d.ts +27 -0
  141. package/dist/routes/inbox.d.ts +13 -0
  142. package/dist/routes/insights-response-cache.d.ts +10 -0
  143. package/dist/routes/insights-usage.d.ts +12 -0
  144. package/dist/routes/insights.d.ts +28 -0
  145. package/dist/routes/interaction-placement-message.d.ts +7 -0
  146. package/dist/routes/managed-sign-in-methods.d.ts +6 -0
  147. package/dist/routes/model-account-choice.d.ts +13 -0
  148. package/dist/routes/model-account-settings.d.ts +19 -0
  149. package/dist/routes/native-app-auth.d.ts +12 -0
  150. package/dist/routes/organization-integration-policy.d.ts +8 -0
  151. package/dist/routes/organization-integrations.d.ts +6 -0
  152. package/dist/routes/organization-mcp-connections.d.ts +3 -0
  153. package/dist/routes/organization-model-defaults.d.ts +9 -0
  154. package/dist/routes/organization-service-accounts.d.ts +3 -0
  155. package/dist/routes/personal-api-keys.d.ts +3 -0
  156. package/dist/routes/session-admin-access.d.ts +3 -0
  157. package/dist/routes/session-artifact-associations.d.ts +4 -0
  158. package/dist/routes/session-history-imports.d.ts +20 -0
  159. package/dist/routes/sessions.d.ts +38 -2
  160. package/dist/routes/site-data.d.ts +18 -0
  161. package/dist/routes/site-publishing.d.ts +5 -0
  162. package/dist/routes/site-runtime.d.ts +31 -0
  163. package/dist/routes/site-sql.d.ts +16 -0
  164. package/dist/routes/slack-bot-access.d.ts +3 -0
  165. package/dist/routes/subscription-account-pools.d.ts +21 -0
  166. package/dist/routes/subscription-core-http.d.ts +5 -0
  167. package/dist/routes/subscription-pool-access.d.ts +37 -0
  168. package/dist/routes/subscription-pool-core.d.ts +153 -0
  169. package/dist/routes/supergrok.d.ts +6 -6
  170. package/dist/routes/usage-allowances.d.ts +12 -0
  171. package/dist/routes/variable-sets-removed.d.ts +2 -0
  172. package/dist/routes/vault-providers.d.ts +34 -0
  173. package/dist/routes/vaults.d.ts +3 -0
  174. package/dist/routes/workspace-integrations.d.ts +35 -0
  175. package/dist/routes/workspace-model-providers.d.ts +4 -0
  176. package/dist/routes/workspaces.d.ts +11 -2
  177. package/dist/sandbox/agent-update.d.ts +64 -0
  178. package/dist/sandbox/auth-callout.d.ts +8 -0
  179. package/dist/sandbox/channel-a.d.ts +15 -1
  180. package/dist/sandbox/enrollment.d.ts +26 -4
  181. package/dist/sandbox/machine-audience.d.ts +29 -0
  182. package/dist/sandbox/machines.d.ts +15 -2
  183. package/dist/sandbox/metrics-ingestion.d.ts +6 -2
  184. package/dist/sandbox/screen-control.d.ts +85 -0
  185. package/dist/sandbox/viewer.d.ts +5 -1
  186. package/dist/sandbox-file-artifacts.d.ts +17 -1
  187. package/dist/scheduled-task-blockers.d.ts +39 -0
  188. package/dist/scheduled-task-deletion.d.ts +3 -4
  189. package/dist/scheduled-task-lifecycle.d.ts +14 -0
  190. package/dist/secret-answers.d.ts +40 -0
  191. package/dist/session-create-observability.d.ts +5 -0
  192. package/dist/session-event-view-36GO3IL7.js +528 -0
  193. package/dist/session-event-view-36GO3IL7.js.map +1 -0
  194. package/dist/signed-state-secret.d.ts +18 -0
  195. package/dist/site-agent-guard.d.ts +53 -0
  196. package/dist/site-data/operations.d.ts +103 -0
  197. package/dist/site-data/service.d.ts +203 -0
  198. package/dist/site-frame-guard.d.ts +32 -0
  199. package/dist/site-publishing/agent-data-tools.d.ts +84 -0
  200. package/dist/site-publishing/agent-model.d.ts +58 -0
  201. package/dist/site-publishing/agent-session.d.ts +16 -0
  202. package/dist/site-publishing/content-scanner.d.ts +31 -0
  203. package/dist/site-publishing/edge-sync.d.ts +48 -0
  204. package/dist/site-publishing/gateway-signature.d.ts +56 -0
  205. package/dist/site-publishing/limits.d.ts +63 -0
  206. package/dist/site-publishing/page-tool-authority.d.ts +30 -0
  207. package/dist/site-publishing/platform-usage.d.ts +113 -0
  208. package/dist/site-publishing/platform.d.ts +21 -0
  209. package/dist/site-publishing/readiness.d.ts +62 -0
  210. package/dist/site-publishing/runtime.d.ts +179 -0
  211. package/dist/site-publishing/service.d.ts +264 -0
  212. package/dist/site-publishing/session-events.d.ts +22 -0
  213. package/dist/site-publishing/session-views.d.ts +36 -0
  214. package/dist/site-publishing/viewer.d.ts +40 -0
  215. package/dist/site-session-origin.d.ts +31 -6
  216. package/dist/site-sql/format.d.ts +47 -0
  217. package/dist/site-sql/gateway.d.ts +50 -0
  218. package/dist/site-sql/service.d.ts +213 -0
  219. package/dist/temporal-schedule-sync.d.ts +26 -0
  220. package/dist/transcription/billing-refusal.d.ts +8 -0
  221. package/dist/transcription/normalize.d.ts +23 -0
  222. package/dist/transcription/providers/azure-mai.d.ts +12 -0
  223. package/dist/transcription/providers/azure-openai.d.ts +4 -0
  224. package/dist/transcription/providers/openai.d.ts +16 -0
  225. package/dist/transcription/providers/subscription-core.d.ts +39 -0
  226. package/dist/transcription/service.d.ts +10 -1
  227. package/dist/transcription/wav-duration.d.ts +8 -0
  228. package/dist/workspace-tool-gateway-attestations.d.ts +37 -0
  229. package/dist/workspace-tool-gateway-observability.d.ts +16 -0
  230. package/dist/workspace-tool-gateway-secrets.d.ts +27 -0
  231. package/dist/workspace-tool-gateway.d.ts +102 -6
  232. package/dist/workspace-tool-target-fence.d.ts +116 -0
  233. package/dist/workspace-tool-target.d.ts +225 -0
  234. package/dist/workspace-webhook-dispatch.d.ts +26 -0
  235. package/dist/xai-subscription-core.d.ts +60 -0
  236. package/package.json +25 -20
  237. package/src/access-grant-rls.ts +64 -14
  238. package/src/admission-trace.ts +14 -0
  239. package/src/app.ts +1684 -252
  240. package/src/artifact-catalog-cursor.ts +1 -0
  241. package/src/attached-browser-viewer.ts +26 -0
  242. package/src/auth/managed-auth-attempt-context.ts +9 -0
  243. package/src/auth/managed-auth-rate-limits.ts +252 -0
  244. package/src/auth/managed-auth-session-adapter.ts +64 -29
  245. package/src/auth/managed-auth.ts +303 -35
  246. package/src/auth/managed-email.ts +18 -1
  247. package/src/auth/managed-sign-in-notifications.ts +81 -0
  248. package/src/auth/new-signups-gate.ts +49 -0
  249. package/src/auth/organization-user-setup.ts +3 -3
  250. package/src/auth/signup-funnel-metrics.ts +164 -0
  251. package/src/azure-live.ts +103 -0
  252. package/src/browser-action-fences.ts +45 -0
  253. package/src/browser-controller-authority.ts +1 -186
  254. package/src/browser-ephemeral.ts +39 -0
  255. package/src/browser-lost-runtime-end.ts +71 -0
  256. package/src/browser-state-authority.ts +1 -236
  257. package/src/claude-default-models.ts +37 -0
  258. package/src/claude-subscription-core.ts +154 -0
  259. package/src/claude-subscription-oauth.ts +352 -0
  260. package/src/claude-subscription-profile.ts +73 -0
  261. package/src/claude-subscription-usage.ts +51 -0
  262. package/src/claude-workspace-connection.ts +82 -0
  263. package/src/codemode.ts +236 -39
  264. package/src/codex-realtime.ts +181 -53
  265. package/src/codex-session-pointers.ts +80 -0
  266. package/src/company-brain-okf.ts +1 -1
  267. package/src/connected-machine-computer-access.ts +2 -1
  268. package/src/connection-ownership.ts +19 -13
  269. package/src/controller-data-plane.ts +34 -0
  270. package/src/credit-promotion-snapshot.ts +36 -0
  271. package/src/editable-artifact-production.ts +10 -0
  272. package/src/editable-artifact-source-session.ts +123 -0
  273. package/src/editable-artifact-websocket.ts +16 -3
  274. package/src/fatal-process-boundary.ts +67 -3
  275. package/src/gateway-realtime.ts +12 -8
  276. package/src/github-access.ts +31 -5
  277. package/src/github-browser-flow.ts +1 -1
  278. package/src/http/acting-person.ts +105 -0
  279. package/src/http/api-contract-compat.ts +49 -0
  280. package/src/http/api-error.ts +210 -2
  281. package/src/http/auth.ts +68 -4
  282. package/src/http/cors.ts +37 -5
  283. package/src/http/deprecation.ts +118 -0
  284. package/src/http/keyed-admission.ts +29 -0
  285. package/src/http/local-browser-boundary.ts +343 -0
  286. package/src/http/metrics-listener.ts +57 -0
  287. package/src/http/path-identifier.ts +54 -0
  288. package/src/http/registered-route-label.ts +34 -0
  289. package/src/http/rejection-telemetry.ts +120 -0
  290. package/src/http/request-body.ts +127 -0
  291. package/src/http/request-source.ts +154 -13
  292. package/src/http/sse.ts +88 -28
  293. package/src/http/unmatched-route.ts +60 -0
  294. package/src/http/user-content.ts +158 -0
  295. package/src/http/variable-sets-removed.ts +122 -0
  296. package/src/http/websocket-upgrade-dispatch.ts +29 -0
  297. package/src/index.ts +107 -57
  298. package/src/integration-connect-metrics.ts +228 -0
  299. package/src/integration-endpoint-test.ts +291 -0
  300. package/src/integrations/api-integrations.ts +81 -7
  301. package/src/integrations/atlassian.ts +202 -83
  302. package/src/integrations/fiken.ts +66 -38
  303. package/src/integrations/github-app-connect.ts +64 -18
  304. package/src/integrations/github-lens-connect.ts +8 -29
  305. package/src/integrations/google-drive.ts +448 -152
  306. package/src/integrations/integration-commit-authority.ts +69 -0
  307. package/src/integrations/marketplace-plugin.ts +1 -1
  308. package/src/integrations/oauth-client.ts +733 -193
  309. package/src/integrations/oauth-profiles.ts +116 -45
  310. package/src/integrations/onepassword-vault-provider.ts +16 -0
  311. package/src/integrations/personal-github-repositories.ts +1 -1
  312. package/src/integrations/personal-github.ts +61 -35
  313. package/src/integrations/provider-oauth.ts +67 -85
  314. package/src/integrations/slack-app-home.ts +5 -5
  315. package/src/integrations/slack-bot.ts +893 -201
  316. package/src/integrations/slack-file-upload-flow.ts +147 -0
  317. package/src/integrations/slack-install.ts +7 -7
  318. package/src/integrations/slack-interactions.ts +1589 -299
  319. package/src/integrations/slack-mrkdwn.ts +193 -0
  320. package/src/integrations/slack-routing.ts +2 -2
  321. package/src/integrations/slack-session-defaults.ts +224 -0
  322. package/src/integrations/slack-task-file-upload.ts +323 -0
  323. package/src/integrations/slack-tool-review.ts +65 -0
  324. package/src/integrations/social-oauth.ts +90 -58
  325. package/src/interaction-agent-access.ts +40 -20
  326. package/src/interaction-agent-version.ts +85 -0
  327. package/src/interaction-holder-heartbeat.ts +24 -8
  328. package/src/interaction-metrics.ts +164 -2
  329. package/src/interaction-route-stages.ts +94 -0
  330. package/src/interaction-secrets-vault.ts +213 -0
  331. package/src/interaction-secrets.ts +426 -0
  332. package/src/mcp/action-catalog-types.ts +14 -0
  333. package/src/mcp/action-catalog.gen.ts +8014 -0
  334. package/src/mcp/action-descriptions.ts +299 -0
  335. package/src/mcp/action-schema-imports.gen.ts +304 -0
  336. package/src/mcp/capability-account-readiness.ts +17 -0
  337. package/src/mcp/child-read-evidence.ts +19 -0
  338. package/src/mcp/company-profile-agent-admin.ts +13 -0
  339. package/src/mcp/contract-input.ts +165 -0
  340. package/src/mcp/documents.ts +9 -2
  341. package/src/mcp/editable-artifacts.ts +29 -11
  342. package/src/mcp/files.ts +5 -1
  343. package/src/mcp/first-party-tool-permissions.ts +7 -285
  344. package/src/mcp/knowledge-entries.ts +108 -34
  345. package/src/mcp/notification-tools.ts +480 -0
  346. package/src/mcp/orchestration-failure-diagnostic.ts +43 -0
  347. package/src/mcp/scheduled-task-input.ts +89 -0
  348. package/src/mcp/scheduled-task-view.ts +63 -3
  349. package/src/mcp/secret-tools.ts +185 -0
  350. package/src/mcp/server.ts +2213 -1116
  351. package/src/mcp/session-admin-access-tools.ts +163 -0
  352. package/src/mcp/session-event-errors.ts +123 -0
  353. package/src/mcp/session-event-view.ts +395 -13
  354. package/src/mcp/session-view.ts +3 -0
  355. package/src/mcp/session-wait.ts +67 -7
  356. package/src/mcp/site-agent-clamp-tools.ts +140 -0
  357. package/src/mcp/site-data-tools.ts +339 -0
  358. package/src/mcp/site-publication-tools.ts +201 -0
  359. package/src/mcp/site-sql-tools.ts +427 -0
  360. package/src/mcp-oauth.ts +635 -45
  361. package/src/model-calls/chat-completions.ts +352 -0
  362. package/src/model-calls/pending-usage-settlements.ts +125 -0
  363. package/src/model-calls/service.ts +694 -0
  364. package/src/model-catalog.ts +68 -17
  365. package/src/native-push-dispatch.ts +457 -0
  366. package/src/observability.ts +15 -1
  367. package/src/organization-mcp.ts +485 -0
  368. package/src/prepared-mcp-actor.ts +154 -0
  369. package/src/prepared-mcp-permissions.ts +38 -0
  370. package/src/routes/analytics-consent.ts +123 -0
  371. package/src/routes/api-integrations.ts +268 -9
  372. package/src/routes/api-keys.ts +164 -25
  373. package/src/routes/artifact-catalog.ts +111 -0
  374. package/src/routes/automations.ts +163 -90
  375. package/src/routes/billing.ts +535 -59
  376. package/src/routes/browser-sessions.ts +966 -342
  377. package/src/routes/canonical-human-identities.ts +61 -0
  378. package/src/routes/capabilities.ts +112 -5
  379. package/src/routes/channels.ts +4 -3
  380. package/src/routes/chat-completions.ts +235 -0
  381. package/src/routes/claude-core-usage.ts +147 -0
  382. package/src/routes/claude-subscription-accounts.ts +233 -0
  383. package/src/routes/claude-subscription-oauth.ts +175 -0
  384. package/src/routes/client-errors.ts +394 -0
  385. package/src/routes/codex-core.ts +687 -0
  386. package/src/routes/codex.ts +1277 -1119
  387. package/src/routes/company-brain.ts +4 -0
  388. package/src/routes/computer-sessions.ts +319 -85
  389. package/src/routes/connect.ts +277 -175
  390. package/src/routes/connections.ts +690 -363
  391. package/src/routes/desktop-distribution.ts +217 -0
  392. package/src/routes/documents.ts +13 -7
  393. package/src/routes/editable-artifacts.ts +74 -4
  394. package/src/routes/enrollments.ts +110 -16
  395. package/src/routes/external-identity-links.ts +13 -12
  396. package/src/routes/files.ts +41 -16
  397. package/src/routes/github-browser-fonts.gen.ts +12 -0
  398. package/src/routes/github-browser-pages.ts +258 -0
  399. package/src/routes/github.ts +200 -75
  400. package/src/routes/inbox.ts +353 -0
  401. package/src/routes/insights-response-cache.ts +83 -0
  402. package/src/routes/insights-usage.ts +345 -0
  403. package/src/routes/insights.ts +103 -8
  404. package/src/routes/install.ts +51 -10
  405. package/src/routes/integration-facets.ts +70 -28
  406. package/src/routes/interaction-placement-message.ts +12 -0
  407. package/src/routes/knowledge.ts +136 -27
  408. package/src/routes/machines.ts +189 -135
  409. package/src/routes/managed-auth-session-sets.ts +43 -10
  410. package/src/routes/managed-onboarding.ts +39 -19
  411. package/src/routes/managed-sign-in-methods.ts +433 -0
  412. package/src/routes/memory-slack-publications.ts +3 -2
  413. package/src/routes/model-account-choice.ts +194 -0
  414. package/src/routes/model-account-settings.ts +235 -0
  415. package/src/routes/model-connection-access.ts +210 -48
  416. package/src/routes/native-app-auth.ts +296 -0
  417. package/src/routes/organization-integration-policy.ts +116 -0
  418. package/src/routes/organization-integrations.ts +326 -0
  419. package/src/routes/organization-mcp-connections.ts +183 -0
  420. package/src/routes/organization-memberships.ts +205 -19
  421. package/src/routes/organization-model-defaults.ts +110 -0
  422. package/src/routes/organization-model-providers.ts +74 -3
  423. package/src/routes/organization-service-accounts.ts +128 -0
  424. package/src/routes/organization-sessions.ts +21 -5
  425. package/src/routes/personal-api-keys.ts +184 -0
  426. package/src/routes/personal-github-git-broker.ts +2 -2
  427. package/src/routes/personal-github.ts +9 -4
  428. package/src/routes/plugins.ts +46 -7
  429. package/src/routes/pr-review-github.ts +105 -118
  430. package/src/routes/pr-review.ts +88 -82
  431. package/src/routes/preference-registry.ts +18 -0
  432. package/src/routes/rigs.ts +48 -13
  433. package/src/routes/scheduled-tasks.ts +347 -27
  434. package/src/routes/session-admin-access.ts +271 -0
  435. package/src/routes/session-artifact-associations.ts +164 -0
  436. package/src/routes/session-history-imports.ts +305 -0
  437. package/src/routes/sessions.ts +1682 -363
  438. package/src/routes/site-data.ts +340 -0
  439. package/src/routes/site-publishing.ts +584 -0
  440. package/src/routes/site-runtime.ts +1944 -0
  441. package/src/routes/site-sql.ts +263 -0
  442. package/src/routes/skill-content.ts +72 -7
  443. package/src/routes/skills.ts +5 -4
  444. package/src/routes/slack-bot-access.ts +108 -0
  445. package/src/routes/social.ts +27 -15
  446. package/src/routes/subscription-account-pools.ts +209 -0
  447. package/src/routes/subscription-core-http.ts +18 -0
  448. package/src/routes/subscription-pool-access.ts +180 -0
  449. package/src/routes/subscription-pool-core.ts +552 -0
  450. package/src/routes/supergrok.ts +174 -655
  451. package/src/routes/transcription-recordings.ts +71 -4
  452. package/src/routes/transcriptions.ts +26 -2
  453. package/src/routes/usage-allowances.ts +381 -0
  454. package/src/routes/variable-sets-removed.ts +19 -0
  455. package/src/routes/vault-providers.ts +782 -0
  456. package/src/routes/vaults.ts +421 -0
  457. package/src/routes/video-generation.ts +30 -12
  458. package/src/routes/workspace-artifacts.ts +165 -53
  459. package/src/routes/workspace-integrations.ts +576 -0
  460. package/src/routes/workspace-model-providers.ts +148 -0
  461. package/src/routes/workspace-state.ts +4 -0
  462. package/src/routes/workspaces.ts +625 -117
  463. package/src/sandbox/agent-update.ts +315 -0
  464. package/src/sandbox/auth-callout.ts +104 -21
  465. package/src/sandbox/channel-a.ts +150 -49
  466. package/src/sandbox/enrollment.ts +131 -22
  467. package/src/sandbox/machine-audience.ts +192 -0
  468. package/src/sandbox/machines.ts +75 -31
  469. package/src/sandbox/metrics-ingestion.ts +133 -2
  470. package/src/sandbox/rematerialize.ts +51 -21
  471. package/src/sandbox/screen-control.ts +289 -0
  472. package/src/sandbox/viewer.ts +33 -58
  473. package/src/sandbox-file-artifacts.ts +53 -27
  474. package/src/scheduled-task-blockers.ts +293 -0
  475. package/src/scheduled-task-deletion.ts +13 -3
  476. package/src/scheduled-task-lifecycle.ts +84 -0
  477. package/src/secret-answers.ts +119 -0
  478. package/src/session-create-observability.ts +46 -0
  479. package/src/session-realtime-context.ts +26 -4
  480. package/src/signed-state-secret.ts +58 -0
  481. package/src/site-agent-guard.ts +261 -0
  482. package/src/site-data/operations.ts +777 -0
  483. package/src/site-data/service.ts +1043 -0
  484. package/src/site-frame-guard.ts +107 -0
  485. package/src/site-publishing/agent-data-tools.ts +250 -0
  486. package/src/site-publishing/agent-model.ts +127 -0
  487. package/src/site-publishing/agent-session.ts +148 -0
  488. package/src/site-publishing/content-scanner.ts +93 -0
  489. package/src/site-publishing/edge-sync.ts +148 -0
  490. package/src/site-publishing/gateway-signature.ts +198 -0
  491. package/src/site-publishing/limits.ts +315 -0
  492. package/src/site-publishing/page-tool-authority.ts +111 -0
  493. package/src/site-publishing/platform-usage.ts +479 -0
  494. package/src/site-publishing/platform.ts +98 -0
  495. package/src/site-publishing/readiness.ts +330 -0
  496. package/src/site-publishing/runtime.ts +831 -0
  497. package/src/site-publishing/service.ts +1282 -0
  498. package/src/site-publishing/session-events.ts +262 -0
  499. package/src/site-publishing/session-views.ts +262 -0
  500. package/src/site-publishing/viewer.ts +75 -0
  501. package/src/site-session-origin.ts +91 -6
  502. package/src/site-sql/format.ts +134 -0
  503. package/src/site-sql/gateway.ts +168 -0
  504. package/src/site-sql/service.ts +1636 -0
  505. package/src/site-uploads.ts +27 -5
  506. package/src/temporal-schedule-sync.ts +74 -0
  507. package/src/transcription/billing-refusal.ts +14 -0
  508. package/src/transcription/normalize.ts +77 -0
  509. package/src/transcription/providers/azure-mai.ts +98 -0
  510. package/src/transcription/providers/azure-openai.ts +16 -7
  511. package/src/transcription/providers/codex-subscription.ts +190 -67
  512. package/src/transcription/providers/openai.ts +79 -5
  513. package/src/transcription/providers/subscription-core.ts +125 -0
  514. package/src/transcription/providers/xai-subscription.ts +81 -83
  515. package/src/transcription/segmenter.ts +7 -1
  516. package/src/transcription/service.ts +239 -10
  517. package/src/transcription/wav-duration.ts +39 -0
  518. package/src/workspace-deletion.ts +25 -1
  519. package/src/workspace-tool-gateway-attestations.ts +133 -0
  520. package/src/workspace-tool-gateway-observability.ts +64 -0
  521. package/src/workspace-tool-gateway-secrets.ts +104 -0
  522. package/src/workspace-tool-gateway.ts +921 -103
  523. package/src/workspace-tool-target-fence.ts +380 -0
  524. package/src/workspace-tool-target.ts +554 -0
  525. package/src/workspace-webhook-dispatch.ts +225 -0
  526. package/src/xai-realtime.ts +85 -81
  527. package/src/xai-subscription-core.ts +172 -0
  528. package/dist/browser-auth-broker.d.ts +0 -20
  529. package/dist/chunk-AJ62T5QN.js.map +0 -1
  530. package/dist/connection-authority-owner.d.ts +0 -59
  531. package/dist/routes/connection-authorities.d.ts +0 -3
  532. package/dist/routes/environments.d.ts +0 -5
  533. package/dist/routes/host-mcp-bindings.d.ts +0 -5
  534. package/dist/routes/host-mcp-resolvers.d.ts +0 -3
  535. package/dist/routes/packs.d.ts +0 -3
  536. package/dist/session-event-view-MU3HMNV3.js +0 -264
  537. package/dist/session-event-view-MU3HMNV3.js.map +0 -1
  538. package/dist/xai-subscription-auth.d.ts +0 -23
  539. package/src/browser-auth-broker.ts +0 -155
  540. package/src/connection-authority-owner.ts +0 -61
  541. package/src/routes/connection-authorities.ts +0 -139
  542. package/src/routes/environments.ts +0 -388
  543. package/src/routes/host-mcp-bindings.ts +0 -122
  544. package/src/routes/host-mcp-resolvers.ts +0 -41
  545. package/src/routes/packs.ts +0 -784
  546. package/src/xai-subscription-auth.ts +0 -139
@@ -0,0 +1,291 @@
1
+ import {
2
+ CredentialProviderResponse,
3
+ OPENGENI_SIGNATURE_HEADER,
4
+ signOpenGeniPayload,
5
+ type IntegrationEndpointTestResult,
6
+ } from "@opengeni/contracts";
7
+ import {
8
+ DestinationPolicyError,
9
+ pinnedFetch,
10
+ type OutboundNetworkSettings,
11
+ } from "@opengeni/network";
12
+
13
+ /**
14
+ * One synchronous, signed test request to an integration endpoint, sent
15
+ * through the same pinned outbound policy as real deliveries. Nothing is
16
+ * stored. A provider's credential values never leave this function: only
17
+ * their names are returned.
18
+ */
19
+
20
+ const RESPONSE_EXCERPT_BYTES = 1024;
21
+ /** A provider answer is parsed in full, like a real run's (5 MiB). */
22
+ const PROVIDER_RESPONSE_BYTES = 5 * 1024 * 1024;
23
+
24
+ export type IntegrationEndpointTestInput = {
25
+ kind: "webhook" | "credential-provider";
26
+ url: string;
27
+ secret: string;
28
+ /** The exact body to sign and send. */
29
+ body: string;
30
+ /** Extra identity headers (the webhook event id). */
31
+ headers?: Record<string, string>;
32
+ timeoutMs: number;
33
+ settings: OutboundNetworkSettings;
34
+ fetch?: typeof pinnedFetch;
35
+ now?: () => number;
36
+ };
37
+
38
+ function causeCode(error: unknown): string | null {
39
+ let current: unknown = error;
40
+ for (let depth = 0; depth < 4 && current && typeof current === "object"; depth += 1) {
41
+ const code = (current as { code?: unknown }).code;
42
+ if (typeof code === "string") return code;
43
+ current = (current as { cause?: unknown }).cause;
44
+ }
45
+ return null;
46
+ }
47
+
48
+ /** What went wrong reaching the endpoint, in words an administrator can act on. */
49
+ export function integrationTestNetworkError(error: unknown): string {
50
+ if (error instanceof DestinationPolicyError) {
51
+ if (error.reason === "https_required") return "The URL must use https.";
52
+ if (error.reason === "dns_failed" || error.reason === "dns_empty") {
53
+ return "The hostname couldn't be resolved. Check the URL.";
54
+ }
55
+ if (error.reason === "private_or_special_use") {
56
+ return "The URL points to a private network address, which this server doesn't allow.";
57
+ }
58
+ return `${error.message}.`;
59
+ }
60
+ if (error instanceof Error && (error.name === "TimeoutError" || error.name === "AbortError")) {
61
+ return "The endpoint didn't answer in time.";
62
+ }
63
+ switch (causeCode(error)) {
64
+ case "ECONNREFUSED":
65
+ return "The connection was refused. Check that the service is running.";
66
+ case "ECONNRESET":
67
+ return "The connection was reset before the endpoint answered.";
68
+ case "ENOTFOUND":
69
+ case "EAI_AGAIN":
70
+ return "The hostname couldn't be resolved. Check the URL.";
71
+ case "CERT_HAS_EXPIRED":
72
+ case "DEPTH_ZERO_SELF_SIGNED_CERT":
73
+ case "SELF_SIGNED_CERT_IN_CHAIN":
74
+ case "UNABLE_TO_VERIFY_LEAF_SIGNATURE":
75
+ case "ERR_TLS_CERT_ALTNAME_INVALID":
76
+ return "The endpoint's TLS certificate isn't trusted.";
77
+ default:
78
+ return "The endpoint couldn't be reached.";
79
+ }
80
+ }
81
+
82
+ async function readUpTo(
83
+ response: Response,
84
+ maxBytes: number,
85
+ ): Promise<{ text: string; truncated: boolean }> {
86
+ const reader = response.body?.getReader();
87
+ if (!reader) return { text: "", truncated: false };
88
+ const chunks: Uint8Array[] = [];
89
+ let total = 0;
90
+ let truncated = false;
91
+ for (;;) {
92
+ const { done, value } = await reader.read();
93
+ if (done) break;
94
+ if (total + value.byteLength > maxBytes) {
95
+ chunks.push(value.subarray(0, maxBytes - total));
96
+ total = maxBytes;
97
+ truncated = true;
98
+ await reader.cancel().catch(() => undefined);
99
+ break;
100
+ }
101
+ chunks.push(value);
102
+ total += value.byteLength;
103
+ }
104
+ return { text: new TextDecoder().decode(Buffer.concat(chunks)), truncated };
105
+ }
106
+
107
+ function excerpt(text: string, truncated: boolean): string | null {
108
+ const trimmed = text.trim();
109
+ if (!trimmed) return null;
110
+ const bounded = new TextDecoder().decode(
111
+ new TextEncoder().encode(trimmed).subarray(0, RESPONSE_EXCERPT_BYTES),
112
+ );
113
+ return truncated || bounded.length < trimmed.length ? `${bounded}…` : bounded;
114
+ }
115
+
116
+ /** The names of what a run would receive. Values are dropped here. */
117
+ export function credentialProviderTestSummary(
118
+ response: CredentialProviderResponse,
119
+ ): NonNullable<IntegrationEndpointTestResult["credentials"]> {
120
+ const authNeeded = (response.status === "not_applicable" ? [] : (response.authNeeded ?? [])).map(
121
+ (entry) => ({
122
+ reason: entry.reason,
123
+ providerDomain: entry.providerDomain ?? null,
124
+ message: entry.message ?? null,
125
+ }),
126
+ );
127
+ if (response.status !== "ok") {
128
+ return {
129
+ status: response.status,
130
+ environment: [],
131
+ files: [],
132
+ git: [],
133
+ mcp: [],
134
+ expiresAt: null,
135
+ authNeeded,
136
+ };
137
+ }
138
+ return {
139
+ status: "ok",
140
+ environment: Object.keys(response.environment ?? {}).sort(),
141
+ files: (response.files ?? []).map((file) => file.path),
142
+ git: (response.git ?? []).map((entry) => entry.host.toLowerCase()),
143
+ mcp: (response.mcp ?? []).map((entry) => entry.url),
144
+ expiresAt: response.expiresAt ?? null,
145
+ authNeeded,
146
+ };
147
+ }
148
+
149
+ function statusAdvice(kind: IntegrationEndpointTestInput["kind"], status: number): string {
150
+ if (status >= 300 && status < 400) {
151
+ return `The endpoint answered HTTP ${status}. Redirects aren't followed: use the final URL.`;
152
+ }
153
+ if (status === 401 || status === 403) {
154
+ return `The endpoint refused the request (HTTP ${status}). Check that it verifies with this ${
155
+ kind === "webhook" ? "webhook's" : "provider's"
156
+ } signing secret.`;
157
+ }
158
+ if (status === 404 || status === 405) {
159
+ return `The endpoint answered HTTP ${status}. Check the URL and that it accepts POST.`;
160
+ }
161
+ return `The endpoint answered HTTP ${status}.`;
162
+ }
163
+
164
+ export async function sendIntegrationEndpointTest(
165
+ input: IntegrationEndpointTestInput,
166
+ ): Promise<IntegrationEndpointTestResult> {
167
+ const now = input.now ?? Date.now;
168
+ const started = now();
169
+ const elapsed = () => Math.max(0, Math.round(now() - started));
170
+ const base = { request: input.body, credentials: null };
171
+ let response: Response;
172
+ try {
173
+ response = await (input.fetch ?? pinnedFetch)(
174
+ input.url,
175
+ {
176
+ method: "POST",
177
+ headers: {
178
+ "content-type": "application/json",
179
+ "user-agent":
180
+ input.kind === "webhook" ? "OpenGeni-Webhooks/1" : "OpenGeni-CredentialProvider/1",
181
+ [OPENGENI_SIGNATURE_HEADER]: await signOpenGeniPayload(input.secret, input.body),
182
+ ...input.headers,
183
+ },
184
+ body: input.body,
185
+ signal: AbortSignal.timeout(input.timeoutMs),
186
+ },
187
+ input.settings,
188
+ {
189
+ label: input.kind === "webhook" ? "Webhook" : "Credential provider",
190
+ requireHttpsOutsideLocalTest: true,
191
+ },
192
+ );
193
+ } catch (error) {
194
+ return {
195
+ ...base,
196
+ ok: false,
197
+ status: null,
198
+ durationMs: elapsed(),
199
+ error: integrationTestNetworkError(error),
200
+ responseBody: null,
201
+ };
202
+ }
203
+ const status = response.status;
204
+ const success = status >= 200 && status < 300;
205
+ let read: { text: string; truncated: boolean };
206
+ try {
207
+ read = await readUpTo(
208
+ response,
209
+ success && input.kind === "credential-provider"
210
+ ? PROVIDER_RESPONSE_BYTES
211
+ : RESPONSE_EXCERPT_BYTES,
212
+ );
213
+ } catch (error) {
214
+ return {
215
+ ...base,
216
+ ok: false,
217
+ status,
218
+ durationMs: elapsed(),
219
+ error: integrationTestNetworkError(error),
220
+ responseBody: null,
221
+ };
222
+ }
223
+ const durationMs = elapsed();
224
+ if (!success) {
225
+ return {
226
+ ...base,
227
+ ok: false,
228
+ status,
229
+ durationMs,
230
+ error: statusAdvice(input.kind, status),
231
+ responseBody: excerpt(read.text, read.truncated),
232
+ };
233
+ }
234
+ if (input.kind === "webhook") {
235
+ return {
236
+ ...base,
237
+ ok: true,
238
+ status,
239
+ durationMs,
240
+ error: null,
241
+ responseBody: excerpt(read.text, read.truncated),
242
+ };
243
+ }
244
+ // A successful provider answer may carry credentials: never echo its bytes.
245
+ if (read.truncated) {
246
+ return {
247
+ ...base,
248
+ ok: false,
249
+ status,
250
+ durationMs,
251
+ error: "The answer is larger than 5 MB.",
252
+ responseBody: null,
253
+ };
254
+ }
255
+ let json: unknown;
256
+ try {
257
+ json = JSON.parse(read.text);
258
+ } catch {
259
+ return {
260
+ ...base,
261
+ ok: false,
262
+ status,
263
+ durationMs,
264
+ error:
265
+ 'The answer isn\'t JSON. Return a credential response such as {"status":"not_applicable"}.',
266
+ responseBody: null,
267
+ };
268
+ }
269
+ const parsed = CredentialProviderResponse.safeParse(json);
270
+ if (!parsed.success) {
271
+ const issue = parsed.error.issues[0];
272
+ const where = issue?.path.length ? ` at ${issue.path.join(".")}` : "";
273
+ return {
274
+ ...base,
275
+ ok: false,
276
+ status,
277
+ durationMs,
278
+ error: `The answer isn't a valid credential response${where}: ${issue?.message ?? "invalid"}.`,
279
+ responseBody: null,
280
+ };
281
+ }
282
+ return {
283
+ ...base,
284
+ ok: true,
285
+ status,
286
+ durationMs,
287
+ error: null,
288
+ responseBody: null,
289
+ credentials: credentialProviderTestSummary(parsed.data),
290
+ };
291
+ }
@@ -19,7 +19,9 @@ import {
19
19
  import {
20
20
  ApiIntegrationPreview,
21
21
  type ApiIntegrationAuthPreview,
22
- type IntegrationSource,
22
+ type InlineOpenApiDocumentSource,
23
+ type IntegrationSourceInput,
24
+ type IntegrationSourceProjection,
23
25
  } from "@opengeni/contracts";
24
26
  import type { StoredApiIntegrationRevision } from "@opengeni/db";
25
27
 
@@ -40,7 +42,7 @@ export type ResolvedApiIntegrationPreview = {
40
42
  };
41
43
 
42
44
  export async function resolveApiIntegrationPreview(input: {
43
- source: IntegrationSource;
45
+ source: IntegrationSourceInput;
44
46
  connection: ApiIntegrationConnectionDescriptor | null;
45
47
  transport: IntegrationTransport;
46
48
  credentialResolver?: IntegrationCredentialResolver;
@@ -55,6 +57,9 @@ export async function resolveApiIntegrationPreview(input: {
55
57
  if (input.source.kind === "openapi") {
56
58
  return await resolveOpenApi(input, input.source.url, input.source.baseUrl);
57
59
  }
60
+ if (input.source.kind === "openapi_document") {
61
+ return resolveInlineOpenApiDocument(input, input.source);
62
+ }
58
63
  let openApiFailure: unknown;
59
64
  try {
60
65
  return await resolveOpenApi(input, input.source.url, input.source.baseUrl);
@@ -116,7 +121,7 @@ async function resolveDefinition(
116
121
  scopes: [...definition.authentication.scopes],
117
122
  };
118
123
  return resolvedPreview({
119
- source: input.source,
124
+ source: storedSourceProjection(input.source),
120
125
  definitionId: definition.id,
121
126
  definitionProvenance: "curated",
122
127
  identity,
@@ -160,7 +165,7 @@ async function resolveOpenApi(
160
165
  const discovered = discoverOpenApiAuth(document);
161
166
  const auth = authPreview(discovered, providerDomain, input.connection);
162
167
  return resolvedPreview({
163
- source: input.source,
168
+ source: storedSourceProjection(input.source),
164
169
  definitionId: identity.sourceDerivedDefinitionId,
165
170
  definitionProvenance: "workspace",
166
171
  identity,
@@ -178,6 +183,75 @@ async function resolveOpenApi(
178
183
  });
179
184
  }
180
185
 
186
+ /** URL/definition sources echo exactly; inline documents never reach here. */
187
+ function storedSourceProjection(source: IntegrationSourceInput): IntegrationSourceProjection {
188
+ if (source.kind === "openapi_document") {
189
+ throw new Error("Inline OpenAPI documents are projected by their digest");
190
+ }
191
+ return source;
192
+ }
193
+
194
+ /**
195
+ * An inline document has no URL: identity comes from the caller's stable
196
+ * `sourceKey`, relative server URLs cannot resolve (absolute servers or
197
+ * `baseUrl` are required), and the preview echoes only the document digest.
198
+ * Execution uses the same pinned transport and network policy as any other
199
+ * custom Integration.
200
+ */
201
+ function resolveInlineOpenApiDocument(
202
+ input: Parameters<typeof resolveApiIntegrationPreview>[0],
203
+ source: InlineOpenApiDocumentSource,
204
+ ): ResolvedApiIntegrationPreview {
205
+ const document = parseOpenApiDocument(source.document);
206
+ const identity = integrationInstallationIdentity(
207
+ "openapi",
208
+ source.sourceKey,
209
+ `document:${source.sourceKey}`,
210
+ );
211
+ let revision: ReturnType<typeof compileOpenApiRevision>;
212
+ try {
213
+ revision = compileOpenApiRevision(document, {
214
+ definitionId: identity.sourceDerivedDefinitionId,
215
+ ...(source.baseUrl ? { baseUrl: source.baseUrl } : {}),
216
+ });
217
+ } catch (error) {
218
+ const code = (error as { code?: unknown }).code;
219
+ if (code === "openapi_server_invalid" || code === "openapi_server_missing") {
220
+ throw new Error(
221
+ "An inline OpenAPI document needs absolute servers[].url values or an explicit baseUrl",
222
+ { cause: error },
223
+ );
224
+ }
225
+ throw error;
226
+ }
227
+ const resolvedBaseUrl = firstOpenApiServerUrl(revision);
228
+ const providerDomain = new URL(resolvedBaseUrl).hostname.toLowerCase();
229
+ const discovered = discoverOpenApiAuth(document);
230
+ const auth = authPreview(discovered, providerDomain, input.connection);
231
+ return resolvedPreview({
232
+ source: {
233
+ kind: "openapi_document",
234
+ sourceKey: source.sourceKey,
235
+ documentSha256: createHash("sha256").update(source.document, "utf8").digest("hex"),
236
+ ...(source.baseUrl ? { baseUrl: source.baseUrl } : {}),
237
+ },
238
+ definitionId: identity.sourceDerivedDefinitionId,
239
+ definitionProvenance: "workspace",
240
+ identity,
241
+ revision,
242
+ provider: null,
243
+ providerDomain,
244
+ baseUrl: resolvedBaseUrl,
245
+ sourceUrl: null,
246
+ name: revision.title,
247
+ description: revision.description ?? null,
248
+ auth,
249
+ connection: input.connection,
250
+ requiredScopes: auth.kind === "oauth2" ? auth.scopes : [],
251
+ authScheme: discovered,
252
+ });
253
+ }
254
+
181
255
  async function resolveGraphql(
182
256
  input: Parameters<typeof resolveApiIntegrationPreview>[0],
183
257
  endpoint: string,
@@ -201,7 +275,7 @@ async function resolveGraphql(
201
275
  ? connectionAuthPreview(input.connection, providerDomain)
202
276
  : ({ kind: "none" } as const);
203
277
  return resolvedPreview({
204
- source: input.source,
278
+ source: storedSourceProjection(input.source),
205
279
  definitionId: identity.sourceDerivedDefinitionId,
206
280
  definitionProvenance: "workspace",
207
281
  identity,
@@ -220,7 +294,7 @@ async function resolveGraphql(
220
294
  }
221
295
 
222
296
  function resolvedPreview(input: {
223
- source: IntegrationSource;
297
+ source: IntegrationSourceProjection;
224
298
  definitionId: string;
225
299
  definitionProvenance: "curated" | "workspace";
226
300
  identity: ReturnType<typeof integrationInstallationIdentity>;
@@ -228,7 +302,7 @@ function resolvedPreview(input: {
228
302
  provider: string | null;
229
303
  providerDomain: string;
230
304
  baseUrl: string;
231
- sourceUrl: string;
305
+ sourceUrl: string | null;
232
306
  name: string;
233
307
  description: string | null;
234
308
  auth: ApiIntegrationAuthPreview;