@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,14 +1,15 @@
1
1
  import { o as __toESM } from "../_runtime.mjs";
2
2
  import { c as require_jsx_runtime } from "../_libs/@radix-ui/react-arrow+[...].mjs";
3
3
  import { u as require_react } from "../_libs/@floating-ui/react-dom+[...].mjs";
4
- import { l as useRuns } from "./hooks-COIYuQzf.mjs";
4
+ import { p as useProjects, y as useRuns } from "./hooks-CsVtQ1m-.mjs";
5
5
  import { t as cn } from "./utils-C_uf36nf.mjs";
6
6
  import { t as Button } from "./button-Btfpc86G.mjs";
7
+ import { n as projectLabelForRun } from "./project-navigation-DI77TL9a.mjs";
7
8
  import { a as CardTitle, i as CardHeader, n as CardContent, r as CardDescription, t as Card } from "./card-SXNbNwk5.mjs";
8
- import { d as useClockTick, f as useFlash, i as StatusBar, l as taskProgress, n as Skeleton, r as StateBadge, u as timeAgo } from "./bits-BIFjjEu8.mjs";
9
+ import { d as useClockTick, f as useFlash, i as StatusBar, l as taskProgress, n as Skeleton, r as StateBadge, t as Badge, u as timeAgo } from "./bits-BIFjjEu8.mjs";
10
+ import { A as Inbox, r as X } from "../_libs/lucide-react.mjs";
9
11
  import { a as TableHeader, i as TableHead, n as TableBody, o as TableRow, r as TableCell, t as Table } from "./table-B8aDcgVq.mjs";
10
- import { A as Inbox } from "../_libs/lucide-react.mjs";
11
- //#region node_modules/.nitro/vite/services/ssr/assets/RunsPage-BmLTih8Z.js
12
+ //#region node_modules/.nitro/vite/services/ssr/assets/RunsPage-iTNYVwL0.js
12
13
  var import_jsx_runtime = require_jsx_runtime();
13
14
  var import_react = /* @__PURE__ */ __toESM(require_react());
14
15
  var stateFilters = [
@@ -31,8 +32,14 @@ var stateFilters = [
31
32
  ];
32
33
  function RunsPage(props) {
33
34
  const filter = props.filter;
34
- const allRuns = useRuns();
35
- const runs = useRuns(filter);
35
+ const projectList = useProjects().data?.projects ?? [];
36
+ const selectedProject = props.projectKey === void 0 ? void 0 : projectList.find((project) => project.projectKey === props.projectKey);
37
+ const query = props.projectKey === void 0 ? { state: filter } : {
38
+ state: filter,
39
+ projectKey: props.projectKey
40
+ };
41
+ const allRuns = useRuns(props.projectKey === void 0 ? void 0 : { projectKey: props.projectKey });
42
+ const runs = useRuns(query);
36
43
  const loadedAll = (allRuns.data?.pages ?? []).flatMap((page) => page.runs);
37
44
  const loaded = (runs.data?.pages ?? []).flatMap((page) => page.runs);
38
45
  useClockTick();
@@ -52,9 +59,15 @@ function RunsPage(props) {
52
59
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", {
53
60
  className: "grid gap-5",
54
61
  children: [
55
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
56
- className: "text-lg font-semibold tracking-tight",
57
- children: "Runs"
62
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
63
+ className: "flex flex-wrap items-center gap-2",
64
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
65
+ className: "text-lg font-semibold tracking-tight",
66
+ children: "Runs"
67
+ }), props.projectKey !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Badge, {
68
+ variant: "secondary",
69
+ children: selectedProject?.name ?? props.projectKey
70
+ }) : null]
58
71
  }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
59
72
  className: "text-sm text-muted-foreground",
60
73
  children: "Every run your account can read, newest first."
@@ -72,16 +85,22 @@ function RunsPage(props) {
72
85
  baseline: rate ?? 0
73
86
  })]
74
87
  }),
75
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
88
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
76
89
  className: "flex items-center gap-1.5",
77
- children: stateFilters.map((entry) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
90
+ children: [stateFilters.map((entry) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
78
91
  size: "sm",
79
92
  "aria-pressed": filter === entry.value,
80
93
  variant: filter === entry.value ? "secondary" : "ghost",
81
94
  className: cn("h-7 px-2.5 font-mono text-xs uppercase tracking-[0.08em]", filter !== entry.value && "text-muted-foreground"),
82
95
  onClick: () => props.onFilterChange(entry.value),
83
96
  children: entry.label
84
- }, entry.label))
97
+ }, entry.label)), props.projectKey !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button, {
98
+ size: "sm",
99
+ variant: "ghost",
100
+ className: "h-7 px-2.5 font-mono text-xs uppercase tracking-[0.08em] text-muted-foreground",
101
+ onClick: () => props.onProjectChange(void 0),
102
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(X, { className: "size-3" }), "All projects"]
103
+ }) : null]
85
104
  }),
86
105
  runs.isError ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", {
87
106
  className: "text-sm text-status-failed",
@@ -95,6 +114,10 @@ function RunsPage(props) {
95
114
  className: "console-callout text-muted-foreground",
96
115
  children: "Run"
97
116
  }),
117
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
118
+ className: "console-callout text-muted-foreground",
119
+ children: "Project"
120
+ }),
98
121
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
99
122
  className: "console-callout text-muted-foreground",
100
123
  children: "State"
@@ -113,6 +136,7 @@ function RunsPage(props) {
113
136
  })
114
137
  ] }) }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableBody, { children: runs.isPending ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SkeletonRows, {}) : loaded.map((run) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RunRow, {
115
138
  run,
139
+ projects: projectList,
116
140
  rising: rising.has(run.runId),
117
141
  onOpen: () => props.onOpenRun(run.runId)
118
142
  }, run.runId)) })] })
@@ -129,6 +153,7 @@ function RunsPage(props) {
129
153
  }
130
154
  function RunRow(props) {
131
155
  const flash = useFlash(props.run.updatedAt);
156
+ const projectLabel = projectLabelForRun(props.projects, props.run);
132
157
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TableRow, {
133
158
  "data-flash": flash,
134
159
  className: cn("cursor-pointer", props.rising && "animate-in fade-in slide-in-from-bottom-1 duration-200"),
@@ -153,6 +178,11 @@ function RunRow(props) {
153
178
  })
154
179
  ]
155
180
  }),
181
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
182
+ className: "block max-w-40 truncate font-mono text-xs text-muted-foreground",
183
+ title: projectLabel,
184
+ children: projectLabel ?? "—"
185
+ }) }),
156
186
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StateBadge, {
157
187
  state: props.run.state,
158
188
  id: props.run.runId
@@ -234,7 +264,8 @@ function SkeletonRows() {
234
264
  1,
235
265
  2,
236
266
  3,
237
- 4
267
+ 4,
268
+ 5
238
269
  ].map((cell) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Skeleton, { className: "h-4 w-full max-w-32" }) }, cell)) }, row)) });
239
270
  }
240
271
  function EmptyState(props) {
@@ -0,0 +1,423 @@
1
+ import { o as __toESM } from "../_runtime.mjs";
2
+ import { c as require_jsx_runtime } from "../_libs/@radix-ui/react-arrow+[...].mjs";
3
+ import { u as require_react } from "../_libs/@floating-ui/react-dom+[...].mjs";
4
+ import { a as managedSandboxDeleteAction, b as useSandboxFleet, c as useDeleteManagedSandbox, o as managedSandboxDeleteErrorMessage, v as useRunTasks, y as useRuns } from "./hooks-CsVtQ1m-.mjs";
5
+ import { t as cn } from "./utils-C_uf36nf.mjs";
6
+ import { t as Button } from "./button-Btfpc86G.mjs";
7
+ import { n as CardContent, t as Card } from "./card-SXNbNwk5.mjs";
8
+ import { c as taskOrdinals, d as useClockTick, n as Skeleton, r as StateBadge, u as timeAgo } from "./bits-BIFjjEu8.mjs";
9
+ import { D as LoaderCircle, I as ExternalLink, J as Boxes, X as ArrowRight, r as X, s as Trash2 } from "../_libs/lucide-react.mjs";
10
+ import { a as TableHeader, i as TableHead, n as TableBody, o as TableRow, r as TableCell, t as Table } from "./table-B8aDcgVq.mjs";
11
+ import { t as SandboxesLens } from "./SandboxesLens-Bzc8NizP.mjs";
12
+ //#region node_modules/.nitro/vite/services/ssr/assets/SandboxesPage-C1Z6dVce.js
13
+ var import_jsx_runtime = require_jsx_runtime();
14
+ var import_react = /* @__PURE__ */ __toESM(require_react());
15
+ function SandboxesPage(props) {
16
+ const runs = useRuns();
17
+ useClockTick();
18
+ const loadedRuns = (runs.data?.pages ?? []).flatMap((page) => page.runs);
19
+ const selectedRun = loadedRuns.find((run) => run.runId === props.selectedRunId) ?? loadedRuns[0];
20
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", {
21
+ className: "grid gap-5",
22
+ children: [
23
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
24
+ className: "text-lg font-semibold tracking-tight",
25
+ children: "Sandboxes"
26
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
27
+ className: "text-sm text-muted-foreground",
28
+ children: "Managed fleet state and sandbox placement by run."
29
+ })] }),
30
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ManagedSandboxFleet, {}),
31
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RunPlacementHistory, {
32
+ runs,
33
+ loadedRuns,
34
+ selectedRun,
35
+ onSelectRun: props.onSelectRun,
36
+ onOpenRun: props.onOpenRun,
37
+ onOpenTask: props.onOpenTask
38
+ })
39
+ ]
40
+ });
41
+ }
42
+ function ManagedSandboxFleet() {
43
+ const sandboxFleet = useSandboxFleet();
44
+ const deleteSandbox = useDeleteManagedSandbox();
45
+ const [confirmingSandboxId, setConfirmingSandboxId] = (0, import_react.useState)(null);
46
+ const [pendingSandboxId, setPendingSandboxId] = (0, import_react.useState)(null);
47
+ const [feedback, setFeedback] = (0, import_react.useState)(null);
48
+ async function confirmDelete(sandbox) {
49
+ setPendingSandboxId(sandbox.sandboxId);
50
+ setFeedback(null);
51
+ try {
52
+ const result = await deleteSandbox.mutateAsync(sandbox.sandboxId);
53
+ setConfirmingSandboxId(null);
54
+ setFeedback(deleteSuccessFeedback(result));
55
+ } catch (error) {
56
+ setFeedback({
57
+ tone: "error",
58
+ sandboxId: sandbox.sandboxId,
59
+ message: managedSandboxDeleteErrorMessage(error)
60
+ });
61
+ } finally {
62
+ setPendingSandboxId(null);
63
+ }
64
+ }
65
+ const rows = sandboxFleet.data?.sandboxes ?? [];
66
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, {
67
+ className: "py-0",
68
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(CardContent, {
69
+ className: "grid gap-3 p-4",
70
+ children: [
71
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
72
+ className: "flex min-w-0 flex-wrap items-center justify-between gap-2",
73
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
74
+ className: "min-w-0",
75
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", {
76
+ className: "console-callout",
77
+ children: "Managed fleet"
78
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
79
+ className: "mt-1 text-xs text-muted-foreground",
80
+ "data-num": true,
81
+ children: sandboxFleet.isPending ? "Loading" : `${rows.length} sandboxes`
82
+ })]
83
+ })
84
+ }),
85
+ sandboxFleet.isError ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", {
86
+ className: "text-sm text-destructive",
87
+ children: ["Cannot list managed sandboxes: ", String(sandboxFleet.error)]
88
+ }) : sandboxFleet.isPending ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
89
+ className: "grid gap-2",
90
+ children: [
91
+ 0,
92
+ 1,
93
+ 2
94
+ ].map((row) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Skeleton, { className: "h-10 w-full" }, row))
95
+ }) : rows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
96
+ className: "rounded-md border border-dashed py-8 text-center",
97
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Boxes, { className: "mx-auto size-5 text-muted-foreground" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
98
+ className: "mt-3 text-sm font-medium",
99
+ children: "No managed sandboxes"
100
+ })]
101
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Table, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TableRow, { children: [
102
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { children: "Sandbox" }),
103
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { children: "Lifecycle" }),
104
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { children: "Liveness" }),
105
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { children: "Host" }),
106
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { children: "Updated" }),
107
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
108
+ className: "text-right",
109
+ children: "Delete"
110
+ })
111
+ ] }) }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableBody, { children: rows.map((sandbox) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ManagedSandboxRow, {
112
+ sandbox,
113
+ confirming: confirmingSandboxId === sandbox.sandboxId,
114
+ pending: pendingSandboxId === sandbox.sandboxId,
115
+ disabled: deleteSandbox.isPending,
116
+ onRequestDelete: () => {
117
+ setFeedback(null);
118
+ setConfirmingSandboxId(sandbox.sandboxId);
119
+ },
120
+ onCancelDelete: () => setConfirmingSandboxId(null),
121
+ onConfirmDelete: () => void confirmDelete(sandbox)
122
+ }, sandbox.sandboxId)) })] }),
123
+ feedback ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", {
124
+ role: feedback.tone === "error" ? "alert" : "status",
125
+ className: cn("text-xs", feedback.tone === "error" ? "text-destructive" : "text-muted-foreground"),
126
+ children: [feedback.sandboxId ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
127
+ className: "font-mono",
128
+ "data-num": true,
129
+ children: [
130
+ feedback.sandboxId,
131
+ ":",
132
+ " "
133
+ ]
134
+ }) : null, feedback.message]
135
+ }) : null
136
+ ]
137
+ })
138
+ });
139
+ }
140
+ function ManagedSandboxRow(props) {
141
+ const action = managedSandboxDeleteAction(props.sandbox, props.pending, props.confirming);
142
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TableRow, { children: [
143
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TableCell, {
144
+ className: "max-w-[16rem]",
145
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
146
+ className: "truncate font-mono text-xs text-foreground",
147
+ title: props.sandbox.sandboxId,
148
+ "data-num": true,
149
+ children: props.sandbox.sandboxId
150
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
151
+ className: "mt-1 truncate font-mono text-[11px] text-muted-foreground",
152
+ title: props.sandbox.instanceId,
153
+ "data-num": true,
154
+ children: props.sandbox.instanceId
155
+ })]
156
+ }),
157
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StateBadge, {
158
+ state: props.sandbox.status,
159
+ id: props.sandbox.sandboxId
160
+ }) }),
161
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StateBadge, {
162
+ state: props.sandbox.sandboxStatus ?? "unknown",
163
+ id: props.sandbox.sandboxId
164
+ }) }),
165
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TableCell, {
166
+ className: "max-w-[13rem]",
167
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
168
+ className: "truncate font-mono text-xs",
169
+ title: props.sandbox.hostId,
170
+ "data-num": true,
171
+ children: props.sandbox.hostId
172
+ }), props.sandbox.hostPoolId ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
173
+ className: "mt-1 truncate font-mono text-[11px] text-muted-foreground",
174
+ title: props.sandbox.hostPoolId,
175
+ "data-num": true,
176
+ children: props.sandbox.hostPoolId
177
+ }) : null]
178
+ }),
179
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
180
+ className: "font-mono text-[11px] text-muted-foreground",
181
+ title: props.sandbox.updatedAt,
182
+ "data-num": true,
183
+ children: timeAgo(props.sandbox.updatedAt)
184
+ }),
185
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
186
+ className: "text-right",
187
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ManagedSandboxDeleteControls, {
188
+ action,
189
+ cleanupQueued: props.sandbox.status === "deleting",
190
+ disabled: props.disabled,
191
+ sandboxId: props.sandbox.sandboxId,
192
+ onRequestDelete: props.onRequestDelete,
193
+ onCancelDelete: props.onCancelDelete,
194
+ onConfirmDelete: props.onConfirmDelete
195
+ })
196
+ })
197
+ ] });
198
+ }
199
+ function ManagedSandboxDeleteControls(props) {
200
+ if (props.action === "pending") return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button, {
201
+ size: "xs",
202
+ variant: "outline",
203
+ disabled: true,
204
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoaderCircle, { className: "size-3 animate-spin" }), "Deleting"]
205
+ });
206
+ if (props.action === "confirm") return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
207
+ className: "flex justify-end gap-1",
208
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button, {
209
+ type: "button",
210
+ size: "xs",
211
+ variant: "destructive",
212
+ disabled: props.disabled,
213
+ onClick: props.onConfirmDelete,
214
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Trash2, { className: "size-3" }), "Confirm delete"]
215
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
216
+ type: "button",
217
+ size: "icon-xs",
218
+ variant: "ghost",
219
+ "aria-label": `Cancel deleting ${props.sandboxId}`,
220
+ title: "Cancel",
221
+ disabled: props.disabled,
222
+ onClick: props.onCancelDelete,
223
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(X, { className: "size-3" })
224
+ })]
225
+ });
226
+ if (props.action === "request") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
227
+ type: "button",
228
+ size: "icon-xs",
229
+ variant: "ghost",
230
+ "aria-label": `Delete stale managed sandbox ${props.sandboxId}`,
231
+ title: "Delete stale sandbox",
232
+ disabled: props.disabled,
233
+ onClick: props.onRequestDelete,
234
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Trash2, { className: "size-3" })
235
+ });
236
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
237
+ className: "text-xs text-muted-foreground",
238
+ children: props.cleanupQueued ? "Cleanup queued" : "—"
239
+ });
240
+ }
241
+ function deleteSuccessFeedback(result) {
242
+ if (result.status === "cleanup_queued") return {
243
+ tone: "info",
244
+ sandboxId: result.sandboxId,
245
+ message: "Cleanup queued."
246
+ };
247
+ return {
248
+ tone: "info",
249
+ sandboxId: result.sandboxId,
250
+ message: "Deleted."
251
+ };
252
+ }
253
+ function RunPlacementHistory(props) {
254
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
255
+ className: "grid gap-3",
256
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", {
257
+ className: "console-callout",
258
+ children: "Run placement history"
259
+ }) }), props.runs.isError ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", {
260
+ className: "text-sm text-destructive",
261
+ children: ["Cannot list runs: ", String(props.runs.error)]
262
+ }) : props.runs.isPending ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadingLayout, {}) : props.loadedRuns.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EmptyState, {}) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
263
+ className: "grid min-w-0 gap-4 lg:grid-cols-[20rem_minmax(0,1fr)]",
264
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(RunChooser, {
265
+ runs: props.loadedRuns,
266
+ selectedRunId: props.selectedRun?.runId,
267
+ hasMore: props.runs.hasNextPage,
268
+ loadingMore: props.runs.isFetchingNextPage,
269
+ onLoadMore: () => void props.runs.fetchNextPage(),
270
+ onSelect: props.onSelectRun
271
+ }), props.selectedRun ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectedRunSandboxes, {
272
+ run: props.selectedRun,
273
+ onOpenRun: props.onOpenRun,
274
+ onOpenTask: props.onOpenTask
275
+ }) : null]
276
+ })]
277
+ });
278
+ }
279
+ function LoadingLayout() {
280
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
281
+ className: "grid gap-4 lg:grid-cols-[20rem_minmax(0,1fr)]",
282
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, {
283
+ className: "gap-2 p-3",
284
+ children: [
285
+ 0,
286
+ 1,
287
+ 2
288
+ ].map((row) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Skeleton, { className: "h-12 w-full" }, row))
289
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Card, {
290
+ className: "p-4",
291
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Skeleton, { className: "h-5 w-40" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Skeleton, { className: "mt-4 h-32 w-full" })]
292
+ })]
293
+ });
294
+ }
295
+ function EmptyState() {
296
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
297
+ className: "rounded-lg border border-dashed py-12 text-center",
298
+ children: [
299
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Boxes, { className: "mx-auto size-5 text-muted-foreground" }),
300
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
301
+ className: "mt-3 console-callout",
302
+ children: "No runs yet"
303
+ }),
304
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
305
+ className: "mt-2 text-sm text-muted-foreground",
306
+ children: "Sandbox placement appears after your account has task runs."
307
+ })
308
+ ]
309
+ });
310
+ }
311
+ function RunChooser(props) {
312
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Card, {
313
+ className: "gap-2 p-2",
314
+ children: [
315
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
316
+ className: "px-2 py-1",
317
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", {
318
+ className: "console-callout",
319
+ children: "Recent runs"
320
+ })
321
+ }),
322
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
323
+ className: "grid gap-1",
324
+ children: props.runs.map((run) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RunChoice, {
325
+ run,
326
+ selected: run.runId === props.selectedRunId,
327
+ onSelect: props.onSelect
328
+ }, run.runId))
329
+ }),
330
+ props.hasMore ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
331
+ type: "button",
332
+ disabled: props.loadingMore,
333
+ onClick: props.onLoadMore,
334
+ className: "mt-1 rounded-md px-2 py-1.5 text-left font-mono text-[11px] uppercase tracking-[0.08em] text-muted-foreground transition-colors hover:bg-secondary/60 disabled:cursor-wait disabled:opacity-60",
335
+ children: props.loadingMore ? "Loading" : "Load more"
336
+ }) : null
337
+ ]
338
+ });
339
+ }
340
+ function RunChoice(props) {
341
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("button", {
342
+ type: "button",
343
+ "aria-pressed": props.selected,
344
+ onClick: () => props.onSelect(props.run.runId),
345
+ className: cn("grid min-w-0 gap-1 rounded-md px-2 py-2 text-left transition-colors", props.selected ? "bg-secondary text-foreground" : "text-muted-foreground hover:bg-secondary/60 hover:text-foreground"),
346
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
347
+ className: "flex min-w-0 items-center gap-2",
348
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
349
+ className: "min-w-0 flex-1 truncate text-sm font-medium",
350
+ children: props.run.name
351
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StateBadge, {
352
+ state: props.run.state,
353
+ id: props.run.runId
354
+ })]
355
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
356
+ className: "flex min-w-0 items-center gap-2 font-mono text-[11px]",
357
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
358
+ className: "truncate",
359
+ title: props.run.runId,
360
+ children: props.run.runId
361
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
362
+ className: "shrink-0",
363
+ title: props.run.updatedAt,
364
+ "data-num": true,
365
+ children: timeAgo(props.run.updatedAt)
366
+ })]
367
+ })]
368
+ });
369
+ }
370
+ function SelectedRunSandboxes(props) {
371
+ const tasks = useRunTasks(props.run.runId);
372
+ const taskList = tasks.data?.tasks ?? [];
373
+ const ordinals = taskOrdinals(taskList);
374
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
375
+ className: "grid min-w-0 gap-3",
376
+ children: [
377
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Card, {
378
+ className: "py-0",
379
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(CardContent, {
380
+ className: "flex min-w-0 flex-wrap items-center gap-3 p-4",
381
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
382
+ className: "min-w-0 flex-1",
383
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
384
+ className: "flex min-w-0 items-center gap-2",
385
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", {
386
+ className: "min-w-0 truncate text-base font-semibold",
387
+ children: props.run.name
388
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StateBadge, {
389
+ state: props.run.state,
390
+ id: props.run.runId
391
+ })]
392
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
393
+ className: "mt-1 truncate font-mono text-xs text-muted-foreground",
394
+ children: props.run.runId
395
+ })]
396
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("button", {
397
+ type: "button",
398
+ onClick: () => props.onOpenRun(props.run.runId),
399
+ className: "flex items-center gap-1.5 rounded-md border px-2.5 py-1 font-mono text-[11px] uppercase tracking-[0.08em] text-muted-foreground transition-colors hover:bg-secondary/60 hover:text-foreground",
400
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExternalLink, { className: "size-3.5" }), "Open run"]
401
+ })]
402
+ })
403
+ }),
404
+ tasks.isError ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", {
405
+ className: "text-sm text-destructive",
406
+ children: ["Cannot load tasks: ", String(tasks.error)]
407
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SandboxesLens, {
408
+ tasks: taskList,
409
+ ordinals,
410
+ pending: tasks.isPending,
411
+ onSelect: (taskId) => props.onOpenTask(props.run.runId, taskId)
412
+ }),
413
+ !tasks.isPending && taskList.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("button", {
414
+ type: "button",
415
+ onClick: () => props.onOpenRun(props.run.runId),
416
+ className: "inline-flex w-fit items-center gap-1.5 rounded-md px-2 py-1 font-mono text-[11px] uppercase tracking-[0.08em] text-muted-foreground transition-colors hover:bg-secondary/60 hover:text-foreground",
417
+ children: ["Open run by sandbox", /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ArrowRight, { className: "size-3.5" })]
418
+ }) : null
419
+ ]
420
+ });
421
+ }
422
+ //#endregion
423
+ export { SandboxesPage };
@@ -2,14 +2,14 @@ import { o as __toESM } from "../_runtime.mjs";
2
2
  import { c as require_jsx_runtime } from "../_libs/@radix-ui/react-arrow+[...].mjs";
3
3
  import { d as Link } from "../_libs/@tanstack/react-router+[...].mjs";
4
4
  import { u as require_react } from "../_libs/@floating-ui/react-dom+[...].mjs";
5
- import { c as useRunTasks, d as useSendTaskMessage, f as useTaskActivity, h as useTaskWorkpad, m as useTaskPiSessionRaw, p as useTaskPiSession, t as ApiError, u as useSaveTaskWorkpad } from "./hooks-COIYuQzf.mjs";
5
+ import { D as useTaskWorkpad, E as useTaskPiSessionRaw, S as useSendTaskMessage, T as useTaskPiSession, t as ApiError, v as useRunTasks, w as useTaskActivity, x as useSaveTaskWorkpad } from "./hooks-CsVtQ1m-.mjs";
6
6
  import { t as cn } from "./utils-C_uf36nf.mjs";
7
7
  import { t as Button } from "./button-Btfpc86G.mjs";
8
8
  import { a as fmtTime, c as taskOrdinals, d as useClockTick, n as Skeleton, r as StateBadge, s as taskDisplayName, t as Badge } from "./bits-BIFjjEu8.mjs";
9
- import { B as ChevronRight, K as ArrowDown, V as ChevronLeft, g as Route, h as Save, p as SendHorizontal, r as X, v as Pencil, x as MessageSquarePlus } from "../_libs/lucide-react.mjs";
9
+ import { G as ChevronRight, K as ChevronLeft, Z as ArrowDown, g as Route, h as Save, p as SendHorizontal, r as X, v as Pencil, x as MessageSquarePlus } from "../_libs/lucide-react.mjs";
10
10
  import { t as Markdown } from "../_libs/react-markdown+[...].mjs";
11
11
  import { t as remarkGfm } from "../_libs/remark-gfm.mjs";
12
- //#region node_modules/.nitro/vite/services/ssr/assets/TranscriptPage-DaSIDCKk.js
12
+ //#region node_modules/.nitro/vite/services/ssr/assets/TranscriptPage-BcomoTls.js
13
13
  var import_jsx_runtime = require_jsx_runtime();
14
14
  var import_react = /* @__PURE__ */ __toESM(require_react());
15
15
  /** Renders normalized Pi transcript items from the registered Pi session file. */
@@ -3,9 +3,9 @@ import { c as require_jsx_runtime } from "../_libs/@radix-ui/react-arrow+[...].m
3
3
  import { u as require_react } from "../_libs/@floating-ui/react-dom+[...].mjs";
4
4
  import { a as CardTitle, i as CardHeader, n as CardContent, r as CardDescription, t as Card } from "./card-SXNbNwk5.mjs";
5
5
  import { n as formatAuthError, t as authClient } from "./auth-validation-D9jyYJqc.mjs";
6
- import { n as useConsoleSession } from "./App-CwFtUgAz.mjs";
6
+ import { n as useConsoleSession } from "./App-C-XaVKoO.mjs";
7
7
  import { t as AccountProfileForm } from "./account-forms-CsothyLo.mjs";
8
- //#region node_modules/.nitro/vite/services/ssr/assets/account-DzluYS58.js
8
+ //#region node_modules/.nitro/vite/services/ssr/assets/account-Cp0s_IQK.js
9
9
  var import_jsx_runtime = require_jsx_runtime();
10
10
  var import_react = /* @__PURE__ */ __toESM(require_react());
11
11
  function AccountRoute() {
@@ -2,7 +2,7 @@ import { o as __toESM } from "../_runtime.mjs";
2
2
  import { c as require_jsx_runtime } from "../_libs/@radix-ui/react-arrow+[...].mjs";
3
3
  import { u as require_react } from "../_libs/@floating-ui/react-dom+[...].mjs";
4
4
  import { t as Button } from "./button-Btfpc86G.mjs";
5
- import { D as LoaderCircle, E as Lock, R as CircleCheck, h as Save, i as User, u as ShieldCheck } from "../_libs/lucide-react.mjs";
5
+ import { D as LoaderCircle, E as Lock, U as CircleCheck, h as Save, i as User, u as ShieldCheck } from "../_libs/lucide-react.mjs";
6
6
  import { o as validateAccountProfileInput, s as validateChangePasswordInput } from "./auth-validation-D9jyYJqc.mjs";
7
7
  import { n as AuthMessage, t as AuthField } from "./signin-form-CQDi-0A5.mjs";
8
8
  //#region node_modules/.nitro/vite/services/ssr/assets/account-forms-CsothyLo.js
@@ -4,7 +4,7 @@ import { d as Link, f as useNavigate } from "../_libs/@tanstack/react-router+[..
4
4
  import { u as require_react } from "../_libs/@floating-ui/react-dom+[...].mjs";
5
5
  import { t as cn } from "./utils-C_uf36nf.mjs";
6
6
  import { t as Button } from "./button-Btfpc86G.mjs";
7
- import { D as LoaderCircle, G as ArrowRight, L as CircleX, R as CircleCheck, c as Terminal, i as User, u as ShieldCheck } from "../_libs/lucide-react.mjs";
7
+ import { D as LoaderCircle, U as CircleCheck, V as CircleX, X as ArrowRight, c as Terminal, i as User, u as ShieldCheck } from "../_libs/lucide-react.mjs";
8
8
  import { i as buildConsoleHref } from "./auth-redirect-BI2bC7qX.mjs";
9
9
  import { n as formatAuthError, r as isEmailVerificationAuthError, t as authClient } from "./auth-validation-D9jyYJqc.mjs";
10
10
  import { r as SignInForm } from "./signin-form-CQDi-0A5.mjs";