@beeuni/sdk 0.1.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 (938) hide show
  1. package/README.md +1234 -0
  2. package/dist/beeuni.esm.min.js +96 -0
  3. package/dist/beeuni.global.js +96 -0
  4. package/dist/browser/cache/idb-sync-cache.d.ts +12 -0
  5. package/dist/browser/cache/idb-sync-cache.js +88 -0
  6. package/dist/browser/session-sync/mirror-paging.d.ts +7 -0
  7. package/dist/browser/session-sync/mirror-paging.js +10 -0
  8. package/dist/browser/session-sync/server-transcript-mirror.d.ts +33 -0
  9. package/dist/browser/session-sync/server-transcript-mirror.js +112 -0
  10. package/dist/browser/session-sync/session-cache-ownership.d.ts +8 -0
  11. package/dist/browser/session-sync/session-cache-ownership.js +36 -0
  12. package/dist/browser/session-sync/session-sync-registry.d.ts +44 -0
  13. package/dist/browser/session-sync/session-sync-registry.js +253 -0
  14. package/dist/browser/session-sync/visibility.d.ts +6 -0
  15. package/dist/browser/session-sync/visibility.js +21 -0
  16. package/dist/browser/stores/diagnostics-store.d.ts +61 -0
  17. package/dist/browser/stores/diagnostics-store.js +216 -0
  18. package/dist/browser/stores/opencode-compaction-store.d.ts +7 -0
  19. package/dist/browser/stores/opencode-compaction-store.js +21 -0
  20. package/dist/browser/stores/opencode-pending-store.d.ts +19 -0
  21. package/dist/browser/stores/opencode-pending-store.js +65 -0
  22. package/dist/browser/stores/sandbox-connection-store.d.ts +35 -0
  23. package/dist/browser/stores/sandbox-connection-store.js +230 -0
  24. package/dist/browser/stores/server-store.d.ts +4 -0
  25. package/dist/browser/stores/server-store.js +7 -0
  26. package/dist/browser/stores/session-working-store.d.ts +21 -0
  27. package/dist/browser/stores/session-working-store.js +106 -0
  28. package/dist/browser/stores/sync-store/ascending-id.d.ts +1 -0
  29. package/dist/browser/stores/sync-store/ascending-id.js +17 -0
  30. package/dist/browser/stores/sync-store/binary.d.ts +6 -0
  31. package/dist/browser/stores/sync-store/binary.js +17 -0
  32. package/dist/browser/stores/sync-store/delta-event-window.d.ts +1 -0
  33. package/dist/browser/stores/sync-store/delta-event-window.js +1 -0
  34. package/dist/browser/stores/sync-store/reconcile-parts.d.ts +12 -0
  35. package/dist/browser/stores/sync-store/reconcile-parts.js +53 -0
  36. package/dist/browser/stores/sync-store/types.d.ts +20 -0
  37. package/dist/browser/stores/sync-store/types.js +1 -0
  38. package/dist/browser/stores/sync-store.d.ts +65 -0
  39. package/dist/browser/stores/sync-store.js +1336 -0
  40. package/dist/core/agents/composer-agents.d.ts +19 -0
  41. package/dist/core/agents/composer-agents.js +57 -0
  42. package/dist/core/attachments/limits.d.ts +3 -0
  43. package/dist/core/attachments/limits.js +3 -0
  44. package/dist/core/attachments/prompt-attachments.d.ts +37 -0
  45. package/dist/core/attachments/prompt-attachments.js +377 -0
  46. package/dist/core/auth/app-viewer.d.ts +43 -0
  47. package/dist/core/auth/app-viewer.js +104 -0
  48. package/dist/core/auth/beeuni-member.d.ts +31 -0
  49. package/dist/core/auth/beeuni-member.js +168 -0
  50. package/dist/core/auth/session.d.ts +24 -0
  51. package/dist/core/auth/session.js +145 -0
  52. package/dist/core/cache/persisted-query-cache.d.ts +55 -0
  53. package/dist/core/cache/persisted-query-cache.js +220 -0
  54. package/dist/core/client/beeuni.d.ts +1216 -0
  55. package/dist/core/client/beeuni.js +96 -0
  56. package/dist/core/client/binding-types.d.ts +1 -0
  57. package/dist/core/client/binding-types.js +1 -0
  58. package/dist/core/client/facade-accounts.d.ts +51 -0
  59. package/dist/core/client/facade-accounts.js +53 -0
  60. package/dist/core/client/facade-catalog.d.ts +54 -0
  61. package/dist/core/client/facade-catalog.js +53 -0
  62. package/dist/core/client/facade-commerce.d.ts +39 -0
  63. package/dist/core/client/facade-commerce.js +40 -0
  64. package/dist/core/client/facade-iam.d.ts +43 -0
  65. package/dist/core/client/facade-iam.js +45 -0
  66. package/dist/core/client/facade-identity.d.ts +103 -0
  67. package/dist/core/client/facade-identity.js +33 -0
  68. package/dist/core/client/facade-preview.d.ts +3 -0
  69. package/dist/core/client/facade-preview.js +30 -0
  70. package/dist/core/client/project-access-resources.d.ts +65 -0
  71. package/dist/core/client/project-access-resources.js +54 -0
  72. package/dist/core/client/project-access-security.d.ts +109 -0
  73. package/dist/core/client/project-access-security.js +33 -0
  74. package/dist/core/client/project-connections.d.ts +32 -0
  75. package/dist/core/client/project-connections.js +18 -0
  76. package/dist/core/client/project-connectors.d.ts +15 -0
  77. package/dist/core/client/project-connectors.js +34 -0
  78. package/dist/core/client/project-core.d.ts +74 -0
  79. package/dist/core/client/project-core.js +25 -0
  80. package/dist/core/client/project-membership.d.ts +62 -0
  81. package/dist/core/client/project-membership.js +24 -0
  82. package/dist/core/client/project-operations-admin.d.ts +125 -0
  83. package/dist/core/client/project-operations-admin.js +26 -0
  84. package/dist/core/client/project-operations-review.d.ts +35 -0
  85. package/dist/core/client/project-operations-review.js +24 -0
  86. package/dist/core/client/project-operations-workspace.d.ts +94 -0
  87. package/dist/core/client/project-operations-workspace.js +36 -0
  88. package/dist/core/client/project-operations.d.ts +237 -0
  89. package/dist/core/client/project-operations.js +41 -0
  90. package/dist/core/client/project-platform-resources.d.ts +34 -0
  91. package/dist/core/client/project-platform-resources.js +27 -0
  92. package/dist/core/client/project-platform-security.d.ts +76 -0
  93. package/dist/core/client/project-platform-security.js +31 -0
  94. package/dist/core/client/project-platform-settings.d.ts +53 -0
  95. package/dist/core/client/project-platform-settings.js +23 -0
  96. package/dist/core/client/session-actions-resources.d.ts +7 -0
  97. package/dist/core/client/session-actions-resources.js +13 -0
  98. package/dist/core/client/session-actions-security.d.ts +22 -0
  99. package/dist/core/client/session-actions-security.js +38 -0
  100. package/dist/core/client/session-actions-services.d.ts +39 -0
  101. package/dist/core/client/session-actions-services.js +34 -0
  102. package/dist/core/client/session-context.d.ts +21 -0
  103. package/dist/core/client/session-context.js +1 -0
  104. package/dist/core/client/session-defaults.d.ts +8 -0
  105. package/dist/core/client/session-defaults.js +35 -0
  106. package/dist/core/client/session-files.d.ts +20 -0
  107. package/dist/core/client/session-files.js +18 -0
  108. package/dist/core/client/session-handle.d.ts +207 -0
  109. package/dist/core/client/session-handle.js +53 -0
  110. package/dist/core/client/session-lifecycle-resources.d.ts +76 -0
  111. package/dist/core/client/session-lifecycle-resources.js +44 -0
  112. package/dist/core/client/session-lifecycle-security.d.ts +42 -0
  113. package/dist/core/client/session-lifecycle-security.js +31 -0
  114. package/dist/core/client/session-preview.d.ts +7 -0
  115. package/dist/core/client/session-preview.js +11 -0
  116. package/dist/core/client/session-readiness.d.ts +10 -0
  117. package/dist/core/client/session-readiness.js +54 -0
  118. package/dist/core/client/session-runtime.d.ts +21 -0
  119. package/dist/core/client/session-runtime.js +15 -0
  120. package/dist/core/client/session-shared.d.ts +20 -0
  121. package/dist/core/client/session-shared.js +22 -0
  122. package/dist/core/client/session-start.d.ts +2 -0
  123. package/dist/core/client/session-start.js +39 -0
  124. package/dist/core/files/client.d.ts +68 -0
  125. package/dist/core/files/client.js +491 -0
  126. package/dist/core/files/types.d.ts +75 -0
  127. package/dist/core/files/types.js +1 -0
  128. package/dist/core/http/abort-error.d.ts +5 -0
  129. package/dist/core/http/abort-error.js +74 -0
  130. package/dist/core/http/abort.d.ts +3 -0
  131. package/dist/core/http/abort.js +34 -0
  132. package/dist/core/http/api/errors.d.ts +68 -0
  133. package/dist/core/http/api/errors.js +132 -0
  134. package/dist/core/http/api-client.d.ts +44 -0
  135. package/dist/core/http/api-client.js +121 -0
  136. package/dist/core/http/auth.d.ts +12 -0
  137. package/dist/core/http/auth.js +37 -0
  138. package/dist/core/http/authenticated-request.d.ts +5 -0
  139. package/dist/core/http/authenticated-request.js +11 -0
  140. package/dist/core/http/config.d.ts +35 -0
  141. package/dist/core/http/config.js +23 -0
  142. package/dist/core/http/env.d.ts +1 -0
  143. package/dist/core/http/env.js +8 -0
  144. package/dist/core/http/feature-flags.d.ts +8 -0
  145. package/dist/core/http/feature-flags.js +41 -0
  146. package/dist/core/http/fresh-sessions.d.ts +3 -0
  147. package/dist/core/http/fresh-sessions.js +17 -0
  148. package/dist/core/http/impersonation.d.ts +14 -0
  149. package/dist/core/http/impersonation.js +110 -0
  150. package/dist/core/http/instance-routes.d.ts +16 -0
  151. package/dist/core/http/instance-routes.js +99 -0
  152. package/dist/core/http/logger.d.ts +10 -0
  153. package/dist/core/http/logger.js +29 -0
  154. package/dist/core/http/request.d.ts +2 -0
  155. package/dist/core/http/request.js +194 -0
  156. package/dist/core/http/response-error.d.ts +2 -0
  157. package/dist/core/http/response-error.js +92 -0
  158. package/dist/core/http/runtime-errors.d.ts +32 -0
  159. package/dist/core/http/runtime-errors.js +116 -0
  160. package/dist/core/http/session-stopped.d.ts +2 -0
  161. package/dist/core/http/session-stopped.js +16 -0
  162. package/dist/core/http/transport.d.ts +20 -0
  163. package/dist/core/http/transport.js +133 -0
  164. package/dist/core/models/bedrock-invokable.d.ts +3 -0
  165. package/dist/core/models/bedrock-invokable.js +22 -0
  166. package/dist/core/models/composer-model.d.ts +20 -0
  167. package/dist/core/models/composer-model.js +57 -0
  168. package/dist/core/models/model-flatten.d.ts +43 -0
  169. package/dist/core/models/model-flatten.js +73 -0
  170. package/dist/core/models/model-key.d.ts +8 -0
  171. package/dist/core/models/model-key.js +18 -0
  172. package/dist/core/models/model-lookup.d.ts +2 -0
  173. package/dist/core/models/model-lookup.js +3 -0
  174. package/dist/core/models/model-visibility.d.ts +28 -0
  175. package/dist/core/models/model-visibility.js +110 -0
  176. package/dist/core/models/provider-selection.d.ts +72 -0
  177. package/dist/core/models/provider-selection.js +307 -0
  178. package/dist/core/rest/platform-client/auth.d.ts +139 -0
  179. package/dist/core/rest/platform-client/auth.js +92 -0
  180. package/dist/core/rest/platform-client/backups.d.ts +18 -0
  181. package/dist/core/rest/platform-client/backups.js +12 -0
  182. package/dist/core/rest/platform-client/connector-setup.d.ts +35 -0
  183. package/dist/core/rest/platform-client/connector-setup.js +105 -0
  184. package/dist/core/rest/platform-client/github-app.d.ts +45 -0
  185. package/dist/core/rest/platform-client/github-app.js +54 -0
  186. package/dist/core/rest/platform-client/host-boundary.d.ts +140 -0
  187. package/dist/core/rest/platform-client/host-boundary.js +188 -0
  188. package/dist/core/rest/platform-client/index.d.ts +12 -0
  189. package/dist/core/rest/platform-client/index.js +12 -0
  190. package/dist/core/rest/platform-client/instance-admin.d.ts +53 -0
  191. package/dist/core/rest/platform-client/instance-admin.js +20 -0
  192. package/dist/core/rest/platform-client/invites.d.ts +31 -0
  193. package/dist/core/rest/platform-client/invites.js +11 -0
  194. package/dist/core/rest/platform-client/lifecycle.d.ts +27 -0
  195. package/dist/core/rest/platform-client/lifecycle.js +80 -0
  196. package/dist/core/rest/platform-client/members.d.ts +14 -0
  197. package/dist/core/rest/platform-client/members.js +28 -0
  198. package/dist/core/rest/platform-client/shared.d.ts +18 -0
  199. package/dist/core/rest/platform-client/shared.js +99 -0
  200. package/dist/core/rest/platform-client/ssh.d.ts +21 -0
  201. package/dist/core/rest/platform-client/ssh.js +6 -0
  202. package/dist/core/rest/platform-client/types.d.ts +47 -0
  203. package/dist/core/rest/platform-client/types.js +10 -0
  204. package/dist/core/rest/platform-client/updates.d.ts +77 -0
  205. package/dist/core/rest/platform-client/updates.js +54 -0
  206. package/dist/core/rest/platform-client/urls.d.ts +3 -0
  207. package/dist/core/rest/platform-client/urls.js +16 -0
  208. package/dist/core/rest/projects-client/access.d.ts +226 -0
  209. package/dist/core/rest/projects-client/access.js +82 -0
  210. package/dist/core/rest/projects-client/account-lifecycle.d.ts +21 -0
  211. package/dist/core/rest/projects-client/account-lifecycle.js +25 -0
  212. package/dist/core/rest/projects-client/account-secret-resources.d.ts +60 -0
  213. package/dist/core/rest/projects-client/account-secret-resources.js +40 -0
  214. package/dist/core/rest/projects-client/accounts.d.ts +240 -0
  215. package/dist/core/rest/projects-client/accounts.js +82 -0
  216. package/dist/core/rest/projects-client/admin-providers.d.ts +131 -0
  217. package/dist/core/rest/projects-client/admin-providers.js +39 -0
  218. package/dist/core/rest/projects-client/agent-config.d.ts +72 -0
  219. package/dist/core/rest/projects-client/agent-config.js +39 -0
  220. package/dist/core/rest/projects-client/agent-connectors.d.ts +6 -0
  221. package/dist/core/rest/projects-client/agent-connectors.js +32 -0
  222. package/dist/core/rest/projects-client/agent-scope.d.ts +13 -0
  223. package/dist/core/rest/projects-client/agent-scope.js +7 -0
  224. package/dist/core/rest/projects-client/apps-fleet.d.ts +82 -0
  225. package/dist/core/rest/projects-client/apps-fleet.js +45 -0
  226. package/dist/core/rest/projects-client/apps.d.ts +356 -0
  227. package/dist/core/rest/projects-client/apps.js +126 -0
  228. package/dist/core/rest/projects-client/assignments.d.ts +73 -0
  229. package/dist/core/rest/projects-client/assignments.js +45 -0
  230. package/dist/core/rest/projects-client/audit-filter.d.ts +4 -0
  231. package/dist/core/rest/projects-client/audit-filter.js +9 -0
  232. package/dist/core/rest/projects-client/audit.d.ts +125 -0
  233. package/dist/core/rest/projects-client/audit.js +49 -0
  234. package/dist/core/rest/projects-client/billing.d.ts +390 -0
  235. package/dist/core/rest/projects-client/billing.js +257 -0
  236. package/dist/core/rest/projects-client/change-requests.d.ts +116 -0
  237. package/dist/core/rest/projects-client/change-requests.js +50 -0
  238. package/dist/core/rest/projects-client/channels.d.ts +131 -0
  239. package/dist/core/rest/projects-client/channels.js +112 -0
  240. package/dist/core/rest/projects-client/connector-run.d.ts +62 -0
  241. package/dist/core/rest/projects-client/connector-run.js +155 -0
  242. package/dist/core/rest/projects-client/connectors.d.ts +721 -0
  243. package/dist/core/rest/projects-client/connectors.js +421 -0
  244. package/dist/core/rest/projects-client/drives.d.ts +149 -0
  245. package/dist/core/rest/projects-client/drives.js +88 -0
  246. package/dist/core/rest/projects-client/files.d.ts +45 -0
  247. package/dist/core/rest/projects-client/files.js +69 -0
  248. package/dist/core/rest/projects-client/gateway.d.ts +257 -0
  249. package/dist/core/rest/projects-client/gateway.js +72 -0
  250. package/dist/core/rest/projects-client/git-backend.d.ts +15 -0
  251. package/dist/core/rest/projects-client/git-backend.js +15 -0
  252. package/dist/core/rest/projects-client/git-history.d.ts +78 -0
  253. package/dist/core/rest/projects-client/git-history.js +47 -0
  254. package/dist/core/rest/projects-client/github.d.ts +128 -0
  255. package/dist/core/rest/projects-client/github.js +54 -0
  256. package/dist/core/rest/projects-client/iam-audit.d.ts +81 -0
  257. package/dist/core/rest/projects-client/iam-audit.js +21 -0
  258. package/dist/core/rest/projects-client/iam-enterprise.d.ts +2 -0
  259. package/dist/core/rest/projects-client/iam-enterprise.js +11 -0
  260. package/dist/core/rest/projects-client/iam-grants.d.ts +21 -0
  261. package/dist/core/rest/projects-client/iam-grants.js +6 -0
  262. package/dist/core/rest/projects-client/iam-groups.d.ts +65 -0
  263. package/dist/core/rest/projects-client/iam-groups.js +42 -0
  264. package/dist/core/rest/projects-client/iam-policies.d.ts +53 -0
  265. package/dist/core/rest/projects-client/iam-policies.js +26 -0
  266. package/dist/core/rest/projects-client/iam-probe.d.ts +27 -0
  267. package/dist/core/rest/projects-client/iam-probe.js +16 -0
  268. package/dist/core/rest/projects-client/iam-query.d.ts +1 -0
  269. package/dist/core/rest/projects-client/iam-query.js +9 -0
  270. package/dist/core/rest/projects-client/iam-roles.d.ts +47 -0
  271. package/dist/core/rest/projects-client/iam-roles.js +43 -0
  272. package/dist/core/rest/projects-client/iam-scim.d.ts +22 -0
  273. package/dist/core/rest/projects-client/iam-scim.js +14 -0
  274. package/dist/core/rest/projects-client/iam-security.d.ts +28 -0
  275. package/dist/core/rest/projects-client/iam-security.js +17 -0
  276. package/dist/core/rest/projects-client/iam-service-accounts.d.ts +26 -0
  277. package/dist/core/rest/projects-client/iam-service-accounts.js +14 -0
  278. package/dist/core/rest/projects-client/iam-sessions.d.ts +27 -0
  279. package/dist/core/rest/projects-client/iam-sessions.js +25 -0
  280. package/dist/core/rest/projects-client/iam-shared.d.ts +6 -0
  281. package/dist/core/rest/projects-client/iam-shared.js +8 -0
  282. package/dist/core/rest/projects-client/iam-sso.d.ts +60 -0
  283. package/dist/core/rest/projects-client/iam-sso.js +28 -0
  284. package/dist/core/rest/projects-client/iam-types.d.ts +52 -0
  285. package/dist/core/rest/projects-client/iam-types.js +1 -0
  286. package/dist/core/rest/projects-client/iam.d.ts +13 -0
  287. package/dist/core/rest/projects-client/iam.js +13 -0
  288. package/dist/core/rest/projects-client/index.d.ts +55 -0
  289. package/dist/core/rest/projects-client/index.js +54 -0
  290. package/dist/core/rest/projects-client/marketplace-catalog.d.ts +74 -0
  291. package/dist/core/rest/projects-client/marketplace-catalog.js +41 -0
  292. package/dist/core/rest/projects-client/model-access.d.ts +13 -0
  293. package/dist/core/rest/projects-client/model-access.js +8 -0
  294. package/dist/core/rest/projects-client/model-defaults.d.ts +28 -0
  295. package/dist/core/rest/projects-client/model-defaults.js +15 -0
  296. package/dist/core/rest/projects-client/model-enablement.d.ts +4 -0
  297. package/dist/core/rest/projects-client/model-enablement.js +5 -0
  298. package/dist/core/rest/projects-client/notifications.d.ts +95 -0
  299. package/dist/core/rest/projects-client/notifications.js +61 -0
  300. package/dist/core/rest/projects-client/oauth-clients.d.ts +41 -0
  301. package/dist/core/rest/projects-client/oauth-clients.js +24 -0
  302. package/dist/core/rest/projects-client/policies.d.ts +26 -0
  303. package/dist/core/rest/projects-client/policies.js +8 -0
  304. package/dist/core/rest/projects-client/presentations.d.ts +11 -0
  305. package/dist/core/rest/projects-client/presentations.js +8 -0
  306. package/dist/core/rest/projects-client/project-agents.d.ts +10 -0
  307. package/dist/core/rest/projects-client/project-agents.js +22 -0
  308. package/dist/core/rest/projects-client/projects.d.ts +376 -0
  309. package/dist/core/rest/projects-client/projects.js +237 -0
  310. package/dist/core/rest/projects-client/prompt-attachments.d.ts +31 -0
  311. package/dist/core/rest/projects-client/prompt-attachments.js +294 -0
  312. package/dist/core/rest/projects-client/provider-connections.d.ts +54 -0
  313. package/dist/core/rest/projects-client/provider-connections.js +28 -0
  314. package/dist/core/rest/projects-client/public-session-shares.d.ts +49 -0
  315. package/dist/core/rest/projects-client/public-session-shares.js +35 -0
  316. package/dist/core/rest/projects-client/referrals.d.ts +52 -0
  317. package/dist/core/rest/projects-client/referrals.js +19 -0
  318. package/dist/core/rest/projects-client/review-items.d.ts +139 -0
  319. package/dist/core/rest/projects-client/review-items.js +217 -0
  320. package/dist/core/rest/projects-client/review.d.ts +56 -0
  321. package/dist/core/rest/projects-client/review.js +23 -0
  322. package/dist/core/rest/projects-client/sandbox-shares.d.ts +21 -0
  323. package/dist/core/rest/projects-client/sandbox-shares.js +19 -0
  324. package/dist/core/rest/projects-client/sandbox.d.ts +144 -0
  325. package/dist/core/rest/projects-client/sandbox.js +35 -0
  326. package/dist/core/rest/projects-client/secrets.d.ts +187 -0
  327. package/dist/core/rest/projects-client/secrets.js +79 -0
  328. package/dist/core/rest/projects-client/session-attachments.d.ts +22 -0
  329. package/dist/core/rest/projects-client/session-attachments.js +166 -0
  330. package/dist/core/rest/projects-client/session-costs.d.ts +193 -0
  331. package/dist/core/rest/projects-client/session-costs.js +87 -0
  332. package/dist/core/rest/projects-client/session-prompt-actions.d.ts +10 -0
  333. package/dist/core/rest/projects-client/session-prompt-actions.js +4 -0
  334. package/dist/core/rest/projects-client/session-reminders.d.ts +58 -0
  335. package/dist/core/rest/projects-client/session-reminders.js +50 -0
  336. package/dist/core/rest/projects-client/session-sandbox.d.ts +85 -0
  337. package/dist/core/rest/projects-client/session-sandbox.js +113 -0
  338. package/dist/core/rest/projects-client/sessions.d.ts +670 -0
  339. package/dist/core/rest/projects-client/sessions.js +321 -0
  340. package/dist/core/rest/projects-client/setup-links.d.ts +54 -0
  341. package/dist/core/rest/projects-client/setup-links.js +22 -0
  342. package/dist/core/rest/projects-client/shared.d.ts +51 -0
  343. package/dist/core/rest/projects-client/shared.js +29 -0
  344. package/dist/core/rest/projects-client/skills.d.ts +11 -0
  345. package/dist/core/rest/projects-client/skills.js +8 -0
  346. package/dist/core/rest/projects-client/starter-suggestions.d.ts +17 -0
  347. package/dist/core/rest/projects-client/starter-suggestions.js +5 -0
  348. package/dist/core/rest/projects-client/templates.d.ts +47 -0
  349. package/dist/core/rest/projects-client/templates.js +7 -0
  350. package/dist/core/rest/projects-client/tokens.d.ts +94 -0
  351. package/dist/core/rest/projects-client/tokens.js +46 -0
  352. package/dist/core/rest/projects-client/triggers.d.ts +175 -0
  353. package/dist/core/rest/projects-client/triggers.js +29 -0
  354. package/dist/core/runtime/attachment-part.d.ts +3 -0
  355. package/dist/core/runtime/attachment-part.js +18 -0
  356. package/dist/core/runtime/beeuni-master.d.ts +477 -0
  357. package/dist/core/runtime/beeuni-master.js +264 -0
  358. package/dist/core/runtime/client.d.ts +30 -0
  359. package/dist/core/runtime/client.js +124 -0
  360. package/dist/core/runtime/env.d.ts +8 -0
  361. package/dist/core/runtime/env.js +42 -0
  362. package/dist/core/runtime/pty.d.ts +43 -0
  363. package/dist/core/runtime/pty.js +117 -0
  364. package/dist/core/runtime/runtime-rest-client.d.ts +414 -0
  365. package/dist/core/runtime/runtime-rest-client.js +296 -0
  366. package/dist/core/runtime/runtime-types.d.ts +1094 -0
  367. package/dist/core/runtime/runtime-types.js +1 -0
  368. package/dist/core/runtime/transcript-types.d.ts +507 -0
  369. package/dist/core/runtime/transcript-types.js +31 -0
  370. package/dist/core/runtime/triggers.d.ts +1 -0
  371. package/dist/core/runtime/triggers.js +18 -0
  372. package/dist/core/session/compaction.d.ts +10 -0
  373. package/dist/core/session/compaction.js +22 -0
  374. package/dist/core/session/connection.d.ts +20 -0
  375. package/dist/core/session/connection.js +52 -0
  376. package/dist/core/session/control-stream.d.ts +62 -0
  377. package/dist/core/session/control-stream.js +329 -0
  378. package/dist/core/session/current-runtime.d.ts +14 -0
  379. package/dist/core/session/current-runtime.js +34 -0
  380. package/dist/core/session/health.d.ts +41 -0
  381. package/dist/core/session/health.js +53 -0
  382. package/dist/core/session/host-signals.d.ts +3 -0
  383. package/dist/core/session/host-signals.js +16 -0
  384. package/dist/core/session/index.d.ts +15 -0
  385. package/dist/core/session/index.js +14 -0
  386. package/dist/core/session/message-queue.d.ts +43 -0
  387. package/dist/core/session/message-queue.js +101 -0
  388. package/dist/core/session/open-bundle.d.ts +24 -0
  389. package/dist/core/session/open-bundle.js +135 -0
  390. package/dist/core/session/poll-owner.d.ts +5 -0
  391. package/dist/core/session/poll-owner.js +58 -0
  392. package/dist/core/session/presentation.d.ts +11 -0
  393. package/dist/core/session/presentation.js +70 -0
  394. package/dist/core/session/preview-auth.d.ts +6 -0
  395. package/dist/core/session/preview-auth.js +36 -0
  396. package/dist/core/session/preview-config.d.ts +5 -0
  397. package/dist/core/session/preview-config.js +54 -0
  398. package/dist/core/session/preview-options.d.ts +9 -0
  399. package/dist/core/session/preview-options.js +12 -0
  400. package/dist/core/session/preview-origin-trust.d.ts +7 -0
  401. package/dist/core/session/preview-origin-trust.js +64 -0
  402. package/dist/core/session/preview-probe.d.ts +7 -0
  403. package/dist/core/session/preview-probe.js +36 -0
  404. package/dist/core/session/preview.d.ts +3 -0
  405. package/dist/core/session/preview.js +66 -0
  406. package/dist/core/session/project-session-read.d.ts +5 -0
  407. package/dist/core/session/project-session-read.js +12 -0
  408. package/dist/core/session/rewind.d.ts +29 -0
  409. package/dist/core/session/rewind.js +53 -0
  410. package/dist/core/session/runtime-gone.d.ts +5 -0
  411. package/dist/core/session/runtime-gone.js +14 -0
  412. package/dist/core/session/runtime-sessions.d.ts +7 -0
  413. package/dist/core/session/runtime-sessions.js +26 -0
  414. package/dist/core/session/runtime-verbs.d.ts +34 -0
  415. package/dist/core/session/runtime-verbs.js +94 -0
  416. package/dist/core/session/server-store/active.d.ts +7 -0
  417. package/dist/core/session/server-store/active.js +35 -0
  418. package/dist/core/session/server-store/types.d.ts +4 -0
  419. package/dist/core/session/server-store/types.js +1 -0
  420. package/dist/core/session/server-store/url-helpers.d.ts +5 -0
  421. package/dist/core/session/server-store/url-helpers.js +25 -0
  422. package/dist/core/session/session-runtime-registry.d.ts +9 -0
  423. package/dist/core/session/session-runtime-registry.js +28 -0
  424. package/dist/core/session/single-flight.d.ts +3 -0
  425. package/dist/core/session/single-flight.js +22 -0
  426. package/dist/core/session/static-file-preview.d.ts +10 -0
  427. package/dist/core/session/static-file-preview.js +34 -0
  428. package/dist/core/session/status-vocabulary.d.ts +23 -0
  429. package/dist/core/session/status-vocabulary.js +59 -0
  430. package/dist/core/session/turn-end-cause.d.ts +22 -0
  431. package/dist/core/session/turn-end-cause.js +41 -0
  432. package/dist/core/session/turn-end-settle.d.ts +1 -0
  433. package/dist/core/session/turn-end-settle.js +1 -0
  434. package/dist/core/session/url.d.ts +49 -0
  435. package/dist/core/session/url.js +415 -0
  436. package/dist/core/session/wake-escalation.d.ts +37 -0
  437. package/dist/core/session/wake-escalation.js +104 -0
  438. package/dist/core/session/wire-id-unwrap.d.ts +2 -0
  439. package/dist/core/session/wire-id-unwrap.js +15 -0
  440. package/dist/core/session/wire-message-id.d.ts +27 -0
  441. package/dist/core/session/wire-message-id.js +88 -0
  442. package/dist/core/session/working-evidence.d.ts +13 -0
  443. package/dist/core/session/working-evidence.js +25 -0
  444. package/dist/core/session/working-project.d.ts +2 -0
  445. package/dist/core/session/working-project.js +145 -0
  446. package/dist/core/session/working-runtime.d.ts +3 -0
  447. package/dist/core/session/working-runtime.js +16 -0
  448. package/dist/core/session/working-server.d.ts +20 -0
  449. package/dist/core/session/working-server.js +57 -0
  450. package/dist/core/session/working-time.d.ts +1 -0
  451. package/dist/core/session/working-time.js +6 -0
  452. package/dist/core/session/working.d.ts +58 -0
  453. package/dist/core/session/working.js +48 -0
  454. package/dist/core/session-sync/fragment.d.ts +4 -0
  455. package/dist/core/session-sync/fragment.js +3 -0
  456. package/dist/core/session-sync/saved-copy-store.d.ts +23 -0
  457. package/dist/core/session-sync/saved-copy-store.js +232 -0
  458. package/dist/core/session-sync/saved-transcript.d.ts +20 -0
  459. package/dist/core/session-sync/saved-transcript.js +35 -0
  460. package/dist/core/session-sync/session-sync-controller.d.ts +111 -0
  461. package/dist/core/session-sync/session-sync-controller.js +440 -0
  462. package/dist/core/stream/chat-events.d.ts +96 -0
  463. package/dist/core/stream/chat-events.js +95 -0
  464. package/dist/core/stream/event-stream.d.ts +52 -0
  465. package/dist/core/stream/event-stream.js +372 -0
  466. package/dist/core/stream/fetch-sse.d.ts +20 -0
  467. package/dist/core/stream/fetch-sse.js +136 -0
  468. package/dist/core/stream/keepalive.d.ts +4 -0
  469. package/dist/core/stream/keepalive.js +6 -0
  470. package/dist/core/stream/platform-event-transport.d.ts +2 -0
  471. package/dist/core/stream/platform-event-transport.js +20 -0
  472. package/dist/core/turns/classify.d.ts +131 -0
  473. package/dist/core/turns/classify.js +306 -0
  474. package/dist/core/turns/errors.d.ts +24 -0
  475. package/dist/core/turns/errors.js +355 -0
  476. package/dist/core/turns/grouping.d.ts +47 -0
  477. package/dist/core/turns/grouping.js +247 -0
  478. package/dist/core/turns/index.d.ts +13 -0
  479. package/dist/core/turns/index.js +12 -0
  480. package/dist/core/turns/open-turn.d.ts +13 -0
  481. package/dist/core/turns/open-turn.js +17 -0
  482. package/dist/core/turns/parts.d.ts +60 -0
  483. package/dist/core/turns/parts.js +414 -0
  484. package/dist/core/turns/segments/burst-summary.d.ts +9 -0
  485. package/dist/core/turns/segments/burst-summary.js +45 -0
  486. package/dist/core/turns/segments/compaction-state.d.ts +19 -0
  487. package/dist/core/turns/segments/compaction-state.js +42 -0
  488. package/dist/core/turns/segments/group-steps.d.ts +11 -0
  489. package/dist/core/turns/segments/group-steps.js +65 -0
  490. package/dist/core/turns/segments/index.d.ts +12 -0
  491. package/dist/core/turns/segments/index.js +12 -0
  492. package/dist/core/turns/segments/merge-steps.d.ts +21 -0
  493. package/dist/core/turns/segments/merge-steps.js +100 -0
  494. package/dist/core/turns/segments/message-time.d.ts +12 -0
  495. package/dist/core/turns/segments/message-time.js +82 -0
  496. package/dist/core/turns/segments/narration.d.ts +9 -0
  497. package/dist/core/turns/segments/narration.js +573 -0
  498. package/dist/core/turns/segments/segment-turn.d.ts +15 -0
  499. package/dist/core/turns/segments/segment-turn.js +32 -0
  500. package/dist/core/turns/segments/session-activity-groups.d.ts +20 -0
  501. package/dist/core/turns/segments/session-activity-groups.js +56 -0
  502. package/dist/core/turns/segments/show-group.d.ts +23 -0
  503. package/dist/core/turns/segments/show-group.js +101 -0
  504. package/dist/core/turns/segments/step-label.d.ts +10 -0
  505. package/dist/core/turns/segments/step-label.js +85 -0
  506. package/dist/core/turns/segments/turn-busy-visibility.d.ts +6 -0
  507. package/dist/core/turns/segments/turn-busy-visibility.js +9 -0
  508. package/dist/core/turns/segments/working-turn.d.ts +70 -0
  509. package/dist/core/turns/segments/working-turn.js +98 -0
  510. package/dist/core/turns/shell.d.ts +5 -0
  511. package/dist/core/turns/shell.js +21 -0
  512. package/dist/core/turns/state.d.ts +24 -0
  513. package/dist/core/turns/state.js +364 -0
  514. package/dist/core/turns/text-scan.d.ts +21 -0
  515. package/dist/core/turns/text-scan.js +347 -0
  516. package/dist/core/turns/tool-kind.d.ts +3 -0
  517. package/dist/core/turns/tool-kind.js +99 -0
  518. package/dist/core/turns/tool-registry.d.ts +8 -0
  519. package/dist/core/turns/tool-registry.js +87 -0
  520. package/dist/core/turns/tools/agent-helpers.d.ts +9 -0
  521. package/dist/core/turns/tools/agent-helpers.js +53 -0
  522. package/dist/core/turns/tools/file-verb.d.ts +10 -0
  523. package/dist/core/turns/tools/file-verb.js +22 -0
  524. package/dist/core/turns/tools/index.d.ts +14 -0
  525. package/dist/core/turns/tools/index.js +14 -0
  526. package/dist/core/turns/tools/memory-helpers.d.ts +15 -0
  527. package/dist/core/turns/tools/memory-helpers.js +50 -0
  528. package/dist/core/turns/tools/patch-summary.d.ts +6 -0
  529. package/dist/core/turns/tools/patch-summary.js +21 -0
  530. package/dist/core/turns/tools/presentation-helpers.d.ts +15 -0
  531. package/dist/core/turns/tools/presentation-helpers.js +17 -0
  532. package/dist/core/turns/tools/question-helpers.d.ts +9 -0
  533. package/dist/core/turns/tools/question-helpers.js +12 -0
  534. package/dist/core/turns/tools/read-helpers.d.ts +7 -0
  535. package/dist/core/turns/tools/read-helpers.js +24 -0
  536. package/dist/core/turns/tools/search-query.d.ts +1 -0
  537. package/dist/core/turns/tools/search-query.js +73 -0
  538. package/dist/core/turns/tools/show-availability.d.ts +11 -0
  539. package/dist/core/turns/tools/show-availability.js +38 -0
  540. package/dist/core/turns/tools/skill-helpers.d.ts +5 -0
  541. package/dist/core/turns/tools/skill-helpers.js +61 -0
  542. package/dist/core/turns/tools/tool-meta.d.ts +30 -0
  543. package/dist/core/turns/tools/tool-meta.js +146 -0
  544. package/dist/core/turns/tools/tool-outcome.d.ts +15 -0
  545. package/dist/core/turns/tools/tool-outcome.js +147 -0
  546. package/dist/core/turns/tools/tool-output-format.d.ts +17 -0
  547. package/dist/core/turns/tools/tool-output-format.js +124 -0
  548. package/dist/core/turns/tools/web-helpers.d.ts +34 -0
  549. package/dist/core/turns/tools/web-helpers.js +229 -0
  550. package/dist/core/turns/types.d.ts +110 -0
  551. package/dist/core/turns/types.js +1 -0
  552. package/dist/core/turns/view-model.d.ts +76 -0
  553. package/dist/core/turns/view-model.js +300 -0
  554. package/dist/deprecated/api-client.d.ts +1 -0
  555. package/dist/deprecated/api-client.js +1 -0
  556. package/dist/deprecated/auth.d.ts +1 -0
  557. package/dist/deprecated/auth.js +1 -0
  558. package/dist/deprecated/config.d.ts +1 -0
  559. package/dist/deprecated/config.js +1 -0
  560. package/dist/deprecated/event-stream.d.ts +1 -0
  561. package/dist/deprecated/event-stream.js +1 -0
  562. package/dist/deprecated/feature-flags.d.ts +1 -0
  563. package/dist/deprecated/feature-flags.js +1 -0
  564. package/dist/deprecated/files.d.ts +1 -0
  565. package/dist/deprecated/files.js +1 -0
  566. package/dist/deprecated/fresh-sessions.d.ts +1 -0
  567. package/dist/deprecated/fresh-sessions.js +1 -0
  568. package/dist/deprecated/idb-sync-cache.d.ts +1 -0
  569. package/dist/deprecated/idb-sync-cache.js +1 -0
  570. package/dist/deprecated/instance-routes.d.ts +1 -0
  571. package/dist/deprecated/instance-routes.js +1 -0
  572. package/dist/deprecated/opencode-client.d.ts +1 -0
  573. package/dist/deprecated/opencode-client.js +1 -0
  574. package/dist/deprecated/opencode-errors.d.ts +1 -0
  575. package/dist/deprecated/opencode-errors.js +1 -0
  576. package/dist/deprecated/opencode-pending-store.d.ts +1 -0
  577. package/dist/deprecated/opencode-pending-store.js +1 -0
  578. package/dist/deprecated/platform-client.d.ts +1 -0
  579. package/dist/deprecated/platform-client.js +1 -0
  580. package/dist/deprecated/projects-client.d.ts +1 -0
  581. package/dist/deprecated/projects-client.js +1 -0
  582. package/dist/deprecated/sandbox-connection-store.d.ts +1 -0
  583. package/dist/deprecated/sandbox-connection-store.js +1 -0
  584. package/dist/deprecated/server-store.d.ts +1 -0
  585. package/dist/deprecated/server-store.js +1 -0
  586. package/dist/deprecated/session-url.d.ts +1 -0
  587. package/dist/deprecated/session-url.js +1 -0
  588. package/dist/deprecated/session.d.ts +1 -0
  589. package/dist/deprecated/session.js +1 -0
  590. package/dist/deprecated/sync-store.d.ts +1 -0
  591. package/dist/deprecated/sync-store.js +1 -0
  592. package/dist/deprecated/turns.d.ts +1 -0
  593. package/dist/deprecated/turns.js +1 -0
  594. package/dist/index.d.ts +61 -0
  595. package/dist/index.js +53 -0
  596. package/dist/internal/diagnostics-store.d.ts +1 -0
  597. package/dist/internal/diagnostics-store.js +1 -0
  598. package/dist/internal/idb-sync-cache.d.ts +1 -0
  599. package/dist/internal/idb-sync-cache.js +1 -0
  600. package/dist/internal/managed-storage.d.ts +1 -0
  601. package/dist/internal/managed-storage.js +1 -0
  602. package/dist/internal/opencode-pending-store.d.ts +1 -0
  603. package/dist/internal/opencode-pending-store.js +1 -0
  604. package/dist/internal/sandbox-connection-store.d.ts +1 -0
  605. package/dist/internal/sandbox-connection-store.js +1 -0
  606. package/dist/internal/server-store.d.ts +1 -0
  607. package/dist/internal/server-store.js +1 -0
  608. package/dist/internal/sync-store.d.ts +1 -0
  609. package/dist/internal/sync-store.js +1 -0
  610. package/dist/node/app-guard.d.ts +36 -0
  611. package/dist/node/app-guard.js +118 -0
  612. package/dist/node/app-viewer.d.ts +30 -0
  613. package/dist/node/app-viewer.js +113 -0
  614. package/dist/node/auth.d.ts +52 -0
  615. package/dist/node/auth.js +387 -0
  616. package/dist/node/scoped-client.d.ts +9 -0
  617. package/dist/node/scoped-client.js +106 -0
  618. package/dist/node/server.d.ts +8 -0
  619. package/dist/node/server.js +5 -0
  620. package/dist/platform/auth-core.d.ts +10 -0
  621. package/dist/platform/auth-core.js +44 -0
  622. package/dist/platform/config-node.d.ts +4 -0
  623. package/dist/platform/config-node.js +13 -0
  624. package/dist/platform/session-id.d.ts +1 -0
  625. package/dist/platform/session-id.js +15 -0
  626. package/dist/platform/storage/managed-storage.d.ts +25 -0
  627. package/dist/platform/storage/managed-storage.js +215 -0
  628. package/dist/platform/strings.d.ts +1 -0
  629. package/dist/platform/strings.js +6 -0
  630. package/dist/platform/ui.d.ts +5 -0
  631. package/dist/platform/ui.js +16 -0
  632. package/dist/react/agent-selection-scope.d.ts +7 -0
  633. package/dist/react/agent-selection-scope.js +3 -0
  634. package/dist/react/bedrock-invokable.d.ts +1 -0
  635. package/dist/react/bedrock-invokable.js +1 -0
  636. package/dist/react/chat/index.d.ts +2 -0
  637. package/dist/react/chat/index.js +3 -0
  638. package/dist/react/chat/render-parts.d.ts +11 -0
  639. package/dist/react/chat/render-parts.js +10 -0
  640. package/dist/react/chat/use-chat-turns.d.ts +9 -0
  641. package/dist/react/chat/use-chat-turns.js +9 -0
  642. package/dist/react/connector-setup.d.ts +21 -0
  643. package/dist/react/connector-setup.js +130 -0
  644. package/dist/react/file-keys.d.ts +16 -0
  645. package/dist/react/file-keys.js +16 -0
  646. package/dist/react/hold-live-start.d.ts +3 -0
  647. package/dist/react/hold-live-start.js +27 -0
  648. package/dist/react/human-presence.d.ts +15 -0
  649. package/dist/react/human-presence.js +62 -0
  650. package/dist/react/identity-reset-registry.d.ts +2 -0
  651. package/dist/react/identity-reset-registry.js +14 -0
  652. package/dist/react/index.d.ts +62 -0
  653. package/dist/react/index.js +63 -0
  654. package/dist/react/initial-session-pin.d.ts +14 -0
  655. package/dist/react/initial-session-pin.js +28 -0
  656. package/dist/react/invalidate-project.d.ts +22 -0
  657. package/dist/react/invalidate-project.js +26 -0
  658. package/dist/react/model-flatten.d.ts +1 -0
  659. package/dist/react/model-flatten.js +1 -0
  660. package/dist/react/opencode.d.ts +43 -0
  661. package/dist/react/opencode.js +43 -0
  662. package/dist/react/prefetch-session-open.d.ts +5 -0
  663. package/dist/react/prefetch-session-open.js +48 -0
  664. package/dist/react/prefetch-session-start.d.ts +2 -0
  665. package/dist/react/prefetch-session-start.js +9 -0
  666. package/dist/react/provider-refresh.d.ts +9 -0
  667. package/dist/react/provider-refresh.js +72 -0
  668. package/dist/react/provider-selection.d.ts +1 -0
  669. package/dist/react/provider-selection.js +1 -0
  670. package/dist/react/pty-query-state.d.ts +2 -0
  671. package/dist/react/pty-query-state.js +6 -0
  672. package/dist/react/query-contracts.d.ts +49 -0
  673. package/dist/react/query-contracts.js +63 -0
  674. package/dist/react/query-keys.d.ts +105 -0
  675. package/dist/react/query-keys.js +115 -0
  676. package/dist/react/reset-identity-state.d.ts +2 -0
  677. package/dist/react/reset-identity-state.js +19 -0
  678. package/dist/react/retired-endpoint.d.ts +3 -0
  679. package/dist/react/retired-endpoint.js +15 -0
  680. package/dist/react/route-project.d.ts +6 -0
  681. package/dist/react/route-project.js +9 -0
  682. package/dist/react/run-pty-command.d.ts +4 -0
  683. package/dist/react/run-pty-command.js +41 -0
  684. package/dist/react/runtime-actions.d.ts +31 -0
  685. package/dist/react/runtime-actions.js +87 -0
  686. package/dist/react/self-heal-poll-gate.d.ts +8 -0
  687. package/dist/react/self-heal-poll-gate.js +5 -0
  688. package/dist/react/session-agent-name-guard.d.ts +1 -0
  689. package/dist/react/session-agent-name-guard.js +5 -0
  690. package/dist/react/session-cache-write.d.ts +8 -0
  691. package/dist/react/session-cache-write.js +116 -0
  692. package/dist/react/session-start-giveup.d.ts +4 -0
  693. package/dist/react/session-start-giveup.js +5 -0
  694. package/dist/react/session-start-stash.d.ts +17 -0
  695. package/dist/react/session-start-stash.js +146 -0
  696. package/dist/react/session-stop.d.ts +20 -0
  697. package/dist/react/session-stop.js +63 -0
  698. package/dist/react/session-title-sync.d.ts +12 -0
  699. package/dist/react/session-title-sync.js +88 -0
  700. package/dist/react/session-transcript-subscription.d.ts +7 -0
  701. package/dist/react/session-transcript-subscription.js +71 -0
  702. package/dist/react/sign-in-with-beeuni.d.ts +330 -0
  703. package/dist/react/sign-in-with-beeuni.js +51 -0
  704. package/dist/react/teams-install-polling.d.ts +3 -0
  705. package/dist/react/teams-install-polling.js +4 -0
  706. package/dist/react/use-accounts.d.ts +47 -0
  707. package/dist/react/use-accounts.js +31 -0
  708. package/dist/react/use-admin-accounts.d.ts +236 -0
  709. package/dist/react/use-admin-accounts.js +287 -0
  710. package/dist/react/use-admin-activity-analytics.d.ts +48 -0
  711. package/dist/react/use-admin-activity-analytics.js +47 -0
  712. package/dist/react/use-admin-analytics.d.ts +331 -0
  713. package/dist/react/use-admin-analytics.js +85 -0
  714. package/dist/react/use-admin-billing.d.ts +26 -0
  715. package/dist/react/use-admin-billing.js +13 -0
  716. package/dist/react/use-admin-feedback.d.ts +118 -0
  717. package/dist/react/use-admin-feedback.js +46 -0
  718. package/dist/react/use-admin-projects.d.ts +31 -0
  719. package/dist/react/use-admin-projects.js +27 -0
  720. package/dist/react/use-admin-providers.d.ts +20 -0
  721. package/dist/react/use-admin-providers.js +45 -0
  722. package/dist/react/use-admin-role.d.ts +4 -0
  723. package/dist/react/use-admin-role.js +15 -0
  724. package/dist/react/use-admin-sandboxes.d.ts +156 -0
  725. package/dist/react/use-admin-sandboxes.js +52 -0
  726. package/dist/react/use-authenticated-preview-url.d.ts +3 -0
  727. package/dist/react/use-authenticated-preview-url.js +96 -0
  728. package/dist/react/use-beeuni-app-viewer.d.ts +12 -0
  729. package/dist/react/use-beeuni-app-viewer.js +19 -0
  730. package/dist/react/use-beeuni-master.d.ts +333 -0
  731. package/dist/react/use-beeuni-master.js +845 -0
  732. package/dist/react/use-can.d.ts +35 -0
  733. package/dist/react/use-can.js +129 -0
  734. package/dist/react/use-canonical-opencode-session.d.ts +21 -0
  735. package/dist/react/use-canonical-opencode-session.js +44 -0
  736. package/dist/react/use-change-requests.d.ts +291 -0
  737. package/dist/react/use-change-requests.js +31 -0
  738. package/dist/react/use-connector-query.d.ts +7 -0
  739. package/dist/react/use-connector-query.js +23 -0
  740. package/dist/react/use-current-runtime.d.ts +2 -0
  741. package/dist/react/use-current-runtime.js +6 -0
  742. package/dist/react/use-feature-flag.d.ts +6 -0
  743. package/dist/react/use-feature-flag.js +25 -0
  744. package/dist/react/use-gateway-catalog-sync.d.ts +1 -0
  745. package/dist/react/use-gateway-catalog-sync.js +40 -0
  746. package/dist/react/use-gateway-routing-policy.d.ts +8 -0
  747. package/dist/react/use-gateway-routing-policy.js +36 -0
  748. package/dist/react/use-impersonation.d.ts +20 -0
  749. package/dist/react/use-impersonation.js +55 -0
  750. package/dist/react/use-model-access.d.ts +9 -0
  751. package/dist/react/use-model-access.js +46 -0
  752. package/dist/react/use-model-defaults.d.ts +23 -0
  753. package/dist/react/use-model-defaults.js +115 -0
  754. package/dist/react/use-model-enablement.d.ts +8 -0
  755. package/dist/react/use-model-enablement.js +69 -0
  756. package/dist/react/use-model-store.d.ts +47 -0
  757. package/dist/react/use-model-store.js +234 -0
  758. package/dist/react/use-notifications.d.ts +618 -0
  759. package/dist/react/use-notifications.js +104 -0
  760. package/dist/react/use-opencode-config.d.ts +12 -0
  761. package/dist/react/use-opencode-config.js +69 -0
  762. package/dist/react/use-opencode-events/diagnostics.d.ts +4 -0
  763. package/dist/react/use-opencode-events/diagnostics.js +42 -0
  764. package/dist/react/use-opencode-events/handle-event.d.ts +23 -0
  765. package/dist/react/use-opencode-events/handle-event.js +57 -0
  766. package/dist/react/use-opencode-events/handle-interaction-event.d.ts +3 -0
  767. package/dist/react/use-opencode-events/handle-interaction-event.js +41 -0
  768. package/dist/react/use-opencode-events/handle-message-event.d.ts +3 -0
  769. package/dist/react/use-opencode-events/handle-message-event.js +32 -0
  770. package/dist/react/use-opencode-events/handle-session-event.d.ts +4 -0
  771. package/dist/react/use-opencode-events/handle-session-event.js +240 -0
  772. package/dist/react/use-opencode-events/handle-workspace-event.d.ts +3 -0
  773. package/dist/react/use-opencode-events/handle-workspace-event.js +112 -0
  774. package/dist/react/use-opencode-events/handler-context.d.ts +28 -0
  775. package/dist/react/use-opencode-events/handler-context.js +1 -0
  776. package/dist/react/use-opencode-events/helpers.d.ts +27 -0
  777. package/dist/react/use-opencode-events/helpers.js +126 -0
  778. package/dist/react/use-opencode-events/hydrate-core.d.ts +22 -0
  779. package/dist/react/use-opencode-events/hydrate-core.js +78 -0
  780. package/dist/react/use-opencode-events/index.d.ts +9 -0
  781. package/dist/react/use-opencode-events/index.js +181 -0
  782. package/dist/react/use-opencode-events/rehydrate-targets.d.ts +1 -0
  783. package/dist/react/use-opencode-events/rehydrate-targets.js +3 -0
  784. package/dist/react/use-opencode-events/runtime-stream-signals.d.ts +19 -0
  785. package/dist/react/use-opencode-events/runtime-stream-signals.js +22 -0
  786. package/dist/react/use-opencode-events/stream-revival.d.ts +11 -0
  787. package/dist/react/use-opencode-events/stream-revival.js +60 -0
  788. package/dist/react/use-opencode-events/types.d.ts +2 -0
  789. package/dist/react/use-opencode-events/types.js +1 -0
  790. package/dist/react/use-opencode-events/use-event-stream-refs.d.ts +16 -0
  791. package/dist/react/use-opencode-events/use-event-stream-refs.js +129 -0
  792. package/dist/react/use-opencode-local.d.ts +72 -0
  793. package/dist/react/use-opencode-local.js +306 -0
  794. package/dist/react/use-opencode-mcp.d.ts +29 -0
  795. package/dist/react/use-opencode-mcp.js +149 -0
  796. package/dist/react/use-opencode-pty.d.ts +39 -0
  797. package/dist/react/use-opencode-pty.js +61 -0
  798. package/dist/react/use-opencode-sessions/agents.d.ts +11 -0
  799. package/dist/react/use-opencode-sessions/agents.js +57 -0
  800. package/dist/react/use-opencode-sessions/commands.d.ts +16 -0
  801. package/dist/react/use-opencode-sessions/commands.js +42 -0
  802. package/dist/react/use-opencode-sessions/files.d.ts +2 -0
  803. package/dist/react/use-opencode-sessions/files.js +144 -0
  804. package/dist/react/use-opencode-sessions/index.d.ts +15 -0
  805. package/dist/react/use-opencode-sessions/index.js +15 -0
  806. package/dist/react/use-opencode-sessions/keys.d.ts +102 -0
  807. package/dist/react/use-opencode-sessions/keys.js +38 -0
  808. package/dist/react/use-opencode-sessions/mcp.d.ts +2 -0
  809. package/dist/react/use-opencode-sessions/mcp.js +19 -0
  810. package/dist/react/use-opencode-sessions/messages.d.ts +57 -0
  811. package/dist/react/use-opencode-sessions/messages.js +342 -0
  812. package/dist/react/use-opencode-sessions/no-compaction-model-error.d.ts +3 -0
  813. package/dist/react/use-opencode-sessions/no-compaction-model-error.js +6 -0
  814. package/dist/react/use-opencode-sessions/parts.d.ts +12 -0
  815. package/dist/react/use-opencode-sessions/parts.js +31 -0
  816. package/dist/react/use-opencode-sessions/permissions.d.ts +5 -0
  817. package/dist/react/use-opencode-sessions/permissions.js +44 -0
  818. package/dist/react/use-opencode-sessions/projects.d.ts +6 -0
  819. package/dist/react/use-opencode-sessions/projects.js +49 -0
  820. package/dist/react/use-opencode-sessions/provider-load-plan.d.ts +5 -0
  821. package/dist/react/use-opencode-sessions/provider-load-plan.js +3 -0
  822. package/dist/react/use-opencode-sessions/providers.d.ts +10 -0
  823. package/dist/react/use-opencode-sessions/providers.js +98 -0
  824. package/dist/react/use-opencode-sessions/sessions.d.ts +34 -0
  825. package/dist/react/use-opencode-sessions/sessions.js +330 -0
  826. package/dist/react/use-opencode-sessions/shared.d.ts +10 -0
  827. package/dist/react/use-opencode-sessions/shared.js +36 -0
  828. package/dist/react/use-opencode-sessions/sharing.d.ts +3 -0
  829. package/dist/react/use-opencode-sessions/sharing.js +51 -0
  830. package/dist/react/use-opencode-sessions/tools.d.ts +5 -0
  831. package/dist/react/use-opencode-sessions/tools.js +48 -0
  832. package/dist/react/use-opencode-sessions/vcs.d.ts +7 -0
  833. package/dist/react/use-opencode-sessions/vcs.js +24 -0
  834. package/dist/react/use-ops-overview.d.ts +63 -0
  835. package/dist/react/use-ops-overview.js +15 -0
  836. package/dist/react/use-permission-self-heal.d.ts +10 -0
  837. package/dist/react/use-permission-self-heal.js +114 -0
  838. package/dist/react/use-poll-owner.d.ts +1 -0
  839. package/dist/react/use-poll-owner.js +14 -0
  840. package/dist/react/use-project-apps.d.ts +879 -0
  841. package/dist/react/use-project-apps.js +185 -0
  842. package/dist/react/use-project-config.d.ts +2 -0
  843. package/dist/react/use-project-config.js +16 -0
  844. package/dist/react/use-project-files.d.ts +87 -0
  845. package/dist/react/use-project-files.js +109 -0
  846. package/dist/react/use-project-gateway.d.ts +26 -0
  847. package/dist/react/use-project-gateway.js +111 -0
  848. package/dist/react/use-project-llm-gateway.d.ts +6 -0
  849. package/dist/react/use-project-llm-gateway.js +20 -0
  850. package/dist/react/use-project-models.d.ts +4 -0
  851. package/dist/react/use-project-models.js +31 -0
  852. package/dist/react/use-project-name.d.ts +4 -0
  853. package/dist/react/use-project-name.js +35 -0
  854. package/dist/react/use-project-secrets.d.ts +279 -0
  855. package/dist/react/use-project-secrets.js +34 -0
  856. package/dist/react/use-project-session.d.ts +4 -0
  857. package/dist/react/use-project-session.js +18 -0
  858. package/dist/react/use-project-sessions.d.ts +447 -0
  859. package/dist/react/use-project-sessions.js +86 -0
  860. package/dist/react/use-project-starter-suggestions.d.ts +2 -0
  861. package/dist/react/use-project-starter-suggestions.js +13 -0
  862. package/dist/react/use-project-triggers.d.ts +221 -0
  863. package/dist/react/use-project-triggers.js +53 -0
  864. package/dist/react/use-prompt-attachments.d.ts +3 -0
  865. package/dist/react/use-prompt-attachments.js +34 -0
  866. package/dist/react/use-provider-secrets.d.ts +229 -0
  867. package/dist/react/use-provider-secrets.js +38 -0
  868. package/dist/react/use-question-self-heal.d.ts +7 -0
  869. package/dist/react/use-question-self-heal.js +81 -0
  870. package/dist/react/use-reminders.d.ts +501 -0
  871. package/dist/react/use-reminders.js +51 -0
  872. package/dist/react/use-runtime-boot-stalled.d.ts +2 -0
  873. package/dist/react/use-runtime-boot-stalled.js +18 -0
  874. package/dist/react/use-runtime-phase.d.ts +2 -0
  875. package/dist/react/use-runtime-phase.js +13 -0
  876. package/dist/react/use-runtime-reconnect.d.ts +52 -0
  877. package/dist/react/use-runtime-reconnect.js +248 -0
  878. package/dist/react/use-runtime-supports.d.ts +2 -0
  879. package/dist/react/use-runtime-supports.js +5 -0
  880. package/dist/react/use-sandbox-image.d.ts +33 -0
  881. package/dist/react/use-sandbox-image.js +119 -0
  882. package/dist/react/use-session-audit.d.ts +4 -0
  883. package/dist/react/use-session-audit.js +25 -0
  884. package/dist/react/use-session-message-authors.d.ts +1 -0
  885. package/dist/react/use-session-message-authors.js +14 -0
  886. package/dist/react/use-session-messages.d.ts +11 -0
  887. package/dist/react/use-session-messages.js +62 -0
  888. package/dist/react/use-session-model-selection.d.ts +8 -0
  889. package/dist/react/use-session-model-selection.js +20 -0
  890. package/dist/react/use-session-model-usage.d.ts +1 -0
  891. package/dist/react/use-session-model-usage.js +13 -0
  892. package/dist/react/use-session-participants.d.ts +4 -0
  893. package/dist/react/use-session-participants.js +13 -0
  894. package/dist/react/use-session-phase.d.ts +8 -0
  895. package/dist/react/use-session-phase.js +9 -0
  896. package/dist/react/use-session-picks.d.ts +13 -0
  897. package/dist/react/use-session-picks.js +65 -0
  898. package/dist/react/use-session-prefetch.d.ts +6 -0
  899. package/dist/react/use-session-prefetch.js +22 -0
  900. package/dist/react/use-session-prompts.d.ts +53 -0
  901. package/dist/react/use-session-prompts.js +378 -0
  902. package/dist/react/use-session-send.d.ts +97 -0
  903. package/dist/react/use-session-send.js +233 -0
  904. package/dist/react/use-session-start-give-up.d.ts +19 -0
  905. package/dist/react/use-session-start-give-up.js +59 -0
  906. package/dist/react/use-session-stream.d.ts +17 -0
  907. package/dist/react/use-session-stream.js +181 -0
  908. package/dist/react/use-session-sync.d.ts +43 -0
  909. package/dist/react/use-session-sync.js +252 -0
  910. package/dist/react/use-session-transcript-history.d.ts +6 -0
  911. package/dist/react/use-session-transcript-history.js +38 -0
  912. package/dist/react/use-session-working.d.ts +37 -0
  913. package/dist/react/use-session-working.js +217 -0
  914. package/dist/react/use-session.d.ts +201 -0
  915. package/dist/react/use-session.js +893 -0
  916. package/dist/react/use-sessions-needing-input.d.ts +5 -0
  917. package/dist/react/use-sessions-needing-input.js +23 -0
  918. package/dist/react/use-static-file-preview.d.ts +9 -0
  919. package/dist/react/use-static-file-preview.js +72 -0
  920. package/dist/react/use-system-status.d.ts +38 -0
  921. package/dist/react/use-system-status.js +5 -0
  922. package/dist/react/use-teams-installations.d.ts +41 -0
  923. package/dist/react/use-teams-installations.js +95 -0
  924. package/dist/react/use-tunnel.d.ts +165 -0
  925. package/dist/react/use-tunnel.js +186 -0
  926. package/dist/react/use-visible-agents.d.ts +9 -0
  927. package/dist/react/use-visible-agents.js +12 -0
  928. package/dist/react/use-wake-escalation.d.ts +31 -0
  929. package/dist/react/use-wake-escalation.js +82 -0
  930. package/dist/transcript.d.ts +50 -0
  931. package/dist/transcript.js +93 -0
  932. package/dist/workspace-search/client.d.ts +19 -0
  933. package/dist/workspace-search/client.js +229 -0
  934. package/dist/workspace-search/core.d.ts +21 -0
  935. package/dist/workspace-search/core.js +259 -0
  936. package/dist/workspace-search/index.d.ts +2 -0
  937. package/dist/workspace-search/index.js +2 -0
  938. package/package.json +178 -0
@@ -0,0 +1,893 @@
1
+ 'use client';
2
+ import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
3
+ import { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
4
+ import { useOpenCodeCompactionStore } from '../browser/stores/opencode-compaction-store.js';
5
+ import { useSessionWorkingStore } from '../browser/stores/session-working-store.js';
6
+ import { compactionExpiryAtMs, projectCompacting, serverCompactionRevalidateAtMs, } from '../core/session/compaction.js';
7
+ import { useRuntimePendingStore } from '../browser/stores/opencode-pending-store.js';
8
+ import { markRuntimeReadyVerified, seedConnectionFromReadyStart, } from '../browser/stores/sandbox-connection-store.js';
9
+ import { getSandboxUrlForExternalId } from '../browser/stores/server-store.js';
10
+ import { getBackendUrl } from '../core/session/server-store/url-helpers.js';
11
+ import { ascendingId, useSyncStore } from '../browser/stores/sync-store.js';
12
+ import { BillingError, parseBillingError } from '../core/http/api/errors.js';
13
+ import { isSessionFresh } from '../core/http/fresh-sessions.js';
14
+ import { onSessionStopped } from '../core/http/session-stopped.js';
15
+ import { formatRuntimeError } from '../core/http/runtime-errors.js';
16
+ import { createSessionPrompt, isSessionStartError, sessionStartKey, startProjectSession, } from '../core/rest/projects-client/index.js';
17
+ import { RuntimeNotReadyError, getClient } from '../core/runtime/client.js';
18
+ import { setCurrentRuntime } from '../core/session/current-runtime.js';
19
+ import { onRuntimeGone } from '../core/session/runtime-gone.js';
20
+ import { openSessionBundle } from '../core/session/open-bundle.js';
21
+ import { messagesBeforeRewind } from '../core/session/rewind.js';
22
+ import { extractGatewayErrorDetails, unwrapError } from '../core/turns/errors.js';
23
+ import { holdLiveStart, liveStartPollMode } from './hold-live-start.js';
24
+ import { clearStartStash, readStartStash } from './session-start-stash.js';
25
+ import { reconcileHydratedSessionTitle } from './session-title-sync.js';
26
+ import { seedModelDefaultsFromOpenBundle } from './prefetch-session-open.js';
27
+ import { useSessionTranscriptHistory } from './use-session-transcript-history.js';
28
+ import { useCanonicalRuntimeSession } from './use-canonical-opencode-session.js';
29
+ import { useRuntimeEventStream } from './use-opencode-events/index.js';
30
+ import { useSessionStream } from './use-session-stream.js';
31
+ import { sessionStreamConnected } from '../core/session/control-stream.js';
32
+ import { presenceReporter, watchHumanPresence } from './human-presence.js';
33
+ import { formatModelString } from './use-opencode-local.js';
34
+ import { runtimeKeys, rejectQuestion as rejectQuestionApi, replyToPermission, replyToQuestion, useAbortRuntimeSession, useExecuteRuntimeCommand, useRuntimeSession, } from './use-opencode-sessions/index.js';
35
+ import { mintSessionWireMessageId } from './use-opencode-sessions/messages.js';
36
+ import { unwrap } from './use-opencode-sessions/shared.js';
37
+ import { usePermissionSelfHeal } from './use-permission-self-heal.js';
38
+ import { useProjectConfig } from './use-project-config.js';
39
+ import { useProjectModels } from './use-project-models.js';
40
+ import { useQuestionSelfHeal } from './use-question-self-heal.js';
41
+ import { useRuntimePhase } from './use-runtime-phase.js';
42
+ import { useSessionPicks } from './use-session-picks.js';
43
+ import { derivePhase } from './use-session-phase.js';
44
+ import { isEmptyConversation, resolveSavedTranscript } from '../core/session-sync/saved-transcript.js';
45
+ import { useSessionSync } from './use-session-sync.js';
46
+ import { selectTranscriptShapeKey } from './session-transcript-subscription.js';
47
+ import { useSessionStartGiveUp } from './use-session-start-give-up.js';
48
+ import { useSessionTurnOutcome, useSessionWorking } from './use-session-working.js';
49
+ import { cancelSessionTurn } from './session-stop.js';
50
+ import { useVisibleAgents } from './use-visible-agents.js';
51
+ import { createBeeuni } from '../core/client/beeuni.js';
52
+ import { platformConfig } from '../core/http/config.js';
53
+ const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;
54
+ const FRESH_START_404_RETRIES = 12;
55
+ const FRESH_START_404_RETRY_DELAY_MS = 800;
56
+ export function shouldRetrySessionStart(failureCount, error, sessionId) {
57
+ if (isSessionStartError(error) && error.status === 404 && isSessionFresh(sessionId)) {
58
+ return failureCount < FRESH_START_404_RETRIES;
59
+ }
60
+ return !isSessionStartError(error) && failureCount < 3;
61
+ }
62
+ export const SESSION_START_POLL_MS = 1_500;
63
+ export function resolveSessionRuntimeUrl(start) {
64
+ if (!start || start.stage !== 'ready')
65
+ return null;
66
+ const externalId = start.sandbox?.external_id;
67
+ if (externalId)
68
+ return getSandboxUrlForExternalId(externalId);
69
+ const path = start.runtime_url;
70
+ if (!path)
71
+ return null;
72
+ if (/^https?:\/\//i.test(path))
73
+ return path;
74
+ return `${getBackendUrl()}${path.startsWith('/') ? '' : '/'}${path}`;
75
+ }
76
+ export function resolveSendOptions(picks, override) {
77
+ const model = override?.model ?? picks.model;
78
+ const agent = override?.agent ?? picks.agent;
79
+ const variant = override?.variant ?? picks.variant;
80
+ return {
81
+ ...(model ? { model } : {}),
82
+ ...(agent ? { agent } : {}),
83
+ ...(variant ? { variant } : {}),
84
+ ...(override?.directory ? { directory: override.directory } : {}),
85
+ };
86
+ }
87
+ export function sessionPromptFromParts(runtimeSessionId, parts, options, clientMessageId, nowMs = Date.now()) {
88
+ const messageId = mintSessionWireMessageId(runtimeSessionId, clientMessageId);
89
+ const wireParts = parts.map((part) => {
90
+ if (part.type === 'file') {
91
+ return {
92
+ type: 'file',
93
+ mime: part.mime,
94
+ url: part.url,
95
+ ...(part.filename ? { filename: part.filename } : {}),
96
+ ...(part.source ? { source: part.source } : {}),
97
+ };
98
+ }
99
+ if (part.type === 'agent')
100
+ return { type: 'agent', name: part.name, ...(part.source ? { source: part.source } : {}) };
101
+ return { type: 'text', text: part.text };
102
+ });
103
+ const overrides = {
104
+ ...(options.model ? { model: options.model } : {}),
105
+ ...(options.agent ? { agent: options.agent } : {}),
106
+ ...(options.variant ? { variant: options.variant } : {}),
107
+ ...(options.directory ? { directory: options.directory } : {}),
108
+ };
109
+ return {
110
+ clientMessageId: clientMessageId ?? messageId,
111
+ messageId,
112
+ parts: wireParts,
113
+ ...(Object.keys(overrides).length ? { overrides } : {}),
114
+ remintOnDelivery: true,
115
+ clientSentAtMs: nowMs,
116
+ };
117
+ }
118
+ export function shouldPollSessionStart(error, data, now = Date.now()) {
119
+ if (isSessionStartError(error))
120
+ return false;
121
+ if (data?.retriable === false)
122
+ return false;
123
+ const stage = data?.stage;
124
+ if (stage === 'ready' || stage === 'failed' || stage === 'stopped')
125
+ return false;
126
+ const retryPause = sessionStartRetryPauseMs(data, now);
127
+ return retryPause ?? SESSION_START_POLL_MS;
128
+ }
129
+ function sessionStartRetryPauseMs(data, now) {
130
+ const nextRetryAt = data?.failure?.evidence?.next_retry_at;
131
+ if (!nextRetryAt)
132
+ return null;
133
+ const atMs = Date.parse(nextRetryAt);
134
+ if (!Number.isFinite(atMs))
135
+ return null;
136
+ return Math.max(SESSION_START_POLL_MS, Math.min(atMs - now + 1_000, 60_000));
137
+ }
138
+ export { START_INCONCLUSIVE_GIVE_UP_MS, hasStartGivenUp, nextInconclusiveSince, } from './use-session-start-give-up.js';
139
+ export function computeStartSettled(input) {
140
+ if (!input.enabled)
141
+ return true;
142
+ if (input.hasGivenUp)
143
+ return true;
144
+ if (input.isFetching)
145
+ return false;
146
+ return !shouldPollSessionStart(input.error, input.data);
147
+ }
148
+ export const SESSION_START_FRESH_MS = 30_000;
149
+ const RUNTIME_GONE_REFETCH_MIN_MS = 3_000;
150
+ export function sessionStartStaleTime(query) {
151
+ return query.state.data?.stage === 'ready' ? SESSION_START_FRESH_MS : 0;
152
+ }
153
+ export function cachedStartResultIsReady(cachedState) {
154
+ return cachedState?.data?.stage === 'ready';
155
+ }
156
+ function startPollSignature(data) {
157
+ return [
158
+ data?.stage ?? '',
159
+ data?.reason ?? '',
160
+ data?.failure?.evidence?.next_retry_at ?? '',
161
+ ].join('|');
162
+ }
163
+ const SESSION_START_POLL_BACKOFF_STEPS = [
164
+ { afterMs: 30_000, pollMs: 5_000 },
165
+ { afterMs: 90_000, pollMs: 15_000 },
166
+ { afterMs: 240_000, pollMs: 30_000 },
167
+ ];
168
+ const START_POLL_PACE_TTL_MS = 300_000;
169
+ const startPollPaceByQuery = new WeakMap();
170
+ function sessionStartRefetchIntervalMs(query, now) {
171
+ if (query.state.data?.stage === 'ready')
172
+ return 60_000;
173
+ const base = shouldPollSessionStart(query.state.error, query.state.data, now);
174
+ if (base === false) {
175
+ startPollPaceByQuery.delete(query);
176
+ return false;
177
+ }
178
+ const signature = startPollSignature(query.state.data);
179
+ const previous = startPollPaceByQuery.get(query);
180
+ const pace = previous &&
181
+ previous.signature === signature &&
182
+ now - previous.touchedAt <= START_POLL_PACE_TTL_MS
183
+ ? previous
184
+ : { signature, unchangedSince: now, touchedAt: now };
185
+ pace.touchedAt = now;
186
+ startPollPaceByQuery.set(query, pace);
187
+ const unchangedMs = now - pace.unchangedSince;
188
+ const stretched = [...SESSION_START_POLL_BACKOFF_STEPS]
189
+ .reverse()
190
+ .find((step) => unchangedMs >= step.afterMs)?.pollMs;
191
+ return stretched ? Math.max(base, stretched) : base;
192
+ }
193
+ export const SESSION_START_POLL_OPTIONS = {
194
+ refetchInterval: (query) => sessionStartRefetchIntervalMs(query, Date.now()),
195
+ refetchIntervalInBackground: true,
196
+ };
197
+ const RUNTIME_NOT_READY_MARKER = 'Server URL not ready';
198
+ export function markDispatchedForPartIds(sessionId, parts) {
199
+ const partIds = new Set(parts
200
+ .map((p) => p.id)
201
+ .filter((id) => typeof id === 'string' && !!id));
202
+ if (partIds.size === 0)
203
+ return;
204
+ const store = useSyncStore.getState();
205
+ for (const message of store.messages[sessionId] ?? []) {
206
+ if (message.role !== 'user')
207
+ continue;
208
+ const owns = (store.parts[message.id] ?? []).some((p) => partIds.has(p.id));
209
+ if (owns)
210
+ store.markOptimisticDispatched(sessionId, message.id);
211
+ }
212
+ }
213
+ export function beginOptimisticPlainTextSend(sessionId, text) {
214
+ const messageId = ascendingId('msg');
215
+ const partId = ascendingId('prt');
216
+ const optimisticParts = text.trim()
217
+ ? [
218
+ {
219
+ id: partId,
220
+ sessionID: sessionId,
221
+ messageID: messageId,
222
+ type: 'text',
223
+ text,
224
+ },
225
+ ]
226
+ : [];
227
+ const info = {
228
+ id: messageId,
229
+ sessionID: sessionId,
230
+ role: 'user',
231
+ time: {},
232
+ };
233
+ useSyncStore.getState().optimisticAdd(sessionId, info, optimisticParts);
234
+ return { messageId, parts: [{ type: 'text', text, id: partId }] };
235
+ }
236
+ function errorBody(error) {
237
+ if (!error || typeof error !== 'object')
238
+ return null;
239
+ const holder = error;
240
+ for (const key of ['data', 'details', 'body']) {
241
+ const candidate = holder[key];
242
+ if (candidate && typeof candidate === 'object')
243
+ return candidate;
244
+ }
245
+ return holder;
246
+ }
247
+ function errorBodyMessage(error) {
248
+ const body = errorBody(error);
249
+ for (const key of ['message', 'error']) {
250
+ const value = body?.[key];
251
+ if (typeof value === 'string' && value.trim())
252
+ return value.trim();
253
+ }
254
+ return null;
255
+ }
256
+ function connectorRefusalConnections(error) {
257
+ const body = errorBody(error);
258
+ if (body?.code !== 'CONNECTOR_CONNECTION_REQUIRED')
259
+ return null;
260
+ const listed = [body.connector_connections, body.connectorConnections].find(Array.isArray);
261
+ const connections = [];
262
+ for (const entry of listed ?? []) {
263
+ if (!entry || typeof entry !== 'object')
264
+ continue;
265
+ const connection = entry;
266
+ const strategy = connection.authorization_strategy ?? connection.authorizationStrategy;
267
+ if (typeof connection.id !== 'string' || typeof connection.slug !== 'string')
268
+ continue;
269
+ if (strategy !== 'project' && strategy !== 'user')
270
+ continue;
271
+ connections.push({
272
+ id: connection.id,
273
+ slug: connection.slug,
274
+ name: typeof connection.name === 'string' && connection.name ? connection.name : connection.slug,
275
+ authorization_strategy: strategy,
276
+ });
277
+ }
278
+ return connections.length > 0 ? connections : null;
279
+ }
280
+ export function classifySendError(error) {
281
+ if (error instanceof RuntimeNotReadyError ||
282
+ (error instanceof Error && error.message.includes(RUNTIME_NOT_READY_MARKER))) {
283
+ return {
284
+ kind: 'runtime-not-ready',
285
+ message: 'The session runtime is still starting — try again in a moment.',
286
+ cause: error,
287
+ };
288
+ }
289
+ if (error && typeof error === 'object') {
290
+ const parsed = parseBillingError(error);
291
+ if (parsed instanceof BillingError) {
292
+ return {
293
+ kind: 'billing',
294
+ message: parsed.message,
295
+ billing: parsed,
296
+ cause: error,
297
+ };
298
+ }
299
+ const connectors = connectorRefusalConnections(error);
300
+ if (connectors) {
301
+ return {
302
+ kind: 'connector',
303
+ message: errorBodyMessage(error) ??
304
+ 'Connect the required connectors before continuing this session.',
305
+ connectors,
306
+ cause: error,
307
+ };
308
+ }
309
+ }
310
+ const gateway = extractGatewayErrorDetails(error);
311
+ const formatted = formatRuntimeError(error);
312
+ return {
313
+ kind: 'runtime-error',
314
+ message: gateway?.message || unwrapError(formatted.message),
315
+ ...(gateway
316
+ ? {
317
+ gateway: {
318
+ provider: gateway.provider,
319
+ code: gateway.code,
320
+ suggestion: gateway.suggestion,
321
+ upstreamStatus: gateway.upstreamStatus,
322
+ requestId: gateway.requestId,
323
+ },
324
+ }
325
+ : {}),
326
+ cause: error,
327
+ };
328
+ }
329
+ export function buildSessionCommandInput(sessionId, command, args, options = {}) {
330
+ return {
331
+ sessionId,
332
+ command,
333
+ args,
334
+ ...(options.agent ? { agent: options.agent } : {}),
335
+ ...(options.model ? { model: formatModelString(options.model) } : {}),
336
+ ...(options.variant ? { variant: options.variant } : {}),
337
+ };
338
+ }
339
+ const IDLE_SEND_STATE = { pending: null, sendError: null };
340
+ export function sendStateOnStart(text) {
341
+ return { pending: text, sendError: null };
342
+ }
343
+ export function sendStateOnError(error) {
344
+ return { pending: null, sendError: classifySendError(error) };
345
+ }
346
+ export function sendReceiptId(sessionId, parts, clientMessageId) {
347
+ const identified = parts.find((part) => 'id' in part && typeof part.id === 'string');
348
+ return clientMessageId ?? identified?.id ?? sessionId;
349
+ }
350
+ export async function rewindOpenCodeSession(sessionId, messageId) {
351
+ if (!messageId)
352
+ throw new Error('Session rewind requires a message id');
353
+ unwrap(await getClient().session.revert({
354
+ sessionID: sessionId,
355
+ messageID: messageId,
356
+ }));
357
+ }
358
+ export async function restoreOpenCodeSessionRewind(sessionId) {
359
+ unwrap(await getClient().session.unrevert({ sessionID: sessionId }));
360
+ }
361
+ export async function answerQuestion(requestId, answers) {
362
+ try {
363
+ await replyToQuestion(requestId, answers);
364
+ }
365
+ catch (error) {
366
+ throw classifySendError(error);
367
+ }
368
+ useRuntimePendingStore.getState().removeQuestion(requestId);
369
+ }
370
+ export async function rejectQuestion(requestId) {
371
+ try {
372
+ await rejectQuestionApi(requestId);
373
+ }
374
+ catch (error) {
375
+ throw classifySendError(error);
376
+ }
377
+ useRuntimePendingStore.getState().removeQuestion(requestId);
378
+ }
379
+ export async function answerPermission(requestId, reply, message) {
380
+ try {
381
+ await replyToPermission(requestId, reply, message);
382
+ }
383
+ catch (error) {
384
+ throw classifySendError(error);
385
+ }
386
+ useRuntimePendingStore.getState().removePermission(requestId);
387
+ }
388
+ const DISABLED_CHAT_ENGINE_SYNC = {
389
+ messages: [],
390
+ status: { type: 'idle' },
391
+ freshness: 'idle',
392
+ retryTranscript: () => { },
393
+ isBusy: false,
394
+ isLoading: false,
395
+ mirrorState: 'idle',
396
+ diffs: [],
397
+ todos: [],
398
+ hasOlder: false,
399
+ isLoadingOlder: false,
400
+ loadOlder: async () => { },
401
+ };
402
+ export function useSession(projectId, sessionId, options = {}) {
403
+ const queryClient = useQueryClient();
404
+ const titleRefreshAbortRef = useRef(null);
405
+ const { waitMs = 15_000, repositoryMode, replayStartStash = true, enabled = true, chatEngine = true, initialRuntimeSessionId = options.initialOpenCodeSessionId ?? null, subscribeMessages = true, browserPresence = false, presenceAlerts = false, presencePageExit = false, } = options;
406
+ const [presenceTabId] = useState(() => (browserPresence ? crypto.randomUUID() : null));
407
+ const presenceAlertsRef = useRef(presenceAlerts);
408
+ const presencePageExitRef = useRef(presencePageExit);
409
+ const presenceReporterRef = useRef(null);
410
+ useEffect(() => {
411
+ if (!browserPresence || !presenceTabId || !projectId || !sessionId)
412
+ return;
413
+ const tab_id = presenceTabId;
414
+ const handle = createBeeuni(platformConfig()).session(projectId, sessionId);
415
+ const reporter = presenceReporter(({ active, alerts }) => {
416
+ const keepalive = !active && presencePageExitRef.current;
417
+ void handle.presence({ tab_id, active, alerts }, { keepalive }).catch(() => { });
418
+ }, presenceAlertsRef.current);
419
+ presenceReporterRef.current = reporter;
420
+ const stop = watchHumanPresence({ doc: document, win: window }, reporter.report, () => sessionStreamConnected(projectId, sessionId), () => presencePageExitRef.current);
421
+ return () => {
422
+ presenceReporterRef.current = null;
423
+ stop();
424
+ };
425
+ }, [browserPresence, presenceTabId, projectId, sessionId]);
426
+ useEffect(() => {
427
+ presenceAlertsRef.current = presenceAlerts;
428
+ presenceReporterRef.current?.setAlerts(presenceAlerts);
429
+ }, [presenceAlerts]);
430
+ useEffect(() => {
431
+ presencePageExitRef.current = presencePageExit;
432
+ }, [presencePageExit]);
433
+ const startEnabled = enabled && !!projectId && !!sessionId;
434
+ const streamConnectedRef = useRef(false);
435
+ const stoppedByUserRef = useRef(null);
436
+ const openedAtRef = useRef(null);
437
+ const start = useQuery({
438
+ queryKey: sessionStartKey(projectId, sessionId),
439
+ queryFn: async () => {
440
+ const previous = queryClient.getQueryData(sessionStartKey(projectId, sessionId));
441
+ if (openedAtRef.current?.sessionId !== sessionId)
442
+ openedAtRef.current = { sessionId, at: Date.now() };
443
+ const heldByStop = stoppedByUserRef.current === sessionId;
444
+ const mode = heldByStop
445
+ ? 'keep-stopped'
446
+ : liveStartPollMode(previous, typeof document !== 'undefined' && document.hidden);
447
+ if (mode === 'skip' && previous)
448
+ return previous;
449
+ const next = await startProjectSession(projectId, sessionId, {
450
+ waitMs,
451
+ repositoryMode,
452
+ keepStopped: mode === 'keep-stopped',
453
+ intentAgeMs: Date.now() - openedAtRef.current.at,
454
+ });
455
+ if (heldByStop && next && next.stage !== 'stopped' && stoppedByUserRef.current === sessionId) {
456
+ stoppedByUserRef.current = null;
457
+ openedAtRef.current = { sessionId, at: Date.now() };
458
+ }
459
+ return holdLiveStart(previous, next);
460
+ },
461
+ enabled: startEnabled,
462
+ retry: (failureCount, error) => shouldRetrySessionStart(failureCount, error, sessionId),
463
+ retryDelay: (failureCount, error) => isSessionStartError(error) && error.status === 404
464
+ ? FRESH_START_404_RETRY_DELAY_MS
465
+ : Math.min(1000 * 2 ** failureCount, 5000),
466
+ staleTime: sessionStartStaleTime,
467
+ ...SESSION_START_POLL_OPTIONS,
468
+ refetchInterval: (query) => streamConnectedRef.current && query.state.data?.stage === 'ready'
469
+ ? false
470
+ : SESSION_START_POLL_OPTIONS.refetchInterval(query),
471
+ });
472
+ useEffect(() => {
473
+ if (!startEnabled)
474
+ return;
475
+ return onSessionStopped((stoppedId) => {
476
+ if (stoppedId !== sessionId)
477
+ return;
478
+ stoppedByUserRef.current = sessionId;
479
+ void queryClient.invalidateQueries({ queryKey: sessionStartKey(projectId, sessionId) });
480
+ });
481
+ }, [startEnabled, projectId, sessionId, queryClient]);
482
+ const startData = start.data ?? null;
483
+ const startError = isSessionStartError(start.error) ? start.error : null;
484
+ const stage = startData?.stage ?? null;
485
+ const sandbox = startData?.sandbox ?? null;
486
+ const startReady = stage === 'ready';
487
+ const terminal = stage === 'failed' || stage === 'stopped';
488
+ useIsomorphicLayoutEffect(() => {
489
+ if (!startEnabled)
490
+ return;
491
+ const cached = queryClient.getQueryState(sessionStartKey(projectId, sessionId));
492
+ if (cachedStartResultIsReady(cached))
493
+ markRuntimeReadyVerified();
494
+ }, [projectId, sessionId]);
495
+ useIsomorphicLayoutEffect(() => {
496
+ if (!startEnabled)
497
+ return;
498
+ openSessionBundle(projectId, sessionId);
499
+ seedModelDefaultsFromOpenBundle(queryClient, projectId, sessionId);
500
+ }, [projectId, sessionId]);
501
+ const streamConnected = useSessionStream(projectId, sessionId, {
502
+ enabled: startEnabled,
503
+ tabId: presenceTabId ?? undefined,
504
+ });
505
+ streamConnectedRef.current = streamConnected;
506
+ const startGivenUp = useSessionStartGiveUp({
507
+ identity: `${projectId}\u0000${sessionId}`,
508
+ enabled: startEnabled,
509
+ hasData: !!start.data,
510
+ hasError: !!start.error,
511
+ isFetching: start.isFetching,
512
+ });
513
+ const startSettled = computeStartSettled({
514
+ enabled: startEnabled,
515
+ isFetching: start.isFetching,
516
+ data: start.data,
517
+ error: start.error,
518
+ hasGivenUp: startGivenUp,
519
+ });
520
+ const [switchedBoxId, setSwitchedBoxId] = useState(null);
521
+ useEffect(() => {
522
+ if (!startReady || !sandbox?.external_id || switchedBoxId === sandbox.external_id)
523
+ return;
524
+ setCurrentRuntime(getSandboxUrlForExternalId(sandbox.external_id), sandbox.external_id, sandbox.sandbox_id);
525
+ setSwitchedBoxId(sandbox.external_id);
526
+ }, [startReady, sandbox, switchedBoxId]);
527
+ useEffect(() => () => setCurrentRuntime(null), []);
528
+ const switched = startReady && !!sandbox?.external_id && switchedBoxId === sandbox.external_id;
529
+ useEffect(() => {
530
+ if (!switched || !sandbox?.external_id)
531
+ return;
532
+ seedConnectionFromReadyStart(getSandboxUrlForExternalId(sandbox.external_id), startData?.capabilities);
533
+ }, [switched, switchedBoxId]);
534
+ const refetchStart = start.refetch;
535
+ useEffect(() => {
536
+ if (!startEnabled || !switchedBoxId)
537
+ return;
538
+ const switchedUrl = getSandboxUrlForExternalId(switchedBoxId);
539
+ let lastAt = 0;
540
+ return onRuntimeGone((runtimeUrl) => {
541
+ if (runtimeUrl !== switchedUrl)
542
+ return;
543
+ const now = Date.now();
544
+ if (now - lastAt < RUNTIME_GONE_REFETCH_MIN_MS)
545
+ return;
546
+ lastAt = now;
547
+ void refetchStart();
548
+ });
549
+ }, [startEnabled, switchedBoxId, refetchStart]);
550
+ useRuntimeEventStream({ enabled: switched, projectId, sessionId });
551
+ const transcriptHistoryEnabled = startEnabled && chatEngine;
552
+ const transcriptHistory = useSessionTranscriptHistory(projectId, sessionId, transcriptHistoryEnabled);
553
+ const canonicalSession = useCanonicalRuntimeSession({
554
+ projectId,
555
+ sessionId,
556
+ pinFromStart: startData?.runtime_session_id ?? startData?.opencode_session_id ?? null,
557
+ initialPin: transcriptHistory.rootSessionId ?? initialRuntimeSessionId,
558
+ listRuntimeSessions: switched,
559
+ });
560
+ const { rootSessionId } = canonicalSession;
561
+ const ocSessionId = rootSessionId ?? '';
562
+ useEffect(() => () => {
563
+ titleRefreshAbortRef.current?.abort();
564
+ titleRefreshAbortRef.current = null;
565
+ }, [projectId, sessionId]);
566
+ const working = useSessionWorking(projectId, sessionId, {
567
+ enabled,
568
+ runtimeSessionId: ocSessionId,
569
+ });
570
+ const { noteSendReceipt, acceptSendReceipt, clearSendReceipt } = useSessionWorkingStore.getState();
571
+ const rawSync = useSessionSync(chatEngine ? ocSessionId : '', {
572
+ beeuniSessionScope: `${projectId}/${sessionId}`,
573
+ streamConnected,
574
+ mirror: transcriptHistory.envelope ?? undefined,
575
+ networkEnabled: switched,
576
+ working: working.state === 'working',
577
+ serverHoldsTurn: working.serverOpenTurnToken !== null,
578
+ subscribeMessages,
579
+ });
580
+ useSyncStore((state) => !subscribeMessages && chatEngine && ocSessionId
581
+ ? selectTranscriptShapeKey(state, ocSessionId)
582
+ : '');
583
+ const sync = chatEngine ? rawSync : DISABLED_CHAT_ENGINE_SYNC;
584
+ const runtimePhase = useRuntimePhase();
585
+ const restRewind = useSyncStore((s) => s.sessionRevert[ocSessionId] ?? null);
586
+ const [rewindPending, setRewindPending] = useState(false);
587
+ const [rewindError, setRewindError] = useState(null);
588
+ const rewindMessageId = restRewind?.staged ? restRewind.messageId : null;
589
+ const messages = useMemo(() => messagesBeforeRewind(sync.messages, restRewind), [sync.messages, restRewind]);
590
+ const turnOutcome = useSessionTurnOutcome(projectId, sessionId);
591
+ const turnRead = typeof turnOutcome.atMs === 'number';
592
+ const savedEmptyRoot = transcriptHistoryEnabled ? transcriptHistory.emptyRootSessionId : null;
593
+ const emptyProvenForRoot = savedEmptyRoot !== null && savedEmptyRoot === ocSessionId;
594
+ const savedTranscript = resolveSavedTranscript({
595
+ enabled: startEnabled && chatEngine,
596
+ hasMessages: sync.messages.length > 0,
597
+ history: !transcriptHistoryEnabled
598
+ ? 'off'
599
+ : transcriptHistory.isLoading
600
+ ? 'loading'
601
+ : transcriptHistory.envelope
602
+ ? 'present'
603
+ : 'absent',
604
+ mirror: sync.mirrorState,
605
+ root: ocSessionId ? 'known' : canonicalSession.pinSettled ? 'unknown' : 'pending',
606
+ emptyAwaitingTurnRead: emptyProvenForRoot && !turnRead,
607
+ });
608
+ const conversationEmpty = isEmptyConversation({
609
+ savedEmptyRoot,
610
+ rootSessionId: ocSessionId,
611
+ turnRead,
612
+ hasEndedTurn: turnOutcome.last_ended != null,
613
+ hasOpenOrQueuedTurn: working.state === 'working' ||
614
+ working.pendingDelivery === true ||
615
+ working.serverOpenTurnToken !== null,
616
+ });
617
+ useEffect(() => {
618
+ setRewindPending(false);
619
+ setRewindError(null);
620
+ }, [sessionId, ocSessionId]);
621
+ useQuestionSelfHeal(ocSessionId, sync.messages, {
622
+ enabled: switched && chatEngine && !!ocSessionId && !streamConnected,
623
+ });
624
+ usePermissionSelfHeal(ocSessionId, sync.messages, {
625
+ enabled: switched && chatEngine && !!ocSessionId && !streamConnected,
626
+ });
627
+ const questionMap = useRuntimePendingStore((s) => s.questions);
628
+ const permissionMap = useRuntimePendingStore((s) => s.permissions);
629
+ const optimisticCompactionAtMs = useOpenCodeCompactionStore((state) => switched ? (state.compactingBySession[ocSessionId] ?? null) : null);
630
+ const runtimeSessionRow = useRuntimeSession(switched ? ocSessionId : '');
631
+ const compactionInputs = {
632
+ optimisticAtMs: optimisticCompactionAtMs,
633
+ serverCompactingAtMs: runtimeSessionRow.data?.time?.compacting ?? null,
634
+ nowMs: Date.now(),
635
+ };
636
+ const isCompacting = projectCompacting(compactionInputs);
637
+ const [, setCompactionTick] = useState(0);
638
+ const compactionExpiry = compactionExpiryAtMs(compactionInputs);
639
+ useEffect(() => {
640
+ if (compactionExpiry === null)
641
+ return;
642
+ const timer = setTimeout(() => setCompactionTick((tick) => tick + 1), Math.max(0, compactionExpiry - Date.now()) + 1);
643
+ return () => clearTimeout(timer);
644
+ }, [compactionExpiry]);
645
+ const serverCompactionRevalidateAt = serverCompactionRevalidateAtMs(compactionInputs);
646
+ useEffect(() => {
647
+ if (serverCompactionRevalidateAt === null || !switched || !ocSessionId)
648
+ return;
649
+ const timer = setTimeout(() => {
650
+ void queryClient.invalidateQueries({ queryKey: runtimeKeys.runtimeSession(ocSessionId) });
651
+ }, Math.max(0, serverCompactionRevalidateAt - Date.now()));
652
+ return () => clearTimeout(timer);
653
+ }, [serverCompactionRevalidateAt, switched, ocSessionId, queryClient]);
654
+ const removeQuestion = useRuntimePendingStore((s) => s.removeQuestion);
655
+ const removePermission = useRuntimePendingStore((s) => s.removePermission);
656
+ const questions = useMemo(() => (switched ? Object.values(questionMap).filter((q) => q.sessionID === ocSessionId) : []), [questionMap, ocSessionId, switched]);
657
+ const permissions = useMemo(() => (switched ? Object.values(permissionMap).filter((p) => p.sessionID === ocSessionId) : []), [permissionMap, ocSessionId, switched]);
658
+ const runtimeActionReady = switched && !!rootSessionId;
659
+ const models = useProjectModels(projectId);
660
+ const agents = useVisibleAgents({ projectId });
661
+ const config = useProjectConfig(projectId);
662
+ const picks = useSessionPicks(sessionId);
663
+ const sendMutation = useMutation({
664
+ mutationFn: (input) => createSessionPrompt(projectId, sessionId, input),
665
+ retry: false,
666
+ });
667
+ const abortMutation = useAbortRuntimeSession();
668
+ const commandMutation = useExecuteRuntimeCommand();
669
+ const userMsgCount = useMemo(() => messages.filter((m) => m.info.role === 'user').length, [messages]);
670
+ const hasUserMessages = userMsgCount > 0;
671
+ useEffect(() => {
672
+ if (!chatEngine || !hasUserMessages || streamConnected)
673
+ return;
674
+ titleRefreshAbortRef.current?.abort();
675
+ const controller = new AbortController();
676
+ titleRefreshAbortRef.current = controller;
677
+ void reconcileHydratedSessionTitle(queryClient, projectId, sessionId, 1, {
678
+ signal: controller.signal,
679
+ }).finally(() => {
680
+ if (titleRefreshAbortRef.current === controller) {
681
+ titleRefreshAbortRef.current = null;
682
+ }
683
+ });
684
+ return () => controller.abort();
685
+ }, [chatEngine, projectId, queryClient, sessionId, hasUserMessages, streamConnected]);
686
+ const [sendState, setSendState] = useState(IDLE_SEND_STATE);
687
+ const pending = sendState.pending;
688
+ const pendingBaseCount = useRef(0);
689
+ useEffect(() => {
690
+ if (pending && userMsgCount > pendingBaseCount.current) {
691
+ setSendState((s) => (s.pending ? { ...s, pending: null } : s));
692
+ }
693
+ }, [userMsgCount, pending]);
694
+ const sendParts = async (parts, override) => {
695
+ if (!runtimeActionReady)
696
+ throw new RuntimeNotReadyError();
697
+ const opts = resolveSendOptions(picks, override);
698
+ markDispatchedForPartIds(ocSessionId, parts);
699
+ const receipt = {
700
+ messageId: sendReceiptId(ocSessionId, parts, override?.clientMessageId),
701
+ atMs: Date.now(),
702
+ };
703
+ noteSendReceipt(sessionId, receipt);
704
+ try {
705
+ const result = await sendMutation.mutateAsync(sessionPromptFromParts(ocSessionId, parts, opts, override?.clientMessageId));
706
+ if (result.state === 'failed') {
707
+ throw new Error('This prompt was refused: its earlier delivery already failed.');
708
+ }
709
+ acceptSendReceipt(sessionId, receipt.messageId, Date.now());
710
+ }
711
+ catch (error) {
712
+ clearSendReceipt(sessionId, receipt.messageId);
713
+ throw error;
714
+ }
715
+ useSyncStore.getState().commitSessionRevert(ocSessionId);
716
+ };
717
+ const send = (text, override) => {
718
+ if (!runtimeActionReady)
719
+ return;
720
+ pendingBaseCount.current = userMsgCount;
721
+ setSendState(sendStateOnStart(text));
722
+ const { messageId, parts } = beginOptimisticPlainTextSend(ocSessionId, text);
723
+ void sendParts(parts, override).catch((error) => {
724
+ useSyncStore.getState().optimisticRemove(ocSessionId, messageId);
725
+ setSendState(sendStateOnError(error));
726
+ });
727
+ };
728
+ const runCommand = (command, args, options = {}) => {
729
+ if (!runtimeActionReady)
730
+ return Promise.resolve();
731
+ return commandMutation.mutateAsync(buildSessionCommandInput(ocSessionId, command, args, options));
732
+ };
733
+ const rewind = async (messageId) => {
734
+ if (!runtimeActionReady)
735
+ throw new RuntimeNotReadyError();
736
+ if (!messageId)
737
+ throw new Error('Session rewind requires a message id');
738
+ if (working.state === 'working' || rewindPending) {
739
+ throw new Error('Cannot rewind a busy session');
740
+ }
741
+ setRewindPending(true);
742
+ setRewindError(null);
743
+ try {
744
+ await rewindOpenCodeSession(ocSessionId, messageId);
745
+ useSyncStore.getState().stageSessionRevert(ocSessionId, messageId);
746
+ }
747
+ catch (error) {
748
+ const classified = classifySendError(error);
749
+ setRewindError(classified);
750
+ throw classified;
751
+ }
752
+ finally {
753
+ setRewindPending(false);
754
+ }
755
+ };
756
+ const restoreRewind = async () => {
757
+ if (!runtimeActionReady)
758
+ throw new RuntimeNotReadyError();
759
+ if (!rewindMessageId || rewindPending)
760
+ return;
761
+ setRewindPending(true);
762
+ setRewindError(null);
763
+ try {
764
+ await restoreOpenCodeSessionRewind(ocSessionId);
765
+ useSyncStore.getState().clearSessionRevert(ocSessionId);
766
+ }
767
+ catch (error) {
768
+ const classified = classifySendError(error);
769
+ setRewindError(classified);
770
+ throw classified;
771
+ }
772
+ finally {
773
+ setRewindPending(false);
774
+ }
775
+ };
776
+ const cancel = () => {
777
+ const settlement = cancelSessionTurn({
778
+ projectId,
779
+ sessionId,
780
+ runtimeSessionId: ocSessionId,
781
+ runtimeActionReady,
782
+ runAbort: () => abortMutation.mutateAsync(ocSessionId),
783
+ });
784
+ questions.forEach((q) => removeQuestion(q.id));
785
+ permissions.forEach((p) => removePermission(p.id));
786
+ setSendState(IDLE_SEND_STATE);
787
+ return settlement;
788
+ };
789
+ const runtimeSessionError = canonicalSession.error;
790
+ const phase = derivePhase({
791
+ terminal,
792
+ startError,
793
+ runtimeError: runtimeSessionError,
794
+ startSettled,
795
+ switched,
796
+ });
797
+ const startedRef = useRef(false);
798
+ useEffect(() => {
799
+ if (!replayStartStash || !chatEngine)
800
+ return;
801
+ if (startedRef.current || phase !== 'ready' || sync.isLoading)
802
+ return;
803
+ const stash = readStartStash(sessionId);
804
+ if (!stash)
805
+ return;
806
+ startedRef.current = true;
807
+ clearStartStash(sessionId);
808
+ if (sync.messages.length > 0)
809
+ return;
810
+ if (stash.model)
811
+ picks.setModel(stash.model);
812
+ if (stash.agent)
813
+ picks.setAgent(stash.agent);
814
+ if (!stash.prompt.trim())
815
+ return;
816
+ send(stash.prompt, {
817
+ model: stash.model,
818
+ agent: stash.agent,
819
+ variant: stash.variant,
820
+ });
821
+ }, [phase, sync.isLoading, sync.messages.length, sessionId, replayStartStash, chatEngine]);
822
+ return {
823
+ projectId,
824
+ sessionId,
825
+ runtimeSessionId: rootSessionId ?? null,
826
+ opencodeSessionId: rootSessionId ?? null,
827
+ runtimeTransport: 'rest',
828
+ runtimeSessions: canonicalSession.sessions,
829
+ runtimeSessionsLoading: canonicalSession.isLoading,
830
+ runtimeSessionsListed: canonicalSession.listed,
831
+ runtimeError: runtimeSessionError,
832
+ messages,
833
+ status: sync.status,
834
+ freshness: sync.freshness,
835
+ retryTranscript: sync.retryTranscript,
836
+ questions,
837
+ permissions,
838
+ diffs: sync.diffs,
839
+ todos: sync.todos,
840
+ hasOlder: sync.hasOlder,
841
+ isLoadingOlder: sync.isLoadingOlder,
842
+ loadOlder: sync.loadOlder,
843
+ phase,
844
+ stage,
845
+ agentName: startData?.agent_name && startData.agent_name !== 'default'
846
+ ? startData.agent_name
847
+ : null,
848
+ sandbox,
849
+ runtimeUrl: resolveSessionRuntimeUrl(startData),
850
+ switched,
851
+ retriable: startData?.retriable ?? false,
852
+ activelyStarting: startData?.boot?.actively_starting ?? false,
853
+ startError,
854
+ failure: startData?.failure ?? null,
855
+ runtimePhase,
856
+ working,
857
+ isBusy: working.state === 'working',
858
+ isCompacting,
859
+ isLoading: sync.isLoading,
860
+ savedTranscript,
861
+ conversationEmpty,
862
+ isError: terminal || !!startError || !!runtimeSessionError,
863
+ hasPending: questions.length > 0 || permissions.length > 0,
864
+ reason: startData?.reason ?? null,
865
+ pending,
866
+ isSending: sendMutation.isPending,
867
+ sendError: sendState.sendError,
868
+ rewindMessageId,
869
+ rewindPending,
870
+ rewindError,
871
+ models,
872
+ agents,
873
+ defaultAgent: config?.default_agent ?? config?.open_code_default_agent ?? null,
874
+ commands: config?.commands ?? [],
875
+ picks,
876
+ send,
877
+ sendParts,
878
+ rewind,
879
+ restoreRewind,
880
+ cancel,
881
+ runCommand,
882
+ answerQuestion,
883
+ rejectQuestion,
884
+ answerPermission,
885
+ removeQuestion,
886
+ removePermission,
887
+ retry: () => {
888
+ stoppedByUserRef.current = null;
889
+ openedAtRef.current = { sessionId, at: Date.now() };
890
+ void start.refetch();
891
+ },
892
+ };
893
+ }