@ashlr/hub 3.10.0 → 3.11.0

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 (534) hide show
  1. package/CHANGELOG.md +156 -0
  2. package/README.md +343 -82
  3. package/dist/authority-surface.json +109 -29
  4. package/dist/build-identity.json +2 -2
  5. package/dist/cli/cloud.d.ts +39 -0
  6. package/dist/cli/cloud.js +448 -0
  7. package/dist/cli/cloud.js.map +1 -0
  8. package/dist/cli/completions.js +4 -0
  9. package/dist/cli/completions.js.map +1 -1
  10. package/dist/cli/help.js +2 -0
  11. package/dist/cli/help.js.map +1 -1
  12. package/dist/cli/index.d.ts +1 -0
  13. package/dist/cli/index.js +10 -0
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/core/cloud/backlog.d.ts +17 -0
  16. package/dist/core/cloud/backlog.js +177 -0
  17. package/dist/core/cloud/backlog.js.map +1 -0
  18. package/dist/core/cloud/budget.d.ts +19 -0
  19. package/dist/core/cloud/budget.js +99 -0
  20. package/dist/core/cloud/budget.js.map +1 -0
  21. package/dist/core/cloud/checkout.d.ts +41 -0
  22. package/dist/core/cloud/checkout.js +168 -0
  23. package/dist/core/cloud/checkout.js.map +1 -0
  24. package/dist/core/cloud/cloud-api.d.ts +86 -0
  25. package/dist/core/cloud/cloud-api.js +599 -0
  26. package/dist/core/cloud/cloud-api.js.map +1 -0
  27. package/dist/core/cloud/delivery-contract.d.ts +25 -0
  28. package/dist/core/cloud/delivery-contract.js +138 -0
  29. package/dist/core/cloud/delivery-contract.js.map +1 -0
  30. package/dist/core/cloud/improvement-backlog.d.ts +11 -0
  31. package/dist/core/cloud/improvement-backlog.js +26 -0
  32. package/dist/core/cloud/improvement-backlog.js.map +1 -0
  33. package/dist/core/cloud/launcher.d.ts +68 -0
  34. package/dist/core/cloud/launcher.js +312 -0
  35. package/dist/core/cloud/launcher.js.map +1 -0
  36. package/dist/core/cloud/service.d.ts +51 -0
  37. package/dist/core/cloud/service.js +215 -0
  38. package/dist/core/cloud/service.js.map +1 -0
  39. package/dist/core/cloud/store.d.ts +41 -0
  40. package/dist/core/cloud/store.js +278 -0
  41. package/dist/core/cloud/store.js.map +1 -0
  42. package/dist/core/cloud/tracker.d.ts +30 -0
  43. package/dist/core/cloud/tracker.js +152 -0
  44. package/dist/core/cloud/tracker.js.map +1 -0
  45. package/dist/core/cloud/types.d.ts +233 -0
  46. package/dist/core/cloud/types.js +73 -0
  47. package/dist/core/cloud/types.js.map +1 -0
  48. package/dist/core/daemon/capacity-publisher.d.ts +19 -0
  49. package/dist/core/daemon/capacity-publisher.js +49 -2
  50. package/dist/core/daemon/capacity-publisher.js.map +1 -1
  51. package/dist/core/daemon/overnight-status.d.ts +13 -0
  52. package/dist/core/daemon/overnight-status.js +93 -8
  53. package/dist/core/daemon/overnight-status.js.map +1 -1
  54. package/dist/core/fleet/dispatch-router.js +26 -9
  55. package/dist/core/fleet/dispatch-router.js.map +1 -1
  56. package/dist/core/fleet/fleet-runtime-journal.js +12 -5
  57. package/dist/core/fleet/fleet-runtime-journal.js.map +1 -1
  58. package/dist/core/fleet/fleet-types.d.ts +13 -0
  59. package/dist/core/routing/budget-store.js +11 -5
  60. package/dist/core/routing/budget-store.js.map +1 -1
  61. package/dist/core/routing/capacity-history-api.d.ts +30 -0
  62. package/dist/core/routing/capacity-history-api.js +147 -0
  63. package/dist/core/routing/capacity-history-api.js.map +1 -0
  64. package/dist/core/routing/capacity-history-types.d.ts +63 -0
  65. package/dist/core/routing/capacity-history-types.js +18 -0
  66. package/dist/core/routing/capacity-history-types.js.map +1 -0
  67. package/dist/core/routing/capacity-history.d.ts +130 -0
  68. package/dist/core/routing/capacity-history.js +654 -0
  69. package/dist/core/routing/capacity-history.js.map +1 -0
  70. package/dist/core/routing/headroom.d.ts +5 -1
  71. package/dist/core/routing/headroom.js +82 -41
  72. package/dist/core/routing/headroom.js.map +1 -1
  73. package/dist/core/routing/router.d.ts +8 -1
  74. package/dist/core/routing/router.js +49 -16
  75. package/dist/core/routing/router.js.map +1 -1
  76. package/dist/core/routing/seat-reasons.d.ts +35 -0
  77. package/dist/core/routing/seat-reasons.js +48 -0
  78. package/dist/core/routing/seat-reasons.js.map +1 -0
  79. package/dist/core/routing/types.d.ts +37 -0
  80. package/dist/core/routing/types.js.map +1 -1
  81. package/dist/core/verse/activity-api.d.ts +3 -1
  82. package/dist/core/verse/activity-api.js +16 -1
  83. package/dist/core/verse/activity-api.js.map +1 -1
  84. package/dist/core/verse/activity.d.ts +7 -0
  85. package/dist/core/verse/activity.js +23 -0
  86. package/dist/core/verse/activity.js.map +1 -1
  87. package/dist/core/verse/fleet-history-types.d.ts +12 -4
  88. package/dist/core/verse/fleet-history-types.js +4 -2
  89. package/dist/core/verse/fleet-history-types.js.map +1 -1
  90. package/dist/core/verse/fleet-live-api.d.ts +14 -1
  91. package/dist/core/verse/fleet-live-api.js +31 -11
  92. package/dist/core/verse/fleet-live-api.js.map +1 -1
  93. package/dist/core/verse/preferences.d.ts +3 -1
  94. package/dist/core/verse/preferences.js +5 -2
  95. package/dist/core/verse/preferences.js.map +1 -1
  96. package/dist/core/verse/types.d.ts +5 -1
  97. package/dist/core/verse/types.js.map +1 -1
  98. package/dist/core/verse/verse-api.d.ts +1 -1
  99. package/dist/core/verse/verse-api.js +4 -1
  100. package/dist/core/verse/verse-api.js.map +1 -1
  101. package/dist/core/vision/leader-cloud.d.ts +63 -0
  102. package/dist/core/vision/leader-cloud.js +134 -0
  103. package/dist/core/vision/leader-cloud.js.map +1 -0
  104. package/dist/core/vision/leader.d.ts +6 -0
  105. package/dist/core/vision/leader.js +12 -1
  106. package/dist/core/vision/leader.js.map +1 -1
  107. package/dist/core/web/public/next/assets/{ActionMenu-DhbNne-M.js → ActionMenu-CQvNJvHY.js} +2 -2
  108. package/dist/core/web/public/next/assets/{ActionMenu-DhbNne-M.js.map → ActionMenu-CQvNJvHY.js.map} +1 -1
  109. package/dist/core/web/public/next/assets/Advanced-Bywv_iYR.css +1 -0
  110. package/dist/core/web/public/next/assets/Advanced-DEM93sKI.js +2 -0
  111. package/dist/core/web/public/next/assets/Advanced-DEM93sKI.js.map +1 -0
  112. package/dist/core/web/public/next/assets/{App-DyBg1v_q.js → App-CimXmK0L.js} +5 -5
  113. package/dist/core/web/public/next/assets/{App-DyBg1v_q.js.map → App-CimXmK0L.js.map} +1 -1
  114. package/dist/core/web/public/next/assets/AppsSection-D6U-dSj6.js +2 -0
  115. package/dist/core/web/public/next/assets/AppsSection-D6U-dSj6.js.map +1 -0
  116. package/dist/core/web/public/next/assets/AreaTrend-LD9lCPkT.js +2 -0
  117. package/dist/core/web/public/next/assets/AreaTrend-LD9lCPkT.js.map +1 -0
  118. package/dist/core/web/public/next/assets/AutonomySection-3V9pUyxm.js +2 -0
  119. package/dist/core/web/public/next/assets/{AutonomySection-CoMngwNB.js.map → AutonomySection-3V9pUyxm.js.map} +1 -1
  120. package/dist/core/web/public/next/assets/BranchBar-BZNQ50YE.css +1 -0
  121. package/dist/core/web/public/next/assets/BranchBar-U8UdpfEB.js +2 -0
  122. package/dist/core/web/public/next/assets/BranchBar-U8UdpfEB.js.map +1 -0
  123. package/dist/core/web/public/next/assets/BudgetControl-DOTlMSmW.js +2 -0
  124. package/dist/core/web/public/next/assets/BudgetControl-DOTlMSmW.js.map +1 -0
  125. package/dist/core/web/public/next/assets/BurnDown-x4PWH9JF.js +2 -0
  126. package/dist/core/web/public/next/assets/BurnDown-x4PWH9JF.js.map +1 -0
  127. package/dist/core/web/public/next/assets/{Button-0-nNbv1h.js → Button-DYv_KKxr.js} +2 -2
  128. package/dist/core/web/public/next/assets/{Button-0-nNbv1h.js.map → Button-DYv_KKxr.js.map} +1 -1
  129. package/dist/core/web/public/next/assets/CapacityStrip-C667yQe8.js +2 -0
  130. package/dist/core/web/public/next/assets/CapacityStrip-C667yQe8.js.map +1 -0
  131. package/dist/core/web/public/next/assets/CapacityStrip-Cc28CyWk.css +1 -0
  132. package/dist/core/web/public/next/assets/ChatSection-CCcIPpOq.js +3 -0
  133. package/dist/core/web/public/next/assets/{ChatSection-B9cdRKUh.js.map → ChatSection-CCcIPpOq.js.map} +1 -1
  134. package/dist/core/web/public/next/assets/CloudBudgetForm-DJeJvBEu.js +2 -0
  135. package/dist/core/web/public/next/assets/CloudBudgetForm-DJeJvBEu.js.map +1 -0
  136. package/dist/core/web/public/next/assets/{CommandPalette-GpeCSrPy.js → CommandPalette-FiD4N8XD.js} +2 -2
  137. package/dist/core/web/public/next/assets/{CommandPalette-GpeCSrPy.js.map → CommandPalette-FiD4N8XD.js.map} +1 -1
  138. package/dist/core/web/public/next/assets/CommandSection-DN8KwH-X.js +2 -0
  139. package/dist/core/web/public/next/assets/CommandSection-DN8KwH-X.js.map +1 -0
  140. package/dist/core/web/public/next/assets/Composer-ByzxOJK6.css +1 -0
  141. package/dist/core/web/public/next/assets/Composer.module-C8U73KdQ.js +2 -0
  142. package/dist/core/web/public/next/assets/{Composer.module-DJMdrqNt.js.map → Composer.module-C8U73KdQ.js.map} +1 -1
  143. package/dist/core/web/public/next/assets/DiffPane-BAvvbBsf.css +1 -0
  144. package/dist/core/web/public/next/assets/DiffPane-DLJ3gGGK.js +2 -0
  145. package/dist/core/web/public/next/assets/DiffPane-DLJ3gGGK.js.map +1 -0
  146. package/dist/core/web/public/next/assets/{DiffViewer-tOGWk0CA.js → DiffViewer-B7NWPjIO.js} +2 -2
  147. package/dist/core/web/public/next/assets/{DiffViewer-tOGWk0CA.js.map → DiffViewer-B7NWPjIO.js.map} +1 -1
  148. package/dist/core/web/public/next/assets/DockHost-B4RaYOET.css +1 -0
  149. package/dist/core/web/public/next/assets/DockHost-DvR-hPhZ.js +2 -0
  150. package/dist/core/web/public/next/assets/DockHost-DvR-hPhZ.js.map +1 -0
  151. package/dist/core/web/public/next/assets/{EmptyState-DdJ4CxtO.js → EmptyState-DhNgDDrF.js} +2 -2
  152. package/dist/core/web/public/next/assets/{EmptyState-DdJ4CxtO.js.map → EmptyState-DhNgDDrF.js.map} +1 -1
  153. package/dist/core/web/public/next/assets/{Epistemic-BLjM5y_y.js → Epistemic-uARPnx9x.js} +2 -2
  154. package/dist/core/web/public/next/assets/{Epistemic-BLjM5y_y.js.map → Epistemic-uARPnx9x.js.map} +1 -1
  155. package/dist/core/web/public/next/assets/FleetSection-CFiWeOEs.css +1 -0
  156. package/dist/core/web/public/next/assets/FleetSection-D_zRBCub.js +3 -0
  157. package/dist/core/web/public/next/assets/FleetSection-D_zRBCub.js.map +1 -0
  158. package/dist/core/web/public/next/assets/Funnel-CL8uHONq.js +2 -0
  159. package/dist/core/web/public/next/assets/Funnel-CL8uHONq.js.map +1 -0
  160. package/dist/core/web/public/next/assets/GearTray-C7k4l_BW.js +2 -0
  161. package/dist/core/web/public/next/assets/GearTray-C7k4l_BW.js.map +1 -0
  162. package/dist/core/web/public/next/assets/GrowthSection-DwdNSGj8.js +2 -0
  163. package/dist/core/web/public/next/assets/GrowthSection-DwdNSGj8.js.map +1 -0
  164. package/dist/core/web/public/next/assets/HandoffDialog-FPVOqOMN.js +2 -0
  165. package/dist/core/web/public/next/assets/HandoffDialog-FPVOqOMN.js.map +1 -0
  166. package/dist/core/web/public/next/assets/{Input-CTu0CycC.js → Input-B9-VLcHS.js} +2 -2
  167. package/dist/core/web/public/next/assets/{Input-CTu0CycC.js.map → Input-B9-VLcHS.js.map} +1 -1
  168. package/dist/core/web/public/next/assets/{LeaderCard-BuSDeATv.js → LeaderCard-4R0BhDzT.js} +2 -2
  169. package/dist/core/web/public/next/assets/{LeaderCard-BuSDeATv.js.map → LeaderCard-4R0BhDzT.js.map} +1 -1
  170. package/dist/core/web/public/next/assets/{MatrixHeatmap-9dKgJ_pT.css → MatrixHeatmap-Bmnvo1l1.css} +1 -1
  171. package/dist/core/web/public/next/assets/MatrixHeatmap-DiuushcS.js +2 -0
  172. package/dist/core/web/public/next/assets/MatrixHeatmap-DiuushcS.js.map +1 -0
  173. package/dist/core/web/public/next/assets/McpSection-CJ__OJKl.js +2 -0
  174. package/dist/core/web/public/next/assets/{McpSection-1UncWBpW.js.map → McpSection-CJ__OJKl.js.map} +1 -1
  175. package/dist/core/web/public/next/assets/MessageMarkdown-Cgh5f1-Q.css +1 -0
  176. package/dist/core/web/public/next/assets/MessageMarkdown-qWKyJvAQ.js +3 -0
  177. package/dist/core/web/public/next/assets/{MessageMarkdown-C4pl9LI5.js.map → MessageMarkdown-qWKyJvAQ.js.map} +1 -1
  178. package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-CZsF77ZM.js → MessageMarkdownRenderer-x05TrsrW.js} +2 -2
  179. package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-CZsF77ZM.js.map → MessageMarkdownRenderer-x05TrsrW.js.map} +1 -1
  180. package/dist/core/web/public/next/assets/{Meter-C18ciKz4.js → Meter-D-hncpkO.js} +2 -2
  181. package/dist/core/web/public/next/assets/{Meter-C18ciKz4.js.map → Meter-D-hncpkO.js.map} +1 -1
  182. package/dist/core/web/public/next/assets/MindSection-BjXHkQPS.js +2 -0
  183. package/dist/core/web/public/next/assets/MindSection-BjXHkQPS.js.map +1 -0
  184. package/dist/core/web/public/next/assets/MutationTokenDialog-SkRxqV_I.js +2 -0
  185. package/dist/core/web/public/next/assets/MutationTokenDialog-SkRxqV_I.js.map +1 -0
  186. package/dist/core/web/public/next/assets/NeedsYouDrawer-BpvidnM2.css +1 -0
  187. package/dist/core/web/public/next/assets/NeedsYouDrawer-rSd1ZHAR.js +2 -0
  188. package/dist/core/web/public/next/assets/NeedsYouDrawer-rSd1ZHAR.js.map +1 -0
  189. package/dist/core/web/public/next/assets/NeedsYouList-CG-nB1tr.js +2 -0
  190. package/dist/core/web/public/next/assets/NeedsYouList-CG-nB1tr.js.map +1 -0
  191. package/dist/core/web/public/next/assets/NeedsYouList-CruOt4JT.css +1 -0
  192. package/dist/core/web/public/next/assets/NewChatDialog-BeDQ1eW3.js +3 -0
  193. package/dist/core/web/public/next/assets/{NewChatDialog-B_BsS9pr.js.map → NewChatDialog-BeDQ1eW3.js.map} +1 -1
  194. package/dist/core/web/public/next/assets/OnboardingFlow-CkTZtt-m.js +2 -0
  195. package/dist/core/web/public/next/assets/{OnboardingFlow-CtCPpgoX.js.map → OnboardingFlow-CkTZtt-m.js.map} +1 -1
  196. package/dist/core/web/public/next/assets/PreviewPane-DoMsJSG3.css +1 -0
  197. package/dist/core/web/public/next/assets/PreviewPane-kzbbSK4u.js +2 -0
  198. package/dist/core/web/public/next/assets/PreviewPane-kzbbSK4u.js.map +1 -0
  199. package/dist/core/web/public/next/assets/RailStatus-D-t2gPae.js +2 -0
  200. package/dist/core/web/public/next/assets/RailStatus-D-t2gPae.js.map +1 -0
  201. package/dist/core/web/public/next/assets/{RefreshIndicator-CnhEovMZ.js → RefreshIndicator-BLnr9IOM.js} +2 -2
  202. package/dist/core/web/public/next/assets/{RefreshIndicator-CnhEovMZ.js.map → RefreshIndicator-BLnr9IOM.js.map} +1 -1
  203. package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-28gLwmwV.js → ResourcePoolConsoleApp-BeG0gBif.js} +4 -4
  204. package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-28gLwmwV.js.map → ResourcePoolConsoleApp-BeG0gBif.js.map} +1 -1
  205. package/dist/core/web/public/next/assets/ResourcesChrome-B3Z3O98t.css +1 -0
  206. package/dist/core/web/public/next/assets/ResourcesChrome-BzV6bkIa.js +3 -0
  207. package/dist/core/web/public/next/assets/ResourcesChrome-BzV6bkIa.js.map +1 -0
  208. package/dist/core/web/public/next/assets/ResourcesDrawer-CSKIO_wZ.css +1 -0
  209. package/dist/core/web/public/next/assets/ResourcesDrawer-o4ILHdep.js +2 -0
  210. package/dist/core/web/public/next/assets/ResourcesDrawer-o4ILHdep.js.map +1 -0
  211. package/dist/core/web/public/next/assets/{RouteErrorBoundary-AyUPCIb3.js → RouteErrorBoundary-C5SxA2Dg.js} +2 -2
  212. package/dist/core/web/public/next/assets/{RouteErrorBoundary-AyUPCIb3.js.map → RouteErrorBoundary-C5SxA2Dg.js.map} +1 -1
  213. package/dist/core/web/public/next/assets/RunInCloudAction-C3LBp7C4.js +2 -0
  214. package/dist/core/web/public/next/assets/RunInCloudAction-C3LBp7C4.js.map +1 -0
  215. package/dist/core/web/public/next/assets/SeatSelector-DpvvbjNm.js +3 -0
  216. package/dist/core/web/public/next/assets/{SeatSelector-DaUO-zoK.js.map → SeatSelector-DpvvbjNm.js.map} +1 -1
  217. package/dist/core/web/public/next/assets/{Segmented-B_8c_83S.js → Segmented-BL40udoO.js} +2 -2
  218. package/dist/core/web/public/next/assets/{Segmented-B_8c_83S.js.map → Segmented-BL40udoO.js.map} +1 -1
  219. package/dist/core/web/public/next/assets/{Select-Bl5g5Dt_.js → Select-FWLnAw_j.js} +2 -2
  220. package/dist/core/web/public/next/assets/{Select-Bl5g5Dt_.js.map → Select-FWLnAw_j.js.map} +1 -1
  221. package/dist/core/web/public/next/assets/{SessionInsightChip-w0I21q0c.js → SessionInsightChip-CWye87Ju.js} +2 -2
  222. package/dist/core/web/public/next/assets/{SessionInsightChip-w0I21q0c.js.map → SessionInsightChip-CWye87Ju.js.map} +1 -1
  223. package/dist/core/web/public/next/assets/SessionSearch-YvCHFUuN.js +2 -0
  224. package/dist/core/web/public/next/assets/{SessionSearch-B5aQ0BCM.js.map → SessionSearch-YvCHFUuN.js.map} +1 -1
  225. package/dist/core/web/public/next/assets/SettingsSection-Dr18upeE.js +2 -0
  226. package/dist/core/web/public/next/assets/SettingsSection-Dr18upeE.js.map +1 -0
  227. package/dist/core/web/public/next/assets/{Sheet-CVjk-cLI.js → Sheet-DZKcQXQg.js} +2 -2
  228. package/dist/core/web/public/next/assets/{Sheet-CVjk-cLI.js.map → Sheet-DZKcQXQg.js.map} +1 -1
  229. package/dist/core/web/public/next/assets/{ShortcutsOverlay-BiBjnBcc.js → ShortcutsOverlay-BpDimdPq.js} +2 -2
  230. package/dist/core/web/public/next/assets/{ShortcutsOverlay-BiBjnBcc.js.map → ShortcutsOverlay-BpDimdPq.js.map} +1 -1
  231. package/dist/core/web/public/next/assets/Sidebar-BRc1vGDF.css +1 -0
  232. package/dist/core/web/public/next/assets/Sidebar-BoBzBEFX.js +3 -0
  233. package/dist/core/web/public/next/assets/Sidebar-BoBzBEFX.js.map +1 -0
  234. package/dist/core/web/public/next/assets/{Slider-BS9MU5ZV.js → Slider-DUMo9HDD.js} +2 -2
  235. package/dist/core/web/public/next/assets/{Slider-BS9MU5ZV.js.map → Slider-DUMo9HDD.js.map} +1 -1
  236. package/dist/core/web/public/next/assets/{StatusBadge-DAf-ArKE.js → StatusBadge-BwnBNFQr.js} +2 -2
  237. package/dist/core/web/public/next/assets/{StatusBadge-DAf-ArKE.js.map → StatusBadge-BwnBNFQr.js.map} +1 -1
  238. package/dist/core/web/public/next/assets/StepBand-PDXMIlRk.js +2 -0
  239. package/dist/core/web/public/next/assets/StepBand-PDXMIlRk.js.map +1 -0
  240. package/dist/core/web/public/next/assets/{Surface-CiYOdNKQ.js → Surface-B3TZVoER.js} +2 -2
  241. package/dist/core/web/public/next/assets/{Surface-CiYOdNKQ.js.map → Surface-B3TZVoER.js.map} +1 -1
  242. package/dist/core/web/public/next/assets/Swimlane-DR4OgON_.js +2 -0
  243. package/dist/core/web/public/next/assets/Swimlane-DR4OgON_.js.map +1 -0
  244. package/dist/core/web/public/next/assets/{Switch-BzRXtNPt.js → Switch-CcR5Llk5.js} +2 -2
  245. package/dist/core/web/public/next/assets/{Switch-BzRXtNPt.js.map → Switch-CcR5Llk5.js.map} +1 -1
  246. package/dist/core/web/public/next/assets/{Tag-DEEbDz7T.js → Tag-_-K1h7Hk.js} +2 -2
  247. package/dist/core/web/public/next/assets/{Tag-DEEbDz7T.js.map → Tag-_-K1h7Hk.js.map} +1 -1
  248. package/dist/core/web/public/next/assets/TerminalPane-BwfMbnJz.css +1 -0
  249. package/dist/core/web/public/next/assets/TerminalPane-_1aH4ndN.js +7 -0
  250. package/dist/core/web/public/next/assets/TerminalPane-_1aH4ndN.js.map +1 -0
  251. package/dist/core/web/public/next/assets/UniverseConsoleApp-BUsq-inZ.js +2 -0
  252. package/dist/core/web/public/next/assets/{UniverseConsoleApp-DKqAf-eD.js.map → UniverseConsoleApp-BUsq-inZ.js.map} +1 -1
  253. package/dist/core/web/public/next/assets/{UniverseView-D6081LQL.js → UniverseView-Dogy_dsB.js} +2 -2
  254. package/dist/core/web/public/next/assets/{UniverseView-D6081LQL.js.map → UniverseView-Dogy_dsB.js.map} +1 -1
  255. package/dist/core/web/public/next/assets/UsageSection-DiX_dTyo.js +2 -0
  256. package/dist/core/web/public/next/assets/UsageSection-DiX_dTyo.js.map +1 -0
  257. package/dist/core/web/public/next/assets/UsageSection-DsB-Jqyl.css +1 -0
  258. package/dist/core/web/public/next/assets/VerseConsoleApp-Cxqr-3qc.css +1 -0
  259. package/dist/core/web/public/next/assets/VerseConsoleApp-WVeyJnW7.js +3 -0
  260. package/dist/core/web/public/next/assets/VerseConsoleApp-WVeyJnW7.js.map +1 -0
  261. package/dist/core/web/public/next/assets/Workspace-BYW9dm90.css +1 -0
  262. package/dist/core/web/public/next/assets/Workspace-BbxZHwQd.js +10 -0
  263. package/dist/core/web/public/next/assets/Workspace-BbxZHwQd.js.map +1 -0
  264. package/dist/core/web/public/next/assets/actions-Ddfg2iLl.css +1 -0
  265. package/dist/core/web/public/next/assets/actions-s2lfm_5k.js +2 -0
  266. package/dist/core/web/public/next/assets/actions-s2lfm_5k.js.map +1 -0
  267. package/dist/core/web/public/next/assets/apps-model-CDFvmsQV.js +2 -0
  268. package/dist/core/web/public/next/assets/apps-model-CDFvmsQV.js.map +1 -0
  269. package/dist/core/web/public/next/assets/{budget-queries-Dacv1VYP.js → budget-queries-wUshcovN.js} +2 -2
  270. package/dist/core/web/public/next/assets/{budget-queries-Dacv1VYP.js.map → budget-queries-wUshcovN.js.map} +1 -1
  271. package/dist/core/web/public/next/assets/calendar-day-BxBYHfX1.js +2 -0
  272. package/dist/core/web/public/next/assets/calendar-day-BxBYHfX1.js.map +1 -0
  273. package/dist/core/web/public/next/assets/capacity-strip-model-Bj_9ztzs.js +2 -0
  274. package/dist/core/web/public/next/assets/capacity-strip-model-Bj_9ztzs.js.map +1 -0
  275. package/dist/core/web/public/next/assets/charts-CMSgAUKn.js +2 -0
  276. package/dist/core/web/public/next/assets/charts-CMSgAUKn.js.map +1 -0
  277. package/dist/core/web/public/next/assets/cloud-C1KPNRHC.css +1 -0
  278. package/dist/core/web/public/next/assets/cloud-queries-CnV1yaNG.js +2 -0
  279. package/dist/core/web/public/next/assets/cloud-queries-CnV1yaNG.js.map +1 -0
  280. package/dist/core/web/public/next/assets/cloud.module-CiwatLj3.js +2 -0
  281. package/dist/core/web/public/next/assets/cloud.module-CiwatLj3.js.map +1 -0
  282. package/dist/core/web/public/next/assets/colors-BZ3a9wFf.js +2 -0
  283. package/dist/core/web/public/next/assets/colors-BZ3a9wFf.js.map +1 -0
  284. package/dist/core/web/public/next/assets/{command-bus-CpYuam1F.js → command-bus-DqimKCUY.js} +2 -2
  285. package/dist/core/web/public/next/assets/{command-bus-CpYuam1F.js.map → command-bus-DqimKCUY.js.map} +1 -1
  286. package/dist/core/web/public/next/assets/command-catalog-BdtDH93o.js +2 -0
  287. package/dist/core/web/public/next/assets/command-catalog-BdtDH93o.js.map +1 -0
  288. package/dist/core/web/public/next/assets/{composer-keys-CYz4U4Bg.js → composer-keys-DBRymxQn.js} +2 -2
  289. package/dist/core/web/public/next/assets/{composer-keys-CYz4U4Bg.js.map → composer-keys-DBRymxQn.js.map} +1 -1
  290. package/dist/core/web/public/next/assets/context-model-Dwd49-dp.js +2 -0
  291. package/dist/core/web/public/next/assets/context-model-Dwd49-dp.js.map +1 -0
  292. package/dist/core/web/public/next/assets/context-model-MT17V86_.js +2 -0
  293. package/dist/core/web/public/next/assets/context-model-MT17V86_.js.map +1 -0
  294. package/dist/core/web/public/next/assets/context-queries-xVKIeynP.js +2 -0
  295. package/dist/core/web/public/next/assets/context-queries-xVKIeynP.js.map +1 -0
  296. package/dist/core/web/public/next/assets/context.module-BijAfoJw.js +2 -0
  297. package/dist/core/web/public/next/assets/context.module-BijAfoJw.js.map +1 -0
  298. package/dist/core/web/public/next/assets/{control-queries-BGjarMm9.js → control-queries-DOZR-D8G.js} +2 -2
  299. package/dist/core/web/public/next/assets/{control-queries-BGjarMm9.js.map → control-queries-DOZR-D8G.js.map} +1 -1
  300. package/dist/core/web/public/next/assets/dark-since-DOMvtB_G.js +2 -0
  301. package/dist/core/web/public/next/assets/dark-since-DOMvtB_G.js.map +1 -0
  302. package/dist/core/web/public/next/assets/dock-icons-8EtARwUm.js +2 -0
  303. package/dist/core/web/public/next/assets/dock-icons-8EtARwUm.js.map +1 -0
  304. package/dist/core/web/public/next/assets/dock-panes-UKS-mXhr.js +2 -0
  305. package/dist/core/web/public/next/assets/{dock-panes-BNTLvX7G.js.map → dock-panes-UKS-mXhr.js.map} +1 -1
  306. package/dist/core/web/public/next/assets/{dock-store-_E5h6TEq.js → dock-store-BA1cHOYA.js} +2 -2
  307. package/dist/core/web/public/next/assets/{dock-store-_E5h6TEq.js.map → dock-store-BA1cHOYA.js.map} +1 -1
  308. package/dist/core/web/public/next/assets/fleet-model-CNe8Wh-s.js +2 -0
  309. package/dist/core/web/public/next/assets/fleet-model-CNe8Wh-s.js.map +1 -0
  310. package/dist/core/web/public/next/assets/fleet-queries-BSdRlUwJ.js +2 -0
  311. package/dist/core/web/public/next/assets/fleet-queries-BSdRlUwJ.js.map +1 -0
  312. package/dist/core/web/public/next/assets/format-B8DAVcn2.js +2 -0
  313. package/dist/core/web/public/next/assets/format-B8DAVcn2.js.map +1 -0
  314. package/dist/core/web/public/next/assets/format-DKrNjdwD.js +2 -0
  315. package/dist/core/web/public/next/assets/format-DKrNjdwD.js.map +1 -0
  316. package/dist/core/web/public/next/assets/{git-model-5v5xGobf.js → git-model-CivuBY_D.js} +2 -2
  317. package/dist/core/web/public/next/assets/{git-model-5v5xGobf.js.map → git-model-CivuBY_D.js.map} +1 -1
  318. package/dist/core/web/public/next/assets/global-Di2PUgj4.js +2 -0
  319. package/dist/core/web/public/next/assets/global-Di2PUgj4.js.map +1 -0
  320. package/dist/core/web/public/next/assets/{guarded-action-vOPc8v75.js → guarded-action-CvOHcqyH.js} +2 -2
  321. package/dist/core/web/public/next/assets/{guarded-action-vOPc8v75.js.map → guarded-action-CvOHcqyH.js.map} +1 -1
  322. package/dist/core/web/public/next/assets/{icons-DWb24OA6.js → icons-B_yuAgdN.js} +2 -2
  323. package/dist/core/web/public/next/assets/{icons-DWb24OA6.js.map → icons-B_yuAgdN.js.map} +1 -1
  324. package/dist/core/web/public/next/assets/{index-afDA8cwW.js → index-oAAq8XJa.js} +3 -3
  325. package/dist/core/web/public/next/assets/{index-afDA8cwW.js.map → index-oAAq8XJa.js.map} +1 -1
  326. package/dist/core/web/public/next/assets/live-model-DCw_IFRI.js +2 -0
  327. package/dist/core/web/public/next/assets/live-model-DCw_IFRI.js.map +1 -0
  328. package/dist/core/web/public/next/assets/local-model-DFyjKX0b.js +2 -0
  329. package/dist/core/web/public/next/assets/local-model-DFyjKX0b.js.map +1 -0
  330. package/dist/core/web/public/next/assets/mind-B9PzLcl0.css +1 -0
  331. package/dist/core/web/public/next/assets/mind.module-vnuJcwvD.js +2 -0
  332. package/dist/core/web/public/next/assets/mind.module-vnuJcwvD.js.map +1 -0
  333. package/dist/core/web/public/next/assets/mutations-Dpsql5t7.js +2 -0
  334. package/dist/core/web/public/next/assets/{mutations-C6E10SPX.js.map → mutations-Dpsql5t7.js.map} +1 -1
  335. package/dist/core/web/public/next/assets/{overnight-queries-CCGfiS-g.js → overnight-queries-X-44Gsw5.js} +2 -2
  336. package/dist/core/web/public/next/assets/{overnight-queries-CCGfiS-g.js.map → overnight-queries-X-44Gsw5.js.map} +1 -1
  337. package/dist/core/web/public/next/assets/pane-chrome-8JmEhHVD.css +1 -0
  338. package/dist/core/web/public/next/assets/pane-chrome.module-D7o-fVd0.js +2 -0
  339. package/dist/core/web/public/next/assets/pane-chrome.module-D7o-fVd0.js.map +1 -0
  340. package/dist/core/web/public/next/assets/primitives-BDIcUvob.js +1 -0
  341. package/dist/core/web/public/next/assets/{queries-BuYIEHst.js → queries-BA4rNGD-.js} +2 -2
  342. package/dist/core/web/public/next/assets/{queries-BuYIEHst.js.map → queries-BA4rNGD-.js.map} +1 -1
  343. package/dist/core/web/public/next/assets/{reasoning-pref-BVzGczV7.js → reasoning-pref-B9-DJUXP.js} +2 -2
  344. package/dist/core/web/public/next/assets/{reasoning-pref-BVzGczV7.js.map → reasoning-pref-B9-DJUXP.js.map} +1 -1
  345. package/dist/core/web/public/next/assets/seat-subscription-CH6fW4fJ.js +2 -0
  346. package/dist/core/web/public/next/assets/seat-subscription-CH6fW4fJ.js.map +1 -0
  347. package/dist/core/web/public/next/assets/{section-visibility-CSrsTcwK.js → section-visibility-qFqc_d4Z.js} +2 -2
  348. package/dist/core/web/public/next/assets/{section-visibility-CSrsTcwK.js.map → section-visibility-qFqc_d4Z.js.map} +1 -1
  349. package/dist/core/web/public/next/assets/{sidebar-model-C8fyqSQY.js → sidebar-model-M1GaQU5l.js} +2 -2
  350. package/dist/core/web/public/next/assets/{sidebar-model-C8fyqSQY.js.map → sidebar-model-M1GaQU5l.js.map} +1 -1
  351. package/dist/core/web/public/next/assets/slots-Ds9ZIqUL.js +3 -0
  352. package/dist/core/web/public/next/assets/{slots-W8gkmdfE.js.map → slots-Ds9ZIqUL.js.map} +1 -1
  353. package/dist/core/web/public/next/assets/surface-data-J52iIGMD.js +2 -0
  354. package/dist/core/web/public/next/assets/surface-data-J52iIGMD.js.map +1 -0
  355. package/dist/core/web/public/next/assets/surface-prefetch-CgZ-LEJK.js +2 -0
  356. package/dist/core/web/public/next/assets/surface-prefetch-CgZ-LEJK.js.map +1 -0
  357. package/dist/core/web/public/next/assets/tasks-model-ent8f0jZ.js +2 -0
  358. package/dist/core/web/public/next/assets/{tasks-model-CnYQzgxk.js.map → tasks-model-ent8f0jZ.js.map} +1 -1
  359. package/dist/core/web/public/next/assets/{terminal-icons-CxUYaWX9.js → terminal-icons-DJTK7QpR.js} +2 -2
  360. package/dist/core/web/public/next/assets/{terminal-icons-CxUYaWX9.js.map → terminal-icons-DJTK7QpR.js.map} +1 -1
  361. package/dist/core/web/public/next/assets/{tool-semantics-CTRuLF5j.js → tool-semantics-GX8ScuSH.js} +2 -2
  362. package/dist/core/web/public/next/assets/{tool-semantics-CTRuLF5j.js.map → tool-semantics-GX8ScuSH.js.map} +1 -1
  363. package/dist/core/web/public/next/assets/{turn-files-BvB5LLNw.js → turn-files-BPHQzYuH.js} +2 -2
  364. package/dist/core/web/public/next/assets/{turn-files-BvB5LLNw.js.map → turn-files-BPHQzYuH.js.map} +1 -1
  365. package/dist/core/web/public/next/assets/types-D5XOdyw8.js +2 -0
  366. package/dist/core/web/public/next/assets/types-D5XOdyw8.js.map +1 -0
  367. package/dist/core/web/public/next/assets/{usage-queries-CQOpeE1H.js → usage-queries-Bn8ccqyN.js} +2 -2
  368. package/dist/core/web/public/next/assets/{usage-queries-CQOpeE1H.js.map → usage-queries-Bn8ccqyN.js.map} +1 -1
  369. package/dist/core/web/public/next/assets/use-guarded-action-C2HlSzkz.js +2 -0
  370. package/dist/core/web/public/next/assets/use-guarded-action-C2HlSzkz.js.map +1 -0
  371. package/dist/core/web/public/next/assets/{use-ticker-hryPXnyp.js → use-ticker-BNc1H4ZC.js} +2 -2
  372. package/dist/core/web/public/next/assets/{use-ticker-hryPXnyp.js.map → use-ticker-BNc1H4ZC.js.map} +1 -1
  373. package/dist/core/web/public/next/assets/use-token-gate-B3IJL6bf.js +2 -0
  374. package/dist/core/web/public/next/assets/use-token-gate-B3IJL6bf.js.map +1 -0
  375. package/dist/core/web/public/next/assets/{useActivity-Cg_9-7nt.js → useActivity-Bk3XgXjL.js} +2 -2
  376. package/dist/core/web/public/next/assets/{useActivity-Cg_9-7nt.js.map → useActivity-Bk3XgXjL.js.map} +1 -1
  377. package/dist/core/web/public/next/assets/useChartWidth-BAtVgn2n.css +1 -0
  378. package/dist/core/web/public/next/assets/useChartWidth-lZ9PrQn0.js +2 -0
  379. package/dist/core/web/public/next/assets/useChartWidth-lZ9PrQn0.js.map +1 -0
  380. package/dist/core/web/public/next/assets/{useSeatsRefresh-4Ov9eT1F.js → useSeatsRefresh-CG4jczeL.js} +2 -2
  381. package/dist/core/web/public/next/assets/{useSeatsRefresh-4Ov9eT1F.js.map → useSeatsRefresh-CG4jczeL.js.map} +1 -1
  382. package/dist/core/web/public/next/assets/verse-model-D7NZQFAR.js +2 -0
  383. package/dist/core/web/public/next/assets/verse-model-D7NZQFAR.js.map +1 -0
  384. package/dist/core/web/public/next/assets/{verse-queries-BjQoOTwv.js → verse-queries-DvIJcn6Z.js} +2 -2
  385. package/dist/core/web/public/next/assets/{verse-queries-BjQoOTwv.js.map → verse-queries-DvIJcn6Z.js.map} +1 -1
  386. package/dist/core/web/public/next/assets/verse-store-DjBWj04q.js +3 -0
  387. package/dist/core/web/public/next/assets/verse-store-DjBWj04q.js.map +1 -0
  388. package/dist/core/web/public/next/assets/verse-ui-store-zafyzXKD.js +3 -0
  389. package/dist/core/web/public/next/assets/{verse-ui-store-KTTKfv-T.js.map → verse-ui-store-zafyzXKD.js.map} +1 -1
  390. package/dist/core/web/public/next/assets/{viewport-ZB86jdES.js → viewport-BEqGUoTA.js} +2 -2
  391. package/dist/core/web/public/next/assets/{viewport-ZB86jdES.js.map → viewport-BEqGUoTA.js.map} +1 -1
  392. package/dist/core/web/public/next/assets/warmup-BR6pxAKs.js +3 -0
  393. package/dist/core/web/public/next/assets/warmup-BR6pxAKs.js.map +1 -0
  394. package/dist/core/web/public/next/assets/{workspace-model-4hq_Mv3N.js → workspace-model-D_tWD5Wt.js} +2 -2
  395. package/dist/core/web/public/next/assets/{workspace-model-4hq_Mv3N.js.map → workspace-model-D_tWD5Wt.js.map} +1 -1
  396. package/dist/core/web/public/next/index.html +1 -1
  397. package/dist/release-dependency-inventory.json +1 -1
  398. package/package.json +1 -1
  399. package/dist/core/web/public/next/assets/Advanced-CHjxJt2z.css +0 -1
  400. package/dist/core/web/public/next/assets/Advanced-DM0DYibH.js +0 -2
  401. package/dist/core/web/public/next/assets/Advanced-DM0DYibH.js.map +0 -1
  402. package/dist/core/web/public/next/assets/AppsSection-CXxbfPJQ.js +0 -2
  403. package/dist/core/web/public/next/assets/AppsSection-CXxbfPJQ.js.map +0 -1
  404. package/dist/core/web/public/next/assets/AreaTrend-gUVXkfhf.js +0 -2
  405. package/dist/core/web/public/next/assets/AreaTrend-gUVXkfhf.js.map +0 -1
  406. package/dist/core/web/public/next/assets/AutonomySection-CoMngwNB.js +0 -2
  407. package/dist/core/web/public/next/assets/BranchBar-C-NovaXr.js +0 -2
  408. package/dist/core/web/public/next/assets/BranchBar-C-NovaXr.js.map +0 -1
  409. package/dist/core/web/public/next/assets/BranchBar-C9BpPVLr.css +0 -1
  410. package/dist/core/web/public/next/assets/BudgetControl-P5lMxHvQ.js +0 -2
  411. package/dist/core/web/public/next/assets/BudgetControl-P5lMxHvQ.js.map +0 -1
  412. package/dist/core/web/public/next/assets/BurnDown-4P1LDoCL.js +0 -2
  413. package/dist/core/web/public/next/assets/BurnDown-4P1LDoCL.js.map +0 -1
  414. package/dist/core/web/public/next/assets/CapacityStrip-D6Yyg4a1.js +0 -2
  415. package/dist/core/web/public/next/assets/CapacityStrip-D6Yyg4a1.js.map +0 -1
  416. package/dist/core/web/public/next/assets/CapacityStrip-wgFP9MUA.css +0 -1
  417. package/dist/core/web/public/next/assets/ChatSection-B9cdRKUh.js +0 -3
  418. package/dist/core/web/public/next/assets/CommandSection-BC0uXim_.js +0 -2
  419. package/dist/core/web/public/next/assets/CommandSection-BC0uXim_.js.map +0 -1
  420. package/dist/core/web/public/next/assets/Composer-CkcwbQhG.css +0 -1
  421. package/dist/core/web/public/next/assets/Composer.module-DJMdrqNt.js +0 -2
  422. package/dist/core/web/public/next/assets/DiffPane-5uLKa0au.js +0 -2
  423. package/dist/core/web/public/next/assets/DiffPane-5uLKa0au.js.map +0 -1
  424. package/dist/core/web/public/next/assets/DiffPane-Csboxnn0.css +0 -1
  425. package/dist/core/web/public/next/assets/DockHost-BGnTgdIb.css +0 -1
  426. package/dist/core/web/public/next/assets/DockHost-CBV_6Ehi.js +0 -2
  427. package/dist/core/web/public/next/assets/DockHost-CBV_6Ehi.js.map +0 -1
  428. package/dist/core/web/public/next/assets/FleetSection-DuJcQCGg.js +0 -3
  429. package/dist/core/web/public/next/assets/FleetSection-DuJcQCGg.js.map +0 -1
  430. package/dist/core/web/public/next/assets/FleetSection-w9AjqfTR.css +0 -1
  431. package/dist/core/web/public/next/assets/Funnel-qX3Hlbce.js +0 -2
  432. package/dist/core/web/public/next/assets/Funnel-qX3Hlbce.js.map +0 -1
  433. package/dist/core/web/public/next/assets/GearTray-kVGP1coG.js +0 -2
  434. package/dist/core/web/public/next/assets/GearTray-kVGP1coG.js.map +0 -1
  435. package/dist/core/web/public/next/assets/GrowthSection-CYxJ9MH5.js +0 -2
  436. package/dist/core/web/public/next/assets/GrowthSection-CYxJ9MH5.js.map +0 -1
  437. package/dist/core/web/public/next/assets/HandoffDialog-DHZo3Ev0.js +0 -2
  438. package/dist/core/web/public/next/assets/HandoffDialog-DHZo3Ev0.js.map +0 -1
  439. package/dist/core/web/public/next/assets/MatrixHeatmap-B_JWCjZx.js +0 -2
  440. package/dist/core/web/public/next/assets/MatrixHeatmap-B_JWCjZx.js.map +0 -1
  441. package/dist/core/web/public/next/assets/McpSection-1UncWBpW.js +0 -2
  442. package/dist/core/web/public/next/assets/MessageMarkdown-C4pl9LI5.js +0 -3
  443. package/dist/core/web/public/next/assets/MessageMarkdown-Czcl3L_Q.css +0 -1
  444. package/dist/core/web/public/next/assets/MindSection-C3fCw_fD.js +0 -2
  445. package/dist/core/web/public/next/assets/MindSection-C3fCw_fD.js.map +0 -1
  446. package/dist/core/web/public/next/assets/MutationTokenDialog-Dn0tzCrh.js +0 -2
  447. package/dist/core/web/public/next/assets/MutationTokenDialog-Dn0tzCrh.js.map +0 -1
  448. package/dist/core/web/public/next/assets/NeedsYouDrawer-CuNYJCJ0.js +0 -2
  449. package/dist/core/web/public/next/assets/NeedsYouDrawer-CuNYJCJ0.js.map +0 -1
  450. package/dist/core/web/public/next/assets/NeedsYouDrawer-SkhvvdLb.css +0 -1
  451. package/dist/core/web/public/next/assets/NewChatDialog-B_BsS9pr.js +0 -3
  452. package/dist/core/web/public/next/assets/OnboardingFlow-CtCPpgoX.js +0 -2
  453. package/dist/core/web/public/next/assets/PreviewPane-Cx6RRwzM.js +0 -2
  454. package/dist/core/web/public/next/assets/PreviewPane-Cx6RRwzM.js.map +0 -1
  455. package/dist/core/web/public/next/assets/PreviewPane-WQJFjSXe.css +0 -1
  456. package/dist/core/web/public/next/assets/RailStatus-BWs6xevj.js +0 -2
  457. package/dist/core/web/public/next/assets/RailStatus-BWs6xevj.js.map +0 -1
  458. package/dist/core/web/public/next/assets/SeatSelector-DaUO-zoK.js +0 -3
  459. package/dist/core/web/public/next/assets/SessionSearch-B5aQ0BCM.js +0 -2
  460. package/dist/core/web/public/next/assets/SettingsSection-CuESA30a.js +0 -2
  461. package/dist/core/web/public/next/assets/SettingsSection-CuESA30a.js.map +0 -1
  462. package/dist/core/web/public/next/assets/Sidebar-DfD8MNZt.css +0 -1
  463. package/dist/core/web/public/next/assets/Sidebar-q11dtYZf.js +0 -3
  464. package/dist/core/web/public/next/assets/Sidebar-q11dtYZf.js.map +0 -1
  465. package/dist/core/web/public/next/assets/StepBand-B1W7rU70.js +0 -2
  466. package/dist/core/web/public/next/assets/StepBand-B1W7rU70.js.map +0 -1
  467. package/dist/core/web/public/next/assets/Swimlane-BR40WVcj.js +0 -2
  468. package/dist/core/web/public/next/assets/Swimlane-BR40WVcj.js.map +0 -1
  469. package/dist/core/web/public/next/assets/TerminalPane-CPKUTD9K.js +0 -7
  470. package/dist/core/web/public/next/assets/TerminalPane-CPKUTD9K.js.map +0 -1
  471. package/dist/core/web/public/next/assets/TerminalPane-CmE2QL-Q.css +0 -1
  472. package/dist/core/web/public/next/assets/UniverseConsoleApp-DKqAf-eD.js +0 -2
  473. package/dist/core/web/public/next/assets/UsageSection-B6fR3cru.js +0 -2
  474. package/dist/core/web/public/next/assets/UsageSection-B6fR3cru.js.map +0 -1
  475. package/dist/core/web/public/next/assets/UsageSection-DwgNOYvi.css +0 -1
  476. package/dist/core/web/public/next/assets/VerseConsoleApp-C0V221WL.css +0 -1
  477. package/dist/core/web/public/next/assets/VerseConsoleApp-bjARLPwN.js +0 -3
  478. package/dist/core/web/public/next/assets/VerseConsoleApp-bjARLPwN.js.map +0 -1
  479. package/dist/core/web/public/next/assets/Workspace-DQXMVDf7.css +0 -1
  480. package/dist/core/web/public/next/assets/Workspace-DtJb5tiM.js +0 -10
  481. package/dist/core/web/public/next/assets/Workspace-DtJb5tiM.js.map +0 -1
  482. package/dist/core/web/public/next/assets/actions-Bszsdpms.js +0 -2
  483. package/dist/core/web/public/next/assets/actions-Bszsdpms.js.map +0 -1
  484. package/dist/core/web/public/next/assets/actions-Dug8YIf0.css +0 -1
  485. package/dist/core/web/public/next/assets/capacity-strip-model-BR539Ci8.js +0 -2
  486. package/dist/core/web/public/next/assets/capacity-strip-model-BR539Ci8.js.map +0 -1
  487. package/dist/core/web/public/next/assets/charts-D4NaLaXA.js +0 -2
  488. package/dist/core/web/public/next/assets/charts-D4NaLaXA.js.map +0 -1
  489. package/dist/core/web/public/next/assets/colors-B-vHsX1S.js +0 -2
  490. package/dist/core/web/public/next/assets/colors-B-vHsX1S.js.map +0 -1
  491. package/dist/core/web/public/next/assets/command-catalog-s3W6Z96D.js +0 -2
  492. package/dist/core/web/public/next/assets/command-catalog-s3W6Z96D.js.map +0 -1
  493. package/dist/core/web/public/next/assets/context-model-Bto3LZn2.js +0 -2
  494. package/dist/core/web/public/next/assets/context-model-Bto3LZn2.js.map +0 -1
  495. package/dist/core/web/public/next/assets/context-queries-DVdSLrYy.js +0 -2
  496. package/dist/core/web/public/next/assets/context-queries-DVdSLrYy.js.map +0 -1
  497. package/dist/core/web/public/next/assets/context.module-B_k02HNU.js +0 -2
  498. package/dist/core/web/public/next/assets/context.module-B_k02HNU.js.map +0 -1
  499. package/dist/core/web/public/next/assets/dock-icons-oG8d7mNZ.js +0 -2
  500. package/dist/core/web/public/next/assets/dock-icons-oG8d7mNZ.js.map +0 -1
  501. package/dist/core/web/public/next/assets/dock-panes-BNTLvX7G.js +0 -2
  502. package/dist/core/web/public/next/assets/fleet-model-ClBbQ0Uj.js +0 -2
  503. package/dist/core/web/public/next/assets/fleet-model-ClBbQ0Uj.js.map +0 -1
  504. package/dist/core/web/public/next/assets/format-BNYWGJat.js +0 -2
  505. package/dist/core/web/public/next/assets/format-BNYWGJat.js.map +0 -1
  506. package/dist/core/web/public/next/assets/global-DVgMguLr.js +0 -2
  507. package/dist/core/web/public/next/assets/global-DVgMguLr.js.map +0 -1
  508. package/dist/core/web/public/next/assets/live-model-Dm6ITHvX.js +0 -2
  509. package/dist/core/web/public/next/assets/live-model-Dm6ITHvX.js.map +0 -1
  510. package/dist/core/web/public/next/assets/mind-B-lYfSUJ.css +0 -1
  511. package/dist/core/web/public/next/assets/mind.module-BzhAlg3e.js +0 -2
  512. package/dist/core/web/public/next/assets/mind.module-BzhAlg3e.js.map +0 -1
  513. package/dist/core/web/public/next/assets/mutations-C6E10SPX.js +0 -2
  514. package/dist/core/web/public/next/assets/primitives-DQvYikjm.js +0 -1
  515. package/dist/core/web/public/next/assets/seat-subscription-CrWOV4Qc.js +0 -2
  516. package/dist/core/web/public/next/assets/seat-subscription-CrWOV4Qc.js.map +0 -1
  517. package/dist/core/web/public/next/assets/slots-W8gkmdfE.js +0 -3
  518. package/dist/core/web/public/next/assets/surface-data-ZtCegYMQ.js +0 -2
  519. package/dist/core/web/public/next/assets/surface-data-ZtCegYMQ.js.map +0 -1
  520. package/dist/core/web/public/next/assets/tasks-model-CnYQzgxk.js +0 -2
  521. package/dist/core/web/public/next/assets/types-Dypu22dp.js +0 -3
  522. package/dist/core/web/public/next/assets/types-Dypu22dp.js.map +0 -1
  523. package/dist/core/web/public/next/assets/use-guarded-action-CO_aAsed.js +0 -2
  524. package/dist/core/web/public/next/assets/use-guarded-action-CO_aAsed.js.map +0 -1
  525. package/dist/core/web/public/next/assets/use-token-gate-DYA2-ALC.js +0 -2
  526. package/dist/core/web/public/next/assets/use-token-gate-DYA2-ALC.js.map +0 -1
  527. package/dist/core/web/public/next/assets/useChartWidth-B8E5mJgM.css +0 -1
  528. package/dist/core/web/public/next/assets/useChartWidth-MEXvDxDL.js +0 -2
  529. package/dist/core/web/public/next/assets/useChartWidth-MEXvDxDL.js.map +0 -1
  530. package/dist/core/web/public/next/assets/verse-model-E98kXngO.js +0 -2
  531. package/dist/core/web/public/next/assets/verse-model-E98kXngO.js.map +0 -1
  532. package/dist/core/web/public/next/assets/verse-store-BgKx_YGs.js +0 -2
  533. package/dist/core/web/public/next/assets/verse-store-BgKx_YGs.js.map +0 -1
  534. package/dist/core/web/public/next/assets/verse-ui-store-KTTKfv-T.js +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CapacityStrip-C667yQe8.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/apps/Apps.module.css","../../../../../../src/web-ui/routes/verse/apps/MonogramTile.tsx","../../../../../../src/web-ui/routes/verse/usage/CapacityStrip.module.css","../../../../../../src/web-ui/routes/verse/usage/CapacityStrip.tsx"],"sourcesContent":["/*\n * Apps & Accounts (SPEC-310C §4) — grouped rows in the Ollama style, max\n * 880px. Tokens only (DESIGN.md §13; style-scan-310 enforces it): no raw\n * colour, no px font size. The row adapts to its container: at the compact\n * width (480, viewport.ts) the right-hand pill wraps under the description.\n */\n\n.section {\n display: flex;\n flex-direction: column;\n min-height: 0;\n height: 100%;\n background: var(--bg-canvas);\n}\n\n.scroll {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: var(--space-6) var(--space-4) var(--space-12);\n /* Desktop shell (desktop/README.md \"Desktop shell contract\"): this page has\n no 48px strip, so its title sits inside the OS title-bar band. Once the\n window is narrow enough that the 880px column stops centring (minWidth\n is 900), the column's left edge lands at rail + 16px — under the macOS\n traffic lights, which cover the top-left 92px of the WINDOW. Owe the same\n overlap every header strip owes (inset − rail, 36px on a 56px rail);\n the vars are absent in a browser and the expanded rail sits under the\n lights itself, so both floor to --space-4 and nothing moves there. The\n whole column shifts, not just the header, so the title stays aligned\n with the rows under it. */\n padding-left: max(var(--space-4), calc(var(--app-traffic-light-inset, 0px) - var(--rail-width, 56px)));\n}\n\n.page {\n container-type: inline-size;\n max-width: 880px;\n margin: 0 auto;\n display: flex;\n flex-direction: column;\n gap: var(--space-8);\n}\n\n.header {\n display: flex;\n flex-wrap: wrap;\n align-items: flex-end;\n justify-content: space-between;\n gap: var(--space-3) var(--space-4);\n}\n.headerText {\n display: flex;\n flex-direction: column;\n gap: var(--space-1);\n min-width: 0;\n}\n.title {\n margin: 0;\n font-family: var(--font-display);\n font-size: var(--text-xl-size);\n line-height: var(--text-xl-line);\n letter-spacing: var(--tracking-display);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n}\n.lede {\n margin: 0;\n font-size: var(--text-sm-size);\n line-height: var(--text-sm-line);\n color: var(--text-secondary);\n}\n.headerMeta {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line);\n color: var(--text-tertiary);\n}\n\n.banner {\n margin: 0;\n padding: var(--space-3) var(--space-4);\n border: 1px solid var(--border-subtle);\n border-radius: var(--radius-md);\n background: var(--bg-surface);\n font-size: var(--text-sm-size);\n line-height: var(--text-sm-line);\n color: var(--text-secondary);\n}\n.banner[data-tone='danger'] {\n border-color: color-mix(in srgb, var(--status-danger-solid) 40%, var(--border-subtle));\n color: var(--status-danger-fg);\n}\n\n/* The Accounts group's own \"Checked … again\" line, under the strip. */\n.accountsNote {\n margin: 0;\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line);\n color: var(--text-secondary);\n}\n.accountsNote[data-tone='danger'] {\n color: var(--status-danger-fg);\n}\n\n/* ── Groups ─────────────────────────────────────────────────────────── */\n\n.group {\n display: flex;\n flex-direction: column;\n gap: var(--space-2);\n scroll-margin-top: var(--space-6);\n}\n.groupHead {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--space-3);\n min-height: var(--control-h-sm);\n}\n.groupTitle {\n margin: 0;\n font-family: var(--font-display);\n font-size: var(--text-2xs-size);\n line-height: var(--text-2xs-line);\n text-transform: uppercase;\n letter-spacing: var(--tracking-label);\n font-weight: var(--font-weight-semibold);\n color: var(--text-tertiary);\n}\n.groupTitle:focus {\n outline: none;\n}\n.groupTitle:focus-visible {\n box-shadow: var(--shadow-focus-ring);\n border-radius: var(--radius-xs);\n}\n.caveat {\n margin: 0;\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line-relaxed);\n color: var(--text-secondary);\n}\n.caveat code,\n.inlineCode {\n font-family: var(--font-mono);\n font-size: var(--text-xs-size);\n background: var(--bg-code);\n padding: 0 var(--space-1);\n border-radius: var(--radius-xs);\n overflow-wrap: anywhere;\n}\n\n.card {\n border: 1px solid var(--border-subtle);\n border-radius: var(--radius-lg);\n background: var(--bg-surface);\n padding: 0 var(--card-pad);\n box-shadow: inset 0 1px 0 var(--hairline-lift);\n}\n\n.rows {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.row {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: start;\n gap: var(--space-3);\n padding: var(--space-3) 0;\n border-top: 1px solid var(--border-subtle);\n}\n.row:first-child {\n border-top: 0;\n}\n\n.rowMain {\n display: flex;\n flex-direction: column;\n gap: var(--space-1);\n min-width: 0;\n padding-top: var(--space-1);\n}\n.rowHead {\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n gap: var(--space-1) var(--space-3);\n min-width: 0;\n}\n.rowName {\n font-size: var(--text-sm-size);\n line-height: var(--text-sm-line);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n}\n.rowVersion {\n font-family: var(--font-mono);\n font-size: var(--text-xs-size);\n color: var(--text-tertiary);\n}\n.rowDesc,\n.rowDetail {\n margin: 0;\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line-relaxed);\n color: var(--text-secondary);\n overflow-wrap: anywhere;\n}\n.rowDetail {\n color: var(--text-tertiary);\n}\n\n.rowAside {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: flex-end;\n gap: var(--space-2);\n padding-top: var(--space-1);\n max-width: 26rem;\n}\n\n/* A health state is a WORD; the dot reinforces it (DESIGN §13.2). */\n.health {\n display: inline-flex;\n align-items: center;\n gap: var(--space-1);\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line);\n color: var(--text-secondary);\n white-space: nowrap;\n}\n.healthDot {\n width: 7px;\n height: 7px;\n border-radius: var(--radius-full);\n background: var(--status-neutral-solid);\n flex: none;\n}\n.health[data-tone='success'] .healthDot { background: var(--status-success-solid); }\n.health[data-tone='warning'] { color: var(--status-warning-fg); }\n.health[data-tone='warning'] .healthDot { background: var(--status-warning-solid); }\n.health[data-tone='danger'] { color: var(--status-danger-fg); }\n.health[data-tone='danger'] .healthDot { background: var(--status-danger-solid); }\n.health[data-tone='off'] { color: var(--text-tertiary); }\n.health[data-tone='off'] .healthDot {\n background: transparent;\n border: 1px solid var(--border-strong);\n}\n.health[data-tone='neutral'] {\n font-style: italic;\n color: var(--status-unknown-fg);\n}\n.health[data-tone='neutral'] .healthDot {\n background: transparent;\n border: 1px dashed var(--status-unknown-solid);\n}\n\n.loadingLine {\n margin: 0;\n padding: var(--space-3) 0;\n font-size: var(--text-sm-size);\n line-height: var(--text-sm-line);\n color: var(--text-secondary);\n}\n\n/* ── Monogram tile (32px rows, 24px capacity rows) ───────────────────── */\n\n.tile {\n --tile-hue: var(--text-tertiary);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n width: 32px;\n height: 32px;\n border-radius: var(--radius-md);\n font-family: var(--font-display);\n font-size: var(--text-sm-size);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n background: var(--bg-surface-raised);\n border: 1px solid var(--border-subtle);\n position: relative;\n overflow: hidden;\n}\n.tile[data-engine] {\n background: color-mix(in srgb, var(--tile-hue) 12%, var(--bg-surface));\n border-color: color-mix(in srgb, var(--tile-hue) 28%, var(--border-subtle));\n}\n/* The 2px identity tick. */\n.tile[data-engine]::before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 2px;\n background: var(--tile-hue);\n}\n.tile[data-size='sm'] {\n width: 24px;\n height: 24px;\n border-radius: var(--radius-sm);\n font-size: var(--text-xs-size);\n}\n\n/* ── Copy pill ───────────────────────────────────────────────────────── */\n\n.pillWrap {\n display: inline-flex;\n min-width: 0;\n max-width: 100%;\n}\n/*\n * A long command WRAPS rather than ellipsizing: the operator reads what they\n * are about to paste, and a command cut mid-word (\"node ~/.ashlr/nat…\") is\n * exactly the part they need. One line keeps the pill shape (the radius is\n * half the control height); two lines become a soft capsule.\n */\n.pill {\n display: inline-flex;\n align-items: center;\n gap: var(--space-2);\n min-width: 0;\n max-width: 100%;\n min-height: var(--control-h-sm);\n padding: 2px var(--space-2) 2px var(--space-3);\n border: 1px solid var(--border-subtle);\n border-radius: calc(var(--control-h-sm) / 2);\n text-align: left;\n background: var(--bg-code);\n color: var(--text-primary);\n cursor: pointer;\n transition: border-color var(--duration-fast) var(--ease-standard);\n}\n.pill:hover {\n border-color: var(--border-strong);\n}\n.pill:focus-visible {\n outline: none;\n box-shadow: var(--shadow-focus-ring);\n}\n.pillText {\n font-family: var(--font-mono);\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line);\n white-space: normal;\n overflow-wrap: anywhere;\n min-width: 0;\n}\n.pillIcon {\n display: inline-flex;\n color: var(--text-tertiary);\n}\n.pill[data-state='copied'] .pillIcon {\n color: var(--status-success-fg);\n}\n.pill[data-state='failed'] {\n border-color: var(--status-danger-solid);\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n white-space: nowrap;\n border: 0;\n}\n\n/* ── Launch split button ─────────────────────────────────────────────── */\n\n.split {\n display: inline-flex;\n align-items: stretch;\n}\n.split > :first-child {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.split > :last-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n margin-left: -1px;\n}\n.disabledNote {\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line);\n color: var(--text-tertiary);\n max-width: 18rem;\n text-align: right;\n}\n\n/* ── Dialog bodies ───────────────────────────────────────────────────── */\n\n.dialogBody {\n display: flex;\n flex-direction: column;\n gap: var(--space-3);\n font-size: var(--text-sm-size);\n line-height: var(--text-sm-line);\n color: var(--text-secondary);\n}\n.dialogBody p {\n margin: 0;\n}\n.commandBlock {\n display: flex;\n flex-direction: column;\n gap: var(--space-1);\n}\n.commandLabel {\n font-family: var(--font-display);\n font-size: var(--text-2xs-size);\n line-height: var(--text-2xs-line);\n text-transform: uppercase;\n letter-spacing: var(--tracking-label);\n color: var(--text-tertiary);\n}\n.dialogActions {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--space-2);\n margin-top: var(--space-2);\n}\n.fieldset {\n border: 0;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n gap: var(--space-2);\n}\n.legend {\n padding: 0;\n margin-bottom: var(--space-1);\n font-size: var(--text-xs-size);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n}\n.radio {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n font-size: var(--text-sm-size);\n color: var(--text-primary);\n}\n.radio input {\n accent-color: var(--accent-500);\n}\n.error {\n margin: 0;\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line-relaxed);\n color: var(--status-danger-fg);\n}\n.textarea {\n width: 100%;\n min-height: 5rem;\n resize: vertical;\n padding: var(--space-2);\n border: 1px solid var(--border-default);\n border-radius: var(--radius-sm);\n background: var(--bg-input);\n color: var(--text-primary);\n font-family: var(--font-mono);\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line-relaxed);\n}\n.textarea:focus-visible {\n outline: none;\n box-shadow: var(--shadow-focus-ring);\n}\n.fieldLabel {\n display: flex;\n flex-direction: column;\n gap: var(--space-1);\n font-size: var(--text-xs-size);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n}\n.hint {\n font-weight: var(--font-weight-regular);\n color: var(--text-tertiary);\n}\n.warnings {\n margin: 0;\n padding-left: var(--space-4);\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line-relaxed);\n color: var(--status-warning-fg);\n}\n\n/* ── MCP ─────────────────────────────────────────────────────────────── */\n\n.servers {\n display: flex;\n flex-direction: column;\n gap: var(--space-2);\n margin-top: var(--space-2);\n}\n.reasonCode {\n font-family: var(--font-mono);\n font-size: var(--text-2xs-size);\n color: var(--text-tertiary);\n}\n\n.scopeLine {\n margin: 0;\n padding: 0 0 var(--space-3);\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line-relaxed);\n color: var(--text-tertiary);\n}\n\n/* ── Compact container (a 375 window, or a narrow pane) ──────────────── */\n@container (max-width: 480px) {\n .row {\n grid-template-columns: auto minmax(0, 1fr);\n }\n .rowAside {\n grid-column: 2;\n justify-content: flex-start;\n max-width: none;\n }\n .disabledNote {\n text-align: left;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .pill {\n transition: none;\n }\n}\n","/**\n * routes/verse/apps/MonogramTile.tsx — the square letter tile every seat and\n * app row leads with (SPEC-310C §6: engines are a monogram and a 2px tick,\n * never a vendor logo — no brand impersonation, and one visual grammar for\n * the rail, the sidebar, Apps and the capacity strip).\n *\n * Engine-backed tiles take a 12% tint of the engine hue with an ink letter,\n * so the letter's contrast never depends on the hue; neutral tiles (Aider,\n * Goose, …) sit on the surface with a hairline. Decorative: the row's name\n * carries the meaning.\n */\nimport type { CSSProperties } from 'react';\nimport type { VerseEngine } from '../../../data/api-types.js';\nimport { engineColor } from '../../../components/primitives/Tag.js';\nimport styles from './Apps.module.css';\n\nexport function MonogramTile({\n monogram,\n engine,\n size = 'md',\n}: {\n monogram: string;\n engine: VerseEngine | null;\n /** md = 32px (Apps rows), sm = 24px (capacity rows). */\n size?: 'sm' | 'md';\n}) {\n const style = engine === null ? undefined : ({ '--tile-hue': engineColor(engine) } as CSSProperties);\n return (\n <span\n className={styles.tile}\n data-size={size}\n data-engine={engine ?? undefined}\n style={style}\n aria-hidden=\"true\"\n >\n {monogram.slice(0, 2)}\n </span>\n );\n}\n","/*\n * The shared capacity strip. Tokens only (DESIGN.md §13): no raw colour, no\n * px font size. It adapts to ITS container, not the window — the same strip\n * sits in an 880px Apps column and a 300px Resources panel — so the narrow\n * layout is a container query at the compact breakpoint (480, viewport.ts).\n */\n.strip {\n container-type: inline-size;\n display: flex;\n flex-direction: column;\n gap: var(--space-3);\n min-width: 0;\n}\n\n.visuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n white-space: nowrap;\n border: 0;\n}\n\n.headline {\n margin: 0;\n font-size: var(--text-sm-size);\n line-height: var(--text-sm-line);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n}\n\n.empty {\n margin: 0;\n font-size: var(--text-sm-size);\n line-height: var(--text-sm-line);\n color: var(--text-secondary);\n}\n\n.rows {\n list-style: none;\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n}\n\n.row {\n display: grid;\n grid-template-columns: auto minmax(0, 1fr) auto;\n align-items: start;\n gap: var(--space-3);\n padding: var(--space-3) 0;\n border-top: 1px solid var(--border-subtle);\n}\n.row:first-child {\n border-top: 0;\n}\n.row[data-compact] {\n padding: var(--space-2) 0;\n gap: var(--space-2);\n align-items: center;\n}\n\n.main {\n display: flex;\n flex-direction: column;\n gap: var(--space-1);\n min-width: 0;\n}\n\n.head {\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n gap: var(--space-1) var(--space-3);\n min-width: 0;\n}\n\n.nameWrap,\n.nameButton {\n display: inline-flex;\n align-items: baseline;\n gap: var(--space-2);\n min-width: 0;\n}\n.nameButton {\n padding: 0;\n border: 0;\n background: none;\n font: inherit;\n color: inherit;\n cursor: pointer;\n border-radius: var(--radius-xs);\n}\n.nameButton:hover .name {\n text-decoration: underline;\n text-underline-offset: 2px;\n}\n.nameButton:focus-visible {\n outline: none;\n box-shadow: var(--shadow-focus-ring);\n}\n.nameButton[aria-pressed='true'] .name {\n color: var(--text-link);\n}\n\n/* The seat name is often a control (Usage's toggle): it wraps, never cut mid-word. */\n.name {\n font-size: var(--text-sm-size);\n line-height: var(--text-sm-line);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n min-width: 0;\n overflow-wrap: anywhere;\n text-align: left;\n}\n\n.plan {\n font-size: var(--text-2xs-size);\n line-height: var(--text-2xs-line);\n text-transform: uppercase;\n letter-spacing: var(--tracking-label);\n font-family: var(--font-display);\n color: var(--text-tertiary);\n}\n\n/* A state is a WORD; the dot only reinforces it. */\n.word {\n display: inline-flex;\n align-items: center;\n gap: var(--space-1);\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line);\n color: var(--text-secondary);\n white-space: nowrap;\n}\n.dot {\n width: 7px;\n height: 7px;\n border-radius: var(--radius-full);\n background: var(--status-neutral-solid);\n flex: none;\n}\n.word[data-tone='success'] .dot { background: var(--status-success-solid); }\n.word[data-tone='warning'] { color: var(--status-warning-fg); }\n.word[data-tone='warning'] .dot { background: var(--status-warning-solid); }\n.word[data-tone='danger'] { color: var(--status-danger-fg); }\n.word[data-tone='danger'] .dot { background: var(--status-danger-solid); }\n.word[data-tone='neutral'] { font-style: italic; }\n.word[data-tone='neutral'] .dot {\n background: transparent;\n border: 1px solid var(--status-unknown-solid);\n}\n\n/*\n * Accounts mode: the row's status reads as a short sentence — a label in the\n * tone's colour, then the detail in secondary text. The detail may wrap (a\n * provider's reset prose can be long); the label never truncates.\n */\n.status {\n display: inline-flex;\n align-items: baseline;\n flex-wrap: wrap;\n gap: 0 var(--space-1);\n min-width: 0;\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line);\n color: var(--text-secondary);\n}\n.status .dot {\n align-self: center;\n}\n.statusLabel {\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n white-space: nowrap;\n}\n.status[data-tone='success'] .dot { background: var(--status-success-solid); }\n.status[data-tone='success'] .statusLabel { color: var(--status-success-fg); }\n.status[data-tone='warning'] .dot { background: var(--status-warning-solid); }\n.status[data-tone='warning'] .statusLabel { color: var(--status-warning-fg); }\n.status[data-tone='danger'] .dot { background: var(--status-danger-solid); }\n.status[data-tone='danger'] .statusLabel { color: var(--status-danger-fg); }\n.status[data-tone='neutral'] .dot {\n background: transparent;\n border: 1px solid var(--status-unknown-solid);\n}\n.status[data-tone='neutral'] .statusLabel {\n color: var(--text-secondary);\n font-style: italic;\n}\n.statusDetail {\n overflow-wrap: anywhere;\n}\n\n.stamp {\n margin: 0;\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line);\n color: var(--text-tertiary);\n font-variant-numeric: tabular-nums;\n}\n.usableAgain {\n color: var(--text-secondary);\n font-weight: var(--font-weight-medium);\n}\n\n.summary,\n.meta {\n margin: 0;\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line-relaxed);\n color: var(--text-secondary);\n overflow-wrap: anywhere;\n}\n.meta {\n color: var(--text-tertiary);\n}\n.autonomy {\n color: var(--text-secondary);\n font-weight: var(--font-weight-medium);\n}\n.autonomy[data-status='eligible'] { color: var(--status-success-fg); }\n.autonomy[data-status='unknown'] {\n font-style: italic;\n color: var(--status-unknown-fg);\n}\n\n.bars {\n display: flex;\n flex-direction: column;\n gap: var(--space-1);\n margin-top: var(--space-1);\n}\n\n.bar {\n display: grid;\n grid-template-columns: minmax(4.5rem, 7.5rem) minmax(5rem, 1fr) minmax(2.75rem, auto) minmax(0, 12rem);\n align-items: center;\n gap: var(--space-2);\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line);\n}\n.bar[data-compact] {\n grid-template-columns: minmax(3.5rem, 5.5rem) minmax(3rem, 1fr) auto;\n}\n\n.barLabel {\n color: var(--text-tertiary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.bar[data-binding] .barLabel {\n color: var(--text-secondary);\n}\n\n/* used (solid) · room (track) · kept for you (hatched, past the tick). */\n.track {\n position: relative;\n display: block;\n height: 6px;\n border-radius: var(--radius-full);\n background: var(--meter-track);\n overflow: hidden;\n}\n.trackUnknown {\n display: block;\n height: 6px;\n border-radius: var(--radius-full);\n border: 1px dashed var(--border-strong);\n}\n.used {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n border-radius: var(--radius-full);\n background: var(--data-seq-5);\n transition: width var(--duration-base) var(--ease-standard);\n}\n.used[data-level='tight'] { background: var(--status-warning-solid); }\n.used[data-level='limit'] { background: var(--status-danger-solid); }\n.reserve {\n position: absolute;\n top: 0;\n bottom: 0;\n background: repeating-linear-gradient(\n 135deg,\n color-mix(in srgb, var(--text-tertiary) 34%, transparent) 0 2px,\n transparent 2px 5px\n );\n}\n.ceiling {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 2px;\n margin-left: -1px;\n background: var(--text-secondary);\n}\n\n.value {\n font-variant-numeric: tabular-nums;\n color: var(--text-primary);\n white-space: nowrap;\n text-align: right;\n}\n.value[data-level='tight'] { color: var(--status-warning-fg); }\n.value[data-level='limit'] { color: var(--status-danger-fg); }\n.value[data-level='unknown'] {\n font-style: italic;\n color: var(--status-unknown-fg);\n}\n\n.reset {\n color: var(--text-tertiary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n gap: var(--space-1);\n}\n\n/* Narrow container (a side panel, or a 375 window): actions and resets wrap. */\n@container (max-width: 480px) {\n .row {\n grid-template-columns: auto minmax(0, 1fr);\n }\n .actions {\n grid-column: 2;\n justify-content: flex-start;\n }\n .bar {\n grid-template-columns: minmax(0, 1fr) auto;\n row-gap: var(--space-1);\n }\n .bar .track,\n .bar .trackUnknown {\n grid-column: 1 / -1;\n grid-row: 2;\n }\n .reset {\n grid-column: 1 / -1;\n grid-row: 3;\n white-space: normal;\n }\n .bar[data-compact] {\n grid-template-columns: minmax(3rem, auto) minmax(3rem, 1fr) auto;\n }\n .bar[data-compact] .track,\n .bar[data-compact] .trackUnknown {\n grid-column: auto;\n grid-row: auto;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .used {\n transition: none;\n }\n}\n","/**\n * routes/verse/usage/CapacityStrip.tsx — THE capacity view (SPEC-310C §4:\n * \"Resources, NewChatDialog and onboarding drop their own capacity views and\n * import usage/CapacityStrip instead\"). Apps & Accounts and Usage render it\n * too, so every surface answers \"how much of each seat is left\" the same way.\n *\n * [C] Claude Max · max ● connected [actions]\n * usable · 62% of 5-hour window used\n * 5-hour window ▇▇▇▇▇▇▇░░░░│▨▨▨ 62% resets 7pm\n * weekly window ▇▇▇░░░░░░░░│▨▨▨ 40% resets Thu\n * Reserved for you 40% · Autonomy: Eligible\n *\n * Each bar reads left to right: used (solid), what autonomy may still use\n * (track), and the band KEPT FOR YOU (hatched) past a tick at 100 − reserve —\n * so \"Reserved for you 40%\" is something you can see, not just read. The\n * reserve applies to the binding window; the other windows carry no tick.\n *\n * Honesty (docs/VERSE-TELEMETRY-V2.md), enforced by the model and kept here:\n * - no reading → a dashed track and the words \"no reading\", never a 0% bar;\n * - a flagged limit → \"limit reached\", never \"100%\";\n * - reset prose is printed verbatim, never turned into a countdown;\n * - every state is a WORD first; colour only reinforces it.\n *\n * Three entry points:\n * <CapacityStrip seats health? budget? …/> pure: props in, markup out;\n * <LiveCapacityStrip …/> reads the shared caches itself\n * (bootstrap seats, /health,\n * /budget) — drop-in for C1/C2;\n * useCapacityRows() the rows, for a custom layout\n * (the rail ring, the seat chip).\n */\nimport { useId, useMemo, useState, type CSSProperties, type ReactNode } from 'react';\nimport type { BudgetView } from '../../../../core/routing/policy.js';\nimport type { SeatHealthReport } from '../../../../core/verse/health-types.js';\nimport type { VerseBootstrap, VerseSeat } from '../../../data/api-types.js';\nimport { useQuery, useRefetch } from '../../../data/hooks.js';\nimport { MonogramTile } from '../apps/MonogramTile.js';\nimport { budgetQuery } from '../budget/budget-queries.js';\nimport { useSeatHealth } from '../health/useSeatHealth.js';\nimport { usePollWhileVisible, useSectionVisible } from '../shell/section-visibility.js';\nimport { useSeatsRefresh } from '../useSeatsRefresh.js';\nimport { verseBootstrapQuery } from '../verse-queries.js';\nimport {\n accountStatus,\n buildCapacityRows,\n capacityHeadline,\n capacityTone,\n orderAccountRows,\n percentText,\n windowSentence,\n type AccountStatus,\n type CapacityInputs,\n type CapacityRow,\n type CapacityWindowRow,\n} from './capacity-strip-model.js';\nimport styles from './CapacityStrip.module.css';\n\n/** Above this share of a window the bar turns amber (the word \"tight\" rides with it). */\nconst TIGHT_AT = 90;\n\n/** How often an accounts strip re-reads the clock (\"usable again in 7h\", \"checked 2m ago\"). */\nexport const ACCOUNT_CLOCK_MS = 30_000;\n\n/**\n * Apps & Accounts mode: every row leads with a sentence-case status\n * (\"Connected · usable now\", \"Spent · resets Fri 11:46 PM\", \"Signed out ·\n * reconnect to use it\", \"Checking…\"), says when it was last checked and — for\n * a spent seat — when it is usable again, and usable rows come first.\n */\nexport interface CapacityAccountsMode {\n /** False until the health sweep has answered once. */\n healthRead: boolean;\n /** The seat whose check is running now (its row reads \"Checking…\"). */\n checkingSeatId?: string | null;\n /** Injected clock for tests; otherwise the strip ticks every ACCOUNT_CLOCK_MS while visible. */\n now?: number;\n}\n\nexport interface CapacityStripProps {\n seats: readonly VerseSeat[];\n health?: readonly SeatHealthReport[] | null;\n budget?: BudgetView | null;\n local?: CapacityInputs['local'];\n seatIds?: readonly string[];\n /** full: every window with resets and the reserve; compact: one line per seat (pickers, side panels). */\n density?: 'full' | 'compact';\n /** Show the one-sentence summary above the rows. Default true for full, false for compact. */\n headline?: boolean;\n /** Heading for assistive tech (visually hidden). */\n title?: string;\n /**\n * The id of a heading that already names this strip (Apps' \"Accounts\"\n * group). The strip then labels itself by it instead of adding a second,\n * hidden heading — two regions with one name is noise to a screen reader.\n */\n labelledBy?: string;\n /** Per-seat trailing controls (Apps passes Reconnect / Fix / Edit budget). */\n renderActions?: (row: CapacityRow) => ReactNode;\n /** Makes each seat name a toggle (Usage opens the account's detail). */\n onSelectSeat?: (seatId: string) => void;\n selectedSeatId?: string | null;\n /** Shown instead of rows when the roster is empty. */\n emptyText?: string;\n /** Apps & Accounts: a status per row, when it was checked, usable rows first. */\n accounts?: CapacityAccountsMode;\n}\n\nfunction pct(n: number): number {\n return Math.max(0, Math.min(100, Math.round(n)));\n}\n\nfunction WindowBar({\n row,\n w,\n reservePercent,\n compact,\n}: {\n row: CapacityRow;\n w: CapacityWindowRow;\n reservePercent: number | null;\n compact: boolean;\n}) {\n const sentence = windowSentence(row, w, w.binding ? reservePercent : null);\n const ceiling = w.binding && reservePercent !== null && reservePercent > 0 ? 100 - pct(reservePercent) : null;\n let track: ReactNode;\n let value: ReactNode;\n if (w.limitReached) {\n track = (\n <span className={styles.track} role=\"img\" aria-label={sentence}>\n <span className={styles.used} data-level=\"limit\" style={{ width: '100%' }} />\n </span>\n );\n value = <span className={styles.value} data-level=\"limit\">limit reached</span>;\n } else if (w.usedPercent === null) {\n // Absence drawn as absence. Never a 0% bar.\n track = <span className={styles.trackUnknown} role=\"img\" aria-label={sentence} />;\n value = <span className={styles.value} data-level=\"unknown\">no reading</span>;\n } else {\n const used = pct(w.usedPercent);\n const level = used >= TIGHT_AT ? 'tight' : 'ok';\n track = (\n <span className={styles.track} role=\"img\" aria-label={sentence}>\n {ceiling !== null ? (\n <span className={styles.reserve} style={{ left: `${ceiling}%`, width: `${100 - ceiling}%` } as CSSProperties} />\n ) : null}\n <span className={styles.used} data-level={level} style={{ width: `${used}%` }} />\n {ceiling !== null ? <span className={styles.ceiling} style={{ left: `${ceiling}%` }} /> : null}\n </span>\n );\n value = <span className={styles.value} data-level={level}>{percentText(w.usedPercent)}</span>;\n }\n return (\n <div className={styles.bar} data-binding={w.binding || undefined} data-compact={compact || undefined}>\n <span className={styles.barLabel} title={w.label}>{w.label.replace(/ window$/, '')}</span>\n {track}\n {value}\n {!compact && w.resetText !== null ? <span className={styles.reset} title={w.resetText}>{w.resetText}</span> : null}\n </div>\n );\n}\n\nfunction SeatName({ row, onSelect, selected }: { row: CapacityRow; onSelect: ((id: string) => void) | undefined; selected: boolean }) {\n const text = (\n <>\n <span className={styles.name}>{row.label}</span>\n {row.plan !== null ? <span className={styles.plan}>{row.plan}</span> : null}\n </>\n );\n // A control only when there is something for it to open.\n if (!onSelect) return <span className={styles.nameWrap}>{text}</span>;\n return (\n <button type=\"button\" className={styles.nameButton} aria-pressed={selected} onClick={() => onSelect(row.seatId)}>\n {text}\n </button>\n );\n}\n\nfunction StatusLine({ status }: { status: AccountStatus }) {\n return (\n <span className={styles.status} data-tone={status.tone} data-status={status.kind}>\n <span className={styles.dot} aria-hidden=\"true\" />\n <span className={styles.statusLabel}>{status.label}</span>\n {status.detail !== null ? <span className={styles.statusDetail}>{`· ${status.detail}`}</span> : null}\n </span>\n );\n}\n\n/** \"usable again in 7h 12m · checked 2m ago\" — the row's clock facts, when it has any. */\nfunction StampLine({ status }: { status: AccountStatus }) {\n if (status.usableAgain === null && status.checked === null) return null;\n return (\n <p className={styles.stamp}>\n {status.usableAgain !== null ? <span className={styles.usableAgain}>{status.usableAgain}</span> : null}\n {status.usableAgain !== null && status.checked !== null ? ' · ' : null}\n {status.checked !== null ? <span title={status.checkedTitle ?? undefined}>{status.checked}</span> : null}\n </p>\n );\n}\n\nfunction CapacityRowView({\n row,\n compact,\n renderActions,\n onSelectSeat,\n selected,\n status,\n}: {\n row: CapacityRow;\n compact: boolean;\n renderActions: CapacityStripProps['renderActions'];\n onSelectSeat: CapacityStripProps['onSelectSeat'];\n selected: boolean;\n status: AccountStatus | null;\n}) {\n const tone = capacityTone(row.cls);\n const binding = row.windows.find((w) => w.binding) ?? null;\n const windows = compact ? (binding ? [binding] : []) : row.windows;\n const actions = renderActions ? renderActions(row) : null;\n const reserve = row.reserve;\n return (\n <li className={styles.row} data-capacity={row.cls} data-compact={compact || undefined} data-status={status?.kind}>\n <MonogramTile monogram={row.monogram} engine={row.engine} size=\"sm\" />\n <div className={styles.main}>\n <div className={styles.head}>\n <SeatName row={row} onSelect={onSelectSeat} selected={selected} />\n {status !== null ? (\n <StatusLine status={status} />\n ) : (\n <span className={styles.word} data-tone={tone}>\n <span className={styles.dot} aria-hidden=\"true\" />\n {row.word}\n </span>\n )}\n {row.connection !== null && row.connection.connection !== 'connected' && row.connection.connection !== 'unknown'\n && !(status?.coversConnection ?? false) && !(status?.kind === 'signed-out') ? (\n <span className={styles.word} data-tone={row.connection.tone}>\n <span className={styles.dot} aria-hidden=\"true\" />\n {row.connection.word}\n </span>\n ) : null}\n </div>\n {!compact || windows.length === 0 ? <p className={styles.summary}>{row.summary}</p> : null}\n {status !== null && !compact ? <StampLine status={status} /> : null}\n {windows.length > 0 ? (\n <div className={styles.bars}>\n {windows.map((w) => (\n <WindowBar key={w.id} row={row} w={w} reservePercent={reserve?.percent ?? null} compact={compact} />\n ))}\n </div>\n ) : null}\n {!compact && (reserve !== null || row.credits !== null) ? (\n <p className={styles.meta}>\n {reserve !== null ? (\n <span title={reserve.why}>\n {reserve.label}\n {/* \"Autonomy off — all yours\" already says it; no second \"Off\". */}\n {reserve.autonomy === 'off' ? null : (\n <> · Autonomy: <span className={styles.autonomy} data-status={reserve.autonomy}>{reserve.autonomyWord}</span></>\n )}\n </span>\n ) : null}\n {reserve !== null && row.credits !== null ? ' · ' : null}\n {row.credits !== null ? <span>{row.credits}</span> : null}\n </p>\n ) : null}\n </div>\n {actions ? <div className={styles.actions}>{actions}</div> : null}\n </li>\n );\n}\n\nexport function CapacityStrip({\n seats,\n health,\n budget,\n local,\n seatIds,\n density = 'full',\n headline,\n title = 'Seat capacity',\n labelledBy,\n renderActions,\n onSelectSeat,\n selectedSeatId = null,\n emptyText = 'No seats yet. Connect an account or start Ollama — an empty roster, not seats at zero.',\n accounts,\n}: CapacityStripProps) {\n const headingId = useId();\n const [tick, setTick] = useState(() => Date.now());\n usePollWhileVisible(() => setTick(Date.now()), ACCOUNT_CLOCK_MS, { enabled: accounts !== undefined && accounts.now === undefined });\n const now = accounts?.now ?? tick;\n const healthRead = accounts?.healthRead ?? false;\n const accountsMode = accounts !== undefined;\n // Accounts mode words every window reset and reason against the SAME clock\n // as its status line (\"Spent · resets Sat 11:46 PM\"), so the two never\n // disagree about which day \"today\" is.\n const rowsNow = accountsMode ? now : undefined;\n const built = useMemo(\n () => buildCapacityRows(seats, {\n health: health ?? null,\n budget: budget ?? null,\n ...(local ? { local } : {}),\n ...(seatIds ? { seatIds } : {}),\n ...(rowsNow !== undefined ? { now: rowsNow } : {}),\n }),\n [seats, health, budget, local, seatIds, rowsNow],\n );\n const rows = useMemo(\n () => (accountsMode ? orderAccountRows(built, { healthRead, now }) : built),\n [built, accountsMode, healthRead, now],\n );\n const compact = density === 'compact';\n const showHeadline = headline ?? !compact;\n // Named by the caller's heading: a plain block inside the caller's region,\n // not a second region with the same name.\n const Wrapper = labelledBy ? 'div' : 'section';\n return (\n <Wrapper className={styles.strip} aria-labelledby={labelledBy ? undefined : headingId} data-density={density}>\n {labelledBy ? null : <h3 id={headingId} className={styles.visuallyHidden}>{title}</h3>}\n {showHeadline && rows.length > 0 ? <p className={styles.headline}>{capacityHeadline(rows)}</p> : null}\n {rows.length === 0 ? (\n <p className={styles.empty}>{emptyText}</p>\n ) : (\n <ul className={styles.rows} aria-label={labelledBy ? undefined : title} aria-labelledby={labelledBy}>\n {rows.map((row) => (\n <CapacityRowView\n key={row.seatId}\n row={row}\n compact={compact}\n renderActions={renderActions}\n onSelectSeat={onSelectSeat}\n selected={selectedSeatId === row.seatId}\n status={accounts\n ? accountStatus(row, { healthRead, now, checking: accounts.checkingSeatId === row.seatId })\n : null}\n />\n ))}\n </ul>\n )}\n </Wrapper>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Live data\n// ---------------------------------------------------------------------------\n\n/** Budget moves with the collector (30 s); a minute is plenty for a strip. */\nexport const CAPACITY_BUDGET_POLL_MS = 60_000;\n\nexport interface CapacityData {\n seats: readonly VerseSeat[];\n health: readonly SeatHealthReport[] | null;\n budget: BudgetView | null;\n /** True until the seat roster has been read once. */\n loading: boolean;\n}\n\n/**\n * The three shared reads behind the strip, kept live while the surface is on\n * screen: seats (the /seats poll merged into bootstrap), A2's health (30 s)\n * and A9's budget (60 s). Each is the app-wide cache entry — mounting this\n * twice costs no extra request.\n */\nexport function useCapacityData(opts: { withBudget?: boolean; withHealth?: boolean } = {}): CapacityData {\n const visible = useSectionVisible();\n const withBudget = opts.withBudget ?? true;\n const withHealth = opts.withHealth ?? true;\n const bootstrap = useQuery(verseBootstrapQuery);\n useSeatsRefresh(visible);\n const health = useSeatHealth(visible && withHealth);\n const budget = useQuery(budgetQuery);\n const refetchBudget = useRefetch(budgetQuery);\n usePollWhileVisible(refetchBudget, CAPACITY_BUDGET_POLL_MS, { enabled: withBudget });\n const data = bootstrap.data as VerseBootstrap | undefined;\n return {\n seats: data?.seats ?? [],\n health: withHealth ? (health.data?.seats ?? null) : null,\n budget: withBudget ? (budget.data ?? null) : null,\n loading: data === undefined && (bootstrap.status === 'loading' || bootstrap.status === 'idle'),\n };\n}\n\n/** The rows for a custom layout (the rail's capacity ring, the composer's seat chip). */\nexport function useCapacityRows(inputs: Omit<CapacityInputs, 'health' | 'budget'> = {}): CapacityRow[] {\n const data = useCapacityData();\n return useMemo(\n () => buildCapacityRows(data.seats, { health: data.health, budget: data.budget, ...inputs }),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- inputs is a small literal; its fields are the identity.\n [data.seats, data.health, data.budget, inputs.local, inputs.seatIds],\n );\n}\n\nexport interface LiveCapacityStripProps extends Omit<CapacityStripProps, 'seats' | 'health' | 'budget'> {\n /**\n * The roster, when the caller already holds it (the new-chat dialog, whose\n * seat list IS this roster and whose pre-fill works from its own props).\n * The strip then adds only health and budget, and never shows \"Reading\n * seats…\" over a roster that is already on screen.\n */\n seats?: readonly VerseSeat[];\n}\n\n/** Drop-in strip that reads its own data — what NewChatDialog and onboarding mount. */\nexport function LiveCapacityStrip({ seats: given, ...props }: LiveCapacityStripProps) {\n const data = useCapacityData();\n if (given === undefined && data.loading) {\n return <p className={styles.empty} aria-busy=\"true\">Reading seats…</p>;\n }\n return <CapacityStrip {...props} seats={given ?? data.seats} health={data.health} budget={data.budget} />;\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ ._section_1vcn6_8{background:var(--bg-canvas);flex-direction:column;height:100%;min-height:0;display:flex}._scroll_1vcn6_16{min-height:0;padding:var(--space-6) var(--space-4) var(--space-12);padding-left:max(var(--space-4), calc(var(--app-traffic-light-inset,0px) - var(--rail-width,56px)));flex:1;overflow-y:auto}._page_1vcn6_34{gap:var(--space-8);flex-direction:column;max-width:880px;margin:0 auto;display:flex;container-type:inline-size}._header_1vcn6_43{justify-content:space-between;align-items:flex-end;gap:var(--space-3) var(--space-4);flex-wrap:wrap;display:flex}._headerText_1vcn6_50{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}._title_1vcn6_56{font-family:var(--font-display);font-size:var(--text-xl-size);line-height:var(--text-xl-line);letter-spacing:var(--tracking-display);font-weight:var(--font-weight-semibold);color:var(--text-primary);margin:0}._lede_1vcn6_65{font-size:var(--text-sm-size);line-height:var(--text-sm-line);color:var(--text-secondary);margin:0}._headerMeta_1vcn6_71{align-items:center;gap:var(--space-2);font-size:var(--text-xs-size);line-height:var(--text-xs-line);color:var(--text-tertiary);display:flex}._banner_1vcn6_80{padding:var(--space-3) var(--space-4);border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--bg-surface);font-size:var(--text-sm-size);line-height:var(--text-sm-line);color:var(--text-secondary);margin:0}._banner_1vcn6_80[data-tone=danger]{border-color:color-mix(in srgb, var(--status-danger-solid) 40%, var(--border-subtle));color:var(--status-danger-fg)}._accountsNote_1vcn6_96{font-size:var(--text-xs-size);line-height:var(--text-xs-line);color:var(--text-secondary);margin:0}._accountsNote_1vcn6_96[data-tone=danger]{color:var(--status-danger-fg)}._group_1vcn6_108{gap:var(--space-2);scroll-margin-top:var(--space-6);flex-direction:column;display:flex}._groupHead_1vcn6_114{justify-content:space-between;align-items:center;gap:var(--space-3);min-height:var(--control-h-sm);display:flex}._groupTitle_1vcn6_121{font-family:var(--font-display);font-size:var(--text-2xs-size);line-height:var(--text-2xs-line);text-transform:uppercase;letter-spacing:var(--tracking-label);font-weight:var(--font-weight-semibold);color:var(--text-tertiary);margin:0}._groupTitle_1vcn6_121:focus{outline:none}._groupTitle_1vcn6_121:focus-visible{box-shadow:var(--shadow-focus-ring);border-radius:var(--radius-xs)}._caveat_1vcn6_138{font-size:var(--text-xs-size);line-height:var(--text-xs-line-relaxed);color:var(--text-secondary);margin:0}._caveat_1vcn6_138 code,._inlineCode_1vcn6_145{font-family:var(--font-mono);font-size:var(--text-xs-size);background:var(--bg-code);padding:0 var(--space-1);border-radius:var(--radius-xs);overflow-wrap:anywhere}._card_1vcn6_154{border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--bg-surface);padding:0 var(--card-pad);box-shadow:inset 0 1px 0 var(--hairline-lift)}._rows_1vcn6_162{margin:0;padding:0;list-style:none}._row_1vcn6_162{align-items:start;gap:var(--space-3);padding:var(--space-3) 0;border-top:1px solid var(--border-subtle);grid-template-columns:auto minmax(0,1fr) auto;display:grid}._row_1vcn6_162:first-child{border-top:0}._rowMain_1vcn6_180{gap:var(--space-1);min-width:0;padding-top:var(--space-1);flex-direction:column;display:flex}._rowHead_1vcn6_187{align-items:baseline;gap:var(--space-1) var(--space-3);flex-wrap:wrap;min-width:0;display:flex}._rowName_1vcn6_194{font-size:var(--text-sm-size);line-height:var(--text-sm-line);font-weight:var(--font-weight-semibold);color:var(--text-primary)}._rowVersion_1vcn6_200{font-family:var(--font-mono);font-size:var(--text-xs-size);color:var(--text-tertiary)}._rowDesc_1vcn6_205,._rowDetail_1vcn6_206{font-size:var(--text-xs-size);line-height:var(--text-xs-line-relaxed);color:var(--text-secondary);overflow-wrap:anywhere;margin:0}._rowDetail_1vcn6_206{color:var(--text-tertiary)}._rowAside_1vcn6_217{justify-content:flex-end;align-items:center;gap:var(--space-2);padding-top:var(--space-1);flex-wrap:wrap;max-width:26rem;display:flex}._health_1vcn6_228{align-items:center;gap:var(--space-1);font-size:var(--text-xs-size);line-height:var(--text-xs-line);color:var(--text-secondary);white-space:nowrap;display:inline-flex}._healthDot_1vcn6_237{border-radius:var(--radius-full);background:var(--status-neutral-solid);flex:none;width:7px;height:7px}._health_1vcn6_228[data-tone=success] ._healthDot_1vcn6_237{background:var(--status-success-solid)}._health_1vcn6_228[data-tone=warning]{color:var(--status-warning-fg)}._health_1vcn6_228[data-tone=warning] ._healthDot_1vcn6_237{background:var(--status-warning-solid)}._health_1vcn6_228[data-tone=danger]{color:var(--status-danger-fg)}._health_1vcn6_228[data-tone=danger] ._healthDot_1vcn6_237{background:var(--status-danger-solid)}._health_1vcn6_228[data-tone=off]{color:var(--text-tertiary)}._health_1vcn6_228[data-tone=off] ._healthDot_1vcn6_237{border:1px solid var(--border-strong);background:0 0}._health_1vcn6_228[data-tone=neutral]{color:var(--status-unknown-fg);font-style:italic}._health_1vcn6_228[data-tone=neutral] ._healthDot_1vcn6_237{border:1px dashed var(--status-unknown-solid);background:0 0}._loadingLine_1vcn6_263{padding:var(--space-3) 0;font-size:var(--text-sm-size);line-height:var(--text-sm-line);color:var(--text-secondary);margin:0}._tile_1vcn6_273{--tile-hue:var(--text-tertiary);border-radius:var(--radius-md);width:32px;height:32px;font-family:var(--font-display);font-size:var(--text-sm-size);font-weight:var(--font-weight-semibold);color:var(--text-primary);background:var(--bg-surface-raised);border:1px solid var(--border-subtle);flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative;overflow:hidden}._tile_1vcn6_273[data-engine]{background:color-mix(in srgb, var(--tile-hue) 12%, var(--bg-surface));border-color:color-mix(in srgb, var(--tile-hue) 28%, var(--border-subtle))}._tile_1vcn6_273[data-engine]:before{content:"";background:var(--tile-hue);width:2px;position:absolute;top:0;bottom:0;left:0}._tile_1vcn6_273[data-size=sm]{border-radius:var(--radius-sm);width:24px;height:24px;font-size:var(--text-xs-size)}._pillWrap_1vcn6_314{min-width:0;max-width:100%;display:inline-flex}._pill_1vcn6_314{align-items:center;gap:var(--space-2);min-width:0;max-width:100%;min-height:var(--control-h-sm);padding:2px var(--space-2) 2px var(--space-3);border:1px solid var(--border-subtle);border-radius:calc(var(--control-h-sm) / 2);text-align:left;background:var(--bg-code);color:var(--text-primary);cursor:pointer;transition:border-color var(--duration-fast) var(--ease-standard);display:inline-flex}._pill_1vcn6_314:hover{border-color:var(--border-strong)}._pill_1vcn6_314:focus-visible{box-shadow:var(--shadow-focus-ring);outline:none}._pillText_1vcn6_348{font-family:var(--font-mono);font-size:var(--text-xs-size);line-height:var(--text-xs-line);white-space:normal;overflow-wrap:anywhere;min-width:0}._pillIcon_1vcn6_356{color:var(--text-tertiary);display:inline-flex}._pill_1vcn6_314[data-state=copied] ._pillIcon_1vcn6_356{color:var(--status-success-fg)}._pill_1vcn6_314[data-state=failed]{border-color:var(--status-danger-solid)}._visuallyHidden_1vcn6_367{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}._split_1vcn6_381{align-items:stretch;display:inline-flex}._split_1vcn6_381>:first-child{border-top-right-radius:0;border-bottom-right-radius:0}._split_1vcn6_381>:last-child{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}._disabledNote_1vcn6_394{font-size:var(--text-xs-size);line-height:var(--text-xs-line);color:var(--text-tertiary);text-align:right;max-width:18rem}._dialogBody_1vcn6_404{gap:var(--space-3);font-size:var(--text-sm-size);line-height:var(--text-sm-line);color:var(--text-secondary);flex-direction:column;display:flex}._dialogBody_1vcn6_404 p{margin:0}._commandBlock_1vcn6_415{gap:var(--space-1);flex-direction:column;display:flex}._commandLabel_1vcn6_420{font-family:var(--font-display);font-size:var(--text-2xs-size);line-height:var(--text-2xs-line);text-transform:uppercase;letter-spacing:var(--tracking-label);color:var(--text-tertiary)}._dialogActions_1vcn6_428{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}._fieldset_1vcn6_435{gap:var(--space-2);border:0;flex-direction:column;margin:0;padding:0;display:flex}._legend_1vcn6_443{margin-bottom:var(--space-1);font-size:var(--text-xs-size);font-weight:var(--font-weight-semibold);color:var(--text-primary);padding:0}._radio_1vcn6_450{align-items:center;gap:var(--space-2);font-size:var(--text-sm-size);color:var(--text-primary);display:flex}._radio_1vcn6_450 input{accent-color:var(--accent-500)}._error_1vcn6_460{font-size:var(--text-xs-size);line-height:var(--text-xs-line-relaxed);color:var(--status-danger-fg);margin:0}._textarea_1vcn6_466{resize:vertical;width:100%;min-height:5rem;padding:var(--space-2);border:1px solid var(--border-default);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--text-xs-size);line-height:var(--text-xs-line-relaxed)}._textarea_1vcn6_466:focus-visible{box-shadow:var(--shadow-focus-ring);outline:none}._fieldLabel_1vcn6_483{gap:var(--space-1);font-size:var(--text-xs-size);font-weight:var(--font-weight-medium);color:var(--text-primary);flex-direction:column;display:flex}._hint_1vcn6_491{font-weight:var(--font-weight-regular);color:var(--text-tertiary)}._warnings_1vcn6_495{padding-left:var(--space-4);font-size:var(--text-xs-size);line-height:var(--text-xs-line-relaxed);color:var(--status-warning-fg);margin:0}._servers_1vcn6_505{gap:var(--space-2);margin-top:var(--space-2);flex-direction:column;display:flex}._reasonCode_1vcn6_511{font-family:var(--font-mono);font-size:var(--text-2xs-size);color:var(--text-tertiary)}._scopeLine_1vcn6_517{padding:0 0 var(--space-3);font-size:var(--text-xs-size);line-height:var(--text-xs-line-relaxed);color:var(--text-tertiary);margin:0}@container (width<=480px){._row_1vcn6_162{grid-template-columns:auto minmax(0,1fr)}._rowAside_1vcn6_217{grid-column:2;justify-content:flex-start;max-width:none}._disabledNote_1vcn6_394{text-align:left}}@media (prefers-reduced-motion:reduce){._pill_1vcn6_314{transition:none}}._strip_o9cqi_7{gap:var(--space-3);flex-direction:column;min-width:0;display:flex;container-type:inline-size}._visuallyHidden_o9cqi_15{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}._headline_o9cqi_27{font-size:var(--text-sm-size);line-height:var(--text-sm-line);font-weight:var(--font-weight-medium);color:var(--text-primary);margin:0}._empty_o9cqi_35{font-size:var(--text-sm-size);line-height:var(--text-sm-line);color:var(--text-secondary);margin:0}._rows_o9cqi_42{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}._row_o9cqi_42{align-items:start;gap:var(--space-3);padding:var(--space-3) 0;border-top:1px solid var(--border-subtle);grid-template-columns:auto minmax(0,1fr) auto;display:grid}._row_o9cqi_42:first-child{border-top:0}._row_o9cqi_42[data-compact]{padding:var(--space-2) 0;gap:var(--space-2);align-items:center}._main_o9cqi_67{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}._head_o9cqi_27{align-items:baseline;gap:var(--space-1) var(--space-3);flex-wrap:wrap;min-width:0;display:flex}._nameWrap_o9cqi_82,._nameButton_o9cqi_83{align-items:baseline;gap:var(--space-2);min-width:0;display:inline-flex}._nameButton_o9cqi_83{font:inherit;color:inherit;cursor:pointer;border-radius:var(--radius-xs);background:0 0;border:0;padding:0}._nameButton_o9cqi_83:hover ._name_o9cqi_82{text-underline-offset:2px;text-decoration:underline}._nameButton_o9cqi_83:focus-visible{box-shadow:var(--shadow-focus-ring);outline:none}._nameButton_o9cqi_83[aria-pressed=true] ._name_o9cqi_82{color:var(--text-link)}._name_o9cqi_82{font-size:var(--text-sm-size);line-height:var(--text-sm-line);font-weight:var(--font-weight-semibold);color:var(--text-primary);overflow-wrap:anywhere;text-align:left;min-width:0}._plan_o9cqi_121{font-size:var(--text-2xs-size);line-height:var(--text-2xs-line);text-transform:uppercase;letter-spacing:var(--tracking-label);font-family:var(--font-display);color:var(--text-tertiary)}._word_o9cqi_131{align-items:center;gap:var(--space-1);font-size:var(--text-xs-size);line-height:var(--text-xs-line);color:var(--text-secondary);white-space:nowrap;display:inline-flex}._dot_o9cqi_140{border-radius:var(--radius-full);background:var(--status-neutral-solid);flex:none;width:7px;height:7px}._word_o9cqi_131[data-tone=success] ._dot_o9cqi_140{background:var(--status-success-solid)}._word_o9cqi_131[data-tone=warning]{color:var(--status-warning-fg)}._word_o9cqi_131[data-tone=warning] ._dot_o9cqi_140{background:var(--status-warning-solid)}._word_o9cqi_131[data-tone=danger]{color:var(--status-danger-fg)}._word_o9cqi_131[data-tone=danger] ._dot_o9cqi_140{background:var(--status-danger-solid)}._word_o9cqi_131[data-tone=neutral]{font-style:italic}._word_o9cqi_131[data-tone=neutral] ._dot_o9cqi_140{border:1px solid var(--status-unknown-solid);background:0 0}._status_o9cqi_163{align-items:baseline;gap:0 var(--space-1);min-width:0;font-size:var(--text-xs-size);line-height:var(--text-xs-line);color:var(--text-secondary);flex-wrap:wrap;display:inline-flex}._status_o9cqi_163 ._dot_o9cqi_140{align-self:center}._statusLabel_o9cqi_176{font-weight:var(--font-weight-medium);color:var(--text-primary);white-space:nowrap}._status_o9cqi_163[data-tone=success] ._dot_o9cqi_140{background:var(--status-success-solid)}._status_o9cqi_163[data-tone=success] ._statusLabel_o9cqi_176{color:var(--status-success-fg)}._status_o9cqi_163[data-tone=warning] ._dot_o9cqi_140{background:var(--status-warning-solid)}._status_o9cqi_163[data-tone=warning] ._statusLabel_o9cqi_176{color:var(--status-warning-fg)}._status_o9cqi_163[data-tone=danger] ._dot_o9cqi_140{background:var(--status-danger-solid)}._status_o9cqi_163[data-tone=danger] ._statusLabel_o9cqi_176{color:var(--status-danger-fg)}._status_o9cqi_163[data-tone=neutral] ._dot_o9cqi_140{border:1px solid var(--status-unknown-solid);background:0 0}._status_o9cqi_163[data-tone=neutral] ._statusLabel_o9cqi_176{color:var(--text-secondary);font-style:italic}._statusDetail_o9cqi_195{overflow-wrap:anywhere}._stamp_o9cqi_199{font-size:var(--text-xs-size);line-height:var(--text-xs-line);color:var(--text-tertiary);font-variant-numeric:tabular-nums;margin:0}._usableAgain_o9cqi_206{color:var(--text-secondary);font-weight:var(--font-weight-medium)}._summary_o9cqi_211,._meta_o9cqi_212{font-size:var(--text-xs-size);line-height:var(--text-xs-line-relaxed);color:var(--text-secondary);overflow-wrap:anywhere;margin:0}._meta_o9cqi_212{color:var(--text-tertiary)}._autonomy_o9cqi_222{color:var(--text-secondary);font-weight:var(--font-weight-medium)}._autonomy_o9cqi_222[data-status=eligible]{color:var(--status-success-fg)}._autonomy_o9cqi_222[data-status=unknown]{color:var(--status-unknown-fg);font-style:italic}._bars_o9cqi_232{gap:var(--space-1);margin-top:var(--space-1);flex-direction:column;display:flex}._bar_o9cqi_232{align-items:center;gap:var(--space-2);font-size:var(--text-xs-size);line-height:var(--text-xs-line);grid-template-columns:minmax(4.5rem,7.5rem) minmax(5rem,1fr) minmax(2.75rem,auto) minmax(0,12rem);display:grid}._bar_o9cqi_232[data-compact]{grid-template-columns:minmax(3.5rem,5.5rem) minmax(3rem,1fr) auto}._barLabel_o9cqi_251{color:var(--text-tertiary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}._bar_o9cqi_232[data-binding] ._barLabel_o9cqi_251{color:var(--text-secondary)}._track_o9cqi_262{border-radius:var(--radius-full);background:var(--meter-track);height:6px;display:block;position:relative;overflow:hidden}._trackUnknown_o9cqi_270{border-radius:var(--radius-full);border:1px dashed var(--border-strong);height:6px;display:block}._used_o9cqi_276{border-radius:var(--radius-full);background:var(--data-seq-5);transition:width var(--duration-base) var(--ease-standard);position:absolute;top:0;bottom:0;left:0}._used_o9cqi_276[data-level=tight]{background:var(--status-warning-solid)}._used_o9cqi_276[data-level=limit]{background:var(--status-danger-solid)}._reserve_o9cqi_287{background:repeating-linear-gradient(135deg, color-mix(in srgb, var(--text-tertiary) 34%, transparent) 0 2px, transparent 2px 5px);position:absolute;top:0;bottom:0}._ceiling_o9cqi_297{background:var(--text-secondary);width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}._value_o9cqi_306{font-variant-numeric:tabular-nums;color:var(--text-primary);white-space:nowrap;text-align:right}._value_o9cqi_306[data-level=tight]{color:var(--status-warning-fg)}._value_o9cqi_306[data-level=limit]{color:var(--status-danger-fg)}._value_o9cqi_306[data-level=unknown]{color:var(--status-unknown-fg);font-style:italic}._reset_o9cqi_319{color:var(--text-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}._actions_o9cqi_326{justify-content:flex-end;gap:var(--space-1);flex-wrap:wrap;display:flex}@container (width<=480px){._row_o9cqi_42{grid-template-columns:auto minmax(0,1fr)}._actions_o9cqi_326{grid-column:2;justify-content:flex-start}._bar_o9cqi_232{row-gap:var(--space-1);grid-template-columns:minmax(0,1fr) auto}._bar_o9cqi_232 ._track_o9cqi_262,._bar_o9cqi_232 ._trackUnknown_o9cqi_270{grid-area:2/1/auto/-1}._reset_o9cqi_319{white-space:normal;grid-area:3/1/auto/-1}._bar_o9cqi_232[data-compact]{grid-template-columns:minmax(3rem,auto) minmax(3rem,1fr) auto}._bar_o9cqi_232[data-compact] ._track_o9cqi_262,._bar_o9cqi_232[data-compact] ._trackUnknown_o9cqi_270{grid-area:auto}}@media (prefers-reduced-motion:reduce){._used_o9cqi_276{transition:none}}
@@ -0,0 +1,3 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/DockHost-DvR-hPhZ.js","assets/index-oAAq8XJa.js","assets/global-Di2PUgj4.js","assets/global-_tOCFt9y.css","assets/MutationTokenDialog-SkRxqV_I.js","assets/MutationTokenDialog-Cum_DqQZ.css","assets/command-catalog-BdtDH93o.js","assets/workbench-types-DzN-5trg.js","assets/dock-store-BA1cHOYA.js","assets/viewport-BEqGUoTA.js","assets/verse-store-DjBWj04q.js","assets/format-B8DAVcn2.js","assets/format-DKrNjdwD.js","assets/VerseConsoleApp-WVeyJnW7.js","assets/RouteErrorBoundary-C5SxA2Dg.js","assets/RouteErrorBoundary-6RMd_aZg.css","assets/guarded-action-CvOHcqyH.js","assets/verse-ui-store-zafyzXKD.js","assets/verse-queries-DvIJcn6Z.js","assets/composer-keys-DBRymxQn.js","assets/command-bus-DqimKCUY.js","assets/section-visibility-qFqc_d4Z.js","assets/useActivity-Bk3XgXjL.js","assets/icons-B_yuAgdN.js","assets/VerseConsoleApp-Cxqr-3qc.css","assets/verse-model-D7NZQFAR.js","assets/context-queries-xVKIeynP.js","assets/context-model-MT17V86_.js","assets/context-model-Dwd49-dp.js","assets/workspace-model-D_tWD5Wt.js","assets/ActionMenu-CQvNJvHY.js","assets/ActionMenu-DPjsLU1g.css","assets/tool-semantics-GX8ScuSH.js","assets/line-diff-B5Eonif2.js","assets/dock-icons-8EtARwUm.js","assets/dock-icons-1w9hA2-h.css","assets/tasks-model-ent8f0jZ.js","assets/sidebar-model-M1GaQU5l.js","assets/use-token-gate-B3IJL6bf.js","assets/EmptyState-DhNgDDrF.js","assets/EmptyState-B3YUPGaa.css","assets/slots-Ds9ZIqUL.js","assets/Button-DYv_KKxr.js","assets/Button-DrnKsvnQ.css","assets/dock-panes-UKS-mXhr.js","assets/Switch-CcR5Llk5.js","assets/Switch-CU044EaE.css","assets/context.module-BijAfoJw.js","assets/context-DiToyj6s.css","assets/DockHost-B4RaYOET.css","assets/NewChatDialog-BeDQ1eW3.js","assets/Segmented-BL40udoO.js","assets/Segmented-BnjHbKzH.css","assets/git-model-CivuBY_D.js","assets/SeatSelector-DpvvbjNm.js","assets/seat-subscription-CH6fW4fJ.js","assets/Composer.module-C8U73KdQ.js","assets/Composer-ByzxOJK6.css","assets/CapacityStrip-C667yQe8.js","assets/Tag-_-K1h7Hk.js","assets/Tag-D0rAEciH.css","assets/budget-queries-wUshcovN.js","assets/useSeatsRefresh-CG4jczeL.js","assets/capacity-strip-model-Bj_9ztzs.js","assets/CapacityStrip-Cc28CyWk.css","assets/folder-picker-C8zo3A56.js","assets/NewChatDialog-yyQpA9p_.css","assets/Workspace-BbxZHwQd.js","assets/highlight-CMCZK9jW.js","assets/DiffViewer-B7NWPjIO.js","assets/DiffViewer-C8HHTnVE.css","assets/MessageMarkdown-qWKyJvAQ.js","assets/MessageMarkdown-Cgh5f1-Q.css","assets/reasoning-pref-B9-DJUXP.js","assets/Meter-D-hncpkO.js","assets/Meter-CYt9KpM0.css","assets/Workspace-BYW9dm90.css","assets/Sidebar-BoBzBEFX.js","assets/RefreshIndicator-BLnr9IOM.js","assets/RefreshIndicator-CVv22U_j.css","assets/Sidebar-BRc1vGDF.css","assets/turn-files-BPHQzYuH.js"])))=>i.map(i=>d[i]);
2
+ import{a as e,n as t,o as n,s as r,t as i}from"./index-oAAq8XJa.js";import{E as a,I as o,O as s,T as c,a as l,c as u,g as d,h as f,m as p,p as ee,s as m}from"./global-Di2PUgj4.js";import{n as te,t as ne}from"./MutationTokenDialog-SkRxqV_I.js";import{r as re}from"./RouteErrorBoundary-C5SxA2Dg.js";import{l as ie}from"./command-catalog-BdtDH93o.js";import{b as ae,g as oe,h as se,m as ce,p as le,s as ue,t as de,x as fe}from"./dock-store-BA1cHOYA.js";import{C as pe,o as me,p as he,v as ge,w as h,x as _e}from"./verse-ui-store-zafyzXKD.js";import{C as ve,S as g,T as ye,_ as be,a as xe,d as Se,f as Ce,i as we,l as Te,m as Ee,p as De,r as Oe,s as ke,u as _,w as Ae,x as je,y as v}from"./verse-queries-DvIJcn6Z.js";import{a as y}from"./command-bus-DqimKCUY.js";import{i as Me,r as Ne}from"./section-visibility-qFqc_d4Z.js";import{m as Pe}from"./VerseConsoleApp-WVeyJnW7.js";import{_ as Fe,a as Ie,d as Le,f as Re,h as ze,i as Be,m as b,n as Ve,o as He,p as Ue,s as We,t as x,u as S}from"./verse-store-DjBWj04q.js";import{t as Ge}from"./Button-DYv_KKxr.js";var C=r(e(),1),w=new Map;function T(e,t){return w.set(e,t),()=>{w.get(e)===t&&w.delete(e)}}function E(e,t){let n=t.replace(/\s+$/,``);return e.trim()?`${e.replace(/\s+$/,``)}\n\n${n}`:n}function Ke(e=document){let t=e.querySelector(`textarea[aria-label="Message"]`);return t instanceof HTMLTextAreaElement?t:null}function qe(e,t){if(!t.trim())return!1;let n=w.get(e);if(n)return n(t),!0;let r=Ke();if(!r||r.disabled)return!1;let i=E(r.value,t),a=Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype,`value`)?.set;a?a.call(r,i):r.value=i,r.dispatchEvent(new Event(`input`,{bubbles:!0})),r.focus();let o=r.value.length;try{r.setSelectionRange(o,o)}catch{}return!0}function Je(e){return`verse-session-roots:${e}`}var D={key:`verse-session-roots:none`,fetch:async()=>null};function Ye(e){return e?[e.projectPath,...(e.extraRoots??[]).filter(t=>t!==e.projectPath)]:[]}function Xe(e){let t=e?.id??null,n=(0,C.useMemo)(()=>t?{key:Je(t),fetch:e=>_(t,e)}:D,[t]),r=p(n),i=f(n),a=e?.turnCount??0,o=(0,C.useRef)({id:t,turns:a});(0,C.useEffect)(()=>{let e=o.current;o.current={id:t,turns:a},e.id===t&&e.turns!==a&&t&&i()},[t,a,i]);let s=r.data??null,c=s!==null&&Array.isArray(s.roots)?s:null,l=(0,C.useMemo)(()=>Ye(e),[e?.projectPath,e?.extraRoots]),u=(0,C.useMemo)(()=>{if(!c||c.roots.length===0)return l;let e=c.roots.filter(e=>e.primary).map(e=>e.path),t=c.roots.filter(e=>!e.primary).map(e=>e.path);return[...e,...t]},[c,l]),d=c?.roots.find(e=>e.primary)??c?.roots[0]??null;return{data:c,error:r.status===`error`?r.error?.message??`could not read this chat’s folders`:null,roots:u,branch:d?.git?.branch??null}}var Ze=new Set;function O(e){return Ze.add(e),()=>Ze.delete(e)}function Qe(e){let t=!1;for(let n of[...Ze])n(e)&&(t=!0);return t}var k=new Set;function $e(e){return k.add(e),()=>k.delete(e)}function et(){let e=!1;for(let t of[...k])t()&&(e=!0);return e}var A=new Set;function j(e){return A.add(e),()=>A.delete(e)}function tt(e){let t=!1;for(let n of[...A])n(e)&&(t=!0);return t}var M=t(),N=[`user-message`,`turn-started`,`text-delta`,`assistant-message`,`thinking`,`tool-use`,`tool-result`,`usage`,`turn-done`,`error`,`cancelled`,`compaction`,`context`,`thinking-delta`,`thinking-progress`,`progress`,`status`,`recovered`,`history-truncated`];function P(e){return Math.min(1e3*2**e,15e3)}var F=e=>e===null||typeof e==`number`&&Number.isFinite(e)&&e>=0;function nt(e){return e.type===`context`?typeof e.contextTokens==`number`&&Number.isFinite(e.contextTokens)&&e.contextTokens>=0&&typeof e.exact==`boolean`&&F(e.contextWindow)&&(e.autoCompactAt===void 0||F(e.autoCompactAt)):e.type!==`compaction`||(e.trigger===`auto`||e.trigger===`manual`)&&F(e.preTokens)&&F(e.postTokens)&&F(e.durationMs)}var I=e=>e===void 0||typeof e==`number`&&Number.isFinite(e)&&e>=0;function L(e){switch(e.type){case`thinking-delta`:return typeof e.text==`string`;case`thinking-progress`:return e.estimatedTokens!==void 0&&I(e.estimatedTokens);case`progress`:return(e.phase===`thinking`||e.phase===`tool`||e.phase===`writing`||e.phase===`waiting`)&&typeof e.elapsedMs==`number`&&Number.isFinite(e.elapsedMs)&&e.elapsedMs>=0&&(e.tool===void 0||typeof e.tool==`string`)&&I(e.outTokens)&&I(e.tokPerSec);case`status`:return(e.kind===`retry`||e.kind===`preflight`||e.kind===`watchdog`)&&typeof e.message==`string`;case`history-truncated`:return typeof e.droppedBefore==`number`&&Number.isFinite(e.droppedBefore);default:return!0}}function R(e){try{let t=JSON.parse(e);if(!t||typeof t!=`object`)return null;let n=t;return typeof n.seq!=`number`||typeof n.type!=`string`||!nt(t)||!L(t)?null:t}catch{return null}}var z=`verse-sessions`;function rt(e=!0){return`/api/events?${e?`topics=${z}&`:``}client=${encodeURIComponent(s())}`}var it=!1;function at(){let e=null,t=null,n=0,r=!1,i=!1,o=()=>{if(r||typeof EventSource>`u`||a().phase!==`authenticated`)return;let s=!it&&!i,c=new EventSource(rt(s),{withCredentials:!0}),l=!1;e=c,c.onopen=()=>{l=!0,n=0,i&&=(it=!0,!1)},c.addEventListener(`verse-sessions`,()=>Se()),c.onerror=()=>{if(c.close(),e===c&&(e=null),!(r||a().phase!==`authenticated`)){if(!l&&s){i=!0,o();return}i=!1,t=setTimeout(()=>{t=null,n+=1,o()},P(n))}}};return o(),()=>{r=!0,t&&clearTimeout(t),t=null,e?.close(),e=null}}var ot=9e4,st=250;function ct(e,t){let n=Number.isSafeInteger(t)&&t>0?`after=${t}&`:``;return`${ve(e,`/events`)}?${n}client=${encodeURIComponent(s())}`}function lt(e){return Math.min(1e3*2**e,15e3)}function ut(){return globalThis.IS_REACT_ACT_ENVIRONMENT===!0}var dt=e=>{let t=!1,n=()=>{t||(t=!0,r!==null&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(r),clearTimeout(i),e())},r=(typeof document>`u`||document.visibilityState!==`hidden`)&&typeof requestAnimationFrame==`function`?requestAnimationFrame(n):null,i=setTimeout(n,r===null?0:st);return()=>{t=!0,r!==null&&typeof cancelAnimationFrame==`function`&&cancelAnimationFrame(r),clearTimeout(i)}};function ft(e){return ut()?(e(),null):dt(e)}var pt=class{sessionId;queue=[];cancel=null;scheduled=!1;constructor(e){this.sessionId=e}push(e){if(this.queue.push(e),this.scheduled)return;this.scheduled=!0;let t=ft(()=>this.flush());this.scheduled&&(this.cancel=t)}flush(){if(this.scheduled=!1,this.cancel?.(),this.cancel=null,this.queue.length===0)return;let e=this.queue;this.queue=[],x(this.sessionId,e).settled&&Se()}drop(){this.scheduled=!1,this.cancel?.(),this.cancel=null,this.queue=[]}},mt=!1,ht=0;function gt(e){let t=null,n=null,r=0,i=!1,o=!1,s=new pt(e),c=()=>{if(i||typeof EventSource>`u`||a().phase!==`authenticated`)return;b(e,r===0?`connecting`:`reconnecting`);let l=mt||o?0:He(e).lastSeq,u=new EventSource(ct(e,l),{withCredentials:!0}),d=!1;t=u,u.onopen=()=>{d=!0,r=0,o&&=(mt=!0,!1),b(e,`open`)};for(let e of N)u.addEventListener(e,e=>{if(t!==u)return;let n=R(e.data);n&&s.push(n)});u.onerror=f=>{if(!(typeof MessageEvent<`u`&&f instanceof MessageEvent)&&(s.flush(),!i)){if(typeof u.readyState==`number`&&u.readyState===ht){b(e,`reconnecting`);return}if(u.close(),t===u&&(t=null),b(e,`reconnecting`),a().phase===`authenticated`){if(!d&&l>0&&!o){o=!0,c();return}o=!1,n=setTimeout(()=>{n=null,r+=1,c()},lt(r))}}}},l=()=>{n&&clearTimeout(n),n=null,t?.close(),t=null};return c(),{close(){i||(i=!0,l(),s.flush(),s.drop(),b(e,`closed`))},restart(){i||(l(),s.flush(),r=0,c())}}}var B=new Map;function V(e){let t=B.get(e);t&&(B.delete(e),t.idleTimer&&clearTimeout(t.idleTimer),t.stream.close())}function _t(){let e=[...B.entries()].filter(([,e])=>e.refs===0).sort((e,t)=>e[1].releasedAt-t[1].releasedAt);for(;e.length>1;)V(e.shift()[0])}function H(e){let t=B.get(e);t?(t.refs+=1,t.idleTimer&&clearTimeout(t.idleTimer),t.idleTimer=null):(t={stream:gt(e),refs:1,idleTimer:null,releasedAt:0},B.set(e,t));let n=t,r=!1;return()=>{r||(r=!0,B.get(e)===n&&(--n.refs,!(n.refs>0)&&(n.releasedAt=Date.now(),n.idleTimer=setTimeout(()=>{B.get(e)===n&&n.refs===0&&V(e)},ot),_t())))}}function vt(){for(let e of[...B.keys()])V(e)}Fe(e=>{e.kind===`reset`?vt():V(e.sessionId)});function yt(e,t={}){let n=new AbortController,r=null,i=!1,a=()=>{i||r||(r=H(e))},o=He(e);return t.reload!==!0&&o.loaded&&o.loadError===null?a():(t.reload&&B.get(e)?.stream.restart(),Te(e,n.signal).then(t=>{n.signal.aborted||(S(e,t.session,t.events),a())}).catch(t=>{n.signal.aborted||Le(e,t instanceof Error?t.message:`Could not load this chat.`)})),()=>{i=!0,n.abort(),r?.(),r=null}}var U=()=>()=>{};function W(e){return(0,C.useCallback)(t=>e?ze(e,t):U(),[e])}function bt(e,t=0){let n=W(e),r=(0,C.useSyncExternalStore)(n,()=>Ie(e),()=>Ie(e)),i=(0,C.useRef)({sessionId:null,reload:t});return(0,C.useEffect)(()=>{let n=i.current;if(i.current={sessionId:e,reload:t},e)return yt(e,{reload:n.sessionId===e&&n.reload!==t})},[e,t]),r}function xt(e){let t=W(e);return(0,C.useSyncExternalStore)(t,()=>We(e),()=>We(e))}function St(e){let t=W(e);return(0,C.useSyncExternalStore)(t,()=>Be(e),()=>Be(e))}var Ct=5e3,G=new Map,wt=new Set;function K(e){return wt.add(e),()=>wt.delete(e)}function Tt(){return G}function Et(e,t){if(!((G.get(e)??-1)>=t)){G=new Map(G).set(e,t);for(let e of[...wt])e();Ce(e,t)}}function Dt(){return(0,C.useSyncExternalStore)(K,Tt,Tt)}function Ot(){let e=p(v,{freshMs:4500}),t=p(g),n=f(v),r=(0,C.useCallback)(()=>n(),[n]);Ne(r,Ct);let i=Dt();return{activity:e.data??null,meta:t.data??null,localSeen:i}}var q={sidebar:{min:220,max:420,def:264},resources:{min:240,max:520,def:320}},kt=1,At=`ashlr.verse.panels.v1`,jt=`ashlr.verse.ui.v2`,Mt={containerWidth:0,sidebarVisible:!0,resourcesVisible:!0};function J(e,t){let n=q[e],r=Number(t);return!Number.isFinite(r)||r<=0?n.def:Math.max(n.min,Math.min(n.max,Math.round(r)))}function Nt(e,t){let n=J(`sidebar`,e.sidebar),r=J(`resources`,e.resources);if(!Number.isFinite(t.containerWidth)||t.containerWidth<=0)return{sidebar:n,resources:r};let i=(t.sidebarVisible?kt:0)+(t.resourcesVisible?kt:0),a=t.containerWidth-480-i,o=(t.sidebarVisible?n:0)+(t.resourcesVisible?r:0)-a;if(o<=0)return{sidebar:n,resources:r};if(t.resourcesVisible){let e=Math.min(o,r-q.resources.min);r-=e,o-=e}if(o>0&&t.sidebarVisible){let e=Math.min(o,n-q.sidebar.min);n-=e}return{sidebar:n,resources:r}}function Pt(){return{sidebar:q.sidebar.def,resources:q.resources.def}}function Ft(e){if(e===null||e===``)return null;let t;try{t=JSON.parse(e)}catch{return null}if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=t,r=n.sidebar??n.sidebarWidth,i=n.resources??n.resourcesWidth;return r===void 0&&i===void 0?null:{sidebar:J(`sidebar`,r),resources:J(`resources`,i)}}function It(){try{return Ft(localStorage.getItem(At))||(Ft(localStorage.getItem(jt))??Pt())}catch{return Pt()}}function Lt(e){try{localStorage.setItem(At,JSON.stringify({sidebar:e.sidebar,resources:e.resources}))}catch{}}var Y=It(),X=Mt,Z={desired:Y,effective:Nt(Y,X)},Rt=new Set;function zt(e,t){return e.sidebar===t.sidebar&&e.resources===t.resources}function Bt(){let e=Nt(Y,X);if(!(zt(Z.desired,Y)&&zt(Z.effective,e))){Z={desired:Y,effective:e};for(let e of Rt)e()}}function Vt(e){return Rt.add(e),()=>{Rt.delete(e)}}function Ht(){return Z}function Ut(e){(X.containerWidth!==e.containerWidth||X.sidebarVisible!==e.sidebarVisible||X.resourcesVisible!==e.resourcesVisible)&&(X=e,Bt())}function Wt(e){zt(Y,e)||(Y=e,Lt(Y),Bt())}function Q(e,t){Wt({...Y,[e]:J(e,t)})}function Gt(e,t){Q(e,Z.effective[e]+t)}function Kt(e){Q(e,q[e].def)}function qt(){return(0,C.useSyncExternalStore)(Vt,Ht,Ht)}var Jt=`verseResizing`;function Yt(e){try{e?document.body.dataset[Jt]=`true`:delete document.body.dataset[Jt]}catch{}}function Xt({side:e,label:t,className:n}){let r=qt(),i=q[e],a=r.effective[e],o=(0,C.useRef)(null),[s,c]=(0,C.useState)(!1),l=(0,C.useCallback)(()=>{o.current&&(o.current=null,c(!1),Yt(!1))},[]),u=(0,C.useCallback)(e=>{if(e.button===0){e.preventDefault(),o.current={pointerId:e.pointerId,originX:e.clientX,startWidth:a},c(!0),Yt(!0);try{e.currentTarget.setPointerCapture?.(e.pointerId)}catch{}}},[a]);(0,C.useEffect)(()=>{if(!s)return;let t=t=>{let n=o.current;if(!n||t.pointerId!==n.pointerId)return;let r=t.clientX-n.originX;Q(e,e===`sidebar`?n.startWidth+r:n.startWidth-r)},n=e=>{let t=o.current;t&&e.pointerId!==t.pointerId||l()},r=t=>{let n=o.current;n&&t.key===`Escape`&&(Q(e,n.startWidth),l())},i=()=>l();return window.addEventListener(`pointermove`,t),window.addEventListener(`pointerup`,n),window.addEventListener(`pointercancel`,n),window.addEventListener(`keydown`,r),window.addEventListener(`blur`,i),()=>{window.removeEventListener(`pointermove`,t),window.removeEventListener(`pointerup`,n),window.removeEventListener(`pointercancel`,n),window.removeEventListener(`keydown`,r),window.removeEventListener(`blur`,i),Yt(!1)}},[s,e,l]);let d=(0,C.useCallback)(t=>{let n=t.shiftKey?64:16,r=e===`sidebar`?1:-1;switch(t.key){case`ArrowRight`:Gt(e,n*r);break;case`ArrowLeft`:Gt(e,-n*r);break;case`Home`:Q(e,i.min);break;case`End`:Q(e,i.max);break;case`Enter`:Kt(e);break;default:return}t.preventDefault()},[e,i.min,i.max]);return(0,M.jsx)(`div`,{className:n,"data-verse-resizer":e,"data-dragging":s?`true`:void 0,role:`separator`,"aria-orientation":`vertical`,"aria-label":t,"aria-valuemin":i.min,"aria-valuemax":i.max,"aria-valuenow":a,"aria-valuetext":`${a} pixels`,tabIndex:0,onPointerDown:u,onPointerUp:l,onPointerCancel:l,onLostPointerCapture:l,onKeyDown:d,onDoubleClick:()=>Kt(e)})}var $={chat:`_chat_14h0e_13`,main:`_main_14h0e_36`,banner:`_banner_14h0e_46`,bannerWarn:`_bannerWarn_14h0e_47`,resize:`_resize_14h0e_90`,scrim:`_scrim_14h0e_11`,dialogActions:`_dialogActions_14h0e_157`,sidebarSkeleton:`_sidebarSkeleton_14h0e_167`,workspaceSkeleton:`_workspaceSkeleton_14h0e_175`,skeletonHeader:`_skeletonHeader_14h0e_181`,skeletonBody:`_skeletonBody_14h0e_189`,skeletonComposer:`_skeletonComposer_14h0e_199`},Zt=n({ChatSection:()=>bn,describeChatError:()=>gn,preloadChatSurface:()=>dn}),Qt=(0,C.lazy)(()=>i(()=>import(`./DockHost-DvR-hPhZ.js`).then(e=>({default:e.DockHost})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]))),$t=(0,C.lazy)(()=>i(()=>import(`./NewChatDialog-BeDQ1eW3.js`).then(e=>({default:e.NewChatDialog})),__vite__mapDeps([50,1,2,3,4,5,18,7,51,52,10,25,13,14,15,6,16,9,17,8,19,20,21,22,23,24,26,11,12,53,27,54,55,56,57,58,59,60,61,62,63,28,64,29,65,66])));function en(e){let t=null,n=null,r=()=>(n??=e().then(e=>t=e,e=>{throw n=null,e}),n),i=(0,C.lazy)(()=>r().then(e=>({default:e})));function a(e){let[n]=(0,C.useState)(()=>t);return n?(0,M.jsx)(n,{...e}):(0,M.jsx)(i,{...e})}return typeof window<`u`&&r().catch(()=>void 0),{Slot:a,ready:r}}var tn=en(()=>i(()=>import(`./Workspace-BbxZHwQd.js`).then(e=>e.Workspace),__vite__mapDeps([67,1,2,3,4,5,68,69,70,6,7,9,8,17,18,19,23,13,14,15,16,20,21,22,24,71,72,10,11,12,25,26,55,56,57,61,62,63,28,42,43,30,31,32,33,34,35,36,37,73,38,41,39,40,44,74,75,76]))),nn=tn.Slot,rn=en(()=>i(()=>import(`./Sidebar-BoBzBEFX.js`).then(e=>e.Sidebar),__vite__mapDeps([77,1,2,3,4,5,78,79,18,7,13,14,15,6,16,9,17,8,19,20,21,22,23,24,25,55,11,12,29,65,42,43,30,31,34,32,33,35,37,80]))),an=rn.Slot,on=un(()=>Promise.all([i(()=>import(`./tasks-model-ent8f0jZ.js`),__vite__mapDeps([36,25,1,2,3,13,14,4,5,15,6,7,16,9,17,8,18,19,20,21,22,23,24,32,33,37])),i(()=>import(`./turn-files-BPHQzYuH.js`),__vite__mapDeps([81,32,33]))]).then(([e,t])=>({otherRunningChats:e.otherRunningChats,lastTurnFiles:t.lastTurnFiles}))),sn=un(()=>i(()=>import(`./verse-model-D7NZQFAR.js`).then(e=>e.w).then(e=>({firstRunnableModel:e.firstRunnableModel,seatById:e.seatById})),__vite__mapDeps([25,1,2,3,13,14,4,5,15,6,7,16,9,17,8,18,19,20,21,22,23,24]))),cn=[],ln=[];function un(e){let t=null,n=null,r=()=>(n??=e().then(e=>t=e,e=>{throw n=null,e}),n);function i(){let[e,n]=(0,C.useState)(()=>({current:t}));return(0,C.useEffect)(()=>{if(e.current)return;let t=!0;return r().then(e=>{t&&n({current:e})},()=>void 0),()=>{t=!1}},[e]),e.current}return typeof window<`u`&&r().catch(()=>void 0),{ready:r,useLoaded:i}}function dn(){return Promise.all([tn.ready(),rn.ready(),on.ready(),sn.ready()])}function fn(){return(0,M.jsx)(`nav`,{className:$.sidebarSkeleton,"aria-busy":`true`,"aria-label":`Loading chat list`,children:[64,82,58,76,70].map(e=>(0,M.jsx)(l,{width:`${e}%`},e))})}function pn(){return(0,M.jsxs)(`div`,{className:$.workspaceSkeleton,role:`status`,"aria-label":`Loading chat`,children:[(0,M.jsx)(`div`,{className:$.skeletonHeader,children:(0,M.jsx)(l,{width:`32%`})}),(0,M.jsxs)(`div`,{className:$.skeletonBody,children:[(0,M.jsx)(l,{width:`72%`}),(0,M.jsx)(l,{width:`88%`}),(0,M.jsx)(l,{width:`64%`})]}),(0,M.jsx)(`div`,{className:$.skeletonComposer,children:(0,M.jsx)(l,{width:`100%`})})]})}var mn=`ashlr.verse.selected.v1`;function hn(){try{return localStorage.getItem(mn)}catch{return null}}function gn(e){return e instanceof u?"This server was started without dispatch — run `ashlr verse` to chat.":e instanceof m?e.code===`VERSE_MODEL_UNAVAILABLE`?`${(e.detail??`This chat's model cannot run on its seat.`).replace(/\.?$/,`.`)} Continue in a fresh chat on a model this seat can run, or re-pin the seat's CLI (\`ashlr resources profile repin\`).`:e.status===409&&(e.code===null||e.code===`VERSE_SESSION_BUSY`)?`A turn is already running in this chat. Stop it first.`:e.status===413?`That message is too large (64 KB max).`:e.status===401?`Mutation token was rejected. Unlock again with the token ashlr verse printed.`:e.detail??e.message:e instanceof Error?e.message:`Something went wrong.`}function _n(){let[e,t]=(0,C.useState)(()=>typeof window>`u`?1440:window.innerWidth||1440);return(0,C.useEffect)(()=>{let e=()=>t(window.innerWidth||1440);return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),e}function vn(){requestAnimationFrame(()=>{document.querySelector(`textarea[aria-label="Message"]`)?.focus()})}function yn(e){return e instanceof Element&&e.closest(`[role="dialog"], [role="menu"], [role="listbox"], [aria-modal="true"]`)!==null}function bn(){let e=p(je),t=p(Ae),n=d(Ae),r=d(je),i=ee(),a=re(),s=Pe(),l=Me(),u=se(),f=Ot(),m=_n(),ve=(0,C.useId)(),[g,Se]=(0,C.useState)(hn),[Ce,Te]=(0,C.useState)(``),[_,v]=(0,C.useState)({open:!1}),[Ne,Fe]=(0,C.useState)(!1),[Ie,Le]=(0,C.useState)(null),[ze,Be]=(0,C.useState)(0),[b,He]=(0,C.useState)({open:!1,reason:``}),[We,x]=(0,C.useState)(null),[S,w]=(0,C.useState)(null),[T,E]=(0,C.useState)(!1),[Ke,Je]=(0,C.useState)(0),D=(0,C.useRef)(null),Ye=(0,C.useRef)(null),Ze=qt(),O=(0,C.useMemo)(()=>e.data?.seats??[],[e.data]),Qe=(0,C.useMemo)(()=>e.data?.projects??[],[e.data]),k=p(ye),$e=(0,C.useMemo)(()=>k.data?.workspaces??[],[k.data]),A=e.data?.dispatchEnabled??!0,j=bt(g,ze),N=Xe(j.session),P=(0,C.useMemo)(()=>{let n=t.data??e.data?.sessions??[];if(!j.session)return n;let r=j.session;return n.some(e=>e.id===r.id)?n.map(e=>e.id===r.id?r:e):[r,...n]},[t.data,e.data,j.session]),F=(0,C.useCallback)(e=>{Se(e);try{e?localStorage.setItem(mn,e):localStorage.removeItem(mn)}catch{}},[]);(0,C.useEffect)(()=>{g&&t.data&&!t.data.some(e=>e.id===g)&&!j.session&&F(null)},[g,t.data,j.session,F]),(0,C.useEffect)(()=>at(),[]);let nt=(0,C.useRef)(g);(0,C.useEffect)(()=>{_e(g),nt.current!==g&&(nt.current=g,de())},[g]);let I=j.session?.turnCount??null;(0,C.useEffect)(()=>{l&&g&&I!==null&&(typeof document>`u`||document.visibilityState!==`hidden`)&&Et(g,I)},[l,g,I]);let L=(0,C.useCallback)((e,t)=>i.hasHold?t():new Promise((n,r)=>{D.current={run:()=>{t().then(n,r)},cancel:()=>n(null)},He({open:!0,reason:e})}),[i.hasHold]),R=(0,C.useCallback)(e=>{e instanceof Oe||a.show(gn(e),`danger`)},[a]),z=(0,C.useCallback)((e={})=>{Le(null);let t=j.session,n=e.projectPath===void 0?t?.projectPath??null:e.projectPath,r=t&&n===t.projectPath?{seatId:t.seatId,model:t.model}:null,i=e.seat??r??he(n);v({open:!0,projectPath:n,seat:i})},[j.session]),rt=(0,C.useCallback)(async e=>{await L(`Starting a chat spawns an agent process for this project.`,async()=>{Fe(!0),Le(null);try{let t=await xe(e);ge(t.projectPath,{seatId:t.seatId,model:t.model}),Re(t.id,t),v({open:!1}),F(t.id),a.show(`Started “${t.title}”`,`success`)}catch(e){Le(gn(e))}finally{Fe(!1)}})},[L,F,a]),it=(0,C.useCallback)(async e=>{let t=g;return t?await L(`Sending a message runs the agent against this project.`,async()=>{Ue(t,`running`);try{let n=await Ee(t,e);return Re(t,n.session,n.turnId),!0}catch(e){return Ue(t,`idle`),R(e),!1}})===!0:!1},[g,L,R]),ot=(0,C.useCallback)((e=g)=>{e&&L(`Stopping the running turn.`,async()=>{try{await we(e)}catch(e){R(e)}})},[g,L,R]),st=(0,C.useCallback)(async(e,t)=>await L(`Renaming a chat.`,async()=>{try{let n=await De(e,t);return Re(e,n),!0}catch(e){return R(e),!1}})===!0,[L,R]),ct=(0,C.useCallback)(async e=>await L(`Deleting a chat removes its transcript from disk.`,async()=>{try{return await ke(e),Ve(e),o(e),e===g&&F(null),a.show(`Chat deleted.`,`neutral`),!0}catch(e){return R(e),!1}})===!0,[L,R,F,a,g]),lt=(0,C.useCallback)((e,t,n)=>{L(n,async()=>{try{await be(e,t)}catch(e){R(e)}})},[L,R]),ut=(0,C.useCallback)(e=>{let t=j.session;t&&(z({projectPath:t.projectPath,seat:e}),a.show(`Chats are bound to one seat — starting a new chat on the same project.`,`neutral`))},[j.session,z,a]),dt=(0,C.useCallback)(e=>{let t=P.find(t=>t.id===e)??null;t&&w(t)},[P]),ft=(0,C.useCallback)(e=>{e!==g&&F(e),x(e)},[g,F]),pt=(0,C.useCallback)(e=>{F(e),window.matchMedia?.(`(max-width: 760px)`)?.matches===!0&&h(!0)},[F]),mt=(0,C.useCallback)(()=>h(!s.sidebarCollapsed),[s.sidebarCollapsed]),ht=u.state.open&&(u.state.active===`terminal`||u.state.splitWith===`terminal`),gt=(0,C.useCallback)(()=>{ht?ce(`terminal`):ue({})},[ht]),B=(0,C.useCallback)(()=>ue({newTab:!0}),[]),V=(0,C.useRef)(0),_t=sn.useLoaded();(0,C.useEffect)(()=>{let e=s.command;if(e&&e.nonce!==V.current&&(e.name!==`new-chat`||_t)){switch(V.current=e.nonce,e.name){case`open-session`:e.sessionId&&F(e.sessionId);break;case`focus-composer`:vn();break;case`new-chat`:{let{seatById:t,firstRunnableModel:n}=_t,r=e.seatId?t(O,e.seatId):void 0,i=he(e.projectPath??null),a=r?i?.seatId===r.id?i.model:n(r)?.id:void 0;z({...e.projectPath===void 0?{}:{projectPath:e.projectPath},...r&&a?{seat:{seatId:r.id,model:a}}:{}});break}}me()}},[s.command,z,O,F,_t]);let H=new Map([[`chat.sidebar`,mt],[`chat.find`,()=>et()],[`chat.turn-prev`,()=>tt(-1)],[`chat.turn-next`,()=>tt(1)],[`dock.toggle`,le],[`dock.terminal`,gt],[`dock.terminal-new`,B],[`dock.preview`,()=>ce(`preview`)],[`dock.diff`,()=>ce(`diff`)]]);y(`chat.sidebar`,H.get(`chat.sidebar`)),y(`chat.find`,H.get(`chat.find`)),y(`chat.turn-prev`,H.get(`chat.turn-prev`)),y(`chat.turn-next`,H.get(`chat.turn-next`)),y(`dock.toggle`,H.get(`dock.toggle`)),y(`dock.terminal`,H.get(`dock.terminal`)),y(`dock.terminal-new`,H.get(`dock.terminal-new`)),y(`dock.preview`,H.get(`dock.preview`)),y(`dock.diff`,H.get(`dock.diff`));let vt=(0,C.useRef)(H);vt.current=H,(0,C.useEffect)(()=>{if(!l)return;let e=e=>{if(e.defaultPrevented||yn(e.target))return;let t=ie(e,[`chat`]);if(!t||t.scope!==`chat`||t.id===`chat.find`||t.id===`chat.turn-prev`||t.id===`chat.turn-next`)return;let n=vt.current.get(t.id);n&&(e.preventDefault(),n())};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[l]);let yt=e.data?!e.data.dispatchEnabled:!1,U=s.sidebarCollapsed,W=fe(m),xt=u.state.open&&u.state.tabs.length>0,St=xt&&W===`column`,Ct=U?0:q.sidebar.min,G=St?Math.max(oe.minWidth,Math.min(ae(u.state.width,m),Ke>0?Ke-480-Ct:1/0)):0;(0,C.useEffect)(()=>{let e=Ye.current;if(!e)return;let t=()=>{Je(e.clientWidth),Ut({containerWidth:Math.max(0,e.clientWidth-G),sidebarVisible:!U,resourcesVisible:!1})};t();let n=typeof ResizeObserver==`function`?new ResizeObserver(t):null;return n?.observe(e),window.addEventListener(`resize`,t),()=>{n?.disconnect(),window.removeEventListener(`resize`,t)}},[U,G]);let wt={"--verse-sidebar-width":`${Ze.effective.sidebar}px`,"--verse-dock-width":`${G}px`},K=on.useLoaded(),Tt=(0,C.useMemo)(()=>K?K.otherRunningChats(P,f.activity,g):cn,[K,P,f.activity,g]),Dt=(0,C.useMemo)(()=>K?K.lastTurnFiles(j.events,N.roots):ln,[K,N.roots,j.events]),kt={setPinned:(e,t)=>lt(e,{pinned:t},t?`Pinning a chat.`:`Unpinning a chat.`),setArchived:(e,t)=>lt(e,{archived:t},t?`Archiving a chat.`:`Unarchiving a chat.`),rename:st,handoff:ft,requestDelete:dt,dispatchEnabled:A};return(0,M.jsxs)(`div`,{ref:Ye,className:$.chat,style:wt,"data-sidebar":U?`collapsed`:`open`,"data-dock":St?`open`:`closed`,children:[(0,M.jsx)(C.Suspense,{fallback:(0,M.jsx)(fn,{}),children:(0,M.jsx)(an,{sessions:P,sessionsStatus:t.status,sessionsError:t.error?.message??null,projects:Qe,seats:O,selectedId:g,query:Ce,onQuery:Te,onSelect:pt,onNew:()=>z(),onRetry:()=>{n(),r()},onCollapse:()=>h(!0),onDisconnect:()=>{c()},activity:f.activity,meta:f.meta,localSeen:f.localSeen,actions:kt})}),U?null:(0,M.jsx)(Xt,{side:`sidebar`,label:`Resize chat list`,className:$.resize}),(0,M.jsx)(`button`,{type:`button`,className:$.scrim,"aria-label":`Close chat list`,tabIndex:-1,onClick:()=>h(!0)}),(0,M.jsxs)(`div`,{className:$.main,children:[e.status===`error`&&!e.data?(0,M.jsxs)(`div`,{role:`alert`,className:$.banner,children:[(0,M.jsx)(`span`,{children:e.error?.message??`Could not load Verse.`}),(0,M.jsx)(`button`,{type:`button`,onClick:r,children:`Retry`})]}):yt?(0,M.jsxs)(`div`,{role:`status`,className:$.bannerWarn,children:[`Read-only: this server was started without dispatch. Run `,(0,M.jsx)(`code`,{children:`ashlr verse`}),` to send messages.`]}):null,(0,M.jsx)(C.Suspense,{fallback:(0,M.jsx)(pn,{}),children:(0,M.jsx)(nn,{view:j,seats:O,projects:Qe,dispatchEnabled:A,locked:!i.hasHold,hasAnySessions:P.length>0,onSend:it,onStop:()=>ot(),onRename:e=>g?st(g,e):Promise.resolve(!1),onRequestDelete:()=>{g&&dt(g)},onSeatChange:ut,onNew:()=>z(),onRetry:()=>Be(e=>e+1),sidebarCollapsed:U,onToggleSidebar:()=>h(!U),onOpenSession:F,handoffOpen:We!==null&&We===g,onHandoffOpenChange:e=>x(e?g:null),otherRunning:Tt})})]}),xt?(0,M.jsx)(C.Suspense,{fallback:null,children:(0,M.jsx)(Qt,{presentation:W,windowWidth:m,columnWidth:G,session:j.session,seats:O,events:j.events,roots:N.roots,rootsData:N.data,rootsError:N.error,turnFiles:Dt,otherRunning:Tt,dispatchEnabled:A,onOpenSession:F,onHandoff:e=>x(e),onOpenAccounts:()=>pe(`apps`),onSendToChat:e=>{(!g||!qe(g,e))&&a.show(`Open a chat to send this to it.`,`neutral`)},onAddToMessage:e=>{(!g||!qe(g,e))&&a.show(`Open a chat to add this to its message.`,`neutral`)}})}):null,_.open?(0,M.jsx)(C.Suspense,{fallback:null,children:(0,M.jsx)($t,{open:!0,onClose:()=>v({open:!1}),projects:Qe,seats:O,workspaces:$e,initialProjectPath:_.projectPath??null,initialSeat:_.seat??null,busy:Ne,error:Ie,onCreate:rt,runMutation:L})}):null,(0,M.jsx)(te,{open:S!==null,onClose:()=>{T||w(null)},titleId:ve,title:`Delete this chat?`,description:S?`“${S.title||`Untitled chat`}” and its transcript are removed from this machine. This cannot be undone.`:void 0,children:(0,M.jsxs)(`div`,{className:$.dialogActions,children:[(0,M.jsx)(Ge,{variant:`ghost`,onClick:()=>w(null),disabled:T,children:`Keep`}),(0,M.jsx)(Ge,{variant:`danger`,busy:T,onClick:async()=>{let e=S;if(e){E(!0);try{await ct(e.id)}finally{E(!1),w(null)}}},children:`Delete`})]})}),(0,M.jsx)(ne,{open:b.open,reason:b.reason,tokenLabel:`Mutation token`,tokenHelp:`the mutation token ashlr verse printed`,onClose:()=>{He({open:!1,reason:``});let e=D.current;e&&setTimeout(()=>{D.current===e&&(D.current=null,e.cancel())},0)},onUnlocked:()=>{let e=D.current;D.current=null,e?.run()}})]})}export{bn as ChatSection,O as a,Xe as c,gn as describeChatError,$e as i,E as l,St as n,j as o,dn as preloadChatSurface,xt as r,Qe as s,Zt as t,T as u};
3
+ //# sourceMappingURL=ChatSection-CCcIPpOq.js.map