@opengeni/api-router 0.30.1 → 1.0.0

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 (436) hide show
  1. package/dist/access-grant-rls.d.ts +3 -0
  2. package/dist/admission-trace.d.ts +8 -0
  3. package/dist/api-websocket.d.ts +18 -0
  4. package/dist/app.d.ts +50 -2
  5. package/dist/app.js +12 -1
  6. package/dist/artifact-catalog-cursor.d.ts +27 -0
  7. package/dist/auth/managed-auth-attempt-context.d.ts +10 -0
  8. package/dist/auth/managed-auth-rate-limits.d.ts +167 -0
  9. package/dist/auth/managed-auth-session-adapter.d.ts +6 -0
  10. package/dist/auth/managed-auth.d.ts +102 -3
  11. package/dist/auth/managed-email.d.ts +29 -0
  12. package/dist/auth/managed-sign-in-notifications.d.ts +4 -0
  13. package/dist/auth/new-signups-gate.d.ts +23 -0
  14. package/dist/auth/organization-user-setup.d.ts +80 -0
  15. package/dist/auth/signup-funnel-metrics.d.ts +44 -0
  16. package/dist/browser-controller-authority.d.ts +1 -61
  17. package/dist/browser-ephemeral.d.ts +5 -0
  18. package/dist/browser-state-authority.d.ts +1 -27
  19. package/dist/chunk-6TZ5LG3O.js +123948 -0
  20. package/dist/chunk-6TZ5LG3O.js.map +1 -0
  21. package/dist/chunk-OGQDXVXY.js +18 -0
  22. package/dist/chunk-OGQDXVXY.js.map +1 -0
  23. package/dist/claude-subscription-account-conflicts.d.ts +1 -0
  24. package/dist/claude-subscription-account-usage.d.ts +39 -0
  25. package/dist/claude-subscription-oauth.d.ts +25 -0
  26. package/dist/claude-subscription-profile.d.ts +9 -0
  27. package/dist/claude-subscription-usage.d.ts +44 -0
  28. package/dist/claude-workspace-connection.d.ts +15 -0
  29. package/dist/codemode.d.ts +32 -1
  30. package/dist/company-brain-okf.d.ts +24 -0
  31. package/dist/connected-machine-computer-access.d.ts +11 -0
  32. package/dist/connection-ownership.d.ts +54 -0
  33. package/dist/controller-data-plane.d.ts +32 -0
  34. package/dist/editable-artifact-office-import.d.ts +7 -4
  35. package/dist/editable-artifact-source-session.d.ts +3 -0
  36. package/dist/editable-artifact-websocket.d.ts +10 -18
  37. package/dist/editable-artifact-workspace-files.d.ts +1 -1
  38. package/dist/fatal-process-boundary.d.ts +25 -0
  39. package/dist/github-access.d.ts +31 -2
  40. package/dist/http/acting-person.d.ts +24 -0
  41. package/dist/http/api-contract-compat.d.ts +19 -0
  42. package/dist/http/api-error.d.ts +27 -1
  43. package/dist/http/cors.d.ts +17 -0
  44. package/dist/http/deprecation.d.ts +42 -0
  45. package/dist/http/interaction-control-error.d.ts +13 -0
  46. package/dist/http/keyed-admission.d.ts +12 -0
  47. package/dist/http/local-browser-boundary.d.ts +72 -0
  48. package/dist/http/metrics-listener.d.ts +22 -0
  49. package/dist/http/path-identifier.d.ts +17 -0
  50. package/dist/http/registered-route-label.d.ts +16 -0
  51. package/dist/http/request-body.d.ts +27 -0
  52. package/dist/http/request-source.d.ts +52 -0
  53. package/dist/http/sse.d.ts +17 -6
  54. package/dist/http/unmatched-route.d.ts +18 -0
  55. package/dist/http/user-content.d.ts +36 -0
  56. package/dist/http/websocket-upgrade-dispatch.d.ts +18 -0
  57. package/dist/index.d.ts +10 -3
  58. package/dist/index.js +1129 -166
  59. package/dist/index.js.map +1 -1
  60. package/dist/integration-endpoint-test.d.ts +20 -0
  61. package/dist/integrations/api-integrations.d.ts +2 -2
  62. package/dist/integrations/atlassian.d.ts +29 -3
  63. package/dist/integrations/connect-authority.d.ts +1 -0
  64. package/dist/integrations/connect-callback-return.d.ts +6 -0
  65. package/dist/integrations/fiken.d.ts +16 -2
  66. package/dist/integrations/github-app-connect.d.ts +47 -0
  67. package/dist/integrations/github-installation-proof.d.ts +3 -0
  68. package/dist/integrations/github-lens-connect.d.ts +116 -0
  69. package/dist/integrations/github-skill-source.d.ts +1 -5
  70. package/dist/integrations/google-drive.d.ts +25 -0
  71. package/dist/integrations/integration-commit-authority.d.ts +13 -0
  72. package/dist/integrations/marketplace-plugin.d.ts +2691 -0
  73. package/dist/integrations/oauth-client.d.ts +178 -18
  74. package/dist/integrations/oauth-profiles.d.ts +222 -0
  75. package/dist/integrations/oauth-return-path.d.ts +1 -0
  76. package/dist/integrations/personal-github-repositories.d.ts +84 -0
  77. package/dist/integrations/personal-github.d.ts +42 -0
  78. package/dist/integrations/pr-review-provider.d.ts +22 -0
  79. package/dist/integrations/provider-oauth.d.ts +19 -1
  80. package/dist/integrations/slack-app-home.d.ts +24 -0
  81. package/dist/integrations/slack-bot.d.ts +367 -12
  82. package/dist/integrations/slack-file-upload-flow.d.ts +62 -0
  83. package/dist/integrations/slack-install.d.ts +20 -0
  84. package/dist/integrations/slack-interactions.d.ts +113 -10
  85. package/dist/integrations/slack-mrkdwn.d.ts +41 -0
  86. package/dist/integrations/slack-routing.d.ts +120 -0
  87. package/dist/integrations/slack-session-defaults.d.ts +58 -0
  88. package/dist/integrations/slack-task-file-upload.d.ts +36 -0
  89. package/dist/integrations/social-oauth.d.ts +7 -0
  90. package/dist/interaction-agent-access.d.ts +15 -0
  91. package/dist/interaction-frame-proxy.d.ts +68 -0
  92. package/dist/interaction-metrics.d.ts +2 -0
  93. package/dist/mcp/action-catalog-types.d.ts +9 -0
  94. package/dist/mcp/action-catalog.gen.d.ts +2 -0
  95. package/dist/mcp/capability-account-readiness.d.ts +7 -0
  96. package/dist/mcp/child-read-evidence.d.ts +9 -0
  97. package/dist/mcp/command-read.d.ts +24 -0
  98. package/dist/mcp/company-profile-agent-admin.d.ts +44 -0
  99. package/dist/mcp/contract-input.d.ts +11 -0
  100. package/dist/mcp/documents.d.ts +7 -5
  101. package/dist/mcp/files.d.ts +2 -2
  102. package/dist/mcp/first-party-tool-permissions.d.ts +650 -0
  103. package/dist/mcp/knowledge-entries.d.ts +5 -0
  104. package/dist/mcp/orchestration-failure-diagnostic.d.ts +43 -0
  105. package/dist/mcp/receipts.d.ts +9 -0
  106. package/dist/mcp/request-abort.d.ts +19 -0
  107. package/dist/mcp/scheduled-task-input.d.ts +1189 -0
  108. package/dist/mcp/scheduled-task-view.d.ts +22 -4
  109. package/dist/mcp/server.d.ts +255 -3
  110. package/dist/mcp/session-event-view.d.ts +94 -0
  111. package/dist/mcp/session-view.d.ts +66 -2
  112. package/dist/mcp/session-wait.d.ts +174 -0
  113. package/dist/mcp-oauth.d.ts +52 -0
  114. package/dist/model-catalog.d.ts +11 -31
  115. package/dist/observability.d.ts +3 -1
  116. package/dist/organization-mcp.d.ts +52 -0
  117. package/dist/organization-recovery-notifications.d.ts +41 -0
  118. package/dist/routes/analytics-consent.d.ts +26 -0
  119. package/dist/routes/api-integrations.d.ts +25 -0
  120. package/dist/routes/api-keys.d.ts +17 -0
  121. package/dist/routes/artifact-catalog.d.ts +6 -0
  122. package/dist/routes/automations.d.ts +19 -0
  123. package/dist/routes/billing.d.ts +49 -0
  124. package/dist/routes/browser-sessions.d.ts +71 -3
  125. package/dist/routes/claude-subscription-accounts.d.ts +3 -0
  126. package/dist/routes/claude-subscription-oauth.d.ts +3 -0
  127. package/dist/routes/client-errors.d.ts +146 -0
  128. package/dist/routes/codex.d.ts +76 -2
  129. package/dist/routes/company-brain.d.ts +3 -0
  130. package/dist/routes/company-profile.d.ts +2 -1
  131. package/dist/routes/computer-sessions.d.ts +14 -0
  132. package/dist/routes/connect.d.ts +5 -0
  133. package/dist/routes/editable-artifacts.d.ts +2 -0
  134. package/dist/routes/external-identity-links.d.ts +6 -0
  135. package/dist/routes/feedback.d.ts +3 -0
  136. package/dist/routes/files.d.ts +4 -0
  137. package/dist/routes/github-browser-pages.d.ts +12 -0
  138. package/dist/routes/github.d.ts +2 -0
  139. package/dist/routes/insights-response-cache.d.ts +10 -0
  140. package/dist/routes/insights-usage.d.ts +12 -0
  141. package/dist/routes/insights.d.ts +30 -1
  142. package/dist/routes/knowledge.d.ts +3 -0
  143. package/dist/routes/managed-auth-session-sets.d.ts +26 -0
  144. package/dist/routes/managed-onboarding.d.ts +29 -0
  145. package/dist/routes/managed-sign-in-methods.d.ts +6 -0
  146. package/dist/routes/model-connection-access.d.ts +3 -0
  147. package/dist/routes/organization-integration-policy.d.ts +3 -0
  148. package/dist/routes/organization-integrations.d.ts +6 -0
  149. package/dist/routes/organization-mcp-connections.d.ts +3 -0
  150. package/dist/routes/organization-model-providers.d.ts +3 -0
  151. package/dist/routes/organization-recovery.d.ts +19 -0
  152. package/dist/routes/organization-service-accounts.d.ts +3 -0
  153. package/dist/routes/organization-sessions.d.ts +26 -0
  154. package/dist/routes/personal-github-git-broker.d.ts +29 -0
  155. package/dist/routes/personal-github.d.ts +3 -0
  156. package/dist/routes/pr-review-github.d.ts +3 -0
  157. package/dist/routes/pr-review.d.ts +3 -0
  158. package/dist/routes/session-artifact-associations.d.ts +4 -0
  159. package/dist/routes/session-history-imports.d.ts +9 -0
  160. package/dist/routes/sessions.d.ts +44 -6
  161. package/dist/routes/skill-content.d.ts +4 -0
  162. package/dist/routes/skill-install-authority.d.ts +6 -0
  163. package/dist/routes/subscription-account-pools.d.ts +34 -0
  164. package/dist/routes/subscription-pool-access.d.ts +16 -0
  165. package/dist/routes/supergrok.d.ts +6 -1
  166. package/dist/routes/usage-allowances.d.ts +12 -0
  167. package/dist/routes/user-resource-authorities.d.ts +3 -0
  168. package/dist/routes/workspace-artifacts.d.ts +2 -1
  169. package/dist/routes/workspace-capture.d.ts +10 -2
  170. package/dist/routes/workspace-integrations.d.ts +35 -0
  171. package/dist/routes/workspace-learning.d.ts +3 -0
  172. package/dist/routes/workspace-model-providers.d.ts +4 -0
  173. package/dist/routes/workspaces.d.ts +29 -0
  174. package/dist/sandbox/auth-callout.d.ts +8 -0
  175. package/dist/sandbox/channel-a.d.ts +19 -1
  176. package/dist/sandbox/connection-authority.d.ts +3 -0
  177. package/dist/sandbox/enrollment.d.ts +9 -1
  178. package/dist/sandbox/machines.d.ts +5 -2
  179. package/dist/sandbox/metrics-ingestion.d.ts +28 -20
  180. package/dist/sandbox/rematerialize.d.ts +2 -0
  181. package/dist/sandbox/session-attach-variable-sets.d.ts +30 -0
  182. package/dist/sandbox/viewer.d.ts +26 -1
  183. package/dist/sandbox-file-artifacts.d.ts +50 -0
  184. package/dist/scheduled-task-deletion.d.ts +13 -0
  185. package/dist/session-create-observability.d.ts +5 -0
  186. package/dist/session-event-view-MPS2OZD3.js +292 -0
  187. package/dist/session-event-view-MPS2OZD3.js.map +1 -0
  188. package/dist/site-session-origin.d.ts +13 -0
  189. package/dist/site-uploads.d.ts +41 -0
  190. package/dist/slack-reaction-files.d.ts +1 -1
  191. package/dist/temporal-schedule-cleanup.d.ts +1 -0
  192. package/dist/temporal-schedule-sync.d.ts +26 -0
  193. package/dist/transcription/providers/xai-subscription.d.ts +1 -0
  194. package/dist/transcription/service.d.ts +2 -1
  195. package/dist/work-discovery-observability.d.ts +33 -0
  196. package/dist/workspace-artifact-content.d.ts +28 -0
  197. package/dist/workspace-artifact-provenance.d.ts +7 -0
  198. package/dist/workspace-delete-observability.d.ts +10 -0
  199. package/dist/workspace-deletion.d.ts +6 -0
  200. package/dist/workspace-state-projection.d.ts +3 -5
  201. package/dist/workspace-tool-gateway-observability.d.ts +17 -0
  202. package/dist/workspace-tool-gateway.d.ts +123 -0
  203. package/dist/workspace-webhook-dispatch.d.ts +26 -0
  204. package/package.json +23 -19
  205. package/src/access-grant-rls.ts +75 -0
  206. package/src/admission-trace.ts +14 -0
  207. package/src/api-websocket.ts +23 -0
  208. package/src/app.ts +1974 -256
  209. package/src/artifact-catalog-cursor.ts +60 -0
  210. package/src/auth/managed-auth-attempt-context.ts +70 -0
  211. package/src/auth/managed-auth-rate-limits.ts +252 -0
  212. package/src/auth/managed-auth-session-adapter.ts +222 -0
  213. package/src/auth/managed-auth.ts +536 -60
  214. package/src/auth/managed-email.ts +174 -0
  215. package/src/auth/managed-sign-in-notifications.ts +81 -0
  216. package/src/auth/new-signups-gate.ts +49 -0
  217. package/src/auth/organization-user-setup.ts +307 -0
  218. package/src/auth/signup-funnel-metrics.ts +164 -0
  219. package/src/browser-controller-authority.ts +1 -186
  220. package/src/browser-ephemeral.ts +39 -0
  221. package/src/browser-state-authority.ts +1 -236
  222. package/src/claude-subscription-account-conflicts.ts +12 -0
  223. package/src/claude-subscription-account-usage.ts +48 -0
  224. package/src/claude-subscription-oauth.ts +362 -0
  225. package/src/claude-subscription-profile.ts +73 -0
  226. package/src/claude-subscription-usage.ts +97 -0
  227. package/src/claude-workspace-connection.ts +82 -0
  228. package/src/codemode.ts +194 -30
  229. package/src/codex-realtime.ts +8 -2
  230. package/src/company-brain-okf.ts +340 -0
  231. package/src/connected-machine-computer-access.ts +33 -0
  232. package/src/connection-ownership.ts +199 -0
  233. package/src/controller-data-plane.ts +81 -0
  234. package/src/editable-artifact-native-kernel.ts +26 -15
  235. package/src/editable-artifact-office-import.ts +77 -9
  236. package/src/editable-artifact-production.ts +23 -7
  237. package/src/editable-artifact-source-session.ts +123 -0
  238. package/src/editable-artifact-websocket.ts +27 -21
  239. package/src/editable-artifact-workspace-files.ts +31 -6
  240. package/src/fatal-process-boundary.ts +246 -0
  241. package/src/gateway-realtime.ts +1 -1
  242. package/src/github-access.ts +147 -5
  243. package/src/http/acting-person.ts +71 -0
  244. package/src/http/api-contract-compat.ts +49 -0
  245. package/src/http/api-error.ts +115 -1
  246. package/src/http/auth.ts +48 -0
  247. package/src/http/cors.ts +67 -0
  248. package/src/http/deprecation.ts +118 -0
  249. package/src/http/interaction-control-error.ts +164 -0
  250. package/src/http/keyed-admission.ts +29 -0
  251. package/src/http/local-browser-boundary.ts +343 -0
  252. package/src/http/metrics-listener.ts +57 -0
  253. package/src/http/path-identifier.ts +54 -0
  254. package/src/http/registered-route-label.ts +34 -0
  255. package/src/http/request-body.ts +127 -0
  256. package/src/http/request-source.ts +178 -0
  257. package/src/http/sse.ts +486 -132
  258. package/src/http/unmatched-route.ts +60 -0
  259. package/src/http/user-content.ts +158 -0
  260. package/src/http/websocket-upgrade-dispatch.ts +29 -0
  261. package/src/index.ts +157 -52
  262. package/src/integration-endpoint-test.ts +291 -0
  263. package/src/integrations/api-integrations.ts +98 -11
  264. package/src/integrations/atlassian.ts +474 -136
  265. package/src/integrations/connect-authority.ts +2 -0
  266. package/src/integrations/connect-callback-return.ts +86 -0
  267. package/src/integrations/fiken.ts +354 -64
  268. package/src/integrations/github-app-connect.ts +435 -0
  269. package/src/integrations/github-installation-proof.ts +60 -0
  270. package/src/integrations/github-lens-connect.ts +76 -0
  271. package/src/integrations/github-skill-source.ts +2 -142
  272. package/src/integrations/google-drive.ts +820 -222
  273. package/src/integrations/integration-commit-authority.ts +69 -0
  274. package/src/integrations/marketplace-plugin.ts +48 -0
  275. package/src/integrations/oauth-client.ts +1356 -459
  276. package/src/integrations/oauth-profiles.ts +537 -0
  277. package/src/integrations/oauth-return-path.ts +18 -0
  278. package/src/integrations/personal-github-repositories.ts +674 -0
  279. package/src/integrations/personal-github.ts +825 -0
  280. package/src/integrations/pr-review-provider.ts +246 -0
  281. package/src/integrations/provider-oauth.ts +250 -22
  282. package/src/integrations/slack-app-home.ts +300 -0
  283. package/src/integrations/slack-bot.ts +963 -239
  284. package/src/integrations/slack-file-upload-flow.ts +147 -0
  285. package/src/integrations/slack-install.ts +83 -0
  286. package/src/integrations/slack-interactions.ts +3170 -474
  287. package/src/integrations/slack-mrkdwn.ts +193 -0
  288. package/src/integrations/slack-routing.ts +337 -0
  289. package/src/integrations/slack-session-defaults.ts +224 -0
  290. package/src/integrations/slack-task-file-upload.ts +323 -0
  291. package/src/integrations/social-oauth.ts +213 -15
  292. package/src/interaction-agent-access.ts +48 -0
  293. package/src/interaction-frame-proxy.ts +409 -0
  294. package/src/interaction-metrics.ts +30 -0
  295. package/src/mcp/action-catalog-types.ts +9 -0
  296. package/src/mcp/action-catalog.gen.ts +6696 -0
  297. package/src/mcp/capability-account-readiness.ts +17 -0
  298. package/src/mcp/child-read-evidence.ts +19 -0
  299. package/src/mcp/command-read.ts +109 -0
  300. package/src/mcp/company-profile-agent-admin.ts +198 -0
  301. package/src/mcp/contract-input.ts +141 -0
  302. package/src/mcp/documents.ts +65 -377
  303. package/src/mcp/editable-artifacts.ts +12 -6
  304. package/src/mcp/files.ts +80 -38
  305. package/src/mcp/first-party-tool-permissions.ts +305 -0
  306. package/src/mcp/knowledge-entries.ts +322 -0
  307. package/src/mcp/orchestration-failure-diagnostic.ts +43 -0
  308. package/src/mcp/receipts.ts +34 -0
  309. package/src/mcp/request-abort.ts +44 -0
  310. package/src/mcp/scheduled-task-input.ts +76 -0
  311. package/src/mcp/scheduled-task-view.ts +44 -3
  312. package/src/mcp/server.ts +3030 -1267
  313. package/src/mcp/session-event-view.ts +383 -0
  314. package/src/mcp/session-view.ts +84 -3
  315. package/src/mcp/session-wait.ts +665 -0
  316. package/src/mcp-oauth.ts +1123 -0
  317. package/src/model-catalog.ts +91 -333
  318. package/src/observability.ts +15 -1
  319. package/src/organization-mcp.ts +397 -0
  320. package/src/organization-recovery-notifications.ts +103 -0
  321. package/src/routes/analytics-consent.ts +123 -0
  322. package/src/routes/api-integrations.ts +364 -74
  323. package/src/routes/api-keys.ts +336 -10
  324. package/src/routes/artifact-catalog.ts +279 -0
  325. package/src/routes/automations.ts +768 -0
  326. package/src/routes/billing.ts +461 -46
  327. package/src/routes/browser-sessions.ts +839 -131
  328. package/src/routes/canonical-human-identities.ts +90 -14
  329. package/src/routes/capabilities.ts +107 -6
  330. package/src/routes/channels.ts +20 -3
  331. package/src/routes/claude-subscription-accounts.ts +334 -0
  332. package/src/routes/claude-subscription-oauth.ts +142 -0
  333. package/src/routes/client-errors.ts +362 -0
  334. package/src/routes/codex.ts +833 -116
  335. package/src/routes/company-brain.ts +322 -0
  336. package/src/routes/company-profile.ts +65 -1
  337. package/src/routes/computer-sessions.ts +557 -106
  338. package/src/routes/connect.ts +1938 -0
  339. package/src/routes/connections.ts +1040 -349
  340. package/src/routes/documents.ts +488 -287
  341. package/src/routes/editable-artifacts.ts +79 -9
  342. package/src/routes/enrollments.ts +135 -39
  343. package/src/routes/environments.ts +154 -58
  344. package/src/routes/external-identity-links.ts +201 -0
  345. package/src/routes/feedback.ts +113 -0
  346. package/src/routes/files.ts +337 -39
  347. package/src/routes/github-browser-pages.ts +162 -0
  348. package/src/routes/github.ts +446 -144
  349. package/src/routes/insights-response-cache.ts +83 -0
  350. package/src/routes/insights-usage.ts +345 -0
  351. package/src/routes/insights.ts +153 -19
  352. package/src/routes/install.ts +133 -38
  353. package/src/routes/integration-facets.ts +107 -33
  354. package/src/routes/interaction-resources.ts +30 -3
  355. package/src/routes/knowledge.ts +488 -0
  356. package/src/routes/machines.ts +313 -15
  357. package/src/routes/managed-auth-session-sets.ts +1218 -0
  358. package/src/routes/managed-onboarding.ts +337 -0
  359. package/src/routes/managed-sign-in-methods.ts +433 -0
  360. package/src/routes/memory-slack-publications.ts +3 -2
  361. package/src/routes/model-connection-access.ts +208 -0
  362. package/src/routes/organization-integration-policy.ts +116 -0
  363. package/src/routes/organization-integrations.ts +326 -0
  364. package/src/routes/organization-mcp-connections.ts +178 -0
  365. package/src/routes/organization-memberships.ts +1019 -27
  366. package/src/routes/organization-model-providers.ts +293 -0
  367. package/src/routes/organization-recovery.ts +325 -0
  368. package/src/routes/organization-service-accounts.ts +128 -0
  369. package/src/routes/organization-sessions.ts +350 -0
  370. package/src/routes/personal-github-git-broker.ts +785 -0
  371. package/src/routes/personal-github.ts +370 -0
  372. package/src/routes/plugins.ts +251 -22
  373. package/src/routes/pr-review-github.ts +881 -0
  374. package/src/routes/pr-review.ts +622 -0
  375. package/src/routes/preference-registry.ts +12 -93
  376. package/src/routes/rigs.ts +167 -50
  377. package/src/routes/scheduled-tasks.ts +346 -41
  378. package/src/routes/session-artifact-associations.ts +87 -0
  379. package/src/routes/session-history-imports.ts +280 -0
  380. package/src/routes/sessions.ts +2306 -264
  381. package/src/routes/skill-content.ts +297 -0
  382. package/src/routes/skill-install-authority.ts +64 -0
  383. package/src/routes/skills.ts +62 -9
  384. package/src/routes/social.ts +46 -18
  385. package/src/routes/subscription-account-pools.ts +436 -0
  386. package/src/routes/subscription-pool-access.ts +126 -0
  387. package/src/routes/supergrok.ts +219 -303
  388. package/src/routes/transcription-recordings.ts +38 -3
  389. package/src/routes/transcriptions.ts +4 -0
  390. package/src/routes/usage-allowances.ts +378 -0
  391. package/src/routes/user-resource-authorities.ts +138 -0
  392. package/src/routes/video-generation.ts +14 -10
  393. package/src/routes/workspace-artifacts.ts +275 -69
  394. package/src/routes/workspace-capture.ts +21 -0
  395. package/src/routes/workspace-integrations.ts +576 -0
  396. package/src/routes/workspace-learning.ts +159 -0
  397. package/src/routes/workspace-model-providers.ts +148 -0
  398. package/src/routes/workspace-state.ts +38 -25
  399. package/src/routes/workspaces.ts +1004 -127
  400. package/src/sandbox/auth-callout.ts +96 -19
  401. package/src/sandbox/channel-a.ts +323 -24
  402. package/src/sandbox/connection-authority.ts +3 -0
  403. package/src/sandbox/enrollment.ts +81 -6
  404. package/src/sandbox/machines.ts +218 -76
  405. package/src/sandbox/metrics-ingestion.ts +411 -62
  406. package/src/sandbox/rematerialize.ts +121 -19
  407. package/src/sandbox/session-attach-variable-sets.ts +131 -0
  408. package/src/sandbox/viewer.ts +280 -25
  409. package/src/sandbox-file-artifacts.ts +413 -0
  410. package/src/scheduled-task-deletion.ts +138 -0
  411. package/src/session-create-observability.ts +46 -0
  412. package/src/session-realtime-context.ts +6 -3
  413. package/src/site-session-origin.ts +48 -0
  414. package/src/site-uploads.ts +224 -0
  415. package/src/slack-reaction-files.ts +16 -5
  416. package/src/temporal-schedule-cleanup.ts +13 -0
  417. package/src/temporal-schedule-sync.ts +74 -0
  418. package/src/transcription/providers/codex-subscription.ts +2 -0
  419. package/src/transcription/providers/openai.ts +1 -0
  420. package/src/transcription/providers/xai-subscription.ts +49 -3
  421. package/src/transcription/segmenter.ts +8 -2
  422. package/src/transcription/service.ts +43 -6
  423. package/src/work-discovery-observability.ts +121 -0
  424. package/src/workspace-artifact-content.ts +144 -0
  425. package/src/workspace-artifact-provenance.ts +104 -0
  426. package/src/workspace-delete-observability.ts +75 -0
  427. package/src/workspace-deletion.ts +73 -0
  428. package/src/workspace-state-projection.ts +18 -148
  429. package/src/workspace-tool-gateway-observability.ts +100 -0
  430. package/src/workspace-tool-gateway.ts +870 -0
  431. package/src/workspace-webhook-dispatch.ts +190 -0
  432. package/src/xai-subscription-auth.ts +9 -2
  433. package/dist/chunk-2PQMSRCB.js +0 -49759
  434. package/dist/chunk-2PQMSRCB.js.map +0 -1
  435. package/dist/routes/packs.d.ts +0 -3
  436. package/src/routes/packs.ts +0 -729
@@ -1,4 +1,5 @@
1
1
  import type { Settings } from "@opengeni/config";
2
+ import { parseWorkspaceArchiveObjectRef } from "@opengeni/contracts";
2
3
  import {
3
4
  adoptLegacyModalCheckpointArtifact,
4
5
  beginSandboxRematerialization,
@@ -6,6 +7,7 @@ import {
6
7
  failSandboxRematerialization,
7
8
  failWarmingToCold,
8
9
  markSandboxRestoreVerifying,
10
+ sessionHoldsFreshWorkspaceRecovery,
9
11
  recordWarmingSandboxCreated,
10
12
  SandboxLeaseRecoveryBlockedError,
11
13
  SandboxLeaseSupersededError,
@@ -13,6 +15,7 @@ import {
13
15
  type LeaseSnapshot,
14
16
  } from "@opengeni/db";
15
17
  import {
18
+ inlineWorkspaceArchiveForRestore,
16
19
  describeLegacyNativeSnapshotArchive,
17
20
  establishSandboxSessionFromEnvelope,
18
21
  isProviderSandboxNotFoundError,
@@ -30,17 +33,68 @@ import {
30
33
  type EstablishedSandboxSession,
31
34
  type WorkspaceArchiveDescriptor,
32
35
  } from "@opengeni/runtime/sandbox";
36
+ import {
37
+ downloadWorkspaceArchiveSpool,
38
+ WorkspaceArchiveStorageError,
39
+ type ObjectStorage,
40
+ } from "@opengeni/storage";
33
41
 
34
42
  function hasWorkspaceArchive(envelope: Record<string, unknown> | null): boolean {
35
43
  const sessionState =
36
- envelope?.sessionState && typeof envelope.sessionState === "object"
44
+ envelope?.sessionState &&
45
+ typeof envelope.sessionState === "object" &&
46
+ !Array.isArray(envelope.sessionState)
37
47
  ? (envelope.sessionState as Record<string, unknown>)
38
48
  : null;
39
49
  return (
40
- typeof sessionState?.workspaceArchive === "string" && sessionState.workspaceArchive.length > 0
50
+ (typeof sessionState?.workspaceArchive === "string" &&
51
+ sessionState.workspaceArchive.length > 0) ||
52
+ parseWorkspaceArchiveObjectRef(sessionState?.workspaceArchiveRef) !== null
41
53
  );
42
54
  }
43
55
 
56
+ async function materializeArchiveObjectRef(
57
+ envelope: Record<string, unknown> | null,
58
+ objectStorage: ObjectStorage | null | undefined,
59
+ ): Promise<Record<string, unknown> | null> {
60
+ if (!envelope) return null;
61
+ const sessionState =
62
+ envelope.sessionState &&
63
+ typeof envelope.sessionState === "object" &&
64
+ !Array.isArray(envelope.sessionState)
65
+ ? (envelope.sessionState as Record<string, unknown>)
66
+ : null;
67
+ if (!sessionState) return envelope;
68
+ if (sessionState.workspaceArchiveRef == null) return envelope;
69
+ if (!parseWorkspaceArchiveObjectRef(sessionState.workspaceArchiveRef)) {
70
+ throw new WorkspaceArchiveIntegrityError(
71
+ "archive_metadata_invalid",
72
+ "workspace archive object reference is malformed",
73
+ );
74
+ }
75
+ if (!objectStorage) {
76
+ throw new WorkspaceArchiveIntegrityError(
77
+ "archive_storage_unavailable",
78
+ "workspace archive object storage is not configured",
79
+ { retryable: true },
80
+ );
81
+ }
82
+ const descriptor = parseWorkspaceArchiveDescriptor(sessionState.workspaceArchiveMeta);
83
+ if (
84
+ process.platform === "linux" &&
85
+ descriptor?.version === 1 &&
86
+ descriptor.workspace.projection === "sdk_local_archive_v1"
87
+ ) {
88
+ return envelope;
89
+ }
90
+ return {
91
+ ...envelope,
92
+ sessionState: await inlineWorkspaceArchiveForRestore(sessionState, (key) =>
93
+ objectStorage.getObjectBytes(key),
94
+ ),
95
+ };
96
+ }
97
+
44
98
  function legacyNativeArchiveFromEnvelope(envelope: Record<string, unknown> | null) {
45
99
  const sessionState =
46
100
  envelope?.sessionState && typeof envelope.sessionState === "object"
@@ -82,14 +136,31 @@ export async function establishApiSandboxSpawner(input: {
82
136
  acquiredLease: LeaseSnapshot;
83
137
  fallbackEnvelope: Record<string, unknown> | null;
84
138
  dataPlaneUrl: string | null;
139
+ objectStorage?: ObjectStorage | null;
85
140
  }): Promise<{ established: EstablishedSandboxSession; lease: LeaseSnapshot }> {
141
+ // An audited decision to continue a definitively lost workspace on a new
142
+ // EMPTY box: hydrate nothing, including a per-session legacy archive, and
143
+ // never resume a prior provider identity. Commit verifies the decision.
144
+ const freshWorkspaceRecoveryId = input.acquiredLease.freshWorkspaceRecoveryId ?? null;
145
+ // Backstop: a session already told its workspace is empty never gets a
146
+ // legacy per-session archive back, even if the lease marker was lost.
147
+ const legacyFallbackRefused =
148
+ !freshWorkspaceRecoveryId &&
149
+ input.acquiredLease.recovery.archive.status === "none" &&
150
+ hasWorkspaceArchive(input.fallbackEnvelope) &&
151
+ (await sessionHoldsFreshWorkspaceRecovery(input.db, input.workspaceId, input.sessionId));
86
152
  const fallbackArchiveEnvelope =
153
+ !freshWorkspaceRecoveryId &&
154
+ !legacyFallbackRefused &&
87
155
  input.acquiredLease.recovery.archive.status === "none" &&
88
156
  hasWorkspaceArchive(input.fallbackEnvelope)
89
157
  ? withoutSandboxProviderIdentity(input.fallbackEnvelope)
90
158
  : null;
91
- let spawnEnvelope =
92
- fallbackArchiveEnvelope ?? input.acquiredLease.resumeState ?? input.fallbackEnvelope;
159
+ let spawnEnvelope = freshWorkspaceRecoveryId
160
+ ? null
161
+ : legacyFallbackRefused
162
+ ? (input.acquiredLease.resumeState ?? null)
163
+ : (fallbackArchiveEnvelope ?? input.acquiredLease.resumeState ?? input.fallbackEnvelope);
93
164
  const archiveSource =
94
165
  input.acquiredLease.recovery.archive.status === "none"
95
166
  ? fallbackArchiveEnvelope
@@ -108,9 +179,12 @@ export async function establishApiSandboxSpawner(input: {
108
179
  const continuityRecovery = input.acquiredLease.recovery.continuity;
109
180
  try {
110
181
  if (
111
- (input.acquiredLease.recovery.archive.status === "available" &&
112
- input.acquiredLease.archiveComplete) ||
113
- (input.acquiredLease.recovery.archive.status === "none" && hasWorkspaceArchive(archiveSource))
182
+ !freshWorkspaceRecoveryId &&
183
+ ((input.acquiredLease.recovery.archive.status === "available" &&
184
+ (input.acquiredLease.archiveComplete ||
185
+ input.acquiredLease.historicalRecoveryAuthorized === true)) ||
186
+ (input.acquiredLease.recovery.archive.status === "none" &&
187
+ hasWorkspaceArchive(archiveSource)))
114
188
  ) {
115
189
  const id = crypto.randomUUID();
116
190
  const legacyNativeArchive = legacyNativeArchiveFromEnvelope(archiveSource);
@@ -153,7 +227,11 @@ export async function establishApiSandboxSpawner(input: {
153
227
  legacyCheckpoint: begun.checkpointArtifact === null ? legacyNativeArchive : null,
154
228
  legacyProviderBinding: null,
155
229
  };
156
- } else if (input.acquiredLease.recovery.archive.status !== "none" && !continuityRecovery) {
230
+ } else if (
231
+ !freshWorkspaceRecoveryId &&
232
+ input.acquiredLease.recovery.archive.status !== "none" &&
233
+ !continuityRecovery
234
+ ) {
157
235
  throw new SandboxLeaseRecoveryBlockedError(
158
236
  input.sandboxGroupId,
159
237
  input.expectedEpoch,
@@ -162,10 +240,32 @@ export async function establishApiSandboxSpawner(input: {
162
240
  );
163
241
  }
164
242
 
243
+ const hydrateEnvelope = await materializeArchiveObjectRef(spawnEnvelope, input.objectStorage);
244
+
165
245
  const providerCreateStartedAt = new Date();
166
- established = await establishSandboxSessionFromEnvelope(input.settings, spawnEnvelope, {
246
+ established = await establishSandboxSessionFromEnvelope(input.settings, hydrateEnvelope, {
167
247
  sessionId: input.sessionId,
168
248
  recovery: "create-or-restore",
249
+ ...(input.objectStorage
250
+ ? {
251
+ loadHostWorkspaceArchive: async (ref) => {
252
+ try {
253
+ return await downloadWorkspaceArchiveSpool(input.objectStorage!, ref.key, {
254
+ bytes: ref.bytes,
255
+ sha256: ref.sha256,
256
+ });
257
+ } catch (error) {
258
+ if (error instanceof WorkspaceArchiveStorageError) {
259
+ throw new WorkspaceArchiveIntegrityError(error.code, error.message, {
260
+ retryable: error.retryable,
261
+ cause: error,
262
+ });
263
+ }
264
+ throw error;
265
+ }
266
+ },
267
+ }
268
+ : {}),
169
269
  backendOverride: input.backend as never,
170
270
  environment: input.environment,
171
271
  onSandboxCreated: async (created) => {
@@ -308,16 +408,18 @@ export async function establishApiSandboxSpawner(input: {
308
408
  dataPlaneUrl: input.dataPlaneUrl,
309
409
  resumeBackendId: established.backendId,
310
410
  resumeState,
311
- ...(established.providerContinuity
312
- ? { continuityRecovery: established.providerContinuity }
313
- : rematerialization
314
- ? {
315
- rematerialization: {
316
- id: rematerialization.id,
317
- verifiedRevision: rematerialization.selectedRevision,
318
- },
319
- }
320
- : {}),
411
+ ...(freshWorkspaceRecoveryId
412
+ ? { freshWorkspace: { operationId: freshWorkspaceRecoveryId } }
413
+ : established.providerContinuity
414
+ ? { continuityRecovery: established.providerContinuity }
415
+ : rematerialization
416
+ ? {
417
+ rematerialization: {
418
+ id: rematerialization.id,
419
+ verifiedRevision: rematerialization.selectedRevision,
420
+ },
421
+ }
422
+ : {}),
321
423
  leaseTtlMs: input.settings.sandboxLeaseTtlMs,
322
424
  });
323
425
  if (!committed.committed || !committed.lease) {
@@ -0,0 +1,131 @@
1
+ import type { Settings } from "@opengeni/config";
2
+ import {
3
+ getScheduledScopedRigVersionMetadata,
4
+ loadWorkspaceEnvironmentForRun,
5
+ nestedPostgresSqlState,
6
+ type Database,
7
+ } from "@opengeni/db";
8
+ import { ApiHttpError } from "../http/api-error";
9
+
10
+ export type SessionAttachVariableSetSession = {
11
+ id: string;
12
+ rigId?: string | null | undefined;
13
+ rigVersionId?: string | null | undefined;
14
+ variableSetIds?: readonly string[] | null | undefined;
15
+ /** Legacy final-entry alias for projections that predate the plural field. */
16
+ variableSetId?: string | null | undefined;
17
+ };
18
+
19
+ type VariableSetSource = "sandbox_environment_default" | "session_selection";
20
+
21
+ /**
22
+ * Decrypted Variable Set values for a direct session attach (terminal, Files,
23
+ * Git, desktop viewer), in the same order and precedence as the worker turn:
24
+ * the frozen Sandbox Environment version defaults first, then the session's
25
+ * own selection, so a box first warmed by an attach declares exactly the
26
+ * environment the next turn declares.
27
+ *
28
+ * A Variable Set the session can no longer use (the database seam answers
29
+ * 42501 and records a `variable_set.materialize.denied` fact) becomes a 403
30
+ * instead of a bare 500. Every failure is logged with the session, set, source
31
+ * and SQLSTATE, never a value.
32
+ */
33
+ export async function loadSessionAttachVariableSetValues(
34
+ db: Database,
35
+ settings: Settings,
36
+ input: {
37
+ accountId: string;
38
+ workspaceId: string;
39
+ session: SessionAttachVariableSetSession;
40
+ /** The authenticated route subject driving the attach; null records the
41
+ * legacy service sentinel on the materialization audit fact. */
42
+ subjectId: string | null;
43
+ },
44
+ ): Promise<Record<string, string>> {
45
+ const { accountId, workspaceId, session, subjectId } = input;
46
+ const values: Record<string, string> = {};
47
+ let defaultVariableSetIds: readonly string[] = [];
48
+ if (session.rigId && session.rigVersionId) {
49
+ try {
50
+ const rigVersion = await getScheduledScopedRigVersionMetadata(
51
+ db,
52
+ { accountId, workspaceId, subjectId: subjectId ?? "session-attach" },
53
+ session.rigId,
54
+ session.rigVersionId,
55
+ );
56
+ defaultVariableSetIds = rigVersion?.version.defaultVariableSetIds ?? [];
57
+ } catch (error) {
58
+ logAttachFailure("sandbox environment lookup failed", error, {
59
+ sessionId: session.id,
60
+ rigId: session.rigId,
61
+ rigVersionId: session.rigVersionId,
62
+ });
63
+ throw error;
64
+ }
65
+ }
66
+ // Older persisted/test projections can omit the plural field. Preserve the
67
+ // legacy final alias as the single explicit selection.
68
+ const selectedVariableSetIds =
69
+ session.variableSetIds ?? (session.variableSetId ? [session.variableSetId] : []);
70
+ const ordered: Array<{ variableSetId: string; source: VariableSetSource }> = [
71
+ ...defaultVariableSetIds.map((variableSetId) => ({
72
+ variableSetId,
73
+ source: "sandbox_environment_default" as const,
74
+ })),
75
+ ...selectedVariableSetIds.map((variableSetId) => ({
76
+ variableSetId,
77
+ source: "session_selection" as const,
78
+ })),
79
+ ];
80
+ for (const { variableSetId, source } of ordered) {
81
+ try {
82
+ const loaded = await loadWorkspaceEnvironmentForRun(db, settings, {
83
+ accountId,
84
+ workspaceId,
85
+ variableSetId,
86
+ authority: { kind: "session_attach", sessionId: session.id, subjectId },
87
+ });
88
+ Object.assign(values, loaded?.values ?? {});
89
+ } catch (error) {
90
+ logAttachFailure("variable set materialization failed", error, {
91
+ sessionId: session.id,
92
+ variableSetId,
93
+ source,
94
+ });
95
+ if (nestedPostgresSqlState(error) === "42501") {
96
+ throw new ApiHttpError(403, {
97
+ code: "forbidden",
98
+ message:
99
+ source === "sandbox_environment_default"
100
+ ? "A default Variable Set of this session's Sandbox Environment is not available to this session."
101
+ : "A Variable Set selected for this session is not available to this session.",
102
+ retryable: false,
103
+ details: { variableSetId, source },
104
+ });
105
+ }
106
+ throw error;
107
+ }
108
+ }
109
+ return values;
110
+ }
111
+
112
+ function logAttachFailure(message: string, error: unknown, context: Record<string, string>): void {
113
+ const sqlState = nestedPostgresSqlState(error);
114
+ console.warn(`[session-attach] ${message}`, {
115
+ ...context,
116
+ ...(sqlState ? { sqlState } : {}),
117
+ error: rootCauseMessage(error),
118
+ });
119
+ }
120
+
121
+ /** The innermost cause's message: the database's own reason rather than the
122
+ * query-builder wrapper that repeats the statement text. */
123
+ function rootCauseMessage(error: unknown): string {
124
+ let current: unknown = error;
125
+ for (let depth = 0; depth < 8; depth += 1) {
126
+ const cause = current instanceof Error ? current.cause : undefined;
127
+ if (!(cause instanceof Error)) break;
128
+ current = cause;
129
+ }
130
+ return current instanceof Error ? current.message : String(current);
131
+ }