@opengeni/api-router 0.30.3 → 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 (434) 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-source-session.d.ts +3 -0
  35. package/dist/editable-artifact-websocket.d.ts +10 -18
  36. package/dist/editable-artifact-workspace-files.d.ts +1 -1
  37. package/dist/fatal-process-boundary.d.ts +25 -0
  38. package/dist/github-access.d.ts +31 -2
  39. package/dist/http/acting-person.d.ts +24 -0
  40. package/dist/http/api-contract-compat.d.ts +19 -0
  41. package/dist/http/api-error.d.ts +27 -1
  42. package/dist/http/cors.d.ts +17 -0
  43. package/dist/http/deprecation.d.ts +42 -0
  44. package/dist/http/interaction-control-error.d.ts +13 -0
  45. package/dist/http/keyed-admission.d.ts +12 -0
  46. package/dist/http/local-browser-boundary.d.ts +72 -0
  47. package/dist/http/metrics-listener.d.ts +22 -0
  48. package/dist/http/path-identifier.d.ts +17 -0
  49. package/dist/http/registered-route-label.d.ts +16 -0
  50. package/dist/http/request-body.d.ts +27 -0
  51. package/dist/http/request-source.d.ts +52 -0
  52. package/dist/http/sse.d.ts +17 -6
  53. package/dist/http/unmatched-route.d.ts +18 -0
  54. package/dist/http/user-content.d.ts +36 -0
  55. package/dist/http/websocket-upgrade-dispatch.d.ts +18 -0
  56. package/dist/index.d.ts +10 -3
  57. package/dist/index.js +1091 -162
  58. package/dist/index.js.map +1 -1
  59. package/dist/integration-endpoint-test.d.ts +20 -0
  60. package/dist/integrations/api-integrations.d.ts +2 -2
  61. package/dist/integrations/atlassian.d.ts +29 -3
  62. package/dist/integrations/connect-authority.d.ts +1 -0
  63. package/dist/integrations/connect-callback-return.d.ts +6 -0
  64. package/dist/integrations/fiken.d.ts +16 -2
  65. package/dist/integrations/github-app-connect.d.ts +47 -0
  66. package/dist/integrations/github-installation-proof.d.ts +3 -0
  67. package/dist/integrations/github-lens-connect.d.ts +116 -0
  68. package/dist/integrations/github-skill-source.d.ts +1 -5
  69. package/dist/integrations/google-drive.d.ts +24 -0
  70. package/dist/integrations/integration-commit-authority.d.ts +13 -0
  71. package/dist/integrations/marketplace-plugin.d.ts +2691 -0
  72. package/dist/integrations/oauth-client.d.ts +178 -18
  73. package/dist/integrations/oauth-profiles.d.ts +222 -0
  74. package/dist/integrations/oauth-return-path.d.ts +1 -0
  75. package/dist/integrations/personal-github-repositories.d.ts +84 -0
  76. package/dist/integrations/personal-github.d.ts +42 -0
  77. package/dist/integrations/pr-review-provider.d.ts +22 -0
  78. package/dist/integrations/provider-oauth.d.ts +19 -1
  79. package/dist/integrations/slack-app-home.d.ts +24 -0
  80. package/dist/integrations/slack-bot.d.ts +367 -12
  81. package/dist/integrations/slack-file-upload-flow.d.ts +62 -0
  82. package/dist/integrations/slack-install.d.ts +20 -0
  83. package/dist/integrations/slack-interactions.d.ts +107 -9
  84. package/dist/integrations/slack-mrkdwn.d.ts +41 -0
  85. package/dist/integrations/slack-routing.d.ts +120 -0
  86. package/dist/integrations/slack-session-defaults.d.ts +58 -0
  87. package/dist/integrations/slack-task-file-upload.d.ts +36 -0
  88. package/dist/integrations/social-oauth.d.ts +7 -0
  89. package/dist/interaction-agent-access.d.ts +15 -0
  90. package/dist/interaction-frame-proxy.d.ts +68 -0
  91. package/dist/interaction-metrics.d.ts +2 -0
  92. package/dist/mcp/action-catalog-types.d.ts +9 -0
  93. package/dist/mcp/action-catalog.gen.d.ts +2 -0
  94. package/dist/mcp/capability-account-readiness.d.ts +7 -0
  95. package/dist/mcp/child-read-evidence.d.ts +9 -0
  96. package/dist/mcp/command-read.d.ts +24 -0
  97. package/dist/mcp/company-profile-agent-admin.d.ts +44 -0
  98. package/dist/mcp/contract-input.d.ts +11 -0
  99. package/dist/mcp/documents.d.ts +7 -5
  100. package/dist/mcp/files.d.ts +2 -2
  101. package/dist/mcp/first-party-tool-permissions.d.ts +650 -0
  102. package/dist/mcp/knowledge-entries.d.ts +5 -0
  103. package/dist/mcp/orchestration-failure-diagnostic.d.ts +43 -0
  104. package/dist/mcp/receipts.d.ts +9 -0
  105. package/dist/mcp/request-abort.d.ts +19 -0
  106. package/dist/mcp/scheduled-task-input.d.ts +1189 -0
  107. package/dist/mcp/scheduled-task-view.d.ts +22 -4
  108. package/dist/mcp/server.d.ts +255 -3
  109. package/dist/mcp/session-event-view.d.ts +94 -0
  110. package/dist/mcp/session-view.d.ts +66 -2
  111. package/dist/mcp/session-wait.d.ts +174 -0
  112. package/dist/mcp-oauth.d.ts +52 -0
  113. package/dist/model-catalog.d.ts +11 -31
  114. package/dist/observability.d.ts +3 -1
  115. package/dist/organization-mcp.d.ts +52 -0
  116. package/dist/organization-recovery-notifications.d.ts +41 -0
  117. package/dist/routes/analytics-consent.d.ts +26 -0
  118. package/dist/routes/api-integrations.d.ts +25 -0
  119. package/dist/routes/api-keys.d.ts +17 -0
  120. package/dist/routes/artifact-catalog.d.ts +6 -0
  121. package/dist/routes/automations.d.ts +19 -0
  122. package/dist/routes/billing.d.ts +49 -0
  123. package/dist/routes/browser-sessions.d.ts +59 -2
  124. package/dist/routes/claude-subscription-accounts.d.ts +3 -0
  125. package/dist/routes/claude-subscription-oauth.d.ts +3 -0
  126. package/dist/routes/client-errors.d.ts +146 -0
  127. package/dist/routes/codex.d.ts +76 -2
  128. package/dist/routes/company-brain.d.ts +3 -0
  129. package/dist/routes/company-profile.d.ts +2 -1
  130. package/dist/routes/computer-sessions.d.ts +14 -0
  131. package/dist/routes/connect.d.ts +5 -0
  132. package/dist/routes/editable-artifacts.d.ts +2 -0
  133. package/dist/routes/external-identity-links.d.ts +6 -0
  134. package/dist/routes/feedback.d.ts +3 -0
  135. package/dist/routes/github-browser-pages.d.ts +12 -0
  136. package/dist/routes/github.d.ts +2 -0
  137. package/dist/routes/insights-response-cache.d.ts +10 -0
  138. package/dist/routes/insights-usage.d.ts +12 -0
  139. package/dist/routes/insights.d.ts +30 -1
  140. package/dist/routes/knowledge.d.ts +3 -0
  141. package/dist/routes/managed-auth-session-sets.d.ts +26 -0
  142. package/dist/routes/managed-onboarding.d.ts +29 -0
  143. package/dist/routes/managed-sign-in-methods.d.ts +6 -0
  144. package/dist/routes/model-connection-access.d.ts +3 -0
  145. package/dist/routes/organization-integration-policy.d.ts +3 -0
  146. package/dist/routes/organization-integrations.d.ts +6 -0
  147. package/dist/routes/organization-mcp-connections.d.ts +3 -0
  148. package/dist/routes/organization-model-providers.d.ts +3 -0
  149. package/dist/routes/organization-recovery.d.ts +19 -0
  150. package/dist/routes/organization-service-accounts.d.ts +3 -0
  151. package/dist/routes/organization-sessions.d.ts +26 -0
  152. package/dist/routes/personal-github-git-broker.d.ts +29 -0
  153. package/dist/routes/personal-github.d.ts +3 -0
  154. package/dist/routes/pr-review-github.d.ts +3 -0
  155. package/dist/routes/pr-review.d.ts +3 -0
  156. package/dist/routes/session-artifact-associations.d.ts +4 -0
  157. package/dist/routes/session-history-imports.d.ts +9 -0
  158. package/dist/routes/sessions.d.ts +44 -6
  159. package/dist/routes/skill-content.d.ts +4 -0
  160. package/dist/routes/skill-install-authority.d.ts +6 -0
  161. package/dist/routes/subscription-account-pools.d.ts +34 -0
  162. package/dist/routes/subscription-pool-access.d.ts +16 -0
  163. package/dist/routes/supergrok.d.ts +6 -1
  164. package/dist/routes/usage-allowances.d.ts +12 -0
  165. package/dist/routes/user-resource-authorities.d.ts +3 -0
  166. package/dist/routes/workspace-artifacts.d.ts +2 -1
  167. package/dist/routes/workspace-capture.d.ts +10 -2
  168. package/dist/routes/workspace-integrations.d.ts +35 -0
  169. package/dist/routes/workspace-learning.d.ts +3 -0
  170. package/dist/routes/workspace-model-providers.d.ts +4 -0
  171. package/dist/routes/workspaces.d.ts +29 -0
  172. package/dist/sandbox/auth-callout.d.ts +8 -0
  173. package/dist/sandbox/channel-a.d.ts +19 -1
  174. package/dist/sandbox/connection-authority.d.ts +3 -0
  175. package/dist/sandbox/enrollment.d.ts +9 -1
  176. package/dist/sandbox/machines.d.ts +5 -2
  177. package/dist/sandbox/metrics-ingestion.d.ts +28 -20
  178. package/dist/sandbox/rematerialize.d.ts +2 -0
  179. package/dist/sandbox/session-attach-variable-sets.d.ts +30 -0
  180. package/dist/sandbox/viewer.d.ts +26 -1
  181. package/dist/sandbox-file-artifacts.d.ts +50 -0
  182. package/dist/scheduled-task-deletion.d.ts +13 -0
  183. package/dist/session-create-observability.d.ts +5 -0
  184. package/dist/session-event-view-MPS2OZD3.js +292 -0
  185. package/dist/session-event-view-MPS2OZD3.js.map +1 -0
  186. package/dist/site-session-origin.d.ts +13 -0
  187. package/dist/site-uploads.d.ts +41 -0
  188. package/dist/slack-reaction-files.d.ts +1 -1
  189. package/dist/temporal-schedule-cleanup.d.ts +1 -0
  190. package/dist/temporal-schedule-sync.d.ts +26 -0
  191. package/dist/transcription/providers/xai-subscription.d.ts +1 -0
  192. package/dist/transcription/service.d.ts +2 -1
  193. package/dist/work-discovery-observability.d.ts +33 -0
  194. package/dist/workspace-artifact-content.d.ts +28 -0
  195. package/dist/workspace-artifact-provenance.d.ts +7 -0
  196. package/dist/workspace-delete-observability.d.ts +10 -0
  197. package/dist/workspace-deletion.d.ts +6 -0
  198. package/dist/workspace-state-projection.d.ts +3 -5
  199. package/dist/workspace-tool-gateway-observability.d.ts +17 -0
  200. package/dist/workspace-tool-gateway.d.ts +123 -0
  201. package/dist/workspace-webhook-dispatch.d.ts +26 -0
  202. package/package.json +23 -19
  203. package/src/access-grant-rls.ts +75 -0
  204. package/src/admission-trace.ts +14 -0
  205. package/src/api-websocket.ts +23 -0
  206. package/src/app.ts +1967 -252
  207. package/src/artifact-catalog-cursor.ts +60 -0
  208. package/src/auth/managed-auth-attempt-context.ts +70 -0
  209. package/src/auth/managed-auth-rate-limits.ts +252 -0
  210. package/src/auth/managed-auth-session-adapter.ts +222 -0
  211. package/src/auth/managed-auth.ts +536 -60
  212. package/src/auth/managed-email.ts +174 -0
  213. package/src/auth/managed-sign-in-notifications.ts +81 -0
  214. package/src/auth/new-signups-gate.ts +49 -0
  215. package/src/auth/organization-user-setup.ts +307 -0
  216. package/src/auth/signup-funnel-metrics.ts +164 -0
  217. package/src/browser-controller-authority.ts +1 -186
  218. package/src/browser-ephemeral.ts +39 -0
  219. package/src/browser-state-authority.ts +1 -236
  220. package/src/claude-subscription-account-conflicts.ts +12 -0
  221. package/src/claude-subscription-account-usage.ts +48 -0
  222. package/src/claude-subscription-oauth.ts +362 -0
  223. package/src/claude-subscription-profile.ts +73 -0
  224. package/src/claude-subscription-usage.ts +97 -0
  225. package/src/claude-workspace-connection.ts +82 -0
  226. package/src/codemode.ts +194 -30
  227. package/src/codex-realtime.ts +8 -2
  228. package/src/company-brain-okf.ts +340 -0
  229. package/src/connected-machine-computer-access.ts +33 -0
  230. package/src/connection-ownership.ts +199 -0
  231. package/src/controller-data-plane.ts +81 -0
  232. package/src/editable-artifact-native-kernel.ts +26 -15
  233. package/src/editable-artifact-office-import.ts +28 -3
  234. package/src/editable-artifact-production.ts +23 -7
  235. package/src/editable-artifact-source-session.ts +123 -0
  236. package/src/editable-artifact-websocket.ts +27 -21
  237. package/src/editable-artifact-workspace-files.ts +31 -6
  238. package/src/fatal-process-boundary.ts +246 -0
  239. package/src/gateway-realtime.ts +1 -1
  240. package/src/github-access.ts +147 -5
  241. package/src/http/acting-person.ts +71 -0
  242. package/src/http/api-contract-compat.ts +49 -0
  243. package/src/http/api-error.ts +115 -1
  244. package/src/http/auth.ts +48 -0
  245. package/src/http/cors.ts +67 -0
  246. package/src/http/deprecation.ts +118 -0
  247. package/src/http/interaction-control-error.ts +164 -0
  248. package/src/http/keyed-admission.ts +29 -0
  249. package/src/http/local-browser-boundary.ts +343 -0
  250. package/src/http/metrics-listener.ts +57 -0
  251. package/src/http/path-identifier.ts +54 -0
  252. package/src/http/registered-route-label.ts +34 -0
  253. package/src/http/request-body.ts +127 -0
  254. package/src/http/request-source.ts +178 -0
  255. package/src/http/sse.ts +486 -132
  256. package/src/http/unmatched-route.ts +60 -0
  257. package/src/http/user-content.ts +158 -0
  258. package/src/http/websocket-upgrade-dispatch.ts +29 -0
  259. package/src/index.ts +157 -52
  260. package/src/integration-endpoint-test.ts +291 -0
  261. package/src/integrations/api-integrations.ts +98 -11
  262. package/src/integrations/atlassian.ts +474 -136
  263. package/src/integrations/connect-authority.ts +2 -0
  264. package/src/integrations/connect-callback-return.ts +86 -0
  265. package/src/integrations/fiken.ts +354 -64
  266. package/src/integrations/github-app-connect.ts +435 -0
  267. package/src/integrations/github-installation-proof.ts +60 -0
  268. package/src/integrations/github-lens-connect.ts +76 -0
  269. package/src/integrations/github-skill-source.ts +2 -142
  270. package/src/integrations/google-drive.ts +717 -225
  271. package/src/integrations/integration-commit-authority.ts +69 -0
  272. package/src/integrations/marketplace-plugin.ts +48 -0
  273. package/src/integrations/oauth-client.ts +1356 -459
  274. package/src/integrations/oauth-profiles.ts +537 -0
  275. package/src/integrations/oauth-return-path.ts +18 -0
  276. package/src/integrations/personal-github-repositories.ts +674 -0
  277. package/src/integrations/personal-github.ts +825 -0
  278. package/src/integrations/pr-review-provider.ts +246 -0
  279. package/src/integrations/provider-oauth.ts +250 -22
  280. package/src/integrations/slack-app-home.ts +300 -0
  281. package/src/integrations/slack-bot.ts +963 -239
  282. package/src/integrations/slack-file-upload-flow.ts +147 -0
  283. package/src/integrations/slack-install.ts +83 -0
  284. package/src/integrations/slack-interactions.ts +3167 -474
  285. package/src/integrations/slack-mrkdwn.ts +193 -0
  286. package/src/integrations/slack-routing.ts +337 -0
  287. package/src/integrations/slack-session-defaults.ts +224 -0
  288. package/src/integrations/slack-task-file-upload.ts +323 -0
  289. package/src/integrations/social-oauth.ts +213 -15
  290. package/src/interaction-agent-access.ts +48 -0
  291. package/src/interaction-frame-proxy.ts +409 -0
  292. package/src/interaction-metrics.ts +30 -0
  293. package/src/mcp/action-catalog-types.ts +9 -0
  294. package/src/mcp/action-catalog.gen.ts +6696 -0
  295. package/src/mcp/capability-account-readiness.ts +17 -0
  296. package/src/mcp/child-read-evidence.ts +19 -0
  297. package/src/mcp/command-read.ts +109 -0
  298. package/src/mcp/company-profile-agent-admin.ts +198 -0
  299. package/src/mcp/contract-input.ts +141 -0
  300. package/src/mcp/documents.ts +65 -377
  301. package/src/mcp/editable-artifacts.ts +12 -6
  302. package/src/mcp/files.ts +80 -43
  303. package/src/mcp/first-party-tool-permissions.ts +305 -0
  304. package/src/mcp/knowledge-entries.ts +322 -0
  305. package/src/mcp/orchestration-failure-diagnostic.ts +43 -0
  306. package/src/mcp/receipts.ts +34 -0
  307. package/src/mcp/request-abort.ts +44 -0
  308. package/src/mcp/scheduled-task-input.ts +76 -0
  309. package/src/mcp/scheduled-task-view.ts +44 -3
  310. package/src/mcp/server.ts +3030 -1267
  311. package/src/mcp/session-event-view.ts +383 -0
  312. package/src/mcp/session-view.ts +84 -3
  313. package/src/mcp/session-wait.ts +665 -0
  314. package/src/mcp-oauth.ts +1123 -0
  315. package/src/model-catalog.ts +91 -333
  316. package/src/observability.ts +15 -1
  317. package/src/organization-mcp.ts +397 -0
  318. package/src/organization-recovery-notifications.ts +103 -0
  319. package/src/routes/analytics-consent.ts +123 -0
  320. package/src/routes/api-integrations.ts +364 -74
  321. package/src/routes/api-keys.ts +336 -10
  322. package/src/routes/artifact-catalog.ts +279 -0
  323. package/src/routes/automations.ts +768 -0
  324. package/src/routes/billing.ts +461 -46
  325. package/src/routes/browser-sessions.ts +780 -112
  326. package/src/routes/canonical-human-identities.ts +90 -14
  327. package/src/routes/capabilities.ts +107 -6
  328. package/src/routes/channels.ts +20 -3
  329. package/src/routes/claude-subscription-accounts.ts +334 -0
  330. package/src/routes/claude-subscription-oauth.ts +142 -0
  331. package/src/routes/client-errors.ts +362 -0
  332. package/src/routes/codex.ts +833 -116
  333. package/src/routes/company-brain.ts +322 -0
  334. package/src/routes/company-profile.ts +65 -1
  335. package/src/routes/computer-sessions.ts +557 -106
  336. package/src/routes/connect.ts +1938 -0
  337. package/src/routes/connections.ts +1039 -349
  338. package/src/routes/documents.ts +488 -287
  339. package/src/routes/editable-artifacts.ts +79 -9
  340. package/src/routes/enrollments.ts +135 -39
  341. package/src/routes/environments.ts +154 -58
  342. package/src/routes/external-identity-links.ts +201 -0
  343. package/src/routes/feedback.ts +113 -0
  344. package/src/routes/files.ts +267 -33
  345. package/src/routes/github-browser-pages.ts +162 -0
  346. package/src/routes/github.ts +446 -144
  347. package/src/routes/insights-response-cache.ts +83 -0
  348. package/src/routes/insights-usage.ts +345 -0
  349. package/src/routes/insights.ts +153 -19
  350. package/src/routes/install.ts +133 -38
  351. package/src/routes/integration-facets.ts +107 -33
  352. package/src/routes/interaction-resources.ts +30 -3
  353. package/src/routes/knowledge.ts +488 -0
  354. package/src/routes/machines.ts +313 -15
  355. package/src/routes/managed-auth-session-sets.ts +1218 -0
  356. package/src/routes/managed-onboarding.ts +337 -0
  357. package/src/routes/managed-sign-in-methods.ts +433 -0
  358. package/src/routes/memory-slack-publications.ts +3 -2
  359. package/src/routes/model-connection-access.ts +208 -0
  360. package/src/routes/organization-integration-policy.ts +116 -0
  361. package/src/routes/organization-integrations.ts +326 -0
  362. package/src/routes/organization-mcp-connections.ts +178 -0
  363. package/src/routes/organization-memberships.ts +1019 -27
  364. package/src/routes/organization-model-providers.ts +293 -0
  365. package/src/routes/organization-recovery.ts +325 -0
  366. package/src/routes/organization-service-accounts.ts +128 -0
  367. package/src/routes/organization-sessions.ts +350 -0
  368. package/src/routes/personal-github-git-broker.ts +785 -0
  369. package/src/routes/personal-github.ts +370 -0
  370. package/src/routes/plugins.ts +251 -22
  371. package/src/routes/pr-review-github.ts +881 -0
  372. package/src/routes/pr-review.ts +622 -0
  373. package/src/routes/preference-registry.ts +12 -93
  374. package/src/routes/rigs.ts +167 -50
  375. package/src/routes/scheduled-tasks.ts +346 -41
  376. package/src/routes/session-artifact-associations.ts +87 -0
  377. package/src/routes/session-history-imports.ts +280 -0
  378. package/src/routes/sessions.ts +2306 -264
  379. package/src/routes/skill-content.ts +297 -0
  380. package/src/routes/skill-install-authority.ts +64 -0
  381. package/src/routes/skills.ts +62 -9
  382. package/src/routes/social.ts +46 -18
  383. package/src/routes/subscription-account-pools.ts +436 -0
  384. package/src/routes/subscription-pool-access.ts +126 -0
  385. package/src/routes/supergrok.ts +219 -303
  386. package/src/routes/transcription-recordings.ts +38 -3
  387. package/src/routes/transcriptions.ts +4 -0
  388. package/src/routes/usage-allowances.ts +378 -0
  389. package/src/routes/user-resource-authorities.ts +138 -0
  390. package/src/routes/video-generation.ts +14 -10
  391. package/src/routes/workspace-artifacts.ts +275 -69
  392. package/src/routes/workspace-capture.ts +21 -0
  393. package/src/routes/workspace-integrations.ts +576 -0
  394. package/src/routes/workspace-learning.ts +159 -0
  395. package/src/routes/workspace-model-providers.ts +148 -0
  396. package/src/routes/workspace-state.ts +38 -25
  397. package/src/routes/workspaces.ts +1004 -127
  398. package/src/sandbox/auth-callout.ts +96 -19
  399. package/src/sandbox/channel-a.ts +323 -24
  400. package/src/sandbox/connection-authority.ts +3 -0
  401. package/src/sandbox/enrollment.ts +81 -6
  402. package/src/sandbox/machines.ts +218 -76
  403. package/src/sandbox/metrics-ingestion.ts +411 -62
  404. package/src/sandbox/rematerialize.ts +121 -19
  405. package/src/sandbox/session-attach-variable-sets.ts +131 -0
  406. package/src/sandbox/viewer.ts +280 -25
  407. package/src/sandbox-file-artifacts.ts +413 -0
  408. package/src/scheduled-task-deletion.ts +138 -0
  409. package/src/session-create-observability.ts +46 -0
  410. package/src/session-realtime-context.ts +6 -3
  411. package/src/site-session-origin.ts +48 -0
  412. package/src/site-uploads.ts +224 -0
  413. package/src/slack-reaction-files.ts +16 -5
  414. package/src/temporal-schedule-cleanup.ts +13 -0
  415. package/src/temporal-schedule-sync.ts +74 -0
  416. package/src/transcription/providers/codex-subscription.ts +2 -0
  417. package/src/transcription/providers/openai.ts +1 -0
  418. package/src/transcription/providers/xai-subscription.ts +49 -3
  419. package/src/transcription/segmenter.ts +8 -2
  420. package/src/transcription/service.ts +43 -6
  421. package/src/work-discovery-observability.ts +121 -0
  422. package/src/workspace-artifact-content.ts +144 -0
  423. package/src/workspace-artifact-provenance.ts +104 -0
  424. package/src/workspace-delete-observability.ts +75 -0
  425. package/src/workspace-deletion.ts +73 -0
  426. package/src/workspace-state-projection.ts +18 -148
  427. package/src/workspace-tool-gateway-observability.ts +100 -0
  428. package/src/workspace-tool-gateway.ts +870 -0
  429. package/src/workspace-webhook-dispatch.ts +190 -0
  430. package/src/xai-subscription-auth.ts +9 -2
  431. package/dist/chunk-WCXHI3FF.js +0 -49920
  432. package/dist/chunk-WCXHI3FF.js.map +0 -1
  433. package/dist/routes/packs.d.ts +0 -3
  434. package/src/routes/packs.ts +0 -729
@@ -5,7 +5,11 @@ import {
5
5
  CanonicalHumanIdentityProjection,
6
6
  LinkCanonicalHumanLoginBindingRequest,
7
7
  } from "@opengeni/contracts/canonical-human-identities";
8
- import { requireCanonicalHumanRequestIdentity } from "@opengeni/core/canonical-human-identities";
8
+ import {
9
+ getManagedAuthRequestActorLeaseStamp,
10
+ markManagedAuthRequestActorTransitionApplied,
11
+ requireCanonicalHumanRequestIdentity,
12
+ } from "@opengeni/core/canonical-human-identities";
9
13
  import type { ApiRouteDeps } from "@opengeni/core";
10
14
  import {
11
15
  applyCanonicalHumanIdentityOperation,
@@ -13,11 +17,15 @@ import {
13
17
  CanonicalHumanIdentityConflictError,
14
18
  CanonicalHumanIdentityNotFoundError,
15
19
  CanonicalHumanIdentityOperationReuseError,
20
+ CanonicalHumanIdentityMutationInFlightError,
16
21
  getCanonicalHumanIdentityProjection,
17
22
  } from "@opengeni/db/canonical-human-identities";
18
23
  import type { Context, Hono } from "hono";
19
24
  import { HTTPException } from "hono/http-exception";
20
25
  import { z } from "zod";
26
+ import { admitManagedSignInMutation } from "./managed-sign-in-methods";
27
+ import { managedAuthSecretRequestDigest } from "@opengeni/core/managed-auth-session-sets";
28
+ import { deliverManagedSignInNotification } from "../auth/managed-sign-in-notifications";
21
29
 
22
30
  const BindingId = z.string().uuid();
23
31
 
@@ -25,6 +33,8 @@ async function requestIdentity(context: Context, deps: ApiRouteDeps) {
25
33
  return await requireCanonicalHumanRequestIdentity(context, {
26
34
  db: deps.db,
27
35
  ...(deps.managedAuth === undefined ? {} : { managedAuth: deps.managedAuth }),
36
+ managedAuthSessionAdapter: deps.managedAuthSessionAdapter,
37
+ managedAuthSessionSetMode: deps.settings.managedAuthSessionSetMode,
28
38
  allowRecovery: true,
29
39
  });
30
40
  }
@@ -50,6 +60,9 @@ function identityError(context: Context, error: unknown): Response {
50
60
  if (error instanceof CanonicalHumanIdentityOperationReuseError) {
51
61
  return context.json({ code: error.code, message: error.message }, 409);
52
62
  }
63
+ if (error instanceof CanonicalHumanIdentityMutationInFlightError) {
64
+ return context.json({ code: error.code, message: error.message, retryable: true }, 409);
65
+ }
53
66
  if (error instanceof CanonicalHumanIdentityNotFoundError) {
54
67
  return context.json(
55
68
  { code: "CANONICAL_HUMAN_IDENTITY_NOT_FOUND", message: error.message },
@@ -76,24 +89,47 @@ async function mutate(
76
89
  operationId: string;
77
90
  expectedIdentityRevision: number;
78
91
  reason: string;
92
+ verifiedManagedRecovery?: boolean;
79
93
  },
80
94
  ): Promise<Response> {
81
95
  const identity = await requestIdentity(context, deps);
96
+ const actorFence = getManagedAuthRequestActorLeaseStamp(context.req.raw);
97
+ if (deps.settings.managedAuthSessionSetMode !== "legacy" && !actorFence) {
98
+ throw new HTTPException(409, { message: "Managed actor mutation fence is unavailable" });
99
+ }
82
100
  try {
83
- return context.json(
84
- CanonicalHumanIdentityMutationResponse.parse(
85
- await applyCanonicalHumanIdentityOperation(deps.db, {
86
- operationId: input.operationId,
87
- authUserId: identity.authUserId,
88
- expectedIdentityRevision: input.expectedIdentityRevision,
89
- operationType: input.operationType,
90
- ...(input.bindingId ? { bindingId: input.bindingId } : {}),
91
- ...(input.providerId ? { providerId: input.providerId } : {}),
92
- ...(input.providerAccountId ? { providerAccountId: input.providerAccountId } : {}),
93
- reason: input.reason,
94
- }),
95
- ),
101
+ const response = CanonicalHumanIdentityMutationResponse.parse(
102
+ await applyCanonicalHumanIdentityOperation(deps.db, {
103
+ operationId: input.operationId,
104
+ authUserId: identity.authUserId,
105
+ expectedIdentityRevision: input.expectedIdentityRevision,
106
+ operationType: input.operationType,
107
+ ...(input.bindingId ? { bindingId: input.bindingId } : {}),
108
+ ...(input.providerId ? { providerId: input.providerId } : {}),
109
+ ...(input.providerAccountId ? { providerAccountId: input.providerAccountId } : {}),
110
+ reason: input.reason,
111
+ ...(input.verifiedManagedRecovery
112
+ ? {
113
+ verifiedRecovery: {
114
+ authSessionId: identity.authSessionId,
115
+ requestDigest: managedAuthSecretRequestDigest(
116
+ deps.settings.betterAuthSecret!,
117
+ input,
118
+ ),
119
+ },
120
+ }
121
+ : {}),
122
+ ...(actorFence ? { actorFence } : {}),
123
+ }),
96
124
  );
125
+ if (actorFence) markManagedAuthRequestActorTransitionApplied(context.req.raw);
126
+ if (input.verifiedManagedRecovery)
127
+ await deliverManagedSignInNotification(
128
+ deps.db,
129
+ deps.managedEmailTransport,
130
+ input.operationId,
131
+ );
132
+ return context.json(response);
97
133
  } catch (error) {
98
134
  return identityError(context, error);
99
135
  }
@@ -117,6 +153,11 @@ export function registerCanonicalHumanIdentityRoutes(app: Hono, deps: ApiRouteDe
117
153
 
118
154
  app.post(`${base}/login-bindings`, async (context) => {
119
155
  const request = await parseBody(context, LinkCanonicalHumanLoginBindingRequest);
156
+ if (["google", "github", "credential"].includes(request.providerId.trim().toLowerCase())) {
157
+ throw new HTTPException(403, {
158
+ message: "Use personal sign-in method settings with fresh provider proof",
159
+ });
160
+ }
120
161
  return await mutate(context, deps, {
121
162
  operationType: "link",
122
163
  ...request,
@@ -126,6 +167,19 @@ export function registerCanonicalHumanIdentityRoutes(app: Hono, deps: ApiRouteDe
126
167
 
127
168
  app.delete(`${base}/login-bindings/:bindingId`, async (context) => {
128
169
  const request = await parseBody(context, CanonicalHumanBindingOperationRequest);
170
+ const actor = await requestIdentity(context, deps);
171
+ const projection = await getCanonicalHumanIdentityProjection(deps.db, actor.authUserId);
172
+ if (
173
+ projection.loginBindings.some(
174
+ (binding) =>
175
+ binding.id === bindingId(context) &&
176
+ ["google", "github", "credential"].includes(binding.providerId),
177
+ )
178
+ ) {
179
+ throw new HTTPException(403, {
180
+ message: "Use personal sign-in method settings with last-method protection",
181
+ });
182
+ }
129
183
  return await mutate(context, deps, {
130
184
  operationType: "unlink",
131
185
  bindingId: bindingId(context),
@@ -136,6 +190,19 @@ export function registerCanonicalHumanIdentityRoutes(app: Hono, deps: ApiRouteDe
136
190
 
137
191
  app.post(`${base}/login-bindings/:bindingId/recovery`, async (context) => {
138
192
  const request = await parseBody(context, CanonicalHumanBindingOperationRequest);
193
+ const actor = await requestIdentity(context, deps);
194
+ const projection = await getCanonicalHumanIdentityProjection(deps.db, actor.authUserId);
195
+ if (
196
+ projection.loginBindings.some(
197
+ (binding) =>
198
+ binding.id === bindingId(context) &&
199
+ ["google", "github", "credential"].includes(binding.providerId),
200
+ )
201
+ ) {
202
+ throw new HTTPException(403, {
203
+ message: "Managed-provider recovery cannot be initiated through raw binding management",
204
+ });
205
+ }
139
206
  return await mutate(context, deps, {
140
207
  operationType: "begin_recovery",
141
208
  bindingId: bindingId(context),
@@ -146,11 +213,20 @@ export function registerCanonicalHumanIdentityRoutes(app: Hono, deps: ApiRouteDe
146
213
 
147
214
  app.post(`${base}/login-bindings/:bindingId/recovery/complete`, async (context) => {
148
215
  const request = await parseBody(context, CanonicalHumanBindingOperationRequest);
216
+ const actor = await requestIdentity(context, deps);
217
+ const projection = await getCanonicalHumanIdentityProjection(deps.db, actor.authUserId);
218
+ const managed = projection.loginBindings.some(
219
+ (binding) =>
220
+ binding.id === bindingId(context) &&
221
+ ["google", "github", "credential"].includes(binding.providerId),
222
+ );
223
+ if (managed) await admitManagedSignInMutation(context, deps);
149
224
  return await mutate(context, deps, {
150
225
  operationType: "recover",
151
226
  bindingId: bindingId(context),
152
227
  ...request,
153
228
  operationId: request.operationId ?? randomUUID(),
229
+ ...(managed ? { verifiedManagedRecovery: true } : {}),
154
230
  });
155
231
  });
156
232
  }
@@ -3,9 +3,16 @@ import {
3
3
  CreateCapabilityCatalogItemRequest,
4
4
  DiscoverMcpCapabilitiesResponse,
5
5
  EnableCapabilityRequest,
6
+ ConnectorToolPermissionsResponse,
7
+ UpdateConnectorToolPermissionsRequest,
6
8
  } from "@opengeni/contracts";
7
9
  import type { Hono } from "hono";
8
- import { requireAccessGrant } from "@opengeni/core";
10
+ import {
11
+ requireAccessGrant,
12
+ requireAccessGrantAuthorization,
13
+ getConnectorToolPermissions,
14
+ updateConnectorToolPermissions,
15
+ } from "@opengeni/core";
9
16
  import type { ApiRouteDeps } from "@opengeni/core";
10
17
  import {
11
18
  buildCapabilityCatalog,
@@ -15,10 +22,62 @@ import {
15
22
  enableCapability,
16
23
  officialMcpRegistryUrl,
17
24
  } from "@opengeni/core";
25
+ import { isPersonalConnectionOwnerPrincipal } from "../connection-ownership";
18
26
  import { boundedLimit } from "../http/common";
27
+ import { z } from "zod";
28
+ import pluginSnapshot from "../../../../data/catalog/plugins-snapshot.json";
29
+ const discoverablePlugins = pluginSnapshot.sources
30
+ .flatMap((source) => source.entries.map((entry) => ({ ...entry, provider: source.provider })))
31
+ .sort((a, b) => a.displayName.localeCompare(b.displayName) || a.id.localeCompare(b.id));
32
+ import { inspectMcpAuthentication } from "../integrations/oauth-client";
33
+ import { parseRequestJson } from "../http/request-body";
19
34
 
20
35
  export function registerCapabilityRoutes(app: Hono, deps: ApiRouteDeps): void {
21
36
  const { db, settings } = deps;
37
+ app.get("/v1/workspaces/:workspaceId/capabilities/discovery/plugins", async (c) => {
38
+ await requireAccessGrant(c, deps, c.req.param("workspaceId"), "workspace:read");
39
+ const query = (c.req.query("query") ?? "").trim().toLowerCase();
40
+ const provider = c.req.query("provider");
41
+ const id = c.req.query("id");
42
+ const offset = z.coerce
43
+ .number()
44
+ .int()
45
+ .min(0)
46
+ .max(10000)
47
+ .parse(c.req.query("offset") ?? 0);
48
+ const matches = discoverablePlugins.filter(
49
+ (item) =>
50
+ (!id || item.id === id) &&
51
+ (!provider || item.provider === provider) &&
52
+ query
53
+ .split(/\s+/)
54
+ .every((term) =>
55
+ [
56
+ item.displayName,
57
+ item.name,
58
+ item.description,
59
+ item.category,
60
+ item.author?.name,
61
+ ...item.keywords,
62
+ ...(item.components ?? []),
63
+ ]
64
+ .join(" ")
65
+ .toLowerCase()
66
+ .includes(term),
67
+ ),
68
+ );
69
+ const end = offset + 40;
70
+ return c.json({
71
+ items: matches.slice(offset, end),
72
+ total: matches.length,
73
+ nextOffset: end < matches.length ? end : null,
74
+ });
75
+ });
76
+ app.post("/v1/workspaces/:workspaceId/capabilities/discovery/mcp-auth", async (c) => {
77
+ await requireAccessGrant(c, deps, c.req.param("workspaceId"), "workspace:read");
78
+ const { url } = await parseRequestJson(c, z.object({ url: z.string().url().max(2048) }));
79
+ return c.json(await inspectMcpAuthentication(url, settings));
80
+ });
22
81
 
23
82
  app.get("/v1/workspaces/:workspaceId/capabilities", async (c) => {
24
83
  const workspaceId = c.req.param("workspaceId");
@@ -32,8 +91,8 @@ export function registerCapabilityRoutes(app: Hono, deps: ApiRouteDeps): void {
32
91
 
33
92
  app.post("/v1/workspaces/:workspaceId/capabilities", async (c) => {
34
93
  const workspaceId = c.req.param("workspaceId");
35
- const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
36
- const payload = CreateCapabilityCatalogItemRequest.parse(await c.req.json());
94
+ const grant = await requireAccessGrant(c, deps, workspaceId, "capabilities:manage");
95
+ const payload = await parseRequestJson(c, CreateCapabilityCatalogItemRequest);
37
96
  return c.json(
38
97
  await createCatalogItem({ db, accountId: grant.accountId, workspaceId, payload }),
39
98
  201,
@@ -60,10 +119,52 @@ export function registerCapabilityRoutes(app: Hono, deps: ApiRouteDeps): void {
60
119
  );
61
120
  });
62
121
 
122
+ app.get("/v1/workspaces/:workspaceId/capabilities/:capabilityId/tool-permissions", async (c) => {
123
+ const workspaceId = c.req.param("workspaceId");
124
+ const access = await requireAccessGrantAuthorization(c, deps, workspaceId, "workspace:read");
125
+ return c.json(
126
+ ConnectorToolPermissionsResponse.parse(
127
+ await getConnectorToolPermissions({
128
+ db,
129
+ settings,
130
+ workspaceId,
131
+ grant: access.grant,
132
+ capabilityId: decodeURIComponent(c.req.param("capabilityId")),
133
+ personalOwnerVerified: isPersonalConnectionOwnerPrincipal(access),
134
+ }),
135
+ ),
136
+ );
137
+ });
138
+
139
+ app.patch(
140
+ "/v1/workspaces/:workspaceId/capabilities/:capabilityId/tool-permissions",
141
+ async (c) => {
142
+ const workspaceId = c.req.param("workspaceId");
143
+ const access = await requireAccessGrantAuthorization(
144
+ c,
145
+ deps,
146
+ workspaceId,
147
+ "capabilities:manage",
148
+ );
149
+ const payload = UpdateConnectorToolPermissionsRequest.safeParse(await c.req.json());
150
+ if (!payload.success) return c.json({ error: "Invalid connector permission target" }, 400);
151
+ await updateConnectorToolPermissions({
152
+ db,
153
+ settings,
154
+ workspaceId,
155
+ grant: access.grant,
156
+ capabilityId: decodeURIComponent(c.req.param("capabilityId")),
157
+ personalOwnerVerified: isPersonalConnectionOwnerPrincipal(access),
158
+ payload: payload.data,
159
+ });
160
+ return c.json({ saved: true });
161
+ },
162
+ );
163
+
63
164
  app.post("/v1/workspaces/:workspaceId/capabilities/:capabilityId/enable", async (c) => {
64
165
  const workspaceId = c.req.param("workspaceId");
65
- const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
66
- const payload = EnableCapabilityRequest.parse(await c.req.json());
166
+ const grant = await requireAccessGrant(c, deps, workspaceId, "capabilities:manage");
167
+ const payload = await parseRequestJson(c, EnableCapabilityRequest);
67
168
  const installation = await enableCapability({
68
169
  db,
69
170
  grant,
@@ -78,7 +179,7 @@ export function registerCapabilityRoutes(app: Hono, deps: ApiRouteDeps): void {
78
179
 
79
180
  app.post("/v1/workspaces/:workspaceId/capabilities/:capabilityId/disable", async (c) => {
80
181
  const workspaceId = c.req.param("workspaceId");
81
- const grant = await requireAccessGrant(c, deps, workspaceId, "workspace:admin");
182
+ const grant = await requireAccessGrant(c, deps, workspaceId, "capabilities:manage");
82
183
  const installation = await disableCapability({
83
184
  db,
84
185
  accountId: grant.accountId,
@@ -1,16 +1,22 @@
1
1
  import { z } from "zod";
2
- import { CreateChannelRequest, UpdateChannelRequest } from "@opengeni/contracts";
2
+ import {
3
+ CreateChannelRequest,
4
+ ReorderChannelsRequest,
5
+ UpdateChannelRequest,
6
+ } from "@opengeni/contracts";
3
7
  import {
4
8
  ChannelNameConflictError,
5
9
  createChannel,
6
10
  deleteChannel,
7
11
  listChannels,
12
+ reorderChannels,
8
13
  updateChannel,
9
14
  } from "@opengeni/db";
10
15
  import type { Hono } from "hono";
11
16
  import { HTTPException } from "hono/http-exception";
12
17
  import { requireAccessGrant } from "@opengeni/core";
13
18
  import type { ApiRouteDeps } from "@opengeni/core";
19
+ import { parseRequestJson } from "../http/request-body";
14
20
 
15
21
  // Workspace-shared channels organize root sessions ("workstreams") by work
16
22
  // type in the rail. Deliberately session-permission-gated (not workspace:admin):
@@ -37,7 +43,7 @@ export function registerChannelRoutes(app: Hono, deps: ApiRouteDeps): void {
37
43
  app.post("/v1/workspaces/:workspaceId/channels", async (c) => {
38
44
  const workspaceId = c.req.param("workspaceId");
39
45
  const grant = await requireAccessGrant(c, deps, workspaceId, "sessions:create");
40
- const payload = CreateChannelRequest.parse(await c.req.json());
46
+ const payload = await parseRequestJson(c, CreateChannelRequest);
41
47
  try {
42
48
  const channel = await createChannel(db, {
43
49
  accountId: grant.accountId,
@@ -58,7 +64,7 @@ export function registerChannelRoutes(app: Hono, deps: ApiRouteDeps): void {
58
64
  app.patch("/v1/workspaces/:workspaceId/channels/:channelId", async (c) => {
59
65
  const workspaceId = c.req.param("workspaceId");
60
66
  await requireAccessGrant(c, deps, workspaceId, "sessions:create");
61
- const payload = UpdateChannelRequest.parse(await c.req.json());
67
+ const payload = await parseRequestJson(c, UpdateChannelRequest);
62
68
  try {
63
69
  const channel = await updateChannel(
64
70
  db,
@@ -78,6 +84,17 @@ export function registerChannelRoutes(app: Hono, deps: ApiRouteDeps): void {
78
84
  }
79
85
  });
80
86
 
87
+ app.put("/v1/workspaces/:workspaceId/channels/order", async (c) => {
88
+ const workspaceId = c.req.param("workspaceId");
89
+ await requireAccessGrant(c, deps, workspaceId, "sessions:create");
90
+ const payload = await parseRequestJson(c, ReorderChannelsRequest);
91
+ const channels = await reorderChannels(db, workspaceId, payload.channelIds);
92
+ if (!channels) {
93
+ throw new HTTPException(409, { message: "projects changed; refresh and try again" });
94
+ }
95
+ return c.json(channels);
96
+ });
97
+
81
98
  app.delete("/v1/workspaces/:workspaceId/channels/:channelId", async (c) => {
82
99
  const workspaceId = c.req.param("workspaceId");
83
100
  await requireAccessGrant(c, deps, workspaceId, "sessions:create");