@ashlr/hub 3.16.0 → 3.16.1

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 (997) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +2 -2
  3. package/dist/authority-surface.json +5 -5
  4. package/dist/build-identity.json +2 -2
  5. package/dist/core/daemon/loop.js +1 -0
  6. package/dist/core/daemon/loop.js.map +1 -1
  7. package/dist/core/daemon/tick-hooks.d.ts +2 -0
  8. package/dist/core/daemon/tick-hooks.js.map +1 -1
  9. package/dist/core/fleet/tick-hooks-live.d.ts +2 -1
  10. package/dist/core/fleet/tick-hooks-live.js +49 -7
  11. package/dist/core/fleet/tick-hooks-live.js.map +1 -1
  12. package/dist/core/web/public/next/assets/ActionMenu-Bv-kQxD4.js +2 -0
  13. package/dist/core/web/public/next/assets/ActionMenu-Bv-kQxD4.js.map +1 -0
  14. package/dist/core/web/public/next/assets/Advanced-Be7Frv-G.js +2 -0
  15. package/dist/core/web/public/next/assets/Advanced-Be7Frv-G.js.map +1 -0
  16. package/dist/core/web/public/next/assets/AgentDetailScreen-DzqHmufO.js +2 -0
  17. package/dist/core/web/public/next/assets/AgentDetailScreen-DzqHmufO.js.map +1 -0
  18. package/dist/core/web/public/next/assets/AgentToolsSheet-D00kLnIq.js +2 -0
  19. package/dist/core/web/public/next/assets/AgentToolsSheet-D00kLnIq.js.map +1 -0
  20. package/dist/core/web/public/next/assets/AgentToolsStrip-CSus9Dr3.js +2 -0
  21. package/dist/core/web/public/next/assets/AgentToolsStrip-CSus9Dr3.js.map +1 -0
  22. package/dist/core/web/public/next/assets/AgentsScreen-WoR0oSLZ.js +2 -0
  23. package/dist/core/web/public/next/assets/AgentsScreen-WoR0oSLZ.js.map +1 -0
  24. package/dist/core/web/public/next/assets/AgentsSection-D5mKoOhH.js +3 -0
  25. package/dist/core/web/public/next/assets/AgentsSection-D5mKoOhH.js.map +1 -0
  26. package/dist/core/web/public/next/assets/App-Uy6lDpKw.js +8 -0
  27. package/dist/core/web/public/next/assets/App-Uy6lDpKw.js.map +1 -0
  28. package/dist/core/web/public/next/assets/AppsSection-Cfhmc4r3.js +2 -0
  29. package/dist/core/web/public/next/assets/AppsSection-Cfhmc4r3.js.map +1 -0
  30. package/dist/core/web/public/next/assets/AreaTrend-Bz3ETKPk.js +2 -0
  31. package/dist/core/web/public/next/assets/AreaTrend-Bz3ETKPk.js.map +1 -0
  32. package/dist/core/web/public/next/assets/AutomationsSection-D4K8db0o.js +2 -0
  33. package/dist/core/web/public/next/assets/AutomationsSection-D4K8db0o.js.map +1 -0
  34. package/dist/core/web/public/next/assets/AutonomyOffState-DUiNMgr8.js +3 -0
  35. package/dist/core/web/public/next/assets/AutonomyOffState-DUiNMgr8.js.map +1 -0
  36. package/dist/core/web/public/next/assets/AutonomySection-wxRZ7vSw.js +2 -0
  37. package/dist/core/web/public/next/assets/AutonomySection-wxRZ7vSw.js.map +1 -0
  38. package/dist/core/web/public/next/assets/AutonomyStatus-B-PCVnFO.js +2 -0
  39. package/dist/core/web/public/next/assets/AutonomyStatus-B-PCVnFO.js.map +1 -0
  40. package/dist/core/web/public/next/assets/BranchBar-Bs4r_Vh6.js +2 -0
  41. package/dist/core/web/public/next/assets/BranchBar-Bs4r_Vh6.js.map +1 -0
  42. package/dist/core/web/public/next/assets/BrowserPanel-BMQcviI1.js +7 -0
  43. package/dist/core/web/public/next/assets/BrowserPanel-BMQcviI1.js.map +1 -0
  44. package/dist/core/web/public/next/assets/BudgetControl-A4TEONtT.js +2 -0
  45. package/dist/core/web/public/next/assets/BudgetControl-A4TEONtT.js.map +1 -0
  46. package/dist/core/web/public/next/assets/Button-CMR_Op-0.js +2 -0
  47. package/dist/core/web/public/next/assets/Button-CMR_Op-0.js.map +1 -0
  48. package/dist/core/web/public/next/assets/CapacityStrip-B-2NDrA5.js +2 -0
  49. package/dist/core/web/public/next/assets/CapacityStrip-B-2NDrA5.js.map +1 -0
  50. package/dist/core/web/public/next/assets/ChangesPaneHost-CS5qGjwM.js +16 -0
  51. package/dist/core/web/public/next/assets/ChangesPaneHost-CS5qGjwM.js.map +1 -0
  52. package/dist/core/web/public/next/assets/ChartFrame-sZTnZkVd.js +2 -0
  53. package/dist/core/web/public/next/assets/ChartFrame-sZTnZkVd.js.map +1 -0
  54. package/dist/core/web/public/next/assets/ChatPanes-CicgTVpN.js +2 -0
  55. package/dist/core/web/public/next/assets/ChatPanes-CicgTVpN.js.map +1 -0
  56. package/dist/core/web/public/next/assets/ChatSection-Cc6sudpF.js +3 -0
  57. package/dist/core/web/public/next/assets/ChatSection-Cc6sudpF.js.map +1 -0
  58. package/dist/core/web/public/next/assets/ChecksPanel-BGWgv8Zb.js +5 -0
  59. package/dist/core/web/public/next/assets/ChecksPanel-BGWgv8Zb.js.map +1 -0
  60. package/dist/core/web/public/next/assets/CloudBudgetForm-CqsidwfU.js +2 -0
  61. package/dist/core/web/public/next/assets/CloudBudgetForm-CqsidwfU.js.map +1 -0
  62. package/dist/core/web/public/next/assets/CommandPalette-rwEZ20MN.js +3 -0
  63. package/dist/core/web/public/next/assets/CommandPalette-rwEZ20MN.js.map +1 -0
  64. package/dist/core/web/public/next/assets/CommandSection-C2CLkVXN.js +3 -0
  65. package/dist/core/web/public/next/assets/CommandSection-C2CLkVXN.js.map +1 -0
  66. package/dist/core/web/public/next/assets/CommandWorkflowForm-DAbPIdI3.js +9 -0
  67. package/dist/core/web/public/next/assets/CommandWorkflowForm-DAbPIdI3.js.map +1 -0
  68. package/dist/core/web/public/next/assets/CommandWorkflowPicker-fqHtzYXX.js +3 -0
  69. package/dist/core/web/public/next/assets/CommandWorkflowPicker-fqHtzYXX.js.map +1 -0
  70. package/dist/core/web/public/next/assets/CompareDialog-Cwfpaa8I.js +4 -0
  71. package/dist/core/web/public/next/assets/CompareDialog-Cwfpaa8I.js.map +1 -0
  72. package/dist/core/web/public/next/assets/ComputerControl-DU0cuVSY.js +2 -0
  73. package/dist/core/web/public/next/assets/ComputerControl-DU0cuVSY.js.map +1 -0
  74. package/dist/core/web/public/next/assets/ConfirmDialog-B_wCnbcC.js +2 -0
  75. package/dist/core/web/public/next/assets/ConfirmDialog-B_wCnbcC.js.map +1 -0
  76. package/dist/core/web/public/next/assets/DeleteChatDialog-CxMh53yX.js +2 -0
  77. package/dist/core/web/public/next/assets/DeleteChatDialog-CxMh53yX.js.map +1 -0
  78. package/dist/core/web/public/next/assets/DevinStopDialog-D9Bziccz.js +2 -0
  79. package/dist/core/web/public/next/assets/DevinStopDialog-D9Bziccz.js.map +1 -0
  80. package/dist/core/web/public/next/assets/Dialog-DI5D6Is2.js +2 -0
  81. package/dist/core/web/public/next/assets/Dialog-DI5D6Is2.js.map +1 -0
  82. package/dist/core/web/public/next/assets/DiffPane-Buo19Bqr.js +2 -0
  83. package/dist/core/web/public/next/assets/DiffPane-Buo19Bqr.js.map +1 -0
  84. package/dist/core/web/public/next/assets/DiffViewer-dO0RQoqA.js +2 -0
  85. package/dist/core/web/public/next/assets/DiffViewer-dO0RQoqA.js.map +1 -0
  86. package/dist/core/web/public/next/assets/DockHost-KJUHjoiG.js +2 -0
  87. package/dist/core/web/public/next/assets/DockHost-KJUHjoiG.js.map +1 -0
  88. package/dist/core/web/public/next/assets/EmptyState-C3BUt2Ev.js +2 -0
  89. package/dist/core/web/public/next/assets/EmptyState-C3BUt2Ev.js.map +1 -0
  90. package/dist/core/web/public/next/assets/Epistemic-DlG2QqKJ.js +2 -0
  91. package/dist/core/web/public/next/assets/Epistemic-DlG2QqKJ.js.map +1 -0
  92. package/dist/core/web/public/next/assets/EvidenceTimeline-D1GB9F-f.js +2 -0
  93. package/dist/core/web/public/next/assets/EvidenceTimeline-D1GB9F-f.js.map +1 -0
  94. package/dist/core/web/public/next/assets/FilesPane-icSP5vPt.js +2 -0
  95. package/dist/core/web/public/next/assets/FilesPane-icSP5vPt.js.map +1 -0
  96. package/dist/core/web/public/next/assets/FleetScreen-V_X8SeD3.js +2 -0
  97. package/dist/core/web/public/next/assets/FleetScreen-V_X8SeD3.js.map +1 -0
  98. package/dist/core/web/public/next/assets/FleetSection-xyhfpRJy.js +5 -0
  99. package/dist/core/web/public/next/assets/FleetSection-xyhfpRJy.js.map +1 -0
  100. package/dist/core/web/public/next/assets/Funnel-BlzQ5FOU.js +2 -0
  101. package/dist/core/web/public/next/assets/Funnel-BlzQ5FOU.js.map +1 -0
  102. package/dist/core/web/public/next/assets/GearTray-Dvu-ee-h.js +2 -0
  103. package/dist/core/web/public/next/assets/GearTray-Dvu-ee-h.js.map +1 -0
  104. package/dist/core/web/public/next/assets/GitDialogs-o0eCEqAN.js +2 -0
  105. package/dist/core/web/public/next/assets/GitDialogs-o0eCEqAN.js.map +1 -0
  106. package/dist/core/web/public/next/assets/GrowthSection-CyqJOzob.js +3 -0
  107. package/dist/core/web/public/next/assets/GrowthSection-CyqJOzob.js.map +1 -0
  108. package/dist/core/web/public/next/assets/HandoffDialog-0uTNyK99.js +2 -0
  109. package/dist/core/web/public/next/assets/HandoffDialog-0uTNyK99.js.map +1 -0
  110. package/dist/core/web/public/next/assets/HomeBody-DJjN3GTV.js +3 -0
  111. package/dist/core/web/public/next/assets/HomeBody-DJjN3GTV.js.map +1 -0
  112. package/dist/core/web/public/next/assets/HomeSeats-IJvjh9iH.js +2 -0
  113. package/dist/core/web/public/next/assets/HomeSeats-IJvjh9iH.js.map +1 -0
  114. package/dist/core/web/public/next/assets/Input-CsSZI8QC.js +2 -0
  115. package/dist/core/web/public/next/assets/Input-CsSZI8QC.js.map +1 -0
  116. package/dist/core/web/public/next/assets/LaunchDialog-DReYqlI0.js +9 -0
  117. package/dist/core/web/public/next/assets/LaunchDialog-DReYqlI0.js.map +1 -0
  118. package/dist/core/web/public/next/assets/LeaderCard-82indlOE.js +2 -0
  119. package/dist/core/web/public/next/assets/LeaderCard-82indlOE.js.map +1 -0
  120. package/dist/core/web/public/next/assets/LeaderConversation-8hDF6Gh3.js +3 -0
  121. package/dist/core/web/public/next/assets/LeaderConversation-8hDF6Gh3.js.map +1 -0
  122. package/dist/core/web/public/next/assets/LeaderScreen-BxPiwHcT.js +2 -0
  123. package/dist/core/web/public/next/assets/LeaderScreen-BxPiwHcT.js.map +1 -0
  124. package/dist/core/web/public/next/assets/LessonsPanel-BG558qil.js +2 -0
  125. package/dist/core/web/public/next/assets/LessonsPanel-BG558qil.js.map +1 -0
  126. package/dist/core/web/public/next/assets/LiveTimer-DUgUBr49.js +2 -0
  127. package/dist/core/web/public/next/assets/LiveTimer-DUgUBr49.js.map +1 -0
  128. package/dist/core/web/public/next/assets/LocalSeatBadge-D6U4Q2P3.js +2 -0
  129. package/dist/core/web/public/next/assets/LocalSeatBadge-D6U4Q2P3.js.map +1 -0
  130. package/dist/core/web/public/next/assets/MatrixHeatmap-Brn70z84.js +2 -0
  131. package/dist/core/web/public/next/assets/MatrixHeatmap-Brn70z84.js.map +1 -0
  132. package/dist/core/web/public/next/assets/McpSection-Dz8Ga2Rg.js +2 -0
  133. package/dist/core/web/public/next/assets/McpSection-Dz8Ga2Rg.js.map +1 -0
  134. package/dist/core/web/public/next/assets/MessageMarkdown-CQfYQaXB.js +3 -0
  135. package/dist/core/web/public/next/assets/MessageMarkdown-CQfYQaXB.js.map +1 -0
  136. package/dist/core/web/public/next/assets/MessageMarkdownRenderer-DPaNQMj8.js +72 -0
  137. package/dist/core/web/public/next/assets/MessageMarkdownRenderer-DPaNQMj8.js.map +1 -0
  138. package/dist/core/web/public/next/assets/Meter-TnD7Ris6.js +2 -0
  139. package/dist/core/web/public/next/assets/Meter-TnD7Ris6.js.map +1 -0
  140. package/dist/core/web/public/next/assets/MicButton-Dc9g2Z_E.js +2 -0
  141. package/dist/core/web/public/next/assets/MicButton-Dc9g2Z_E.js.map +1 -0
  142. package/dist/core/web/public/next/assets/MindSection-DGpYq8c7.js +3 -0
  143. package/dist/core/web/public/next/assets/MindSection-DGpYq8c7.js.map +1 -0
  144. package/dist/core/web/public/next/assets/MobileComposer-DbSZ2rxa.js +2 -0
  145. package/dist/core/web/public/next/assets/MobileComposer-DbSZ2rxa.js.map +1 -0
  146. package/dist/core/web/public/next/assets/MobileGuardSheet-qQJev_w3.js +2 -0
  147. package/dist/core/web/public/next/assets/MobileGuardSheet-qQJev_w3.js.map +1 -0
  148. package/dist/core/web/public/next/assets/MobileRuntime-BEnY4Uvs.js +3 -0
  149. package/dist/core/web/public/next/assets/MobileRuntime-BEnY4Uvs.js.map +1 -0
  150. package/dist/core/web/public/next/assets/MoreScreen-CG0E5S8G.js +2 -0
  151. package/dist/core/web/public/next/assets/MoreScreen-CG0E5S8G.js.map +1 -0
  152. package/dist/core/web/public/next/assets/MultiModelBar-DgMyP8IC.js +7 -0
  153. package/dist/core/web/public/next/assets/MultiModelBar-DgMyP8IC.js.map +1 -0
  154. package/dist/core/web/public/next/assets/MutationTokenDialog-T3r9EtHi.js +2 -0
  155. package/dist/core/web/public/next/assets/MutationTokenDialog-T3r9EtHi.js.map +1 -0
  156. package/dist/core/web/public/next/assets/NeedsYouDrawer-BDAcTlK8.js +3 -0
  157. package/dist/core/web/public/next/assets/NeedsYouDrawer-BDAcTlK8.js.map +1 -0
  158. package/dist/core/web/public/next/assets/NeedsYouList-BFubkjzF.js +2 -0
  159. package/dist/core/web/public/next/assets/NeedsYouList-BFubkjzF.js.map +1 -0
  160. package/dist/core/web/public/next/assets/NeedsYouScreen-B3Dk15T_.js +2 -0
  161. package/dist/core/web/public/next/assets/NeedsYouScreen-B3Dk15T_.js.map +1 -0
  162. package/dist/core/web/public/next/assets/NewAgentScreen-zf1bqGYC.js +2 -0
  163. package/dist/core/web/public/next/assets/NewAgentScreen-zf1bqGYC.js.map +1 -0
  164. package/dist/core/web/public/next/assets/NewChatDialog-el95cRTF.js +4 -0
  165. package/dist/core/web/public/next/assets/NewChatDialog-el95cRTF.js.map +1 -0
  166. package/dist/core/web/public/next/assets/OnboardingFlow-Bi8gZOuz.js +3 -0
  167. package/dist/core/web/public/next/assets/OnboardingFlow-Bi8gZOuz.js.map +1 -0
  168. package/dist/core/web/public/next/assets/OnboardingGate-CRexmMn5.js +3 -0
  169. package/dist/core/web/public/next/assets/OnboardingGate-CRexmMn5.js.map +1 -0
  170. package/dist/core/web/public/next/assets/PlaybooksSection-R2_wyVpQ.js +9 -0
  171. package/dist/core/web/public/next/assets/PlaybooksSection-R2_wyVpQ.js.map +1 -0
  172. package/dist/core/web/public/next/assets/PreviewPane-Djw_GJ20.js +2 -0
  173. package/dist/core/web/public/next/assets/PreviewPane-Djw_GJ20.js.map +1 -0
  174. package/dist/core/web/public/next/assets/ProviderLogo-DIfJXNWf.js +2 -0
  175. package/dist/core/web/public/next/assets/ProviderLogo-DIfJXNWf.js.map +1 -0
  176. package/dist/core/web/public/next/assets/RailStatus-B3eI2AaD.js +2 -0
  177. package/dist/core/web/public/next/assets/RailStatus-B3eI2AaD.js.map +1 -0
  178. package/dist/core/web/public/next/assets/ReasoningPane-ExT8XgQB.js +2 -0
  179. package/dist/core/web/public/next/assets/ReasoningPane-ExT8XgQB.js.map +1 -0
  180. package/dist/core/web/public/next/assets/ReasoningSheet-YF4OS4lM.js +2 -0
  181. package/dist/core/web/public/next/assets/ReasoningSheet-YF4OS4lM.js.map +1 -0
  182. package/dist/core/web/public/next/assets/RefreshIndicator-BJoefKSa.js +2 -0
  183. package/dist/core/web/public/next/assets/RefreshIndicator-BJoefKSa.js.map +1 -0
  184. package/dist/core/web/public/next/assets/RemoteMobileApp-C2SflRkm.js +2 -0
  185. package/dist/core/web/public/next/assets/RemoteMobileApp-C2SflRkm.js.map +1 -0
  186. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-FkAdn3Sv.js +7 -0
  187. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-FkAdn3Sv.js.map +1 -0
  188. package/dist/core/web/public/next/assets/ResourcesChrome-CFHrLqmA.js +3 -0
  189. package/dist/core/web/public/next/assets/ResourcesChrome-CFHrLqmA.js.map +1 -0
  190. package/dist/core/web/public/next/assets/ResourcesDrawer-DtnZgDr_.js +3 -0
  191. package/dist/core/web/public/next/assets/ResourcesDrawer-DtnZgDr_.js.map +1 -0
  192. package/dist/core/web/public/next/assets/RouteErrorBoundary-DTz5-ndE.js +2 -0
  193. package/dist/core/web/public/next/assets/RouteErrorBoundary-DTz5-ndE.js.map +1 -0
  194. package/dist/core/web/public/next/assets/RunInCloudAction-DvoDMV54.js +2 -0
  195. package/dist/core/web/public/next/assets/RunInCloudAction-DvoDMV54.js.map +1 -0
  196. package/dist/core/web/public/next/assets/RunInDevinAction-BwCkFxLX.js +2 -0
  197. package/dist/core/web/public/next/assets/RunInDevinAction-BwCkFxLX.js.map +1 -0
  198. package/dist/core/web/public/next/assets/ScreenHost-jdgnt5U2.js +3 -0
  199. package/dist/core/web/public/next/assets/ScreenHost-jdgnt5U2.js.map +1 -0
  200. package/dist/core/web/public/next/assets/SeatSelector-DnpH5D_D.js +3 -0
  201. package/dist/core/web/public/next/assets/SeatSelector-DnpH5D_D.js.map +1 -0
  202. package/dist/core/web/public/next/assets/Segmented-BECZDbsg.js +2 -0
  203. package/dist/core/web/public/next/assets/Segmented-BECZDbsg.js.map +1 -0
  204. package/dist/core/web/public/next/assets/Select-DjQDkPJU.js +2 -0
  205. package/dist/core/web/public/next/assets/Select-DjQDkPJU.js.map +1 -0
  206. package/dist/core/web/public/next/assets/SessionGate-CWuI8dDR.js +2 -0
  207. package/dist/core/web/public/next/assets/SessionGate-CWuI8dDR.js.map +1 -0
  208. package/dist/core/web/public/next/assets/SessionInsightChip-DRsIQu29.js +2 -0
  209. package/dist/core/web/public/next/assets/SessionInsightChip-DRsIQu29.js.map +1 -0
  210. package/dist/core/web/public/next/assets/SessionSearch-Bya3EXJl.js +2 -0
  211. package/dist/core/web/public/next/assets/SessionSearch-Bya3EXJl.js.map +1 -0
  212. package/dist/core/web/public/next/assets/SettingsSection-CXjiHNQb.js +2 -0
  213. package/dist/core/web/public/next/assets/SettingsSection-CXjiHNQb.js.map +1 -0
  214. package/dist/core/web/public/next/assets/SetupChecklist-YUMOJNbk.js +2 -0
  215. package/dist/core/web/public/next/assets/SetupChecklist-YUMOJNbk.js.map +1 -0
  216. package/dist/core/web/public/next/assets/ShadowDecisions-BP2WgGMi.js +3 -0
  217. package/dist/core/web/public/next/assets/ShadowDecisions-BP2WgGMi.js.map +1 -0
  218. package/dist/core/web/public/next/assets/Sheet-Czuz3h6A.js +2 -0
  219. package/dist/core/web/public/next/assets/Sheet-Czuz3h6A.js.map +1 -0
  220. package/dist/core/web/public/next/assets/ShortcutsOverlay-D_ICte5N.js +2 -0
  221. package/dist/core/web/public/next/assets/ShortcutsOverlay-D_ICte5N.js.map +1 -0
  222. package/dist/core/web/public/next/assets/Sidebar-CcI1_B9Y.js +3 -0
  223. package/dist/core/web/public/next/assets/Sidebar-CcI1_B9Y.js.map +1 -0
  224. package/dist/core/web/public/next/assets/SkipToContent-B0GAKhYQ.js +2 -0
  225. package/dist/core/web/public/next/assets/SkipToContent-B0GAKhYQ.js.map +1 -0
  226. package/dist/core/web/public/next/assets/Slider-Dzv55CNY.js +2 -0
  227. package/dist/core/web/public/next/assets/Slider-Dzv55CNY.js.map +1 -0
  228. package/dist/core/web/public/next/assets/SourcesPane-rxRCi7cL.js +2 -0
  229. package/dist/core/web/public/next/assets/SourcesPane-rxRCi7cL.js.map +1 -0
  230. package/dist/core/web/public/next/assets/SourcesPanel-LyMp7aLt.js +2 -0
  231. package/dist/core/web/public/next/assets/SourcesPanel-LyMp7aLt.js.map +1 -0
  232. package/dist/core/web/public/next/assets/StatTile-1_HPOflX.js +2 -0
  233. package/dist/core/web/public/next/assets/StatTile-1_HPOflX.js.map +1 -0
  234. package/dist/core/web/public/next/assets/StatusBadge-zR7YgIa8.js +2 -0
  235. package/dist/core/web/public/next/assets/StatusBadge-zR7YgIa8.js.map +1 -0
  236. package/dist/core/web/public/next/assets/StepBand-BGX2RpFV.js +2 -0
  237. package/dist/core/web/public/next/assets/StepBand-BGX2RpFV.js.map +1 -0
  238. package/dist/core/web/public/next/assets/Surface-BEToBKC3.js +2 -0
  239. package/dist/core/web/public/next/assets/Surface-BEToBKC3.js.map +1 -0
  240. package/dist/core/web/public/next/assets/Swimlane-DAf7u5p3.js +2 -0
  241. package/dist/core/web/public/next/assets/Swimlane-DAf7u5p3.js.map +1 -0
  242. package/dist/core/web/public/next/assets/Switch-mvc9lQcT.js +2 -0
  243. package/dist/core/web/public/next/assets/Switch-mvc9lQcT.js.map +1 -0
  244. package/dist/core/web/public/next/assets/Tag-Chqolzxz.js +2 -0
  245. package/dist/core/web/public/next/assets/Tag-Chqolzxz.js.map +1 -0
  246. package/dist/core/web/public/next/assets/TerminalPane-4wn3AxS0.js +3 -0
  247. package/dist/core/web/public/next/assets/TerminalPane-4wn3AxS0.js.map +1 -0
  248. package/dist/core/web/public/next/assets/TerminalPane-D7-O0ssr.js +26 -0
  249. package/dist/core/web/public/next/assets/TerminalPane-D7-O0ssr.js.map +1 -0
  250. package/dist/core/web/public/next/assets/ThinkingBlock-gWESdTxs.js +2 -0
  251. package/dist/core/web/public/next/assets/ThinkingBlock-gWESdTxs.js.map +1 -0
  252. package/dist/core/web/public/next/assets/UniverseConsoleApp-XqJvgt7b.js +2 -0
  253. package/dist/core/web/public/next/assets/UniverseConsoleApp-XqJvgt7b.js.map +1 -0
  254. package/dist/core/web/public/next/assets/UniverseView-D0j9HVku.js +9 -0
  255. package/dist/core/web/public/next/assets/UniverseView-D0j9HVku.js.map +1 -0
  256. package/dist/core/web/public/next/assets/UsageSection-DnSPo4Ua.js +3 -0
  257. package/dist/core/web/public/next/assets/UsageSection-DnSPo4Ua.js.map +1 -0
  258. package/dist/core/web/public/next/assets/UsePlaybookAction-71M3gO7g.js +2 -0
  259. package/dist/core/web/public/next/assets/UsePlaybookAction-71M3gO7g.js.map +1 -0
  260. package/dist/core/web/public/next/assets/VerseConsoleApp-DO84Xscn.js +3 -0
  261. package/dist/core/web/public/next/assets/VerseConsoleApp-DO84Xscn.js.map +1 -0
  262. package/dist/core/web/public/next/assets/VerseMobileApp-CrCDQcw5.js +3 -0
  263. package/dist/core/web/public/next/assets/VerseMobileApp-CrCDQcw5.js.map +1 -0
  264. package/dist/core/web/public/next/assets/VerseShared-CFE5B-IY.js +2 -0
  265. package/dist/core/web/public/next/assets/VerseShared-CFE5B-IY.js.map +1 -0
  266. package/dist/core/web/public/next/assets/VoiceHud-CumHX7If.js +2 -0
  267. package/dist/core/web/public/next/assets/VoiceHud-CumHX7If.js.map +1 -0
  268. package/dist/core/web/public/next/assets/VoiceInput-CWTVwTwV.js +2 -0
  269. package/dist/core/web/public/next/assets/VoiceInput-CWTVwTwV.js.map +1 -0
  270. package/dist/core/web/public/next/assets/WikiSection-BIGSx4z-.js +2 -0
  271. package/dist/core/web/public/next/assets/WikiSection-BIGSx4z-.js.map +1 -0
  272. package/dist/core/web/public/next/assets/Workspace-5sa9Xggd.js +6 -0
  273. package/dist/core/web/public/next/assets/Workspace-5sa9Xggd.js.map +1 -0
  274. package/dist/core/web/public/next/assets/actions-BPyW8QC-.js +2 -0
  275. package/dist/core/web/public/next/assets/actions-BPyW8QC-.js.map +1 -0
  276. package/dist/core/web/public/next/assets/agent-tools-client-Si2ncqwV.js +2 -0
  277. package/dist/core/web/public/next/assets/agent-tools-client-Si2ncqwV.js.map +1 -0
  278. package/dist/core/web/public/next/assets/agent-transcript-model-D-34Ll59.js +7 -0
  279. package/dist/core/web/public/next/assets/agent-transcript-model-D-34Ll59.js.map +1 -0
  280. package/dist/core/web/public/next/assets/agents-focus-E_TBTTmZ.js +2 -0
  281. package/dist/core/web/public/next/assets/agents-focus-E_TBTTmZ.js.map +1 -0
  282. package/dist/core/web/public/next/assets/app-version-y5sfMXiE.js +2 -0
  283. package/dist/core/web/public/next/assets/app-version-y5sfMXiE.js.map +1 -0
  284. package/dist/core/web/public/next/assets/apps-model-BnjwUIUH.js +2 -0
  285. package/dist/core/web/public/next/assets/apps-model-BnjwUIUH.js.map +1 -0
  286. package/dist/core/web/public/next/assets/ask-seat-CWE-jY2D.js +2 -0
  287. package/dist/core/web/public/next/assets/ask-seat-CWE-jY2D.js.map +1 -0
  288. package/dist/core/web/public/next/assets/authority-model-DVMxkDV4.js +2 -0
  289. package/dist/core/web/public/next/assets/authority-model-DVMxkDV4.js.map +1 -0
  290. package/dist/core/web/public/next/assets/automations-focus-B-lklYid.js +2 -0
  291. package/dist/core/web/public/next/assets/automations-focus-B-lklYid.js.map +1 -0
  292. package/dist/core/web/public/next/assets/budget-model-Bwv4MZSa.js +2 -0
  293. package/dist/core/web/public/next/assets/budget-model-Bwv4MZSa.js.map +1 -0
  294. package/dist/core/web/public/next/assets/budget-queries-t-Bdoly3.js +2 -0
  295. package/dist/core/web/public/next/assets/budget-queries-t-Bdoly3.js.map +1 -0
  296. package/dist/core/web/public/next/assets/capacity-strip-model-CJ5F-CtB.js +2 -0
  297. package/dist/core/web/public/next/assets/capacity-strip-model-CJ5F-CtB.js.map +1 -0
  298. package/dist/core/web/public/next/assets/charts-Di0_Q980.js +2 -0
  299. package/dist/core/web/public/next/assets/charts-Di0_Q980.js.map +1 -0
  300. package/dist/core/web/public/next/assets/chat-pane-data-5MDEsLff.js +2 -0
  301. package/dist/core/web/public/next/assets/chat-pane-data-5MDEsLff.js.map +1 -0
  302. package/dist/core/web/public/next/assets/checkpoint-queries-6thqsAiE.js +2 -0
  303. package/dist/core/web/public/next/assets/checkpoint-queries-6thqsAiE.js.map +1 -0
  304. package/dist/core/web/public/next/assets/cloud-model-CzKeuxfm.js +2 -0
  305. package/dist/core/web/public/next/assets/cloud-model-CzKeuxfm.js.map +1 -0
  306. package/dist/core/web/public/next/assets/cloud-queries-DrR_QeUK.js +2 -0
  307. package/dist/core/web/public/next/assets/cloud-queries-DrR_QeUK.js.map +1 -0
  308. package/dist/core/web/public/next/assets/command-catalog-COH2G2xv.js +2 -0
  309. package/dist/core/web/public/next/assets/command-catalog-COH2G2xv.js.map +1 -0
  310. package/dist/core/web/public/next/assets/composer-queries-GxFt1UQm.js +2 -0
  311. package/dist/core/web/public/next/assets/composer-queries-GxFt1UQm.js.map +1 -0
  312. package/dist/core/web/public/next/assets/composer-state-DTAoie2b.js +2 -0
  313. package/dist/core/web/public/next/assets/composer-state-DTAoie2b.js.map +1 -0
  314. package/dist/core/web/public/next/assets/connectivity-zM4_O-XZ.js +2 -0
  315. package/dist/core/web/public/next/assets/connectivity-zM4_O-XZ.js.map +1 -0
  316. package/dist/core/web/public/next/assets/context-model-CKXUZd0O.js +2 -0
  317. package/dist/core/web/public/next/assets/context-model-CKXUZd0O.js.map +1 -0
  318. package/dist/core/web/public/next/assets/context-model-DYkDKK6C.js +3 -0
  319. package/dist/core/web/public/next/assets/context-model-DYkDKK6C.js.map +1 -0
  320. package/dist/core/web/public/next/assets/context-queries-D0Aydl5L.js +2 -0
  321. package/dist/core/web/public/next/assets/context-queries-D0Aydl5L.js.map +1 -0
  322. package/dist/core/web/public/next/assets/control-queries-C5uQTzJi.js +2 -0
  323. package/dist/core/web/public/next/assets/control-queries-C5uQTzJi.js.map +1 -0
  324. package/dist/core/web/public/next/assets/copy-setup-IHGsNfkz.js +2 -0
  325. package/dist/core/web/public/next/assets/copy-setup-IHGsNfkz.js.map +1 -0
  326. package/dist/core/web/public/next/assets/deep-link-DgTIAuc2.js +2 -0
  327. package/dist/core/web/public/next/assets/deep-link-DgTIAuc2.js.map +1 -0
  328. package/dist/core/web/public/next/assets/device-permissions-BplZgouU.js +2 -0
  329. package/dist/core/web/public/next/assets/device-permissions-BplZgouU.js.map +1 -0
  330. package/dist/core/web/public/next/assets/devin-queries-Bltl6Jz2.js +2 -0
  331. package/dist/core/web/public/next/assets/devin-queries-Bltl6Jz2.js.map +1 -0
  332. package/dist/core/web/public/next/assets/dock-icons-DPXFt10d.js +2 -0
  333. package/dist/core/web/public/next/assets/dock-icons-DPXFt10d.js.map +1 -0
  334. package/dist/core/web/public/next/assets/dock-panes-DNSv-1Tq.js +2 -0
  335. package/dist/core/web/public/next/assets/dock-panes-DNSv-1Tq.js.map +1 -0
  336. package/dist/core/web/public/next/assets/fleet-control-queries-DZEa-aFz.js +2 -0
  337. package/dist/core/web/public/next/assets/fleet-control-queries-DZEa-aFz.js.map +1 -0
  338. package/dist/core/web/public/next/assets/fleet-model-D4n8ErhA.js +2 -0
  339. package/dist/core/web/public/next/assets/fleet-model-D4n8ErhA.js.map +1 -0
  340. package/dist/core/web/public/next/assets/fleet-queries-BO1MHMFz.js +2 -0
  341. package/dist/core/web/public/next/assets/fleet-queries-BO1MHMFz.js.map +1 -0
  342. package/dist/core/web/public/next/assets/fleet-state-yM0mV9_P.js +3 -0
  343. package/dist/core/web/public/next/assets/fleet-state-yM0mV9_P.js.map +1 -0
  344. package/dist/core/web/public/next/assets/focus-trap-C2rynI8q.js +2 -0
  345. package/dist/core/web/public/next/assets/focus-trap-C2rynI8q.js.map +1 -0
  346. package/dist/core/web/public/next/assets/format-V6IiIMAL.js +2 -0
  347. package/dist/core/web/public/next/assets/format-V6IiIMAL.js.map +1 -0
  348. package/dist/core/web/public/next/assets/git-model-rVA0Jd0g.js +5 -0
  349. package/dist/core/web/public/next/assets/git-model-rVA0Jd0g.js.map +1 -0
  350. package/dist/core/web/public/next/assets/global-CYfRwH6t.js +3 -0
  351. package/dist/core/web/public/next/assets/global-CYfRwH6t.js.map +1 -0
  352. package/dist/core/web/public/next/assets/guarded-action-A9ZsIE8S.js +3 -0
  353. package/dist/core/web/public/next/assets/guarded-action-A9ZsIE8S.js.map +1 -0
  354. package/dist/core/web/public/next/assets/guarded-runners-xMakDn92.js +2 -0
  355. package/dist/core/web/public/next/assets/guarded-runners-xMakDn92.js.map +1 -0
  356. package/dist/core/web/public/next/assets/headroom-C4dyfw7P.js +2 -0
  357. package/dist/core/web/public/next/assets/headroom-C4dyfw7P.js.map +1 -0
  358. package/dist/core/web/public/next/assets/health-queries-BHoSyIcL.js +2 -0
  359. package/dist/core/web/public/next/assets/health-queries-BHoSyIcL.js.map +1 -0
  360. package/dist/core/web/public/next/assets/icons-BBm_Cy62.js +2 -0
  361. package/dist/core/web/public/next/assets/icons-BBm_Cy62.js.map +1 -0
  362. package/dist/core/web/public/next/assets/index-_izD07R9.js +11 -0
  363. package/dist/core/web/public/next/assets/index-_izD07R9.js.map +1 -0
  364. package/dist/core/web/public/next/assets/jev-queries-D-AMM0sw.js +2 -0
  365. package/dist/core/web/public/next/assets/jev-queries-D-AMM0sw.js.map +1 -0
  366. package/dist/core/web/public/next/assets/ladder-queries-BIpJVqxu.js +2 -0
  367. package/dist/core/web/public/next/assets/ladder-queries-BIpJVqxu.js.map +1 -0
  368. package/dist/core/web/public/next/assets/leader-focus-Dh4gXTSi.js +2 -0
  369. package/dist/core/web/public/next/assets/leader-focus-Dh4gXTSi.js.map +1 -0
  370. package/dist/core/web/public/next/assets/live-model-D97AfBFz.js +2 -0
  371. package/dist/core/web/public/next/assets/live-model-D97AfBFz.js.map +1 -0
  372. package/dist/core/web/public/next/assets/mind.module-rVKz51LB.js +2 -0
  373. package/dist/core/web/public/next/assets/mind.module-rVKz51LB.js.map +1 -0
  374. package/dist/core/web/public/next/assets/mobile-actions-V26-lGbH.js +2 -0
  375. package/dist/core/web/public/next/assets/mobile-actions-V26-lGbH.js.map +1 -0
  376. package/dist/core/web/public/next/assets/mobile-toast-9-WQbWQu.js +2 -0
  377. package/dist/core/web/public/next/assets/mobile-toast-9-WQbWQu.js.map +1 -0
  378. package/dist/core/web/public/next/assets/multimodel-flows-D309YXSk.js +7 -0
  379. package/dist/core/web/public/next/assets/multimodel-flows-D309YXSk.js.map +1 -0
  380. package/dist/core/web/public/next/assets/multimodel-queries-BuslyWtq.js +2 -0
  381. package/dist/core/web/public/next/assets/multimodel-queries-BuslyWtq.js.map +1 -0
  382. package/dist/core/web/public/next/assets/mutations-B9AZoqNR.js +2 -0
  383. package/dist/core/web/public/next/assets/mutations-B9AZoqNR.js.map +1 -0
  384. package/dist/core/web/public/next/assets/nav-DC0ynjdb.js +2 -0
  385. package/dist/core/web/public/next/assets/nav-DC0ynjdb.js.map +1 -0
  386. package/dist/core/web/public/next/assets/needs-you-actions-BOHN9fg7.js +2 -0
  387. package/dist/core/web/public/next/assets/needs-you-actions-BOHN9fg7.js.map +1 -0
  388. package/dist/core/web/public/next/assets/needs-you-model-ChGg3r5r.js +2 -0
  389. package/dist/core/web/public/next/assets/needs-you-model-ChGg3r5r.js.map +1 -0
  390. package/dist/core/web/public/next/assets/open-terminal-5F1FNUEB.js +2 -0
  391. package/dist/core/web/public/next/assets/open-terminal-5F1FNUEB.js.map +1 -0
  392. package/dist/core/web/public/next/assets/open-terminal-request-SjPIZmAt.js +2 -0
  393. package/dist/core/web/public/next/assets/open-terminal-request-SjPIZmAt.js.map +1 -0
  394. package/dist/core/web/public/next/assets/overnight-queries-Dc46kMfg.js +2 -0
  395. package/dist/core/web/public/next/assets/overnight-queries-Dc46kMfg.js.map +1 -0
  396. package/dist/core/web/public/next/assets/palette-handoff-xkWF9v2M.js +2 -0
  397. package/dist/core/web/public/next/assets/palette-handoff-xkWF9v2M.js.map +1 -0
  398. package/dist/core/web/public/next/assets/panes-DOXM13lF.js +3 -0
  399. package/dist/core/web/public/next/assets/panes-DOXM13lF.js.map +1 -0
  400. package/dist/core/web/public/next/assets/path-display-C6BmdnBS.js +2 -0
  401. package/dist/core/web/public/next/assets/path-display-C6BmdnBS.js.map +1 -0
  402. package/dist/core/web/public/next/assets/percent-text-CSk89zQF.js +2 -0
  403. package/dist/core/web/public/next/assets/percent-text-CSk89zQF.js.map +1 -0
  404. package/dist/core/web/public/next/assets/playbook-composer-Bz-fFxXW.js +2 -0
  405. package/dist/core/web/public/next/assets/playbook-composer-Bz-fFxXW.js.map +1 -0
  406. package/dist/core/web/public/next/assets/playbook-focus-BXu0yrHF.js +2 -0
  407. package/dist/core/web/public/next/assets/playbook-focus-BXu0yrHF.js.map +1 -0
  408. package/dist/core/web/public/next/assets/playbooks-queries-Cpnl3avl.js +2 -0
  409. package/dist/core/web/public/next/assets/playbooks-queries-Cpnl3avl.js.map +1 -0
  410. package/dist/core/web/public/next/assets/preloaded-E_jepvvg.js +2 -0
  411. package/dist/core/web/public/next/assets/preloaded-E_jepvvg.js.map +1 -0
  412. package/dist/core/web/public/next/assets/primitives-Bynv7bPl.js +1 -0
  413. package/dist/core/web/public/next/assets/pwa-D2lyCiGV.js +2 -0
  414. package/dist/core/web/public/next/assets/pwa-D2lyCiGV.js.map +1 -0
  415. package/dist/core/web/public/next/assets/queries-C0Bs3TOo.js +2 -0
  416. package/dist/core/web/public/next/assets/queries-C0Bs3TOo.js.map +1 -0
  417. package/dist/core/web/public/next/assets/reasoning-pref-DDPtfTM3.js +2 -0
  418. package/dist/core/web/public/next/assets/reasoning-pref-DDPtfTM3.js.map +1 -0
  419. package/dist/core/web/public/next/assets/remote-session-Dj27m1xb.js +3 -0
  420. package/dist/core/web/public/next/assets/remote-session-Dj27m1xb.js.map +1 -0
  421. package/dist/core/web/public/next/assets/resolved-store-B2iJa5C2.js +2 -0
  422. package/dist/core/web/public/next/assets/resolved-store-B2iJa5C2.js.map +1 -0
  423. package/dist/core/web/public/next/assets/resources-queries-pVRhOTEt.js +2 -0
  424. package/dist/core/web/public/next/assets/resources-queries-pVRhOTEt.js.map +1 -0
  425. package/dist/core/web/public/next/assets/reveal-anchor-BAMmxMeu.js +2 -0
  426. package/dist/core/web/public/next/assets/reveal-anchor-BAMmxMeu.js.map +1 -0
  427. package/dist/core/web/public/next/assets/rolldown-runtime-hePW80VL.js +1 -0
  428. package/dist/core/web/public/next/assets/seat-readiness-a5B9iqP-.js +2 -0
  429. package/dist/core/web/public/next/assets/seat-readiness-a5B9iqP-.js.map +1 -0
  430. package/dist/core/web/public/next/assets/seat-subscription-Cut6eC-8.js +2 -0
  431. package/dist/core/web/public/next/assets/seat-subscription-Cut6eC-8.js.map +1 -0
  432. package/dist/core/web/public/next/assets/sheet-BxZSmdad.js +2 -0
  433. package/dist/core/web/public/next/assets/sheet-BxZSmdad.js.map +1 -0
  434. package/dist/core/web/public/next/assets/sidebar-model-COzIPSiP.js +2 -0
  435. package/dist/core/web/public/next/assets/sidebar-model-COzIPSiP.js.map +1 -0
  436. package/dist/core/web/public/next/assets/slots-BJc3RJkV.js +3 -0
  437. package/dist/core/web/public/next/assets/slots-BJc3RJkV.js.map +1 -0
  438. package/dist/core/web/public/next/assets/sources-queries-DCKiXNAt.js +4 -0
  439. package/dist/core/web/public/next/assets/sources-queries-DCKiXNAt.js.map +1 -0
  440. package/dist/core/web/public/next/assets/sse-It4xa040.js +2 -0
  441. package/dist/core/web/public/next/assets/sse-It4xa040.js.map +1 -0
  442. package/dist/core/web/public/next/assets/surface-data-NFl_uS--.js +2 -0
  443. package/dist/core/web/public/next/assets/surface-data-NFl_uS--.js.map +1 -0
  444. package/dist/core/web/public/next/assets/surface-prefetch-jMaLNI6z.js +2 -0
  445. package/dist/core/web/public/next/assets/surface-prefetch-jMaLNI6z.js.map +1 -0
  446. package/dist/core/web/public/next/assets/tasks-model-CbmPgWL8.js +2 -0
  447. package/dist/core/web/public/next/assets/tasks-model-CbmPgWL8.js.map +1 -0
  448. package/dist/core/web/public/next/assets/terminal-client-DTXAf2-x.js +2 -0
  449. package/dist/core/web/public/next/assets/terminal-client-DTXAf2-x.js.map +1 -0
  450. package/dist/core/web/public/next/assets/terminal-icons-qBCOwqu-.js +2 -0
  451. package/dist/core/web/public/next/assets/terminal-icons-qBCOwqu-.js.map +1 -0
  452. package/dist/core/web/public/next/assets/terminal-view-CksH3CsK.js +6 -0
  453. package/dist/core/web/public/next/assets/terminal-view-CksH3CsK.js.map +1 -0
  454. package/dist/core/web/public/next/assets/thread-data-C8z55msn.js +2 -0
  455. package/dist/core/web/public/next/assets/thread-data-C8z55msn.js.map +1 -0
  456. package/dist/core/web/public/next/assets/ui-parts-CcpmRBwj.js +2 -0
  457. package/dist/core/web/public/next/assets/ui-parts-CcpmRBwj.js.map +1 -0
  458. package/dist/core/web/public/next/assets/usage-queries-BxrTLCaJ.js +2 -0
  459. package/dist/core/web/public/next/assets/usage-queries-BxrTLCaJ.js.map +1 -0
  460. package/dist/core/web/public/next/assets/use-chat-activity-O8I0Ho0m.js +2 -0
  461. package/dist/core/web/public/next/assets/use-chat-activity-O8I0Ho0m.js.map +1 -0
  462. package/dist/core/web/public/next/assets/use-guarded-action-BZ6Bye9l.js +2 -0
  463. package/dist/core/web/public/next/assets/use-guarded-action-BZ6Bye9l.js.map +1 -0
  464. package/dist/core/web/public/next/assets/use-ticker-CUsNALmP.js +2 -0
  465. package/dist/core/web/public/next/assets/use-ticker-CUsNALmP.js.map +1 -0
  466. package/dist/core/web/public/next/assets/use-token-gate-DgnO9fbv.js +2 -0
  467. package/dist/core/web/public/next/assets/use-token-gate-DgnO9fbv.js.map +1 -0
  468. package/dist/core/web/public/next/assets/useAutoSeat-CIEXM-Q5.js +2 -0
  469. package/dist/core/web/public/next/assets/useAutoSeat-CIEXM-Q5.js.map +1 -0
  470. package/dist/core/web/public/next/assets/useOnboarding-BAmRBxkI.js +2 -0
  471. package/dist/core/web/public/next/assets/useOnboarding-BAmRBxkI.js.map +1 -0
  472. package/dist/core/web/public/next/assets/useSeatHealth-DPkSSddF.js +2 -0
  473. package/dist/core/web/public/next/assets/useSeatHealth-DPkSSddF.js.map +1 -0
  474. package/dist/core/web/public/next/assets/useSeatsRefresh-CpsRhfmt.js +2 -0
  475. package/dist/core/web/public/next/assets/useSeatsRefresh-CpsRhfmt.js.map +1 -0
  476. package/dist/core/web/public/next/assets/useVerseSession-DeW1iFpw.js +2 -0
  477. package/dist/core/web/public/next/assets/useVerseSession-DeW1iFpw.js.map +1 -0
  478. package/dist/core/web/public/next/assets/useVerseTranscript-CvUqjRmZ.js +2 -0
  479. package/dist/core/web/public/next/assets/useVerseTranscript-CvUqjRmZ.js.map +1 -0
  480. package/dist/core/web/public/next/assets/verse-bootstrap-query-ANtL2OPN.js +2 -0
  481. package/dist/core/web/public/next/assets/verse-bootstrap-query-ANtL2OPN.js.map +1 -0
  482. package/dist/core/web/public/next/assets/verse-icons-C92Qt7rh.js +2 -0
  483. package/dist/core/web/public/next/assets/verse-icons-C92Qt7rh.js.map +1 -0
  484. package/dist/core/web/public/next/assets/verse-model-DAOz9LrY.js +2 -0
  485. package/dist/core/web/public/next/assets/verse-model-DAOz9LrY.js.map +1 -0
  486. package/dist/core/web/public/next/assets/warmup-B2DWWeeC.js +3 -0
  487. package/dist/core/web/public/next/assets/warmup-B2DWWeeC.js.map +1 -0
  488. package/dist/core/web/public/next/assets/why-seat-model-Bn6O26JJ.js +2 -0
  489. package/dist/core/web/public/next/assets/why-seat-model-Bn6O26JJ.js.map +1 -0
  490. package/dist/core/web/public/next/assets/wiki-focus-CwC-yoT9.js +2 -0
  491. package/dist/core/web/public/next/assets/wiki-focus-CwC-yoT9.js.map +1 -0
  492. package/dist/core/web/public/next/assets/workspace-model-C-q_I8xN.js +2 -0
  493. package/dist/core/web/public/next/assets/workspace-model-C-q_I8xN.js.map +1 -0
  494. package/dist/core/web/public/next/index.html +2 -1
  495. package/dist/core/web/remote-gateway-policy.js +5 -0
  496. package/dist/core/web/remote-gateway-policy.js.map +1 -1
  497. package/dist/core/web/static.d.ts +4 -3
  498. package/dist/core/web/static.js +8 -5
  499. package/dist/core/web/static.js.map +1 -1
  500. package/dist/release-dependency-inventory.json +1 -1
  501. package/node_modules/fast-uri/index.js +20 -5
  502. package/node_modules/fast-uri/lib/utils.js +8 -1
  503. package/node_modules/fast-uri/package.json +1 -1
  504. package/node_modules/fast-uri/test/component-safe-serialization.test.js +58 -0
  505. package/node_modules/fast-uri/test/ipv6-validation.test.js +34 -0
  506. package/node_modules/ip-address/README.md +134 -134
  507. package/node_modules/ip-address/dist/address-error.d.ts +11 -0
  508. package/node_modules/ip-address/dist/address-error.js.map +1 -1
  509. package/node_modules/ip-address/dist/ipv4.d.ts +22 -6
  510. package/node_modules/ip-address/dist/ipv4.js +22 -6
  511. package/node_modules/ip-address/dist/ipv4.js.map +1 -1
  512. package/node_modules/ip-address/dist/ipv6.d.ts +26 -8
  513. package/node_modules/ip-address/dist/ipv6.js +46 -29
  514. package/node_modules/ip-address/dist/ipv6.js.map +1 -1
  515. package/node_modules/ip-address/dist/v6/constants.js +1 -0
  516. package/node_modules/ip-address/dist/v6/constants.js.map +1 -1
  517. package/node_modules/ip-address/package.json +1 -1
  518. package/package.json +5 -4
  519. package/dist/core/web/public/next/assets/ActionMenu-Bia8Re6u.js +0 -2
  520. package/dist/core/web/public/next/assets/ActionMenu-Bia8Re6u.js.map +0 -1
  521. package/dist/core/web/public/next/assets/Advanced-C1LtnA8c.js +0 -2
  522. package/dist/core/web/public/next/assets/Advanced-C1LtnA8c.js.map +0 -1
  523. package/dist/core/web/public/next/assets/AgentDetailScreen-DuoXrbol.js +0 -2
  524. package/dist/core/web/public/next/assets/AgentDetailScreen-DuoXrbol.js.map +0 -1
  525. package/dist/core/web/public/next/assets/AgentToolsSheet-Bdfk4SF-.js +0 -2
  526. package/dist/core/web/public/next/assets/AgentToolsSheet-Bdfk4SF-.js.map +0 -1
  527. package/dist/core/web/public/next/assets/AgentToolsStrip-BN1otiqC.js +0 -2
  528. package/dist/core/web/public/next/assets/AgentToolsStrip-BN1otiqC.js.map +0 -1
  529. package/dist/core/web/public/next/assets/AgentsScreen-BxHFaI48.js +0 -2
  530. package/dist/core/web/public/next/assets/AgentsScreen-BxHFaI48.js.map +0 -1
  531. package/dist/core/web/public/next/assets/AgentsSection-mYIA8Lyk.js +0 -3
  532. package/dist/core/web/public/next/assets/AgentsSection-mYIA8Lyk.js.map +0 -1
  533. package/dist/core/web/public/next/assets/App-DebYuj1v.js +0 -8
  534. package/dist/core/web/public/next/assets/App-DebYuj1v.js.map +0 -1
  535. package/dist/core/web/public/next/assets/AppsSection-W30duGQA.js +0 -2
  536. package/dist/core/web/public/next/assets/AppsSection-W30duGQA.js.map +0 -1
  537. package/dist/core/web/public/next/assets/AreaTrend-ZnnIjBGU.js +0 -2
  538. package/dist/core/web/public/next/assets/AreaTrend-ZnnIjBGU.js.map +0 -1
  539. package/dist/core/web/public/next/assets/AutomationsSection-B4N0V-vz.js +0 -2
  540. package/dist/core/web/public/next/assets/AutomationsSection-B4N0V-vz.js.map +0 -1
  541. package/dist/core/web/public/next/assets/AutonomyOffState-C9S_FXc0.js +0 -3
  542. package/dist/core/web/public/next/assets/AutonomyOffState-C9S_FXc0.js.map +0 -1
  543. package/dist/core/web/public/next/assets/AutonomySection-oMQfNEQN.js +0 -2
  544. package/dist/core/web/public/next/assets/AutonomySection-oMQfNEQN.js.map +0 -1
  545. package/dist/core/web/public/next/assets/AutonomyStatus-CdHOyhrV.js +0 -2
  546. package/dist/core/web/public/next/assets/AutonomyStatus-CdHOyhrV.js.map +0 -1
  547. package/dist/core/web/public/next/assets/BranchBar-Bo5b8-hr.js +0 -2
  548. package/dist/core/web/public/next/assets/BranchBar-Bo5b8-hr.js.map +0 -1
  549. package/dist/core/web/public/next/assets/BrowserPanel-D02omBK0.js +0 -7
  550. package/dist/core/web/public/next/assets/BrowserPanel-D02omBK0.js.map +0 -1
  551. package/dist/core/web/public/next/assets/BudgetControl-BtPTi8qI.js +0 -2
  552. package/dist/core/web/public/next/assets/BudgetControl-BtPTi8qI.js.map +0 -1
  553. package/dist/core/web/public/next/assets/Button-DP2ImS5n.js +0 -2
  554. package/dist/core/web/public/next/assets/Button-DP2ImS5n.js.map +0 -1
  555. package/dist/core/web/public/next/assets/CapacityStrip-ChYPcr23.js +0 -2
  556. package/dist/core/web/public/next/assets/CapacityStrip-ChYPcr23.js.map +0 -1
  557. package/dist/core/web/public/next/assets/ChangesPaneHost-C53_94Kn.js +0 -16
  558. package/dist/core/web/public/next/assets/ChangesPaneHost-C53_94Kn.js.map +0 -1
  559. package/dist/core/web/public/next/assets/ChartFrame-CtFLETWA.js +0 -2
  560. package/dist/core/web/public/next/assets/ChartFrame-CtFLETWA.js.map +0 -1
  561. package/dist/core/web/public/next/assets/ChatPanes-CyAK9VAi.js +0 -2
  562. package/dist/core/web/public/next/assets/ChatPanes-CyAK9VAi.js.map +0 -1
  563. package/dist/core/web/public/next/assets/ChatSection-DV9smoPe.js +0 -3
  564. package/dist/core/web/public/next/assets/ChatSection-DV9smoPe.js.map +0 -1
  565. package/dist/core/web/public/next/assets/ChecksPanel-B6T2sjc_.js +0 -5
  566. package/dist/core/web/public/next/assets/ChecksPanel-B6T2sjc_.js.map +0 -1
  567. package/dist/core/web/public/next/assets/CloudBudgetForm-D8RbdAC7.js +0 -2
  568. package/dist/core/web/public/next/assets/CloudBudgetForm-D8RbdAC7.js.map +0 -1
  569. package/dist/core/web/public/next/assets/CommandPalette-C04gGTES.js +0 -3
  570. package/dist/core/web/public/next/assets/CommandPalette-C04gGTES.js.map +0 -1
  571. package/dist/core/web/public/next/assets/CommandSection-Be8VFAEU.js +0 -3
  572. package/dist/core/web/public/next/assets/CommandSection-Be8VFAEU.js.map +0 -1
  573. package/dist/core/web/public/next/assets/CommandWorkflowForm-D5A7c2PE.js +0 -9
  574. package/dist/core/web/public/next/assets/CommandWorkflowForm-D5A7c2PE.js.map +0 -1
  575. package/dist/core/web/public/next/assets/CommandWorkflowPicker-CGrRWfzQ.js +0 -3
  576. package/dist/core/web/public/next/assets/CommandWorkflowPicker-CGrRWfzQ.js.map +0 -1
  577. package/dist/core/web/public/next/assets/CompareDialog-C2ryiEtF.js +0 -4
  578. package/dist/core/web/public/next/assets/CompareDialog-C2ryiEtF.js.map +0 -1
  579. package/dist/core/web/public/next/assets/ComputerControl-C4oW7Zim.js +0 -2
  580. package/dist/core/web/public/next/assets/ComputerControl-C4oW7Zim.js.map +0 -1
  581. package/dist/core/web/public/next/assets/ConfirmDialog-J8CszPmj.js +0 -2
  582. package/dist/core/web/public/next/assets/ConfirmDialog-J8CszPmj.js.map +0 -1
  583. package/dist/core/web/public/next/assets/DeleteChatDialog-BT5y9cR2.js +0 -2
  584. package/dist/core/web/public/next/assets/DeleteChatDialog-BT5y9cR2.js.map +0 -1
  585. package/dist/core/web/public/next/assets/DevinStopDialog-CADdSqha.js +0 -2
  586. package/dist/core/web/public/next/assets/DevinStopDialog-CADdSqha.js.map +0 -1
  587. package/dist/core/web/public/next/assets/Dialog-BYIKNPcH.js +0 -2
  588. package/dist/core/web/public/next/assets/Dialog-BYIKNPcH.js.map +0 -1
  589. package/dist/core/web/public/next/assets/DiffPane-D_CC9a5x.js +0 -2
  590. package/dist/core/web/public/next/assets/DiffPane-D_CC9a5x.js.map +0 -1
  591. package/dist/core/web/public/next/assets/DiffViewer-DjtLl7ro.js +0 -2
  592. package/dist/core/web/public/next/assets/DiffViewer-DjtLl7ro.js.map +0 -1
  593. package/dist/core/web/public/next/assets/DockHost-BHbosAjM.js +0 -2
  594. package/dist/core/web/public/next/assets/DockHost-BHbosAjM.js.map +0 -1
  595. package/dist/core/web/public/next/assets/EmptyState-BEXDoNZd.js +0 -2
  596. package/dist/core/web/public/next/assets/EmptyState-BEXDoNZd.js.map +0 -1
  597. package/dist/core/web/public/next/assets/Epistemic-BPBAmLNh.js +0 -2
  598. package/dist/core/web/public/next/assets/Epistemic-BPBAmLNh.js.map +0 -1
  599. package/dist/core/web/public/next/assets/EvidenceTimeline-D2nuo6Oo.js +0 -2
  600. package/dist/core/web/public/next/assets/EvidenceTimeline-D2nuo6Oo.js.map +0 -1
  601. package/dist/core/web/public/next/assets/FilesPane-BQBcWyxr.js +0 -2
  602. package/dist/core/web/public/next/assets/FilesPane-BQBcWyxr.js.map +0 -1
  603. package/dist/core/web/public/next/assets/FleetScreen-YXDuVwKd.js +0 -2
  604. package/dist/core/web/public/next/assets/FleetScreen-YXDuVwKd.js.map +0 -1
  605. package/dist/core/web/public/next/assets/FleetSection-D2M7u9zG.js +0 -5
  606. package/dist/core/web/public/next/assets/FleetSection-D2M7u9zG.js.map +0 -1
  607. package/dist/core/web/public/next/assets/Funnel-rnPUaoN7.js +0 -2
  608. package/dist/core/web/public/next/assets/Funnel-rnPUaoN7.js.map +0 -1
  609. package/dist/core/web/public/next/assets/GearTray-Cc14h572.js +0 -2
  610. package/dist/core/web/public/next/assets/GearTray-Cc14h572.js.map +0 -1
  611. package/dist/core/web/public/next/assets/GitDialogs-BSTlyNJR.js +0 -2
  612. package/dist/core/web/public/next/assets/GitDialogs-BSTlyNJR.js.map +0 -1
  613. package/dist/core/web/public/next/assets/GrowthSection-BK63EJn9.js +0 -3
  614. package/dist/core/web/public/next/assets/GrowthSection-BK63EJn9.js.map +0 -1
  615. package/dist/core/web/public/next/assets/HandoffDialog-DD4M-C7v.js +0 -2
  616. package/dist/core/web/public/next/assets/HandoffDialog-DD4M-C7v.js.map +0 -1
  617. package/dist/core/web/public/next/assets/HomeBody-OEhTpkk9.js +0 -3
  618. package/dist/core/web/public/next/assets/HomeBody-OEhTpkk9.js.map +0 -1
  619. package/dist/core/web/public/next/assets/HomeSeats-CJCxRUlD.js +0 -2
  620. package/dist/core/web/public/next/assets/HomeSeats-CJCxRUlD.js.map +0 -1
  621. package/dist/core/web/public/next/assets/Input-BEF-ScuG.js +0 -2
  622. package/dist/core/web/public/next/assets/Input-BEF-ScuG.js.map +0 -1
  623. package/dist/core/web/public/next/assets/LaunchDialog-CERI717u.js +0 -9
  624. package/dist/core/web/public/next/assets/LaunchDialog-CERI717u.js.map +0 -1
  625. package/dist/core/web/public/next/assets/LeaderCard-3P95vgVU.js +0 -2
  626. package/dist/core/web/public/next/assets/LeaderCard-3P95vgVU.js.map +0 -1
  627. package/dist/core/web/public/next/assets/LeaderConversation-DjZS2PrX.js +0 -3
  628. package/dist/core/web/public/next/assets/LeaderConversation-DjZS2PrX.js.map +0 -1
  629. package/dist/core/web/public/next/assets/LeaderScreen-Dw5jDfWv.js +0 -2
  630. package/dist/core/web/public/next/assets/LeaderScreen-Dw5jDfWv.js.map +0 -1
  631. package/dist/core/web/public/next/assets/LessonsPanel-Wy6TVWEv.js +0 -2
  632. package/dist/core/web/public/next/assets/LessonsPanel-Wy6TVWEv.js.map +0 -1
  633. package/dist/core/web/public/next/assets/LiveTimer-c18lVIBC.js +0 -2
  634. package/dist/core/web/public/next/assets/LiveTimer-c18lVIBC.js.map +0 -1
  635. package/dist/core/web/public/next/assets/LocalSeatBadge-BfUUuXE5.js +0 -2
  636. package/dist/core/web/public/next/assets/LocalSeatBadge-BfUUuXE5.js.map +0 -1
  637. package/dist/core/web/public/next/assets/MatrixHeatmap-DTOumwCS.js +0 -2
  638. package/dist/core/web/public/next/assets/MatrixHeatmap-DTOumwCS.js.map +0 -1
  639. package/dist/core/web/public/next/assets/McpSection-D9eJislZ.js +0 -2
  640. package/dist/core/web/public/next/assets/McpSection-D9eJislZ.js.map +0 -1
  641. package/dist/core/web/public/next/assets/MessageMarkdown-Dkw4V24c.js +0 -3
  642. package/dist/core/web/public/next/assets/MessageMarkdown-Dkw4V24c.js.map +0 -1
  643. package/dist/core/web/public/next/assets/MessageMarkdownRenderer-VOSfkJpd.js +0 -72
  644. package/dist/core/web/public/next/assets/MessageMarkdownRenderer-VOSfkJpd.js.map +0 -1
  645. package/dist/core/web/public/next/assets/Meter-dMqKBaVV.js +0 -2
  646. package/dist/core/web/public/next/assets/Meter-dMqKBaVV.js.map +0 -1
  647. package/dist/core/web/public/next/assets/MicButton-92I_NsaT.js +0 -2
  648. package/dist/core/web/public/next/assets/MicButton-92I_NsaT.js.map +0 -1
  649. package/dist/core/web/public/next/assets/MindSection-CaGckJiR.js +0 -3
  650. package/dist/core/web/public/next/assets/MindSection-CaGckJiR.js.map +0 -1
  651. package/dist/core/web/public/next/assets/MobileComposer-BOFWmkku.js +0 -2
  652. package/dist/core/web/public/next/assets/MobileComposer-BOFWmkku.js.map +0 -1
  653. package/dist/core/web/public/next/assets/MobileGuardSheet-CY3Iulte.js +0 -2
  654. package/dist/core/web/public/next/assets/MobileGuardSheet-CY3Iulte.js.map +0 -1
  655. package/dist/core/web/public/next/assets/MobileRuntime-C-GtV4jT.js +0 -3
  656. package/dist/core/web/public/next/assets/MobileRuntime-C-GtV4jT.js.map +0 -1
  657. package/dist/core/web/public/next/assets/MoreScreen-BaH8iEnb.js +0 -2
  658. package/dist/core/web/public/next/assets/MoreScreen-BaH8iEnb.js.map +0 -1
  659. package/dist/core/web/public/next/assets/MultiModelBar-7DHuXGht.js +0 -7
  660. package/dist/core/web/public/next/assets/MultiModelBar-7DHuXGht.js.map +0 -1
  661. package/dist/core/web/public/next/assets/MutationTokenDialog-D522NXsm.js +0 -2
  662. package/dist/core/web/public/next/assets/MutationTokenDialog-D522NXsm.js.map +0 -1
  663. package/dist/core/web/public/next/assets/NeedsYouDrawer-6ud1RHOU.js +0 -3
  664. package/dist/core/web/public/next/assets/NeedsYouDrawer-6ud1RHOU.js.map +0 -1
  665. package/dist/core/web/public/next/assets/NeedsYouList-E-yy-xKE.js +0 -2
  666. package/dist/core/web/public/next/assets/NeedsYouList-E-yy-xKE.js.map +0 -1
  667. package/dist/core/web/public/next/assets/NeedsYouScreen-D13Q7iU8.js +0 -2
  668. package/dist/core/web/public/next/assets/NeedsYouScreen-D13Q7iU8.js.map +0 -1
  669. package/dist/core/web/public/next/assets/NewAgentScreen-BLtU1u-d.js +0 -2
  670. package/dist/core/web/public/next/assets/NewAgentScreen-BLtU1u-d.js.map +0 -1
  671. package/dist/core/web/public/next/assets/NewChatDialog-BL15LCaj.js +0 -4
  672. package/dist/core/web/public/next/assets/NewChatDialog-BL15LCaj.js.map +0 -1
  673. package/dist/core/web/public/next/assets/OnboardingFlow-7LRC7FlX.js +0 -3
  674. package/dist/core/web/public/next/assets/OnboardingFlow-7LRC7FlX.js.map +0 -1
  675. package/dist/core/web/public/next/assets/OnboardingGate-DRlv8QZ5.js +0 -3
  676. package/dist/core/web/public/next/assets/OnboardingGate-DRlv8QZ5.js.map +0 -1
  677. package/dist/core/web/public/next/assets/PlaybooksSection-D_uQ-NB3.js +0 -9
  678. package/dist/core/web/public/next/assets/PlaybooksSection-D_uQ-NB3.js.map +0 -1
  679. package/dist/core/web/public/next/assets/PreviewPane-DubyNi8H.js +0 -2
  680. package/dist/core/web/public/next/assets/PreviewPane-DubyNi8H.js.map +0 -1
  681. package/dist/core/web/public/next/assets/ProviderLogo-CWrojWjI.js +0 -2
  682. package/dist/core/web/public/next/assets/ProviderLogo-CWrojWjI.js.map +0 -1
  683. package/dist/core/web/public/next/assets/RailStatus-xjOcjL0v.js +0 -2
  684. package/dist/core/web/public/next/assets/RailStatus-xjOcjL0v.js.map +0 -1
  685. package/dist/core/web/public/next/assets/ReasoningPane-M7ZfvEc5.js +0 -2
  686. package/dist/core/web/public/next/assets/ReasoningPane-M7ZfvEc5.js.map +0 -1
  687. package/dist/core/web/public/next/assets/ReasoningSheet-RLLj2oys.js +0 -2
  688. package/dist/core/web/public/next/assets/ReasoningSheet-RLLj2oys.js.map +0 -1
  689. package/dist/core/web/public/next/assets/RefreshIndicator-CEMRNruu.js +0 -2
  690. package/dist/core/web/public/next/assets/RefreshIndicator-CEMRNruu.js.map +0 -1
  691. package/dist/core/web/public/next/assets/RemoteMobileApp-BcXsVw0z.js +0 -2
  692. package/dist/core/web/public/next/assets/RemoteMobileApp-BcXsVw0z.js.map +0 -1
  693. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-BC_Q_i0I.js +0 -7
  694. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-BC_Q_i0I.js.map +0 -1
  695. package/dist/core/web/public/next/assets/ResourcesChrome-CPcTYvZR.js +0 -3
  696. package/dist/core/web/public/next/assets/ResourcesChrome-CPcTYvZR.js.map +0 -1
  697. package/dist/core/web/public/next/assets/ResourcesDrawer-C6VzGCSv.js +0 -3
  698. package/dist/core/web/public/next/assets/ResourcesDrawer-C6VzGCSv.js.map +0 -1
  699. package/dist/core/web/public/next/assets/RouteErrorBoundary-Cc9GsjZz.js +0 -2
  700. package/dist/core/web/public/next/assets/RouteErrorBoundary-Cc9GsjZz.js.map +0 -1
  701. package/dist/core/web/public/next/assets/RunInCloudAction-P_hDsqjX.js +0 -2
  702. package/dist/core/web/public/next/assets/RunInCloudAction-P_hDsqjX.js.map +0 -1
  703. package/dist/core/web/public/next/assets/RunInDevinAction-CfNpQCP3.js +0 -2
  704. package/dist/core/web/public/next/assets/RunInDevinAction-CfNpQCP3.js.map +0 -1
  705. package/dist/core/web/public/next/assets/ScreenHost-BBYihlNQ.js +0 -3
  706. package/dist/core/web/public/next/assets/ScreenHost-BBYihlNQ.js.map +0 -1
  707. package/dist/core/web/public/next/assets/SeatSelector-DSd_pxg2.js +0 -3
  708. package/dist/core/web/public/next/assets/SeatSelector-DSd_pxg2.js.map +0 -1
  709. package/dist/core/web/public/next/assets/Segmented-CtwuFlbY.js +0 -2
  710. package/dist/core/web/public/next/assets/Segmented-CtwuFlbY.js.map +0 -1
  711. package/dist/core/web/public/next/assets/Select-zXMdgblm.js +0 -2
  712. package/dist/core/web/public/next/assets/Select-zXMdgblm.js.map +0 -1
  713. package/dist/core/web/public/next/assets/SessionGate-88QiSoXo.js +0 -2
  714. package/dist/core/web/public/next/assets/SessionGate-88QiSoXo.js.map +0 -1
  715. package/dist/core/web/public/next/assets/SessionInsightChip-CaPvisvI.js +0 -2
  716. package/dist/core/web/public/next/assets/SessionInsightChip-CaPvisvI.js.map +0 -1
  717. package/dist/core/web/public/next/assets/SessionSearch-Ch3veGxY.js +0 -2
  718. package/dist/core/web/public/next/assets/SessionSearch-Ch3veGxY.js.map +0 -1
  719. package/dist/core/web/public/next/assets/SettingsSection-DLSYZEFc.js +0 -2
  720. package/dist/core/web/public/next/assets/SettingsSection-DLSYZEFc.js.map +0 -1
  721. package/dist/core/web/public/next/assets/SetupChecklist-DFAVVLpJ.js +0 -2
  722. package/dist/core/web/public/next/assets/SetupChecklist-DFAVVLpJ.js.map +0 -1
  723. package/dist/core/web/public/next/assets/ShadowDecisions-Gtrbo4US.js +0 -3
  724. package/dist/core/web/public/next/assets/ShadowDecisions-Gtrbo4US.js.map +0 -1
  725. package/dist/core/web/public/next/assets/Sheet-D72WH4mP.js +0 -2
  726. package/dist/core/web/public/next/assets/Sheet-D72WH4mP.js.map +0 -1
  727. package/dist/core/web/public/next/assets/ShortcutsOverlay-DKetDlCR.js +0 -2
  728. package/dist/core/web/public/next/assets/ShortcutsOverlay-DKetDlCR.js.map +0 -1
  729. package/dist/core/web/public/next/assets/Sidebar-CqOJle0q.js +0 -3
  730. package/dist/core/web/public/next/assets/Sidebar-CqOJle0q.js.map +0 -1
  731. package/dist/core/web/public/next/assets/SkipToContent-C7UObcP2.js +0 -2
  732. package/dist/core/web/public/next/assets/SkipToContent-C7UObcP2.js.map +0 -1
  733. package/dist/core/web/public/next/assets/Slider-Bi5q-21C.js +0 -2
  734. package/dist/core/web/public/next/assets/Slider-Bi5q-21C.js.map +0 -1
  735. package/dist/core/web/public/next/assets/SourcesPane-D7Raaor0.js +0 -2
  736. package/dist/core/web/public/next/assets/SourcesPane-D7Raaor0.js.map +0 -1
  737. package/dist/core/web/public/next/assets/SourcesPanel-CCSdY5Os.js +0 -2
  738. package/dist/core/web/public/next/assets/SourcesPanel-CCSdY5Os.js.map +0 -1
  739. package/dist/core/web/public/next/assets/StatTile-BS_dzInS.js +0 -2
  740. package/dist/core/web/public/next/assets/StatTile-BS_dzInS.js.map +0 -1
  741. package/dist/core/web/public/next/assets/StatusBadge-CJbb9DhR.js +0 -2
  742. package/dist/core/web/public/next/assets/StatusBadge-CJbb9DhR.js.map +0 -1
  743. package/dist/core/web/public/next/assets/StepBand-Bfj1YYTl.js +0 -2
  744. package/dist/core/web/public/next/assets/StepBand-Bfj1YYTl.js.map +0 -1
  745. package/dist/core/web/public/next/assets/Surface-CV-NXGIM.js +0 -2
  746. package/dist/core/web/public/next/assets/Surface-CV-NXGIM.js.map +0 -1
  747. package/dist/core/web/public/next/assets/Swimlane-DbUp4tjD.js +0 -2
  748. package/dist/core/web/public/next/assets/Swimlane-DbUp4tjD.js.map +0 -1
  749. package/dist/core/web/public/next/assets/Switch-BtEo9Cku.js +0 -2
  750. package/dist/core/web/public/next/assets/Switch-BtEo9Cku.js.map +0 -1
  751. package/dist/core/web/public/next/assets/Tag-CMFqY2MP.js +0 -2
  752. package/dist/core/web/public/next/assets/Tag-CMFqY2MP.js.map +0 -1
  753. package/dist/core/web/public/next/assets/TerminalPane-BCjlhc3t.js +0 -26
  754. package/dist/core/web/public/next/assets/TerminalPane-BCjlhc3t.js.map +0 -1
  755. package/dist/core/web/public/next/assets/TerminalPane-DIwGSCA9.js +0 -3
  756. package/dist/core/web/public/next/assets/TerminalPane-DIwGSCA9.js.map +0 -1
  757. package/dist/core/web/public/next/assets/ThinkingBlock-Db8qnuKz.js +0 -2
  758. package/dist/core/web/public/next/assets/ThinkingBlock-Db8qnuKz.js.map +0 -1
  759. package/dist/core/web/public/next/assets/UniverseConsoleApp-ksreONXM.js +0 -2
  760. package/dist/core/web/public/next/assets/UniverseConsoleApp-ksreONXM.js.map +0 -1
  761. package/dist/core/web/public/next/assets/UniverseView-CfT9Dsl7.js +0 -9
  762. package/dist/core/web/public/next/assets/UniverseView-CfT9Dsl7.js.map +0 -1
  763. package/dist/core/web/public/next/assets/UsageSection-DypcdQys.js +0 -3
  764. package/dist/core/web/public/next/assets/UsageSection-DypcdQys.js.map +0 -1
  765. package/dist/core/web/public/next/assets/UsePlaybookAction-Bxwqrpwe.js +0 -2
  766. package/dist/core/web/public/next/assets/UsePlaybookAction-Bxwqrpwe.js.map +0 -1
  767. package/dist/core/web/public/next/assets/VerseConsoleApp-kFOEmnGC.js +0 -3
  768. package/dist/core/web/public/next/assets/VerseConsoleApp-kFOEmnGC.js.map +0 -1
  769. package/dist/core/web/public/next/assets/VerseMobileApp-BTGF5yuZ.js +0 -3
  770. package/dist/core/web/public/next/assets/VerseMobileApp-BTGF5yuZ.js.map +0 -1
  771. package/dist/core/web/public/next/assets/VerseShared-_pMXKs8m.js +0 -2
  772. package/dist/core/web/public/next/assets/VerseShared-_pMXKs8m.js.map +0 -1
  773. package/dist/core/web/public/next/assets/VoiceHud-B_hiHfnQ.js +0 -2
  774. package/dist/core/web/public/next/assets/VoiceHud-B_hiHfnQ.js.map +0 -1
  775. package/dist/core/web/public/next/assets/VoiceInput-B7yrGchr.js +0 -2
  776. package/dist/core/web/public/next/assets/VoiceInput-B7yrGchr.js.map +0 -1
  777. package/dist/core/web/public/next/assets/WikiSection-BXu4aZyr.js +0 -2
  778. package/dist/core/web/public/next/assets/WikiSection-BXu4aZyr.js.map +0 -1
  779. package/dist/core/web/public/next/assets/Workspace-BYT3iuNM.js +0 -6
  780. package/dist/core/web/public/next/assets/Workspace-BYT3iuNM.js.map +0 -1
  781. package/dist/core/web/public/next/assets/actions-CyO4R-IO.js +0 -2
  782. package/dist/core/web/public/next/assets/actions-CyO4R-IO.js.map +0 -1
  783. package/dist/core/web/public/next/assets/agent-tools-client-FgVNokGh.js +0 -2
  784. package/dist/core/web/public/next/assets/agent-tools-client-FgVNokGh.js.map +0 -1
  785. package/dist/core/web/public/next/assets/agent-transcript-model-CRa_I3eR.js +0 -7
  786. package/dist/core/web/public/next/assets/agent-transcript-model-CRa_I3eR.js.map +0 -1
  787. package/dist/core/web/public/next/assets/agents-focus-D2hd-RNJ.js +0 -2
  788. package/dist/core/web/public/next/assets/agents-focus-D2hd-RNJ.js.map +0 -1
  789. package/dist/core/web/public/next/assets/app-version-DDlXX8-W.js +0 -2
  790. package/dist/core/web/public/next/assets/app-version-DDlXX8-W.js.map +0 -1
  791. package/dist/core/web/public/next/assets/apps-model-DLQgiczq.js +0 -2
  792. package/dist/core/web/public/next/assets/apps-model-DLQgiczq.js.map +0 -1
  793. package/dist/core/web/public/next/assets/ask-seat-zMpqJABI.js +0 -2
  794. package/dist/core/web/public/next/assets/ask-seat-zMpqJABI.js.map +0 -1
  795. package/dist/core/web/public/next/assets/authority-model-BvLFgPaX.js +0 -2
  796. package/dist/core/web/public/next/assets/authority-model-BvLFgPaX.js.map +0 -1
  797. package/dist/core/web/public/next/assets/automations-focus-zqI9oIl8.js +0 -2
  798. package/dist/core/web/public/next/assets/automations-focus-zqI9oIl8.js.map +0 -1
  799. package/dist/core/web/public/next/assets/budget-model-CKd0d1Cj.js +0 -2
  800. package/dist/core/web/public/next/assets/budget-model-CKd0d1Cj.js.map +0 -1
  801. package/dist/core/web/public/next/assets/budget-queries-q7mCG9Ek.js +0 -2
  802. package/dist/core/web/public/next/assets/budget-queries-q7mCG9Ek.js.map +0 -1
  803. package/dist/core/web/public/next/assets/capacity-strip-model-pdIEweaZ.js +0 -2
  804. package/dist/core/web/public/next/assets/capacity-strip-model-pdIEweaZ.js.map +0 -1
  805. package/dist/core/web/public/next/assets/charts-D3I0q4hG.js +0 -2
  806. package/dist/core/web/public/next/assets/charts-D3I0q4hG.js.map +0 -1
  807. package/dist/core/web/public/next/assets/chat-pane-data-DIDV7uIU.js +0 -2
  808. package/dist/core/web/public/next/assets/chat-pane-data-DIDV7uIU.js.map +0 -1
  809. package/dist/core/web/public/next/assets/checkpoint-queries-DjrDEsN-.js +0 -2
  810. package/dist/core/web/public/next/assets/checkpoint-queries-DjrDEsN-.js.map +0 -1
  811. package/dist/core/web/public/next/assets/cloud-model-DuboHWPT.js +0 -2
  812. package/dist/core/web/public/next/assets/cloud-model-DuboHWPT.js.map +0 -1
  813. package/dist/core/web/public/next/assets/cloud-queries-DQF1a_R-.js +0 -2
  814. package/dist/core/web/public/next/assets/cloud-queries-DQF1a_R-.js.map +0 -1
  815. package/dist/core/web/public/next/assets/command-catalog-BzHSIzIS.js +0 -2
  816. package/dist/core/web/public/next/assets/command-catalog-BzHSIzIS.js.map +0 -1
  817. package/dist/core/web/public/next/assets/composer-queries-BEYuD6Qr.js +0 -2
  818. package/dist/core/web/public/next/assets/composer-queries-BEYuD6Qr.js.map +0 -1
  819. package/dist/core/web/public/next/assets/composer-state-B4KVc2ZZ.js +0 -2
  820. package/dist/core/web/public/next/assets/composer-state-B4KVc2ZZ.js.map +0 -1
  821. package/dist/core/web/public/next/assets/connectivity-Svn7iy2K.js +0 -2
  822. package/dist/core/web/public/next/assets/connectivity-Svn7iy2K.js.map +0 -1
  823. package/dist/core/web/public/next/assets/context-model-C9EIuPJ_.js +0 -2
  824. package/dist/core/web/public/next/assets/context-model-C9EIuPJ_.js.map +0 -1
  825. package/dist/core/web/public/next/assets/context-model-DU3OPiBC.js +0 -3
  826. package/dist/core/web/public/next/assets/context-model-DU3OPiBC.js.map +0 -1
  827. package/dist/core/web/public/next/assets/context-queries-Cgb_XvRv.js +0 -2
  828. package/dist/core/web/public/next/assets/context-queries-Cgb_XvRv.js.map +0 -1
  829. package/dist/core/web/public/next/assets/control-queries-Clgsy_eH.js +0 -2
  830. package/dist/core/web/public/next/assets/control-queries-Clgsy_eH.js.map +0 -1
  831. package/dist/core/web/public/next/assets/copy-setup-C-hDt9sS.js +0 -2
  832. package/dist/core/web/public/next/assets/copy-setup-C-hDt9sS.js.map +0 -1
  833. package/dist/core/web/public/next/assets/deep-link-Cgvchdy7.js +0 -2
  834. package/dist/core/web/public/next/assets/deep-link-Cgvchdy7.js.map +0 -1
  835. package/dist/core/web/public/next/assets/device-permissions-JmqkyrDw.js +0 -2
  836. package/dist/core/web/public/next/assets/device-permissions-JmqkyrDw.js.map +0 -1
  837. package/dist/core/web/public/next/assets/devin-queries-DKgeD4_S.js +0 -2
  838. package/dist/core/web/public/next/assets/devin-queries-DKgeD4_S.js.map +0 -1
  839. package/dist/core/web/public/next/assets/dock-icons-CRHjXBWm.js +0 -2
  840. package/dist/core/web/public/next/assets/dock-icons-CRHjXBWm.js.map +0 -1
  841. package/dist/core/web/public/next/assets/dock-panes-C98u13Bi.js +0 -2
  842. package/dist/core/web/public/next/assets/dock-panes-C98u13Bi.js.map +0 -1
  843. package/dist/core/web/public/next/assets/fleet-control-queries-BLoc5Gza.js +0 -2
  844. package/dist/core/web/public/next/assets/fleet-control-queries-BLoc5Gza.js.map +0 -1
  845. package/dist/core/web/public/next/assets/fleet-model-CPTadBFK.js +0 -2
  846. package/dist/core/web/public/next/assets/fleet-model-CPTadBFK.js.map +0 -1
  847. package/dist/core/web/public/next/assets/fleet-queries-69WuY-dt.js +0 -2
  848. package/dist/core/web/public/next/assets/fleet-queries-69WuY-dt.js.map +0 -1
  849. package/dist/core/web/public/next/assets/fleet-state-CCdBRK-m.js +0 -3
  850. package/dist/core/web/public/next/assets/fleet-state-CCdBRK-m.js.map +0 -1
  851. package/dist/core/web/public/next/assets/focus-trap-C8MiYlLZ.js +0 -2
  852. package/dist/core/web/public/next/assets/focus-trap-C8MiYlLZ.js.map +0 -1
  853. package/dist/core/web/public/next/assets/format-CcEKjUou.js +0 -2
  854. package/dist/core/web/public/next/assets/format-CcEKjUou.js.map +0 -1
  855. package/dist/core/web/public/next/assets/git-model-DL3MwN93.js +0 -5
  856. package/dist/core/web/public/next/assets/git-model-DL3MwN93.js.map +0 -1
  857. package/dist/core/web/public/next/assets/global-BWc2NPzv.js +0 -3
  858. package/dist/core/web/public/next/assets/global-BWc2NPzv.js.map +0 -1
  859. package/dist/core/web/public/next/assets/guarded-action-BK2_U5ho.js +0 -3
  860. package/dist/core/web/public/next/assets/guarded-action-BK2_U5ho.js.map +0 -1
  861. package/dist/core/web/public/next/assets/guarded-runners-Q0UkoY3H.js +0 -2
  862. package/dist/core/web/public/next/assets/guarded-runners-Q0UkoY3H.js.map +0 -1
  863. package/dist/core/web/public/next/assets/headroom-CP99UxyV.js +0 -2
  864. package/dist/core/web/public/next/assets/headroom-CP99UxyV.js.map +0 -1
  865. package/dist/core/web/public/next/assets/health-queries-D8TwNTDQ.js +0 -2
  866. package/dist/core/web/public/next/assets/health-queries-D8TwNTDQ.js.map +0 -1
  867. package/dist/core/web/public/next/assets/icons-U34oiN9M.js +0 -2
  868. package/dist/core/web/public/next/assets/icons-U34oiN9M.js.map +0 -1
  869. package/dist/core/web/public/next/assets/index-BbDqdepe.js +0 -11
  870. package/dist/core/web/public/next/assets/index-BbDqdepe.js.map +0 -1
  871. package/dist/core/web/public/next/assets/jev-queries-CiQDnM5r.js +0 -2
  872. package/dist/core/web/public/next/assets/jev-queries-CiQDnM5r.js.map +0 -1
  873. package/dist/core/web/public/next/assets/ladder-queries-Cf64JB04.js +0 -2
  874. package/dist/core/web/public/next/assets/ladder-queries-Cf64JB04.js.map +0 -1
  875. package/dist/core/web/public/next/assets/leader-focus-azN19kfO.js +0 -2
  876. package/dist/core/web/public/next/assets/leader-focus-azN19kfO.js.map +0 -1
  877. package/dist/core/web/public/next/assets/live-model-DHX_2gOu.js +0 -2
  878. package/dist/core/web/public/next/assets/live-model-DHX_2gOu.js.map +0 -1
  879. package/dist/core/web/public/next/assets/mind.module-BJpuH2JT.js +0 -2
  880. package/dist/core/web/public/next/assets/mind.module-BJpuH2JT.js.map +0 -1
  881. package/dist/core/web/public/next/assets/mobile-actions-CvGouAAH.js +0 -2
  882. package/dist/core/web/public/next/assets/mobile-actions-CvGouAAH.js.map +0 -1
  883. package/dist/core/web/public/next/assets/mobile-toast-C_UP13GQ.js +0 -2
  884. package/dist/core/web/public/next/assets/mobile-toast-C_UP13GQ.js.map +0 -1
  885. package/dist/core/web/public/next/assets/multimodel-flows-C377w9oZ.js +0 -7
  886. package/dist/core/web/public/next/assets/multimodel-flows-C377w9oZ.js.map +0 -1
  887. package/dist/core/web/public/next/assets/multimodel-queries-_Y1QXAqq.js +0 -2
  888. package/dist/core/web/public/next/assets/multimodel-queries-_Y1QXAqq.js.map +0 -1
  889. package/dist/core/web/public/next/assets/mutations-DL4u2kRQ.js +0 -2
  890. package/dist/core/web/public/next/assets/mutations-DL4u2kRQ.js.map +0 -1
  891. package/dist/core/web/public/next/assets/nav-CM-mJcSq.js +0 -2
  892. package/dist/core/web/public/next/assets/nav-CM-mJcSq.js.map +0 -1
  893. package/dist/core/web/public/next/assets/needs-you-actions-DF2zEltF.js +0 -2
  894. package/dist/core/web/public/next/assets/needs-you-actions-DF2zEltF.js.map +0 -1
  895. package/dist/core/web/public/next/assets/needs-you-model-DqmU5YOe.js +0 -2
  896. package/dist/core/web/public/next/assets/needs-you-model-DqmU5YOe.js.map +0 -1
  897. package/dist/core/web/public/next/assets/open-terminal-BAnwAOoA.js +0 -2
  898. package/dist/core/web/public/next/assets/open-terminal-BAnwAOoA.js.map +0 -1
  899. package/dist/core/web/public/next/assets/open-terminal-request-f5_ItEpF.js +0 -2
  900. package/dist/core/web/public/next/assets/open-terminal-request-f5_ItEpF.js.map +0 -1
  901. package/dist/core/web/public/next/assets/overnight-queries-BP6viiM5.js +0 -2
  902. package/dist/core/web/public/next/assets/overnight-queries-BP6viiM5.js.map +0 -1
  903. package/dist/core/web/public/next/assets/palette-handoff-Bmq98lDl.js +0 -2
  904. package/dist/core/web/public/next/assets/palette-handoff-Bmq98lDl.js.map +0 -1
  905. package/dist/core/web/public/next/assets/panes-BjUzIDw6.js +0 -3
  906. package/dist/core/web/public/next/assets/panes-BjUzIDw6.js.map +0 -1
  907. package/dist/core/web/public/next/assets/path-display-HyxETV-f.js +0 -2
  908. package/dist/core/web/public/next/assets/path-display-HyxETV-f.js.map +0 -1
  909. package/dist/core/web/public/next/assets/playbook-composer-DwuBBP4I.js +0 -2
  910. package/dist/core/web/public/next/assets/playbook-composer-DwuBBP4I.js.map +0 -1
  911. package/dist/core/web/public/next/assets/playbook-focus-B9xzeUMw.js +0 -2
  912. package/dist/core/web/public/next/assets/playbook-focus-B9xzeUMw.js.map +0 -1
  913. package/dist/core/web/public/next/assets/playbooks-queries-C8j1Aswo.js +0 -2
  914. package/dist/core/web/public/next/assets/playbooks-queries-C8j1Aswo.js.map +0 -1
  915. package/dist/core/web/public/next/assets/preloaded-CLDUOHXJ.js +0 -2
  916. package/dist/core/web/public/next/assets/preloaded-CLDUOHXJ.js.map +0 -1
  917. package/dist/core/web/public/next/assets/primitives-BEXDE-HP.js +0 -1
  918. package/dist/core/web/public/next/assets/pwa-lVT_VRkK.js +0 -2
  919. package/dist/core/web/public/next/assets/pwa-lVT_VRkK.js.map +0 -1
  920. package/dist/core/web/public/next/assets/queries-T7ZUVqyA.js +0 -2
  921. package/dist/core/web/public/next/assets/queries-T7ZUVqyA.js.map +0 -1
  922. package/dist/core/web/public/next/assets/reasoning-pref-CWEri5xB.js +0 -2
  923. package/dist/core/web/public/next/assets/reasoning-pref-CWEri5xB.js.map +0 -1
  924. package/dist/core/web/public/next/assets/remote-session-BPULIfdG.js +0 -3
  925. package/dist/core/web/public/next/assets/remote-session-BPULIfdG.js.map +0 -1
  926. package/dist/core/web/public/next/assets/resolved-store-Ba-W6Uhy.js +0 -2
  927. package/dist/core/web/public/next/assets/resolved-store-Ba-W6Uhy.js.map +0 -1
  928. package/dist/core/web/public/next/assets/resources-queries-CKyXyaDY.js +0 -2
  929. package/dist/core/web/public/next/assets/resources-queries-CKyXyaDY.js.map +0 -1
  930. package/dist/core/web/public/next/assets/reveal-anchor-Djk1vGLl.js +0 -2
  931. package/dist/core/web/public/next/assets/reveal-anchor-Djk1vGLl.js.map +0 -1
  932. package/dist/core/web/public/next/assets/seat-readiness-CvEmMBol.js +0 -2
  933. package/dist/core/web/public/next/assets/seat-readiness-CvEmMBol.js.map +0 -1
  934. package/dist/core/web/public/next/assets/seat-subscription-BClqZwau.js +0 -2
  935. package/dist/core/web/public/next/assets/seat-subscription-BClqZwau.js.map +0 -1
  936. package/dist/core/web/public/next/assets/sheet-D0ciShoy.js +0 -2
  937. package/dist/core/web/public/next/assets/sheet-D0ciShoy.js.map +0 -1
  938. package/dist/core/web/public/next/assets/sidebar-model-BZ9Wh1lR.js +0 -2
  939. package/dist/core/web/public/next/assets/sidebar-model-BZ9Wh1lR.js.map +0 -1
  940. package/dist/core/web/public/next/assets/slots-m3L6Ints.js +0 -3
  941. package/dist/core/web/public/next/assets/slots-m3L6Ints.js.map +0 -1
  942. package/dist/core/web/public/next/assets/sources-queries-DeIlxb3A.js +0 -4
  943. package/dist/core/web/public/next/assets/sources-queries-DeIlxb3A.js.map +0 -1
  944. package/dist/core/web/public/next/assets/sse-CK65-Cun.js +0 -2
  945. package/dist/core/web/public/next/assets/sse-CK65-Cun.js.map +0 -1
  946. package/dist/core/web/public/next/assets/surface-data-DoN8peNV.js +0 -2
  947. package/dist/core/web/public/next/assets/surface-data-DoN8peNV.js.map +0 -1
  948. package/dist/core/web/public/next/assets/surface-prefetch-CVNIptSl.js +0 -2
  949. package/dist/core/web/public/next/assets/surface-prefetch-CVNIptSl.js.map +0 -1
  950. package/dist/core/web/public/next/assets/tasks-model-BueAhEAf.js +0 -2
  951. package/dist/core/web/public/next/assets/tasks-model-BueAhEAf.js.map +0 -1
  952. package/dist/core/web/public/next/assets/terminal-client-DO0eRhRi.js +0 -2
  953. package/dist/core/web/public/next/assets/terminal-client-DO0eRhRi.js.map +0 -1
  954. package/dist/core/web/public/next/assets/terminal-icons-COMoAiDd.js +0 -2
  955. package/dist/core/web/public/next/assets/terminal-icons-COMoAiDd.js.map +0 -1
  956. package/dist/core/web/public/next/assets/terminal-view-DkVXx7Xk.js +0 -6
  957. package/dist/core/web/public/next/assets/terminal-view-DkVXx7Xk.js.map +0 -1
  958. package/dist/core/web/public/next/assets/thread-data-Dq7QugaD.js +0 -2
  959. package/dist/core/web/public/next/assets/thread-data-Dq7QugaD.js.map +0 -1
  960. package/dist/core/web/public/next/assets/ui-parts-2JLq2ZSq.js +0 -2
  961. package/dist/core/web/public/next/assets/ui-parts-2JLq2ZSq.js.map +0 -1
  962. package/dist/core/web/public/next/assets/usage-queries-CDKUE4e0.js +0 -2
  963. package/dist/core/web/public/next/assets/usage-queries-CDKUE4e0.js.map +0 -1
  964. package/dist/core/web/public/next/assets/use-chat-activity-BaNWmI2A.js +0 -2
  965. package/dist/core/web/public/next/assets/use-chat-activity-BaNWmI2A.js.map +0 -1
  966. package/dist/core/web/public/next/assets/use-guarded-action-D4m4Mlzr.js +0 -2
  967. package/dist/core/web/public/next/assets/use-guarded-action-D4m4Mlzr.js.map +0 -1
  968. package/dist/core/web/public/next/assets/use-ticker-PQ_oYxn5.js +0 -2
  969. package/dist/core/web/public/next/assets/use-ticker-PQ_oYxn5.js.map +0 -1
  970. package/dist/core/web/public/next/assets/use-token-gate-_JPjMD5z.js +0 -2
  971. package/dist/core/web/public/next/assets/use-token-gate-_JPjMD5z.js.map +0 -1
  972. package/dist/core/web/public/next/assets/useAutoSeat-CkyqgwX9.js +0 -2
  973. package/dist/core/web/public/next/assets/useAutoSeat-CkyqgwX9.js.map +0 -1
  974. package/dist/core/web/public/next/assets/useOnboarding-3r8T1GBP.js +0 -2
  975. package/dist/core/web/public/next/assets/useOnboarding-3r8T1GBP.js.map +0 -1
  976. package/dist/core/web/public/next/assets/useSeatHealth-C08b9zut.js +0 -2
  977. package/dist/core/web/public/next/assets/useSeatHealth-C08b9zut.js.map +0 -1
  978. package/dist/core/web/public/next/assets/useSeatsRefresh-BGsdylUl.js +0 -2
  979. package/dist/core/web/public/next/assets/useSeatsRefresh-BGsdylUl.js.map +0 -1
  980. package/dist/core/web/public/next/assets/useVerseSession-0MnfpcHg.js +0 -2
  981. package/dist/core/web/public/next/assets/useVerseSession-0MnfpcHg.js.map +0 -1
  982. package/dist/core/web/public/next/assets/useVerseTranscript-B6wLDOv8.js +0 -2
  983. package/dist/core/web/public/next/assets/useVerseTranscript-B6wLDOv8.js.map +0 -1
  984. package/dist/core/web/public/next/assets/verse-bootstrap-query-BR5ypA8b.js +0 -2
  985. package/dist/core/web/public/next/assets/verse-bootstrap-query-BR5ypA8b.js.map +0 -1
  986. package/dist/core/web/public/next/assets/verse-icons-BQxBZk9k.js +0 -2
  987. package/dist/core/web/public/next/assets/verse-icons-BQxBZk9k.js.map +0 -1
  988. package/dist/core/web/public/next/assets/verse-model-CkF3q2IH.js +0 -2
  989. package/dist/core/web/public/next/assets/verse-model-CkF3q2IH.js.map +0 -1
  990. package/dist/core/web/public/next/assets/warmup-CqTK8yIn.js +0 -3
  991. package/dist/core/web/public/next/assets/warmup-CqTK8yIn.js.map +0 -1
  992. package/dist/core/web/public/next/assets/why-seat-model-Dh4-Ty9n.js +0 -2
  993. package/dist/core/web/public/next/assets/why-seat-model-Dh4-Ty9n.js.map +0 -1
  994. package/dist/core/web/public/next/assets/wiki-focus-CisQb_pM.js +0 -2
  995. package/dist/core/web/public/next/assets/wiki-focus-CisQb_pM.js.map +0 -1
  996. package/dist/core/web/public/next/assets/workspace-model-DRGckE8q.js +0 -2
  997. package/dist/core/web/public/next/assets/workspace-model-DRGckE8q.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t,s as n}from"./index-_izD07R9.js";var r=e(n(),1),i={thinking:`_thinking_lm3ty_11`,summary:`_summary_lm3ty_18`,line:`_line_lm3ty_19`,chevron:`_chevron_lm3ty_40`,glyph:`_glyph_lm3ty_55`,"thinking-breathe":`_thinking-breathe_lm3ty_1`,label:`_label_lm3ty_64`,kind:`_kind_lm3ty_73`,hidden:`_hidden_lm3ty_74`,body:`_body_lm3ty_85`},a=t();function o(e){let t=Math.max(0,Math.round(e));return t<1e3?`~${t} tok`:t<1e4?`~${(t/1e3).toFixed(1).replace(/\.0$/,``)}k tok`:t<1e6?`~${Math.round(t/1e3)}k tok`:`~${(t/1e6).toFixed(1).replace(/\.0$/,``)}M tok`}function s(e){if(!Number.isFinite(e)||e<0)return``;if(e<1e3)return`<1s`;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);return n<60?`${n}m ${t%60}s`:`${Math.floor(n/60)}h ${n%60}m`}var c=4;function l(e,t){if(typeof t==`number`&&Number.isFinite(t)&&t>0)return t;let n=e.trim().length;return n>0?Math.ceil(n/c):null}function u(e){let t=[e.streaming?`Thinking`:`Thought`],n=e.elapsedMs===null?``:s(e.elapsedMs);return e.streaming?n&&t.push(n):n&&(t[0]=`Thought ${n}`),e.tokens!==null&&t.push(o(e.tokens)),t.join(` · `)}function d(e){let[t,n]=(0,r.useState)(()=>Date.now());return(0,r.useEffect)(()=>{if(!e)return;n(Date.now());let t=setInterval(()=>n(Date.now()),1e3);return()=>clearInterval(t)},[e]),t}var f=24,p=(0,r.memo)(function({text:e,streaming:t=!1,startedAt:n=null,redacted:o=!1,durationMs:s=null,estimatedTokens:c=null,kind:p=null,defaultOpen:m=!1,stateKey:h}){let[g,_]=(0,r.useState)(m),v=(0,r.useRef)(!1),[y,b]=(0,r.useState)(!1),x=(0,r.useRef)(null),S=(0,r.useRef)(!0),C=d(t&&n!==null),w=u({streaming:t,elapsedMs:t?n===null?null:Math.max(0,C-n):s,tokens:l(e,c)}),T=e.trim().length>0,E=t&&g&&!y;(0,r.useLayoutEffect)(()=>{let e=x.current;e&&(E&&e.scrollHeight>e.clientHeight+1?e.setAttribute(`data-clipped`,``):e.removeAttribute(`data-clipped`),t&&(S.current||E)&&(e.scrollTop=e.scrollHeight))},[e,t,g,E]);function D(){let e=x.current;e&&(S.current=e.scrollHeight-e.scrollTop-e.clientHeight<=f)}(0,r.useEffect)(()=>{v.current||_(m)},[m]);function O(e){E&&(e.preventDefault(),v.current=!0,b(!0))}function k(e){let t=e.currentTarget.open;t!==g&&(v.current=!0),_(t)}return T?(0,a.jsxs)(`details`,{className:i.thinking,open:g,onToggle:k,"data-state-key":h,"data-streaming":t||void 0,"data-thinking-kind":p??void 0,children:[(0,a.jsxs)(`summary`,{className:i.summary,onClick:O,"aria-label":E?`${w} — show all`:void 0,children:[(0,a.jsx)(`span`,{className:i.chevron,"aria-hidden":`true`}),t?(0,a.jsx)(`span`,{className:i.glyph,"aria-hidden":`true`}):null,(0,a.jsx)(`span`,{className:i.label,children:w}),p===`summary`?(0,a.jsx)(`span`,{className:i.kind,title:`A summary the provider wrote of the model's reasoning, not its raw chain of thought.`,children:`summary`}):null]}),(0,a.jsx)(`div`,{ref:x,className:i.body,onScroll:D,"data-window":E||void 0,onClick:E?()=>{v.current=!0,b(!0)}:void 0,children:e})]}):(0,a.jsx)(`div`,{className:i.thinking,"data-streaming":t||void 0,"data-redacted":o||void 0,"data-thinking-kind":p??void 0,children:(0,a.jsxs)(`span`,{className:i.line,children:[t?(0,a.jsx)(`span`,{className:i.glyph,"aria-hidden":`true`}):null,(0,a.jsx)(`span`,{className:i.label,children:w}),o?(0,a.jsx)(`span`,{className:i.hidden,title:`The provider returned this reasoning without its text; only how long it took is known.`,children:`reasoning hidden by the provider`}):null]})})});export{s as n,o as r,p as t};
2
+ //# sourceMappingURL=ThinkingBlock-gWESdTxs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThinkingBlock-gWESdTxs.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/chat/ThinkingBlock.module.css","../../../../../../src/web-ui/routes/verse/chat/ThinkingBlock.tsx"],"sourcesContent":["/**\n * Reasoning reads as a quieter voice beside the answer: tertiary text, a\n * 2px rule, no box (DESIGN §5 — role is weight and rule, never a card).\n * While it streams a dot breathes in the running colour; the label's\n * figures are tabular so a ticking clock does not jitter the line.\n *\n * The row keeps the tool rows' left geometry (a 2px rule slot and --space-3)\n * so its ▸ sits exactly under theirs; the slot is transparent — reasoning has\n * no rule of its own until it is open.\n */\n.thinking {\n color: var(--text-tertiary);\n font-size: var(--text-sm-size);\n line-height: var(--text-sm-line);\n min-width: 0;\n}\n\n.summary,\n.line {\n display: inline-flex;\n align-items: center;\n gap: var(--space-2);\n min-height: var(--control-h-xs);\n max-width: 100%;\n padding-left: var(--space-3);\n border-left: 2px solid transparent;\n}\n/* No ▸ on a line with nothing to open: its label starts where theirs do. */\n.line { padding-left: calc(var(--space-3) + 10px + var(--space-2)); }\n.summary {\n cursor: pointer;\n list-style: none;\n border-radius: var(--radius-xs);\n padding-right: var(--space-2);\n transition: color var(--duration-fast) var(--ease-standard), background var(--duration-fast) var(--ease-standard);\n}\n.summary::-webkit-details-marker { display: none; }\n.summary:hover { color: var(--text-secondary); background: var(--bg-hover); }\n\n/* The shared disclosure glyph (Transcript .toolGlyph, ActivityGroup .chevron). */\n.chevron {\n flex: none;\n width: 0;\n height: 0;\n margin: 0 3px 0 2px;\n border-top: 4px solid transparent;\n border-bottom: 4px solid transparent;\n border-left: 5px solid currentColor;\n opacity: 0.7;\n transition: transform var(--duration-fast) var(--ease-standard);\n}\n.thinking[open] .chevron { transform: rotate(90deg); }\n\n/* Only while streaming: the running colour, breathing. */\n.glyph {\n width: 6px;\n height: 6px;\n flex: none;\n border-radius: var(--radius-full);\n background: var(--status-running-solid);\n animation: thinking-breathe 1.6s var(--ease-standard) infinite;\n}\n\n.label {\n font-family: var(--font-display);\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n}\n\n.kind,\n.hidden {\n font-size: var(--text-xs-size);\n color: var(--text-tertiary);\n white-space: nowrap;\n}\n.kind {\n padding: 0 var(--space-1);\n border: 1px solid var(--border-subtle);\n border-radius: var(--radius-xs);\n}\n\n.body {\n margin-top: var(--space-2);\n padding-left: var(--space-4);\n border-left: 2px solid var(--border-subtle);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n line-height: var(--text-sm-line-relaxed);\n color: var(--text-secondary);\n /* A long chain of thought scrolls inside itself instead of pushing the\n answer a screen away. */\n max-height: min(40vh, 480px);\n overflow-y: auto;\n overscroll-behavior: contain;\n}\n.thinking[data-streaming] .body { border-left-color: var(--status-running-solid); }\n\n/* 3.10: the streaming window — exactly three lines of the tail, the top\n line fading so it reads as \"there is more above\", no scrollbar. */\n.body[data-window] {\n max-height: calc(3 * var(--text-sm-line-relaxed));\n overflow: hidden;\n cursor: pointer;\n}\n.body[data-window][data-clipped] {\n -webkit-mask-image: linear-gradient(to bottom, transparent 0, black 1.2em);\n mask-image: linear-gradient(to bottom, transparent 0, black 1.2em);\n}\n\n@keyframes thinking-breathe { 50% { opacity: 0.35; } }\n\n@media (prefers-reduced-motion: reduce) {\n :root:not([data-motion=\"full\"]) .glyph { animation: none; }\n :root:not([data-motion=\"full\"]) .chevron { transition: none; }\n}\n:root[data-motion=\"reduce\"] .glyph { animation: none; }\n:root[data-motion=\"reduce\"] .chevron { transition: none; }\n","/**\n * routes/verse/chat/ThinkingBlock.tsx — one block of model reasoning (V3.10).\n *\n * Before 3.10 reasoning arrived only when a block closed, behind a static\n * \"Thinking\" disclosure, usually two collapses deep inside a tool group — and\n * for Claude Opus it was almost always EMPTY (the CLI omitted the text), so\n * nothing showed at all. Now the adapters stream vendor summaries\n * (`thinking-delta`), and this block:\n *\n * - streams them while the model thinks, open, with a live\n * \"Thinking · 12s · ~1.8k tok\" line;\n * - settles to a collapsed \"Thought 12s · ~1.8k tok\" once the block ends,\n * the operator's own open/closed choice winning over the default;\n * - says honestly when the provider withheld the text (a redacted,\n * signature-only block): the duration is real, the words are not shown,\n * and there is nothing to expand.\n *\n * 3.10 (SPEC-310C §2, unit C2): while it streams, the body is a THREE-LINE\n * window that follows the tail — enough to see what the model is working\n * on, not so much that a long think shoves the answer off screen. Clicking\n * the label (or the window) shows the whole stream. Once the block ends it\n * folds to \"Thought 12s · ~1.8k tok ▸\" — or stays open when Settings ▸ Chat\n * says Expanded (chat/reasoning-pref.ts; Hidden is handled by the\n * transcript, which then renders no reasoning at all).\n *\n * Honesty rule: an unknown duration or token count is omitted, never shown\n * as 0. A token count the CLI did not report is estimated from the text\n * (~4 characters per token) and always carries the \"~\".\n *\n * 3.10.1: the row opens with the same ▸ every foldable transcript row uses\n * (tool cards, activity groups), at the same x; the breathing dot appears\n * only while the block streams — a settled block has no stray bullet.\n */\nimport { memo, useEffect, useLayoutEffect, useRef, useState, type MouseEvent, type SyntheticEvent } from 'react';\nimport type { VerseThinkingKind } from '../../../../core/verse/types.js';\nimport styles from './ThinkingBlock.module.css';\n\nexport interface ThinkingBlockProps {\n text: string;\n /** Still streaming: the label counts up and the body follows new text. */\n streaming?: boolean;\n /** Client clock (ms) the block started — the live label's origin while streaming. */\n startedAt?: number | null;\n /** The provider sent the block without its text. */\n redacted?: boolean;\n durationMs?: number | null;\n /** The CLI's own estimate; null → estimated from the text when there is any. */\n estimatedTokens?: number | null;\n kind?: VerseThinkingKind | null;\n /** Initial open state; the operator's toggle wins afterwards. */\n defaultOpen?: boolean;\n /** Survives scroll restore (useScrollRestore) like every other disclosure. */\n stateKey?: string;\n}\n\n/** \"~1.8k tok\" — one decimal under 10k, so the figure moves visibly while it streams. */\nexport function formatThinkingTokens(n: number): string {\n const rounded = Math.max(0, Math.round(n));\n if (rounded < 1000) return `~${rounded} tok`;\n if (rounded < 10_000) return `~${(rounded / 1000).toFixed(1).replace(/\\.0$/, '')}k tok`;\n if (rounded < 1_000_000) return `~${Math.round(rounded / 1000)}k tok`;\n return `~${(rounded / 1_000_000).toFixed(1).replace(/\\.0$/, '')}M tok`;\n}\n\n/** \"12s\" / \"1m 5s\" / \"<1s\". */\nexport function formatThinkingDuration(ms: number): string {\n if (!Number.isFinite(ms) || ms < 0) return '';\n if (ms < 1000) return '<1s';\n const s = Math.floor(ms / 1000);\n if (s < 60) return `${s}s`;\n const m = Math.floor(s / 60);\n if (m < 60) return `${m}m ${s % 60}s`;\n return `${Math.floor(m / 60)}h ${m % 60}m`;\n}\n\n/** Characters per token for the fallback estimate (the common English ratio). */\nconst CHARS_PER_TOKEN = 4;\n\nexport function thinkingTokenFigure(text: string, estimatedTokens: number | null | undefined): number | null {\n if (typeof estimatedTokens === 'number' && Number.isFinite(estimatedTokens) && estimatedTokens > 0) return estimatedTokens;\n const chars = text.trim().length;\n return chars > 0 ? Math.ceil(chars / CHARS_PER_TOKEN) : null;\n}\n\n/** The one-line label — exported so the transcript search and tests agree with the UI. */\nexport function thinkingLabel(opts: {\n streaming: boolean;\n elapsedMs: number | null;\n tokens: number | null;\n}): string {\n const parts = [opts.streaming ? 'Thinking' : 'Thought'];\n const duration = opts.elapsedMs === null ? '' : formatThinkingDuration(opts.elapsedMs);\n if (opts.streaming) {\n if (duration) parts.push(duration);\n } else if (duration) {\n parts[0] = `Thought ${duration}`;\n }\n if (opts.tokens !== null) parts.push(formatThinkingTokens(opts.tokens));\n return parts.join(' · ');\n}\n\n/** Re-render once a second while `active` — the label's clock, not a network poll. */\nfunction useSecondTick(active: boolean): number {\n const [now, setNow] = useState(() => Date.now());\n useEffect(() => {\n if (!active) return undefined;\n setNow(Date.now());\n const id = setInterval(() => setNow(Date.now()), 1000);\n return () => clearInterval(id);\n }, [active]);\n return now;\n}\n\n/** How close to the bottom the body must be for new text to keep it pinned there. */\nconst FOLLOW_PX = 24;\n\nexport const ThinkingBlock = memo(function ThinkingBlock({\n text,\n streaming = false,\n startedAt = null,\n redacted = false,\n durationMs = null,\n estimatedTokens = null,\n kind = null,\n defaultOpen = false,\n stateKey,\n}: ThinkingBlockProps) {\n const [open, setOpen] = useState(defaultOpen);\n /** The operator opened or closed it by hand; from then on their choice wins over `defaultOpen`. */\n const chosen = useRef(false);\n /** The operator asked for the whole stream instead of the three-line window. */\n const [full, setFull] = useState(false);\n const body = useRef<HTMLDivElement>(null);\n const following = useRef(true);\n const now = useSecondTick(streaming && startedAt !== null);\n\n const elapsed = streaming\n ? (startedAt !== null ? Math.max(0, now - startedAt) : null)\n : durationMs;\n const tokens = thinkingTokenFigure(text, estimatedTokens);\n const label = thinkingLabel({ streaming, elapsedMs: elapsed, tokens });\n const hasText = text.trim().length > 0;\n\n // Follow the stream inside the body unless the operator scrolled up in it.\n const windowed = streaming && open && !full;\n useLayoutEffect(() => {\n const node = body.current;\n if (!node) return;\n // Fade the top line only when something is actually cut off above it.\n if (windowed && node.scrollHeight > node.clientHeight + 1) node.setAttribute('data-clipped', '');\n else node.removeAttribute('data-clipped');\n if (!streaming || (!following.current && !windowed)) return;\n node.scrollTop = node.scrollHeight;\n }, [text, streaming, open, windowed]);\n\n function onScroll() {\n const node = body.current;\n if (!node) return;\n following.current = node.scrollHeight - node.scrollTop - node.clientHeight <= FOLLOW_PX;\n }\n\n // Open while its turn runs, folded once it finishes — unless the operator\n // already decided for this block.\n useEffect(() => {\n if (!chosen.current) setOpen(defaultOpen);\n }, [defaultOpen]);\n\n // While windowed, the first click on the label means \"show me all of it\",\n // not \"hide it\": folding the one thing the operator is trying to read\n // would be the opposite of the gesture.\n function onSummaryClick(event: MouseEvent<HTMLElement>) {\n if (!windowed) return;\n event.preventDefault();\n chosen.current = true;\n setFull(true);\n }\n\n function onToggle(event: SyntheticEvent<HTMLDetailsElement>) {\n const next = event.currentTarget.open;\n // A toggle event also follows OUR prop change; only a mismatch is a click.\n if (next !== open) chosen.current = true;\n setOpen(next);\n }\n\n if (!hasText) {\n // Nothing to expand: a redacted block, or the CLI's token count before\n // any summary text arrived. One quiet line that still says it happened.\n return (\n <div className={styles.thinking} data-streaming={streaming || undefined} data-redacted={redacted || undefined}\n data-thinking-kind={kind ?? undefined}>\n <span className={styles.line}>\n {streaming ? <span className={styles.glyph} aria-hidden=\"true\" /> : null}\n <span className={styles.label}>{label}</span>\n {redacted ? (\n <span className={styles.hidden} title=\"The provider returned this reasoning without its text; only how long it took is known.\">\n reasoning hidden by the provider\n </span>\n ) : null}\n </span>\n </div>\n );\n }\n\n return (\n <details className={styles.thinking} open={open} onToggle={onToggle} data-state-key={stateKey}\n data-streaming={streaming || undefined} data-thinking-kind={kind ?? undefined}>\n <summary className={styles.summary} onClick={onSummaryClick} aria-label={windowed ? `${label} — show all` : undefined}>\n <span className={styles.chevron} aria-hidden=\"true\" />\n {streaming ? <span className={styles.glyph} aria-hidden=\"true\" /> : null}\n <span className={styles.label}>{label}</span>\n {kind === 'summary' ? <span className={styles.kind} title=\"A summary the provider wrote of the model's reasoning, not its raw chain of thought.\">summary</span> : null}\n </summary>\n <div ref={body} className={styles.body} onScroll={onScroll} data-window={windowed || undefined}\n onClick={windowed ? () => { chosen.current = true; setFull(true); } : undefined}>{text}</div>\n </details>\n );\n});\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t,s as n}from"./index-_izD07R9.js";import{B as r,E as i,G as a,b as o,f as s,i as c,l,s as u,u as d}from"./global-CYfRwH6t.js";import{n as f,t as p}from"./UniverseView-D0j9HVku.js";import{t as m}from"./SkipToContent-B0GAKhYQ.js";import{SessionGate as h}from"./SessionGate-CWuI8dDR.js";var g=e(n(),1),_=Object.freeze({"campaign-execution":Object.freeze([`campaign-call-threw`]),"campaign-verification":Object.freeze([`campaign-evidence-changed`]),"delivery-execution":Object.freeze([`delivery-call-threw`]),"delivery-verification":Object.freeze([`delivery-evidence-changed`,`delivery-receipt-unverified`]),"settlement-publication":Object.freeze([`settlement-write-failed`])});function v(e){return typeof e==`string`&&/^[a-z0-9][a-z0-9_-]{0,63}$/.test(e)}function y(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function b(e){return typeof e==`string`&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z$/.test(e)&&Number.isFinite(Date.parse(e))&&new Date(e).toISOString()===(e.length===20?e.replace(`Z`,`.000Z`):e)}function x(e){return typeof e==`string`&&/^[a-z0-9][a-z0-9_:-]{0,191}$/.test(e)}function S(e,t){let n=()=>Error(`Controller evidence could not be validated.`);if(!v(t)||!y(e)||e.schemaVersion!==1||e.controllerId!==t||typeof e.sourceState!=`string`||![`healthy`,`missing`,`degraded`].includes(e.sourceState)||typeof e.status!=`string`||![`completed`,`incomplete`,`cancelled`,`timed-out`,`unavailable`,`draining`,`drained`].includes(e.status)||!(e.createdAt===null||b(e.createdAt))||!(e.deadlineAt===null||b(e.deadlineAt))||!b(e.observedAt)||!Array.isArray(e.reasons)||e.reasons.length>128||!e.reasons.every(x)||!Array.isArray(e.outcomes)||e.outcomes.length>64)throw n();let r=new Set,i=e.outcomes.map(e=>{if(!y(e)||typeof e.campaignId!=`string`||!v(e.campaignId)||r.has(e.campaignId)||typeof e.state!=`string`||![`pending`,`in-flight`,`completed`,`held`].includes(e.state)||typeof e.attempted!=`boolean`||!x(e.reasonCode))throw n();return r.add(e.campaignId),{campaignId:e.campaignId,state:e.state,attempted:e.attempted,reasonCode:e.reasonCode}}),a;if(e.topology!==void 0){if(!Array.isArray(e.topology)||e.topology.length>64||e.topology.length!==i.length)throw n();let t=new Set;a=e.topology.map(e=>{if(!y(e)||!v(e.campaignId)||!r.has(e.campaignId)||t.has(e.campaignId))throw n();t.add(e.campaignId);let i=t=>{if(!Array.isArray(t)||t.length>63||!t.every(t=>v(t)&&r.has(t)&&t!==e.campaignId)||new Set(t).size!==t.length)throw n();return[...t]},a=i(e.dependsOn),o=i(e.prerequisites);if(a.some(e=>!o.includes(e)))throw n();return{campaignId:e.campaignId,dependsOn:a,prerequisites:o}});let o=new Map(a.map(e=>[e.campaignId,e])),s=new Set;for(;s.size<a.length;){let e=a.find(e=>!s.has(e.campaignId)&&e.prerequisites.every(e=>s.has(e)));if(!e)throw n();s.add(e.campaignId)}for(let e of a){let t=new Set,r=[...e.dependsOn];for(;r.length;){let e=r.pop();t.has(e)||(t.add(e),r.push(...o.get(e).dependsOn))}if(e.prerequisites.some(e=>!t.has(e)))throw n()}}let o,s;if(e.diagnostics!==void 0){if(!Array.isArray(e.diagnostics)||e.diagnostics.length>i.length)throw n();let t=new Set;s=e.diagnostics.map(e=>{if(!y(e)||!v(e.campaignId)||!r.has(e.campaignId)||t.has(e.campaignId)||i.find(t=>t.campaignId===e.campaignId)?.state===`pending`||typeof e.phase!=`string`||!Object.hasOwn(_,e.phase)||typeof e.code!=`string`||!b(e.at))throw n();let a=e.phase;if(!_[a].includes(e.code))throw n();return t.add(e.campaignId),{campaignId:e.campaignId,phase:a,code:e.code,at:e.at}})}if(e.control!==void 0){let t=e.control;if(!y(t)||typeof t.mode!=`string`||![`open`,`drain`].includes(t.mode)||!Number.isInteger(t.sequence)||t.sequence<1||t.sequence>511||!b(t.requestedAt)||!(t.acknowledgedAt===null||b(t.acknowledgedAt)))throw n();o={mode:t.mode,sequence:t.sequence,requestedAt:t.requestedAt,acknowledgedAt:t.acknowledgedAt}}if(o?.mode===`open`&&o.acknowledgedAt!==null||e.status===`draining`&&(o?.mode!==`drain`||o.acknowledgedAt!==null)||e.status===`drained`&&(o?.mode!==`drain`||o.acknowledgedAt===null))throw n();return{schemaVersion:1,controllerId:t,sourceState:e.sourceState,status:e.status,createdAt:e.createdAt,deadlineAt:e.deadlineAt,observedAt:e.observedAt,reasons:[...e.reasons],outcomes:i,...a?{topology:a}:{},...o?{control:o}:{},...s?{diagnostics:s}:{}}}async function C(e,t){if(!v(e))throw Error(`Enter a valid controller ID.`);return S(await c(`/api/universe/controller-status?controllerId=${encodeURIComponent(e)}`,t),e)}function w(e,t,n){let r=t.trim().toLowerCase();return e.filter(e=>(n===`all`||e.state===n)&&(e.campaignId.toLowerCase().includes(r)||e.reasonCode.toLowerCase().includes(r)))}function T(e,t,n){let r=Number.isFinite(n)?Math.max(0,Math.floor(n)):0;if(t===null)return e.slice(0,r);let i=[],a=[];for(let n of e)(n.from===t||n.to===t?i:a).push(n);return[...i,...a].slice(0,r)}var E={topology:`_topology_1rqbo_1`,header:`_header_1rqbo_2`,snapshot:`_snapshot_1rqbo_5`,counts:`_counts_1rqbo_6`,finder:`_finder_1rqbo_10`,finderControls:`_finderControls_1rqbo_11`,searchLabel:`_searchLabel_1rqbo_13`,utilityButton:`_utilityButton_1rqbo_16`,finderMeta:`_finderMeta_1rqbo_19`,results:`_results_1rqbo_22`,result:`_result_1rqbo_22`,resultName:`_resultName_1rqbo_27`,resultState:`_resultState_1rqbo_28`,resultReason:`_resultReason_1rqbo_32`,pagination:`_pagination_1rqbo_33`,noResults:`_noResults_1rqbo_35`,selectionNote:`_selectionNote_1rqbo_36`,workspace:`_workspace_1rqbo_37`,board:`_board_1rqbo_38`,canvas:`_canvas_1rqbo_39`,edges:`_edges_1rqbo_40`,edge:`_edge_1rqbo_40`,selectedEdge:`_selectedEdge_1rqbo_41`,column:`_column_1rqbo_43`,node:`_node_1rqbo_44`,nodeName:`_nodeName_1rqbo_47`,nodeState:`_nodeState_1rqbo_48`,detail:`_detail_1rqbo_52`,detailState:`_detailState_1rqbo_55`,facts:`_facts_1rqbo_59`,relationships:`_relationships_1rqbo_63`,note:`_note_1rqbo_67`,legend:`_legend_1rqbo_67`,empty:`_empty_1rqbo_67`,notice:`_notice_1rqbo_69`,srOnly:`_srOnly_1rqbo_73`},D=t(),O=64,k=256,A=8,j={pending:`Pending`,"in-flight":`Unresolved intent`,completed:`Completed`,held:`Held`},M={pending:`No settled outcome is recorded. Pending does not mean ready to run.`,"in-flight":`A durable dispatch intent remains unresolved. This is not proof of a live worker.`,completed:`The controller recorded completion, including any required local delivery. This is not a production deployment claim.`,held:`Work remains held for the recorded reason. This view does not retry or release it.`};function N(e){let t=e.outcomes.slice(0,O),n=new Map(e.topology?.map(e=>[e.campaignId,e])),r=new Set(t.map(e=>e.campaignId)),i=new Map;if(e.topology)for(let e=0;e<t.length;e++)for(let e of t){let t=n.get(e.campaignId);i.has(e.campaignId)||!t||t.dependsOn.some(e=>!i.has(e))||i.set(e.campaignId,t.dependsOn.length?Math.max(...t.dependsOn.map(e=>i.get(e)))+1:0)}let a=[...new Set(i.values())].sort((e,t)=>e-t).map(e=>({label:`Dependency layer ${e+1}`,nodes:t.filter(t=>i.get(t.campaignId)===e)})),o=t.filter(e=>!i.has(e.campaignId));o.length&&a.push({label:e.topology?`Layer unavailable`:`Recorded campaigns`,nodes:o});let s=new Map;return a.forEach((e,t)=>e.nodes.forEach((e,n)=>s.set(e.campaignId,{x:24+t*244,y:56+n*108}))),{nodes:t,topology:n,columns:a,positions:s,edges:t.flatMap(e=>(n.get(e.campaignId)?.dependsOn??[]).filter(e=>r.has(e)).map(t=>({from:t,to:e.campaignId}))),width:Math.max(256,a.length*244+8),height:64+Math.max(1,...a.map(e=>e.nodes.length))*108}}function P({data:e}){let t=(0,g.useMemo)(()=>N(e),[e]),[n,r]=(0,g.useState)(t.nodes[0]?.campaignId??null),[i,a]=(0,g.useState)(``),[o,s]=(0,g.useState)(`all`),[c,l]=(0,g.useState)(0),u=(0,g.useRef)(null),d=(0,g.useRef)(new Map),f=t.nodes.find(e=>e.campaignId===n),p=(0,g.useMemo)(()=>w(t.nodes,i,o),[t.nodes,i,o]),m=i.trim().length>0||o!==`all`,h=Math.max(1,Math.ceil(p.length/A)),_=Math.min(c,h-1),v=p.slice(_*A,(_+1)*A),y=f&&m&&!p.some(e=>e.campaignId===f.campaignId),b=(0,g.useMemo)(()=>T(t.edges,f?.campaignId??null,k),[t.edges,f?.campaignId]),x=(0,g.useId)(),S=`${x}-detail`,C=f?t.topology.get(f.campaignId):void 0,P=C?.prerequisites.filter(e=>!C.dependsOn.includes(e))??[],F=new Map(e.outcomes.map(e=>[e.campaignId,e])),I=t=>e.outcomes.filter(e=>e.state===t).length;function L(e,n=!1){let r=u.current,i=t.positions.get(e);if(!r||!i)return;let a=Math.max(0,i.x+96-r.clientWidth/2),o=Math.max(0,i.y+40-r.clientHeight/2);typeof r.scrollTo==`function`?r.scrollTo({left:a,top:o,behavior:`auto`}):(r.scrollLeft=a,r.scrollTop=o),n&&d.current.get(e)?.focus({preventScroll:!0})}function R(e){r(e),L(e)}function z(e,n){return e.length?(0,D.jsx)(`ul`,{className:E.relationships,children:e.map(e=>(0,D.jsxs)(`li`,{children:[t.positions.has(e)?(0,D.jsx)(`button`,{type:`button`,onClick:()=>R(e),children:e}):(0,D.jsx)(`span`,{children:e}),(0,D.jsx)(`span`,{children:F.has(e)?j[F.get(e).state]:`Outcome unavailable`})]},e))}):(0,D.jsx)(`p`,{className:E.note,children:n})}return(0,D.jsxs)(`section`,{className:E.topology,"aria-label":`Controller mission topology`,children:[(0,D.jsxs)(`header`,{className:E.header,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`h3`,{children:`Mission topology`}),(0,D.jsx)(`p`,{children:`Follow the declared work graph. Select a campaign to inspect its recorded state and prerequisites.`})]}),(0,D.jsx)(`span`,{className:E.snapshot,children:`Recorded snapshot`})]}),(0,D.jsxs)(`dl`,{className:E.counts,"aria-label":`Recorded campaign counts`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`dt`,{children:`Campaigns`}),(0,D.jsx)(`dd`,{children:e.outcomes.length})]}),[`completed`,`in-flight`,`held`,`pending`].map(e=>(0,D.jsxs)(`div`,{"data-state":e,children:[(0,D.jsx)(`dt`,{children:j[e]}),(0,D.jsx)(`dd`,{children:I(e)})]},e))]}),e.topology?null:(0,D.jsx)(`p`,{className:E.notice,children:`Dependency information is unavailable in this observation. Campaign placement does not imply independence or readiness.`}),e.outcomes.length>O?(0,D.jsxs)(`p`,{className:E.notice,children:[`Showing the first `,O,` of `,e.outcomes.length,` campaigns. Counts include all recorded outcomes; relationships outside this diagram remain in the selected campaign detail.`]}):null,t.nodes.length?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsxs)(`section`,{className:E.finder,"aria-label":`Campaign navigator`,children:[(0,D.jsxs)(`div`,{className:E.finderControls,children:[(0,D.jsxs)(`label`,{className:E.searchLabel,htmlFor:`${x}-search`,children:[`Search campaigns`,(0,D.jsx)(`input`,{id:`${x}-search`,type:`search`,value:i,maxLength:192,placeholder:`Campaign ID or recorded reason`,"aria-describedby":`${x}-finder-hint`,onChange:e=>{a(e.target.value),l(0)}})]}),(0,D.jsxs)(`label`,{htmlFor:`${x}-state`,children:[`Recorded state`,(0,D.jsxs)(`select`,{id:`${x}-state`,value:o,onChange:e=>{s(e.target.value),l(0)},children:[(0,D.jsx)(`option`,{value:`all`,children:`All recorded states`}),[`pending`,`in-flight`,`completed`,`held`].map(e=>(0,D.jsx)(`option`,{value:e,children:j[e]},e))]})]}),(0,D.jsx)(`button`,{type:`button`,className:E.utilityButton,disabled:!f,onClick:()=>{f&&L(f.campaignId,!0)},children:`Locate selected`}),m?(0,D.jsx)(`button`,{type:`button`,className:E.utilityButton,onClick:()=>{a(``),s(`all`),l(0)},children:`Reset filters`}):null]}),(0,D.jsxs)(`div`,{className:E.finderMeta,children:[(0,D.jsxs)(`p`,{id:`${x}-finder-hint`,children:[`Search covers the `,t.nodes.length,` diagram campaigns. Filters narrow this index, not the graph or its dependency layers.`]}),(0,D.jsx)(`span`,{"aria-live":`polite`,"aria-atomic":`true`,children:m?`${p.length} matching campaign${p.length===1?``:`s`}`:`${t.nodes.length} campaigns in diagram`})]}),m?(0,D.jsxs)(D.Fragment,{children:[p.length?(0,D.jsx)(`ul`,{className:E.results,"aria-label":`Matching campaigns`,children:v.map(e=>(0,D.jsx)(`li`,{children:(0,D.jsxs)(`button`,{type:`button`,className:E.result,"aria-label":`Select campaign ${e.campaignId}`,"aria-describedby":`${x}-result-state-${e.campaignId} ${x}-result-reason-${e.campaignId}`,"aria-pressed":f?.campaignId===e.campaignId,"aria-controls":S,onClick:()=>R(e.campaignId),children:[(0,D.jsx)(`span`,{className:E.resultName,children:e.campaignId}),(0,D.jsx)(`span`,{id:`${x}-result-state-${e.campaignId}`,className:E.resultState,"data-state":e.state,children:j[e.state]}),(0,D.jsx)(`span`,{id:`${x}-result-reason-${e.campaignId}`,className:E.resultReason,children:e.reasonCode})]})},e.campaignId))}):(0,D.jsx)(`p`,{className:E.noResults,children:`No diagram campaigns match. Try another campaign ID or recorded reason, or reset filters.`}),h>1?(0,D.jsxs)(`nav`,{className:E.pagination,"aria-label":`Campaign result pages`,children:[(0,D.jsxs)(`span`,{children:[`Page `,_+1,` of `,h]}),(0,D.jsx)(`button`,{type:`button`,className:E.utilityButton,disabled:_===0,onClick:()=>l(_-1),children:`Previous results`}),(0,D.jsx)(`button`,{type:`button`,className:E.utilityButton,disabled:_+1===h,onClick:()=>l(_+1),children:`Next results`})]}):null]}):null]}),(0,D.jsxs)(`div`,{className:E.workspace,children:[(0,D.jsx)(`div`,{ref:u,className:E.board,role:`region`,"aria-label":`Campaign dependency diagram`,tabIndex:0,children:(0,D.jsxs)(`div`,{className:E.canvas,style:{width:t.width,height:t.height},children:[(0,D.jsx)(`svg`,{width:t.width,height:t.height,className:E.edges,"aria-hidden":`true`,children:b.map(e=>{let n=t.positions.get(e.from),r=t.positions.get(e.to),i=n.x+192,a=r.x,o=(i+a)/2;return(0,D.jsx)(`path`,{className:f&&(e.from===f.campaignId||e.to===f.campaignId)?E.selectedEdge:E.edge,d:`M ${i} ${n.y+40} C ${o} ${n.y+40}, ${o} ${r.y+40}, ${a} ${r.y+40}`},`${e.from}-${e.to}`)})}),t.columns.map((e,t)=>(0,D.jsx)(`span`,{className:E.column,style:{left:24+t*244},children:e.label},e.label)),t.nodes.map((e,n)=>{let r=t.positions.get(e.campaignId),i=t.topology.get(e.campaignId);return(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(`button`,{type:`button`,className:E.node,"data-state":e.state,style:{left:r.x,top:r.y},ref:t=>{t?d.current.set(e.campaignId,t):d.current.delete(e.campaignId)},"aria-label":`Inspect campaign ${e.campaignId}: ${j[e.state]}`,"aria-pressed":f?.campaignId===e.campaignId,"aria-controls":S,"aria-describedby":`${x}-relations-${n}`,onClick:()=>R(e.campaignId),children:[(0,D.jsx)(`span`,{className:E.nodeName,children:e.campaignId}),(0,D.jsx)(`span`,{className:E.nodeState,children:j[e.state]})]}),(0,D.jsx)(`span`,{id:`${x}-relations-${n}`,className:E.srOnly,children:i?`Direct dependencies: ${i.dependsOn.join(`, `)||`none declared`}. Additional inherited delivery prerequisites: ${i.prerequisites.filter(e=>!i.dependsOn.includes(e)).join(`, `)||`none recorded`}.`:`Dependency information unavailable.`})]},e.campaignId)})]})}),(0,D.jsx)(`section`,{id:S,className:E.detail,"aria-label":`Selected campaign detail`,children:f?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(`span`,{className:E.detailState,"data-state":f.state,children:j[f.state]}),(0,D.jsx)(`h4`,{children:f.campaignId}),y?(0,D.jsx)(`p`,{className:E.selectionNote,children:`The selected campaign is outside the current filters. Its recorded detail remains available.`}):null,(0,D.jsx)(`p`,{children:M[f.state]}),(0,D.jsxs)(`dl`,{className:E.facts,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`dt`,{children:`Recorded reason`}),(0,D.jsx)(`dd`,{children:f.reasonCode})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`dt`,{children:`Campaign-call intent`}),(0,D.jsx)(`dd`,{children:f.attempted?`Recorded`:`Not recorded`})]})]}),(0,D.jsx)(`p`,{className:E.note,children:`A call intent is not proof of worker execution, model requests or successful evaluation.`}),(0,D.jsx)(`h5`,{children:`Direct dependencies`}),C?z(C.dependsOn,`None declared for this campaign.`):(0,D.jsx)(`p`,{className:E.note,children:`Dependency information unavailable.`}),(0,D.jsx)(`h5`,{children:`Additional inherited delivery prerequisites`}),C?z(P,`None recorded beyond the direct dependencies.`):(0,D.jsx)(`p`,{className:E.note,children:`Delivery prerequisite information unavailable.`}),(0,D.jsx)(`p`,{className:E.note,children:`Inherited prerequisites are ancestor delivery gates, not additional declared dependency edges. A state badge alone does not verify the delivery receipt.`})]}):(0,D.jsx)(`p`,{className:E.note,children:n?`Selected campaign ${n} is no longer present in this diagram. No substitute has been selected. Choose another campaign to inspect its evidence.`:`Select a campaign to inspect its recorded evidence.`})})]}),(0,D.jsx)(`p`,{className:E.legend,children:`Lines show declared dependencies, from earlier to later layers. Layer placement does not change declared priority or establish execution readiness.`}),t.edges.length>k?(0,D.jsxs)(`p`,{className:E.note,children:[`Showing `,k,` of `,t.edges.length,` visible dependency lines. Every campaign’s complete relationships remain available in its detail and accessible description.`]}):null]}):(0,D.jsx)(`p`,{className:E.empty,children:`No campaign outcomes are available in this observation. Inspect a registered controller with recorded campaigns to see its mission topology.`})]})}function F({data:e}){return(0,D.jsx)(P,{data:e},e.controllerId)}var I=e=>e==null?`Not recorded`:String(e),L=e=>[...new Set(e)].sort().join(`, `)||`None recorded`,R={pending:`Pending`,held:`Held`,completed:`Completed`,"in-flight":`Unresolved intent`};function z(e,t){let n={clockWarning:!1,changes:[],changedCampaigns:0};if(!e)return{...n,kind:`baseline`,notice:`First accepted observation. Refresh this controller explicitly to compare recorded evidence.`};if(e.controllerId!==t.controllerId||e.createdAt!==t.createdAt)return{...n,kind:`incomparable`,notice:`Controller identity or registration timestamp changed. Registration continuity is not established; these observations are not compared.`};let r=[],i=(e,t,n,i,a)=>{n!==i&&r.push({key:e,label:t,before:n,after:i,...a?{campaignId:a}:{}})},a=[];(e.sourceState!==`healthy`||t.sourceState!==`healthy`)&&a.push(`One or both observations contain missing or degraded evidence. Absence from an observation does not establish deletion, completion or execution.`),t.createdAt===null&&a.push(`The registration timestamp is not recorded. Registration continuity is not established.`),e.deadlineAt!==t.deadlineAt&&a.push(`The recorded deadline changed. This difference does not establish registration continuity or renew execution authority.`),i(`controller:status`,`Recorded controller status`,e.status,t.status),i(`controller:health`,`Evidence health`,e.sourceState,t.sourceState),i(`controller:deadline`,`Recorded deadline`,I(e.deadlineAt),I(t.deadlineAt)),i(`controller:reasons`,`Evidence reasons`,L(e.reasons),L(t.reasons));for(let[n,r]of[[`mode`,`Admission mode`],[`sequence`,`Admission sequence`],[`requestedAt`,`Admission requested at`],[`acknowledgedAt`,`Admission acknowledged at`]])i(`control:${n}`,r,I(e.control?.[n]),I(t.control?.[n]));let o=new Map(e.outcomes.map(e=>[e.campaignId,e])),s=new Map(t.outcomes.map(e=>[e.campaignId,e])),c=[...s.keys(),...[...o.keys()].filter(e=>!s.has(e))];for(let e of c){let t=o.get(e),n=s.get(e);if(!t||!n){i(`campaign:${e}:presence`,`Campaign presence`,t?`Present`:`Not observed`,n?`Present`:`Not observed`,e);continue}i(`campaign:${e}:state`,`Recorded state`,R[t.state],R[n.state],e),i(`campaign:${e}:reason`,`Recorded reason`,t.reasonCode,n.reasonCode,e),i(`campaign:${e}:attempted`,`Campaign-call intent`,t.attempted?`Recorded`:`Not recorded`,n.attempted?`Recorded`:`Not recorded`,e)}if(i(`controller:campaign-order`,`Recorded campaign order`,e.outcomes.map(e=>e.campaignId).join(`, `)||`None recorded`,t.outcomes.map(e=>e.campaignId).join(`, `)||`None recorded`),i(`controller:topology`,`Dependency evidence`,e.topology?`Available`:`Unavailable`,t.topology?`Available`:`Unavailable`),e.topology&&t.topology){let n=new Map(e.topology.map(e=>[e.campaignId,e]));for(let e of t.topology){let t=n.get(e.campaignId);t&&(i(`campaign:${e.campaignId}:dependencies`,`Direct dependencies`,L(t.dependsOn),L(e.dependsOn),e.campaignId),i(`campaign:${e.campaignId}:prerequisites`,`Effective prerequisites`,L(t.prerequisites),L(e.prerequisites),e.campaignId))}}return{kind:`compared`,notice:a.join(` `)||null,clockWarning:Date.parse(t.observedAt)<=Date.parse(e.observedAt),changes:r,changedCampaigns:new Set(r.flatMap(e=>e.campaignId?[e.campaignId]:[])).size}}var B={changes:`_changes_qcw1f_1`,header:`_header_qcw1f_2`,labels:`_labels_qcw1f_4`,historical:`_historical_qcw1f_6`,description:`_description_qcw1f_7`,note:`_note_qcw1f_7`,footnote:`_footnote_qcw1f_7`,times:`_times_qcw1f_9`,warning:`_warning_qcw1f_12`,baseline:`_baseline_qcw1f_13`,counts:`_counts_qcw1f_14`,disclosure:`_disclosure_qcw1f_18`,rows:`_rows_qcw1f_22`,row:`_row_qcw1f_22`,field:`_field_qcw1f_24`,values:`_values_qcw1f_27`};function V({previous:e,current:t,historical:n,loading:r}){let i=(0,g.useMemo)(()=>z(e,t),[e,t]);return(0,D.jsxs)(`section`,{className:B.changes,"aria-label":`Changes between observations`,children:[(0,D.jsxs)(`header`,{className:B.header,children:[(0,D.jsx)(`h3`,{children:`Changes between observations`}),(0,D.jsxs)(`div`,{className:B.labels,children:[r?(0,D.jsx)(`span`,{children:`Refresh in progress`}):null,n?(0,D.jsx)(`span`,{className:B.historical,children:`Historical observations`}):null]})]}),(0,D.jsx)(`p`,{className:B.description,children:`Compare the last two accepted responses in this session. This is not an event log or a live activity view.`}),(0,D.jsxs)(`dl`,{className:B.times,"aria-label":`Compared observation times`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`dt`,{children:`Previous observation`}),(0,D.jsx)(`dd`,{children:e?(0,D.jsx)(`time`,{dateTime:e.observedAt,children:e.observedAt}):`Not yet observed`})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`dt`,{children:`Displayed observation`}),(0,D.jsx)(`dd`,{children:(0,D.jsx)(`time`,{dateTime:t.observedAt,children:t.observedAt})})]})]}),r?(0,D.jsx)(`p`,{className:B.note,children:`The accepted observations below remain unchanged while the refresh is pending.`}):null,n?(0,D.jsx)(`p`,{className:B.warning,children:`The latest refresh failed. This comparison uses retained observations, not current evidence.`}):null,i.notice?(0,D.jsx)(`p`,{className:i.kind===`baseline`?B.note:B.warning,children:i.notice}):null,i.clockWarning?(0,D.jsx)(`p`,{className:B.warning,children:`Observation timestamps are equal or move backward. Before and after follow response order, not a verified event timeline.`}):null,i.kind===`baseline`?(0,D.jsx)(`p`,{className:B.baseline,children:`Refresh this controller to compare two observations.`}):i.kind===`incomparable`?(0,D.jsx)(`p`,{className:B.baseline,children:`These observations cannot be compared as one controller registration.`}):i.changes.length===0?(0,D.jsx)(`p`,{className:B.baseline,children:`No compared evidence fields changed. Observation times are excluded; this does not prove that no work occurred.`}):(0,D.jsxs)(D.Fragment,{children:[(0,D.jsxs)(`dl`,{className:B.counts,"aria-label":`Observation change counts`,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`dt`,{children:`Changed fields`}),(0,D.jsx)(`dd`,{children:i.changes.length})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`dt`,{children:`Campaigns with displayed changes`}),(0,D.jsx)(`dd`,{children:i.changedCampaigns})]})]}),(0,D.jsxs)(`details`,{className:B.disclosure,children:[(0,D.jsxs)(`summary`,{children:[`Review `,i.changes.length,` changed field`,i.changes.length===1?``:`s`]}),(0,D.jsx)(`ul`,{className:B.rows,"aria-label":`Changed observation fields`,children:i.changes.map(e=>(0,D.jsxs)(`li`,{className:B.row,children:[(0,D.jsxs)(`div`,{className:B.field,children:[(0,D.jsx)(`h4`,{children:e.label}),e.campaignId?(0,D.jsx)(`span`,{children:e.campaignId}):null]}),(0,D.jsxs)(`dl`,{className:B.values,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`dt`,{children:`Before`}),(0,D.jsx)(`dd`,{children:e.before})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`dt`,{children:`After`}),(0,D.jsx)(`dd`,{children:e.after})]})]})]},e.key))})]})]}),(0,D.jsx)(`p`,{className:B.footnote,children:`Differences describe returned evidence only. They do not establish worker execution, delivery verification or a production deployment.`})]})}var H={inspector:`_inspector_123iu_1`,header:`_header_123iu_2`,note:`_note_123iu_4`,empty:`_empty_123iu_4`,field:`_field_123iu_4`,control:`_control_123iu_4`,readOnly:`_readOnly_123iu_5`,form:`_form_123iu_6`,identity:`_identity_123iu_15`,warning:`_warning_123iu_18`,facts:`_facts_123iu_19`,sequence:`_sequence_123iu_24`,tableWrap:`_tableWrap_123iu_27`,reasons:`_reasons_123iu_32`};function U({value:e}){return e?(0,D.jsx)(`time`,{dateTime:e,children:e.replace(`T`,` `).replace(`Z`,` UTC`)}):(0,D.jsx)(D.Fragment,{children:`Not recorded`})}var W={"campaign-execution":`Campaign execution`,"campaign-verification":`Campaign verification`,"delivery-execution":`Local branch delivery`,"delivery-verification":`Delivery confirmation`,"settlement-publication":`Controller acknowledgement`};function G(){let[e,t]=(0,g.useState)(``),[n,r]=(0,g.useState)(null),[i,a]=(0,g.useState)({current:null,previous:null}),o=i.current,[s,c]=(0,g.useState)(!1),[l,u]=(0,g.useState)(null),[d,f]=(0,g.useState)(!1),p=(0,g.useRef)({sequence:0,abort:null});(0,g.useEffect)(()=>()=>{p.current.sequence+=1,p.current.abort?.abort()},[]);async function m(e){if(!v(e)){f(!0);return}f(!1),p.current.abort?.abort();let t=++p.current.sequence,n=new AbortController;p.current.abort=n,r(e),a(t=>t.current?.controllerId===e?t:{current:null,previous:null}),c(!0),u(null);try{let r=await C(e,n.signal);t===p.current.sequence&&a(t=>({current:r,previous:t.current?.controllerId===e?t.current:null}))}catch{t===p.current.sequence&&u(`Observation failed or returned invalid evidence. Check your connection and refresh this controller.`)}finally{t===p.current.sequence&&c(!1)}}return(0,D.jsxs)(`section`,{className:H.inspector,"aria-labelledby":`controller-inspector-title`,children:[(0,D.jsxs)(`header`,{className:H.header,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`h2`,{id:`controller-inspector-title`,children:`Controller inspector`}),(0,D.jsx)(`p`,{children:`Read the recorded progress of a named portfolio controller.`})]}),(0,D.jsx)(`span`,{className:H.readOnly,children:`Read-only`})]}),(0,D.jsxs)(`form`,{className:H.form,onSubmit:t=>{t.preventDefault(),m(e)},children:[(0,D.jsxs)(`div`,{className:H.field,children:[(0,D.jsx)(`label`,{htmlFor:`controller-id`,children:`Controller ID`}),(0,D.jsx)(`input`,{id:`controller-id`,value:e,onChange:e=>{t(e.target.value),f(!1)},maxLength:64,autoComplete:`off`,autoCapitalize:`none`,spellCheck:!1,"aria-invalid":d,"aria-describedby":`controller-id-help`}),(0,D.jsx)(`p`,{id:`controller-id-help`,children:`Use the ID from your controller manifest: lowercase letters, numbers, hyphens or underscores.`})]}),(0,D.jsx)(`button`,{type:`submit`,children:`Inspect controller`}),n?(0,D.jsx)(`button`,{type:`button`,disabled:s,onClick:()=>{m(n)},children:`Refresh controller`}):null]}),d?(0,D.jsx)(`p`,{role:`alert`,className:H.warning,children:`Enter 1–64 characters, starting with a lowercase letter or number.`}):null,n?(0,D.jsxs)(`div`,{"aria-busy":s,children:[(0,D.jsxs)(`h3`,{className:H.identity,children:[`Evidence for `,(0,D.jsx)(`code`,{children:n})]}),e===n?null:(0,D.jsxs)(`p`,{className:H.note,children:[`The form has changed. Evidence below still belongs to `,n,`; submit to inspect another ID.`]}),(0,D.jsx)(`p`,{role:`status`,className:H.note,children:s?`Reading ${n}…${o?` Previous observation remains below.`:``}`:l&&o?`Historical observation — refresh failed. This is not current evidence.`:o?`Recorded snapshot. Refresh explicitly to check for changes; this is not a live process view.`:`No verified observation is available.`}),l?(0,D.jsx)(`p`,{role:`alert`,className:H.warning,children:l}):null,o?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsxs)(`dl`,{className:H.facts,children:[(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`dt`,{children:`Evidence health`}),(0,D.jsx)(`dd`,{children:o.sourceState})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`dt`,{children:`Recorded status`}),(0,D.jsx)(`dd`,{children:o.status})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`dt`,{children:`Observed at`}),(0,D.jsx)(`dd`,{children:(0,D.jsx)(U,{value:o.observedAt})})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`dt`,{children:`Created at`}),(0,D.jsx)(`dd`,{children:(0,D.jsx)(U,{value:o.createdAt})})]}),(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`dt`,{children:`Original deadline`}),(0,D.jsx)(`dd`,{children:(0,D.jsx)(U,{value:o.deadlineAt})})]})]}),(0,D.jsx)(V,{previous:i.previous,current:o,historical:!!l,loading:s}),o.sourceState===`missing`?(0,D.jsx)(`p`,{className:H.warning,children:`No controller registration was found in this store. Check the ID and selected Universe store.`}):null,o.sourceState===`degraded`?(0,D.jsx)(`p`,{className:H.warning,children:`Evidence could not be fully verified. This observation does not repair locks, reconcile work or prove a controller is running.`}):null,o.control?(0,D.jsxs)(`section`,{className:H.control,"aria-label":`Recorded admission control`,children:[(0,D.jsx)(`h4`,{children:o.control.mode===`open`?`Admission reopened`:o.control.acknowledgedAt?`Drain acknowledged`:`Drain awaiting acknowledgement`}),(0,D.jsxs)(`ol`,{className:H.sequence,children:[(0,D.jsxs)(`li`,{children:[(0,D.jsx)(`strong`,{children:o.control.mode===`open`?`Resume recorded`:`Drain recorded`}),(0,D.jsxs)(`span`,{children:[`Sequence `,o.control.sequence]}),(0,D.jsx)(U,{value:o.control.requestedAt})]}),(0,D.jsxs)(`li`,{children:[(0,D.jsx)(`strong`,{children:o.control.mode===`open`?`Resume did not start work`:o.control.acknowledgedAt?`Acknowledgement recorded`:`Acknowledgement not recorded`}),o.control.mode===`drain`?(0,D.jsx)(U,{value:o.control.acknowledgedAt}):(0,D.jsx)(`span`,{children:`Resume does not start work.`})]})]}),(0,D.jsx)(`p`,{children:o.control.mode===`drain`?`Drain blocks new dispatch intents; already-admitted work can continue. An unresolved intent prevents acknowledgement; absence of a visible worker proves neither completion nor failure.`:`Execution requires a separate run invocation. Admission state does not renew the original deadline or establish a running controller.`})]}):(0,D.jsx)(`p`,{className:H.note,children:`No admission-control record. This does not establish process liveness.`}),(0,D.jsx)(F,{data:o},o.controllerId),o.outcomes.length?(0,D.jsx)(`div`,{className:H.tableWrap,role:`region`,"aria-label":`Recorded campaign outcomes`,tabIndex:0,children:(0,D.jsxs)(`table`,{children:[(0,D.jsx)(`caption`,{children:`Recorded campaign outcomes`}),(0,D.jsx)(`thead`,{children:(0,D.jsxs)(`tr`,{children:[(0,D.jsx)(`th`,{scope:`col`,children:`Campaign`}),(0,D.jsx)(`th`,{scope:`col`,children:`State`}),(0,D.jsx)(`th`,{scope:`col`,children:`Campaign attempted`}),(0,D.jsx)(`th`,{scope:`col`,children:`Reason`})]})}),(0,D.jsx)(`tbody`,{children:o.outcomes.map(e=>(0,D.jsxs)(`tr`,{children:[(0,D.jsx)(`th`,{scope:`row`,children:e.campaignId}),(0,D.jsx)(`td`,{children:e.state}),(0,D.jsx)(`td`,{children:e.attempted?`Yes`:`No`}),(0,D.jsx)(`td`,{children:e.reasonCode})]},e.campaignId))})]})}):(0,D.jsx)(`p`,{className:H.note,children:`No campaign outcomes available in this observation.`}),(0,D.jsx)(`p`,{className:H.note,children:`“In-flight” means an unresolved durable intent, not proof of a live worker. Campaign attempted records a call intent, not proof of worker execution or successful evaluation. A dispatch-not-started outcome remains held and does not authorize a retry.`}),o.diagnostics?.length?(0,D.jsxs)(`section`,{"aria-label":`Recorded handoff diagnostics`,children:[(0,D.jsx)(`h4`,{children:`Recorded handoff diagnostics`}),(0,D.jsx)(`p`,{className:H.note,children:`These are historical failure records, not live errors. Check the campaign outcome above for its current recorded state. A diagnostic never authorizes retrying a worker or publishing a branch.`}),(0,D.jsx)(`div`,{className:H.tableWrap,role:`region`,"aria-label":`Handoff diagnostic details`,tabIndex:0,children:(0,D.jsxs)(`table`,{children:[(0,D.jsx)(`caption`,{children:`Where the handoff stopped`}),(0,D.jsx)(`thead`,{children:(0,D.jsxs)(`tr`,{children:[(0,D.jsx)(`th`,{scope:`col`,children:`Campaign`}),(0,D.jsx)(`th`,{scope:`col`,children:`Stage`}),(0,D.jsx)(`th`,{scope:`col`,children:`Failure code`}),(0,D.jsx)(`th`,{scope:`col`,children:`Recorded at`})]})}),(0,D.jsx)(`tbody`,{children:o.diagnostics.map(e=>(0,D.jsxs)(`tr`,{children:[(0,D.jsx)(`th`,{scope:`row`,children:e.campaignId}),(0,D.jsx)(`td`,{children:W[e.phase]}),(0,D.jsx)(`td`,{children:e.code}),(0,D.jsx)(`td`,{children:(0,D.jsx)(U,{value:e.at})})]},e.campaignId))})]})}),(0,D.jsx)(`p`,{className:H.note,children:`Inspect the pinned campaign and delivery receipts before recovery. Completed outcomes can retain an earlier diagnostic; raw error text and private intent digests are omitted here.`})]}):null,o.reasons.length?(0,D.jsxs)(`details`,{className:H.reasons,children:[(0,D.jsxs)(`summary`,{children:[`Evidence reasons (`,o.reasons.length,`)`]}),(0,D.jsx)(`ul`,{children:o.reasons.map((e,t)=>(0,D.jsx)(`li`,{children:e},`${e}-${t}`))})]}):null]}):null]}):(0,D.jsx)(`p`,{className:H.empty,children:`Enter an ID to inspect this store. Nothing is queried until you submit.`})]})}var K={shell:`_shell_1077u_1`,scopeBar:`_scopeBar_1077u_2`,scope:`_scope_1077u_2`,brand:`_brand_1077u_4`,brandMark:`_brandMark_1077u_6`,workspace:`_workspace_1077u_7`,badge:`_badge_1077u_8`,store:`_store_1077u_9`,root:`_root_1077u_12`,actions:`_actions_1077u_13`,notice:`_notice_1077u_14`,main:`_main_1077u_16`,explanation:`_explanation_1077u_17`,checking:`_checking_1077u_20`},q={key:`universe-console-scope`,async fetch(){let e=await c(`/api/universe/console`);if(e?.schemaVersion!==1||e.mode!==`universe`||e.readOnly!==!0||typeof e.root!=`string`||!/^(?:\/|[a-zA-Z]:[\\/]|\\\\)/.test(e.root)||[...e.root].some(e=>e.charCodeAt(0)<32||e.charCodeAt(0)>=127&&e.charCodeAt(0)<=159))throw Error(`The server did not establish an explicit read-only Universe scope.`);return e}};function J(){let e=l(q),t=d(q),n=s();return(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(m,{}),(0,D.jsxs)(`div`,{className:K.shell,children:[(0,D.jsxs)(`header`,{className:K.scopeBar,children:[(0,D.jsxs)(`div`,{className:K.scope,children:[(0,D.jsxs)(`div`,{className:K.brand,children:[(0,D.jsxs)(`svg`,{className:K.brandMark,viewBox:`54 67 146 124`,"aria-hidden":`true`,focusable:`false`,children:[(0,D.jsx)(`path`,{fill:`currentColor`,d:`M106 76H123V115H100L113 154L99 179H72L59 156Z M130 76H147L194 156L181 179H154L140 154L153 115H130Z`}),(0,D.jsx)(`path`,{fill:`#2563EB`,d:`M110 121H143L133 152H120Z`})]}),(0,D.jsx)(`strong`,{children:`Ashlrverse`}),(0,D.jsx)(`span`,{className:K.workspace,children:`Experiments`})]}),(0,D.jsx)(`span`,{className:K.badge,children:`Read-only observation`}),e.data?(0,D.jsxs)(`details`,{className:K.store,children:[(0,D.jsx)(`summary`,{children:`Universe store`}),(0,D.jsx)(`code`,{"aria-label":`Universe store`,className:K.root,children:e.data.root})]}):null]}),(0,D.jsxs)(`div`,{className:K.actions,children:[(0,D.jsxs)(`button`,{type:`button`,onClick:n.cycle,children:[`Theme: `,n.theme]}),(0,D.jsx)(`button`,{type:`button`,onClick:()=>{o()},children:`Disconnect`})]})]}),(0,D.jsx)(`main`,{id:`main-content`,tabIndex:-1,className:K.main,children:e.status===`error`?(0,D.jsxs)(`section`,{role:`alert`,className:K.notice,children:[(0,D.jsx)(`h1`,{children:`Console scope unavailable`}),(0,D.jsxs)(`p`,{children:[e.error?.message,` No project data is shown until the scope can be checked.`]}),(0,D.jsx)(`button`,{type:`button`,onClick:t,children:`Retry scope check`})]}):e.data?(0,D.jsxs)(f.Provider,{value:e.data.root,children:[(0,D.jsx)(`p`,{className:K.explanation,children:`This console observes the selected Universe store. Run campaigns from your terminal; opening this page does not start work.`}),(0,D.jsx)(G,{},e.data.root),(0,D.jsx)(p,{})]}):(0,D.jsx)(`p`,{role:`status`,children:`Checking the selected Universe store…`})})]})]})}function Y(){let e=u();return(0,g.useEffect)(()=>{if(e!==`checking`)return;let t=!1;return a(q.key,q.fetch).then(()=>{t||i(r(q.key).status===`success`)}),()=>{t=!0}},[e]),e===`checking`?(0,D.jsx)(`p`,{className:K.checking,role:`status`,children:`Checking for an existing console session…`}):e===`unauthenticated`?(0,D.jsx)(h,{heading:`Connect to Ashlrverse`,command:`ashlr universe console --root /absolute/universe-store`}):(0,D.jsx)(J,{})}export{Y as UniverseConsoleApp};
2
+ //# sourceMappingURL=UniverseConsoleApp-XqJvgt7b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniverseConsoleApp-XqJvgt7b.js","names":[],"sources":["../../../../../../src/core/universe/portfolio-controller-types.ts","../../../../../../src/web-ui/data/controller-status.ts","../../../../../../src/web-ui/data/controller-navigation.ts","../../../../../../src/web-ui/app/UniverseControllerTopology.module.css","../../../../../../src/web-ui/app/UniverseControllerTopology.tsx","../../../../../../src/web-ui/data/controller-observation-delta.ts","../../../../../../src/web-ui/app/UniverseControllerChanges.module.css","../../../../../../src/web-ui/app/UniverseControllerChanges.tsx","../../../../../../src/web-ui/app/UniverseControllerInspector.module.css","../../../../../../src/web-ui/app/UniverseControllerInspector.tsx","../../../../../../src/web-ui/app/UniverseConsoleApp.module.css","../../../../../../src/web-ui/app/UniverseConsoleApp.tsx"],"sourcesContent":["import type { UniverseCampaignDeliveryPlan } from './campaign-delivery.js';\nimport type { UniversePortfolioDefinition } from './portfolio-types.js';\n\n/** Closed historical diagnoses; none of these codes grants settlement or retry authority. */\nexport const PORTFOLIO_CONTROLLER_DIAGNOSTIC_CODES = Object.freeze({\n 'campaign-execution': Object.freeze(['campaign-call-threw'] as const),\n 'campaign-verification': Object.freeze(['campaign-evidence-changed'] as const),\n 'delivery-execution': Object.freeze(['delivery-call-threw'] as const),\n 'delivery-verification': Object.freeze(['delivery-evidence-changed', 'delivery-receipt-unverified'] as const),\n 'settlement-publication': Object.freeze(['settlement-write-failed'] as const),\n});\nexport type UniversePortfolioControllerDiagnosticPhase = keyof typeof PORTFOLIO_CONTROLLER_DIAGNOSTIC_CODES;\nexport type UniversePortfolioControllerDiagnosticCode = typeof PORTFOLIO_CONTROLLER_DIAGNOSTIC_CODES[UniversePortfolioControllerDiagnosticPhase][number];\nexport interface UniversePortfolioControllerDiagnostic {\n campaignId: string;\n intentDigest: string;\n phase: UniversePortfolioControllerDiagnosticPhase;\n code: UniversePortfolioControllerDiagnosticCode;\n at: string;\n}\n\nexport interface UniversePortfolioControllerOutcome {\n campaignId: string;\n /** In-flight means an unsettled durable intent, never proof of a live process. */\n state: 'pending' | 'in-flight' | 'completed' | 'held';\n /** Durable campaign-call intent, not proof or a count of provider/model requests. */\n attempted: boolean;\n reasonCode: string;\n campaignDigest: string | null;\n /** Digest of the verified local delivery receipt, not a deployment identity. */\n deliveryDigest: string | null;\n}\n\nexport interface UniversePortfolioControllerReport {\n schemaVersion: 1;\n controllerId: string;\n definitionDigest: string | null;\n sourceState: 'healthy' | 'missing' | 'degraded';\n status: 'completed' | 'incomplete' | 'cancelled' | 'timed-out' | 'unavailable' | 'draining' | 'drained';\n createdAt: string | null;\n deadlineAt: string | null;\n observedAt: string;\n outcomes: UniversePortfolioControllerOutcome[];\n /** Recorded enrollment ordering only; prerequisites include planned ancestor delivery gates. */\n topology?: Array<{ campaignId: string; dependsOn: string[]; prerequisites: string[] }>;\n reasons: string[];\n control?: UniversePortfolioControllerControl;\n /** Historical call-boundary evidence, independent of current outcome or settlement. */\n diagnostics?: UniversePortfolioControllerDiagnostic[];\n}\n\nexport interface UniversePortfolioControllerControl {\n mode: 'open' | 'drain';\n sequence: number;\n requestedAt: string;\n acknowledgedAt: string | null;\n}\n\n/** A durable owner request, not evidence that workers have exited. */\nexport interface UniversePortfolioControllerControlReceipt {\n schemaVersion: 1;\n controllerId: string;\n action: 'drain' | 'resume';\n changed: boolean;\n sequence: number;\n requestedAt: string;\n}\n\n/** Internal fixed enrollment; source refresh cannot renew these admission pins. */\nexport interface PortfolioControllerPin {\n campaignId: string;\n universeId: string;\n definitionDigest: string;\n manifestDigest: string;\n comparatorDigest: string;\n campaignDigest: string;\n recordsDigest: string;\n initialState: 'pending' | 'completed' | 'held';\n dispatch: 'campaign' | 'delivery' | 'none';\n reasonCode: string;\n}\n\n/** Association with one already-persisted signed graph intent, not an effect permit. */\nexport interface PortfolioControllerGraphDispatch {\n schemaVersion: 1;\n graphRootDigest: string;\n graphId: string;\n definitionDigest: string;\n nodeId: string;\n intentDigest: string;\n}\n\nexport interface PortfolioControllerEnrollment {\n definition: UniversePortfolioDefinition;\n deliveryPlan: UniverseCampaignDeliveryPlan | null;\n definitionDigest: string;\n pins: PortfolioControllerPin[];\n deadlineAt: string;\n /** Absent on legacy/direct controllers; never backfilled after creation. */\n graphDispatch?: PortfolioControllerGraphDispatch;\n}\n\nexport type PortfolioControllerEvent = { id: string; sequence: number; at: string } & (\n { kind: 'created'; enrollment: PortfolioControllerEnrollment } |\n { kind: 'observed' } |\n { kind: 'control'; action: 'drain' } |\n { kind: 'control'; action: 'resume'; drainSequence: number } |\n { kind: 'drained'; drainSequence: number } |\n { kind: 'intent'; campaignId: string; /** Absent for legacy and delivery-only intents. */ dispatchId?: string } |\n ({ kind: 'dispatch-diagnostic' } & Omit<UniversePortfolioControllerDiagnostic, 'at'>) |\n { kind: 'settled'; outcome: UniversePortfolioControllerOutcome; recordsDigest: string }\n);\n","import type { UniversePortfolioControllerView } from '../../core/web/universe-console-types.js';\nimport { PORTFOLIO_CONTROLLER_DIAGNOSTIC_CODES } from '../../core/universe/portfolio-controller-types.js';\nimport { apiGet } from './client.js';\n\nexport function isControllerId(value: unknown): value is string {\n return typeof value === 'string' && /^[a-z0-9][a-z0-9_-]{0,63}$/.test(value);\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\nfunction timestamp(value: unknown): value is string {\n return typeof value === 'string' && /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$/.test(value) && Number.isFinite(Date.parse(value)) &&\n new Date(value).toISOString() === (value.length === 20 ? value.replace('Z', '.000Z') : value);\n}\nfunction code(value: unknown): value is string {\n return typeof value === 'string' && /^[a-z0-9][a-z0-9_:-]{0,191}$/.test(value);\n}\n\n/** Validate identity and bounded public fields before rendering any evidence. */\nexport function validateControllerStatus(value: unknown, controllerId: string): UniversePortfolioControllerView {\n const invalid = () => new Error('Controller evidence could not be validated.');\n if (!isControllerId(controllerId) || !record(value) || value.schemaVersion !== 1 || value.controllerId !== controllerId ||\n typeof value.sourceState !== 'string' || !['healthy', 'missing', 'degraded'].includes(value.sourceState) ||\n typeof value.status !== 'string' || !['completed', 'incomplete', 'cancelled', 'timed-out', 'unavailable', 'draining', 'drained'].includes(value.status) ||\n !(value.createdAt === null || timestamp(value.createdAt)) || !(value.deadlineAt === null || timestamp(value.deadlineAt)) ||\n !timestamp(value.observedAt) || !Array.isArray(value.reasons) || value.reasons.length > 128 || !value.reasons.every(code) ||\n !Array.isArray(value.outcomes) || value.outcomes.length > 64) throw invalid();\n const seen = new Set<string>();\n const outcomes = value.outcomes.map((row: unknown) => {\n if (!record(row) || typeof row.campaignId !== 'string' || !isControllerId(row.campaignId) || seen.has(row.campaignId) ||\n typeof row.state !== 'string' || !['pending', 'in-flight', 'completed', 'held'].includes(row.state) || typeof row.attempted !== 'boolean' || !code(row.reasonCode)) throw invalid();\n seen.add(row.campaignId);\n return { campaignId: row.campaignId, state: row.state, attempted: row.attempted, reasonCode: row.reasonCode };\n });\n let topology: UniversePortfolioControllerView['topology'];\n if (value.topology !== undefined) {\n if (!Array.isArray(value.topology) || value.topology.length > 64 || value.topology.length !== outcomes.length) throw invalid();\n const topologyIds = new Set<string>();\n topology = value.topology.map((node: unknown) => {\n if (!record(node) || !isControllerId(node.campaignId) || !seen.has(node.campaignId) || topologyIds.has(node.campaignId)) throw invalid();\n topologyIds.add(node.campaignId);\n const references = (input: unknown): string[] => {\n if (!Array.isArray(input) || input.length > 63 || !input.every((id) => isControllerId(id) && seen.has(id) && id !== node.campaignId) ||\n new Set(input).size !== input.length) throw invalid();\n return [...input] as string[];\n };\n const dependsOn = references(node.dependsOn); const prerequisites = references(node.prerequisites);\n if (dependsOn.some((id) => !prerequisites.includes(id))) throw invalid();\n return { campaignId: node.campaignId, dependsOn, prerequisites };\n });\n // Bound traversal and reject cycles in effective gates, not only declared edges.\n // The server's additional gates must also be genuine declared ancestors.\n const byId = new Map(topology.map((node) => [node.campaignId, node]));\n const resolved = new Set<string>();\n while (resolved.size < topology.length) {\n const next = topology.find((node) => !resolved.has(node.campaignId) && node.prerequisites.every((id) => resolved.has(id)));\n if (!next) throw invalid();\n resolved.add(next.campaignId);\n }\n for (const node of topology) {\n const ancestors = new Set<string>(); const pending = [...node.dependsOn];\n while (pending.length) {\n const id = pending.pop()!;\n if (ancestors.has(id)) continue;\n ancestors.add(id); pending.push(...byId.get(id)!.dependsOn);\n }\n if (node.prerequisites.some((id) => !ancestors.has(id))) throw invalid();\n }\n }\n let control: UniversePortfolioControllerView['control'];\n let diagnostics: UniversePortfolioControllerView['diagnostics'];\n if (value.diagnostics !== undefined) {\n if (!Array.isArray(value.diagnostics) || value.diagnostics.length > outcomes.length) throw invalid();\n const diagnosed = new Set<string>();\n diagnostics = value.diagnostics.map((row: unknown) => {\n if (!record(row) || !isControllerId(row.campaignId) || !seen.has(row.campaignId) || diagnosed.has(row.campaignId) ||\n outcomes.find(outcome => outcome.campaignId === row.campaignId)?.state === 'pending' ||\n typeof row.phase !== 'string' || !Object.hasOwn(PORTFOLIO_CONTROLLER_DIAGNOSTIC_CODES, row.phase) ||\n typeof row.code !== 'string' || !timestamp(row.at)) throw invalid();\n const phase = row.phase as keyof typeof PORTFOLIO_CONTROLLER_DIAGNOSTIC_CODES;\n if (!(PORTFOLIO_CONTROLLER_DIAGNOSTIC_CODES[phase] as readonly string[]).includes(row.code)) throw invalid();\n diagnosed.add(row.campaignId);\n return { campaignId: row.campaignId, phase, code: row.code, at: row.at } as NonNullable<typeof diagnostics>[number];\n });\n }\n if (value.control !== undefined) {\n const current = value.control;\n if (!record(current) || typeof current.mode !== 'string' || !['open', 'drain'].includes(current.mode) || !Number.isInteger(current.sequence) ||\n (current.sequence as number) < 1 || (current.sequence as number) > 511 || !timestamp(current.requestedAt) ||\n !(current.acknowledgedAt === null || timestamp(current.acknowledgedAt))) throw invalid();\n control = { mode: current.mode as 'open' | 'drain', sequence: current.sequence as number,\n requestedAt: current.requestedAt, acknowledgedAt: current.acknowledgedAt };\n }\n if (control?.mode === 'open' && control.acknowledgedAt !== null ||\n value.status === 'draining' && (control?.mode !== 'drain' || control.acknowledgedAt !== null) ||\n value.status === 'drained' && (control?.mode !== 'drain' || control.acknowledgedAt === null)) throw invalid();\n // Explicit projection also prevents unexpected private fields entering UI state.\n return { schemaVersion: 1, controllerId, sourceState: value.sourceState, status: value.status,\n createdAt: value.createdAt, deadlineAt: value.deadlineAt, observedAt: value.observedAt,\n reasons: [...value.reasons], outcomes, ...(topology ? { topology } : {}), ...(control ? { control } : {}),\n ...(diagnostics ? { diagnostics } : {}) } as UniversePortfolioControllerView;\n}\n\nexport async function readControllerStatus(controllerId: string, signal?: AbortSignal): Promise<UniversePortfolioControllerView> {\n if (!isControllerId(controllerId)) throw new Error('Enter a valid controller ID.');\n const result = await apiGet<unknown>(`/api/universe/controller-status?controllerId=${encodeURIComponent(controllerId)}`, signal);\n return validateControllerStatus(result, controllerId);\n}\n","import type { UniversePortfolioControllerView } from '../../core/web/universe-console-types.js';\n\ntype Outcome = UniversePortfolioControllerView['outcomes'][number];\nexport type ControllerCampaignStateFilter = 'all' | Outcome['state'];\n\n/** Navigation filters recorded evidence without changing declared execution priority. */\nexport function matchControllerCampaigns(\n outcomes: readonly Outcome[], query: string, filter: ControllerCampaignStateFilter,\n): Outcome[] {\n const needle = query.trim().toLowerCase();\n return outcomes.filter((outcome) => (filter === 'all' || outcome.state === filter) &&\n (outcome.campaignId.toLowerCase().includes(needle) || outcome.reasonCode.toLowerCase().includes(needle)));\n}\n\n/** Spend the visual edge budget on selected context first; this never changes task order. */\nexport function prioritizeControllerEdges<T extends { from: string; to: string }>(\n edges: readonly T[], selectedId: string | null, limit: number,\n): T[] {\n const cap = Number.isFinite(limit) ? Math.max(0, Math.floor(limit)) : 0;\n if (selectedId === null) return edges.slice(0, cap);\n const incident: T[] = [];\n const other: T[] = [];\n for (const edge of edges) {\n (edge.from === selectedId || edge.to === selectedId ? incident : other).push(edge);\n }\n return [...incident, ...other].slice(0, cap);\n}\n",".topology { margin: var(--space-6) 0; min-width: 0; color: var(--text-primary); font-family: var(--font-ui); }\n.header { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-4); }\n.header h3 { margin: 0; font-family: var(--font-display); font-size: var(--text-2xl-size); letter-spacing: -.035em; }\n.header p { max-width: 68ch; margin: var(--space-2) 0; color: var(--text-secondary); font-size: var(--text-sm-size); line-height: 1.6; }\n.snapshot { padding: 5px 8px; border: 1px solid var(--border-strong); font-size: var(--text-xs-size); white-space: nowrap; border-radius: var(--radius-xs); }\n.counts { display: flex; flex-wrap: wrap; margin: var(--space-4) 0 0; border-top: 1px solid var(--border-strong); border-bottom: 1px solid var(--border-strong); padding: var(--space-3) 0; gap: var(--space-3) var(--space-6); }\n.counts > div { display: flex; align-items: baseline; gap: var(--space-2); }\n.counts dt { font-size: var(--text-xs-size); color: var(--text-secondary); }\n.counts dd { margin: 0; font-family: var(--font-display); font-size: var(--text-xl-size); font-variant-numeric: tabular-nums; }\n.finder { padding: var(--space-4); border: 1px solid var(--border-strong); border-top: 0; background: var(--bg-surface); }\n.finderControls { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--space-3); }\n.finderControls label { display: flex; flex-direction: column; gap: 6px; color: var(--text-secondary); font-size: var(--text-xs-size); min-width: 0; }\n.searchLabel { flex: 1 1 220px; }\n.finderControls :is(input, select) { min-height: 38px; min-width: 0; max-width: 100%; box-sizing: border-box; border: 1px solid var(--border-strong); border-radius: var(--radius-xs); background: var(--bg-canvas); color: var(--text-primary); padding: 7px 10px; font: inherit; font-size: var(--text-sm-size); }\n.finderControls input::placeholder { color: var(--text-secondary); opacity: 1; }\n.utilityButton { min-height: 38px; padding: 7px 10px; border: 1px solid var(--border-strong); border-radius: var(--radius-xs); background: var(--bg-surface); color: var(--text-primary); font: inherit; font-size: var(--text-xs-size); cursor: pointer; }\n.utilityButton:hover:not(:disabled) { background: var(--bg-hover); border-color: var(--accent-500); }\n.utilityButton:disabled { opacity: .5; cursor: default; }\n.finderMeta { display: flex; justify-content: space-between; flex-wrap: wrap; align-items: baseline; gap: 6px var(--space-4); margin-top: var(--space-3); color: var(--text-secondary); font-size: var(--text-xs-size); line-height: 1.5; }\n.finderMeta p { margin: 0; max-width: 70ch; flex: 1 1 300px; }\n.finderMeta > span { font-variant-numeric: tabular-nums; }\n.results { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); list-style: none; padding: 0; margin: var(--space-3) 0 0; gap: 6px var(--space-3); }\n.results li { min-width: 0; }\n.result { display: grid; grid-template-columns: minmax(0, 1fr) auto; width: 100%; text-align: left; gap: 5px var(--space-2); padding: 10px 12px; color: var(--text-primary); background: var(--bg-canvas); border: 1px solid transparent; border-left: 2px solid var(--border-strong); border-radius: 0 var(--radius-xs) var(--radius-xs) 0; font: inherit; cursor: pointer; }\n.result:hover { background: var(--bg-hover); }\n.result[aria-pressed=\"true\"] { border-color: var(--accent-500); background: var(--bg-selected); }\n.resultName { font-size: var(--text-sm-size); font-weight: var(--font-weight-medium); overflow-wrap: anywhere; }\n.resultState { align-self: start; font-size: var(--text-xs-size); color: var(--text-secondary); }\n.resultState[data-state=\"held\"] { color: var(--status-warning-fg); }\n.resultState[data-state=\"completed\"] { color: var(--status-success-fg); }\n.resultState[data-state=\"in-flight\"] { color: var(--status-unknown-fg); }\n.resultReason { grid-column: 1 / -1; overflow-wrap: anywhere; color: var(--text-secondary); font-size: var(--text-xs-size); }\n.pagination { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--space-2); margin-top: var(--space-3); font-size: var(--text-xs-size); }\n.pagination > span { color: var(--text-secondary); margin-right: auto; font-variant-numeric: tabular-nums; }\n.noResults { margin: var(--space-3) 0 0; padding: var(--space-3) 0; color: var(--text-secondary); font-size: var(--text-sm-size); line-height: 1.6; }\n.selectionNote { border-left: 2px solid var(--accent-500); padding-left: var(--space-3); color: var(--text-secondary); }\n.workspace { display: grid; grid-template-columns: minmax(0, 1fr) minmax(250px, 310px); border: 1px solid var(--border-strong); border-top: 0; border-radius: 0 0 var(--radius-sm) var(--radius-sm); overflow: hidden; }\n.board { min-width: 0; max-height: 620px; overflow: auto; background: var(--bg-canvas); scrollbar-gutter: stable; }\n.canvas { position: relative; isolation: isolate; }\n.edges { position: absolute; inset: 0; pointer-events: none; }\n.edge, .selectedEdge { fill: none; stroke: var(--border-strong); stroke-width: 1.5; }\n.selectedEdge { stroke: var(--accent-500); stroke-width: 2; }\n.column { position: absolute; top: 20px; width: 192px; color: var(--text-secondary); font-size: var(--text-xs-size); font-weight: var(--font-weight-medium); }\n.node { position: absolute; width: 192px; min-height: 80px; display: flex; flex-direction: column; gap: 8px; padding: 13px 14px; text-align: left; color: var(--text-primary); background: var(--bg-surface); border: 1px solid var(--border-strong); border-left: 3px solid var(--status-neutral-solid); border-radius: 3px 10px 10px 3px; cursor: pointer; }\n.node:hover { background: var(--bg-hover); }\n.node[aria-pressed=\"true\"] { border-color: var(--accent-500); background: var(--bg-selected); box-shadow: 0 0 0 1px var(--accent-500); }\n.nodeName { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: var(--font-display); font-weight: var(--font-weight-semibold); font-size: var(--text-md-size); }\n.nodeState { font-size: var(--text-xs-size); color: var(--text-secondary); }\n.node[data-state=\"completed\"] { border-left-color: var(--status-success-solid); }\n.node[data-state=\"held\"] { border-left-color: var(--status-warning-solid); }\n.node[data-state=\"in-flight\"] { border-left-color: var(--status-unknown-solid); }\n.detail { padding: var(--space-5); border-left: 1px solid var(--border-strong); background: var(--bg-surface); min-width: 0; }\n.detail h4 { margin: var(--space-3) 0; font-family: var(--font-display); font-size: var(--text-xl-size); letter-spacing: -.025em; overflow-wrap: anywhere; }\n.detail p { font-size: var(--text-sm-size); line-height: 1.6; }\n.detailState { display: inline-block; padding: 4px 8px; border-radius: var(--radius-xs); background: var(--status-neutral-bg); color: var(--status-neutral-fg); font-size: var(--text-xs-size); }\n.detailState[data-state=\"completed\"] { background: var(--status-success-bg); color: var(--status-success-fg); }\n.detailState[data-state=\"held\"] { background: var(--status-warning-bg); color: var(--status-warning-fg); }\n.detailState[data-state=\"in-flight\"] { background: var(--status-unknown-bg); color: var(--status-unknown-fg); }\n.facts { margin: var(--space-4) 0; display: grid; gap: var(--space-3); }\n.facts dt { font-size: var(--text-xs-size); color: var(--text-secondary); margin-bottom: 3px; }\n.facts dd { margin: 0; font-size: var(--text-sm-size); overflow-wrap: anywhere; }\n.detail h5 { font-size: var(--text-sm-size); font-weight: var(--font-weight-semibold); margin: var(--space-5) 0 var(--space-2); }\n.relationships { margin: 0; padding: 0; list-style: none; }\n.relationships li { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: 4px 8px; padding: 7px 0; border-bottom: 1px solid var(--border-subtle); font-size: var(--text-xs-size); overflow-wrap: anywhere; }\n.relationships li > span:last-child { color: var(--text-secondary); }\n.relationships button { padding: 3px 0; min-height: 28px; color: var(--text-link); background: transparent; border: 0; text-align: left; text-decoration: underline; text-underline-offset: 3px; overflow-wrap: anywhere; cursor: pointer; font: inherit; }\n.note, .legend, .empty { color: var(--text-secondary); font-size: var(--text-xs-size); line-height: 1.6; max-width: 78ch; }\n.legend { margin: var(--space-3) 0 0; }\n.notice { padding: var(--space-3); border-left: 3px solid var(--status-unknown-solid); background: var(--status-unknown-bg); color: var(--status-unknown-fg); font-size: var(--text-sm-size); line-height: 1.6; margin: var(--space-3) 0; }\n.empty { padding: var(--space-5) 0; font-size: var(--text-sm-size); }\n.topology :is(button, input, select, [tabindex]):focus-visible { outline: 3px solid var(--border-focus); outline-offset: 3px; }\n.board:focus-visible { outline-offset: -3px; }\n.srOnly { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }\n@media (max-width: 900px) { .workspace { grid-template-columns: minmax(0, 1fr); } .detail { border-left: 0; border-top: 1px solid var(--border-strong); } .board { max-height: 430px; } }\n@media (max-width: 500px) { .header { flex-direction: column; gap: var(--space-2); } .counts { gap: var(--space-2) var(--space-4); } .detail { padding: var(--space-4); } }\n@media (max-width: 620px) { .results { grid-template-columns: minmax(0, 1fr); } .finderControls label:not(.searchLabel) { flex: 1 1 100%; } .finder { padding: var(--space-3); } }\n","import { useId, useMemo, useRef, useState } from 'react';\nimport type { UniversePortfolioControllerView } from '../../core/web/universe-console-types.js';\nimport { matchControllerCampaigns, prioritizeControllerEdges, type ControllerCampaignStateFilter } from '../data/controller-navigation.js';\nimport styles from './UniverseControllerTopology.module.css';\n\nconst NODE_LIMIT = 64;\nconst EDGE_LIMIT = 256;\nconst RESULT_PAGE_SIZE = 8;\ntype Outcome = UniversePortfolioControllerView['outcomes'][number];\nconst STATE_LABELS: Record<Outcome['state'], string> = {\n pending: 'Pending', 'in-flight': 'Unresolved intent', completed: 'Completed', held: 'Held',\n};\nconst STATE_MEANINGS: Record<Outcome['state'], string> = {\n pending: 'No settled outcome is recorded. Pending does not mean ready to run.',\n 'in-flight': 'A durable dispatch intent remains unresolved. This is not proof of a live worker.',\n completed: 'The controller recorded completion, including any required local delivery. This is not a production deployment claim.',\n held: 'Work remains held for the recorded reason. This view does not retry or release it.',\n};\n\n/** Layout follows declared dependencies, never a guessed worker schedule or execution priority. */\nfunction layoutCampaigns(data: UniversePortfolioControllerView) {\n const nodes = data.outcomes.slice(0, NODE_LIMIT);\n const topology = new Map(data.topology?.map((node) => [node.campaignId, node]));\n const visible = new Set(nodes.map((node) => node.campaignId));\n const levels = new Map<string, number>();\n if (data.topology) {\n for (let pass = 0; pass < nodes.length; pass++) {\n for (const node of nodes) {\n const links = topology.get(node.campaignId);\n if (levels.has(node.campaignId) || !links || links.dependsOn.some((id) => !levels.has(id))) continue;\n levels.set(node.campaignId, links.dependsOn.length ? Math.max(...links.dependsOn.map((id) => levels.get(id)!)) + 1 : 0);\n }\n }\n }\n const knownLevels = [...new Set(levels.values())].sort((a, b) => a - b);\n const columns = knownLevels.map((level) => ({ label: `Dependency layer ${level + 1}`, nodes: nodes.filter((node) => levels.get(node.campaignId) === level) }));\n const unplaced = nodes.filter((node) => !levels.has(node.campaignId));\n if (unplaced.length) columns.push({ label: data.topology ? 'Layer unavailable' : 'Recorded campaigns', nodes: unplaced });\n const positions = new Map<string, { x: number; y: number }>();\n columns.forEach((column, index) => column.nodes.forEach((node, row) => positions.set(node.campaignId, { x: 24 + index * 244, y: 56 + row * 108 })));\n const edges = nodes.flatMap((node) => (topology.get(node.campaignId)?.dependsOn ?? []).filter((id) => visible.has(id)).map((from) => ({ from, to: node.campaignId })));\n return { nodes, topology, columns, positions, edges, width: Math.max(256, columns.length * 244 + 8), height: 64 + Math.max(1, ...columns.map((column) => column.nodes.length)) * 108 };\n}\n\nfunction ControllerTopology({ data }: { data: UniversePortfolioControllerView }) {\n const graph = useMemo(() => layoutCampaigns(data), [data]);\n const [selectedId, setSelectedId] = useState(graph.nodes[0]?.campaignId ?? null);\n const [query, setQuery] = useState('');\n const [stateFilter, setStateFilter] = useState<ControllerCampaignStateFilter>('all');\n const [resultPage, setResultPage] = useState(0);\n const boardRef = useRef<HTMLDivElement>(null);\n const nodeRefs = useRef(new Map<string, HTMLButtonElement>());\n const selected = graph.nodes.find((node) => node.campaignId === selectedId);\n const matching = useMemo(() => matchControllerCampaigns(graph.nodes, query, stateFilter), [graph.nodes, query, stateFilter]);\n const filtering = query.trim().length > 0 || stateFilter !== 'all';\n const pageCount = Math.max(1, Math.ceil(matching.length / RESULT_PAGE_SIZE));\n const page = Math.min(resultPage, pageCount - 1);\n const visibleResults = matching.slice(page * RESULT_PAGE_SIZE, (page + 1) * RESULT_PAGE_SIZE);\n const selectedExcluded = selected && filtering && !matching.some((node) => node.campaignId === selected.campaignId);\n const visibleEdges = useMemo(() => prioritizeControllerEdges(graph.edges, selected?.campaignId ?? null, EDGE_LIMIT), [graph.edges, selected?.campaignId]);\n const prefix = useId();\n const detailId = `${prefix}-detail`;\n const links = selected ? graph.topology.get(selected.campaignId) : undefined;\n const inherited = links?.prerequisites.filter((id) => !links.dependsOn.includes(id)) ?? [];\n const outcomes = new Map(data.outcomes.map((node) => [node.campaignId, node]));\n const count = (state: Outcome['state']) => data.outcomes.filter((node) => node.state === state).length;\n function revealCampaign(id: string, focus = false) {\n const board = boardRef.current; const position = graph.positions.get(id);\n if (!board || !position) return;\n // Only the diagram viewport moves; scrollIntoView would also move the page.\n const left = Math.max(0, position.x + 96 - board.clientWidth / 2);\n const top = Math.max(0, position.y + 40 - board.clientHeight / 2);\n if (typeof board.scrollTo === 'function') board.scrollTo({ left, top, behavior: 'auto' });\n else { board.scrollLeft = left; board.scrollTop = top; }\n if (focus) nodeRefs.current.get(id)?.focus({ preventScroll: true });\n }\n function selectCampaign(id: string) { setSelectedId(id); revealCampaign(id); }\n function relations(ids: string[], empty: string) {\n return ids.length ? <ul className={styles.relationships}>{ids.map((id) => <li key={id}>\n {graph.positions.has(id) ? <button type=\"button\" onClick={() => selectCampaign(id)}>{id}</button> : <span>{id}</span>}\n <span>{outcomes.has(id) ? STATE_LABELS[outcomes.get(id)!.state] : 'Outcome unavailable'}</span>\n </li>)}</ul> : <p className={styles.note}>{empty}</p>;\n }\n return <section className={styles.topology} aria-label=\"Controller mission topology\">\n <header className={styles.header}><div><h3>Mission topology</h3><p>Follow the declared work graph. Select a campaign to inspect its recorded state and prerequisites.</p></div><span className={styles.snapshot}>Recorded snapshot</span></header>\n <dl className={styles.counts} aria-label=\"Recorded campaign counts\">\n <div><dt>Campaigns</dt><dd>{data.outcomes.length}</dd></div>\n {(['completed', 'in-flight', 'held', 'pending'] as const).map((state) => <div key={state} data-state={state}><dt>{STATE_LABELS[state]}</dt><dd>{count(state)}</dd></div>)}\n </dl>\n {!data.topology ? <p className={styles.notice}>Dependency information is unavailable in this observation. Campaign placement does not imply independence or readiness.</p> : null}\n {data.outcomes.length > NODE_LIMIT ? <p className={styles.notice}>Showing the first {NODE_LIMIT} of {data.outcomes.length} campaigns. Counts include all recorded outcomes; relationships outside this diagram remain in the selected campaign detail.</p> : null}\n {graph.nodes.length ? <>\n <section className={styles.finder} aria-label=\"Campaign navigator\">\n <div className={styles.finderControls}>\n <label className={styles.searchLabel} htmlFor={`${prefix}-search`}>Search campaigns\n <input id={`${prefix}-search`} type=\"search\" value={query} maxLength={192} placeholder=\"Campaign ID or recorded reason\" aria-describedby={`${prefix}-finder-hint`}\n onChange={(event) => { setQuery(event.target.value); setResultPage(0); }} />\n </label>\n <label htmlFor={`${prefix}-state`}>Recorded state\n <select id={`${prefix}-state`} value={stateFilter} onChange={(event) => { setStateFilter(event.target.value as ControllerCampaignStateFilter); setResultPage(0); }}>\n <option value=\"all\">All recorded states</option>\n {(['pending', 'in-flight', 'completed', 'held'] as const).map((state) => <option key={state} value={state}>{STATE_LABELS[state]}</option>)}\n </select>\n </label>\n <button type=\"button\" className={styles.utilityButton} disabled={!selected} onClick={() => { if (selected) revealCampaign(selected.campaignId, true); }}>Locate selected</button>\n {filtering ? <button type=\"button\" className={styles.utilityButton} onClick={() => { setQuery(''); setStateFilter('all'); setResultPage(0); }}>Reset filters</button> : null}\n </div>\n <div className={styles.finderMeta}><p id={`${prefix}-finder-hint`}>Search covers the {graph.nodes.length} diagram campaigns. Filters narrow this index, not the graph or its dependency layers.</p>\n <span aria-live=\"polite\" aria-atomic=\"true\">{filtering ? `${matching.length} matching campaign${matching.length === 1 ? '' : 's'}` : `${graph.nodes.length} campaigns in diagram`}</span></div>\n {filtering ? <>\n {matching.length ? <ul className={styles.results} aria-label=\"Matching campaigns\">{visibleResults.map((node) => <li key={node.campaignId}>\n <button type=\"button\" className={styles.result} aria-label={`Select campaign ${node.campaignId}`} aria-describedby={`${prefix}-result-state-${node.campaignId} ${prefix}-result-reason-${node.campaignId}`} aria-pressed={selected?.campaignId === node.campaignId} aria-controls={detailId} onClick={() => selectCampaign(node.campaignId)}>\n <span className={styles.resultName}>{node.campaignId}</span><span id={`${prefix}-result-state-${node.campaignId}`} className={styles.resultState} data-state={node.state}>{STATE_LABELS[node.state]}</span><span id={`${prefix}-result-reason-${node.campaignId}`} className={styles.resultReason}>{node.reasonCode}</span>\n </button>\n </li>)}</ul> : <p className={styles.noResults}>No diagram campaigns match. Try another campaign ID or recorded reason, or reset filters.</p>}\n {pageCount > 1 ? <nav className={styles.pagination} aria-label=\"Campaign result pages\"><span>Page {page + 1} of {pageCount}</span>\n <button type=\"button\" className={styles.utilityButton} disabled={page === 0} onClick={() => setResultPage(page - 1)}>Previous results</button>\n <button type=\"button\" className={styles.utilityButton} disabled={page + 1 === pageCount} onClick={() => setResultPage(page + 1)}>Next results</button>\n </nav> : null}\n </> : null}\n </section>\n <div className={styles.workspace}>\n <div ref={boardRef} className={styles.board} role=\"region\" aria-label=\"Campaign dependency diagram\" tabIndex={0}>\n <div className={styles.canvas} style={{ width: graph.width, height: graph.height }}>\n <svg width={graph.width} height={graph.height} className={styles.edges} aria-hidden=\"true\">\n {visibleEdges.map((edge) => {\n const from = graph.positions.get(edge.from)!; const to = graph.positions.get(edge.to)!;\n const x = from.x + 192; const end = to.x; const mid = (x + end) / 2;\n return <path key={`${edge.from}-${edge.to}`} className={selected && (edge.from === selected.campaignId || edge.to === selected.campaignId) ? styles.selectedEdge : styles.edge}\n d={`M ${x} ${from.y + 40} C ${mid} ${from.y + 40}, ${mid} ${to.y + 40}, ${end} ${to.y + 40}`} />;\n })}\n </svg>\n {graph.columns.map((column, index) => <span key={column.label} className={styles.column} style={{ left: 24 + index * 244 }}>{column.label}</span>)}\n {graph.nodes.map((node, index) => {\n const position = graph.positions.get(node.campaignId)!;\n const dependencies = graph.topology.get(node.campaignId);\n return <div key={node.campaignId}>\n <button type=\"button\" className={styles.node} data-state={node.state} style={{ left: position.x, top: position.y }}\n ref={(element) => { if (element) nodeRefs.current.set(node.campaignId, element); else nodeRefs.current.delete(node.campaignId); }}\n aria-label={`Inspect campaign ${node.campaignId}: ${STATE_LABELS[node.state]}`} aria-pressed={selected?.campaignId === node.campaignId}\n aria-controls={detailId} aria-describedby={`${prefix}-relations-${index}`} onClick={() => selectCampaign(node.campaignId)}>\n <span className={styles.nodeName}>{node.campaignId}</span><span className={styles.nodeState}>{STATE_LABELS[node.state]}</span>\n </button>\n <span id={`${prefix}-relations-${index}`} className={styles.srOnly}>{dependencies\n ? `Direct dependencies: ${dependencies.dependsOn.join(', ') || 'none declared'}. Additional inherited delivery prerequisites: ${dependencies.prerequisites.filter((id) => !dependencies.dependsOn.includes(id)).join(', ') || 'none recorded'}.`\n : 'Dependency information unavailable.'}</span>\n </div>;\n })}\n </div>\n </div>\n <section id={detailId} className={styles.detail} aria-label=\"Selected campaign detail\">\n {selected ? <><span className={styles.detailState} data-state={selected.state}>{STATE_LABELS[selected.state]}</span><h4>{selected.campaignId}</h4>\n {selectedExcluded ? <p className={styles.selectionNote}>The selected campaign is outside the current filters. Its recorded detail remains available.</p> : null}\n <p>{STATE_MEANINGS[selected.state]}</p>\n <dl className={styles.facts}><div><dt>Recorded reason</dt><dd>{selected.reasonCode}</dd></div><div><dt>Campaign-call intent</dt><dd>{selected.attempted ? 'Recorded' : 'Not recorded'}</dd></div></dl>\n <p className={styles.note}>A call intent is not proof of worker execution, model requests or successful evaluation.</p>\n <h5>Direct dependencies</h5>{links ? relations(links.dependsOn, 'None declared for this campaign.') : <p className={styles.note}>Dependency information unavailable.</p>}\n <h5>Additional inherited delivery prerequisites</h5>{links ? relations(inherited, 'None recorded beyond the direct dependencies.') : <p className={styles.note}>Delivery prerequisite information unavailable.</p>}\n <p className={styles.note}>Inherited prerequisites are ancestor delivery gates, not additional declared dependency edges. A state badge alone does not verify the delivery receipt.</p></>\n : <p className={styles.note}>{selectedId ? `Selected campaign ${selectedId} is no longer present in this diagram. No substitute has been selected. Choose another campaign to inspect its evidence.` : 'Select a campaign to inspect its recorded evidence.'}</p>}\n </section>\n </div>\n <p className={styles.legend}>Lines show declared dependencies, from earlier to later layers. Layer placement does not change declared priority or establish execution readiness.</p>\n {graph.edges.length > EDGE_LIMIT ? <p className={styles.note}>Showing {EDGE_LIMIT} of {graph.edges.length} visible dependency lines. Every campaign’s complete relationships remain available in its detail and accessible description.</p> : null}\n </> : <p className={styles.empty}>No campaign outcomes are available in this observation. Inspect a registered controller with recorded campaigns to see its mission topology.</p>}\n </section>;\n}\n\n/** Controller identity remounts selection; same-controller refreshes retain a still-present campaign. */\nexport function UniverseControllerTopology({ data }: { data: UniversePortfolioControllerView }) {\n return <ControllerTopology key={data.controllerId} data={data} />;\n}\n","import type { UniversePortfolioControllerView } from '../../core/web/universe-console-types.js';\n\ntype View = UniversePortfolioControllerView;\nexport interface ControllerObservationChange {\n key: string;\n label: string;\n before: string;\n after: string;\n campaignId?: string;\n}\nexport interface ControllerObservationDelta {\n kind: 'baseline' | 'incomparable' | 'compared';\n notice: string | null;\n clockWarning: boolean;\n changes: ControllerObservationChange[];\n changedCampaigns: number;\n}\n\nconst recorded = (value: string | number | null | undefined): string => value == null ? 'Not recorded' : String(value);\nconst members = (values: readonly string[]): string => [...new Set(values)].sort().join(', ') || 'None recorded';\nconst stateLabel: Record<View['outcomes'][number]['state'], string> = {\n pending: 'Pending', held: 'Held', completed: 'Completed', 'in-flight': 'Unresolved intent',\n};\n\n/** Compares accepted read evidence, never inferring intervening events, execution or liveness. */\nexport function compareControllerObservations(previous: View | null, current: View): ControllerObservationDelta {\n const empty = { clockWarning: false, changes: [], changedCampaigns: 0 };\n if (!previous) return { ...empty, kind: 'baseline', notice: 'First accepted observation. Refresh this controller explicitly to compare recorded evidence.' };\n if (previous.controllerId !== current.controllerId || previous.createdAt !== current.createdAt) {\n return { ...empty, kind: 'incomparable', notice: 'Controller identity or registration timestamp changed. Registration continuity is not established; these observations are not compared.' };\n }\n\n const changes: ControllerObservationChange[] = [];\n const change = (key: string, label: string, before: string, after: string, campaignId?: string) => {\n if (before !== after) changes.push({ key, label, before, after, ...(campaignId ? { campaignId } : {}) });\n };\n const notices: string[] = [];\n if (previous.sourceState !== 'healthy' || current.sourceState !== 'healthy') {\n notices.push('One or both observations contain missing or degraded evidence. Absence from an observation does not establish deletion, completion or execution.');\n }\n if (current.createdAt === null) notices.push('The registration timestamp is not recorded. Registration continuity is not established.');\n if (previous.deadlineAt !== current.deadlineAt) notices.push('The recorded deadline changed. This difference does not establish registration continuity or renew execution authority.');\n change('controller:status', 'Recorded controller status', previous.status, current.status);\n change('controller:health', 'Evidence health', previous.sourceState, current.sourceState);\n change('controller:deadline', 'Recorded deadline', recorded(previous.deadlineAt), recorded(current.deadlineAt));\n change('controller:reasons', 'Evidence reasons', members(previous.reasons), members(current.reasons));\n for (const [field, label] of [\n ['mode', 'Admission mode'], ['sequence', 'Admission sequence'],\n ['requestedAt', 'Admission requested at'], ['acknowledgedAt', 'Admission acknowledged at'],\n ] as const) change(`control:${field}`, label, recorded(previous.control?.[field]), recorded(current.control?.[field]));\n\n const previousOutcomes = new Map(previous.outcomes.map((outcome) => [outcome.campaignId, outcome]));\n const currentOutcomes = new Map(current.outcomes.map((outcome) => [outcome.campaignId, outcome]));\n // Current declared order first, followed by IDs no longer observed; never pair rows by index.\n const campaignIds = [...currentOutcomes.keys(), ...[...previousOutcomes.keys()].filter((id) => !currentOutcomes.has(id))];\n for (const id of campaignIds) {\n const before = previousOutcomes.get(id); const after = currentOutcomes.get(id);\n if (!before || !after) {\n change(`campaign:${id}:presence`, 'Campaign presence', before ? 'Present' : 'Not observed', after ? 'Present' : 'Not observed', id);\n continue;\n }\n change(`campaign:${id}:state`, 'Recorded state', stateLabel[before.state], stateLabel[after.state], id);\n change(`campaign:${id}:reason`, 'Recorded reason', before.reasonCode, after.reasonCode, id);\n change(`campaign:${id}:attempted`, 'Campaign-call intent', before.attempted ? 'Recorded' : 'Not recorded', after.attempted ? 'Recorded' : 'Not recorded', id);\n }\n change('controller:campaign-order', 'Recorded campaign order', previous.outcomes.map((row) => row.campaignId).join(', ') || 'None recorded', current.outcomes.map((row) => row.campaignId).join(', ') || 'None recorded');\n change('controller:topology', 'Dependency evidence', previous.topology ? 'Available' : 'Unavailable', current.topology ? 'Available' : 'Unavailable');\n if (previous.topology && current.topology) {\n const previousTopology = new Map(previous.topology.map((node) => [node.campaignId, node]));\n for (const node of current.topology) {\n const before = previousTopology.get(node.campaignId);\n // Membership already records presence; a missing row is not an empty dependency list.\n if (!before) continue;\n change(`campaign:${node.campaignId}:dependencies`, 'Direct dependencies', members(before.dependsOn), members(node.dependsOn), node.campaignId);\n change(`campaign:${node.campaignId}:prerequisites`, 'Effective prerequisites', members(before.prerequisites), members(node.prerequisites), node.campaignId);\n }\n }\n return { kind: 'compared', notice: notices.join(' ') || null,\n clockWarning: Date.parse(current.observedAt) <= Date.parse(previous.observedAt), changes,\n changedCampaigns: new Set(changes.flatMap((row) => row.campaignId ? [row.campaignId] : [])).size };\n}\n",".changes { margin: var(--space-5) 0; padding: var(--space-4) 0; border-top: 1px solid var(--border-strong); border-bottom: 1px solid var(--border-strong); color: var(--text-primary); font-family: var(--font-ui); min-width: 0; }\n.header { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: var(--space-2) var(--space-4); }\n.header h3 { margin: 0; font-family: var(--font-display); font-size: var(--text-lg-size); letter-spacing: -.025em; }\n.labels { display: flex; flex-wrap: wrap; gap: var(--space-2); }\n.labels > span { border: 1px solid var(--border-strong); padding: 4px 7px; border-radius: var(--radius-xs); color: var(--text-secondary); font-size: var(--text-xs-size); }\n.labels .historical { border-color: var(--status-warning-solid); color: var(--status-warning-fg); }\n.description, .note, .footnote { max-width: 78ch; color: var(--text-secondary); font-size: var(--text-xs-size); line-height: 1.6; }\n.description { margin: var(--space-2) 0 var(--space-3); }\n.times { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3) var(--space-5); margin: 0; }\n.times dt { font-size: var(--text-xs-size); color: var(--text-secondary); margin-bottom: 4px; }\n.times dd { margin: 0; overflow-wrap: anywhere; font-size: var(--text-sm-size); font-variant-numeric: tabular-nums; }\n.warning { padding-left: var(--space-3); border-left: 2px solid var(--status-warning-solid); color: var(--text-secondary); font-size: var(--text-xs-size); line-height: 1.6; max-width: 78ch; margin: var(--space-3) 0; }\n.baseline { font-size: var(--text-sm-size); line-height: 1.6; max-width: 78ch; margin: var(--space-4) 0 0; }\n.counts { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-5); margin: var(--space-4) 0 var(--space-3); }\n.counts > div { display: flex; align-items: baseline; gap: var(--space-2); }\n.counts dt { font-size: var(--text-xs-size); color: var(--text-secondary); }\n.counts dd { font-family: var(--font-display); font-size: var(--text-lg-size); margin: 0; font-variant-numeric: tabular-nums; }\n.disclosure { margin-top: var(--space-3); }\n.disclosure summary { padding: 10px 12px; background: var(--bg-canvas); border-left: 2px solid var(--accent-500); border-radius: 0 var(--radius-xs) var(--radius-xs) 0; font-size: var(--text-sm-size); font-weight: var(--font-weight-medium); cursor: pointer; }\n.disclosure summary:hover { background: var(--bg-hover); }\n.disclosure summary:focus-visible { outline: 2px solid var(--border-focus); outline-offset: 3px; }\n.rows { list-style: none; padding: 0; margin: 0; }\n.row { display: grid; grid-template-columns: minmax(130px, 1fr) minmax(0, 3fr); gap: var(--space-3) var(--space-4); padding: var(--space-3) 12px; border-bottom: 1px solid var(--border-default); }\n.field { min-width: 0; }\n.field h4 { margin: 0; font-size: var(--text-sm-size); font-weight: var(--font-weight-medium); overflow-wrap: anywhere; }\n.field > span { display: block; color: var(--text-secondary); font-size: var(--text-xs-size); margin-top: 4px; overflow-wrap: anywhere; }\n.values { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); margin: 0; }\n.values dt { font-size: var(--text-xs-size); color: var(--text-secondary); margin-bottom: 4px; }\n.values dd { font-size: var(--text-sm-size); margin: 0; overflow-wrap: anywhere; white-space: pre-wrap; line-height: 1.5; }\n.footnote { margin: var(--space-3) 0 0; }\n@media (max-width: 650px) { .row { grid-template-columns: minmax(0, 1fr); } }\n@media (max-width: 420px) { .times, .values { grid-template-columns: minmax(0, 1fr); } }\n","import { useMemo } from 'react';\nimport type { UniversePortfolioControllerView } from '../../core/web/universe-console-types.js';\nimport { compareControllerObservations } from '../data/controller-observation-delta.js';\nimport styles from './UniverseControllerChanges.module.css';\n\ntype Props = {\n previous: UniversePortfolioControllerView | null;\n current: UniversePortfolioControllerView;\n historical: boolean;\n loading: boolean;\n};\n\n/** Compares only the supplied observations; it does not collect an event history. */\nexport function UniverseControllerChanges({ previous, current, historical, loading }: Props) {\n const comparison = useMemo(() => compareControllerObservations(previous, current), [previous, current]);\n return <section className={styles.changes} aria-label=\"Changes between observations\">\n <header className={styles.header}>\n <h3>Changes between observations</h3>\n <div className={styles.labels}>\n {loading ? <span>Refresh in progress</span> : null}\n {historical ? <span className={styles.historical}>Historical observations</span> : null}\n </div>\n </header>\n <p className={styles.description}>Compare the last two accepted responses in this session. This is not an event log or a live activity view.</p>\n <dl className={styles.times} aria-label=\"Compared observation times\">\n <div><dt>Previous observation</dt><dd>{previous ? <time dateTime={previous.observedAt}>{previous.observedAt}</time> : 'Not yet observed'}</dd></div>\n <div><dt>Displayed observation</dt><dd><time dateTime={current.observedAt}>{current.observedAt}</time></dd></div>\n </dl>\n {loading ? <p className={styles.note}>The accepted observations below remain unchanged while the refresh is pending.</p> : null}\n {historical ? <p className={styles.warning}>The latest refresh failed. This comparison uses retained observations, not current evidence.</p> : null}\n {comparison.notice ? <p className={comparison.kind === 'baseline' ? styles.note : styles.warning}>{comparison.notice}</p> : null}\n {comparison.clockWarning ? <p className={styles.warning}>Observation timestamps are equal or move backward. Before and after follow response order, not a verified event timeline.</p> : null}\n {comparison.kind === 'baseline' ? <p className={styles.baseline}>Refresh this controller to compare two observations.</p>\n : comparison.kind === 'incomparable' ? <p className={styles.baseline}>These observations cannot be compared as one controller registration.</p>\n : comparison.changes.length === 0 ? <p className={styles.baseline}>No compared evidence fields changed. Observation times are excluded; this does not prove that no work occurred.</p>\n : <>\n <dl className={styles.counts} aria-label=\"Observation change counts\">\n <div><dt>Changed fields</dt><dd>{comparison.changes.length}</dd></div>\n <div><dt>Campaigns with displayed changes</dt><dd>{comparison.changedCampaigns}</dd></div>\n </dl>\n <details className={styles.disclosure}>\n <summary>Review {comparison.changes.length} changed field{comparison.changes.length === 1 ? '' : 's'}</summary>\n <ul className={styles.rows} aria-label=\"Changed observation fields\">\n {comparison.changes.map((change) => <li key={change.key} className={styles.row}>\n <div className={styles.field}><h4>{change.label}</h4>{change.campaignId ? <span>{change.campaignId}</span> : null}</div>\n <dl className={styles.values}>\n <div><dt>Before</dt><dd>{change.before}</dd></div>\n <div><dt>After</dt><dd>{change.after}</dd></div>\n </dl>\n </li>)}\n </ul>\n </details>\n </>}\n <p className={styles.footnote}>Differences describe returned evidence only. They do not establish worker execution, delivery verification or a production deployment.</p>\n </section>;\n}\n",".inspector { margin-bottom: var(--space-8); padding: var(--space-5); border: 1px solid var(--border-strong); border-radius: var(--radius-md); background: var(--bg-surface); color: var(--text-primary); }\n.header { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-4); margin-bottom: var(--space-5); }\n.header h2 { font-family: var(--font-display); font-size: var(--text-xl-size); letter-spacing: -.025em; }\n.header p, .note, .empty, .field p, .control p { max-width: 78ch; color: var(--text-secondary); font-size: var(--text-sm-size); line-height: 1.6; }\n.readOnly { padding: var(--space-1) var(--space-2); border: 1px solid var(--border-default); border-radius: var(--radius-xs); white-space: nowrap; font-size: var(--text-xs-size); }\n.form { display: flex; flex-wrap: wrap; align-items: flex-start; gap: var(--space-3); }\n.field { flex: 1 1 300px; max-width: 560px; }\n.field label { display: block; margin-bottom: var(--space-2); font-size: var(--text-sm-size); font-weight: var(--font-weight-semibold); }\n.field input { width: 100%; min-height: 42px; padding: var(--space-2) var(--space-3); background: var(--bg-canvas); color: var(--text-primary); border: 1px solid var(--border-strong); border-radius: var(--radius-sm); font-family: var(--font-ui); }\n.field p { margin-top: var(--space-2); }\n.form button { margin-top: 28px; min-height: 42px; padding: var(--space-2) var(--space-4); border: 1px solid var(--border-strong); border-radius: var(--radius-sm); background: var(--bg-surface); color: var(--text-primary); font-weight: var(--font-weight-medium); }\n.form button[type=\"submit\"] { background: var(--accent-600); border-color: var(--accent-600); color: var(--accent-contrast); }\n.form button:disabled { opacity: .6; cursor: wait; }\n.inspector :is(button, input, summary, [tabindex]):focus-visible { outline: 2px solid var(--border-focus); outline-offset: 3px; }\n.identity { margin-top: var(--space-5); font-size: var(--text-lg-size); overflow-wrap: anywhere; }\n.identity code { font-family: var(--font-ui); font-weight: var(--font-weight-semibold); }\n.note, .empty { margin-top: var(--space-3); }\n.warning { margin-top: var(--space-3); padding: var(--space-3); border-left: 3px solid var(--status-warning-solid); background: var(--status-warning-bg); color: var(--status-warning-fg); font-size: var(--text-sm-size); }\n.facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 205px), 1fr)); gap: var(--space-4); margin: var(--space-5) 0; }\n.facts dt { color: var(--text-secondary); font-size: var(--text-xs-size); margin-bottom: var(--space-1); }\n.facts dd { margin: 0; font-size: var(--text-sm-size); overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }\n.control { padding: var(--space-4); border-left: 3px solid var(--accent-500); background: var(--bg-canvas); margin-bottom: var(--space-5); }\n.control h4 { font-family: var(--font-display); font-size: var(--text-lg-size); }\n.sequence { list-style: none; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-5); margin: var(--space-4) 0; }\n.sequence li { display: flex; flex-direction: column; gap: var(--space-1); border-top: 2px solid var(--border-strong); padding-top: var(--space-3); font-size: var(--text-sm-size); overflow-wrap: anywhere; }\n.sequence span, .sequence time { color: var(--text-secondary); }\n.tableWrap { overflow-x: auto; max-width: 100%; }\n.tableWrap table { width: 100%; border-collapse: collapse; font-size: var(--text-sm-size); text-align: left; }\n.tableWrap caption { text-align: left; font-weight: var(--font-weight-semibold); padding: var(--space-3) 0; }\n.tableWrap th, .tableWrap td { border-bottom: 1px solid var(--border-default); padding: var(--space-3); vertical-align: top; overflow-wrap: anywhere; min-width: 115px; }\n.tableWrap thead { color: var(--text-secondary); background: var(--bg-canvas); }\n.reasons { margin-top: var(--space-4); font-size: var(--text-sm-size); overflow-wrap: anywhere; }\n.reasons summary { cursor: pointer; padding: var(--space-2) 0; }\n.reasons ul { padding-left: var(--space-5); }\n@media (max-width: 650px) { .inspector { padding: var(--space-4); } .form button { margin-top: 0; } .field { max-width: none; flex-basis: 100%; } .sequence { grid-template-columns: 1fr; } }\n","import { useEffect, useRef, useState } from 'react';\nimport type { UniversePortfolioControllerView } from '../../core/web/universe-console-types.js';\nimport { isControllerId, readControllerStatus } from '../data/controller-status.js';\nimport { UniverseControllerTopology } from './UniverseControllerTopology.js';\nimport { UniverseControllerChanges } from './UniverseControllerChanges.js';\nimport styles from './UniverseControllerInspector.module.css';\n\nfunction RecordedTime({ value }: { value: string | null }) {\n return value ? <time dateTime={value}>{value.replace('T', ' ').replace('Z', ' UTC')}</time> : <>Not recorded</>;\n}\n\nconst diagnosticStages = {\n 'campaign-execution': 'Campaign execution',\n 'campaign-verification': 'Campaign verification',\n 'delivery-execution': 'Local branch delivery',\n 'delivery-verification': 'Delivery confirmation',\n 'settlement-publication': 'Controller acknowledgement',\n};\n\n/** Named, user-triggered observation. Never polls, discovers controllers or changes their state. */\nexport function UniverseControllerInspector() {\n const [input, setInput] = useState('');\n const [selected, setSelected] = useState<string | null>(null);\n const [observations, setObservations] = useState<{\n current: UniversePortfolioControllerView | null;\n previous: UniversePortfolioControllerView | null;\n }>({ current: null, previous: null });\n const data = observations.current;\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [validation, setValidation] = useState(false);\n const request = useRef<{ sequence: number; abort: AbortController | null }>({ sequence: 0, abort: null });\n useEffect(() => () => { request.current.sequence += 1; request.current.abort?.abort(); }, []);\n\n async function inspect(id: string) {\n if (!isControllerId(id)) { setValidation(true); return; }\n setValidation(false);\n request.current.abort?.abort();\n const sequence = ++request.current.sequence;\n const abort = new AbortController();\n request.current.abort = abort;\n setSelected(id);\n setObservations((previous) => previous.current?.controllerId === id ? previous : { current: null, previous: null });\n setLoading(true);\n setError(null);\n try {\n const next = await readControllerStatus(id, abort.signal);\n // Advance the pair together, only for the newest accepted request. Failed\n // or superseded reads must not become the next comparison baseline.\n if (sequence === request.current.sequence) setObservations((previous) => ({\n current: next, previous: previous.current?.controllerId === id ? previous.current : null,\n }));\n } catch {\n if (sequence === request.current.sequence) setError('Observation failed or returned invalid evidence. Check your connection and refresh this controller.');\n } finally {\n if (sequence === request.current.sequence) setLoading(false);\n }\n }\n\n return <section className={styles.inspector} aria-labelledby=\"controller-inspector-title\">\n <header className={styles.header}>\n <div><h2 id=\"controller-inspector-title\">Controller inspector</h2>\n <p>Read the recorded progress of a named portfolio controller.</p></div>\n <span className={styles.readOnly}>Read-only</span>\n </header>\n <form className={styles.form} onSubmit={(event) => { event.preventDefault(); void inspect(input); }}>\n <div className={styles.field}><label htmlFor=\"controller-id\">Controller ID</label>\n <input id=\"controller-id\" value={input} onChange={(event) => { setInput(event.target.value); setValidation(false); }}\n maxLength={64} autoComplete=\"off\" autoCapitalize=\"none\" spellCheck={false}\n aria-invalid={validation} aria-describedby=\"controller-id-help\" />\n <p id=\"controller-id-help\">Use the ID from your controller manifest: lowercase letters, numbers, hyphens or underscores.</p>\n </div>\n <button type=\"submit\">Inspect controller</button>\n {selected ? <button type=\"button\" disabled={loading} onClick={() => { void inspect(selected); }}>Refresh controller</button> : null}\n </form>\n {validation ? <p role=\"alert\" className={styles.warning}>Enter 1–64 characters, starting with a lowercase letter or number.</p> : null}\n {!selected ? <p className={styles.empty}>Enter an ID to inspect this store. Nothing is queried until you submit.</p> : <div aria-busy={loading}>\n <h3 className={styles.identity}>Evidence for <code>{selected}</code></h3>\n {input !== selected ? <p className={styles.note}>The form has changed. Evidence below still belongs to {selected}; submit to inspect another ID.</p> : null}\n <p role=\"status\" className={styles.note}>{loading ? `Reading ${selected}…${data ? ' Previous observation remains below.' : ''}` :\n error && data ? 'Historical observation — refresh failed. This is not current evidence.' : data ? 'Recorded snapshot. Refresh explicitly to check for changes; this is not a live process view.' : 'No verified observation is available.'}</p>\n {error ? <p role=\"alert\" className={styles.warning}>{error}</p> : null}\n {data ? <>\n <dl className={styles.facts}>\n <div><dt>Evidence health</dt><dd>{data.sourceState}</dd></div>\n <div><dt>Recorded status</dt><dd>{data.status}</dd></div>\n <div><dt>Observed at</dt><dd><RecordedTime value={data.observedAt} /></dd></div>\n <div><dt>Created at</dt><dd><RecordedTime value={data.createdAt} /></dd></div>\n <div><dt>Original deadline</dt><dd><RecordedTime value={data.deadlineAt} /></dd></div>\n </dl>\n <UniverseControllerChanges previous={observations.previous} current={data} historical={Boolean(error)} loading={loading} />\n {data.sourceState === 'missing' ? <p className={styles.warning}>No controller registration was found in this store. Check the ID and selected Universe store.</p> : null}\n {data.sourceState === 'degraded' ? <p className={styles.warning}>Evidence could not be fully verified. This observation does not repair locks, reconcile work or prove a controller is running.</p> : null}\n {data.control ? <section className={styles.control} aria-label=\"Recorded admission control\">\n <h4>{data.control.mode === 'open' ? 'Admission reopened' : data.control.acknowledgedAt ? 'Drain acknowledged' : 'Drain awaiting acknowledgement'}</h4>\n <ol className={styles.sequence}>\n <li><strong>{data.control.mode === 'open' ? 'Resume recorded' : 'Drain recorded'}</strong><span>Sequence {data.control.sequence}</span><RecordedTime value={data.control.requestedAt} /></li>\n <li><strong>{data.control.mode === 'open' ? 'Resume did not start work' : data.control.acknowledgedAt ? 'Acknowledgement recorded' : 'Acknowledgement not recorded'}</strong>\n {data.control.mode === 'drain' ? <RecordedTime value={data.control.acknowledgedAt} /> : <span>Resume does not start work.</span>}</li>\n </ol>\n <p>{data.control.mode === 'drain' ? 'Drain blocks new dispatch intents; already-admitted work can continue. An unresolved intent prevents acknowledgement; absence of a visible worker proves neither completion nor failure.' : 'Execution requires a separate run invocation. Admission state does not renew the original deadline or establish a running controller.'}</p>\n </section> : <p className={styles.note}>No admission-control record. This does not establish process liveness.</p>}\n <UniverseControllerTopology key={data.controllerId} data={data} />\n {data.outcomes.length ? <div className={styles.tableWrap} role=\"region\" aria-label=\"Recorded campaign outcomes\" tabIndex={0}>\n <table><caption>Recorded campaign outcomes</caption><thead><tr><th scope=\"col\">Campaign</th><th scope=\"col\">State</th><th scope=\"col\">Campaign attempted</th><th scope=\"col\">Reason</th></tr></thead>\n <tbody>{data.outcomes.map((row) => <tr key={row.campaignId}><th scope=\"row\">{row.campaignId}</th><td>{row.state}</td><td>{row.attempted ? 'Yes' : 'No'}</td><td>{row.reasonCode}</td></tr>)}</tbody></table>\n </div> : <p className={styles.note}>No campaign outcomes available in this observation.</p>}\n <p className={styles.note}>“In-flight” means an unresolved durable intent, not proof of a live worker. Campaign attempted records a call intent, not proof of worker execution or successful evaluation. A dispatch-not-started outcome remains held and does not authorize a retry.</p>\n {data.diagnostics?.length ? <section aria-label=\"Recorded handoff diagnostics\">\n <h4>Recorded handoff diagnostics</h4>\n <p className={styles.note}>These are historical failure records, not live errors. Check the campaign outcome above for its current recorded state. A diagnostic never authorizes retrying a worker or publishing a branch.</p>\n <div className={styles.tableWrap} role=\"region\" aria-label=\"Handoff diagnostic details\" tabIndex={0}>\n <table><caption>Where the handoff stopped</caption><thead><tr><th scope=\"col\">Campaign</th><th scope=\"col\">Stage</th><th scope=\"col\">Failure code</th><th scope=\"col\">Recorded at</th></tr></thead>\n <tbody>{data.diagnostics.map(row => <tr key={row.campaignId}><th scope=\"row\">{row.campaignId}</th>\n <td>{diagnosticStages[row.phase]}</td><td>{row.code}</td><td><RecordedTime value={row.at} /></td></tr>)}</tbody>\n </table>\n </div>\n <p className={styles.note}>Inspect the pinned campaign and delivery receipts before recovery. Completed outcomes can retain an earlier diagnostic; raw error text and private intent digests are omitted here.</p>\n </section> : null}\n {data.reasons.length ? <details className={styles.reasons}><summary>Evidence reasons ({data.reasons.length})</summary><ul>{data.reasons.map((reason, index) => <li key={`${reason}-${index}`}>{reason}</li>)}</ul></details> : null}\n </> : null}\n </div>}\n </section>;\n}\n",".shell { min-height: 100%; }\n.scopeBar { display: flex; align-items: center; justify-content: space-between; gap: var(--space-5); padding: var(--space-4) max(var(--space-6), calc((100vw - 1320px) / 2)); border-bottom: 1px solid var(--border-default); background: var(--bg-surface); }\n.scope { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-2) var(--space-3); min-width: 0; }\n.brand { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-3); min-width: 0; }\n.brand strong { font-family: var(--font-display); font-size: var(--text-xl-size); line-height: var(--text-xl-line); font-weight: var(--font-weight-semibold); letter-spacing: -.035em; }\n.brandMark { flex-shrink: 0; width: var(--space-8); height: var(--space-8); color: var(--text-primary); } /* Ashlr.AI keystone A */\n.workspace { padding-left: var(--space-3); border-left: 1px solid var(--border-strong); color: var(--text-secondary); font-size: var(--text-sm-size); }\n.badge { padding: var(--space-1) var(--space-2); border: 1px solid var(--border-default); border-radius: var(--radius-xs); color: var(--text-secondary); background: var(--bg-canvas); font-size: var(--text-xs-size); white-space: nowrap; }\n.store { min-width: 0; font-size: var(--text-xs-size); color: var(--text-secondary); }\n.store[open] { flex-basis: 100%; }\n.store summary { cursor: pointer; padding: var(--space-2) 0; min-height: 32px; }\n.root { display: block; max-width: 72ch; padding: var(--space-3); background: var(--bg-surface-raised); border: 1px solid var(--border-strong); border-radius: var(--radius-sm); overflow-wrap: anywhere; font-size: var(--text-xs-size); color: var(--text-primary); }\n.actions { display: flex; flex-shrink: 0; gap: var(--space-2); }\n.actions button, .notice button { min-height: 36px; padding: var(--space-2) var(--space-3); border: 1px solid var(--border-default); border-radius: var(--radius-sm); background: var(--bg-surface); font-size: var(--text-sm-size); }\n.actions button:hover, .notice button:hover { background: var(--bg-hover); }\n.main { max-width: 1368px; margin: auto; padding: var(--space-6); }\n.explanation { color: var(--text-secondary); font-size: var(--text-sm-size); margin-bottom: var(--space-6); max-width: 85ch; }\n.notice { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-3); padding: var(--space-5); border: 1px solid var(--status-warning-solid); border-radius: var(--radius-md); background: var(--status-warning-bg); }\n.notice h1 { font-size: var(--text-xl-size); }\n.checking { padding: var(--space-8); }\n@media (max-width: 1000px) { .brand { flex-basis: 100%; } }\n@media (max-width: 700px) {\n .scopeBar { flex-direction: column; align-items: stretch; gap: var(--space-3); padding: var(--space-4); }\n .actions { justify-content: flex-end; }\n .main { padding: var(--space-5) var(--space-4); }\n}\n","import { useEffect } from 'react';\nimport { SessionGate } from '../components/auth/SessionGate.js';\nimport { clearReadSession, markCheckComplete } from '../data/auth-store.js';\nimport { getQuerySnapshot, runQuery } from '../data/cache.js';\nimport { apiGet } from '../data/client.js';\nimport { useAuthPhase, useQuery, useRefetch, useTheme } from '../data/hooks.js';\nimport { UniverseRootContext } from '../routes/universe/UniverseScope.js';\nimport { UniverseView } from '../routes/universe/UniverseView.js';\nimport { SkipToContent } from './SkipToContent.js';\nimport { UniverseControllerInspector } from './UniverseControllerInspector.js';\nimport styles from './UniverseConsoleApp.module.css';\nimport '../design/global.css';\n\ninterface ConsoleScope {\n schemaVersion: 1;\n mode: 'universe';\n root: string;\n readOnly: true;\n}\n\nconst scopeQuery = {\n key: 'universe-console-scope',\n async fetch(): Promise<ConsoleScope> {\n const scope = await apiGet<ConsoleScope>('/api/universe/console');\n if (scope?.schemaVersion !== 1 || scope.mode !== 'universe' || scope.readOnly !== true ||\n typeof scope.root !== 'string' || !/^(?:\\/|[a-zA-Z]:[\\\\/]|\\\\\\\\)/.test(scope.root) ||\n [...scope.root].some((character) => character.charCodeAt(0) < 32 ||\n character.charCodeAt(0) >= 127 && character.charCodeAt(0) <= 159)) {\n throw new Error('The server did not establish an explicit read-only Universe scope.');\n }\n return scope;\n },\n};\n\nfunction ScopedWorkspace() {\n const scope = useQuery(scopeQuery);\n const retry = useRefetch(scopeQuery);\n const theme = useTheme();\n return <>\n <SkipToContent />\n <div className={styles.shell}>\n <header className={styles.scopeBar}>\n <div className={styles.scope}>\n <div className={styles.brand}>\n <svg className={styles.brandMark} viewBox=\"54 67 146 124\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M106 76H123V115H100L113 154L99 179H72L59 156Z M130 76H147L194 156L181 179H154L140 154L153 115H130Z\" /><path fill=\"#2563EB\" d=\"M110 121H143L133 152H120Z\" />\n </svg><strong>Ashlrverse</strong><span className={styles.workspace}>Experiments</span>\n </div>\n <span className={styles.badge}>Read-only observation</span>\n {scope.data ? <details className={styles.store}><summary>Universe store</summary>\n <code aria-label=\"Universe store\" className={styles.root}>{scope.data.root}</code></details> : null}\n </div>\n <div className={styles.actions}>\n <button type=\"button\" onClick={theme.cycle}>Theme: {theme.theme}</button>\n <button type=\"button\" onClick={() => { void clearReadSession(); }}>Disconnect</button>\n </div>\n </header>\n <main id=\"main-content\" tabIndex={-1} className={styles.main}>\n {scope.status === 'error' ? <section role=\"alert\" className={styles.notice}>\n <h1>Console scope unavailable</h1>\n <p>{scope.error?.message} No project data is shown until the scope can be checked.</p>\n <button type=\"button\" onClick={retry}>Retry scope check</button>\n </section> : scope.data ? <UniverseRootContext.Provider value={scope.data.root}>\n <p className={styles.explanation}>This console observes the selected Universe store. Run campaigns from your terminal; opening this page does not start work.</p>\n <UniverseControllerInspector key={scope.data.root} />\n <UniverseView />\n </UniverseRootContext.Provider> : <p role=\"status\">Checking the selected Universe store…</p>}\n </main>\n </div>\n </>;\n}\n\n/** Never mounts the general Hub shell, snapshot probe, or dispatch controls. */\nexport function UniverseConsoleApp() {\n const phase = useAuthPhase();\n useEffect(() => {\n if (phase !== 'checking') return;\n let cancelled = false;\n void runQuery(scopeQuery.key, scopeQuery.fetch).then(() => {\n if (!cancelled) markCheckComplete(getQuerySnapshot(scopeQuery.key).status === 'success');\n });\n return () => { cancelled = true; };\n }, [phase]);\n\n if (phase === 'checking') return <p className={styles.checking} role=\"status\">Checking for an existing console session…</p>;\n if (phase === 'unauthenticated') return <SessionGate\n heading=\"Connect to Ashlrverse\"\n command=\"ashlr universe console --root /absolute/universe-store\"\n />;\n return <ScopedWorkspace />;\n}\n"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t,s as n}from"./index-_izD07R9.js";import{i as r,l as i,u as a}from"./global-CYfRwH6t.js";import{n as o}from"./StatusBadge-zR7YgIa8.js";import{S as s,x as c}from"./queries-C0Bs3TOo.js";import{t as l}from"./RefreshIndicator-BJoefKSa.js";import{i as u}from"./SkipToContent-B0GAKhYQ.js";var d=e(n(),1),f=new Map;function p(e){let t=document.activeElement,n=t instanceof HTMLElement&&e.contains(t)?t.getAttribute(`data-focus-key`):null,r=new Map;return e.querySelectorAll(`details[data-state-key]`).forEach(e=>{let t=e.getAttribute(`data-state-key`);t&&r.set(t,e.open)}),{scrollTop:e.scrollTop,focusKey:n,details:r}}function m(e,t){if(e.querySelectorAll(`details[data-state-key]`).forEach(e=>{let n=e.getAttribute(`data-state-key`);n&&t.details.has(n)&&(e.open=t.details.get(n))}),e.scrollTop=t.scrollTop,!t.focusKey)return;let n=e.querySelector(`[data-focus-key="${CSS.escape(t.focusKey)}"]`);if(n){try{n.focus({preventScroll:!0})}catch{n.focus()}e.scrollTop=t.scrollTop}}function h(e,t){let n=(0,d.useRef)(e);n.current=e,(0,d.useLayoutEffect)(()=>{let n=t.current;if(!n)return;let r=f.get(e);r&&m(n,r)},[e]),(0,d.useEffect)(()=>{let e=t.current;if(!e)return;let r=0;function i(){cancelAnimationFrame(r),r=requestAnimationFrame(()=>{e&&f.set(n.current,p(e))})}return e.addEventListener(`scroll`,i,{passive:!0}),document.addEventListener(`focusout`,i),document.addEventListener(`toggle`,i,!0),()=>{cancelAnimationFrame(r),e.removeEventListener(`scroll`,i),document.removeEventListener(`focusout`,i),document.removeEventListener(`toggle`,i,!0),f.set(n.current,p(e))}},[t])}var g={view:`_view_4xn1y_1`,header:`_header_4xn1y_9`,sectionHeading:`_sectionHeading_4xn1y_9`,actions:`_actions_4xn1y_11`,refresh:`_refresh_4xn1y_12`,selectLabel:`_selectLabel_4xn1y_12`,freshness:`_freshness_4xn1y_17`,objective:`_objective_4xn1y_18`,objectiveFacts:`_objectiveFacts_4xn1y_20`,measurements:`_measurements_4xn1y_21`,resources:`_resources_4xn1y_21`,artifact:`_artifact_4xn1y_21`,archive:`_archive_4xn1y_23`,comparison:`_comparison_4xn1y_23`,campaign:`_campaign_4xn1y_24`,campaignBody:`_campaignBody_4xn1y_25`,campaignHeading:`_campaignHeading_4xn1y_26`,campaignFacts:`_campaignFacts_4xn1y_27`,campaignNote:`_campaignNote_4xn1y_30`,command:`_command_4xn1y_31`,delivery:`_delivery_4xn1y_32`,deliveryFacts:`_deliveryFacts_4xn1y_37`,archiveCount:`_archiveCount_4xn1y_42`,tableScroll:`_tableScroll_4xn1y_43`,archiveTable:`_archiveTable_4xn1y_44`,nicheFilled:`_nicheFilled_4xn1y_50`,nicheEmpty:`_nicheEmpty_4xn1y_50`,eliteButton:`_eliteButton_4xn1y_53`,muted:`_muted_4xn1y_54`,runMeta:`_runMeta_4xn1y_55`,comparisonBody:`_comparisonBody_4xn1y_56`,trialList:`_trialList_4xn1y_57`,trialButton:`_trialButton_4xn1y_58`,trialTitle:`_trialTitle_4xn1y_61`,trialSubline:`_trialSubline_4xn1y_61`,trialDetail:`_trialDetail_4xn1y_65`,detailHeading:`_detailHeading_4xn1y_66`,hypothesis:`_hypothesis_4xn1y_67`,lineage:`_lineage_4xn1y_68`,generation:`_generation_4xn1y_69`,reason:`_reason_4xn1y_70`,currentElite:`_currentElite_4xn1y_71`,generationEvidence:`_generationEvidence_4xn1y_74`,diagnosticCodes:`_diagnosticCodes_4xn1y_78`,notice:`_notice_4xn1y_86`,running:`_running_4xn1y_88`,failure:`_failure_4xn1y_89`,failureEvidence:`_failureEvidence_4xn1y_91`,empty:`_empty_4xn1y_92`,noTrials:`_noTrials_4xn1y_96`},_=(0,d.createContext)(null);function v(e){return`'${e.replaceAll(`'`,`'\\''`)}'`}function y(e,t){return t===null?e:e.split(`
2
+ `).map(e=>`${e} --root ${v(t)}`).join(`
3
+ `)}function b(){let e=(0,d.useContext)(_);return(0,d.useCallback)(t=>y(t,e),[e])}var x=t(),S=e=>e.startsWith(`~/`)?`"$HOME"/${v(e.slice(2))}`:v(e),C=e=>e===`[REDACTED]`?`Hidden by the console privacy filter`:e;function w({summary:e,report:t,onInspectTrial:n}){let r=t?.sourceState===`healthy`,i=b(),a=t?.sourceState===`degraded`,o=t?.deliveries??[];return(0,x.jsxs)(`section`,{className:g.archive,"aria-label":`Repository delivery`,children:[(0,x.jsx)(`div`,{className:g.sectionHeading,children:(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`h2`,{children:`Repository delivery`}),(0,x.jsx)(`p`,{children:`Turn a retained artifact into an exact local Git branch. Your current checkout stays untouched.`})]})}),(0,x.jsxs)(`div`,{className:g.campaignBody,children:[a?(0,x.jsxs)(`div`,{className:g.notice,role:`status`,children:[(0,x.jsx)(`strong`,{children:`Delivery evidence could not be verified.`}),(0,x.jsx)(`p`,{children:t.reasons.join(`; `)||`Refresh after restoring the recorded repository and receipt.`})]}):null,o.length?o.map(t=>(0,x.jsxs)(`details`,{className:g.delivery,children:[(0,x.jsxs)(`summary`,{children:[(0,x.jsx)(`code`,{children:t.branch}),(0,x.jsx)(`span`,{children:r?t.status===`delivered`?`Local branch verified`:t.status===`unchanged`?`No change; no branch created`:`Pending; not confirmed delivered`:`Unverified record (${t.status})`})]}),(0,x.jsxs)(`dl`,{className:g.deliveryFacts,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Repository`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:t.repo})})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Commit`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:t.commit})})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Pinned base`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:t.baseCommit})})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Artifact digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:C(t.artifactDigest)})})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Comparator digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:C(t.comparatorDigest)})})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Changed files`}),(0,x.jsx)(`dd`,{children:t.changedFiles.length?t.changedFiles.map(e=>(0,x.jsxs)(`code`,{children:[e,(0,x.jsx)(`br`,{})]},e)):`None`})]})]}),e.runs.some(e=>e.id===t.runId&&e.trials.some(e=>e.id===t.trialId))?(0,x.jsx)(`button`,{type:`button`,className:g.eliteButton,onClick:()=>n(t.runId,t.trialId),children:`Inspect source trial`}):(0,x.jsx)(`p`,{children:`Source trial unavailable in the current history.`}),r&&t.status===`delivered`?(0,x.jsx)(`pre`,{className:g.command,children:(0,x.jsx)(`code`,{children:`git -C ${S(t.repo)} show --stat ${v(t.commit)}`})}):null,t.artifactDigest===`[REDACTED]`||t.comparatorDigest===`[REDACTED]`?(0,x.jsxs)(`p`,{children:[`Read exact identities locally with `,(0,x.jsx)(`code`,{children:i(`ashlr universe deliveries ${v(e.manifest.id)} --json`)}),`.`]}):null]},t.id)):(0,x.jsx)(`p`,{children:a?`No delivery can be confirmed from this read.`:`No local branches delivered yet.`}),e.sourceState===`healthy`&&!a&&e.elites.length?(0,x.jsxs)(`details`,{className:g.artifact,children:[(0,x.jsx)(`summary`,{children:`Deliver a retained artifact from your terminal`}),(0,x.jsxs)(`p`,{children:[`Choose a new branch name. Each command writes only a new local branch in `,(0,x.jsx)(`code`,{children:e.manifest.seed.repo}),`; it does not switch branches, merge, or push.`]}),e.elites.map(t=>(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`p`,{children:[t.niche,`: `,t.variantId]}),(0,x.jsx)(`pre`,{className:g.command,children:(0,x.jsx)(`code`,{children:i(`ashlr universe deliver ${v(e.manifest.id)} --trial ${v(t.trialId)} --branch ${v(`codex/universe-${e.manifest.id}-${t.trialId.slice(0,8)}`)} --json`)})})]},t.trialId))]}):null,(0,x.jsx)(`p`,{children:`Verification binds the branch to the recorded evaluator result. It is not a fresh evaluation, a merge, or a production deployment. Refresh to inspect delivery changes made in your terminal.`})]})]})}var T=25e3,E=1e5;function ee(e,t){let n={nodeIds:[],edgeIds:[],complete:!0,issues:[]},r=(e,t)=>{n.complete=!1,n.issues.push({code:e,message:t,nodeIds:[]})},i=t.maxDepth??64;if(!Number.isSafeInteger(i)||i<1||i>64||![`ancestors`,`descendants`].includes(t.direction))return r(`invalid-query`,`Traversal requires a direction and depth from 1 to 64.`),n;if(e.nodes.length>T||e.edges.length>E)return r(`graph-limit`,`Graph exceeds the traversal envelope.`),n;let a=new Set(e.nodes.map(e=>e.id));if(a.size!==e.nodes.length)return r(`duplicate-node`,`Graph contains duplicated node identities.`),n;if(!a.has(t.nodeId))return r(`invalid-node`,`The requested graph node is unavailable.`),n;let o=new Map,s=new Map,c=new Map([...a].map(e=>[e,0])),l=new Set;for(let i of e.edges){if(!a.has(i.from)||!a.has(i.to)||l.has(i.id))return r(`invalid-edge`,`Graph contains an unresolved or duplicated edge.`),n;l.add(i.id);let e=s.get(i.from)??[];e.push(i.to),s.set(i.from,e),c.set(i.to,c.get(i.to)+1);let u=t.direction===`ancestors`?i.to:i.from,d=o.get(u)??[];d.push(i),o.set(u,d)}let u=[...c].filter(([,e])=>e===0).map(([e])=>e);for(let e=0;e<u.length;e++)for(let t of s.get(u[e])??[])c.set(t,c.get(t)-1),c.get(t)===0&&u.push(t);if(u.length!==a.size)return r(`cycle`,`Graph contains a dependency cycle.`),n;let d=new Set([t.nodeId]),f=[t.nodeId];for(let e=0;f.length&&e<i;e++){let e=[];for(let n of f)for(let r of o.get(n)??[]){let n=t.direction===`ancestors`?r.from:r.to;d.has(n)||(d.add(n),e.push(n))}f=e}return f.some(e=>(o.get(e)??[]).some(e=>!d.has(t.direction===`ancestors`?e.from:e.to)))&&r(`depth-limit`,`Additional related nodes exist beyond the selected depth.`),(!e.complete||e.sourceState!==`healthy`)&&r(`source-incomplete`,`Traversal uses incomplete or degraded source evidence.`),n.nodeIds=[...d].sort(),n.edgeIds=e.edges.filter(e=>d.has(e.from)&&d.has(e.to)).map(e=>e.id).sort(),n}var D={section:`_section_mmzzl_1`,header:`_header_mmzzl_2`,button:`_button_mmzzl_5`,filters:`_filters_mmzzl_5`,body:`_body_mmzzl_10`,toolbar:`_toolbar_mmzzl_11`,facts:`_facts_mmzzl_11`,notice:`_notice_mmzzl_14`,note:`_note_mmzzl_18`,diagram:`_diagram_mmzzl_19`,edge:`_edge_mmzzl_25`,feedback:`_feedback_mmzzl_26`,arrow:`_arrow_mmzzl_27`,nodeBox:`_nodeBox_mmzzl_28`,selectedBox:`_selectedBox_mmzzl_29`,nodeLabel:`_nodeLabel_mmzzl_30`,nodeKind:`_nodeKind_mmzzl_31`,columnLabel:`_columnLabel_mmzzl_31`,legend:`_legend_mmzzl_40`,feedbackLegend:`_feedbackLegend_mmzzl_42`,workspace:`_workspace_mmzzl_43`,nodeList:`_nodeList_mmzzl_44`,nodeButton:`_nodeButton_mmzzl_45`,inspector:`_inspector_mmzzl_51`,properties:`_properties_mmzzl_53`,relations:`_relations_mmzzl_56`,link:`_link_mmzzl_57`,findings:`_findings_mmzzl_58`,findingLinks:`_findingLinks_mmzzl_61`,exact:`_exact_mmzzl_62`,pagination:`_pagination_mmzzl_63`},O=60,k=240,A={universe:`Universe`,seed:`Seed`,comparator:`Evaluator`,campaign:`Campaign`,reservation:`Reservation`,run:`Run`,trial:`Trial`,artifact:`Artifact`,delivery:`Delivery`},j={contains:`Contains`,"seed-parent":`Seed parent`,parent:`Candidate parent`,feedback:`Evaluator feedback`,evaluates:`Evaluates`,produced:`Produced artifact`,reserved:`Reserved work`,"executed-as":`Executed as`,"delivered-as":`Delivered as`},M=e=>e.evidence===`verified-local-delivery`?`Local delivery checked`:e.evidence===`recorded`?`Recorded evidence`:e.evidence===`pending`?`Pending evidence`:`Evidence unavailable`,N=(e,t)=>e.length>t?`${e.slice(0,t-1)}…`:e;function te({nodes:e,edges:t,selectedId:n,select:r}){let i=`universe-arrow-${(0,d.useId)().replaceAll(`:`,``)}`,a=[...new Set(e.map(e=>e.generation??0))].sort((e,t)=>e-t),o=new Map,s=1;return a.forEach((t,n)=>{let r=e.filter(e=>(e.generation??0)===t);s=Math.max(s,r.length),r.forEach((e,t)=>o.set(e.id,{x:24+n*225,y:32+t*76}))}),(0,x.jsx)(`div`,{className:D.diagram,children:(0,x.jsxs)(`svg`,{width:Math.max(260,a.length*225+24),height:s*76+40,role:`group`,"aria-label":`Evidence relationship diagram`,children:[(0,x.jsx)(`defs`,{children:(0,x.jsx)(`marker`,{id:i,markerWidth:`8`,markerHeight:`8`,refX:`7`,refY:`3`,orient:`auto`,children:(0,x.jsx)(`path`,{d:`M0,0 L0,6 L8,3 z`,className:D.arrow})})}),a.map((e,t)=>(0,x.jsx)(`text`,{x:24+t*225,y:18,className:D.columnLabel,children:e===0?`Experiment context`:`Generation ${e}`},e)),t.map(e=>{let t=o.get(e.from),n=o.get(e.to);if(!t||!n)return null;let r=t.x===n.x,a=t.x+180,s=r?n.x+180:n.x,c=r?a+28:(a+s)/2;return(0,x.jsx)(`path`,{d:`M ${a} ${t.y+27} C ${c} ${t.y+27}, ${c} ${n.y+27}, ${s} ${n.y+27}`,fill:`none`,markerEnd:`url(#${i})`,className:`${D.edge} ${e.kind===`feedback`?D.feedback:``}`,children:(0,x.jsx)(`title`,{children:j[e.kind]})},e.id)}),e.map(e=>{let t=o.get(e.id);return(0,x.jsxs)(`g`,{"data-kind":e.kind,transform:`translate(${t.x},${t.y})`,role:`button`,tabIndex:0,"aria-label":`Select ${A[e.kind].toLowerCase()}: ${e.label}`,"aria-pressed":e.id===n,onClick:()=>r(e.id),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),r(e.id))},children:[(0,x.jsx)(`title`,{children:`${e.label}: ${e.state}. ${M(e)}`}),(0,x.jsx)(`rect`,{width:`180`,height:`54`,rx:`5`,className:e.id===n?D.selectedBox:D.nodeBox}),(0,x.jsx)(`text`,{x:`10`,y:`20`,className:D.nodeLabel,children:N(e.label,24)}),(0,x.jsxs)(`text`,{x:`10`,y:`39`,className:D.nodeKind,children:[A[e.kind],` · `,N(e.state,18)]})]},e.id)})]})})}function P({node:e,graph:t,byId:n,select:r,onInspectTrial:i}){let[a,o]=(0,d.useState)(null),s=b(),c=t.edges.filter(t=>t.from===e.id||t.to===e.id);return(0,x.jsxs)(`section`,{className:D.inspector,"aria-label":`Selected graph evidence`,children:[(0,x.jsx)(`h3`,{children:e.label}),(0,x.jsxs)(`dl`,{className:D.properties,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Entity`}),(0,x.jsx)(`dd`,{children:A[e.kind]})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`State`}),(0,x.jsx)(`dd`,{children:e.state})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Evidence`}),(0,x.jsx)(`dd`,{children:M(e)})]}),e.generation===void 0?null:(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Generation`}),(0,x.jsx)(`dd`,{children:e.generation})]}),e.niche?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Niche`}),(0,x.jsx)(`dd`,{children:e.niche})]}):null,e.score===void 0?null:(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Evaluator score`}),(0,x.jsx)(`dd`,{children:e.score===null?`Unavailable`:e.score})]}),e.currentElite?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Archive`}),(0,x.jsx)(`dd`,{children:`Current local elite`})]}):null,e.admitted&&!e.currentElite?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Archive`}),(0,x.jsx)(`dd`,{children:`Historical admission; not the current elite`})]}):null]}),(0,x.jsx)(`p`,{className:D.note,children:`The graph observes saved evidence. It does not rerun evaluation or establish accepted production value.`}),e.runId&&e.trialId?(0,x.jsx)(`button`,{type:`button`,className:D.link,onClick:()=>o(i(e.runId,e.trialId)?null:e.id),children:`Inspect exact trial evidence`}):null,a===e.id?(0,x.jsx)(`p`,{className:D.notice,role:`status`,children:`This exact trial is not present in the current overview. Refresh Universe before inspecting it; no other trial was selected.`}):null,(0,x.jsx)(`h4`,{children:`Direct relationships`}),c.length?(0,x.jsx)(`ul`,{className:D.relations,children:c.slice(0,O).map(t=>{let i=t.to===e.id,a=n.get(i?t.from:t.to);return(0,x.jsxs)(`li`,{children:[j[t.kind],` `,i?`from`:`to`,` `,a?(0,x.jsx)(`button`,{type:`button`,className:D.link,onClick:()=>r(a.id),children:a.label}):(0,x.jsx)(`span`,{children:`unavailable source`})]},t.id)})}):(0,x.jsx)(`p`,{className:D.note,children:`No direct relationships in this observation.`}),c.length>O?(0,x.jsxs)(`p`,{className:D.note,children:[c.length-O,` additional relationships omitted from this panel. Inspect the CLI graph for the full observation.`]}):null,(0,x.jsxs)(`details`,{className:D.exact,children:[(0,x.jsx)(`summary`,{children:`Record identity`}),(0,x.jsxs)(`dl`,{className:D.properties,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Graph node`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:e.id})})]}),e.runId?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Run`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:e.runId})})]}):null,e.trialId?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Trial`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:e.trialId})})]}):null,e.variantId?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Variant`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:e.variantId})})]}):null,e.campaignId?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Campaign`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:e.campaignId})})]}):null,e.branch?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Local branch`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:e.branch})})]}):null,e.commit?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Commit`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:e.commit})})]}):null,e.manifestDigest?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Manifest digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:e.manifestDigest===`[REDACTED]`?`Hidden by the console privacy filter`:e.manifestDigest})})]}):null,e.comparatorDigest?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Comparator digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:e.comparatorDigest===`[REDACTED]`?`Hidden by the console privacy filter`:e.comparatorDigest})})]}):null,e.artifactDigest?(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Artifact digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:e.artifactDigest===`[REDACTED]`?`Hidden by the console privacy filter`:e.artifactDigest})})]}):null]}),(0,x.jsxs)(`p`,{children:[`Read exact local provenance with `,(0,x.jsx)(`code`,{children:s(`ashlr universe graph ${t.universeId} --json`)}),`.`]})]})]})}function F({graph:e,onInspectTrial:t}){let[n,r]=(0,d.useState)(null),[i,a]=(0,d.useState)(`all`),[o,s]=(0,d.useState)(`all`),[c,l]=(0,d.useState)(`all`),[u,f]=(0,d.useState)(2),[p,m]=(0,d.useState)(null),h=(0,d.useMemo)(()=>new Map(e.nodes.map(e=>[e.id,e])),[e.nodes]),g=n===null?e.nodes.find(e=>e.kind===`trial`&&e.currentElite)??e.nodes.find(e=>e.kind===`trial`)??e.nodes[0]:h.get(n),_=(0,d.useMemo)(()=>g&&c!==`all`?ee(e,{nodeId:g.id,direction:c,maxDepth:u}):null,[e,g,c,u]),v=(0,d.useMemo)(()=>_?new Set(_.nodeIds):null,[_]),y=e.nodes.filter(e=>(!v||v.has(e.id))&&(i===`all`||e.kind===i)&&(o===`all`||e.niche===o)),b=Math.max(1,Math.ceil(y.length/O)),S=Math.floor(Math.max(0,y.findIndex(e=>e.id===g?.id))/O),C=Math.min(p??S,b-1),w=y.slice(C*O,(C+1)*O),T=new Set(w.map(e=>e.id)),E=e.edges.filter(e=>T.has(e.from)&&T.has(e.to)),j=e=>{r(e),a(`all`),s(`all`),m(null)},M=[...new Set(e.nodes.flatMap(e=>e.niche?[e.niche]:[]))].sort();return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{className:D.facts,children:[(0,x.jsxs)(`span`,{children:[`Source: `,e.sourceState]}),(0,x.jsx)(`span`,{children:e.complete?`Source graph complete`:`Source graph incomplete`}),(0,x.jsxs)(`span`,{children:[e.counts.trials,` trial records included`]}),(0,x.jsxs)(`span`,{children:[e.counts.verifiedDeliveries,` checked local deliveries included`]})]}),!e.complete||e.sourceState===`degraded`?(0,x.jsx)(`p`,{className:D.notice,role:`status`,children:`Graph evidence is incomplete. Missing relationships are not proof that no work or delivery occurred.`}):null,e.issues.length?(0,x.jsxs)(`details`,{className:D.note,children:[(0,x.jsxs)(`summary`,{children:[`Source issues (`,e.issues.length,`)`]}),(0,x.jsx)(`ul`,{children:e.issues.map((e,t)=>(0,x.jsxs)(`li`,{children:[(0,x.jsx)(`code`,{children:e.code}),`: `,e.message]},`${e.code}-${t}`))})]}):null,e.findings.length?(0,x.jsxs)(`section`,{className:D.findings,"aria-label":`Graph observations`,children:[(0,x.jsx)(`h3`,{children:`Useful observations`}),(0,x.jsx)(`ul`,{children:e.findings.slice(0,O).map(e=>(0,x.jsxs)(`li`,{children:[(0,x.jsx)(`strong`,{children:e.kind===`repeated-output`?`Repeated artifact output`:`Current elite without recorded delivery`}),e.kind===`repeated-output`?(0,x.jsxs)(`p`,{children:[e.trialCount,` trials share a recorded artifact digest. `,e.usageComplete?`Reported generation tokens: ${e.reportedTokens??`unavailable`}.`:`Total generation tokens unavailable; recorded subtotal: ${e.recordedTokens}.`]}):(0,x.jsx)(`p`,{children:`No verified delivery is linked to this current local elite in the observation.`}),(0,x.jsx)(`div`,{className:D.findingLinks,children:e.nodeIds.slice(0,8).map(e=>{let t=h.get(e);return t?(0,x.jsxs)(`button`,{type:`button`,className:D.link,onClick:()=>j(e),children:[`Inspect `,t.label]},e):null})}),e.nodeIds.length>8?(0,x.jsxs)(`p`,{children:[e.nodeIds.length-8,` additional nodes in this group; inspect CLI JSON for all identities.`]}):null]},e.id))}),(0,x.jsx)(`p`,{children:`These are evidence patterns, not cost savings, automatic delivery instructions or proof of business value.`}),e.findings.length>O?(0,x.jsxs)(`p`,{children:[e.findings.length-O,` additional observations omitted from this panel.`]}):null]}):null,e.nodes.length?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{className:D.filters,children:[(0,x.jsxs)(`label`,{children:[`Entity type`,(0,x.jsxs)(`select`,{value:i,onChange:e=>{a(e.target.value),m(null)},children:[(0,x.jsx)(`option`,{value:`all`,children:`All entity types`}),Object.entries(A).map(([e,t])=>(0,x.jsx)(`option`,{value:e,children:t},e))]})]}),(0,x.jsxs)(`label`,{children:[`Niche`,(0,x.jsxs)(`select`,{value:o,onChange:e=>{s(e.target.value),m(null)},children:[(0,x.jsx)(`option`,{value:`all`,children:`All niches`}),M.map(e=>(0,x.jsx)(`option`,{children:e},e))]})]}),(0,x.jsxs)(`label`,{children:[`Trace from selection`,(0,x.jsxs)(`select`,{value:c,onChange:e=>{l(e.target.value),m(null)},disabled:!g,children:[(0,x.jsx)(`option`,{value:`all`,children:`All nodes`}),(0,x.jsx)(`option`,{value:`ancestors`,children:`Ancestors`}),(0,x.jsx)(`option`,{value:`descendants`,children:`Descendants`})]})]}),(0,x.jsxs)(`label`,{children:[`Traversal depth`,(0,x.jsx)(`select`,{value:u,onChange:e=>{f(Number(e.target.value)),m(null)},disabled:c===`all`,children:[1,2,3,4,8,16,32,64].map(e=>(0,x.jsx)(`option`,{children:e},e))})]})]}),(0,x.jsxs)(`p`,{className:D.note,role:`status`,children:[`Showing `,w.length,` of `,y.length,` matching nodes (`,e.nodes.length,` in source). `,c===`all`?``:`Trace is bounded to ${u} relationship hops. `,y.length>O?`Diagram shows at most ${O} nodes per page; relationships crossing pages remain in the inspector. `:``,_&&!_.complete?`Traversal is incomplete; the depth bound or source evidence limits this trace.`:``]}),b>1?(0,x.jsxs)(`nav`,{className:D.pagination,"aria-label":`Graph node pages`,children:[(0,x.jsx)(`button`,{type:`button`,className:D.button,disabled:C===0,onClick:()=>m(C-1),children:`Previous node page`}),(0,x.jsxs)(`span`,{children:[`Page `,C+1,` of `,b]}),(0,x.jsx)(`button`,{type:`button`,className:D.button,disabled:C+1===b,onClick:()=>m(C+1),children:`Next node page`})]}):null,n!==null&&!g?(0,x.jsx)(`p`,{className:D.notice,role:`status`,children:`The selected node is no longer present in the current graph. Select another recorded node; no substitute has been chosen.`}):null,w.length?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(te,{nodes:w,edges:E.slice(0,k),selectedId:g?.id,select:j}),(0,x.jsxs)(`div`,{className:D.legend,children:[(0,x.jsx)(`span`,{children:`Recorded relationship`}),(0,x.jsx)(`span`,{className:D.feedbackLegend,children:`Evaluator feedback (not candidate ancestry)`})]}),E.length>k?(0,x.jsxs)(`p`,{className:D.note,children:[`Diagram shows `,k,` of `,E.length,` relationships on this page. Select a node to inspect its direct relationships.`]}):null]}):(0,x.jsx)(`p`,{className:D.notice,children:`No nodes match these filters. Broaden the entity type, niche or trace direction.`}),(0,x.jsxs)(`div`,{className:D.workspace,children:[(0,x.jsx)(`div`,{className:D.nodeList,role:`group`,"aria-label":`Graph nodes`,children:w.map(e=>(0,x.jsxs)(`button`,{type:`button`,"data-kind":e.kind,className:D.nodeButton,"aria-label":`Inspect ${A[e.kind].toLowerCase()}: ${e.label}`,"aria-pressed":e.id===g?.id,onClick:()=>r(e.id),children:[(0,x.jsx)(`span`,{children:e.label}),(0,x.jsxs)(`small`,{children:[A[e.kind],` · `,e.state,e.generation===void 0?``:` · generation ${e.generation}`]})]},e.id))}),g?(0,x.jsx)(P,{node:g,graph:e,byId:h,select:j,onInspectTrial:t}):null]})]}):(0,x.jsx)(`p`,{children:e.sourceState===`missing`?`No recorded graph source is available for this universe.`:e.complete?`This observation contains no graph nodes.`:`Graph nodes could not be established from incomplete evidence.`})]})}function I({universeId:e,onInspectTrial:t}){let n=(0,d.useMemo)(()=>c(e),[e]),r=i(n),o=a(n);return(0,x.jsxs)(`div`,{className:D.body,children:[(0,x.jsxs)(`div`,{className:D.toolbar,children:[(0,x.jsx)(`p`,{className:D.note,children:r.data?`Observed ${r.data.sampledAt}${r.status===`error`?` · Last successful read`:``}`:`Read-only graph observation; no work is started.`}),(0,x.jsx)(`button`,{type:`button`,className:D.button,onClick:o,disabled:r.status===`loading`||r.status===`refreshing`,children:r.status===`refreshing`?`Refreshing graph…`:`Refresh graph`})]}),r.status===`loading`?(0,x.jsx)(`p`,{role:`status`,children:`Loading graph evidence…`}):null,r.status===`error`?(0,x.jsxs)(`p`,{className:D.notice,role:`alert`,children:[`Graph records unavailable. `,r.error?.message,` Refresh graph to retry.`,r.data?` The graph below is the last successful observation.`:``]}):null,r.data?(0,x.jsx)(F,{graph:r.data,onInspectTrial:t}):null]})}function L({universeId:e,onInspectTrial:t}){let[n,r]=(0,d.useState)(!1),i=`universe-graph-${(0,d.useId)().replaceAll(`:`,``)}`;return(0,x.jsxs)(`section`,{className:D.section,"aria-label":`Evidence graph`,children:[(0,x.jsxs)(`div`,{className:D.header,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`h2`,{children:`Evidence graph`}),(0,x.jsx)(`p`,{children:`Trace candidate ancestry, evaluator feedback and local delivery back to recorded trials.`})]}),(0,x.jsx)(`button`,{type:`button`,className:D.button,"aria-expanded":n,"aria-controls":i,onClick:()=>r(e=>!e),children:n?`Close graph`:`Open graph`})]}),(0,x.jsx)(`div`,{id:i,children:n?(0,x.jsx)(I,{universeId:e,onInspectTrial:t}):null})]})}var R=/^[a-z0-9][a-z0-9_-]{0,63}$/,z=[`schemaVersion`,`readinessScope`,`campaignId`,`universeId`,`observedState`,`sourceState`,`disposition`,`reasonCode`,`resourceRuntimeRequired`,`sampledAt`],ne=[`ready`,`running`,`pause-requested`,`stop-requested`,`paused`,`interrupted`,`completed`,`stopped`,`failed`],re={startable:!0,owned:!0,"owner-held":!0,"resource-withheld":!0,"recovery-required":!0,"attention-required":!0,"budget-exhausted":!0,terminal:!0,unavailable:!0},B={"never-started":!0,"owner-active":!0,"pause-requested":!0,"stop-requested":!0,"owner-paused":!0,"owner-abandoned":!0,"run-incomplete":!0,"resource-withheld":!0,"resource-outcome-ambiguous":!0,"resource-attention-required":!0,"generation-attention-required":!0,"duration-budget-exhausted":!0,"generation-budget-exhausted":!0,"stagnation-budget-exhausted":!0,"request-budget-exhausted":!0,"reported-token-budget-exhausted":!0,"usage-unavailable":!0,"campaign-completed":!0,"campaign-stopped":!0,"campaign-failed":!0,"paused-unclassified":!0,"interrupted-unclassified":!0,"campaign-missing":!0,"evidence-degraded":!0,"snapshot-changed":!0,"seed-evaluation-unresolved":!0,"seed-evaluation-attention-required":!0};function V(e,t,n){let r=()=>Error(`Recorded campaign check is unavailable.`);if(!e||typeof e!=`object`||Array.isArray(e))throw r();let i=e;if(Object.keys(i).length!==z.length||Object.keys(i).some(e=>!z.includes(e))||i.schemaVersion!==1||i.readinessScope!==`recorded-campaign-evidence`||i.campaignId!==t||typeof i.sourceState!=`string`||![`healthy`,`missing`,`degraded`].includes(i.sourceState)||!(i.universeId===n||i.universeId===null&&i.sourceState!==`healthy`)||!(i.observedState===null&&i.sourceState!==`healthy`||typeof i.observedState==`string`&&ne.includes(i.observedState))||typeof i.disposition!=`string`||!Object.hasOwn(re,i.disposition)||typeof i.reasonCode!=`string`||!Object.hasOwn(B,i.reasonCode)||!(typeof i.resourceRuntimeRequired==`boolean`||i.resourceRuntimeRequired===null&&i.sourceState!==`healthy`)||typeof i.sampledAt!=`string`||!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(i.sampledAt)||!Number.isFinite(Date.parse(i.sampledAt))||new Date(i.sampledAt).toISOString()!==i.sampledAt||i.sourceState!==`healthy`&&(i.universeId!==null||i.observedState!==null||i.resourceRuntimeRequired!==null||i.disposition!==`unavailable`))throw r();return e}function H(e,t){if(!R.test(e)||!R.test(t))throw Error(`Invalid recorded campaign check identity.`);return{key:`universe-campaign-readiness:${t}:${e}`,fetch:async n=>V(await r(`/api/universe/campaign-readiness?campaignId=${encodeURIComponent(e)}`,n),e,t)}}var U={panel:`_panel_kgr49_1`,result:`_result_kgr49_2`,heading:`_heading_kgr49_3`,button:`_button_kgr49_5`,outcome:`_outcome_kgr49_9`,facts:`_facts_kgr49_10`,note:`_note_kgr49_14`,notice:`_notice_kgr49_15`},W={startable:`Recorded evidence permitted a run attempt`,owned:`Campaign owner was recorded active`,"owner-held":`Owner control held the campaign`,"resource-withheld":`Last attempt was withheld by resources`,"recovery-required":`Recovery inspection was required`,"attention-required":`Attention was required`,"budget-exhausted":`Recorded budget was exhausted`,terminal:`Campaign had ended`,unavailable:`Recorded check was unavailable`};function G({campaignId:e,universeId:t}){let n=(0,d.useMemo)(()=>H(e,t),[e,t]),{data:r,status:o}=i(n,{freshMs:0}),s=a(n),c=o===`loading`||o===`refreshing`||o===`idle`,l=c||o===`error`;return(0,x.jsxs)(`div`,{className:U.result,"aria-busy":c,children:[(0,x.jsxs)(`div`,{className:U.heading,children:[(0,x.jsx)(`h4`,{children:`Last recorded check`}),(0,x.jsx)(`button`,{type:`button`,className:U.button,disabled:c,onClick:s,children:c?`Checking recorded evidence…`:`Refresh check`})]}),o===`error`?(0,x.jsx)(`p`,{className:U.notice,role:`alert`,children:`Recorded check could not be refreshed. Retry the check; no current readiness conclusion is available.`}):null,r?(0,x.jsxs)(x.Fragment,{children:[l?(0,x.jsxs)(`p`,{className:U.notice,children:[`Previous sample only. `,c?`A new check is pending.`:`The latest check failed.`]}):null,l?null:(0,x.jsx)(`p`,{className:U.outcome,children:r.sourceState===`healthy`?W[r.disposition]:`Recorded evidence was unavailable or incomplete`}),(0,x.jsxs)(`dl`,{className:U.facts,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Sampled`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`time`,{dateTime:r.sampledAt,children:new Date(r.sampledAt).toLocaleString()})})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Source`}),(0,x.jsx)(`dd`,{children:r.sourceState})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:l?`Previous disposition`:`Recorded disposition`}),(0,x.jsx)(`dd`,{children:r.disposition})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Reason code`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:r.reasonCode})})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Observed campaign state`}),(0,x.jsx)(`dd`,{children:r.observedState??`Unavailable`})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Resource runtime binding`}),(0,x.jsx)(`dd`,{children:r.resourceRuntimeRequired===null?`Unknown`:r.resourceRuntimeRequired?`Explicit private runtime required for a run attempt`:`Not required by the recorded manifest`})]})]})]}):c?(0,x.jsx)(`p`,{role:`status`,children:`Reading saved campaign controls and outcomes…`}):null,(0,x.jsx)(`p`,{className:U.note,children:`This checks saved campaign controls and outcomes—not current provider connection, quota, worker capacity, evaluator execution, or execution-lease availability. A recorded startable result is advisory; the runner must still perform its admission checks.`})]})}function K({campaignId:e,universeId:t}){let[n,r]=(0,d.useState)(!1);return(0,x.jsxs)(`section`,{className:U.panel,"aria-label":`Recorded campaign readiness`,children:[(0,x.jsx)(`button`,{type:`button`,className:U.button,"aria-expanded":n,onClick:()=>r(e=>!e),children:n?`Hide recorded readiness`:`Check recorded readiness`}),n?(0,x.jsx)(G,{campaignId:e,universeId:t}):(0,x.jsx)(`p`,{className:U.note,children:`Inspect saved controls, remaining budgets, and recovery conditions for this campaign. This does not start work.`})]})}var q=new Set([`running`,`pause-requested`,`stop-requested`]);function J(e){return e.toLocaleString(void 0,{maximumFractionDigits:6})}function Y(e){return e<1e3?`${e.toLocaleString(void 0,{maximumFractionDigits:0})} ms`:`${(e/1e3).toLocaleString(void 0,{maximumFractionDigits:2})} s`}function X(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString()}function ie(){let e=b();return(0,x.jsxs)(`section`,{className:g.empty,"aria-labelledby":`universe-start-title`,children:[(0,x.jsx)(`h2`,{id:`universe-start-title`,children:`Start your first universe`}),(0,x.jsx)(`p`,{children:`Run two measured generations on a disposable seed, then inspect which variants earned a place in the archive.`}),(0,x.jsx)(`pre`,{className:g.command,children:(0,x.jsx)(`code`,{children:e(`ashlr universe demo`)})}),(0,x.jsx)(`p`,{children:`The local demonstration needs no model credentials. Refresh this page after running it.`}),(0,x.jsxs)(`details`,{children:[(0,x.jsx)(`summary`,{children:`Bring your own experiment`}),(0,x.jsx)(`pre`,{className:g.command,children:(0,x.jsx)(`code`,{children:e(`ashlr universe init --manifest path/to/universe.json
4
+ ashlr universe run <id>
5
+ ashlr universe status <id> --json
6
+ ashlr universe archive <id> --json`)})})]})]})}function ae(e,t,n){return e.status===`passed`?n.status===`completed`?e.selected&&e.delta===null?`Established the first measured elite in this niche.`:e.selected?`Admitted in generation ${n.generation} after an improvement of ${J(e.delta)} over the prior niche elite.`:`Not admitted in this generation. Selection compares passing trials within each niche and requires an improvement of ${J(t.manifest.metric.minImprovement)}.`:`This generation has not completed. Its measurements have not been admitted to the archive.`:`Not admitted. The trial did not finish with a passing measurement.`}var Z={"not-started":`Not started`,withheld:`Admission withheld`,settled:`Receipt settled`,replayed:`Recorded task replayed; no redispatch`,unavailable:`Evidence unavailable`},Q={"codex-turn":`Codex reported turns`,"claude-main-loop":`Claude main loop only`,"local-chat-completion":`Local chat completion`};function oe({trial:e}){let t=e.generation;if(!t)return(0,x.jsx)(`p`,{className:g.hypothesis,children:`Operator command. Model usage was not measured.`});let n=t.provider===`resource-pool`,r=n?t.resource:void 0,i=e=>e===null?`Unavailable`:J(e);return(0,x.jsxs)(`section`,{className:g.generationEvidence,"aria-label":`Model generation evidence`,children:[(0,x.jsxs)(`div`,{className:g.detailHeading,children:[(0,x.jsx)(`h4`,{children:`Model generation`}),(0,x.jsx)(o,{status:t.status,tone:t.status===`succeeded`?`success`:void 0})]}),(0,x.jsxs)(`dl`,{className:g.measurements,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Model`}),(0,x.jsx)(`dd`,{children:t.model??r?.workerModel??`Not assigned`})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Accounting`}),(0,x.jsx)(`dd`,{children:t.usage.state===`reported`?`Provider-reported`:`Unavailable`})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Input tokens`}),(0,x.jsx)(`dd`,{children:i(t.usage.inputTokens)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Output tokens`}),(0,x.jsx)(`dd`,{children:i(t.usage.outputTokens)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Generation duration`}),(0,x.jsx)(`dd`,{children:Y(t.durationMs)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:n?`Provider request count`:`Request`}),(0,x.jsx)(`dd`,{children:n?`Unknown`:t.requestStarted?`Started`:`Not started`})]})]}),n?(0,x.jsxs)(`section`,{"aria-label":`Recorded resource task evidence`,children:[(0,x.jsx)(`h4`,{children:`Recorded resource task`}),(0,x.jsxs)(`dl`,{className:g.measurements,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Dispatch evidence`}),(0,x.jsx)(`dd`,{children:r&&Object.hasOwn(Z,r.dispatch)?Z[r.dispatch]:`Unavailable`})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Pool`}),(0,x.jsx)(`dd`,{children:r?.poolId??`Unavailable`})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Worker`}),(0,x.jsx)(`dd`,{children:r?.workerId??`Not assigned`})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Worker provider`}),(0,x.jsx)(`dd`,{children:r?.workerProvider??`Not assigned`})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Task`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:r?.taskId??`Unavailable`})})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Recorded task outcome`}),(0,x.jsx)(`dd`,{children:r?.taskStatus??`Unavailable`})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Worker usage scope`}),(0,x.jsx)(`dd`,{children:r?.usageScope&&Object.hasOwn(Q,r.usageScope)?Q[r.usageScope]:`Unavailable`})]})]}),(0,x.jsx)(`p`,{children:`Recorded provenance only, not a current worker heartbeat. Task completion does not mean the candidate response validated or the evaluator accepted it.`}),r?.taskStatus===`reserved`||r?.taskStatus===`uncertain`?(0,x.jsx)(`p`,{className:g.notice,children:`The resource receipt still occupies capacity. Reconcile the affected pool before another attempt; this view does not release its slot.`}):null]}):null,(0,x.jsxs)(`details`,{className:g.artifact,children:[(0,x.jsx)(`summary`,{children:`Generation source and changes`}),(0,x.jsxs)(`dl`,{children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Provider`}),(0,x.jsx)(`dd`,{children:t.provider})]}),n?null:(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Endpoint`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:t.endpoint})})]}),r?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Allowed workers`}),(0,x.jsx)(`dd`,{children:r.allowedWorkerIds.join(`, `)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Pool digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:r.poolDigest})})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Task digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:r.taskDigest??`Unavailable`})})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Resource receipt digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:r.receiptDigest??`Unavailable`})})]})]}):null,(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Changed files`}),(0,x.jsx)(`dd`,{children:t.changedFiles.length?t.changedFiles.join(`, `):`None`})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Prompt digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:t.promptDigest??`Unavailable`})})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Response digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:t.responseDigest??`Unavailable`})})]}),t.feedback?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Evaluator feedback source`}),(0,x.jsxs)(`dd`,{children:[`Generation `,t.feedback.generation,` · trial `,t.feedback.trialId]})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Feedback digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:t.feedback.digest})})]})]}):null,t.search?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Recorded search context`}),(0,x.jsxs)(`dd`,{children:[`Version `,t.search.schemaVersion]})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Search context digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:t.search.digest})})]})]}):null,t.seedContext?(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Historical seed context`}),(0,x.jsxs)(`dd`,{children:[`Version `,t.seedContext.schemaVersion]})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Seed context digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:t.seedContext.digest})})]})]}):null]}),t.seedContext?(0,x.jsx)(`p`,{children:`Historical measured seed evidence is retained across campaign generations. It is not the trial parent, latest-attempt feedback, or acceptance.`}):null,n?(0,x.jsx)(`p`,{children:`Some digests are redacted in the web view. Use scoped CLI JSON for exact evidence; this view does not revalidate the resource ledger.`}):null]}),(0,x.jsxs)(`p`,{children:[`Generation success means a valid replacement response, not evaluator acceptance. `,n?`Token counts come from the recorded worker receipt and keep its usage scope; model identity is the configured model name. Native provider request counts and account-wide spend remain unknown.`:`Token counts come from the endpoint response; model identity is the configured name.`]}),t.feedback?(0,x.jsx)(`p`,{children:`Feedback can come from a failed attempt. It is distinct from the retained parent shown in the lineage.`}):null,t.search?(0,x.jsx)(`p`,{children:`Search context supplies the metric and bounded repetition evidence, with a retained baseline and previous selection result when available. A repeated artifact is not an evaluator result or a reason to skip evaluation.`}):null]})}function $({trial:e,summary:t,run:n}){let r=b(),i=t.runs.flatMap(e=>e.trials).find(t=>t.id===e.parentTrialId),a=t.elites.some(t=>t.trialId===e.id),s=t.manifest.variants.find(t=>t.id===e.variantId);return(0,x.jsxs)(`section`,{className:g.trialDetail,"aria-label":`Evidence for ${e.variantId}`,children:[(0,x.jsxs)(`div`,{className:g.detailHeading,children:[(0,x.jsx)(`h3`,{children:e.variantId}),(0,x.jsx)(o,{status:e.status,tone:e.status===`passed`?`success`:void 0})]}),s?(0,x.jsx)(`p`,{className:g.hypothesis,children:s.hypothesis}):null,(0,x.jsxs)(`div`,{className:g.lineage,"aria-label":`Variant lineage`,children:[(0,x.jsx)(`span`,{children:e.parentTrialId?i?.variantId??e.parentTrialId:`Seed`}),(0,x.jsx)(`span`,{"aria-hidden":`true`,children:`→`}),(0,x.jsx)(`strong`,{children:e.variantId}),(0,x.jsxs)(`span`,{className:g.generation,children:[`Generation `,n.generation]})]}),(0,x.jsx)(`p`,{className:g.reason,children:ae(e,t,n)}),e.selected?(0,x.jsx)(`p`,{className:g.currentElite,children:t.sourceState===`degraded`?`Admission recorded; the current niche elite could not be verified.`:a?`Current niche elite`:`Previously admitted; a later trial now holds this niche.`}):null,(0,x.jsxs)(`dl`,{className:g.measurements,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:t.manifest.metric.name}),(0,x.jsx)(`dd`,{children:e.score===null?`Not measured`:J(e.score)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Improvement over prior elite`}),(0,x.jsx)(`dd`,{children:e.delta===null?`No prior comparison`:J(e.delta)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Trial duration`}),(0,x.jsx)(`dd`,{children:Y(e.durationMs)})]}),Object.entries(e.metrics).filter(([e])=>e!==t.manifest.metric.name).map(([e,t])=>(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:e}),(0,x.jsx)(`dd`,{children:J(t)})]},e))]}),(0,x.jsx)(oe,{trial:e}),e.diagnostics?.length?(0,x.jsxs)(`div`,{className:g.diagnosticCodes,"aria-label":`Evaluator diagnostic codes`,children:[(0,x.jsx)(`strong`,{children:`Evaluator diagnostics`}),(0,x.jsx)(`ul`,{children:e.diagnostics.map((e,t)=>(0,x.jsx)(`li`,{children:(0,x.jsx)(`code`,{children:e.code})},`${e.code}-${t}`))}),(0,x.jsx)(`p`,{children:`Codes are shown here; diagnostic messages and private locations are omitted.`})]}):null,e.error?(0,x.jsx)(`pre`,{role:`status`,"aria-label":`Trial failure evidence`,className:g.failureEvidence,children:e.error}):null,e.artifact?(0,x.jsxs)(`details`,{className:g.artifact,children:[(0,x.jsx)(`summary`,{children:`Artifact and evaluator identity`}),(0,x.jsxs)(`dl`,{children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Artifact`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:e.artifact.path})})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Content digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:e.artifact.digest})})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Seed revision`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:e.artifact.revision})})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Comparator digest`}),(0,x.jsx)(`dd`,{children:(0,x.jsx)(`code`,{children:n.comparatorDigest})})]})]}),(0,x.jsxs)(`p`,{children:[`For exact local records, run `,(0,x.jsx)(`code`,{children:r(`ashlr universe status ${t.manifest.id} --json`)}),`.`]})]}):null,(0,x.jsxs)(`details`,{className:g.artifact,children:[(0,x.jsx)(`summary`,{children:`Raw measurement record`}),(0,x.jsx)(`pre`,{children:JSON.stringify({...e,...e.diagnostics?{diagnostics:e.diagnostics.map(({code:e})=>({code:e}))}:{}},null,2)})]})]})}function se({campaigns:e,summary:t,onInspectRun:n}){let[r,i]=(0,d.useState)(null),a=b(),s=(0,d.useContext)(_),c=e.find(e=>e.definition.id===r)??e.find(e=>q.has(e.state))??e.at(-1);if(!c)return(0,x.jsxs)(`section`,{className:g.campaign,"aria-label":`Campaigns`,children:[(0,x.jsx)(`div`,{className:g.sectionHeading,children:(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`h2`,{children:`Continue with a campaign`}),(0,x.jsx)(`p`,{children:`Run successive generations automatically within a fixed resource budget. A passing trial does not end the search.`})]})}),(0,x.jsxs)(`div`,{className:g.campaignBody,children:[(0,x.jsxs)(`p`,{children:[`Set `,(0,x.jsx)(`code`,{children:`universeId`}),` to `,(0,x.jsx)(`code`,{children:t.manifest.id}),` in your campaign manifest.`]}),(0,x.jsx)(`pre`,{className:g.command,children:(0,x.jsx)(`code`,{children:a(`ashlr universe campaign init --manifest campaign.json
7
+ ashlr universe campaign run <campaign-id>`)})}),(0,x.jsx)(`p`,{children:`The console observes saved evidence. These commands run in your terminal, without installing a background service.`})]})]});let{definition:l,progress:u}=c,f=c.sourceState===`healthy`,p=e=>f?J(e):`Unavailable`,m=new Set(t.runs.map(e=>e.id));t.activeRun&&m.add(t.activeRun.id);let h=[`ashlr universe campaign status ${l.id} --json`];return h.push(`ashlr universe campaign check ${l.id} --json${s===null?` --root '/absolute/private/experiments'`:``}`),q.has(c.state)&&h.push(`ashlr universe campaign pause ${l.id}`),[`completed`,`stopped`,`failed`].includes(c.state)||h.push(`ashlr universe campaign stop ${l.id}`),(0,x.jsxs)(`section`,{className:g.campaign,"aria-label":`Campaigns`,children:[(0,x.jsxs)(`div`,{className:g.sectionHeading,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`h2`,{children:`Autonomous campaign`}),(0,x.jsx)(`p`,{children:`Generations continue until the campaign reaches its resource or stagnation limit.`})]}),e.length>1?(0,x.jsxs)(`label`,{className:g.selectLabel,children:[`Campaign`,(0,x.jsx)(`select`,{value:l.id,onChange:e=>i(e.target.value),children:e.map(e=>(0,x.jsx)(`option`,{value:e.definition.id,children:e.definition.id},e.definition.id))})]}):null]}),(0,x.jsxs)(`div`,{className:g.campaignBody,children:[(0,x.jsxs)(`div`,{className:g.campaignHeading,children:[(0,x.jsx)(`h3`,{children:l.id}),(0,x.jsx)(o,{status:c.state,tone:c.state===`ready`?`neutral`:void 0})]}),f?null:(0,x.jsxs)(`div`,{className:g.notice,role:`status`,children:[(0,x.jsx)(`strong`,{children:`Campaign history is incomplete.`}),(0,x.jsx)(`p`,{children:c.reasons.join(`; `)||`Recorded progress could not be verified.`})]}),(0,x.jsxs)(`p`,{className:g.reason,children:[(0,x.jsx)(`strong`,{children:`Reason: `}),c.reason??(c.state===`ready`?`Registered; execution readiness has not been checked.`:`No stop reason recorded.`)]}),(0,x.jsxs)(`p`,{children:[`Use the recovery check before resuming. It reads recorded controls and outcomes, not current worker readiness.`,s===null?` Replace the example root with your exact Universe store.`:``]}),(0,x.jsx)(K,{campaignId:l.id,universeId:t.manifest.id},`${t.manifest.id}:${l.id}`),c.state===`pause-requested`||c.state===`stop-requested`?(0,x.jsx)(`p`,{role:`status`,children:`Control requested. The owner has not yet acknowledged that work has stopped.`}):null,(0,x.jsxs)(`dl`,{className:g.campaignFacts,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Generation attempts`}),(0,x.jsxs)(`dd`,{children:[p(u.attempts),` / `,l.budget.maxGenerations]})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Reserved generation invocations`}),(0,x.jsxs)(`dd`,{children:[p(u.reservedModelRequests),` / `,l.budget.maxModelRequests]})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Stagnant generations`}),(0,x.jsxs)(`dd`,{children:[p(u.stagnantGenerations),` / `,l.budget.maxStagnantGenerations]})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Deadline`}),(0,x.jsx)(`dd`,{children:c.deadlineAt?X(c.deadlineAt):`Starts on first run`})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Completed generations`}),(0,x.jsx)(`dd`,{children:p(u.completedRuns)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Interrupted generations`}),(0,x.jsx)(`dd`,{children:p(u.interruptedRuns)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Initial niche admissions`}),(0,x.jsx)(`dd`,{children:p(u.admissions)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Strict improvements`}),(0,x.jsx)(`dd`,{children:p(u.improvements)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Reported token total`}),(0,x.jsx)(`dd`,{children:f&&u.usageComplete&&u.reportedTokens!==null?J(u.reportedTokens):`Unavailable`})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Recorded token subtotal`}),(0,x.jsx)(`dd`,{children:p(u.recordedTokens)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Reported-token stop threshold`}),(0,x.jsx)(`dd`,{children:l.budget.maxReportedTokens===null?`Not configured`:J(l.budget.maxReportedTokens)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Bounded evaluator feedback`}),(0,x.jsx)(`dd`,{children:l.feedback?`Enabled`:`Disabled`})]})]}),(0,x.jsx)(`p`,{className:g.campaignNote,children:`Resume keeps the original deadline and consumed budget. Token figures cover recorded model requests; a recorded subtotal is not proof of complete spend. A reported-token threshold cannot prevent spend already incurred.`}),(0,x.jsx)(`p`,{className:g.campaignNote,children:`The legacy maxModelRequests field reserves generation transport invocations, not native API calls. A native invocation may make zero or multiple provider requests. Resource-pool run/resume requires its explicit private runtime option again; this read-only console does not hold that binding.`})]}),c.steps.length?(0,x.jsx)(`div`,{className:g.tableScroll,children:(0,x.jsxs)(`table`,{className:g.archiveTable,"aria-label":`Campaign generations`,children:[(0,x.jsx)(`thead`,{children:(0,x.jsxs)(`tr`,{children:[(0,x.jsx)(`th`,{scope:`col`,children:`Generation`}),(0,x.jsx)(`th`,{scope:`col`,children:`State`}),(0,x.jsx)(`th`,{scope:`col`,children:`Trials passed`}),(0,x.jsx)(`th`,{scope:`col`,children:`New niches`}),(0,x.jsx)(`th`,{scope:`col`,children:`Improvements`}),(0,x.jsx)(`th`,{scope:`col`,children:`Generation invocations reserved`})]})}),(0,x.jsx)(`tbody`,{children:c.steps.map(e=>(0,x.jsxs)(`tr`,{children:[(0,x.jsx)(`th`,{scope:`row`,children:m.has(e.runId)?(0,x.jsx)(`button`,{type:`button`,className:g.eliteButton,"aria-label":`Inspect campaign generation ${e.generation}`,onClick:()=>n(e.runId),children:e.generation}):(0,x.jsxs)(`span`,{children:[e.generation,` · Evidence pending`]})}),(0,x.jsx)(`td`,{children:e.state}),(0,x.jsxs)(`td`,{children:[p(e.passedTrials),` / `,p(e.trialCount)]}),(0,x.jsx)(`td`,{children:p(e.admissions)}),(0,x.jsx)(`td`,{children:p(e.improvements)}),(0,x.jsx)(`td`,{children:p(e.reservedModelRequests)})]},e.runId))})]})}):null,(0,x.jsxs)(`div`,{className:g.campaignBody,children:[(0,x.jsxs)(`details`,{className:g.artifact,children:[(0,x.jsx)(`summary`,{children:`Inspect or control from your terminal`}),(0,x.jsx)(`pre`,{className:g.command,children:(0,x.jsx)(`code`,{children:a(h.join(`
8
+ `))})}),(0,x.jsx)(`p`,{children:`Pause and stop are requests until acknowledged. These controls do not change the legacy fleet daemon or its kill switch.`})]}),(0,x.jsx)(`p`,{className:g.campaignNote,children:`Campaign termination is not project success. Archive admissions are local evaluator results, not accepted production changes.`})]})]})}function ce({summary:e,campaigns:t,deliveryReport:n}){let[r,i]=(0,d.useState)(null),a=b(),[s,c]=(0,d.useState)(null),l=(0,d.useRef)(null),u=e.activeRun&&!e.runs.some(t=>t.id===e.activeRun.id)?[...e.runs,e.activeRun]:e.runs,f=u.find(e=>e.id===r)??e.activeRun??u.at(-1),p=f?.trials.find(e=>e.id===s)??f?.trials.find(e=>e.selected)??f?.trials[0],m=[...new Set(e.manifest.variants.map(e=>e.niche))],h=u.reduce((e,t)=>e+t.durationMs,0);return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsxs)(`section`,{className:g.objective,"aria-label":`Universe objective`,children:[(0,x.jsx)(`h2`,{children:e.manifest.name}),(0,x.jsx)(`p`,{children:e.manifest.objective}),(0,x.jsxs)(`dl`,{className:g.objectiveFacts,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Selection metric`}),(0,x.jsxs)(`dd`,{children:[e.manifest.metric.name,` · `,e.manifest.metric.direction]})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Minimum improvement`}),(0,x.jsx)(`dd`,{children:J(e.manifest.metric.minImprovement)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Run budget`}),(0,x.jsxs)(`dd`,{children:[e.manifest.budget.maxTrials,` trials / `,Y(e.manifest.budget.maxDurationMs)]})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Parallel trials`}),(0,x.jsx)(`dd`,{children:e.manifest.budget.maxParallel})]})]})]}),e.sourceState===`degraded`?(0,x.jsxs)(`div`,{className:g.notice,role:`status`,children:[(0,x.jsx)(`strong`,{children:`Some experiment records could not be read.`}),(0,x.jsx)(`p`,{children:e.reasons.join(`; `)})]}):null,e.activeRun?(0,x.jsxs)(`div`,{className:g.running,role:`status`,children:[(0,x.jsx)(o,{status:e.activeRun.status}),(0,x.jsxs)(`span`,{children:[`Generation `,e.activeRun.generation,`: `,e.activeRun.trials.length,` trial measurements recorded. Refreshing every 3 seconds.`]})]}):null,(0,x.jsx)(se,{campaigns:t,summary:e,onInspectRun:e=>{i(e),c(null)}}),(0,x.jsx)(L,{universeId:e.manifest.id,onInspectTrial:(e,t)=>u.some(n=>n.id===e&&n.trials.some(e=>e.id===t))?(i(e),c(t),window.requestAnimationFrame(()=>l.current?.scrollIntoView?.({block:`start`})),!0):!1}),(0,x.jsxs)(`section`,{className:g.archive,"aria-labelledby":`universe-archive-title`,children:[(0,x.jsxs)(`div`,{className:g.sectionHeading,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`h2`,{id:`universe-archive-title`,children:`Population archive`}),(0,x.jsx)(`p`,{children:`Each niche keeps its best measured variant. Inspect an elite to see the experiment that earned its place.`})]}),(0,x.jsx)(`span`,{className:g.archiveCount,children:e.sourceState===`degraded`?`Archive incomplete`:`${e.elites.length} / ${m.length} niches populated`})]}),(0,x.jsx)(`div`,{className:g.tableScroll,children:(0,x.jsxs)(`table`,{className:g.archiveTable,children:[(0,x.jsx)(`thead`,{children:(0,x.jsxs)(`tr`,{children:[(0,x.jsx)(`th`,{scope:`col`,children:`Niche`}),(0,x.jsx)(`th`,{scope:`col`,children:`Retained variant`}),(0,x.jsx)(`th`,{scope:`col`,children:e.manifest.metric.name}),(0,x.jsx)(`th`,{scope:`col`,children:`Generation`})]})}),(0,x.jsx)(`tbody`,{children:m.map(t=>{let n=e.elites.find(e=>e.niche===t);return(0,x.jsxs)(`tr`,{"data-selected":n?.trialId===p?.id||void 0,children:[(0,x.jsxs)(`th`,{scope:`row`,children:[(0,x.jsx)(`span`,{className:n?g.nicheFilled:g.nicheEmpty,"aria-hidden":`true`}),t]}),(0,x.jsx)(`td`,{children:n?(0,x.jsx)(`button`,{type:`button`,className:g.eliteButton,"aria-label":`Inspect ${n.variantId} in ${t}`,onClick:()=>{i(n.runId),c(n.trialId)},children:n.variantId}):(0,x.jsx)(`span`,{className:g.muted,children:e.sourceState===`degraded`?`History incomplete`:`No retained variant`})}),(0,x.jsx)(`td`,{children:n?J(n.score):e.sourceState===`degraded`?`Unavailable`:`Not measured`}),(0,x.jsx)(`td`,{children:n?n.generation:`—`})]},t)})})]})})]}),f?(0,x.jsxs)(`section`,{ref:l,className:g.comparison,"aria-labelledby":`universe-comparison-title`,children:[(0,x.jsxs)(`div`,{className:g.sectionHeading,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`h2`,{id:`universe-comparison-title`,children:`Experiment comparison`}),(0,x.jsx)(`p`,{children:`Selection is local to a niche. Positive improvement means better in either metric direction.`})]}),(0,x.jsxs)(`label`,{className:g.selectLabel,children:[`Generation`,(0,x.jsx)(`select`,{value:f.id,onChange:e=>{i(e.target.value),c(null)},children:[...u].reverse().map(e=>(0,x.jsxs)(`option`,{value:e.id,children:[e.generation,` · `,e.status]},e.id))})]})]}),(0,x.jsxs)(`div`,{className:g.runMeta,children:[(0,x.jsx)(o,{status:f.status,tone:f.status===`completed`?`success`:void 0}),(0,x.jsxs)(`span`,{children:[`Started `,X(f.startedAt)]}),(0,x.jsxs)(`span`,{children:[Y(f.durationMs),` recorded`]}),(0,x.jsxs)(`span`,{children:[f.trials.filter(e=>e.status===`passed`).length,` / `,f.trials.length,` trials passed`]}),(0,x.jsx)(`span`,{children:f.status===`completed`?`${f.trials.filter(e=>e.selected).length} admitted`:f.status===`running`?`Selection pending`:`Selection not applied`})]}),f.error?(0,x.jsx)(`p`,{className:g.failure,role:`status`,children:f.error}):null,p?(0,x.jsxs)(`div`,{className:g.comparisonBody,children:[(0,x.jsx)(`div`,{className:g.trialList,"aria-label":`Trials`,children:f.trials.map(e=>(0,x.jsxs)(`button`,{type:`button`,className:g.trialButton,"aria-pressed":e.id===p.id,onClick:()=>c(e.id),children:[(0,x.jsxs)(`span`,{className:g.trialTitle,children:[e.variantId,(0,x.jsx)(`span`,{children:e.score===null?`—`:J(e.score)})]}),(0,x.jsxs)(`span`,{className:g.trialSubline,children:[e.niche,(0,x.jsx)(`span`,{children:e.selected?`Admitted`:e.status})]})]},e.id))}),(0,x.jsx)($,{trial:p,summary:e,run:f})]}):(0,x.jsx)(`p`,{className:g.noTrials,children:`No trial measurements have been recorded for this generation yet.`})]}):(0,x.jsxs)(`section`,{className:g.empty,children:[(0,x.jsx)(`h2`,{children:`This universe is registered`}),(0,x.jsx)(`pre`,{className:g.command,children:(0,x.jsx)(`code`,{children:a(`ashlr universe run ${e.manifest.id}`)})}),(0,x.jsx)(`p`,{children:`No generation has run yet. Verify the evaluator and required runtime before starting, then refresh to compare measurements.`})]}),(0,x.jsx)(w,{summary:e,report:n,onInspectTrial:(e,t)=>{i(e),c(t)}}),(0,x.jsxs)(`footer`,{className:g.resources,"aria-label":`Generation resources`,children:[(0,x.jsx)(`h2`,{children:`Recorded resources`}),(0,x.jsxs)(`dl`,{children:[(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`dt`,{children:[`Runtime across `,u.length,` generations`]}),(0,x.jsx)(`dd`,{children:Y(h)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsxs)(`dt`,{children:[`Model tokens`,f?` in generation ${f.generation}`:``]}),(0,x.jsx)(`dd`,{children:f?.tokensUsed==null?`Unavailable`:J(f.tokensUsed)})]}),(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`dt`,{children:`Model cost`}),(0,x.jsx)(`dd`,{children:`Unavailable`})]})]}),f?.generationUsage?(0,x.jsxs)(`p`,{children:[`Generation usage coverage: `,f.generationUsage.reportedRequests,` / `,f.generationUsage.requestsStarted,` recorded started requests reported tokens across `,f.generationUsage.trials,` model trials. `,f.generationUsage.resourceAttempts===void 0?`Totals require a completed generation, at least one recorded request, and usage from every recorded request. Interrupted in-flight usage may be missing.`:`These request counters cover the direct local path only. Combined totals also require complete resource-attempt usage and a completed generation; interrupted in-flight usage may be missing.`]}):null,f?.generationUsage?.resourceAttempts===void 0?null:(0,x.jsxs)(`p`,{children:[`Resource handoff coverage: `,f.generationUsage.resourceReportedAttempts??`Unavailable`,` / `,f.generationUsage.resourceAttempts,` attempted handoffs reported worker tokens. Handoffs do not guarantee worker starts or count provider requests; incomplete resource usage keeps the combined total unavailable.`]}),(0,x.jsx)(`p`,{children:`Tokens cover model generation only, not command or evaluator work. Missing usage and dollar costs stay unavailable. Evaluator scores do not establish business value or accepted production changes.`})]})]})}function le(){let e=(0,d.useRef)(null);h(`/universe`,e);let t=i(s),n=a(s),[r,o]=(0,d.useState)(null),c=t.data,f=c?.universes.find(e=>e.manifest.id===r)??c?.universes[0],p=(c?.universes.some(e=>e.activeRun!==null)??!1)||(c?.campaigns?.some(e=>q.has(e.state))??!1);return(0,d.useEffect)(()=>{let e=!1,t=()=>{!e&&document.visibilityState!==`hidden`&&n()},r=window.setInterval(t,p?3e3:15e3);return document.addEventListener(`visibilitychange`,t),()=>{e=!0,window.clearInterval(r),document.removeEventListener(`visibilitychange`,t)}},[p,n]),(0,x.jsxs)(`div`,{ref:e,className:g.view,children:[(0,x.jsxs)(`header`,{className:g.header,children:[(0,x.jsxs)(`div`,{children:[(0,x.jsx)(`h1`,{children:`Ashlrverse`}),(0,x.jsx)(`p`,{children:`Run experiments. Compare futures. Keep what earns its place.`})]}),(0,x.jsxs)(`div`,{className:g.actions,children:[c&&c.universes.length>1?(0,x.jsxs)(`label`,{className:g.selectLabel,children:[`Universe`,(0,x.jsx)(`select`,{value:f?.manifest.id,onChange:e=>o(e.target.value),children:c.universes.map(e=>(0,x.jsx)(`option`,{value:e.manifest.id,children:e.manifest.name},e.manifest.id))})]}):null,(0,x.jsx)(`button`,{type:`button`,className:g.refresh,onClick:n,disabled:t.status===`loading`||t.status===`refreshing`,children:`Refresh`})]})]}),(0,x.jsxs)(`div`,{className:g.freshness,"aria-live":`polite`,children:[t.status===`refreshing`?(0,x.jsx)(l,{}):null,c?(0,x.jsxs)(`span`,{children:[`Observed `,X(c.sampledAt),t.status===`error`?` · Last successful read`:``]}):null,c?(0,x.jsx)(`span`,{children:`Local experiments`}):null,(0,x.jsxs)(`span`,{children:[`Refreshes every `,p?`3`:`15`,` seconds while visible`]})]}),t.status===`loading`?(0,x.jsxs)(`section`,{className:g.empty,"aria-label":`Loading Universe experiments`,children:[(0,x.jsx)(u,{width:`60%`}),(0,x.jsx)(u,{width:`90%`}),(0,x.jsx)(u,{width:`80%`})]}):null,t.status===`error`?(0,x.jsxs)(`div`,{className:g.notice,role:`alert`,children:[(0,x.jsx)(`h2`,{children:`Universe records unavailable`}),(0,x.jsx)(`p`,{children:t.error?.message??`The experiment store could not be read.`}),(0,x.jsx)(`p`,{children:`Refresh to retry. Any records below are from the last successful read.`})]}):null,c?.sourceState===`degraded`?(0,x.jsxs)(`div`,{className:g.notice,role:`status`,children:[(0,x.jsx)(`strong`,{children:`Experiment history is incomplete.`}),(0,x.jsx)(`p`,{children:c.reasons.join(`; `)||`Some persisted records could not be verified.`})]}):null,f?(0,x.jsx)(ce,{summary:f,campaigns:c?.campaigns?.filter(e=>e.definition.universeId===f.manifest.id)??[],deliveryReport:c?.deliveryReports?.find(e=>e.universeId===f.manifest.id)},f.manifest.id):c&&c.sourceState!==`degraded`?(0,x.jsx)(ie,{}):null]})}export{_ as n,h as r,le as t};
9
+ //# sourceMappingURL=UniverseView-D0j9HVku.js.map