@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
@@ -0,0 +1,488 @@
1
+ import { retryWhileMissing } from "@opengeni/storage";
2
+ import { allowedFirstPartyMcpToolsForSession } from "@opengeni/config";
3
+ import {
4
+ type FirstPartyMcpToolName,
5
+ AgentLearningContext,
6
+ AgentLearningOverridePatch,
7
+ KnowledgeEntryListRequest,
8
+ KnowledgeSavePreparationRequest,
9
+ KnowledgeReviewBatchListRequest,
10
+ KnowledgeEntryBatchReviewRequest,
11
+ AgentInstructionReviewRequest,
12
+ KnowledgeEntryReviewRequest,
13
+ KnowledgeEntryRestoreRequest,
14
+ KnowledgeEntrySaveRequest,
15
+ KnowledgeOriginalFileDownload,
16
+ } from "@opengeni/contracts";
17
+ import {
18
+ prepareKnowledgeFile,
19
+ prepareKnowledgeSave,
20
+ searchKnowledgeEntries,
21
+ KnowledgeVectorFundingError,
22
+ KnowledgeVectorQueryRejectedError,
23
+ hasPermission,
24
+ knowledgeContextForAccess,
25
+ requireAccessGrantAuthorization,
26
+ requireSessionAuthorization,
27
+ requireWorkspaceSettingsGrant,
28
+ type ApiRouteDeps,
29
+ } from "@opengeni/core";
30
+ import {
31
+ getKnowledgeOriginalFile,
32
+ recordAuditEvent,
33
+ archiveKnowledgeEntry,
34
+ getAgentLearningSettings,
35
+ getKnowledgeEntry,
36
+ listAgentLearningOverrides,
37
+ listKnowledgeEntryHistory,
38
+ listKnowledgeReviewBatches,
39
+ nestedPostgresSqlState,
40
+ restoreKnowledgeEntry,
41
+ reviewKnowledgeEntry,
42
+ saveAgentLearningSettings,
43
+ saveKnowledgeEntry,
44
+ reviewKnowledgeEntries,
45
+ reviewAgentInstruction,
46
+ listAgentInstructionReviews,
47
+ KnowledgeEntryIdRequiredError,
48
+ KnowledgeEntryIdTakenError,
49
+ } from "@opengeni/db";
50
+ import type { Context, Hono } from "hono";
51
+ import { HTTPException } from "hono/http-exception";
52
+ import { z } from "zod";
53
+ import { withAccessGrantSessionRlsContext } from "../access-grant-rls";
54
+ import { ApiHttpError } from "../http/api-error";
55
+ import { userContentSignedGetUrlOptions } from "../http/user-content";
56
+ import { parseRequestJson } from "../http/request-body";
57
+
58
+ const ReadSettings = z
59
+ .object({
60
+ scope: z.enum(["workspace", "personal", "context"]).default("workspace"),
61
+ source: AgentLearningContext.optional(),
62
+ })
63
+ .strict();
64
+ const WriteSettings = ReadSettings.extend({
65
+ scope: z.enum(["workspace", "personal"]).default("workspace"),
66
+ operationId: z.uuid(),
67
+ expectedVersion: z.number().int().nonnegative(),
68
+ settings: AgentLearningOverridePatch,
69
+ });
70
+ const Id = z.uuid();
71
+ function knowledgeHttpError(error: unknown): never {
72
+ if (error instanceof HTTPException) throw error;
73
+ if (error instanceof KnowledgeVectorFundingError)
74
+ throw new ApiHttpError(402, {
75
+ code: "payment_required",
76
+ message: error.message,
77
+ details: { code: error.code, keywordAvailable: true },
78
+ });
79
+ if (error instanceof KnowledgeVectorQueryRejectedError)
80
+ throw new ApiHttpError(error.code === "quota" ? 429 : 422, {
81
+ code: error.code === "quota" ? "limit_exceeded" : "validation_failed",
82
+ message: error.message,
83
+ details: { code: error.code, keywordAvailable: true },
84
+ });
85
+ if (error instanceof KnowledgeEntryIdTakenError)
86
+ throw new ApiHttpError(409, {
87
+ code: "conflict",
88
+ message: error.message,
89
+ details: { code: error.code },
90
+ });
91
+ if (error instanceof KnowledgeEntryIdRequiredError)
92
+ throw new ApiHttpError(422, {
93
+ code: "validation_failed",
94
+ message: error.message,
95
+ details: { code: error.code },
96
+ });
97
+ if (error instanceof z.ZodError)
98
+ throw new HTTPException(422, {
99
+ message: error.issues[0]?.message ?? "Invalid Knowledge request",
100
+ });
101
+ const state = nestedPostgresSqlState(error);
102
+ if (state === "40001" || state === "23505")
103
+ throw new HTTPException(409, { message: "This item changed. Refresh it and try again." });
104
+ if (state === "42501")
105
+ throw new HTTPException(403, {
106
+ message: "This Knowledge operation is not available with your access or learning settings.",
107
+ });
108
+ if (state === "22023" || state === "23514")
109
+ throw new HTTPException(422, { message: "Invalid Knowledge operation or reference." });
110
+ throw error;
111
+ }
112
+
113
+ export function registerKnowledgeRoutes(app: Hono, deps: ApiRouteDeps) {
114
+ const base = "/v1/workspaces/:workspaceId/knowledge/entries";
115
+ async function run<T>(
116
+ c: Context,
117
+ write: boolean,
118
+ fn: (context: Awaited<ReturnType<typeof knowledgeContextForAccess>>) => Promise<T>,
119
+ readPermission: "documents:search" | "workspace:read" = "documents:search",
120
+ ) {
121
+ try {
122
+ const access = await requireAccessGrantAuthorization(
123
+ c,
124
+ deps,
125
+ c.req.param("workspaceId")!,
126
+ write
127
+ ? "documents:manage"
128
+ : readPermission === "workspace:read"
129
+ ? undefined
130
+ : readPermission,
131
+ );
132
+ // Preserve existing document-reader access to the settings read while
133
+ // admitting workspace readers to that one endpoint as well.
134
+ const permission = write
135
+ ? "documents:manage"
136
+ : readPermission === "workspace:read" &&
137
+ hasPermission(access.grant.permissions, "documents:search")
138
+ ? "documents:search"
139
+ : readPermission;
140
+ return await withAccessGrantSessionRlsContext(deps, access.grant, async () => {
141
+ const context = await knowledgeContextForAccess(deps, access, permission);
142
+ c.header("cache-control", "private, no-store");
143
+ return fn(context);
144
+ });
145
+ } catch (error) {
146
+ knowledgeHttpError(error);
147
+ }
148
+ }
149
+ app.post("/v1/workspaces/:workspaceId/knowledge/files/:fileId/prepare", (c) =>
150
+ run(c, false, async (context) => {
151
+ const access = await requireAccessGrantAuthorization(
152
+ c,
153
+ deps,
154
+ context.workspaceId,
155
+ "files:read",
156
+ );
157
+ const selected = access.grant.metadata?.firstPartyMcpTools as
158
+ | FirstPartyMcpToolName[]
159
+ | undefined;
160
+ if (
161
+ context.actor.kind !== "agent" ||
162
+ !selected ||
163
+ !allowedFirstPartyMcpToolsForSession(deps.settings, selected).includes(
164
+ "knowledge_retain_file",
165
+ )
166
+ )
167
+ throw new HTTPException(403, {
168
+ message: "Source preparation is unavailable for this task",
169
+ });
170
+ const body = await c.req.text();
171
+ let input: unknown = {};
172
+ try {
173
+ input = body ? JSON.parse(body) : {};
174
+ } catch {
175
+ throw new HTTPException(400, { message: "Invalid source preparation JSON" });
176
+ }
177
+ const { purpose } = z
178
+ .object({ purpose: z.enum(["evidence", "reference"]).default("evidence") })
179
+ .strict()
180
+ .parse(input);
181
+ return c.json(
182
+ await prepareKnowledgeFile(deps, context, Id.parse(c.req.param("fileId")), purpose),
183
+ );
184
+ }),
185
+ );
186
+ app.post(`${base}/:entryId/file/download-url`, (c) =>
187
+ run(c, false, async (context) => {
188
+ const access = await requireAccessGrantAuthorization(
189
+ c,
190
+ deps,
191
+ context.workspaceId,
192
+ "files:read",
193
+ );
194
+ const { revisionId } = await parseRequestJson(
195
+ c,
196
+ z.object({ revisionId: z.uuid().optional() }).strict(),
197
+ );
198
+ const entryId = Id.parse(c.req.param("entryId"));
199
+ const file = await getKnowledgeOriginalFile(deps.db, context, entryId, revisionId);
200
+ if (!file) throw new HTTPException(404, { message: "Original file unavailable" });
201
+ if (!deps.objectStorage)
202
+ throw new HTTPException(503, { message: "File storage is unavailable" });
203
+ if (
204
+ !(await retryWhileMissing(async () =>
205
+ (await deps.objectStorage!.fileExists(file)) ? true : null,
206
+ ))
207
+ )
208
+ throw new HTTPException(410, { message: "Original file bytes are unavailable" });
209
+ const signed = await deps.objectStorage.createGetUrl({
210
+ key: file.objectKey,
211
+ ...userContentSignedGetUrlOptions(file.contentType, file.filename),
212
+ });
213
+ await recordAuditEvent(deps.db, {
214
+ accountId: context.accountId,
215
+ workspaceId: context.workspaceId,
216
+ subjectId: access.grant.subjectId,
217
+ action: "file.signed_url.issued",
218
+ targetType: "knowledge_entry",
219
+ targetId: entryId,
220
+ metadata: { fileId: file.id, kind: "download", expiresAt: signed.expiresAt.toISOString() },
221
+ });
222
+ return c.json(
223
+ KnowledgeOriginalFileDownload.parse({
224
+ url: signed.url,
225
+ expiresAt: signed.expiresAt.toISOString(),
226
+ fileId: file.id,
227
+ filename: file.filename,
228
+ contentType: file.contentType,
229
+ sizeBytes: file.sizeBytes,
230
+ }),
231
+ );
232
+ }),
233
+ );
234
+ app.post(`${base}/prepare-save`, (c) =>
235
+ run(c, false, async (context) => {
236
+ if (context.actor.kind === "agent") {
237
+ const access = await requireAccessGrantAuthorization(
238
+ c,
239
+ deps,
240
+ context.workspaceId,
241
+ "documents:search",
242
+ );
243
+ const selected = access.grant.metadata?.firstPartyMcpTools as
244
+ | FirstPartyMcpToolName[]
245
+ | undefined;
246
+ if (
247
+ !selected ||
248
+ !allowedFirstPartyMcpToolsForSession(deps.settings, selected).includes(
249
+ "knowledge_prepare_save",
250
+ )
251
+ )
252
+ throw new HTTPException(403, {
253
+ message: "Knowledge preparation is unavailable for this task",
254
+ });
255
+ }
256
+ return c.json(
257
+ await prepareKnowledgeSave(
258
+ deps.db,
259
+ context,
260
+ await parseRequestJson(c, KnowledgeSavePreparationRequest),
261
+ () => deps.getDocumentServices().embedder,
262
+ undefined,
263
+ deps.settings,
264
+ ),
265
+ );
266
+ }),
267
+ );
268
+ app.post(`${base}/search`, (c) =>
269
+ run(c, false, async (context) =>
270
+ c.json(
271
+ await searchKnowledgeEntries(
272
+ deps.db,
273
+ context,
274
+ await parseRequestJson(c, KnowledgeEntryListRequest),
275
+ () => deps.getDocumentServices().embedder,
276
+ deps.settings,
277
+ ),
278
+ ),
279
+ ),
280
+ );
281
+ app.get("/v1/workspaces/:workspaceId/knowledge/review-groups", (c) =>
282
+ run(c, true, async (context) => {
283
+ const query = c.req.query();
284
+ return c.json(
285
+ await listKnowledgeReviewBatches(
286
+ deps.db,
287
+ context,
288
+ KnowledgeReviewBatchListRequest.parse({
289
+ ...query,
290
+ ...(query.limit ? { limit: Number(query.limit) } : {}),
291
+ }),
292
+ ),
293
+ );
294
+ }),
295
+ );
296
+ app.post(`${base}/review`, (c) =>
297
+ run(c, true, async (context) =>
298
+ c.json(
299
+ await reviewKnowledgeEntries(
300
+ deps.db,
301
+ context,
302
+ await parseRequestJson(c, KnowledgeEntryBatchReviewRequest),
303
+ ),
304
+ ),
305
+ ),
306
+ );
307
+ app.get(base, (c) =>
308
+ run(c, false, async (context) => {
309
+ const query = c.req.query();
310
+ return c.json(
311
+ await searchKnowledgeEntries(
312
+ deps.db,
313
+ context,
314
+ KnowledgeEntryListRequest.parse({
315
+ ...query,
316
+ ...(query.limit ? { limit: Number(query.limit) } : {}),
317
+ }),
318
+ () => deps.getDocumentServices().embedder,
319
+ deps.settings,
320
+ ),
321
+ );
322
+ }),
323
+ );
324
+ app.post(base, (c) =>
325
+ run(c, true, async (context) => {
326
+ const result = await saveKnowledgeEntry(
327
+ deps.db,
328
+ context,
329
+ await parseRequestJson(c, KnowledgeEntrySaveRequest),
330
+ );
331
+ return c.json(result, result.replayed ? 200 : 201);
332
+ }),
333
+ );
334
+ app.get(`${base}/:entryId/history`, (c) =>
335
+ run(c, false, async (context) =>
336
+ c.json(
337
+ await listKnowledgeEntryHistory(
338
+ deps.db,
339
+ context,
340
+ Id.parse(c.req.param("entryId")),
341
+ c.req.query("beforeRevision")
342
+ ? z.coerce.number().int().positive().parse(c.req.query("beforeRevision"))
343
+ : undefined,
344
+ ),
345
+ ),
346
+ ),
347
+ );
348
+ app.get(`${base}/:entryId`, (c) =>
349
+ run(c, false, async (context) => {
350
+ const options = z
351
+ .object({
352
+ revisionId: Id.optional(),
353
+ view: z.enum(["published", "needs_review", "archived", "rejected"]).optional(),
354
+ })
355
+ .strict()
356
+ .parse(c.req.query());
357
+ const entry = await getKnowledgeEntry(
358
+ deps.db,
359
+ context,
360
+ Id.parse(c.req.param("entryId")),
361
+ options,
362
+ );
363
+ if (!entry) throw new HTTPException(404, { message: "Knowledge entry not found" });
364
+ return c.json(entry);
365
+ }),
366
+ );
367
+ app.post(`${base}/:entryId/review`, (c) =>
368
+ run(c, true, async (context) => {
369
+ const request = KnowledgeEntryReviewRequest.parse({
370
+ ...(await c.req.json()),
371
+ entryId: c.req.param("entryId"),
372
+ });
373
+ return c.json(await reviewKnowledgeEntry(deps.db, context, request));
374
+ }),
375
+ );
376
+ app.post(`${base}/:entryId/restore`, (c) =>
377
+ run(c, true, async (context) => {
378
+ const request = KnowledgeEntryRestoreRequest.parse({
379
+ ...(await c.req.json()),
380
+ entryId: c.req.param("entryId"),
381
+ });
382
+ return c.json(await restoreKnowledgeEntry(deps.db, context, request));
383
+ }),
384
+ );
385
+ app.post(`${base}/:entryId/archive`, (c) =>
386
+ run(c, true, async (context) => {
387
+ const request = await parseRequestJson(
388
+ c,
389
+ z.object({ operationId: Id, expectedVersion: z.number().int().positive() }).strict(),
390
+ );
391
+ return c.json(
392
+ await archiveKnowledgeEntry(deps.db, context, {
393
+ ...request,
394
+ entryId: Id.parse(c.req.param("entryId")),
395
+ }),
396
+ );
397
+ }),
398
+ );
399
+
400
+ const learning = "/v1/workspaces/:workspaceId/agent-learning";
401
+ async function instructionReviewContext(
402
+ c: Context,
403
+ context: Awaited<ReturnType<typeof knowledgeContextForAccess>>,
404
+ ) {
405
+ if (context.actor.kind !== "human")
406
+ throw new HTTPException(403, {
407
+ message: "Instruction review requires an authenticated person",
408
+ });
409
+ await requireWorkspaceSettingsGrant(c, deps, context.workspaceId);
410
+ context.actor.settingsScopes = ["workspace"];
411
+ return context;
412
+ }
413
+ app.get(`${learning}/instructions/reviews`, (c) =>
414
+ run(c, false, async (context) =>
415
+ c.json(
416
+ await listAgentInstructionReviews(
417
+ deps.db,
418
+ await instructionReviewContext(c, context),
419
+ c.req.query("cursor"),
420
+ ),
421
+ ),
422
+ ),
423
+ );
424
+ app.post(`${learning}/instructions/review`, (c) =>
425
+ run(c, false, async (context) =>
426
+ c.json(
427
+ await reviewAgentInstruction(
428
+ deps.db,
429
+ await instructionReviewContext(c, context),
430
+ await parseRequestJson(c, AgentInstructionReviewRequest),
431
+ ),
432
+ ),
433
+ ),
434
+ );
435
+ app.post(`${learning}/read`, (c) =>
436
+ // Members can inspect the settings relevant to their admitted workspace or
437
+ // owner context without gaining Knowledge search or settings-write access.
438
+ // The database still requires a human and checks each source's owner layer.
439
+ run(
440
+ c,
441
+ false,
442
+ async (context) => {
443
+ const request = await parseRequestJson(c, ReadSettings);
444
+ return c.json(
445
+ await getAgentLearningSettings(deps.db, context, request.scope, request.source),
446
+ );
447
+ },
448
+ "workspace:read",
449
+ ),
450
+ );
451
+ app.get(`${learning}/overrides`, (c) =>
452
+ run(c, false, async (context) => {
453
+ const scope = z
454
+ .enum(["workspace", "personal"])
455
+ .default("workspace")
456
+ .parse(c.req.query("scope"));
457
+ return c.json(await listAgentLearningOverrides(deps.db, context, scope));
458
+ }),
459
+ );
460
+ app.post(learning, (c) =>
461
+ run(c, false, async (context) => {
462
+ const request = await parseRequestJson(c, WriteSettings);
463
+ if (context.actor.kind !== "human")
464
+ throw new HTTPException(403, { message: "Agents cannot change learning settings" });
465
+ const access = await requireAccessGrantAuthorization(c, deps, context.workspaceId);
466
+ if (request.source?.kind === "chat") {
467
+ if (!hasPermission(access.grant.permissions, "sessions:control"))
468
+ throw new HTTPException(403, { message: "Chat settings require session control" });
469
+ await requireSessionAuthorization(deps, access.grant, {
470
+ sessionId: request.source.id,
471
+ operation: "session.context.write",
472
+ surface: "http",
473
+ });
474
+ context.actor.settingsScopes = [request.scope];
475
+ } else if (request.source?.kind === "scheduled_task") {
476
+ if (!hasPermission(access.grant.permissions, "scheduled_tasks:manage"))
477
+ throw new HTTPException(403, {
478
+ message: "Scheduled task settings require task management",
479
+ });
480
+ context.actor.settingsScopes = [request.scope];
481
+ } else if (request.scope === "workspace") {
482
+ await requireWorkspaceSettingsGrant(c, deps, context.workspaceId);
483
+ context.actor.settingsScopes = ["workspace"];
484
+ }
485
+ return c.json(await saveAgentLearningSettings(deps.db, context, request));
486
+ }),
487
+ );
488
+ }