@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,319 @@
1
+ 'use client';
2
+ import { create } from 'zustand';
3
+ import { persist } from 'zustand/middleware';
4
+ // ============================================================================
5
+ // Path matching helpers
6
+ // ============================================================================
7
+ /**
8
+ * Find diagnostics for a file using flexible path matching.
9
+ *
10
+ * LSP servers store diagnostics keyed by absolute sandbox paths (e.g.
11
+ * `/workspace/desktop/express-crud-app/src/server.js`), but the frontend
12
+ * uses project-relative paths (e.g. `src/server.js`). This function
13
+ * handles the mismatch by:
14
+ *
15
+ * 1. Exact match (covers relative-to-relative)
16
+ * 2. The store key ends with `/<relativePath>` (abs→rel match)
17
+ * 3. The lookup path ends with `/<storeKey>` (rel→abs, unlikely but safe)
18
+ */
19
+ export function findDiagnosticsForFile(byFile, filePath) {
20
+ // 1. Exact match
21
+ if (byFile[filePath])
22
+ return byFile[filePath];
23
+ // Normalise: strip leading slashes and any `file://` prefix for comparison
24
+ const cleanPath = filePath.replace(/^file:\/\//, '').replace(/^\/+/, '');
25
+ // 2. Store key ends with the relative path
26
+ for (const key of Object.keys(byFile)) {
27
+ const cleanKey = key.replace(/^file:\/\//, '').replace(/^\/+/, '');
28
+ // Exact after normalisation
29
+ if (cleanKey === cleanPath)
30
+ return byFile[key];
31
+ // Store key is absolute, lookup path is relative
32
+ if (cleanKey.endsWith('/' + cleanPath))
33
+ return byFile[key];
34
+ // Lookup path is absolute, store key is relative (rare)
35
+ if (cleanPath.endsWith('/' + cleanKey))
36
+ return byFile[key];
37
+ }
38
+ return undefined;
39
+ }
40
+ /**
41
+ * Build a map from relative file path → { errors, warnings } by iterating
42
+ * the diagnostics store. Uses the last N segments of each store key so that
43
+ * both `sidebar-explorer` (uses `node.path` which is relative) and
44
+ * `file-browser` can compute diagnostic counts.
45
+ *
46
+ * Returns a map where keys are every possible suffix of the store keys
47
+ * (e.g. for `/workspace/project/src/app.ts` it includes entries for
48
+ * `src/app.ts`, `project/src/app.ts`, `app.ts`, etc.) This is O(totalKeys * avgDepth)
49
+ * but in practice the number of files with diagnostics is small.
50
+ */
51
+ export function buildDiagnosticCountsMap(byFile) {
52
+ const map = {};
53
+ for (const [key, diags] of Object.entries(byFile)) {
54
+ if (!diags || diags.length === 0)
55
+ continue;
56
+ let errors = 0;
57
+ let warnings = 0;
58
+ for (const d of diags) {
59
+ if (d.severity === 1)
60
+ errors++;
61
+ else if (d.severity === 2)
62
+ warnings++;
63
+ }
64
+ if (errors === 0 && warnings === 0)
65
+ continue;
66
+ const counts = { errors, warnings };
67
+ // Register under every suffix of the path so both absolute and
68
+ // relative lookups work.
69
+ const cleanKey = key.replace(/^file:\/\//, '');
70
+ const parts = cleanKey.split('/').filter(Boolean);
71
+ // Full path (with leading slash removed)
72
+ map[parts.join('/')] = counts;
73
+ // Also register with leading slash for absolute lookups
74
+ if (cleanKey.startsWith('/')) {
75
+ map[cleanKey] = counts;
76
+ }
77
+ // Progressive suffixes: src/app.ts, app.ts
78
+ for (let i = 1; i < parts.length; i++) {
79
+ const suffix = parts.slice(i).join('/');
80
+ // Don't overwrite — first match (longest key) wins
81
+ if (!map[suffix]) {
82
+ map[suffix] = counts;
83
+ }
84
+ }
85
+ }
86
+ return map;
87
+ }
88
+ /**
89
+ * Extract the relative filename from a diagnostic's file path.
90
+ * Used by the diagnostics panel to show short names.
91
+ */
92
+ export function getRelativePath(absPath) {
93
+ const clean = absPath.replace(/^file:\/\//, '');
94
+ // If it looks absolute, try common sandbox prefixes
95
+ if (clean.startsWith('/')) {
96
+ // Strip /workspace/desktop/.../ or /home/user/project/.../ patterns
97
+ // Strategy: find the deepest "project root" heuristic and strip it
98
+ // Common patterns: /workspace/X/Y/ where Y is the project
99
+ const parts = clean.split('/').filter(Boolean);
100
+ // Look for common project markers going from right to left
101
+ for (let i = 0; i < parts.length; i++) {
102
+ if (['src', 'lib', 'app', 'pages', 'components', 'public', 'test', 'tests', 'pkg', 'cmd', 'internal'].includes(parts[i])) {
103
+ return parts.slice(i).join('/');
104
+ }
105
+ }
106
+ // If no marker found, take the last 3 segments max
107
+ if (parts.length > 3) {
108
+ return parts.slice(-3).join('/');
109
+ }
110
+ return parts.join('/');
111
+ }
112
+ return clean;
113
+ }
114
+ // ============================================================================
115
+ // Parse diagnostics from tool output text
116
+ // ============================================================================
117
+ /**
118
+ * Parse diagnostics from OpenCode tool output text.
119
+ *
120
+ * The Go backend embeds diagnostics as plain text in `<file_diagnostics>`
121
+ * and `<project_diagnostics>` XML tags within the tool result. Each line
122
+ * follows the format:
123
+ *
124
+ * Severity: /path/to/file.ts:line:col [source][code] (tags) message
125
+ *
126
+ * Examples:
127
+ * Error: /workspace/src/server.js:4:1 [typescript] Cannot find module './utils/nonexistent'
128
+ * Warn: /workspace/src/server.js:5:7 [typescript][6133] (unnecessary) 'unused_import' is declared but never read
129
+ */
130
+ export function parseDiagnosticsFromToolOutput(output) {
131
+ const result = {};
132
+ // Extract content from both tag types
133
+ const tagPattern = /<(?:file_diagnostics|project_diagnostics)>([\s\S]*?)<\/(?:file_diagnostics|project_diagnostics)>/g;
134
+ let tagMatch;
135
+ const allLines = [];
136
+ while ((tagMatch = tagPattern.exec(output)) !== null) {
137
+ const content = tagMatch[1].trim();
138
+ if (content) {
139
+ for (const line of content.split('\n')) {
140
+ const trimmed = line.trim();
141
+ if (trimmed && !trimmed.startsWith('...')) {
142
+ allLines.push(trimmed);
143
+ }
144
+ }
145
+ }
146
+ }
147
+ if (allLines.length === 0)
148
+ return result;
149
+ // Parse each diagnostic line
150
+ // Format: Severity: /path/to/file:line:col [source][code] (tags) message
151
+ const linePattern = /^(Error|Warn|Info|Hint):\s+(.+?):(\d+):(\d+)\s+\[([^\]]*)\](.*)$/;
152
+ for (const line of allLines) {
153
+ const match = linePattern.exec(line);
154
+ if (!match)
155
+ continue;
156
+ const [, severityStr, filePath, lineStr, colStr, source, rest] = match;
157
+ const severity = severityStr === 'Error' ? 1 :
158
+ severityStr === 'Warn' ? 2 :
159
+ severityStr === 'Hint' ? 4 : 3;
160
+ // Parse optional [code] and message from the rest
161
+ // rest might be: [6133] (unnecessary) message text
162
+ // or: message text
163
+ let message = rest.trim();
164
+ // Strip optional [code] prefix
165
+ message = message.replace(/^\[\w+\]\s*/, '');
166
+ // Strip optional (tags) prefix
167
+ message = message.replace(/^\([^)]*\)\s*/, '');
168
+ const lineNum = parseInt(lineStr, 10) - 1; // Convert to 0-indexed
169
+ const colNum = parseInt(colStr, 10) - 1;
170
+ const diag = {
171
+ file: filePath,
172
+ line: Math.max(0, lineNum),
173
+ column: Math.max(0, colNum),
174
+ severity,
175
+ message: message || `${severityStr} at ${lineStr}:${colStr}`,
176
+ source: source || undefined,
177
+ };
178
+ if (!result[filePath]) {
179
+ result[filePath] = [];
180
+ }
181
+ result[filePath].push(diag);
182
+ }
183
+ return result;
184
+ }
185
+ // ============================================================================
186
+ // Helpers
187
+ // ============================================================================
188
+ function normalizeRawDiagnostic(file, raw) {
189
+ const line = raw.range?.start?.line ?? raw.line ?? 0;
190
+ const column = raw.range?.start?.character ?? raw.column ?? raw.character ?? 0;
191
+ const endLine = raw.range?.end?.line ?? raw.endLine;
192
+ const endColumn = raw.range?.end?.character ?? raw.endColumn;
193
+ const severity = (raw.severity ?? 1);
194
+ return {
195
+ file,
196
+ line,
197
+ column,
198
+ endLine,
199
+ endColumn,
200
+ severity,
201
+ message: raw.message,
202
+ source: raw.source,
203
+ };
204
+ }
205
+ // ============================================================================
206
+ // Store
207
+ // ============================================================================
208
+ export const useDiagnosticsStore = create()(persist((set, get) => ({
209
+ byFile: {},
210
+ setFileDiagnostics: (file, diagnostics) => set((state) => ({
211
+ byFile: {
212
+ ...state.byFile,
213
+ [file]: diagnostics,
214
+ },
215
+ })),
216
+ setFromLspEvent: (diagnosticsByFile) => set((state) => {
217
+ const next = { ...state.byFile };
218
+ for (const [file, rawDiags] of Object.entries(diagnosticsByFile)) {
219
+ if (!Array.isArray(rawDiags))
220
+ continue;
221
+ const normalized = rawDiags.map((d) => normalizeRawDiagnostic(file, d));
222
+ if (normalized.length === 0) {
223
+ delete next[file];
224
+ }
225
+ else {
226
+ next[file] = normalized;
227
+ }
228
+ }
229
+ return { byFile: next };
230
+ }),
231
+ clearFile: (file) => set((state) => {
232
+ const { [file]: _, ...rest } = state.byFile;
233
+ return { byFile: rest };
234
+ }),
235
+ clearAll: () => set({ byFile: {} }),
236
+ getErrorCount: () => {
237
+ const { byFile } = get();
238
+ let count = 0;
239
+ for (const diags of Object.values(byFile)) {
240
+ for (const d of diags) {
241
+ if (d.severity === 1)
242
+ count++;
243
+ }
244
+ }
245
+ return count;
246
+ },
247
+ getWarningCount: () => {
248
+ const { byFile } = get();
249
+ let count = 0;
250
+ for (const diags of Object.values(byFile)) {
251
+ for (const d of diags) {
252
+ if (d.severity === 2)
253
+ count++;
254
+ }
255
+ }
256
+ return count;
257
+ },
258
+ getAllDiagnostics: () => {
259
+ const { byFile } = get();
260
+ const all = [];
261
+ for (const diags of Object.values(byFile)) {
262
+ all.push(...diags);
263
+ }
264
+ // Sort: errors first, then warnings, then by file, then by line
265
+ all.sort((a, b) => {
266
+ if (a.severity !== b.severity)
267
+ return a.severity - b.severity;
268
+ if (a.file !== b.file)
269
+ return a.file.localeCompare(b.file);
270
+ return a.line - b.line;
271
+ });
272
+ return all;
273
+ },
274
+ }), {
275
+ name: 'kortix-diagnostics',
276
+ storage: {
277
+ // Guarded with try/catch (not just `typeof window`): React Native sets a
278
+ // global `window` shim but has no `sessionStorage`, so a bare reference
279
+ // throws a ReferenceError there. Degrading to "diagnostics didn't
280
+ // persist" is fine; crashing the store is not.
281
+ getItem: (name) => {
282
+ try {
283
+ if (typeof window === 'undefined' || typeof sessionStorage === 'undefined')
284
+ return null;
285
+ const str = sessionStorage.getItem(name);
286
+ return str ? JSON.parse(str) : null;
287
+ }
288
+ catch {
289
+ return null;
290
+ }
291
+ },
292
+ setItem: (name, value) => {
293
+ try {
294
+ if (typeof window === 'undefined' || typeof sessionStorage === 'undefined')
295
+ return;
296
+ sessionStorage.setItem(name, JSON.stringify(value));
297
+ }
298
+ catch {
299
+ /* ignore — quota or unavailable storage */
300
+ }
301
+ },
302
+ removeItem: (name) => {
303
+ try {
304
+ if (typeof window === 'undefined' || typeof sessionStorage === 'undefined')
305
+ return;
306
+ sessionStorage.removeItem(name);
307
+ }
308
+ catch {
309
+ /* ignore */
310
+ }
311
+ },
312
+ },
313
+ partialize: (state) => ({ byFile: state.byFile }),
314
+ }));
315
+ // Expose on window for console debugging
316
+ if (typeof window !== 'undefined') {
317
+ window.__diagStore = useDiagnosticsStore;
318
+ }
319
+ //# sourceMappingURL=diagnostics-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics-store.js","sourceRoot":"","sources":["../../src/state/diagnostics-store.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAoE7C,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAuC,EACvC,QAAgB;IAEhB,iBAAiB;IACjB,IAAI,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE9C,2EAA2E;IAC3E,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEzE,2CAA2C;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEnE,4BAA4B;QAC5B,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QAE/C,iDAAiD;QACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,SAAS,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QAE3D,wDAAwD;QACxD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAuC;IAEvC,MAAM,GAAG,GAAyD,EAAE,CAAC;IAErE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAE3C,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC;gBAAE,MAAM,EAAE,CAAC;iBAC1B,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC;gBAAE,QAAQ,EAAE,CAAC;QACxC,CAAC;QACD,IAAI,MAAM,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC;YAAE,SAAS;QAE7C,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAEpC,+DAA+D;QAC/D,yBAAyB;QACzB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAElD,yCAAyC;QACzC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;QAE9B,wDAAwD;QACxD,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QACzB,CAAC;QAED,2CAA2C;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxC,mDAAmD;YACnD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjB,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAChD,oDAAoD;IACpD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,oEAAoE;QACpE,mEAAmE;QACnE,0DAA0D;QAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/C,2DAA2D;QAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzH,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QACD,mDAAmD;QACnD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,0CAA0C;AAC1C,+EAA+E;AAE/E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,8BAA8B,CAC5C,MAAc;IAEd,MAAM,MAAM,GAAoC,EAAE,CAAC;IAEnD,sCAAsC;IACtC,MAAM,UAAU,GAAG,mGAAmG,CAAC;IACvH,IAAI,QAAQ,CAAC;IACb,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEzC,6BAA6B;IAC7B,yEAAyE;IACzE,MAAM,WAAW,GAAG,kEAAkE,CAAC;IAEvF,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,SAAS;QAErB,MAAM,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC;QAEvE,MAAM,QAAQ,GACZ,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5B,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjC,kDAAkD;QAClD,mDAAmD;QACnD,8BAA8B;QAC9B,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1B,+BAA+B;QAC/B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC7C,+BAA+B;QAC/B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAE/C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,uBAAuB;QAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAExC,MAAM,IAAI,GAAkB;YAC1B,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;YAC1B,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;YAC3B,QAAQ;YACR,OAAO,EAAE,OAAO,IAAI,GAAG,WAAW,OAAO,OAAO,IAAI,MAAM,EAAE;YAC5D,MAAM,EAAE,MAAM,IAAI,SAAS;SAC5B,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,SAAS,sBAAsB,CAAC,IAAY,EAAE,GAAkB;IAC9D,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC;IACpD,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC;IAC7D,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAuB,CAAC;IAE3D,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,OAAO;QACP,SAAS;QACT,QAAQ;QACR,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;KACnB,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,EAAoB,CAC3D,OAAO,CACP,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACf,MAAM,EAAE,EAAE;IAEV,kBAAkB,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CACxC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACd,MAAM,EAAE;YACN,GAAG,KAAK,CAAC,MAAM;YACf,CAAC,IAAI,CAAC,EAAE,WAAW;SACpB;KACF,CAAC,CAAC;IAEL,eAAe,EAAE,CAAC,iBAAiB,EAAE,EAAE,CACrC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACZ,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACvC,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEJ,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE,CAClB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACZ,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEJ,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAEnC,aAAa,EAAE,GAAG,EAAE;QAClB,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;QACzB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC;oBAAE,KAAK,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,eAAe,EAAE,GAAG,EAAE;QACpB,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;QACzB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC;oBAAE,KAAK,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,iBAAiB,EAAE,GAAG,EAAE;QACtB,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;QACzB,MAAM,GAAG,GAAoB,EAAE,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,gEAAgE;QAChE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAChB,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;gBAAE,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;YAC9D,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;gBAAE,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3D,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC,EACA;IACE,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE;QACP,yEAAyE;QACzE,wEAAwE;QACxE,kEAAkE;QAClE,+CAA+C;QAC/C,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAChB,IAAI,CAAC;gBACH,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,cAAc,KAAK,WAAW;oBAAE,OAAO,IAAI,CAAC;gBACxF,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACzC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACvB,IAAI,CAAC;gBACH,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,cAAc,KAAK,WAAW;oBAAE,OAAO;gBACnF,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACP,2CAA2C;YAC7C,CAAC;QACH,CAAC;QACD,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;YACnB,IAAI,CAAC;gBACH,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,cAAc,KAAK,WAAW;oBAAE,OAAO;gBACnF,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;KACF;IACD,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAgC;CACjF,CACF,CAAC,CAAC;AAEH,yCAAyC;AACzC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAc,CAAC,WAAW,GAAG,mBAAmB,CAAC;AACpD,CAAC"}
@@ -0,0 +1,134 @@
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 type { Event as OpenCodeSdkEvent } from '@opencode-ai/sdk/v2/client';
20
+ /**
21
+ * The event union this stream dispatches. Re-exported (unchanged shape) from
22
+ * `react/use-opencode-events/types.ts` so existing importers keep working —
23
+ * this module is now the canonical definition.
24
+ */
25
+ export type OpenCodeEvent = OpenCodeSdkEvent | {
26
+ id: string;
27
+ type: 'lsp.client.diagnostics';
28
+ properties: {
29
+ serverID: string;
30
+ path: string;
31
+ };
32
+ };
33
+ /** The minimal slice of `OpencodeClient` this machine actually calls. */
34
+ export interface EventStreamClient {
35
+ global: {
36
+ event: (opts: {
37
+ signal: AbortSignal;
38
+ sseDefaultRetryDelay?: number;
39
+ sseMaxRetryDelay?: number;
40
+ }) => Promise<{
41
+ stream: AsyncIterable<unknown>;
42
+ }>;
43
+ };
44
+ }
45
+ /** A timer handle — opaque, only ever round-tripped through `setTimeout`/`clearTimeout`. */
46
+ export type EventStreamTimerHandle = ReturnType<typeof setTimeout>;
47
+ /** Injectable clock/timer seam — defaults to the real globals. Lets tests
48
+ * drive the reconnect/backoff/heartbeat/coalescing timing deterministically
49
+ * (a manual fake clock) instead of depending on real wall-clock delays. */
50
+ export interface EventStreamTimers {
51
+ now: () => number;
52
+ setTimeout: (handler: () => void, timeoutMs?: number) => EventStreamTimerHandle;
53
+ clearTimeout: (handle: EventStreamTimerHandle | undefined) => void;
54
+ }
55
+ export interface OpenEventStreamOptions {
56
+ /** The opencode client to stream events from (same client the rest of the
57
+ * SDK obtains via `getClient()`). */
58
+ client: EventStreamClient;
59
+ /** Called once per event, in dispatch order, after coalescing/flush. A
60
+ * throw here is caught and logged — one bad handler must never break the
61
+ * stream or crash the host. */
62
+ onEvent: (event: OpenCodeEvent) => void;
63
+ /** Called when a reconnect follows a stream gap > 5s, with the gap size in
64
+ * ms. Lets the host re-hydrate anything it fears went stale (e.g. replay
65
+ * messages for busy sessions) — the machine itself holds no host state to
66
+ * re-hydrate. */
67
+ onGapRehydrate?: (gapMs: number) => void;
68
+ /** External signal that also stops the stream when aborted (in addition to
69
+ * calling `close()` on the returned handle). Optional — most hosts just use
70
+ * `close()`. */
71
+ signal?: AbortSignal;
72
+ /**
73
+ * Max time to wait for the initial `client.global.event()` call to resolve
74
+ * before treating the attempt as hung, aborting it, and retrying through the
75
+ * normal reconnect/backoff path. Guards against a black-holed proxy that
76
+ * swallows the connect request silently (no error, no data, no close) —
77
+ * the heartbeat watchdog can't help here since it only starts AFTER connect
78
+ * resolves. Defaults to 20s.
79
+ */
80
+ connectTimeoutMs?: number;
81
+ /**
82
+ * Max quiet time on an ESTABLISHED stream before the heartbeat watchdog
83
+ * declares it dead, aborts it, and reconnects. Defaults to 60s — see the
84
+ * `HEARTBEAT_MS` comment for why it must stay well above any real idle gap
85
+ * until the server ships keepalive frames.
86
+ */
87
+ heartbeatTimeoutMs?: number;
88
+ /**
89
+ * Give-up threshold: after this many CONSECUTIVE hard failures (attempts
90
+ * that never delivered a single event and died to an HTTP-level error or
91
+ * within 2s — the signature of a dead/archived sandbox whose proxy 503s
92
+ * every connect), the stream stops retrying and parks (see `onParked`).
93
+ * Any attempt that delivers an event, or that fails slowly without an HTTP
94
+ * status (e.g. a connect-timeout on a black-holed proxy), resets the
95
+ * counter. Defaults to 8 — combined with exponential backoff (1s → 30s
96
+ * cap) that spreads the give-up over roughly two minutes.
97
+ */
98
+ maxConsecutiveHardFailures?: number;
99
+ /**
100
+ * Fired ONCE if the stream parks (gives up) after
101
+ * `maxConsecutiveHardFailures` consecutive hard failures. A parked stream
102
+ * is TERMINAL for this handle: no further connect attempts are made, and
103
+ * there is no resume — the host should treat the runtime as gone (drop the
104
+ * stream, surface UI) and, if it believes the sandbox is back, open a
105
+ * fresh stream with a new `openEventStream()` call. `close()` on a parked
106
+ * handle stays safe/idempotent.
107
+ */
108
+ onParked?: (reason: EventStreamParkedInfo) => void;
109
+ /** Test-only clock/timer override. Defaults to real `Date.now`/`setTimeout`. */
110
+ timers?: EventStreamTimers;
111
+ }
112
+ /** Payload for {@link OpenEventStreamOptions.onParked}. */
113
+ export interface EventStreamParkedInfo {
114
+ /** How many consecutive hard failures triggered the park. */
115
+ consecutiveFailures: number;
116
+ /** The error from the final failed attempt (null if it ended without one). */
117
+ lastError: unknown;
118
+ }
119
+ export interface EventStreamHandle {
120
+ /** Aborts the in-flight connection (if any), stops all reconnect/backoff
121
+ * activity, and clears the pending coalescing flush. Idempotent — safe to
122
+ * call on a stream that has already parked (see `onParked`). */
123
+ close: () => void;
124
+ }
125
+ /**
126
+ * Connects to the opencode SSE event stream and keeps it alive: heartbeat
127
+ * watchdog, event coalescing + batched flush, gap-triggered rehydrate signal,
128
+ * and exponential-backoff reconnect. Framework-free — safe to call from any
129
+ * host (the React wrapper calls this once per effect run; a non-React host can
130
+ * call it directly).
131
+ */
132
+ export declare function openEventStream(opts: OpenEventStreamOptions): EventStreamHandle;
133
+ export { heartbeatGapEvent, narrowChatEvent, type KortixChatEvent, type KortixChatEventConnection, type KortixChatEventHeartbeatGap, type KortixChatEventMessageRemoved, type KortixChatEventMessageUpdated, type KortixChatEventPartRemoved, type KortixChatEventPartUpdated, type KortixChatEventPermissionAsked, type KortixChatEventPermissionReplied, type KortixChatEventQuestionAnswered, type KortixChatEventQuestionAsked, type KortixChatEventSessionError, type KortixChatEventSessionIdle, type KortixChatEventSessionStatus, type KortixChatEventTodoUpdated, type KortixChatQuestionInfo, type KortixChatQuestionOption, type KortixChatToolRef, } from './chat-events.js';
134
+ //# sourceMappingURL=event-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-stream.d.ts","sourceRoot":"","sources":["../../src/state/event-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,KAAK,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAI5E;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB;IACE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,wBAAwB,CAAC;IAC/B,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,CAAC;AAEN,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,IAAI,EAAE;YACZ,MAAM,EAAE,WAAW,CAAC;YACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;YAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;SAC3B,KAAK,OAAO,CAAC;YAAE,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;SAAE,CAAC,CAAC;KACnD,CAAC;CACH;AAED,4FAA4F;AAC5F,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnE;;4EAE4E;AAC5E,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,sBAAsB,CAAC;IAChF,YAAY,EAAE,CAAC,MAAM,EAAE,sBAAsB,GAAG,SAAS,KAAK,IAAI,CAAC;CACpE;AAQD,MAAM,WAAW,sBAAsB;IACrC;0CACsC;IACtC,MAAM,EAAE,iBAAiB,CAAC;IAC1B;;oCAEgC;IAChC,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC;;;sBAGkB;IAClB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;;qBAEiB;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;;;OASG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACnD,gFAAgF;IAChF,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,2DAA2D;AAC3D,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,mBAAmB,EAAE,MAAM,CAAC;IAC5B,8EAA8E;IAC9E,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC;;qEAEiE;IACjE,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAsED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,iBAAiB,CAyU/E;AAOD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,8BAA8B,EACnC,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EACjC,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC"}