@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,28 @@
1
+ import { type ToolGatewayIdentity, type WorkspaceArtifactSourceBundle as WorkspaceArtifactSourceBundleValue, type WorkspaceArtifactVersion } from "@opengeni/contracts";
2
+ import type { ObjectStorageDependency } from "@opengeni/core";
3
+ export type PreparedWorkspaceArtifactContent = {
4
+ contentKey: string;
5
+ contentSha256: null;
6
+ sizeBytes: number;
7
+ sourceKey: string | null;
8
+ sourceSha256: null;
9
+ sourceSizeBytes: number | null;
10
+ requestedTools?: ToolGatewayIdentity[];
11
+ persistContent: () => Promise<void>;
12
+ discardContent: () => Promise<void>;
13
+ };
14
+ export declare function prepareWorkspaceArtifactContent(objectStorage: NonNullable<ObjectStorageDependency>, workspaceId: string, input: {
15
+ html: string;
16
+ source?: WorkspaceArtifactSourceBundleValue;
17
+ requestedTools?: ToolGatewayIdentity[];
18
+ }): PreparedWorkspaceArtifactContent;
19
+ export declare function readWorkspaceArtifactContent(objectStorage: NonNullable<ObjectStorageDependency>, input: {
20
+ contentKey: string;
21
+ sourceKey: string | null;
22
+ version: WorkspaceArtifactVersion;
23
+ }): Promise<{
24
+ html: string;
25
+ source: WorkspaceArtifactSourceBundleValue;
26
+ requestedTools: ToolGatewayIdentity[];
27
+ }>;
28
+ export declare function sourceBundleFromHtml(html: string): WorkspaceArtifactSourceBundleValue;
@@ -0,0 +1,7 @@
1
+ import type { WorkspaceArtifactDetailResponse, WorkspaceArtifactListResponse, WorkspaceArtifactMutationResponse, WorkspaceArtifactVersion } from "@opengeni/contracts";
2
+ type CanReadSession = (sessionId: string) => Promise<boolean>;
3
+ export declare function redactWorkspaceArtifactListProvenance(response: WorkspaceArtifactListResponse): WorkspaceArtifactListResponse;
4
+ export declare function projectWorkspaceArtifactVersionProvenance(version: WorkspaceArtifactVersion, canReadSession: CanReadSession): Promise<WorkspaceArtifactVersion>;
5
+ export declare function projectWorkspaceArtifactDetailProvenance(detail: WorkspaceArtifactDetailResponse, canReadSession: CanReadSession): Promise<WorkspaceArtifactDetailResponse>;
6
+ export declare function projectWorkspaceArtifactMutationProvenance(response: WorkspaceArtifactMutationResponse, canReadSession: CanReadSession): Promise<WorkspaceArtifactMutationResponse>;
7
+ export {};
@@ -0,0 +1,10 @@
1
+ import type { WorkspaceDeleteObserver } from "@opengeni/db";
2
+ import type { Observability } from "@opengeni/observability";
3
+ /**
4
+ * Retain exact workspace deletion timing and inventory without putting tenant
5
+ * identifiers in metric labels. Observer failures never change deletion truth.
6
+ */
7
+ export declare function workspaceDeleteObserver(observability: Observability | null | undefined, identity: {
8
+ accountId: string;
9
+ workspaceId: string;
10
+ }): WorkspaceDeleteObserver | undefined;
@@ -0,0 +1,6 @@
1
+ import type { ApiRouteDeps } from "@opengeni/core";
2
+ export declare function deleteWorkspaceForRequest(deps: ApiRouteDeps, input: {
3
+ accountId: string;
4
+ workspaceId: string;
5
+ organizationAdministratorSubjectId?: string;
6
+ }): Promise<void>;
@@ -1,9 +1,7 @@
1
- import { type WorkspaceInstructionPolicyListResponse, type WorkspaceInstructionPolicySnapshot, type WorkspaceStateResponse as WorkspaceStateResponseType } from "@opengeni/contracts";
2
- import type { WorkspaceStateMemoryRecord } from "@opengeni/db";
3
- import type { DocumentInventory } from "@opengeni/documents";
1
+ import { type KnowledgeEntrySummary, type WorkspaceInstructionPolicyListResponse, type WorkspaceInstructionPolicySnapshot, type WorkspaceStateResponse as WorkspaceStateResponseType } from "@opengeni/contracts";
4
2
  type KnowledgeProjectionInput = {
5
- documents: DocumentInventory;
6
- memories: WorkspaceStateMemoryRecord[];
3
+ entries: Pick<KnowledgeEntrySummary, "id" | "scope" | "revision" | "updatedAt">[];
4
+ nextCursor: string | null;
7
5
  };
8
6
  type PreferenceGovernanceIdentity = {
9
7
  id: string;
@@ -0,0 +1,17 @@
1
+ import type { ToolGatewayCatalogEntry } from "@opengeni/contracts";
2
+ import type { Observability } from "@opengeni/observability";
3
+ export type WorkspaceToolGatewayAdapter = "http" | "mcp";
4
+ export type WorkspaceToolGatewayOperation = "approval" | "call";
5
+ export type WorkspaceToolGatewayOutcome = "ok" | "tool_error" | "approval_required" | "catalog_stale" | "invalid_input" | "not_found" | "rate_limited" | "failed";
6
+ /**
7
+ * Low-cardinality gateway telemetry shared by HTTP/SDK/Site and aggregate MCP
8
+ * adapters. Tool names, workspace/subject ids, arguments, results, credentials,
9
+ * and approval tokens are excluded by construction.
10
+ */
11
+ export declare function startWorkspaceToolGatewayObservation(observability: Observability | null | undefined, input: {
12
+ adapter: WorkspaceToolGatewayAdapter;
13
+ operation: WorkspaceToolGatewayOperation;
14
+ source: ToolGatewayCatalogEntry["source"] | "aggregate";
15
+ }): {
16
+ end: (outcome: WorkspaceToolGatewayOutcome) => void;
17
+ };
@@ -0,0 +1,123 @@
1
+ import { resolveSiteSessionOrigin } from "./site-session-origin.js";
2
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
+ import type { Settings } from "@opengeni/config";
4
+ import { ToolGatewayDeclarationsResponse, type AccessGrant, type ToolGatewayCatalog, type ToolGatewayIdentity } from "@opengeni/contracts";
5
+ import { type AccessGrantAuthorization, type ApiRouteDeps } from "@opengeni/core";
6
+ import { buildConnectionTokenResolver, consumeToolGatewayApproval, getWorkspaceArtifactContentRef, issueToolGatewayApproval } from "@opengeni/db";
7
+ import { type PreparedWorkspaceToolGatewayTools } from "@opengeni/runtime/workspace-tool-gateway";
8
+ import { type ToolGatewayDefinition } from "@opengeni/tool-gateway";
9
+ import type { Observability } from "@opengeni/observability";
10
+ export type PreparedWorkspaceToolGateway = Pick<PreparedWorkspaceToolGatewayTools, "toolGateway" | "toolGatewayCatalog" | "close"> & {
11
+ toolGateway: NonNullable<PreparedWorkspaceToolGatewayTools["toolGateway"]>;
12
+ toolGatewayCatalog: NonNullable<PreparedWorkspaceToolGatewayTools["toolGatewayCatalog"]>;
13
+ reauthorize?: () => Promise<void>;
14
+ };
15
+ type WorkspaceSiteToolContext = {
16
+ siteArtifactId: string;
17
+ siteVersionId: string;
18
+ identity: {
19
+ serverId: string;
20
+ toolName: string;
21
+ };
22
+ };
23
+ type AuthorizeWorkspaceSiteTool = (db: ApiRouteDeps["db"], grant: AccessGrant, context: WorkspaceSiteToolContext) => Promise<void>;
24
+ export declare function grantUsesAttemptScopedMcp(grant: AccessGrant): boolean;
25
+ export declare function requireWorkspaceToolGatewayGrant(grant: AccessGrant): void;
26
+ export declare function requireWorkspaceToolGatewayAuthorization(authorization: AccessGrantAuthorization): AccessGrant;
27
+ export declare function prepareWorkspaceToolGateway(routeDeps: ApiRouteDeps, authorization: AccessGrantAuthorization): Promise<PreparedWorkspaceToolGateway>;
28
+ export declare function prepareMcpOAuthWorkspaceToolGateway(routeDeps: ApiRouteDeps, grant: AccessGrant, allowedIdentities: readonly {
29
+ serverId: string;
30
+ toolName: string;
31
+ }[]): Promise<PreparedWorkspaceToolGateway>;
32
+ export declare function prepareWorkspaceToolGatewayForGrant(routeDeps: ApiRouteDeps, grant: AccessGrant, allowedIdentities?: readonly {
33
+ serverId: string;
34
+ toolName: string;
35
+ }[]): Promise<PreparedWorkspaceToolGateway>;
36
+ /** Keep live caller authority independent of native connection acquisition and refresh. */
37
+ export declare function withWorkspaceConnectionAuthorization(resolve: ReturnType<typeof buildConnectionTokenResolver>, reauthorize?: () => Promise<void>): ReturnType<typeof buildConnectionTokenResolver>;
38
+ export declare function workspaceToolGatewayDefinitionFilter(settings: Pick<Settings, "allowedFirstPartyMcpTools">, allowedIdentities?: readonly ToolGatewayIdentity[]): (definition: ToolGatewayDefinition) => boolean;
39
+ export declare function workspaceToolGatewaySettingsForGrant(settings: Settings, grant: AccessGrant, allowedIdentities?: readonly {
40
+ serverId: string;
41
+ toolName: string;
42
+ }[]): Settings;
43
+ export declare function buildWorkspaceToolGatewayMcpServer(prepared: PreparedWorkspaceToolGateway, grant: AccessGrant, observability?: Observability): Server;
44
+ export declare function callWorkspaceToolGateway(prepared: PreparedWorkspaceToolGateway, grant: AccessGrant, input: unknown, db?: ApiRouteDeps["db"], consumeApproval?: typeof consumeToolGatewayApproval, observability?: Observability, authorizeSiteTool?: AuthorizeWorkspaceSiteTool, resolveOrigin?: typeof resolveSiteSessionOrigin): Promise<{
45
+ operationId: string;
46
+ catalogDigest: string;
47
+ result: {
48
+ [x: string]: unknown;
49
+ content: ({
50
+ [x: string]: unknown;
51
+ type: "text";
52
+ text: string;
53
+ annotations?: Record<string, import("zod").JSONType> | undefined;
54
+ _meta?: Record<string, import("zod").JSONType> | undefined;
55
+ } | {
56
+ [x: string]: unknown;
57
+ type: "image";
58
+ data: string;
59
+ mimeType: string;
60
+ annotations?: Record<string, import("zod").JSONType> | undefined;
61
+ _meta?: Record<string, import("zod").JSONType> | undefined;
62
+ } | {
63
+ [x: string]: unknown;
64
+ type: "audio";
65
+ data: string;
66
+ mimeType: string;
67
+ annotations?: Record<string, import("zod").JSONType> | undefined;
68
+ _meta?: Record<string, import("zod").JSONType> | undefined;
69
+ } | {
70
+ [x: string]: unknown;
71
+ type: "resource_link";
72
+ name: string;
73
+ title?: string | undefined;
74
+ uri: string;
75
+ description?: string | undefined;
76
+ mimeType?: string | undefined;
77
+ size?: number | undefined;
78
+ icons?: {
79
+ src: string;
80
+ mimeType?: string | undefined;
81
+ sizes?: string[] | undefined;
82
+ theme?: "dark" | "light" | undefined;
83
+ }[] | undefined;
84
+ annotations?: Record<string, import("zod").JSONType> | undefined;
85
+ _meta?: Record<string, import("zod").JSONType> | undefined;
86
+ } | {
87
+ [x: string]: unknown;
88
+ type: "resource";
89
+ resource: {
90
+ [x: string]: unknown;
91
+ uri: string;
92
+ mimeType?: string | undefined;
93
+ text: string;
94
+ _meta?: Record<string, import("zod").JSONType> | undefined;
95
+ } | {
96
+ [x: string]: unknown;
97
+ uri: string;
98
+ mimeType?: string | undefined;
99
+ blob: string;
100
+ _meta?: Record<string, import("zod").JSONType> | undefined;
101
+ };
102
+ annotations?: Record<string, import("zod").JSONType> | undefined;
103
+ _meta?: Record<string, import("zod").JSONType> | undefined;
104
+ })[];
105
+ structuredContent?: Record<string, import("zod").JSONType> | undefined;
106
+ isError?: boolean | undefined;
107
+ _meta?: Record<string, import("zod").JSONType> | undefined;
108
+ };
109
+ }>;
110
+ export declare function approveWorkspaceToolGatewayCall(prepared: PreparedWorkspaceToolGateway, grant: AccessGrant, db: ApiRouteDeps["db"], input: unknown, issueApproval?: typeof issueToolGatewayApproval, observability?: Observability): Promise<{
111
+ operationId: string;
112
+ catalogDigest: string;
113
+ identity: {
114
+ serverId: string;
115
+ toolName: string;
116
+ };
117
+ approvalToken: string;
118
+ expiresAt: string;
119
+ }>;
120
+ export declare function requireWorkspaceSiteToolAuthorization(db: ApiRouteDeps["db"], grant: AccessGrant, context: WorkspaceSiteToolContext, resolveVersion?: typeof getWorkspaceArtifactContentRef): Promise<void>;
121
+ export declare function toolGatewayCatalogResponse(catalog: ToolGatewayCatalog): ToolGatewayCatalog;
122
+ export declare function workspaceToolGatewayDeclarations(prepared: PreparedWorkspaceToolGateway): ToolGatewayDeclarationsResponse;
123
+ export {};
@@ -0,0 +1,26 @@
1
+ import { type Settings } from "@opengeni/config";
2
+ import { type Database } from "@opengeni/db";
3
+ import { pinnedFetch } from "@opengeni/network";
4
+ import type { Observability } from "@opengeni/observability";
5
+ export declare const WORKSPACE_WEBHOOK_DISPATCH_BATCH_SIZE = 32;
6
+ export type WorkspaceWebhookDispatchDeps = {
7
+ db: Database;
8
+ settings: Settings;
9
+ observability?: Pick<Observability, "info" | "warn" | "error">;
10
+ fetch?: typeof pinnedFetch;
11
+ };
12
+ export type WorkspaceWebhookBatchResult = {
13
+ claimed: number;
14
+ delivered: number;
15
+ failed: number;
16
+ };
17
+ /** Claim and deliver one globally bounded batch. At-least-once: receivers dedupe on event id. */
18
+ export declare function drainWorkspaceWebhookDeliveries(deps: WorkspaceWebhookDispatchDeps): Promise<WorkspaceWebhookBatchResult>;
19
+ /**
20
+ * One non-overlapping loop per API replica. PostgreSQL claims coordinate
21
+ * replicas; a crash only delays a delivery until its claim expires.
22
+ */
23
+ export declare function startWorkspaceWebhookDispatchPump(deps: WorkspaceWebhookDispatchDeps, options?: {
24
+ intervalMs?: number;
25
+ drain?: (deps: WorkspaceWebhookDispatchDeps) => Promise<WorkspaceWebhookBatchResult>;
26
+ }): () => Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeni/api-router",
3
- "version": "0.30.1",
3
+ "version": "1.0.0",
4
4
  "description": "OpenGeni HTTP surface: the Hono adapter/router (createApp), routes, MCP HTTP transport, and HTTP access adapters over @opengeni/core. An engine-distribution surface — its runtime closure includes engine-internal packages.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -41,32 +41,36 @@
41
41
  "@aws-sdk/client-s3": "^3.1044.0",
42
42
  "@aws-sdk/s3-request-presigner": "^3.1044.0",
43
43
  "@hono/zod-validator": "^0.7.6",
44
- "@llamaindex/liteparse": "^1.5.3",
44
+ "@llamaindex/liteparse": "2.14.2",
45
45
  "@modelcontextprotocol/sdk": "^1.29.0",
46
- "@opengeni/agent-proto": "^0.5.0",
47
- "@opengeni/artifact-tool": "^0.2.8",
48
- "@opengeni/capabilities": "^0.2.0",
49
- "@opengeni/codemode": "^0.4.2",
50
- "@opengeni/codex": "^0.2.17",
51
- "@opengeni/config": "^0.16.2",
52
- "@opengeni/contracts": "^0.50.0",
53
- "@opengeni/core": "^0.28.1",
54
- "@opengeni/db": "^0.36.1",
55
- "@opengeni/documents": "^0.5.39",
56
- "@opengeni/events": "^0.3.110",
57
- "@opengeni/github": "^0.4.57",
58
- "@opengeni/network": "^0.2.2",
59
- "@opengeni/observability": "^0.7.5",
60
- "@opengeni/runtime": "^0.23.1",
61
- "@opengeni/storage": "^0.2.94",
62
- "@opengeni/xai-subscription": "^0.1.0",
46
+ "@opengeni/agent-proto": "1.0.0",
47
+ "@opengeni/artifact-tool": "1.0.0",
48
+ "@opengeni/capabilities": "1.0.0",
49
+ "@opengeni/codemode": "1.0.0",
50
+ "@opengeni/codex": "1.0.0",
51
+ "@opengeni/config": "1.0.0",
52
+ "@opengeni/contracts": "1.0.0",
53
+ "@opengeni/core": "1.0.0",
54
+ "@opengeni/db": "1.0.0",
55
+ "@opengeni/documents": "1.0.0",
56
+ "@opengeni/events": "1.0.0",
57
+ "@opengeni/github": "1.0.0",
58
+ "@opengeni/interaction": "1.0.0",
59
+ "@opengeni/network": "1.0.0",
60
+ "@opengeni/observability": "1.0.0",
61
+ "@opengeni/runtime": "1.0.0",
62
+ "@opengeni/storage": "1.0.0",
63
+ "@opengeni/tool-gateway": "1.0.0",
64
+ "@opengeni/xai-subscription": "1.0.0",
63
65
  "@temporalio/client": "^1.17.0",
64
66
  "better-auth": "^1.6.14",
65
67
  "hono": "^4.12.18",
68
+ "json-bigint": "^1.0.0",
66
69
  "pg": "^8.21.0",
67
70
  "resend": "^6.12.4",
68
71
  "sharp": "^0.34.5",
69
72
  "stripe": "^22.2.0",
73
+ "ws": "8.21.1",
70
74
  "zod": "^4.2.1"
71
75
  },
72
76
  "engines": {
@@ -0,0 +1,75 @@
1
+ import type { AccessGrant } from "@opengeni/contracts";
2
+ import {
3
+ requireLiveAgentAttemptAuthorization,
4
+ SessionAuthorizationDeniedError,
5
+ type ApiRouteDeps,
6
+ } from "@opengeni/core";
7
+ import {
8
+ freezeAgentLearningPolicy,
9
+ withSessionRlsActorContext,
10
+ withCreditDebitAttribution,
11
+ } from "@opengeni/db";
12
+ import { HTTPException } from "hono/http-exception";
13
+
14
+ export async function withAccessGrantSessionRlsContext<T>(
15
+ deps: Pick<ApiRouteDeps, "db">,
16
+ grant: AccessGrant,
17
+ fn: () => Promise<T>,
18
+ ): Promise<T> {
19
+ if (grant.principalKind !== "agent_attempt") {
20
+ return await withCreditDebitAttribution(
21
+ grant.principalKind === "human_session"
22
+ ? { kind: "human", initiatingHumanSubjectId: grant.subjectId }
23
+ : grant.principalKind === "service" ||
24
+ grant.principalKind === "api_key" ||
25
+ grant.principalKind === "configured_key" ||
26
+ grant.principalKind === "mcp_gateway"
27
+ ? { kind: "service" }
28
+ : { kind: "unknown" },
29
+ () => withSessionRlsActorContext({ subjectId: grant.subjectId }, fn),
30
+ );
31
+ }
32
+ const callerSessionId = grant.metadata?.sessionId;
33
+ if (typeof callerSessionId !== "string") {
34
+ throw new HTTPException(403, { message: "agent attempt authority is invalid" });
35
+ }
36
+ try {
37
+ const actor = await requireLiveAgentAttemptAuthorization(deps.db, grant, callerSessionId);
38
+ const learning = await freezeAgentLearningPolicy(deps.db, {
39
+ accountId: grant.accountId,
40
+ workspaceId: grant.workspaceId,
41
+ actor: {
42
+ kind: "agent",
43
+ sessionId: actor.callerSessionId,
44
+ turnId: actor.turnId,
45
+ attemptId: actor.attemptId,
46
+ executionGeneration: actor.executionGeneration,
47
+ },
48
+ });
49
+ return await withCreditDebitAttribution(
50
+ {
51
+ kind: "turn",
52
+ turnId: actor.turnId,
53
+ initiatingHumanSubjectId: actor.initiatingHumanSubjectId ?? null,
54
+ },
55
+ () =>
56
+ withSessionRlsActorContext(
57
+ {
58
+ subjectId: actor.subjectId,
59
+ initiatingHumanSubjectId: actor.initiatingHumanSubjectId,
60
+ privateFileOwnerSubjectId:
61
+ learning.defaultScope === "personal" ? learning.subjectId : null,
62
+ },
63
+ fn,
64
+ ),
65
+ );
66
+ } catch (error) {
67
+ if (error instanceof SessionAuthorizationDeniedError) {
68
+ throw new HTTPException(403, {
69
+ message: "agent attempt authority is invalid",
70
+ cause: error,
71
+ });
72
+ }
73
+ throw error;
74
+ }
75
+ }
@@ -0,0 +1,14 @@
1
+ import type { Observability } from "@opengeni/observability";
2
+
3
+ /** Only committed, non-replayed server event identities mint admission anchors. */
4
+ export function recordAcceptedApiAdmission(
5
+ observability: Observability | undefined,
6
+ result: { accepted: { id: string }; replay: boolean },
7
+ ): void {
8
+ if (result.replay) return;
9
+ try {
10
+ observability?.recordAdmissionTrace(result.accepted.id);
11
+ } catch {
12
+ // Telemetry must never turn a committed admission into an HTTP failure.
13
+ }
14
+ }
@@ -0,0 +1,23 @@
1
+ export type ApiWebSocketConnection = Readonly<{
2
+ attach(socket: ApiWebSocketLike): void;
3
+ receive(message: string | Uint8Array | ArrayBuffer): void;
4
+ transportClosed(): void;
5
+ }>;
6
+
7
+ export type ApiWebSocketLike = Readonly<{
8
+ data: ApiWebSocketConnection;
9
+ send(data: Uint8Array, compress?: boolean): number;
10
+ close(code?: number, reason?: string): void;
11
+ readonly bufferedAmount?: number;
12
+ getBufferedAmount?(): number;
13
+ }>;
14
+
15
+ export type ApiWebSocketUpgradeServer = Readonly<{
16
+ upgrade(
17
+ request: Request,
18
+ options: Readonly<{
19
+ data: ApiWebSocketConnection;
20
+ headers: HeadersInit;
21
+ }>,
22
+ ): boolean;
23
+ }>;