@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,10 +1,10 @@
1
1
  import { environmentsEncryptionKeyBytes } from "@opengeni/config";
2
+ import { withOrganizationIntegrationAcquisition } from "@opengeni/db/organization-integration-policy";
2
3
  import {
3
4
  CreatePrReviewAppRegistrationRequest,
4
5
  CreatePrReviewRepositoryBindingRequest,
5
6
  PrReviewAppRegistration,
6
7
  PrReviewRepositoryBinding,
7
- OPENGENI_PR_REVIEW_PACK_ID,
8
8
  UpdatePrReviewAppRegistrationRequest,
9
9
  UpdatePrReviewRepositoryBindingRequest,
10
10
  } from "@opengeni/contracts";
@@ -12,17 +12,17 @@ import {
12
12
  assertWorkspaceModelPolicyAllows,
13
13
  canonicalConfiguredModel,
14
14
  defaultPrReviewProviderBaseUrl,
15
- getCapabilityPack,
16
15
  workspaceCustomModelReference,
17
16
  lockActiveCustomModelForAdmission,
17
+ modelUnavailableHttpException,
18
18
  prReviewWebhookAuthKind,
19
19
  normalizePrReviewProviderBaseUrl,
20
- prReviewPackConnectorId,
21
- PR_REVIEW_AUTOMATION_TEMPLATE_ID,
22
20
  requireAccessGrant,
21
+ requireAccessGrantAuthorization,
23
22
  requirePermission,
24
23
  resolveWorkspaceCatalogSettings,
25
24
  type ApiRouteDeps,
25
+ PR_REVIEW_AUTOMATION_SETUP,
26
26
  } from "@opengeni/core";
27
27
  import {
28
28
  createPrReviewAppRegistration,
@@ -32,7 +32,6 @@ import {
32
32
  decryptVariableSetValue,
33
33
  encryptVariableSetValue,
34
34
  getPrReviewAppRegistrationSecret,
35
- getPackInstallation,
36
35
  listPrReviewAppRegistrations,
37
36
  listPrReviewRepositoryBindings,
38
37
  nestedPostgresSqlState,
@@ -48,6 +47,8 @@ import {
48
47
  verifyPrReviewProviderRepository,
49
48
  } from "../integrations/pr-review-provider";
50
49
  import { registerPrReviewGitHubRoutes } from "./pr-review-github";
50
+ import { integrationCommitGrant } from "../integrations/integration-commit-authority";
51
+ import { parseRequestJson } from "../http/request-body";
51
52
 
52
53
  export function registerPrReviewRoutes(app: Hono, deps: ApiRouteDeps): void {
53
54
  const { db, settings } = deps;
@@ -56,7 +57,7 @@ export function registerPrReviewRoutes(app: Hono, deps: ApiRouteDeps): void {
56
57
  app.get("/v1/workspaces/:workspaceId/pr-review/registrations", async (c) => {
57
58
  const workspaceId = c.req.param("workspaceId");
58
59
  const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:read");
59
- await requirePrReviewPackActive(db, workspaceId);
60
+
60
61
  return c.json({
61
62
  registrations: await listPrReviewAppRegistrations(db, grant.accountId, workspaceId),
62
63
  repositories: await listPrReviewRepositoryBindings(db, grant.accountId, workspaceId),
@@ -67,9 +68,9 @@ export function registerPrReviewRoutes(app: Hono, deps: ApiRouteDeps): void {
67
68
  const workspaceId = c.req.param("workspaceId");
68
69
  const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
69
70
  requirePermission(grant, "secrets:write");
70
- const packInstallation = await requirePrReviewPackActive(db, workspaceId);
71
+
71
72
  assertPrReviewSandboxBackend(deps);
72
- const payload = CreatePrReviewAppRegistrationRequest.parse(await c.req.json());
73
+ const payload = await parseRequestJson(c, CreatePrReviewAppRegistrationRequest);
73
74
  const encryptionKey = requirePrReviewEncryptionKey(deps);
74
75
  let providerBaseUrl: string;
75
76
  try {
@@ -94,28 +95,32 @@ export function registerPrReviewRoutes(app: Hono, deps: ApiRouteDeps): void {
94
95
  });
95
96
  }
96
97
  const registration = await mapPrReviewUniqueConflict(
97
- createPrReviewAppRegistration(db, {
98
- accountId: grant.accountId,
99
- workspaceId,
100
- name: payload.name,
101
- provider: payload.provider,
102
- providerBaseUrl,
103
- appId: payload.appId ?? null,
104
- credentialKind: payload.credentialKind,
105
- credentialEncrypted: encryptVariableSetValue(
106
- encryptionKey,
107
- payload.privateKey ?? payload.accessToken!,
108
- ),
109
- accessTokenExpiresAt: payload.accessTokenExpiresAt
110
- ? new Date(payload.accessTokenExpiresAt)
111
- : null,
112
- webhookAuthKind: prReviewWebhookAuthKind(payload.provider),
113
- webhookSecretEncrypted: encryptVariableSetValue(encryptionKey, payload.webhookSecret),
114
- webhookUsername: payload.webhookUsername ?? null,
115
- createdBySubjectId: grant.subjectId,
116
- packInstallationId: packInstallation.id,
117
- packConnectorId: prReviewPackConnectorId(payload.provider),
118
- }),
98
+ withOrganizationIntegrationAcquisition(
99
+ db,
100
+ grant,
101
+ [prReviewIntegrationKey(payload.provider)],
102
+ (tx) =>
103
+ createPrReviewAppRegistration(tx, {
104
+ accountId: grant.accountId,
105
+ workspaceId,
106
+ name: payload.name,
107
+ provider: payload.provider,
108
+ providerBaseUrl,
109
+ appId: payload.appId ?? null,
110
+ credentialKind: payload.credentialKind,
111
+ credentialEncrypted: encryptVariableSetValue(
112
+ encryptionKey,
113
+ payload.privateKey ?? payload.accessToken!,
114
+ ),
115
+ accessTokenExpiresAt: payload.accessTokenExpiresAt
116
+ ? new Date(payload.accessTokenExpiresAt)
117
+ : null,
118
+ webhookAuthKind: prReviewWebhookAuthKind(payload.provider),
119
+ webhookSecretEncrypted: encryptVariableSetValue(encryptionKey, payload.webhookSecret),
120
+ webhookUsername: payload.webhookUsername ?? null,
121
+ createdBySubjectId: grant.subjectId,
122
+ }),
123
+ ),
119
124
  "A PR Review registration with this provider and name already exists",
120
125
  );
121
126
  await recordAuditEvent(db, {
@@ -138,8 +143,8 @@ export function registerPrReviewRoutes(app: Hono, deps: ApiRouteDeps): void {
138
143
  const workspaceId = c.req.param("workspaceId");
139
144
  const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
140
145
  requirePermission(grant, "secrets:write");
141
- await requirePrReviewPackActive(db, workspaceId);
142
- const payload = UpdatePrReviewAppRegistrationRequest.parse(await c.req.json());
146
+
147
+ const payload = await parseRequestJson(c, UpdatePrReviewAppRegistrationRequest);
143
148
  const existing = await getPrReviewAppRegistrationSecret(db, {
144
149
  accountId: grant.accountId,
145
150
  workspaceId,
@@ -158,12 +163,12 @@ export function registerPrReviewRoutes(app: Hono, deps: ApiRouteDeps): void {
158
163
  payload.accessTokenExpiresAt !== undefined
159
164
  ) {
160
165
  throw new HTTPException(422, {
161
- message: "OpenGeni Lens credentials are managed by the deployment",
166
+ message: "Opengeni Lens credentials are managed by the deployment",
162
167
  });
163
168
  }
164
169
  if (payload.status === "active") {
165
170
  throw new HTTPException(409, {
166
- message: "Reconnect OpenGeni Lens to reactivate and resync its repositories",
171
+ message: "Reconnect Opengeni Lens to reactivate and resync its repositories",
167
172
  });
168
173
  }
169
174
  }
@@ -272,9 +277,13 @@ export function registerPrReviewRoutes(app: Hono, deps: ApiRouteDeps): void {
272
277
 
273
278
  app.post("/v1/workspaces/:workspaceId/pr-review/repositories", async (c) => {
274
279
  const workspaceId = c.req.param("workspaceId");
275
- const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
276
- const packInstallation = await requirePrReviewPackActive(db, workspaceId);
277
- const payload = CreatePrReviewRepositoryBindingRequest.parse(await c.req.json());
280
+ const grant = await integrationCommitGrant(
281
+ await requireAccessGrantAuthorization(c, deps, workspaceId, "workspace:admin"),
282
+ ["workspace:admin"],
283
+ { settings: deps.settings, authorizationHeader: c.req.header("authorization") },
284
+ );
285
+
286
+ const payload = await parseRequestJson(c, CreatePrReviewRepositoryBindingRequest);
278
287
  const registration = await getPrReviewAppRegistrationSecret(db, {
279
288
  accountId: grant.accountId,
280
289
  workspaceId,
@@ -284,6 +293,8 @@ export function registerPrReviewRoutes(app: Hono, deps: ApiRouteDeps): void {
284
293
  throw new HTTPException(404, {
285
294
  message: "PR Review app registration not found",
286
295
  });
296
+ const integrationKey = prReviewIntegrationKey(registration.provider);
297
+ await withOrganizationIntegrationAcquisition(db, grant, [integrationKey], async () => {});
287
298
  const repositoryUrl = new URL(payload.repositoryUri);
288
299
  let canonicalRepositoryUri = repositoryUrl.href;
289
300
  let canonicalRepositoryFullName = payload.repositoryFullName;
@@ -406,35 +417,33 @@ export function registerPrReviewRoutes(app: Hono, deps: ApiRouteDeps): void {
406
417
  modelId: model,
407
418
  })
408
419
  : undefined;
409
- const template = getCapabilityPack(OPENGENI_PR_REVIEW_PACK_ID)?.automationTemplates?.find(
410
- (candidate) => candidate.id === PR_REVIEW_AUTOMATION_TEMPLATE_ID,
411
- );
412
- if (!template) {
413
- throw new HTTPException(503, { message: "PR Review automation template is unavailable" });
414
- }
420
+ const template = PR_REVIEW_AUTOMATION_SETUP;
421
+
415
422
  const binding = await mapPrReviewUniqueConflict(
416
- createPrReviewRepositoryBinding(db, {
417
- accountId: grant.accountId,
418
- workspaceId,
419
- registrationId: registration.id,
420
- provider: registration.provider,
421
- repositoryUri: canonicalRepositoryUri,
422
- repositoryFullName: canonicalRepositoryFullName,
423
- providerRepositoryId: canonicalProviderRepositoryId,
424
- installationId:
425
- payload.installationId === undefined ? null : String(payload.installationId),
426
- projectId: canonicalProjectId,
427
- model,
428
- additionalInstructions: payload.additionalInstructions ?? null,
429
- status: payload.status,
430
- createdBySubjectId: grant.subjectId,
431
- packInstallationId: packInstallation.id,
432
- packTemplateId: template.id,
433
- adapterId: template.adapterId,
434
- eventTypes: template.eventTypes,
435
- configuration: template.configuration,
436
- sessionTemplate: template.sessionTemplate,
437
- ...(beforeCreateCommit ? { beforeCreateCommit } : {}),
423
+ withOrganizationIntegrationAcquisition(db, grant, [integrationKey], async (tx) => {
424
+ await grant.authorizeCommit(tx);
425
+ return createPrReviewRepositoryBinding(tx, {
426
+ accountId: grant.accountId,
427
+ workspaceId,
428
+ registrationId: registration.id,
429
+ provider: registration.provider,
430
+ repositoryUri: canonicalRepositoryUri,
431
+ repositoryFullName: canonicalRepositoryFullName,
432
+ providerRepositoryId: canonicalProviderRepositoryId,
433
+ installationId:
434
+ payload.installationId === undefined ? null : String(payload.installationId),
435
+ projectId: canonicalProjectId,
436
+ model,
437
+ additionalInstructions: payload.additionalInstructions ?? null,
438
+ status: payload.status,
439
+ createdBySubjectId: grant.subjectId,
440
+
441
+ adapterId: template.adapterId,
442
+ eventTypes: template.eventTypes,
443
+ configuration: template.configuration,
444
+ sessionTemplate: template.sessionTemplate,
445
+ ...(beforeCreateCommit ? { beforeCreateCommit } : {}),
446
+ });
438
447
  }),
439
448
  "This repository is already bound to the selected PR Review registration",
440
449
  );
@@ -457,8 +466,8 @@ export function registerPrReviewRoutes(app: Hono, deps: ApiRouteDeps): void {
457
466
  app.patch("/v1/workspaces/:workspaceId/pr-review/repositories/:bindingId", async (c) => {
458
467
  const workspaceId = c.req.param("workspaceId");
459
468
  const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
460
- await requirePrReviewPackActive(db, workspaceId);
461
- const payload = UpdatePrReviewRepositoryBindingRequest.parse(await c.req.json());
469
+
470
+ const payload = await parseRequestJson(c, UpdatePrReviewRepositoryBindingRequest);
462
471
  const catalogSettings = (
463
472
  await resolveWorkspaceCatalogSettings(db, deps.settings, {
464
473
  accountId: grant.accountId,
@@ -547,6 +556,12 @@ export function registerPrReviewRoutes(app: Hono, deps: ApiRouteDeps): void {
547
556
  });
548
557
  }
549
558
 
559
+ /** PR Review's server-owned provider, not a repository URL or user label,
560
+ * establishes Lens identity. Other providers have no curated acquisition key. */
561
+ function prReviewIntegrationKey(provider: string): "github-lens" | null {
562
+ return provider === "github" ? "github-lens" : null;
563
+ }
564
+
550
565
  function prReviewCustomModelCommitGuard(input: {
551
566
  settings: ApiRouteDeps["settings"];
552
567
  accountId: string;
@@ -560,11 +575,12 @@ function prReviewCustomModelCommitGuard(input: {
560
575
  accountId: input.accountId,
561
576
  workspaceId: input.workspaceId,
562
577
  reference,
578
+ // Review runs carry no accepted Claude authority, so an organization
579
+ // Claude model is refused here (unchanged behaviour).
580
+ claudeAuthority: null,
563
581
  });
564
582
  if (!active) {
565
- throw new HTTPException(422, {
566
- message: `model is not available: ${input.modelId}`,
567
- });
583
+ throw modelUnavailableHttpException(input.modelId);
568
584
  }
569
585
  };
570
586
  }
@@ -573,26 +589,16 @@ function assertPrReviewSandboxBackend(deps: ApiRouteDeps): void {
573
589
  if (deps.settings.sandboxBackend === "selfhosted") {
574
590
  throw new HTTPException(409, {
575
591
  message:
576
- "OpenGeni Review Bot requires managed compute so it can materialize and verify the exact pull-request head",
577
- });
578
- }
579
- }
580
-
581
- async function requirePrReviewPackActive(db: ApiRouteDeps["db"], workspaceId: string) {
582
- const installation = await getPackInstallation(db, workspaceId, OPENGENI_PR_REVIEW_PACK_ID);
583
- if (installation?.status !== "active") {
584
- throw new HTTPException(409, {
585
- message: "Install and enable the OpenGeni Review Bot Pack first",
592
+ "Opengeni Review Bot requires managed compute so it can materialize and verify the exact pull-request head",
586
593
  });
587
594
  }
588
- return installation;
589
595
  }
590
596
 
591
597
  function requirePrReviewEncryptionKey(deps: ApiRouteDeps): Uint8Array {
592
598
  const key = environmentsEncryptionKeyBytes(deps.settings);
593
599
  if (!key) {
594
600
  throw new HTTPException(503, {
595
- message: "OpenGeni Review Bot requires configured secret encryption",
601
+ message: "Opengeni Review Bot requires configured secret encryption",
596
602
  });
597
603
  }
598
604
  return key;
@@ -97,6 +97,7 @@ function requiredAttemptClaims(grant: AccessGrant): PreferenceRegistryAttemptCla
97
97
 
98
98
  function requireHumanMutation(access: AccessGrantAuthorization): void {
99
99
  const { grant } = access;
100
+ if (isDeploymentKeyOperator(access)) return;
100
101
  if (
101
102
  !access.contextIntegrity ||
102
103
  access.authenticatedSubjectId !== grant.subjectId ||
@@ -112,6 +113,23 @@ function requireHumanMutation(access: AccessGrantAuthorization): void {
112
113
  }
113
114
  }
114
115
 
116
+ /**
117
+ * A key-only (configured) deployment has no Opengeni sign-in: whoever holds the
118
+ * deployment key is its operator, so a request made with the key itself counts
119
+ * as the person. Agents never hold the key and stay refused.
120
+ */
121
+ function isDeploymentKeyOperator(access: AccessGrantAuthorization): boolean {
122
+ const { grant } = access;
123
+ return (
124
+ access.contextIntegrity &&
125
+ access.authenticatedSubjectId === grant.subjectId &&
126
+ grant.principalKind === "configured_key" &&
127
+ exactAttemptClaims(grant) === null &&
128
+ !grant.serviceInitiator &&
129
+ !grant.serviceInitiatorContext
130
+ );
131
+ }
132
+
115
133
  export function authorizePreferenceRegistryScopeMutation(
116
134
  access: AccessGrantAuthorization,
117
135
  scope: PreferenceRegistryScope,
@@ -1,3 +1,4 @@
1
+ import { legacyVariableSetFields, VariableSetsRemovedError } from "../http/variable-sets-removed";
1
2
  import {
2
3
  CreateRigRequest,
3
4
  ProposeRigChangeRequest,
@@ -42,6 +43,21 @@ async function parseRigRequest<T>(c: Context, schema: ZodType<T>, label: string)
42
43
  bodyRecord?.payload && typeof bodyRecord.payload === "object"
43
44
  ? (bodyRecord.payload as Record<string, unknown>)
44
45
  : null;
46
+ // RM-1: rig default Variable Sets were removed with Variable Sets.
47
+ const legacyFields = [
48
+ ...legacyVariableSetFields(bodyRecord),
49
+ ...legacyVariableSetFields(payloadRecord).map((field) => `payload.${field}`),
50
+ ];
51
+ if (legacyFields.length > 0) {
52
+ throw new VariableSetsRemovedError(legacyFields);
53
+ }
54
+ // An explicit [] still clears an old version's defaults; null means "unchanged".
55
+ if (bodyRecord && !Array.isArray(bodyRecord.defaultVariableSetIds)) {
56
+ delete bodyRecord.defaultVariableSetIds;
57
+ }
58
+ if (payloadRecord && !Array.isArray(payloadRecord.defaultVariableSetIds)) {
59
+ delete payloadRecord.defaultVariableSetIds;
60
+ }
45
61
  const imageOverrideUnsupported = Boolean(
46
62
  (bodyRecord && Object.hasOwn(bodyRecord, "image")) ||
47
63
  (payloadRecord && Object.hasOwn(payloadRecord, "image")),
@@ -51,7 +67,7 @@ async function parseRigRequest<T>(c: Context, schema: ZodType<T>, label: string)
51
67
  throw new ApiHttpError(422, {
52
68
  code: "validation_failed",
53
69
  message: imageOverrideUnsupported
54
- ? "Rig base-image overrides are not supported; Rigs use the deployment-managed platform sandbox."
70
+ ? "Sandbox Environment base-image overrides are not supported; Sandbox Environments use the deployment-managed platform sandbox."
55
71
  : `Invalid ${label}.`,
56
72
  retryable: false,
57
73
  details: {
@@ -77,7 +93,7 @@ export function registerRigRoutes(app: Hono, deps: ApiRouteDeps): void {
77
93
  const authorization = await requireAccessGrantAuthorization(c, deps, workspaceId, permission);
78
94
  const rigId = c.req.param("rigId");
79
95
  if (!rigId) {
80
- throw new HTTPException(400, { message: "rig id is required" });
96
+ throw new HTTPException(400, { message: "sandbox environment id is required" });
81
97
  }
82
98
  const rig = await requireRigForApi(db, authorization.grant, rigId);
83
99
  if (
@@ -126,7 +142,7 @@ export function registerRigRoutes(app: Hono, deps: ApiRouteDeps): void {
126
142
  // The verifying transition already committed. Keep its deterministic
127
143
  // attempt identity retryable instead of reporting an opaque 5xx after a
128
144
  // durable mutation or inventing a second attempt after an ambiguous start.
129
- deps.observability?.warn("rig change verification start failed", {
145
+ deps.observability?.warn("sandbox environment change verification start failed", {
130
146
  workspaceId,
131
147
  changeId,
132
148
  attempt,
@@ -163,11 +179,14 @@ export function registerRigRoutes(app: Hono, deps: ApiRouteDeps): void {
163
179
  // Creation already committed. The rig remains fully usable through its
164
180
  // runtime setup fallback and can be re-verified explicitly; never turn a
165
181
  // successful create into an unretryable 5xx because Temporal was down.
166
- deps.observability?.warn("initial rig provider-image verification start failed", {
167
- workspaceId,
168
- versionId,
169
- error: error instanceof Error ? error.message : String(error),
170
- });
182
+ deps.observability?.warn(
183
+ "initial sandbox environment provider-image verification start failed",
184
+ {
185
+ workspaceId,
186
+ versionId,
187
+ error: error instanceof Error ? error.message : String(error),
188
+ },
189
+ );
171
190
  return false;
172
191
  }
173
192
  }
@@ -183,7 +202,11 @@ export function registerRigRoutes(app: Hono, deps: ApiRouteDeps): void {
183
202
  const authorization = await requireAccessGrantAuthorization(c, deps, workspaceId);
184
203
  const grant = authorization.grant;
185
204
  requirePermission(grant, "rigs:manage");
186
- const payload = await parseRigRequest(c, CreateRigRequest, "Rig create request");
205
+ const payload = await parseRigRequest(
206
+ c,
207
+ CreateRigRequest,
208
+ "Sandbox Environment create request",
209
+ );
187
210
  const allowOrganization =
188
211
  payload.scope === "organization" &&
189
212
  authorization.accountGrant?.permissions.includes("account:admin") === true;
@@ -222,7 +245,11 @@ export function registerRigRoutes(app: Hono, deps: ApiRouteDeps): void {
222
245
  message: "missing permission: account:admin",
223
246
  });
224
247
  }
225
- const payload = await parseRigRequest(c, UpdateRigRequest, "Rig update request");
248
+ const payload = await parseRigRequest(
249
+ c,
250
+ UpdateRigRequest,
251
+ "Sandbox Environment update request",
252
+ );
226
253
  return c.json(await updateRigForApi({ db }, grant, rig, payload, { allowOrganization }));
227
254
  });
228
255
 
@@ -254,7 +281,11 @@ export function registerRigRoutes(app: Hono, deps: ApiRouteDeps): void {
254
281
  app.post("/v1/workspaces/:workspaceId/rigs/:rigId/versions", async (c) => {
255
282
  const workspaceId = c.req.param("workspaceId");
256
283
  const { grant, rig } = await requireRigMutation(c, workspaceId, "rigs:manage");
257
- const payload = await parseRigRequest(c, RigDefinitionEditPayload, "Rig version request");
284
+ const payload = await parseRigRequest(
285
+ c,
286
+ RigDefinitionEditPayload,
287
+ "Sandbox Environment version request",
288
+ );
258
289
  const version = await createRigVersionForApi({ db }, grant, rig, payload);
259
290
  const started = await tryStartInitialVersionVerification(rig.workspaceId, version.id);
260
291
  if (!started) c.header("OpenGeni-Rig-Verification", "deferred");
@@ -289,7 +320,11 @@ export function registerRigRoutes(app: Hono, deps: ApiRouteDeps): void {
289
320
  app.post("/v1/workspaces/:workspaceId/rigs/:rigId/changes", async (c) => {
290
321
  const workspaceId = c.req.param("workspaceId");
291
322
  const { grant, rig } = await requireRigMutation(c, workspaceId, "rigs:use");
292
- const request = await parseRigRequest(c, ProposeRigChangeRequest, "Rig change request");
323
+ const request = await parseRigRequest(
324
+ c,
325
+ ProposeRigChangeRequest,
326
+ "Sandbox Environment change request",
327
+ );
293
328
  const change = await proposeRigChangeForApi({ db }, grant, rig, request);
294
329
  const verification = await startChangeVerification(rig.workspaceId, change.id);
295
330
  if (!verification.started) c.header("OpenGeni-Rig-Verification", "deferred");
@@ -336,7 +371,7 @@ export function registerRigRoutes(app: Hono, deps: ApiRouteDeps): void {
336
371
  const workspaceId = c.req.param("workspaceId");
337
372
  const { rig } = await requireRigMutation(c, workspaceId, "rigs:use");
338
373
  if (!rig.activeVersion) {
339
- return c.json({ error: "rig has no active version" }, 422);
374
+ return c.json({ error: "sandbox environment has no active version" }, 422);
340
375
  }
341
376
  await startVersionVerification(rig.workspaceId, rig.activeVersion.id);
342
377
  return c.json({ ok: true, versionId: rig.activeVersion.id }, 202);