@opengeni/api-router 3.0.1 → 3.1.2

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-OGQDXVXY.js +18 -0
  21. package/dist/chunk-OGQDXVXY.js.map +1 -0
  22. package/dist/{chunk-AJ62T5QN.js → chunk-OT56OY4V.js} +80503 -39869
  23. package/dist/chunk-OT56OY4V.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 +165 -55
  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
@@ -1,4 +1,5 @@
1
1
  import { environmentsEncryptionKeyBytes } from "@opengeni/config";
2
+ import { modelUnavailableHttpException } from "@opengeni/core";
2
3
  import {
3
4
  AUTOMATION_WEBHOOK_MAX_BYTES,
4
5
  AUTOMATION_MAX_MATCHED_TRIGGERS,
@@ -15,6 +16,7 @@ import {
15
16
  type BundledSkillId,
16
17
  } from "@opengeni/contracts";
17
18
  import {
19
+ AutomationCredentialRestrictionConflictError,
18
20
  AutomationDeliveryConflictError,
19
21
  AutomationRevisionConflictError,
20
22
  createAutomationRun,
@@ -35,24 +37,47 @@ import {
35
37
  updateAutomationTrigger,
36
38
  withWorkspaceGatewayCustomModelReadLock,
37
39
  withWorkspaceOpenRouterCustomModelReadLock,
40
+ withWorkspaceProviderCustomModelReadLock,
38
41
  type AutomationSourceSecret,
39
42
  } from "@opengeni/db";
40
43
  import {
41
44
  automationRequestDigest,
45
+ automationCredentialRestrictionForGrant,
46
+ assertNotSiteClampedAgent,
42
47
  assertWorkspaceModelPolicyAllows,
43
48
  buildAutomationAcceptedExecution,
44
49
  canonicalConfiguredModel,
45
50
  creationInitiatorForGrant,
51
+ currentSiteSessionOrigin,
46
52
  workspaceCustomModelReference,
47
53
  lockActiveCustomModelForAdmission,
48
54
  requireAccessGrant,
49
55
  requireAutomationAdapter,
50
56
  requirePermission,
57
+ requireAutomationCredentialRestrictionPermissions,
51
58
  resolveWorkspaceCatalogSettings,
52
59
  type ApiRouteDeps,
53
60
  } from "@opengeni/core";
54
- import type { Hono } from "hono";
61
+ import type { Context, Hono } from "hono";
55
62
  import { HTTPException } from "hono/http-exception";
63
+ import { parseRequestJson } from "../http/request-body";
64
+
65
+ /**
66
+ * Create, change, delete or fire an automation: a workspace admin, but never
67
+ * a Site page (a tool it called) or an agent started from one. Site pages and
68
+ * their agents act with the page's reach, so no automation starts from a Site.
69
+ */
70
+ async function requireAutomationWriter(
71
+ c: Context,
72
+ deps: ApiRouteDeps,
73
+ workspaceId: string,
74
+ ): Promise<AccessGrant> {
75
+ const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
76
+ if (currentSiteSessionOrigin())
77
+ throw new HTTPException(403, { message: "A Site page cannot create or change automations" });
78
+ await assertNotSiteClampedAgent(deps.db, grant, "automations");
79
+ return grant;
80
+ }
56
81
 
57
82
  async function callerBundleSelection(
58
83
  deps: ApiRouteDeps,
@@ -85,9 +110,10 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
85
110
 
86
111
  app.post("/v1/workspaces/:workspaceId/automations/sources", async (c) => {
87
112
  const workspaceId = c.req.param("workspaceId");
88
- const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
113
+ const grant = await requireAutomationWriter(c, deps, workspaceId);
89
114
  requirePermission(grant, "secrets:write");
90
- const request = CreateAutomationSourceRequest.parse(await c.req.json());
115
+ const request = await parseRequestJson(c, CreateAutomationSourceRequest);
116
+ assertGenericTriggerMutable(request);
91
117
  requireAutomationAdapter(request.adapterId).validateSourceConfiguration(request.configuration);
92
118
  const key = requireEncryptionKey(deps);
93
119
  const source = await createAutomationSource(deps.db, {
@@ -102,8 +128,8 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
102
128
 
103
129
  app.patch("/v1/workspaces/:workspaceId/automations/sources/:sourceId", async (c) => {
104
130
  const workspaceId = c.req.param("workspaceId");
105
- const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
106
- const request = UpdateAutomationSourceRequest.parse(await c.req.json());
131
+ const grant = await requireAutomationWriter(c, deps, workspaceId);
132
+ const request = await parseRequestJson(c, UpdateAutomationSourceRequest);
107
133
  const current = await requireSource(
108
134
  deps,
109
135
  grant.accountId,
@@ -139,7 +165,7 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
139
165
 
140
166
  app.delete("/v1/workspaces/:workspaceId/automations/sources/:sourceId", async (c) => {
141
167
  const workspaceId = c.req.param("workspaceId");
142
- const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
168
+ const grant = await requireAutomationWriter(c, deps, workspaceId);
143
169
  const current = await requireSource(
144
170
  deps,
145
171
  grant.accountId,
@@ -169,18 +195,18 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
169
195
 
170
196
  app.post("/v1/workspaces/:workspaceId/automations/triggers", async (c) => {
171
197
  const workspaceId = c.req.param("workspaceId");
172
- const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
173
- const request = CreateAutomationTriggerRequest.parse(await c.req.json());
198
+ const grant = await requireAutomationWriter(c, deps, workspaceId);
199
+ const request = await parseRequestJson(c, CreateAutomationTriggerRequest);
200
+ const credentialRestriction = await automationCredentialRestrictionForGrant(deps.db, grant);
201
+ requireAutomationCredentialRestrictionPermissions(
202
+ credentialRestriction,
203
+ request.sessionTemplate.firstPartyMcpPermissions,
204
+ );
174
205
  request.sessionTemplate.bundledSkillIds = await callerBundleSelection(
175
206
  deps,
176
207
  grant,
177
208
  request.sessionTemplate.bundledSkillIds,
178
209
  );
179
- if (request.packInstallationId || request.packTemplateId) {
180
- throw new HTTPException(409, {
181
- message: "Pack-owned automation triggers must be created through their Pack setup API",
182
- });
183
- }
184
210
  const source = await requireSource(deps, grant.accountId, workspaceId, request.sourceId);
185
211
  assertGenericSourceMutable(source);
186
212
  if (source.status !== "active") {
@@ -223,6 +249,7 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
223
249
  createdBySubjectId: grant.subjectId,
224
250
  request: normalizedRequest,
225
251
  adapterId: adapter.id,
252
+ ...(credentialRestriction ? { credentialRestriction } : {}),
226
253
  ...(beforeCreateCommit ? { beforeCreateCommit } : {}),
227
254
  }),
228
255
  201,
@@ -231,8 +258,8 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
231
258
 
232
259
  app.patch("/v1/workspaces/:workspaceId/automations/triggers/:triggerId", async (c) => {
233
260
  const workspaceId = c.req.param("workspaceId");
234
- const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
235
- const request = UpdateAutomationTriggerRequest.parse(await c.req.json());
261
+ const grant = await requireAutomationWriter(c, deps, workspaceId);
262
+ const request = await parseRequestJson(c, UpdateAutomationTriggerRequest);
236
263
  const existing = (await listAutomationTriggers(deps.db, workspaceId)).find(
237
264
  (trigger) => trigger.id === c.req.param("triggerId"),
238
265
  );
@@ -241,6 +268,13 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
241
268
  message: "automation trigger not found",
242
269
  });
243
270
  assertGenericTriggerMutable(existing);
271
+ const credentialRestriction =
272
+ existing.sessionTemplate.credentialRestriction ??
273
+ (await automationCredentialRestrictionForGrant(deps.db, grant));
274
+ requireAutomationCredentialRestrictionPermissions(
275
+ credentialRestriction,
276
+ (request.sessionTemplate ?? existing.sessionTemplate).firstPartyMcpPermissions,
277
+ );
244
278
  if (request.configuration) {
245
279
  requireAutomationAdapter(existing.adapterId).validateTriggerConfiguration(
246
280
  request.configuration,
@@ -306,6 +340,7 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
306
340
  triggerId: c.req.param("triggerId"),
307
341
  subjectId: grant.subjectId,
308
342
  request: normalizedRequest,
343
+ ...(credentialRestriction ? { credentialRestriction } : {}),
309
344
  ...(beforeUpdateCommit ? { beforeUpdateCommit } : {}),
310
345
  });
311
346
  if (!trigger)
@@ -323,7 +358,7 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
323
358
 
324
359
  app.delete("/v1/workspaces/:workspaceId/automations/triggers/:triggerId", async (c) => {
325
360
  const workspaceId = c.req.param("workspaceId");
326
- const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
361
+ const grant = await requireAutomationWriter(c, deps, workspaceId);
327
362
  const expectedRevision = Number(c.req.query("expectedRevision"));
328
363
  if (!Number.isSafeInteger(expectedRevision) || expectedRevision < 1) {
329
364
  throw new HTTPException(400, {
@@ -366,8 +401,9 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
366
401
 
367
402
  app.post("/v1/workspaces/:workspaceId/automations/sources/:sourceId/events", async (c) => {
368
403
  const workspaceId = c.req.param("workspaceId");
369
- const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
370
- const request = TriggerAutomationManuallyRequest.parse(await c.req.json());
404
+ const grant = await requireAutomationWriter(c, deps, workspaceId);
405
+ const request = await parseRequestJson(c, TriggerAutomationManuallyRequest);
406
+ const credentialRestriction = await automationCredentialRestrictionForGrant(deps.db, grant);
371
407
  const source = await requireSource(deps, grant.accountId, workspaceId, c.req.param("sourceId"));
372
408
  if (source.status !== "active") {
373
409
  throw new HTTPException(409, {
@@ -384,15 +420,26 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
384
420
  payload: request.payload,
385
421
  });
386
422
  const bytes = new TextEncoder().encode(stableJson(request));
387
- return c.json(
388
- await acceptAutomationEvent(deps, source, {
389
- deliveryKey:
390
- request.deliveryId ?? `manual:${automationRequestDigest(source.adapterId, bytes)}`,
391
- requestDigest: automationRequestDigest(source.adapterId, bytes),
392
- normalizedEvent,
393
- }),
394
- 202,
395
- );
423
+ try {
424
+ return c.json(
425
+ await acceptAutomationEvent(deps, source, {
426
+ deliveryKey:
427
+ request.deliveryId ?? `manual:${automationRequestDigest(source.adapterId, bytes)}`,
428
+ requestDigest: automationRequestDigest(source.adapterId, bytes),
429
+ normalizedEvent,
430
+ ...(credentialRestriction ? { credentialRestriction } : {}),
431
+ }),
432
+ 202,
433
+ );
434
+ } catch (error) {
435
+ if (
436
+ error instanceof AutomationDeliveryConflictError ||
437
+ error instanceof AutomationCredentialRestrictionConflictError
438
+ ) {
439
+ throw new HTTPException(409, { message: error.message });
440
+ }
441
+ throw error;
442
+ }
396
443
  });
397
444
 
398
445
  app.post("/v1/webhooks/automations/:endpointId", async (c) => {
@@ -456,7 +503,10 @@ export function registerAutomationRoutes(app: Hono, deps: ApiRouteDeps): void {
456
503
  });
457
504
  return c.json(result, 202);
458
505
  } catch (error) {
459
- if (error instanceof AutomationDeliveryConflictError) {
506
+ if (
507
+ error instanceof AutomationDeliveryConflictError ||
508
+ error instanceof AutomationCredentialRestrictionConflictError
509
+ ) {
460
510
  throw new HTTPException(409, { message: error.message });
461
511
  }
462
512
  throw error;
@@ -471,9 +521,13 @@ export async function acceptAutomationEvent(
471
521
  deliveryKey: string;
472
522
  requestDigest: string;
473
523
  normalizedEvent: AutomationNormalizedEvent;
524
+ /** Canonical manual caller restriction, not normalized event metadata. */
525
+ credentialRestriction?: "developer_setup";
474
526
  },
475
527
  ) {
476
- if (input.normalizedEvent.adapterId !== source.adapterId) {
528
+ const { credentialRestriction: _untrustedRestriction, ...eventData } = input.normalizedEvent;
529
+ const normalizedEvent = AutomationNormalizedEvent.parse(eventData);
530
+ if (normalizedEvent.adapterId !== source.adapterId) {
477
531
  throw new HTTPException(422, {
478
532
  message: "automation event adapter does not match source",
479
533
  });
@@ -485,7 +539,7 @@ export async function acceptAutomationEvent(
485
539
  sourceId: source.id,
486
540
  });
487
541
  const matchingByEvent = triggers.filter((trigger) =>
488
- adapter.matches({ event: input.normalizedEvent, trigger }),
542
+ adapter.matches({ event: normalizedEvent, trigger }),
489
543
  );
490
544
  if (matchingByEvent.length > AUTOMATION_MAX_MATCHED_TRIGGERS) {
491
545
  throw new HTTPException(422, {
@@ -503,7 +557,10 @@ export async function acceptAutomationEvent(
503
557
  matchedTriggerRevisions: [],
504
558
  deliveryKey: input.deliveryKey,
505
559
  requestDigest: input.requestDigest,
506
- normalizedEvent: input.normalizedEvent,
560
+ normalizedEvent,
561
+ ...(input.credentialRestriction
562
+ ? { credentialRestriction: input.credentialRestriction }
563
+ : {}),
507
564
  ignoredReason: "no_matching_triggers",
508
565
  })
509
566
  : await withWorkspaceGatewayCustomModelReadLock(
@@ -513,55 +570,72 @@ export async function acceptAutomationEvent(
513
570
  await withWorkspaceOpenRouterCustomModelReadLock(
514
571
  gatewayLockedDb,
515
572
  { accountId: source.accountId, workspaceId: source.workspaceId },
516
- async (lockedDb) => {
517
- const catalogSourceSettings = deps.catalogSourceSettings ?? deps.settings;
518
- const catalogSettings = (
519
- await resolveWorkspaceCatalogSettings(lockedDb, catalogSourceSettings, {
573
+ async (openRouterLockedDb) =>
574
+ await withWorkspaceProviderCustomModelReadLock(
575
+ openRouterLockedDb,
576
+ {
520
577
  accountId: source.accountId,
521
578
  workspaceId: source.workspaceId,
522
- })
523
- ).settings;
524
- const matchingAtAcceptance = [];
525
- for (const trigger of matchingByEvent) {
526
- try {
527
- const render = adapter.render({
528
- event: input.normalizedEvent,
529
- trigger,
530
- source,
579
+ providerKind: "opper",
580
+ },
581
+ async (lockedDb) => {
582
+ const catalogSourceSettings = deps.catalogSourceSettings ?? deps.settings;
583
+ const catalogSettings = (
584
+ await resolveWorkspaceCatalogSettings(lockedDb, catalogSourceSettings, {
585
+ accountId: source.accountId,
586
+ workspaceId: source.workspaceId,
587
+ })
588
+ ).settings;
589
+ const matchingAtAcceptance = [];
590
+ for (const trigger of matchingByEvent) {
591
+ try {
592
+ const render = adapter.render({
593
+ event: normalizedEvent,
594
+ trigger,
595
+ source,
596
+ });
597
+ requireAutomationCredentialRestrictionPermissions(
598
+ trigger.sessionTemplate.credentialRestriction ??
599
+ input.credentialRestriction,
600
+ render.sessionTemplate.firstPartyMcpPermissions,
601
+ );
602
+ const requestedModel =
603
+ render.sessionTemplate.model ?? catalogSettings.openaiModel;
604
+ const model = canonicalConfiguredModel(catalogSettings, requestedModel);
605
+ if (!model) continue;
606
+ await assertWorkspaceModelPolicyAllows(
607
+ lockedDb,
608
+ catalogSettings,
609
+ source.workspaceId,
610
+ model,
611
+ );
612
+ matchingAtAcceptance.push(trigger);
613
+ } catch (error) {
614
+ if (isUnprocessableEntity(error)) continue;
615
+ throw error;
616
+ }
617
+ }
618
+ return await recordAutomationEvent(lockedDb, {
619
+ accountId: source.accountId,
620
+ workspaceId: source.workspaceId,
621
+ sourceId: source.id,
622
+ sourceVersion: source.version,
623
+ sourceConfiguration: source.configuration,
624
+ matchedTriggerRevisions: matchingAtAcceptance.map((trigger) => ({
625
+ triggerId: trigger.id,
626
+ revision: trigger.revision,
627
+ })),
628
+ deliveryKey: input.deliveryKey,
629
+ requestDigest: input.requestDigest,
630
+ normalizedEvent,
631
+ ...(input.credentialRestriction
632
+ ? { credentialRestriction: input.credentialRestriction }
633
+ : {}),
634
+ ignoredReason:
635
+ matchingAtAcceptance.length === 0 ? "no_executable_triggers" : null,
531
636
  });
532
- const requestedModel =
533
- render.sessionTemplate.model ?? catalogSettings.openaiModel;
534
- const model = canonicalConfiguredModel(catalogSettings, requestedModel);
535
- if (!model) continue;
536
- await assertWorkspaceModelPolicyAllows(
537
- lockedDb,
538
- catalogSettings,
539
- source.workspaceId,
540
- model,
541
- );
542
- matchingAtAcceptance.push(trigger);
543
- } catch (error) {
544
- if (isUnprocessableEntity(error)) continue;
545
- throw error;
546
- }
547
- }
548
- return await recordAutomationEvent(lockedDb, {
549
- accountId: source.accountId,
550
- workspaceId: source.workspaceId,
551
- sourceId: source.id,
552
- sourceVersion: source.version,
553
- sourceConfiguration: source.configuration,
554
- matchedTriggerRevisions: matchingAtAcceptance.map((trigger) => ({
555
- triggerId: trigger.id,
556
- revision: trigger.revision,
557
- })),
558
- deliveryKey: input.deliveryKey,
559
- requestDigest: input.requestDigest,
560
- normalizedEvent: input.normalizedEvent,
561
- ignoredReason:
562
- matchingAtAcceptance.length === 0 ? "no_executable_triggers" : null,
563
- });
564
- },
637
+ },
638
+ ),
565
639
  ),
566
640
  );
567
641
  const matching = await getAutomationTriggerRevisions(deps.db, {
@@ -573,6 +647,7 @@ export async function acceptAutomationEvent(
573
647
  version: stored.event.sourceVersion,
574
648
  configuration: stored.event.sourceConfiguration,
575
649
  };
650
+ const { credentialRestriction, ...acceptedEvent } = stored.event.normalizedEvent;
576
651
  const runIds: string[] = [];
577
652
  const triggerAutomationRun = deps.workflowClient.triggerAutomationRun;
578
653
  if (matching.length > 0 && !triggerAutomationRun) {
@@ -582,7 +657,7 @@ export async function acceptAutomationEvent(
582
657
  }
583
658
  for (const trigger of matching) {
584
659
  const render = adapter.render({
585
- event: stored.event.normalizedEvent,
660
+ event: acceptedEvent,
586
661
  trigger,
587
662
  source: acceptedSource,
588
663
  });
@@ -592,8 +667,9 @@ export async function acceptAutomationEvent(
592
667
  source: acceptedSource,
593
668
  trigger,
594
669
  eventId: stored.event.id,
595
- event: stored.event.normalizedEvent,
670
+ event: acceptedEvent,
596
671
  render,
672
+ ...(credentialRestriction ? { credentialRestriction } : {}),
597
673
  });
598
674
  const { run } = await createAutomationRun(deps.db, {
599
675
  accountId: source.accountId,
@@ -642,11 +718,12 @@ function workspaceCustomModelCommitGuard(input: {
642
718
  accountId: input.accountId,
643
719
  workspaceId: input.workspaceId,
644
720
  reference,
721
+ // Automation configuration carries no accepted Claude authority, so an
722
+ // organization Claude model is refused here (unchanged behaviour).
723
+ claudeAuthority: null,
645
724
  });
646
725
  if (!active) {
647
- throw new HTTPException(422, {
648
- message: `model is not available: ${input.modelId}`,
649
- });
726
+ throw modelUnavailableHttpException(input.modelId);
650
727
  }
651
728
  };
652
729
  }
@@ -667,17 +744,13 @@ async function requireSource(
667
744
  }
668
745
 
669
746
  function assertGenericSourceMutable(source: AutomationSourceSecret): void {
670
- if (source.packInstallationId) {
671
- throw new HTTPException(409, {
672
- message: "Pack-owned automation sources must be managed through their Pack setup API",
673
- });
674
- }
747
+ assertGenericTriggerMutable(source);
675
748
  }
676
749
 
677
- function assertGenericTriggerMutable(trigger: { packInstallationId: string | null }): void {
678
- if (trigger.packInstallationId) {
750
+ function assertGenericTriggerMutable(trigger: { adapterId: string }): void {
751
+ if (trigger.adapterId === "source-control.pull-request.v1") {
679
752
  throw new HTTPException(409, {
680
- message: "Pack-owned automation triggers must be managed through their Pack setup API",
753
+ message: "PR Review automations must be managed through the PR Review setup API",
681
754
  });
682
755
  }
683
756
  }