@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,42 @@
1
+ import type { MiddlewareHandler } from "hono";
2
+ /**
3
+ * A public `/v1` route whose current behaviour is scheduled for removal.
4
+ *
5
+ * See docs/design/api-compatibility-policy.md: a breaking change to the public
6
+ * surface is announced, advertised on every affected response with the
7
+ * standard `Deprecation` (RFC 9745) and `Sunset` (RFC 8594) headers plus a
8
+ * `Link: rel="deprecation"` to the migration notes, and the old behaviour is
9
+ * kept for at least 90 days on the managed service or until the next major,
10
+ * whichever is later. Published SDKs surface these headers to the integrator.
11
+ */
12
+ export type RouteDeprecation = {
13
+ /** Upper-case HTTP method. */
14
+ method: string;
15
+ /** The exact registered Hono template, e.g. `/v1/workspaces/:workspaceId/packs`. */
16
+ path: string;
17
+ /** When the deprecation was announced (ISO 8601). */
18
+ deprecatedAt: string;
19
+ /** Earliest removal on the managed service (ISO 8601). */
20
+ sunset: string;
21
+ /** Public migration notes (changelog/docs URL). */
22
+ link: string;
23
+ /** Optional successor route or document. */
24
+ successor?: string;
25
+ };
26
+ /**
27
+ * Every currently deprecated public route. Adding an entry here is the
28
+ * server-side half of a deprecation; the breaking change itself still needs an
29
+ * entry in scripts/public-api-breaking-changes.json and a new major.
30
+ */
31
+ export declare const DEPRECATED_ROUTES: readonly RouteDeprecation[];
32
+ /** Validate one registry entry; the policy's 90-day minimum is enforced here. */
33
+ export declare function assertValidRouteDeprecation(deprecation: RouteDeprecation): void;
34
+ /** The response headers that advertise one deprecation. */
35
+ export declare function deprecationHeaders(deprecation: RouteDeprecation): Record<string, string>;
36
+ /**
37
+ * Stamp deprecation headers on every response from a registered deprecated
38
+ * route, including error responses, so an integrator sees the notice whatever
39
+ * the call's outcome. Matching uses the registered route template, never
40
+ * request data.
41
+ */
42
+ export declare function deprecationHeadersMiddleware(registry?: readonly RouteDeprecation[]): MiddlewareHandler;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * One token bucket per closed key, for anonymous beacon routes. It bounds
3
+ * counter inflation and log volume from any caller without per-client state.
4
+ */
5
+ export type KeyedAdmission<Key extends string> = {
6
+ admit(key: Key): boolean;
7
+ };
8
+ export declare function createKeyedAdmission<Key extends string>(options?: {
9
+ capacity?: number;
10
+ refillPerSecond?: number;
11
+ now?: () => number;
12
+ }): KeyedAdmission<Key>;
@@ -0,0 +1,72 @@
1
+ import { type Settings } from "@opengeni/config";
2
+ /**
3
+ * Browser boundary for the unauthenticated local product mode.
4
+ *
5
+ * In `local` access mode every request without credentials acts as the local
6
+ * `dev` user, and the default local sandbox runs agent commands on the host.
7
+ * Binding the API to loopback keeps other devices out, but a web page open in
8
+ * the developer's browser can still reach `http://127.0.0.1:<port>`:
9
+ *
10
+ * - any site can send cross-origin requests to it (CORS only hides the
11
+ * response; a simple POST still runs), and
12
+ * - a DNS-rebinding site can make its own hostname resolve to 127.0.0.1 and
13
+ * read responses as a same-origin page.
14
+ *
15
+ * The boundary therefore sorts the `Host` a request is addressed to into two
16
+ * classes:
17
+ *
18
+ * - Browser hosts: loopback, the hosts of the configured web, public, and
19
+ * extra origins, the GitHub App callback tunnel, and a specific API bind
20
+ * address. A present `Origin` must be this stack's web app, an explicitly
21
+ * configured origin, or the API's own address on one of these hosts.
22
+ * - Sandbox hosts: names only sandboxes and the worker use to reach the API
23
+ * (`host.docker.internal` with the Docker sandbox, and the hosts of
24
+ * `OPENGENI_MCP_URL` and `OPENGENI_MCP_INTERNAL_URL`). They serve only the
25
+ * sandbox routes (Codemode, first-party MCP, and the Git broker) and refuse
26
+ * any request that carries browser metadata. A browser cannot tell a
27
+ * sandbox name from an attacker's, so a rebinding page on one of these
28
+ * names can neither send an accepted `Origin` nor reach the rest of the API.
29
+ *
30
+ * Every other `Host` is refused. Non-browser clients (the SDK, curl, sandbox
31
+ * callbacks, host-app servers) send no `Origin` and are unaffected. The `Host`
32
+ * port is not compared: a rebinding page controls only the hostname, while
33
+ * local proxies and forwarders legitimately present their own port.
34
+ *
35
+ * It applies only to `local` access mode in the `local` environment (the
36
+ * `bun run dev` stack and manual local runs). Managed and configured access
37
+ * modes, and deployments that set another `OPENGENI_ENVIRONMENT`, keep their
38
+ * existing CORS policy.
39
+ */
40
+ export type LocalBrowserBoundarySettings = Pick<Settings, "productAccessMode" | "environment" | "apiHost" | "webBaseUrl" | "publicBaseUrl" | "opengeniMcpUrl" | "opengeniMcpInternalUrl" | "githubAppManifestBaseUrl" | "localAllowedOrigins" | "sandboxBackend">;
41
+ export type LocalBrowserBoundaryRejectionCode = "LOCAL_HOST_NOT_ALLOWED" | "LOCAL_ORIGIN_NOT_ALLOWED" | "LOCAL_SANDBOX_ROUTE_ONLY";
42
+ export type LocalBrowserBoundaryRejection = {
43
+ status: 403;
44
+ code: LocalBrowserBoundaryRejectionCode;
45
+ message: string;
46
+ /** The refused `Host` or `Origin`, for the API log only; never sent back. */
47
+ refused: string;
48
+ };
49
+ /** Called once per distinct refused value, so an operator can see why. */
50
+ export type LocalBrowserBoundaryWarn = (message: string, attributes: Record<string, string>) => void;
51
+ export type LocalBrowserBoundary = {
52
+ readonly allowedOrigins: ReadonlySet<string>;
53
+ /** Hostnames a browser may address. */
54
+ readonly browserHostnames: ReadonlySet<string>;
55
+ /** Hostnames only sandboxes and the worker use; sandbox routes only, no browsers. */
56
+ readonly sandboxHostnames: ReadonlySet<string>;
57
+ /** Whether a present `Origin` may call the API for a request with this `Host`. */
58
+ originAllowed(origin: string, host: string | null): boolean;
59
+ /** The rejection for this request, or null when the boundary admits it. */
60
+ rejection(request: Request): LocalBrowserBoundaryRejection | null;
61
+ };
62
+ /** Mark a request the API dispatches to itself so the boundary admits it. */
63
+ export declare function markLocalInternalDispatch(request: Request): Request;
64
+ export declare function localBrowserBoundaryApplies(settings: Pick<Settings, "productAccessMode" | "environment">): boolean;
65
+ /** Build the boundary, or null when the deployment is not the local dev product. */
66
+ export declare function createLocalBrowserBoundary(settings: LocalBrowserBoundarySettings, options?: {
67
+ warn?: LocalBrowserBoundaryWarn;
68
+ }): LocalBrowserBoundary | null;
69
+ /** The standard API error envelope for a boundary rejection outside Hono. */
70
+ export declare function localBrowserBoundaryResponse(rejection: LocalBrowserBoundaryRejection): Response;
71
+ /** The `Host` the boundary checks: the header, else the request URL's authority. */
72
+ export declare function localBrowserRequestHost(request: Request): string | null;
@@ -0,0 +1,22 @@
1
+ import type { Settings } from "@opengeni/config";
2
+ import { Hono } from "hono";
3
+ type PrometheusSource = {
4
+ prometheusMetrics(): Promise<string>;
5
+ };
6
+ /** Register the Prometheus exposition route on one Hono app. */
7
+ export declare function registerPrometheusMetricsRoute(app: Hono, observability: PrometheusSource): void;
8
+ /**
9
+ * Whether the public API listener serves `GET /metrics`. A deployment that sets
10
+ * `OPENGENI_API_METRICS_PORT` moves the exposition to a dedicated internal
11
+ * listener, so an ingress that forwards every path to the API cannot publish it.
12
+ */
13
+ export declare function publicListenerServesMetrics(settings: Pick<Settings, "apiMetricsPort">): boolean;
14
+ /**
15
+ * The dedicated metrics listener: only `GET /metrics`, behind the same
16
+ * deployment-key perimeter rules as the public listener. Nothing else is
17
+ * routed here, so exposing this port to a scraper exposes nothing else.
18
+ */
19
+ export declare function createMetricsListenerApp(settings: Settings, observability: PrometheusSource): Hono;
20
+ /** Start the dedicated listener when configured; returns undefined otherwise. */
21
+ export declare function startApiMetricsListener(settings: Settings, observability: PrometheusSource): ReturnType<typeof Bun.serve> | undefined;
22
+ export {};
@@ -0,0 +1,17 @@
1
+ import { ApiHttpError } from "./api-error.js";
2
+ /**
3
+ * A resource id taken verbatim from the URL path that is not a UUID cannot
4
+ * name any row. Routes pass such ids straight to PostgreSQL, which rejects the
5
+ * cast (SQLSTATE 22P02); that is a client addressing error, so answer 404
6
+ * instead of an unhandled 500.
7
+ *
8
+ * Deliberately narrow: only a uuid-syntax failure whose rejected text is
9
+ * exactly one of this request's own path segments qualifies. A malformed UUID
10
+ * produced by server code (a stored value, a derived subject, a body field)
11
+ * does not appear as a path segment and stays a genuine 500.
12
+ *
13
+ * Typical cause: a client built against a newer API calls a literal route
14
+ * (for example `.../scheduled-tasks/attention`) that an older server does not
15
+ * have, so the literal falls through to `.../scheduled-tasks/:taskId`.
16
+ */
17
+ export declare function invalidPathIdentifierHttpError(error: unknown, pathname: string): ApiHttpError | null;
@@ -0,0 +1,16 @@
1
+ import type { Context } from "hono";
2
+ /**
3
+ * The registered Hono path template of the handler that answers this request.
4
+ *
5
+ * Hono resolves every route matching a request before the first middleware
6
+ * runs, so the metrics middleware can read the exact code-owned template (for
7
+ * example `/v1/workspaces/:workspaceId/rigs/:rigId`) without re-implementing
8
+ * routing. Templates come only from route registrations, never from request
9
+ * data, so they are a closed and bounded metric/log label set.
10
+ *
11
+ * Middleware (arity two: `(context, next)`) and global catch-alls never name a
12
+ * route; the first matched terminal handler is the one Hono dispatches to.
13
+ */
14
+ export declare function registeredHandlerRoutePath(context: Context): string | null;
15
+ /** Normalize a registered template; drop catch-alls that would name nothing. */
16
+ export declare function boundedRegisteredRouteLabel(path: string | null | undefined): string | null;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Bounded, content-free classification of a rejected (4xx/5xx) API response,
3
+ * so a refused request can be diagnosed from logs and counted per route without
4
+ * copying the response message, identifiers, or user content into telemetry.
5
+ *
6
+ * - `code` is the public `ErrorEnvelope.code` (a closed enum).
7
+ * - `reason` is `permission:<name>` when the refusal names a missing permission
8
+ * from the closed permission catalog, else the envelope's typed
9
+ * `details.code` when it is a short identifier, else `control:<code>` for a
10
+ * Connected Machine control failure, else `unclassified`.
11
+ * - `fingerprint` is a one-way hash of the message with identifiers and
12
+ * numbers normalized away. It groups identical refusals in logs; resolve it
13
+ * back to source text with `bun run scripts/resolve-rejection-fingerprint.ts`.
14
+ * It never becomes a metric label.
15
+ */
16
+ export type HttpRejectionFacts = {
17
+ code: string;
18
+ reason: string;
19
+ fingerprint?: string;
20
+ };
21
+ export declare const UNCLASSIFIED_REJECTION_REASON = "unclassified";
22
+ export declare function rejectionFingerprint(message: string): string;
23
+ /** Identifiers, quoted values, and numbers never distinguish two fingerprints. */
24
+ export declare function normalizeRejectionMessage(message: string): string;
25
+ export declare function rejectionReasonFromMessage(message: string | undefined): string | null;
26
+ /** Classify a parsed `ErrorEnvelope`-shaped body. Unknown shapes still get a code. */
27
+ export declare function httpRejectionFactsFromEnvelope(envelope: unknown, fallbackCode: string): HttpRejectionFacts;
28
+ /** Classify a thrown error that escaped the central error handler. */
29
+ export declare function httpRejectionFactsFromError(error: unknown, fallbackCode: string): HttpRejectionFacts;
30
+ /**
31
+ * Read a small JSON error body without consuming the response that is sent to
32
+ * the client. Streams, non-JSON bodies, and large bodies are never read.
33
+ */
34
+ export declare function readRejectionEnvelope(response: Response): Promise<unknown>;
@@ -0,0 +1,27 @@
1
+ import type { Context } from "hono";
2
+ import type { z } from "zod";
3
+ import { ZodError } from "zod";
4
+ import { ApiHttpError } from "./api-error.js";
5
+ /** Parse an already-read request body against its public request schema. */
6
+ export declare function parseRequestBody<Schema extends z.ZodType>(schema: Schema, body: unknown): z.output<Schema>;
7
+ /**
8
+ * Read the request body as JSON. Malformed JSON is a client error (400), never
9
+ * an unhandled `SyntaxError` 500. Other failures (body limit, aborted stream)
10
+ * keep their own mapping.
11
+ */
12
+ export declare function readRequestJson(c: Context): Promise<unknown>;
13
+ /** Read and validate a JSON request body in one step. */
14
+ export declare function parseRequestJson<Schema extends z.ZodType>(c: Context, schema: Schema): Promise<z.output<Schema>>;
15
+ /**
16
+ * Tag malformed-JSON failures of `c.req.json()` for this request. The same
17
+ * `SyntaxError` instance is rethrown so routes that already catch it keep
18
+ * their own mapping; an uncaught one becomes a 400 in `app.onError` instead of
19
+ * a 500. A `SyntaxError` from parsing stored or upstream data is never tagged.
20
+ */
21
+ export declare function tagRequestJsonParseErrors(c: Context): void;
22
+ export declare function isRequestBodyValidationError(error: unknown): error is ZodError | SyntaxError;
23
+ /**
24
+ * Public 400 for a registered request-body validation failure, naming every
25
+ * offending field (bounded) so API callers can correct the request.
26
+ */
27
+ export declare function requestBodyValidationHttpError(error: unknown): ApiHttpError | null;
@@ -1,14 +1,52 @@
1
+ import { type Settings } from "@opengeni/config";
1
2
  import type { Context } from "hono";
2
3
  declare const TRANSPORT_PEER_ADDRESS_BINDING = "opengeniTransportPeerAddress";
4
+ /** Returned when the runtime supplied no transport peer (for example an
5
+ * in-process test request). Callers treat it as one shared bucket. */
6
+ export declare const UNKNOWN_REQUEST_SOURCE_ADDRESS = "unknown";
7
+ /**
8
+ * App-owned request header carrying the server-resolved client address into
9
+ * Better Auth, which reads client addresses only from request headers. It is
10
+ * removed from every inbound request and re-stamped on managed-auth routes, so
11
+ * a caller-supplied value never reaches the auth rate limiter or session IP.
12
+ */
13
+ export declare const TRUSTED_CLIENT_ADDRESS_HEADER = "x-opengeni-trusted-client-address";
3
14
  type ApiRequestBindings = {
4
15
  [TRANSPORT_PEER_ADDRESS_BINDING]?: string | null;
5
16
  };
17
+ /** The deployment's declared proxy chain (`OPENGENI_API_TRUSTED_PROXY_*`). */
18
+ export type RequestSourceTrust = Pick<Settings, "apiTrustedProxyHops" | "apiTrustedProxyCidrs">;
6
19
  export declare function apiRequestBindingsForTransportPeer(address: string | null | undefined): ApiRequestBindings;
7
20
  /**
8
21
  * Resolve a quota/audit source from the server-owned transport peer. Forwarded
9
22
  * values are considered only when the operator declares an exact trusted proxy
10
- * hop count; the chain is then walked from the server side so caller-prepended
11
- * values cannot replace the address inserted by the trusted edge.
23
+ * hop count (`OPENGENI_API_TRUSTED_PROXY_HOPS`) and, when
24
+ * `OPENGENI_API_TRUSTED_PROXY_CIDRS` is set, only for a transport peer inside
25
+ * those ranges. Each trusted proxy must append the address of the peer that
26
+ * connected to it, or overwrite the header with the original client address;
27
+ * the chain is then walked from the server side so caller-prepended values
28
+ * cannot replace the address observed by the trusted edge. A missing, short,
29
+ * or malformed chain falls back to the transport peer.
30
+ */
31
+ export declare function trustedRequestSourceAddress(c: Context, trust: RequestSourceTrust): string;
32
+ /**
33
+ * Rate-limit key for a trusted source address. An IPv6 address keys on its
34
+ * /64, the block one subscriber normally holds and the granularity Better
35
+ * Auth applies to the same stamped address, so rotating addresses inside one
36
+ * /64 cannot mint fresh buckets. An IPv4-mapped IPv6 address (how a
37
+ * dual-stack listener reports an IPv4 peer) keys on the embedded IPv4 address
38
+ * instead of collapsing every IPv4 client into one /64. Anything else,
39
+ * including {@link UNKNOWN_REQUEST_SOURCE_ADDRESS}, is returned unchanged.
40
+ */
41
+ export declare function requestSourceRateLimitKey(address: string): string;
42
+ /** {@link trustedRequestSourceAddress} as an application rate-limit key. */
43
+ export declare function trustedRequestSourceRateLimitKey(c: Context, trust: RequestSourceTrust): string;
44
+ /**
45
+ * Replace any caller-supplied {@link TRUSTED_CLIENT_ADDRESS_HEADER}. When
46
+ * `stamp` is true the header is set to the trusted source address, so every
47
+ * Better Auth request derived from this request (direct handler calls,
48
+ * isolated provider requests, and `auth.api.*` calls built from its headers)
49
+ * keys rate limits and session records on the real client.
12
50
  */
13
- export declare function trustedRequestSourceAddress(c: Context, trustedProxyHops: number): string;
51
+ export declare function replaceTrustedClientAddressHeader(c: Context, trust: RequestSourceTrust, stamp: boolean): void;
14
52
  export {};
@@ -59,6 +59,17 @@ export type LatestWinsDelivery<T extends {
59
59
  export declare function createLatestWinsDelivery<T extends {
60
60
  sequence: number;
61
61
  }>(send: (event: T) => Promise<void>, onError: (error: unknown) => void): LatestWinsDelivery<T>;
62
+ /**
63
+ * Durable coverage for each projected frame. Storage may omit sequences on
64
+ * purpose (an archived session keeps only its readable timeline), and clients
65
+ * treat an uncovered jump as a gap to backfill. Within a page the next stored
66
+ * row bounds the gap; after the last row, `gapEnd` (when given) reads the
67
+ * race-free bound from storage.
68
+ */
69
+ export declare function coverStorageGaps(projection: {
70
+ events: SessionEvent[];
71
+ coveredThroughBySequence: ReadonlyMap<number, number>;
72
+ }, gapEnd: ((through: number) => Promise<number>) | null): Promise<Map<number, number>>;
62
73
  export declare function sseSessionStream(db: Database, bus: EventBus, workspaceId: string, sessionId: string, after: number, signal: AbortSignal, options?: SessionSseDeliveryOptions): Promise<Response>;
63
74
  export declare function replaySessionEvents(loadPage: (after: number, limit: number) => Promise<SessionEvent[]>, send: (event: SessionEvent) => Promise<void>, after: number, pageSize?: number): Promise<void>;
64
75
  export declare function sseWorkspaceControlStream(db: Database, bus: EventBus, workspaceId: string, after: number, signal: AbortSignal, options?: SseDeliveryOptions): Promise<Response>;
@@ -67,7 +78,7 @@ export type WorkspaceInteractionSseOptions = SseDeliveryOptions & {
67
78
  };
68
79
  /**
69
80
  * One HTTP connection for the two workspace-wide invalidation domains used by
70
- * every visible OpenGeni surface. Keeping these as separate HTTP/1 streams
81
+ * every visible Opengeni surface. Keeping these as separate HTTP/1 streams
71
82
  * consumes all six per-origin browser connections with only two windows and
72
83
  * starves ordinary mutations/terminal grants. The durable cursors remain
73
84
  * independent; this function only multiplexes their already-bounded SSE frames.
@@ -0,0 +1,18 @@
1
+ import type { Context, Hono } from "hono";
2
+ export type UnmatchedRoute = {
3
+ status: 404;
4
+ } | {
5
+ status: 405;
6
+ allow: string[];
7
+ };
8
+ /**
9
+ * Classify a request no registered handler can answer, BEFORE authentication
10
+ * or authorization middleware runs. Those layers otherwise turn a request for a
11
+ * route that does not exist into an authorization-shaped failure (for example
12
+ * the fail-closed session operation classifier answering a retryable 503), so
13
+ * a client probing an unknown method or path would be told to retry forever.
14
+ *
15
+ * Returns null when the request has a handler, or when classification itself
16
+ * fails (fail open: the request keeps its previous routing behavior).
17
+ */
18
+ export declare function unmatchedRoute(app: Hono, c: Context): UnmatchedRoute | null;
@@ -0,0 +1,36 @@
1
+ export declare const USER_CONTENT_SECURITY_POLICY = "default-src 'none'; img-src 'self' data: blob:; media-src 'self' data: blob:; style-src 'unsafe-inline'; sandbox";
2
+ /** Media players only; scripts stay disabled (see the module comment). */
3
+ export declare const USER_MEDIA_CONTENT_SECURITY_POLICY = "default-src 'none'; img-src 'self' data: blob:; media-src 'self' data: blob:; style-src 'unsafe-inline'; sandbox allow-same-origin";
4
+ export declare const USER_CONTENT_SECURITY_HEADERS: Readonly<{
5
+ readonly "Content-Security-Policy": "default-src 'none'; img-src 'self' data: blob:; media-src 'self' data: blob:; style-src 'unsafe-inline'; sandbox";
6
+ readonly "Cross-Origin-Resource-Policy": "same-origin";
7
+ readonly "X-Content-Type-Options": "nosniff";
8
+ }>;
9
+ /**
10
+ * True when a browser would render this type as an active document (HTML,
11
+ * XHTML, SVG, any XML dialect, or multipart replacement streams). Anything that
12
+ * is not a clean `type/subtype` token is treated as active too.
13
+ */
14
+ export declare function isActiveUserContentType(contentType: string): boolean;
15
+ /** `Content-Disposition: attachment` for active markup; inline types are unchanged. */
16
+ export declare function userContentDispositionHeaders(contentType: string, filename?: string | null): {
17
+ "Content-Disposition": string;
18
+ } | Record<string, never>;
19
+ /**
20
+ * Signed object-storage GET options for one stored object: active markup gets
21
+ * a signed `attachment` response override, so a browser that opens the URL
22
+ * downloads the bytes instead of rendering them with their stored type. The
23
+ * storage endpoint is not always a separate site (local development serves it
24
+ * from loopback, and a preview may route the bucket path on the app origin),
25
+ * so a signed URL follows the same rule as the API routes. Spread into
26
+ * `createGetUrl`; inline types add nothing.
27
+ */
28
+ export declare function userContentSignedGetUrlOptions(contentType: string, filename?: string | null): {
29
+ responseContentDisposition: string;
30
+ } | Record<string, never>;
31
+ /** True for audio and video types the browser plays in a synthesized media document. */
32
+ export declare function isPlayableMediaUserContentType(contentType: string): boolean;
33
+ /** Sandbox policy for one response; only playable media keeps its origin. */
34
+ export declare function userContentSecurityPolicy(contentType: string): string;
35
+ /** Full header set for one user-content response with the given content type. */
36
+ export declare function userContentResponseHeaders(contentType: string, filename?: string | null): Record<string, string>;
@@ -0,0 +1,41 @@
1
+ import type { Context } from "hono";
2
+ /** The RM-1 answer for legacy Variable Set routes (410) and fields (422). */
3
+ export declare function variableSetsRemovedResponse(c: Context, status: 410 | 422, fields?: readonly string[]): Response;
4
+ /** Thrown where a route cannot return directly; `app.onError` renders it. */
5
+ export declare class VariableSetsRemovedError extends Error {
6
+ readonly fields: readonly string[];
7
+ readonly name = "VariableSetsRemovedError";
8
+ constructor(fields: readonly string[]);
9
+ }
10
+ /**
11
+ * The RM-1 body for a removed-field error from a route or from core's
12
+ * `variableSetsRemovedError`, or null for any other error.
13
+ */
14
+ export declare function variableSetsRemovedErrorResponse(c: Context, error: unknown): Response | null;
15
+ /**
16
+ * Legacy selection fields that still carry a choice. Empty arrays and null
17
+ * mean "no Variable Sets" and stay accepted so old clients keep working.
18
+ */
19
+ export declare function legacyVariableSetFields(payload: unknown): string[];
20
+ /** True when the body explicitly clears a legacy selection (`null` or `[]`). */
21
+ export declare function clearsLegacyVariableSet(payload: unknown): boolean;
22
+ /**
23
+ * Drops every (empty) legacy Variable Set field so nothing downstream can act
24
+ * on one. Call after {@link legacyVariableSetFields} found none set.
25
+ */
26
+ export declare function withoutLegacyVariableSetFields(payload: unknown): unknown;
27
+ /**
28
+ * The RM-1 boundary for one JSON body: a 422 `variable_sets_removed` response
29
+ * when a legacy field still carries a choice, otherwise the body without them.
30
+ */
31
+ export declare function rejectLegacyVariableSetFields(c: Context, payload: unknown): {
32
+ response: Response;
33
+ } | {
34
+ payload: unknown;
35
+ };
36
+ /**
37
+ * Old clients send `variableSetId: null` / `environmentId: null` to mean "no
38
+ * Variable Sets". The create schema only takes the array form, so translate the
39
+ * accepted empty legacy fields to it. Call after {@link legacyVariableSetFields}.
40
+ */
41
+ export declare function withoutEmptyLegacyVariableSetFields(payload: unknown): unknown;
@@ -0,0 +1,18 @@
1
+ import { type LocalBrowserBoundary } from "./local-browser-boundary.js";
2
+ export type ApiWebSocketUpgradeRoute<Server> = {
3
+ handles(request: Request): boolean;
4
+ upgrade(request: Request, server: Server): Response | undefined;
5
+ };
6
+ export type ApiWebSocketUpgradeDispatch = {
7
+ handled: false;
8
+ } | {
9
+ handled: true;
10
+ response: Response | undefined;
11
+ };
12
+ /**
13
+ * WebSocket upgrades bypass the Hono app, so the local-mode browser boundary
14
+ * (./local-browser-boundary.ts) is applied here before a transport upgrades.
15
+ * Returns `{ handled: false }` when no transport claims the request, so the
16
+ * caller dispatches it to the app, where the boundary runs as middleware.
17
+ */
18
+ export declare function dispatchApiWebSocketUpgrade<Server>(request: Request, server: Server, routes: ReadonlyArray<ApiWebSocketUpgradeRoute<Server>>, localBrowserBoundary: LocalBrowserBoundary | null): ApiWebSocketUpgradeDispatch;