@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,56 @@
1
+ /**
2
+ * Verification of gateway-signed site-runtime requests. The gateway HMACs
3
+ * `siteGatewayCanonicalString` with the shared secret; the API accepts the
4
+ * current or the previous secret (rotation), within 30 s of its clock. The
5
+ * signed body hash travels in its own header, so the signature is checked
6
+ * from the headers alone, before the body is read; the route then hashes the
7
+ * body as it reads it and refuses a body that does not match. Nothing else
8
+ * about the request is trusted before this passes.
9
+ */
10
+ export type SiteGatewayFields = {
11
+ host: string;
12
+ session: string;
13
+ visitor: string;
14
+ clientIp: string;
15
+ human: boolean;
16
+ };
17
+ export type SiteGatewayVerification = {
18
+ ok: true;
19
+ fields: SiteGatewayFields;
20
+ /** The signed hex SHA-256 the body read afterwards must match. */
21
+ bodySha256: string;
22
+ } | {
23
+ ok: false;
24
+ reason: "not_configured" | "missing_headers" | "bad_timestamp" | "skew" | "bad_body_hash" | "bad_signature" | "body_mismatch" | "credentials";
25
+ };
26
+ /** Request headers that carry Opengeni app credentials; site-runtime refuses them. */
27
+ export declare const SITE_RUNTIME_REFUSED_HEADERS: readonly string[];
28
+ export declare function sha256Hex(bytes: Uint8Array): string;
29
+ export declare function siteGatewaySignature(secret: string, canonical: string): string;
30
+ /**
31
+ * Verify a signed request from its headers alone; the body is not needed.
32
+ * On success the caller reads the body (capped) and checks it against
33
+ * `bodySha256` with `sameSha256Hex`, refusing a mismatch as `body_mismatch`.
34
+ */
35
+ export declare function verifySiteGatewayRequest(input: {
36
+ method: string;
37
+ pathWithQuery: string;
38
+ headers: Headers;
39
+ secrets: readonly (string | undefined)[];
40
+ nowMs?: number;
41
+ }): SiteGatewayVerification;
42
+ /** Whether two hex digests are equal, compared in constant time. */
43
+ export declare function sameSha256Hex(actual: string, signed: string): boolean;
44
+ /** Sign a request as the gateway does (tests and local tools). */
45
+ export declare function signSiteGatewayRequest(input: {
46
+ secret: string;
47
+ method: string;
48
+ pathWithQuery: string;
49
+ host: string;
50
+ body?: Uint8Array | string;
51
+ session?: string;
52
+ visitor?: string;
53
+ clientIp?: string;
54
+ human?: boolean;
55
+ nowMs?: number;
56
+ }): Record<string, string>;
@@ -0,0 +1,63 @@
1
+ import { type SiteLimitProfile, type SiteLimitProfileKind, type SiteLimits as SiteLimitsValue } from "@opengeni/contracts";
2
+ import type { Settings } from "@opengeni/config";
3
+ import type { StoredSiteLimitProfile } from "@opengeni/db";
4
+ /**
5
+ * Limit profiles for published Sites. Opengeni enforces these values (the
6
+ * edge only brakes floods). Limits follow who the viewer is, not the Site's
7
+ * access mode:
8
+ *
9
+ * - Workspace members are never limited by Site limits, on any Site: they
10
+ * use the workspace's normal session limits and billing. Only the request
11
+ * flood brake applies.
12
+ * - Everyone outside the workspace (invited people and public visitors,
13
+ * signed in or anonymous) shares ONE Site limit (per month by default, or
14
+ * per day), and an optional per-person limit (off by default).
15
+ * - Anonymous guests also meet internal bot guards (conversation and message
16
+ * counts and a per-conversation cap), configured in settings and not shown
17
+ * to Site owners.
18
+ *
19
+ * The profile in force is the Site's own, else the workspace default, else
20
+ * `standard`. Every profile keeps the flood brakes, and deployment switches
21
+ * (public agents) apply last.
22
+ */
23
+ export type SiteLimitSettings = Pick<Settings, "sitesFreeRequestsPerMinutePerVisitor" | "sitesFreeGuestWritesPerMinute" | "sitesFreeConversationsPerVisitorPerDay" | "sitesFreeConversationsPerSitePerDay" | "sitesFreeTurnsPerConversation" | "sitesFreeAgentMicrosPerConversation" | "sitesFreeAgentMicrosPerVisitorPerDay" | "sitesFreeAgentMicrosPerSitePerMonth" | "sitesAgentMicrosPerSitePerMonth" | "sitesAgentMicrosPerPersonPerDay" | "sitesGuestConversationsPerVisitorPerDay" | "sitesGuestConversationsPerSitePerDay" | "sitesGuestTurnsPerConversation" | "sitesGuestAgentMicrosPerConversation" | "sitesCreditsLimitMultiplier" | "sitesPublicAgentsEnabled">;
24
+ /** The stored kind as the API reports it: the legacy `free` is `standard`. */
25
+ export declare function normalizedSiteLimitProfileKind(kind: SiteLimitProfileKind): SiteLimitProfileKind;
26
+ /** The standard limits from settings (the new setting, the deprecated one, the built-in default). */
27
+ export declare function standardSiteLimits(settings: SiteLimitSettings): SiteLimitsValue;
28
+ /** @deprecated The former free profile: the standard limits. */
29
+ export declare function freeSiteLimits(settings: SiteLimitSettings): SiteLimitsValue;
30
+ /**
31
+ * The previous release's free defaults. Its custom form always saved the six
32
+ * LEGACY_CUSTOM_FORM_FIELDS, prefilled with these, so in a profile of that
33
+ * shape a field with exactly this value means "the default" and takes the
34
+ * new standard value instead. Migration 0791 deliberately leaves stored rows
35
+ * intact for old readers. New writes mark explicit overrides with version 2;
36
+ * unmarked old-pod writes keep normalizing throughout the rolling deploy.
37
+ */
38
+ export declare const LEGACY_FREE_SITE_LIMIT_DEFAULTS: Readonly<Record<string, unknown>>;
39
+ /** The fields the previous release's custom form always saved. */
40
+ export declare const LEGACY_CUSTOM_FORM_FIELDS: readonly ["conversationsPerVisitorPerDay", "conversationsPerSitePerDay", "turnsPerConversation", "agentMicrosPerConversation", "agentMicrosPerVisitorPerDay", "agentMicrosPerSitePerMonth"];
41
+ /** Parse stored overrides leniently: unknown or invalid fields are ignored. */
42
+ export declare function siteLimitOverrides(stored: Record<string, unknown> | null | undefined): Partial<SiteLimitsValue>;
43
+ /** The limits one profile gives people outside the workspace, before deployment switches. */
44
+ export declare function siteLimitsForProfile(settings: SiteLimitSettings, profile: StoredSiteLimitProfile | SiteLimitProfile): SiteLimitsValue;
45
+ /** The profile in force: the Site's own, else the workspace default, else standard. */
46
+ export declare function sourceSiteLimitProfile(siteProfile: StoredSiteLimitProfile | null, workspaceProfile: StoredSiteLimitProfile | null): SiteLimitProfile;
47
+ /**
48
+ * The Site's limits (for people outside the workspace) under the profile in
49
+ * force, deployment switches applied. Viewer-specific limits: siteViewerLimits.
50
+ */
51
+ export declare function effectiveSiteLimits(settings: SiteLimitSettings, siteProfile: StoredSiteLimitProfile | null, workspaceProfile: StoredSiteLimitProfile | null): SiteLimitsValue;
52
+ export type SiteViewerLimitKind = "member" | "invited" | "user" | "guest";
53
+ /**
54
+ * The limits that govern one viewer:
55
+ * - members: no Site limits at all (agents on, nothing capped), only the
56
+ * request flood brake;
57
+ * - signed-in people outside the workspace: the Site limit and the optional
58
+ * per-person limit, with the flood brakes as their only guards;
59
+ * - anonymous guests: all of the Site's limits, bot guards included.
60
+ */
61
+ export declare function siteViewerLimits(limits: SiteLimitsValue, viewerKind: SiteViewerLimitKind): SiteLimitsValue;
62
+ /** The stored form of a requested profile kind: `free` is stored as `standard`. */
63
+ export declare function storedSiteLimitProfileKind(kind: SiteLimitProfileKind): StoredSiteLimitProfile["kind"];
@@ -0,0 +1,30 @@
1
+ import type { AccessGrant } from "@opengeni/contracts";
2
+ import { type ApiRouteDeps, type SiteSessionOrigin } from "@opengeni/core";
3
+ import type { WorkspaceSiteVersionResolver } from "../workspace-tool-gateway.js";
4
+ import type { SiteGatewayFields } from "./gateway-signature.js";
5
+ /** A Site cookie is NOT a console session or a general access authorization. */
6
+ export type PublishedSiteToolAuthorization = {
7
+ readonly kind: "published_site_tools";
8
+ readonly grant: AccessGrant;
9
+ };
10
+ type Authority = {
11
+ requestedTools: Array<{
12
+ serverId: string;
13
+ toolName: string;
14
+ }>;
15
+ origin: SiteSessionOrigin & {
16
+ siteId: string;
17
+ versionId: string;
18
+ };
19
+ reauthorize: () => Promise<void>;
20
+ readVersion: WorkspaceSiteVersionResolver;
21
+ };
22
+ export declare function isPublishedSiteToolAuthorization(value: object): value is PublishedSiteToolAuthorization;
23
+ export declare function publishedSiteToolAuthority(value: PublishedSiteToolAuthorization): Authority;
24
+ /**
25
+ * Called only after gateway signature verification. Authenticate the opaque
26
+ * Site cookie against this served host; never accept a subject or grant from
27
+ * the page. The resulting capability is usable only by the tool gateway.
28
+ */
29
+ export declare function authorizePublishedSiteTools(deps: ApiRouteDeps, domain: string, fields: SiteGatewayFields): Promise<PublishedSiteToolAuthorization>;
30
+ export {};
@@ -0,0 +1,113 @@
1
+ import { type SitePlatformMeter, type SitePlatformUsage } from "@opengeni/contracts";
2
+ import type { Settings } from "@opengeni/config";
3
+ import { type Database, type SitePlatformBrakeRecord, type SitePlatformScope, type SitePlatformUsageRecord } from "@opengeni/db";
4
+ import { ApiHttpError } from "../http/api-error.js";
5
+ /**
6
+ * Site platform usage: what published Sites cost the platform apart from
7
+ * model spend (gateway requests, Site SQL rows read and written, Site SQL
8
+ * plus Site Data storage). Every mode meters it per workspace and month.
9
+ *
10
+ * - usage_only (default): recorded only.
11
+ * - shadow: what credits mode would charge is recorded (shadow_micros).
12
+ * - credits: usage above the workspace's monthly allowance is charged from
13
+ * organization credits; a workspace past an allowance with no credits (or
14
+ * with overage off) is refused further Site SQL and Site Data use (402).
15
+ *
16
+ * Separately, one Opengeni-wide monthly limit brakes every workspace: when
17
+ * the estimated cost of all metered usage this month reaches
18
+ * OPENGENI_SITES_PLATFORM_MONTHLY_LIMIT_USD the brake engages and refuses
19
+ * new Site SQL writes, new publishes and guest agent turns (503,
20
+ * details.code site_platform_brake_engaged). Published pages keep serving.
21
+ */
22
+ export type SitePlatformSettings = Pick<Settings, "sitesPlatformBillingMode" | "sitesPlatformOverageEnabled" | "sitesPlatformAllowanceRequests" | "sitesPlatformAllowanceSqlRowsRead" | "sitesPlatformAllowanceSqlRowsWritten" | "sitesPlatformAllowanceStorageBytes" | "sitesPlatformPriceMicrosPerMillionRequests" | "sitesPlatformPriceMicrosPerMillionSqlRowsRead" | "sitesPlatformPriceMicrosPerMillionSqlRowsWritten" | "sitesPlatformPriceMicrosPerGbMonth" | "sitesPlatformMonthlyLimitUsd" | "sitesPlatformAlertPercent">;
23
+ export type SitePlatformDeps = {
24
+ db: Database;
25
+ settings: SitePlatformSettings;
26
+ };
27
+ type MeterRule = {
28
+ meter: SitePlatformMeter;
29
+ allowance: number;
30
+ priceMicros: number;
31
+ priceUnit: number;
32
+ };
33
+ /** GB-month unit of storage prices (decimal gigabytes, as Cloudflare bills). */
34
+ export declare const SITE_PLATFORM_GB = 1000000000;
35
+ export declare function sitePlatformMeterRules(settings: SitePlatformSettings): MeterRule[];
36
+ type UsageAmounts = {
37
+ requests: number;
38
+ sqlRowsRead: number;
39
+ sqlRowsWritten: number;
40
+ storageBytes: number;
41
+ storagePeakBytes?: number;
42
+ };
43
+ /**
44
+ * Estimated cost of usage, micro-USD, before allowances. Storage is priced
45
+ * at its level (peak for a workspace) as if held the whole month: an upper
46
+ * bound, so the brake errs early rather than late.
47
+ */
48
+ export declare function sitePlatformEstimateMicros(settings: SitePlatformSettings, usage: UsageAmounts): number;
49
+ /** What credits mode charges this month: usage above each allowance, at its price. */
50
+ export declare function sitePlatformBillableMicros(settings: SitePlatformSettings, usage: UsageAmounts): number;
51
+ export declare function sitePlatformUsageView(settings: SitePlatformSettings, workspaceId: string, usage: SitePlatformUsageRecord, brake: SitePlatformBrakeRecord): SitePlatformUsage;
52
+ export declare function readSitePlatformUsageView(deps: SitePlatformDeps, scope: SitePlatformScope): Promise<SitePlatformUsage>;
53
+ /** Charges smaller than this wait for more usage (one debit per cent at most). */
54
+ export declare const SITE_PLATFORM_MIN_CHARGE_MICROS = 10000;
55
+ /**
56
+ * After usage was recorded: in shadow mode record what credits would charge;
57
+ * in credits mode charge the new billable amount from organization credits
58
+ * (claim and debit in one transaction). Best effort: a failure is logged and
59
+ * the next metered call retries it.
60
+ */
61
+ export declare function settleSitePlatformCharges(deps: SitePlatformDeps, scope: SitePlatformScope, usage: SitePlatformUsageRecord): Promise<void>;
62
+ /**
63
+ * Credits mode only: refuse (402, details.code site_platform_quota_exhausted)
64
+ * when a meter the call uses is at or past its allowance and the workspace
65
+ * cannot pay for more (overage off, or no spendable credits).
66
+ */
67
+ export declare function requireSitePlatformQuota(deps: SitePlatformDeps, scope: SitePlatformScope, meters: readonly SitePlatformMeter[]): Promise<void>;
68
+ /** The monthly limit in micro-USD, or null when the automatic brake is off (limit 0). */
69
+ export declare function sitePlatformLimitMicros(settings: SitePlatformSettings): number | null;
70
+ /** How long a process trusts a brake read. */
71
+ export declare const SITE_PLATFORM_BRAKE_CACHE_MS = 15000;
72
+ /** How often a process re-evaluates the Opengeni-wide estimate after metering. */
73
+ export declare const SITE_PLATFORM_EVALUATE_INTERVAL_MS = 30000;
74
+ /** Forget cached brake state and the evaluation throttle (tests). */
75
+ export declare function resetSitePlatformBrakeCache(): void;
76
+ export type SitePlatformBrakedAction = "sql_write" | "publish" | "guest_agent";
77
+ /** The 503 a braked action gets. */
78
+ export declare function sitePlatformBrakeError(action: SitePlatformBrakedAction): ApiHttpError;
79
+ /**
80
+ * Run a brake check for a first-party agent tool: null when it passes, else
81
+ * the refusal as a tool result (details.code site_platform_brake_engaged).
82
+ */
83
+ export declare function sitePlatformBrakeToolRefusal(check: () => Promise<void>): Promise<{
84
+ isError: true;
85
+ content: {
86
+ type: "text";
87
+ text: string;
88
+ }[];
89
+ } | null>;
90
+ /** Whether the Opengeni-wide brake is engaged (cached per process for 15 seconds). */
91
+ export declare function sitePlatformBrakeEngaged(deps: SitePlatformDeps): Promise<boolean>;
92
+ /** Refuse a braked action while the brake is engaged. A failed read never refuses. */
93
+ export declare function requireSitePlatformOpen(deps: SitePlatformDeps, action: SitePlatformBrakedAction): Promise<void>;
94
+ /**
95
+ * Re-evaluate the Opengeni-wide estimate: the month's totals of every
96
+ * workspace and the current storage level, at the configured prices. At the
97
+ * alert threshold operators are alerted once a month (a structured log line,
98
+ * `site_platform_limit_alert`; Opengeni has no operator mailer); at the limit
99
+ * the brake engages (`site_platform_brake_engaged`) unless an operator lifted
100
+ * it this month.
101
+ */
102
+ export declare function evaluateSitePlatformLimit(deps: SitePlatformDeps, now?: Date): Promise<{
103
+ estimateMicros: number;
104
+ limitMicros: number | null;
105
+ brake: SitePlatformBrakeRecord;
106
+ }>;
107
+ /**
108
+ * After usage was metered: charge it (shadow and credits modes) and, at most
109
+ * every 30 seconds per process, re-evaluate the Opengeni-wide limit in the
110
+ * background (the request does not wait for it). Never throws.
111
+ */
112
+ export declare function afterSitePlatformUsage(deps: SitePlatformDeps, scope: SitePlatformScope, usage: SitePlatformUsageRecord): Promise<void>;
113
+ export {};
@@ -0,0 +1,21 @@
1
+ import { type SitePublicationRecord } from "@opengeni/db";
2
+ import { type SitePublishingDeps } from "./service.js";
3
+ /**
4
+ * Platform moderation: the deployment operator takes a published Site down
5
+ * (or restores one it took down) by hostname or Site id, across workspaces.
6
+ * There is no platform-admin API in Opengeni, so this runs from the operator
7
+ * script (`scripts/operator/site-takedown.ts`) with the migrations
8
+ * credential. Owners and workspace admins cannot lift a platform takedown,
9
+ * and its hostname stays held for the platform even if the Site or its
10
+ * workspace is deleted (`liftSiteHostnameHold` releases it). Viewer sessions
11
+ * are revoked at once; running conversations are refused further work by
12
+ * site-runtime and end on their own usage caps (the script has no
13
+ * in-process session dispatch to cancel them).
14
+ */
15
+ export declare function moderateSiteAsPlatform(deps: SitePublishingDeps, input: {
16
+ /** A label, a full hostname, or a Site id. */
17
+ host: string;
18
+ operator: string;
19
+ action: "takedown" | "restore";
20
+ reason?: string | undefined;
21
+ }): Promise<SitePublicationRecord>;
@@ -0,0 +1,62 @@
1
+ import type { AccessGrant, SitePublishWarningFix, SiteAccessMode, SiteDataAccessMode, SiteDataGuestAccess, SitePublishWarning, SiteSqlQueryAudience } from "@opengeni/contracts";
2
+ import { type SitePublicationRecord, type SitePublishingScope } from "@opengeni/db";
3
+ import type { ApiRouteDeps } from "@opengeni/core";
4
+ import { type SiteOutsideModelChoice } from "./agent-model.js";
5
+ /** The most HTML read for the check. */
6
+ export declare const SITE_READINESS_MAX_HTML_BYTES: number;
7
+ export type SitePageUsage = {
8
+ /** Collections the page names, and how it writes them. */
9
+ collections: Map<string, {
10
+ writes: boolean;
11
+ changes: boolean;
12
+ }>;
13
+ queries: Set<string>;
14
+ workspaceTools: boolean;
15
+ };
16
+ /** What a page's source uses (see the heuristics above). */
17
+ export declare function scanSitePageUsage(source: string): SitePageUsage;
18
+ export type SiteReadinessInput = {
19
+ access: SiteAccessMode;
20
+ /** Anonymous visitors are admitted (public, and not a login-only deployment). */
21
+ guestsAllowed: boolean;
22
+ page: SitePageUsage | null;
23
+ /** The page was too large to read (SITE_READINESS_MAX_HTML_BYTES). */
24
+ pageTooLarge?: boolean;
25
+ requestedTools: number;
26
+ agent: {
27
+ enabled: boolean;
28
+ tools: readonly string[] | null;
29
+ };
30
+ collections: ReadonlyArray<{
31
+ name: string;
32
+ accessMode: SiteDataAccessMode;
33
+ guestAccess: SiteDataGuestAccess;
34
+ }>;
35
+ queries: ReadonlyArray<{
36
+ name: string;
37
+ audience: SiteSqlQueryAudience;
38
+ }>;
39
+ outsideModel: SiteOutsideModelChoice | null;
40
+ };
41
+ /** The warnings for a members-only Site are none: members may do everything the page does. */
42
+ export declare function siteReadinessWarnings(input: SiteReadinessInput): SitePublishWarning[];
43
+ export type SiteReadiness = {
44
+ warnings: SitePublishWarning[];
45
+ /** The model people outside the workspace use instead of a subscription model. */
46
+ outsideAgentModel: string | null;
47
+ };
48
+ /**
49
+ * The readiness of a publication's current version. Any read that fails
50
+ * (no storage, a missing version) leaves that part out rather than failing
51
+ * the publication view.
52
+ */
53
+ export declare function readSitePublicationReadiness(deps: Pick<ApiRouteDeps, "db" | "settings" | "objectStorage">, scope: SitePublishingScope, publication: Pick<SitePublicationRecord, "siteId" | "access" | "agent">): Promise<SiteReadiness>;
54
+ /**
55
+ * Apply a readiness warning's safe fix through the ordinary definition
56
+ * paths (the same checks as defining the collection or query by hand): a
57
+ * collection's guest access, or a named query's audience. Everything else
58
+ * about the collection or query stays as it is.
59
+ */
60
+ export declare function applySitePublishWarningFix(deps: ApiRouteDeps, grant: AccessGrant, scope: SitePublishingScope, siteId: string, fix: SitePublishWarningFix): Promise<void>;
61
+ export declare class SiteFixTargetMissing extends Error {
62
+ }
@@ -0,0 +1,179 @@
1
+ import { type Permission, type SiteLimitProfileKind, type SiteLimits, type SiteViewerCapabilities } from "@opengeni/contracts";
2
+ import { type ApiRouteDeps } from "@opengeni/core";
3
+ import { type PublishedSiteRecord, type SitePublicationRecord, type SitePublishingScope, type SiteRuntimeBudget, type SiteRuntimeBudgetLimits, type SiteRuntimeConversationRecord, type SiteRuntimeRateBucket, type SiteRuntimeReservation } from "@opengeni/db";
4
+ import type { SiteGatewayFields } from "./gateway-signature.js";
5
+ import { SITE_RUNTIME_AGENT_PERMISSIONS } from "./service.js";
6
+ import { type SiteRuntimeViewer } from "./viewer.js";
7
+ /**
8
+ * Site-runtime: the narrow API a Site gateway calls for one published Site
9
+ * host, after the gateway signature passed. Everything here works for exactly
10
+ * one Site: the host names it, the viewer is resolved for it, and the agent
11
+ * principal is `site:<siteId>`.
12
+ */
13
+ export type SiteRuntimeDeps = Pick<ApiRouteDeps, "db" | "settings" | "objectStorage">;
14
+ export type SiteRuntimeHost = {
15
+ domain: string;
16
+ label: string;
17
+ hostname: string;
18
+ scope: SitePublishingScope;
19
+ publication: SitePublicationRecord;
20
+ site: PublishedSiteRecord;
21
+ };
22
+ /** The Site behind a host, whatever its status (null when the host names no Site). */
23
+ export declare function findSiteRuntimeHost(deps: SiteRuntimeDeps, domain: string, host: string): Promise<SiteRuntimeHost | null>;
24
+ /** The Site behind a host when it is served: 404 for no Site, 410 when not served. */
25
+ export declare function requireServedSiteRuntimeHost(deps: SiteRuntimeDeps, domain: string, host: string): Promise<SiteRuntimeHost & {
26
+ versionId: string;
27
+ }>;
28
+ export declare function sha256Text(value: string): string;
29
+ /**
30
+ * Who is viewing: a live site-session of this Site whose person the Site
31
+ * still admits (membership and invitations are re-read every call), else an
32
+ * anonymous guest of a public Site, else sign-in is required.
33
+ *
34
+ * "View as visitor": a workspace member whose site-session previews another
35
+ * role is resolved as exactly that role, and only ever downgraded: `public`
36
+ * is an anonymous guest (refused where guests are not admitted), `invited`
37
+ * a signed-in person outside the workspace (refused on members-only Sites).
38
+ * A preview role on the session of anyone who is not a member is ignored, so
39
+ * it can never grant more than the person already has. `ignoreViewAs`
40
+ * resolves the real viewer (to start or end a preview).
41
+ */
42
+ export declare function resolveSiteRuntimeViewer(deps: SiteRuntimeDeps, host: SiteRuntimeHost, fields: SiteGatewayFields, options?: {
43
+ ignoreViewAs?: boolean;
44
+ }): Promise<SiteRuntimeViewer>;
45
+ /** What a viewer cannot do on a Site: 403 with `details.code` `not_available_for_viewer`. */
46
+ export type SiteViewerFeature = "agent" | "agent_model" | "workspace_tools" | "site_data" | "site_sql";
47
+ export declare function siteNotAvailableForViewer(feature: SiteViewerFeature, message: string, extra?: Record<string, unknown>): import("../http/api-error.js").ApiHttpError;
48
+ /** The viewer capabilities a page reads from `site.config` to hide what won't work. */
49
+ export declare function siteViewerCapabilities(deps: SiteRuntimeDeps, host: SiteRuntimeHost, viewer: SiteRuntimeViewer, limits: SiteLimits): SiteViewerCapabilities;
50
+ export declare function siteRuntimeLimits(deps: SiteRuntimeDeps, host: SiteRuntimeHost, viewer?: Pick<SiteRuntimeViewer, "kind">): Promise<SiteLimits>;
51
+ /**
52
+ * The limits that govern a viewer and the kind of limit profile they come
53
+ * from: workspace members are never limited by Site limits (flood brakes
54
+ * only); everyone else gets the Site's limits (siteViewerLimits). Without a
55
+ * viewer: the Site's limits.
56
+ */
57
+ export declare function siteRuntimeLimitProfile(deps: SiteRuntimeDeps, host: SiteRuntimeHost, viewer?: Pick<SiteRuntimeViewer, "kind">): Promise<{
58
+ limits: SiteLimits;
59
+ kind: SiteLimitProfileKind;
60
+ }>;
61
+ /** A guest's client address may carry this many visitors' worth of traffic. */
62
+ export declare const SITE_GUEST_IP_LIMIT_FACTOR = 4;
63
+ /**
64
+ * A viewer's per-minute bucket. Guests are also counted per signed client
65
+ * address (`ip:<address>`, `SITE_GUEST_IP_LIMIT_FACTOR` times the visitor
66
+ * limit), so minting new visitor ids does not reset their limits; both must
67
+ * pass.
68
+ */
69
+ export declare function enforceSiteRuntimeViewerRate(deps: SiteRuntimeDeps, host: SiteRuntimeHost, viewer: SiteRuntimeViewer, fields: Pick<SiteGatewayFields, "clientIp">, bucket: SiteRuntimeRateBucket, limit: number | null): Promise<void>;
70
+ /**
71
+ * The rate principal of the signed client address (`ip:unknown` when the
72
+ * gateway sent none). IPv6 addresses count per /64 (one subscriber usually
73
+ * holds a whole /64, so per-address keys would be free to rotate);
74
+ * IPv4-mapped IPv6 counts as its IPv4 address.
75
+ */
76
+ export declare function siteClientAddressPrincipal(fields: Pick<SiteGatewayFields, "clientIp">): string;
77
+ /** A client address as a rate key: IPv4 as is, IPv6 as its /64 prefix. */
78
+ export declare function siteClientAddressKey(raw: string): string;
79
+ /** Count one operation in a per-minute bucket; 429 with Retry-After past `limit` (null: no limit). */
80
+ export declare function enforceSiteRuntimeRate(deps: SiteRuntimeDeps, host: SiteRuntimeHost, principal: string, bucket: SiteRuntimeRateBucket, limit: number | null): Promise<void>;
81
+ export { SITE_RUNTIME_AGENT_PERMISSIONS };
82
+ /** A short display label for the viewer, recorded as the end user of the agent's work. */
83
+ export declare function siteRuntimeViewerLabel(viewer: SiteRuntimeViewer): string;
84
+ /** Whether this viewer may use the Site's embedded agent at all (before budgets). */
85
+ export declare function siteAgentRefusal(deps: SiteRuntimeDeps, host: SiteRuntimeHost, viewer: SiteRuntimeViewer, limits: SiteLimits): string | null;
86
+ export declare function requireSiteAgent(deps: SiteRuntimeDeps, host: SiteRuntimeHost, viewer: SiteRuntimeViewer, limits: SiteLimits): void;
87
+ /** The 429 for a refused reservation. */
88
+ export declare function siteBudgetExhausted(budget: SiteRuntimeBudget): import("../http/api-error.js").ApiHttpError;
89
+ /** Seconds a viewer waits before retrying a start or message refused as busy. */
90
+ export declare const SITE_BUDGET_BUSY_RETRY_SECONDS = 30;
91
+ /**
92
+ * The 429 when only other running conversations' reservations refuse a
93
+ * reservation: the budget has room once their spend settles, so it is worth
94
+ * retrying shortly (`site_budget_busy`, with `retryAfterSeconds`).
95
+ */
96
+ export declare function siteBudgetBusy(budget: SiteRuntimeBudget): import("../http/api-error.js").ApiHttpError;
97
+ /** The 429 for a refused reservation, busy or exhausted. */
98
+ export declare function siteReservationRefused(result: Extract<SiteRuntimeReservation, {
99
+ ok: false;
100
+ }>): import("../http/api-error.js").ApiHttpError;
101
+ /**
102
+ * The budgets a conversation start or message is reserved against. Members
103
+ * reserve nothing (their caps are all null). For everyone else a
104
+ * conversation is bounded by the per-conversation cap, else by the smallest
105
+ * spend limit that applies, so a session usage limit always holds it.
106
+ */
107
+ export declare function siteRuntimeBudgetLimits(limits: SiteLimits, settings: Pick<SiteRuntimeDeps["settings"], "sitesAgentReservationMicrosPerTurn">): SiteRuntimeBudgetLimits;
108
+ /**
109
+ * The Site-wide usage windows a viewer's conversations count in: members
110
+ * count apart (`*members`), so they never use up the Site limit.
111
+ */
112
+ export declare function siteRuntimeBudgetKey(viewer: Pick<SiteRuntimeViewer, "kind">): string;
113
+ /** Whether a refusal is a Site-wide budget (stale reservations of others may free it). */
114
+ export declare function siteWideBudget(result: SiteRuntimeReservation): boolean;
115
+ /** A conversation's session usage as read while settling. */
116
+ export type SiteConversationUsage = {
117
+ usedMicros: number;
118
+ limitMicros: number | null;
119
+ version: number;
120
+ };
121
+ /**
122
+ * Bring a conversation's counted spend up to its session usage so far and
123
+ * release what it no longer needs reserved (all of it once the session is
124
+ * idle, or when `release` says so). A start whose session never appeared is
125
+ * released entirely. A read failure leaves the counters as they are; the
126
+ * session's own usage limit still caps the conversation.
127
+ */
128
+ export declare function settleSiteRuntimeSpend(deps: SiteRuntimeDeps, host: SiteRuntimeHost, conversation: Pick<SiteRuntimeConversationRecord, "sessionId" | "admissions"> & Partial<Pick<SiteRuntimeConversationRecord, "createdAt">>, options?: {
129
+ release?: boolean;
130
+ }): Promise<SiteConversationUsage | null>;
131
+ /**
132
+ * Lift the session usage limit a Site stamped on a workspace member's
133
+ * conversation before members were kept out of Site limits: cleared only
134
+ * while it is still exactly the Site's cap (`siteCapMicros`), so a limit
135
+ * someone set on the session since is kept. Failure refuses admission; the
136
+ * caller retains its durable normalization marker and retries next time.
137
+ */
138
+ export declare function liftSiteConversationUsageLimit(deps: SiteRuntimeDeps, host: SiteRuntimeHost, sessionId: string, siteCapMicros: number, usage: SiteConversationUsage | null): Promise<void>;
139
+ /**
140
+ * Stamp only funded execution: cumulative spend plus the current reservation,
141
+ * bounded by the conversation cap. Top-ups reserve atomically before this
142
+ * raises the ceiling; reread under the reservation lock so overlapping
143
+ * admissions cannot stamp a stale larger allowance. Failure refuses work.
144
+ */
145
+ export declare function capSiteConversationUsageLimit(deps: SiteRuntimeDeps, host: SiteRuntimeHost, sessionId: string, usage: SiteConversationUsage | null): Promise<void>;
146
+ /**
147
+ * Release reservations that conversations no longer need, so a Site-wide
148
+ * budget held by finished, abandoned or long-inactive conversations frees
149
+ * up. Claims a bounded batch of likely candidates (idle sessions, starts
150
+ * whose session never appeared, reservations inactive for six hours),
151
+ * least recently visited first and each at most every 30 seconds, and
152
+ * settles each. A sweep that finds nothing pauses sweeping the Site for a
153
+ * few seconds, so refused starts in a burst cost one cheap check at most.
154
+ * Returns whether any reservation was visited.
155
+ */
156
+ export declare function sweepSiteRuntimeReservations(deps: SiteRuntimeDeps, host: SiteRuntimeHost): Promise<boolean>;
157
+ /** Usage-only metering for Site runtime events (agent spend is metered by the session itself). */
158
+ export declare function meterSiteRuntime(deps: SiteRuntimeDeps, host: SiteRuntimeHost, event: {
159
+ type: "conversation" | "sign_in" | "report";
160
+ viewer?: SiteRuntimeViewer;
161
+ }): Promise<void>;
162
+ /**
163
+ * Run an ordinary session route in this process as the Site's service
164
+ * principal (`site:<siteId>`), with a 60-second delegated token carrying only
165
+ * session permissions and the viewer as its display label. The Site and the
166
+ * served version ride along as the request's Site origin, so new sessions and
167
+ * turns record where they came from. The route authorizes as usual.
168
+ */
169
+ export declare function siteRuntimeSessionRequest(deps: SiteRuntimeDeps, host: SiteRuntimeHost & {
170
+ versionId: string;
171
+ }, viewer: SiteRuntimeViewer, input: {
172
+ origin: string;
173
+ method: string;
174
+ path: string;
175
+ body?: unknown;
176
+ extraPermissions?: readonly Permission[];
177
+ }): Promise<Request>;
178
+ /** A forwarded response without cookies (site-runtime never sets any). */
179
+ export declare function siteRuntimeForwardedResponse(response: Response): Response;