@baochunli/flakes 0.0.4 → 0.0.6

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 (275) hide show
  1. package/dist/commands/host.d.ts.map +1 -1
  2. package/dist/commands/host.js +76 -2
  3. package/dist/commands/host.js.map +1 -1
  4. package/dist/commands/projects.d.ts +4 -0
  5. package/dist/commands/projects.d.ts.map +1 -0
  6. package/dist/commands/projects.js +133 -0
  7. package/dist/commands/projects.js.map +1 -0
  8. package/dist/commands/runs.d.ts.map +1 -1
  9. package/dist/commands/runs.js +5 -1
  10. package/dist/commands/runs.js.map +1 -1
  11. package/dist/commands/runtime.d.ts +0 -1
  12. package/dist/commands/runtime.d.ts.map +1 -1
  13. package/dist/commands/runtime.js +2 -280
  14. package/dist/commands/runtime.js.map +1 -1
  15. package/dist/commands/server.d.ts.map +1 -1
  16. package/dist/commands/server.js +0 -6
  17. package/dist/commands/server.js.map +1 -1
  18. package/dist/config-example.js +1 -1
  19. package/dist/config-example.js.map +1 -1
  20. package/dist/host-config.d.ts +1 -6
  21. package/dist/host-config.d.ts.map +1 -1
  22. package/dist/host-config.js +10 -28
  23. package/dist/host-config.js.map +1 -1
  24. package/dist/host-runner.d.ts +3 -0
  25. package/dist/host-runner.d.ts.map +1 -1
  26. package/dist/host-runner.js +18 -6
  27. package/dist/host-runner.js.map +1 -1
  28. package/dist/host-runtime.d.ts.map +1 -1
  29. package/dist/host-runtime.js +92 -2
  30. package/dist/host-runtime.js.map +1 -1
  31. package/dist/host-transport.js +2 -5
  32. package/dist/host-transport.js.map +1 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +19 -28
  35. package/dist/index.js.map +1 -1
  36. package/dist/node_modules/@flakes/auth/package.json +1 -1
  37. package/dist/node_modules/@flakes/console/.output/nitro.json +1 -1
  38. package/dist/node_modules/@flakes/console/.output/public/assets/DocumentationPage-CGIcMKwf.js +1 -0
  39. package/dist/node_modules/@flakes/console/.output/public/assets/ProjectsPage-ByTl4Kyy.js +1 -0
  40. package/dist/node_modules/@flakes/console/.output/public/assets/RunPage-5MmbVpaE.js +3 -0
  41. package/dist/node_modules/@flakes/console/.output/public/assets/RunsPage-fbDKP9kM.js +1 -0
  42. package/dist/node_modules/@flakes/console/.output/public/assets/SandboxesLens-DPG87mUE.js +1 -0
  43. package/dist/node_modules/@flakes/console/.output/public/assets/SandboxesPage-DIpzR_Ef.js +1 -0
  44. package/dist/node_modules/@flakes/console/.output/public/assets/TranscriptPage-mCgSqfv0.js +1 -0
  45. package/dist/node_modules/@flakes/console/.output/public/assets/_-CM2hE2sZ.js +1 -0
  46. package/dist/node_modules/@flakes/console/.output/public/assets/_runId-3ZZOAqUK.js +2 -0
  47. package/dist/node_modules/@flakes/console/.output/public/assets/_taskId-cy4RxW8Y.js +2 -0
  48. package/dist/node_modules/@flakes/console/.output/public/assets/account-BWoGGXJw.js +1 -0
  49. package/dist/node_modules/@flakes/console/.output/public/assets/account-forms-Dq70JDyg.js +1 -0
  50. package/dist/node_modules/@flakes/console/.output/public/assets/arrow-right-QzVbRzF_.js +1 -0
  51. package/dist/node_modules/@flakes/console/.output/public/assets/auth-layout-BFusNq3W.js +1 -0
  52. package/dist/node_modules/@flakes/console/.output/public/assets/bits-CTGNpp-v.js +1 -0
  53. package/dist/node_modules/@flakes/console/.output/public/assets/card-37qs8AAd.js +1 -0
  54. package/dist/node_modules/@flakes/console/.output/public/assets/circle-alert-CM0SVfzc.js +1 -0
  55. package/dist/node_modules/@flakes/console/.output/public/assets/circle-check-CzwcEElH.js +1 -0
  56. package/dist/node_modules/@flakes/console/.output/public/assets/circle-x-C_sOQVNQ.js +1 -0
  57. package/dist/node_modules/@flakes/console/.output/public/assets/device-BajR3eSF.js +1 -0
  58. package/dist/node_modules/@flakes/console/.output/public/assets/documentation-6ao_Ux6x.js +1 -0
  59. package/dist/node_modules/@flakes/console/.output/public/assets/{external-link-BW8lpiMR.js → external-link-BWhbbPgy.js} +1 -1
  60. package/dist/node_modules/@flakes/console/.output/public/assets/{file-text-DMdy8OfN.js → file-text-DLxLJ7P1.js} +1 -1
  61. package/dist/node_modules/@flakes/console/.output/public/assets/forgot-password-DOKn8_7P.js +1 -0
  62. package/dist/node_modules/@flakes/console/.output/public/assets/inbox-BVu38EN6.js +1 -0
  63. package/dist/node_modules/@flakes/console/.output/public/assets/{lib-DtfURcG3.js → lib-COfgMmRR.js} +3 -3
  64. package/dist/node_modules/@flakes/console/.output/public/assets/link-ll3nLBSM.js +1 -0
  65. package/dist/node_modules/@flakes/console/.output/public/assets/{lock-D4OhqEPW.js → lock-Ck2SfQA2.js} +1 -1
  66. package/dist/node_modules/@flakes/console/.output/public/assets/main-DVO9gWzi.js +1215 -0
  67. package/dist/node_modules/@flakes/console/.output/public/assets/matchContext-puEkI9BI.js +1 -0
  68. package/dist/node_modules/@flakes/console/.output/public/assets/otp-verification-qolVtiom.js +20 -0
  69. package/dist/node_modules/@flakes/console/.output/public/assets/projects-n5LSsNi3.js +2 -0
  70. package/dist/node_modules/@flakes/console/.output/public/assets/react-B8IZ02wI.js +1 -0
  71. package/dist/node_modules/@flakes/console/.output/public/assets/react-dom-ki7NpxV4.js +1 -0
  72. package/dist/node_modules/@flakes/console/.output/public/assets/redirect-Cu9zBy04.js +1 -0
  73. package/dist/node_modules/@flakes/console/.output/public/assets/reset-password-D-OlZeHQ.js +1 -0
  74. package/dist/node_modules/@flakes/console/.output/public/assets/runs-BB9ogobQ.js +2 -0
  75. package/dist/node_modules/@flakes/console/.output/public/assets/sandboxes-BIimz5FI.js +2 -0
  76. package/dist/node_modules/@flakes/console/.output/public/assets/{save-1uf5fQff.js → save-Bte_1tnN.js} +1 -1
  77. package/dist/node_modules/@flakes/console/.output/public/assets/security-DdQNcp6k.js +1 -0
  78. package/dist/node_modules/@flakes/console/.output/public/assets/signin-BoZiVxyq.js +1 -0
  79. package/dist/node_modules/@flakes/console/.output/public/assets/signin-form-tTBWDjhi.js +1 -0
  80. package/dist/node_modules/@flakes/console/.output/public/assets/signup-CBSszmUC.js +1 -0
  81. package/dist/node_modules/@flakes/console/.output/public/assets/styles-B8OXOvkO.css +2 -0
  82. package/dist/node_modules/@flakes/console/.output/public/assets/table-WMIs2m3R.js +1 -0
  83. package/dist/node_modules/@flakes/console/.output/public/assets/tiny-invariant-CO5X59di.js +1 -0
  84. package/dist/node_modules/@flakes/console/.output/public/assets/user-Bt9z7sSI.js +1 -0
  85. package/dist/node_modules/@flakes/console/.output/public/assets/utils-CBxvVKOM.js +1 -0
  86. package/dist/node_modules/@flakes/console/.output/public/assets/x-Bdsfqbi3.js +1 -0
  87. package/dist/node_modules/@flakes/console/.output/server/{_-DwPiGKLE.mjs → _-BGsKgsbF.mjs} +3 -3
  88. package/dist/node_modules/@flakes/console/.output/server/{_-C-u135Pp.mjs → _-DtPMXzt0.mjs} +3 -3
  89. package/dist/node_modules/@flakes/console/.output/server/_chunks/ProjectsPage.mjs +588 -0
  90. package/dist/node_modules/@flakes/console/.output/server/_chunks/RunPage.mjs +13 -7
  91. package/dist/node_modules/@flakes/console/.output/server/_chunks/RunsPage.mjs +43 -13
  92. package/dist/node_modules/@flakes/console/.output/server/_chunks/SandboxesLens.mjs +1 -1
  93. package/dist/node_modules/@flakes/console/.output/server/_chunks/SandboxesPage.mjs +253 -18
  94. package/dist/node_modules/@flakes/console/.output/server/_chunks/TranscriptPage.mjs +2 -3
  95. package/dist/node_modules/@flakes/console/.output/server/_chunks/bits.mjs +1 -1
  96. package/dist/node_modules/@flakes/console/.output/server/_chunks/button.mjs +461 -3
  97. package/dist/node_modules/@flakes/console/.output/server/_chunks/card.mjs +1 -1
  98. package/dist/node_modules/@flakes/console/.output/server/_chunks/project-navigation.mjs +79 -0
  99. package/dist/node_modules/@flakes/console/.output/server/_chunks/router.mjs +193 -111
  100. package/dist/node_modules/@flakes/console/.output/server/_chunks/table.mjs +1 -1
  101. package/dist/node_modules/@flakes/console/.output/server/_libs/lucide-react.mjs +178 -1
  102. package/dist/node_modules/@flakes/console/.output/server/{_runId-Cag5UaYU.mjs → _runId-P1u-vfcm.mjs} +2 -2
  103. package/dist/node_modules/@flakes/console/.output/server/{_runId-CJ5_8uS8.mjs → _runId-vO4tlCOP.mjs} +3 -3
  104. package/dist/node_modules/@flakes/console/.output/server/_ssr/{App-CwFtUgAz.mjs → App-C-XaVKoO.mjs} +118 -64
  105. package/dist/node_modules/@flakes/console/.output/server/_ssr/{DocumentationPage-CtBAQbzy.mjs → DocumentationPage-BR2KosFz.mjs} +3 -3
  106. package/dist/node_modules/@flakes/console/.output/server/_ssr/ProjectsPage-BUrep1wl.mjs +590 -0
  107. package/dist/node_modules/@flakes/console/.output/server/_ssr/{RunPage-CatpnkFy.mjs → RunPage-BHs-v0LU.mjs} +14 -7
  108. package/dist/node_modules/@flakes/console/.output/server/_ssr/{RunsPage-BmLTih8Z.mjs → RunsPage-iTNYVwL0.mjs} +44 -13
  109. package/dist/node_modules/@flakes/console/.output/server/_ssr/SandboxesPage-C1Z6dVce.mjs +423 -0
  110. package/dist/node_modules/@flakes/console/.output/server/_ssr/{TranscriptPage-DaSIDCKk.mjs → TranscriptPage-BcomoTls.mjs} +3 -3
  111. package/dist/node_modules/@flakes/console/.output/server/_ssr/{account-DzluYS58.mjs → account-Cp0s_IQK.mjs} +2 -2
  112. package/dist/node_modules/@flakes/console/.output/server/_ssr/account-forms-CsothyLo.mjs +1 -1
  113. package/dist/node_modules/@flakes/console/.output/server/_ssr/device-CRZl7dGv.mjs +1 -1
  114. package/dist/node_modules/@flakes/console/.output/server/_ssr/documentation-BnxmM-Yo.mjs +210 -0
  115. package/dist/node_modules/@flakes/console/.output/server/_ssr/{documentation-PC93pMWl.mjs → documentation-Cgyr3VKK.mjs} +3 -3
  116. package/dist/node_modules/@flakes/console/.output/server/_ssr/{hooks-COIYuQzf.mjs → hooks-CsVtQ1m-.mjs} +178 -6
  117. package/dist/node_modules/@flakes/console/.output/server/_ssr/project-navigation-DI77TL9a.mjs +79 -0
  118. package/dist/node_modules/@flakes/console/.output/server/_ssr/projects-R9sxR_t4.mjs +5 -0
  119. package/dist/node_modules/@flakes/console/.output/server/_ssr/reset-password-SmmTixcr.mjs +1 -1
  120. package/dist/node_modules/@flakes/console/.output/server/_ssr/{router-elhBqT5k.mjs → router-CobdI6gO.mjs} +49 -41
  121. package/dist/node_modules/@flakes/console/.output/server/_ssr/runs-D8MHe3QU.mjs +19 -0
  122. package/dist/node_modules/@flakes/console/.output/server/_ssr/{runs-CBkO-RO8.mjs → runs-mTxbc_pm.mjs} +17 -5
  123. package/dist/node_modules/@flakes/console/.output/server/_ssr/{sandboxes-qSX_pfUJ.mjs → sandboxes-B2z_9JyU.mjs} +2 -2
  124. package/dist/node_modules/@flakes/console/.output/server/_ssr/{sandboxes-BIAgn8pu2.mjs → sandboxes-r0y6Ihg6.mjs} +3 -3
  125. package/dist/node_modules/@flakes/console/.output/server/_ssr/signin-form-CQDi-0A5.mjs +1 -1
  126. package/dist/node_modules/@flakes/console/.output/server/_ssr/ssr.mjs +2 -2
  127. package/dist/node_modules/@flakes/console/.output/server/{_tanstack-start-manifest_v-CR_hZXXv.mjs → _tanstack-start-manifest_v-DpAwCFK9.mjs} +53 -46
  128. package/dist/node_modules/@flakes/console/.output/server/{_taskId-BaezvY0w.mjs → _taskId-Cz9xwj5L.mjs} +2 -2
  129. package/dist/node_modules/@flakes/console/.output/server/{_taskId-Da7kHKj9.mjs → _taskId-wQsG2CQj.mjs} +3 -3
  130. package/dist/node_modules/@flakes/console/package.json +1 -1
  131. package/dist/node_modules/@flakes/control-plane/dist/client-access.d.ts +17 -0
  132. package/dist/node_modules/@flakes/control-plane/dist/client-access.d.ts.map +1 -1
  133. package/dist/node_modules/@flakes/control-plane/dist/client-access.js +12 -0
  134. package/dist/node_modules/@flakes/control-plane/dist/client-access.js.map +1 -1
  135. package/dist/node_modules/@flakes/control-plane/dist/host-pool-matching.d.ts +24 -1
  136. package/dist/node_modules/@flakes/control-plane/dist/host-pool-matching.d.ts.map +1 -1
  137. package/dist/node_modules/@flakes/control-plane/dist/host-pool-matching.js +87 -3
  138. package/dist/node_modules/@flakes/control-plane/dist/host-pool-matching.js.map +1 -1
  139. package/dist/node_modules/@flakes/control-plane/dist/host-stream.d.ts.map +1 -1
  140. package/dist/node_modules/@flakes/control-plane/dist/host-stream.js +150 -40
  141. package/dist/node_modules/@flakes/control-plane/dist/host-stream.js.map +1 -1
  142. package/dist/node_modules/@flakes/control-plane/dist/routes/hosts.d.ts.map +1 -1
  143. package/dist/node_modules/@flakes/control-plane/dist/routes/hosts.js +219 -0
  144. package/dist/node_modules/@flakes/control-plane/dist/routes/hosts.js.map +1 -1
  145. package/dist/node_modules/@flakes/control-plane/dist/routes/projects.d.ts +3 -0
  146. package/dist/node_modules/@flakes/control-plane/dist/routes/projects.d.ts.map +1 -0
  147. package/dist/node_modules/@flakes/control-plane/dist/routes/projects.js +226 -0
  148. package/dist/node_modules/@flakes/control-plane/dist/routes/projects.js.map +1 -0
  149. package/dist/node_modules/@flakes/control-plane/dist/routes/runs.d.ts.map +1 -1
  150. package/dist/node_modules/@flakes/control-plane/dist/routes/runs.js +93 -6
  151. package/dist/node_modules/@flakes/control-plane/dist/routes/runs.js.map +1 -1
  152. package/dist/node_modules/@flakes/control-plane/dist/routes/sandboxes.js +48 -3
  153. package/dist/node_modules/@flakes/control-plane/dist/routes/sandboxes.js.map +1 -1
  154. package/dist/node_modules/@flakes/control-plane/dist/routes/tasks.js +2 -2
  155. package/dist/node_modules/@flakes/control-plane/dist/routes/tasks.js.map +1 -1
  156. package/dist/node_modules/@flakes/control-plane/dist/scheduler.d.ts +2 -0
  157. package/dist/node_modules/@flakes/control-plane/dist/scheduler.d.ts.map +1 -1
  158. package/dist/node_modules/@flakes/control-plane/dist/scheduler.js +53 -21
  159. package/dist/node_modules/@flakes/control-plane/dist/scheduler.js.map +1 -1
  160. package/dist/node_modules/@flakes/control-plane/dist/server.d.ts.map +1 -1
  161. package/dist/node_modules/@flakes/control-plane/dist/server.js +2 -0
  162. package/dist/node_modules/@flakes/control-plane/dist/server.js.map +1 -1
  163. package/dist/node_modules/@flakes/control-plane/dist/types.d.ts +2 -0
  164. package/dist/node_modules/@flakes/control-plane/dist/types.d.ts.map +1 -1
  165. package/dist/node_modules/@flakes/control-plane/package.json +1 -1
  166. package/dist/node_modules/@flakes/core/dist/config.d.ts.map +1 -1
  167. package/dist/node_modules/@flakes/core/dist/config.js +6 -2
  168. package/dist/node_modules/@flakes/core/dist/config.js.map +1 -1
  169. package/dist/node_modules/@flakes/core/dist/ids.d.ts +4 -0
  170. package/dist/node_modules/@flakes/core/dist/ids.d.ts.map +1 -1
  171. package/dist/node_modules/@flakes/core/dist/ids.js +2 -0
  172. package/dist/node_modules/@flakes/core/dist/ids.js.map +1 -1
  173. package/dist/node_modules/@flakes/core/dist/runtime.d.ts +1 -1
  174. package/dist/node_modules/@flakes/core/dist/schemas.d.ts +11 -0
  175. package/dist/node_modules/@flakes/core/dist/schemas.d.ts.map +1 -1
  176. package/dist/node_modules/@flakes/core/dist/schemas.js +10 -0
  177. package/dist/node_modules/@flakes/core/dist/schemas.js.map +1 -1
  178. package/dist/node_modules/@flakes/core/package.json +1 -1
  179. package/dist/node_modules/@flakes/harness-agent/package.json +1 -1
  180. package/dist/node_modules/@flakes/harness-sdk/package.json +1 -1
  181. package/dist/node_modules/@flakes/pi-agent/package.json +1 -1
  182. package/dist/node_modules/@flakes/protocol/dist/index.d.ts +1 -1
  183. package/dist/node_modules/@flakes/protocol/dist/index.d.ts.map +1 -1
  184. package/dist/node_modules/@flakes/protocol/dist/index.js +1 -1
  185. package/dist/node_modules/@flakes/protocol/dist/index.js.map +1 -1
  186. package/dist/node_modules/@flakes/protocol/dist/v1.d.ts +317 -0
  187. package/dist/node_modules/@flakes/protocol/dist/v1.d.ts.map +1 -1
  188. package/dist/node_modules/@flakes/protocol/dist/v1.js +50 -1
  189. package/dist/node_modules/@flakes/protocol/dist/v1.js.map +1 -1
  190. package/dist/node_modules/@flakes/protocol/package.json +1 -1
  191. package/dist/node_modules/@flakes/sandbox-runtime/dist/transport.js +3 -6
  192. package/dist/node_modules/@flakes/sandbox-runtime/dist/transport.js.map +1 -1
  193. package/dist/node_modules/@flakes/sandbox-runtime/package.json +1 -1
  194. package/dist/node_modules/@flakes/store/dist/artifacts-events-store.d.ts.map +1 -1
  195. package/dist/node_modules/@flakes/store/dist/artifacts-events-store.js +10 -0
  196. package/dist/node_modules/@flakes/store/dist/artifacts-events-store.js.map +1 -1
  197. package/dist/node_modules/@flakes/store/dist/host-provisioning-limits.d.ts +2 -1
  198. package/dist/node_modules/@flakes/store/dist/host-provisioning-limits.d.ts.map +1 -1
  199. package/dist/node_modules/@flakes/store/dist/host-provisioning-limits.js +1 -0
  200. package/dist/node_modules/@flakes/store/dist/host-provisioning-limits.js.map +1 -1
  201. package/dist/node_modules/@flakes/store/dist/kysely-store.d.ts +2 -2
  202. package/dist/node_modules/@flakes/store/dist/kysely-store.d.ts.map +1 -1
  203. package/dist/node_modules/@flakes/store/dist/kysely-store.js +2 -2
  204. package/dist/node_modules/@flakes/store/dist/kysely-store.js.map +1 -1
  205. package/dist/node_modules/@flakes/store/dist/managed-sandbox-instances-store.d.ts +14 -2
  206. package/dist/node_modules/@flakes/store/dist/managed-sandbox-instances-store.d.ts.map +1 -1
  207. package/dist/node_modules/@flakes/store/dist/managed-sandbox-instances-store.js +567 -9
  208. package/dist/node_modules/@flakes/store/dist/managed-sandbox-instances-store.js.map +1 -1
  209. package/dist/node_modules/@flakes/store/dist/mappers.d.ts +10 -2
  210. package/dist/node_modules/@flakes/store/dist/mappers.d.ts.map +1 -1
  211. package/dist/node_modules/@flakes/store/dist/mappers.js +46 -0
  212. package/dist/node_modules/@flakes/store/dist/mappers.js.map +1 -1
  213. package/dist/node_modules/@flakes/store/dist/projects-store.d.ts +42 -0
  214. package/dist/node_modules/@flakes/store/dist/projects-store.d.ts.map +1 -0
  215. package/dist/node_modules/@flakes/store/dist/projects-store.js +376 -0
  216. package/dist/node_modules/@flakes/store/dist/projects-store.js.map +1 -0
  217. package/dist/node_modules/@flakes/store/dist/runs-store.d.ts.map +1 -1
  218. package/dist/node_modules/@flakes/store/dist/runs-store.js +7 -2
  219. package/dist/node_modules/@flakes/store/dist/runs-store.js.map +1 -1
  220. package/dist/node_modules/@flakes/store/dist/schema.js +72 -0
  221. package/dist/node_modules/@flakes/store/dist/schema.js.map +1 -1
  222. package/dist/node_modules/@flakes/store/dist/store-base.d.ts +14 -12
  223. package/dist/node_modules/@flakes/store/dist/store-base.d.ts.map +1 -1
  224. package/dist/node_modules/@flakes/store/dist/tables.d.ts +41 -1
  225. package/dist/node_modules/@flakes/store/dist/tables.d.ts.map +1 -1
  226. package/dist/node_modules/@flakes/store/dist/tasks-store.d.ts.map +1 -1
  227. package/dist/node_modules/@flakes/store/dist/tasks-store.js +9 -2
  228. package/dist/node_modules/@flakes/store/dist/tasks-store.js.map +1 -1
  229. package/dist/node_modules/@flakes/store/dist/types.d.ts +189 -2
  230. package/dist/node_modules/@flakes/store/dist/types.d.ts.map +1 -1
  231. package/dist/node_modules/@flakes/store/package.json +1 -1
  232. package/package.json +1 -1
  233. package/dist/node_modules/@flakes/console/.output/public/assets/DocumentationPage-DM-ZYPgQ.js +0 -1
  234. package/dist/node_modules/@flakes/console/.output/public/assets/RunPage-i03UqHYF.js +0 -3
  235. package/dist/node_modules/@flakes/console/.output/public/assets/RunsPage-u8qbeAoV.js +0 -1
  236. package/dist/node_modules/@flakes/console/.output/public/assets/SandboxesLens-BUQQWmH6.js +0 -1
  237. package/dist/node_modules/@flakes/console/.output/public/assets/SandboxesPage-D8D_5kXP.js +0 -1
  238. package/dist/node_modules/@flakes/console/.output/public/assets/TranscriptPage-ChoFjiPI.js +0 -1
  239. package/dist/node_modules/@flakes/console/.output/public/assets/_-C4ecJpHe.js +0 -1
  240. package/dist/node_modules/@flakes/console/.output/public/assets/_runId-BZXYFY32.js +0 -2
  241. package/dist/node_modules/@flakes/console/.output/public/assets/_taskId-C28oHEU_.js +0 -2
  242. package/dist/node_modules/@flakes/console/.output/public/assets/account-B4wDEC7t.js +0 -1
  243. package/dist/node_modules/@flakes/console/.output/public/assets/account-forms-BLo66Mqa.js +0 -1
  244. package/dist/node_modules/@flakes/console/.output/public/assets/arrow-right-BMW8fJP5.js +0 -1
  245. package/dist/node_modules/@flakes/console/.output/public/assets/auth-layout-DiUSgtaY.js +0 -1
  246. package/dist/node_modules/@flakes/console/.output/public/assets/bits-Cv0Te4iz.js +0 -1
  247. package/dist/node_modules/@flakes/console/.output/public/assets/card-DSG3_teC.js +0 -1
  248. package/dist/node_modules/@flakes/console/.output/public/assets/circle-check-B0gtb8OH.js +0 -1
  249. package/dist/node_modules/@flakes/console/.output/public/assets/device-NrLWypMd.js +0 -1
  250. package/dist/node_modules/@flakes/console/.output/public/assets/dist-BtPw3IIV.js +0 -1
  251. package/dist/node_modules/@flakes/console/.output/public/assets/documentation-NRDmcDud.js +0 -1
  252. package/dist/node_modules/@flakes/console/.output/public/assets/forgot-password--3Mujc8s.js +0 -1
  253. package/dist/node_modules/@flakes/console/.output/public/assets/link-BsixJinJ.js +0 -1
  254. package/dist/node_modules/@flakes/console/.output/public/assets/main-KBvz0mSQ.js +0 -1055
  255. package/dist/node_modules/@flakes/console/.output/public/assets/matchContext-tJ0VTv5m.js +0 -1
  256. package/dist/node_modules/@flakes/console/.output/public/assets/otp-verification-BSXwS5bo.js +0 -20
  257. package/dist/node_modules/@flakes/console/.output/public/assets/react-DtOYBmep.js +0 -1
  258. package/dist/node_modules/@flakes/console/.output/public/assets/react-dom-DrIU40PY.js +0 -1
  259. package/dist/node_modules/@flakes/console/.output/public/assets/redirect-BEm0VK76.js +0 -1
  260. package/dist/node_modules/@flakes/console/.output/public/assets/reset-password-C7SbNx2J.js +0 -1
  261. package/dist/node_modules/@flakes/console/.output/public/assets/runs-xD4ynllK.js +0 -2
  262. package/dist/node_modules/@flakes/console/.output/public/assets/sandboxes-Cfr1Y2Dn.js +0 -2
  263. package/dist/node_modules/@flakes/console/.output/public/assets/security-CCThSJae.js +0 -1
  264. package/dist/node_modules/@flakes/console/.output/public/assets/signin-CYeR3TaY.js +0 -1
  265. package/dist/node_modules/@flakes/console/.output/public/assets/signin-form-Bp22jPob.js +0 -1
  266. package/dist/node_modules/@flakes/console/.output/public/assets/signup-DHhPfohX.js +0 -1
  267. package/dist/node_modules/@flakes/console/.output/public/assets/styles-8wEqfToJ.css +0 -2
  268. package/dist/node_modules/@flakes/console/.output/public/assets/table-DptQuuuq.js +0 -1
  269. package/dist/node_modules/@flakes/console/.output/public/assets/user-DK27uFod.js +0 -1
  270. package/dist/node_modules/@flakes/console/.output/public/assets/utils-CEE0-YEp.js +0 -1
  271. package/dist/node_modules/@flakes/console/.output/public/assets/x-fKvnmCoQ.js +0 -1
  272. package/dist/node_modules/@flakes/console/.output/server/_chunks/utils.mjs +0 -285
  273. package/dist/node_modules/@flakes/console/.output/server/_ssr/SandboxesPage-Dlq0Ga24.mjs +0 -187
  274. package/dist/node_modules/@flakes/console/.output/server/_ssr/documentation-Bf0VPrnt.mjs +0 -210
  275. package/dist/node_modules/@flakes/console/.output/server/_ssr/runs-BzfGldVd.mjs +0 -12
@@ -1,6 +1,464 @@
1
1
  import { c as require_jsx_runtime, i as Slot } from "../_libs/@radix-ui/react-arrow+[...].mjs";
2
- import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
3
- import { t as cn } from "./utils.mjs";
2
+ import { t as createServerFn } from "../_libs/@tanstack/start-client-core+[...].mjs";
3
+ import { i as useQuery, n as useMutation, o as useQueryClient, t as useInfiniteQuery } from "../_libs/tanstack__react-query.mjs";
4
+ import { n as clsx, t as cva } from "../_libs/class-variance-authority+clsx.mjs";
5
+ import { t as twMerge } from "../_libs/tailwind-merge.mjs";
6
+ import { n as normalizeConsolePath } from "./paths.mjs";
7
+ //#region src/api/server-functions.ts
8
+ var consoleGetJson = createServerFn({ method: "GET" }).inputValidator(validatePathInput).handler(async ({ data }) => {
9
+ const { proxyJsonHandler } = await import("./server-runtime.mjs");
10
+ return proxyJsonHandler("GET", data);
11
+ });
12
+ var consoleGetText = createServerFn({ method: "GET" }).inputValidator(validatePathInput).handler(async ({ data }) => {
13
+ const { proxyTextHandler } = await import("./server-runtime.mjs");
14
+ return proxyTextHandler(data);
15
+ });
16
+ var consolePostJson = createServerFn({ method: "POST" }).inputValidator(validateJsonInput).handler(async ({ data }) => {
17
+ const { proxyJsonHandler } = await import("./server-runtime.mjs");
18
+ return proxyJsonHandler("POST", data);
19
+ });
20
+ var consolePutJson = createServerFn({ method: "POST" }).inputValidator(validateJsonInput).handler(async ({ data }) => {
21
+ const { proxyJsonHandler } = await import("./server-runtime.mjs");
22
+ return proxyJsonHandler("PUT", data);
23
+ });
24
+ var consoleDeleteJson = createServerFn({ method: "POST" }).inputValidator(validatePathInput).handler(async ({ data }) => {
25
+ const { proxyJsonHandler } = await import("./server-runtime.mjs");
26
+ return proxyJsonHandler("DELETE", data);
27
+ });
28
+ function validatePathInput(data) {
29
+ return { path: requireConsolePath(requireRecord(data, "path input").path) };
30
+ }
31
+ function validateJsonInput(data) {
32
+ const record = requireRecord(data, "json input");
33
+ return {
34
+ path: requireConsolePath(record.path),
35
+ ...record.body === void 0 ? {} : { body: record.body }
36
+ };
37
+ }
38
+ function requireConsolePath(value) {
39
+ if (typeof value !== "string" || value.length === 0) throw new Error("path must be a non-empty string");
40
+ return normalizeConsolePath(value);
41
+ }
42
+ function requireRecord(value, label) {
43
+ if (value === null || typeof value !== "object" || Array.isArray(value)) throw new Error(`${label} must be an object`);
44
+ return value;
45
+ }
46
+ //#endregion
47
+ //#region src/api/client.ts
48
+ /** Raised on 401/403 so views can redirect through user auth. */
49
+ var AuthError = class extends Error {};
50
+ /** Raised on 404 so views can render an explicit missing-resource state. */
51
+ var NotFoundError = class extends Error {};
52
+ /** Raised for non-auth API failures with the server-provided message. */
53
+ var ApiError = class extends Error {
54
+ status;
55
+ details;
56
+ constructor(message, status, details) {
57
+ super(message);
58
+ this.status = status;
59
+ this.details = details;
60
+ }
61
+ };
62
+ /** GET through the TanStack Start server function layer. */
63
+ async function apiGet(path) {
64
+ return unwrapResult(await consoleGetJson({ data: { path } }));
65
+ }
66
+ async function apiGetText(path) {
67
+ return unwrapResult(await consoleGetText({ data: { path } }));
68
+ }
69
+ /** POST JSON through the TanStack Start server function layer. */
70
+ async function apiPost(path, body) {
71
+ return unwrapResult(await consolePostJson({ data: {
72
+ path,
73
+ body
74
+ } }));
75
+ }
76
+ /** PUT JSON through the TanStack Start server function layer. */
77
+ async function apiPut(path, body) {
78
+ return unwrapResult(await consolePutJson({ data: {
79
+ path,
80
+ body
81
+ } }));
82
+ }
83
+ /** DELETE through the TanStack Start server function layer. */
84
+ async function apiDelete(path) {
85
+ return unwrapResult(await consoleDeleteJson({ data: { path } }));
86
+ }
87
+ /**
88
+ * Fetches a file through the TanStack Start server route and triggers a
89
+ * browser download. The bearer token stays server-side in the console session.
90
+ */
91
+ async function downloadFile(path, filename) {
92
+ const response = await fetch(`/console/api/download?path=${encodeURIComponent(path)}`);
93
+ if (response.status === 401 || response.status === 403) throw new AuthError(`auth failed (${response.status})`);
94
+ if (!response.ok) throw await apiError(response, path);
95
+ const blob = await response.blob();
96
+ const url = URL.createObjectURL(blob);
97
+ const anchor = document.createElement("a");
98
+ anchor.href = url;
99
+ anchor.download = filename;
100
+ document.body.appendChild(anchor);
101
+ anchor.click();
102
+ anchor.remove();
103
+ URL.revokeObjectURL(url);
104
+ }
105
+ async function apiError(response, path) {
106
+ let details;
107
+ let message = `${path} failed (${response.status})`;
108
+ try {
109
+ details = await response.clone().json();
110
+ if (isRecord$1(details) && typeof details.message === "string") message = details.message;
111
+ else if (isRecord$1(details) && typeof details.error === "string") message = details.error;
112
+ } catch {
113
+ try {
114
+ const text = await response.clone().text();
115
+ if (text.trim().length > 0) message = text.trim();
116
+ } catch {}
117
+ }
118
+ return new ApiError(message, response.status, details);
119
+ }
120
+ function unwrapResult(result) {
121
+ if (result.ok) return result.data;
122
+ if (result.status === 401 || result.status === 403) throw new AuthError(result.message);
123
+ if (result.status === 404) throw new NotFoundError(result.message);
124
+ throw new ApiError(result.message, result.status, result.details);
125
+ }
126
+ function isRecord$1(value) {
127
+ return typeof value === "object" && value !== null;
128
+ }
129
+ //#endregion
130
+ //#region src/lib/managed-sandbox-delete.ts
131
+ var deletableStatuses = new Set([
132
+ "running",
133
+ "draining",
134
+ "stopping",
135
+ "stopped",
136
+ "failed",
137
+ "expired",
138
+ "cancelled"
139
+ ]);
140
+ var blockerText = {
141
+ unsafe_status: "sandbox is not in a stale lifecycle state",
142
+ live_sandbox: "sandbox is live",
143
+ accepted_running_assignments: "sandbox has accepted running assignments",
144
+ provider_cleanup_required: "provider cleanup is required"
145
+ };
146
+ function canRequestManagedSandboxDelete(sandbox) {
147
+ return sandbox.sandboxStatus !== "active" && deletableStatuses.has(sandbox.status);
148
+ }
149
+ function managedSandboxDeleteAction(sandbox, pending, confirming) {
150
+ if (pending) return "pending";
151
+ if (!canRequestManagedSandboxDelete(sandbox)) return "hidden";
152
+ return confirming ? "confirm" : "request";
153
+ }
154
+ function applyManagedSandboxDeleteResult(sandboxes, result) {
155
+ if (result.status === "deleted") return sandboxes.filter((sandbox) => sandbox.sandboxId !== result.sandboxId);
156
+ return sandboxes.map((sandbox) => sandbox.sandboxId === result.sandboxId ? {
157
+ ...sandbox,
158
+ status: "deleting"
159
+ } : sandbox);
160
+ }
161
+ function managedSandboxDeleteErrorMessage(error) {
162
+ if (error instanceof NotFoundError) return "Sandbox is unavailable or already deleted.";
163
+ if (error instanceof ApiError && error.status === 409) {
164
+ const blockers = deleteBlockers(error.details);
165
+ if (blockers.length > 0) return `Delete blocked: ${blockers.map(blockerMessage).join("; ")}.`;
166
+ }
167
+ return error instanceof Error ? error.message : "Failed to delete sandbox.";
168
+ }
169
+ function deleteBlockers(details) {
170
+ if (!isRecord(details) || !Array.isArray(details.blockers)) return [];
171
+ return details.blockers.filter((blocker) => typeof blocker === "string");
172
+ }
173
+ function blockerMessage(blocker) {
174
+ return blockerText[blocker] ?? blocker.replaceAll("_", " ");
175
+ }
176
+ function isRecord(value) {
177
+ return typeof value === "object" && value !== null;
178
+ }
179
+ //#endregion
180
+ //#region src/lib/project-placement.ts
181
+ function hostProjectWorkspaceRootPath(hostId) {
182
+ return `/v1/hosts/${encodeURIComponent(hostId)}/project-workspace-root`;
183
+ }
184
+ function hostProjectBindingsPath(hostId) {
185
+ return `/v1/hosts/${encodeURIComponent(hostId)}/project-bindings`;
186
+ }
187
+ function hostProjectBindingPath(hostId, projectKey) {
188
+ return `${hostProjectBindingsPath(hostId)}/${encodeURIComponent(projectKey)}`;
189
+ }
190
+ function hostProjectWorkspacePath(projectWorkspaceRoot, projectKey) {
191
+ const separator = projectWorkspaceRoot.includes("\\") && !projectWorkspaceRoot.includes("/") ? "\\" : "/";
192
+ return projectWorkspaceRoot.endsWith("/") || projectWorkspaceRoot.endsWith("\\") ? `${projectWorkspaceRoot}${projectKey}` : `${projectWorkspaceRoot}${separator}${projectKey}`;
193
+ }
194
+ function bindingValidationView(binding) {
195
+ if (binding === void 0) return {
196
+ tone: "idle",
197
+ label: "Not bound",
198
+ detail: "No host binding has been saved for this project."
199
+ };
200
+ if (binding.availability === "available") return {
201
+ tone: "available",
202
+ label: "Available",
203
+ detail: `Validated ${binding.lastValidatedAt ?? binding.updatedAt}.`
204
+ };
205
+ if (binding.availability === "unavailable") return {
206
+ tone: "unavailable",
207
+ label: "Unavailable",
208
+ detail: binding.validationReason ?? `Last rejected ${binding.lastValidatedAt ?? binding.updatedAt}.`
209
+ };
210
+ return {
211
+ tone: "pending",
212
+ label: "Pending validation",
213
+ detail: "Waiting for the host runtime to validate this binding."
214
+ };
215
+ }
216
+ function poolChoicesForBinding(pools, binding) {
217
+ const selected = new Set(binding?.poolKeys ?? []);
218
+ return pools.map((pool) => {
219
+ const status = pool.status ?? "available";
220
+ return {
221
+ poolKey: pool.poolKey,
222
+ selected: selected.has(pool.poolKey),
223
+ status,
224
+ statusLabel: status
225
+ };
226
+ });
227
+ }
228
+ //#endregion
229
+ //#region src/api/hooks.ts
230
+ var POLL_MS = 1e3;
231
+ function useRuns(input) {
232
+ const state = typeof input === "string" ? input : input?.state;
233
+ const projectKey = typeof input === "string" ? void 0 : input?.projectKey;
234
+ return useInfiniteQuery({
235
+ queryKey: [
236
+ "runs",
237
+ state ?? null,
238
+ projectKey ?? null
239
+ ],
240
+ initialPageParam: void 0,
241
+ queryFn: ({ pageParam }) => {
242
+ const params = new URLSearchParams();
243
+ if (state !== void 0) params.set("state", state);
244
+ if (projectKey !== void 0) params.set("projectKey", projectKey);
245
+ if (pageParam !== void 0) params.set("cursor", pageParam);
246
+ const query = params.toString();
247
+ return apiGet(`/v1/runs${query ? `?${query}` : ""}`);
248
+ },
249
+ getNextPageParam: (lastPage) => lastPage.nextCursor,
250
+ maxPages: 10,
251
+ refetchInterval: POLL_MS
252
+ });
253
+ }
254
+ function useProjects() {
255
+ return useQuery({
256
+ queryKey: ["projects"],
257
+ queryFn: () => apiGet("/v1/projects"),
258
+ refetchInterval: POLL_MS
259
+ });
260
+ }
261
+ function useHosts() {
262
+ return useQuery({
263
+ queryKey: ["hosts"],
264
+ queryFn: () => apiGet("/v1/hosts"),
265
+ refetchInterval: POLL_MS
266
+ });
267
+ }
268
+ function useHostPools(hostId) {
269
+ return useQuery({
270
+ queryKey: ["host-pools", hostId],
271
+ enabled: hostId !== null,
272
+ queryFn: () => apiGet(`/v1/hosts/${encodeURIComponent(requireHostId(hostId, "useHostPools"))}/pools`),
273
+ refetchInterval: POLL_MS
274
+ });
275
+ }
276
+ function useSandboxFleet() {
277
+ return useQuery({
278
+ queryKey: ["sandbox-fleet"],
279
+ queryFn: () => apiGet("/v1/sandboxes"),
280
+ refetchInterval: POLL_MS
281
+ });
282
+ }
283
+ function useDeleteManagedSandbox() {
284
+ const queryClient = useQueryClient();
285
+ return useMutation({
286
+ mutationFn: (sandboxId) => apiDelete(`/v1/sandboxes/${encodeURIComponent(sandboxId)}`),
287
+ onSuccess: async (result) => {
288
+ queryClient.setQueryData(["sandbox-fleet"], (current) => current ? { sandboxes: applyManagedSandboxDeleteResult(current.sandboxes, result) } : current);
289
+ if (result.status === "deleted") queryClient.removeQueries({ queryKey: ["managed-sandbox", result.sandboxId] });
290
+ await Promise.all([queryClient.invalidateQueries({ queryKey: ["sandbox-fleet"] }), queryClient.invalidateQueries({ queryKey: ["managed-sandbox", result.sandboxId] })]);
291
+ }
292
+ });
293
+ }
294
+ function useHostProjectBindings(hostId, enabled = true) {
295
+ return useQuery({
296
+ queryKey: ["host-project-bindings", hostId],
297
+ enabled: hostId !== null && enabled,
298
+ queryFn: () => apiGet(hostProjectBindingsPath(requireHostId(hostId, "useHostProjectBindings"))),
299
+ refetchInterval: POLL_MS
300
+ });
301
+ }
302
+ function useSetHostProjectWorkspaceRoot() {
303
+ const queryClient = useQueryClient();
304
+ return useMutation({
305
+ mutationFn: (input) => apiPut(hostProjectWorkspaceRootPath(input.hostId), { path: input.path }),
306
+ onSuccess: async (root) => {
307
+ await Promise.all([queryClient.invalidateQueries({ queryKey: ["hosts"] }), queryClient.invalidateQueries({ queryKey: ["host-project-bindings", root.hostId] })]);
308
+ }
309
+ });
310
+ }
311
+ function useUpsertHostProjectBinding() {
312
+ const queryClient = useQueryClient();
313
+ return useMutation({
314
+ mutationFn: (input) => apiPut(hostProjectBindingPath(input.hostId, input.projectKey), { poolKeys: input.poolKeys }),
315
+ onSuccess: async (_binding, input) => {
316
+ await queryClient.invalidateQueries({ queryKey: ["host-project-bindings", input.hostId] });
317
+ }
318
+ });
319
+ }
320
+ function useRun(runId) {
321
+ return useQuery({
322
+ queryKey: ["run", runId],
323
+ queryFn: () => apiGet(`/v1/runs/${encodeURIComponent(runId)}`),
324
+ refetchInterval: POLL_MS
325
+ });
326
+ }
327
+ function useRunTasks(runId) {
328
+ return useQuery({
329
+ queryKey: ["run-tasks", runId],
330
+ queryFn: () => apiGet(`/v1/runs/${encodeURIComponent(runId)}/tasks`),
331
+ refetchInterval: POLL_MS
332
+ });
333
+ }
334
+ function useRunArtifacts(runId) {
335
+ return useQuery({
336
+ queryKey: ["run-artifacts", runId],
337
+ queryFn: () => apiGet(`/v1/runs/${encodeURIComponent(runId)}/artifacts`),
338
+ refetchInterval: POLL_MS
339
+ });
340
+ }
341
+ function useRunMetrics(runId) {
342
+ return useQuery({
343
+ queryKey: ["run-metrics", runId],
344
+ queryFn: () => apiGet(`/v1/runs/${encodeURIComponent(runId)}/metrics`),
345
+ refetchInterval: POLL_MS
346
+ });
347
+ }
348
+ function useRunFileReservations(runId) {
349
+ return useQuery({
350
+ queryKey: ["run-file-reservations", runId],
351
+ queryFn: () => apiGet(`/v1/runs/${encodeURIComponent(runId)}/file-reservations`),
352
+ refetchInterval: POLL_MS
353
+ });
354
+ }
355
+ function useDeleteRun() {
356
+ const queryClient = useQueryClient();
357
+ return useMutation({
358
+ mutationFn: (runId) => apiDelete(`/v1/runs/${encodeURIComponent(runId)}`),
359
+ onSuccess: async (_data, runId) => {
360
+ queryClient.removeQueries({ queryKey: ["run", runId] });
361
+ queryClient.removeQueries({ queryKey: ["run-tasks", runId] });
362
+ queryClient.removeQueries({ queryKey: ["run-artifacts", runId] });
363
+ queryClient.removeQueries({ queryKey: ["run-metrics", runId] });
364
+ queryClient.removeQueries({ queryKey: ["run-file-reservations", runId] });
365
+ await queryClient.invalidateQueries({ queryKey: ["runs"] });
366
+ }
367
+ });
368
+ }
369
+ function useTaskPiSession(taskId, poll) {
370
+ return useQuery({
371
+ queryKey: ["task-pi-session", taskId],
372
+ enabled: taskId !== null,
373
+ queryFn: async () => {
374
+ const id = requireTaskId(taskId, "useTaskPiSession");
375
+ try {
376
+ return await apiGet(`/v1/tasks/${encodeURIComponent(id)}/pi-session`);
377
+ } catch (error) {
378
+ if (error instanceof NotFoundError) return null;
379
+ throw error;
380
+ }
381
+ },
382
+ refetchInterval: poll ? POLL_MS : false
383
+ });
384
+ }
385
+ function useTaskPiSessionRaw(taskId, enabled, poll) {
386
+ return useQuery({
387
+ queryKey: ["task-pi-session-raw", taskId],
388
+ enabled: taskId !== null && enabled,
389
+ queryFn: async () => {
390
+ const id = requireTaskId(taskId, "useTaskPiSessionRaw");
391
+ try {
392
+ return await apiGetText(`/v1/tasks/${encodeURIComponent(id)}/pi-session?format=raw`);
393
+ } catch (error) {
394
+ if (error instanceof NotFoundError) return null;
395
+ throw error;
396
+ }
397
+ },
398
+ refetchInterval: poll ? POLL_MS : false
399
+ });
400
+ }
401
+ function useSendTaskMessage(taskId) {
402
+ const queryClient = useQueryClient();
403
+ return useMutation({
404
+ mutationFn: (input) => {
405
+ const id = requireTaskId(taskId, "useSendTaskMessage");
406
+ return apiPost(`/v1/tasks/${encodeURIComponent(id)}/messages`, input);
407
+ },
408
+ onSuccess: async () => {
409
+ await queryClient.invalidateQueries({ queryKey: ["task-pi-session", taskId] });
410
+ await queryClient.invalidateQueries({ queryKey: ["task-pi-session-raw", taskId] });
411
+ await queryClient.invalidateQueries({ queryKey: ["task-activity", taskId] });
412
+ }
413
+ });
414
+ }
415
+ function useTaskWorkpad(taskId, poll) {
416
+ return useQuery({
417
+ queryKey: ["task-workpad", taskId],
418
+ enabled: taskId !== null,
419
+ queryFn: () => apiGet(`/v1/tasks/${encodeURIComponent(requireTaskId(taskId, "useTaskWorkpad"))}/workpad`),
420
+ refetchInterval: poll ? POLL_MS : false
421
+ });
422
+ }
423
+ function useSaveTaskWorkpad(taskId) {
424
+ const queryClient = useQueryClient();
425
+ return useMutation({
426
+ mutationFn: (input) => {
427
+ const id = requireTaskId(taskId, "useSaveTaskWorkpad");
428
+ return apiPut(`/v1/tasks/${encodeURIComponent(id)}/workpad`, input);
429
+ },
430
+ onSuccess: async (workpad) => {
431
+ queryClient.setQueryData(["task-workpad", taskId], workpad);
432
+ await queryClient.invalidateQueries({ queryKey: ["run-tasks", workpad.runId] });
433
+ await queryClient.invalidateQueries({ queryKey: ["task-activity", taskId] });
434
+ },
435
+ onSettled: async () => {
436
+ await queryClient.invalidateQueries({ queryKey: ["task-workpad", taskId] });
437
+ }
438
+ });
439
+ }
440
+ function useTaskActivity(taskId, poll) {
441
+ return useQuery({
442
+ queryKey: ["task-activity", taskId],
443
+ enabled: taskId !== null,
444
+ queryFn: () => apiGet(`/v1/tasks/${encodeURIComponent(requireTaskId(taskId, "useTaskActivity"))}/activity?limit=20`),
445
+ refetchInterval: poll ? POLL_MS : false
446
+ });
447
+ }
448
+ function requireTaskId(taskId, hookName) {
449
+ if (taskId === null) throw new Error(`${hookName} called without taskId`);
450
+ return taskId;
451
+ }
452
+ function requireHostId(hostId, hookName) {
453
+ if (hostId === null) throw new Error(`${hookName} called without hostId`);
454
+ return hostId;
455
+ }
456
+ //#endregion
457
+ //#region src/lib/utils.ts
458
+ function cn(...inputs) {
459
+ return twMerge(clsx(inputs));
460
+ }
461
+ //#endregion
4
462
  //#region src/components/ui/button.tsx
5
463
  var import_jsx_runtime = require_jsx_runtime();
6
464
  var buttonVariants = cva("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
@@ -43,4 +501,4 @@ function Button({ className, variant = "default", size = "default", asChild = fa
43
501
  });
44
502
  }
45
503
  //#endregion
46
- export { Button as t };
504
+ export { downloadFile as A, useUpsertHostProjectBinding as C, managedSandboxDeleteAction as D, poolChoicesForBinding as E, managedSandboxDeleteErrorMessage as O, useTaskWorkpad as S, hostProjectWorkspacePath as T, useSendTaskMessage as _, useHostPools as a, useTaskPiSession as b, useProjects as c, useRunFileReservations as d, useRunMetrics as f, useSaveTaskWorkpad as g, useSandboxFleet as h, useDeleteRun as i, ApiError as k, useRun as l, useRuns as m, cn as n, useHostProjectBindings as o, useRunTasks as p, useDeleteManagedSandbox as r, useHosts as s, Button as t, useRunArtifacts as u, useSetHostProjectWorkspaceRoot as v, bindingValidationView as w, useTaskPiSessionRaw as x, useTaskActivity as y };
@@ -1,5 +1,5 @@
1
1
  import { c as require_jsx_runtime } from "../_libs/@radix-ui/react-arrow+[...].mjs";
2
- import { t as cn } from "./utils.mjs";
2
+ import { n as cn } from "./button.mjs";
3
3
  //#region src/components/ui/card.tsx
4
4
  var import_jsx_runtime = require_jsx_runtime();
5
5
  function Card({ className, ...props }) {
@@ -0,0 +1,79 @@
1
+ //#region src/lib/project-navigation.ts
2
+ function splitProjectsByStatus(projects) {
3
+ const active = [];
4
+ const archived = [];
5
+ for (const project of projects) if (project.status === "archived") archived.push(project);
6
+ else active.push(project);
7
+ return {
8
+ active: sortProjects(active),
9
+ archived: sortProjects(archived)
10
+ };
11
+ }
12
+ function groupRunsByProject(projects, runs) {
13
+ const byProjectId = new Map(projects.map((project) => [project.projectId, project]));
14
+ const byProjectKey = new Map(projects.map((project) => [project.projectKey, project]));
15
+ const grouped = /* @__PURE__ */ new Map();
16
+ const unknown = /* @__PURE__ */ new Map();
17
+ const inbox = [];
18
+ for (const run of runs) {
19
+ const project = projectForRun(run, byProjectId, byProjectKey);
20
+ if (project !== null) {
21
+ const list = grouped.get(project.projectId) ?? [];
22
+ list.push(run);
23
+ grouped.set(project.projectId, list);
24
+ continue;
25
+ }
26
+ const unknownIdentity = run.projectId ?? run.projectKey;
27
+ if (unknownIdentity !== void 0 && unknownIdentity.length > 0) {
28
+ const id = `unknown:${unknownIdentity}`;
29
+ const group = unknown.get(id) ?? {
30
+ id,
31
+ label: run.projectKey ?? run.projectId ?? "Unknown project",
32
+ project: null,
33
+ runs: []
34
+ };
35
+ group.runs.push(run);
36
+ unknown.set(id, group);
37
+ continue;
38
+ }
39
+ inbox.push(run);
40
+ }
41
+ const groups = [];
42
+ const { active, archived } = splitProjectsByStatus(projects);
43
+ for (const project of [...active, ...archived]) {
44
+ const projectRuns = grouped.get(project.projectId);
45
+ if (projectRuns !== void 0 && projectRuns.length > 0) groups.push({
46
+ id: `project:${project.projectId}`,
47
+ label: project.name,
48
+ project,
49
+ runs: projectRuns
50
+ });
51
+ }
52
+ groups.push(...[...unknown.values()].sort((left, right) => left.label.localeCompare(right.label)));
53
+ if (inbox.length > 0) groups.push({
54
+ id: "inbox",
55
+ label: "Inbox",
56
+ project: null,
57
+ runs: inbox
58
+ });
59
+ return groups;
60
+ }
61
+ function projectMatchesRun(project, run) {
62
+ if (run.projectId !== void 0) return run.projectId === project.projectId;
63
+ return run.projectKey === project.projectKey;
64
+ }
65
+ function projectLabelForRun(projects, run) {
66
+ const project = projectForRun(run, new Map(projects.map((entry) => [entry.projectId, entry])), new Map(projects.map((entry) => [entry.projectKey, entry])));
67
+ if (project !== null) return `${project.name} (${project.projectKey})`;
68
+ return run.projectKey ?? run.projectId;
69
+ }
70
+ function projectForRun(run, byProjectId, byProjectKey) {
71
+ if (run.projectId !== void 0) return byProjectId.get(run.projectId) ?? null;
72
+ if (run.projectKey !== void 0) return byProjectKey.get(run.projectKey) ?? null;
73
+ return null;
74
+ }
75
+ function sortProjects(projects) {
76
+ return projects.sort((left, right) => left.projectKey.localeCompare(right.projectKey));
77
+ }
78
+ //#endregion
79
+ export { splitProjectsByStatus as i, projectLabelForRun as n, projectMatchesRun as r, groupRunsByProject as t };