@ashlr/hub 3.11.3 → 3.12.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 (558) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/README.md +44 -18
  3. package/dist/authority-surface.json +74 -59
  4. package/dist/build-identity.json +2 -2
  5. package/dist/cli/authority.d.ts +39 -0
  6. package/dist/cli/authority.js +222 -55
  7. package/dist/cli/authority.js.map +1 -1
  8. package/dist/cli/help.js +1 -1
  9. package/dist/cli/help.js.map +1 -1
  10. package/dist/cli/verse.d.ts +3 -0
  11. package/dist/cli/verse.js +10 -0
  12. package/dist/cli/verse.js.map +1 -1
  13. package/dist/core/authority/trust-roots.js +7 -1
  14. package/dist/core/authority/trust-roots.js.map +1 -1
  15. package/dist/core/authority/types.d.ts +2 -2
  16. package/dist/core/cloud/cloud-api.js +1 -1
  17. package/dist/core/cloud/cloud-api.js.map +1 -1
  18. package/dist/core/cloud/delivery-contract.d.ts +1 -1
  19. package/dist/core/cloud/delivery-contract.js +25 -15
  20. package/dist/core/cloud/delivery-contract.js.map +1 -1
  21. package/dist/core/cloud/store.js +6 -0
  22. package/dist/core/cloud/store.js.map +1 -1
  23. package/dist/core/cloud/tracker.d.ts +2 -0
  24. package/dist/core/cloud/tracker.js +140 -37
  25. package/dist/core/cloud/tracker.js.map +1 -1
  26. package/dist/core/cloud/types.d.ts +9 -1
  27. package/dist/core/cloud/types.js.map +1 -1
  28. package/dist/core/comms/dispatch.d.ts +5 -0
  29. package/dist/core/comms/dispatch.js +12 -1
  30. package/dist/core/comms/dispatch.js.map +1 -1
  31. package/dist/core/comms/requests.d.ts +27 -1
  32. package/dist/core/comms/requests.js +50 -1
  33. package/dist/core/comms/requests.js.map +1 -1
  34. package/dist/core/daemon/loop.d.ts +14 -0
  35. package/dist/core/daemon/loop.js +35 -0
  36. package/dist/core/daemon/loop.js.map +1 -1
  37. package/dist/core/fabric/claude-usage.js +23 -1
  38. package/dist/core/fabric/claude-usage.js.map +1 -1
  39. package/dist/core/fleet/dispatch-router.d.ts +7 -0
  40. package/dist/core/fleet/dispatch-router.js +4 -1
  41. package/dist/core/fleet/dispatch-router.js.map +1 -1
  42. package/dist/core/fleet/tick-hooks-live.d.ts +5 -1
  43. package/dist/core/fleet/tick-hooks-live.js +10 -1
  44. package/dist/core/fleet/tick-hooks-live.js.map +1 -1
  45. package/dist/core/local-runtime/llama/config.d.ts +14 -0
  46. package/dist/core/local-runtime/llama/config.js +20 -2
  47. package/dist/core/local-runtime/llama/config.js.map +1 -1
  48. package/dist/core/local-runtime/llama/process.d.ts +19 -0
  49. package/dist/core/local-runtime/llama/process.js +67 -17
  50. package/dist/core/local-runtime/llama/process.js.map +1 -1
  51. package/dist/core/local-runtime/llama/supervisor.js +14 -3
  52. package/dist/core/local-runtime/llama/supervisor.js.map +1 -1
  53. package/dist/core/observability/rollup.d.ts +12 -0
  54. package/dist/core/observability/rollup.js +37 -2
  55. package/dist/core/observability/rollup.js.map +1 -1
  56. package/dist/core/observability/usage-source.js +49 -1
  57. package/dist/core/observability/usage-source.js.map +1 -1
  58. package/dist/core/resources/connection-monitor.js +47 -4
  59. package/dist/core/resources/connection-monitor.js.map +1 -1
  60. package/dist/core/resources/engineering-mission-store.d.ts +1 -1
  61. package/dist/core/routing/headroom.js +7 -2
  62. package/dist/core/routing/headroom.js.map +1 -1
  63. package/dist/core/routing/router.d.ts +48 -0
  64. package/dist/core/routing/router.js +129 -13
  65. package/dist/core/routing/router.js.map +1 -1
  66. package/dist/core/run/best-of-n.d.ts +7 -0
  67. package/dist/core/run/best-of-n.js +3 -0
  68. package/dist/core/run/best-of-n.js.map +1 -1
  69. package/dist/core/run/harness-dispatch.d.ts +147 -0
  70. package/dist/core/run/harness-dispatch.js +234 -0
  71. package/dist/core/run/harness-dispatch.js.map +1 -0
  72. package/dist/core/run/orchestrator.js +3 -0
  73. package/dist/core/run/orchestrator.js.map +1 -1
  74. package/dist/core/run/provider-client.d.ts +8 -0
  75. package/dist/core/run/provider-client.js +4 -0
  76. package/dist/core/run/provider-client.js.map +1 -1
  77. package/dist/core/run/sandboxed-engine.d.ts +8 -0
  78. package/dist/core/run/sandboxed-engine.js +60 -7
  79. package/dist/core/run/sandboxed-engine.js.map +1 -1
  80. package/dist/core/types.d.ts +14 -0
  81. package/dist/core/types.js.map +1 -1
  82. package/dist/core/universe/builtins/preparation/manifest.json +1 -1
  83. package/dist/core/universe/builtins/preparation/preparation-bridge.mjs +188 -6
  84. package/dist/core/universe/builtins/preparation/preparation-verification-fixtures.mjs +187 -5
  85. package/dist/core/universe/firm-demo.d.ts +1 -1
  86. package/dist/core/universe/firm-graph.d.ts +2 -2
  87. package/dist/core/util/scrub.js +16 -3
  88. package/dist/core/util/scrub.js.map +1 -1
  89. package/dist/core/verse/accounts.d.ts +9 -1
  90. package/dist/core/verse/accounts.js +52 -11
  91. package/dist/core/verse/accounts.js.map +1 -1
  92. package/dist/core/verse/apps-api.d.ts +12 -0
  93. package/dist/core/verse/apps-api.js +22 -4
  94. package/dist/core/verse/apps-api.js.map +1 -1
  95. package/dist/core/verse/apps.js +22 -12
  96. package/dist/core/verse/apps.js.map +1 -1
  97. package/dist/core/verse/local-models.js +3 -7
  98. package/dist/core/verse/local-models.js.map +1 -1
  99. package/dist/core/verse/model-display-name.d.ts +34 -0
  100. package/dist/core/verse/model-display-name.js +125 -0
  101. package/dist/core/verse/model-display-name.js.map +1 -0
  102. package/dist/core/verse/seats.d.ts +11 -2
  103. package/dist/core/verse/seats.js +42 -18
  104. package/dist/core/verse/seats.js.map +1 -1
  105. package/dist/core/verse/transient-events.d.ts +21 -0
  106. package/dist/core/verse/transient-events.js +12 -0
  107. package/dist/core/verse/transient-events.js.map +1 -0
  108. package/dist/core/verse/types.d.ts +6 -13
  109. package/dist/core/verse/types.js +5 -36
  110. package/dist/core/verse/types.js.map +1 -1
  111. package/dist/core/web/public/next/assets/ActionMenu-B4-39f2S.js +2 -0
  112. package/dist/core/web/public/next/assets/{ActionMenu-FxXeRbPx.js.map → ActionMenu-B4-39f2S.js.map} +1 -1
  113. package/dist/core/web/public/next/assets/Advanced-B-LqYXvd.js +2 -0
  114. package/dist/core/web/public/next/assets/Advanced-B-LqYXvd.js.map +1 -0
  115. package/dist/core/web/public/next/assets/App-E2zCDRxm.js +7 -0
  116. package/dist/core/web/public/next/assets/App-E2zCDRxm.js.map +1 -0
  117. package/dist/core/web/public/next/assets/AppsSection-8wXPPhZb.js +2 -0
  118. package/dist/core/web/public/next/assets/AppsSection-8wXPPhZb.js.map +1 -0
  119. package/dist/core/web/public/next/assets/AreaTrend-BFimExYn.js +2 -0
  120. package/dist/core/web/public/next/assets/{AreaTrend-CDxrQU4b.js.map → AreaTrend-BFimExYn.js.map} +1 -1
  121. package/dist/core/web/public/next/assets/AutonomyOffState-B5eEkmiz.js +2 -0
  122. package/dist/core/web/public/next/assets/AutonomyOffState-B5eEkmiz.js.map +1 -0
  123. package/dist/core/web/public/next/assets/AutonomyOffState-DmbE71vI.css +1 -0
  124. package/dist/core/web/public/next/assets/AutonomySection-B46igJKR.js +2 -0
  125. package/dist/core/web/public/next/assets/{AutonomySection-DuQkHGD_.js.map → AutonomySection-B46igJKR.js.map} +1 -1
  126. package/dist/core/web/public/next/assets/BranchBar-BRkrEQGs.js +2 -0
  127. package/dist/core/web/public/next/assets/{BranchBar-CLsvOcyK.js.map → BranchBar-BRkrEQGs.js.map} +1 -1
  128. package/dist/core/web/public/next/assets/BudgetControl-T_RjPrw9.js +2 -0
  129. package/dist/core/web/public/next/assets/{BudgetControl-TL3FeZ1D.js.map → BudgetControl-T_RjPrw9.js.map} +1 -1
  130. package/dist/core/web/public/next/assets/{Button-HHXgoXGr.js → Button-BhO-WKPp.js} +2 -2
  131. package/dist/core/web/public/next/assets/{Button-HHXgoXGr.js.map → Button-BhO-WKPp.js.map} +1 -1
  132. package/dist/core/web/public/next/assets/CapacityStrip-CkFz5vq2.js +2 -0
  133. package/dist/core/web/public/next/assets/{CapacityStrip-qReu0RaF.js.map → CapacityStrip-CkFz5vq2.js.map} +1 -1
  134. package/dist/core/web/public/next/assets/{useChartWidth-BW6SwYIK.css → ChartFrame-BVuBe6RP.css} +1 -1
  135. package/dist/core/web/public/next/assets/ChartFrame-SygZ7B3x.js +2 -0
  136. package/dist/core/web/public/next/assets/ChartFrame-SygZ7B3x.js.map +1 -0
  137. package/dist/core/web/public/next/assets/ChatSection-D6WybBpB.js +3 -0
  138. package/dist/core/web/public/next/assets/ChatSection-D6WybBpB.js.map +1 -0
  139. package/dist/core/web/public/next/assets/CloudBudgetForm-Bd91iStN.js +2 -0
  140. package/dist/core/web/public/next/assets/CloudBudgetForm-Bd91iStN.js.map +1 -0
  141. package/dist/core/web/public/next/assets/CommandPalette-B6SgDJH-.js +2 -0
  142. package/dist/core/web/public/next/assets/CommandPalette-B6SgDJH-.js.map +1 -0
  143. package/dist/core/web/public/next/assets/CommandSection-CvAVd1w4.css +1 -0
  144. package/dist/core/web/public/next/assets/CommandSection-DgMGoepd.js +2 -0
  145. package/dist/core/web/public/next/assets/CommandSection-DgMGoepd.js.map +1 -0
  146. package/dist/core/web/public/next/assets/ConfirmDialog-Bv4hdK2T.js +2 -0
  147. package/dist/core/web/public/next/assets/{ConfirmDialog-DLrLKM0c.js.map → ConfirmDialog-Bv4hdK2T.js.map} +1 -1
  148. package/dist/core/web/public/next/assets/DeleteChatDialog-CH1Ix8Eh.js +2 -0
  149. package/dist/core/web/public/next/assets/DeleteChatDialog-CH1Ix8Eh.js.map +1 -0
  150. package/dist/core/web/public/next/assets/Dialog-BSsIFNqD.js +2 -0
  151. package/dist/core/web/public/next/assets/{Dialog-BS9Dxi3G.js.map → Dialog-BSsIFNqD.js.map} +1 -1
  152. package/dist/core/web/public/next/assets/DiffPane-BpNuJmth.js +2 -0
  153. package/dist/core/web/public/next/assets/{DiffPane-TOmUf3b2.js.map → DiffPane-BpNuJmth.js.map} +1 -1
  154. package/dist/core/web/public/next/assets/DiffViewer-CJarUvs0.js +2 -0
  155. package/dist/core/web/public/next/assets/{DiffViewer-BpH56302.js.map → DiffViewer-CJarUvs0.js.map} +1 -1
  156. package/dist/core/web/public/next/assets/DockHost-DW9q0NdR.js +2 -0
  157. package/dist/core/web/public/next/assets/DockHost-DW9q0NdR.js.map +1 -0
  158. package/dist/core/web/public/next/assets/{EmptyState-BqR5YAmf.js → EmptyState-DPrd2aak.js} +2 -2
  159. package/dist/core/web/public/next/assets/{EmptyState-BqR5YAmf.js.map → EmptyState-DPrd2aak.js.map} +1 -1
  160. package/dist/core/web/public/next/assets/{Epistemic-dhvDTwAZ.js → Epistemic-D7MxSmED.js} +2 -2
  161. package/dist/core/web/public/next/assets/{Epistemic-dhvDTwAZ.js.map → Epistemic-D7MxSmED.js.map} +1 -1
  162. package/dist/core/web/public/next/assets/FleetSection-BdZN6rGS.js +3 -0
  163. package/dist/core/web/public/next/assets/FleetSection-BdZN6rGS.js.map +1 -0
  164. package/dist/core/web/public/next/assets/Funnel-BeNQZWv2.js +2 -0
  165. package/dist/core/web/public/next/assets/{Funnel-D2u7Wlzc.js.map → Funnel-BeNQZWv2.js.map} +1 -1
  166. package/dist/core/web/public/next/assets/GearTray-CIPtzeIx.js +2 -0
  167. package/dist/core/web/public/next/assets/{GearTray-Cb2npoxM.js.map → GearTray-CIPtzeIx.js.map} +1 -1
  168. package/dist/core/web/public/next/assets/GrowthSection-iiQg6wvK.js +2 -0
  169. package/dist/core/web/public/next/assets/{GrowthSection-C5aDPs8B.js.map → GrowthSection-iiQg6wvK.js.map} +1 -1
  170. package/dist/core/web/public/next/assets/HandoffDialog-DrQ6ofuy.js +2 -0
  171. package/dist/core/web/public/next/assets/{HandoffDialog-BF3AYg-X.js.map → HandoffDialog-DrQ6ofuy.js.map} +1 -1
  172. package/dist/core/web/public/next/assets/Input-C0MQxEM6.js +2 -0
  173. package/dist/core/web/public/next/assets/{Input-B5dmGLZx.js.map → Input-C0MQxEM6.js.map} +1 -1
  174. package/dist/core/web/public/next/assets/LeaderCard-BRr3_yE-.js +2 -0
  175. package/dist/core/web/public/next/assets/LeaderCard-BRr3_yE-.js.map +1 -0
  176. package/dist/core/web/public/next/assets/MatrixHeatmap-DZvZeWXL.js +2 -0
  177. package/dist/core/web/public/next/assets/{MatrixHeatmap-BgEUs2Eu.js.map → MatrixHeatmap-DZvZeWXL.js.map} +1 -1
  178. package/dist/core/web/public/next/assets/McpSection-BRuCcTjT.js +2 -0
  179. package/dist/core/web/public/next/assets/{McpSection-DZkiOuoq.js.map → McpSection-BRuCcTjT.js.map} +1 -1
  180. package/dist/core/web/public/next/assets/MessageMarkdown-bRvD5nSc.js +3 -0
  181. package/dist/core/web/public/next/assets/{MessageMarkdown-BauY8ZTY.js.map → MessageMarkdown-bRvD5nSc.js.map} +1 -1
  182. package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-DLBNLfsn.js → MessageMarkdownRenderer-FjjkPKA2.js} +4 -4
  183. package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-DLBNLfsn.js.map → MessageMarkdownRenderer-FjjkPKA2.js.map} +1 -1
  184. package/dist/core/web/public/next/assets/{Meter-DNeocJnD.js → Meter-CFNLpwA-.js} +2 -2
  185. package/dist/core/web/public/next/assets/{Meter-DNeocJnD.js.map → Meter-CFNLpwA-.js.map} +1 -1
  186. package/dist/core/web/public/next/assets/MindSection-BTIiQS8P.js +2 -0
  187. package/dist/core/web/public/next/assets/MindSection-BTIiQS8P.js.map +1 -0
  188. package/dist/core/web/public/next/assets/MutationTokenDialog-T7gv3a9r.js +2 -0
  189. package/dist/core/web/public/next/assets/{MutationTokenDialog-mxrw0Yvy.js.map → MutationTokenDialog-T7gv3a9r.js.map} +1 -1
  190. package/dist/core/web/public/next/assets/NeedsYouDrawer-lYN4G_aM.js +2 -0
  191. package/dist/core/web/public/next/assets/{NeedsYouDrawer-CO-Balfp.js.map → NeedsYouDrawer-lYN4G_aM.js.map} +1 -1
  192. package/dist/core/web/public/next/assets/NeedsYouList-BgH8ezqf.js +2 -0
  193. package/dist/core/web/public/next/assets/{NeedsYouList-CzDZbzRD.js.map → NeedsYouList-BgH8ezqf.js.map} +1 -1
  194. package/dist/core/web/public/next/assets/NewChatDialog-Db5Xjrk8.js +3 -0
  195. package/dist/core/web/public/next/assets/NewChatDialog-Db5Xjrk8.js.map +1 -0
  196. package/dist/core/web/public/next/assets/OnboardingFlow-HUNQGQuU.css +1 -0
  197. package/dist/core/web/public/next/assets/OnboardingFlow-LoY-zuSe.js +2 -0
  198. package/dist/core/web/public/next/assets/OnboardingFlow-LoY-zuSe.js.map +1 -0
  199. package/dist/core/web/public/next/assets/OnboardingGate-C4VXn7BJ.js +3 -0
  200. package/dist/core/web/public/next/assets/OnboardingGate-C4VXn7BJ.js.map +1 -0
  201. package/dist/core/web/public/next/assets/PreviewPane-BPBbcROb.js +2 -0
  202. package/dist/core/web/public/next/assets/{PreviewPane-BS-CleCd.js.map → PreviewPane-BPBbcROb.js.map} +1 -1
  203. package/dist/core/web/public/next/assets/{ProviderLogo-C5mBg8i0.js → ProviderLogo-CT2cSfkg.js} +2 -2
  204. package/dist/core/web/public/next/assets/{ProviderLogo-C5mBg8i0.js.map → ProviderLogo-CT2cSfkg.js.map} +1 -1
  205. package/dist/core/web/public/next/assets/RailStatus-Vgl0GYtd.js +2 -0
  206. package/dist/core/web/public/next/assets/{RailStatus-cPRyOmrk.js.map → RailStatus-Vgl0GYtd.js.map} +1 -1
  207. package/dist/core/web/public/next/assets/{RefreshIndicator-CMwSCiz5.js → RefreshIndicator-CSyqpY_q.js} +2 -2
  208. package/dist/core/web/public/next/assets/{RefreshIndicator-CMwSCiz5.js.map → RefreshIndicator-CSyqpY_q.js.map} +1 -1
  209. package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BFi1opsC.js → ResourcePoolConsoleApp-BX2nkdmZ.js} +4 -4
  210. package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BFi1opsC.js.map → ResourcePoolConsoleApp-BX2nkdmZ.js.map} +1 -1
  211. package/dist/core/web/public/next/assets/ResourcesChrome-B2U2lO1H.js +3 -0
  212. package/dist/core/web/public/next/assets/ResourcesChrome-B2U2lO1H.js.map +1 -0
  213. package/dist/core/web/public/next/assets/ResourcesDrawer-BCFJ2Uq8.css +1 -0
  214. package/dist/core/web/public/next/assets/ResourcesDrawer-DlUKOjl9.js +2 -0
  215. package/dist/core/web/public/next/assets/ResourcesDrawer-DlUKOjl9.js.map +1 -0
  216. package/dist/core/web/public/next/assets/RouteErrorBoundary-BaC7YVzR.js +2 -0
  217. package/dist/core/web/public/next/assets/{RouteErrorBoundary-DYtwc2ja.js.map → RouteErrorBoundary-BaC7YVzR.js.map} +1 -1
  218. package/dist/core/web/public/next/assets/RunInCloudAction-D5PDHJPE.js +2 -0
  219. package/dist/core/web/public/next/assets/{RunInCloudAction-BEGEEM8O.js.map → RunInCloudAction-D5PDHJPE.js.map} +1 -1
  220. package/dist/core/web/public/next/assets/SeatSelector-Cg75LInq.js +3 -0
  221. package/dist/core/web/public/next/assets/{SeatSelector-CYHRR7Wp.js.map → SeatSelector-Cg75LInq.js.map} +1 -1
  222. package/dist/core/web/public/next/assets/Segmented-CametjLt.js +2 -0
  223. package/dist/core/web/public/next/assets/{Segmented-BE53BenI.js.map → Segmented-CametjLt.js.map} +1 -1
  224. package/dist/core/web/public/next/assets/Select-De52fghU.js +2 -0
  225. package/dist/core/web/public/next/assets/{Select-BwSGkHCS.js.map → Select-De52fghU.js.map} +1 -1
  226. package/dist/core/web/public/next/assets/SessionGate-CzlcNq3O.js +2 -0
  227. package/dist/core/web/public/next/assets/{SessionGate-e0dFJm9d.js.map → SessionGate-CzlcNq3O.js.map} +1 -1
  228. package/dist/core/web/public/next/assets/SessionInsightChip-Bk_Owa7u.js +2 -0
  229. package/dist/core/web/public/next/assets/{SessionInsightChip-CxlSyueJ.js.map → SessionInsightChip-Bk_Owa7u.js.map} +1 -1
  230. package/dist/core/web/public/next/assets/SessionSearch-C6C8DHN8.js +2 -0
  231. package/dist/core/web/public/next/assets/{SessionSearch-_yp7S2TP.js.map → SessionSearch-C6C8DHN8.js.map} +1 -1
  232. package/dist/core/web/public/next/assets/SettingsSection-mI9wQYZg.js +2 -0
  233. package/dist/core/web/public/next/assets/SettingsSection-mI9wQYZg.js.map +1 -0
  234. package/dist/core/web/public/next/assets/Sheet-CJhK9Dqv.js +2 -0
  235. package/dist/core/web/public/next/assets/{Sheet-DVP2Mgy6.js.map → Sheet-CJhK9Dqv.js.map} +1 -1
  236. package/dist/core/web/public/next/assets/ShortcutsOverlay-DDW-i9Fc.js +2 -0
  237. package/dist/core/web/public/next/assets/{ShortcutsOverlay-BcIcoClX.js.map → ShortcutsOverlay-DDW-i9Fc.js.map} +1 -1
  238. package/dist/core/web/public/next/assets/Sidebar-DT7ykaqS.js +3 -0
  239. package/dist/core/web/public/next/assets/Sidebar-DT7ykaqS.js.map +1 -0
  240. package/dist/core/web/public/next/assets/Slider-Bwd9HfXl.js +2 -0
  241. package/dist/core/web/public/next/assets/{Slider-BypUWjpH.js.map → Slider-Bwd9HfXl.js.map} +1 -1
  242. package/dist/core/web/public/next/assets/StatTile-DPZ5yyaU.js +2 -0
  243. package/dist/core/web/public/next/assets/StatTile-DPZ5yyaU.js.map +1 -0
  244. package/dist/core/web/public/next/assets/{StatusBadge-HCZp416_.js → StatusBadge-DHKRtttH.js} +2 -2
  245. package/dist/core/web/public/next/assets/{StatusBadge-HCZp416_.js.map → StatusBadge-DHKRtttH.js.map} +1 -1
  246. package/dist/core/web/public/next/assets/StepBand-DQykLkk_.js +2 -0
  247. package/dist/core/web/public/next/assets/{StepBand-Duz1PUes.js.map → StepBand-DQykLkk_.js.map} +1 -1
  248. package/dist/core/web/public/next/assets/Surface-D--LXgQm.js +2 -0
  249. package/dist/core/web/public/next/assets/Surface-D--LXgQm.js.map +1 -0
  250. package/dist/core/web/public/next/assets/Surface-e1z6GdZt.css +1 -0
  251. package/dist/core/web/public/next/assets/Swimlane-BzH6OCee.js +2 -0
  252. package/dist/core/web/public/next/assets/{Swimlane-DGcIcnNA.js.map → Swimlane-BzH6OCee.js.map} +1 -1
  253. package/dist/core/web/public/next/assets/{Switch-iveI-8NY.js → Switch-PMixU6b0.js} +2 -2
  254. package/dist/core/web/public/next/assets/{Switch-iveI-8NY.js.map → Switch-PMixU6b0.js.map} +1 -1
  255. package/dist/core/web/public/next/assets/{Tag-DH15CUJp.js → Tag-fordBsrJ.js} +2 -2
  256. package/dist/core/web/public/next/assets/{Tag-DH15CUJp.js.map → Tag-fordBsrJ.js.map} +1 -1
  257. package/dist/core/web/public/next/assets/TerminalPane-BSnGdUuF.js +7 -0
  258. package/dist/core/web/public/next/assets/TerminalPane-BSnGdUuF.js.map +1 -0
  259. package/dist/core/web/public/next/assets/UniverseConsoleApp-DtXFhAhw.js +2 -0
  260. package/dist/core/web/public/next/assets/{UniverseConsoleApp-C8yQ0AaR.js.map → UniverseConsoleApp-DtXFhAhw.js.map} +1 -1
  261. package/dist/core/web/public/next/assets/{UniverseView-_nPURPqe.js → UniverseView-sWm3pnTW.js} +3 -3
  262. package/dist/core/web/public/next/assets/{UniverseView-_nPURPqe.js.map → UniverseView-sWm3pnTW.js.map} +1 -1
  263. package/dist/core/web/public/next/assets/UsageSection-CiD1DbuF.js +3 -0
  264. package/dist/core/web/public/next/assets/UsageSection-CiD1DbuF.js.map +1 -0
  265. package/dist/core/web/public/next/assets/VerseConsoleApp-BCY5uSok.js +3 -0
  266. package/dist/core/web/public/next/assets/VerseConsoleApp-BCY5uSok.js.map +1 -0
  267. package/dist/core/web/public/next/assets/Workspace-BQSZFSeO.js +10 -0
  268. package/dist/core/web/public/next/assets/Workspace-BQSZFSeO.js.map +1 -0
  269. package/dist/core/web/public/next/assets/actions-BmIf9avl.css +1 -0
  270. package/dist/core/web/public/next/assets/actions-Ci6I4C0l.js +2 -0
  271. package/dist/core/web/public/next/assets/actions-Ci6I4C0l.js.map +1 -0
  272. package/dist/core/web/public/next/assets/apps-model-DlwnfqwJ.js +2 -0
  273. package/dist/core/web/public/next/assets/apps-model-DlwnfqwJ.js.map +1 -0
  274. package/dist/core/web/public/next/assets/authority-model-BFuPezSo.js +2 -0
  275. package/dist/core/web/public/next/assets/authority-model-BFuPezSo.js.map +1 -0
  276. package/dist/core/web/public/next/assets/binding-left-DZpq5sLf.js +2 -0
  277. package/dist/core/web/public/next/assets/binding-left-DZpq5sLf.js.map +1 -0
  278. package/dist/core/web/public/next/assets/{budget-queries-V3wcJVK_.js → budget-queries-DsAjH8ac.js} +2 -2
  279. package/dist/core/web/public/next/assets/{budget-queries-V3wcJVK_.js.map → budget-queries-DsAjH8ac.js.map} +1 -1
  280. package/dist/core/web/public/next/assets/capacity-strip-model-Dn1cNOhz.js +2 -0
  281. package/dist/core/web/public/next/assets/capacity-strip-model-Dn1cNOhz.js.map +1 -0
  282. package/dist/core/web/public/next/assets/charts-C_xJbJiw.js +2 -0
  283. package/dist/core/web/public/next/assets/charts-C_xJbJiw.js.map +1 -0
  284. package/dist/core/web/public/next/assets/charts-DhKTrQLw.css +1 -0
  285. package/dist/core/web/public/next/assets/clipboard-DkZdqlxf.js +2 -0
  286. package/dist/core/web/public/next/assets/clipboard-DkZdqlxf.js.map +1 -0
  287. package/dist/core/web/public/next/assets/cloud-D-HXms6q.css +1 -0
  288. package/dist/core/web/public/next/assets/cloud-model-CX407gPY.js +2 -0
  289. package/dist/core/web/public/next/assets/cloud-model-CX407gPY.js.map +1 -0
  290. package/dist/core/web/public/next/assets/cloud-queries-QAhpExlz.js +2 -0
  291. package/dist/core/web/public/next/assets/cloud-queries-QAhpExlz.js.map +1 -0
  292. package/dist/core/web/public/next/assets/cloud.module-DOP-N4Ch.js +2 -0
  293. package/dist/core/web/public/next/assets/cloud.module-DOP-N4Ch.js.map +1 -0
  294. package/dist/core/web/public/next/assets/command-catalog-CF0cQQac.js +2 -0
  295. package/dist/core/web/public/next/assets/command-catalog-CF0cQQac.js.map +1 -0
  296. package/dist/core/web/public/next/assets/context-model-Co4wh3SM.js +2 -0
  297. package/dist/core/web/public/next/assets/context-model-Co4wh3SM.js.map +1 -0
  298. package/dist/core/web/public/next/assets/context-model-DV1zCfAm.js +3 -0
  299. package/dist/core/web/public/next/assets/context-model-DV1zCfAm.js.map +1 -0
  300. package/dist/core/web/public/next/assets/{context-queries-CrPcHWTz.js → context-queries-CktFQqSS.js} +2 -2
  301. package/dist/core/web/public/next/assets/{context-queries-CrPcHWTz.js.map → context-queries-CktFQqSS.js.map} +1 -1
  302. package/dist/core/web/public/next/assets/{control-queries-CmgBgKV7.js → control-queries-DAvlh_YM.js} +2 -2
  303. package/dist/core/web/public/next/assets/{control-queries-CmgBgKV7.js.map → control-queries-DAvlh_YM.js.map} +1 -1
  304. package/dist/core/web/public/next/assets/copy-setup-CqRSfELB.js +2 -0
  305. package/dist/core/web/public/next/assets/copy-setup-CqRSfELB.js.map +1 -0
  306. package/dist/core/web/public/next/assets/dock-icons-BFuBbqJl.js +2 -0
  307. package/dist/core/web/public/next/assets/{dock-icons-CUh8dOxJ.js.map → dock-icons-BFuBbqJl.js.map} +1 -1
  308. package/dist/core/web/public/next/assets/fleet-model-Dfd5JyLR.js +2 -0
  309. package/dist/core/web/public/next/assets/fleet-model-Dfd5JyLR.js.map +1 -0
  310. package/dist/core/web/public/next/assets/fleet-queries-RtMTd5rR.js +2 -0
  311. package/dist/core/web/public/next/assets/fleet-queries-RtMTd5rR.js.map +1 -0
  312. package/dist/core/web/public/next/assets/{focus-trap-HtcoXeEq.js → focus-trap-BdrbWfC4.js} +2 -2
  313. package/dist/core/web/public/next/assets/{focus-trap-HtcoXeEq.js.map → focus-trap-BdrbWfC4.js.map} +1 -1
  314. package/dist/core/web/public/next/assets/format-Dk4Fmxax.js +2 -0
  315. package/dist/core/web/public/next/assets/format-Dk4Fmxax.js.map +1 -0
  316. package/dist/core/web/public/next/assets/{git-model-bk_RXh3y.js → git-model-_BnI_Ogh.js} +2 -2
  317. package/dist/core/web/public/next/assets/{git-model-bk_RXh3y.js.map → git-model-_BnI_Ogh.js.map} +1 -1
  318. package/dist/core/web/public/next/assets/global-CNNGMril.js +2 -0
  319. package/dist/core/web/public/next/assets/{global-oEl9Qj8u.js.map → global-CNNGMril.js.map} +1 -1
  320. package/dist/core/web/public/next/assets/{guarded-runners-LHLXmXIk.js → guarded-runners-DPh2d32e.js} +2 -2
  321. package/dist/core/web/public/next/assets/{guarded-runners-LHLXmXIk.js.map → guarded-runners-DPh2d32e.js.map} +1 -1
  322. package/dist/core/web/public/next/assets/icons-0haWy6nh.js +2 -0
  323. package/dist/core/web/public/next/assets/icons-0haWy6nh.js.map +1 -0
  324. package/dist/core/web/public/next/assets/{index-BVxOlseC.js → index-QesfXBsb.js} +3 -3
  325. package/dist/core/web/public/next/assets/{index-BVxOlseC.js.map → index-QesfXBsb.js.map} +1 -1
  326. package/dist/core/web/public/next/assets/live-model-De-q0ZFK.js +2 -0
  327. package/dist/core/web/public/next/assets/live-model-De-q0ZFK.js.map +1 -0
  328. package/dist/core/web/public/next/assets/local-model-C9xNi9fN.js +2 -0
  329. package/dist/core/web/public/next/assets/local-model-C9xNi9fN.js.map +1 -0
  330. package/dist/core/web/public/next/assets/mind.module-BrK2nFOL.js +2 -0
  331. package/dist/core/web/public/next/assets/{mind.module-gTGAuJt1.js.map → mind.module-BrK2nFOL.js.map} +1 -1
  332. package/dist/core/web/public/next/assets/mutations-DTCtKCn_.js +2 -0
  333. package/dist/core/web/public/next/assets/{mutations-C5S7okTW.js.map → mutations-DTCtKCn_.js.map} +1 -1
  334. package/dist/core/web/public/next/assets/nav-KmGX0CVz.js +2 -0
  335. package/dist/core/web/public/next/assets/{nav-NVtnuG7A.js.map → nav-KmGX0CVz.js.map} +1 -1
  336. package/dist/core/web/public/next/assets/{overnight-queries-DGm3qL1b.js → overnight-queries-mlO0xzsr.js} +2 -2
  337. package/dist/core/web/public/next/assets/{overnight-queries-DGm3qL1b.js.map → overnight-queries-mlO0xzsr.js.map} +1 -1
  338. package/dist/core/web/public/next/assets/primitives-D0Fb3TtS.js +1 -0
  339. package/dist/core/web/public/next/assets/{queries-CYisSAAB.js → queries-CyBE8nsW.js} +2 -2
  340. package/dist/core/web/public/next/assets/{queries-CYisSAAB.js.map → queries-CyBE8nsW.js.map} +1 -1
  341. package/dist/core/web/public/next/assets/reasoning-pref-CaoA4_Vl.js +2 -0
  342. package/dist/core/web/public/next/assets/{reasoning-pref-BUcFF_5G.js.map → reasoning-pref-CaoA4_Vl.js.map} +1 -1
  343. package/dist/core/web/public/next/assets/{reveal-anchor-D-tV8xau.js → reveal-anchor-BP1VqnPU.js} +2 -2
  344. package/dist/core/web/public/next/assets/{reveal-anchor-D-tV8xau.js.map → reveal-anchor-BP1VqnPU.js.map} +1 -1
  345. package/dist/core/web/public/next/assets/seat-subscription-C5Tvr0WQ.js +2 -0
  346. package/dist/core/web/public/next/assets/{seat-subscription-B-f9ViU2.js.map → seat-subscription-C5Tvr0WQ.js.map} +1 -1
  347. package/dist/core/web/public/next/assets/{sidebar-model-DQ-FyBHW.js → sidebar-model-B5Qk95k_.js} +2 -2
  348. package/dist/core/web/public/next/assets/{sidebar-model-DQ-FyBHW.js.map → sidebar-model-B5Qk95k_.js.map} +1 -1
  349. package/dist/core/web/public/next/assets/slots-DHKQDoE6.js +3 -0
  350. package/dist/core/web/public/next/assets/{slots-BhP8b8tf.js.map → slots-DHKQDoE6.js.map} +1 -1
  351. package/dist/core/web/public/next/assets/surface-data-CchClvHo.js +2 -0
  352. package/dist/core/web/public/next/assets/surface-data-CchClvHo.js.map +1 -0
  353. package/dist/core/web/public/next/assets/surface-prefetch-BWr0LBQn.js +2 -0
  354. package/dist/core/web/public/next/assets/surface-prefetch-BWr0LBQn.js.map +1 -0
  355. package/dist/core/web/public/next/assets/{tasks-model-BKDNqmmt.js → tasks-model-D6WFVULI.js} +2 -2
  356. package/dist/core/web/public/next/assets/{tasks-model-BKDNqmmt.js.map → tasks-model-D6WFVULI.js.map} +1 -1
  357. package/dist/core/web/public/next/assets/{terminal-icons-D2xe-aM1.js → terminal-icons-BvCvuXk2.js} +2 -2
  358. package/dist/core/web/public/next/assets/{terminal-icons-D2xe-aM1.js.map → terminal-icons-BvCvuXk2.js.map} +1 -1
  359. package/dist/core/web/public/next/assets/transient-events-nTLhMBND.js +2 -0
  360. package/dist/core/web/public/next/assets/transient-events-nTLhMBND.js.map +1 -0
  361. package/dist/core/web/public/next/assets/types-D5XOdyw8.js.map +1 -1
  362. package/dist/core/web/public/next/assets/{usage-queries-BZuAANlI.js → usage-queries-D1SU1t7r.js} +2 -2
  363. package/dist/core/web/public/next/assets/{usage-queries-BZuAANlI.js.map → usage-queries-D1SU1t7r.js.map} +1 -1
  364. package/dist/core/web/public/next/assets/{use-guarded-action-Cf4MeNBa.js → use-guarded-action-BZmBv7CJ.js} +2 -2
  365. package/dist/core/web/public/next/assets/{use-guarded-action-Cf4MeNBa.js.map → use-guarded-action-BZmBv7CJ.js.map} +1 -1
  366. package/dist/core/web/public/next/assets/{use-ticker-D9yi49my.js → use-ticker-CkJ4-0wU.js} +2 -2
  367. package/dist/core/web/public/next/assets/{use-ticker-D9yi49my.js.map → use-ticker-CkJ4-0wU.js.map} +1 -1
  368. package/dist/core/web/public/next/assets/{use-token-gate-DqrSXdX6.js → use-token-gate-CYcfk_GS.js} +2 -2
  369. package/dist/core/web/public/next/assets/{use-token-gate-DqrSXdX6.js.map → use-token-gate-CYcfk_GS.js.map} +1 -1
  370. package/dist/core/web/public/next/assets/useOnboarding-CujRS6PK.js +2 -0
  371. package/dist/core/web/public/next/assets/useOnboarding-CujRS6PK.js.map +1 -0
  372. package/dist/core/web/public/next/assets/useSeatsRefresh-BEaQdkZs.js +2 -0
  373. package/dist/core/web/public/next/assets/useSeatsRefresh-BEaQdkZs.js.map +1 -0
  374. package/dist/core/web/public/next/assets/useVerseTranscript-BQ0J6Xhx.js +2 -0
  375. package/dist/core/web/public/next/assets/{useVerseTranscript-CDYrrWOO.js.map → useVerseTranscript-BQ0J6Xhx.js.map} +1 -1
  376. package/dist/core/web/public/next/assets/verse-icons-DndgEgKS.js +2 -0
  377. package/dist/core/web/public/next/assets/verse-icons-DndgEgKS.js.map +1 -0
  378. package/dist/core/web/public/next/assets/verse-model-MMySehjj.js +2 -0
  379. package/dist/core/web/public/next/assets/verse-model-MMySehjj.js.map +1 -0
  380. package/dist/core/web/public/next/assets/verse-store-DNVRuiJL.js +2 -0
  381. package/dist/core/web/public/next/assets/verse-store-DNVRuiJL.js.map +1 -0
  382. package/dist/core/web/public/next/assets/warmup-CNEH_-be.js +3 -0
  383. package/dist/core/web/public/next/assets/{warmup-HG5vYbsN.js.map → warmup-CNEH_-be.js.map} +1 -1
  384. package/dist/core/web/public/next/assets/why-seat-model-jlDTwYSc.js +2 -0
  385. package/dist/core/web/public/next/assets/why-seat-model-jlDTwYSc.js.map +1 -0
  386. package/dist/core/web/public/next/assets/{workspace-model-CbhdPhei.js → workspace-model-Dukb2wwv.js} +2 -2
  387. package/dist/core/web/public/next/assets/{workspace-model-CbhdPhei.js.map → workspace-model-Dukb2wwv.js.map} +1 -1
  388. package/dist/core/web/public/next/index.html +1 -1
  389. package/dist/release-dependency-inventory.json +1 -1
  390. package/docs/README.md +2 -1
  391. package/package.json +1 -1
  392. package/dist/core/web/public/next/assets/ActionMenu-FxXeRbPx.js +0 -2
  393. package/dist/core/web/public/next/assets/Advanced-D_eS4472.js +0 -2
  394. package/dist/core/web/public/next/assets/Advanced-D_eS4472.js.map +0 -1
  395. package/dist/core/web/public/next/assets/App-Cj4zKbG3.js +0 -7
  396. package/dist/core/web/public/next/assets/App-Cj4zKbG3.js.map +0 -1
  397. package/dist/core/web/public/next/assets/AppsSection-Ddu_RCQE.js +0 -2
  398. package/dist/core/web/public/next/assets/AppsSection-Ddu_RCQE.js.map +0 -1
  399. package/dist/core/web/public/next/assets/AreaTrend-CDxrQU4b.js +0 -2
  400. package/dist/core/web/public/next/assets/AutonomySection-DuQkHGD_.js +0 -2
  401. package/dist/core/web/public/next/assets/BranchBar-CLsvOcyK.js +0 -2
  402. package/dist/core/web/public/next/assets/BudgetControl-TL3FeZ1D.js +0 -2
  403. package/dist/core/web/public/next/assets/BurnDown-sFXkUGdB.js +0 -2
  404. package/dist/core/web/public/next/assets/BurnDown-sFXkUGdB.js.map +0 -1
  405. package/dist/core/web/public/next/assets/CapacityStrip-qReu0RaF.js +0 -2
  406. package/dist/core/web/public/next/assets/ChatSection-DZuZfTaC.js +0 -3
  407. package/dist/core/web/public/next/assets/ChatSection-DZuZfTaC.js.map +0 -1
  408. package/dist/core/web/public/next/assets/CloudBudgetForm-DJbiT1wi.js +0 -2
  409. package/dist/core/web/public/next/assets/CloudBudgetForm-DJbiT1wi.js.map +0 -1
  410. package/dist/core/web/public/next/assets/CommandPalette-zYLFZRnj.js +0 -2
  411. package/dist/core/web/public/next/assets/CommandPalette-zYLFZRnj.js.map +0 -1
  412. package/dist/core/web/public/next/assets/CommandSection-rIeMK5Ch.js +0 -2
  413. package/dist/core/web/public/next/assets/CommandSection-rIeMK5Ch.js.map +0 -1
  414. package/dist/core/web/public/next/assets/ConfirmDialog-DLrLKM0c.js +0 -2
  415. package/dist/core/web/public/next/assets/Dialog-BS9Dxi3G.js +0 -2
  416. package/dist/core/web/public/next/assets/DiffPane-TOmUf3b2.js +0 -2
  417. package/dist/core/web/public/next/assets/DiffViewer-BpH56302.js +0 -2
  418. package/dist/core/web/public/next/assets/DockHost-DzkzR-HD.js +0 -2
  419. package/dist/core/web/public/next/assets/DockHost-DzkzR-HD.js.map +0 -1
  420. package/dist/core/web/public/next/assets/FleetSection-ViAb549H.js +0 -3
  421. package/dist/core/web/public/next/assets/FleetSection-ViAb549H.js.map +0 -1
  422. package/dist/core/web/public/next/assets/Funnel-D2u7Wlzc.js +0 -2
  423. package/dist/core/web/public/next/assets/GearTray-Cb2npoxM.js +0 -2
  424. package/dist/core/web/public/next/assets/GrowthSection-C5aDPs8B.js +0 -2
  425. package/dist/core/web/public/next/assets/HandoffDialog-BF3AYg-X.js +0 -2
  426. package/dist/core/web/public/next/assets/Input-B5dmGLZx.js +0 -2
  427. package/dist/core/web/public/next/assets/LeaderCard-DZrmjDbI.js +0 -2
  428. package/dist/core/web/public/next/assets/LeaderCard-DZrmjDbI.js.map +0 -1
  429. package/dist/core/web/public/next/assets/MatrixHeatmap-BgEUs2Eu.js +0 -2
  430. package/dist/core/web/public/next/assets/McpSection-DZkiOuoq.js +0 -2
  431. package/dist/core/web/public/next/assets/MessageMarkdown-BauY8ZTY.js +0 -3
  432. package/dist/core/web/public/next/assets/MindSection-BvJXFjyX.js +0 -2
  433. package/dist/core/web/public/next/assets/MindSection-BvJXFjyX.js.map +0 -1
  434. package/dist/core/web/public/next/assets/MutationTokenDialog-mxrw0Yvy.js +0 -2
  435. package/dist/core/web/public/next/assets/NeedsYouDrawer-CO-Balfp.js +0 -2
  436. package/dist/core/web/public/next/assets/NeedsYouList-CzDZbzRD.js +0 -2
  437. package/dist/core/web/public/next/assets/NewChatDialog-B8eJjlFf.js +0 -3
  438. package/dist/core/web/public/next/assets/NewChatDialog-B8eJjlFf.js.map +0 -1
  439. package/dist/core/web/public/next/assets/OnboardingFlow-Cij6KWat.js +0 -2
  440. package/dist/core/web/public/next/assets/OnboardingFlow-Cij6KWat.js.map +0 -1
  441. package/dist/core/web/public/next/assets/OnboardingFlow-DSpPj8UE.css +0 -1
  442. package/dist/core/web/public/next/assets/PreviewPane-BS-CleCd.js +0 -2
  443. package/dist/core/web/public/next/assets/RailStatus-cPRyOmrk.js +0 -2
  444. package/dist/core/web/public/next/assets/ResourcesChrome-BJCauW_t.js +0 -3
  445. package/dist/core/web/public/next/assets/ResourcesChrome-BJCauW_t.js.map +0 -1
  446. package/dist/core/web/public/next/assets/ResourcesDrawer-BDecg6nO.js +0 -2
  447. package/dist/core/web/public/next/assets/ResourcesDrawer-BDecg6nO.js.map +0 -1
  448. package/dist/core/web/public/next/assets/ResourcesDrawer-CSKIO_wZ.css +0 -1
  449. package/dist/core/web/public/next/assets/RouteErrorBoundary-DYtwc2ja.js +0 -2
  450. package/dist/core/web/public/next/assets/RunInCloudAction-BEGEEM8O.js +0 -2
  451. package/dist/core/web/public/next/assets/SeatSelector-CYHRR7Wp.js +0 -3
  452. package/dist/core/web/public/next/assets/Segmented-BE53BenI.js +0 -2
  453. package/dist/core/web/public/next/assets/Select-BwSGkHCS.js +0 -2
  454. package/dist/core/web/public/next/assets/SessionGate-e0dFJm9d.js +0 -2
  455. package/dist/core/web/public/next/assets/SessionInsightChip-CxlSyueJ.js +0 -2
  456. package/dist/core/web/public/next/assets/SessionSearch-_yp7S2TP.js +0 -2
  457. package/dist/core/web/public/next/assets/SettingsSection-wGnpWeGW.js +0 -2
  458. package/dist/core/web/public/next/assets/SettingsSection-wGnpWeGW.js.map +0 -1
  459. package/dist/core/web/public/next/assets/Sheet-DVP2Mgy6.js +0 -2
  460. package/dist/core/web/public/next/assets/ShortcutsOverlay-BcIcoClX.js +0 -2
  461. package/dist/core/web/public/next/assets/Sidebar-DjQOqPbm.js +0 -3
  462. package/dist/core/web/public/next/assets/Sidebar-DjQOqPbm.js.map +0 -1
  463. package/dist/core/web/public/next/assets/Slider-BypUWjpH.js +0 -2
  464. package/dist/core/web/public/next/assets/StepBand-Duz1PUes.js +0 -2
  465. package/dist/core/web/public/next/assets/Surface-B75lVfzm.js +0 -2
  466. package/dist/core/web/public/next/assets/Surface-B75lVfzm.js.map +0 -1
  467. package/dist/core/web/public/next/assets/Surface-DMca0gAe.css +0 -1
  468. package/dist/core/web/public/next/assets/Swimlane-DGcIcnNA.js +0 -2
  469. package/dist/core/web/public/next/assets/TerminalPane-MQT-veKZ.js +0 -7
  470. package/dist/core/web/public/next/assets/TerminalPane-MQT-veKZ.js.map +0 -1
  471. package/dist/core/web/public/next/assets/UniverseConsoleApp-C8yQ0AaR.js +0 -2
  472. package/dist/core/web/public/next/assets/UsageSection-CqxRGJ40.js +0 -2
  473. package/dist/core/web/public/next/assets/UsageSection-CqxRGJ40.js.map +0 -1
  474. package/dist/core/web/public/next/assets/VerseConsoleApp-DTjDpGCd.js +0 -3
  475. package/dist/core/web/public/next/assets/VerseConsoleApp-DTjDpGCd.js.map +0 -1
  476. package/dist/core/web/public/next/assets/Workspace-DfcFGzME.js +0 -10
  477. package/dist/core/web/public/next/assets/Workspace-DfcFGzME.js.map +0 -1
  478. package/dist/core/web/public/next/assets/actions-Ddfg2iLl.css +0 -1
  479. package/dist/core/web/public/next/assets/actions-tWevL9HV.js +0 -2
  480. package/dist/core/web/public/next/assets/actions-tWevL9HV.js.map +0 -1
  481. package/dist/core/web/public/next/assets/apps-model-CDFvmsQV.js +0 -2
  482. package/dist/core/web/public/next/assets/apps-model-CDFvmsQV.js.map +0 -1
  483. package/dist/core/web/public/next/assets/capacity-strip-model-BDbmQ3e3.js +0 -2
  484. package/dist/core/web/public/next/assets/capacity-strip-model-BDbmQ3e3.js.map +0 -1
  485. package/dist/core/web/public/next/assets/charts-CfAjuKMv.js +0 -2
  486. package/dist/core/web/public/next/assets/charts-CfAjuKMv.js.map +0 -1
  487. package/dist/core/web/public/next/assets/charts-uSX6xVYN.css +0 -1
  488. package/dist/core/web/public/next/assets/cloud-C1KPNRHC.css +0 -1
  489. package/dist/core/web/public/next/assets/cloud-queries-Br_r0UAz.js +0 -2
  490. package/dist/core/web/public/next/assets/cloud-queries-Br_r0UAz.js.map +0 -1
  491. package/dist/core/web/public/next/assets/cloud.module-ascz58c3.js +0 -2
  492. package/dist/core/web/public/next/assets/cloud.module-ascz58c3.js.map +0 -1
  493. package/dist/core/web/public/next/assets/command-bus-xYZoK9nQ.js +0 -2
  494. package/dist/core/web/public/next/assets/command-bus-xYZoK9nQ.js.map +0 -1
  495. package/dist/core/web/public/next/assets/command-catalog-Bb_PxC5w.js +0 -2
  496. package/dist/core/web/public/next/assets/command-catalog-Bb_PxC5w.js.map +0 -1
  497. package/dist/core/web/public/next/assets/composer-keys-su0g1h9o.js +0 -2
  498. package/dist/core/web/public/next/assets/composer-keys-su0g1h9o.js.map +0 -1
  499. package/dist/core/web/public/next/assets/context-model-BC-HOmPo.js +0 -2
  500. package/dist/core/web/public/next/assets/context-model-BC-HOmPo.js.map +0 -1
  501. package/dist/core/web/public/next/assets/context-model-CIBmSugV.js +0 -2
  502. package/dist/core/web/public/next/assets/context-model-CIBmSugV.js.map +0 -1
  503. package/dist/core/web/public/next/assets/dark-since-DOMvtB_G.js +0 -2
  504. package/dist/core/web/public/next/assets/dark-since-DOMvtB_G.js.map +0 -1
  505. package/dist/core/web/public/next/assets/dock-icons-CUh8dOxJ.js +0 -2
  506. package/dist/core/web/public/next/assets/dock-store-B2vlxqPu.js +0 -2
  507. package/dist/core/web/public/next/assets/dock-store-B2vlxqPu.js.map +0 -1
  508. package/dist/core/web/public/next/assets/fleet-model-7i-FbzKI.js +0 -2
  509. package/dist/core/web/public/next/assets/fleet-model-7i-FbzKI.js.map +0 -1
  510. package/dist/core/web/public/next/assets/fleet-queries-DzGoqq8X.js +0 -2
  511. package/dist/core/web/public/next/assets/fleet-queries-DzGoqq8X.js.map +0 -1
  512. package/dist/core/web/public/next/assets/format-BkWdOQDL.js +0 -2
  513. package/dist/core/web/public/next/assets/format-BkWdOQDL.js.map +0 -1
  514. package/dist/core/web/public/next/assets/global-oEl9Qj8u.js +0 -2
  515. package/dist/core/web/public/next/assets/guarded-action-OzqcPjmh.js +0 -3
  516. package/dist/core/web/public/next/assets/guarded-action-OzqcPjmh.js.map +0 -1
  517. package/dist/core/web/public/next/assets/icon-base-DvM1eI5V.js +0 -2
  518. package/dist/core/web/public/next/assets/icon-base-DvM1eI5V.js.map +0 -1
  519. package/dist/core/web/public/next/assets/icons-DEQa2rTx.js +0 -2
  520. package/dist/core/web/public/next/assets/icons-DEQa2rTx.js.map +0 -1
  521. package/dist/core/web/public/next/assets/live-model-bmsJgnYD.js +0 -2
  522. package/dist/core/web/public/next/assets/live-model-bmsJgnYD.js.map +0 -1
  523. package/dist/core/web/public/next/assets/local-model-DFyjKX0b.js +0 -2
  524. package/dist/core/web/public/next/assets/local-model-DFyjKX0b.js.map +0 -1
  525. package/dist/core/web/public/next/assets/mind.module-gTGAuJt1.js +0 -2
  526. package/dist/core/web/public/next/assets/mutations-C5S7okTW.js +0 -2
  527. package/dist/core/web/public/next/assets/nav-NVtnuG7A.js +0 -2
  528. package/dist/core/web/public/next/assets/preloaded-Cwf9rsnZ.js +0 -2
  529. package/dist/core/web/public/next/assets/preloaded-Cwf9rsnZ.js.map +0 -1
  530. package/dist/core/web/public/next/assets/primitives-DyCKYSBG.js +0 -1
  531. package/dist/core/web/public/next/assets/reasoning-pref-BUcFF_5G.js +0 -2
  532. package/dist/core/web/public/next/assets/seat-subscription-B-f9ViU2.js +0 -2
  533. package/dist/core/web/public/next/assets/section-visibility-Yctxu-if.js +0 -2
  534. package/dist/core/web/public/next/assets/section-visibility-Yctxu-if.js.map +0 -1
  535. package/dist/core/web/public/next/assets/slots-BhP8b8tf.js +0 -3
  536. package/dist/core/web/public/next/assets/surface-data-DTI7LjvH.js +0 -2
  537. package/dist/core/web/public/next/assets/surface-data-DTI7LjvH.js.map +0 -1
  538. package/dist/core/web/public/next/assets/surface-prefetch-CdUEBFrl.js +0 -2
  539. package/dist/core/web/public/next/assets/surface-prefetch-CdUEBFrl.js.map +0 -1
  540. package/dist/core/web/public/next/assets/useChartWidth-owwodNVz.js +0 -2
  541. package/dist/core/web/public/next/assets/useChartWidth-owwodNVz.js.map +0 -1
  542. package/dist/core/web/public/next/assets/useSeatsRefresh-DgFy-Ph4.js +0 -2
  543. package/dist/core/web/public/next/assets/useSeatsRefresh-DgFy-Ph4.js.map +0 -1
  544. package/dist/core/web/public/next/assets/useVerseTranscript-CDYrrWOO.js +0 -2
  545. package/dist/core/web/public/next/assets/verse-icons-F9VwX07_.js +0 -2
  546. package/dist/core/web/public/next/assets/verse-icons-F9VwX07_.js.map +0 -1
  547. package/dist/core/web/public/next/assets/verse-model-DyCwZF-M.js +0 -2
  548. package/dist/core/web/public/next/assets/verse-model-DyCwZF-M.js.map +0 -1
  549. package/dist/core/web/public/next/assets/verse-store-b_Lek_c5.js +0 -3
  550. package/dist/core/web/public/next/assets/verse-store-b_Lek_c5.js.map +0 -1
  551. package/dist/core/web/public/next/assets/verse-ui-store-62DxpVHS.js +0 -3
  552. package/dist/core/web/public/next/assets/verse-ui-store-62DxpVHS.js.map +0 -1
  553. package/dist/core/web/public/next/assets/viewport-nTubFCwf.js +0 -2
  554. package/dist/core/web/public/next/assets/viewport-nTubFCwf.js.map +0 -1
  555. package/dist/core/web/public/next/assets/warmup-HG5vYbsN.js +0 -3
  556. package/dist/core/web/public/next/assets/workbench-types-DzN-5trg.js +0 -2
  557. package/dist/core/web/public/next/assets/workbench-types-DzN-5trg.js.map +0 -1
  558. /package/dist/core/web/public/next/assets/{BurnDown-BuLMsJMx.css → StatTile-BuLMsJMx.css} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["../../../../../../src/web-ui/routes/verse/cloud/CloudLaneChip.tsx","../../../../../../src/web-ui/routes/verse/fleet/FleetCards.tsx","../../../../../../src/web-ui/routes/verse/fleet/RepoTable.tsx","../../../../../../src/web-ui/routes/verse/sections/FleetSection.tsx"],"sourcesContent":["/**\n * routes/verse/cloud/CloudLaneChip.tsx — \"Cloud · N running\" at the end of\n * Fleet's lanes row (3.11 unit C3; mounted by fleet/FleetCards.tsx\n * LanesStrip). Styled by the lanes row's own classes, which it passes in,\n * so it reads as one more lane.\n *\n * N counts tasks queued, launching or running — sessions Verse started that\n * have not delivered a PR yet. A server without the cloud lane renders no\n * chip at all: the lanes row is not the place to say \"not in this build\".\n */\nimport { useQuery, useRefetch } from '../../../data/hooks.js';\nimport { usePollWhileVisible } from '../shell/section-visibility.js';\nimport { inFlightCount } from './cloud-model.js';\nimport { CLOUD_POLL_MS, cloudQuery } from './cloud-queries.js';\nimport styles from './cloud.module.css';\n\nexport interface CloudLaneChipClasses {\n lane?: string;\n name?: string;\n sep?: string;\n slots?: string;\n}\n\nexport function CloudLaneChip({ classes = {} }: { classes?: CloudLaneChipClasses }) {\n const read = useQuery(cloudQuery, { freshMs: 15_000 });\n const refetch = useRefetch(cloudQuery);\n usePollWhileVisible(refetch, CLOUD_POLL_MS);\n const overview = read.data?.value ?? null;\n if (!overview) return null;\n const running = inFlightCount(overview.tasks);\n const title = `Claude Code cloud sessions Verse launched that have not delivered a PR yet. ${overview.budget.sessionsToday} of ${overview.budget.budget.maxSessionsPerDay} sessions used today.`;\n return (\n <li className={`${classes.lane ?? ''} ${styles.laneChip}`} data-active={running > 0 || undefined} title={title} aria-label={`Cloud: ${running} running`}>\n <span className={classes.name}>Cloud</span>\n <span className={classes.sep} aria-hidden=\"true\">\n {' · '}\n </span>\n <span className={classes.slots}>{running} running</span>\n </li>\n );\n}\n","/**\n * routes/verse/fleet/FleetCards.tsx — the Fleet surface's cards (SPEC-310B §6,\n * SPEC-310C §5; unit C7): lanes, the live swimlane, the gate funnel with its\n * refusal reasons, \"why this seat\", the parked Gantt and Overnight.\n *\n * Every card takes an OptionalRead and draws the designed state for each way\n * a source can be missing (not landed, unrecognised, dark) — never empty axes.\n */\nimport type { FleetLaneState, FleetLiveSnapshotV1 } from '../../../../core/fleet/fleet-types.js';\nimport type { SeatDecision } from '../../../../core/routing/types.js';\nimport type { BudgetView } from '../../../../core/routing/policy.js';\nimport { BarStack } from '../../../components/charts/BarStack.js';\nimport type { ChartStatus } from '../../../components/charts/ChartFrame.js';\nimport { Funnel } from '../../../components/charts/Funnel.js';\nimport { Swimlane } from '../../../components/charts/Swimlane.js';\nimport { EngineMarker } from '../../../components/primitives/Tag.js';\nimport { formatRelative } from '../autonomy/format.js';\nimport type { OptionalFleetRead } from '../autonomy/fleet-contract.js';\nimport type { OvernightStatus } from '../autonomy/overnight-contract.js';\nimport { describeStopRule } from '../autonomy/overnight-model.js';\nimport { CloudLaneChip } from '../cloud/CloudLaneChip.js';\nimport { Card, CardNote, MicroLabel } from '../command/Surface.js';\nimport type { OptionalRead } from '../command/surface-data.js';\nimport { fleetDarkStatus } from './dark-since.js';\nimport { LANE_ENGINE, LANE_LABEL, funnelStages, laneChipText, laneNotes, laneReason, laneRows, latestDecision, parkedGantt, refusalStack, runTone } from './live-model.js';\nimport { asSentence, decisionSummary, describeEligibleAgain, eligibleAgain, heldBackText } from './why-seat-model.js';\nimport styles from './fleet.module.css';\n\nconst HOUR = 3_600_000;\n\n/**\n * The shared \"is there a fleet to draw at all\" decision for every chart card.\n * Dark reads THE dark-since instant (`fleetDarkStatus`), as the viewer's local\n * day — the same day Command's verdict line names — and no day at all when\n * the server does not know one.\n */\nexport function fleetStatus(read: OptionalRead<FleetLiveSnapshotV1> | undefined, empty: string, hasData: boolean): ChartStatus {\n if (!read) return { kind: 'loading' };\n const live = read.value;\n if (!live) return { kind: 'unknown', reason: read.reason ?? 'the live fleet view did not answer.' };\n if (live.state === 'dark' && !hasData) return fleetDarkStatus(live);\n return hasData ? { kind: 'ready' } : { kind: 'empty', message: empty };\n}\n\n// ---------------------------------------------------------------------------\n// Lanes strip + live swimlane\n// ---------------------------------------------------------------------------\n\n/** \"Local · off\" — the chip is the lane and its slots; its why is one line below the strip (and its title). */\nfunction LaneChip({ lane }: { lane: FleetLaneState }) {\n const text = laneChipText(lane);\n return (\n <li className={styles.lane} data-off={lane.slots === 0 || undefined} title={laneReason(lane) ?? undefined}>\n <EngineMarker engine={LANE_ENGINE[lane.lane]} />\n <span className={styles.laneName}>{text.name}</span>\n <span className={styles.laneSep} aria-hidden=\"true\">\n {' · '}\n </span>\n <span className={styles.laneSlots}>{text.slots}</span>\n </li>\n );\n}\n\nexport function LanesStrip({ live }: { live: FleetLiveSnapshotV1 | null }) {\n if (!live || live.lanes.length === 0) return null;\n const notes = laneNotes(live.lanes);\n return (\n <div className={styles.laneStrip}>\n <ul className={styles.lanes} aria-label=\"Lanes: busy of slots\">\n {live.lanes.map((l) => (\n <LaneChip key={l.lane} lane={l} />\n ))}\n <CloudLaneChip classes={{ lane: styles.lane, name: styles.laneName, sep: styles.laneSep, slots: styles.laneSlots }} />\n </ul>\n {notes.length > 0 ? (\n <ul className={styles.laneNotes} aria-label=\"Why lanes are limited\">\n {notes.map((n) => (\n <li key={n.lanes.join(',')}>\n {n.all ? null : <span className={styles.laneNoteLanes}>{n.lanes.map((l) => LANE_LABEL[l]).join(', ')}: </span>}\n {asSentence(n.reason)}\n </li>\n ))}\n </ul>\n ) : null}\n </div>\n );\n}\n\nexport function LiveSwimlane({ read, now, hours }: { read: OptionalRead<FleetLiveSnapshotV1> | undefined; now: number; hours: number }) {\n const live = read?.value ?? null;\n const from = now - hours * HOUR;\n const lanes = live ? laneRows(live.runs, from, now, { includeParked: false }) : [];\n return (\n <Swimlane\n title=\"Live fleet\"\n description={`Lanes × slots, last ${hours} h · bars coloured by phase or outcome · outlines are queued`}\n status={fleetStatus(read, `Nothing ran in the last ${hours} hours.`, lanes.length > 0)}\n lanes={lanes}\n from={from}\n to={now}\n now={now}\n toneOf={runTone}\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// Gate funnel + refusal reasons\n// ---------------------------------------------------------------------------\n\nexport function GateFunnelCards({ read }: { read: OptionalRead<FleetLiveSnapshotV1> | undefined }) {\n const live = read?.value ?? null;\n const funnel = live?.funnel ?? null;\n const stages = funnelStages(funnel);\n const refusals = refusalStack(funnel);\n const window = funnel ? `${new Date(funnel.from).toLocaleDateString('en-US', { month: 'short', day: 'numeric' })} – ${new Date(funnel.to).toLocaleDateString('en-US', { month: 'short', day: 'numeric' })}` : undefined;\n return (\n <div className={styles.stack}>\n <Funnel\n title=\"Gate funnel\"\n description={window ? `Proposals through G0–G7, ${window}` : 'Proposals through the merge gates G0–G7'}\n status={fleetStatus(read, 'No proposal reached the gates in this window.', stages.length > 0)}\n stages={stages}\n />\n <BarStack\n title=\"Refusals by gate\"\n description={refusals.total ? `${refusals.total} refusals · top reasons keep their colour` : 'Why proposals stopped'}\n status={fleetStatus(read, 'Nothing was refused in this window.', refusals.total > 0)}\n categories={refusals.categories}\n segments={refusals.segments}\n values={refusals.values}\n height={180}\n />\n </div>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Why this seat\n// ---------------------------------------------------------------------------\n\nfunction seatLabel(view: BudgetView | null, seatId: string): { label: string; engine: 'claude' | 'codex' | 'grok' | 'local' | null } {\n const info = view?.seatInfo.find((s) => s.seatId === seatId);\n return { label: info?.label ?? seatId, engine: info?.engine ?? null };\n}\n\nexport function DecisionView({ decision, view, now }: { decision: SeatDecision; view: BudgetView | null; now?: number }) {\n const chosen = decision.seatId ? seatLabel(view, decision.seatId) : null;\n return (\n <div className={styles.decision}>\n <p className={styles.decisionLead}>\n {chosen ? (\n <>\n {chosen.engine ? <EngineMarker engine={chosen.engine} /> : null}\n <strong>{chosen.label}</strong>\n </>\n ) : (\n <strong>No seat</strong>\n )}\n <span className={styles.mode}>{decision.mode}</span>\n </p>\n <p className={styles.decisionWhy}>{decisionSummary(decision)}</p>\n {decision.candidates.length > 1 ? (\n <div>\n <MicroLabel>Then</MicroLabel>\n <ol className={styles.candidates}>\n {decision.candidates.slice(decision.seatId ? 1 : 0).map((id) => (\n <li key={id}>{seatLabel(view, id).label}</li>\n ))}\n </ol>\n </div>\n ) : null}\n {decision.exclusions.length ? (\n <div>\n <MicroLabel>Held back</MicroLabel>\n <ul className={styles.exclusions} aria-label=\"Held back seats\">\n {decision.exclusions.map((x) => (\n <li key={x.seatId}>\n <span className={styles.excluded}>{seatLabel(view, x.seatId).label}</span>\n <span className={styles.excludedWhy}>{heldBackText(x)}</span>\n <span className={styles.excludedWhen}>eligible again: {describeEligibleAgain(eligibleAgain(x), now)}</span>\n </li>\n ))}\n </ul>\n </div>\n ) : null}\n </div>\n );\n}\n\nexport function WhySeatCard({ read, preview, view, now }: { read: OptionalRead<FleetLiveSnapshotV1> | undefined; preview: SeatDecision | null; view: BudgetView | null; now?: number }) {\n const latest = latestDecision(read?.value ?? null);\n return (\n <Card\n title=\"Why this seat\"\n caption={latest ? `Latest dispatch: ${latest.run.title} (${formatRelative(latest.run.phaseStartedAt ?? latest.run.startedAt)})` : preview ? 'The next medium autonomous task would go to…' : undefined}\n >\n {latest ? (\n <DecisionView decision={latest.decision} view={view} now={now} />\n ) : preview ? (\n <DecisionView decision={preview} view={view} now={now} />\n ) : (\n <CardNote tone=\"unknown\">No routing decision to show — nothing was dispatched, and the router preview did not answer.</CardNote>\n )}\n </Card>\n );\n}\n\n// ---------------------------------------------------------------------------\n// Parked Gantt\n// ---------------------------------------------------------------------------\n\nexport function ParkedCard({ read, now }: { read: OptionalRead<FleetLiveSnapshotV1> | undefined; now: number }) {\n const live = read?.value ?? null;\n const gantt = live ? parkedGantt(live.runs, now) : { lanes: [], from: now - HOUR, to: now + 2 * HOUR, unknownRelease: 0 };\n return (\n <Swimlane\n title=\"Parked\"\n description=\"Waiting for a seat to free up — each bar ends when it should\"\n caveat={gantt.unknownRelease ? `${gantt.unknownRelease} item${gantt.unknownRelease === 1 ? ' has' : 's have'} no known release time; ${gantt.unknownRelease === 1 ? 'it runs' : 'they run'} to the right edge.` : undefined}\n status={fleetStatus(read, 'Nothing is parked.', gantt.lanes.length > 0)}\n lanes={gantt.lanes}\n from={gantt.from}\n to={gantt.to}\n now={now}\n toneOf={runTone}\n formatTick={(ms) => new Date(ms).toLocaleString('en-US', { weekday: 'short', hour: 'numeric' })}\n />\n );\n}\n\n// ---------------------------------------------------------------------------\n// Overnight\n// ---------------------------------------------------------------------------\n\nexport function OvernightCard({ read, onOpenAdvanced }: { read: OptionalFleetRead<OvernightStatus> | undefined; onOpenAdvanced: () => void }) {\n const status = read?.value ?? null;\n const run = status?.run ?? null;\n return (\n <Card\n title=\"Overnight\"\n caption={status ? (status.armed ? 'Armed' : 'Not armed') : undefined}\n actions={\n <button type=\"button\" className={styles.link} onClick={onOpenAdvanced}>\n Arm or stop in Advanced\n </button>\n }\n >\n {!read ? (\n <p className={styles.muted} aria-busy=\"true\">Reading the overnight lane…</p>\n ) : !status ? (\n <CardNote tone=\"unknown\">{read.reason ?? 'The overnight lane did not answer.'}</CardNote>\n ) : !status.armed && !run ? (\n <CardNote>Nothing armed. The fleet runs on its normal schedule; arm an unattended run from Advanced when you walk away.</CardNote>\n ) : (\n <div className={styles.overnight}>\n {run?.stopRule ? <p className={styles.overnightLead}>{describeStopRule(run.stopRule)}</p> : null}\n <dl className={styles.facts}>\n <div>\n <dt>Started</dt>\n <dd>{run?.startedAt ? formatRelative(run.startedAt) : '—'}</dd>\n </div>\n <div>\n <dt>Iterations</dt>\n <dd>{run?.iterationsDone ?? '—'}</dd>\n </div>\n <div>\n <dt>Merged</dt>\n <dd>{run ? run.merged.length : '—'}</dd>\n </div>\n <div>\n <dt>Discarded</dt>\n <dd>{run ? run.discarded.length : '—'}</dd>\n </div>\n </dl>\n {run?.activity ? <p className={styles.muted}>Now: {run.activity}</p> : null}\n {run && run.discarded.length ? (\n <ul className={styles.discarded} aria-label=\"Discarded work\">\n {run.discarded.slice(0, 3).map((d) => (\n <li key={d.id}>\n <span className={styles.discardTitle}>{d.title}</span>\n <span className={styles.discardWhy}>{d.reason}</span>\n </li>\n ))}\n </ul>\n ) : null}\n </div>\n )}\n </Card>\n );\n}\n","/**\n * routes/verse/fleet/RepoTable.tsx — one row per enrolled repo (SPEC-310C §5\n * Fleet \"Repo table: stage, last merge, green% sparkline, holds,\n * pause/resume\"; unit C7).\n *\n * Pause sets an owner-hold as Mason; Resume clears every active hold (or the\n * one a Needs-you item names). Both confirm first — a pause stops new work\n * in a repo, a resume can lift a quarantine early — then take the token.\n * At 375 px the table becomes one card per repo (a 7-column table does not\n * fit a phone, and a horizontal scroll hides the action).\n */\nimport type { FleetLiveSnapshotV1, FleetMirrorSummary, FleetRepoRow, RepoHold } from '../../../../core/fleet/fleet-types.js';\nimport { Sparkline } from '../../../components/charts/Sparkline.js';\nimport { Button } from '../../../components/primitives/Button.js';\nimport { formatRelative } from '../autonomy/format.js';\nimport type { SurfaceActions } from '../command/actions.js';\nimport { anchorId } from '../command/nav.js';\nimport { Card, CardNote } from '../command/Surface.js';\nimport { postFleetLive, type OptionalRead } from '../command/surface-data.js';\nimport styles from './fleet.module.css';\n\nconst HOLD_WORD: Record<RepoHold['kind'], string> = {\n quarantine: 'Quarantined',\n 'owner-hold': 'On hold (you)',\n 'leader-pause': 'Paused by Leader',\n cooldown: 'Cooling down',\n};\n\nexport function holdText(hold: RepoHold, now: number): string {\n const until = hold.until ? Date.parse(hold.until) : NaN;\n const left = Number.isFinite(until) ? Math.max(0, until - now) : null;\n const tail = left === null ? 'until resumed' : left < 3_600_000 ? `${Math.ceil(left / 60_000)}m left` : `${Math.round(left / 3_600_000)}h left`;\n return `${HOLD_WORD[hold.kind]} · ${tail}`;\n}\n\nfunction shortRepo(repo: string): string {\n return repo.includes('/') ? repo.split('/')[1]! : repo;\n}\n\nfunction StageBadge({ row }: { row: FleetRepoRow }) {\n if (row.stage === null) return <span className={styles.stage} data-stage=\"none\">Not in grant</span>;\n return (\n <span className={styles.stage} data-stage={row.stage}>\n {row.stage === 'merge' ? 'Merge' : 'Propose'}\n {row.enforcement === 'local' ? <span className={styles.stageNote}> · local checks</span> : null}\n </span>\n );\n}\n\nfunction RepoAction({ row, actions }: { row: FleetRepoRow; actions: SurfaceActions }) {\n const disabled = actions.busy || actions.readOnly;\n if (row.holds.length) {\n return (\n <Button\n size=\"sm\"\n variant=\"subtle\"\n disabled={disabled}\n aria-label={`Resume ${row.repo}`}\n onClick={() =>\n actions.act(() => postFleetLive({ action: 'resume-repo', repo: row.repo }), `Resume ${row.repo}`, {\n confirm: {\n title: `Resume ${shortRepo(row.repo)}?`,\n body: `Clears ${row.holds.map((h) => HOLD_WORD[h.kind].toLowerCase()).join(' and ')}. New fleet work can start there on the next tick.`,\n confirmLabel: 'Resume',\n },\n })\n }\n >\n Resume\n </Button>\n );\n }\n if (row.stage === null) return null;\n return (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={disabled}\n aria-label={`Pause ${row.repo}`}\n onClick={() =>\n actions.act(() => postFleetLive({ action: 'pause-repo', repo: row.repo, reason: 'Paused by Mason from the Fleet surface' }), `Pause ${row.repo}`, {\n confirm: {\n title: `Pause ${shortRepo(row.repo)}?`,\n body: 'No new fleet work starts there until you resume it. Runs already in flight finish and are watched as usual.',\n confirmLabel: 'Pause repo',\n destructive: true,\n },\n })\n }\n >\n Pause\n </Button>\n );\n}\n\nfunction GreenCell({ row }: { row: FleetRepoRow }) {\n return (\n <span className={styles.green}>\n <span className={styles.greenValue}>{row.greenPct7d === null ? '—' : `${Math.round(row.greenPct7d)}%`}</span>\n <Sparkline points={row.greenTrend} width={64} height={18} ariaLabel={`${row.repo} post-merge green, 14 days`} describe={(v) => `${Math.round(v)}%`} />\n </span>\n );\n}\n\nfunction Holds({ row, now }: { row: FleetRepoRow; now: number }) {\n if (!row.holds.length) return <span className={styles.muted}>—</span>;\n return (\n <span className={styles.holds}>\n {row.holds.map((h) => (\n <span key={h.kind} className={styles.hold} data-kind={h.kind} title={h.reason}>\n {holdText(h, now)}\n </span>\n ))}\n </span>\n );\n}\n\n/**\n * The fleet's own mirror clones, apart from the repo rows. WHY separate: a\n * mirror is the fleet's working copy of a repo already listed above, so\n * counting it as a row double-counts the repo (and its pause would not pause\n * the real one). `undefined` = an older server that does not report mirrors\n * (say nothing); `null` = the enrollment registry could not be read (say so —\n * unknown is never \"none\").\n */\nexport function mirrorsText(mirrors: FleetMirrorSummary | null | undefined): string | null {\n if (mirrors === undefined) return null;\n if (mirrors === null) return 'Fleet mirrors: unknown — the enrollment registry could not be read.';\n if (mirrors.count === 0) return 'Fleet mirrors: none yet — the fleet clones a repo the first time it works on it.';\n const shown = mirrors.repos.slice(0, 6).join(', ');\n const more = mirrors.repos.length > 6 ? ` and ${mirrors.repos.length - 6} more` : '';\n return `Fleet mirrors: ${mirrors.count} working ${mirrors.count === 1 ? 'copy' : 'copies'}${shown ? ` (${shown}${more})` : ''} — the fleet's own clones of the repos above, not repos of their own.`;\n}\n\nconst today = (row: FleetRepoRow) => (row.mergesToday === null ? '—' : `${row.mergesToday}${row.maxMergesPerDay !== null ? ` / ${row.maxMergesPerDay}` : ''}`);\n\nexport function RepoTable({ read, actions, now, compact }: { read: OptionalRead<FleetLiveSnapshotV1> | undefined; actions: SurfaceActions; now: number; compact: boolean }) {\n const live = read?.value ?? null;\n const rows = live?.repos ?? [];\n return (\n <Card title=\"Repositories\" caption={live ? `${rows.length} enrolled · stage is what the grant and rollout allow right now` : undefined}>\n {!read ? (\n <p className={styles.muted} aria-busy=\"true\">Reading repositories…</p>\n ) : !live ? (\n <CardNote tone=\"unknown\">{read.reason ?? 'The live fleet view did not answer.'}</CardNote>\n ) : rows.length === 0 ? (\n <CardNote>No repositories are enrolled.</CardNote>\n ) : compact ? (\n <ul className={styles.repoCards}>\n {rows.map((row) => (\n <li key={row.repo} className={styles.repoCard} id={anchorId(`repo-${row.repo}`)}>\n <div className={styles.repoCardHead}>\n <span className={styles.repoName}>{row.repo}</span>\n <RepoAction row={row} actions={actions} />\n </div>\n <dl className={styles.facts}>\n <div><dt>Stage</dt><dd><StageBadge row={row} /></dd></div>\n <div><dt>Last merge</dt><dd>{row.lastMergeAt ? formatRelative(row.lastMergeAt) : '—'}</dd></div>\n <div><dt>Today</dt><dd>{today(row)}</dd></div>\n <div><dt>Green 7d</dt><dd><GreenCell row={row} /></dd></div>\n </dl>\n <Holds row={row} now={now} />\n </li>\n ))}\n </ul>\n ) : (\n <div className={styles.tableWrap}>\n <table className={styles.table}>\n <caption className=\"visually-hidden\">Enrolled repositories</caption>\n <thead>\n <tr>\n <th scope=\"col\">Repository</th>\n <th scope=\"col\">Stage</th>\n <th scope=\"col\">Last merge</th>\n <th scope=\"col\" className={styles.num}>Today</th>\n <th scope=\"col\">Post-merge green · 14d</th>\n <th scope=\"col\" className={styles.num}>Open PRs</th>\n <th scope=\"col\">Holds</th>\n <th scope=\"col\"><span className=\"visually-hidden\">Action</span></th>\n </tr>\n </thead>\n <tbody>\n {rows.map((row) => (\n <tr key={row.repo} id={anchorId(`repo-${row.repo}`)} data-held={row.holds.length > 0 || undefined}>\n <th scope=\"row\" className={styles.repoName}>{row.repo}</th>\n <td><StageBadge row={row} /></td>\n <td>{row.lastMergeAt ? formatRelative(row.lastMergeAt) : '—'}</td>\n <td className={styles.num}>{today(row)}</td>\n <td><GreenCell row={row} /></td>\n <td className={styles.num}>{row.openFleetPrs ?? '—'}</td>\n <td><Holds row={row} now={now} /></td>\n <td className={styles.actionCell}><RepoAction row={row} actions={actions} /></td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n {live && mirrorsText(live.mirrors) ? <p className={styles.muted}>{mirrorsText(live.mirrors)}</p> : null}\n </Card>\n );\n}\n","/**\n * routes/verse/sections/FleetSection.tsx — ⌘2 Fleet (SPEC-310B §6,\n * SPEC-310C §5; unit C7). What is running where, why that seat, what is\n * waiting, and per-repo control.\n *\n * Live swimlane by lane × phase (12)\n * Gate funnel + refusal reasons (7) | Why this seat (5)\n * Parked Gantt (7) | Overnight (5)\n * Repo table: stage, last merge, green% sparkline, holds, pause/resume (12)\n * ▸ Advanced — the eleven legacy Autonomy panels, fetched only when opened\n *\n * At 375 px: one column in that order; the repo table becomes cards.\n * The live view polls every 5 s while Fleet is the visible surface.\n */\nimport { Suspense, lazy, useId, useState } from 'react';\nimport { RefreshIndicator } from '../../../components/primitives/RefreshIndicator.js';\nimport { IconChevronRight } from '../../../components/primitives/icons.js';\nimport { useQuery, useRefetch } from '../../../data/hooks.js';\nimport { overnightQuery } from '../autonomy/overnight-queries.js';\nimport { useNow } from '../autonomy/use-ticker.js';\nimport { budgetPreviewQuery, budgetQuery } from '../budget/budget-queries.js';\nimport { ActionStatus, useSurfaceActions } from '../command/actions.js';\nimport { Cell, Surface } from '../command/Surface.js';\nimport { fleetLiveQuery } from '../command/surface-data.js';\nimport { usePollWhileVisible } from '../shell/section-visibility.js';\nimport { useViewport } from '../shell/viewport.js';\nimport { GateFunnelCards, LanesStrip, LiveSwimlane, OvernightCard, ParkedCard, WhySeatCard } from '../fleet/FleetCards.js';\nimport { RepoTable } from '../fleet/RepoTable.js';\nimport styles from '../fleet/fleet.module.css';\n\nexport const FLEET_POLL_MS = 5_000;\nexport const FLEET_SLOW_POLL_MS = 30_000;\n\n// The legacy cockpit is ~74 KB of panels: its own chunk, loaded on open.\nconst FleetAdvanced = lazy(() => import('../fleet/Advanced.js').then((m) => ({ default: () => <m.FleetAdvanced embedded /> })));\n\nexport function FleetSection() {\n const { compact } = useViewport();\n const fleet = useQuery(fleetLiveQuery);\n const overnight = useQuery(overnightQuery);\n const budget = useQuery(budgetQuery, { freshMs: 15_000 });\n const preview = useQuery(budgetPreviewQuery, { freshMs: 15_000 });\n const refetchFleet = useRefetch(fleetLiveQuery);\n const refetchOvernight = useRefetch(overnightQuery);\n const refetchPreview = useRefetch(budgetPreviewQuery);\n usePollWhileVisible(refetchFleet, FLEET_POLL_MS);\n usePollWhileVisible(() => {\n refetchOvernight();\n refetchPreview();\n }, FLEET_SLOW_POLL_MS);\n\n const now = useNow(15_000);\n const actions = useSurfaceActions();\n const [advancedOpen, setAdvancedOpen] = useState(false);\n const advancedId = useId();\n const live = fleet.data?.value ?? null;\n\n function openAdvanced(): void {\n setAdvancedOpen(true);\n requestAnimationFrame(() => document.getElementById(advancedId)?.scrollIntoView?.({ block: 'start', behavior: 'smooth' }));\n }\n\n return (\n <Surface\n title=\"Fleet\"\n actions={fleet.status === 'refreshing' ? <RefreshIndicator /> : null}\n lead={\n <>\n <ActionStatus actions={actions} />\n <LanesStrip live={live} />\n </>\n }\n >\n <Cell span={12}>\n <LiveSwimlane read={fleet.data} now={now} hours={compact ? 6 : 12} />\n </Cell>\n <Cell span={7}>\n <GateFunnelCards read={fleet.data} />\n </Cell>\n <Cell span={5}>\n <WhySeatCard read={fleet.data} preview={preview.data ?? null} view={budget.data ?? null} now={now} />\n </Cell>\n <Cell span={7}>\n <ParkedCard read={fleet.data} now={now} />\n </Cell>\n <Cell span={5}>\n <OvernightCard read={overnight.data} onOpenAdvanced={openAdvanced} />\n </Cell>\n <Cell span={12}>\n <RepoTable read={fleet.data} actions={actions} now={now} compact={compact} />\n </Cell>\n <Cell span={12}>\n <div className={styles.advanced}>\n <button\n type=\"button\"\n className={styles.disclosure}\n aria-expanded={advancedOpen}\n aria-controls={advancedId}\n onClick={() => setAdvancedOpen((o) => !o)}\n >\n <IconChevronRight className={styles.chevron} width={14} height={14} aria-hidden=\"true\" />\n Advanced\n <span className={styles.disclosureNote}>daemon, overnight, local runtime, caps, scope, activity, safety, goals</span>\n </button>\n <div id={advancedId} hidden={!advancedOpen}>\n {advancedOpen ? (\n <Suspense fallback={<p className={styles.muted} aria-busy=\"true\">Loading the advanced panels…</p>}>\n <FleetAdvanced />\n </Suspense>\n ) : null}\n </div>\n </div>\n </Cell>\n {actions.dialogs}\n </Surface>\n );\n}\n"],"file":"FleetSection-ViAb549H.js"}
@@ -1,2 +0,0 @@
1
- import{a as e,n as t,s as n}from"./index-BVxOlseC.js";import{D as r,F as i,I as a,L as o,M as s,N as c,c as l,f as ee,i as u,l as d,m as f,n as te,o as ne,r as p,s as m,t as h,u as re,v as ie}from"./useChartWidth-owwodNVz.js";import{c as g,p as _}from"./colors-BZ3a9wFf.js";import{r as v,t as y}from"./format-DKrNjdwD.js";var b=n(e(),1),x=t(),S=14,C=26,w=8,T=24,E=2;function D({title:e,description:t,caveat:n,status:s,categories:ie,segments:g,values:D,normalize:O=!1,height:k=200,width:A,formatValue:j,ariaLabel:ae}){let M=j??y,N=(0,b.useRef)(null),P=h(N,A),F=re(),[I,L]=(0,b.useState)(null),oe=(0,b.useId)(),se=_((0,b.useId)()),R=g.map(e=>e.color),z=ie.map((e,t)=>{let n=D[t]??g.map(()=>null);return{label:e,values:n,stack:i(n)}}),B=z.some(e=>!e.stack.unknown),V=Math.max(0,...z.map(e=>e.stack.total)),ce=z.some(e=>e.stack.incomplete),le=s??(z.length===0||B&&V===0&&!ce?{kind:`empty`}:B?{kind:`ready`}:{kind:`unknown`}),ue=z.flatMap(e=>e.values.filter(e=>e!==null&&Number.isFinite(e))),H=O?{ticks:[0,.25,.5,.75,1],labels:[0,.25,.5,.75,1].map(e=>v(e))}:f(0,V,{count:4,integer:ee(ue),format:j}),U=H.ticks,de=U[U.length-1],W=o(H.labels,28,60,F),G=Math.max(40,P-W-w),K=k-S-C,q=z.length?G/z.length:G,J=Math.max(2,Math.min(T,q*.66)),Y=r(0,de,S+K,S),X=e=>W+q*e+(q-J)/2,fe=a(z.length,Math.max(2,Math.floor(G/(64*F)))),Z=e=>`${e.stack.incomplete&&!e.stack.unknown?`≥ `:``}${e.stack.unknown?`—`:M(e.stack.total)}`;function pe(e){if(z.length===0)return;let t=I??z.length-1,n=e.key===`ArrowLeft`?t-1:e.key===`ArrowRight`?t+1:e.key===`Home`?0:e.key===`End`?z.length-1:null;n!==null&&(e.preventDefault(),L(Math.max(0,Math.min(z.length-1,n))))}let Q=z.reduce((e,t)=>!t.stack.unknown&&(!e||t.stack.total>e.stack.total)?t:e,null),me=ae??`${e}: ${z.length} columns of ${g.map(e=>e.label).join(`, `)}.`+(Q?` Highest: ${Q.label} with ${Z(Q)}.`:``),he=[{key:`label`,label:`Category`,render:e=>e.label},...g.map((e,t)=>({key:e.id,label:e.label,numeric:!0,render:e=>e.values[t]===null||e.values[t]===void 0?`—`:M(e.values[t])})),{key:`__total`,label:`Total`,numeric:!0,render:Z}],$=I===null?void 0:z[I];return(0,x.jsx)(te,{title:e,description:t,caveat:n,status:le,table:(0,x.jsx)(d,{caption:e,columns:he,rows:z,rowKey:(e,t)=>`${t}:${e.label}`}),footer:(0,x.jsx)(p,{items:[...g.map((e,t)=>({label:e.label,color:R[t]})),...z.some(e=>e.stack.unknown)?[{label:`no data`,kind:`hatch`}]:[]]}),children:(0,x.jsxs)(`div`,{ref:N,className:`${l.plotWrap} ${l.focusable}`,tabIndex:0,role:`group`,"aria-label":`${e}. Use the left and right arrow keys to read each column.`,"aria-describedby":oe,onFocus:()=>L(e=>e??(z.length?z.length-1:null)),onBlur:()=>L(null),onKeyDown:pe,children:[(0,x.jsxs)(`svg`,{className:l.svg,width:P,height:k,viewBox:`0 0 ${P} ${k}`,role:`img`,"aria-label":me,children:[(0,x.jsx)(`defs`,{children:(0,x.jsx)(ne,{id:se})}),U.map((e,t)=>(0,x.jsxs)(`g`,{children:[(0,x.jsx)(`line`,{className:l.grid,x1:W,x2:W+G,y1:Y(e),y2:Y(e)}),(0,x.jsx)(`text`,{className:l.tick,x:W-6,y:Y(e),dy:`0.32em`,textAnchor:`end`,children:H.labels[t]})]},e)),z.map((e,t)=>{let n=X(t),r=O&&e.stack.total||1;if(e.stack.unknown)return(0,x.jsx)(`rect`,{"data-unknown":`true`,className:l.unknownMark,fill:`url(#${se})`,x:n+.5,y:S+K-12.5,width:Math.max(1,J-1),height:12,rx:2},t);let i=e.stack.segments[e.stack.segments.length-1];return(0,x.jsxs)(`g`,{"data-column":t,opacity:I!==null&&I!==t?.55:1,children:[e.stack.segments.map(e=>{let t=Y(e.y1/r),a=Y(e.y0/r),o=e===i,s=Math.max(0,a-t-(o?0:E)),l=o?t:t+E;return o?(0,x.jsx)(`path`,{d:c(n,l,J,s),fill:R[e.index],"data-segment":g[e.index].id},e.index):(0,x.jsx)(`rect`,{x:n,y:l,width:J,height:s,fill:R[e.index],"data-segment":g[e.index].id},e.index)}),e.stack.incomplete?(0,x.jsx)(`rect`,{"data-incomplete":`true`,className:l.noData,x:n,y:Y(e.stack.total/r)-8,width:J,height:6,rx:2}):null]},t)}),(0,x.jsx)(`line`,{className:l.axis,x1:W,x2:W+G,y1:S+K,y2:S+K}),fe.map(e=>(0,x.jsx)(`text`,{className:l.tick,x:X(e)+J/2,y:k-8,textAnchor:`middle`,children:z[e].label},e)),z.map((e,t)=>(0,x.jsx)(`rect`,{className:l.hit,x:W+q*t,y:S,width:q,height:K,onPointerEnter:()=>L(t),onPointerLeave:()=>L(e=>e===t?null:e)},`hit${t}`))]}),(0,x.jsx)(`span`,{id:oe,className:l.srOnly,"aria-live":`polite`,children:$?`${$.label}: ${g.map((e,t)=>`${e.label} ${$.values[t]===null?`no data`:M($.values[t])}`).join(`, `)}; total ${Z($)}`:``}),$&&I!==null?(0,x.jsx)(u,{left:m(X(I)+J/2,P),top:$.stack.unknown?S+K-12:Y(O?1:$.stack.total),title:$.label,rows:[...g.map((e,t)=>({key:e.id,label:e.label,value:$.values[t]===null||$.values[t]===void 0?null:M($.values[t]),color:R[t]})),{key:`__t`,label:`Total`,value:$.stack.unknown?null:Z($)}]}):null]})})}var O=20,k=480;function A(e,t){return t===0?``:e.ofPrevious===null?`— of previous`:`${v(e.ofPrevious,+(e.ofPrevious<.1&&e.ofPrevious>0))} of previous`}function j({title:e,description:t,caveat:n,status:r,stages:i,width:a,color:o=g,formatValue:c=y,ariaLabel:ee}){let u=(0,b.useRef)(null),f=h(u,a),ne=ie(i.map(e=>e.value)),p=i.map((e,t)=>({...ne[t],stage:e})),m=i[0]?.value??null,re=r??(i.length===0||m===null?i.length===0?{kind:`empty`}:{kind:`unknown`,reason:`the first stage (${i[0].label}) is unknown`}:m===0?{kind:`empty`,message:`No ${i[0].label.toLowerCase()} in this window.`}:{kind:`ready`}),_=Math.max(0,...i.map(e=>e.value!==null&&Number.isFinite(e.value)?e.value:0)),S=f<k,C=S?0:Math.min(170,Math.round(f*.28)),w=S?150:180,T=Math.max(40,f-C-w),E=S?42:34,D=p.length*E+4,j=ee??`${e}: `+p.map((e,t)=>`${e.stage.label} ${e.value===null?`unknown`:c(e.value)}${t>0?` (${A(e,t)})`:``}`).join(`, `)+`.`;return(0,x.jsx)(te,{title:e,description:t,caveat:n,status:re,table:(0,x.jsx)(d,{caption:e,columns:[{key:`stage`,label:`Stage`,render:e=>e.stage.label},{key:`value`,label:`Count`,numeric:!0,render:e=>e.value===null?`—`:c(e.value)},{key:`prev`,label:`Of previous`,numeric:!0,render:e=>e.ofPrevious===null?`—`:v(e.ofPrevious,1)},{key:`first`,label:`Of first`,numeric:!0,render:e=>e.ofFirst===null?`—`:v(e.ofFirst,1)}],rows:p,rowKey:e=>e.stage.id}),children:(0,x.jsx)(`div`,{ref:u,className:l.plotWrap,children:(0,x.jsx)(`svg`,{className:l.svg,width:f,height:D,viewBox:`0 0 ${f} ${D}`,role:`img`,"aria-label":j,children:p.map((e,t)=>{let n=t*E+(S?18:7),r=e.value===null||!(e.value>0)||_<=0?0:Math.max(3,e.value/_*T),i=n+O/2;return(0,x.jsxs)(`g`,{"data-stage":e.stage.id,children:[(0,x.jsx)(`text`,{className:l.label,x:S?0:C-10,y:S?n-5:i,dy:S?void 0:`0.32em`,textAnchor:S?`start`:`end`,children:e.stage.label}),(0,x.jsx)(`rect`,{"data-role":`track`,className:l.trackEmpty,x:C,y:n,width:T,height:O,rx:4}),e.value===null?(0,x.jsx)(`rect`,{"data-unknown":`true`,className:l.noData,x:C,y:n,width:Math.min(T,48),height:O,rx:4}):r>0?(0,x.jsx)(`path`,{"data-role":`bar`,d:s(C,n,r,O),fill:o}):null,(0,x.jsxs)(`text`,{className:l.labelStrong,x:C+T+10,y:i,dy:`0.32em`,children:[e.value===null?`unknown`:c(e.value),t>0?(0,x.jsx)(`tspan`,{className:l.tick,dx:8,children:A(e,t)}):null]})]},e.stage.id)})})})})}export{D as n,j as t};
2
- //# sourceMappingURL=Funnel-D2u7Wlzc.js.map
@@ -1,2 +0,0 @@
1
- import{a as e,i as t,n,s as r}from"./index-BVxOlseC.js";import{g as i}from"./global-oEl9Qj8u.js";import{a,c as o,s}from"./command-catalog-Bb_PxC5w.js";import{C as c,O as l,h as u}from"./verse-ui-store-62DxpVHS.js";import{A as d,D as f,N as p,j as m}from"./VerseConsoleApp-DTjDpGCd.js";import{u as h}from"./icons-DEQa2rTx.js";import"./verse-icons-F9VwX07_.js";var g=r(e(),1),_=r(t(),1),v={menu:`_menu_bwc3k_3`,pop:`_pop_bwc3k_1`,item:`_item_bwc3k_16`,icon:`_icon_bwc3k_33`,check:`_check_bwc3k_40`,label:`_label_bwc3k_49`,key:`_key_bwc3k_51`,separator:`_separator_bwc3k_57`,groupLabel:`_groupLabel_bwc3k_62`},y=n();function b(e){let t=s(e)?.keys[0];return t?o(t,a()):null}var x=[{value:`system`,label:`Match system`},{value:`light`,label:`Light`},{value:`dark`,label:`Dark`}];function S({open:e,anchorRef:t,onClose:n,compact:r}){let a=p(),o=i(),s=(0,g.useRef)(null),[S,C]=(0,g.useState)(0),[w,T]=(0,g.useState)(null),E=[{key:`settings`,role:`menuitem`,label:`Settings`,icon:(0,y.jsx)(d,{}),shortcut:b(`section.settings`),run:()=>c(`settings`)},{key:`apps`,role:`menuitem`,label:`Apps & Accounts`,icon:(0,y.jsx)(f,{}),run:()=>c(`apps`)},{key:`usage`,role:`menuitem`,label:`Usage`,icon:(0,y.jsx)(m,{}),run:()=>c(`usage`)},{key:`shortcuts`,role:`menuitem`,label:`Keyboard shortcuts`,icon:(0,y.jsx)(h,{}),shortcut:b(`shortcuts.open`),run:()=>u(`shortcuts`)},...r?[]:[{key:`rail`,role:`menuitemcheckbox`,label:`Show rail labels`,shortcut:b(`rail.toggle-labels`),checked:a.railExpanded,run:l,stay:!0}],...x.map(e=>({key:`theme-${e.value}`,role:`menuitemradio`,label:e.label,checked:o.theme===e.value,run:()=>o.set(e.value),stay:!0}))];(0,g.useLayoutEffect)(()=>{if(!e)return;let n=t.current?.getBoundingClientRect();n&&T(r?{left:8,bottom:Math.max(8,window.innerHeight-n.top+8)}:{left:n.right+8,bottom:Math.max(8,window.innerHeight-n.bottom)})},[e,t,r]);let[D,O]=(0,g.useState)(e);e!==D&&(O(e),e&&C(0));let k=(0,g.useRef)(n);k.current=n,(0,g.useEffect)(()=>{if(!e)return;function n(e){let n=e.target;s.current?.contains(n)||t.current?.contains(n)||k.current()}return document.addEventListener(`mousedown`,n),()=>document.removeEventListener(`mousedown`,n)},[e,t]);let A=w!==null;(0,g.useEffect)(()=>{e&&A&&s.current?.querySelector(`[data-index="${S}"]`)?.focus()},[S,e,A]);let j=(0,g.useRef)(!1);if((0,g.useEffect)(()=>{!e&&j.current&&(j.current=!1,t.current?.focus())},[e,t]),!e)return null;function M(e=!0){j.current=e,n()}function N(e){e.run(),e.stay||M(!1)}function P(e){let t=E.length;switch(e.key){case`ArrowDown`:e.preventDefault(),C(e=>(e+1)%t);break;case`ArrowUp`:e.preventDefault(),C(e=>(e-1+t)%t);break;case`Home`:e.preventDefault(),C(0);break;case`End`:e.preventDefault(),C(t-1);break;case`Escape`:e.preventDefault(),e.stopPropagation(),M();break;case`Tab`:M(!1)}}let F=E.findIndex(e=>e.key.startsWith(`theme-`));return(0,_.createPortal)((0,y.jsx)(`div`,{ref:s,role:`menu`,"aria-label":`Settings and more`,className:v.menu,"data-compact":r||void 0,style:w?{left:w.left,bottom:w.bottom}:{visibility:`hidden`},onKeyDown:P,children:E.map((e,t)=>(0,y.jsxs)(`div`,{role:`none`,children:[t===F?(0,y.jsx)(`div`,{role:`separator`,className:v.separator,children:(0,y.jsx)(`span`,{className:v.groupLabel,children:`Theme`})}):null,e.key===`rail`?(0,y.jsx)(`div`,{role:`separator`,className:v.separator}):null,(0,y.jsxs)(`button`,{type:`button`,role:e.role,"data-index":t,tabIndex:t===S?0:-1,"aria-checked":e.role===`menuitem`?void 0:e.checked===!0,className:v.item,onClick:()=>N(e),onMouseMove:()=>t!==S&&C(t),children:[(0,y.jsx)(`span`,{className:v.icon,"aria-hidden":`true`,children:e.role===`menuitem`?e.icon:e.checked?(0,y.jsx)(`span`,{className:v.check}):null}),(0,y.jsx)(`span`,{className:v.label,children:e.label}),e.shortcut?(0,y.jsx)(`kbd`,{className:v.key,children:e.shortcut}):null]})]},e.key))}),document.body)}export{S as GearTray};
2
- //# sourceMappingURL=GearTray-Cb2npoxM.js.map
@@ -1,2 +0,0 @@
1
- import{a as e,n as t,s as n}from"./index-BVxOlseC.js";import{m as r,p as i}from"./global-oEl9Qj8u.js";import{p as a}from"./queries-CYisSAAB.js";import{t as o}from"./RefreshIndicator-CMwSCiz5.js";import{c as s,v as c}from"./colors-BZ3a9wFf.js";import{o as l,s as u}from"./format-DKrNjdwD.js";import{t as d}from"./AreaTrend-CDxrQU4b.js";import{n as f,t as ee}from"./Funnel-D2u7Wlzc.js";import{n as p,r as m,t as h}from"./StepBand-Duz1PUes.js";import{r as g}from"./section-visibility-Yctxu-if.js";import{t as _}from"./use-ticker-D9yi49my.js";import{o as v,r as y}from"./surface-data-DTI7LjvH.js";import{t as b}from"./calendar-day-BxBYHfX1.js";import{i as x}from"./dark-since-DOMvtB_G.js";import{a as S,r as C}from"./Surface-B75lVfzm.js";var w=n(e(),1),T={"oversized-file":`some records are over the size bound`,"invalid-file":`some records are malformed`,"unsafe-file":`some records were refused (symlink, shared or foreign-owned)`,"unsafe-directory":`the store directory is not private`,"io-error":`some records could not be read`,"file-limit":`the store has more records than one read covers`,"invalid-row":`some ledger rows are malformed`,"oversized-row":`some ledger rows are over the size bound`,"duplicate-canonical-realized-merge-identity":`two proposals claim the same merge, so merges are unknown`,"claim-integrity-verdicts-not-persisted":`claim-check verdicts are not recorded per proposal yet`,"scorecard-trend-pending":`the scorecard trend is still being collected`,"scorecard-worker-unavailable":`the scorecard trend could not be read this time`};function E(e){return T[e]??e.replace(/-/g,` `)}function D(e,t){if(t.complete||t.state===`not-recorded`||t.reasons.length===0)return;let n=t.recordsSkipped>0?` (${t.recordsSkipped} skipped)`:``;return`${e} are lower bounds: ${t.reasons.map(E).join(`; `)}${n}.`}function O(e,t){return t.state===`not-recorded`?{kind:`unknown`,reason:`${E(t.reasons[0]??`not recorded`)}.`}:t.state===`degraded`&&t.recordsRead===0?{kind:`unknown`,reason:`${E(t.reasons[0]??`io-error`)}.`}:e.darkSince?{kind:`dark`,since:e.darkSince}:{kind:`ready`}}function k(e){let t=e.funnel,n=D(`Pipeline counts`,e.sources.proposals)??D(`Pipeline counts`,e.sources.decisions);return{stages:[{id:`filed`,label:`Filed`,value:t.filed},{id:`verified`,label:`Verified`,value:t.verified},{id:`passed`,label:`Verification passed`,value:t.verificationPassed},{id:`ship`,label:`Judged ship`,value:t.judgedShip},{id:`merged`,label:`Merged`,value:t.merged}],status:O(e,e.sources.proposals),...n?{caveat:n}:{}}}function A(e,t){return e.days.map(e=>({day:e.day,value:t(e)}))}var j=Object.freeze({minPairs:8,ciLevel:.95,minLiftCiLow:0,maxCostIncreasePct:20,canaryHours:48,rollbackStandardErrors:1,minHeldOutTasks:12});function M(e){let t=[];for(let n=e.length;n-7>=0;n-=7){let r=e.slice(n-7,n),i=e=>{let t=0;for(let n of r){let r=e(n);if(r===null||!Number.isFinite(r))return null;t+=r}return t},a=r[r.length-1].day;t.unshift({end:b(a),endDay:a,merges:i(e=>e.merges.realized),costUsd:i(e=>e.estCostUsd)})}return t}function N(e){return e.merges===null||e.costUsd===null||e.merges===0?null:e.costUsd/e.merges}var P=[{id:`merged`,label:`Merged`,color:c(`success`)},{id:`ship`,label:`Judged ship, not merged`,color:c(`info`)},{id:`rejected`,label:`Judged not worth shipping`,color:c(`warning`)},{id:`unjudged`,label:`Not judged`,color:c(`neutral`)}],F=/[-@](?:\d{8}|\d{4}-\d{2}-\d{2})$/;function I(e,t=18){if(e.length<=t)return e;let n=e.slice(0,t),r=Math.max(n.lastIndexOf(` `),n.lastIndexOf(`-`),n.lastIndexOf(`:`));return r>0?`${e.slice(0,r)}…`:e}function L(e){let t=e.map(e=>{let t=e.model.includes(`/`)?e.model.split(`/`).pop():e.model,n=t.replace(F,``)||t;return[I(n),n,t,e.model,`${e.engine}:${e.model}`]}),n=e.map(()=>0),r=()=>t.map((e,t)=>e[n[t]]),i=t[0]?.length??0;for(let e=1;e<i;e++){let t=r(),i=new Map;for(let e of t)i.set(e,(i.get(e)??0)+1);let a=t.map(e=>i.get(e)>1);if(!a.includes(!0))break;a.forEach((t,r)=>{t&&(n[r]=e)})}let a=new Set;return r().map(e=>{let t=e;for(let n=2;a.has(t);n++)t=`${e} #${n}`;return a.add(t),t})}function R(e,t=6){let n=[...e].filter(e=>e.dispatches>0).sort((e,t)=>t.dispatches-e.dispatches).slice(0,t);return{categories:L(n),values:n.map(e=>{let t=Math.max(0,e.merged);return[t,Math.max(0,e.shipVerdicts-t),Math.max(0,e.judged-e.shipVerdicts),Math.max(0,e.dispatches-e.judged)]}),costPerMerged:n.map(e=>e.costPerMergedUsd),models:n}}var z=Date.UTC(2020,0,1),B=7776e6;function V(e){if(!e)return null;let t=Date.parse(e);return Number.isFinite(t)&&t>=z?t:null}function H(e,t,n){let r=V(t.createdAt);if(r!==null)return r;let i=[...e.versions.filter(e=>e.id!==t.id).flatMap(e=>[e.createdAt,e.adoptedAt,e.rolledBackAt]),...e.experiments.flatMap(e=>[e.startedAt,e.finishedAt])].map(V).filter(e=>e!==null);return i.length>0?Math.min(...i):n-B}function U(e,t){if(!e||e.versions.length===0)return{steps:[],markers:[]};let n=new Map(e.versions.map(e=>[e.id,e])),r=new Map(e.experiments.map(e=>[e.id,e])),i=new Map,a=[],o=[...e.versions].sort((e,t)=>e.seq-t.seq)[0];i.set(o.id,0);let s=H(e,o,t??V(e.generatedAt)??Date.now());a.push({at:s,step:{id:`${o.id}@base`,at:s,value:0,low:0,high:0,label:o.status===`baseline`?`Compiled defaults`:o.id,detail:`baseline`}});let c=e.versions.filter(e=>e.adoptedAt&&e.id!==o.id).sort((e,t)=>Date.parse(e.adoptedAt)-Date.parse(t.adoptedAt));for(let e of c){let t=e.experimentId?r.get(e.experimentId):void 0,s=t?.baseVersionId??e.parentId??o.id,c=i.get(s)??(n.has(s)?null:0),l=t?.lift??null,u=l&&c!=null?c+l.mean:null;i.set(e.id,u);let d=V(e.adoptedAt);if(d===null)continue;let f=e.status===`canary`?`canary`:e.status===`rolled-back`?`adopted, later rolled back`:`adopted`;if(a.push({at:d,step:{id:`${e.id}@adopt`,at:d,value:u,low:u!==null&&l?c+l.ciLow:null,high:u!==null&&l?c+l.ciHigh:null,label:e.id,detail:f}}),e.rolledBackAt){let t=V(e.rolledBackAt);if(t!==null){let r=i.get(s)??null,o=n.get(s);a.push({at:t,marker:{id:`${e.id}@rb`,at:t,kind:`rollback`,label:`${e.id}: ${e.rollbackReason??`rolled back`}`}}),a.push({at:t+1,step:{id:`${e.id}@rb-step`,at:t+1,value:r,low:null,high:null,label:o?.id??s,detail:`restored after ${e.id} rolled back`}})}}}return a.sort((e,t)=>e.at-t.at),{steps:a.flatMap(e=>e.step?[e.step]:[]),markers:a.flatMap(e=>e.marker?[e.marker]:[])}}var W={adopt:`passed the gate`,reject:`rejected`,inconclusive:`inconclusive`};function G(e){return e?e.experiments.map(e=>({id:e.id,label:`${e.candidateVersionId} vs ${e.baseVersionId}`,estimate:e.lift?.mean??null,low:e.lift?.ciLow??null,high:e.lift?.ciHigh??null,n:e.pairs,detail:e.status===`running`||e.status===`queued`?`${e.status} · ${e.pairs}/${j.minPairs} pairs`:e.verdict?W[e.verdict]??e.verdict:e.status})):[]}var K=t(),q=3e5,J=a(`30d`);function Y(e,t){return{kind:`unknown`,reason:e??t}}function X(){let e=i(y,{freshMs:6e4}),t=i(v,{freshMs:6e4}),n=i(J,{freshMs:6e4}),a=r(y),c=r(v),b=r(J);g(()=>{a(),c(),b()},q);let T=_(6e4),E=e.data?.value??null,F=t.data?.value??null,I=(0,w.useMemo)(()=>E?M(E.days):[],[E]),L=e.data?E?x(O(E,E.sources.runs)):Y(e.data.reason,`fleet history did not answer.`):{kind:`loading`},z=L.kind===`ready`?I.length===0?{kind:`empty`,message:`Not a full week of history yet.`}:{kind:`ready`}:L,B=E?D(`Merge counts`,E.sources.decisions):void 0,V=E?k(E):null,H=(0,w.useMemo)(()=>R(n.data?.models??[]),[n.data]),W=n.status===`loading`?{kind:`loading`}:n.status===`error`||!n.data?{kind:`unknown`,reason:`per-model economics could not be read.`}:H.categories.length===0?{kind:`empty`,message:`No model dispatched fleet work in the last 30 days.`}:{kind:`ready`},X=(0,w.useMemo)(()=>U(F),[F]),Z=(0,w.useMemo)(()=>G(F),[F]),Q=(e,n)=>t.data?F?n?{kind:`ready`}:{kind:`empty`,message:e}:Y(t.data.reason,`self-improvement did not answer.`):{kind:`loading`},$=e=>`wk to ${l(e)}`;return(0,K.jsxs)(S,{title:`Growth`,actions:[e,t].some(e=>e.status===`refreshing`)?(0,K.jsx)(o,{}):null,children:[(0,K.jsx)(C,{span:8,children:(0,K.jsx)(d,{title:`Merges per week`,description:`Rolling 7-day windows ending today`,caveat:B,status:z,series:[{id:`merges`,label:`Merges`,color:s,points:I.map(e=>({x:e.end,y:e.merges}))}],formatX:$})}),(0,K.jsx)(C,{span:4,children:(0,K.jsx)(d,{title:`Cost per merge`,description:`Estimated run spend ÷ merges, per week`,status:z,series:[{id:`cpm`,label:`Cost per merge`,color:s,points:I.map(e=>({x:e.end,y:N(e)}))}],formatX:$,formatY:u,height:200})}),(0,K.jsx)(C,{span:4,children:(0,K.jsx)(ee,{title:`Pipeline · 90d`,description:`Filed → verified → passed → judged ship → merged`,caveat:V?.caveat,status:V?x(V.status):L,stages:V?.stages??[]})}),(0,K.jsx)(C,{span:4,children:(0,K.jsx)(f,{title:`Model outcomes · 30d`,description:`What each model's dispatches became`,status:W,categories:H.categories,segments:P,values:H.values,height:200})}),(0,K.jsx)(C,{span:4,children:(0,K.jsx)(m,{title:`Merges by day`,description:`Last 90 days`,status:L,days:E?A(E,e=>e.merges.realized):[],unit:`merges`})}),(0,K.jsx)(C,{span:8,children:(0,K.jsx)(h,{title:`Harness level`,description:`Pass-rate lift over the compiled defaults · band = each step's own 95% interval · canary ${j.canaryHours} h`,status:Q(`No harness adopted yet — the compiled defaults are in force.`,X.steps.length>0),steps:X.steps,markers:X.markers,now:T,baseline:{value:0,label:`Compiled defaults`},unit:`pts`})}),(0,K.jsx)(C,{span:4,children:(0,K.jsx)(p,{title:`Experiments`,description:`Paired lift, 95% interval · adopt needs CI low > ${j.minLiftCiLow} and ≥ ${j.minPairs} pairs`,status:Q(`No experiments have run yet.`,Z.length>0),rows:Z,unit:`pts`,unknownText:`under ${j.minPairs} pairs`})})]})}export{q as GROWTH_POLL_MS,X as GrowthSection};
2
- //# sourceMappingURL=GrowthSection-C5aDPs8B.js.map
@@ -1,2 +0,0 @@
1
- import{a as e,n as t,s as n}from"./index-BVxOlseC.js";import{k as r,p as i}from"./global-oEl9Qj8u.js";import{t as a}from"./Dialog-BS9Dxi3G.js";import{t as ee}from"./MutationTokenDialog-mxrw0Yvy.js";import{v as te}from"./verse-ui-store-62DxpVHS.js";import{i as ne,l as re,m as ie}from"./VerseConsoleApp-DTjDpGCd.js";import{_ as o,n as ae}from"./verse-model-DyCwZF-M.js";import{t as oe}from"./Segmented-BE53BenI.js";import{d as s,f as c,h as se,l as ce,o as l,v as u,y as le}from"./verse-store-b_Lek_c5.js";import{t as ue,v as de}from"./format-BkWdOQDL.js";import{l as fe,r as pe,t as me}from"./context-queries-CrPcHWTz.js";import{o as he,s as ge}from"./context-model-CIBmSugV.js";import{t as _e}from"./SeatSelector-CYHRR7Wp.js";import{C as ve,S as ye,c as d,d as be,f as xe,g as Se,h as Ce,m as we,o as f,s as Te,w as Ee,y as p}from"./context-model-BC-HOmPo.js";import{o as De}from"./workspace-model-CbhdPhei.js";import{n as Oe,t as m}from"./use-token-gate-DqrSXdX6.js";import{t as h}from"./context.module-BijAfoJw.js";var g=n(e(),1),_=t();function v(e,t,n){if(!n)return d(e,t);if(e.length===0)return null;let r=e.find(e=>e.id===n.seatId);if(!r)return d(e,t);let i=Ce(r,n.model);if(i)return{seatId:r.id,model:i.id};let a=r.models.find(e=>!e.unavailableReason);return{seatId:r.id,model:a?a.id:n.model}}var ke=4e3,Ae="Building the handoff reads this chat’s log and runs `git diff --stat` on its folders. It spends nothing.",je=`Asking for a summary sends one turn to this chat’s seat.`,Me=`Stopping the summary turn.`,Ne=`Creating the chat records a new session on this machine. Nothing is sent to a model until you press Send in it.`;function Pe(e,t){let n=null,r=!1;for(let i of e)if(`turnId`in i&&i.turnId===t){if(i.type===`error`)n=i.message;else if(i.type===`assistant-message`||i.type===`text-delta`&&i.text.trim().length>0)r=!0;else if(i.type===`cancelled`)return{kind:`cancelled`};else if(i.type===`turn-done`)return i.ok?r?{kind:`ok`}:{kind:`empty`}:{kind:`failed`,message:n}}return null}function y(e){return e.open?(0,_.jsx)(b,{...e}):null}function b({session:e,seats:t,onClose:n,onCreated:d,initialTarget:y}){let b=(0,g.useId)(),x=(0,g.useId)(),S=(0,g.useId)(),C=(0,g.useId)(),Fe=(0,g.useId)(),w=(0,g.useId)(),T=(0,g.useId)(),E=(0,g.useRef)(null),D=Oe(),Ie=i(fe),[O,Le]=(0,g.useState)(null),[k,A]=(0,g.useState)(`idle`),[j,Re]=(0,g.useState)(null),[M,ze]=(0,g.useState)(``),[N,Be]=(0,g.useState)(``),[Ve,He]=(0,g.useState)(!1),P=(0,g.useRef)(0),F=(0,g.useRef)(!0);(0,g.useEffect)(()=>(F.current=!0,()=>{F.current=!1}),[]);let Ue=(0,g.useRef)(null);Ue.current=O;let We=D.run,I=(0,g.useCallback)(async t=>{let n=P.current+=1;A(`loading`),Re(null);try{let r=await We(Ae,()=>pe(e.id,t));if(!F.current||n!==P.current)return;if(r===null){A(Ue.current?`ready`:`locked`);return}Le(r),ze(r.text),A(`ready`)}catch(e){if(!F.current||n!==P.current)return;Re(m(e)),A(`error`)}},[We,e.id]);(0,g.useEffect)(()=>{r()?I({includeLastAssistant:!1,focus:``}):A(`locked`)},[]);let L=O!==null&&M!==O.text,Ge=(0,g.useMemo)(()=>Ee(M)>65536||we({text:M})>65536,[M]),Ke=M.length>u,[R,qe]=(0,g.useState)(()=>v(t,e,y));(0,g.useEffect)(()=>{R===null&&t.length>0&&qe(v(t,e,y))},[R,t,e,y]);let z=R?o(t,R.seatId)??null:null,B=R?Ce(z,R.model):null,[V,Je]=(0,g.useState)(null),Ye=Te({option:B,target:R,source:e,preferences:Ie.data}),H=V!==null&&p(B,V)!==void 0?V:Ye,Xe=Se(B),U=ye(z,B),W=be(M.length,B,H,z?.engine??null),Ze=[ge(B),he(z?.engine)].filter(Boolean).join(` `),Qe=1+(e.extraRoots?.filter(t=>t&&t!==e.projectPath).length??0),$e=De(z?.engine??null,Qe);function et(e){qe({seatId:e.seatId,model:e.model}),Je(null)}let[tt,nt]=(0,g.useState)(()=>xe(e.title)),[G,K]=(0,g.useState)({phase:`idle`}),q=o(t,e.seatId)?.label??ae[e.engine],J=G.phase===`sending`||G.phase===`waiting`||G.phase===`cancelling`,Y=e.status===`running`?`A turn is running in this chat. Wait for it to finish first.`:e.turnCount===0?`This chat has no turns yet, so there is nothing to summarize.`:null;async function rt(){K({phase:`sending`});try{let t=await D.run(je,async()=>{c(e.id,`running`);try{let t=await ie(e.id,le);return s(e.id,t.session,t.turnId),t.turnId}catch(t){throw c(e.id,`idle`),t}});if(!F.current)return;K(t===null?{phase:`idle`}:{phase:`waiting`,turnId:t})}catch(e){F.current&&K({phase:`failed`,message:m(e)})}}async function it(){if(G.phase!==`waiting`)return;let t=G.turnId;K({phase:`cancelling`,turnId:t});try{await D.run(Me,()=>ne(e.id))===null&&F.current&&K({phase:`waiting`,turnId:t})}catch(e){F.current&&K({phase:`failed`,message:m(e)})}}let at=(0,g.useRef)(N);at.current=N,(0,g.useEffect)(()=>{if(G.phase!==`waiting`&&G.phase!==`cancelling`)return;let t=G.turnId,n=!1,r=()=>{if(n)return;let r=Pe(l(e.id).events,t);if(r!==null)switch(n=!0,r.kind){case`ok`:K({phase:`done`}),He(!0),I({includeLastAssistant:!0,focus:at.current});break;case`cancelled`:K({phase:`failed`,message:`Summary stopped. The automatic preview is unchanged.`});break;case`empty`:K({phase:`failed`,message:`${q} finished without writing a summary. The automatic preview is unchanged.`});break;default:K({phase:`failed`,message:`The summary turn failed${r.message?`: ${ue(de(r.message))}`:``}. The automatic preview is unchanged.`})}};r();let i=se(r),a=setInterval(()=>{let t=l(e.id).stream;t!==`open`&&t!==`connecting`&&t!==`reconnecting`&&re(e.id).then(t=>ce(e.id,t.session,t.events)).catch(()=>{})},ke);return()=>{n=!0,i(),clearInterval(a)}},[G,e.id]);let[X,ot]=(0,g.useState)(!1),[Z,st]=(0,g.useState)(null),ct=M.trim().length>0,Q=U??(O?null:`Build the handoff first.`)??(ct?null:`The handoff is empty — rebuild it or write one.`)??(Ge?`The handoff is over the 64 KB limit for one message. Trim it first.`:null)??(J?`Wait for the summary to finish, or stop it.`:null);async function lt(){if(!R||Q!==null||X)return;ot(!0),st(null);let t=M;try{let r=await D.run(Ne,()=>me({source:e,seatId:R.seatId,model:R.model,contextMode:p(B,H),title:tt.trim()||void 0}));if(r===null)return;s(r.id,r),te(r.projectPath,{seatId:r.seatId,model:r.model}),d(r,t),n()}catch(e){F.current&&st(m(e))}finally{F.current&&ot(!1)}}let ut=()=>{D.dialog.open||n()},dt=Math.ceil(M.length/4),$=()=>void I({includeLastAssistant:Ve,focus:N});return(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(a,{open:!0,onClose:ut,titleId:b,title:`Continue in a fresh chat`,initialFocusRef:E,widthClassName:h.dialogWidth,description:(0,_.jsxs)(_.Fragment,{children:[`Start a new chat from a written handoff of “`,e.title||`Untitled chat`,`” instead of its full history.`]}),children:(0,_.jsxs)(`form`,{className:h.form,noValidate:!0,onSubmit:e=>{e.preventDefault(),lt()},children:[(0,_.jsxs)(`div`,{className:h.field,children:[(0,_.jsxs)(`label`,{className:h.label,htmlFor:x,children:[`Focus for the next chat `,(0,_.jsx)(`span`,{className:h.optional,children:`optional`})]}),(0,_.jsxs)(`div`,{className:h.row,children:[(0,_.jsx)(`input`,{id:x,ref:E,className:h.input,value:N,maxLength:500,placeholder:`e.g. finish the migration, then run the full test suite`,autoComplete:`off`,onChange:e=>Be(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),k!==`loading`&&$())}}),(0,_.jsx)(`button`,{type:`button`,className:h.secondary,onClick:$,disabled:k===`loading`||J,children:L?`Rebuild (replaces your edits)`:`Rebuild`})]})]}),(0,_.jsxs)(`div`,{className:h.field,children:[(0,_.jsx)(`label`,{className:h.label,htmlFor:S,children:`Handoff — becomes the new chat’s first message`}),k===`locked`&&!O?(0,_.jsxs)(`div`,{className:h.locked,role:`status`,children:[(0,_.jsxs)(`p`,{children:[`Building the handoff needs the mutation token: it reads this chat’s log and runs `,(0,_.jsx)(`code`,{children:`git diff --stat`}),`. It spends nothing.`]}),(0,_.jsx)(`button`,{type:`button`,className:h.secondary,onClick:$,children:`Unlock and build the handoff`})]}):(0,_.jsx)(`textarea`,{id:S,className:h.textarea,value:M,rows:12,spellCheck:!1,"aria-describedby":C,"aria-busy":k===`loading`||void 0,disabled:!O,placeholder:k===`loading`?`Building the handoff from this chat’s log…`:``,onChange:e=>ze(e.target.value)}),(0,_.jsx)(`p`,{id:C,className:h.hint,"aria-live":`polite`,children:k===`loading`?O?`Rebuilding…`:`Reading this chat’s log…`:O?(0,_.jsxs)(_.Fragment,{children:[M.length.toLocaleString(),` chars · ~`,dt.toLocaleString(),` tokens`,` · `,O.stats.turnsCovered,` `,O.stats.turnsCovered===1?`turn`:`turns`,` · `,O.stats.filesTouched,` `,O.stats.filesTouched===1?`file`:`files`,` touched`,L?` · edited`:``,Ve?` · includes ${q}’s own summary`:``]}):null}),O&&O.stats.truncated.length>0?(0,_.jsxs)(`p`,{className:h.hint,children:[`To stay under `,u.toLocaleString(),` characters these sections were left out: `,O.stats.truncated.join(`, `),`.`]}):null,Ge?(0,_.jsx)(`p`,{className:h.error,role:`alert`,children:`Over the 64 KB limit for one message (counted as it is sent, line breaks and quotes encoded) — the new chat could not send it. Trim it first.`}):Ke?(0,_.jsxs)(`p`,{className:h.warn,children:[`Longer than the `,u.toLocaleString(),`-character handoff budget. It can still be sent; the new chat just starts bigger.`]}):null,k===`error`&&j?(0,_.jsxs)(`p`,{className:h.error,role:`alert`,children:[`Could not build the handoff: `,j,` `,(0,_.jsx)(`button`,{type:`button`,className:h.link,onClick:$,children:`Try again`})]}):null]}),(0,_.jsxs)(`section`,{className:h.aside,"aria-labelledby":`${b}-summary`,children:[(0,_.jsxs)(`h3`,{id:`${b}-summary`,className:h.label,children:[`Better summary `,(0,_.jsx)(`span`,{className:h.optional,children:`optional, spends`})]}),(0,_.jsxs)(`p`,{className:h.hint,children:[`The handoff above is assembled from this chat’s log. For one in the agent’s own words, ask `,q,` to write it first — its reply is added to the handoff. `,ve(e.engine,q)]}),G.phase===`waiting`||G.phase===`cancelling`?(0,_.jsxs)(`div`,{className:h.row,role:`status`,children:[(0,_.jsx)(`span`,{className:h.pending,"aria-hidden":`true`}),(0,_.jsx)(`span`,{className:h.hint,children:G.phase===`cancelling`?`Stopping the summary…`:`Waiting for ${q} to finish its summary…`}),(0,_.jsx)(`button`,{type:`button`,className:h.secondary,onClick:()=>void it(),disabled:G.phase===`cancelling`,children:`Stop the summary`})]}):(0,_.jsxs)(`div`,{className:h.row,children:[(0,_.jsx)(`button`,{type:`button`,className:h.secondary,onClick:()=>void rt(),disabled:Y!==null||G.phase===`sending`,children:G.phase===`sending`?`Sending…`:G.phase===`done`?`Ask ${q} again`:`Ask ${q} to summarize first`}),G.phase===`done`?(0,_.jsx)(`span`,{className:h.hint,role:`status`,children:`Summary added.`}):null]}),Y!==null&&!J?(0,_.jsx)(`p`,{className:h.hint,children:Y}):null,Y===null&&G.phase===`idle`&&L?(0,_.jsx)(`p`,{className:h.hint,children:`The handoff is rebuilt with the summary, which replaces your edits above.`}):null,G.phase===`failed`?(0,_.jsx)(`p`,{className:h.error,role:`alert`,children:G.message}):null]}),(0,_.jsxs)(`div`,{className:h.field,children:[(0,_.jsx)(_e,{id:Fe,seats:t,value:R,onChange:et,label:`Continue on`,modeFor:(e,t)=>R&&e.id===R.seatId&&t.id===R.model?H:`standard`}),U?(0,_.jsx)(`p`,{className:h.error,role:`alert`,children:U}):null,$e?(0,_.jsx)(`p`,{className:h.hint,children:$e}):null]}),B&&!U?(0,_.jsxs)(`div`,{className:h.field,children:[Xe?(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(`span`,{id:T,className:h.label,children:`Context mode`}),(0,_.jsx)(oe,{"aria-labelledby":T,size:`sm`,value:H,onChange:e=>Je(e),options:[{value:`standard`,label:`Standard`},{value:`expansive`,label:`Expansive`}]}),(0,_.jsxs)(`p`,{className:h.hint,children:[f(B,H),`.`,` `,H===`expansive`?`Expansive keeps far more of the conversation before compacting, but every turn re-sends all of it — each turn costs more usage.${Ze?` ${Ze}`:``}`:`Standard compacts sooner and keeps each turn cheaper. Expansive is one click away if the work needs it.`]})]}):f(B,`standard`)?(0,_.jsxs)(`p`,{className:h.hint,children:[f(B,`standard`),`.`]}):null,(0,_.jsx)(`p`,{className:`${h.fit} ${h[`fit-${W.tone}`]??``}`,"data-verdict":W.verdict??`unknown`,children:W.text})]}):null,(0,_.jsxs)(`div`,{className:h.field,children:[(0,_.jsx)(`label`,{className:h.label,htmlFor:w,children:`Title`}),(0,_.jsx)(`input`,{id:w,className:h.input,value:tt,maxLength:120,autoComplete:`off`,onChange:e=>nt(e.target.value)})]}),Z?(0,_.jsx)(`p`,{className:h.error,role:`alert`,children:Z}):null,(0,_.jsx)(`p`,{className:h.cost,children:`Creating the chat is free — nothing is sent to a model. The handoff goes into the new chat’s composer; read it, then press Send. That first turn is the first thing spent.`}),(0,_.jsxs)(`div`,{className:h.actions,children:[Q&&O?(0,_.jsx)(`span`,{className:h.blocked,children:Q}):null,(0,_.jsx)(`button`,{type:`button`,className:h.cancel,onClick:n,children:`Cancel`}),(0,_.jsx)(`button`,{type:`submit`,className:h.primary,disabled:Q!==null||X,children:X?`Creating…`:`Create chat`})]})]})}),(0,_.jsx)(ee,{open:D.dialog.open,reason:D.dialog.reason,tokenLabel:`Mutation token`,tokenHelp:`the mutation token ashlr verse printed`,onClose:D.dialog.onClose,onUnlocked:D.dialog.onUnlocked})]})}export{y as HandoffDialog};
2
- //# sourceMappingURL=HandoffDialog-BF3AYg-X.js.map
@@ -1,2 +0,0 @@
1
- import{a as e,n as t,s as n}from"./index-BVxOlseC.js";var r=n(e(),1),i={field:`_field_ki2n9_1`,label:`_label_ki2n9_8`,shell:`_shell_ki2n9_15`,sm:`_sm_ki2n9_29`,input:`_input_ki2n9_33`,invalid:`_invalid_ki2n9_50`,mono:`_mono_ki2n9_80`,prefix:`_prefix_ki2n9_85`,hint:`_hint_ki2n9_91`,error:`_error_ki2n9_97`},a=t();function o({label:e,hint:t,error:n,size:o=`md`,mono:s=!1,prefix:c,className:l,id:u,...d}){let f=(0,r.useId)(),p=u??f,m=`${p}-hint`,h=`${p}-error`,g=[d[`aria-describedby`],t?m:null,n?h:null].filter(Boolean).join(` `);return(0,a.jsxs)(`div`,{className:`${i.field} ${l??``}`,children:[e?(0,a.jsx)(`label`,{className:i.label,htmlFor:p,children:e}):null,(0,a.jsxs)(`div`,{className:`${i.shell} ${i[o]} ${n?i.invalid:``}`,children:[c?(0,a.jsx)(`span`,{className:i.prefix,children:c}):null,(0,a.jsx)(`input`,{...d,id:p,className:`${i.input} ${s?i.mono:``}`,"aria-invalid":n?!0:d[`aria-invalid`],"aria-describedby":g||void 0})]}),t?(0,a.jsx)(`p`,{id:m,className:i.hint,children:t}):null,n?(0,a.jsx)(`p`,{id:h,className:i.error,role:`alert`,children:n}):null]})}export{o as t};
2
- //# sourceMappingURL=Input-B5dmGLZx.js.map
@@ -1,2 +0,0 @@
1
- import{n as e}from"./index-BVxOlseC.js";import{l as t}from"./format-BkWdOQDL.js";import{t as n}from"./Button-HHXgoXGr.js";import{t as r}from"./use-ticker-D9yi49my.js";import{n as i,t as a}from"./nav-NVtnuG7A.js";import{l as o}from"./surface-data-DTI7LjvH.js";import{r as s}from"./actions-tWevL9HV.js";import{i as c,n as l,t as u}from"./Surface-B75lVfzm.js";function d(e){return e.status===`applied`||e.status===`scheduled`}function f(e,t){if(e.status!==`scheduled`||!e.applyAfter)return null;let n=Date.parse(e.createdAt),r=Date.parse(e.applyAfter);return!Number.isFinite(n)||!Number.isFinite(r)||r<=n?null:Math.max(0,Math.min(1,(r-t)/(r-n)))}function p(e,t){if(!e)return``;let n=Date.parse(e)-t;if(!Number.isFinite(n))return``;if(n<=0)return`applying…`;let r=Math.ceil(n/6e4);return r<60?`${r}m`:`${Math.floor(r/60)}h ${String(r%60).padStart(2,`0`)}m`}var m={"merges/day":`merges/day`};function h(e){if(!e)return null;let t=Date.parse(e.byDate),n=Number.isFinite(t)?new Date(t).toLocaleDateString(`en-US`,{weekday:`short`,month:`short`,day:`numeric`}):e.byDate,r=Number.isInteger(e.delta)?String(Math.abs(e.delta)):Math.abs(e.delta).toFixed(1);return`${e.delta>=0?`+`:`−`}${r} ${m[e.metric]??e.metric} by ${n}`}function g(e){return e.expectedDelta?e.outcome?e.outcome.hit===null?`ungraded`:e.outcome.hit?`hit`:`miss`:`pending`:`ungraded`}var _={hit:`hit`,miss:`missed`,pending:`graded in 7 days`,ungraded:`not gradeable`};function v(e){if(!e?.latest)return[];let t=new Map(e.actions.map(e=>[e.id,e])),n=e.latest.actions.map(e=>t.get(e.id)??e),r={A:0,B:1,C:2};return n.sort((e,t)=>r[e.class]-r[t.class]||Date.parse(t.createdAt)-Date.parse(e.createdAt))}var y={scheduled:`Scheduled`,applied:`Applied`,vetoed:`Vetoed`,refused:`Refused`,failed:`Failed`,escalated:`Needs you`},b=e(),x=8,S=2*Math.PI*x;function C({action:e}){let t=r(1e3),n=f(e,t);if(n===null)return null;let i=p(e.applyAfter,t);return(0,b.jsxs)(`span`,{className:s.ring,role:`timer`,"aria-label":`Applies in ${i} unless vetoed`,children:[(0,b.jsxs)(`svg`,{width:20,height:20,viewBox:`0 0 20 20`,"aria-hidden":`true`,children:[(0,b.jsx)(`circle`,{cx:10,cy:10,r:x,className:s.ringTrack}),(0,b.jsx)(`circle`,{"data-role":`remaining`,cx:10,cy:10,r:x,className:s.ringFill,strokeDasharray:`${(S*n).toFixed(2)} ${S.toFixed(2)}`,transform:`rotate(-90 10 10)`})]}),(0,b.jsx)(`span`,{className:s.ringText,children:i})]})}function w(e){return{title:`Veto this action?`,body:e.status===`scheduled`?`“${e.summary}” will not apply. The Leader records the veto and learns from it.`:`“${e.summary}” is undone exactly as it was applied. The Leader records the veto and learns from it.`,confirmLabel:`Veto`,destructive:!0}}function T({action:e,actions:t,compact:r=!1}){let i=d(e);return(0,b.jsxs)(`li`,{className:s.actionRow,"data-status":e.status,id:a(`action-${e.id}`),children:[(0,b.jsx)(`span`,{className:s.classBadge,"data-class":e.class,title:`Class ${e.class}`,children:e.class}),(0,b.jsxs)(`span`,{className:s.actionText,children:[(0,b.jsx)(`span`,{className:s.actionSummary,children:e.summary}),r?null:(0,b.jsx)(`span`,{className:s.actionWhy,children:e.why})]}),(0,b.jsxs)(`span`,{className:s.actionState,children:[e.status===`scheduled`?(0,b.jsx)(C,{action:e}):(0,b.jsx)(`span`,{className:s.statusWord,"data-status":e.status,children:y[e.status]}),i?(0,b.jsx)(n,{size:`sm`,variant:`ghost`,className:s.vetoChip,disabled:t.busy||t.readOnly,"aria-label":`Veto: ${e.summary}`,onClick:()=>t.act(()=>o({action:`veto`,actionId:e.id}),`Veto “${e.summary}”`,{confirm:w(e)}),children:`Veto`}):null]})]})}function E({read:e,loading:n,actions:r}){let a=e?.value??null,f=a?.latest??null,p=v(a),m=h(f?.move?.expectedDelta??null),g=p.some(d);return(0,b.jsx)(u,{title:`Leader`,caption:f?`Memo ${t(f.at)}${f.seatId?` · ${f.seatId}`:``}${a?.nextRunAt?` · next run ${new Date(a.nextRunAt).toLocaleTimeString(`en-US`,{hour:`numeric`,minute:`2-digit`})}`:``}`:void 0,actions:(0,b.jsxs)(b.Fragment,{children:[f?.dryRun?(0,b.jsx)(`span`,{className:s.dryRun,children:`Dry run`}):null,(0,b.jsxs)(`button`,{type:`button`,className:s.linkButton,onClick:()=>i(`mind`,null),"aria-keyshortcuts":`Meta+4`,children:[`Open Mind `,(0,b.jsx)(`kbd`,{className:s.kbd,children:`⌘4`})]})]}),children:n&&!e?(0,b.jsx)(`p`,{className:s.muted,"aria-busy":`true`,children:`Reading the Leader…`}):a?f?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`dl`,{className:s.memo,children:[(0,b.jsxs)(`div`,{className:s.memoRow,children:[(0,b.jsx)(`dt`,{children:(0,b.jsx)(c,{children:`Bottleneck`})}),(0,b.jsx)(`dd`,{className:s.memoText,children:f.bottleneck?.statement??`—`})]}),(0,b.jsxs)(`div`,{className:s.memoRow,children:[(0,b.jsx)(`dt`,{children:(0,b.jsx)(c,{children:`The move`})}),(0,b.jsxs)(`dd`,{className:s.memoText,children:[f.move?.statement??`—`,m?(0,b.jsx)(`span`,{className:s.delta,children:m}):null]})]})]}),p.length?(0,b.jsx)(`ul`,{className:s.actionList,"aria-label":`Leader actions`,children:p.map(e=>(0,b.jsx)(T,{action:e,actions:r},e.id))}):null,f.dryRun?(0,b.jsx)(`p`,{className:s.muted,children:`Shadow stage: these actions are shown, never applied.`}):null,g&&!f.dryRun?(0,b.jsx)(`button`,{type:`button`,className:s.moreLink,disabled:r.busy||r.readOnly,onClick:()=>r.act(()=>o({action:`veto-memo`,memoId:f.id}),`Veto the whole memo`,{confirm:{title:`Veto the whole memo?`,body:`Every applied action is undone exactly and every scheduled one is cancelled. The Leader records the veto.`,confirmLabel:`Veto memo`,destructive:!0}}),children:`Veto the whole memo`}):null]}):(0,b.jsxs)(l,{children:[`No memo yet`,a.lastRun?` — last run ${t(a.lastRun.at)}: ${a.lastRun.reason??a.lastRun.outcome}`:``,`.`,a.nextRunAt?` Next run ${new Date(a.nextRunAt).toLocaleString(`en-US`,{weekday:`short`,hour:`numeric`,minute:`2-digit`})}.`:``]}):(0,b.jsx)(l,{tone:`unknown`,children:e?.reason??`The Leader did not answer.`})})}export{d as a,h as i,E as n,g as o,_ as r,T as t};
2
- //# sourceMappingURL=LeaderCard-DZrmjDbI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LeaderCard-DZrmjDbI.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/mind/leader-model.ts","../../../../../../src/web-ui/routes/verse/command/CountdownRing.tsx","../../../../../../src/web-ui/routes/verse/command/LeaderCard.tsx"],"sourcesContent":["/**\n * routes/verse/mind/leader-model.ts — pure helpers over LeaderStateV1 for the\n * Command Leader card and the Mind surface (unit C7; SPEC-310B §4).\n *\n * class A — applied now; Veto undoes it exactly (its recorded inverse);\n * class B — waits out its veto window (a countdown ring), then applies;\n * class C — outside the grant, never applied: shown as \"needs you\".\n *\n * Framework-free; tested directly.\n */\nimport type { LeaderAction, LeaderExpectedDelta, LeaderMemoSummary, LeaderStateV1 } from '../../../../core/vision/leader-types.js';\n\n/** Actions a Veto can still act on: applied (undo) or scheduled (cancel). */\nexport function isVetoable(action: LeaderAction): boolean {\n return action.status === 'applied' || action.status === 'scheduled';\n}\n\n/** Remaining fraction (1 → 0) of a class-B action's veto window; null when it has none. */\nexport function vetoWindowFraction(action: Pick<LeaderAction, 'status' | 'createdAt' | 'applyAfter'>, now: number): number | null {\n if (action.status !== 'scheduled' || !action.applyAfter) return null;\n const start = Date.parse(action.createdAt);\n const end = Date.parse(action.applyAfter);\n if (!Number.isFinite(start) || !Number.isFinite(end) || end <= start) return null;\n return Math.max(0, Math.min(1, (end - now) / (end - start)));\n}\n\n/** \"18m\", \"1h 04m\", \"applying…\" */\nexport function countdownText(applyAfter: string | null, now: number): string {\n if (!applyAfter) return '';\n const ms = Date.parse(applyAfter) - now;\n if (!Number.isFinite(ms)) return '';\n if (ms <= 0) return 'applying…';\n const m = Math.ceil(ms / 60_000);\n if (m < 60) return `${m}m`;\n return `${Math.floor(m / 60)}h ${String(m % 60).padStart(2, '0')}m`;\n}\n\nconst METRIC_UNIT: Record<string, string> = { 'merges/day': 'merges/day' };\n\n/** \"+4 merges/day by Fri\" */\nexport function expectedDeltaText(d: LeaderExpectedDelta | null): string | null {\n if (!d) return null;\n const by = Date.parse(d.byDate);\n const when = Number.isFinite(by) ? new Date(by).toLocaleDateString('en-US', { weekday: 'short', month: 'short', day: 'numeric' }) : d.byDate;\n const n = Number.isInteger(d.delta) ? String(Math.abs(d.delta)) : Math.abs(d.delta).toFixed(1);\n return `${d.delta >= 0 ? '+' : '−'}${n} ${METRIC_UNIT[d.metric] ?? d.metric} by ${when}`;\n}\n\nexport type OutcomeMark = 'hit' | 'miss' | 'pending' | 'ungraded';\n\nexport function outcomeMark(m: Pick<LeaderMemoSummary, 'outcome' | 'expectedDelta'>): OutcomeMark {\n if (!m.expectedDelta) return 'ungraded';\n if (!m.outcome) return 'pending';\n if (m.outcome.hit === null) return 'ungraded';\n return m.outcome.hit ? 'hit' : 'miss';\n}\n\nexport const OUTCOME_WORD: Record<OutcomeMark, string> = {\n hit: 'hit',\n miss: 'missed',\n pending: 'graded in 7 days',\n ungraded: 'not gradeable',\n};\n\n/** The latest memo's actions, class-C last (they are asks, not actions). */\nexport function memoActions(state: LeaderStateV1 | null): LeaderAction[] {\n if (!state?.latest) return [];\n const byId = new Map(state.actions.map((a) => [a.id, a]));\n // The state's action list carries the newest status; fall back to the memo's copy.\n const list = state.latest.actions.map((a) => byId.get(a.id) ?? a);\n const order = { A: 0, B: 1, C: 2 } as const;\n return list.sort((a, b) => order[a.class] - order[b.class] || Date.parse(b.createdAt) - Date.parse(a.createdAt));\n}\n\nexport const STATUS_WORD: Record<LeaderAction['status'], string> = {\n scheduled: 'Scheduled',\n applied: 'Applied',\n vetoed: 'Vetoed',\n refused: 'Refused',\n failed: 'Failed',\n escalated: 'Needs you',\n};\n","/**\n * routes/verse/command/CountdownRing.tsx — a class-B action's veto window as\n * a shrinking ring (r5/visual.md §2 Motion: \"Class-B veto: countdown ring\n * drawn as a conic stroke that shrinks once per second\").\n *\n * It ticks once a second even under reduced motion — a countdown is\n * information, not decoration (use-ticker.ts) — but it never animates\n * between ticks. The minutes are always written beside it, so the ring is\n * never the only carrier.\n */\nimport { useNow } from '../autonomy/use-ticker.js';\nimport { countdownText, vetoWindowFraction } from '../mind/leader-model.js';\nimport type { LeaderAction } from '../../../../core/vision/leader-types.js';\nimport styles from './command.module.css';\n\nconst R = 8;\nconst C = 2 * Math.PI * R;\n\nexport function CountdownRing({ action }: { action: Pick<LeaderAction, 'status' | 'createdAt' | 'applyAfter' | 'summary'> }) {\n const now = useNow(1000);\n const fraction = vetoWindowFraction(action, now);\n if (fraction === null) return null;\n const text = countdownText(action.applyAfter, now);\n return (\n <span className={styles.ring} role=\"timer\" aria-label={`Applies in ${text} unless vetoed`}>\n <svg width={20} height={20} viewBox=\"0 0 20 20\" aria-hidden=\"true\">\n <circle cx={10} cy={10} r={R} className={styles.ringTrack} />\n <circle\n data-role=\"remaining\"\n cx={10}\n cy={10}\n r={R}\n className={styles.ringFill}\n strokeDasharray={`${(C * fraction).toFixed(2)} ${C.toFixed(2)}`}\n transform=\"rotate(-90 10 10)\"\n />\n </svg>\n <span className={styles.ringText}>{text}</span>\n </span>\n );\n}\n","/**\n * routes/verse/command/LeaderCard.tsx — the Leader's latest memo on Command\n * (span 7; SPEC-310B §6 \"Leader card: Bottleneck, The Move, a Veto chip on\n * each action, and countdown rings for class-B actions\"; unit C7).\n *\n * Every line is the Leader's own (untrusted model) text, rendered as plain\n * text — never markdown, never a link. Veto confirms, then asks for the\n * token; the server runs the action's recorded inverse, restoring the prior\n * state exactly. A dry-run memo (rollout shadow stage) says so in words.\n */\nimport type { LeaderAction, LeaderStateV1 } from '../../../../core/vision/leader-types.js';\nimport { Button } from '../../../components/primitives/Button.js';\nimport { formatRelative } from '../autonomy/format.js';\nimport { STATUS_WORD, expectedDeltaText, isVetoable, memoActions } from '../mind/leader-model.js';\nimport { CountdownRing } from './CountdownRing.js';\nimport { anchorId, goToSection } from './nav.js';\nimport { postLeader, type OptionalRead } from './surface-data.js';\nimport { Card, CardNote, MicroLabel } from './Surface.js';\nimport type { ConfirmSpec, SurfaceActions } from './actions.js';\nimport styles from './command.module.css';\n\nexport function vetoConfirm(action: Pick<LeaderAction, 'summary' | 'status'>): ConfirmSpec {\n return {\n title: 'Veto this action?',\n body:\n action.status === 'scheduled'\n ? `“${action.summary}” will not apply. The Leader records the veto and learns from it.`\n : `“${action.summary}” is undone exactly as it was applied. The Leader records the veto and learns from it.`,\n confirmLabel: 'Veto',\n destructive: true,\n };\n}\n\nexport function ActionRow({ action, actions, compact = false }: { action: LeaderAction; actions: SurfaceActions; compact?: boolean }) {\n const vetoable = isVetoable(action);\n return (\n <li className={styles.actionRow} data-status={action.status} id={anchorId(`action-${action.id}`)}>\n <span className={styles.classBadge} data-class={action.class} title={`Class ${action.class}`}>\n {action.class}\n </span>\n <span className={styles.actionText}>\n <span className={styles.actionSummary}>{action.summary}</span>\n {!compact ? <span className={styles.actionWhy}>{action.why}</span> : null}\n </span>\n <span className={styles.actionState}>\n {action.status === 'scheduled' ? <CountdownRing action={action} /> : <span className={styles.statusWord} data-status={action.status}>{STATUS_WORD[action.status]}</span>}\n {vetoable ? (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className={styles.vetoChip}\n disabled={actions.busy || actions.readOnly}\n aria-label={`Veto: ${action.summary}`}\n onClick={() => actions.act(() => postLeader({ action: 'veto', actionId: action.id }), `Veto “${action.summary}”`, { confirm: vetoConfirm(action) })}\n >\n Veto\n </Button>\n ) : null}\n </span>\n </li>\n );\n}\n\nexport function LeaderCard({ read, loading, actions }: { read: OptionalRead<LeaderStateV1> | undefined; loading: boolean; actions: SurfaceActions }) {\n const state = read?.value ?? null;\n const memo = state?.latest ?? null;\n const list = memoActions(state);\n const delta = expectedDeltaText(memo?.move?.expectedDelta ?? null);\n const vetoable = list.some(isVetoable);\n return (\n <Card\n title=\"Leader\"\n caption={memo ? `Memo ${formatRelative(memo.at)}${memo.seatId ? ` · ${memo.seatId}` : ''}${state?.nextRunAt ? ` · next run ${new Date(state.nextRunAt).toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit' })}` : ''}` : undefined}\n actions={\n <>\n {memo?.dryRun ? <span className={styles.dryRun}>Dry run</span> : null}\n <button type=\"button\" className={styles.linkButton} onClick={() => goToSection('mind', null)} aria-keyshortcuts=\"Meta+4\">\n Open Mind <kbd className={styles.kbd}>⌘4</kbd>\n </button>\n </>\n }\n >\n {loading && !read ? (\n <p className={styles.muted} aria-busy=\"true\">Reading the Leader…</p>\n ) : !state ? (\n <CardNote tone=\"unknown\">{read?.reason ?? 'The Leader did not answer.'}</CardNote>\n ) : !memo ? (\n <CardNote>\n No memo yet\n {state.lastRun ? ` — last run ${formatRelative(state.lastRun.at)}: ${state.lastRun.reason ?? state.lastRun.outcome}` : ''}.\n {state.nextRunAt ? ` Next run ${new Date(state.nextRunAt).toLocaleString('en-US', { weekday: 'short', hour: 'numeric', minute: '2-digit' })}.` : ''}\n </CardNote>\n ) : (\n <>\n <dl className={styles.memo}>\n <div className={styles.memoRow}>\n <dt><MicroLabel>Bottleneck</MicroLabel></dt>\n <dd className={styles.memoText}>{memo.bottleneck?.statement ?? '—'}</dd>\n </div>\n <div className={styles.memoRow}>\n <dt><MicroLabel>The move</MicroLabel></dt>\n <dd className={styles.memoText}>\n {memo.move?.statement ?? '—'}\n {delta ? <span className={styles.delta}>{delta}</span> : null}\n </dd>\n </div>\n </dl>\n {list.length ? (\n <ul className={styles.actionList} aria-label=\"Leader actions\">\n {list.map((a) => (\n <ActionRow key={a.id} action={a} actions={actions} />\n ))}\n </ul>\n ) : null}\n {memo.dryRun ? <p className={styles.muted}>Shadow stage: these actions are shown, never applied.</p> : null}\n {vetoable && !memo.dryRun ? (\n <button\n type=\"button\"\n className={styles.moreLink}\n disabled={actions.busy || actions.readOnly}\n onClick={() =>\n actions.act(() => postLeader({ action: 'veto-memo', memoId: memo.id }), 'Veto the whole memo', {\n confirm: {\n title: 'Veto the whole memo?',\n body: 'Every applied action is undone exactly and every scheduled one is cancelled. The Leader records the veto.',\n confirmLabel: 'Veto memo',\n destructive: true,\n },\n })\n }\n >\n Veto the whole memo\n </button>\n ) : null}\n </>\n )}\n </Card>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{a as e,n as t,s as n}from"./index-BVxOlseC.js";import{A as r,a as i,b as a,c as o,i as s,l as c,n as l,o as ee,s as u,t as d,u as f,y as p}from"./useChartWidth-owwodNVz.js";import{c as m,g as te,h,l as g,m as _,p as v,u as y,v as b}from"./colors-BZ3a9wFf.js";import{r as x,t as S}from"./format-DKrNjdwD.js";var C=n(e(),1),w={gauge:`_gauge_1y0vx_1`,readout:`_readout_1y0vx_8`,value:`_value_1y0vx_18`,unknownValue:`_unknownValue_1y0vx_24`,state:`_state_1y0vx_30`,caption:`_caption_1y0vx_43`,fit:`_fit_1y0vx_49`},T=t(),E={ok:`within limits`,warn:`near the limit`,danger:`at the limit`,unknown:`unknown`};function ne(e){let[t,n]=(0,C.useState)(0),[r,i]=(0,C.useState)(null);return(0,C.useLayoutEffect)(()=>{e.current!==r&&i(e.current)}),(0,C.useLayoutEffect)(()=>{let e=r;if(!e)return;let t=()=>{let t=Math.floor(e.getBoundingClientRect().width);n(e=>e===t?e:t)};if(t(),typeof ResizeObserver>`u`)return;let i=0,a=new ResizeObserver(()=>{cancelAnimationFrame(i),i=requestAnimationFrame(t)});return a.observe(e),()=>{cancelAnimationFrame(i),a.disconnect()}},[r]),t}function re(e,t){return e>0?Math.max(112,Math.min(t,Math.floor(e))):t}function D(e){return e===`danger`?b(`danger`):e===`warn`?b(`warning`):m}function O({title:e,description:t,caveat:n,status:i,value:s,warnAt:u=.7,dangerAt:d=.9,marker:f,caption:m,size:te=180,formatValue:h=e=>x(e),showState:g=!0}){let _=(0,C.useId)(),b=v((0,C.useId)()),S=(0,C.useRef)(null),O=re(ne(S),te),k=g?a(s,u,d):s===null?`unknown`:`ok`,A=Math.max(10,Math.round(O/12)),j=O/2-A/2-2,M=O/2,N=O/2,P=O/2+A/2+4,F=s===null?`unknown`:h(s),I=s===null?`${e}: unknown`:g?`${e}: ${F}, ${E[k]}`:`${e}: ${F}`,L=[{key:`value`,label:`Used`,value:F},...g?[{key:`state`,label:`State`,value:E[k]},{key:`warn`,label:`Warning at`,value:h(u)},{key:`danger`,label:`Limit at`,value:h(d)}]:[],...f?[{key:`marker`,label:f.label,value:h(f.value)}]:[]],R=[{key:`label`,label:`Measure`,render:e=>e.label},{key:`value`,label:`Value`,numeric:!0,render:e=>e.value}],z=f?r(M,N,j+A/2+3,Math.PI*(1-Math.min(1,Math.max(0,f.value)))):null,B=f?r(M,N,j-A/2-3,Math.PI*(1-Math.min(1,Math.max(0,f.value)))):null;return(0,T.jsx)(l,{title:e,description:t,caveat:n,status:i??{kind:`ready`},table:(0,T.jsx)(c,{caption:e,columns:R,rows:L,rowKey:e=>e.key}),children:(0,T.jsx)(`div`,{ref:S,className:w.fit,children:(0,T.jsxs)(`div`,{className:w.gauge,role:`meter`,"aria-label":e,"aria-valuemin":0,"aria-valuemax":1,"aria-valuenow":s===null?void 0:Math.min(1,Math.max(0,s)),"aria-valuetext":I,"aria-describedby":m?_:void 0,"data-severity":k,children:[(0,T.jsxs)(`svg`,{className:o.svg,width:O,height:P,viewBox:`0 0 ${O} ${P}`,"aria-hidden":`true`,children:[(0,T.jsx)(`defs`,{children:(0,T.jsx)(ee,{id:b})}),(0,T.jsx)(`path`,{"data-role":`track`,d:p(M,N,j,0,1),fill:`none`,stroke:s===null?`url(#${b})`:y,strokeWidth:A,strokeLinecap:`round`}),s!==null&&s>0?(0,T.jsx)(`path`,{"data-role":`fill`,d:p(M,N,j,0,Math.min(1,s)),fill:`none`,stroke:D(k),strokeWidth:A,strokeLinecap:`round`}):null,z&&B?(0,T.jsx)(`line`,{"data-role":`marker`,x1:B.x,y1:B.y,x2:z.x,y2:z.y,stroke:`var(--text-primary)`,strokeWidth:2,strokeLinecap:`round`}):null]}),(0,T.jsxs)(`div`,{className:w.readout,children:[(0,T.jsx)(`span`,{className:s===null?w.unknownValue:w.value,children:F}),g&&k!==`unknown`?(0,T.jsx)(`span`,{className:w.state,children:E[k]}):null,m?(0,T.jsx)(`span`,{id:_,className:w.caption,children:m}):null,f?(0,T.jsxs)(`span`,{className:w.caption,children:[f.label,`: `,h(f.value)]}):null]})]})})})}var k={scroll:`_scroll_1j5ed_3`,focus:`_focus_1j5ed_8`,num:`_num_1j5ed_17`};function A(e,t,n){let r=(t,n)=>{let r=e[t]?.[n];return r==null||!Number.isFinite(r)?null:r},i=e=>{let t=e.filter(e=>e!==null);return t.length?t.reduce((e,t)=>e+t,0):null},a=Array.from({length:t},(e,t)=>i(Array.from({length:n},(e,n)=>r(t,n)))),o=Array.from({length:n},(e,n)=>i(Array.from({length:t},(e,t)=>r(t,n)))),s=0;for(let e=0;e<t;e++)for(let t=0;t<n;t++)s=Math.max(s,r(e,t)??0);return{rows:a,columns:o,max:s,grand:i(a)}}var j=26,M=40,N=2,P=22,F=56;function I({title:e,description:t,caveat:n,status:r,rows:a,columns:p,values:m,unit:y=``,formatValue:b=S,showTotals:x=!0,defaultView:w,actions:E,width:ne,ariaLabel:re}){let D=(0,C.useRef)(null),O=d(D,ne),I=f(),[L,R]=(0,C.useState)(null),z=(0,C.useId)(),B=v((0,C.useId)()),V=y?` ${y}`:``,H=A(m,a.length,p.length),ie=H.grand!==null,ae=r??(a.length===0||p.length===0?{kind:`empty`}:ie?{kind:`ready`}:{kind:`unknown`,reason:`no cell in this matrix was measured.`}),U=Math.max(72,Math.min(150,Math.round(O*.24))),oe=x?74:0,W=x?M*.6:0,se=O-U-oe,G=Math.max(P,Math.min(112,Math.floor(se/Math.max(1,p.length))-N)),K=Math.max(P,Math.min(F,30)),q=U,J=W+j,Y=q+p.length*(G+N)+oe,ce=J+a.length*32,le=Math.max(1,...H.rows.map(e=>e??0)),ue=Math.max(1,...H.columns.map(e=>e??0)),de=G>=28,fe=Math.floor(U/(7*I)),X=(e,t)=>{let n=m[e]?.[t];return n==null||!Number.isFinite(n)?null:n},pe=e=>H.max>0?e/H.max:0,me=e=>e===null?`url(#${B})`:e<=0?_(0):h(pe(e)),he=e=>te(e<=0?0:pe(e)),ge=(e,t)=>{let n=X(e,t);return`${a[e].label} × ${p[t].label}: ${n===null?`not measured`:`${b(n)}${V}`}`};function _e(e){if(a.length===0||p.length===0)return;let t=L??{r:0,c:0},n=null;e.key===`ArrowRight`?n={r:t.r,c:t.c+1}:e.key===`ArrowLeft`?n={r:t.r,c:t.c-1}:e.key===`ArrowDown`?n={r:t.r+1,c:t.c}:e.key===`ArrowUp`?n={r:t.r-1,c:t.c}:e.key===`Home`?n={r:t.r,c:0}:e.key===`End`&&(n={r:t.r,c:p.length-1}),n&&(e.preventDefault(),R({r:Math.max(0,Math.min(a.length-1,n.r)),c:Math.max(0,Math.min(p.length-1,n.c))}))}let Z=null;for(let e=0;e<a.length;e++)for(let t=0;t<p.length;t++){let n=X(e,t);n!==null&&(!Z||n>Z.v)&&(Z={r:e,c:t,v:n})}let Q=a.length*p.length-m.flat().filter(e=>e!=null).length,ve=re??`${e}: ${a.length} × ${p.length} grid, ${H.grand===null?`nothing measured`:`${b(H.grand)}${V} in total`}`+(Z&&Z.v>0?`; most in ${a[Z.r].label} × ${p[Z.c].label} (${b(Z.v)})`:``)+(Q>0?`; ${Q} cell${Q===1?``:`s`} not measured`:``)+`.`,ye=a.map((e,t)=>({id:e.id,label:e.label,index:t})),be=[{key:`__row`,label:``,render:e=>e.label},...p.map((e,t)=>({key:e.id,label:e.label,numeric:!0,render:e=>{let n=X(e.index,t);return n===null?`—`:b(n)}})),{key:`__total`,label:`Total`,numeric:!0,render:e=>H.rows[e.index]===null?`—`:b(H.rows[e.index])}],$=L;return(0,T.jsx)(l,{title:e,description:t,caveat:n,status:ae,defaultView:w,actions:E,table:(0,T.jsx)(c,{caption:e,columns:be,rows:ye,rowKey:e=>e.id}),footer:(0,T.jsxs)(`div`,{className:o.legend,"aria-hidden":`true`,children:[(0,T.jsx)(`span`,{className:o.legendItem,children:`0`}),[0,1,2,3,4].map(e=>(0,T.jsx)(`span`,{className:o.swatch,style:{background:e===0?_(0):h(e/4)}},e)),(0,T.jsx)(`span`,{className:o.legendItem,children:H.max>0?b(H.max):`more`}),Q>0?(0,T.jsxs)(`span`,{className:o.legendItem,children:[(0,T.jsx)(`span`,{className:o.swatchHatch}),`not measured`]}):null]}),children:(0,T.jsxs)(`div`,{ref:D,className:`${o.plotWrap} ${o.focusable} ${k.scroll}`,tabIndex:0,role:`group`,"aria-label":`${e}. Use the arrow keys to move between cells.`,"aria-describedby":z,onFocus:()=>R(e=>e??{r:0,c:0}),onBlur:()=>R(null),onKeyDown:_e,children:[(0,T.jsxs)(`svg`,{className:o.svg,width:Y,height:ce,viewBox:`0 0 ${Y} ${ce}`,role:`img`,"aria-label":ve,children:[(0,T.jsx)(`defs`,{children:(0,T.jsx)(ee,{id:B})}),x?p.map((e,t)=>{let n=H.columns[t]??null,r=n===null?0:Math.max(n>0?2:0,n/ue*(W-4)),i=q+t*(G+N);return(0,T.jsx)(`g`,{"data-col-total":e.id,children:n===null?null:(0,T.jsx)(`rect`,{x:i+G*.2,y:W-r,width:G*.6,height:r,rx:2,fill:g})},`ct-${e.id}`)}):null,p.map((e,t)=>{let n=q+t*(G+N),r=Math.max(2,Math.floor((G-(e.engine?22:0))/7));return(0,T.jsxs)(`g`,{children:[e.engine?(0,T.jsx)(i,{engine:e.engine,x:n+2,y:W+5,height:14}):null,(0,T.jsx)(`text`,{className:o.label,x:n+(e.engine?24:G/2),y:W+j/2,dy:`0.32em`,textAnchor:e.engine?`start`:`middle`,children:e.label.length>r?`${e.label.slice(0,r-1)}…`:e.label})]},`ch-${e.id}`)}),a.map((e,t)=>{let n=J+t*32,r=H.rows[t]??null,i=r===null?0:Math.max(r>0?2:0,r/le*M),a=q+p.length*(G+N)+6;return(0,T.jsxs)(`g`,{"data-row":e.id,children:[(0,T.jsx)(`text`,{className:o.label,x:U-8,y:n+K/2,dy:`0.32em`,textAnchor:`end`,children:e.label.length>fe?`${e.label.slice(0,fe-1)}…`:e.label}),p.map((r,i)=>{let a=X(t,i),s=q+i*(G+N),c=$?.r===t&&$.c===i;return(0,T.jsxs)(`g`,{children:[(0,T.jsx)(`rect`,{"data-cell":`${e.id}:${r.id}`,"data-value":a===null?`unknown`:a,className:`${a===null?o.unknownMark:``} ${c?k.focus:``}`,x:a===null?s+.5:s,y:a===null?n+.5:n,width:a===null?G-1:G,height:a===null?29:K,rx:3,fill:me(a),onPointerEnter:()=>R({r:t,c:i}),onPointerLeave:()=>R(null)}),de&&a!==null?(0,T.jsx)(`text`,{"data-cell-value":`${e.id}:${r.id}`,className:k.num,x:s+G/2,y:n+K/2,dy:`0.32em`,textAnchor:`middle`,fill:he(a),children:b(a)}):null]},r.id)}),x?(0,T.jsxs)(`g`,{"data-row-total":e.id,children:[r===null?null:(0,T.jsx)(`rect`,{x:a,y:n+K*.25,width:i,height:K*.5,rx:2,fill:g}),(0,T.jsx)(`text`,{className:o.tick,x:a+i+4,y:n+K/2,dy:`0.32em`,children:r===null?`—`:b(r)})]}):null]},e.id)})]}),(0,T.jsx)(`span`,{id:z,className:o.srOnly,"aria-live":`polite`,children:$?ge($.r,$.c):``}),$?(0,T.jsx)(s,{left:u(q+$.c*(G+N)+G/2,Y,80),top:J+$.r*32,title:`${a[$.r].label} × ${p[$.c].label}`,rows:[{key:`v`,label:y||`Value`,value:X($.r,$.c)===null?null:b(X($.r,$.c))}]}):null]})})}export{O as n,I as t};
2
- //# sourceMappingURL=MatrixHeatmap-BgEUs2Eu.js.map
@@ -1,2 +0,0 @@
1
- import{n as e}from"./index-BVxOlseC.js";import{AppsSection as t}from"./AppsSection-Ddu_RCQE.js";var n=e();function r(){return(0,n.jsx)(t,{focusGroup:`mcp-servers`})}export{r as McpSection};
2
- //# sourceMappingURL=McpSection-DZkiOuoq.js.map
@@ -1,3 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/MessageMarkdownRenderer-DLBNLfsn.js","assets/index-BVxOlseC.js"])))=>i.map(i=>d[i]);
2
- import{a as e,n as t,s as n,t as r}from"./index-BVxOlseC.js";var i=n(e(),1),a={transcriptWrap:`_transcriptWrap_5y127_12`,scrollArea:`_scrollArea_5y127_14`,transcript:`_transcript_5y127_12`,list:`_list_5y127_31`,item:`_item_5y127_41`,skeleton:`_skeleton_5y127_43`,skeletonUser:`_skeletonUser_5y127_55`,loadError:`_loadError_5y127_58`,empty:`_empty_5y127_85`,emptyTitle:`_emptyTitle_5y127_86`,emptyBody:`_emptyBody_5y127_95`,user:`_user_5y127_100`,userText:`_userText_5y127_101`,assistant:`_assistant_5y127_115`,markdown:`_markdown_5y127_48`,codeHead:`_codeHead_5y127_210`,codeLang:`_codeLang_5y127_227`,copy:`_copy_5y127_226`,streaming:`_streaming_5y127_253`,"verse-caret":`_verse-caret_5y127_1`,tool:`_tool_5y127_267`,toolRun:`_toolRun_5y127_268`,toolLine:`_toolLine_5y127_270`,toolArg:`_toolArg_5y127_288`,toolState:`_toolState_5y127_288`,toolGlyph:`_toolGlyph_5y127_301`,toolName:`_toolName_5y127_314`,toolFailed:`_toolFailed_5y127_338`,toolBody:`_toolBody_5y127_341`,toolRunBody:`_toolRunBody_5y127_342`,toolRunList:`_toolRunList_5y127_349`,toolLabel:`_toolLabel_5y127_351`,toolLabelPath:`_toolLabelPath_5y127_361`,toolPre:`_toolPre_5y127_362`,toolPending:`_toolPending_5y127_377`,note:`_note_5y127_380`,noteError:`_noteError_5y127_388`,noteRecovered:`_noteRecovered_5y127_389`,noteLead:`_noteLead_5y127_396`,noteHint:`_noteHint_5y127_399`,jump:`_jump_5y127_411`,jumpUnseen:`_jumpUnseen_5y127_434`,turn:`_turn_5y127_457`,turnSettled:`_turnSettled_5y127_479`,turnItems:`_turnItems_5y127_488`,turnFoot:`_turnFoot_5y127_507`,"verse-flash":`_verse-flash_5y127_1`,turnErrorJump:`_turnErrorJump_5y127_549`,toolDelta:`_toolDelta_5y127_569`,toolAdd:`_toolAdd_5y127_577`,toolDel:`_toolDel_5y127_569`,toolNote:`_toolNote_5y127_580`,compaction:`_compaction_5y127_601`,compactionRule:`_compactionRule_5y127_606`,compactionText:`_compactionText_5y127_607`,compactionTitle:`_compactionTitle_5y127_615`,compactionNote:`_compactionNote_5y127_622`,continued:`_continued_5y127_625`,continuedLabel:`_continuedLabel_5y127_633`,continuedTitle:`_continuedTitle_5y127_634`,continuedLink:`_continuedLink_5y127_635`},o=t(),s=null,c=null;function l(){return c??=r(()=>import(`./MessageMarkdownRenderer-DLBNLfsn.js`).then(e=>s=e,e=>{throw c=null,e}),__vite__mapDeps([0,1])),c}typeof window<`u`&&l().catch(()=>void 0);function u(){let[e,t]=(0,i.useState)(s);return(0,i.useEffect)(()=>{if(e)return;let n=!0;return l().then(e=>{n&&t(e)},()=>void 0),()=>{n=!1}},[e]),e}function d({text:e}){return(0,o.jsx)(`div`,{className:a.markdown,"data-markdown-pending":``,children:(0,o.jsx)(`p`,{style:{whiteSpace:`pre-wrap`},children:e})})}var f=(0,i.memo)(function({text:e,streaming:t=!1}){let n=u();return n?(0,o.jsx)(n.RenderedMarkdown,{text:e,streaming:t}):(0,o.jsx)(d,{text:e})});export{a as n,f as t};
3
- //# sourceMappingURL=MessageMarkdown-BauY8ZTY.js.map
@@ -1,2 +0,0 @@
1
- import{a as e,n as t,s as n}from"./index-BVxOlseC.js";import{m as r,p as i}from"./global-oEl9Qj8u.js";import{t as a}from"./RefreshIndicator-CMwSCiz5.js";import{t as o}from"./AreaTrend-CDxrQU4b.js";import{n as s,t as c}from"./MatrixHeatmap-BgEUs2Eu.js";import{n as l}from"./viewport-nTubFCwf.js";import{r as u}from"./section-visibility-Yctxu-if.js";import{T as d,x as f}from"./VerseConsoleApp-DTjDpGCd.js";import{l as p}from"./format-BkWdOQDL.js";import{t as m}from"./nav-NVtnuG7A.js";import{a as h,d as g,l as _}from"./surface-data-DTI7LjvH.js";import{a as v,c as y,i as b,l as x,n as S,r as C,s as w,t as T,u as E}from"./mind.module-gTGAuJt1.js";import{n as D,t as O}from"./actions-tWevL9HV.js";import{a as k,i as A,n as j,r as M,t as N}from"./Surface-B75lVfzm.js";import{a as P,i as F,o as I,r as L,t as R}from"./LeaderCard-DZrmjDbI.js";var z=n(e(),1),B=t(),V={hit:`✓`,miss:`✗`,pending:`…`,ungraded:`—`};function H(e){let t=Date.parse(e);return Number.isFinite(t)?new Date(t).toLocaleDateString(`en-US`,{weekday:`short`,month:`short`,day:`numeric`}):`—`}function U({read:e,actions:t}){let n=e?.value??null,r=n?.timeline??[],i=n?.latest?.id??null,a=n?.latest?.actions.some(e=>P(n.actions.find(t=>t.id===e.id)??e))??!1;return(0,B.jsx)(N,{title:`Memos`,caption:n?`${r.length} in view · each move graded 7 days later`:void 0,children:e?n?r.length===0?(0,B.jsxs)(j,{children:[`No memos yet`,n.lastRun?` — last run: ${n.lastRun.reason??n.lastRun.outcome}`:``,`.`]}):(0,B.jsx)(`ol`,{className:T.timeline,children:r.map(e=>{let n=I(e),r=F(e.expectedDelta);return(0,B.jsxs)(`li`,{className:T.memo,"data-outcome":n,id:m(`memo-${e.id}`),children:[(0,B.jsx)(`span`,{className:T.memoDay,children:H(e.at)}),(0,B.jsx)(`span`,{className:T.mark,"data-outcome":n,"aria-hidden":`true`,children:V[n]}),(0,B.jsxs)(`div`,{className:T.memoBody,children:[(0,B.jsx)(`span`,{className:T.memoMove,children:e.move??(e.status===`ok`?`No move`:`No memo (${e.status.replace(/-/g,` `)})`)}),e.bottleneck?(0,B.jsxs)(`span`,{className:T.memoWhy,children:[`Bottleneck: `,e.bottleneck]}):null,(0,B.jsxs)(`span`,{className:T.memoMeta,children:[r?`Expected ${r}`:`No expected delta`,` · `,(0,B.jsx)(`span`,{"data-outcome":n,children:n===`hit`||n===`miss`?`${L[n]} (actual ${e.outcome?.actualDelta===null||e.outcome?.actualDelta===void 0?`—`:`${e.outcome.actualDelta>=0?`+`:``}${e.outcome.actualDelta}`})`:L[n]}),` · ${e.actionCount} action${e.actionCount===1?``:`s`}`]})]}),e.id===i&&a?(0,B.jsx)(`button`,{type:`button`,className:T.veto,"aria-label":`Veto the memo of ${H(e.at)}`,disabled:t.busy||t.readOnly,onClick:()=>t.act(()=>_({action:`veto-memo`,memoId:e.id}),`Veto the whole memo`,{confirm:{title:`Veto this memo?`,body:`Every applied action is undone exactly and every scheduled one is cancelled. The Leader records the veto.`,confirmLabel:`Veto memo`,destructive:!0}}),children:`Veto`}):null]},e.id)})}):(0,B.jsx)(j,{tone:`unknown`,children:e.reason??`The Leader did not answer.`}):(0,B.jsx)(`p`,{className:T.muted,"aria-busy":`true`,children:`Reading the Leader…`})})}function W({read:e}){let t=e?.value??null,n=t?.hitRate??null,r=(t?.standards??[]).filter(e=>e.retiredAt===null);return(0,B.jsxs)(`div`,{className:T.stack,children:[(0,B.jsx)(s,{title:`Leader hit rate`,description:n?`${n.hits} of ${n.graded} graded moves · ${n.windowDays} days`:void 0,status:e?t?void 0:{kind:`unknown`,reason:e.reason??`the Leader did not answer.`}:{kind:`loading`},value:n?.rate??null,showState:!1,caption:n&&n.rate===null?`nothing graded yet — moves are graded 7 days after they are made`:void 0,size:180}),(0,B.jsx)(N,{title:`Standards`,caption:t?`${r.length} in force`:void 0,children:t?r.length===0?(0,B.jsx)(j,{children:`No standards yet.`}):(0,B.jsx)(`ul`,{className:T.standards,children:r.map(e=>(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{className:T.standardRule,children:e.rule}),(0,B.jsxs)(`span`,{className:T.standardMeta,children:[e.appliesTo,` · `,e.source===`mason`?`yours`:`Leader`,` · `,p(e.addedAt)]})]},e.id))}):(0,B.jsx)(j,{tone:`unknown`,children:e?.reason??`The Leader did not answer.`})})]})}var G={high:`High`,warn:`Worth a look`,info:`FYI`};function K({place:e}){return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{className:T.insightPlace,title:e.full,children:e.label}),e.scratch?(0,B.jsx)(`span`,{className:T.scratchTag,title:`A scratch folder under the system temp directory`,children:`scratch`}):null]})}function q({insights:e,reason:t,loading:n=!1,places:r}){return n?(0,B.jsx)(`p`,{className:T.muted,"aria-busy":`true`,children:`Reading the reasoning digest…`}):t===null?e.length===0?(0,B.jsx)(j,{children:`No loops, repeated failures or verification gaps in the last 30 days.`}):(0,B.jsx)(`ul`,{className:T.insights,"aria-label":`Reasoning insights`,children:e.map(e=>{let t=e.repo?r?.get(e.repo)??y(e.repo):null,n=p(e.lastAt),i=[e.engine,`${e.count}×`,n===`—`?null:`last seen ${n}`].filter(Boolean).join(` · `);return(0,B.jsxs)(`li`,{className:T.insight,"data-severity":e.severity,children:[(0,B.jsxs)(`span`,{className:T.insightKind,children:[(0,B.jsx)(A,{children:S[e.kind]}),(0,B.jsx)(`span`,{className:T.insightSeverity,"data-severity":e.severity,children:G[e.severity]})]}),(0,B.jsx)(`span`,{className:T.insightTitle,children:e.title}),(0,B.jsxs)(`span`,{className:T.insightMeta,children:[t?(0,B.jsx)(K,{place:t}):null,t&&i?` · `:null,i]})]},e.id)})}):(0,B.jsx)(j,{tone:`unknown`,children:t})}function J({read:e,actions:t}){let n=e?.value??null,r=n?.actions??[];return(0,B.jsx)(N,{title:`Action log`,caption:n?`Newest first · Veto runs the recorded inverse`:void 0,children:e?n?r.length===0?(0,B.jsx)(j,{children:`The Leader has not acted yet.`}):(0,B.jsx)(`ul`,{className:T.log,"aria-label":`Leader actions`,children:r.map(e=>(0,B.jsx)(R,{action:e,actions:t},e.id))}):(0,B.jsx)(j,{tone:`unknown`,children:e.reason??`The Leader did not answer.`}):(0,B.jsx)(`p`,{className:T.muted,"aria-busy":`true`,children:`Reading the action log…`})})}var Y=6e4,X=3e5;function Z(){let{compact:e}=l(),t=i(h),n=i(g,{freshMs:6e4}),s=r(h),p=r(g);u(()=>{s(),p()},Y);let _=D(),y=(0,z.useId)(),S=i(f,{freshMs:X}),A=i(d,{freshMs:X}),j=n.data?.value??null,P=(0,z.useMemo)(()=>b(j),[j]),F=(0,z.useMemo)(()=>E(A.data?.workspaces,S.data?.projects),[A.data,S.data]),I=(0,z.useMemo)(()=>x(j?j.insights.flatMap(e=>e.repo?[e.repo]:[]):[],F),[j,F]),L=e=>{let t=I.get(e);return t?`${t.label}${t.scratch?` · scratch`:``}`:e},[R,V]=(0,z.useState)(null),H=R!==null&&P.includes(R)?R:null,G=(0,z.useMemo)(()=>C(j,H),[j,H]),K=w(j),Z=v(j),Q=(e,t)=>n.data?j?e?{kind:`ready`}:{kind:`empty`,message:t}:{kind:`unknown`,reason:n.data.reason??`the reasoning digest did not answer.`}:{kind:`loading`},$=j?j.totals.steps>0:!1;return(0,B.jsxs)(k,{title:`Mind`,actions:[t,n].some(e=>e.status===`refreshing`)?(0,B.jsx)(a,{}):null,lead:(0,B.jsx)(O,{actions:_}),children:[(0,B.jsx)(M,{span:8,children:(0,B.jsx)(U,{read:t.data,actions:_})}),(0,B.jsx)(M,{span:4,children:(0,B.jsx)(W,{read:t.data})}),(0,B.jsx)(M,{span:12,children:(0,B.jsx)(N,{title:`What the reasoning shows`,caption:j?`Last 30 days · ${j.totals.steps.toLocaleString(`en-US`)} reasoning steps across ${j.totals.sessions} sessions`:void 0,children:(0,B.jsx)(`div`,{id:m(`insights`),children:(0,B.jsx)(q,{insights:K,places:I,loading:!n.data,reason:!n.data||j?null:n.data.reason??`The reasoning digest did not answer.`})})})}),(0,B.jsx)(M,{span:8,children:(0,B.jsx)(c,{title:`Insights by kind and engine`,description:H?`In ${L(H)}`:`All repos · 30 days`,status:Q($&&G.columns.length>0,`No reasoning was recorded in the last 30 days.`),rows:G.rows,columns:G.columns,values:G.values,unit:`insights`,defaultView:e?`table`:`chart`,actions:P.length>1?(0,B.jsxs)(`label`,{className:T.facet,htmlFor:y,children:[`Repo`,(0,B.jsxs)(`select`,{id:y,value:H??``,onChange:e=>V(e.target.value||null),children:[(0,B.jsx)(`option`,{value:``,children:`All`}),P.map(e=>(0,B.jsx)(`option`,{value:e,title:e,children:L(e)},e))]})]}):null})}),(0,B.jsx)(M,{span:4,children:(0,B.jsx)(o,{title:`Struggles and wins`,description:`Per day · days with no reasoning are gaps`,status:Q($,`No reasoning was recorded in the last 30 days.`),series:Z,height:200})}),(0,B.jsx)(M,{span:12,children:(0,B.jsx)(J,{read:t.data,actions:_})}),_.dialogs]})}export{Y as MIND_POLL_MS,Z as MindSection};
2
- //# sourceMappingURL=MindSection-BvJXFjyX.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MindSection-BvJXFjyX.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/mind/MindCards.tsx","../../../../../../src/web-ui/routes/verse/sections/MindSection.tsx"],"sourcesContent":["/**\n * routes/verse/mind/MindCards.tsx — Mind's cards (SPEC-310B §6, SPEC-310C §5;\n * unit C7): the memo timeline with each move's 7-day outcome ✓/✗ and Veto,\n * the hit-rate gauge with the standards, three A7 insight cards and the\n * action log. Everything the Leader or A7 wrote is untrusted text: rendered\n * as plain text, never as markdown or a link.\n */\nimport type { ReasoningInsight } from '../../../../core/reasoning/types.js';\nimport type { LeaderAction, LeaderStateV1 } from '../../../../core/vision/leader-types.js';\nimport { Gauge } from '../../../components/charts/Gauge.js';\nimport { UNKNOWN, formatRelative } from '../autonomy/format.js';\nimport type { SurfaceActions } from '../command/actions.js';\nimport { ActionRow } from '../command/LeaderCard.js';\nimport { anchorId } from '../command/nav.js';\nimport { Card, CardNote, MicroLabel } from '../command/Surface.js';\nimport { postLeader, type OptionalRead } from '../command/surface-data.js';\nimport { KIND_LABEL } from './mind-model.js';\nimport { OUTCOME_WORD, expectedDeltaText, isVetoable, outcomeMark } from './leader-model.js';\nimport { projectLabel, type ProjectLabel } from './project-label.js';\nimport styles from './mind.module.css';\n\nconst MARK: Record<ReturnType<typeof outcomeMark>, string> = { hit: '✓', miss: '✗', pending: '…', ungraded: '—' };\n\nfunction dayHeading(iso: string): string {\n const t = Date.parse(iso);\n return Number.isFinite(t) ? new Date(t).toLocaleDateString('en-US', { weekday: 'short', month: 'short', day: 'numeric' }) : '—';\n}\n\nexport function MemoTimeline({ read, actions }: { read: OptionalRead<LeaderStateV1> | undefined; actions: SurfaceActions }) {\n const state = read?.value ?? null;\n const memos = state?.timeline ?? [];\n const latestId = state?.latest?.id ?? null;\n const latestVetoable = state?.latest?.actions.some((a) => isVetoable(state.actions.find((x) => x.id === a.id) ?? a)) ?? false;\n return (\n <Card title=\"Memos\" caption={state ? `${memos.length} in view · each move graded 7 days later` : undefined}>\n {!read ? (\n <p className={styles.muted} aria-busy=\"true\">Reading the Leader…</p>\n ) : !state ? (\n <CardNote tone=\"unknown\">{read.reason ?? 'The Leader did not answer.'}</CardNote>\n ) : memos.length === 0 ? (\n <CardNote>No memos yet{state.lastRun ? ` — last run: ${state.lastRun.reason ?? state.lastRun.outcome}` : ''}.</CardNote>\n ) : (\n <ol className={styles.timeline}>\n {memos.map((m) => {\n const mark = outcomeMark(m);\n const delta = expectedDeltaText(m.expectedDelta);\n return (\n <li key={m.id} className={styles.memo} data-outcome={mark} id={anchorId(`memo-${m.id}`)}>\n <span className={styles.memoDay}>{dayHeading(m.at)}</span>\n <span className={styles.mark} data-outcome={mark} aria-hidden=\"true\">{MARK[mark]}</span>\n <div className={styles.memoBody}>\n <span className={styles.memoMove}>{m.move ?? (m.status === 'ok' ? 'No move' : `No memo (${m.status.replace(/-/g, ' ')})`)}</span>\n {m.bottleneck ? <span className={styles.memoWhy}>Bottleneck: {m.bottleneck}</span> : null}\n <span className={styles.memoMeta}>\n {delta ? `Expected ${delta}` : 'No expected delta'}\n {' · '}\n <span data-outcome={mark}>\n {mark === 'hit' || mark === 'miss'\n ? `${OUTCOME_WORD[mark]} (actual ${m.outcome?.actualDelta === null || m.outcome?.actualDelta === undefined ? '—' : `${m.outcome.actualDelta >= 0 ? '+' : ''}${m.outcome.actualDelta}`})`\n : OUTCOME_WORD[mark]}\n </span>\n {` · ${m.actionCount} action${m.actionCount === 1 ? '' : 's'}`}\n </span>\n </div>\n {m.id === latestId && latestVetoable ? (\n <button\n type=\"button\"\n className={styles.veto}\n aria-label={`Veto the memo of ${dayHeading(m.at)}`}\n disabled={actions.busy || actions.readOnly}\n onClick={() =>\n actions.act(() => postLeader({ action: 'veto-memo', memoId: m.id }), 'Veto the whole memo', {\n confirm: {\n title: 'Veto this memo?',\n body: 'Every applied action is undone exactly and every scheduled one is cancelled. The Leader records the veto.',\n confirmLabel: 'Veto memo',\n destructive: true,\n },\n })\n }\n >\n Veto\n </button>\n ) : null}\n </li>\n );\n })}\n </ol>\n )}\n </Card>\n );\n}\n\nexport function HitRateCard({ read }: { read: OptionalRead<LeaderStateV1> | undefined }) {\n const state = read?.value ?? null;\n const hr = state?.hitRate ?? null;\n const standards = (state?.standards ?? []).filter((s) => s.retiredAt === null);\n return (\n <div className={styles.stack}>\n <Gauge\n title=\"Leader hit rate\"\n description={hr ? `${hr.hits} of ${hr.graded} graded moves · ${hr.windowDays} days` : undefined}\n status={!read ? { kind: 'loading' } : !state ? { kind: 'unknown', reason: read.reason ?? 'the Leader did not answer.' } : undefined}\n value={hr?.rate ?? null}\n showState={false}\n caption={hr && hr.rate === null ? 'nothing graded yet — moves are graded 7 days after they are made' : undefined}\n size={180}\n />\n <Card title=\"Standards\" caption={state ? `${standards.length} in force` : undefined}>\n {!state ? (\n <CardNote tone=\"unknown\">{read?.reason ?? 'The Leader did not answer.'}</CardNote>\n ) : standards.length === 0 ? (\n <CardNote>No standards yet.</CardNote>\n ) : (\n <ul className={styles.standards}>\n {standards.map((s) => (\n <li key={s.id}>\n <span className={styles.standardRule}>{s.rule}</span>\n <span className={styles.standardMeta}>\n {s.appliesTo} · {s.source === 'mason' ? 'yours' : 'Leader'} · {formatRelative(s.addedAt)}\n </span>\n </li>\n ))}\n </ul>\n )}\n </Card>\n </div>\n );\n}\n\nconst SEVERITY_WORD = { high: 'High', warn: 'Worth a look', info: 'FYI' } as const;\n\n/**\n * Where the insight happened: the project's name, the full path only in the\n * tooltip, and a quiet `scratch` tag for a folder under the OS temp dir\n * (project-label.ts). Plain text, never a link.\n */\nfunction InsightPlace({ place }: { place: ProjectLabel }) {\n return (\n <>\n <span className={styles.insightPlace} title={place.full}>{place.label}</span>\n {place.scratch ? (\n <span className={styles.scratchTag} title=\"A scratch folder under the system temp directory\">scratch</span>\n ) : null}\n </>\n );\n}\n\nexport function InsightCards({\n insights,\n reason,\n loading = false,\n places,\n}: {\n insights: ReasoningInsight[];\n reason: string | null;\n loading?: boolean;\n /** Labels for the insights' repos (MindSection builds them once for the cards and the facet). */\n places?: ReadonlyMap<string, ProjectLabel>;\n}) {\n if (loading) return <p className={styles.muted} aria-busy=\"true\">Reading the reasoning digest…</p>;\n if (reason !== null) return <CardNote tone=\"unknown\">{reason}</CardNote>;\n if (insights.length === 0) {\n return <CardNote>No loops, repeated failures or verification gaps in the last 30 days.</CardNote>;\n }\n return (\n <ul className={styles.insights} aria-label=\"Reasoning insights\">\n {insights.map((i) => {\n const place = i.repo ? (places?.get(i.repo) ?? projectLabel(i.repo)) : null;\n const seen = formatRelative(i.lastAt);\n const rest = [i.engine, `${i.count}×`, seen === UNKNOWN ? null : `last seen ${seen}`].filter(Boolean).join(' · ');\n return (\n <li key={i.id} className={styles.insight} data-severity={i.severity}>\n <span className={styles.insightKind}>\n <MicroLabel>{KIND_LABEL[i.kind]}</MicroLabel>\n <span className={styles.insightSeverity} data-severity={i.severity}>{SEVERITY_WORD[i.severity]}</span>\n </span>\n <span className={styles.insightTitle}>{i.title}</span>\n <span className={styles.insightMeta}>\n {place ? <InsightPlace place={place} /> : null}\n {place && rest ? ' · ' : null}\n {rest}\n </span>\n </li>\n );\n })}\n </ul>\n );\n}\n\nexport function ActionLog({ read, actions }: { read: OptionalRead<LeaderStateV1> | undefined; actions: SurfaceActions }) {\n const state = read?.value ?? null;\n const list: LeaderAction[] = state?.actions ?? [];\n return (\n <Card title=\"Action log\" caption={state ? 'Newest first · Veto runs the recorded inverse' : undefined}>\n {!read ? (\n <p className={styles.muted} aria-busy=\"true\">Reading the action log…</p>\n ) : !state ? (\n <CardNote tone=\"unknown\">{read.reason ?? 'The Leader did not answer.'}</CardNote>\n ) : list.length === 0 ? (\n <CardNote>The Leader has not acted yet.</CardNote>\n ) : (\n <ul className={styles.log} aria-label=\"Leader actions\">\n {list.map((a) => (\n <ActionRow key={a.id} action={a} actions={actions} />\n ))}\n </ul>\n )}\n </Card>\n );\n}\n","/**\n * routes/verse/sections/MindSection.tsx — ⌘4 Mind: what did the Leader\n * decide, and was it right? (SPEC-310B §6, SPEC-310C §5; unit C7)\n *\n * Memo timeline with 7-day outcomes ✓/✗ and Veto (8) | Hit-rate gauge + standards (4)\n * Three A7 insight cards (12)\n * Insight matrix kind × engine, per repo (8) | Reasoning trends (4)\n * Action log with Veto (12)\n *\n * At 375 px one column in that order, and the matrix starts on its table\n * (a 6 × 4 grid of 22 px cells says less than its table on a phone).\n */\nimport { useId, useMemo, useState } from 'react';\nimport { AreaTrend } from '../../../components/charts/AreaTrend.js';\nimport type { ChartStatus } from '../../../components/charts/ChartFrame.js';\nimport { MatrixHeatmap } from '../../../components/charts/MatrixHeatmap.js';\nimport { RefreshIndicator } from '../../../components/primitives/RefreshIndicator.js';\nimport { useQuery, useRefetch } from '../../../data/hooks.js';\nimport { ActionStatus, useSurfaceActions } from '../command/actions.js';\nimport { anchorId } from '../command/nav.js';\nimport { Card, Cell, Surface } from '../command/Surface.js';\nimport { leaderQuery, reasoningDigestQuery } from '../command/surface-data.js';\nimport { usePollWhileVisible } from '../shell/section-visibility.js';\nimport { useViewport } from '../shell/viewport.js';\nimport { verseBootstrapQuery, verseWorkspacesQuery } from '../verse-queries.js';\nimport { ActionLog, HitRateCard, InsightCards, MemoTimeline } from '../mind/MindCards.js';\nimport { insightMatrix, insightRepos, reasoningTrendSeries, topInsights } from '../mind/mind-model.js';\nimport { projectLabels, projectNames } from '../mind/project-label.js';\nimport styles from '../mind/mind.module.css';\n\nexport const MIND_POLL_MS = 60_000;\nconst NAMES_FRESH_MS = 5 * 60_000;\n\nexport function MindSection() {\n const { compact } = useViewport();\n const leader = useQuery(leaderQuery);\n const digest = useQuery(reasoningDigestQuery, { freshMs: 60_000 });\n const refetchLeader = useRefetch(leaderQuery);\n const refetchDigest = useRefetch(reasoningDigestQuery);\n usePollWhileVisible(() => {\n refetchLeader();\n refetchDigest();\n }, MIND_POLL_MS);\n const actions = useSurfaceActions();\n const facetId = useId();\n\n // Registered project names for the insight cards and the Repo facet. Both\n // reads are normally already cached by Chat (bootstrap on first paint, saved\n // projects in its sidebar) and names rarely change, so a cached answer up\n // to 5 minutes old is used as-is; either missing just means folder names.\n const bootstrap = useQuery(verseBootstrapQuery, { freshMs: NAMES_FRESH_MS });\n const saved = useQuery(verseWorkspacesQuery, { freshMs: NAMES_FRESH_MS });\n\n const d = digest.data?.value ?? null;\n // The facet offers one entry per folder; the labels cover every spelling an\n // insight recorded (`/tmp/x` and `/private/tmp/x` read the same), so a card\n // and the facet always agree.\n const repos = useMemo(() => insightRepos(d), [d]);\n const names = useMemo(() => projectNames(saved.data?.workspaces, bootstrap.data?.projects), [saved.data, bootstrap.data]);\n const places = useMemo(() => projectLabels(d ? d.insights.flatMap((i) => (i.repo ? [i.repo] : [])) : [], names), [d, names]);\n const placeText = (r: string) => {\n const p = places.get(r);\n return p ? `${p.label}${p.scratch ? ' · scratch' : ''}` : r;\n };\n const [repo, setRepo] = useState<string | null>(null);\n const facet = repo !== null && repos.includes(repo) ? repo : null;\n const matrix = useMemo(() => insightMatrix(d, facet), [d, facet]);\n const top = topInsights(d);\n const trends = reasoningTrendSeries(d);\n\n const digestStatus = (hasData: boolean, empty: string): ChartStatus =>\n !digest.data ? { kind: 'loading' } : !d ? { kind: 'unknown', reason: digest.data.reason ?? 'the reasoning digest did not answer.' } : hasData ? { kind: 'ready' } : { kind: 'empty', message: empty };\n const reasoned = d ? d.totals.steps > 0 : false;\n\n return (\n <Surface title=\"Mind\" actions={[leader, digest].some((q) => q.status === 'refreshing') ? <RefreshIndicator /> : null} lead={<ActionStatus actions={actions} />}>\n <Cell span={8}>\n <MemoTimeline read={leader.data} actions={actions} />\n </Cell>\n <Cell span={4}>\n <HitRateCard read={leader.data} />\n </Cell>\n <Cell span={12}>\n <Card title=\"What the reasoning shows\" caption={d ? `Last 30 days · ${d.totals.steps.toLocaleString('en-US')} reasoning steps across ${d.totals.sessions} sessions` : undefined}>\n <div id={anchorId('insights')}>\n <InsightCards insights={top} places={places} loading={!digest.data} reason={!digest.data || d ? null : (digest.data.reason ?? 'The reasoning digest did not answer.')} />\n </div>\n </Card>\n </Cell>\n <Cell span={8}>\n <MatrixHeatmap\n title=\"Insights by kind and engine\"\n description={facet ? `In ${placeText(facet)}` : 'All repos · 30 days'}\n status={digestStatus(reasoned && matrix.columns.length > 0, 'No reasoning was recorded in the last 30 days.')}\n rows={matrix.rows}\n columns={matrix.columns}\n values={matrix.values}\n unit=\"insights\"\n defaultView={compact ? 'table' : 'chart'}\n actions={\n repos.length > 1 ? (\n <label className={styles.facet} htmlFor={facetId}>\n Repo\n <select id={facetId} value={facet ?? ''} onChange={(e) => setRepo(e.target.value || null)}>\n <option value=\"\">All</option>\n {repos.map((r) => (\n <option key={r} value={r} title={r}>\n {placeText(r)}\n </option>\n ))}\n </select>\n </label>\n ) : null\n }\n />\n </Cell>\n <Cell span={4}>\n <AreaTrend\n title=\"Struggles and wins\"\n description=\"Per day · days with no reasoning are gaps\"\n status={digestStatus(reasoned, 'No reasoning was recorded in the last 30 days.')}\n series={trends}\n height={200}\n />\n </Cell>\n <Cell span={12}>\n <ActionLog read={leader.data} actions={actions} />\n </Cell>\n {actions.dialogs}\n </Surface>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{a as e,n as t,o as n,s as r}from"./index-BVxOlseC.js";import{f as i}from"./global-oEl9Qj8u.js";import{t as a}from"./Dialog-BS9Dxi3G.js";var o=r(e(),1),s={body:`_body_1kukj_1`,form:`_form_1kukj_8`,label:`_label_1kukj_14`,inputRow:`_inputRow_1kukj_19`,input:`_input_1kukj_19`,reveal:`_reveal_1kukj_40`,error:`_error_1kukj_51`,actions:`_actions_1kukj_56`,cancel:`_cancel_1kukj_63`,submit:`_submit_1kukj_72`},c=n({MutationTokenDialog:()=>d}),l=t(),u=/^[a-f0-9]{64}$/;function d({open:e,onClose:t,onUnlocked:n,reason:r,tokenLabel:c=`Mutation token`,tokenHelp:d=`the mutation token ashlr serve printed`}){let{setToken:f}=i(),[p,m]=(0,o.useState)(``),[h,g]=(0,o.useState)(!1),[_,v]=(0,o.useState)(null),y=(0,o.useRef)(null),b=(0,o.useId)(),x=(0,o.useId)();function S(e){e.preventDefault();let r=p.trim();if(!u.test(r)){v(`Expected 64 hex characters — ${d}.`);return}f(r),m(``),v(null),t(),n?.()}return(0,l.jsxs)(a,{open:e,onClose:t,titleId:b,title:`Unlock actions`,initialFocusRef:y,children:[(0,l.jsxs)(`p`,{className:s.body,children:[r??`This action mutates the fleet and requires the dispatch token.`,` It is held in memory only, for this browser tab, and is cleared automatically after 20 minutes idle.`]}),(0,l.jsxs)(`form`,{onSubmit:S,className:s.form,noValidate:!0,children:[(0,l.jsx)(`label`,{htmlFor:x,className:s.label,children:c}),(0,l.jsxs)(`div`,{className:s.inputRow,children:[(0,l.jsx)(`input`,{ref:y,id:x,type:h?`text`:`password`,autoComplete:`off`,autoCorrect:`off`,spellCheck:!1,className:s.input,value:p,onChange:e=>m(e.target.value),"aria-invalid":_?!0:void 0,placeholder:`64 hex characters`}),(0,l.jsx)(`button`,{type:`button`,className:s.reveal,onClick:()=>g(e=>!e),"aria-pressed":h,children:h?`Hide`:`Show`})]}),_?(0,l.jsx)(`p`,{className:s.error,role:`alert`,children:_}):null,(0,l.jsxs)(`div`,{className:s.actions,children:[(0,l.jsx)(`button`,{type:`button`,className:s.cancel,onClick:t,children:`Cancel`}),(0,l.jsx)(`button`,{type:`submit`,className:s.submit,disabled:p.trim().length===0,children:`Unlock`})]})]})]})}export{c as n,d as t};
2
- //# sourceMappingURL=MutationTokenDialog-mxrw0Yvy.js.map
@@ -1,2 +0,0 @@
1
- import{a as e,i as t,n,s as r}from"./index-BVxOlseC.js";import{D as i,F as a,U as o,W as s,a as c,i as l,k as u,l as d,o as f,p as ee,s as p}from"./global-oEl9Qj8u.js";import{t as m}from"./focus-trap-HtcoXeEq.js";import{t as h}from"./Epistemic-dhvDTwAZ.js";import{n as g}from"./StatusBadge-HCZp416_.js";import{h as te}from"./queries-CYisSAAB.js";import{r as _,t as ne}from"./mutations-C5S7okTW.js";import{t as v}from"./MutationTokenDialog-mxrw0Yvy.js";import{t as y}from"./ConfirmDialog-DLrLKM0c.js";import{r as b}from"./RouteErrorBoundary-DYtwc2ja.js";import{t as x}from"./RefreshIndicator-CMwSCiz5.js";import{t as S}from"./DiffViewer-BpH56302.js";import{l as C}from"./command-catalog-Bb_PxC5w.js";import{b as w,n as T}from"./workbench-types-DzN-5trg.js";import{i as E,n as D,r as re}from"./guarded-action-OzqcPjmh.js";import{n as O}from"./viewport-nTubFCwf.js";import{C as k,S as A,b as j,g as M,r as N,s as P,t as F}from"./verse-ui-store-62DxpVHS.js";import{F as I,I as L,N as R,x as z}from"./VerseConsoleApp-DTjDpGCd.js";import{v as B}from"./format-BkWdOQDL.js";import{n as ie,t as V}from"./Button-HHXgoXGr.js";import{c as H,x as ae}from"./icons-DEQa2rTx.js";import{a as oe}from"./verse-icons-F9VwX07_.js";import{C as U,D as W,E as G,S as K,T as q,_ as se,a as J,b as ce,c as le,d as ue,f as de,g as fe,h as pe,i as me,l as he,m as ge,n as _e,o as ve,p as ye,r as Y,s as be,t as xe,u as Se,v as Ce,w as we,x as Te,y as Ee}from"./NeedsYouList-CzDZbzRD.js";var X=r(e(),1),De=r(t(),1),Z={layout:`_layout_141uy_8`,listPane:`_listPane_141uy_9`,detailPane:`_detailPane_141uy_10`,filters:`_filters_141uy_12`,filterField:`_filterField_141uy_13`,filterLabel:`_filterLabel_141uy_14`,filterSelect:`_filterSelect_141uy_31`,count:`_count_141uy_46`,rows:`_rows_141uy_48`,row:`_row_141uy_48`,rowActive:`_rowActive_141uy_63`,riskRule:`_riskRule_141uy_68`,rowTitle:`_rowTitle_141uy_72`,rowMeta:`_rowMeta_141uy_73`,rowMetaMono:`_rowMetaMono_141uy_82`,rowAge:`_rowAge_141uy_83`,riskWord:`_riskWord_141uy_84`,detail:`_detail_141uy_10`,detailHead:`_detailHead_141uy_91`,eyebrow:`_eyebrow_141uy_92`,detailTitle:`_detailTitle_141uy_95`,project:`_project_141uy_109`,runFacts:`_runFacts_141uy_110`,diffStats:`_diffStats_141uy_112`,runSource:`_runSource_141uy_113`,hint:`_hint_141uy_114`,detailMeta:`_detailMeta_141uy_115`,summary:`_summary_141uy_117`,block:`_block_141uy_119`,blockTitle:`_blockTitle_141uy_120`,defs:`_defs_141uy_129`,muted:`_muted_141uy_133`,failedChecks:`_failedChecks_141uy_134`,actions:`_actions_141uy_136`,actionNote:`_actionNote_141uy_137`,reject:`_reject_141uy_138`,approve:`_approve_141uy_139`,decided:`_decided_141uy_155`,empty:`_empty_141uy_157`,emptyStrong:`_emptyStrong_141uy_158`,error:`_error_141uy_159`,skeletons:`_skeletons_141uy_160`},Q=n(),Oe={"judge-ship-would-merge":{label:`Ship (would merge)`,tone:`success`},"judge-ship-review-required":{label:`Ship (review required)`,tone:`success`},"judge-review":{label:`Review`,tone:`warning`},"judge-noise":{label:`Noise`,tone:`neutral`},"judge-harmful":{label:`Harmful`,tone:`danger`},"judge-verdict-unrecognized":{label:`Unrecognized verdict`,tone:`unknown`},"judge-parse-failure":{label:`Judge parse failure — not a review`,tone:`unknown`},"judge-network-failure":{label:`Judge network failure — not a review`,tone:`unknown`}};function ke(e){let t=e.filter(e=>e.action===`judged`&&e.judgeReasonCode);return t.length===0?null:t.reduce((e,t)=>Date.parse(t.ts)>Date.parse(e.ts)?t:e)}function Ae({id:e,dispatchEnabled:t,onDispatchDisabled:n,onDecided:r}){let i=ee(te(e)),[a,o]=(0,X.useState)(null),[s,c]=(0,X.useState)(!1),[d,f]=(0,X.useState)(!1),[m,b]=(0,X.useState)(!1),[C,w]=(0,X.useState)(null);function T(e){w(null),o(e),f(!0)}function E(){c(!1),u()?(f(!0),O()):o(null)}function re(){if(a){if(!u()){f(!1),c(!0);return}O()}}async function O(){if(a){b(!0),w(null);try{a===`approve`?await ne(e):await _(e),f(!1),o(null),r()}catch(e){e instanceof p?(f(!1),o(null),n()):w(D(e))}finally{b(!1)}}}if(i.status===`loading`)return(0,Q.jsxs)(`div`,{className:Z.detail,children:[(0,Q.jsx)(l,{width:`55%`}),(0,Q.jsx)(l,{width:`30%`}),(0,Q.jsx)(l,{width:`88%`})]});if(i.status===`error`||!i.data)return(0,Q.jsx)(`p`,{className:Z.error,role:`alert`,children:i.error?.message??`Could not load this proposal.`});let k=i.data,A=k.decisionEvidence,j=ke(A?.decisions??[]),M=j?.judgeReasonCode?Oe[j.judgeReasonCode]:null,N=k.status===`pending`&&t,P=Ee(k),F=se(k.kind,k.repo),I=G(k.title),L=W(k.repo),R=we(k.summary),z=R?R.rest:k.summary?B(k.summary):null;return(0,Q.jsxs)(`div`,{className:Z.detail,children:[(0,Q.jsxs)(`header`,{className:Z.detailHead,children:[(0,Q.jsxs)(`p`,{className:Z.eyebrow,children:[Te(k.kind),I.eyebrow?` \u00b7 ${I.eyebrow}`:``]}),(0,Q.jsx)(`h3`,{className:Z.detailTitle,title:k.title,children:I.text}),(0,Q.jsxs)(`div`,{className:Z.detailMeta,children:[(0,Q.jsx)(g,{status:k.status}),L?(0,Q.jsx)(`span`,{className:Z.project,title:k.repo??void 0,children:L}):(0,Q.jsx)(`span`,{children:`no repository`}),(0,Q.jsx)(`span`,{children:k.riskClass?`${k.riskClass} risk`:`risk unstated`}),P?(0,Q.jsx)(`code`,{title:`The model that produced this change`,children:P}):null,(0,Q.jsxs)(`span`,{title:K(k.createdAt),children:[`created `,U(k.createdAt)]}),k.decidedAt?(0,Q.jsxs)(`span`,{title:K(k.decidedAt),children:[`decided `,U(k.decidedAt)]}):null,i.status===`refreshing`?(0,Q.jsx)(x,{}):null]}),R?(0,Q.jsxs)(`p`,{className:Z.runFacts,children:[(0,Q.jsx)(`span`,{className:Z.diffStats,"aria-hidden":`true`,children:ce(R)}),(0,Q.jsx)(`span`,{className:`visually-hidden`,children:Ce(R)}),(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,Q.jsxs)(`span`,{className:Z.runSource,title:R.sourceHint??void 0,children:[R.partial?`Partial · `:``,R.sourceLabel]}),P===null?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,Q.jsx)(`code`,{title:`The model that produced this change`,children:R.model})]}):null]}):null,z?(0,Q.jsx)(`p`,{className:Z.summary,children:z}):null]}),(0,Q.jsxs)(`section`,{className:Z.block,"aria-label":`Evidence`,children:[(0,Q.jsx)(`h4`,{className:Z.blockTitle,children:`Evidence`}),(0,Q.jsxs)(`dl`,{className:Z.defs,children:[(0,Q.jsx)(`dt`,{children:`Judge verdict`}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(h,{quality:A?.sourceQuality,label:`judge verdict`,children:M&&j?.judgeReasonCode?(0,Q.jsx)(g,{status:j.judgeReasonCode,tone:M.tone,children:M.label}):(0,Q.jsx)(`span`,{className:Z.muted,children:`not yet judged`})})}),(0,Q.jsx)(`dt`,{children:`Verification`}),(0,Q.jsx)(`dd`,{children:k.verifyResult?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(g,{status:k.verifyResult.passed?`success`:`failed`,children:k.verifyResult.passed?`passed`:`failed`}),k.verifyResult.ran&&k.verifyResult.ran.length>0?(0,Q.jsxs)(`span`,{className:Z.muted,children:[` · ran `,k.verifyResult.ran.map(e=>e.kind).join(`, `)]}):null,!k.verifyResult.passed&&k.verifyResult.failureCategory&&k.verifyResult.failureCategory!==`code`?(0,Q.jsxs)(`span`,{className:Z.muted,children:[` · `,k.verifyResult.failureCategory,` failure — the verifier itself, not the diff`]}):null,k.verifyResult.failed&&k.verifyResult.failed.length>0?(0,Q.jsxs)(`p`,{className:Z.failedChecks,children:[`failed: `,k.verifyResult.failed.join(`, `)]}):null]}):(0,Q.jsx)(`span`,{className:Z.muted,children:`not verified`})}),k.decisionReason?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Decision reason`}),(0,Q.jsx)(`dd`,{children:B(k.decisionReason)})]}):null,k.evidenceOutcome?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Gates`}),(0,Q.jsxs)(`dd`,{className:Z.muted,children:[k.evidenceOutcome.gateCount??0,` gate`,k.evidenceOutcome.gateCount===1?``:`s`,k.evidenceOutcome.policyAction?` · policy ${k.evidenceOutcome.policyAction}`:``,k.evidenceOutcome.trustBasis?` · trust ${k.evidenceOutcome.trustBasis}`:``]})]}):null,k.result?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Result`}),(0,Q.jsx)(`dd`,{children:B(k.result)})]}):null]})]}),(0,Q.jsxs)(`section`,{className:Z.block,"aria-label":`Provenance`,children:[(0,Q.jsx)(`h4`,{className:Z.blockTitle,children:`Provenance`}),(0,Q.jsxs)(`dl`,{className:Z.defs,children:[(0,Q.jsx)(`dt`,{children:`Produced by`}),(0,Q.jsx)(`dd`,{children:P?(0,Q.jsx)(`code`,{children:P}):(0,Q.jsx)(`span`,{className:Z.muted,children:`unknown engine`})}),(0,Q.jsx)(`dt`,{children:`Origin`}),(0,Q.jsx)(`dd`,{children:k.origin}),R?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`How it was made`}),(0,Q.jsxs)(`dd`,{children:[(0,Q.jsx)(`span`,{title:R.sourceHint??void 0,children:R.sourceLabel}),R.sourceHint?(0,Q.jsx)(`p`,{className:Z.hint,children:R.sourceHint}):null]})]}):null,k.repo?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Repository`}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(`code`,{children:k.repo})})]}):null,k.workItemId?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Work item`}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(`code`,{children:k.workItemId})})]}):null,k.runId?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Run`}),(0,Q.jsx)(`dd`,{children:(0,Q.jsx)(`code`,{children:k.runId})})]}):null,(0,Q.jsx)(`dt`,{children:`Attestation`}),(0,Q.jsxs)(`dd`,{className:Z.muted,children:[k.producerProvenanceSig?`signed by the sandboxed producer (v${k.producerProvenanceVersion??2})`:k.provenanceSig?`legacy signature present`:`unsigned — earns no positive routing credit`,k.diffHash?` · diff hashed at signing time`:``]})]})]}),(0,Q.jsxs)(`section`,{className:Z.block,"aria-label":`Diff`,children:[(0,Q.jsx)(`h4`,{className:Z.blockTitle,children:`Diff`}),(0,Q.jsx)(S,{diff:k.diff,proposalKind:k.kind})]}),k.status===`pending`?(0,Q.jsxs)(`footer`,{className:Z.actions,children:[(0,Q.jsx)(`p`,{className:Z.actionNote,children:t?F:`Read-only session — approve and reject are unavailable without dispatch.`}),C&&!d?(0,Q.jsx)(`p`,{className:Z.error,role:`alert`,children:C}):null,(0,Q.jsx)(`button`,{type:`button`,className:Z.reject,disabled:!N||m,onClick:()=>T(`reject`),children:`Reject`}),(0,Q.jsx)(`button`,{type:`button`,className:Z.approve,disabled:!N||m,onClick:()=>T(`approve`),children:`Approve…`})]}):(0,Q.jsxs)(`footer`,{className:Z.decided,children:[`This proposal is already `,(0,Q.jsx)(`strong`,{children:k.status}),` — no further action is available.`]}),(0,Q.jsx)(v,{open:s,onClose:E,reason:a===`approve`?`Approving a proposal writes to a real repository and requires the dispatch token.`:`Rejecting a proposal requires the dispatch token.`,tokenHelp:`the mutation token ashlr verse printed`}),(0,Q.jsx)(y,{open:d,onClose:()=>{f(!1),o(null),w(null)},title:a===`approve`?`Approve this ${k.kind} against ${L??`the repository`}?`:`Reject this proposal?`,body:a===`approve`?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`strong`,{children:I.text}),(0,Q.jsx)(`br`,{}),Te(k.kind),` · `,(0,Q.jsx)(`strong`,{children:L??`unknown repository`}),k.repo?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`br`,{}),(0,Q.jsx)(`code`,{children:k.repo})]}):null,(0,Q.jsx)(`br`,{}),(0,Q.jsx)(`br`,{}),F,q(k.kind)?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`br`,{}),(0,Q.jsx)(`br`,{}),`This one leaves your machine.`]}):null]}):(0,Q.jsxs)(Q.Fragment,{children:[`This rejects `,(0,Q.jsx)(`strong`,{children:I.text}),` and discards it. It stays in history as rejected and is never applied.`]}),confirmLabel:a===`approve`?`Approve and ${q(k.kind)?`open the pull request`:`apply`}`:`Reject`,destructive:a===`approve`,busy:m,error:C,onConfirm:re})]})}var $=new Map,je=new Set;function Me(){for(let e of[...je])e()}function Ne(e,t=Date.now()){$=new Map($).set(e,t),Me()}function Pe(e,t=Date.now()){let n=!1,r=new Map($);for(let[i,a]of r)(!e.has(i)||t-a>6e4)&&(r.delete(i),n=!0);n&&($=r,Me())}function Fe(){return(0,X.useSyncExternalStore)(e=>(je.add(e),()=>je.delete(e)),()=>$,()=>$)}function Ie(e){Ne(e.id),e.source===`approvals`&&(o(`inbox`),o(`dashboard-snapshot`),s(`inbox-list:`),e.target.kind===`approval`&&o(`proposal-detail-${e.target.proposalId}`)),I()}function Le(e,t,n){let r=t.request;if(!r){n.openTarget(e);return}if(!w(r.path)){n.toast(`That action points outside this app and was not sent.`,`danger`);return}let o=be(e,t),s=ue(e).text,c=async()=>{let e=i();if(!e)throw new f(`Mutation token was rejected.`,401,r.path);await d(r.path,r.body,e),a()},l=me.has(t.kind)||o!==null;E({title:o?.title??t.label,body:o?.body??s,confirmLabel:o?.confirmLabel??t.label,destructive:t.destructive,token:!0,tokenReason:`${t.label} changes state on this machine and requires the dispatch token.`,skipConfirm:!l,run:c,onDone:()=>{Ie(e),n.toast(`${t.label}: ${s}`,`success`)},onError:l?void 0:e=>n.toast(e,`danger`)})}var Re={"drawer.approve":`approve`,"drawer.reject":`reject`,"drawer.veto":`veto`,"drawer.done":`done`};function ze(e){return e instanceof HTMLElement?e.isContentEditable||/^(INPUT|TEXTAREA|SELECT)$/.test(e.tagName):!1}function Be(){let e=R(),t=L(),n=b(),r=ee(z),{compact:i}=O(),a=Fe(),o=(0,X.useId)(),s=(0,X.useRef)(null),l=(0,X.useRef)(null),u=(0,X.useRef)(null),[d,f]=(0,X.useState)(null),[p,h]=(0,X.useState)(null),[g,te]=(0,X.useState)(!1),[_,ne]=(0,X.useState)(()=>Date.now());(0,X.useEffect)(()=>{let e=setInterval(()=>ne(Date.now()),15e3);return()=>clearInterval(e)},[]);let v=t.data,y=v?.needsYou;(0,X.useEffect)(()=>{y&&Pe(new Set(y.map(e=>e.id)))},[y]);let x=(0,X.useMemo)(()=>(y??[]).filter(e=>!a.has(e.id)),[y,a]),S=e.needsYouSplit,w=(0,X.useMemo)(()=>he(x,S),[x,S]),T=(0,X.useMemo)(()=>ge(x),[x]),E=pe(v?.sources??null,S),D=(r.data?.dispatchEnabled??!0)&&!g,j=e.needsYouFocus;(0,X.useEffect)(()=>{if(!j)return;let e=x.find(e=>e.id===j);e&&(f(e.id),h(e.id))},[j,x]),(0,X.useEffect)(()=>{if(w.length===0){d!==null&&f(null);return}(!d||!w.some(e=>e.id===d))&&f(w[0].id)},[w,d]);let N=p?x.find(e=>e.id===p)??null:null;(0,X.useEffect)(()=>{p&&!N&&h(null)},[p,N]);let B=(0,X.useCallback)(()=>h(null),[]),V=(0,X.useCallback)(()=>{re()||document.querySelector(`[aria-modal="true"]:not([data-verse-overlay])`)||(p?B():P())},[p,B]);m({open:!0,containerRef:s,onClose:V,initialFocusRef:l});let H=(0,X.useRef)(!1);(0,X.useEffect)(()=>{p?(H.current=!0,u.current?.focus({preventScroll:!0})):H.current&&(H.current=!1,l.current?.focus({preventScroll:!0}))},[p]);let U=w.length>0;(0,X.useEffect)(()=>{if(!U||p)return;let e=document.activeElement;(e===null||e===document.body||e===s.current)&&l.current?.focus({preventScroll:!0})},[U,p]);let W=(0,X.useCallback)(e=>{let t=e.target;switch(t.kind){case`approval`:f(e.id),h(e.id);return;case`session`:P(),M(t.sessionId);return;case`section`:P(),k(t.section,t.anchor);return;case`seat`:P(),k(`apps`,`seat:${t.seatId}`);return;case`url`:window.open(t.url,`_blank`,`noopener,noreferrer`);return;default:return}},[]),G=(0,X.useCallback)((e,t)=>{let r=ve(e,t);if(!r){n.show(`Nothing to ${t} on this item.`,`neutral`);return}if(!D&&r.request){n.show("This server was started without dispatch — run `ashlr verse` to act.",`neutral`);return}Le(e,r,{openTarget:W,toast:n.show})},[D,W,n]);function K(e){if(w.length===0)return;let t=Math.max(0,w.findIndex(e=>e.id===d)),n=w[(t+e+w.length)%w.length];f(n.id),p&&h(n.id)}function q(e){let t=F.indexOf(S),n=F[(t+e+F.length)%F.length];A(n),h(null)}function se(e){if(e.defaultPrevented||ze(e.target)||!(e.target instanceof Node)||!s.current?.contains(e.target))return;let t=C(e.nativeEvent,[`drawer`]);if(!t||t.id===`drawer.open`&&e.target instanceof HTMLButtonElement)return;e.preventDefault(),e.stopPropagation();let n=w.find(e=>e.id===(p??d))??null;switch(t.id){case`drawer.next`:K(1);return;case`drawer.prev`:K(-1);return;case`drawer.split-next`:q(1);return;case`drawer.split-prev`:q(-1);return;case`drawer.open`:n&&h(n.id);return;default:{let e=Re[t.id];e&&n&&G(n,e)}}}let ce=!v&&(t.status===`loading`||t.status===`idle`),ue=!v&&t.status===`unavailable`;return(0,De.createPortal)((0,Q.jsx)(`div`,{className:Y.backdrop,onMouseDown:e=>e.target===e.currentTarget&&P(),children:(0,Q.jsxs)(`div`,{ref:s,role:`dialog`,"aria-modal":`true`,"aria-labelledby":o,className:Y.panel,"data-presentation":i?`full`:`side`,"data-verse-overlay":`needs-you`,"data-scope":`drawer`,tabIndex:-1,onKeyDown:se,children:[(0,Q.jsxs)(`header`,{className:Y.head,children:[(0,Q.jsxs)(`h2`,{id:o,className:Y.title,children:[`Needs you`,v?(0,Q.jsx)(`span`,{className:Y.titleCount,children:T.all}):null]}),(0,Q.jsx)(ie,{variant:`ghost`,size:`sm`,icon:(0,Q.jsx)(ae,{}),"aria-label":`Close Needs you`,onClick:P})]}),(0,Q.jsx)(`div`,{role:`tablist`,"aria-label":`Splits`,className:Y.splits,onKeyDown:e=>{(e.key===`ArrowRight`||e.key===`ArrowLeft`)&&(e.preventDefault(),q(e.key===`ArrowRight`?1:-1))},children:F.map(e=>(0,Q.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":e===S,tabIndex:e===S?0:-1,className:Y.split,onClick:()=>{A(e),h(null)},children:[J[e],(0,Q.jsx)(`span`,{className:Y.splitCount,"aria-label":`${T[e]} items`,children:T[e]})]},e))}),(0,Q.jsxs)(`div`,{className:Y.body,children:[N?(0,Q.jsxs)(`div`,{ref:u,className:Y.detail,tabIndex:-1,"aria-label":`Item detail`,children:[(0,Q.jsxs)(`button`,{type:`button`,className:Y.back,onClick:B,children:[`‹ All `,J[S].toLowerCase()]}),N.target.kind===`approval`?(0,Q.jsx)(`div`,{className:Y.approval,children:(0,Q.jsx)(Ae,{id:N.target.proposalId,dispatchEnabled:D,onDispatchDisabled:()=>te(!0),onDecided:()=>{Ne(N.id),I(),B()}},N.target.proposalId)}):(0,Q.jsx)(We,{item:N,now:_,seats:r.data?.seats??Ue,onAct:G,onOpenTarget:W,dispatchEnabled:D})]}):ce?(0,Q.jsxs)(`div`,{className:Y.loading,role:`status`,"aria-label":`Loading`,children:[(0,Q.jsx)(c,{}),(0,Q.jsx)(c,{}),(0,Q.jsx)(c,{})]}):ue?(0,Q.jsxs)(`div`,{className:Y.empty,children:[(0,Q.jsx)(`p`,{className:Y.emptyTitle,children:`Needs you isn't available on this server`}),(0,Q.jsx)(`p`,{className:Y.emptyBody,children:`This build does not report activity yet, so nothing here can be vouched for. Approvals still work from the inbox.`})]}):w.length===0?(0,Q.jsx)(Ve,{coverageText:le(E),vouched:E.vouched,autonomyLabel:v?.autonomy?.label??null,split:S}):(0,Q.jsx)(xe,{ref:l,items:w,selectedId:d,onSelect:f,onOpen:e=>{f(e),h(e)},now:_,label:`${J[S]} needing you`}),w.length===0&&!N?(0,Q.jsx)(`div`,{ref:l,tabIndex:-1,className:Y.focusSink,"aria-hidden":`true`}):null]}),i?null:(0,Q.jsxs)(`footer`,{className:Y.foot,"aria-hidden":`true`,children:[(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`kbd`,{className:Y.key,children:`J`}),(0,Q.jsx)(`kbd`,{className:Y.key,children:`K`}),` move`]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`kbd`,{className:Y.key,children:(0,Q.jsx)(oe,{})}),` open`]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`kbd`,{className:Y.key,children:`A`}),` approve`]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`kbd`,{className:Y.key,children:`R`}),` reject`]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`kbd`,{className:Y.key,children:`V`}),` veto`]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`kbd`,{className:Y.key,children:`E`}),` done`]}),(0,Q.jsxs)(`span`,{children:[(0,Q.jsx)(`kbd`,{className:Y.key,children:`H`}),(0,Q.jsx)(`kbd`,{className:Y.key,children:`L`}),` splits`]})]}),!E.vouched&&w.length>0?(0,Q.jsxs)(`p`,{className:Y.caveat,role:`note`,children:[le(E),` — this list may be incomplete.`]}):null]})}),document.body)}function Ve({vouched:e,coverageText:t,autonomyLabel:n,split:r}){return e?(0,Q.jsxs)(`div`,{className:Y.empty,"data-state":`clear`,children:[(0,Q.jsx)(`span`,{className:Y.clearMark,"aria-hidden":`true`}),(0,Q.jsx)(`p`,{className:Y.emptyTitle,children:`All clear`}),(0,Q.jsx)(`p`,{className:Y.emptyBody,children:n?`Fleet: ${n}.`:`Nothing is waiting on you.`})]}):(0,Q.jsxs)(`div`,{className:Y.empty,"data-state":`unknown`,children:[(0,Q.jsxs)(`p`,{className:Y.emptyTitle,children:[`Nothing to show`,r===`all`?``:` in ${J[r]}`,` — but it isn't an all-clear`]}),(0,Q.jsxs)(`p`,{className:Y.emptyBody,children:[t,`.`]})]})}var He=e=>{switch(e.target.kind){case`session`:return`Open chat`;case`section`:return`Open ${j(e.target.section).label}`;case`seat`:return`Open Apps & Accounts`;case`url`:return`Open on GitHub`;default:return null}},Ue=[];function We({item:e,now:t,seats:n,onAct:r,onOpenTarget:i,dispatchEnabled:a}){let o=He(e),s=Se(e,t),c=e.subject.seatId?ye(n,e.subject.seatId):null,l=s.run?de(n,s.run.model,e.subject.seatId):null;return(0,Q.jsxs)(`article`,{className:Y.item,children:[(0,Q.jsxs)(`header`,{className:Y.itemHead,children:[s.kindLabel?(0,Q.jsx)(`p`,{className:Y.rowKind,children:s.kindLabel}):null,(0,Q.jsx)(`h3`,{className:Y.itemTitle,title:s.fullTitle,children:s.title}),s.run?(0,Q.jsx)(_e,{run:s.run}):null]}),s.detail?(0,Q.jsx)(`p`,{className:Y.itemDetail,children:s.detail}):null,(0,Q.jsxs)(`dl`,{className:Y.defs,children:[s.repo?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Repo`}),(0,Q.jsx)(`dd`,{className:Y.repo,title:s.repoFull,children:s.repo})]}):null,e.subject.pr?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Pull request`}),(0,Q.jsxs)(`dd`,{children:[`#`,e.subject.pr]})]}):null,c?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Seat`}),(0,Q.jsx)(`dd`,{className:c.raw?void 0:Y.mono,title:c.raw,children:c.text})]}):null,l?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Model`}),(0,Q.jsx)(`dd`,{className:l.raw?void 0:Y.mono,title:l.raw,children:l.text})]}):null,(0,Q.jsx)(`dt`,{children:`Raised`}),(0,Q.jsx)(`dd`,{title:s.ageStamp,children:s.age}),e.expiresAt?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{children:`Closes`}),(0,Q.jsx)(`dd`,{className:Y.deadline,children:fe(e.expiresAt,t)})]}):null]}),(0,Q.jsxs)(`div`,{className:Y.itemActions,children:[o?(0,Q.jsx)(V,{variant:`subtle`,size:`sm`,onClick:()=>i(e),trailingIcon:e.target.kind===`url`?(0,Q.jsx)(H,{}):void 0,children:o}):null,e.actions.map(t=>{let n=T[t.kind],i=t.request!==null;return(0,Q.jsxs)(V,{size:`sm`,variant:t.destructive?`danger`:t.kind===`approve`?`primary`:`subtle`,disabled:i&&!a,onClick:()=>r(e,t.kind),"aria-keyshortcuts":n,children:[t.label,n?(0,Q.jsx)(`kbd`,{className:Y.inlineKey,"aria-hidden":`true`,children:n}):null]},t.kind)})]}),a?null:(0,Q.jsx)(`p`,{className:Y.caveat,children:"Read-only session — actions need `ashlr verse`."})]})}export{Be as NeedsYouDrawer,N as VERSE_ANCHOR_EVENT};
2
- //# sourceMappingURL=NeedsYouDrawer-CO-Balfp.js.map
@@ -1,2 +0,0 @@
1
- import{a as e,n as t,s as n}from"./index-BVxOlseC.js";import{i as r,n as i}from"./workbench-types-DzN-5trg.js";import{_ as a,f as o,m as s,n as c}from"./verse-model-DyCwZF-M.js";var l=n(e(),1);function u(e,t){let n=p(t)??`the target repository`;switch(e){case`pr`:return`Pushes a branch to ${n}'s remote and opens a real pull request. Other people can see it immediately, and this dialog cannot undo it.`;case`patch`:return`Writes the diff to ${n} on disk now. Nothing is pushed, but the working tree changes.`;default:return`Applies this ${String(e)} proposal to ${n} now.`}}function d(e){return e===`pr`}function f(e){return e.engineModel?e.engineModel:e.engineTier?e.engineTier:null}function p(e){if(typeof e!=`string`)return null;let t=e.trim().replace(/\/+$/,``);if(t.length===0)return null;let n=t.slice(t.lastIndexOf(`/`)+1);return n.length>0?n:t}var m={patch:`Patch`,pr:`Pull request`,deploy:`Deploy`,note:`Note`,"desktop-action":`Desktop action`,"browser-action":`Browser action`};function h(e){return m[e]??String(e)}function g(e){return e.length===0?e:e.charAt(0).toUpperCase()+e.slice(1)}function _(e){let t=e.toLowerCase();return Object.prototype.hasOwnProperty.call(c,t)?c[t]:g(t)}function v(e){let t=e;return(t.match(/"/g)??[]).length%2==1&&(t+=`"`),(t.match(/\u201c/g)??[]).length>(t.match(/\u201d/g)??[]).length&&(t+=`”`),t}function y(e){let t=e.replace(/(?:\u2026|\.\.\.)$/,``),n=t.lastIndexOf(` `);return`${(n>0?t.slice(0,n):t).replace(/[\s,;:\-\u2013\u2014]+$/,``)}\u2026`}function b(e){let t=typeof e==`string`?e.trim():``,n=/^(\[partial\]\s*)?(claude|codex|grok|local|ollama|gemini|api[\w-]*) run:\s*(.*)$/is.exec(t),r=n?`${n[1]?`Partial `:``}${_(n[2])} run`:null,i=n?n[3]:t,a=/[\p{L}\p{N}](?:\u2026|\.\.\.)$/u.test(i),o=n!==null&&i.length>=80&&!/[.!?)"'\u201d\u2026]$/.test(i),s=a||o;return s&&(i=y(i)),i=v(i),{eyebrow:r,text:i.length>0?i:t,truncated:s}}var x=/^(Partial )?(.+?) (\S+) run produced (\d+) file\(s\) \(\+(\d+)\/-(\d+)\)\.?\s*([\s\S]*)$/,S=`TITRR — Test, Iterate, Test, Refine, Repeat: after its change the run re-ran the repository’s tests and repaired the change until they passed or it ran out of attempts.`;function C(e){if(/\bTITRR\b/.test(e)){let t=e.replace(/\bTITRR\b\s*/,``).trim();return{label:`Test-and-repair loop${t===`api-model`?` (API model)`:t===`api-model required-diff`?` (API model, retried for a missing diff)`:t===`api-model failed producer`?` (API model, producer failed)`:t.length>0?` (${t})`:``}`,hint:S}}return/^best-of-n/i.test(e)?{label:e,hint:`Several models attempted this change in parallel; a judge compared them.`}:e===`api-model`?{label:`API model run`,hint:null}:e===`Sandboxed`?{label:`Sandboxed run`,hint:`Produced in an isolated sandbox checkout; nothing touched your working tree.`}:{label:e,hint:null}}function w(e){if(typeof e!=`string`)return null;let t=x.exec(e.trim());if(!t)return null;let{label:n,hint:r}=C(t[2]),i=t[7].trim();return{partial:t[1]!==void 0,source:t[2],sourceLabel:n,sourceHint:r,model:t[3],files:Number(t[4]),insertions:Number(t[5]),deletions:Number(t[6]),rest:i.length>0?i:null}}function T(e){let t=e=>e.toLocaleString(`en-US`);return`${t(e.files)} ${e.files===1?`file`:`files`} \u00b7 +${t(e.insertions)} \u2212${t(e.deletions)}`}function E(e){let t=e=>e.toLocaleString(`en-US`);return`${t(e.files)} ${e.files===1?`file`:`files`} changed, ${t(e.insertions)} ${e.insertions===1?`line`:`lines`} added, ${t(e.deletions)} removed`}function D(e,t=Date.now()){if(typeof e!=`string`)return`at an unknown time`;let n=Date.parse(e);if(!Number.isFinite(n))return`at an unknown time`;let r=Math.max(0,Math.round((t-n)/1e3));if(r<45)return`just now`;let i=new Intl.RelativeTimeFormat(`en`,{numeric:`auto`}),a=Math.round(r/60);if(a<60)return i.format(-a,`minute`);let o=Math.round(a/60);if(o<24)return i.format(-o,`hour`);let s=Math.round(o/24);return s<=60?i.format(-s,`day`):`on ${new Date(n).toLocaleDateString(`en-US`,{month:`short`,day:`numeric`,year:`numeric`})}`}function O(e){if(typeof e!=`string`)return;let t=Date.parse(e);if(Number.isFinite(t))return new Date(t).toLocaleString([],{weekday:`short`,month:`short`,day:`numeric`,year:`numeric`,hour:`numeric`,minute:`2-digit`})}var k={all:`All`,approvals:`Approvals`,fleet:`Fleet`,chats:`Chats`,accounts:`Accounts`},A={all:[`approvals`,`authority`,`fleet`,`leader`,`chats`,`accounts`],approvals:[`approvals`,`fleet`,`leader`],fleet:[`authority`,`fleet`,`leader`],chats:[`chats`],accounts:[`accounts`]},j={approvals:`the approvals inbox`,authority:`the autonomy grant`,fleet:`the fleet`,leader:`the Leader`,chats:`chats`,accounts:`account health`};function M(e,t){return t===`all`?[...e]:e.filter(e=>r[e.kind]===t)}function N(e){let t={all:e.length,approvals:0,fleet:0,chats:0,accounts:0};for(let n of e)t[r[n.kind]]+=1;return t}function P(e,t){let n=[];for(let r of A[t]){let t=e?.[r]??`unavailable`;t!==`ok`&&n.push({source:r,name:j[r],state:t})}return{vouched:n.length===0,silent:n}}function F(e){let t=e.silent.map(e=>e.state===`error`?`${e.name} failed to answer`:`${e.name} isn't reporting in this build`);return t.length===0?``:t.length===1?I(t[0]):I(`${t.slice(0,-1).join(`, `)} and ${t[t.length-1]}`)}function I(e){return e.charAt(0).toUpperCase()+e.slice(1)}var L=new Set([`approve`,`reject`,`veto`]);function R(e,t){return e.actions.find(e=>e.kind===t)??null}var z={approve:{title:`Approve this?`,confirmLabel:`Approve`},reject:{title:`Reject this?`,confirmLabel:`Reject`},veto:{title:`Veto this action?`,confirmLabel:`Veto`}};function B(e,t){if(t.confirm)return t.confirm;if(t.kind===`approve`||t.kind===`reject`||t.kind===`veto`){let n=z[t.kind];return{title:n.title,body:H(e).text,confirmLabel:n.confirmLabel}}return null}var V=/^(PR|[a-z][a-z-]*):\s+([\s\S]+)$/;function H(e){let t=null,n=e.title;if(e.kind===`approval`){let r=V.exec(e.title.trim());r&&(t=r[1]===`PR`?`pr`:r[1],n=r[2])}let r=b(n),i=[t===null?null:h(t),r.eyebrow].filter(e=>e!==null);return{kindLabel:i.length>0?i.join(` · `):null,text:r.text}}function U(e,t=Date.now()){let n=H(e),r=w(e.detail),i=p(e.subject.repo);return{kindLabel:n.kindLabel,title:n.text,fullTitle:e.title,run:r?{stats:T(r),statsSpoken:E(r),source:r.sourceLabel,sourceHint:r.sourceHint,partial:r.partial,model:r.model}:null,detail:r?r.rest:e.detail,repo:i,repoFull:i!==null&&e.subject.repo!==null&&e.subject.repo!==i?e.subject.repo:void 0,age:D(e.since,t),ageStamp:O(e.since)}}function W(e,t=Date.now()){let n=Date.parse(e);if(!Number.isFinite(n))return`—`;let r=Math.round((n-t)/1e3);if(r<=0)return`expired`;if(r<90)return`in ${r}s`;let i=Math.round(r/60);if(i<90)return`in ${i}m`;let a=Math.round(i/60);return a<48?`in ${a}h`:`in ${Math.round(a/24)}d`}function G(e,t){let n=a(e,t)?.label;return n&&n!==t?{text:n,raw:t}:{text:t,raw:void 0}}function K(e,t,n){let r=t.indexOf(`:`),i=r>0?t.slice(0,r):``,a=o(i)?i:null,c=a?t.slice(r+1):t,l=[...n?[n]:[],...e.filter(e=>e.id!==n&&(a===null||e.engine===a)).map(e=>e.id)];for(let n of l){let r=s(e,{seatId:n,model:c})?.label;if(r&&r!==t)return{text:r,raw:t}}return{text:t,raw:void 0}}var q={backdrop:`_backdrop_r8c4w_4`,fade:`_fade_r8c4w_1`,panel:`_panel_r8c4w_14`,slide:`_slide_r8c4w_1`,rise:`_rise_r8c4w_1`,head:`_head_r8c4w_33`,title:`_title_r8c4w_43`,titleCount:`_titleCount_r8c4w_54`,splits:`_splits_r8c4w_62`,split:`_split_r8c4w_62`,splitCount:`_splitCount_r8c4w_86`,body:`_body_r8c4w_98`,rows:`_rows_r8c4w_106`,row:`_row_r8c4w_106`,rule:`_rule_r8c4w_125`,rowMain:`_rowMain_r8c4w_133`,rowKind:`_rowKind_r8c4w_138`,rowTitle:`_rowTitle_r8c4w_151`,runFacts:`_runFacts_r8c4w_164`,diffStats:`_diffStats_r8c4w_173`,runSource:`_runSource_r8c4w_174`,repo:`_repo_r8c4w_176`,rowMeta:`_rowMeta_r8c4w_178`,severity:`_severity_r8c4w_187`,mono:`_mono_r8c4w_196`,deadline:`_deadline_r8c4w_197`,rowKeys:`_rowKeys_r8c4w_199`,key:`_key_r8c4w_201`,inlineKey:`_inlineKey_r8c4w_202`,loading:`_loading_r8c4w_218`,empty:`_empty_r8c4w_220`,emptyTitle:`_emptyTitle_r8c4w_228`,emptyBody:`_emptyBody_r8c4w_235`,clearMark:`_clearMark_r8c4w_243`,focusSink:`_focusSink_r8c4w_263`,detail:`_detail_r8c4w_265`,back:`_back_r8c4w_4`,approval:`_approval_r8c4w_279`,item:`_item_r8c4w_281`,itemHead:`_itemHead_r8c4w_282`,itemTitle:`_itemTitle_r8c4w_284`,itemDetail:`_itemDetail_r8c4w_292`,defs:`_defs_r8c4w_299`,itemActions:`_itemActions_r8c4w_310`,foot:`_foot_r8c4w_312`,caveat:`_caveat_r8c4w_324`},J=t();function Y({run:e}){return(0,J.jsxs)(`span`,{className:q.runFacts,children:[(0,J.jsx)(`span`,{className:q.diffStats,"aria-hidden":`true`,children:e.stats}),(0,J.jsx)(`span`,{className:`visually-hidden`,children:e.statsSpoken}),(0,J.jsx)(`span`,{"aria-hidden":`true`,children:`·`}),(0,J.jsxs)(`span`,{className:q.runSource,title:e.sourceHint??void 0,children:[e.partial?`Partial · `:``,e.source]})]})}var X={high:`Urgent`,warn:`Soon`,info:`When you can`},Z={approvals:`Approval`,authority:`Autonomy`,fleet:`Fleet`,leader:`Leader`,chats:`Chat`,accounts:`Account`},Q=(0,l.forwardRef)(function({items:e,selectedId:t,onSelect:n,onOpen:r,now:a,label:o},s){let c=`verse-needs-you-list`,u=(0,l.useRef)(null);return(0,l.useEffect)(()=>{t&&[...u.current?.querySelectorAll(`[data-item-id]`)??[]].find(e=>e.dataset.itemId===t)?.scrollIntoView?.({block:`nearest`})},[t]),(0,J.jsx)(`div`,{ref:e=>{u.current=e,typeof s==`function`?s(e):s&&(s.current=e)},id:c,role:`listbox`,"aria-label":o,tabIndex:0,"aria-activedescendant":t?`${c}-${e.findIndex(e=>e.id===t)}`:void 0,className:q.rows,children:e.map((e,o)=>{let s=e.actions.map(e=>i[e.kind]).filter(e=>e!==void 0),l=U(e,a);return(0,J.jsxs)(`div`,{id:`${c}-${o}`,"data-item-id":e.id,role:`option`,"aria-selected":e.id===t,className:q.row,"data-severity":e.severity,onClick:()=>r(e.id),onMouseMove:()=>e.id!==t&&n(e.id),children:[(0,J.jsx)(`span`,{className:q.rule,"aria-hidden":`true`}),(0,J.jsxs)(`span`,{className:q.rowMain,children:[l.kindLabel?(0,J.jsx)(`span`,{className:q.rowKind,children:l.kindLabel}):null,(0,J.jsx)(`span`,{className:q.rowTitle,title:l.fullTitle,children:l.title}),l.run?(0,J.jsx)(Y,{run:l.run}):null,(0,J.jsxs)(`span`,{className:q.rowMeta,children:[(0,J.jsx)(`span`,{className:q.severity,"data-severity":e.severity,children:X[e.severity]}),(0,J.jsx)(`span`,{children:Z[e.source]}),l.repo?(0,J.jsx)(`span`,{className:q.repo,title:l.repoFull,children:l.repo}):null,e.subject.pr?(0,J.jsxs)(`span`,{children:[`#`,e.subject.pr]}):null,(0,J.jsx)(`span`,{title:l.ageStamp,children:l.age}),e.expiresAt?(0,J.jsxs)(`span`,{className:q.deadline,children:[`closes `,W(e.expiresAt,a)]}):null]})]}),e.id===t&&s.length>0?(0,J.jsx)(`span`,{className:q.rowKeys,"aria-hidden":`true`,children:s.map(e=>(0,J.jsx)(`kbd`,{className:q.key,children:e},e))}):null]},e.id)})})});export{D as C,p as D,b as E,O as S,d as T,u as _,k as a,T as b,F as c,H as d,K as f,W as g,P as h,L as i,M as l,N as m,Y as n,R as o,G as p,q as r,B as s,Q as t,U as u,E as v,w,h as x,f as y};
2
- //# sourceMappingURL=NeedsYouList-CzDZbzRD.js.map
@@ -1,3 +0,0 @@
1
- import{a as e,n as t,s as n}from"./index-BVxOlseC.js";import{m as r,o as i}from"./global-oEl9Qj8u.js";import{t as a}from"./Dialog-BS9Dxi3G.js";import{o,r as s,x as ee}from"./VerseConsoleApp-DTjDpGCd.js";import{L as c,i as te,k as l}from"./verse-model-DyCwZF-M.js";import{t as u}from"./Segmented-BE53BenI.js";import{r as d}from"./verse-store-b_Lek_c5.js";import{c as f,i as ne,n as p}from"./context-queries-CrPcHWTz.js";import{a as m,v as h}from"./git-model-bk_RXh3y.js";import{C as g,_ as re,a as ie,b as _,c as ae,g as oe,h as v,i as se,l as y,n as b,t as x,u as S,x as ce,y as C}from"./context-model-CIBmSugV.js";import{n as le,t as ue}from"./SeatSelector-CYHRR7Wp.js";import{r as de}from"./CapacityStrip-qReu0RaF.js";import{a as fe,m as pe,o as me,s as he,v as ge}from"./workspace-model-CbhdPhei.js";import{n as _e,t as ve}from"./folder-picker-C8zo3A56.js";var w=n(e(),1),T={option:`_option_qkog4_1`,toggle:`_toggle_qkog4_12`,details:`_details_qkog4_24`,nameLabel:`_nameLabel_qkog4_30`,name:`_name_qkog4_30`,hint:`_hint_qkog4_46`},E=t(),D=/^[a-z0-9][a-z0-9._-]{0,62}$/i;function ye(e){return D.test(e)&&!e.endsWith(`.lock`)&&!e.includes(`..`)}function be(e=new Date){let t=e=>String(e).padStart(2,`0`);return`chat-${t(e.getMonth()+1)}${t(e.getDate())}-${t(e.getHours())}${t(e.getMinutes())}`}function O(e){return e.toLowerCase().replace(/[^a-z0-9._-]+/g,`-`).replace(/^[^a-z0-9]+/,``).replace(/-{2,}/g,`-`).slice(0,63)}function xe({repoName:e,value:t,onChange:n,disabled:r=!1}){let i=(0,w.useId)(),a=(0,w.useId)(),o=ye(t.name);return(0,E.jsxs)(`fieldset`,{className:T.option,disabled:r,children:[(0,E.jsxs)(`label`,{className:T.toggle,children:[(0,E.jsx)(`input`,{type:`checkbox`,checked:t.enabled,onChange:e=>n({enabled:e.target.checked,name:t.name||be()}),"aria-describedby":a}),`Isolate in a worktree`]}),t.enabled?(0,E.jsxs)(`div`,{className:T.details,children:[(0,E.jsx)(`label`,{className:T.nameLabel,htmlFor:i,children:`Name`}),(0,E.jsx)(`input`,{id:i,className:T.name,value:t.name,onChange:e=>n({...t,name:O(e.target.value)}),spellCheck:!1,autoCapitalize:`off`,autoCorrect:`off`,"aria-invalid":!o||void 0,"aria-describedby":a,maxLength:63})]}):null,(0,E.jsx)(`p`,{id:a,className:T.hint,children:t.enabled?o?(0,E.jsxs)(E.Fragment,{children:[`Creates `,(0,E.jsxs)(`code`,{children:[`~/.ashlr-worktrees/`,e,`/`,t.name]}),` on a new branch `,(0,E.jsxs)(`code`,{children:[`verse/`,t.name]}),`, from the current commit. Uncommitted changes stay in `,e,`.`]}):`Use letters, digits, dots, dashes or underscores.`:`The chat works on its own branch in its own folder, so your checkout is untouched.`})]})}async function Se(e,t){return t.enabled?(await h(e,t.name)).path:e}var k={width:`_width_stwix_1`,form:`_form_stwix_3`,field:`_field_stwix_4`,label:`_label_stwix_5`,optional:`_optional_stwix_13`,select:`_select_stwix_15`,input:`_input_stwix_16`,hint:`_hint_stwix_40`,error:`_error_stwix_41`,actions:`_actions_stwix_49`,cancel:`_cancel_stwix_50`,create:`_create_stwix_51`,capacity:`_capacity_stwix_72`,rootRow:`_rootRow_stwix_78`,removeRoot:`_removeRoot_stwix_87`,addRoot:`_addRoot_stwix_88`,context:`_context_stwix_108`,contextHead:`_contextHead_stwix_115`,contextBudget:`_contextBudget_stwix_122`,warn:`_warn_stwix_130`,fit:`_fit_stwix_137`,fitLine:`_fitLine_stwix_138`,fitBadge:`_fitBadge_stwix_147`,seatFacts:`_seatFacts_stwix_165`},Ce=`\0workspace:`,A=`\0other`,we=(e,t)=>t();function Te(e,t){return e?.seats[t]?.contextMode??`standard`}function Ee(e,t,n){return e?c(e)?C(e,t):n!==`standard`&&l(e,`standard`)!==null?`standard`:null:null}function j(e){return e instanceof s?`Unlock actions with the mutation token to save a default.`:e instanceof i?e.detail??e.message:e instanceof Error?e.message:String(e)}function M({open:e,onClose:t,projects:n,seats:i,workspaces:s=[],initialProjectPath:te,initialSeat:l,busy:u=!1,error:d,onCreate:h,runMutation:re=we}){let ie=(0,w.useId)(),_=(0,w.useId)(),ae=(0,w.useId)(),v=(0,w.useId)(),se=(0,w.useId)(),y=(0,w.useRef)(null),[b,S]=(0,w.useState)(``),[ce,T]=(0,w.useState)(``),[D,O]=(0,w.useState)(null),[M,Ae]=(0,w.useState)(``),[je,N]=(0,w.useState)(null),[P,F]=(0,w.useState)([]),[Me,Ne]=(0,w.useState)([]),[Pe,I]=(0,w.useState)(!1),[Fe,L]=(0,w.useState)(null),[R,Ie]=(0,w.useState)(null),[Le,Re]=(0,w.useState)(null),[ze,z]=(0,w.useState)(null),[Be,Ve]=(0,w.useState)(!1),[He,B]=(0,w.useState)(null),[V,H]=(0,w.useState)({status:`idle`}),[U,Ue]=(0,w.useState)({enabled:!1,name:``}),[We,Ge]=(0,w.useState)(!1),Ke=(0,w.useRef)(new Map),qe=(0,w.useMemo)(()=>[...n].sort((e,t)=>Number(t.enrolled)-Number(e.enrolled)||e.name.localeCompare(t.name)),[n]),Je=(0,w.useRef)({initialProjectPath:te,initialSeat:l,projects:n,seats:i,sortedProjects:qe});Je.current={initialProjectPath:te,initialSeat:l,projects:n,seats:i,sortedProjects:qe},(0,w.useEffect)(()=>{if(!e)return;let{initialProjectPath:t,initialSeat:n,projects:r,seats:i,sortedProjects:a}=Je.current,o=t&&r.some(e=>e.path===t)?t:null;S(o??(t?A:a[0]?.path??A)),T(o?``:t??``),O(Oe(n??null,i)??le(i)),Ae(``),N(null),F([]),L(null),I(!1),Ne([]),z(null),B(null),Ve(!1),Ue({enabled:!1,name:be()}),Ge(!1),Ke.current=new Map},[e]),(0,w.useEffect)(()=>{if(!e)return;let t=!1;return Re(null),ne().then(e=>{t||Ie(e)}).catch(e=>{t||(Ie(null),Re(j(e)))}),()=>{t=!0}},[e]),(0,w.useEffect)(()=>{e&&D===null&&i.length!==0&&O(Oe(l??null,i)??le(i))},[e,D,i,l]);let Ye=r(ee);(0,w.useEffect)(()=>{e&&Ye()},[e,Ye]);let Xe=(0,w.useMemo)(()=>{let e=new Map;for(let t of s)e.set(t.id,t);for(let t of Me)e.has(t.id)||e.set(t.id,t);return[...e.values()]},[s,Me]),W=b.startsWith(Ce),G=W?b.slice(11):null,K=W?``:b===A?ce.trim():b,q=D===null?null:i.find(e=>e.id===D.seatId)??null,J=q===null||D===null?null:g(q,D.model),Ze=q?.health.state===`unavailable`,Y=q!==null&&J!==null?oe(q,J):null,Qe=!W&&K.length>0,$e=Qe&&U.enabled,et=!u&&!We&&(W||K.length>0)&&D!==null&&!Ze&&J!==null&&Y===null&&(!$e||ye(U.name)),tt=G===null?null:Xe.find(e=>e.id===G)??null,X=D===null?`standard`:Te(R,D.seatId),Z=C(J,ze??X),nt=c(J),rt=C(J,X),it=(0,w.useCallback)((e,t)=>D!==null&&e.id===D.seatId&&t.id===D.model?Z:C(t,Te(R,e.id)),[D,Z,R]);function at(e){O(e),z(null),B(null)}async function ot(){if(D===null||q===null)return;let e=Z;Ve(!0),B(null);try{let t=await re(`Saving ${x[e]} as the default context mode for ${q.label}.`,()=>f({seatId:D.seatId,contextMode:e}).then(e=>({ok:!0,prefs:e}),e=>({ok:!1,error:e})));if(t===null)return;if(!t.ok){B({ok:!1,text:j(t.error)});return}Ie(t.prefs),z(null),B({ok:!0,text:`New chats on ${q.label} now start in ${x[e]}.`})}catch(e){B({ok:!1,text:j(e)})}finally{Ve(!1)}}let st=(0,w.useMemo)(()=>{if(G!==null)return{key:`w:${G}`,query:{workspaceId:G}};if(W)return null;let e=pe(K,P);if(!e.ok)return null;let[t,...n]=e.roots;return{key:`p:${e.roots.join(`
2
- `)}`,query:n.length>0?{projectPath:t,extraRoots:n}:{projectPath:t}}},[G,W,K,P]),ct=(0,w.useRef)(st);ct.current=st;let Q=st?.key??null;(0,w.useEffect)(()=>{let t=ct.current;if(!e||Q===null||t===null){H({status:`idle`});return}let n=Ke.current.get(Q);if(n){H({status:`ready`,key:Q,fit:n});return}let r=!1;H({status:`loading`,key:Q});let i=setTimeout(()=>{p(t.query).then(e=>{Ke.current.set(Q,e),r||H({status:`ready`,key:Q,fit:e})}).catch(e=>{r||H({status:`error`,key:Q,message:j(e)})})},350);return()=>{r=!0,clearTimeout(i)}},[e,Q]);let $=Q===null?{status:`idle`}:V.status!==`idle`&&V.key===Q?V:{status:`loading`,key:Q},lt=$.status===`ready`?$.fit:null,ut=he(q?.engine??null,1+P.length),dt=me(q?.engine??null,tt?.roots.length??0),ft=ve();async function pt(){let e=await _e();e!==null&&e.length>0&&(S(A),T(e))}async function mt(e){let t=await _e();t!==null&&t.length>0&&F(P.map((n,r)=>r===e?t:n))}async function ht(){let e=pe(K,P);if(!e.ok){N(e.error);return}I(!0),N(null),L(null);try{let t=fe(e.roots[0]),n=await o({name:t,roots:e.roots});Ne(e=>[...e,n]),S(`${Ce}${n.id}`),L(`Saved. “${n.name}” is in this list from now on.`)}catch(e){N(e instanceof Error?e.message:String(e))}finally{I(!1)}}function gt(e){if(e.preventDefault(),!D){N(`Pick a seat first.`);return}if(J===null){N(`Pick a model this seat offers.`);return}if(Y!==null){N(`${J.label} cannot run on this seat: ${Y}.`);return}if(G!==null){N(null);let e={workspaceId:G,seatId:D.seatId,model:D.model};delete e.projectPath;let t=M.trim();t&&(e.title=t);let n=Ee(J,Z,X);n!==null&&(e.contextMode=n),h(e);return}let t=pe(K,P);if(!t.ok){N(t.error);return}if($e&&!ye(U.name)){N(`Name the worktree with letters, digits, dots, dashes or underscores.`);return}N(null);let[n,...r]=t.roots,i={projectPath:n,seatId:D.seatId,model:D.model};r.length>0&&(i.extraRoots=r);let a=M.trim();a&&(i.title=a);let o=Ee(J,Z,X);if(o!==null&&(i.contextMode=o),!$e){h(i);return}_t(n,i)}async function _t(e,t){Ge(!0);try{let n=await re(`Creating the worktree ${U.name} (a new branch verse/${U.name}) for this chat.`,()=>Se(e,U).then(e=>({ok:!0,folder:e}),e=>({ok:!1,error:e})));if(n===null)return;if(!n.ok){N(`The worktree could not be created: ${m(n.error)}`);return}await h({...t,projectPath:n.folder})}catch(e){N(m(e))}finally{Ge(!1)}}let vt=je??d??null;return(0,E.jsx)(a,{open:e,onClose:t,titleId:ie,title:`New chat`,initialFocusRef:y,widthClassName:k.width,children:(0,E.jsxs)(`form`,{className:k.form,onSubmit:gt,noValidate:!0,children:[(0,E.jsxs)(`label`,{className:k.field,htmlFor:_,children:[(0,E.jsx)(`span`,{className:k.label,children:`Project`}),(0,E.jsxs)(`select`,{id:_,ref:y,value:b,onChange:e=>S(e.target.value),className:k.select,children:[Xe.length>0?(0,E.jsx)(`optgroup`,{label:`Saved projects`,children:Xe.map(e=>(0,E.jsxs)(`option`,{value:`${Ce}${e.id}`,children:[e.name,` — `,ge(e)]},e.id))}):null,qe.map(e=>(0,E.jsxs)(`option`,{value:e.path,children:[e.name,e.enrolled?``:` (recent)`,` — `,e.path]},e.path)),(0,E.jsx)(`option`,{value:A,children:`Other folder…`})]})]}),b===A&&!W?(0,E.jsxs)(`label`,{className:k.field,htmlFor:ae,children:[(0,E.jsx)(`span`,{className:k.label,children:`Folder path`}),(0,E.jsxs)(`div`,{className:k.rootRow,children:[(0,E.jsx)(`input`,{id:ae,className:k.input,value:ce,onChange:e=>T(e.target.value),placeholder:`/absolute/path/to/project`,autoComplete:`off`,spellCheck:!1}),ft?(0,E.jsx)(`button`,{type:`button`,className:k.addRoot,onClick:()=>void pt(),children:`Choose folder…`}):null]})]}):null,dt?(0,E.jsx)(`p`,{className:k.hint,children:dt}):null,W?null:(0,E.jsxs)(`div`,{className:k.field,children:[(0,E.jsxs)(`span`,{className:k.label,children:[`Also include `,(0,E.jsx)(`span`,{className:k.optional,children:`optional`})]}),P.map((e,t)=>(0,E.jsxs)(`div`,{className:k.rootRow,children:[(0,E.jsx)(`input`,{className:k.input,value:e,onChange:e=>F(P.map((n,r)=>r===t?e.target.value:n)),placeholder:`/absolute/path/to/another/folder`,"aria-label":`Additional folder ${t+1}`,autoComplete:`off`,spellCheck:!1}),ft?(0,E.jsx)(`button`,{type:`button`,className:k.removeRoot,onClick:()=>void mt(t),"aria-label":`Choose additional folder ${t+1}`,children:`Choose folder…`}):null,(0,E.jsx)(`button`,{type:`button`,className:k.removeRoot,onClick:()=>F(P.filter((e,n)=>n!==t)),"aria-label":`Remove additional folder ${t+1}`,children:`Remove`})]},t)),P.length+1<8?(0,E.jsx)(`button`,{type:`button`,className:k.addRoot,onClick:()=>F([...P,``]),children:`Add a folder`}):null,ut?(0,E.jsx)(`p`,{className:k.hint,children:ut}):null,(0,E.jsxs)(`div`,{className:k.rootRow,children:[(0,E.jsx)(`button`,{type:`button`,className:k.addRoot,onClick:()=>void ht(),disabled:Pe||K.length===0,children:Pe?`Saving…`:`Save as a project`}),(0,E.jsx)(`span`,{className:k.hint,children:`Keeps these folders in the list above. No chat needed first.`})]})]}),Fe?(0,E.jsx)(`p`,{role:`status`,className:k.hint,children:Fe}):null,Qe?(0,E.jsx)(xe,{repoName:De(K),value:U,onChange:Ue,disabled:We||u}):null,(0,E.jsx)(ue,{id:se,seats:i,value:D,onChange:at,workingSetTokens:lt?.totalEstTokens??null,modeFor:it}),q===null?null:(0,E.jsx)(`div`,{className:k.capacity,children:(0,E.jsx)(de,{seats:i,seatIds:[q.id],local:`each`,headline:!1,title:`${q.label} capacity`})}),q===null||J===null?null:(0,E.jsx)(ke,{seat:q,option:J,unavailableReason:Y,mode:Z,offersModes:nt,savedDefault:rt,prefsLoaded:R!==null,prefsError:Le,onMode:e=>{z(e),B(null)},savingDefault:Be,defaultNote:He,onMakeDefault:()=>void ot(),fitState:$}),i.length===0?(0,E.jsx)(`p`,{className:k.hint,children:`No seats yet — connect an account or start Ollama, then reload.`}):null,(0,E.jsxs)(`label`,{className:k.field,htmlFor:v,children:[(0,E.jsxs)(`span`,{className:k.label,children:[`Title `,(0,E.jsx)(`span`,{className:k.optional,children:`optional`})]}),(0,E.jsx)(`input`,{id:v,className:k.input,value:M,onChange:e=>Ae(e.target.value),placeholder:`Defaults to your first message`,maxLength:120})]}),vt?(0,E.jsx)(`p`,{role:`alert`,className:k.error,children:vt}):null,(0,E.jsxs)(`div`,{className:k.actions,children:[(0,E.jsx)(`button`,{type:`button`,className:k.cancel,onClick:t,children:`Cancel`}),(0,E.jsx)(`button`,{type:`submit`,className:k.create,disabled:!et,children:We?`Creating worktree…`:u?`Creating…`:`Start chat`})]})]})})}function De(e){let t=e.replace(/[\\/]+$/,``).split(/[\\/]/);return t[t.length-1]||e}function Oe(e,t){if(e===null)return null;let n=t.find(t=>t.id===e.seatId),r=g(n,e.model);return r===null?e:{seatId:e.seatId,model:r.id}}function ke({seat:e,option:t,unavailableReason:n,mode:r,offersModes:i,savedDefault:a,prefsLoaded:o,prefsError:s,onMode:ee,savingDefault:c,defaultNote:f,onMakeDefault:ne,fitState:p}){let m=(0,w.useId)(),h=ie(t,r),g=_(e),oe=ce(e),C=p.status===`ready`?v(p.fit.totalEstTokens,t,r,e.engine):null;return(0,E.jsxs)(`div`,{className:k.context,role:`group`,"aria-labelledby":m,children:[(0,E.jsxs)(`div`,{className:k.contextHead,children:[(0,E.jsx)(`span`,{id:m,className:k.label,children:`Context`}),(0,E.jsx)(`span`,{className:k.contextBudget,children:h===null?`Window unknown`:`${d(h.contextWindow)} window${h.autoCompactAt===null?``:` · compacts ≈${d(h.autoCompactAt)}`}`})]}),h!==null&&t.windowSource?(0,E.jsxs)(`p`,{className:k.hint,children:[`Window `,te[t.windowSource],`.`]}):null,n===null?null:(0,E.jsxs)(`p`,{className:k.warn,children:[t.label,` cannot run on this seat: `,n,`. Pick another model.`]}),i?(0,E.jsxs)(E.Fragment,{children:[(0,E.jsx)(u,{"aria-label":`Context mode`,size:`sm`,value:r,onChange:ee,options:[`standard`,`expansive`].map(e=>{let n=l(t,e);return{value:e,label:n===null?x[e]:`${x[e]} · ≈${d(n.autoCompactAt??n.contextWindow)}`,ariaLabel:x[e]}})}),(0,E.jsx)(`p`,{className:k.hint,children:se(e.engine,t,r)}),o&&r!==a?(0,E.jsx)(`div`,{className:k.rootRow,children:(0,E.jsx)(`button`,{type:`button`,className:k.addRoot,onClick:ne,disabled:c,children:c?`Saving…`:`Make ${x[r]} the default for ${e.label}`})}):null,f===null?null:(0,E.jsx)(`p`,{role:f.ok?`status`:`alert`,className:f.ok?k.hint:k.error,children:f.text}),s===null?null:(0,E.jsxs)(`p`,{className:k.hint,children:[`Saved defaults could not be read (`,s,`); this chat starts in `,x[r],` unless you pick otherwise.`]})]}):(0,E.jsx)(`p`,{className:k.hint,children:re(e.engine,t)}),(0,E.jsx)(`div`,{className:k.fit,"aria-live":`polite`,children:p.status===`idle`?null:p.status===`loading`?(0,E.jsx)(`p`,{className:k.hint,children:`Sizing the chosen folders…`}):p.status===`error`?(0,E.jsxs)(`p`,{className:k.hint,children:[`Could not size the chosen folders: `,p.message]}):C===null?(0,E.jsxs)(`p`,{className:k.hint,children:[`~`,d(p.fit.totalEstTokens),` tokens of tracked code; this model’s budget is unknown, so no fit is claimed.`]}):(0,E.jsxs)(E.Fragment,{children:[(0,E.jsxs)(`p`,{className:k.fitLine,children:[(0,E.jsx)(`span`,{className:k.fitBadge,"data-fit":C,children:b[C]}),(0,E.jsx)(`span`,{children:ae({verdict:C,tokens:p.fit.totalEstTokens,option:t,mode:r,floor:y(p.fit)})})]}),(0,E.jsx)(`p`,{className:k.hint,children:S(e.engine)})]})}),g===null&&oe.length===0?null:(0,E.jsxs)(`ul`,{className:k.seatFacts,"aria-label":`${e.label} facts`,children:[g===null?null:(0,E.jsxs)(`li`,{children:[`Runs `,g,`.`]}),oe.map(e=>(0,E.jsx)(`li`,{children:e},e))]})]})}export{M as NewChatDialog};
3
- //# sourceMappingURL=NewChatDialog-B8eJjlFf.js.map