@kortix/sdk 0.9.98

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 (618) hide show
  1. package/README.md +313 -0
  2. package/dist/files/client.d.ts +96 -0
  3. package/dist/files/client.d.ts.map +1 -0
  4. package/dist/files/client.js +346 -0
  5. package/dist/files/client.js.map +1 -0
  6. package/dist/files/types.d.ts +82 -0
  7. package/dist/files/types.d.ts.map +1 -0
  8. package/dist/files/types.js +6 -0
  9. package/dist/files/types.js.map +1 -0
  10. package/dist/index.d.ts +119 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +93 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/kortix.d.ts +897 -0
  15. package/dist/kortix.d.ts.map +1 -0
  16. package/dist/kortix.js +772 -0
  17. package/dist/kortix.js.map +1 -0
  18. package/dist/opencode/client.d.ts +89 -0
  19. package/dist/opencode/client.d.ts.map +1 -0
  20. package/dist/opencode/client.js +191 -0
  21. package/dist/opencode/client.js.map +1 -0
  22. package/dist/opencode/env.d.ts +13 -0
  23. package/dist/opencode/env.d.ts.map +1 -0
  24. package/dist/opencode/env.js +63 -0
  25. package/dist/opencode/env.js.map +1 -0
  26. package/dist/opencode/kortix-master.d.ts +487 -0
  27. package/dist/opencode/kortix-master.d.ts.map +1 -0
  28. package/dist/opencode/kortix-master.js +313 -0
  29. package/dist/opencode/kortix-master.js.map +1 -0
  30. package/dist/opencode/triggers.d.ts +6 -0
  31. package/dist/opencode/triggers.d.ts.map +1 -0
  32. package/dist/opencode/triggers.js +34 -0
  33. package/dist/opencode/triggers.js.map +1 -0
  34. package/dist/platform/api/errors.d.ts +106 -0
  35. package/dist/platform/api/errors.d.ts.map +1 -0
  36. package/dist/platform/api/errors.js +137 -0
  37. package/dist/platform/api/errors.js.map +1 -0
  38. package/dist/platform/api-client.d.ts +35 -0
  39. package/dist/platform/api-client.d.ts.map +1 -0
  40. package/dist/platform/api-client.js +279 -0
  41. package/dist/platform/api-client.js.map +1 -0
  42. package/dist/platform/auth-core.d.ts +60 -0
  43. package/dist/platform/auth-core.d.ts.map +1 -0
  44. package/dist/platform/auth-core.js +104 -0
  45. package/dist/platform/auth-core.js.map +1 -0
  46. package/dist/platform/auth.d.ts +88 -0
  47. package/dist/platform/auth.d.ts.map +1 -0
  48. package/dist/platform/auth.js +161 -0
  49. package/dist/platform/auth.js.map +1 -0
  50. package/dist/platform/config-node.d.ts +33 -0
  51. package/dist/platform/config-node.d.ts.map +1 -0
  52. package/dist/platform/config-node.js +63 -0
  53. package/dist/platform/config-node.js.map +1 -0
  54. package/dist/platform/config.d.ts +77 -0
  55. package/dist/platform/config.d.ts.map +1 -0
  56. package/dist/platform/config.js +62 -0
  57. package/dist/platform/config.js.map +1 -0
  58. package/dist/platform/feature-flags.d.ts +25 -0
  59. package/dist/platform/feature-flags.d.ts.map +1 -0
  60. package/dist/platform/feature-flags.js +114 -0
  61. package/dist/platform/feature-flags.js.map +1 -0
  62. package/dist/platform/fresh-sessions.d.ts +4 -0
  63. package/dist/platform/fresh-sessions.d.ts.map +1 -0
  64. package/dist/platform/fresh-sessions.js +22 -0
  65. package/dist/platform/fresh-sessions.js.map +1 -0
  66. package/dist/platform/instance-routes.d.ts +17 -0
  67. package/dist/platform/instance-routes.d.ts.map +1 -0
  68. package/dist/platform/instance-routes.js +105 -0
  69. package/dist/platform/instance-routes.js.map +1 -0
  70. package/dist/platform/logger.d.ts +20 -0
  71. package/dist/platform/logger.d.ts.map +1 -0
  72. package/dist/platform/logger.js +44 -0
  73. package/dist/platform/logger.js.map +1 -0
  74. package/dist/platform/opencode-errors.d.ts +20 -0
  75. package/dist/platform/opencode-errors.d.ts.map +1 -0
  76. package/dist/platform/opencode-errors.js +71 -0
  77. package/dist/platform/opencode-errors.js.map +1 -0
  78. package/dist/platform/platform-client/backups.d.ts +22 -0
  79. package/dist/platform/platform-client/backups.d.ts.map +1 -0
  80. package/dist/platform/platform-client/backups.js +16 -0
  81. package/dist/platform/platform-client/backups.js.map +1 -0
  82. package/dist/platform/platform-client/index.d.ts +21 -0
  83. package/dist/platform/platform-client/index.d.ts.map +1 -0
  84. package/dist/platform/platform-client/index.js +21 -0
  85. package/dist/platform/platform-client/index.js.map +1 -0
  86. package/dist/platform/platform-client/instance-admin.d.ts +67 -0
  87. package/dist/platform/platform-client/instance-admin.d.ts.map +1 -0
  88. package/dist/platform/platform-client/instance-admin.js +59 -0
  89. package/dist/platform/platform-client/instance-admin.js.map +1 -0
  90. package/dist/platform/platform-client/invites.d.ts +35 -0
  91. package/dist/platform/platform-client/invites.d.ts.map +1 -0
  92. package/dist/platform/platform-client/invites.js +25 -0
  93. package/dist/platform/platform-client/invites.js.map +1 -0
  94. package/dist/platform/platform-client/lifecycle.d.ts +78 -0
  95. package/dist/platform/platform-client/lifecycle.d.ts.map +1 -0
  96. package/dist/platform/platform-client/lifecycle.js +151 -0
  97. package/dist/platform/platform-client/lifecycle.js.map +1 -0
  98. package/dist/platform/platform-client/members.d.ts +81 -0
  99. package/dist/platform/platform-client/members.d.ts.map +1 -0
  100. package/dist/platform/platform-client/members.js +59 -0
  101. package/dist/platform/platform-client/members.js.map +1 -0
  102. package/dist/platform/platform-client/shared.d.ts +44 -0
  103. package/dist/platform/platform-client/shared.d.ts.map +1 -0
  104. package/dist/platform/platform-client/shared.js +177 -0
  105. package/dist/platform/platform-client/shared.js.map +1 -0
  106. package/dist/platform/platform-client/ssh.d.ts +29 -0
  107. package/dist/platform/platform-client/ssh.d.ts.map +1 -0
  108. package/dist/platform/platform-client/ssh.js +14 -0
  109. package/dist/platform/platform-client/ssh.js.map +1 -0
  110. package/dist/platform/platform-client/types.d.ts +56 -0
  111. package/dist/platform/platform-client/types.d.ts.map +1 -0
  112. package/dist/platform/platform-client/types.js +19 -0
  113. package/dist/platform/platform-client/types.js.map +1 -0
  114. package/dist/platform/platform-client/updates.d.ts +117 -0
  115. package/dist/platform/platform-client/updates.d.ts.map +1 -0
  116. package/dist/platform/platform-client/updates.js +97 -0
  117. package/dist/platform/platform-client/updates.js.map +1 -0
  118. package/dist/platform/platform-client/urls.d.ts +18 -0
  119. package/dist/platform/platform-client/urls.d.ts.map +1 -0
  120. package/dist/platform/platform-client/urls.js +31 -0
  121. package/dist/platform/platform-client/urls.js.map +1 -0
  122. package/dist/platform/projects-client/access.d.ts +273 -0
  123. package/dist/platform/projects-client/access.d.ts.map +1 -0
  124. package/dist/platform/projects-client/access.js +89 -0
  125. package/dist/platform/projects-client/access.js.map +1 -0
  126. package/dist/platform/projects-client/accounts.d.ts +184 -0
  127. package/dist/platform/projects-client/accounts.d.ts.map +1 -0
  128. package/dist/platform/projects-client/accounts.js +78 -0
  129. package/dist/platform/projects-client/accounts.js.map +1 -0
  130. package/dist/platform/projects-client/agent-config.d.ts +58 -0
  131. package/dist/platform/projects-client/agent-config.d.ts.map +1 -0
  132. package/dist/platform/projects-client/agent-config.js +9 -0
  133. package/dist/platform/projects-client/agent-config.js.map +1 -0
  134. package/dist/platform/projects-client/agent-scope.d.ts +12 -0
  135. package/dist/platform/projects-client/agent-scope.d.ts.map +1 -0
  136. package/dist/platform/projects-client/agent-scope.js +6 -0
  137. package/dist/platform/projects-client/agent-scope.js.map +1 -0
  138. package/dist/platform/projects-client/apps.d.ts +98 -0
  139. package/dist/platform/projects-client/apps.d.ts.map +1 -0
  140. package/dist/platform/projects-client/apps.js +29 -0
  141. package/dist/platform/projects-client/apps.js.map +1 -0
  142. package/dist/platform/projects-client/audit.d.ts +85 -0
  143. package/dist/platform/projects-client/audit.d.ts.map +1 -0
  144. package/dist/platform/projects-client/audit.js +51 -0
  145. package/dist/platform/projects-client/audit.js.map +1 -0
  146. package/dist/platform/projects-client/billing.d.ts +336 -0
  147. package/dist/platform/projects-client/billing.d.ts.map +1 -0
  148. package/dist/platform/projects-client/billing.js +260 -0
  149. package/dist/platform/projects-client/billing.js.map +1 -0
  150. package/dist/platform/projects-client/change-requests.d.ts +119 -0
  151. package/dist/platform/projects-client/change-requests.d.ts.map +1 -0
  152. package/dist/platform/projects-client/change-requests.js +56 -0
  153. package/dist/platform/projects-client/change-requests.js.map +1 -0
  154. package/dist/platform/projects-client/channels.d.ts +135 -0
  155. package/dist/platform/projects-client/channels.d.ts.map +1 -0
  156. package/dist/platform/projects-client/channels.js +103 -0
  157. package/dist/platform/projects-client/channels.js.map +1 -0
  158. package/dist/platform/projects-client/connectors.d.ts +148 -0
  159. package/dist/platform/projects-client/connectors.d.ts.map +1 -0
  160. package/dist/platform/projects-client/connectors.js +66 -0
  161. package/dist/platform/projects-client/connectors.js.map +1 -0
  162. package/dist/platform/projects-client/files.d.ts +37 -0
  163. package/dist/platform/projects-client/files.d.ts.map +1 -0
  164. package/dist/platform/projects-client/files.js +58 -0
  165. package/dist/platform/projects-client/files.js.map +1 -0
  166. package/dist/platform/projects-client/gateway.d.ts +177 -0
  167. package/dist/platform/projects-client/gateway.d.ts.map +1 -0
  168. package/dist/platform/projects-client/gateway.js +59 -0
  169. package/dist/platform/projects-client/gateway.js.map +1 -0
  170. package/dist/platform/projects-client/git-history.d.ts +74 -0
  171. package/dist/platform/projects-client/git-history.d.ts.map +1 -0
  172. package/dist/platform/projects-client/git-history.js +40 -0
  173. package/dist/platform/projects-client/git-history.js.map +1 -0
  174. package/dist/platform/projects-client/github.d.ts +62 -0
  175. package/dist/platform/projects-client/github.d.ts.map +1 -0
  176. package/dist/platform/projects-client/github.js +30 -0
  177. package/dist/platform/projects-client/github.js.map +1 -0
  178. package/dist/platform/projects-client/index.d.ts +32 -0
  179. package/dist/platform/projects-client/index.d.ts.map +1 -0
  180. package/dist/platform/projects-client/index.js +34 -0
  181. package/dist/platform/projects-client/index.js.map +1 -0
  182. package/dist/platform/projects-client/marketplace-catalog.d.ts +76 -0
  183. package/dist/platform/projects-client/marketplace-catalog.d.ts.map +1 -0
  184. package/dist/platform/projects-client/marketplace-catalog.js +48 -0
  185. package/dist/platform/projects-client/marketplace-catalog.js.map +1 -0
  186. package/dist/platform/projects-client/marketplace.d.ts +80 -0
  187. package/dist/platform/projects-client/marketplace.d.ts.map +1 -0
  188. package/dist/platform/projects-client/marketplace.js +52 -0
  189. package/dist/platform/projects-client/marketplace.js.map +1 -0
  190. package/dist/platform/projects-client/model-defaults.d.ts +36 -0
  191. package/dist/platform/projects-client/model-defaults.d.ts.map +1 -0
  192. package/dist/platform/projects-client/model-defaults.js +16 -0
  193. package/dist/platform/projects-client/model-defaults.js.map +1 -0
  194. package/dist/platform/projects-client/policies.d.ts +21 -0
  195. package/dist/platform/projects-client/policies.d.ts.map +1 -0
  196. package/dist/platform/projects-client/policies.js +10 -0
  197. package/dist/platform/projects-client/policies.js.map +1 -0
  198. package/dist/platform/projects-client/projects.d.ts +235 -0
  199. package/dist/platform/projects-client/projects.d.ts.map +1 -0
  200. package/dist/platform/projects-client/projects.js +161 -0
  201. package/dist/platform/projects-client/projects.js.map +1 -0
  202. package/dist/platform/projects-client/public-session-shares.d.ts +52 -0
  203. package/dist/platform/projects-client/public-session-shares.d.ts.map +1 -0
  204. package/dist/platform/projects-client/public-session-shares.js +54 -0
  205. package/dist/platform/projects-client/public-session-shares.js.map +1 -0
  206. package/dist/platform/projects-client/review.d.ts +57 -0
  207. package/dist/platform/projects-client/review.d.ts.map +1 -0
  208. package/dist/platform/projects-client/review.js +28 -0
  209. package/dist/platform/projects-client/review.js.map +1 -0
  210. package/dist/platform/projects-client/sandbox-shares.d.ts +25 -0
  211. package/dist/platform/projects-client/sandbox-shares.d.ts.map +1 -0
  212. package/dist/platform/projects-client/sandbox-shares.js +29 -0
  213. package/dist/platform/projects-client/sandbox-shares.js.map +1 -0
  214. package/dist/platform/projects-client/sandbox.d.ts +123 -0
  215. package/dist/platform/projects-client/sandbox.d.ts.map +1 -0
  216. package/dist/platform/projects-client/sandbox.js +45 -0
  217. package/dist/platform/projects-client/sandbox.js.map +1 -0
  218. package/dist/platform/projects-client/secrets.d.ts +122 -0
  219. package/dist/platform/projects-client/secrets.d.ts.map +1 -0
  220. package/dist/platform/projects-client/secrets.js +34 -0
  221. package/dist/platform/projects-client/secrets.js.map +1 -0
  222. package/dist/platform/projects-client/session-sandbox.d.ts +61 -0
  223. package/dist/platform/projects-client/session-sandbox.d.ts.map +1 -0
  224. package/dist/platform/projects-client/session-sandbox.js +82 -0
  225. package/dist/platform/projects-client/session-sandbox.js.map +1 -0
  226. package/dist/platform/projects-client/sessions.d.ts +216 -0
  227. package/dist/platform/projects-client/sessions.d.ts.map +1 -0
  228. package/dist/platform/projects-client/sessions.js +74 -0
  229. package/dist/platform/projects-client/sessions.js.map +1 -0
  230. package/dist/platform/projects-client/setup-links.d.ts +35 -0
  231. package/dist/platform/projects-client/setup-links.d.ts.map +1 -0
  232. package/dist/platform/projects-client/setup-links.js +24 -0
  233. package/dist/platform/projects-client/setup-links.js.map +1 -0
  234. package/dist/platform/projects-client/shared.d.ts +66 -0
  235. package/dist/platform/projects-client/shared.d.ts.map +1 -0
  236. package/dist/platform/projects-client/shared.js +44 -0
  237. package/dist/platform/projects-client/shared.js.map +1 -0
  238. package/dist/platform/projects-client/tokens.d.ts +77 -0
  239. package/dist/platform/projects-client/tokens.d.ts.map +1 -0
  240. package/dist/platform/projects-client/tokens.js +43 -0
  241. package/dist/platform/projects-client/tokens.js.map +1 -0
  242. package/dist/platform/projects-client/transcription.d.ts +5 -0
  243. package/dist/platform/projects-client/transcription.d.ts.map +1 -0
  244. package/dist/platform/projects-client/transcription.js +14 -0
  245. package/dist/platform/projects-client/transcription.js.map +1 -0
  246. package/dist/platform/projects-client/triggers.d.ts +102 -0
  247. package/dist/platform/projects-client/triggers.d.ts.map +1 -0
  248. package/dist/platform/projects-client/triggers.js +27 -0
  249. package/dist/platform/projects-client/triggers.js.map +1 -0
  250. package/dist/platform/session-id.d.ts +9 -0
  251. package/dist/platform/session-id.d.ts.map +1 -0
  252. package/dist/platform/session-id.js +23 -0
  253. package/dist/platform/session-id.js.map +1 -0
  254. package/dist/platform/storage/managed-storage.d.ts +97 -0
  255. package/dist/platform/storage/managed-storage.d.ts.map +1 -0
  256. package/dist/platform/storage/managed-storage.js +271 -0
  257. package/dist/platform/storage/managed-storage.js.map +1 -0
  258. package/dist/platform/strings.d.ts +12 -0
  259. package/dist/platform/strings.d.ts.map +1 -0
  260. package/dist/platform/strings.js +17 -0
  261. package/dist/platform/strings.js.map +1 -0
  262. package/dist/platform/ui.d.ts +11 -0
  263. package/dist/platform/ui.d.ts.map +1 -0
  264. package/dist/platform/ui.js +22 -0
  265. package/dist/platform/ui.js.map +1 -0
  266. package/dist/react/chat/index.d.ts +3 -0
  267. package/dist/react/chat/index.d.ts.map +1 -0
  268. package/dist/react/chat/index.js +7 -0
  269. package/dist/react/chat/index.js.map +1 -0
  270. package/dist/react/chat/render-parts.d.ts +39 -0
  271. package/dist/react/chat/render-parts.d.ts.map +1 -0
  272. package/dist/react/chat/render-parts.js +34 -0
  273. package/dist/react/chat/render-parts.js.map +1 -0
  274. package/dist/react/chat/use-chat-turns.d.ts +19 -0
  275. package/dist/react/chat/use-chat-turns.d.ts.map +1 -0
  276. package/dist/react/chat/use-chat-turns.js +27 -0
  277. package/dist/react/chat/use-chat-turns.js.map +1 -0
  278. package/dist/react/file-keys.d.ts +18 -0
  279. package/dist/react/file-keys.d.ts.map +1 -0
  280. package/dist/react/file-keys.js +18 -0
  281. package/dist/react/file-keys.js.map +1 -0
  282. package/dist/react/index.d.ts +12 -0
  283. package/dist/react/index.d.ts.map +1 -0
  284. package/dist/react/index.js +49 -0
  285. package/dist/react/index.js.map +1 -0
  286. package/dist/react/model-flatten.d.ts +33 -0
  287. package/dist/react/model-flatten.d.ts.map +1 -0
  288. package/dist/react/model-flatten.js +59 -0
  289. package/dist/react/model-flatten.js.map +1 -0
  290. package/dist/react/opencode.d.ts +43 -0
  291. package/dist/react/opencode.d.ts.map +1 -0
  292. package/dist/react/opencode.js +100 -0
  293. package/dist/react/opencode.js.map +1 -0
  294. package/dist/react/prefetch-session-start.d.ts +10 -0
  295. package/dist/react/prefetch-session-start.d.ts.map +1 -0
  296. package/dist/react/prefetch-session-start.js +17 -0
  297. package/dist/react/prefetch-session-start.js.map +1 -0
  298. package/dist/react/provider-refresh.d.ts +7 -0
  299. package/dist/react/provider-refresh.d.ts.map +1 -0
  300. package/dist/react/provider-refresh.js +28 -0
  301. package/dist/react/provider-refresh.js.map +1 -0
  302. package/dist/react/provider-selection.d.ts +31 -0
  303. package/dist/react/provider-selection.d.ts.map +1 -0
  304. package/dist/react/provider-selection.js +135 -0
  305. package/dist/react/provider-selection.js.map +1 -0
  306. package/dist/react/route-project.d.ts +7 -0
  307. package/dist/react/route-project.d.ts.map +1 -0
  308. package/dist/react/route-project.js +19 -0
  309. package/dist/react/route-project.js.map +1 -0
  310. package/dist/react/session-start-stash.d.ts +56 -0
  311. package/dist/react/session-start-stash.d.ts.map +1 -0
  312. package/dist/react/session-start-stash.js +202 -0
  313. package/dist/react/session-start-stash.js.map +1 -0
  314. package/dist/react/use-canonical-opencode-session.d.ts +35 -0
  315. package/dist/react/use-canonical-opencode-session.d.ts.map +1 -0
  316. package/dist/react/use-canonical-opencode-session.js +52 -0
  317. package/dist/react/use-canonical-opencode-session.js.map +1 -0
  318. package/dist/react/use-change-requests.d.ts +321 -0
  319. package/dist/react/use-change-requests.d.ts.map +1 -0
  320. package/dist/react/use-change-requests.js +43 -0
  321. package/dist/react/use-change-requests.js.map +1 -0
  322. package/dist/react/use-current-runtime.d.ts +8 -0
  323. package/dist/react/use-current-runtime.d.ts.map +1 -0
  324. package/dist/react/use-current-runtime.js +12 -0
  325. package/dist/react/use-current-runtime.js.map +1 -0
  326. package/dist/react/use-gateway-catalog-sync.d.ts +2 -0
  327. package/dist/react/use-gateway-catalog-sync.d.ts.map +1 -0
  328. package/dist/react/use-gateway-catalog-sync.js +39 -0
  329. package/dist/react/use-gateway-catalog-sync.js.map +1 -0
  330. package/dist/react/use-kortix-master.d.ts +384 -0
  331. package/dist/react/use-kortix-master.d.ts.map +1 -0
  332. package/dist/react/use-kortix-master.js +958 -0
  333. package/dist/react/use-kortix-master.js.map +1 -0
  334. package/dist/react/use-model-store.d.ts +71 -0
  335. package/dist/react/use-model-store.d.ts.map +1 -0
  336. package/dist/react/use-model-store.js +411 -0
  337. package/dist/react/use-model-store.js.map +1 -0
  338. package/dist/react/use-opencode-config.d.ts +15 -0
  339. package/dist/react/use-opencode-config.d.ts.map +1 -0
  340. package/dist/react/use-opencode-config.js +79 -0
  341. package/dist/react/use-opencode-config.js.map +1 -0
  342. package/dist/react/use-opencode-events/diagnostics.d.ts +11 -0
  343. package/dist/react/use-opencode-events/diagnostics.d.ts.map +1 -0
  344. package/dist/react/use-opencode-events/diagnostics.js +58 -0
  345. package/dist/react/use-opencode-events/diagnostics.js.map +1 -0
  346. package/dist/react/use-opencode-events/handle-event.d.ts +20 -0
  347. package/dist/react/use-opencode-events/handle-event.d.ts.map +1 -0
  348. package/dist/react/use-opencode-events/handle-event.js +450 -0
  349. package/dist/react/use-opencode-events/handle-event.js.map +1 -0
  350. package/dist/react/use-opencode-events/helpers.d.ts +30 -0
  351. package/dist/react/use-opencode-events/helpers.d.ts.map +1 -0
  352. package/dist/react/use-opencode-events/helpers.js +93 -0
  353. package/dist/react/use-opencode-events/helpers.js.map +1 -0
  354. package/dist/react/use-opencode-events/index.d.ts +25 -0
  355. package/dist/react/use-opencode-events/index.d.ts.map +1 -0
  356. package/dist/react/use-opencode-events/index.js +242 -0
  357. package/dist/react/use-opencode-events/index.js.map +1 -0
  358. package/dist/react/use-opencode-events/types.d.ts +10 -0
  359. package/dist/react/use-opencode-events/types.d.ts.map +1 -0
  360. package/dist/react/use-opencode-events/types.js +2 -0
  361. package/dist/react/use-opencode-events/types.js.map +1 -0
  362. package/dist/react/use-opencode-events/use-event-stream-refs.d.ts +22 -0
  363. package/dist/react/use-opencode-events/use-event-stream-refs.d.ts.map +1 -0
  364. package/dist/react/use-opencode-events/use-event-stream-refs.js +158 -0
  365. package/dist/react/use-opencode-events/use-event-stream-refs.js.map +1 -0
  366. package/dist/react/use-opencode-local.d.ts +139 -0
  367. package/dist/react/use-opencode-local.d.ts.map +1 -0
  368. package/dist/react/use-opencode-local.js +484 -0
  369. package/dist/react/use-opencode-local.js.map +1 -0
  370. package/dist/react/use-opencode-mcp.d.ts +34 -0
  371. package/dist/react/use-opencode-mcp.d.ts.map +1 -0
  372. package/dist/react/use-opencode-mcp.js +190 -0
  373. package/dist/react/use-opencode-mcp.js.map +1 -0
  374. package/dist/react/use-opencode-pty.d.ts +30 -0
  375. package/dist/react/use-opencode-pty.d.ts.map +1 -0
  376. package/dist/react/use-opencode-pty.js +126 -0
  377. package/dist/react/use-opencode-pty.js.map +1 -0
  378. package/dist/react/use-opencode-sessions/agents.d.ts +14 -0
  379. package/dist/react/use-opencode-sessions/agents.d.ts.map +1 -0
  380. package/dist/react/use-opencode-sessions/agents.js +82 -0
  381. package/dist/react/use-opencode-sessions/agents.js.map +1 -0
  382. package/dist/react/use-opencode-sessions/commands.d.ts +8 -0
  383. package/dist/react/use-opencode-sessions/commands.d.ts.map +1 -0
  384. package/dist/react/use-opencode-sessions/commands.js +46 -0
  385. package/dist/react/use-opencode-sessions/commands.js.map +1 -0
  386. package/dist/react/use-opencode-sessions/files.d.ts +2 -0
  387. package/dist/react/use-opencode-sessions/files.d.ts.map +1 -0
  388. package/dist/react/use-opencode-sessions/files.js +181 -0
  389. package/dist/react/use-opencode-sessions/files.js.map +1 -0
  390. package/dist/react/use-opencode-sessions/index.d.ts +15 -0
  391. package/dist/react/use-opencode-sessions/index.d.ts.map +1 -0
  392. package/dist/react/use-opencode-sessions/index.js +21 -0
  393. package/dist/react/use-opencode-sessions/index.js.map +1 -0
  394. package/dist/react/use-opencode-sessions/keys.d.ts +94 -0
  395. package/dist/react/use-opencode-sessions/keys.d.ts.map +1 -0
  396. package/dist/react/use-opencode-sessions/keys.js +39 -0
  397. package/dist/react/use-opencode-sessions/keys.js.map +1 -0
  398. package/dist/react/use-opencode-sessions/mcp.d.ts +3 -0
  399. package/dist/react/use-opencode-sessions/mcp.d.ts.map +1 -0
  400. package/dist/react/use-opencode-sessions/mcp.js +23 -0
  401. package/dist/react/use-opencode-sessions/mcp.js.map +1 -0
  402. package/dist/react/use-opencode-sessions/messages.d.ts +75 -0
  403. package/dist/react/use-opencode-sessions/messages.d.ts.map +1 -0
  404. package/dist/react/use-opencode-sessions/messages.js +319 -0
  405. package/dist/react/use-opencode-sessions/messages.js.map +1 -0
  406. package/dist/react/use-opencode-sessions/parts.d.ts +23 -0
  407. package/dist/react/use-opencode-sessions/parts.d.ts.map +1 -0
  408. package/dist/react/use-opencode-sessions/parts.js +49 -0
  409. package/dist/react/use-opencode-sessions/parts.js.map +1 -0
  410. package/dist/react/use-opencode-sessions/permissions.d.ts +17 -0
  411. package/dist/react/use-opencode-sessions/permissions.d.ts.map +1 -0
  412. package/dist/react/use-opencode-sessions/permissions.js +66 -0
  413. package/dist/react/use-opencode-sessions/permissions.js.map +1 -0
  414. package/dist/react/use-opencode-sessions/projects.d.ts +5 -0
  415. package/dist/react/use-opencode-sessions/projects.d.ts.map +1 -0
  416. package/dist/react/use-opencode-sessions/projects.js +54 -0
  417. package/dist/react/use-opencode-sessions/projects.js.map +1 -0
  418. package/dist/react/use-opencode-sessions/providers.d.ts +10 -0
  419. package/dist/react/use-opencode-sessions/providers.d.ts.map +1 -0
  420. package/dist/react/use-opencode-sessions/providers.js +98 -0
  421. package/dist/react/use-opencode-sessions/providers.js.map +1 -0
  422. package/dist/react/use-opencode-sessions/sessions.d.ts +35 -0
  423. package/dist/react/use-opencode-sessions/sessions.d.ts.map +1 -0
  424. package/dist/react/use-opencode-sessions/sessions.js +380 -0
  425. package/dist/react/use-opencode-sessions/sessions.js.map +1 -0
  426. package/dist/react/use-opencode-sessions/shared.d.ts +43 -0
  427. package/dist/react/use-opencode-sessions/shared.d.ts.map +1 -0
  428. package/dist/react/use-opencode-sessions/shared.js +109 -0
  429. package/dist/react/use-opencode-sessions/shared.js.map +1 -0
  430. package/dist/react/use-opencode-sessions/sharing.d.ts +4 -0
  431. package/dist/react/use-opencode-sessions/sharing.d.ts.map +1 -0
  432. package/dist/react/use-opencode-sessions/sharing.js +57 -0
  433. package/dist/react/use-opencode-sessions/sharing.js.map +1 -0
  434. package/dist/react/use-opencode-sessions/tools.d.ts +5 -0
  435. package/dist/react/use-opencode-sessions/tools.d.ts.map +1 -0
  436. package/dist/react/use-opencode-sessions/tools.js +54 -0
  437. package/dist/react/use-opencode-sessions/tools.js.map +1 -0
  438. package/dist/react/use-permission-self-heal.d.ts +45 -0
  439. package/dist/react/use-permission-self-heal.d.ts.map +1 -0
  440. package/dist/react/use-permission-self-heal.js +144 -0
  441. package/dist/react/use-permission-self-heal.js.map +1 -0
  442. package/dist/react/use-project-config.d.ts +11 -0
  443. package/dist/react/use-project-config.d.ts.map +1 -0
  444. package/dist/react/use-project-config.js +22 -0
  445. package/dist/react/use-project-config.js.map +1 -0
  446. package/dist/react/use-project-models.d.ts +11 -0
  447. package/dist/react/use-project-models.d.ts.map +1 -0
  448. package/dist/react/use-project-models.js +25 -0
  449. package/dist/react/use-project-models.js.map +1 -0
  450. package/dist/react/use-project-secrets.d.ts +265 -0
  451. package/dist/react/use-project-secrets.d.ts.map +1 -0
  452. package/dist/react/use-project-secrets.js +41 -0
  453. package/dist/react/use-project-secrets.js.map +1 -0
  454. package/dist/react/use-project-triggers.d.ts +228 -0
  455. package/dist/react/use-project-triggers.d.ts.map +1 -0
  456. package/dist/react/use-project-triggers.js +42 -0
  457. package/dist/react/use-project-triggers.js.map +1 -0
  458. package/dist/react/use-question-self-heal.d.ts +36 -0
  459. package/dist/react/use-question-self-heal.d.ts.map +1 -0
  460. package/dist/react/use-question-self-heal.js +95 -0
  461. package/dist/react/use-question-self-heal.js.map +1 -0
  462. package/dist/react/use-runtime-phase.d.ts +9 -0
  463. package/dist/react/use-runtime-phase.d.ts.map +1 -0
  464. package/dist/react/use-runtime-phase.js +20 -0
  465. package/dist/react/use-runtime-phase.js.map +1 -0
  466. package/dist/react/use-runtime-reconnect.d.ts +90 -0
  467. package/dist/react/use-runtime-reconnect.d.ts.map +1 -0
  468. package/dist/react/use-runtime-reconnect.js +234 -0
  469. package/dist/react/use-runtime-reconnect.js.map +1 -0
  470. package/dist/react/use-session-picks.d.ts +17 -0
  471. package/dist/react/use-session-picks.d.ts.map +1 -0
  472. package/dist/react/use-session-picks.js +36 -0
  473. package/dist/react/use-session-picks.js.map +1 -0
  474. package/dist/react/use-session-prefetch.d.ts +18 -0
  475. package/dist/react/use-session-prefetch.d.ts.map +1 -0
  476. package/dist/react/use-session-prefetch.js +84 -0
  477. package/dist/react/use-session-prefetch.js.map +1 -0
  478. package/dist/react/use-session-send.d.ts +183 -0
  479. package/dist/react/use-session-send.d.ts.map +1 -0
  480. package/dist/react/use-session-send.js +287 -0
  481. package/dist/react/use-session-send.js.map +1 -0
  482. package/dist/react/use-session-sync.d.ts +24 -0
  483. package/dist/react/use-session-sync.d.ts.map +1 -0
  484. package/dist/react/use-session-sync.js +375 -0
  485. package/dist/react/use-session-sync.js.map +1 -0
  486. package/dist/react/use-session.d.ts +171 -0
  487. package/dist/react/use-session.d.ts.map +1 -0
  488. package/dist/react/use-session.js +396 -0
  489. package/dist/react/use-session.js.map +1 -0
  490. package/dist/react/use-visible-agents.d.ts +22 -0
  491. package/dist/react/use-visible-agents.d.ts.map +1 -0
  492. package/dist/react/use-visible-agents.js +45 -0
  493. package/dist/react/use-visible-agents.js.map +1 -0
  494. package/dist/server.d.ts +55 -0
  495. package/dist/server.d.ts.map +1 -0
  496. package/dist/server.js +122 -0
  497. package/dist/server.js.map +1 -0
  498. package/dist/session/health.d.ts +49 -0
  499. package/dist/session/health.d.ts.map +1 -0
  500. package/dist/session/health.js +57 -0
  501. package/dist/session/health.js.map +1 -0
  502. package/dist/session/index.d.ts +19 -0
  503. package/dist/session/index.d.ts.map +1 -0
  504. package/dist/session/index.js +19 -0
  505. package/dist/session/index.js.map +1 -0
  506. package/dist/session/preview.d.ts +24 -0
  507. package/dist/session/preview.d.ts.map +1 -0
  508. package/dist/session/preview.js +85 -0
  509. package/dist/session/preview.js.map +1 -0
  510. package/dist/session/url.d.ts +160 -0
  511. package/dist/session/url.d.ts.map +1 -0
  512. package/dist/session/url.js +522 -0
  513. package/dist/session/url.js.map +1 -0
  514. package/dist/state/chat-events.d.ts +141 -0
  515. package/dist/state/chat-events.d.ts.map +1 -0
  516. package/dist/state/chat-events.js +135 -0
  517. package/dist/state/chat-events.js.map +1 -0
  518. package/dist/state/current-runtime.d.ts +44 -0
  519. package/dist/state/current-runtime.d.ts.map +1 -0
  520. package/dist/state/current-runtime.js +44 -0
  521. package/dist/state/current-runtime.js.map +1 -0
  522. package/dist/state/diagnostics-store.d.ts +114 -0
  523. package/dist/state/diagnostics-store.d.ts.map +1 -0
  524. package/dist/state/diagnostics-store.js +319 -0
  525. package/dist/state/diagnostics-store.js.map +1 -0
  526. package/dist/state/event-stream.d.ts +134 -0
  527. package/dist/state/event-stream.d.ts.map +1 -0
  528. package/dist/state/event-stream.js +424 -0
  529. package/dist/state/event-stream.js.map +1 -0
  530. package/dist/state/idb-sync-cache.d.ts +18 -0
  531. package/dist/state/idb-sync-cache.d.ts.map +1 -0
  532. package/dist/state/idb-sync-cache.js +209 -0
  533. package/dist/state/idb-sync-cache.js.map +1 -0
  534. package/dist/state/opencode-compaction-store.d.ts +10 -0
  535. package/dist/state/opencode-compaction-store.d.ts.map +1 -0
  536. package/dist/state/opencode-compaction-store.js +32 -0
  537. package/dist/state/opencode-compaction-store.js.map +1 -0
  538. package/dist/state/opencode-pending-store.d.ts +19 -0
  539. package/dist/state/opencode-pending-store.d.ts.map +1 -0
  540. package/dist/state/opencode-pending-store.js +76 -0
  541. package/dist/state/opencode-pending-store.js.map +1 -0
  542. package/dist/state/sandbox-connection-store.d.ts +62 -0
  543. package/dist/state/sandbox-connection-store.d.ts.map +1 -0
  544. package/dist/state/sandbox-connection-store.js +290 -0
  545. package/dist/state/sandbox-connection-store.js.map +1 -0
  546. package/dist/state/server-store/active.d.ts +49 -0
  547. package/dist/state/server-store/active.d.ts.map +1 -0
  548. package/dist/state/server-store/active.js +76 -0
  549. package/dist/state/server-store/active.js.map +1 -0
  550. package/dist/state/server-store/types.d.ts +12 -0
  551. package/dist/state/server-store/types.d.ts.map +1 -0
  552. package/dist/state/server-store/types.js +2 -0
  553. package/dist/state/server-store/types.js.map +1 -0
  554. package/dist/state/server-store/url-helpers.d.ts +33 -0
  555. package/dist/state/server-store/url-helpers.d.ts.map +1 -0
  556. package/dist/state/server-store/url-helpers.js +55 -0
  557. package/dist/state/server-store/url-helpers.js.map +1 -0
  558. package/dist/state/server-store.d.ts +18 -0
  559. package/dist/state/server-store.d.ts.map +1 -0
  560. package/dist/state/server-store.js +23 -0
  561. package/dist/state/server-store.js.map +1 -0
  562. package/dist/state/session-runtime-registry.d.ts +49 -0
  563. package/dist/state/session-runtime-registry.d.ts.map +1 -0
  564. package/dist/state/session-runtime-registry.js +85 -0
  565. package/dist/state/session-runtime-registry.js.map +1 -0
  566. package/dist/state/sync-store/ascending-id.d.ts +2 -0
  567. package/dist/state/sync-store/ascending-id.d.ts.map +1 -0
  568. package/dist/state/sync-store/ascending-id.js +21 -0
  569. package/dist/state/sync-store/ascending-id.js.map +1 -0
  570. package/dist/state/sync-store/binary.d.ts +7 -0
  571. package/dist/state/sync-store/binary.d.ts.map +1 -0
  572. package/dist/state/sync-store/binary.js +21 -0
  573. package/dist/state/sync-store/binary.js.map +1 -0
  574. package/dist/state/sync-store/stream-cache.d.ts +2 -0
  575. package/dist/state/sync-store/stream-cache.d.ts.map +1 -0
  576. package/dist/state/sync-store/stream-cache.js +29 -0
  577. package/dist/state/sync-store/stream-cache.js.map +1 -0
  578. package/dist/state/sync-store/types.d.ts +29 -0
  579. package/dist/state/sync-store/types.d.ts.map +1 -0
  580. package/dist/state/sync-store/types.js +2 -0
  581. package/dist/state/sync-store/types.js.map +1 -0
  582. package/dist/state/sync-store.d.ts +39 -0
  583. package/dist/state/sync-store.d.ts.map +1 -0
  584. package/dist/state/sync-store.js +692 -0
  585. package/dist/state/sync-store.js.map +1 -0
  586. package/dist/state/tab-store.d.ts +91 -0
  587. package/dist/state/tab-store.d.ts.map +1 -0
  588. package/dist/state/tab-store.js +369 -0
  589. package/dist/state/tab-store.js.map +1 -0
  590. package/dist/transcript.d.ts +40 -0
  591. package/dist/transcript.d.ts.map +1 -0
  592. package/dist/transcript.js +126 -0
  593. package/dist/transcript.js.map +1 -0
  594. package/dist/turns/classify.d.ts +166 -0
  595. package/dist/turns/classify.d.ts.map +1 -0
  596. package/dist/turns/classify.js +259 -0
  597. package/dist/turns/classify.js.map +1 -0
  598. package/dist/turns/errors.d.ts +11 -0
  599. package/dist/turns/errors.d.ts.map +1 -0
  600. package/dist/turns/errors.js +85 -0
  601. package/dist/turns/errors.js.map +1 -0
  602. package/dist/turns/index.d.ts +264 -0
  603. package/dist/turns/index.d.ts.map +1 -0
  604. package/dist/turns/index.js +1243 -0
  605. package/dist/turns/index.js.map +1 -0
  606. package/dist/turns/tool-registry.d.ts +33 -0
  607. package/dist/turns/tool-registry.d.ts.map +1 -0
  608. package/dist/turns/tool-registry.js +108 -0
  609. package/dist/turns/tool-registry.js.map +1 -0
  610. package/dist/turns/types.d.ts +125 -0
  611. package/dist/turns/types.d.ts.map +1 -0
  612. package/dist/turns/types.js +12 -0
  613. package/dist/turns/types.js.map +1 -0
  614. package/dist/turns/view-model.d.ts +127 -0
  615. package/dist/turns/view-model.d.ts.map +1 -0
  616. package/dist/turns/view-model.js +401 -0
  617. package/dist/turns/view-model.js.map +1 -0
  618. package/package.json +155 -0
@@ -0,0 +1,424 @@
1
+ /**
2
+ * Framework-free SSE event-stream machine, extracted verbatim (same constants,
3
+ * same branch order, same semantics) from the connect/reconnect loop that used
4
+ * to live inline inside `react/use-opencode-events/index.ts`'s `useEffect`.
5
+ *
6
+ * Zero imports of `react`, `react-query`, or any `react/*` module — this file
7
+ * can run in any JS host (a worker, a CLI, a non-React UI). Everything that
8
+ * depended on React Query in the original hook (cache writes, toasts, ref
9
+ * lookups) stays in the React wrapper and reaches this module only through the
10
+ * injected `onEvent` / `onGapRehydrate` callbacks.
11
+ *
12
+ * Owns: connecting to the opencode SSE endpoint (with a connect timeout), the
13
+ * idle heartbeat watchdog, event coalescing + 16ms flush batching, gap
14
+ * detection on reconnect, the exponential-backoff reconnect loop (fast 250ms
15
+ * resume after an eventful stream, capped exponential backoff otherwise), and
16
+ * the give-up "parked" terminal state for streams pointed at dead sandboxes
17
+ * (see `maxConsecutiveHardFailures`/`onParked`).
18
+ */
19
+ import { getSupabaseAccessToken, invalidateTokenCache } from '../platform/auth.js';
20
+ import { logger } from '../platform/logger.js';
21
+ const realTimers = {
22
+ now: () => Date.now(),
23
+ setTimeout: (handler, timeoutMs) => setTimeout(handler, timeoutMs),
24
+ clearTimeout: (handle) => clearTimeout(handle),
25
+ };
26
+ // ---- Tunables ----
27
+ const COALESCE_FLUSH_MS = 16;
28
+ const YIELD_INTERVAL_MS = 8;
29
+ /**
30
+ * Idle watchdog budget for an ESTABLISHED stream. The server currently emits
31
+ * NO idle keepalive frames, so a healthy-but-quiet session produces genuinely
32
+ * long silent stretches — a budget below the real idle gap makes the watchdog
33
+ * kill perfectly healthy connections on a timer (the old 15s value guaranteed
34
+ * a kill every 15s of quiet, by design). 60s keeps the watchdog able to catch
35
+ * genuinely dead sockets while tolerating normal idle. When the server ships
36
+ * `: keepalive` comment frames this can come back down toward 2× the
37
+ * keepalive cadence. Configurable per-stream via
38
+ * `OpenEventStreamOptions.heartbeatTimeoutMs`.
39
+ */
40
+ const HEARTBEAT_MS = 60_000;
41
+ const GAP_REHYDRATE_MS = 5_000;
42
+ const FAST_RECONNECT_DELAY_MS = 250;
43
+ const BASE_RECONNECT_DELAY_MS = 1000;
44
+ const MAX_RECONNECT_DELAY_MS = 30_000;
45
+ const MAX_BACKOFF_EXPONENT = 5;
46
+ const SSE_DEFAULT_RETRY_DELAY_MS = 3000;
47
+ const SSE_MAX_RETRY_DELAY_MS = 30_000;
48
+ const CONNECT_TIMEOUT_MS = 20_000;
49
+ /** An event-less attempt that dies faster than this is a "hard failure" —
50
+ * the fast-503 signature of a dead sandbox — even when the error carries no
51
+ * HTTP status (edge-generated failures surface as opaque network/CORS
52
+ * errors). See `maxConsecutiveHardFailures`. */
53
+ const HARD_FAILURE_WINDOW_MS = 2_000;
54
+ const MAX_CONSECUTIVE_HARD_FAILURES = 8;
55
+ /**
56
+ * Coalescing keys — determines which events can replace earlier ones in the
57
+ * same 16ms flush batch.
58
+ *
59
+ * NOTE: message.part.updated is intentionally NOT coalesced. While the server
60
+ * sends full part state each time, coalescing can cause a stale snapshot to be
61
+ * the sole survivor of a batch. When that stale snapshot is processed before
62
+ * any deltas, it inserts the part with wrong/partial text (prefix-growth guard
63
+ * can't help — nothing to compare against). The upsertPart prefix-growth guard
64
+ * efficiently rejects stale snapshots with a no-op return, so processing every
65
+ * snapshot has minimal cost.
66
+ */
67
+ function getCoalesceKey(event) {
68
+ if (event.type === 'session.status') {
69
+ return `session.status:${event.properties.sessionID}`;
70
+ }
71
+ if (event.type === 'lsp.updated')
72
+ return 'lsp.updated';
73
+ return undefined;
74
+ }
75
+ /**
76
+ * A promise that resolves the moment `signal` fires 'abort' (or immediately,
77
+ * if it's already aborted), plus a `cleanup` to remove the listener when it
78
+ * loses a race. Used to make an in-flight `iterator.next()` read abortable:
79
+ * without this, a parked read (server stops sending, no error, no close)
80
+ * would never let a fired heartbeat/abort be observed, since nothing wakes
81
+ * the pending read.
82
+ */
83
+ function onceAborted(signal) {
84
+ if (signal.aborted)
85
+ return { promise: Promise.resolve(), cleanup: () => { } };
86
+ let handler = () => { };
87
+ const promise = new Promise((resolve) => {
88
+ handler = () => resolve();
89
+ signal.addEventListener('abort', handler, { once: true });
90
+ });
91
+ return { promise, cleanup: () => signal.removeEventListener('abort', handler) };
92
+ }
93
+ /**
94
+ * Connects to the opencode SSE event stream and keeps it alive: heartbeat
95
+ * watchdog, event coalescing + batched flush, gap-triggered rehydrate signal,
96
+ * and exponential-backoff reconnect. Framework-free — safe to call from any
97
+ * host (the React wrapper calls this once per effect run; a non-React host can
98
+ * call it directly).
99
+ */
100
+ export function openEventStream(opts) {
101
+ const { client, onEvent, onGapRehydrate, onParked, signal: externalSignal } = opts;
102
+ const t = opts.timers ?? realTimers;
103
+ const connectTimeoutMs = opts.connectTimeoutMs ?? CONNECT_TIMEOUT_MS;
104
+ const heartbeatTimeoutMs = opts.heartbeatTimeoutMs ?? HEARTBEAT_MS;
105
+ const maxConsecutiveHardFailures = opts.maxConsecutiveHardFailures ?? MAX_CONSECUTIVE_HARD_FAILURES;
106
+ const abortController = new AbortController();
107
+ const onExternalAbort = () => abortController.abort();
108
+ if (externalSignal) {
109
+ if (externalSignal.aborted)
110
+ abortController.abort();
111
+ else
112
+ externalSignal.addEventListener('abort', onExternalAbort, { once: true });
113
+ }
114
+ // Track last stream activity (connect or event) to gate reconnect hydration.
115
+ // Using only "last event" causes hydrate storms when the server rotates
116
+ // idle SSE connections that carried no events.
117
+ let lastStreamActivityTime = t.now();
118
+ // Event coalescing queue (like the SolidJS reference)
119
+ let queue = [];
120
+ let flushTimer;
121
+ let lastFlush = 0;
122
+ // Coalescing map — replaces earlier events of the same key
123
+ const coalesced = new Map();
124
+ const flush = () => {
125
+ if (flushTimer)
126
+ t.clearTimeout(flushTimer);
127
+ flushTimer = undefined;
128
+ if (queue.length === 0)
129
+ return;
130
+ const events = queue;
131
+ queue = [];
132
+ coalesced.clear();
133
+ lastFlush = t.now();
134
+ lastStreamActivityTime = t.now();
135
+ for (const item of events) {
136
+ if (!item)
137
+ continue;
138
+ try {
139
+ onEvent(item.event);
140
+ }
141
+ catch (e) {
142
+ // A single event handler must never break the stream OR crash the
143
+ // host. e.g. a handler calls getClient() before the sandbox URL is
144
+ // pinned (during a session switch) — that throw used to escape to the
145
+ // route error boundary. Swallow + log; the next events + retries
146
+ // recover.
147
+ console.warn('[opencode-events] event handler threw, skipping', e);
148
+ }
149
+ }
150
+ };
151
+ const schedule = () => {
152
+ if (flushTimer)
153
+ return;
154
+ const elapsed = t.now() - lastFlush;
155
+ flushTimer = t.setTimeout(flush, Math.max(0, COALESCE_FLUSH_MS - elapsed));
156
+ };
157
+ // Consume the stream in the background with automatic retry
158
+ (async () => {
159
+ let retryCount = 0;
160
+ // Consecutive hard-failure streak — see `maxConsecutiveHardFailures`.
161
+ // Survives across attempts; reset by any attempt that delivered events
162
+ // or that failed slowly without an HTTP status.
163
+ let consecutiveHardFailures = 0;
164
+ while (!abortController.signal.aborted) {
165
+ let streamHadEvents = false;
166
+ let stableConnection = false;
167
+ let heartbeatTimer;
168
+ let connectTimer;
169
+ // What this attempt died to (null = clean end), plus when it started —
170
+ // both feed the hard-failure classification below the try block.
171
+ let attemptError = null;
172
+ const attemptStartedAt = t.now();
173
+ // Per-attempt controller passed to the SSE client. Aborting it is what
174
+ // actually cancels the underlying network reader — the vendor client
175
+ // only cancels on the signal IT was handed. It aborts when EITHER the
176
+ // heartbeat fires OR the outer controller aborts (linked below), so a
177
+ // heartbeat-forced reconnect tears the old connection down instead of
178
+ // leaving it parked/leaking while a new one opens.
179
+ const attemptAbort = new AbortController();
180
+ const outerLink = onceAborted(abortController.signal);
181
+ outerLink.promise.then(() => attemptAbort.abort());
182
+ try {
183
+ // Race the connect call itself against `connectTimeoutMs`. A
184
+ // black-holed proxy can swallow this request with no error, no data,
185
+ // and no close — the heartbeat watchdog below only starts once this
186
+ // resolves, so it can't rescue a hung connect. On timeout, abort this
187
+ // attempt (cancels the underlying request, same as any other
188
+ // reconnect) and reject so it falls into the catch block below and
189
+ // retries through the normal backoff path, exactly like any other
190
+ // connect failure.
191
+ const result = await new Promise((resolve, reject) => {
192
+ let settled = false;
193
+ connectTimer = t.setTimeout(() => {
194
+ if (settled)
195
+ return;
196
+ settled = true;
197
+ logger.warn('SSE connect timed out, forcing reconnect', { connectTimeoutMs });
198
+ attemptAbort.abort();
199
+ reject(new Error(`SSE connect timed out after ${connectTimeoutMs}ms`));
200
+ }, connectTimeoutMs);
201
+ client.global
202
+ .event({
203
+ signal: attemptAbort.signal,
204
+ sseDefaultRetryDelay: SSE_DEFAULT_RETRY_DELAY_MS,
205
+ sseMaxRetryDelay: SSE_MAX_RETRY_DELAY_MS,
206
+ })
207
+ .then((value) => {
208
+ if (settled)
209
+ return;
210
+ settled = true;
211
+ t.clearTimeout(connectTimer);
212
+ resolve(value);
213
+ }, (err) => {
214
+ if (settled)
215
+ return;
216
+ settled = true;
217
+ t.clearTimeout(connectTimer);
218
+ reject(err);
219
+ });
220
+ });
221
+ const { stream } = result;
222
+ lastStreamActivityTime = t.now();
223
+ // Heartbeat timeout — if no events arrive within the idle budget
224
+ // (default 60s, see HEARTBEAT_MS for why), abort and reconnect. This
225
+ // is the ONLY recovery mechanism we need on an established stream —
226
+ // replaces the stall watchdog, reconciler, and visibility handler.
227
+ const resetHeartbeat = () => {
228
+ t.clearTimeout(heartbeatTimer);
229
+ heartbeatTimer = t.setTimeout(() => {
230
+ logger.warn('SSE heartbeat timeout, forcing reconnect');
231
+ attemptAbort.abort();
232
+ }, heartbeatTimeoutMs);
233
+ };
234
+ resetHeartbeat();
235
+ // Consume stream: queue + coalesce + 16ms flush + yield every 8ms.
236
+ //
237
+ // The read itself has to be abortable, not just checked between
238
+ // reads. If the underlying `.next()` parks (server stops sending, no
239
+ // error, no close), a plain `for await` never yields control back to
240
+ // this loop body, so a heartbeat/abort that fires while parked would
241
+ // never actually be observed. Race each read against the
242
+ // heartbeat/abort signals instead — whichever settles first wins.
243
+ let yieldedAt = t.now();
244
+ const iterator = stream[Symbol.asyncIterator]();
245
+ while (!attemptAbort.signal.aborted) {
246
+ const nextOutcome = iterator.next().then((result) => ({ kind: 'next', result }), (error) => ({ kind: 'error', error }));
247
+ const abortWatch = onceAborted(attemptAbort.signal);
248
+ const outcome = await Promise.race([
249
+ nextOutcome,
250
+ abortWatch.promise.then(() => ({ kind: 'aborted' })),
251
+ ]);
252
+ abortWatch.cleanup();
253
+ if (outcome.kind === 'aborted')
254
+ break;
255
+ if (outcome.kind === 'error')
256
+ throw outcome.error;
257
+ if (outcome.result.done)
258
+ break;
259
+ streamHadEvents = true;
260
+ resetHeartbeat();
261
+ const raw = outcome.result.value;
262
+ const e = (raw && typeof raw === 'object' && 'payload' in raw ? raw.payload : raw);
263
+ if (!e?.type)
264
+ continue;
265
+ const ck = getCoalesceKey(e);
266
+ if (ck) {
267
+ const existing = coalesced.get(ck);
268
+ if (existing !== undefined) {
269
+ queue[existing] = undefined;
270
+ }
271
+ coalesced.set(ck, queue.length);
272
+ }
273
+ queue.push({ type: e.type, event: e });
274
+ schedule();
275
+ if (t.now() - yieldedAt < YIELD_INTERVAL_MS)
276
+ continue;
277
+ yieldedAt = t.now();
278
+ await new Promise((resolve) => t.setTimeout(resolve, 0));
279
+ }
280
+ // Healthy stream ONLY if it actually delivered events. There used to
281
+ // be a time-based OR-branch here ("or stayed open >10s") — that was a
282
+ // prod reconnect storm: anything that kills idle connections on a
283
+ // period ABOVE that threshold (our own heartbeat watchdog, an idle
284
+ // proxy timeout, server-side rotation) made every idle disconnect
285
+ // look "stable", which reset retryCount and locked the loop into the
286
+ // 250ms fast-reconnect path forever (~236 reconnects/hour/stream).
287
+ // An idle disconnect — watchdog-triggered or natural — must ride the
288
+ // exponential backoff (1s → 30s cap) instead; the moment a
289
+ // reconnected stream delivers a real event, backoff resets and the
290
+ // fast path returns. Missed-while-waiting events are covered by the
291
+ // gap-rehydrate signal below.
292
+ stableConnection = streamHadEvents;
293
+ }
294
+ catch (err) {
295
+ if (abortController.signal.aborted)
296
+ break;
297
+ attemptError = err;
298
+ const errStr = String(err);
299
+ const isAuthError = errStr.includes('401') ||
300
+ errStr.includes('403') ||
301
+ errStr.includes('Unauthorized') ||
302
+ errStr.includes('Token refresh failed');
303
+ logger.error('SSE event stream error', {
304
+ error: errStr,
305
+ retryCount,
306
+ isAuthError,
307
+ });
308
+ // On auth errors, invalidate the token cache and fetch a fresh token.
309
+ // This ensures all callers (SSE, health check, SDK) immediately use
310
+ // the refreshed token instead of serving stale cached ones for 30s.
311
+ if (isAuthError) {
312
+ try {
313
+ invalidateTokenCache();
314
+ await getSupabaseAccessToken();
315
+ logger.info('SSE: refreshed auth token after auth error');
316
+ }
317
+ catch (refreshErr) {
318
+ logger.error('SSE: failed to refresh auth token', {
319
+ error: String(refreshErr),
320
+ });
321
+ }
322
+ }
323
+ }
324
+ finally {
325
+ t.clearTimeout(heartbeatTimer);
326
+ t.clearTimeout(connectTimer);
327
+ // Release the reader/connection if we left the loop for any reason
328
+ // other than an already-fired abort (e.g. stream `done`, or a thrown
329
+ // error), and detach the outer-abort listener so it can't accumulate
330
+ // across reconnects.
331
+ attemptAbort.abort();
332
+ outerLink.cleanup();
333
+ flush();
334
+ }
335
+ // Stream ended or errored — reconnect with exponential backoff.
336
+ // ERR_INCOMPLETE_CHUNKED_ENCODING is normal when the server closes the
337
+ // SSE connection between response cycles. Minimum 1s delay even on
338
+ // first retry to avoid reconnection storms when the server is flapping
339
+ // (connect → immediate disconnect loops).
340
+ if (abortController.signal.aborted)
341
+ break;
342
+ // ── Give-up (park) check — the "dead sandbox" terminal state. ────────
343
+ // A stream pointed at an archived/stopped session's sandbox otherwise
344
+ // retries FOREVER: the proxy 503s every `/global/event` connect, and
345
+ // prod showed continuous 503 loops from several dead sandboxes at once.
346
+ // Classify this attempt: a HARD failure delivered zero events AND
347
+ // either carried an HTTP-level status (the vendor client wraps non-2xx
348
+ // as `Error` with `cause: { status }` — see @opencode-ai/sdk's
349
+ // error-interceptor) or died within HARD_FAILURE_WINDOW_MS (edge 503s
350
+ // surface as opaque network/CORS errors with no status attached).
351
+ // Slow failures without a status (a black-holed connect that hit the
352
+ // 20s connect timeout) and anything that streamed a real event reset
353
+ // the streak. After `maxConsecutiveHardFailures` in a row — spread
354
+ // over ~2 minutes by the exponential backoff below — park for good.
355
+ const attemptDurationMs = t.now() - attemptStartedAt;
356
+ const httpStatus = attemptError?.cause?.status;
357
+ const isHardFailure = !streamHadEvents &&
358
+ ((typeof httpStatus === 'number' && httpStatus >= 400) ||
359
+ attemptDurationMs < HARD_FAILURE_WINDOW_MS);
360
+ consecutiveHardFailures = isHardFailure ? consecutiveHardFailures + 1 : 0;
361
+ if (consecutiveHardFailures >= maxConsecutiveHardFailures) {
362
+ logger.error('SSE event stream parked — giving up after consecutive hard failures', {
363
+ consecutiveFailures: consecutiveHardFailures,
364
+ lastError: String(attemptError),
365
+ });
366
+ try {
367
+ onParked?.({ consecutiveFailures: consecutiveHardFailures, lastError: attemptError });
368
+ }
369
+ catch (parkedHandlerErr) {
370
+ // A host's park handler must never crash the (already-terminal)
371
+ // stream machine.
372
+ console.warn('[opencode-events] onParked handler threw', parkedHandlerErr);
373
+ }
374
+ break;
375
+ }
376
+ // Re-hydrate messages for loaded sessions when the SSE gap was
377
+ // significant (>5s). Events missed during the gap (e.g. streaming
378
+ // assistant response) would never arrive, leaving the UI stale until
379
+ // the user manually refreshes.
380
+ const gap = t.now() - lastStreamActivityTime;
381
+ if (gap > GAP_REHYDRATE_MS) {
382
+ onGapRehydrate?.(gap);
383
+ }
384
+ if (stableConnection) {
385
+ // Fast reconnect after healthy streams so live streaming resumes
386
+ // immediately.
387
+ retryCount = 0;
388
+ }
389
+ else {
390
+ retryCount++;
391
+ if (retryCount > 1) {
392
+ logger.warn('SSE event stream reconnecting', { retryCount });
393
+ }
394
+ }
395
+ const delay = stableConnection
396
+ ? FAST_RECONNECT_DELAY_MS
397
+ : Math.min(BASE_RECONNECT_DELAY_MS * 2 ** Math.min(retryCount - 1, MAX_BACKOFF_EXPONENT), MAX_RECONNECT_DELAY_MS);
398
+ await new Promise((resolve) => {
399
+ const timer = t.setTimeout(resolve, delay);
400
+ const onAbort = () => {
401
+ t.clearTimeout(timer);
402
+ resolve();
403
+ };
404
+ abortController.signal.addEventListener('abort', onAbort, { once: true });
405
+ });
406
+ }
407
+ })();
408
+ return {
409
+ close: () => {
410
+ abortController.abort();
411
+ if (externalSignal)
412
+ externalSignal.removeEventListener('abort', onExternalAbort);
413
+ if (flushTimer)
414
+ t.clearTimeout(flushTimer);
415
+ },
416
+ };
417
+ }
418
+ // The curated chat-event union built on top of this stream's `OpenCodeEvent` —
419
+ // re-exported here (additive only) so a host that imports the SSE primitive
420
+ // from this subpath (`@kortix/sdk/event-stream`) can reach the chat-narrowing
421
+ // helpers from the same import without a second subpath. Canonical definition
422
+ // lives in `./chat-events.ts`.
423
+ export { heartbeatGapEvent, narrowChatEvent, } from './chat-events.js';
424
+ //# sourceMappingURL=event-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-stream.js","sourceRoot":"","sources":["../../src/state/event-stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * IndexedDB persistence layer for the sync store.
3
+ * Provides instant session data on cold loads (stale-while-revalidate).
4
+ *
5
+ * Schema: one object store "sessions" keyed by cacheKey, each entry holds
6
+ * { cacheKey, userId, sessionId, messages, parts, updatedAt }.
7
+ */
8
+ export declare function saveSessionToIDB(sessionId: string, messages: any[], parts: Record<string, any[]>): Promise<void>;
9
+ export declare function flushIDBWrites(): Promise<void>;
10
+ export declare function loadSessionFromIDB(sessionId: string): Promise<{
11
+ messages: any[];
12
+ parts: Record<string, any[]>;
13
+ } | null>;
14
+ export declare function loadAllSessionIdsFromIDB(): Promise<string[]>;
15
+ export declare function deleteSessionFromIDB(sessionId: string): Promise<void>;
16
+ export declare function clearSessionIDBCache(): Promise<void>;
17
+ export declare function pruneIDBCache(): Promise<void>;
18
+ //# sourceMappingURL=idb-sync-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idb-sync-cache.d.ts","sourceRoot":"","sources":["../../src/state/idb-sync-cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuGH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,GAAG,EAAE,EACf,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAgB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAK9C;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;CAAE,GAAG,IAAI,CAAC,CAuBnE;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAiBlE;AAED,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3E;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAa1D;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA0BnD"}