@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
@@ -0,0 +1,213 @@
1
+ import { type SiteSqlDescribeResponse, type SiteSqlErrorCode, type SiteSqlExportFormat, type SiteSqlImportRequest, type SiteSqlImportResponse, type SiteSqlInspectResponse, type SiteSqlLimits, type SiteSqlMigrateResponse, type SiteSqlQueryAudience, type SiteSqlQueryDefinitionRequest, type SiteSqlQueryResponse, type SiteSqlResetResponse, type SiteSqlRunResponse, type SiteSqlValue, type SiteLimitProfileKind } from "@opengeni/contracts";
2
+ import type { ApiRouteDeps } from "@opengeni/core";
3
+ import { type SiteSqlScope } from "@opengeni/db";
4
+ import { resolveSiteDataAccess, type SiteDataAccess, type SiteDataSurface } from "../site-data/service.js";
5
+ import { type SiteDbFetch } from "./gateway.js";
6
+ /**
7
+ * Site SQL: optional per-Site Cloudflare storage. One SQLite Durable Object
8
+ * per Site holds the rows; Postgres holds whether the owner turned it on, the
9
+ * ordered migrations and the named queries (so the database can always be
10
+ * rebuilt), usage counters and call windows. Every surface (Site pages through
11
+ * the workspace API or site-runtime, the console and first-party agent tools)
12
+ * goes through here: it resolves the caller with Site Data's rules (a Site
13
+ * frame is always a viewer; managers manage), checks audiences, binds the
14
+ * viewer's principal into `:viewer` parameters, applies limits, meters usage
15
+ * in `usage_only` mode, and only then calls the gateway, which re-checks every
16
+ * statement in the Durable Object.
17
+ */
18
+ export type SiteSqlDeps = Pick<ApiRouteDeps, "db" | "settings">;
19
+ /** Who is calling: whatever Site Data accepts (an access grant, or a published Site viewer). */
20
+ export type SiteSqlAuthority = Parameters<typeof resolveSiteDataAccess>[1];
21
+ export declare class SiteSqlError extends Error {
22
+ readonly code: SiteSqlErrorCode;
23
+ readonly details: Record<string, unknown>;
24
+ constructor(code: SiteSqlErrorCode, message: string, details?: Record<string, unknown>);
25
+ }
26
+ /** The transport to the gateway; tests replace `fetch`. */
27
+ export declare const siteSqlTransport: {
28
+ fetch: SiteDbFetch;
29
+ };
30
+ /** Calls per minute all of a Site's managers may make together (console and agents). */
31
+ export declare const SITE_SQL_MANAGER_CALLS_PER_MINUTE = 600;
32
+ /** One export response stops adding rows past this many bytes and returns a next cursor. */
33
+ export declare const SITE_SQL_EXPORT_MAX_BYTES: number;
34
+ /**
35
+ * Default size of one SQL export piece: well under the 2 MB a SQL import
36
+ * takes per call, so every piece of a large dump re-imports in one call.
37
+ */
38
+ export declare const SITE_SQL_EXPORT_SQL_DEFAULT_BYTES: number;
39
+ /** Typed errors from every layer as SiteSqlError. */
40
+ export declare function toSiteSqlError(error: unknown): unknown;
41
+ export type SiteSqlLimitSettings = Pick<SiteSqlDeps["settings"], "sitesSqlFreeStorageBytes" | "sitesSqlFreeRowsReadPerMonth" | "sitesSqlFreeRowsWrittenPerMonth" | "sitesSqlFreeCallsPerMinutePerViewer" | "sitesSqlFreeCallsPerMinutePerSite" | "sitesSqlMaxRowsPerCall" | "sitesSqlMaxResponseBytes" | "sitesCreditsLimitMultiplier">;
42
+ /** The limit profile kinds of published Sites (docs/published-sites.md). */
43
+ export type SiteSqlProfileKind = SiteLimitProfileKind;
44
+ /** Flood brakes that hold under every profile, including unlimited. */
45
+ export declare const SITE_SQL_FLOOD_BRAKES: Readonly<{
46
+ callsPerMinutePerViewer: 600;
47
+ callsPerMinutePerSite: 6000;
48
+ }>;
49
+ /**
50
+ * Site SQL limits for a limit profile: standard and custom use the settings
51
+ * (custom overrides carry no SQL fields yet), credits multiplies the storage,
52
+ * monthly row and per-viewer caps, and unlimited removes the monthly caps but
53
+ * keeps the hard storage ceiling and the flood brakes. Rows per call and
54
+ * response size are the same everywhere. The per-Site monthly row quotas are
55
+ * off unless configured (platform usage is metered per workspace instead),
56
+ * and storage per Site defaults to the hard ceiling.
57
+ */
58
+ export declare function siteSqlLimits(settings: SiteSqlLimitSettings, kind?: SiteSqlProfileKind): SiteSqlLimits;
59
+ /**
60
+ * The limit profile in force for a Site, the same one published Sites use:
61
+ * the Site's own profile, else the workspace default, else standard. Sites that
62
+ * were never published have no profile of their own.
63
+ */
64
+ export declare function siteSqlProfileKind(deps: Pick<SiteSqlDeps, "db">, scope: SiteSqlScope): Promise<SiteSqlProfileKind>;
65
+ /**
66
+ * Why a caller may not run a named query of this audience, or null. Managers
67
+ * (outside a Site frame) run every query; `managers` admits nobody else;
68
+ * `signed_in` needs a person (not a guest, and not a service key, agent or
69
+ * schedule acting on its own); `everyone` admits all.
70
+ */
71
+ export declare function siteSqlAudienceRefusal(audience: SiteSqlQueryAudience, caller: {
72
+ manager: boolean;
73
+ guest: boolean;
74
+ person: boolean;
75
+ }): SiteSqlError | null;
76
+ export declare function siteSqlChecksum(sql: string): string;
77
+ export declare function describeSiteSql(deps: SiteSqlDeps, authority: SiteSqlAuthority, siteId: string): Promise<SiteSqlDescribeResponse>;
78
+ /** Turn Site SQL on or off for one Site. Turning it off keeps the data and definitions. */
79
+ export declare function setSiteSqlSettings(deps: SiteSqlDeps, authority: SiteSqlAuthority, siteId: string, request: {
80
+ enabled: boolean;
81
+ }): Promise<SiteSqlDescribeResponse>;
82
+ /** Create, replace or delete (`request` null) a named query. */
83
+ export declare function defineSiteSqlQuery(deps: SiteSqlDeps, authority: SiteSqlAuthority, siteId: string, name: string, request: SiteSqlQueryDefinitionRequest | null): Promise<{
84
+ query: SiteSqlQueryResponse | null;
85
+ created: boolean;
86
+ deleted: boolean;
87
+ }>;
88
+ /**
89
+ * Add a migration: checked against the Site's migration SQL cap, applied in
90
+ * the Durable Object together with any earlier migration it is missing (only
91
+ * those are sent, in bounded calls), then recorded in Postgres, all under the
92
+ * Site's database lock.
93
+ */
94
+ export declare function migrateSiteSql(deps: SiteSqlDeps, authority: SiteSqlAuthority, siteId: string, request: {
95
+ name: string;
96
+ sql: string;
97
+ }, options?: {
98
+ profileKind?: SiteSqlProfileKind;
99
+ }): Promise<SiteSqlMigrateResponse>;
100
+ /**
101
+ * Reset the Site's database. `schema: "keep"` (default) empties it and applies
102
+ * every migration again in bounded calls (a rebuild from Postgres); `schema:
103
+ * "drop"` deletes the database and forgets every migration and named query,
104
+ * and works whenever the gateway is configured.
105
+ */
106
+ export declare function resetSiteSql(deps: SiteSqlDeps, authority: SiteSqlAuthority, siteId: string, request: {
107
+ schema?: "keep" | "drop" | undefined;
108
+ }): Promise<SiteSqlResetResponse>;
109
+ /**
110
+ * The Durable Object's tables, columns, row counts and applied migrations.
111
+ * Works whenever the gateway is configured.
112
+ */
113
+ export declare function inspectSiteSql(deps: SiteSqlDeps, authority: SiteSqlAuthority, siteId: string): Promise<SiteSqlInspectResponse>;
114
+ /** The values Opengeni binds for `:viewer`, `:viewer_kind` and `:viewer_signed_in`. */
115
+ export declare function siteSqlPrincipalParams(access: Pick<SiteDataAccess, "caller" | "subjectId">, guest: boolean): Record<string, SiteSqlValue>;
116
+ /**
117
+ * Run a named query: what Site pages call with `site.sql.run(name, params)`.
118
+ * Site frames and published viewers are viewers; the query's audience decides
119
+ * who may run it (siteSqlAudienceRefusal). These calls count toward the
120
+ * Site's monthly caps. `profileKind` skips reading the limit profile again
121
+ * when the caller has it; `beforeWrite` runs for write queries before the
122
+ * call is counted (the published runtime applies its guest write limit).
123
+ */
124
+ export declare function runSiteSqlQuery(deps: SiteSqlDeps, authority: SiteSqlAuthority, siteId: string, name: string, params: Readonly<Record<string, SiteSqlValue>>, surface?: SiteDataSurface, options?: {
125
+ profileKind?: SiteSqlProfileKind;
126
+ beforeWrite?: () => Promise<void>;
127
+ }): Promise<SiteSqlRunResponse>;
128
+ /**
129
+ * One statement from a manager's agent or the console: `read` refuses writes
130
+ * (rolled back in the Durable Object), `write` allows them. Schema changes
131
+ * go through migrations so the database can be rebuilt. Management calls
132
+ * are metered but do not count toward (or stop at) the monthly caps of the
133
+ * Site's pages; the managers' call rate and the storage cap bound them.
134
+ *
135
+ * `asSiteMember`: a published Site's agent in a workspace member's
136
+ * conversation reads (never writes) the Site's database as that member,
137
+ * framed to that one Site. The caller checks the viewer is a member; this
138
+ * refuses guests and anyone without a person, and counts like page calls.
139
+ */
140
+ export declare function runSiteSqlStatement(deps: SiteSqlDeps, authority: SiteSqlAuthority, siteId: string, request: {
141
+ sql: string;
142
+ params?: Record<string, SiteSqlValue> | undefined;
143
+ maxRows?: number | undefined;
144
+ }, mode: "read" | "write", options?: {
145
+ asSiteMember?: boolean;
146
+ }): Promise<SiteSqlRunResponse>;
147
+ export type SiteSqlExport = {
148
+ content: string;
149
+ contentType: string;
150
+ filename: string;
151
+ truncated: boolean;
152
+ /** Pass back as `cursor` for the next piece; null when this piece ends the export. */
153
+ nextCursor: string | null;
154
+ };
155
+ /**
156
+ * Export the Site's data so it can always leave Cloudflare: `sql` (schema and
157
+ * INSERT statements), `csv` (one table) or `json` (schema and rows per table).
158
+ * SQL and JSON keep every value; CSV turns values into text. Exports work
159
+ * whenever the gateway is configured, while Site SQL is off and past the
160
+ * monthly row caps (they are metered as management). One response holds
161
+ * about `maxBytes` (16 MiB at most; by default 1 MiB for SQL, so each piece
162
+ * re-imports in one call, and 16 MiB otherwise); a larger export comes in
163
+ * pieces: pass
164
+ * `nextCursor` back as `cursor` and append the pieces in order. Only the
165
+ * first piece has the header (SQL schema, CSV header row, JSON schema) and
166
+ * only the last SQL piece has the triggers, so the pieces together re-import
167
+ * as one dump.
168
+ */
169
+ export declare function exportSiteSql(deps: SiteSqlDeps, authority: SiteSqlAuthority, siteId: string, request: {
170
+ format: SiteSqlExportFormat;
171
+ table?: string | undefined;
172
+ cursor?: string | null | undefined;
173
+ maxBytes?: number | undefined;
174
+ }): Promise<SiteSqlExport>;
175
+ /**
176
+ * Import data. `sql`: schema statements (tables, views, indexes) become a
177
+ * migration recorded in Postgres (so a rebuild keeps them), the data
178
+ * statements run in batches, then triggers become a second migration (so
179
+ * they do not fire on imported rows); `csv` and `json` insert rows into an
180
+ * existing table (a CSV header names the columns; an empty cell is NULL).
181
+ * Batches that ran stay when a later one fails; the error says how much
182
+ * landed and which migration was recorded. A dump larger than one call
183
+ * imports piece by piece, in order (the first piece holds the schema, the
184
+ * last the triggers). Imports are metered as management.
185
+ */
186
+ export declare function importSiteSql(deps: SiteSqlDeps, authority: SiteSqlAuthority, siteId: string, request: SiteSqlImportRequest): Promise<SiteSqlImportResponse>;
187
+ /**
188
+ * The Sites of a workspace that have a Site SQL database, read before the
189
+ * workspace is deleted (its Postgres rows cascade with it; the Durable
190
+ * Objects do not). Empty when no gateway is configured or the read fails.
191
+ */
192
+ export declare function siteSqlSitesOfWorkspace(deps: Pick<ApiRouteDeps, "db"> & {
193
+ settings?: SiteSqlDeps["settings"] | undefined;
194
+ }, scope: {
195
+ accountId: string;
196
+ workspaceId: string;
197
+ }): Promise<string[]>;
198
+ export type SiteSqlDropResult = {
199
+ dropped: string[];
200
+ failed: string[];
201
+ skipped: string[];
202
+ };
203
+ /**
204
+ * Drop the data of Site databases whose workspace was deleted, best effort:
205
+ * a few at a time, each call bounded, none started after a deadline. Ids
206
+ * that failed or were not tried are logged in one structured line (the data
207
+ * stays in its Durable Object until a later sweep; see docs/site-data.md).
208
+ */
209
+ export declare function dropSiteSqlDatabases(deps: {
210
+ settings?: SiteSqlDeps["settings"] | undefined;
211
+ }, siteIds: readonly string[], context?: {
212
+ workspaceId?: string;
213
+ }): Promise<SiteSqlDropResult>;
@@ -0,0 +1,26 @@
1
+ import type { ScheduledTask } from "@opengeni/contracts";
2
+ import { type Database } from "@opengeni/db";
3
+ type TemporalScheduleSyncDependencies = {
4
+ db: Database;
5
+ withDeadline<T>(deadline: number, work: () => Promise<T>): Promise<T>;
6
+ upsert(task: ScheduledTask): Promise<void>;
7
+ /** Idempotent: an absent Temporal schedule is already removed. */
8
+ remove(temporalScheduleId: string): Promise<void>;
9
+ };
10
+ /**
11
+ * Serialize external writes across API replicas, independently of task edits.
12
+ * A queued sync rereads the newest committed row after acquiring this lock;
13
+ * input snapshots never become desired state. Cleanup uses the same key, so
14
+ * an in-flight upsert finishes before its tombstone's external deletion.
15
+ * Failure compensation commits before releasing the lock, so a queued writer
16
+ * cannot read the row being restored and then publish that failed edit.
17
+ *
18
+ * Deadlines bound both lock admission and network occupancy. A thrown network
19
+ * error retains its unknown-outcome semantics; this is not durable recovery
20
+ * for a process crash or a lost Temporal acknowledgement.
21
+ */
22
+ export declare function createTemporalScheduleSynchronizer(deps: TemporalScheduleSyncDependencies): {
23
+ sync(task: Pick<ScheduledTask, "id" | "workspaceId" | "temporalScheduleId">, onFailure?: (tx: Database, error: unknown) => Promise<Error>): Promise<void>;
24
+ remove(temporalScheduleId: string): Promise<void>;
25
+ };
26
+ export {};
@@ -0,0 +1,8 @@
1
+ import type { TranscriptionBillingRefusedError } from "@opengeni/core";
2
+ import type { Context } from "hono";
3
+ /**
4
+ * Same body shape as session admission refusals (`code` + `message`, plus
5
+ * allowance `scope`/`resetsAt`), so SDK/React clients classify it as a
6
+ * definitive credit/allowance refusal rather than a retryable failure.
7
+ */
8
+ export declare function transcriptionBillingRefusal(c: Context, error: TranscriptionBillingRefusedError): Response;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Decode one uploaded recording to 16 kHz mono PCM WAV with a hard decode
3
+ * ceiling, and measure its duration from the bytes the server produced.
4
+ */
5
+ export type TranscriptionAudioNormalizer = (input: {
6
+ audio: Uint8Array;
7
+ mimeType: string;
8
+ /** Longest accepted recording; anything longer is refused, never truncated. */
9
+ maxDurationSeconds: number;
10
+ signal?: AbortSignal | undefined;
11
+ }) => Promise<{
12
+ bytes: Uint8Array;
13
+ durationSeconds: number;
14
+ }>;
15
+ /**
16
+ * ffmpeg decodes at most `maxDurationSeconds + 1` seconds (`-t`), so a long or
17
+ * hostile upload costs bounded CPU and disk. Output that reaches that ceiling
18
+ * was longer than the limit and is refused as `too_large` before any provider
19
+ * call, so the transcript the user receives is never silently cut short.
20
+ */
21
+ export declare function createFfmpegAudioNormalizer(input: {
22
+ ffmpegPath: string;
23
+ }): TranscriptionAudioNormalizer;
@@ -0,0 +1,12 @@
1
+ import type { VoiceInputPricing } from "@opengeni/config";
2
+ import type { TranscriptionProvider } from "@opengeni/core";
3
+ /** Azure Speech file transcription; credentials and model selection stay server-side. */
4
+ export declare function createMaiTranscriptionProvider(input: {
5
+ endpoint: string;
6
+ apiKey: string;
7
+ apiVersion: string;
8
+ model: string;
9
+ pricing?: VoiceInputPricing | null;
10
+ ffmpegPath: string;
11
+ fetch?: typeof fetch;
12
+ }): TranscriptionProvider;
@@ -1,3 +1,4 @@
1
+ import { type VoiceInputPricing } from "@opengeni/config";
1
2
  import type { TranscriptionProvider } from "@opengeni/core";
2
3
  export declare function createAzureOpenAiTranscriptionProvider(input: {
3
4
  endpoint: string;
@@ -5,5 +6,8 @@ export declare function createAzureOpenAiTranscriptionProvider(input: {
5
6
  apiVersion: string;
6
7
  apiKey: string | null;
7
8
  adToken: string | null;
9
+ /** Underlying model of the deployment; defaults to the deployment name. */
10
+ model?: string;
11
+ pricing?: VoiceInputPricing | null;
8
12
  fetch?: typeof fetch;
9
13
  }): TranscriptionProvider;
@@ -1,9 +1,25 @@
1
+ import { type VoiceInputPricing, type VoiceInputUsage } from "@opengeni/config";
1
2
  import { type TranscriptionProvider, TranscriptionServiceError } from "@opengeni/core";
2
3
  export declare function createOpenAiTranscriptionProvider(input: {
3
4
  apiKey: string;
4
5
  baseUrl: string;
5
6
  model: string;
7
+ pricing?: VoiceInputPricing | null;
6
8
  fetch?: typeof fetch;
7
9
  }): TranscriptionProvider;
10
+ /**
11
+ * OpenAI-compatible `/audio/transcriptions` JSON (OpenAI and Azure OpenAI).
12
+ * `usage` is `{type:"tokens", input_tokens, input_token_details:{audio_tokens,
13
+ * text_tokens}, output_tokens, total_tokens}` for the gpt-4o-transcribe family
14
+ * or `{type:"duration", seconds}` for duration-billed models; Whisper
15
+ * `verbose_json` carries the processed audio `duration`. Unusable usage is
16
+ * dropped (null), never guessed.
17
+ */
18
+ export declare function parseTranscriptionResponseBody(body: unknown): {
19
+ text: string;
20
+ languages: string[];
21
+ usage: VoiceInputUsage | null;
22
+ } | null;
23
+ export declare function parseTranscriptionUsage(body: Record<string, unknown>): VoiceInputUsage | null;
8
24
  export declare function responseError(status: number): TranscriptionServiceError;
9
25
  export declare function fetchError(error: unknown): TranscriptionServiceError;
@@ -0,0 +1,39 @@
1
+ import type { Settings } from "@opengeni/config";
2
+ import { TranscriptionServiceError } from "@opengeni/core";
3
+ import { type Database, type SubscriptionCoreConnectionToken, type SubscriptionCoreFetch, type SubscriptionCoreProvider } from "@opengeni/db";
4
+ /**
5
+ * Once a shared-core provider is selected, its failures are final for that
6
+ * audio: provider ordering chose the initial provider only (design 6.5).
7
+ */
8
+ export declare function coreTranscriptionUnavailable(): TranscriptionServiceError;
9
+ export declare function withoutFallback(error: TranscriptionServiceError): TranscriptionServiceError;
10
+ /** Parse a `{ text, language }` transcription body (response already buffered by custody). */
11
+ export declare function coreTranscriptionResult(response: Response): Promise<{
12
+ text: string;
13
+ languages: string[];
14
+ }>;
15
+ /**
16
+ * Transcription on the shared subscription core for any provider (the M3
17
+ * Codex rule, EP-N01..N04): a sessionless `transcription` operation for the
18
+ * authenticated caller in an explicit account/workspace context, on a shared
19
+ * organization- or workspace-scoped connection only, under its own operation
20
+ * lease and the per-connection refresh lock. One forced refresh and one
21
+ * retry when the provider refuses the bearer; nothing is retried through
22
+ * another provider once a connection was selected.
23
+ */
24
+ export declare function transcribeOnSubscriptionCore(input: {
25
+ db: Database;
26
+ settings: Settings;
27
+ provider: SubscriptionCoreProvider;
28
+ fetch: SubscriptionCoreFetch;
29
+ accountId: string;
30
+ workspaceId: string;
31
+ subjectId: string;
32
+ requestId: string;
33
+ send: (token: SubscriptionCoreConnectionToken, fetchImpl: SubscriptionCoreFetch) => Promise<Response>;
34
+ /** The provider refused the bearer (refresh once and retry). */
35
+ unauthorized: (response: Response) => Promise<boolean>;
36
+ }): Promise<{
37
+ text: string;
38
+ languages: string[];
39
+ }>;
@@ -1,6 +1,7 @@
1
1
  import { type Settings } from "@opengeni/config";
2
- import { type TranscriptionAvailabilityContext, type TranscriptionProvider, type TranscriptionService } from "@opengeni/core";
2
+ import { type TranscriptionAvailabilityContext, type TranscriptionBilling, type TranscriptionProvider, type TranscriptionService } from "@opengeni/core";
3
3
  import type { Database } from "@opengeni/db";
4
+ import { type TranscriptionAudioNormalizer } from "./normalize.js";
4
5
  export declare function createTranscriptionService(input: {
5
6
  settings: Settings;
6
7
  db: Database;
@@ -11,6 +12,14 @@ export declare function createTranscriptionService(input: {
11
12
  providerRequestTimeoutMilliseconds?: number;
12
13
  /** Test seam for evaluating persisted absolute deadlines after delayed setup. */
13
14
  now?: () => Date;
15
+ /** Credit admission/settlement for deployment-funded providers. */
16
+ billing?: TranscriptionBilling;
17
+ /** Test seam: trusted one-shot decode + duration (defaults to ffmpeg). */
18
+ normalizeAudio?: TranscriptionAudioNormalizer;
19
+ /** Loud operator log for settlement failures after provider success. */
20
+ log?: (message: string, attributes: Record<string, string | number | boolean>) => void;
21
+ /** In-process settlement retry pacing after an inline failure. */
22
+ settlementRetryDelaysMilliseconds?: readonly number[];
14
23
  }): TranscriptionService;
15
24
  export declare function remainingTranscriptionProviderRequestMilliseconds(providerDeadlineAt: Date, now: Date): number;
16
25
  export declare function orderedProviders(providers: readonly TranscriptionProvider[], context: TranscriptionAvailabilityContext): TranscriptionProvider[];
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Duration of a PCM RIFF/WAVE buffer the server itself produced (resumable
3
+ * provider segments are ffmpeg-normalized WAV). Used only as the trusted
4
+ * billing fallback when a provider reports no usage; never applied to
5
+ * client-uploaded bytes. Returns null for anything that is not a well-formed
6
+ * WAV with a positive byte rate.
7
+ */
8
+ export declare function wavDurationSeconds(bytes: Uint8Array): number | null;
@@ -0,0 +1,37 @@
1
+ import type { ToolGatewayCatalog, ToolGatewayIdentity } from "@opengeni/contracts";
2
+ /**
3
+ * Content-free memory of complete workspace tool catalogs this API process
4
+ * produced for one exact caller scope.
5
+ *
6
+ * A complete catalog digest covers every enabled connector, so verifying a
7
+ * call's `catalogDigest` used to require connecting and listing every
8
+ * connector again. The attestation remembers, per complete digest, only the
9
+ * canonical digest of each entry. A later call can then prepare just its
10
+ * target connector live and prove that the entry it is about to execute is
11
+ * byte-for-byte the entry its caller saw in that complete catalog.
12
+ *
13
+ * It never stores credentials, prepared gateways, connections, schemas,
14
+ * arguments, or results, and grants no authority: every call still resolves
15
+ * live caller, account, connection, policy, and Site authority. A miss,
16
+ * expiry, or entry mismatch falls back to complete preparation and the exact
17
+ * historical stale-catalog contract.
18
+ */
19
+ export type WorkspaceToolGatewayCatalogAttestations = {
20
+ record(scope: string, catalog: Pick<ToolGatewayCatalog, "digest" | "entries">): void;
21
+ /** The attested entry digest, or `undefined` when the catalog is unknown or expired. */
22
+ entryDigest(scope: string, catalogDigest: string, identity: ToolGatewayIdentity): string | undefined;
23
+ /** Entry digests currently retained (bounded by `maxEntries`). */
24
+ readonly retainedEntries: number;
25
+ };
26
+ export type WorkspaceToolGatewayCatalogAttestationOptions = {
27
+ /** Fixed lifetime from complete preparation; use never extends it. */
28
+ ttlMs?: number;
29
+ maxScopes?: number;
30
+ maxCatalogsPerScope?: number;
31
+ /** Global bound on retained entry digests across all scopes and catalogs. */
32
+ maxEntries?: number;
33
+ now?: () => number;
34
+ };
35
+ export declare const WORKSPACE_TOOL_GATEWAY_ATTESTATION_TTL_MS: number;
36
+ export declare function createWorkspaceToolGatewayCatalogAttestations(options?: WorkspaceToolGatewayCatalogAttestationOptions): WorkspaceToolGatewayCatalogAttestations;
37
+ export declare function digestWorkspaceToolGatewayCatalogEntry(entry: unknown): string;
@@ -3,6 +3,22 @@ import type { Observability } from "@opengeni/observability";
3
3
  export type WorkspaceToolGatewayAdapter = "http" | "mcp";
4
4
  export type WorkspaceToolGatewayOperation = "approval" | "call";
5
5
  export type WorkspaceToolGatewayOutcome = "ok" | "tool_error" | "approval_required" | "catalog_stale" | "invalid_input" | "not_found" | "rate_limited" | "failed";
6
+ export declare function recordWorkspaceToolTargetOperation(observability: Observability | null | undefined, input: {
7
+ operation: "resolve" | "invoke" | "target-approvals" | "manifest";
8
+ outcome: "ok" | "failed";
9
+ durationSeconds: number;
10
+ }): void;
11
+ /**
12
+ * Bounded preparation telemetry: how long the request spent constructing,
13
+ * credentialing, connecting, and listing connectors before any execution, and
14
+ * whether a call used target-only preparation through a catalog attestation.
15
+ */
16
+ export declare function recordWorkspaceToolGatewayPreparation(observability: Observability | null | undefined, input: {
17
+ operation: "catalog" | "call";
18
+ scope: "complete" | "target";
19
+ attestation: "hit" | "miss" | "mismatch" | "bypass" | "record";
20
+ durationSeconds: number;
21
+ }): void;
6
22
  /**
7
23
  * Low-cardinality gateway telemetry shared by HTTP/SDK/Site and aggregate MCP
8
24
  * adapters. Tool names, workspace/subject ids, arguments, results, credentials,
@@ -0,0 +1,27 @@
1
+ /**
2
+ * `{{secret:…}}` resolution for workspace tool gateway calls made by people,
3
+ * services and Sites (GW-4). The prepared gateway may serve many calls, so
4
+ * the Site context is request-local: a Site call resolves with the viewer's
5
+ * reach (`site_viewer`), any other call with the calling human or service.
6
+ * Values replace references only in the deep copy the gateway executes; the
7
+ * approval digest stays bound to the references.
8
+ */
9
+ import type { VaultProviderRegistry } from "@opengeni/vaults";
10
+ import { type Settings } from "@opengeni/config";
11
+ import { type AccessGrant, type SecretPrincipal } from "@opengeni/contracts";
12
+ import type { Database } from "@opengeni/db";
13
+ import type { ToolGatewayArgumentResolver } from "@opengeni/tool-gateway";
14
+ export type SiteSecretContext = {
15
+ siteId: string;
16
+ siteVersion: string;
17
+ };
18
+ /** Runs `run` with the validated Site (or explicitly no Site) as secret context. */
19
+ export declare function withSiteSecretContext<T>(context: SiteSecretContext | null, run: () => T): T;
20
+ export declare function workspaceGatewaySecretPrincipal(grant: AccessGrant, site: SiteSecretContext | null): SecretPrincipal;
21
+ export declare function workspaceGatewaySecretArguments(input: {
22
+ db: Database;
23
+ settings: Settings;
24
+ grant: AccessGrant;
25
+ /** Connected vaults (1Password, host) for the resolved acting subject. */
26
+ providersForSubject?: ((subjectId: string | null) => VaultProviderRegistry) | undefined;
27
+ }): ToolGatewayArgumentResolver;
@@ -1,12 +1,16 @@
1
1
  import { resolveSiteSessionOrigin } from "./site-session-origin.js";
2
2
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
3
  import type { Settings } from "@opengeni/config";
4
- import { ToolGatewayDeclarationsResponse, type AccessGrant, type ToolGatewayCatalog, type ToolGatewayIdentity } from "@opengeni/contracts";
4
+ import { ToolGatewayCallRequest, ToolGatewayCallResponse, ToolGatewayDeclarationsResponse, type AccessGrant, type ToolGatewayCatalog, type ToolGatewayIdentity, type ToolGatewayTarget } from "@opengeni/contracts";
5
5
  import { type AccessGrantAuthorization, type ApiRouteDeps } from "@opengeni/core";
6
- import { consumeToolGatewayApproval, getWorkspaceArtifactContentRef, issueToolGatewayApproval } from "@opengeni/db";
6
+ import { buildConnectionTokenResolver, consumeToolGatewayApproval, getWorkspaceArtifactContentRef, issueToolGatewayApproval } from "@opengeni/db";
7
7
  import { type PreparedWorkspaceToolGatewayTools } from "@opengeni/runtime/workspace-tool-gateway";
8
8
  import { type ToolGatewayDefinition } from "@opengeni/tool-gateway";
9
+ import type { TargetAuthorityFence } from "./workspace-tool-target-fence.js";
10
+ import { type WorkspaceToolGatewayCatalogAttestations } from "./workspace-tool-gateway-attestations.js";
9
11
  import type { Observability } from "@opengeni/observability";
12
+ import { type PublishedSiteToolAuthorization } from "./site-publishing/page-tool-authority.js";
13
+ export type WorkspaceToolGatewayAuthorization = AccessGrantAuthorization | PublishedSiteToolAuthorization;
10
14
  export type PreparedWorkspaceToolGateway = Pick<PreparedWorkspaceToolGatewayTools, "toolGateway" | "toolGatewayCatalog" | "close"> & {
11
15
  toolGateway: NonNullable<PreparedWorkspaceToolGatewayTools["toolGateway"]>;
12
16
  toolGatewayCatalog: NonNullable<PreparedWorkspaceToolGatewayTools["toolGatewayCatalog"]>;
@@ -23,8 +27,60 @@ type WorkspaceSiteToolContext = {
23
27
  type AuthorizeWorkspaceSiteTool = (db: ApiRouteDeps["db"], grant: AccessGrant, context: WorkspaceSiteToolContext) => Promise<void>;
24
28
  export declare function grantUsesAttemptScopedMcp(grant: AccessGrant): boolean;
25
29
  export declare function requireWorkspaceToolGatewayGrant(grant: AccessGrant): void;
26
- export declare function requireWorkspaceToolGatewayAuthorization(authorization: AccessGrantAuthorization): AccessGrant;
27
- export declare function prepareWorkspaceToolGateway(routeDeps: ApiRouteDeps, authorization: AccessGrantAuthorization): Promise<PreparedWorkspaceToolGateway>;
30
+ export declare function requireWorkspaceToolGatewayAuthorization(authorization: WorkspaceToolGatewayAuthorization): AccessGrant;
31
+ export declare function prepareWorkspaceToolGateway(routeDeps: ApiRouteDeps, authorization: WorkspaceToolGatewayAuthorization, options?: {
32
+ /**
33
+ * Prepare only these exact (account-qualified) identities. Servers outside
34
+ * them are never constructed, credentialed, connected, or listed; the
35
+ * resulting catalog and digest describe only this subset.
36
+ */
37
+ allowedIdentities?: readonly ToolGatewayIdentity[];
38
+ } & WorkspaceToolGatewayPreparationOptions): Promise<PreparedWorkspaceToolGateway>;
39
+ /**
40
+ * Bounded caller scope for catalog attestations. It binds the exact caller,
41
+ * actor class, and permission set; attestations still grant no authority.
42
+ */
43
+ export declare function workspaceToolGatewayAttestationScope(authorization: AccessGrantAuthorization): string;
44
+ export type WorkspaceToolGatewayPreparationScope = "complete" | "target";
45
+ export type WorkspaceToolGatewayAttestationOutcome = "hit" | "miss" | "mismatch" | "bypass";
46
+ export type WorkspaceToolGatewayTiming = {
47
+ /** Wall time spent preparing gateways (all preparations, including fallback). */
48
+ prepareMs: number;
49
+ /** Wall time from the last successful preparation to the response. */
50
+ callMs: number;
51
+ scope: WorkspaceToolGatewayPreparationScope;
52
+ attestation: WorkspaceToolGatewayAttestationOutcome;
53
+ };
54
+ /** Prepare one complete current-caller catalog and remember its content-free attestation. */
55
+ export declare function prepareAttestedWorkspaceToolGateway(routeDeps: ApiRouteDeps, authorization: AccessGrantAuthorization, attestations: WorkspaceToolGatewayCatalogAttestations | undefined, prepare?: typeof prepareWorkspaceToolGateway): Promise<PreparedWorkspaceToolGateway>;
56
+ /**
57
+ * HTTP/SDK/Site call adapter. When the caller's `catalogDigest` names a
58
+ * complete catalog this process prepared for the same caller scope, only the
59
+ * target identity's connector is prepared live and its entry must match the
60
+ * attested entry exactly. Every other case (approval capability, unknown or
61
+ * expired digest, missing/changed entry) prepares the complete catalog and
62
+ * applies the unchanged stale-catalog contract.
63
+ */
64
+ export declare function callWorkspaceToolGatewayForCaller(routeDeps: ApiRouteDeps, authorization: AccessGrantAuthorization, request: ToolGatewayCallRequest, options?: {
65
+ attestations?: WorkspaceToolGatewayCatalogAttestations;
66
+ observability?: Observability;
67
+ /** Must enforce current-caller gateway authorization before provider work. */
68
+ prepare?: typeof prepareWorkspaceToolGateway;
69
+ authorizeSiteTool?: AuthorizeWorkspaceSiteTool;
70
+ resolveOrigin?: typeof resolveSiteSessionOrigin;
71
+ /** Called once with the preparation split, whether the call succeeds or fails. */
72
+ onPreparation?: (preparation: Pick<WorkspaceToolGatewayTiming, "prepareMs" | "scope" | "attestation">) => void;
73
+ }): Promise<{
74
+ response: ToolGatewayCallResponse;
75
+ timing: WorkspaceToolGatewayTiming;
76
+ }>;
77
+ /** Content-free Server-Timing for gateway preparation versus execution. */
78
+ export declare function workspaceToolGatewayServerTiming(timing: {
79
+ prepareMs: number;
80
+ callMs?: number;
81
+ scope: WorkspaceToolGatewayPreparationScope;
82
+ attestation?: WorkspaceToolGatewayAttestationOutcome;
83
+ }): string;
28
84
  export declare function prepareMcpOAuthWorkspaceToolGateway(routeDeps: ApiRouteDeps, grant: AccessGrant, allowedIdentities: readonly {
29
85
  serverId: string;
30
86
  toolName: string;
@@ -32,7 +88,41 @@ export declare function prepareMcpOAuthWorkspaceToolGateway(routeDeps: ApiRouteD
32
88
  export declare function prepareWorkspaceToolGatewayForGrant(routeDeps: ApiRouteDeps, grant: AccessGrant, allowedIdentities?: readonly {
33
89
  serverId: string;
34
90
  toolName: string;
35
- }[]): Promise<PreparedWorkspaceToolGateway>;
91
+ }[], options?: WorkspaceToolGatewayPreparationOptions): Promise<PreparedWorkspaceToolGateway>;
92
+ export type WorkspaceToolGatewayPreparationOptions = {
93
+ target?: ToolGatewayTarget;
94
+ signal?: AbortSignal;
95
+ /** Trusted transport callback, never a request-body field. */
96
+ reauthorize?: () => Promise<void>;
97
+ /**
98
+ * Trusted per-request live fence of a targeted or manifest request (never a
99
+ * request-body field). Required with `target`; replaces `reauthorize`.
100
+ */
101
+ fence?: TargetAuthorityFence;
102
+ /**
103
+ * Settings visible to first-party (opengeni/files/docs) tool handlers.
104
+ * `prepared` (default, MCP OAuth): the identity-narrowed server set.
105
+ * `caller`: the complete caller-authorized set, so a target-only call
106
+ * executes exactly as it would from the complete gateway.
107
+ */
108
+ firstPartySettings?: "prepared" | "caller";
109
+ };
110
+ /** Keep live caller authority independent of native connection acquisition and refresh. */
111
+ export declare function withWorkspaceConnectionAuthorization(resolve: ReturnType<typeof buildConnectionTokenResolver>, reauthorize?: () => Promise<void>): ReturnType<typeof buildConnectionTokenResolver>;
112
+ /**
113
+ * Credential boundary of a fenced targeted request. Before an execution-mode
114
+ * resolve (which may refresh a token or record use) only the live caller is
115
+ * checked. The returned hook runs immediately before one physical provider
116
+ * request: the native hook, then (targeted) a non-refreshing native preflight
117
+ * that must still name the same connection version, then one full fence
118
+ * evaluation, the hook's last step. A hook retained past the request scope
119
+ * reads nothing.
120
+ */
121
+ export declare function withTargetFenceConnectionAuthorization(resolve: ReturnType<typeof buildConnectionTokenResolver>, fence: Pick<TargetAuthorityFence, "caller" | "allows" | "assertOpen">, options: {
122
+ preflight: boolean;
123
+ }): ReturnType<typeof buildConnectionTokenResolver>;
124
+ /** Select one authorized connector without constructing any provider. */
125
+ export declare function workspaceToolGatewayTargetServer(settings: Pick<Settings, "mcpServers">, target: ToolGatewayTarget): string;
36
126
  export declare function workspaceToolGatewayDefinitionFilter(settings: Pick<Settings, "allowedFirstPartyMcpTools">, allowedIdentities?: readonly ToolGatewayIdentity[]): (definition: ToolGatewayDefinition) => boolean;
37
127
  export declare function workspaceToolGatewaySettingsForGrant(settings: Settings, grant: AccessGrant, allowedIdentities?: readonly {
38
128
  serverId: string;
@@ -115,7 +205,13 @@ export declare function approveWorkspaceToolGatewayCall(prepared: PreparedWorksp
115
205
  approvalToken: string;
116
206
  expiresAt: string;
117
207
  }>;
118
- export declare function requireWorkspaceSiteToolAuthorization(db: ApiRouteDeps["db"], grant: AccessGrant, context: WorkspaceSiteToolContext, resolveVersion?: typeof getWorkspaceArtifactContentRef): Promise<void>;
208
+ export declare function throwWorkspaceToolGatewayHttpError(error: unknown): never;
209
+ /** A saved Site version, only when the caller can see the Site. */
210
+ export type WorkspaceSiteVersionResolver = (db: ApiRouteDeps["db"], grant: AccessGrant, artifactId: string, versionId: string) => Promise<{
211
+ status: Awaited<ReturnType<typeof getWorkspaceArtifactContentRef>>["status"];
212
+ version: Pick<Awaited<ReturnType<typeof getWorkspaceArtifactContentRef>>["version"], "id" | "requestedTools">;
213
+ }>;
214
+ export declare function requireWorkspaceSiteToolAuthorization(db: ApiRouteDeps["db"], grant: AccessGrant, context: WorkspaceSiteToolContext, resolveVersion?: WorkspaceSiteVersionResolver): Promise<void>;
119
215
  export declare function toolGatewayCatalogResponse(catalog: ToolGatewayCatalog): ToolGatewayCatalog;
120
216
  export declare function workspaceToolGatewayDeclarations(prepared: PreparedWorkspaceToolGateway): ToolGatewayDeclarationsResponse;
121
217
  export {};