@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,53 @@
1
+ import { type ApiRouteDeps, type SiteClampedResource } from "@opengeni/core";
2
+ import type { Context, Next } from "hono";
3
+ /**
4
+ * The only writes (any method but `GET`, `HEAD` and `OPTIONS`) a
5
+ * Site-started agent may send under `/v1/workspaces/:workspaceId`, matched
6
+ * on the path after the workspace id. Every other write is refused, so a
7
+ * route family added later starts closed to it.
8
+ */
9
+ export declare const SITE_AGENT_WRITES: readonly RegExp[];
10
+ /**
11
+ * Writes open to a Site-started agent for one method only, where the same
12
+ * path also manages something. A Site's named query runs with `POST`
13
+ * (exactly what its page may call, under the query's audience; Site SQL's
14
+ * own clamp limits it to the Site the agent was started from), while `PUT`
15
+ * and `DELETE` on that path define and delete the query and stay closed, as
16
+ * does every other Site SQL route (settings, migrations, ad hoc statements,
17
+ * import and reset).
18
+ */
19
+ export declare const SITE_AGENT_METHOD_WRITES: readonly {
20
+ method: string;
21
+ pattern: RegExp;
22
+ }[];
23
+ /**
24
+ * Whether a Site-started agent may send a `method` write to `path` (before
25
+ * the Site content rule). Without a method only the path-wide allowlist
26
+ * applies.
27
+ */
28
+ export declare function siteAgentMayWrite(path: string, method?: string): boolean;
29
+ /** What a refused write to `path` names. */
30
+ export declare function siteAgentWriteResource(path: string): SiteClampedResource;
31
+ /**
32
+ * Server-side boundary for agents started from a Site page (a published
33
+ * Site, or a console frame). Such an agent acts with the page's reach: it
34
+ * does not learn and cannot widen anyone's access. Under
35
+ * `/v1/workspaces/:workspaceId` it may send only the writes in
36
+ * `SITE_AGENT_WRITES` (its tools, its conversations, files and content, and
37
+ * reads sent as POST) and `SITE_AGENT_METHOD_WRITES` (running a Site's named
38
+ * SQL queries); any other write, including `PATCH` or `DELETE` on the
39
+ * workspace itself and browser or computer sessions (which can drive the
40
+ * viewer's Chrome or screen), is refused with 403 before the route runs. It also
41
+ * changes a published Site's content only for a Site it was started from.
42
+ * Reads are unaffected, and so is every caller that is not a Site-clamped
43
+ * agent. The first-party tools that write workspace state (`knowledge_save`,
44
+ * `instruction_policy_save`, `secret_save`, `skill_save`,
45
+ * `company_profile_propose`, the Connected Machine, sandbox environment and
46
+ * fleet tools (`run_on`, `sandbox_attach`, `sandbox_swap`,
47
+ * `sandbox_provision`), the artifact tools and their siblings) check the
48
+ * same clamp themselves.
49
+ *
50
+ * Paths are matched as Hono routes them (`c.req.path`, percent-decoded), so
51
+ * an encoded segment cannot reach a route this guard did not recognize.
52
+ */
53
+ export declare function siteClampedAgentGuard(deps: ApiRouteDeps): (c: Context, next: Next) => Promise<void>;
@@ -0,0 +1,103 @@
1
+ import type { ApiRouteDeps } from "@opengeni/core";
2
+ import type { SiteDataCollectionDefinitionRequest, SiteDataDescribeResponse, SiteDataFileScope, SiteDataImportRequest, SiteDataQueryRequest, SiteDataWriteOperation } from "@opengeni/contracts";
3
+ import { type SiteDataFile, type SiteDataRecord } from "@opengeni/db";
4
+ import { type SiteDataAuthority, type SiteDataDeps, type SiteDataSurface } from "./service.js";
5
+ /** Shared Site Data operations for HTTP routes, the Site bridge and agent tools. */
6
+ export declare const SITE_DATA_EXPORT_MAX_RECORDS = 10000;
7
+ export declare const SITE_DATA_IMPORT_MAX_RECORDS = 1000;
8
+ /** CSV imports accept at most this many columns. */
9
+ export declare const SITE_DATA_IMPORT_MAX_COLUMNS = 1000;
10
+ /** CSV exports name at most this many data columns; wider data goes in one JSON column. */
11
+ export declare const SITE_DATA_EXPORT_MAX_COLUMNS = 200;
12
+ /** Exports stop adding records past this many bytes and report truncation. */
13
+ export declare const SITE_DATA_EXPORT_MAX_BYTES: number;
14
+ export declare function describeSiteData(deps: SiteDataDeps, grant: SiteDataAuthority, siteId: string): Promise<SiteDataDescribeResponse>;
15
+ export declare function defineSiteDataCollection(deps: SiteDataDeps, grant: SiteDataAuthority, siteId: string, name: string, definition: SiteDataCollectionDefinitionRequest): Promise<{
16
+ collection: import("@opengeni/db").SiteDataCollection;
17
+ created: boolean;
18
+ }>;
19
+ export declare function deleteSiteDataCollection(deps: SiteDataDeps, grant: SiteDataAuthority, siteId: string, name: string): Promise<{
20
+ deletedRecords: number;
21
+ }>;
22
+ export declare function resetSiteDataCollection(deps: SiteDataDeps, grant: SiteDataAuthority, siteId: string, name: string): Promise<{
23
+ deletedRecords: number;
24
+ }>;
25
+ export declare function querySiteData(deps: SiteDataDeps, grant: SiteDataAuthority, siteId: string, query: SiteDataQueryRequest, surface?: SiteDataSurface): Promise<import("@opengeni/db").SiteDataQueryResult>;
26
+ export declare function getSiteDataRecord(deps: SiteDataDeps, grant: SiteDataAuthority, siteId: string, request: {
27
+ collection: string;
28
+ id?: string | undefined;
29
+ key?: string | undefined;
30
+ }, surface?: SiteDataSurface): Promise<SiteDataRecord | null>;
31
+ export declare function writeSiteData(deps: SiteDataDeps, grant: SiteDataAuthority, siteId: string, operations: SiteDataWriteOperation[], surface?: SiteDataSurface): Promise<{
32
+ results: import("@opengeni/db").SiteDataWriteResultItem[];
33
+ summary: import("@opengeni/db").SiteDataWriteSummary;
34
+ }>;
35
+ /** RFC 4180 CSV: quoted fields, doubled quotes, CRLF or LF rows. */
36
+ /**
37
+ * Parse CSV text into rows (the first is the header). Optional limits stop
38
+ * parsing as soon as a row has too many cells or there are too many records,
39
+ * before any record is built.
40
+ */
41
+ export declare function parseSiteDataCsv(text: string, limits?: {
42
+ maxColumns?: number;
43
+ maxRecords?: number;
44
+ }): string[][];
45
+ export declare function siteDataCsvCell(value: unknown): string;
46
+ /**
47
+ * Turn import CSV into records: the header names dotted data paths. Column
48
+ * and row caps apply while parsing, before any record is built, and each
49
+ * record is built in one pass.
50
+ */
51
+ export declare function siteDataCsvRecords(csv: string): Record<string, unknown>[];
52
+ export declare function importSiteData(deps: SiteDataDeps, grant: SiteDataAuthority, siteId: string, collection: string, request: SiteDataImportRequest): Promise<{
53
+ imported: number;
54
+ }>;
55
+ /**
56
+ * An import's error, with how many records it had already imported. Once a
57
+ * batch committed, sending the same import again would duplicate it, so the
58
+ * error is no longer retryable and its message says what was imported.
59
+ */
60
+ export declare function siteDataImportFailure(error: unknown, imported: number): unknown;
61
+ /**
62
+ * About how much JSON a CSV becomes once parsed: its text, plus the header
63
+ * repeated as field names on every row.
64
+ */
65
+ export declare function csvValidationBytes(csv: string): number;
66
+ export declare function exportSiteData(deps: SiteDataDeps, grant: SiteDataAuthority, siteId: string, collection: string, format: "json" | "csv"): Promise<{
67
+ collection: string;
68
+ format: "json" | "csv";
69
+ records: number;
70
+ truncated: boolean;
71
+ content: string;
72
+ }>;
73
+ export declare function uploadSiteDataFile(deps: SiteDataDeps & Pick<ApiRouteDeps, "objectStorage">, grant: SiteDataAuthority, siteId: string, input: {
74
+ name: string | null | undefined;
75
+ contentType: string | null | undefined;
76
+ /**
77
+ * The file's bytes, or a reader for a request body: it is called only
78
+ * after access, the rate window and the quota (with the declared size,
79
+ * when known) have passed, so refused uploads are never read.
80
+ */
81
+ body: Uint8Array | {
82
+ declaredBytes?: number | undefined;
83
+ read: () => Promise<Uint8Array>;
84
+ };
85
+ scope?: SiteDataFileScope | undefined;
86
+ }, surface?: SiteDataSurface): Promise<SiteDataFile>;
87
+ export declare function listSiteDataFiles(deps: SiteDataDeps, grant: SiteDataAuthority, siteId: string, options: {
88
+ limit?: number;
89
+ cursor?: string | null;
90
+ }, surface?: SiteDataSurface): Promise<{
91
+ files: SiteDataFile[];
92
+ nextCursor: string | null;
93
+ }>;
94
+ export declare function getSiteDataFileUrl(deps: SiteDataDeps & Pick<ApiRouteDeps, "objectStorage">, grant: SiteDataAuthority, siteId: string, fileId: string, surface?: SiteDataSurface, audience?: "public" | "sandbox"): Promise<{
95
+ file: SiteDataFile;
96
+ url: string;
97
+ expiresAt: string;
98
+ }>;
99
+ export declare function deleteSiteDataFile(deps: SiteDataDeps & Pick<ApiRouteDeps, "objectStorage">, grant: SiteDataAuthority, siteId: string, fileId: string, surface?: SiteDataSurface): Promise<{
100
+ deleted: {
101
+ id: string;
102
+ };
103
+ }>;
@@ -0,0 +1,203 @@
1
+ import type { ApiRouteDeps } from "@opengeni/core";
2
+ import type { AccessGrant, SiteDataDescribeResponse } from "@opengeni/contracts";
3
+ import { type Database, type SiteDataCaller, type SiteDataLimits, type SiteDataSite, type SiteDataStore, type SiteDataWriteOptions, type SiteDataWriteSummary } from "@opengeni/db";
4
+ /**
5
+ * Site Data service: resolves who is calling (manager or viewer, and their
6
+ * principal), applies Site state rules, and wires validation and usage
7
+ * metering into the backend-neutral store. Every surface (HTTP, the Site
8
+ * bridge, first-party agent tools) goes through here.
9
+ */
10
+ export type SiteDataDeps = Pick<ApiRouteDeps, "db" | "settings">;
11
+ export type SiteDataAccess = {
12
+ site: SiteDataSite;
13
+ caller: SiteDataCaller;
14
+ subjectId: string | null;
15
+ store: SiteDataStore;
16
+ limits: SiteDataLimits;
17
+ writeOptions: SiteDataWriteOptions;
18
+ };
19
+ /** One store per database handle. */
20
+ export declare function siteDataStore(db: Database): SiteDataStore;
21
+ export declare function siteDataLimits(settings: ApiRouteDeps["settings"]): SiteDataLimits;
22
+ export declare function publicSiteDataLimits(limits: SiteDataLimits): SiteDataDescribeResponse["limits"];
23
+ /** Most schema nodes (objects or booleans) a collection schema may have. */
24
+ export declare const SITE_DATA_MAX_SCHEMA_NODES = 2000;
25
+ /** Most properties one object schema may name (CSV imports allow 1,000 columns). */
26
+ export declare const SITE_DATA_MAX_SCHEMA_PROPERTIES = 1000;
27
+ /** Most branches one allOf, anyOf or oneOf may have. */
28
+ export declare const SITE_DATA_MAX_SCHEMA_BRANCHES = 16;
29
+ /** Most enum values a whole collection schema may list. */
30
+ export declare const SITE_DATA_MAX_SCHEMA_ENUM_TOTAL = 500;
31
+ /** Deepest schema nesting a collection schema may have. */
32
+ export declare const SITE_DATA_MAX_SCHEMA_DEPTH = 16;
33
+ /** Most values an `enum` may list. */
34
+ export declare const SITE_DATA_MAX_SCHEMA_ENUM = 100;
35
+ /**
36
+ * Most checks a schema may run on each repeated value (an array element or an
37
+ * additional property): see siteDataSchemaRepeatedCost. A record can repeat a
38
+ * value up to about 128K times, so this bounds the cost of checking it.
39
+ */
40
+ export declare const SITE_DATA_MAX_SCHEMA_REPEATED_COST = 600;
41
+ /**
42
+ * Validators with more generated code than this run unoptimized, about four
43
+ * times slower (measured), so their repeated cost counts four times.
44
+ */
45
+ export declare const SITE_DATA_LARGE_VALIDATOR_SOURCE = 200000;
46
+ /** Every keyword a collection schema may use. */
47
+ export declare const SITE_DATA_SCHEMA_KEYWORDS: readonly string[];
48
+ /**
49
+ * The most checks a schema runs on one repeated value: an array element or an
50
+ * additional property's value, which a record can hold about 128K of. Each
51
+ * schema object costs 1, plus 1 per enum value, property and required name;
52
+ * an allOf, anyOf or oneOf branch costs 6 (a failed branch is the costliest
53
+ * check, measured). Branches apply to the same value, so their costs add;
54
+ * children apply to different values, so only the costliest counts. Per node:
55
+ *
56
+ * - all(n): the costliest value n's subtree checks, n's own value included;
57
+ * - repeated(n): the costliest value below n that sits under `items` or
58
+ * `additionalProperties`.
59
+ *
60
+ * Both are upper bounds, computed in one pass over the schema.
61
+ */
62
+ export declare function siteDataSchemaRepeatedCost(schema: unknown): number;
63
+ /**
64
+ * Walk a collection schema against the keyword allowlist, counting nodes,
65
+ * properties, enum values and depth, then bound its cost per repeated value.
66
+ * Returns the first problem, or null when the schema is supported.
67
+ */
68
+ export declare function siteDataSchemaProblem(schema: unknown): string | null;
69
+ /** Compiled validators currently cached (for tests). */
70
+ export declare function siteDataSchemaCacheSize(): number;
71
+ export declare function validateSiteDataRecord(schema: Record<string, unknown>, data: Record<string, unknown>): string | null;
72
+ /** Check a collection's JSON Schema is supported and compiles before it is stored. */
73
+ export declare function assertSiteDataSchema(schema: Record<string, unknown> | null | undefined): void;
74
+ /** Total record JSON one write, batch or import request may carry. */
75
+ export declare const SITE_DATA_MAX_REQUEST_RECORD_BYTES: number;
76
+ /**
77
+ * Schema validation time one request may spend, checked before each record
78
+ * after the first, so one record always completes.
79
+ */
80
+ export declare const SITE_DATA_VALIDATION_BUDGET_MS = 250;
81
+ /** Validation time every validating request reserves at admission. */
82
+ export declare const SITE_DATA_VALIDATION_RESERVE_BASE_MS = 25;
83
+ /** Additional reservation per byte of JSON the request validates (1 µs). */
84
+ export declare const SITE_DATA_VALIDATION_RESERVE_MS_PER_BYTE = 0.001;
85
+ /** How far a write may pass its reservation before records that grew are sent again. */
86
+ export declare const SITE_DATA_VALIDATION_RESERVE_SLACK_MS = 25;
87
+ /**
88
+ * The validation time a request reserves at admission: a base plus a little
89
+ * per byte it will validate, capped at the request budget. Small requests
90
+ * reserve little, so many can run at once; an overrun is charged when the
91
+ * request settles.
92
+ */
93
+ export declare function siteDataValidationReservationMs(bytes: number): number;
94
+ /**
95
+ * Bytes of JSON in these values, counting only until the reservation would
96
+ * reach the budget (larger requests reserve the whole budget anyway).
97
+ */
98
+ export declare function siteDataValidationBytes(values: Iterable<unknown>): number;
99
+ /** The clock validation time is measured with; tests replace `now`. */
100
+ export declare const siteDataValidationClock: {
101
+ now: () => number;
102
+ };
103
+ /** Schema compile and validation time one request spent, in milliseconds. */
104
+ export type SiteDataValidationMeter = {
105
+ ms: number;
106
+ };
107
+ /**
108
+ * Check a write, batch or import before the store takes the Site's lock:
109
+ *
110
+ * - its records total at most 4 MB of JSON (`quota_exceeded`, `request_bytes`);
111
+ * - every insert and put record matches its collection's schema;
112
+ * - every patch and increment result, merged from the stored record, matches
113
+ * too (if the record changes before the lock, the write checks it again);
114
+ * - schema compiling and validation spend at most 250 ms per request: once
115
+ * anything was compiled or checked, each later operation is refused before
116
+ * it runs when the budget is spent, and the event loop gets a turn after
117
+ * every compile or check, even for a skipped record.
118
+ *
119
+ * Every millisecond spent, here and inside the write, is added to `meter`
120
+ * for the caller to settle. Returns write options that skip re-validating
121
+ * the records already checked and keep any check left for inside the write on
122
+ * the same budget. Inside the write only this request's compiled validators
123
+ * are used: a schema that changed since is a retryable `conflict`
124
+ * (reason `schema_changed`), never a compile under the Site's lock.
125
+ *
126
+ * With `reservedMs` (what the request reserved at admission), every patch
127
+ * or increment result it checks is counted at 1 µs per byte of JSON, and one
128
+ * is refused before it is checked when the request's total would pass its
129
+ * reservation by more than 25 ms. That happens when a record grew after
130
+ * admission (a large write landing first): a retryable `conflict` (reason
131
+ * `record_grew`), so the retry reserves for its real size. A re-check inside
132
+ * the write first uses what the check before the lock already counted, so
133
+ * only real growth counts. Inserts, puts and imports carry their data at
134
+ * admission and stay on the time budget, as does a reservation already at
135
+ * the budget (a retry could not reserve more).
136
+ */
137
+ export declare function prevalidateSiteDataWrite(access: Pick<SiteDataAccess, "store" | "caller" | "limits" | "writeOptions">, operations: readonly unknown[], options?: {
138
+ budgetMs?: number;
139
+ meter?: SiteDataValidationMeter;
140
+ reservedMs?: number;
141
+ }): Promise<SiteDataWriteOptions>;
142
+ /**
143
+ * The record owner: the person, or the person an agent or schedule acts for.
144
+ * A person-less agent owns records as its scheduled task when a schedule's
145
+ * run created its session (`schedule:<taskId>`, stable across runs), and as
146
+ * its own session otherwise (`agent:session:<sessionId>`).
147
+ */
148
+ export declare function siteDataPrincipal(grant: AccessGrant, subjectId: string | null, scheduledTaskId?: string | null): string;
149
+ /** The writer recorded on records: agents are distinct from the person they act for. */
150
+ export declare function siteDataActor(grant: AccessGrant, subjectId: string | null): string;
151
+ /**
152
+ * Managers may manage the Site's data, each with `artifacts:publish`: its
153
+ * owner, a workspace admin, an agent acting for one of those people, or a
154
+ * person-less workspace API key, configured key or service credential. A Site
155
+ * without an owner is managed by its creator. An agent without a person (for
156
+ * example a person-less scheduled task) is a viewer, whatever credential
157
+ * started it. Agents whose session came from a Site page are clamped to that
158
+ * Site's viewer rules in resolveSiteDataAccess.
159
+ */
160
+ export declare function siteDataRole(grant: AccessGrant, site: Pick<SiteDataSite, "ownerSubjectId" | "createdBySubjectId">, subjectId: string | null): "manager" | "viewer";
161
+ export type SiteDataSurface = {
162
+ /** The pinned Site id a host attached to a Site-originated request. */
163
+ frameSiteId?: string | null;
164
+ /** Management surfaces: describe, define, delete, reset, import, export. */
165
+ management?: boolean;
166
+ };
167
+ /**
168
+ * A viewer of a published Site, resolved and authorized by site-runtime (the
169
+ * gateway-signed API): a signed-in person (`user:<subject>`) or an anonymous
170
+ * guest (`guest:<visitor>`). Always a framed viewer of exactly this Site;
171
+ * guests reach only what each collection's guest rule allows.
172
+ */
173
+ export type PublishedSiteDataViewer = {
174
+ kind: "published_viewer";
175
+ accountId: string;
176
+ workspaceId: string;
177
+ site: SiteDataSite;
178
+ principal: string;
179
+ guest: boolean;
180
+ };
181
+ /** Who is calling Site Data: an access grant, or a published Site viewer. */
182
+ export type SiteDataAuthority = AccessGrant | PublishedSiteDataViewer;
183
+ /**
184
+ * Resolve the Site and caller. not_found when the caller cannot see the Site
185
+ * (by audience); forbidden for an archived Site (viewers and Site frames) and
186
+ * for management by anyone but a manager outside the Site frame.
187
+ */
188
+ export declare function resolveSiteDataAccess(deps: SiteDataDeps, authority: SiteDataAuthority, siteId: string, surface?: SiteDataSurface): Promise<SiteDataAccess>;
189
+ /**
190
+ * Usage metering in `usage_only` mode (docs/credit-boundaries-rollout.md): the
191
+ * workspace pays for viewer-triggered usage; events are recorded in the write
192
+ * transaction and never debit credits until a reviewed rate is enabled. The
193
+ * workspace's Site storage level (Site SQL plus Site Data) is refreshed in
194
+ * its platform usage in the same transaction; any charge for it settles with
195
+ * the next platform usage the API meters (a Site SQL call or a gateway
196
+ * request report).
197
+ */
198
+ export declare function meterSiteData(tx: Database, grant: Pick<AccessGrant, "accountId" | "workspaceId">, caller: SiteDataCaller, subjectId: string | null, kind: "write" | "upload", summary: SiteDataWriteSummary): Promise<void>;
199
+ /** Normalize and check a declared upload type; images and PDFs must match their bytes. */
200
+ export declare function siteDataFileContentType(declared: string | null | undefined, bytes: Uint8Array): string;
201
+ export declare function siteDataFileName(name: string | null | undefined): string;
202
+ export declare function siteDataObjectKey(workspaceId: string, siteId: string, fileId: string): string;
203
+ export declare function sha256Hex(bytes: Uint8Array): string;
@@ -0,0 +1,32 @@
1
+ import { type ApiRouteDeps } from "@opengeni/core";
2
+ import type { Context, Next } from "hono";
3
+ import { ApiHttpError } from "./http/api-error.js";
4
+ /**
5
+ * Server-side boundary for requests a host forwarded from a Site frame (the
6
+ * console bridge, a Codemode preview). Hosts already hold Site code to the
7
+ * `SITE_OPERATIONS` allowlist; the API enforces it again for any request that
8
+ * carries the host's frame headers:
9
+ *
10
+ * - only allowlisted operations reach a handler;
11
+ * - Site Data only for the frame's own published Site (403, as the Site Data
12
+ * service's own frame clamp answers);
13
+ * - a session list names only the frame's own Site;
14
+ * - a per-session operation reaches only a session the same Site (or, for a
15
+ * frame without a published Site, the same mounted frame) started; anything
16
+ * else is the same 404 as a missing session;
17
+ * - a message, draft, queue or control body carries only the fields Site
18
+ * code may set (`siteFrameBodyRefusal`): text and how the model answers it.
19
+ * Approval decisions, answers to questions, resources, personal resource
20
+ * attachments, MCP credential updates, connection accounts and model
21
+ * context are refused with 403 `site_frame_field_forbidden`; the person
22
+ * gives those in the console. Session creates get the same treatment in
23
+ * the create route, which also applies the minimal Site profile;
24
+ * - a session operation runs inside its validated Site origin, so every
25
+ * session or turn it starts records which Site it came from.
26
+ *
27
+ * Ordinary handlers still authorize every allowed operation with the
28
+ * viewer's own authority.
29
+ */
30
+ export declare function siteFrameGuard(deps: ApiRouteDeps): (c: Context, next: Next) => Promise<void>;
31
+ /** 403 for a body field Site code may not send; names the field, never its value. */
32
+ export declare function siteFrameFieldForbidden(field: string): ApiHttpError;
@@ -0,0 +1,84 @@
1
+ import { type FirstPartyMcpToolName, type SiteLimitProfileKind } from "@opengeni/contracts";
2
+ import type { ApiRouteDeps } from "@opengeni/core";
3
+ import { type SiteRuntimeConversationViewerKind } from "@opengeni/db";
4
+ import type { PublishedSiteDataViewer } from "../site-data/service.js";
5
+ import { type SiteRuntimeHost } from "./runtime.js";
6
+ /**
7
+ * A published Site's own data tools for its agent. Every Site agent
8
+ * conversation (members, invited people and public visitors) gets them,
9
+ * pinned on the server to that Site and acting as the conversation's viewer:
10
+ * the same audience checks and row binding as the Site's page (per-viewer
11
+ * collections, owner binding, `:viewer` and query audiences such as
12
+ * `signed_in` or `managers`). Site management tools (publication, migrate,
13
+ * define, reset, import, export, enable, files and so on) are never given.
14
+ *
15
+ * - `site_data_query`, `site_data_write`: the Site's collections under the
16
+ * viewer's access rules (guests only what each collection's guest rule allows).
17
+ * - `site_sql_run`: the Site's named queries, when Site SQL is on.
18
+ * - `site_sql_query`: read-only statements, for workspace members only, when
19
+ * Site SQL is on.
20
+ */
21
+ export declare const SITE_AGENT_DATA_TOOLS: readonly ["site_data_query", "site_data_write"];
22
+ export declare const SITE_AGENT_SQL_TOOLS: readonly ["site_sql_run"];
23
+ export declare const SITE_AGENT_MEMBER_SQL_TOOLS: readonly ["site_sql_query"];
24
+ /** The first-party permissions those tools need (Site Data writes need publish). */
25
+ export declare const SITE_AGENT_DATA_TOOL_PERMISSIONS: readonly ["artifacts:read", "artifacts:publish"];
26
+ export declare const SITE_AGENT_OTHER_SITE_MESSAGE = "This Site's assistant can only use this Site's data";
27
+ export declare const SITE_AGENT_MANAGEMENT_MESSAGE = "This Site's assistant can use the Site's data, not manage the Site";
28
+ /** The data tools one viewer's Site agent conversation gets, within the deployment's tools. */
29
+ export declare function siteAgentDataToolNames(input: {
30
+ viewerKind: SiteRuntimeConversationViewerKind;
31
+ /** Site SQL is offered here and turned on for this Site. */
32
+ siteSql: boolean;
33
+ /** The deployment's first-party tool allowlist. */
34
+ allowed: readonly string[];
35
+ }): FirstPartyMcpToolName[];
36
+ /** Whether Site SQL is offered on this deployment and turned on for the Site. */
37
+ export declare function siteAgentSiteSqlOn(deps: Pick<ApiRouteDeps, "db" | "settings">, scope: {
38
+ accountId: string;
39
+ workspaceId: string;
40
+ }, siteId: string): Promise<boolean>;
41
+ /** The data tools for a new conversation of this viewer on this Site. */
42
+ export declare function siteAgentDataToolsForStart(deps: Pick<ApiRouteDeps, "db" | "settings">, scope: {
43
+ accountId: string;
44
+ workspaceId: string;
45
+ }, siteId: string, viewerKind: SiteRuntimeConversationViewerKind): Promise<FirstPartyMcpToolName[]>;
46
+ /** This Site's viewer (`user:<subject>` or `guest:<visitor>`) as Site Data and Site SQL see it. */
47
+ export declare function sitePublishedDataViewer(host: Pick<SiteRuntimeHost, "scope" | "site">, principal: string, guest: boolean): PublishedSiteDataViewer;
48
+ /**
49
+ * The Site agent's instructions: which Site and viewer it serves and what its
50
+ * data tools may do, then the owner's own instructions for the Site.
51
+ */
52
+ export declare function siteAgentInstructions(host: Pick<SiteRuntimeHost, "site">, viewer: {
53
+ kind: SiteRuntimeConversationViewerKind;
54
+ }, dataTools: readonly string[], ownerInstructions: string | null | undefined): string;
55
+ /** A Site agent conversation's data context: the pinned Site and the viewer it acts as. */
56
+ export type SiteAgentDataContext = {
57
+ kind: "site";
58
+ siteId: string;
59
+ viewerKind: SiteRuntimeConversationViewerKind;
60
+ viewer: PublishedSiteDataViewer;
61
+ /** The limit profile kind in force (Site SQL limits follow it). */
62
+ profileKind: SiteLimitProfileKind;
63
+ /**
64
+ * Count one write against the guest write limit (anonymous guests only);
65
+ * null when allowed, else the seconds to wait.
66
+ */
67
+ guestWrite: () => Promise<number | null>;
68
+ };
69
+ export type SiteAgentDataResolution = {
70
+ kind: "ordinary";
71
+ } | {
72
+ kind: "refused";
73
+ message: string;
74
+ } | SiteAgentDataContext;
75
+ /**
76
+ * Whether an agent session is a published Site's agent and, if so, the Site
77
+ * and viewer its data tools act for. Ordinary sessions resolve `ordinary`.
78
+ * A Site agent whose conversation, Site or publication cannot be confirmed,
79
+ * or whose member viewer has left the workspace, is refused (fail closed).
80
+ */
81
+ export declare function resolveSiteAgentDataContext(deps: Pick<ApiRouteDeps, "db" | "settings" | "objectStorage">, scope: {
82
+ accountId: string;
83
+ workspaceId: string;
84
+ }, sessionId: string): Promise<SiteAgentDataResolution>;
@@ -0,0 +1,58 @@
1
+ import type { Settings } from "@opengeni/config";
2
+ import { type OrganizationModelDefaults, type WorkspaceSessionDefaults } from "@opengeni/contracts";
3
+ import { type WorkspaceModelSelection } from "@opengeni/core";
4
+ import { type Database } from "@opengeni/db";
5
+ /**
6
+ * The model of a Site agent conversation by who the viewer is.
7
+ *
8
+ * People outside the workspace (invited people and public visitors) never
9
+ * use a subscription-billed model (a connected Codex, Claude or other
10
+ * subscription): Site limits measure real money, and visitors must not use
11
+ * up a subscription's rate limits or terms. When the Site agent's model is a
12
+ * subscription model (or the workspace default it falls back to is one),
13
+ * they get the workspace's default credit-billed model instead, chosen the
14
+ * same way as the workspace's ordinary default over the credit-billed models
15
+ * only. When the workspace has none, they are refused. Workspace members use
16
+ * the Site agent's model, subscriptions included.
17
+ */
18
+ export type SiteOutsideModelChoice =
19
+ /** The Site agent's model (or the workspace default it resolves to), not a subscription. */
20
+ {
21
+ kind: "same";
22
+ model: string;
23
+ } | {
24
+ kind: "fallback";
25
+ model: string;
26
+ } | {
27
+ kind: "unavailable";
28
+ };
29
+ /** Whether a model is billed through a subscription rather than credits. */
30
+ export declare function isSubscriptionBilledModel(selections: readonly WorkspaceModelSelection[], model: string): boolean;
31
+ /** The decision for people outside the workspace, from already-loaded selections. */
32
+ export declare function siteOutsideModelChoice(input: {
33
+ settings: Settings;
34
+ selections: readonly WorkspaceModelSelection[];
35
+ /** The Site agent's model; null uses the workspace default. */
36
+ agentModel: string | null;
37
+ workspaceDefaults: WorkspaceSessionDefaults | null;
38
+ organizationDefaults: OrganizationModelDefaults["sessionDefaults"] | null;
39
+ }): SiteOutsideModelChoice;
40
+ /** Actual catalog billing, not just provider-name heuristics, fences every admission. */
41
+ export declare function siteCreditModelIds(deps: {
42
+ db: Database;
43
+ settings: Settings;
44
+ }, scope: {
45
+ accountId: string;
46
+ workspaceId: string;
47
+ }, siteId: string): Promise<string[]>;
48
+ /** Load the workspace's model selection and decide for people outside the workspace. */
49
+ export declare function resolveSiteOutsideModel(deps: {
50
+ db: Database;
51
+ settings: Settings;
52
+ }, scope: {
53
+ accountId: string;
54
+ workspaceId: string;
55
+ }, input: {
56
+ siteId: string;
57
+ agentModel: string | null;
58
+ }): Promise<SiteOutsideModelChoice>;
@@ -0,0 +1,16 @@
1
+ import { type ApiRouteDeps } from "@opengeni/core";
2
+ import type { SiteRuntimeHost } from "./runtime.js";
3
+ import type { SiteRuntimeViewer } from "./viewer.js";
4
+ export declare const SITE_AGENT_DEFAULTS_VERSION = 1;
5
+ /**
6
+ * Before admitting more work, converge pre-redesign published-host sessions to
7
+ * the same Site-local tools as a new conversation. This is a trusted host
8
+ * upgrade, not a caller-controlled tool-policy edit. The route has already
9
+ * checked ownership, current audience, models and the retained connector set;
10
+ * each data-tool execution still resolves the live viewer independently.
11
+ *
12
+ * The session writer lock makes the config, permissions, sandbox, instructions,
13
+ * audit event and completion marker atomic. Failed writes remain retryable.
14
+ * Existing attempts keep their accepted execution policy; no turn is rewritten.
15
+ */
16
+ export declare function normalizeSiteAgentSession(deps: Pick<ApiRouteDeps, "db" | "settings" | "bus" | "objectStorage">, host: SiteRuntimeHost, viewer: SiteRuntimeViewer, sessionId: string, retainedToolIds: readonly string[]): Promise<void>;
@@ -0,0 +1,31 @@
1
+ import type { Settings } from "@opengeni/config";
2
+ /**
3
+ * Pluggable content scanning for published Sites. `none` is the default; the
4
+ * Google Web Risk scanner runs only with OPENGENI_SITES_WEB_RISK_API_KEY. A
5
+ * scan looks up the absolute URLs found in a Site's HTML when it is published
6
+ * and records findings for moderation. It never blocks publishing, and a
7
+ * disabled or failing scanner records nothing that blocks either.
8
+ */
9
+ export type SiteContentScanFinding = {
10
+ url: string;
11
+ threatTypes: string[];
12
+ };
13
+ export type SiteContentScanResult = {
14
+ status: "none" | "clean" | "flagged" | "error";
15
+ findings: SiteContentScanFinding[];
16
+ };
17
+ export type SiteContentScanner = {
18
+ readonly name: "none" | "web_risk";
19
+ scanHtml(html: string): Promise<SiteContentScanResult>;
20
+ };
21
+ /** Most distinct URLs one scan looks up (bounds cost per publish). */
22
+ export declare const SITE_SCAN_MAX_URLS = 20;
23
+ /** Distinct absolute http(s) URLs in the HTML, first seen first, at most `limit`. */
24
+ export declare function siteHtmlUrls(html: string, limit?: number): string[];
25
+ export declare const noneSiteContentScanner: SiteContentScanner;
26
+ export declare function createWebRiskSiteContentScanner(apiKey: string, options?: {
27
+ fetch?: typeof fetch;
28
+ }): SiteContentScanner;
29
+ export declare function createSiteContentScanner(settings: Pick<Settings, "sitesWebRiskApiKey">, options?: {
30
+ fetch?: typeof fetch;
31
+ }): SiteContentScanner;
@@ -0,0 +1,48 @@
1
+ import { SiteHostMapRecord } from "@opengeni/contracts";
2
+ import type { Settings } from "@opengeni/config";
3
+ /**
4
+ * Optional Cloudflare edge sync for published Sites. Postgres is the source
5
+ * of truth; the KV host map and the edge cache are rebuildable copies. With
6
+ * no Cloudflare settings every call is a no-op.
7
+ *
8
+ * Writes go through the Cloudflare REST API with plain fetch (no SDK, each
9
+ * call bounded by a 10 s timeout) and never block the database write: callers
10
+ * schedule them after commit, each is retried a few times and then logged.
11
+ * The caller reads what a hostname should hold in a short transaction under
12
+ * the hostname's lock and commits before any of these calls, so no database
13
+ * transaction or lock waits on Cloudflare; after writing it re-reads the
14
+ * hostname and writes again if it moved meanwhile. One process runs at most
15
+ * one sync per hostname at a time. A writer never replaces a newer
16
+ * generation (read, compare, write; KV has no compare-and-set, so writers in
17
+ * two processes racing within one round trip can still land out of order,
18
+ * until the entry's TTL ends it). Generations come from one database
19
+ * sequence shared by every hostname, so a later change to a label (a move,
20
+ * an unpublish tombstone, a takedown) always carries a higher generation
21
+ * than anything written before.
22
+ *
23
+ * Staleness bound: the API itself refuses a suspended or unpublished Site on
24
+ * the very next site-runtime call (it re-checks publication status and access
25
+ * every time). The edge copies lag behind: Cloudflare KV propagates a write
26
+ * to other locations within about 60 s, every KV entry expires after
27
+ * `sitesHostMapTtlSeconds` (default 300 s), and the gateway caches host
28
+ * lookups for up to 60 s and access checks for 30 s. A takedown also purges
29
+ * the host's edge cache when a zone id is configured. The after-commit sync
30
+ * runs in process, so a restart can lose a pending write; the next signed
31
+ * host lookup for that label re-syncs a stale record, and the TTL bounds the
32
+ * rest. A missed sync is therefore corrected within TTL + 60 s at worst.
33
+ */
34
+ export type SiteEdgeSyncSettings = Pick<Settings, "sitesCloudflareApiToken" | "sitesCloudflareAccountId" | "sitesCloudflareKvNamespaceId" | "sitesCloudflareZoneId" | "sitesHostMapTtlSeconds">;
35
+ export type SiteEdgeSync = {
36
+ readonly kvEnabled: boolean;
37
+ readonly purgeEnabled: boolean;
38
+ /** Write the host-map record unless the edge already holds a newer generation. */
39
+ putHostRecord(record: SiteHostMapRecord): Promise<"written" | "skipped_newer" | "disabled">;
40
+ /** Purge the edge cache for one hostname. */
41
+ purgeHost(hostname: string): Promise<"purged" | "disabled">;
42
+ };
43
+ export type SiteEdgeSyncOptions = {
44
+ fetch?: typeof fetch;
45
+ attempts?: number;
46
+ backoffMs?: number;
47
+ };
48
+ export declare function createSiteEdgeSync(settings: SiteEdgeSyncSettings, options?: SiteEdgeSyncOptions): SiteEdgeSync;