@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,98 @@
1
+ 'use client';
2
+ import { useQuery } from '@tanstack/react-query';
3
+ import { getClient } from '../../opencode/client.js';
4
+ import { useKortixRouteProjectId } from '../route-project.js';
5
+ import { opencodeKeys, useOpenCodeRuntimeReady } from './keys.js';
6
+ import { unwrap, getLSCache, setLSCache, LS_PROVIDERS, CACHE_SCOPE_GLOBAL } from './shared.js';
7
+ import { getProjectDetail, getProjectLlmCatalog, listProjectSecrets, } from '../../platform/projects-client/index.js';
8
+ import { filterToGatewayProviders, filterToNativeProviders, GATEWAY_PROVIDER_IDS, LLM_PROVIDER_CREDENTIALS, mergeProjectSecretConnectedProviders, normalizeProviderList, projectLlmCatalogToProviderList, providerListHasModels, } from '../provider-selection.js';
9
+ // ============================================================================
10
+ // Provider Hooks
11
+ // ============================================================================
12
+ export { GATEWAY_PROVIDER_IDS };
13
+ export function useOpenCodeProviders() {
14
+ const runtimeReady = useOpenCodeRuntimeReady();
15
+ const projectId = useKortixRouteProjectId();
16
+ const projectDetailQuery = useQuery({
17
+ queryKey: ['project-detail', projectId],
18
+ queryFn: () => getProjectDetail(projectId),
19
+ enabled: !!projectId,
20
+ staleTime: 30_000,
21
+ });
22
+ const projectGatewayEnabled = projectId ? projectDetailQuery.data?.project.experimental?.llm_gateway === true : false;
23
+ const projectModeKnown = !projectId || projectDetailQuery.isSuccess;
24
+ // BYOK makes the connected model set project-specific (a provider connected
25
+ // in one project must NOT leak into another, nor linger after removal), so
26
+ // the persisted placeholder is scoped per project — not the old global scope.
27
+ const cacheScope = projectId
28
+ ? `proj:${projectId}:${projectGatewayEnabled ? 'gateway' : 'native'}`
29
+ : CACHE_SCOPE_GLOBAL;
30
+ return useQuery({
31
+ queryKey: projectId
32
+ ? ['project-providers', projectId, projectGatewayEnabled ? 'gateway' : 'native']
33
+ : opencodeKeys.providers(),
34
+ queryFn: async () => {
35
+ if (projectId && projectGatewayEnabled) {
36
+ const catalog = await getProjectLlmCatalog(projectId);
37
+ const providers = projectLlmCatalogToProviderList(catalog);
38
+ setLSCache(LS_PROVIDERS, providers, cacheScope);
39
+ return providers;
40
+ }
41
+ const client = getClient();
42
+ const result = await client.provider.list();
43
+ let rawProviders = normalizeProviderList(unwrap(result));
44
+ if (projectId) {
45
+ const secrets = await listProjectSecrets(projectId);
46
+ const items = Array.isArray(secrets) ? secrets : (secrets.items ?? []);
47
+ const secretNames = new Set(items.map((secret) => secret.name));
48
+ rawProviders = mergeProjectSecretConnectedProviders(rawProviders, secretNames, LLM_PROVIDER_CREDENTIALS);
49
+ }
50
+ const providers = projectId ? filterToNativeProviders(rawProviders) : rawProviders;
51
+ // During sandbox boot the OpenCode server frequently answers
52
+ // /provider/list BEFORE its provider config is wired up, returning zero
53
+ // CONNECTED providers (→ zero models). With staleTime:Infinity such an
54
+ // empty answer would be cached for the whole session and never refetched,
55
+ // AND persisted to the global localStorage cache below — poisoning the
56
+ // first frame of every future session too. That is the "model picker
57
+ // never shows up" bug. Treat a model-less response as a transient boot
58
+ // state: throw so React Query retries it (with backoff), and never cache
59
+ // or persist it.
60
+ if (!providerListHasModels(providers)) {
61
+ throw new Error('opencode provider list has no connected models yet — sandbox still warming up');
62
+ }
63
+ // Persist under the per-project scope (never the ephemeral per-sandbox
64
+ // server id) so a fresh session paints the right models instantly. Only
65
+ // genuine, model-bearing responses reach here, so the placeholder cache
66
+ // is never poisoned with an empty list.
67
+ setLSCache(LS_PROVIDERS, providers, cacheScope);
68
+ return providers;
69
+ },
70
+ // Only ever serve a model-bearing placeholder. A previously-poisoned cache
71
+ // (written before this guard existed) is ignored so it can't paint empty.
72
+ placeholderData: () => {
73
+ const cached = getLSCache(LS_PROVIDERS, cacheScope);
74
+ if (!providerListHasModels(cached))
75
+ return undefined;
76
+ // Old gateway caches may have been persisted before the source filter —
77
+ // clean them on read, but native-mode projects must see the runtime's
78
+ // actual provider list for v0.9.68/backward-compatible fallback.
79
+ if (projectGatewayEnabled) {
80
+ const gatewayProviders = filterToGatewayProviders(cached);
81
+ return providerListHasModels(gatewayProviders) ? gatewayProviders : undefined;
82
+ }
83
+ if (projectId && !projectGatewayEnabled) {
84
+ const nativeProviders = filterToNativeProviders(cached);
85
+ return providerListHasModels(nativeProviders) ? nativeProviders : undefined;
86
+ }
87
+ return cached;
88
+ },
89
+ enabled: projectId ? projectModeKnown && (projectGatewayEnabled || runtimeReady) : runtimeReady,
90
+ staleTime: Infinity,
91
+ gcTime: 10 * 60 * 1000,
92
+ // The boot race (sandbox up, providers not yet wired) self-heals: keep
93
+ // retrying with capped exponential backoff until real models appear.
94
+ retry: (failureCount) => failureCount < 10,
95
+ retryDelay: (attempt) => Math.min(1000 * Math.pow(2, attempt), 8000),
96
+ });
97
+ }
98
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { Session } from '@opencode-ai/sdk/v2/client';
2
+ export declare function useOpenCodeSessions(): import("@tanstack/react-query").UseQueryResult<NoInfer<Session[]>, Error>;
3
+ export declare function useOpenCodeSession(sessionId: string): import("@tanstack/react-query").UseQueryResult<NoInfer<Session>, Error>;
4
+ export declare function useCreateOpenCodeSession(): import("@tanstack/react-query").UseMutationResult<Session, Error, void | {
5
+ directory?: string;
6
+ title?: string;
7
+ }, unknown>;
8
+ export declare function useDeleteOpenCodeSession(): import("@tanstack/react-query").UseMutationResult<string, Error, string, unknown>;
9
+ export declare function useUpdateOpenCodeSession(): import("@tanstack/react-query").UseMutationResult<Session, Error, {
10
+ sessionId: string;
11
+ title?: string;
12
+ archived?: boolean;
13
+ }, unknown>;
14
+ export declare function useOpenCodeSessionDiff(sessionId: string): import("@tanstack/react-query").UseQueryResult<NoInfer<import("@opencode-ai/sdk/v2/types").SnapshotFileDiff[]>, Error>;
15
+ export declare function useOpenCodeSessionTodo(sessionId: string): import("@tanstack/react-query").UseQueryResult<NoInfer<import("@opencode-ai/sdk/v2/types").Todo[]>, Error>;
16
+ export declare function useSummarizeOpenCodeSession(): import("@tanstack/react-query").UseMutationResult<string, Error, {
17
+ sessionId: string;
18
+ providerID?: string;
19
+ modelID?: string;
20
+ }, void>;
21
+ /**
22
+ * Fork a session at a specific message point.
23
+ * Creates a new session that branches off from the given message.
24
+ * Returns the newly created Session.
25
+ */
26
+ export declare function useForkSession(): import("@tanstack/react-query").UseMutationResult<Session, Error, {
27
+ sessionId: string;
28
+ messageId?: string;
29
+ directory?: string;
30
+ workspace?: string;
31
+ }, unknown>;
32
+ export declare function useInitSession(): import("@tanstack/react-query").UseMutationResult<string, Error, {
33
+ sessionId: string;
34
+ }, unknown>;
35
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/sessions.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAQ1D,wBAAgB,mBAAmB,8EAkClC;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,2EAwBnD;AAED,wBAAgB,wBAAwB;gBAIM,MAAM;YAAU,MAAM;YA8CnE;AAED,wBAAgB,wBAAwB,sFAoBvC;AAED,wBAAgB,wBAAwB;eASvB,MAAM;YACT,MAAM;eACH,OAAO;YAuBvB;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,0HAavD;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,8GAcvD;AAMD,wBAAgB,2BAA2B;eAKC,MAAM;iBAAe,MAAM;cAAY,MAAM;SA+FxF;AAMD;;;;GAIG;AACH,wBAAgB,cAAc;eAUb,MAAM;gBACL,MAAM;gBACN,MAAM;gBACN,MAAM;YA2BvB;AAQD,wBAAgB,cAAc;eAIqB,MAAM;YAiCxD"}
@@ -0,0 +1,380 @@
1
+ 'use client';
2
+ import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
3
+ import { getClient } from '../../opencode/client.js';
4
+ import { isOpenCodeConfigInvalidError } from '../../platform/opencode-errors.js';
5
+ import { markSessionFresh } from '../../platform/fresh-sessions.js';
6
+ import { useOpenCodeCompactionStore } from '../../state/opencode-compaction-store.js';
7
+ import { useCurrentRuntime } from '../use-current-runtime.js';
8
+ import { opencodeKeys, useOpenCodeRuntimeReady } from './keys.js';
9
+ import { unwrap, getLSCache, setLSCache, LS_SESSIONS, canQueryOpenCodeSession } from './shared.js';
10
+ // ============================================================================
11
+ // Session Hooks
12
+ // ============================================================================
13
+ export function useOpenCodeSessions() {
14
+ const runtimeReady = useOpenCodeRuntimeReady();
15
+ // Subscribe to the active runtime sandbox so the query key recomputes the
16
+ // instant the sandbox switches — returning to a warm session hits its cached
17
+ // list rather than refetching from scratch.
18
+ const serverId = useCurrentRuntime((s) => s.sandboxId) ?? undefined;
19
+ return useQuery({
20
+ queryKey: opencodeKeys.sessions(serverId),
21
+ queryFn: async () => {
22
+ const client = getClient();
23
+ const result = await client.session.list({ limit: 10000 });
24
+ const sessions = unwrap(result);
25
+ const sorted = sessions.sort((a, b) => b.time.updated - a.time.updated);
26
+ setLSCache(LS_SESSIONS, sorted);
27
+ return sorted;
28
+ },
29
+ placeholderData: () => getLSCache(LS_SESSIONS),
30
+ enabled: runtimeReady,
31
+ staleTime: 5 * 60 * 1000,
32
+ gcTime: 5 * 60 * 1000,
33
+ refetchOnWindowFocus: false,
34
+ // With the scaffold-warm seed, opencode is ALREADY 'ok' for /workspace and a
35
+ // root session is pinned the moment runtimeReady flips — so the first list
36
+ // normally returns the pinned session in one shot. The only misses left are
37
+ // the server-switch client race + the ~350ms health-poll enable lag, both of
38
+ // which clear in one fast retry. So poll TIGHT (16 x 150ms = ~2.4s) to land
39
+ // the first success in <300ms instead of mid-400ms-window; exponential tail
40
+ // (cap 10s) covers the rare genuinely-stuck case. The old 8x400ms backoff
41
+ // (~3.2s) was the entire 'opencode-listed' wall in the browser trace.
42
+ retry: (failureCount, error) => !isOpenCodeConfigInvalidError(error) && failureCount < 16,
43
+ retryDelay: (attempt) => attempt < 16 ? 150 : Math.min(150 * Math.pow(2, attempt - 16), 10000),
44
+ });
45
+ }
46
+ export function useOpenCodeSession(sessionId) {
47
+ const queryClient = useQueryClient();
48
+ const runtimeReady = useOpenCodeRuntimeReady();
49
+ const canQuerySession = canQueryOpenCodeSession(sessionId);
50
+ return useQuery({
51
+ queryKey: opencodeKeys.session(sessionId),
52
+ queryFn: async () => {
53
+ const client = getClient();
54
+ const result = await client.session.get({ sessionID: sessionId });
55
+ return unwrap(result);
56
+ },
57
+ enabled: runtimeReady && canQuerySession,
58
+ staleTime: Infinity,
59
+ // Retry transient failures (sandbox still warming, brief network blip) so a
60
+ // single failed lookup doesn't settle as "not found" and flash the
61
+ // not-accessible error. The query stays in its loading state across retries.
62
+ retry: (failureCount, error) => !isOpenCodeConfigInvalidError(error) && failureCount < 3,
63
+ retryDelay: (attempt) => Math.min(1000 * Math.pow(2, attempt), 10000),
64
+ placeholderData: () => {
65
+ const sessions = queryClient.getQueryData(opencodeKeys.sessions());
66
+ return sessions?.find((s) => s.id === sessionId);
67
+ },
68
+ });
69
+ }
70
+ export function useCreateOpenCodeSession() {
71
+ const queryClient = useQueryClient();
72
+ return useMutation({
73
+ mutationFn: async (options) => {
74
+ const opts = options || {};
75
+ // Opencode-inside-sandbox can be still booting when this fires (auto-
76
+ // create on session page mount). The sandbox proxy returns 503 with
77
+ // "opencode not ready" until the binary binds its port. Retry that
78
+ // specific transient inline — anything else propagates immediately.
79
+ for (let attempt = 0;; attempt++) {
80
+ try {
81
+ const client = getClient();
82
+ const result = await client.session.create({
83
+ directory: opts.directory,
84
+ title: opts.title,
85
+ });
86
+ return unwrap(result);
87
+ }
88
+ catch (e) {
89
+ const msg = e?.message ?? '';
90
+ if (attempt < 6 && /opencode not ready/i.test(msg)) {
91
+ await new Promise((r) => setTimeout(r, Math.min(500 * 2 ** attempt, 4_000)));
92
+ continue;
93
+ }
94
+ throw e;
95
+ }
96
+ }
97
+ },
98
+ onSuccess: (newSession) => {
99
+ // Surgically insert into cache — SSE session.created will also fire
100
+ // but this gives instant UI feedback. Dedup to avoid duplicate keys.
101
+ const session = newSession;
102
+ // Mark this session as freshly created so the session page shows the
103
+ // instant typeable shell (not the resume loader). In-memory + synchronous,
104
+ // so it's reliably set before the create-then-navigate hop. Every create
105
+ // path flows through this hook; resumes don't.
106
+ markSessionFresh(session.id);
107
+ queryClient.setQueryData(opencodeKeys.sessions(), (old) => {
108
+ if (!old)
109
+ return [session];
110
+ const idx = old.findIndex((s) => s.id === session.id);
111
+ if (idx >= 0) {
112
+ const next = [...old];
113
+ next[idx] = session;
114
+ return next.sort((a, b) => b.time.updated - a.time.updated);
115
+ }
116
+ return [session, ...old].sort((a, b) => b.time.updated - a.time.updated);
117
+ });
118
+ queryClient.setQueryData(opencodeKeys.session(session.id), session);
119
+ },
120
+ });
121
+ }
122
+ export function useDeleteOpenCodeSession() {
123
+ const queryClient = useQueryClient();
124
+ return useMutation({
125
+ mutationFn: async (sessionId) => {
126
+ const client = getClient();
127
+ const result = await client.session.delete({ sessionID: sessionId });
128
+ unwrap(result);
129
+ return sessionId;
130
+ },
131
+ onSuccess: (sessionId) => {
132
+ // Surgically remove from cache — SSE session.deleted will also fire
133
+ queryClient.setQueryData(opencodeKeys.sessions(), (old) => {
134
+ if (!old)
135
+ return old;
136
+ return old.filter((s) => s.id !== sessionId);
137
+ });
138
+ queryClient.removeQueries({ queryKey: opencodeKeys.session(sessionId) });
139
+ queryClient.removeQueries({ queryKey: opencodeKeys.messages(sessionId) });
140
+ },
141
+ });
142
+ }
143
+ export function useUpdateOpenCodeSession() {
144
+ const queryClient = useQueryClient();
145
+ return useMutation({
146
+ mutationFn: async ({ sessionId, title, archived, }) => {
147
+ const client = getClient();
148
+ const body = {};
149
+ if (title !== undefined)
150
+ body.title = title;
151
+ if (archived !== undefined)
152
+ body.time = { archived: archived ? Date.now() : 0 };
153
+ const result = await client.session.update({ sessionID: sessionId, ...body });
154
+ return unwrap(result);
155
+ },
156
+ onSuccess: (updatedSession) => {
157
+ // Surgically update cache — SSE session.updated will also fire
158
+ const session = updatedSession;
159
+ queryClient.setQueryData(opencodeKeys.sessions(), (old) => {
160
+ if (!old)
161
+ return old;
162
+ const idx = old.findIndex((s) => s.id === session.id);
163
+ if (idx < 0)
164
+ return old;
165
+ const next = [...old];
166
+ next[idx] = session;
167
+ return next.sort((a, b) => b.time.updated - a.time.updated);
168
+ });
169
+ queryClient.setQueryData(opencodeKeys.session(session.id), session);
170
+ },
171
+ });
172
+ }
173
+ export function useOpenCodeSessionDiff(sessionId) {
174
+ const runtimeReady = useOpenCodeRuntimeReady();
175
+ const canQuerySession = canQueryOpenCodeSession(sessionId);
176
+ return useQuery({
177
+ queryKey: ['opencode', 'session-diff', sessionId],
178
+ queryFn: async () => {
179
+ const client = getClient();
180
+ const result = await client.session.diff({ sessionID: sessionId });
181
+ return unwrap(result);
182
+ },
183
+ enabled: runtimeReady && canQuerySession,
184
+ staleTime: Infinity,
185
+ });
186
+ }
187
+ export function useOpenCodeSessionTodo(sessionId) {
188
+ const runtimeReady = useOpenCodeRuntimeReady();
189
+ const canQuerySession = canQueryOpenCodeSession(sessionId);
190
+ return useQuery({
191
+ queryKey: ['opencode', 'session-todo', sessionId],
192
+ queryFn: async () => {
193
+ const client = getClient();
194
+ const result = await client.session.todo({ sessionID: sessionId });
195
+ const data = unwrap(result);
196
+ return Array.isArray(data) ? data : [];
197
+ },
198
+ enabled: runtimeReady && canQuerySession,
199
+ staleTime: Infinity,
200
+ });
201
+ }
202
+ // ============================================================================
203
+ // Summarize Hook
204
+ // ============================================================================
205
+ export function useSummarizeOpenCodeSession() {
206
+ const queryClient = useQueryClient();
207
+ const startCompaction = useOpenCodeCompactionStore((s) => s.startCompaction);
208
+ const stopCompaction = useOpenCodeCompactionStore((s) => s.stopCompaction);
209
+ return useMutation({
210
+ mutationFn: async (params) => {
211
+ const client = getClient();
212
+ let { providerID, modelID } = params;
213
+ // 1. Try config default model
214
+ if (!providerID || !modelID) {
215
+ try {
216
+ const configResult = await client.global.config.get();
217
+ const config = configResult.data;
218
+ if (config?.model) {
219
+ const parts = config.model.split('/');
220
+ if (parts.length >= 2) {
221
+ providerID = providerID || parts[0];
222
+ modelID = modelID || parts.slice(1).join('/');
223
+ }
224
+ }
225
+ }
226
+ catch {
227
+ // ignore
228
+ }
229
+ }
230
+ // 2. Try to get model from the session's latest assistant message
231
+ if (!providerID || !modelID) {
232
+ try {
233
+ const msgs = await client.session.messages({ sessionID: params.sessionId });
234
+ const allMsgs = (msgs.data ?? []);
235
+ for (let i = allMsgs.length - 1; i >= 0; i--) {
236
+ const m = allMsgs[i].info;
237
+ if (m.role === 'assistant' && m.providerID && m.modelID) {
238
+ providerID = providerID || m.providerID;
239
+ modelID = modelID || m.modelID;
240
+ break;
241
+ }
242
+ }
243
+ }
244
+ catch {
245
+ // ignore
246
+ }
247
+ }
248
+ // 3. Try first available provider/model from provider list
249
+ if (!providerID || !modelID) {
250
+ try {
251
+ // The provider list's typed shape is `{ all, default, connected }`,
252
+ // but this fallback has historically walked it as a plain
253
+ // `{ [providerID]: { models } }` map — keep that exact (best-effort,
254
+ // try/catch-guarded) duck-typed read via `unknown` rather than
255
+ // assert a shape that may not match what's actually on the wire.
256
+ const providerResult = await client.provider.list();
257
+ const providers = providerResult.data;
258
+ if (providers && typeof providers === 'object') {
259
+ for (const [pid, providerInfo] of Object.entries(providers)) {
260
+ const models = providerInfo && typeof providerInfo === 'object'
261
+ ? providerInfo.models
262
+ : undefined;
263
+ if (models && typeof models === 'object') {
264
+ const firstModelId = Object.keys(models)[0];
265
+ if (firstModelId) {
266
+ providerID = pid;
267
+ modelID = firstModelId;
268
+ break;
269
+ }
270
+ }
271
+ }
272
+ }
273
+ }
274
+ catch {
275
+ // ignore
276
+ }
277
+ }
278
+ if (!providerID || !modelID) {
279
+ throw new Error('No model available for compaction. Please configure a model in settings.');
280
+ }
281
+ const result = await client.session.summarize({
282
+ sessionID: params.sessionId,
283
+ providerID,
284
+ modelID,
285
+ });
286
+ unwrap(result);
287
+ return params.sessionId;
288
+ },
289
+ onMutate: ({ sessionId }) => {
290
+ startCompaction(sessionId);
291
+ },
292
+ onError: (_err, { sessionId }) => {
293
+ stopCompaction(sessionId);
294
+ },
295
+ onSuccess: (_sessionId) => {
296
+ // SSE session.compacted event handles rehydration of messages and
297
+ // session data. No need to invalidate here — the event handler in
298
+ // use-opencode-events.ts fetches messages + session for that ID.
299
+ },
300
+ });
301
+ }
302
+ // ============================================================================
303
+ // Fork Hook
304
+ // ============================================================================
305
+ /**
306
+ * Fork a session at a specific message point.
307
+ * Creates a new session that branches off from the given message.
308
+ * Returns the newly created Session.
309
+ */
310
+ export function useForkSession() {
311
+ const queryClient = useQueryClient();
312
+ return useMutation({
313
+ mutationFn: async ({ sessionId, messageId, directory, workspace, }) => {
314
+ const client = getClient();
315
+ const result = await client.session.fork({
316
+ sessionID: sessionId,
317
+ ...(messageId && { messageID: messageId }),
318
+ ...(directory && { directory }),
319
+ ...(workspace && { workspace }),
320
+ });
321
+ return unwrap(result);
322
+ },
323
+ onSuccess: (newSession) => {
324
+ // Insert forked session into cache — SSE session.created will also fire.
325
+ // Dedup to avoid duplicate keys in the session list.
326
+ queryClient.setQueryData(opencodeKeys.sessions(), (old) => {
327
+ if (!old)
328
+ return [newSession];
329
+ const idx = old.findIndex((s) => s.id === newSession.id);
330
+ if (idx >= 0) {
331
+ const next = [...old];
332
+ next[idx] = newSession;
333
+ return next.sort((a, b) => b.time.updated - a.time.updated);
334
+ }
335
+ return [newSession, ...old].sort((a, b) => b.time.updated - a.time.updated);
336
+ });
337
+ queryClient.setQueryData(opencodeKeys.session(newSession.id), newSession);
338
+ },
339
+ });
340
+ }
341
+ // ============================================================================
342
+ // Init Hook — analyze project and create AGENTS.md (via /init command)
343
+ // ============================================================================
344
+ export function useInitSession() {
345
+ const queryClient = useQueryClient();
346
+ return useMutation({
347
+ mutationFn: async ({ sessionId }) => {
348
+ const client = getClient();
349
+ const result = await client.session.command({
350
+ sessionID: sessionId,
351
+ command: 'init',
352
+ arguments: '',
353
+ });
354
+ if (result.error) {
355
+ // The error union here (`BadRequest | InvalidRequestError |
356
+ // NotFoundError`) doesn't share a `.message`/`.data.message` shape
357
+ // across all members — duck-type defensively rather than assume one.
358
+ const err = result.error;
359
+ const errRec = err && typeof err === 'object' ? err : undefined;
360
+ const dataRec = errRec?.data && typeof errRec.data === 'object'
361
+ ? errRec.data
362
+ : undefined;
363
+ const message = dataRec?.message ?? errRec?.message;
364
+ throw new Error(typeof message === 'string' ? message : 'Failed to initialize project');
365
+ }
366
+ return sessionId;
367
+ },
368
+ onSuccess: (sessionId) => {
369
+ // SSE events handle session updates. Just refetch messages for this session
370
+ // since /init creates new messages.
371
+ queryClient.refetchQueries({ queryKey: opencodeKeys.messages(sessionId) });
372
+ },
373
+ // Suppress global error handler — caller handles errors via onError callback
374
+ onError: () => { },
375
+ // Same rationale as useExecuteOpenCodeCommand — /command blocks until done,
376
+ // retrying on timeout would duplicate execution.
377
+ retry: false,
378
+ });
379
+ }
380
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/sessions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Active sandbox/server id, used to scope per-sandbox caches.
3
+ *
4
+ * Each project session is its OWN sandbox (session_id == sandbox_id), but the
5
+ * OpenCode SDK client + caches are global. Without scoping, switching from
6
+ * session A to B would show A's data under B — which is why the code used to
7
+ * NUKE the entire opencode cache on every switch. That nuke is exactly what
8
+ * made returning to an already-open session "reload".
9
+ *
10
+ * By appending the server id to per-sandbox cache keys, every sandbox's data
11
+ * coexists in the cache, so returning to a warm session is instant and we no
12
+ * longer need to tear anything down. Appended at the END so existing prefix
13
+ * matches (e.g. invalidate `['opencode','sessions']`) still hit.
14
+ *
15
+ * `session(id)` / `messages(id)` stay global: opencode session ids are unique
16
+ * per sandbox, so they never collide across sandboxes.
17
+ */
18
+ export declare function activeServerKey(): string;
19
+ export declare function unwrap<T>(result: {
20
+ data?: T;
21
+ error?: unknown;
22
+ response?: Response;
23
+ }): T;
24
+ export declare const LS_SESSIONS = "kortix_cache_sessions";
25
+ export declare const LS_AGENTS = "kortix_cache_agents";
26
+ export declare const LS_COMMANDS = "kortix_cache_commands";
27
+ export declare const LS_PROVIDERS = "kortix_cache_providers";
28
+ export declare function getLSCache<T>(family: string, scope?: string): T | undefined;
29
+ export declare function setLSCache(family: string, value: unknown, scope?: string): void;
30
+ export declare function canQueryOpenCodeSession(sessionId: string | null | undefined): sessionId is string;
31
+ export declare function clearProjectProviderCache(projectId: string): void;
32
+ /**
33
+ * Stable cache scope for data that does NOT vary per sandbox. The default
34
+ * scope is the ephemeral per-sandbox server id, which is correct for
35
+ * session-specific data (session lists collide across sandboxes) but wrong for
36
+ * platform/project-level data like the model list and the agent roster: those
37
+ * are identical across every sandbox, yet a per-server key guarantees a cache
38
+ * MISS on every brand-new session (new sandbox → new server id → never seen).
39
+ * Keying them here instead lets a fresh session paint its pickers from cache on
40
+ * the first frame, before the sandbox is even up — killing the visible pop-in.
41
+ */
42
+ export declare const CACHE_SCOPE_GLOBAL = "global";
43
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/react/use-opencode-sessions/shared.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAMxC;AAMD,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAE,GAAG,CAAC,CAqBvF;AAgBD,eAAO,MAAM,WAAW,0BAA0B,CAAC;AACnD,eAAO,MAAM,SAAS,wBAAwB,CAAC;AAC/C,eAAO,MAAM,WAAW,0BAA0B,CAAC;AACnD,eAAO,MAAM,YAAY,2BAA2B,CAAC;AAiBrD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAE3E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAE/E;AAKD,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,IAAI,MAAM,CAEjG;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGjE;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,WAAW,CAAC"}