@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,7 @@
1
+ import type { QueryClient } from '@tanstack/react-query';
2
+ type RefreshProjectProviderStateOptions = {
3
+ removeProjectScopedCache?: boolean;
4
+ };
5
+ export declare function refreshProjectProviderState(queryClient: QueryClient, projectId: string, opts?: RefreshProjectProviderStateOptions): void;
6
+ export {};
7
+ //# sourceMappingURL=provider-refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-refresh.d.ts","sourceRoot":"","sources":["../../src/react/provider-refresh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKzD,KAAK,kCAAkC,GAAG;IACxC,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,kCAAuC,GAC5C,IAAI,CAuBN"}
@@ -0,0 +1,28 @@
1
+ 'use client';
2
+ import { configKeys } from './use-opencode-config.js';
3
+ import { clearProjectProviderCache, opencodeKeys } from './use-opencode-sessions/index.js';
4
+ export function refreshProjectProviderState(queryClient, projectId, opts = {}) {
5
+ const projectProviderKey = ['project-providers', projectId];
6
+ clearProjectProviderCache(projectId);
7
+ if (opts.removeProjectScopedCache) {
8
+ queryClient.removeQueries({ queryKey: projectProviderKey });
9
+ }
10
+ queryClient.invalidateQueries({ queryKey: projectProviderKey });
11
+ queryClient.invalidateQueries({ queryKey: ['project-secrets', projectId] });
12
+ queryClient.invalidateQueries({ queryKey: opencodeKeys.providers() });
13
+ queryClient.invalidateQueries({ queryKey: configKeys.all });
14
+ // Saving provider credentials hot-pushes env vars into active sandboxes and
15
+ // restarts OpenCode. A single immediate refetch can race that restart and
16
+ // accept the old native provider list as final, so follow up a few times.
17
+ if (typeof window === 'undefined')
18
+ return;
19
+ for (const delay of [500, 1500, 3000, 6000]) {
20
+ window.setTimeout(() => {
21
+ void queryClient.invalidateQueries({ queryKey: projectProviderKey });
22
+ void queryClient.invalidateQueries({ queryKey: ['project-secrets', projectId] });
23
+ void queryClient.refetchQueries({ queryKey: ['project-secrets', projectId], type: 'all' });
24
+ void queryClient.refetchQueries({ queryKey: projectProviderKey, type: 'active' });
25
+ }, delay);
26
+ }
27
+ }
28
+ //# sourceMappingURL=provider-refresh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-refresh.js","sourceRoot":"","sources":["../../src/react/provider-refresh.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAIb,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAMlF,MAAM,UAAU,2BAA2B,CACzC,WAAwB,EACxB,SAAiB,EACjB,OAA2C,EAAE;IAE7C,MAAM,kBAAkB,GAAG,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;IAC5D,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,WAAW,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAChE,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAC5E,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACtE,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IAE5D,4EAA4E;IAC5E,0EAA0E;IAC1E,0EAA0E;IAC1E,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YACrB,KAAK,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACrE,KAAK,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YACjF,KAAK,WAAW,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3F,KAAK,WAAW,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpF,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { ProviderListResponse as SdkProviderListResponse } from '@opencode-ai/sdk/v2/client';
2
+ import type { ProjectLlmCatalogResponse } from '../platform/projects-client/index.js';
3
+ export type ProviderListResponse = SdkProviderListResponse;
4
+ /**
5
+ * Provider → credential env-var mapping, derived from the shared models.dev
6
+ * catalog. Mirrors the `{ id, envVars }` projection of the web's `LLM_PROVIDERS`
7
+ * (which is itself built from the same catalog), so connection inference is
8
+ * identical without depending on the web-only provider-modal catalog module.
9
+ */
10
+ export declare const LLM_PROVIDER_CREDENTIALS: Array<{
11
+ id: string;
12
+ envVars: string[];
13
+ }>;
14
+ export declare const GATEWAY_PROVIDER_IDS: Set<string>;
15
+ export declare function normalizeProviderList(providers: ProviderListResponse): ProviderListResponse;
16
+ /**
17
+ * True when a provider-list response actually carries usable models — i.e. at
18
+ * least one CONNECTED provider that exposes >=1 model. A response failing this
19
+ * is a transient boot state, not a real answer.
20
+ */
21
+ export declare function providerListHasModels(providers: ProviderListResponse | undefined): boolean;
22
+ export declare function providerListHasGateway(providers: ProviderListResponse | undefined): boolean;
23
+ export declare function filterToGatewayProviders(providers: ProviderListResponse): ProviderListResponse;
24
+ export declare function filterToNativeProviders(providers: ProviderListResponse): ProviderListResponse;
25
+ export declare function mergeProjectSecretConnectedProviders(providers: ProviderListResponse, secretNames: Set<string>, providerCredentials: Array<{
26
+ id: string;
27
+ envVars: string[];
28
+ }>): ProviderListResponse;
29
+ export declare function connectedGatewayProviderIdsFromSecretNames(secretNames: Set<string>): Set<string>;
30
+ export declare function projectLlmCatalogToProviderList(catalog: ProjectLlmCatalogResponse): ProviderListResponse;
31
+ //# sourceMappingURL=provider-selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-selection.d.ts","sourceRoot":"","sources":["../../src/react/provider-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,IAAI,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAGlG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAE7E,MAAM,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAE3D;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAIzE,CAAC;AAIN,eAAO,MAAM,oBAAoB,aAAsB,CAAC;AAGxD,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,oBAAoB,GAC9B,oBAAoB,CAiCtB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAY1F;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAM3F;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,oBAAoB,GAAG,oBAAoB,CAS9F;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,oBAAoB,GAAG,oBAAoB,CAS7F;AAED,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,oBAAoB,EAC/B,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EACxB,mBAAmB,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAC5D,oBAAoB,CAwBtB;AAED,wBAAgB,0CAA0C,CACxD,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,GAAG,CAAC,MAAM,CAAC,CAcb;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,yBAAyB,GACjC,oBAAoB,CAYtB"}
@@ -0,0 +1,135 @@
1
+ import { CATALOG } from '@kortix/llm-catalog';
2
+ /**
3
+ * Provider → credential env-var mapping, derived from the shared models.dev
4
+ * catalog. Mirrors the `{ id, envVars }` projection of the web's `LLM_PROVIDERS`
5
+ * (which is itself built from the same catalog), so connection inference is
6
+ * identical without depending on the web-only provider-modal catalog module.
7
+ */
8
+ export const LLM_PROVIDER_CREDENTIALS = CATALOG.providers.map((provider) => ({
9
+ id: provider.id,
10
+ envVars: provider.env ?? [],
11
+ }));
12
+ // In gateway mode OpenCode must see Kortix as the single LLM provider. Native
13
+ // providers, including OpenCode Zen, belong only to native mode.
14
+ export const GATEWAY_PROVIDER_IDS = new Set(['kortix']);
15
+ const NATIVE_EXCLUDED_PROVIDER_IDS = new Set(['kortix']);
16
+ export function normalizeProviderList(providers) {
17
+ const modernAll = Array.isArray(providers.all) ? providers.all : [];
18
+ const modernConnected = Array.isArray(providers.connected) ? providers.connected : [];
19
+ if (modernAll.length > 0 || modernConnected.length > 0) {
20
+ return {
21
+ ...providers,
22
+ all: modernAll,
23
+ connected: modernConnected,
24
+ };
25
+ }
26
+ // Legacy responses carried providers under `.providers` instead of `.all` —
27
+ // not part of the modern `ProviderListResponse` type, so duck-type via
28
+ // `unknown` rather than assume that (long-gone) legacy shape is still real.
29
+ const maybeLegacy = providers.providers;
30
+ const legacyProviders = Array.isArray(maybeLegacy)
31
+ ? maybeLegacy
32
+ : [];
33
+ if (legacyProviders.length === 0) {
34
+ return {
35
+ ...providers,
36
+ all: [],
37
+ connected: [],
38
+ };
39
+ }
40
+ return {
41
+ ...providers,
42
+ all: legacyProviders,
43
+ connected: legacyProviders.map((provider) => provider.id),
44
+ };
45
+ }
46
+ /**
47
+ * True when a provider-list response actually carries usable models — i.e. at
48
+ * least one CONNECTED provider that exposes >=1 model. A response failing this
49
+ * is a transient boot state, not a real answer.
50
+ */
51
+ export function providerListHasModels(providers) {
52
+ if (!providers)
53
+ return false;
54
+ const normalized = normalizeProviderList(providers);
55
+ const all = Array.isArray(normalized.all) ? normalized.all : [];
56
+ const connected = Array.isArray(normalized.connected) ? normalized.connected : [];
57
+ if (connected.length === 0)
58
+ return false;
59
+ return all.some((p) => connected.includes(p.id) &&
60
+ p.models &&
61
+ Object.keys(p.models).length > 0);
62
+ }
63
+ export function providerListHasGateway(providers) {
64
+ if (!providers)
65
+ return false;
66
+ const normalized = normalizeProviderList(providers);
67
+ const all = Array.isArray(normalized.all) ? normalized.all : [];
68
+ const connected = Array.isArray(normalized.connected) ? normalized.connected : [];
69
+ return connected.includes('kortix') || all.some((p) => p.id === 'kortix');
70
+ }
71
+ export function filterToGatewayProviders(providers) {
72
+ const normalized = normalizeProviderList(providers);
73
+ const all = Array.isArray(normalized.all) ? normalized.all : [];
74
+ const connected = Array.isArray(normalized.connected) ? normalized.connected : [];
75
+ return {
76
+ ...normalized,
77
+ all: all.filter((p) => GATEWAY_PROVIDER_IDS.has(p.id)),
78
+ connected: connected.filter((id) => GATEWAY_PROVIDER_IDS.has(id)),
79
+ };
80
+ }
81
+ export function filterToNativeProviders(providers) {
82
+ const normalized = normalizeProviderList(providers);
83
+ const all = Array.isArray(normalized.all) ? normalized.all : [];
84
+ const connected = Array.isArray(normalized.connected) ? normalized.connected : [];
85
+ return {
86
+ ...normalized,
87
+ all: all.filter((p) => !NATIVE_EXCLUDED_PROVIDER_IDS.has(p.id)),
88
+ connected: connected.filter((id) => !NATIVE_EXCLUDED_PROVIDER_IDS.has(id)),
89
+ };
90
+ }
91
+ export function mergeProjectSecretConnectedProviders(providers, secretNames, providerCredentials) {
92
+ const normalized = normalizeProviderList(providers);
93
+ const all = Array.isArray(normalized.all) ? normalized.all : [];
94
+ const allIds = new Set(all.map((provider) => provider.id));
95
+ const connected = new Set(Array.isArray(normalized.connected) ? normalized.connected : []);
96
+ for (const provider of providerCredentials) {
97
+ if (allIds.has(provider.id) &&
98
+ provider.envVars.length > 0 &&
99
+ provider.envVars.every((envVar) => secretNames.has(envVar))) {
100
+ connected.add(provider.id);
101
+ }
102
+ }
103
+ if (allIds.has('codex') &&
104
+ (secretNames.has('CODEX_AUTH_JSON') || secretNames.has('OPENCODE_AUTH_JSON'))) {
105
+ connected.add('codex');
106
+ }
107
+ return { ...normalized, connected: [...connected] };
108
+ }
109
+ export function connectedGatewayProviderIdsFromSecretNames(secretNames) {
110
+ const ids = new Set();
111
+ for (const provider of LLM_PROVIDER_CREDENTIALS) {
112
+ if (provider.envVars.length > 0 &&
113
+ provider.envVars.every((envVar) => secretNames.has(envVar))) {
114
+ ids.add(provider.id);
115
+ }
116
+ }
117
+ if (secretNames.has('CODEX_AUTH_JSON') || secretNames.has('OPENCODE_AUTH_JSON')) {
118
+ ids.add('codex');
119
+ }
120
+ return ids;
121
+ }
122
+ export function projectLlmCatalogToProviderList(catalog) {
123
+ const models = catalog.models ?? {};
124
+ return {
125
+ default: { kortix: models.auto ? 'auto' : (Object.keys(models)[0] ?? 'auto') },
126
+ connected: ['kortix'],
127
+ all: [{
128
+ id: 'kortix',
129
+ name: 'Kortix',
130
+ source: 'gateway',
131
+ models,
132
+ }],
133
+ };
134
+ }
135
+ //# sourceMappingURL=provider-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-selection.js","sourceRoot":"","sources":["../../src/react/provider-selection.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAM9C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GACnC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACnC,EAAE,EAAE,QAAQ,CAAC,EAAE;IACf,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,EAAE;CAC5B,CAAC,CAAC,CAAC;AAEN,8EAA8E;AAC9E,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxD,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEzD,MAAM,UAAU,qBAAqB,CACnC,SAA+B;IAE/B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvD,OAAO;YACL,GAAG,SAAS;YACZ,GAAG,EAAE,SAAS;YACd,SAAS,EAAE,eAAe;SAC3B,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,uEAAuE;IACvE,4EAA4E;IAC5E,MAAM,WAAW,GAAI,SAAgD,CAAC,SAAS,CAAC;IAChF,MAAM,eAAe,GAA4D,KAAK,CAAC,OAAO,CAC5F,WAAW,CACZ;QACC,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,GAAG,SAAS;YACZ,GAAG,EAAE,EAAE;YACP,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,SAAS;QACZ,GAAG,EAAE,eAAe;QACpB,SAAS,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;KAClC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAA2C;IAC/E,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,GAAG,CAAC,IAAI,CACb,CAAC,CAAC,EAAE,EAAE,CACJ,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,CAAC,CAAC,MAAM;QACR,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,SAA2C;IAChF,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAA+B;IACtE,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,OAAO;QACL,GAAG,UAAU;QACb,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtD,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,SAA+B;IACrE,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,OAAO;QACL,GAAG,UAAU;QACb,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,4BAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/D,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,4BAA4B,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAC3E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,SAA+B,EAC/B,WAAwB,EACxB,mBAA6D;IAE7D,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE3F,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;QAC3C,IACE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAC3B,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAC3D,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,IACE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QACnB,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAC7E,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,EAAE,GAAG,UAAU,EAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,0CAA0C,CACxD,WAAwB;IAExB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,QAAQ,IAAI,wBAAwB,EAAE,CAAC;QAChD,IACE,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAC3B,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAC3D,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAChF,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,OAAkC;IAElC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;IACpC,OAAO;QACL,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE;QAC9E,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,GAAG,EAAE,CAAC;gBACJ,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,SAAS;gBACjB,MAAM;aACP,CAAC;KACgC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type ReactNode } from 'react';
2
+ export declare function KortixProjectProvider(props: {
3
+ projectId: string | null;
4
+ children?: ReactNode;
5
+ }): ReactNode;
6
+ export declare function useKortixRouteProjectId(): string | null;
7
+ //# sourceMappingURL=route-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-project.d.ts","sourceRoot":"","sources":["../../src/react/route-project.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;AAajF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,GAAG,SAAS,CAEZ;AAED,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAEvD"}
@@ -0,0 +1,19 @@
1
+ 'use client';
2
+ import { createContext, createElement, useContext } from 'react';
3
+ /**
4
+ * The route-scoped project id, injected by the host instead of read from a
5
+ * router. The SDK is router-agnostic: a Next host derives the id from
6
+ * `useParams()` and mounts `KortixProjectProvider` once near its root; native
7
+ * or CLI-driven hosts pass whatever their navigation state says. Hooks that
8
+ * need "the project the user is looking at" (`useOpenCodeProviders`,
9
+ * `useOpenCodeLocal`) read it via `useKortixRouteProjectId`, which yields
10
+ * `null` outside a project scope — the same as a non-project route.
11
+ */
12
+ const KortixProjectContext = createContext(null);
13
+ export function KortixProjectProvider(props) {
14
+ return createElement(KortixProjectContext.Provider, { value: props.projectId }, props.children);
15
+ }
16
+ export function useKortixRouteProjectId() {
17
+ return useContext(KortixProjectContext);
18
+ }
19
+ //# sourceMappingURL=route-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-project.js","sourceRoot":"","sources":["../../src/react/route-project.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAkB,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEjF;;;;;;;;GAQG;AACH,MAAM,oBAAoB,GAAG,aAAa,CAAgB,IAAI,CAAC,CAAC;AAEhE,MAAM,UAAU,qBAAqB,CAAC,KAGrC;IACC,OAAO,aAAa,CAAC,oBAAoB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Hand-off between a host's "new session" screen and the session workbench. The
3
+ * new-session UI collects {prompt, model, agent, variant} but the session
4
+ * runtime doesn't exist yet, so we stash them under the new session id;
5
+ * `useSession` replays them as the first message once the runtime is ready —
6
+ * that's how the chosen model/agent/variant apply to the opening turn. Owned by
7
+ * the SDK so the producer (new-session screen) and consumer (`useSession`)
8
+ * share one contract.
9
+ */
10
+ import type { PromptPart } from './use-opencode-sessions/keys.js';
11
+ export interface StartStash {
12
+ prompt: string;
13
+ model: {
14
+ providerID: string;
15
+ modelID: string;
16
+ } | null;
17
+ agent: string | null;
18
+ variant?: string | null;
19
+ }
20
+ export declare function startStashKey(sessionId: string): string;
21
+ export declare function writeStartStash(sessionId: string, stash: StartStash): void;
22
+ export declare function readStartStash(sessionId: string): StartStash | null;
23
+ export declare function clearStartStash(sessionId: string): void;
24
+ /**
25
+ * Migrate a stash — canonical or legacy shape — from one session-id namespace
26
+ * to another. Producers sometimes stash under an id that isn't the eventual
27
+ * OpenCode session id (e.g. a project's route id, before the canonical
28
+ * session exists); once a later render resolves the real id, this hands the
29
+ * stash off. Reads the source via {@link readStartStash} (so it understands
30
+ * both the canonical JSON shape and the bare-prompt legacy shape at
31
+ * `fromSessionId`), writes the canonical shape at `toSessionId` — skipping the
32
+ * write if `toSessionId` already has a stash — and always clears the source
33
+ * (both its canonical and legacy keys), whether or not there was anything to
34
+ * migrate.
35
+ */
36
+ export declare function migrateStash(fromSessionId: string, toSessionId: string): void;
37
+ /**
38
+ * Migrate a differently-keyed legacy hand-off (bare prompt string + optional
39
+ * `{agent,model,variant}` JSON options, each under their own arbitrary key)
40
+ * onto the canonical stash for `toSessionId`. Used by producers that predate
41
+ * this module and stash under arbitrary raw keys rather than a session-id
42
+ * namespace `readStartStash` can resolve on its own — prefer {@link
43
+ * migrateStash} for any producer that already writes under a session id via
44
+ * `writeStartStash`. The source keys are always cleared, whether or not there
45
+ * was anything to migrate.
46
+ */
47
+ export declare function migrateLegacyStash(fromPromptKey: string, fromOptionsKey: string, toSessionId: string): void;
48
+ export declare function forkDraftKey(sessionId: string): string;
49
+ /** Stash a fork's prompt parts for the forked session to pick up as a draft.
50
+ * No-ops when there's nothing to stash. */
51
+ export declare function writeForkDraft(sessionId: string, prompt: PromptPart[]): void;
52
+ /** Read back a stashed fork draft, if any. Does not clear it — call
53
+ * `clearForkDraft` once consumed. */
54
+ export declare function readForkDraft(sessionId: string): PromptPart[] | null;
55
+ export declare function clearForkDraft(sessionId: string): void;
56
+ //# sourceMappingURL=session-start-stash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-start-stash.d.ts","sourceRoot":"","sources":["../../src/react/session-start-stash.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAI1E;AAkED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAQnE;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAKvD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAU7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,IAAI,CAwBN;AAaD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;2CAC2C;AAC3C,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAK5E;AAED;qCACqC;AACrC,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,IAAI,CAQpE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAItD"}
@@ -0,0 +1,202 @@
1
+ export function startStashKey(sessionId) {
2
+ return `kortix:start:${sessionId}`;
3
+ }
4
+ export function writeStartStash(sessionId, stash) {
5
+ try {
6
+ sessionStorage.setItem(startStashKey(sessionId), JSON.stringify(stash));
7
+ }
8
+ catch { }
9
+ }
10
+ // ─────────────────────────────────────────────────────────────────────────────
11
+ // Legacy hand-off shape (pre-dates this module). apps/web had several
12
+ // independent "new session" producers (dashboard, project workspace, legacy
13
+ // composer) that stash a bare prompt string under `opencode_pending_prompt:<id>`
14
+ // plus an optional `{ agent, model, variant }` JSON blob under
15
+ // `opencode_pending_options:<id>` — instead of one JSON stash. Those call sites
16
+ // are unchanged (out of scope for this migration); `readStartStash` /
17
+ // `clearStartStash` understand both shapes so every existing producer keeps
18
+ // working through the one shared contract.
19
+ // ─────────────────────────────────────────────────────────────────────────────
20
+ function legacyPromptKey(sessionId) {
21
+ return `opencode_pending_prompt:${sessionId}`;
22
+ }
23
+ function legacyOptionsKey(sessionId) {
24
+ return `opencode_pending_options:${sessionId}`;
25
+ }
26
+ function parseLegacyModel(value) {
27
+ if (!value)
28
+ return null;
29
+ if (typeof value === 'object') {
30
+ const obj = value;
31
+ if (typeof obj.providerID === 'string' && typeof obj.modelID === 'string') {
32
+ return { providerID: obj.providerID, modelID: obj.modelID };
33
+ }
34
+ return null;
35
+ }
36
+ if (typeof value === 'string') {
37
+ const idx = value.indexOf('/');
38
+ if (idx > 0 && idx < value.length - 1) {
39
+ return { providerID: value.slice(0, idx), modelID: value.slice(idx + 1) };
40
+ }
41
+ }
42
+ return null;
43
+ }
44
+ function readLegacyStash(sessionId) {
45
+ try {
46
+ const prompt = sessionStorage.getItem(legacyPromptKey(sessionId));
47
+ if (!prompt)
48
+ return null;
49
+ let agent = null;
50
+ let model = null;
51
+ let variant = null;
52
+ const raw = sessionStorage.getItem(legacyOptionsKey(sessionId));
53
+ if (raw) {
54
+ const parsed = JSON.parse(raw);
55
+ if (parsed?.agent)
56
+ agent = parsed.agent;
57
+ if (parsed?.model)
58
+ model = parseLegacyModel(parsed.model);
59
+ if (parsed?.variant)
60
+ variant = parsed.variant;
61
+ }
62
+ return { prompt, model, agent, variant };
63
+ }
64
+ catch {
65
+ return null;
66
+ }
67
+ }
68
+ function clearLegacyStash(sessionId) {
69
+ try {
70
+ sessionStorage.removeItem(legacyPromptKey(sessionId));
71
+ sessionStorage.removeItem(legacyOptionsKey(sessionId));
72
+ }
73
+ catch { }
74
+ }
75
+ export function readStartStash(sessionId) {
76
+ try {
77
+ const raw = sessionStorage.getItem(startStashKey(sessionId));
78
+ if (raw)
79
+ return JSON.parse(raw);
80
+ }
81
+ catch {
82
+ // fall through to the legacy shape
83
+ }
84
+ return readLegacyStash(sessionId);
85
+ }
86
+ export function clearStartStash(sessionId) {
87
+ try {
88
+ sessionStorage.removeItem(startStashKey(sessionId));
89
+ }
90
+ catch { }
91
+ clearLegacyStash(sessionId);
92
+ }
93
+ /**
94
+ * Migrate a stash — canonical or legacy shape — from one session-id namespace
95
+ * to another. Producers sometimes stash under an id that isn't the eventual
96
+ * OpenCode session id (e.g. a project's route id, before the canonical
97
+ * session exists); once a later render resolves the real id, this hands the
98
+ * stash off. Reads the source via {@link readStartStash} (so it understands
99
+ * both the canonical JSON shape and the bare-prompt legacy shape at
100
+ * `fromSessionId`), writes the canonical shape at `toSessionId` — skipping the
101
+ * write if `toSessionId` already has a stash — and always clears the source
102
+ * (both its canonical and legacy keys), whether or not there was anything to
103
+ * migrate.
104
+ */
105
+ export function migrateStash(fromSessionId, toSessionId) {
106
+ if (fromSessionId === toSessionId)
107
+ return;
108
+ try {
109
+ if (!readStartStash(toSessionId)) {
110
+ const stash = readStartStash(fromSessionId);
111
+ if (stash)
112
+ writeStartStash(toSessionId, stash);
113
+ }
114
+ }
115
+ finally {
116
+ clearStartStash(fromSessionId);
117
+ }
118
+ }
119
+ /**
120
+ * Migrate a differently-keyed legacy hand-off (bare prompt string + optional
121
+ * `{agent,model,variant}` JSON options, each under their own arbitrary key)
122
+ * onto the canonical stash for `toSessionId`. Used by producers that predate
123
+ * this module and stash under arbitrary raw keys rather than a session-id
124
+ * namespace `readStartStash` can resolve on its own — prefer {@link
125
+ * migrateStash} for any producer that already writes under a session id via
126
+ * `writeStartStash`. The source keys are always cleared, whether or not there
127
+ * was anything to migrate.
128
+ */
129
+ export function migrateLegacyStash(fromPromptKey, fromOptionsKey, toSessionId) {
130
+ try {
131
+ const prompt = sessionStorage.getItem(fromPromptKey);
132
+ if (prompt && !readStartStash(toSessionId)) {
133
+ let agent = null;
134
+ let model = null;
135
+ let variant = null;
136
+ const raw = sessionStorage.getItem(fromOptionsKey);
137
+ if (raw) {
138
+ const parsed = JSON.parse(raw);
139
+ if (parsed?.agent)
140
+ agent = parsed.agent;
141
+ if (parsed?.model)
142
+ model = parseLegacyModel(parsed.model);
143
+ if (parsed?.variant)
144
+ variant = parsed.variant;
145
+ }
146
+ writeStartStash(toSessionId, { prompt, model, agent, variant });
147
+ }
148
+ }
149
+ catch {
150
+ // ignore — worst case the hand-off is dropped, never a crash
151
+ }
152
+ finally {
153
+ try {
154
+ sessionStorage.removeItem(fromPromptKey);
155
+ sessionStorage.removeItem(fromOptionsKey);
156
+ }
157
+ catch { }
158
+ }
159
+ }
160
+ // ─────────────────────────────────────────────────────────────────────────────
161
+ // Fork-draft stash. A sibling hand-off to the start-stash above, but for the
162
+ // "fork this message" flow: apps/web's session-chat stashes the forked
163
+ // message's parts (text + file refs) under the NEW forked session's id so its
164
+ // composer can pick them up as a pre-filled draft once it mounts. Previously
165
+ // apps/web/session-chat.tsx and session-chat-input.tsx each independently
166
+ // redefined the same `opencode_fork_prompt:<id>` key — unified here so both
167
+ // (and any future host) share one contract. The storage key is unchanged for
168
+ // back-compat with anything already stashed under it.
169
+ // ─────────────────────────────────────────────────────────────────────────────
170
+ export function forkDraftKey(sessionId) {
171
+ return `opencode_fork_prompt:${sessionId}`;
172
+ }
173
+ /** Stash a fork's prompt parts for the forked session to pick up as a draft.
174
+ * No-ops when there's nothing to stash. */
175
+ export function writeForkDraft(sessionId, prompt) {
176
+ if (prompt.length === 0)
177
+ return;
178
+ try {
179
+ sessionStorage.setItem(forkDraftKey(sessionId), JSON.stringify(prompt));
180
+ }
181
+ catch { }
182
+ }
183
+ /** Read back a stashed fork draft, if any. Does not clear it — call
184
+ * `clearForkDraft` once consumed. */
185
+ export function readForkDraft(sessionId) {
186
+ try {
187
+ const raw = sessionStorage.getItem(forkDraftKey(sessionId));
188
+ if (!raw)
189
+ return null;
190
+ return JSON.parse(raw);
191
+ }
192
+ catch {
193
+ return null;
194
+ }
195
+ }
196
+ export function clearForkDraft(sessionId) {
197
+ try {
198
+ sessionStorage.removeItem(forkDraftKey(sessionId));
199
+ }
200
+ catch { }
201
+ }
202
+ //# sourceMappingURL=session-start-stash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-start-stash.js","sourceRoot":"","sources":["../../src/react/session-start-stash.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { type Session } from './use-opencode-sessions/index.js';
2
+ /**
3
+ * OpenCode ↔ Kortix session mapping — READ side.
4
+ *
5
+ * The mapping is now fully SERVER-OWNED: `POST /sessions/:id/start` (see
6
+ * openSession in apps/api) resolves + persists the canonical OpenCode root and
7
+ * returns the pin in its payload. This hook no longer creates/heals the pin from
8
+ * the client (the old client-side `ensure-opencode` mutation caused the
9
+ * "session replaced / data lost" drift). It just surfaces the pin:
10
+ * 1. the value /start handed us this render (`pinFromStart`), else
11
+ * 2. the persisted pin on the Kortix session row (`getProjectSession`).
12
+ *
13
+ * The OpenCode session list is still read (read-only) for ?oc deep-links and
14
+ * sidebar sub-session rendering.
15
+ */
16
+ /** Back-compat no-op: the pin is server-owned now, so there's no client guard to
17
+ * clear. Kept exported because the session page still calls it on teardown. */
18
+ export declare function clearOpencodeEnsureGuard(): void;
19
+ export interface CanonicalOpenCodeSession {
20
+ /** The authoritative pinned root id (server-managed), or null while resolving. */
21
+ rootSessionId: string | null;
22
+ /** The sandbox's live OpenCode session list (read-only) for ?oc + UI. */
23
+ sessions: Session[];
24
+ isLoading: boolean;
25
+ isError: boolean;
26
+ listed: boolean;
27
+ error: unknown;
28
+ }
29
+ export declare function useCanonicalOpenCodeSession(params: {
30
+ projectId: string;
31
+ sessionId: string;
32
+ /** The pin POST /start resolved server-side this render (preferred source). */
33
+ pinFromStart?: string | null;
34
+ }): CanonicalOpenCodeSession;
35
+ //# sourceMappingURL=use-canonical-opencode-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-canonical-opencode-session.d.ts","sourceRoot":"","sources":["../../src/react/use-canonical-opencode-session.ts"],"names":[],"mappings":"AAMA,OAAO,EAAuB,KAAK,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAE5E;;;;;;;;;;;;;GAaG;AAEH;gFACgF;AAChF,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,MAAM,WAAW,wBAAwB;IACvC,kFAAkF;IAClF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,GAAG,wBAAwB,CA6B3B"}
@@ -0,0 +1,52 @@
1
+ 'use client';
2
+ import { useQuery } from '@tanstack/react-query';
3
+ import { getProjectSession } from '../platform/projects-client/index.js';
4
+ import { useOpenCodeSessions } from './use-opencode-sessions/index.js';
5
+ /**
6
+ * OpenCode ↔ Kortix session mapping — READ side.
7
+ *
8
+ * The mapping is now fully SERVER-OWNED: `POST /sessions/:id/start` (see
9
+ * openSession in apps/api) resolves + persists the canonical OpenCode root and
10
+ * returns the pin in its payload. This hook no longer creates/heals the pin from
11
+ * the client (the old client-side `ensure-opencode` mutation caused the
12
+ * "session replaced / data lost" drift). It just surfaces the pin:
13
+ * 1. the value /start handed us this render (`pinFromStart`), else
14
+ * 2. the persisted pin on the Kortix session row (`getProjectSession`).
15
+ *
16
+ * The OpenCode session list is still read (read-only) for ?oc deep-links and
17
+ * sidebar sub-session rendering.
18
+ */
19
+ /** Back-compat no-op: the pin is server-owned now, so there's no client guard to
20
+ * clear. Kept exported because the session page still calls it on teardown. */
21
+ export function clearOpencodeEnsureGuard() {
22
+ /* no-op */
23
+ }
24
+ export function useCanonicalOpenCodeSession(params) {
25
+ const { projectId, sessionId, pinFromStart } = params;
26
+ const sessionsQuery = useOpenCodeSessions();
27
+ // The Kortix session row carries the authoritative, server-managed pin — used
28
+ // as a fallback when /start's value isn't in this render's props yet.
29
+ // The /start pin is authoritative on open, so only fall back to the persisted
30
+ // row pin when /start didn't hand us one THIS render — i.e. a deep-link refresh
31
+ // (no /start in flight yet) or the idle-stopped 'starting' window where the box
32
+ // reads active but the pin isn't resolved (pinFromStart null → query still runs).
33
+ // On a warm start pinFromStart is always present, so this saves a redundant
34
+ // round-trip that otherwise contends for connections during boot.
35
+ const projectSessionQuery = useQuery({
36
+ queryKey: ['project-session', projectId, sessionId],
37
+ queryFn: () => getProjectSession(projectId, sessionId, { showErrors: false }),
38
+ enabled: !!projectId && !!sessionId && !pinFromStart,
39
+ staleTime: 10_000,
40
+ });
41
+ const pin = projectSessionQuery.data?.opencode_session_id ?? null;
42
+ const rootSessionId = pinFromStart ?? pin ?? null;
43
+ return {
44
+ rootSessionId,
45
+ sessions: sessionsQuery.data ?? [],
46
+ isLoading: sessionsQuery.isLoading,
47
+ isError: sessionsQuery.isError,
48
+ listed: sessionsQuery.isSuccess,
49
+ error: sessionsQuery.error ?? null,
50
+ };
51
+ }
52
+ //# sourceMappingURL=use-canonical-opencode-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-canonical-opencode-session.js","sourceRoot":"","sources":["../../src/react/use-canonical-opencode-session.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAgB,MAAM,yBAAyB,CAAC;AAE5E;;;;;;;;;;;;;GAaG;AAEH;gFACgF;AAChF,MAAM,UAAU,wBAAwB;IACtC,WAAW;AACb,CAAC;AAaD,MAAM,UAAU,2BAA2B,CAAC,MAK3C;IACC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IACtD,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;IAE5C,8EAA8E;IAC9E,sEAAsE;IACtE,8EAA8E;IAC9E,gFAAgF;IAChF,gFAAgF;IAChF,kFAAkF;IAClF,4EAA4E;IAC5E,kEAAkE;IAClE,MAAM,mBAAmB,GAAG,QAAQ,CAAC;QACnC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,SAAS,EAAE,SAAS,CAAC;QACnD,OAAO,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAC7E,OAAO,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,YAAY;QACpD,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,IAAI,IAAI,CAAC;IAClE,MAAM,aAAa,GAAG,YAAY,IAAI,GAAG,IAAI,IAAI,CAAC;IAElD,OAAO;QACL,aAAa;QACb,QAAQ,EAAE,aAAa,CAAC,IAAI,IAAI,EAAE;QAClC,SAAS,EAAE,aAAa,CAAC,SAAS;QAClC,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,MAAM,EAAE,aAAa,CAAC,SAAS;QAC/B,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,IAAI;KACnC,CAAC;AACJ,CAAC"}