@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
@@ -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.3",
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.10",
48
- "@opengeni/capabilities": "^0.2.0",
49
- "@opengeni/codemode": "^0.4.4",
50
- "@opengeni/codex": "^0.2.17",
51
- "@opengeni/config": "^0.16.4",
52
- "@opengeni/contracts": "^1.0.1",
53
- "@opengeni/core": "^1.0.1",
54
- "@opengeni/db": "^1.0.1",
55
- "@opengeni/documents": "^0.5.41",
56
- "@opengeni/events": "^0.3.112",
57
- "@opengeni/github": "^0.4.59",
58
- "@opengeni/network": "^0.2.2",
59
- "@opengeni/observability": "^0.7.7",
60
- "@opengeni/runtime": "^1.0.1",
61
- "@opengeni/storage": "^0.2.96",
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
+ }>;