@ashlr/hub 3.17.1 → 3.17.2
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.
- package/CHANGELOG.md +21 -0
- package/README.md +12 -6
- package/dist/authority-surface.json +7 -7
- package/dist/build-identity.json +2 -2
- package/dist/core/knowledge/wiki/citations.d.ts +2 -0
- package/dist/core/knowledge/wiki/citations.js +13 -4
- package/dist/core/knowledge/wiki/citations.js.map +1 -1
- package/dist/core/knowledge/wiki/facts.d.ts +13 -0
- package/dist/core/knowledge/wiki/facts.js +46 -9
- package/dist/core/knowledge/wiki/facts.js.map +1 -1
- package/dist/core/knowledge/wiki/graph.d.ts +1 -1
- package/dist/core/knowledge/wiki/graph.js +54 -7
- package/dist/core/knowledge/wiki/graph.js.map +1 -1
- package/dist/core/knowledge/wiki/types.d.ts +20 -6
- package/dist/core/web/public/next/assets/ActionMenu-DmHRxr1Q.js +2 -0
- package/dist/core/web/public/next/assets/ActionMenu-DmHRxr1Q.js.map +1 -0
- package/dist/core/web/public/next/assets/Advanced-DmCUyCfm.js +2 -0
- package/dist/core/web/public/next/assets/Advanced-DmCUyCfm.js.map +1 -0
- package/dist/core/web/public/next/assets/AgentDetailScreen-l_rcOysR.js +2 -0
- package/dist/core/web/public/next/assets/AgentDetailScreen-l_rcOysR.js.map +1 -0
- package/dist/core/web/public/next/assets/AgentToolsSheet-CX08doSS.js +2 -0
- package/dist/core/web/public/next/assets/AgentToolsSheet-CX08doSS.js.map +1 -0
- package/dist/core/web/public/next/assets/AgentToolsStrip-CPS_iuTz.js +2 -0
- package/dist/core/web/public/next/assets/AgentToolsStrip-CPS_iuTz.js.map +1 -0
- package/dist/core/web/public/next/assets/AgentsScreen-D14Wm6WC.js +2 -0
- package/dist/core/web/public/next/assets/AgentsScreen-D14Wm6WC.js.map +1 -0
- package/dist/core/web/public/next/assets/AgentsSection-BIPpbKGT.js +3 -0
- package/dist/core/web/public/next/assets/AgentsSection-BIPpbKGT.js.map +1 -0
- package/dist/core/web/public/next/assets/App-CI3iqvqx.js +8 -0
- package/dist/core/web/public/next/assets/App-CI3iqvqx.js.map +1 -0
- package/dist/core/web/public/next/assets/AppsSection-B_Htu4Ha.js +2 -0
- package/dist/core/web/public/next/assets/AppsSection-B_Htu4Ha.js.map +1 -0
- package/dist/core/web/public/next/assets/AreaTrend-C8t1e_iz.js +2 -0
- package/dist/core/web/public/next/assets/AreaTrend-C8t1e_iz.js.map +1 -0
- package/dist/core/web/public/next/assets/AutomationsSection-CdU1kFGD.js +2 -0
- package/dist/core/web/public/next/assets/AutomationsSection-CdU1kFGD.js.map +1 -0
- package/dist/core/web/public/next/assets/AutonomyOffState-kEIQ45VE.js +3 -0
- package/dist/core/web/public/next/assets/AutonomyOffState-kEIQ45VE.js.map +1 -0
- package/dist/core/web/public/next/assets/AutonomySection-u1Bw9EWH.js +2 -0
- package/dist/core/web/public/next/assets/AutonomySection-u1Bw9EWH.js.map +1 -0
- package/dist/core/web/public/next/assets/AutonomyStatus-CLcACbD6.js +2 -0
- package/dist/core/web/public/next/assets/AutonomyStatus-CLcACbD6.js.map +1 -0
- package/dist/core/web/public/next/assets/BranchBar-_RoWU_JS.js +2 -0
- package/dist/core/web/public/next/assets/BranchBar-_RoWU_JS.js.map +1 -0
- package/dist/core/web/public/next/assets/BrowserPanel-DcZzLVJ0.js +7 -0
- package/dist/core/web/public/next/assets/BrowserPanel-DcZzLVJ0.js.map +1 -0
- package/dist/core/web/public/next/assets/BudgetControl-BDx4fvRS.js +2 -0
- package/dist/core/web/public/next/assets/BudgetControl-BDx4fvRS.js.map +1 -0
- package/dist/core/web/public/next/assets/Button-BKA5M-tJ.js +2 -0
- package/dist/core/web/public/next/assets/Button-BKA5M-tJ.js.map +1 -0
- package/dist/core/web/public/next/assets/CapacityStrip-DwWrB6l8.js +2 -0
- package/dist/core/web/public/next/assets/CapacityStrip-DwWrB6l8.js.map +1 -0
- package/dist/core/web/public/next/assets/ChangesPaneHost-jmWhj4z0.js +16 -0
- package/dist/core/web/public/next/assets/ChangesPaneHost-jmWhj4z0.js.map +1 -0
- package/dist/core/web/public/next/assets/ChartFrame-BqXHRCDs.js +2 -0
- package/dist/core/web/public/next/assets/ChartFrame-BqXHRCDs.js.map +1 -0
- package/dist/core/web/public/next/assets/ChatPanes-Cvee66BN.js +2 -0
- package/dist/core/web/public/next/assets/ChatPanes-Cvee66BN.js.map +1 -0
- package/dist/core/web/public/next/assets/ChatSection-DW87PAMm.js +3 -0
- package/dist/core/web/public/next/assets/ChatSection-DW87PAMm.js.map +1 -0
- package/dist/core/web/public/next/assets/ChecksPanel-C5hBYh2c.js +5 -0
- package/dist/core/web/public/next/assets/ChecksPanel-C5hBYh2c.js.map +1 -0
- package/dist/core/web/public/next/assets/CloudBudgetForm-d7_TF6P4.js +2 -0
- package/dist/core/web/public/next/assets/CloudBudgetForm-d7_TF6P4.js.map +1 -0
- package/dist/core/web/public/next/assets/CommandPalette-B8t8W8Qh.js +3 -0
- package/dist/core/web/public/next/assets/CommandPalette-B8t8W8Qh.js.map +1 -0
- package/dist/core/web/public/next/assets/CommandSection-BHCc65AZ.js +3 -0
- package/dist/core/web/public/next/assets/CommandSection-BHCc65AZ.js.map +1 -0
- package/dist/core/web/public/next/assets/CommandWorkflowForm-DtMTY_QW.js +9 -0
- package/dist/core/web/public/next/assets/CommandWorkflowForm-DtMTY_QW.js.map +1 -0
- package/dist/core/web/public/next/assets/CommandWorkflowPicker-L7d1Jdq6.js +3 -0
- package/dist/core/web/public/next/assets/CommandWorkflowPicker-L7d1Jdq6.js.map +1 -0
- package/dist/core/web/public/next/assets/CompareDialog-jR3SHebZ.js +4 -0
- package/dist/core/web/public/next/assets/CompareDialog-jR3SHebZ.js.map +1 -0
- package/dist/core/web/public/next/assets/ComputerControl-CtR9iyrl.js +2 -0
- package/dist/core/web/public/next/assets/ComputerControl-CtR9iyrl.js.map +1 -0
- package/dist/core/web/public/next/assets/ConfirmDialog-BLa9SQCD.js +2 -0
- package/dist/core/web/public/next/assets/ConfirmDialog-BLa9SQCD.js.map +1 -0
- package/dist/core/web/public/next/assets/DeleteChatDialog-C0_9RguO.js +2 -0
- package/dist/core/web/public/next/assets/DeleteChatDialog-C0_9RguO.js.map +1 -0
- package/dist/core/web/public/next/assets/DevinStopDialog-DY-VC_Bu.js +2 -0
- package/dist/core/web/public/next/assets/DevinStopDialog-DY-VC_Bu.js.map +1 -0
- package/dist/core/web/public/next/assets/Dialog-kQIBpFXz.js +2 -0
- package/dist/core/web/public/next/assets/Dialog-kQIBpFXz.js.map +1 -0
- package/dist/core/web/public/next/assets/DiffPane-DmsgpucH.js +2 -0
- package/dist/core/web/public/next/assets/DiffPane-DmsgpucH.js.map +1 -0
- package/dist/core/web/public/next/assets/DiffViewer-CwFSlxK-.js +2 -0
- package/dist/core/web/public/next/assets/DiffViewer-CwFSlxK-.js.map +1 -0
- package/dist/core/web/public/next/assets/DockHost-DBcYCg-w.js +2 -0
- package/dist/core/web/public/next/assets/DockHost-DBcYCg-w.js.map +1 -0
- package/dist/core/web/public/next/assets/EmptyState-CtcWT61K.js +2 -0
- package/dist/core/web/public/next/assets/EmptyState-CtcWT61K.js.map +1 -0
- package/dist/core/web/public/next/assets/Epistemic-Cu1zgz4Q.js +2 -0
- package/dist/core/web/public/next/assets/Epistemic-Cu1zgz4Q.js.map +1 -0
- package/dist/core/web/public/next/assets/EvidenceTimeline-DiJQpO-t.js +2 -0
- package/dist/core/web/public/next/assets/EvidenceTimeline-DiJQpO-t.js.map +1 -0
- package/dist/core/web/public/next/assets/FilesPane-Ce6RAzbo.js +2 -0
- package/dist/core/web/public/next/assets/FilesPane-Ce6RAzbo.js.map +1 -0
- package/dist/core/web/public/next/assets/FleetScreen-fubswj5A.js +2 -0
- package/dist/core/web/public/next/assets/FleetScreen-fubswj5A.js.map +1 -0
- package/dist/core/web/public/next/assets/FleetSection-DWxpkefM.js +5 -0
- package/dist/core/web/public/next/assets/FleetSection-DWxpkefM.js.map +1 -0
- package/dist/core/web/public/next/assets/Funnel-E6icZQgx.js +2 -0
- package/dist/core/web/public/next/assets/Funnel-E6icZQgx.js.map +1 -0
- package/dist/core/web/public/next/assets/GearTray-ODBhoI9j.js +2 -0
- package/dist/core/web/public/next/assets/GearTray-ODBhoI9j.js.map +1 -0
- package/dist/core/web/public/next/assets/GitDialogs-DjpWtBzX.js +2 -0
- package/dist/core/web/public/next/assets/GitDialogs-DjpWtBzX.js.map +1 -0
- package/dist/core/web/public/next/assets/GrowthSection-Cf50Ly0u.js +3 -0
- package/dist/core/web/public/next/assets/GrowthSection-Cf50Ly0u.js.map +1 -0
- package/dist/core/web/public/next/assets/HandoffDialog-DlUjSuxs.js +2 -0
- package/dist/core/web/public/next/assets/HandoffDialog-DlUjSuxs.js.map +1 -0
- package/dist/core/web/public/next/assets/HomeBody-DYnEbH-_.js +3 -0
- package/dist/core/web/public/next/assets/HomeBody-DYnEbH-_.js.map +1 -0
- package/dist/core/web/public/next/assets/HomeSeats-BDWMFY7Q.js +2 -0
- package/dist/core/web/public/next/assets/HomeSeats-BDWMFY7Q.js.map +1 -0
- package/dist/core/web/public/next/assets/Input-CJnHvtwe.js +2 -0
- package/dist/core/web/public/next/assets/Input-CJnHvtwe.js.map +1 -0
- package/dist/core/web/public/next/assets/LaunchDialog-DyX6d-h-.js +9 -0
- package/dist/core/web/public/next/assets/LaunchDialog-DyX6d-h-.js.map +1 -0
- package/dist/core/web/public/next/assets/LeaderCard-BDAKrxHa.js +2 -0
- package/dist/core/web/public/next/assets/LeaderCard-BDAKrxHa.js.map +1 -0
- package/dist/core/web/public/next/assets/LeaderConversation-DHI2fjhw.js +3 -0
- package/dist/core/web/public/next/assets/LeaderConversation-DHI2fjhw.js.map +1 -0
- package/dist/core/web/public/next/assets/LeaderScreen-_PwOiKas.js +2 -0
- package/dist/core/web/public/next/assets/LeaderScreen-_PwOiKas.js.map +1 -0
- package/dist/core/web/public/next/assets/LessonsPanel-Sh5Hx51J.js +2 -0
- package/dist/core/web/public/next/assets/LessonsPanel-Sh5Hx51J.js.map +1 -0
- package/dist/core/web/public/next/assets/LiveTimer-CdTqqC-y.js +2 -0
- package/dist/core/web/public/next/assets/LiveTimer-CdTqqC-y.js.map +1 -0
- package/dist/core/web/public/next/assets/LocalSeatBadge-bCbEkJgv.js +2 -0
- package/dist/core/web/public/next/assets/LocalSeatBadge-bCbEkJgv.js.map +1 -0
- package/dist/core/web/public/next/assets/MatrixHeatmap-BB22t9cL.js +2 -0
- package/dist/core/web/public/next/assets/MatrixHeatmap-BB22t9cL.js.map +1 -0
- package/dist/core/web/public/next/assets/McpSection-BpV1z4P5.js +2 -0
- package/dist/core/web/public/next/assets/McpSection-BpV1z4P5.js.map +1 -0
- package/dist/core/web/public/next/assets/MessageMarkdown-B_EEMPZ6.js +3 -0
- package/dist/core/web/public/next/assets/MessageMarkdown-B_EEMPZ6.js.map +1 -0
- package/dist/core/web/public/next/assets/MessageMarkdownRenderer-B6bFE970.js +72 -0
- package/dist/core/web/public/next/assets/MessageMarkdownRenderer-B6bFE970.js.map +1 -0
- package/dist/core/web/public/next/assets/Meter-Cm15WZWf.js +2 -0
- package/dist/core/web/public/next/assets/Meter-Cm15WZWf.js.map +1 -0
- package/dist/core/web/public/next/assets/MicButton-33E5Ppnu.js +2 -0
- package/dist/core/web/public/next/assets/MicButton-33E5Ppnu.js.map +1 -0
- package/dist/core/web/public/next/assets/MindSection-GBqYaZLx.js +3 -0
- package/dist/core/web/public/next/assets/MindSection-GBqYaZLx.js.map +1 -0
- package/dist/core/web/public/next/assets/MobileComposer-DrSwZPIn.js +2 -0
- package/dist/core/web/public/next/assets/MobileComposer-DrSwZPIn.js.map +1 -0
- package/dist/core/web/public/next/assets/MobileGuardSheet-BnAxk-ae.js +2 -0
- package/dist/core/web/public/next/assets/MobileGuardSheet-BnAxk-ae.js.map +1 -0
- package/dist/core/web/public/next/assets/MobileRuntime-Cusn1BWx.js +3 -0
- package/dist/core/web/public/next/assets/MobileRuntime-Cusn1BWx.js.map +1 -0
- package/dist/core/web/public/next/assets/MoreScreen-Cu0xtG6f.js +2 -0
- package/dist/core/web/public/next/assets/MoreScreen-Cu0xtG6f.js.map +1 -0
- package/dist/core/web/public/next/assets/MultiModelBar-_qyTHa1F.js +7 -0
- package/dist/core/web/public/next/assets/MultiModelBar-_qyTHa1F.js.map +1 -0
- package/dist/core/web/public/next/assets/MutationTokenDialog-uyP-k0p1.js +2 -0
- package/dist/core/web/public/next/assets/MutationTokenDialog-uyP-k0p1.js.map +1 -0
- package/dist/core/web/public/next/assets/NeedsYouDrawer-X_RbeWMF.js +3 -0
- package/dist/core/web/public/next/assets/NeedsYouDrawer-X_RbeWMF.js.map +1 -0
- package/dist/core/web/public/next/assets/NeedsYouList-B1SUdYu6.js +2 -0
- package/dist/core/web/public/next/assets/NeedsYouList-B1SUdYu6.js.map +1 -0
- package/dist/core/web/public/next/assets/NeedsYouScreen-DpSxoqCc.js +2 -0
- package/dist/core/web/public/next/assets/NeedsYouScreen-DpSxoqCc.js.map +1 -0
- package/dist/core/web/public/next/assets/NewAgentScreen-BoVhP7uR.js +2 -0
- package/dist/core/web/public/next/assets/NewAgentScreen-BoVhP7uR.js.map +1 -0
- package/dist/core/web/public/next/assets/NewChatDialog-Ch_TBnim.js +4 -0
- package/dist/core/web/public/next/assets/NewChatDialog-Ch_TBnim.js.map +1 -0
- package/dist/core/web/public/next/assets/OnboardingFlow-D5eqnjr0.js +3 -0
- package/dist/core/web/public/next/assets/OnboardingFlow-D5eqnjr0.js.map +1 -0
- package/dist/core/web/public/next/assets/OnboardingGate-Dzx97k2x.js +3 -0
- package/dist/core/web/public/next/assets/OnboardingGate-Dzx97k2x.js.map +1 -0
- package/dist/core/web/public/next/assets/PlaybooksSection-D2oX2sL3.js +9 -0
- package/dist/core/web/public/next/assets/PlaybooksSection-D2oX2sL3.js.map +1 -0
- package/dist/core/web/public/next/assets/PreviewPane-AxOJgJQm.js +2 -0
- package/dist/core/web/public/next/assets/PreviewPane-AxOJgJQm.js.map +1 -0
- package/dist/core/web/public/next/assets/ProviderLogo-CDw9LZmh.js +2 -0
- package/dist/core/web/public/next/assets/ProviderLogo-CDw9LZmh.js.map +1 -0
- package/dist/core/web/public/next/assets/RailStatus-DW2ceuC0.js +2 -0
- package/dist/core/web/public/next/assets/RailStatus-DW2ceuC0.js.map +1 -0
- package/dist/core/web/public/next/assets/ReasoningPane-C9jRpr8d.js +2 -0
- package/dist/core/web/public/next/assets/ReasoningPane-C9jRpr8d.js.map +1 -0
- package/dist/core/web/public/next/assets/ReasoningSheet-uc3BnfVA.js +2 -0
- package/dist/core/web/public/next/assets/ReasoningSheet-uc3BnfVA.js.map +1 -0
- package/dist/core/web/public/next/assets/RefreshIndicator-Di6IeZNh.js +2 -0
- package/dist/core/web/public/next/assets/RefreshIndicator-Di6IeZNh.js.map +1 -0
- package/dist/core/web/public/next/assets/RemoteMobileApp-H0YSq55U.js +2 -0
- package/dist/core/web/public/next/assets/RemoteMobileApp-H0YSq55U.js.map +1 -0
- package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-CHDEHAnq.js +7 -0
- package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-CHDEHAnq.js.map +1 -0
- package/dist/core/web/public/next/assets/ResourcesChrome-DIle5rXp.js +3 -0
- package/dist/core/web/public/next/assets/ResourcesChrome-DIle5rXp.js.map +1 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-DbTLNuGQ.js +3 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-DbTLNuGQ.js.map +1 -0
- package/dist/core/web/public/next/assets/RouteErrorBoundary-CbAyWP7h.js +2 -0
- package/dist/core/web/public/next/assets/RouteErrorBoundary-CbAyWP7h.js.map +1 -0
- package/dist/core/web/public/next/assets/RunInCloudAction-HD1AX0SJ.js +2 -0
- package/dist/core/web/public/next/assets/RunInCloudAction-HD1AX0SJ.js.map +1 -0
- package/dist/core/web/public/next/assets/RunInDevinAction-BkzQlbO3.js +2 -0
- package/dist/core/web/public/next/assets/RunInDevinAction-BkzQlbO3.js.map +1 -0
- package/dist/core/web/public/next/assets/ScreenHost-BPtOP6LJ.js +3 -0
- package/dist/core/web/public/next/assets/ScreenHost-BPtOP6LJ.js.map +1 -0
- package/dist/core/web/public/next/assets/SeatSelector-D8EZXz9a.js +3 -0
- package/dist/core/web/public/next/assets/SeatSelector-D8EZXz9a.js.map +1 -0
- package/dist/core/web/public/next/assets/Segmented-pAErxjR4.js +2 -0
- package/dist/core/web/public/next/assets/Segmented-pAErxjR4.js.map +1 -0
- package/dist/core/web/public/next/assets/Select-Css6V7wH.js +2 -0
- package/dist/core/web/public/next/assets/Select-Css6V7wH.js.map +1 -0
- package/dist/core/web/public/next/assets/SessionGate-DgvYLkfM.js +2 -0
- package/dist/core/web/public/next/assets/SessionGate-DgvYLkfM.js.map +1 -0
- package/dist/core/web/public/next/assets/SessionInsightChip-DwPsk2Kl.js +2 -0
- package/dist/core/web/public/next/assets/SessionInsightChip-DwPsk2Kl.js.map +1 -0
- package/dist/core/web/public/next/assets/SessionSearch-CHpNzY8i.js +2 -0
- package/dist/core/web/public/next/assets/SessionSearch-CHpNzY8i.js.map +1 -0
- package/dist/core/web/public/next/assets/SettingsSection-p79CGbgs.js +2 -0
- package/dist/core/web/public/next/assets/SettingsSection-p79CGbgs.js.map +1 -0
- package/dist/core/web/public/next/assets/SetupChecklist-1gybss1n.js +2 -0
- package/dist/core/web/public/next/assets/SetupChecklist-1gybss1n.js.map +1 -0
- package/dist/core/web/public/next/assets/ShadowDecisions-NL2qNt90.js +3 -0
- package/dist/core/web/public/next/assets/ShadowDecisions-NL2qNt90.js.map +1 -0
- package/dist/core/web/public/next/assets/Sheet-1ENtyVoT.js +2 -0
- package/dist/core/web/public/next/assets/Sheet-1ENtyVoT.js.map +1 -0
- package/dist/core/web/public/next/assets/ShortcutsOverlay-Beq9s8p4.js +2 -0
- package/dist/core/web/public/next/assets/ShortcutsOverlay-Beq9s8p4.js.map +1 -0
- package/dist/core/web/public/next/assets/Sidebar-BuMV-ulX.js +3 -0
- package/dist/core/web/public/next/assets/Sidebar-BuMV-ulX.js.map +1 -0
- package/dist/core/web/public/next/assets/SkipToContent-DxOcfOLL.js +2 -0
- package/dist/core/web/public/next/assets/SkipToContent-DxOcfOLL.js.map +1 -0
- package/dist/core/web/public/next/assets/Slider-DY1bch2c.js +2 -0
- package/dist/core/web/public/next/assets/Slider-DY1bch2c.js.map +1 -0
- package/dist/core/web/public/next/assets/SourcesPane-D1RA-tY4.js +2 -0
- package/dist/core/web/public/next/assets/SourcesPane-D1RA-tY4.js.map +1 -0
- package/dist/core/web/public/next/assets/SourcesPanel-WitD82Au.js +2 -0
- package/dist/core/web/public/next/assets/SourcesPanel-WitD82Au.js.map +1 -0
- package/dist/core/web/public/next/assets/StatTile-BE2HnwNG.js +2 -0
- package/dist/core/web/public/next/assets/StatTile-BE2HnwNG.js.map +1 -0
- package/dist/core/web/public/next/assets/StatusBadge-RjXOZERa.js +2 -0
- package/dist/core/web/public/next/assets/StatusBadge-RjXOZERa.js.map +1 -0
- package/dist/core/web/public/next/assets/StepBand-iT1eplJ_.js +2 -0
- package/dist/core/web/public/next/assets/StepBand-iT1eplJ_.js.map +1 -0
- package/dist/core/web/public/next/assets/Surface-B1n3X1cF.js +2 -0
- package/dist/core/web/public/next/assets/Surface-B1n3X1cF.js.map +1 -0
- package/dist/core/web/public/next/assets/Swimlane-B2q7tuCp.js +2 -0
- package/dist/core/web/public/next/assets/Swimlane-B2q7tuCp.js.map +1 -0
- package/dist/core/web/public/next/assets/Switch-B6Jn8y6M.js +2 -0
- package/dist/core/web/public/next/assets/Switch-B6Jn8y6M.js.map +1 -0
- package/dist/core/web/public/next/assets/Tag-ils_o3n7.js +2 -0
- package/dist/core/web/public/next/assets/Tag-ils_o3n7.js.map +1 -0
- package/dist/core/web/public/next/assets/TerminalPane-BhQiOFqe.js +26 -0
- package/dist/core/web/public/next/assets/TerminalPane-BhQiOFqe.js.map +1 -0
- package/dist/core/web/public/next/assets/TerminalPane-D2L17_-J.js +3 -0
- package/dist/core/web/public/next/assets/TerminalPane-D2L17_-J.js.map +1 -0
- package/dist/core/web/public/next/assets/ThinkingBlock-DgBPlHBO.js +2 -0
- package/dist/core/web/public/next/assets/ThinkingBlock-DgBPlHBO.js.map +1 -0
- package/dist/core/web/public/next/assets/Transcript-DZ96MnR7.css +1 -0
- package/dist/core/web/public/next/assets/Transcript.module-DD0MFIIy.js +2 -0
- package/dist/core/web/public/next/assets/Transcript.module-DD0MFIIy.js.map +1 -0
- package/dist/core/web/public/next/assets/UniverseConsoleApp-CJXF3bKW.js +2 -0
- package/dist/core/web/public/next/assets/UniverseConsoleApp-CJXF3bKW.js.map +1 -0
- package/dist/core/web/public/next/assets/UniverseView-Cbfp6Daj.js +9 -0
- package/dist/core/web/public/next/assets/UniverseView-Cbfp6Daj.js.map +1 -0
- package/dist/core/web/public/next/assets/UsageSection-DHbdb-S3.js +3 -0
- package/dist/core/web/public/next/assets/UsageSection-DHbdb-S3.js.map +1 -0
- package/dist/core/web/public/next/assets/UsePlaybookAction-B3on-MuD.js +2 -0
- package/dist/core/web/public/next/assets/UsePlaybookAction-B3on-MuD.js.map +1 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-CyRa9lh1.js +3 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-CyRa9lh1.js.map +1 -0
- package/dist/core/web/public/next/assets/VerseMobileApp-DdL64BfN.js +3 -0
- package/dist/core/web/public/next/assets/VerseMobileApp-DdL64BfN.js.map +1 -0
- package/dist/core/web/public/next/assets/VerseShared-8n7hxr-e.js +2 -0
- package/dist/core/web/public/next/assets/VerseShared-8n7hxr-e.js.map +1 -0
- package/dist/core/web/public/next/assets/VoiceHud-BXfe23my.js +2 -0
- package/dist/core/web/public/next/assets/VoiceHud-BXfe23my.js.map +1 -0
- package/dist/core/web/public/next/assets/VoiceInput-D191210j.js +2 -0
- package/dist/core/web/public/next/assets/VoiceInput-D191210j.js.map +1 -0
- package/dist/core/web/public/next/assets/WikiSection-D-aTEDA2.css +1 -0
- package/dist/core/web/public/next/assets/WikiSection-DFvGhkF6.js +2 -0
- package/dist/core/web/public/next/assets/WikiSection-DFvGhkF6.js.map +1 -0
- package/dist/core/web/public/next/assets/Workspace-Bcz74TPB.js +6 -0
- package/dist/core/web/public/next/assets/Workspace-Bcz74TPB.js.map +1 -0
- package/dist/core/web/public/next/assets/actions-C0D3tGtQ.js +2 -0
- package/dist/core/web/public/next/assets/actions-C0D3tGtQ.js.map +1 -0
- package/dist/core/web/public/next/assets/agent-tools-client-Mgwa14ux.js +2 -0
- package/dist/core/web/public/next/assets/agent-tools-client-Mgwa14ux.js.map +1 -0
- package/dist/core/web/public/next/assets/agents-focus-D2fGa_4z.js +2 -0
- package/dist/core/web/public/next/assets/agents-focus-D2fGa_4z.js.map +1 -0
- package/dist/core/web/public/next/assets/app-version-DINpmCFl.js +2 -0
- package/dist/core/web/public/next/assets/app-version-DINpmCFl.js.map +1 -0
- package/dist/core/web/public/next/assets/apps-model-BuxJ4qXU.js +2 -0
- package/dist/core/web/public/next/assets/apps-model-BuxJ4qXU.js.map +1 -0
- package/dist/core/web/public/next/assets/ask-seat-Dcpk0CIF.js +2 -0
- package/dist/core/web/public/next/assets/ask-seat-Dcpk0CIF.js.map +1 -0
- package/dist/core/web/public/next/assets/authority-model-DiQlAl6i.js +2 -0
- package/dist/core/web/public/next/assets/authority-model-DiQlAl6i.js.map +1 -0
- package/dist/core/web/public/next/assets/automations-focus-Drncwmjo.js +2 -0
- package/dist/core/web/public/next/assets/automations-focus-Drncwmjo.js.map +1 -0
- package/dist/core/web/public/next/assets/budget-queries-Bq8E10-x.js +2 -0
- package/dist/core/web/public/next/assets/budget-queries-Bq8E10-x.js.map +1 -0
- package/dist/core/web/public/next/assets/capacity-strip-model-w-CrM5cb.js +2 -0
- package/dist/core/web/public/next/assets/capacity-strip-model-w-CrM5cb.js.map +1 -0
- package/dist/core/web/public/next/assets/charts-Df70a5lC.js +2 -0
- package/dist/core/web/public/next/assets/charts-Df70a5lC.js.map +1 -0
- package/dist/core/web/public/next/assets/chat-pane-data-DTU9zx7p.js +2 -0
- package/dist/core/web/public/next/assets/chat-pane-data-DTU9zx7p.js.map +1 -0
- package/dist/core/web/public/next/assets/checkpoint-queries-CnVckizB.js +2 -0
- package/dist/core/web/public/next/assets/checkpoint-queries-CnVckizB.js.map +1 -0
- package/dist/core/web/public/next/assets/cloud-queries-CcwKDQQR.js +2 -0
- package/dist/core/web/public/next/assets/cloud-queries-CcwKDQQR.js.map +1 -0
- package/dist/core/web/public/next/assets/command-catalog-BVXehx9p.js +2 -0
- package/dist/core/web/public/next/assets/command-catalog-BVXehx9p.js.map +1 -0
- package/dist/core/web/public/next/assets/composer-queries-kl4Qu4ov.js +2 -0
- package/dist/core/web/public/next/assets/composer-queries-kl4Qu4ov.js.map +1 -0
- package/dist/core/web/public/next/assets/connectivity-BPumEJvI.js +2 -0
- package/dist/core/web/public/next/assets/connectivity-BPumEJvI.js.map +1 -0
- package/dist/core/web/public/next/assets/context-queries-D9KmusOQ.js +2 -0
- package/dist/core/web/public/next/assets/context-queries-D9KmusOQ.js.map +1 -0
- package/dist/core/web/public/next/assets/control-queries-CWyOtMUt.js +2 -0
- package/dist/core/web/public/next/assets/control-queries-CWyOtMUt.js.map +1 -0
- package/dist/core/web/public/next/assets/copy-setup-BZ1iT71M.js +2 -0
- package/dist/core/web/public/next/assets/copy-setup-BZ1iT71M.js.map +1 -0
- package/dist/core/web/public/next/assets/deep-link-DS0fbWVh.js +2 -0
- package/dist/core/web/public/next/assets/deep-link-DS0fbWVh.js.map +1 -0
- package/dist/core/web/public/next/assets/device-permissions-D09Bt0Pq.js +2 -0
- package/dist/core/web/public/next/assets/device-permissions-D09Bt0Pq.js.map +1 -0
- package/dist/core/web/public/next/assets/devin-queries-DURIM9b4.js +2 -0
- package/dist/core/web/public/next/assets/devin-queries-DURIM9b4.js.map +1 -0
- package/dist/core/web/public/next/assets/dock-icons-CgxRg9PW.js +2 -0
- package/dist/core/web/public/next/assets/dock-icons-CgxRg9PW.js.map +1 -0
- package/dist/core/web/public/next/assets/dock-panes-k9k0Nb7F.js +2 -0
- package/dist/core/web/public/next/assets/dock-panes-k9k0Nb7F.js.map +1 -0
- package/dist/core/web/public/next/assets/fleet-control-queries-B5itt_Zs.js +2 -0
- package/dist/core/web/public/next/assets/fleet-control-queries-B5itt_Zs.js.map +1 -0
- package/dist/core/web/public/next/assets/fleet-queries-BfG7HzPg.js +2 -0
- package/dist/core/web/public/next/assets/fleet-queries-BfG7HzPg.js.map +1 -0
- package/dist/core/web/public/next/assets/fleet-state-C3cbNM2V.js +3 -0
- package/dist/core/web/public/next/assets/fleet-state-C3cbNM2V.js.map +1 -0
- package/dist/core/web/public/next/assets/focus-trap-BZrKstmG.js +2 -0
- package/dist/core/web/public/next/assets/focus-trap-BZrKstmG.js.map +1 -0
- package/dist/core/web/public/next/assets/git-model-Cifb_Fej.js +5 -0
- package/dist/core/web/public/next/assets/git-model-Cifb_Fej.js.map +1 -0
- package/dist/core/web/public/next/assets/global-7hs7NyAO.js +3 -0
- package/dist/core/web/public/next/assets/global-7hs7NyAO.js.map +1 -0
- package/dist/core/web/public/next/assets/guarded-action-B436fLZM.js +3 -0
- package/dist/core/web/public/next/assets/guarded-action-B436fLZM.js.map +1 -0
- package/dist/core/web/public/next/assets/guarded-runners-BKW2AzKm.js +2 -0
- package/dist/core/web/public/next/assets/guarded-runners-BKW2AzKm.js.map +1 -0
- package/dist/core/web/public/next/assets/health-queries-BIrXejEb.js +2 -0
- package/dist/core/web/public/next/assets/health-queries-BIrXejEb.js.map +1 -0
- package/dist/core/web/public/next/assets/icons-D-25SVjm.js +2 -0
- package/dist/core/web/public/next/assets/icons-D-25SVjm.js.map +1 -0
- package/dist/core/web/public/next/assets/index-BMfejJ9u.js +11 -0
- package/dist/core/web/public/next/assets/index-BMfejJ9u.js.map +1 -0
- package/dist/core/web/public/next/assets/jev-queries-C0e3k0w_.js +2 -0
- package/dist/core/web/public/next/assets/jev-queries-C0e3k0w_.js.map +1 -0
- package/dist/core/web/public/next/assets/ladder-queries-D0IO6okB.js +2 -0
- package/dist/core/web/public/next/assets/ladder-queries-D0IO6okB.js.map +1 -0
- package/dist/core/web/public/next/assets/leader-focus-By_cVWdr.js +2 -0
- package/dist/core/web/public/next/assets/leader-focus-By_cVWdr.js.map +1 -0
- package/dist/core/web/public/next/assets/live-model-D9KHB4SV.js +2 -0
- package/dist/core/web/public/next/assets/live-model-D9KHB4SV.js.map +1 -0
- package/dist/core/web/public/next/assets/mobile-actions-B2vI7Rp-.js +2 -0
- package/dist/core/web/public/next/assets/mobile-actions-B2vI7Rp-.js.map +1 -0
- package/dist/core/web/public/next/assets/mobile-toast-BiBjw1hY.js +2 -0
- package/dist/core/web/public/next/assets/mobile-toast-BiBjw1hY.js.map +1 -0
- package/dist/core/web/public/next/assets/multimodel-flows-D4rRL-nu.js +7 -0
- package/dist/core/web/public/next/assets/multimodel-flows-D4rRL-nu.js.map +1 -0
- package/dist/core/web/public/next/assets/multimodel-queries-B3ZY2aWQ.js +2 -0
- package/dist/core/web/public/next/assets/multimodel-queries-B3ZY2aWQ.js.map +1 -0
- package/dist/core/web/public/next/assets/mutations-MOivZTO7.js +2 -0
- package/dist/core/web/public/next/assets/mutations-MOivZTO7.js.map +1 -0
- package/dist/core/web/public/next/assets/nav-BlWTsG_5.js +2 -0
- package/dist/core/web/public/next/assets/nav-BlWTsG_5.js.map +1 -0
- package/dist/core/web/public/next/assets/needs-you-actions-BzoGPu4Q.js +2 -0
- package/dist/core/web/public/next/assets/needs-you-actions-BzoGPu4Q.js.map +1 -0
- package/dist/core/web/public/next/assets/needs-you-model-BOm7eJaQ.js +2 -0
- package/dist/core/web/public/next/assets/needs-you-model-BOm7eJaQ.js.map +1 -0
- package/dist/core/web/public/next/assets/open-terminal-CAuSMTFo.js +2 -0
- package/dist/core/web/public/next/assets/open-terminal-CAuSMTFo.js.map +1 -0
- package/dist/core/web/public/next/assets/open-terminal-request-D3jNbBOp.js +2 -0
- package/dist/core/web/public/next/assets/open-terminal-request-D3jNbBOp.js.map +1 -0
- package/dist/core/web/public/next/assets/overnight-queries-DpCYfw0d.js +2 -0
- package/dist/core/web/public/next/assets/overnight-queries-DpCYfw0d.js.map +1 -0
- package/dist/core/web/public/next/assets/palette-handoff-Hqp9I68R.js +2 -0
- package/dist/core/web/public/next/assets/palette-handoff-Hqp9I68R.js.map +1 -0
- package/dist/core/web/public/next/assets/panes-AG63rhpM.js +3 -0
- package/dist/core/web/public/next/assets/panes-AG63rhpM.js.map +1 -0
- package/dist/core/web/public/next/assets/path-display-Dv94FG1y.js +2 -0
- package/dist/core/web/public/next/assets/path-display-Dv94FG1y.js.map +1 -0
- package/dist/core/web/public/next/assets/playbook-composer-BxEtjsIW.js +2 -0
- package/dist/core/web/public/next/assets/playbook-composer-BxEtjsIW.js.map +1 -0
- package/dist/core/web/public/next/assets/playbook-focus-BB1SYpsW.js +2 -0
- package/dist/core/web/public/next/assets/playbook-focus-BB1SYpsW.js.map +1 -0
- package/dist/core/web/public/next/assets/playbooks-queries-DtWLQrwZ.js +2 -0
- package/dist/core/web/public/next/assets/playbooks-queries-DtWLQrwZ.js.map +1 -0
- package/dist/core/web/public/next/assets/preloaded-D89lETD0.js +2 -0
- package/dist/core/web/public/next/assets/preloaded-D89lETD0.js.map +1 -0
- package/dist/core/web/public/next/assets/primitives-DXJl-rSe.js +1 -0
- package/dist/core/web/public/next/assets/pwa-CFctEg6F.js +2 -0
- package/dist/core/web/public/next/assets/pwa-CFctEg6F.js.map +1 -0
- package/dist/core/web/public/next/assets/queries-BLmYe69g.js +2 -0
- package/dist/core/web/public/next/assets/queries-BLmYe69g.js.map +1 -0
- package/dist/core/web/public/next/assets/reasoning-pref-D4t6eFBc.js +2 -0
- package/dist/core/web/public/next/assets/reasoning-pref-D4t6eFBc.js.map +1 -0
- package/dist/core/web/public/next/assets/remote-session-BdCVlRRZ.js +3 -0
- package/dist/core/web/public/next/assets/remote-session-BdCVlRRZ.js.map +1 -0
- package/dist/core/web/public/next/assets/resolved-store-B1xwZl7x.js +2 -0
- package/dist/core/web/public/next/assets/resolved-store-B1xwZl7x.js.map +1 -0
- package/dist/core/web/public/next/assets/resources-queries-BaSf2hP1.js +2 -0
- package/dist/core/web/public/next/assets/resources-queries-BaSf2hP1.js.map +1 -0
- package/dist/core/web/public/next/assets/reveal-anchor-zUWG9d5W.js +2 -0
- package/dist/core/web/public/next/assets/reveal-anchor-zUWG9d5W.js.map +1 -0
- package/dist/core/web/public/next/assets/sheet-PQfgBlM5.js +2 -0
- package/dist/core/web/public/next/assets/sheet-PQfgBlM5.js.map +1 -0
- package/dist/core/web/public/next/assets/slots-DJafWFZK.js +3 -0
- package/dist/core/web/public/next/assets/slots-DJafWFZK.js.map +1 -0
- package/dist/core/web/public/next/assets/sources-queries-BcB711fd.js +4 -0
- package/dist/core/web/public/next/assets/sources-queries-BcB711fd.js.map +1 -0
- package/dist/core/web/public/next/assets/sse-Cp2z2nU_.js +2 -0
- package/dist/core/web/public/next/assets/sse-Cp2z2nU_.js.map +1 -0
- package/dist/core/web/public/next/assets/stub-panes.module-blrN0yxn.js +3 -0
- package/dist/core/web/public/next/assets/stub-panes.module-blrN0yxn.js.map +1 -0
- package/dist/core/web/public/next/assets/surface-data-D-fFBmZZ.js +2 -0
- package/dist/core/web/public/next/assets/surface-data-D-fFBmZZ.js.map +1 -0
- package/dist/core/web/public/next/assets/surface-prefetch-Q1iAxBuz.js +2 -0
- package/dist/core/web/public/next/assets/surface-prefetch-Q1iAxBuz.js.map +1 -0
- package/dist/core/web/public/next/assets/tasks-model-Larlwtqy.js +2 -0
- package/dist/core/web/public/next/assets/tasks-model-Larlwtqy.js.map +1 -0
- package/dist/core/web/public/next/assets/terminal-client-kp1CT3x-.js +2 -0
- package/dist/core/web/public/next/assets/terminal-client-kp1CT3x-.js.map +1 -0
- package/dist/core/web/public/next/assets/terminal-icons-BxToOayr.js +2 -0
- package/dist/core/web/public/next/assets/terminal-icons-BxToOayr.js.map +1 -0
- package/dist/core/web/public/next/assets/terminal-view-CSxX-xjM.js +6 -0
- package/dist/core/web/public/next/assets/terminal-view-CSxX-xjM.js.map +1 -0
- package/dist/core/web/public/next/assets/thread-data-bh8JfvXs.js +2 -0
- package/dist/core/web/public/next/assets/thread-data-bh8JfvXs.js.map +1 -0
- package/dist/core/web/public/next/assets/tool-semantics-xF0Fw2Ck.js +8 -0
- package/dist/core/web/public/next/assets/tool-semantics-xF0Fw2Ck.js.map +1 -0
- package/dist/core/web/public/next/assets/turn-files-fJGOtf4K.js +2 -0
- package/dist/core/web/public/next/assets/turn-files-fJGOtf4K.js.map +1 -0
- package/dist/core/web/public/next/assets/ui-parts-C9HJZZ3G.js +2 -0
- package/dist/core/web/public/next/assets/ui-parts-C9HJZZ3G.js.map +1 -0
- package/dist/core/web/public/next/assets/usage-queries-7aq_WIzn.js +2 -0
- package/dist/core/web/public/next/assets/usage-queries-7aq_WIzn.js.map +1 -0
- package/dist/core/web/public/next/assets/use-chat-activity-C1AfctzC.js +2 -0
- package/dist/core/web/public/next/assets/use-chat-activity-C1AfctzC.js.map +1 -0
- package/dist/core/web/public/next/assets/use-guarded-action-DtO48djT.js +2 -0
- package/dist/core/web/public/next/assets/use-guarded-action-DtO48djT.js.map +1 -0
- package/dist/core/web/public/next/assets/use-ticker-C_3x5IxG.js +2 -0
- package/dist/core/web/public/next/assets/use-ticker-C_3x5IxG.js.map +1 -0
- package/dist/core/web/public/next/assets/use-token-gate-CVck1ObW.js +2 -0
- package/dist/core/web/public/next/assets/use-token-gate-CVck1ObW.js.map +1 -0
- package/dist/core/web/public/next/assets/useAutoSeat-DEuUBq8A.js +2 -0
- package/dist/core/web/public/next/assets/useAutoSeat-DEuUBq8A.js.map +1 -0
- package/dist/core/web/public/next/assets/useOnboarding-4DaPslDU.js +2 -0
- package/dist/core/web/public/next/assets/useOnboarding-4DaPslDU.js.map +1 -0
- package/dist/core/web/public/next/assets/useSeatHealth-BztO2ijd.js +2 -0
- package/dist/core/web/public/next/assets/useSeatHealth-BztO2ijd.js.map +1 -0
- package/dist/core/web/public/next/assets/useSeatsRefresh-DrYcVtb0.js +2 -0
- package/dist/core/web/public/next/assets/useSeatsRefresh-DrYcVtb0.js.map +1 -0
- package/dist/core/web/public/next/assets/useVerseSession-8gkt9BrB.js +2 -0
- package/dist/core/web/public/next/assets/useVerseSession-8gkt9BrB.js.map +1 -0
- package/dist/core/web/public/next/assets/useVerseTranscript-8DMWuHY_.js +2 -0
- package/dist/core/web/public/next/assets/useVerseTranscript-8DMWuHY_.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-bootstrap-query-CarqaoBI.js +2 -0
- package/dist/core/web/public/next/assets/verse-bootstrap-query-CarqaoBI.js.map +1 -0
- package/dist/core/web/public/next/assets/verse-icons-CqAqHAJV.js +2 -0
- package/dist/core/web/public/next/assets/verse-icons-CqAqHAJV.js.map +1 -0
- package/dist/core/web/public/next/assets/warmup-D7Q3XM98.js +3 -0
- package/dist/core/web/public/next/assets/warmup-D7Q3XM98.js.map +1 -0
- package/dist/core/web/public/next/assets/wiki-focus-cER8-UuY.js +2 -0
- package/dist/core/web/public/next/assets/wiki-focus-cER8-UuY.js.map +1 -0
- package/dist/core/web/public/next/index.html +1 -1
- package/dist/release-dependency-inventory.json +1 -1
- package/docs/QUICKSTART.md +7 -7
- package/package.json +2 -2
- package/dist/core/web/public/next/assets/ActionMenu--8HwMEm-.js +0 -2
- package/dist/core/web/public/next/assets/ActionMenu--8HwMEm-.js.map +0 -1
- package/dist/core/web/public/next/assets/Advanced-CI3lDlNx.js +0 -2
- package/dist/core/web/public/next/assets/Advanced-CI3lDlNx.js.map +0 -1
- package/dist/core/web/public/next/assets/AgentDetailScreen-DR9Mt6p3.js +0 -2
- package/dist/core/web/public/next/assets/AgentDetailScreen-DR9Mt6p3.js.map +0 -1
- package/dist/core/web/public/next/assets/AgentToolsSheet-B9NRMObI.js +0 -2
- package/dist/core/web/public/next/assets/AgentToolsSheet-B9NRMObI.js.map +0 -1
- package/dist/core/web/public/next/assets/AgentToolsStrip-Di-IPkGx.js +0 -2
- package/dist/core/web/public/next/assets/AgentToolsStrip-Di-IPkGx.js.map +0 -1
- package/dist/core/web/public/next/assets/AgentsScreen-nWyL2bRO.js +0 -2
- package/dist/core/web/public/next/assets/AgentsScreen-nWyL2bRO.js.map +0 -1
- package/dist/core/web/public/next/assets/AgentsSection-C0_0UI3x.js +0 -3
- package/dist/core/web/public/next/assets/AgentsSection-C0_0UI3x.js.map +0 -1
- package/dist/core/web/public/next/assets/App-CilLfKCx.js +0 -8
- package/dist/core/web/public/next/assets/App-CilLfKCx.js.map +0 -1
- package/dist/core/web/public/next/assets/AppsSection-CfSTk7HH.js +0 -2
- package/dist/core/web/public/next/assets/AppsSection-CfSTk7HH.js.map +0 -1
- package/dist/core/web/public/next/assets/AreaTrend-CxOhY1UF.js +0 -2
- package/dist/core/web/public/next/assets/AreaTrend-CxOhY1UF.js.map +0 -1
- package/dist/core/web/public/next/assets/AutomationsSection-DuW15eMu.js +0 -2
- package/dist/core/web/public/next/assets/AutomationsSection-DuW15eMu.js.map +0 -1
- package/dist/core/web/public/next/assets/AutonomyOffState-CcBeGaDE.js +0 -3
- package/dist/core/web/public/next/assets/AutonomyOffState-CcBeGaDE.js.map +0 -1
- package/dist/core/web/public/next/assets/AutonomySection-DhPlr1lu.js +0 -2
- package/dist/core/web/public/next/assets/AutonomySection-DhPlr1lu.js.map +0 -1
- package/dist/core/web/public/next/assets/AutonomyStatus-BjcxejFk.js +0 -2
- package/dist/core/web/public/next/assets/AutonomyStatus-BjcxejFk.js.map +0 -1
- package/dist/core/web/public/next/assets/BranchBar-CnUx6S00.js +0 -2
- package/dist/core/web/public/next/assets/BranchBar-CnUx6S00.js.map +0 -1
- package/dist/core/web/public/next/assets/BrowserPanel-BGT_M1U1.js +0 -7
- package/dist/core/web/public/next/assets/BrowserPanel-BGT_M1U1.js.map +0 -1
- package/dist/core/web/public/next/assets/BudgetControl-BrNZT9Zl.js +0 -2
- package/dist/core/web/public/next/assets/BudgetControl-BrNZT9Zl.js.map +0 -1
- package/dist/core/web/public/next/assets/Button-BiWLAmtW.js +0 -2
- package/dist/core/web/public/next/assets/Button-BiWLAmtW.js.map +0 -1
- package/dist/core/web/public/next/assets/CapacityStrip-DOgdqmgX.js +0 -2
- package/dist/core/web/public/next/assets/CapacityStrip-DOgdqmgX.js.map +0 -1
- package/dist/core/web/public/next/assets/ChangesPaneHost-B8Q4Pyuy.js +0 -16
- package/dist/core/web/public/next/assets/ChangesPaneHost-B8Q4Pyuy.js.map +0 -1
- package/dist/core/web/public/next/assets/ChartFrame-167_NcWd.js +0 -2
- package/dist/core/web/public/next/assets/ChartFrame-167_NcWd.js.map +0 -1
- package/dist/core/web/public/next/assets/ChatPanes-DfvfHTCR.js +0 -2
- package/dist/core/web/public/next/assets/ChatPanes-DfvfHTCR.js.map +0 -1
- package/dist/core/web/public/next/assets/ChatSection-DYWOyKNd.js +0 -3
- package/dist/core/web/public/next/assets/ChatSection-DYWOyKNd.js.map +0 -1
- package/dist/core/web/public/next/assets/ChecksPanel-_yhpFLzc.js +0 -5
- package/dist/core/web/public/next/assets/ChecksPanel-_yhpFLzc.js.map +0 -1
- package/dist/core/web/public/next/assets/CloudBudgetForm-CpA4WRlB.js +0 -2
- package/dist/core/web/public/next/assets/CloudBudgetForm-CpA4WRlB.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandPalette-CggT1MRe.js +0 -3
- package/dist/core/web/public/next/assets/CommandPalette-CggT1MRe.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandSection-BT6spVer.js +0 -3
- package/dist/core/web/public/next/assets/CommandSection-BT6spVer.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandWorkflowForm-D0UA0Tgb.js +0 -9
- package/dist/core/web/public/next/assets/CommandWorkflowForm-D0UA0Tgb.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandWorkflowPicker-DnhAyun2.js +0 -3
- package/dist/core/web/public/next/assets/CommandWorkflowPicker-DnhAyun2.js.map +0 -1
- package/dist/core/web/public/next/assets/CompareDialog-D_k5fpTZ.js +0 -4
- package/dist/core/web/public/next/assets/CompareDialog-D_k5fpTZ.js.map +0 -1
- package/dist/core/web/public/next/assets/ComputerControl-DehWe5qQ.js +0 -2
- package/dist/core/web/public/next/assets/ComputerControl-DehWe5qQ.js.map +0 -1
- package/dist/core/web/public/next/assets/ConfirmDialog-CZhofva3.js +0 -2
- package/dist/core/web/public/next/assets/ConfirmDialog-CZhofva3.js.map +0 -1
- package/dist/core/web/public/next/assets/DeleteChatDialog-C3pjjZ_M.js +0 -2
- package/dist/core/web/public/next/assets/DeleteChatDialog-C3pjjZ_M.js.map +0 -1
- package/dist/core/web/public/next/assets/DevinStopDialog-DAruALIH.js +0 -2
- package/dist/core/web/public/next/assets/DevinStopDialog-DAruALIH.js.map +0 -1
- package/dist/core/web/public/next/assets/Dialog-CH48_F95.js +0 -2
- package/dist/core/web/public/next/assets/Dialog-CH48_F95.js.map +0 -1
- package/dist/core/web/public/next/assets/DiffPane-CnW8cKzV.js +0 -2
- package/dist/core/web/public/next/assets/DiffPane-CnW8cKzV.js.map +0 -1
- package/dist/core/web/public/next/assets/DiffViewer-C33LbmiF.js +0 -2
- package/dist/core/web/public/next/assets/DiffViewer-C33LbmiF.js.map +0 -1
- package/dist/core/web/public/next/assets/DockHost-D7EdSe5a.js +0 -2
- package/dist/core/web/public/next/assets/DockHost-D7EdSe5a.js.map +0 -1
- package/dist/core/web/public/next/assets/EmptyState-7g6XvSCX.js +0 -2
- package/dist/core/web/public/next/assets/EmptyState-7g6XvSCX.js.map +0 -1
- package/dist/core/web/public/next/assets/Epistemic-CCymco01.js +0 -2
- package/dist/core/web/public/next/assets/Epistemic-CCymco01.js.map +0 -1
- package/dist/core/web/public/next/assets/EvidenceTimeline-BFb9JIYV.js +0 -2
- package/dist/core/web/public/next/assets/EvidenceTimeline-BFb9JIYV.js.map +0 -1
- package/dist/core/web/public/next/assets/FilesPane-iRh6nDlh.js +0 -2
- package/dist/core/web/public/next/assets/FilesPane-iRh6nDlh.js.map +0 -1
- package/dist/core/web/public/next/assets/FleetScreen-_GPa48bL.js +0 -2
- package/dist/core/web/public/next/assets/FleetScreen-_GPa48bL.js.map +0 -1
- package/dist/core/web/public/next/assets/FleetSection-Bon8yQlk.js +0 -5
- package/dist/core/web/public/next/assets/FleetSection-Bon8yQlk.js.map +0 -1
- package/dist/core/web/public/next/assets/Funnel-BVKqU0yd.js +0 -2
- package/dist/core/web/public/next/assets/Funnel-BVKqU0yd.js.map +0 -1
- package/dist/core/web/public/next/assets/GearTray-DqiVGoID.js +0 -2
- package/dist/core/web/public/next/assets/GearTray-DqiVGoID.js.map +0 -1
- package/dist/core/web/public/next/assets/GitDialogs-Da1EB6vD.js +0 -2
- package/dist/core/web/public/next/assets/GitDialogs-Da1EB6vD.js.map +0 -1
- package/dist/core/web/public/next/assets/GrowthSection-jz_5brSm.js +0 -3
- package/dist/core/web/public/next/assets/GrowthSection-jz_5brSm.js.map +0 -1
- package/dist/core/web/public/next/assets/HandoffDialog-Ciy556L3.js +0 -2
- package/dist/core/web/public/next/assets/HandoffDialog-Ciy556L3.js.map +0 -1
- package/dist/core/web/public/next/assets/HomeBody-CAZjhdMC.js +0 -3
- package/dist/core/web/public/next/assets/HomeBody-CAZjhdMC.js.map +0 -1
- package/dist/core/web/public/next/assets/HomeSeats-Bhmc1sIJ.js +0 -2
- package/dist/core/web/public/next/assets/HomeSeats-Bhmc1sIJ.js.map +0 -1
- package/dist/core/web/public/next/assets/Input-VOFXiCWT.js +0 -2
- package/dist/core/web/public/next/assets/Input-VOFXiCWT.js.map +0 -1
- package/dist/core/web/public/next/assets/LaunchDialog-ByJkKheq.js +0 -9
- package/dist/core/web/public/next/assets/LaunchDialog-ByJkKheq.js.map +0 -1
- package/dist/core/web/public/next/assets/LeaderCard-Dam6IfzD.js +0 -2
- package/dist/core/web/public/next/assets/LeaderCard-Dam6IfzD.js.map +0 -1
- package/dist/core/web/public/next/assets/LeaderConversation-DduNJP6H.js +0 -3
- package/dist/core/web/public/next/assets/LeaderConversation-DduNJP6H.js.map +0 -1
- package/dist/core/web/public/next/assets/LeaderScreen-_3YeG61Z.js +0 -2
- package/dist/core/web/public/next/assets/LeaderScreen-_3YeG61Z.js.map +0 -1
- package/dist/core/web/public/next/assets/LessonsPanel-CbEleQtG.js +0 -2
- package/dist/core/web/public/next/assets/LessonsPanel-CbEleQtG.js.map +0 -1
- package/dist/core/web/public/next/assets/LiveTimer-DMKMewTd.js +0 -2
- package/dist/core/web/public/next/assets/LiveTimer-DMKMewTd.js.map +0 -1
- package/dist/core/web/public/next/assets/LocalSeatBadge-Dk5OYc6Y.js +0 -2
- package/dist/core/web/public/next/assets/LocalSeatBadge-Dk5OYc6Y.js.map +0 -1
- package/dist/core/web/public/next/assets/MatrixHeatmap-1ksZeI4v.js +0 -2
- package/dist/core/web/public/next/assets/MatrixHeatmap-1ksZeI4v.js.map +0 -1
- package/dist/core/web/public/next/assets/McpSection-CeIjaqve.js +0 -2
- package/dist/core/web/public/next/assets/McpSection-CeIjaqve.js.map +0 -1
- package/dist/core/web/public/next/assets/MessageMarkdown-BpTPmenE.js +0 -3
- package/dist/core/web/public/next/assets/MessageMarkdown-BpTPmenE.js.map +0 -1
- package/dist/core/web/public/next/assets/MessageMarkdownRenderer-BeSS9Pdl.js +0 -72
- package/dist/core/web/public/next/assets/MessageMarkdownRenderer-BeSS9Pdl.js.map +0 -1
- package/dist/core/web/public/next/assets/Meter-CqaHFpQN.js +0 -2
- package/dist/core/web/public/next/assets/Meter-CqaHFpQN.js.map +0 -1
- package/dist/core/web/public/next/assets/MicButton-DYO5NOwU.js +0 -2
- package/dist/core/web/public/next/assets/MicButton-DYO5NOwU.js.map +0 -1
- package/dist/core/web/public/next/assets/MindSection-CQ9_IS2g.js +0 -3
- package/dist/core/web/public/next/assets/MindSection-CQ9_IS2g.js.map +0 -1
- package/dist/core/web/public/next/assets/MobileComposer-BK-mI_X6.js +0 -2
- package/dist/core/web/public/next/assets/MobileComposer-BK-mI_X6.js.map +0 -1
- package/dist/core/web/public/next/assets/MobileGuardSheet-B7P3q2I3.js +0 -2
- package/dist/core/web/public/next/assets/MobileGuardSheet-B7P3q2I3.js.map +0 -1
- package/dist/core/web/public/next/assets/MobileRuntime-PLoWSQGn.js +0 -3
- package/dist/core/web/public/next/assets/MobileRuntime-PLoWSQGn.js.map +0 -1
- package/dist/core/web/public/next/assets/MoreScreen-DLfPso-M.js +0 -2
- package/dist/core/web/public/next/assets/MoreScreen-DLfPso-M.js.map +0 -1
- package/dist/core/web/public/next/assets/MultiModelBar-Mrm1444h.js +0 -7
- package/dist/core/web/public/next/assets/MultiModelBar-Mrm1444h.js.map +0 -1
- package/dist/core/web/public/next/assets/MutationTokenDialog-ChtiRDO6.js +0 -2
- package/dist/core/web/public/next/assets/MutationTokenDialog-ChtiRDO6.js.map +0 -1
- package/dist/core/web/public/next/assets/NeedsYouDrawer-BMccNeTi.js +0 -3
- package/dist/core/web/public/next/assets/NeedsYouDrawer-BMccNeTi.js.map +0 -1
- package/dist/core/web/public/next/assets/NeedsYouList-J39veXX_.js +0 -2
- package/dist/core/web/public/next/assets/NeedsYouList-J39veXX_.js.map +0 -1
- package/dist/core/web/public/next/assets/NeedsYouScreen-C4uPKnl5.js +0 -2
- package/dist/core/web/public/next/assets/NeedsYouScreen-C4uPKnl5.js.map +0 -1
- package/dist/core/web/public/next/assets/NewAgentScreen-ME05-nh6.js +0 -2
- package/dist/core/web/public/next/assets/NewAgentScreen-ME05-nh6.js.map +0 -1
- package/dist/core/web/public/next/assets/NewChatDialog-Bl3XJx7p.js +0 -4
- package/dist/core/web/public/next/assets/NewChatDialog-Bl3XJx7p.js.map +0 -1
- package/dist/core/web/public/next/assets/OnboardingFlow-9Dfw74WI.js +0 -3
- package/dist/core/web/public/next/assets/OnboardingFlow-9Dfw74WI.js.map +0 -1
- package/dist/core/web/public/next/assets/OnboardingGate-DmWHBqkN.js +0 -3
- package/dist/core/web/public/next/assets/OnboardingGate-DmWHBqkN.js.map +0 -1
- package/dist/core/web/public/next/assets/PlaybooksSection-Bmmw9ea2.js +0 -9
- package/dist/core/web/public/next/assets/PlaybooksSection-Bmmw9ea2.js.map +0 -1
- package/dist/core/web/public/next/assets/PreviewPane-B3V-S2wt.js +0 -2
- package/dist/core/web/public/next/assets/PreviewPane-B3V-S2wt.js.map +0 -1
- package/dist/core/web/public/next/assets/ProviderLogo-C1Ap7oXI.js +0 -2
- package/dist/core/web/public/next/assets/ProviderLogo-C1Ap7oXI.js.map +0 -1
- package/dist/core/web/public/next/assets/RailStatus-D8G4G_Vd.js +0 -2
- package/dist/core/web/public/next/assets/RailStatus-D8G4G_Vd.js.map +0 -1
- package/dist/core/web/public/next/assets/ReasoningPane-Ch4eEqfN.js +0 -2
- package/dist/core/web/public/next/assets/ReasoningPane-Ch4eEqfN.js.map +0 -1
- package/dist/core/web/public/next/assets/ReasoningSheet-zW3qNqGs.js +0 -2
- package/dist/core/web/public/next/assets/ReasoningSheet-zW3qNqGs.js.map +0 -1
- package/dist/core/web/public/next/assets/RefreshIndicator-5WVbQPUt.js +0 -2
- package/dist/core/web/public/next/assets/RefreshIndicator-5WVbQPUt.js.map +0 -1
- package/dist/core/web/public/next/assets/RemoteMobileApp-Bb_ls1jo.js +0 -2
- package/dist/core/web/public/next/assets/RemoteMobileApp-Bb_ls1jo.js.map +0 -1
- package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-DjqkkBOW.js +0 -7
- package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-DjqkkBOW.js.map +0 -1
- package/dist/core/web/public/next/assets/ResourcesChrome-Dg2-MDWW.js +0 -3
- package/dist/core/web/public/next/assets/ResourcesChrome-Dg2-MDWW.js.map +0 -1
- package/dist/core/web/public/next/assets/ResourcesDrawer-DbDOCW04.js +0 -3
- package/dist/core/web/public/next/assets/ResourcesDrawer-DbDOCW04.js.map +0 -1
- package/dist/core/web/public/next/assets/RouteErrorBoundary-DvarlJu6.js +0 -2
- package/dist/core/web/public/next/assets/RouteErrorBoundary-DvarlJu6.js.map +0 -1
- package/dist/core/web/public/next/assets/RunInCloudAction-pqIPQwgD.js +0 -2
- package/dist/core/web/public/next/assets/RunInCloudAction-pqIPQwgD.js.map +0 -1
- package/dist/core/web/public/next/assets/RunInDevinAction-D1zIEZEQ.js +0 -2
- package/dist/core/web/public/next/assets/RunInDevinAction-D1zIEZEQ.js.map +0 -1
- package/dist/core/web/public/next/assets/ScreenHost-B4MLcKr9.js +0 -3
- package/dist/core/web/public/next/assets/ScreenHost-B4MLcKr9.js.map +0 -1
- package/dist/core/web/public/next/assets/SeatSelector-BknWe_wy.js +0 -3
- package/dist/core/web/public/next/assets/SeatSelector-BknWe_wy.js.map +0 -1
- package/dist/core/web/public/next/assets/Segmented-wjds-ulG.js +0 -2
- package/dist/core/web/public/next/assets/Segmented-wjds-ulG.js.map +0 -1
- package/dist/core/web/public/next/assets/Select-B5GTnXoL.js +0 -2
- package/dist/core/web/public/next/assets/Select-B5GTnXoL.js.map +0 -1
- package/dist/core/web/public/next/assets/SessionGate-B3FUSg4M.js +0 -2
- package/dist/core/web/public/next/assets/SessionGate-B3FUSg4M.js.map +0 -1
- package/dist/core/web/public/next/assets/SessionInsightChip-C4wouctG.js +0 -2
- package/dist/core/web/public/next/assets/SessionInsightChip-C4wouctG.js.map +0 -1
- package/dist/core/web/public/next/assets/SessionSearch-B-2yHMw6.js +0 -2
- package/dist/core/web/public/next/assets/SessionSearch-B-2yHMw6.js.map +0 -1
- package/dist/core/web/public/next/assets/SettingsSection-D8v6WRFJ.js +0 -2
- package/dist/core/web/public/next/assets/SettingsSection-D8v6WRFJ.js.map +0 -1
- package/dist/core/web/public/next/assets/SetupChecklist-63CBlXs1.js +0 -2
- package/dist/core/web/public/next/assets/SetupChecklist-63CBlXs1.js.map +0 -1
- package/dist/core/web/public/next/assets/ShadowDecisions-eybo7qqr.js +0 -3
- package/dist/core/web/public/next/assets/ShadowDecisions-eybo7qqr.js.map +0 -1
- package/dist/core/web/public/next/assets/Sheet-BrHMpj4g.js +0 -2
- package/dist/core/web/public/next/assets/Sheet-BrHMpj4g.js.map +0 -1
- package/dist/core/web/public/next/assets/ShortcutsOverlay-C-ED7Euh.js +0 -2
- package/dist/core/web/public/next/assets/ShortcutsOverlay-C-ED7Euh.js.map +0 -1
- package/dist/core/web/public/next/assets/Sidebar-Dyn6lGvZ.js +0 -3
- package/dist/core/web/public/next/assets/Sidebar-Dyn6lGvZ.js.map +0 -1
- package/dist/core/web/public/next/assets/SkipToContent-DTxWH085.js +0 -2
- package/dist/core/web/public/next/assets/SkipToContent-DTxWH085.js.map +0 -1
- package/dist/core/web/public/next/assets/Slider-DwEchMza.js +0 -2
- package/dist/core/web/public/next/assets/Slider-DwEchMza.js.map +0 -1
- package/dist/core/web/public/next/assets/SourcesPane-BWVWIGt1.js +0 -2
- package/dist/core/web/public/next/assets/SourcesPane-BWVWIGt1.js.map +0 -1
- package/dist/core/web/public/next/assets/SourcesPanel-DfYLq-I7.js +0 -2
- package/dist/core/web/public/next/assets/SourcesPanel-DfYLq-I7.js.map +0 -1
- package/dist/core/web/public/next/assets/StatTile-BThhgW4d.js +0 -2
- package/dist/core/web/public/next/assets/StatTile-BThhgW4d.js.map +0 -1
- package/dist/core/web/public/next/assets/StatusBadge-BkY2iVa1.js +0 -2
- package/dist/core/web/public/next/assets/StatusBadge-BkY2iVa1.js.map +0 -1
- package/dist/core/web/public/next/assets/StepBand-0bqINoll.js +0 -2
- package/dist/core/web/public/next/assets/StepBand-0bqINoll.js.map +0 -1
- package/dist/core/web/public/next/assets/Surface-DGE1hA8U.js +0 -2
- package/dist/core/web/public/next/assets/Surface-DGE1hA8U.js.map +0 -1
- package/dist/core/web/public/next/assets/Swimlane-DqSkrO7I.js +0 -2
- package/dist/core/web/public/next/assets/Swimlane-DqSkrO7I.js.map +0 -1
- package/dist/core/web/public/next/assets/Switch-DzbwFVJF.js +0 -2
- package/dist/core/web/public/next/assets/Switch-DzbwFVJF.js.map +0 -1
- package/dist/core/web/public/next/assets/Tag-NKPvC6WH.js +0 -2
- package/dist/core/web/public/next/assets/Tag-NKPvC6WH.js.map +0 -1
- package/dist/core/web/public/next/assets/TerminalPane-B6GVYldA.js +0 -26
- package/dist/core/web/public/next/assets/TerminalPane-B6GVYldA.js.map +0 -1
- package/dist/core/web/public/next/assets/TerminalPane-C9CCjTDB.js +0 -3
- package/dist/core/web/public/next/assets/TerminalPane-C9CCjTDB.js.map +0 -1
- package/dist/core/web/public/next/assets/ThinkingBlock-D1tflrrI.js +0 -2
- package/dist/core/web/public/next/assets/ThinkingBlock-D1tflrrI.js.map +0 -1
- package/dist/core/web/public/next/assets/Transcript-DLeoLRca.css +0 -1
- package/dist/core/web/public/next/assets/Transcript.module-CzROOZJo.js +0 -2
- package/dist/core/web/public/next/assets/Transcript.module-CzROOZJo.js.map +0 -1
- package/dist/core/web/public/next/assets/UniverseConsoleApp-DDCdtE8A.js +0 -2
- package/dist/core/web/public/next/assets/UniverseConsoleApp-DDCdtE8A.js.map +0 -1
- package/dist/core/web/public/next/assets/UniverseView-BbBO21O2.js +0 -9
- package/dist/core/web/public/next/assets/UniverseView-BbBO21O2.js.map +0 -1
- package/dist/core/web/public/next/assets/UsageSection-BuPJIMcf.js +0 -3
- package/dist/core/web/public/next/assets/UsageSection-BuPJIMcf.js.map +0 -1
- package/dist/core/web/public/next/assets/UsePlaybookAction-BOGWdnK7.js +0 -2
- package/dist/core/web/public/next/assets/UsePlaybookAction-BOGWdnK7.js.map +0 -1
- package/dist/core/web/public/next/assets/VerseConsoleApp-wPGkVkCc.js +0 -3
- package/dist/core/web/public/next/assets/VerseConsoleApp-wPGkVkCc.js.map +0 -1
- package/dist/core/web/public/next/assets/VerseMobileApp-C86LA4dg.js +0 -3
- package/dist/core/web/public/next/assets/VerseMobileApp-C86LA4dg.js.map +0 -1
- package/dist/core/web/public/next/assets/VerseShared-CCeoBq-8.js +0 -2
- package/dist/core/web/public/next/assets/VerseShared-CCeoBq-8.js.map +0 -1
- package/dist/core/web/public/next/assets/VoiceHud-BSuRemsd.js +0 -2
- package/dist/core/web/public/next/assets/VoiceHud-BSuRemsd.js.map +0 -1
- package/dist/core/web/public/next/assets/VoiceInput-CSSoqpN8.js +0 -2
- package/dist/core/web/public/next/assets/VoiceInput-CSSoqpN8.js.map +0 -1
- package/dist/core/web/public/next/assets/WikiSection-BBWGCTA8.js +0 -2
- package/dist/core/web/public/next/assets/WikiSection-BBWGCTA8.js.map +0 -1
- package/dist/core/web/public/next/assets/WikiSection-BV3l3wGW.css +0 -1
- package/dist/core/web/public/next/assets/Workspace-BLAINcPl.js +0 -6
- package/dist/core/web/public/next/assets/Workspace-BLAINcPl.js.map +0 -1
- package/dist/core/web/public/next/assets/actions-DW8372S_.js +0 -2
- package/dist/core/web/public/next/assets/actions-DW8372S_.js.map +0 -1
- package/dist/core/web/public/next/assets/agent-tools-client-DOdeIAlB.js +0 -2
- package/dist/core/web/public/next/assets/agent-tools-client-DOdeIAlB.js.map +0 -1
- package/dist/core/web/public/next/assets/agents-focus-CPywc_la.js +0 -2
- package/dist/core/web/public/next/assets/agents-focus-CPywc_la.js.map +0 -1
- package/dist/core/web/public/next/assets/app-version-CAMoNgqJ.js +0 -2
- package/dist/core/web/public/next/assets/app-version-CAMoNgqJ.js.map +0 -1
- package/dist/core/web/public/next/assets/apps-model-ozrnE6z2.js +0 -2
- package/dist/core/web/public/next/assets/apps-model-ozrnE6z2.js.map +0 -1
- package/dist/core/web/public/next/assets/ask-seat-C24LQctL.js +0 -2
- package/dist/core/web/public/next/assets/ask-seat-C24LQctL.js.map +0 -1
- package/dist/core/web/public/next/assets/authority-model-C924ixlm.js +0 -2
- package/dist/core/web/public/next/assets/authority-model-C924ixlm.js.map +0 -1
- package/dist/core/web/public/next/assets/automations-focus-GzNObBH4.js +0 -2
- package/dist/core/web/public/next/assets/automations-focus-GzNObBH4.js.map +0 -1
- package/dist/core/web/public/next/assets/budget-queries-wnFwZf0d.js +0 -2
- package/dist/core/web/public/next/assets/budget-queries-wnFwZf0d.js.map +0 -1
- package/dist/core/web/public/next/assets/capacity-strip-model-DGqnhrIN.js +0 -2
- package/dist/core/web/public/next/assets/capacity-strip-model-DGqnhrIN.js.map +0 -1
- package/dist/core/web/public/next/assets/charts-DVzJTfES.js +0 -2
- package/dist/core/web/public/next/assets/charts-DVzJTfES.js.map +0 -1
- package/dist/core/web/public/next/assets/chat-pane-data-R55DITMC.js +0 -2
- package/dist/core/web/public/next/assets/chat-pane-data-R55DITMC.js.map +0 -1
- package/dist/core/web/public/next/assets/checkpoint-queries-CK9Sc-ew.js +0 -2
- package/dist/core/web/public/next/assets/checkpoint-queries-CK9Sc-ew.js.map +0 -1
- package/dist/core/web/public/next/assets/cloud-queries-C99COqh-.js +0 -2
- package/dist/core/web/public/next/assets/cloud-queries-C99COqh-.js.map +0 -1
- package/dist/core/web/public/next/assets/command-catalog-Crgyl-5F.js +0 -2
- package/dist/core/web/public/next/assets/command-catalog-Crgyl-5F.js.map +0 -1
- package/dist/core/web/public/next/assets/composer-queries-QT9sqpYt.js +0 -2
- package/dist/core/web/public/next/assets/composer-queries-QT9sqpYt.js.map +0 -1
- package/dist/core/web/public/next/assets/connectivity-Ow2TCpN2.js +0 -2
- package/dist/core/web/public/next/assets/connectivity-Ow2TCpN2.js.map +0 -1
- package/dist/core/web/public/next/assets/context-queries-CBHkEGWm.js +0 -2
- package/dist/core/web/public/next/assets/context-queries-CBHkEGWm.js.map +0 -1
- package/dist/core/web/public/next/assets/control-queries-DpgKLZZ7.js +0 -2
- package/dist/core/web/public/next/assets/control-queries-DpgKLZZ7.js.map +0 -1
- package/dist/core/web/public/next/assets/copy-setup-Pv9zazKp.js +0 -2
- package/dist/core/web/public/next/assets/copy-setup-Pv9zazKp.js.map +0 -1
- package/dist/core/web/public/next/assets/deep-link-RA_9gxr7.js +0 -2
- package/dist/core/web/public/next/assets/deep-link-RA_9gxr7.js.map +0 -1
- package/dist/core/web/public/next/assets/device-permissions-CFtizlNI.js +0 -2
- package/dist/core/web/public/next/assets/device-permissions-CFtizlNI.js.map +0 -1
- package/dist/core/web/public/next/assets/devin-queries-BdMbRO0X.js +0 -2
- package/dist/core/web/public/next/assets/devin-queries-BdMbRO0X.js.map +0 -1
- package/dist/core/web/public/next/assets/dock-icons-DAcSkY79.js +0 -2
- package/dist/core/web/public/next/assets/dock-icons-DAcSkY79.js.map +0 -1
- package/dist/core/web/public/next/assets/dock-panes-CypuAb32.js +0 -2
- package/dist/core/web/public/next/assets/dock-panes-CypuAb32.js.map +0 -1
- package/dist/core/web/public/next/assets/fleet-control-queries-CyY4rlLL.js +0 -2
- package/dist/core/web/public/next/assets/fleet-control-queries-CyY4rlLL.js.map +0 -1
- package/dist/core/web/public/next/assets/fleet-queries-DhvGhRVd.js +0 -2
- package/dist/core/web/public/next/assets/fleet-queries-DhvGhRVd.js.map +0 -1
- package/dist/core/web/public/next/assets/fleet-state-BXHCR9Z4.js +0 -3
- package/dist/core/web/public/next/assets/fleet-state-BXHCR9Z4.js.map +0 -1
- package/dist/core/web/public/next/assets/focus-trap-DGVye4KY.js +0 -2
- package/dist/core/web/public/next/assets/focus-trap-DGVye4KY.js.map +0 -1
- package/dist/core/web/public/next/assets/git-model-CRJidacH.js +0 -5
- package/dist/core/web/public/next/assets/git-model-CRJidacH.js.map +0 -1
- package/dist/core/web/public/next/assets/global-BCRR2nnJ.js +0 -3
- package/dist/core/web/public/next/assets/global-BCRR2nnJ.js.map +0 -1
- package/dist/core/web/public/next/assets/guarded-action-BRMXmbT_.js +0 -3
- package/dist/core/web/public/next/assets/guarded-action-BRMXmbT_.js.map +0 -1
- package/dist/core/web/public/next/assets/guarded-runners-SV5FL41J.js +0 -2
- package/dist/core/web/public/next/assets/guarded-runners-SV5FL41J.js.map +0 -1
- package/dist/core/web/public/next/assets/health-queries-ulCgM_N-.js +0 -2
- package/dist/core/web/public/next/assets/health-queries-ulCgM_N-.js.map +0 -1
- package/dist/core/web/public/next/assets/icons-pcszdls_.js +0 -2
- package/dist/core/web/public/next/assets/icons-pcszdls_.js.map +0 -1
- package/dist/core/web/public/next/assets/index-BUjFkE-k.js +0 -11
- package/dist/core/web/public/next/assets/index-BUjFkE-k.js.map +0 -1
- package/dist/core/web/public/next/assets/jev-queries-D95PmN18.js +0 -2
- package/dist/core/web/public/next/assets/jev-queries-D95PmN18.js.map +0 -1
- package/dist/core/web/public/next/assets/ladder-queries-DVdVMFWD.js +0 -2
- package/dist/core/web/public/next/assets/ladder-queries-DVdVMFWD.js.map +0 -1
- package/dist/core/web/public/next/assets/leader-focus-DphhDqye.js +0 -2
- package/dist/core/web/public/next/assets/leader-focus-DphhDqye.js.map +0 -1
- package/dist/core/web/public/next/assets/live-model--0BepHTm.js +0 -2
- package/dist/core/web/public/next/assets/live-model--0BepHTm.js.map +0 -1
- package/dist/core/web/public/next/assets/mobile-actions-IXVvyQlh.js +0 -2
- package/dist/core/web/public/next/assets/mobile-actions-IXVvyQlh.js.map +0 -1
- package/dist/core/web/public/next/assets/mobile-toast-CVOwWiN4.js +0 -2
- package/dist/core/web/public/next/assets/mobile-toast-CVOwWiN4.js.map +0 -1
- package/dist/core/web/public/next/assets/multimodel-flows-DOil0riK.js +0 -7
- package/dist/core/web/public/next/assets/multimodel-flows-DOil0riK.js.map +0 -1
- package/dist/core/web/public/next/assets/multimodel-queries-C1J-1wBB.js +0 -2
- package/dist/core/web/public/next/assets/multimodel-queries-C1J-1wBB.js.map +0 -1
- package/dist/core/web/public/next/assets/mutations-CrmfkCt7.js +0 -2
- package/dist/core/web/public/next/assets/mutations-CrmfkCt7.js.map +0 -1
- package/dist/core/web/public/next/assets/nav-DNtYaPGH.js +0 -2
- package/dist/core/web/public/next/assets/nav-DNtYaPGH.js.map +0 -1
- package/dist/core/web/public/next/assets/needs-you-actions-prN6find.js +0 -2
- package/dist/core/web/public/next/assets/needs-you-actions-prN6find.js.map +0 -1
- package/dist/core/web/public/next/assets/needs-you-model-BEf5boxE.js +0 -2
- package/dist/core/web/public/next/assets/needs-you-model-BEf5boxE.js.map +0 -1
- package/dist/core/web/public/next/assets/open-terminal-CjBhPrPf.js +0 -2
- package/dist/core/web/public/next/assets/open-terminal-CjBhPrPf.js.map +0 -1
- package/dist/core/web/public/next/assets/open-terminal-request-C8oTi9ly.js +0 -2
- package/dist/core/web/public/next/assets/open-terminal-request-C8oTi9ly.js.map +0 -1
- package/dist/core/web/public/next/assets/overnight-queries-NwxEwM2i.js +0 -2
- package/dist/core/web/public/next/assets/overnight-queries-NwxEwM2i.js.map +0 -1
- package/dist/core/web/public/next/assets/palette-handoff-CCG7uhBI.js +0 -2
- package/dist/core/web/public/next/assets/palette-handoff-CCG7uhBI.js.map +0 -1
- package/dist/core/web/public/next/assets/panes-DLEh22yn.js +0 -3
- package/dist/core/web/public/next/assets/panes-DLEh22yn.js.map +0 -1
- package/dist/core/web/public/next/assets/path-display-BmDNXLma.js +0 -2
- package/dist/core/web/public/next/assets/path-display-BmDNXLma.js.map +0 -1
- package/dist/core/web/public/next/assets/playbook-composer-7rJp3twC.js +0 -2
- package/dist/core/web/public/next/assets/playbook-composer-7rJp3twC.js.map +0 -1
- package/dist/core/web/public/next/assets/playbook-focus-B8E3WzHV.js +0 -2
- package/dist/core/web/public/next/assets/playbook-focus-B8E3WzHV.js.map +0 -1
- package/dist/core/web/public/next/assets/playbooks-queries-DQjEIQgH.js +0 -2
- package/dist/core/web/public/next/assets/playbooks-queries-DQjEIQgH.js.map +0 -1
- package/dist/core/web/public/next/assets/preloaded-BDy_vwqB.js +0 -2
- package/dist/core/web/public/next/assets/preloaded-BDy_vwqB.js.map +0 -1
- package/dist/core/web/public/next/assets/primitives-C8-XVQKs.js +0 -1
- package/dist/core/web/public/next/assets/pwa-1cEjML6y.js +0 -2
- package/dist/core/web/public/next/assets/pwa-1cEjML6y.js.map +0 -1
- package/dist/core/web/public/next/assets/queries-CHY928bU.js +0 -2
- package/dist/core/web/public/next/assets/queries-CHY928bU.js.map +0 -1
- package/dist/core/web/public/next/assets/reasoning-pref-ChmBKsuV.js +0 -2
- package/dist/core/web/public/next/assets/reasoning-pref-ChmBKsuV.js.map +0 -1
- package/dist/core/web/public/next/assets/remote-session-CSFrRCnT.js +0 -3
- package/dist/core/web/public/next/assets/remote-session-CSFrRCnT.js.map +0 -1
- package/dist/core/web/public/next/assets/resolved-store-Cw27MfQ4.js +0 -2
- package/dist/core/web/public/next/assets/resolved-store-Cw27MfQ4.js.map +0 -1
- package/dist/core/web/public/next/assets/resources-queries-DyW4RSn1.js +0 -2
- package/dist/core/web/public/next/assets/resources-queries-DyW4RSn1.js.map +0 -1
- package/dist/core/web/public/next/assets/reveal-anchor-CL5ms09_.js +0 -2
- package/dist/core/web/public/next/assets/reveal-anchor-CL5ms09_.js.map +0 -1
- package/dist/core/web/public/next/assets/sheet-Jmql93Ca.js +0 -2
- package/dist/core/web/public/next/assets/sheet-Jmql93Ca.js.map +0 -1
- package/dist/core/web/public/next/assets/slots-DEG36YxT.js +0 -3
- package/dist/core/web/public/next/assets/slots-DEG36YxT.js.map +0 -1
- package/dist/core/web/public/next/assets/sources-queries-CI0UlBGE.js +0 -4
- package/dist/core/web/public/next/assets/sources-queries-CI0UlBGE.js.map +0 -1
- package/dist/core/web/public/next/assets/sse-CEyzXNma.js +0 -2
- package/dist/core/web/public/next/assets/sse-CEyzXNma.js.map +0 -1
- package/dist/core/web/public/next/assets/stub-panes.module-aBfJsf41.js +0 -3
- package/dist/core/web/public/next/assets/stub-panes.module-aBfJsf41.js.map +0 -1
- package/dist/core/web/public/next/assets/surface-data-CLlkcEWM.js +0 -2
- package/dist/core/web/public/next/assets/surface-data-CLlkcEWM.js.map +0 -1
- package/dist/core/web/public/next/assets/surface-prefetch-DcKPZWEe.js +0 -2
- package/dist/core/web/public/next/assets/surface-prefetch-DcKPZWEe.js.map +0 -1
- package/dist/core/web/public/next/assets/tasks-model-CbmPgWL8.js +0 -2
- package/dist/core/web/public/next/assets/tasks-model-CbmPgWL8.js.map +0 -1
- package/dist/core/web/public/next/assets/terminal-client-CagF1uyM.js +0 -2
- package/dist/core/web/public/next/assets/terminal-client-CagF1uyM.js.map +0 -1
- package/dist/core/web/public/next/assets/terminal-icons-D5DaYLkC.js +0 -2
- package/dist/core/web/public/next/assets/terminal-icons-D5DaYLkC.js.map +0 -1
- package/dist/core/web/public/next/assets/terminal-view-Crd7CW9-.js +0 -6
- package/dist/core/web/public/next/assets/terminal-view-Crd7CW9-.js.map +0 -1
- package/dist/core/web/public/next/assets/thread-data-Bom_qVem.js +0 -2
- package/dist/core/web/public/next/assets/thread-data-Bom_qVem.js.map +0 -1
- package/dist/core/web/public/next/assets/tool-semantics-DtFU7rvB.js +0 -8
- package/dist/core/web/public/next/assets/tool-semantics-DtFU7rvB.js.map +0 -1
- package/dist/core/web/public/next/assets/turn-files-BW0SiN39.js +0 -2
- package/dist/core/web/public/next/assets/turn-files-BW0SiN39.js.map +0 -1
- package/dist/core/web/public/next/assets/ui-parts-CLEc9rZw.js +0 -2
- package/dist/core/web/public/next/assets/ui-parts-CLEc9rZw.js.map +0 -1
- package/dist/core/web/public/next/assets/usage-queries-BCactyVH.js +0 -2
- package/dist/core/web/public/next/assets/usage-queries-BCactyVH.js.map +0 -1
- package/dist/core/web/public/next/assets/use-chat-activity-CeNZP1eV.js +0 -2
- package/dist/core/web/public/next/assets/use-chat-activity-CeNZP1eV.js.map +0 -1
- package/dist/core/web/public/next/assets/use-guarded-action-CvddzFZw.js +0 -2
- package/dist/core/web/public/next/assets/use-guarded-action-CvddzFZw.js.map +0 -1
- package/dist/core/web/public/next/assets/use-ticker-Dn8tdiFx.js +0 -2
- package/dist/core/web/public/next/assets/use-ticker-Dn8tdiFx.js.map +0 -1
- package/dist/core/web/public/next/assets/use-token-gate-D0I1qsuh.js +0 -2
- package/dist/core/web/public/next/assets/use-token-gate-D0I1qsuh.js.map +0 -1
- package/dist/core/web/public/next/assets/useAutoSeat-X5wQjKpa.js +0 -2
- package/dist/core/web/public/next/assets/useAutoSeat-X5wQjKpa.js.map +0 -1
- package/dist/core/web/public/next/assets/useOnboarding-BKfkTSl4.js +0 -2
- package/dist/core/web/public/next/assets/useOnboarding-BKfkTSl4.js.map +0 -1
- package/dist/core/web/public/next/assets/useSeatHealth-Ttzd6QkW.js +0 -2
- package/dist/core/web/public/next/assets/useSeatHealth-Ttzd6QkW.js.map +0 -1
- package/dist/core/web/public/next/assets/useSeatsRefresh-B7TYzh9s.js +0 -2
- package/dist/core/web/public/next/assets/useSeatsRefresh-B7TYzh9s.js.map +0 -1
- package/dist/core/web/public/next/assets/useVerseSession-BBmZY9hu.js +0 -2
- package/dist/core/web/public/next/assets/useVerseSession-BBmZY9hu.js.map +0 -1
- package/dist/core/web/public/next/assets/useVerseTranscript-Bn_paarS.js +0 -2
- package/dist/core/web/public/next/assets/useVerseTranscript-Bn_paarS.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-bootstrap-query-B-jTQ8nR.js +0 -2
- package/dist/core/web/public/next/assets/verse-bootstrap-query-B-jTQ8nR.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-icons-B64ZcDtc.js +0 -2
- package/dist/core/web/public/next/assets/verse-icons-B64ZcDtc.js.map +0 -1
- package/dist/core/web/public/next/assets/warmup-CgTjYA0L.js +0 -3
- package/dist/core/web/public/next/assets/warmup-CgTjYA0L.js.map +0 -1
- package/dist/core/web/public/next/assets/wiki-focus-BZQpEuzJ.js +0 -2
- package/dist/core/web/public/next/assets/wiki-focus-BZQpEuzJ.js.map +0 -1
|
@@ -1,13 +1,59 @@
|
|
|
1
1
|
/** Local module map over the wiki's existing bounded scanner. No model calls. */
|
|
2
|
-
import { extractFacts } from './facts.js';
|
|
2
|
+
import { extractFacts, MAX_IMPORT_CITATIONS, MAX_IMPORT_CITATIONS_PER_EDGE } from './facts.js';
|
|
3
|
+
import { checkedCitation } from './citations.js';
|
|
3
4
|
import { scanRepo, isWikiReadable } from './scan.js';
|
|
4
5
|
import { readWikiSteering } from './steering.js';
|
|
5
6
|
import { wikiKey } from './store.js';
|
|
6
7
|
export function graphFromFacts(repoKey, facts, generatedAt = new Date().toISOString()) {
|
|
7
8
|
const ids = new Set(facts.modules.map((m) => m.key));
|
|
9
|
+
let checkedCitations = 0;
|
|
10
|
+
let droppedCitations = 0;
|
|
11
|
+
let omittedCitations = 0;
|
|
12
|
+
let omittedModuleImports = 0;
|
|
13
|
+
const edges = [];
|
|
14
|
+
for (const m of facts.modules) {
|
|
15
|
+
for (const [to, imports] of Object.entries(m.importsFrom)) {
|
|
16
|
+
if (!Number.isInteger(imports) || imports < 1 || to === m.key)
|
|
17
|
+
continue;
|
|
18
|
+
if (!ids.has(to)) {
|
|
19
|
+
omittedModuleImports += imports;
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const edge = { from: m.key, to, imports, confidence: 'inferred' };
|
|
23
|
+
if (m.importCitations !== undefined) {
|
|
24
|
+
const citations = [];
|
|
25
|
+
let dropped = 0;
|
|
26
|
+
const seen = new Set();
|
|
27
|
+
// Defend the response bounds too, including manually supplied/older facts.
|
|
28
|
+
for (const candidate of (m.importCitations[to] ?? []).slice(0, MAX_IMPORT_CITATIONS_PER_EDGE)) {
|
|
29
|
+
if (checkedCitations >= MAX_IMPORT_CITATIONS)
|
|
30
|
+
break;
|
|
31
|
+
const cite = isWikiReadable(candidate.file) && m.files.includes(candidate.file)
|
|
32
|
+
? checkedCitation(candidate, facts.lineIndex[candidate.file] ?? null) : null;
|
|
33
|
+
if (!cite) {
|
|
34
|
+
dropped++;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
const key = `${cite.file}:${cite.line}`;
|
|
38
|
+
if (seen.has(key))
|
|
39
|
+
continue;
|
|
40
|
+
seen.add(key);
|
|
41
|
+
citations.push(cite);
|
|
42
|
+
checkedCitations++;
|
|
43
|
+
}
|
|
44
|
+
const omitted = Math.max(0, imports - citations.length - dropped);
|
|
45
|
+
Object.assign(edge, { citations, omittedCitations: omitted, droppedCitations: dropped });
|
|
46
|
+
droppedCitations += dropped;
|
|
47
|
+
omittedCitations += omitted;
|
|
48
|
+
}
|
|
49
|
+
edges.push(edge);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
8
52
|
const nodes = facts.modules.map((m) => {
|
|
9
|
-
|
|
10
|
-
|
|
53
|
+
// Import evidence may come from a source beyond the top-file sample. Keep
|
|
54
|
+
// its read-index metadata so the existing editor-open gate can check it.
|
|
55
|
+
const files = [...new Set([...m.topFiles, ...m.exports.map((e) => e.file), ...edges.filter((e) => e.from === m.key).flatMap((e) => e.citations?.map((c) => c.file) ?? [])])]
|
|
56
|
+
.filter((file) => isWikiReadable(file) && checkedCitation({ file, line: 1 }, facts.lineIndex[file] ?? null))
|
|
11
57
|
.map((file) => ({ file, line: 1, lines: facts.lineIndex[file] }));
|
|
12
58
|
const known = new Set(files.map((f) => f.file));
|
|
13
59
|
return {
|
|
@@ -16,9 +62,6 @@ export function graphFromFacts(repoKey, facts, generatedAt = new Date().toISOStr
|
|
|
16
62
|
.map((e) => ({ name: e.name, kind: e.kind, cite: { file: e.file, line: e.line } })),
|
|
17
63
|
};
|
|
18
64
|
});
|
|
19
|
-
const edges = facts.modules.flatMap((m) => Object.entries(m.importsFrom)
|
|
20
|
-
.filter(([to, imports]) => ids.has(to) && to !== m.key && Number.isInteger(imports) && imports > 0)
|
|
21
|
-
.map(([to, imports]) => ({ from: m.key, to, imports, confidence: 'inferred' })));
|
|
22
65
|
const readFiles = Object.keys(facts.lineIndex).length;
|
|
23
66
|
return {
|
|
24
67
|
repoKey, repoName: facts.name, commit: facts.head, generatedAt, nodes, edges,
|
|
@@ -26,6 +69,7 @@ export function graphFromFacts(repoKey, facts, generatedAt = new Date().toISOStr
|
|
|
26
69
|
listedFiles: facts.fileCount, readFiles, unreadFiles: Math.max(0, facts.fileCount - readFiles),
|
|
27
70
|
omittedModuleFiles: Math.max(0, facts.fileCount - facts.modules.reduce((n, m) => n + m.files.length, 0)),
|
|
28
71
|
listingTruncated: facts.truncated,
|
|
72
|
+
...(facts.importEvidence ? { importEvidence: { ...facts.importEvidence, checkedCitations, droppedCitations, omittedCitations, omittedModuleImports } } : {}),
|
|
29
73
|
},
|
|
30
74
|
};
|
|
31
75
|
}
|
|
@@ -47,8 +91,11 @@ export async function buildWikiGraph(repo) {
|
|
|
47
91
|
const task = (async () => {
|
|
48
92
|
const scan = await scanRepo(repo, steering.ignorePaths);
|
|
49
93
|
const graph = graphFromFacts(wikiKey(repo), await extractFacts(scan));
|
|
50
|
-
if (scan.listingIncomplete)
|
|
94
|
+
if (scan.listingIncomplete) {
|
|
51
95
|
graph.coverage.listingIncomplete = true;
|
|
96
|
+
if (graph.coverage.readFiles === 0)
|
|
97
|
+
delete graph.coverage.importEvidence;
|
|
98
|
+
}
|
|
52
99
|
if (cache.size >= CACHE_SIZE)
|
|
53
100
|
cache.delete(cache.keys().next().value);
|
|
54
101
|
cache.set(repo, { at: Date.now(), policy, graph });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../../src/core/knowledge/wiki/graph.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,OAAO,EAAE,YAAY,EAAkB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../../src/core/knowledge/wiki/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -163,6 +163,16 @@ export interface WikiGraphNode {
|
|
|
163
163
|
cite: WikiCitation;
|
|
164
164
|
}>;
|
|
165
165
|
}
|
|
166
|
+
export interface WikiGraphEdge {
|
|
167
|
+
from: string;
|
|
168
|
+
to: string;
|
|
169
|
+
imports: number;
|
|
170
|
+
confidence: 'inferred';
|
|
171
|
+
/** Checked against read files/lines; absent on older responses. No source text. */
|
|
172
|
+
citations?: WikiCitation[];
|
|
173
|
+
omittedCitations?: number;
|
|
174
|
+
droppedCitations?: number;
|
|
175
|
+
}
|
|
166
176
|
export interface WikiGraphView {
|
|
167
177
|
repoKey: string;
|
|
168
178
|
repoName: string;
|
|
@@ -170,12 +180,7 @@ export interface WikiGraphView {
|
|
|
170
180
|
commit: string | null;
|
|
171
181
|
generatedAt: string;
|
|
172
182
|
nodes: WikiGraphNode[];
|
|
173
|
-
edges:
|
|
174
|
-
from: string;
|
|
175
|
-
to: string;
|
|
176
|
-
imports: number;
|
|
177
|
-
confidence: 'inferred';
|
|
178
|
-
}>;
|
|
183
|
+
edges: WikiGraphEdge[];
|
|
179
184
|
coverage: {
|
|
180
185
|
listedFiles: number;
|
|
181
186
|
readFiles: number;
|
|
@@ -183,6 +188,15 @@ export interface WikiGraphView {
|
|
|
183
188
|
omittedModuleFiles: number;
|
|
184
189
|
listingTruncated: boolean;
|
|
185
190
|
listingIncomplete?: boolean;
|
|
191
|
+
/** Absent means unknown, never zero. Counts describe the read sources only. */
|
|
192
|
+
importEvidence?: {
|
|
193
|
+
unresolvedLocalImports: number;
|
|
194
|
+
unsupportedSourceFiles: number;
|
|
195
|
+
checkedCitations: number;
|
|
196
|
+
droppedCitations: number;
|
|
197
|
+
omittedCitations: number;
|
|
198
|
+
omittedModuleImports: number;
|
|
199
|
+
};
|
|
186
200
|
};
|
|
187
201
|
}
|
|
188
202
|
/** GET /api/verse/wiki/repo/<key>/page/<id> */
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t,o as n,s as r}from"./index-BMfejJ9u.js";var i=e(r(),1),a=e(n(),1),o={menu:`_menu_130xc_5`,"menu-in":`_menu-in_130xc_1`,row:`_row_130xc_21`,item:`_item_130xc_27`,icon:`_icon_130xc_53`,label:`_label_130xc_60`,reason:`_reason_130xc_65`},s=t(),c=8;function l({label:e,items:t,anchor:n,onClose:r,returnFocus:l=null}){let u=(0,i.useRef)(null),d=(0,i.useRef)([]),[f,p]=(0,i.useState)({left:n.x,top:n.y}),m=(0,i.useRef)(r);m.current=r;let h=(0,i.useRef)(l);h.current=l;let g=t.map((e,t)=>e.disabled?-1:t).filter(e=>e>=0);(0,i.useLayoutEffect)(()=>{let e=u.current;if(!e)return;let t=e.getBoundingClientRect(),r=window.innerWidth||document.documentElement.clientWidth,i=window.innerHeight||document.documentElement.clientHeight,a=n.x,o=n.y;t.width>0&&a+t.width>r-c&&(a=Math.max(c,r-c-t.width)),t.height>0&&o+t.height>i-c&&(o=Math.max(c,n.y-t.height)),p({left:a,top:o})},[n.x,n.y]),(0,i.useEffect)(()=>{let e=g[0];e===void 0?u.current?.focus():d.current[e]?.focus()},[]),(0,i.useEffect)(()=>{let e=e=>{u.current&&e.target instanceof Node&&u.current.contains(e.target)||m.current(`dismiss`)},t=e=>{u.current&&e.target instanceof Node&&u.current.contains(e.target)||m.current(`dismiss`)};document.addEventListener(`pointerdown`,e,!0),window.addEventListener(`resize`,t),document.addEventListener(`scroll`,t,!0);let n=u.current;return()=>{document.removeEventListener(`pointerdown`,e,!0),window.removeEventListener(`resize`,t),document.removeEventListener(`scroll`,t,!0);let r=document.activeElement,i=r===null||r===document.body||n!==null&&n.contains(r),a=h.current;i&&a&&document.contains(a)&&a.focus({preventScroll:!0})}},[]);function _(e,t){if(g.length===0)return;let n=g.indexOf(e),r=n<0?t>0?0:g.length-1:(n+t+g.length)%g.length;d.current[g[r]]?.focus()}function v(e){let n=d.current.findIndex(e=>e===document.activeElement);switch(e.key){case`ArrowDown`:e.preventDefault(),_(n,1);return;case`ArrowUp`:e.preventDefault(),_(n,-1);return;case`Home`:e.preventDefault(),d.current[g[0]??0]?.focus();return;case`End`:e.preventDefault(),d.current[g[g.length-1]??0]?.focus();return;case`Escape`:e.preventDefault(),e.stopPropagation(),r(`dismiss`);return;case`Tab`:r(`dismiss`);return;default:if(e.key.length===1&&/\S/.test(e.key)&&!e.metaKey&&!e.ctrlKey&&!e.altKey){let r=e.key.toLowerCase(),i=[...g.filter(e=>e>n),...g.filter(e=>e<=n)].find(e=>t[e].label.toLowerCase().startsWith(r));i!==void 0&&(e.preventDefault(),d.current[i]?.focus())}}}return(0,a.createPortal)((0,s.jsx)(`div`,{ref:u,className:o.menu,role:`menu`,"aria-label":e,tabIndex:-1,style:{left:f.left,top:f.top},onKeyDown:v,onContextMenu:e=>e.preventDefault(),children:t.map((e,t)=>(0,s.jsx)(`div`,{className:o.row,"data-separated":e.separated||void 0,role:`none`,children:(0,s.jsxs)(`button`,{ref:e=>{d.current[t]=e},type:`button`,role:`menuitem`,className:o.item,"data-danger":e.danger||void 0,"aria-disabled":e.disabled||void 0,tabIndex:-1,onClick:()=>{e.disabled||(r(`select`),e.onSelect())},children:[e.icon?(0,s.jsx)(`span`,{className:o.icon,"aria-hidden":`true`,children:e.icon}):null,(0,s.jsxs)(`span`,{className:o.label,children:[e.label,e.description?(0,s.jsx)(`span`,{className:o.reason,children:e.description}):null,e.disabled&&e.reason?(0,s.jsx)(`span`,{className:o.reason,children:e.reason}):null]})]})},e.id))}),document.body)}function u(e,t=`end`,n=220){let r=e.getBoundingClientRect();return{x:t===`end`?r.right-n:r.left,y:r.bottom+4}}export{u as n,l as t};
|
|
2
|
+
//# sourceMappingURL=ActionMenu-DmHRxr1Q.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionMenu-DmHRxr1Q.js","names":[],"sources":["../../../../../../src/web-ui/routes/verse/chat/ActionMenu.module.css","../../../../../../src/web-ui/routes/verse/chat/ActionMenu.tsx"],"sourcesContent":["/**\n * chat/ActionMenu.module.css — the chat surface's action menu. Raised\n * surface, hairline border, the menu shadow; rows are density-sm.\n */\n.menu {\n position: fixed;\n z-index: var(--z-dropdown);\n display: flex;\n flex-direction: column;\n min-width: 200px;\n max-width: min(320px, calc(100vw - 16px));\n padding: var(--space-1);\n border: 1px solid var(--border-default);\n border-radius: var(--radius-md);\n background: var(--bg-surface-raised);\n box-shadow: var(--shadow-menu);\n animation: menu-in var(--duration-fast) var(--ease-decelerate);\n}\n.menu:focus { outline: none; }\n\n.row[data-separated] {\n margin-top: var(--space-1);\n padding-top: var(--space-1);\n border-top: 1px solid var(--border-subtle);\n}\n\n.item {\n display: flex;\n align-items: flex-start;\n gap: var(--space-2);\n width: 100%;\n min-height: var(--density-row-sm);\n padding: var(--space-1) var(--space-2);\n border: 0;\n border-radius: var(--radius-sm);\n background: transparent;\n color: var(--text-primary);\n font: inherit;\n font-size: var(--text-sm-size);\n line-height: var(--text-sm-line);\n text-align: left;\n cursor: pointer;\n}\n.item:hover,\n.item:focus { outline: none; background: var(--bg-hover); }\n.item:focus-visible { box-shadow: inset 0 0 0 1px var(--border-focus); }\n.item[data-danger] { color: var(--status-danger-fg); }\n.item[data-danger]:hover,\n.item[data-danger]:focus { background: var(--status-danger-bg); }\n.item[aria-disabled='true'] { color: var(--text-disabled); cursor: not-allowed; }\n.item[aria-disabled='true']:hover { background: transparent; }\n\n.icon {\n flex: none;\n display: inline-flex;\n width: 16px;\n margin-top: 2px;\n color: var(--text-tertiary);\n}\n.label {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n.reason {\n font-size: var(--text-xs-size);\n line-height: var(--text-xs-line);\n color: var(--text-tertiary);\n}\n\n@keyframes menu-in {\n from { opacity: 0; transform: translateY(-2px); }\n to { opacity: 1; transform: none; }\n}\n@media (prefers-reduced-motion: reduce) {\n :root:not([data-motion='full']) .menu { animation: none; }\n}\n:root[data-motion='reduce'] .menu { animation: none; }\n","/**\n * routes/verse/chat/ActionMenu.tsx — the chat surface's small action menu\n * (unit C2): the header's ⋯ and a sidebar row's hover / right-click menu.\n *\n * The primitives have no menu, and the ones scattered through the console\n * are each hand-rolled for one place; this one is written once for both of\n * C2's uses and follows the WAI-ARIA menu pattern properly:\n * - `role=\"menu\"` of `menuitem`s, focus moves INTO the menu on open;\n * - ↑/↓ wrap, Home/End jump, a letter jumps to the next item starting\n * with it, Enter/Space choose;\n * - Esc, Tab, a click outside or choosing an item close it and hand focus\n * back to whatever opened it (the ⋯ button, or the row that was\n * right-clicked);\n * - a disabled item stays in the list with its reason as a description, so\n * the operator learns WHY instead of wondering where it went.\n *\n * Portalled and position:fixed so the sidebar's own overflow cannot clip it,\n * and clamped to the viewport (a right-click near the bottom opens upward).\n */\nimport { useEffect, useLayoutEffect, useRef, useState, type KeyboardEvent, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport styles from './ActionMenu.module.css';\n\nexport interface ActionMenuItem {\n id: string;\n label: string;\n onSelect: () => void;\n /** Painted as destructive (Delete). */\n danger?: boolean;\n disabled?: boolean;\n /** Shown under a disabled item. */\n reason?: string | null;\n /** A second line under the label, always shown (a cost, a consequence). */\n description?: string | null;\n /** A leading glyph. */\n icon?: ReactNode;\n /** A separator above this item. */\n separated?: boolean;\n}\n\nexport interface MenuAnchor {\n /** Viewport coordinates of the menu's preferred top-left. */\n x: number;\n y: number;\n}\n\nexport interface ActionMenuProps {\n label: string;\n items: readonly ActionMenuItem[];\n anchor: MenuAnchor;\n onClose: (reason: 'select' | 'dismiss') => void;\n /** Focus returns here on close. */\n returnFocus?: HTMLElement | null;\n}\n\nconst EDGE = 8;\n\nexport function ActionMenu({ label, items, anchor, onClose, returnFocus = null }: ActionMenuProps) {\n const ref = useRef<HTMLDivElement>(null);\n const itemRefs = useRef<(HTMLButtonElement | null)[]>([]);\n const [position, setPosition] = useState<{ left: number; top: number }>({ left: anchor.x, top: anchor.y });\n // Read through refs: the listeners below are installed ONCE per open, and a\n // parent passing an inline onClose must not tear them down (and bounce\n // focus back to the trigger) on every render.\n const onCloseRef = useRef(onClose);\n onCloseRef.current = onClose;\n const returnFocusRef = useRef(returnFocus);\n returnFocusRef.current = returnFocus;\n const enabled = items.map((item, i) => (item.disabled ? -1 : i)).filter((i) => i >= 0);\n\n // Clamp into the viewport once the menu has a size.\n useLayoutEffect(() => {\n const node = ref.current;\n if (!node) return;\n const rect = node.getBoundingClientRect();\n const vw = window.innerWidth || document.documentElement.clientWidth;\n const vh = window.innerHeight || document.documentElement.clientHeight;\n let left = anchor.x;\n let top = anchor.y;\n if (rect.width > 0 && left + rect.width > vw - EDGE) left = Math.max(EDGE, vw - EDGE - rect.width);\n if (rect.height > 0 && top + rect.height > vh - EDGE) top = Math.max(EDGE, anchor.y - rect.height);\n setPosition({ left, top });\n }, [anchor.x, anchor.y]);\n\n useEffect(() => {\n const first = enabled[0];\n if (first !== undefined) itemRefs.current[first]?.focus();\n else ref.current?.focus();\n // Focus moves in once, on open.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n const onPointer = (event: PointerEvent) => {\n if (ref.current && event.target instanceof Node && ref.current.contains(event.target)) return;\n onCloseRef.current('dismiss');\n };\n const onScroll = (event: Event) => {\n if (ref.current && event.target instanceof Node && ref.current.contains(event.target)) return;\n onCloseRef.current('dismiss');\n };\n document.addEventListener('pointerdown', onPointer, true);\n window.addEventListener('resize', onScroll);\n document.addEventListener('scroll', onScroll, true);\n const menu = ref.current;\n return () => {\n document.removeEventListener('pointerdown', onPointer, true);\n window.removeEventListener('resize', onScroll);\n document.removeEventListener('scroll', onScroll, true);\n // Hand focus back only if it is still ours (in the menu, or dropped to\n // <body> by the unmount) — never yank it from a field the chosen action\n // just focused.\n const active = document.activeElement;\n const ours = active === null || active === document.body || (menu !== null && menu.contains(active));\n const back = returnFocusRef.current;\n if (ours && back && document.contains(back)) back.focus({ preventScroll: true });\n };\n }, []);\n\n function move(from: number, delta: number) {\n if (enabled.length === 0) return;\n const at = enabled.indexOf(from);\n const next = at < 0 ? (delta > 0 ? 0 : enabled.length - 1) : (at + delta + enabled.length) % enabled.length;\n itemRefs.current[enabled[next]!]?.focus();\n }\n\n function onKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const index = itemRefs.current.findIndex((node) => node === document.activeElement);\n switch (event.key) {\n case 'ArrowDown': event.preventDefault(); move(index, 1); return;\n case 'ArrowUp': event.preventDefault(); move(index, -1); return;\n case 'Home': event.preventDefault(); itemRefs.current[enabled[0] ?? 0]?.focus(); return;\n case 'End': event.preventDefault(); itemRefs.current[enabled[enabled.length - 1] ?? 0]?.focus(); return;\n case 'Escape': event.preventDefault(); event.stopPropagation(); onClose('dismiss'); return;\n case 'Tab': onClose('dismiss'); return;\n default:\n if (event.key.length === 1 && /\\S/.test(event.key) && !event.metaKey && !event.ctrlKey && !event.altKey) {\n const letter = event.key.toLowerCase();\n const order = [...enabled.filter((i) => i > index), ...enabled.filter((i) => i <= index)];\n const hit = order.find((i) => items[i]!.label.toLowerCase().startsWith(letter));\n if (hit !== undefined) {\n event.preventDefault();\n itemRefs.current[hit]?.focus();\n }\n }\n }\n }\n\n return createPortal(\n <div ref={ref} className={styles.menu} role=\"menu\" aria-label={label} tabIndex={-1}\n style={{ left: position.left, top: position.top }} onKeyDown={onKeyDown}\n onContextMenu={(event) => event.preventDefault()}>\n {items.map((item, i) => (\n <div key={item.id} className={styles.row} data-separated={item.separated || undefined} role=\"none\">\n <button\n ref={(node) => { itemRefs.current[i] = node; }}\n type=\"button\"\n role=\"menuitem\"\n className={styles.item}\n data-danger={item.danger || undefined}\n aria-disabled={item.disabled || undefined}\n tabIndex={-1}\n onClick={() => {\n if (item.disabled) return;\n onClose('select');\n item.onSelect();\n }}\n >\n {item.icon ? <span className={styles.icon} aria-hidden=\"true\">{item.icon}</span> : null}\n <span className={styles.label}>\n {item.label}\n {item.description ? <span className={styles.reason}>{item.description}</span> : null}\n {item.disabled && item.reason ? <span className={styles.reason}>{item.reason}</span> : null}\n </span>\n </button>\n </div>\n ))}\n </div>,\n document.body,\n );\n}\n\n/** Anchor a menu under (and right-aligned to) a button. */\nexport function anchorBelow(node: HTMLElement, align: 'start' | 'end' = 'end', menuWidth = 220): MenuAnchor {\n const rect = node.getBoundingClientRect();\n return { x: align === 'end' ? rect.right - menuWidth : rect.left, y: rect.bottom + 4 };\n}\n"],"mappings":"iTCuDM,EAAO,EAEb,SAAgB,EAAW,CAAE,QAAO,QAAO,SAAQ,UAAS,cAAc,MAAyB,CACjG,IAAM,GAAA,EAAM,EAAA,OAAA,CAAuB,IAAI,EACjC,GAAA,EAAW,EAAA,OAAA,CAAqC,CAAC,CAAC,EAClD,CAAC,EAAU,IAAA,EAAe,EAAA,SAAA,CAAwC,CAAE,KAAM,EAAO,EAAG,IAAK,EAAO,CAAE,CAAC,EAInG,GAAA,EAAa,EAAA,OAAA,CAAO,CAAO,EACjC,EAAW,QAAU,EACrB,IAAM,GAAA,EAAiB,EAAA,OAAA,CAAO,CAAW,EACzC,EAAe,QAAU,EACzB,IAAM,EAAU,EAAM,KAAK,EAAM,IAAO,EAAK,SAAW,GAAK,CAAE,CAAC,CAAC,OAAQ,GAAM,GAAK,CAAC,GAGrF,EAAA,EAAA,gBAAA,KAAsB,CACpB,IAAM,EAAO,EAAI,QACjB,GAAI,CAAC,EAAM,OACX,IAAM,EAAO,EAAK,sBAAsB,EAClC,EAAK,OAAO,YAAc,SAAS,gBAAgB,YACnD,EAAK,OAAO,aAAe,SAAS,gBAAgB,aACtD,EAAO,EAAO,EACd,EAAM,EAAO,EACb,EAAK,MAAQ,GAAK,EAAO,EAAK,MAAQ,EAAK,IAAM,EAAO,KAAK,IAAI,EAAM,EAAK,EAAO,EAAK,KAAK,GAC7F,EAAK,OAAS,GAAK,EAAM,EAAK,OAAS,EAAK,IAAM,EAAM,KAAK,IAAI,EAAM,EAAO,EAAI,EAAK,MAAM,GACjG,EAAY,CAAE,OAAM,KAAI,CAAC,CAC3B,EAAG,CAAC,EAAO,EAAG,EAAO,CAAC,CAAC,GAEvB,EAAA,EAAA,UAAA,KAAgB,CACd,IAAM,EAAQ,EAAQ,GAClB,IAAU,IAAA,GACT,EAAI,SAAS,MAAM,EADC,EAAS,QAAQ,EAAM,EAAE,MAAM,CAI1D,EAAG,CAAC,CAAC,GAEL,EAAA,EAAA,UAAA,KAAgB,CACd,IAAM,EAAa,GAAwB,CACrC,EAAI,SAAW,EAAM,kBAAkB,MAAQ,EAAI,QAAQ,SAAS,EAAM,MAAM,GACpF,EAAW,QAAQ,SAAS,CAC9B,EACM,EAAY,GAAiB,CAC7B,EAAI,SAAW,EAAM,kBAAkB,MAAQ,EAAI,QAAQ,SAAS,EAAM,MAAM,GACpF,EAAW,QAAQ,SAAS,CAC9B,EACA,SAAS,iBAAiB,cAAe,EAAW,EAAI,EACxD,OAAO,iBAAiB,SAAU,CAAQ,EAC1C,SAAS,iBAAiB,SAAU,EAAU,EAAI,EAClD,IAAM,EAAO,EAAI,QACjB,UAAa,CACX,SAAS,oBAAoB,cAAe,EAAW,EAAI,EAC3D,OAAO,oBAAoB,SAAU,CAAQ,EAC7C,SAAS,oBAAoB,SAAU,EAAU,EAAI,EAIrD,IAAM,EAAS,SAAS,cAClB,EAAO,IAAW,MAAQ,IAAW,SAAS,MAAS,IAAS,MAAQ,EAAK,SAAS,CAAM,EAC5F,EAAO,EAAe,QACxB,GAAQ,GAAQ,SAAS,SAAS,CAAI,GAAG,EAAK,MAAM,CAAE,cAAe,EAAK,CAAC,CACjF,CACF,EAAG,CAAC,CAAC,EAEL,SAAS,EAAK,EAAc,EAAe,CACzC,GAAI,EAAQ,SAAW,EAAG,OAC1B,IAAM,EAAK,EAAQ,QAAQ,CAAI,EACzB,EAAO,EAAK,EAAK,EAAQ,EAAI,EAAI,EAAQ,OAAS,GAAM,EAAK,EAAQ,EAAQ,QAAU,EAAQ,OACrG,EAAS,QAAQ,EAAQ,GAAO,EAAE,MAAM,CAC1C,CAEA,SAAS,EAAU,EAAsC,CACvD,IAAM,EAAQ,EAAS,QAAQ,UAAW,GAAS,IAAS,SAAS,aAAa,EAClF,OAAQ,EAAM,IAAd,CACE,IAAK,YAAa,EAAM,eAAe,EAAG,EAAK,EAAO,CAAC,EAAG,OAC1D,IAAK,UAAW,EAAM,eAAe,EAAG,EAAK,EAAO,EAAE,EAAG,OACzD,IAAK,OAAQ,EAAM,eAAe,EAAG,EAAS,QAAQ,EAAQ,IAAM,EAAE,EAAE,MAAM,EAAG,OACjF,IAAK,MAAO,EAAM,eAAe,EAAG,EAAS,QAAQ,EAAQ,EAAQ,OAAS,IAAM,EAAE,EAAE,MAAM,EAAG,OACjG,IAAK,SAAU,EAAM,eAAe,EAAG,EAAM,gBAAgB,EAAG,EAAQ,SAAS,EAAG,OACpF,IAAK,MAAO,EAAQ,SAAS,EAAG,OAChC,QACE,GAAI,EAAM,IAAI,SAAW,GAAK,KAAK,KAAK,EAAM,GAAG,GAAK,CAAC,EAAM,SAAW,CAAC,EAAM,SAAW,CAAC,EAAM,OAAQ,CACvG,IAAM,EAAS,EAAM,IAAI,YAAY,EAE/B,EAAM,CADG,GAAG,EAAQ,OAAQ,GAAM,EAAI,CAAK,EAAG,GAAG,EAAQ,OAAQ,GAAM,GAAK,CAAK,CAC3E,CAAA,CAAM,KAAM,GAAM,EAAM,EAAE,CAAE,MAAM,YAAY,CAAC,CAAC,WAAW,CAAM,CAAC,EAC1E,IAAQ,IAAA,KACV,EAAM,eAAe,EACrB,EAAS,QAAQ,EAAI,EAAE,MAAM,EAEjC,CACJ,CACF,CAEA,OAAA,EAAO,EAAA,aAAA,EACL,EAAA,EAAA,IAAA,CAAC,MAAD,CAAU,MAAK,UAAW,EAAO,KAAM,KAAK,OAAO,aAAY,EAAO,SAAU,GAC9E,MAAO,CAAE,KAAM,EAAS,KAAM,IAAK,EAAS,GAAI,EAAc,YAC9D,cAAgB,GAAU,EAAM,eAAe,EAC9C,SAAA,EAAM,KAAK,EAAM,KAChB,EAAA,EAAA,IAAA,CAAC,MAAD,CAAmB,UAAW,EAAO,IAAK,iBAAgB,EAAK,WAAa,IAAA,GAAW,KAAK,OAC1F,UAAA,EAAA,EAAA,KAAA,CAAC,SAAD,CACE,IAAM,GAAS,CAAE,EAAS,QAAQ,GAAK,CAAM,EAC7C,KAAK,SACL,KAAK,WACL,UAAW,EAAO,KAClB,cAAa,EAAK,QAAU,IAAA,GAC5B,gBAAe,EAAK,UAAY,IAAA,GAChC,SAAU,GACV,YAAe,CACT,EAAK,WACT,EAAQ,QAAQ,EAChB,EAAK,SAAS,EAChB,EAZF,SAAA,CAcG,EAAK,MAAO,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAO,KAAM,cAAY,OAAQ,SAAA,EAAK,IAAW,CAAA,EAAI,MACnF,EAAA,EAAA,KAAA,CAAC,OAAD,CAAM,UAAW,EAAO,MAAxB,SAAA,CACG,EAAK,MACL,EAAK,aAAc,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAO,OAAS,SAAA,EAAK,WAAkB,CAAA,EAAI,KAC/E,EAAK,UAAY,EAAK,QAAS,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAO,OAAS,SAAA,EAAK,MAAa,CAAA,EAAI,IACnF,CACA,CAAA,CAAA,GACL,EAtBK,EAAK,EAsBV,CACN,CACE,CAAA,EACL,SAAS,IACX,CACF,CAGA,SAAgB,EAAY,EAAmB,EAAyB,MAAO,EAAY,IAAiB,CAC1G,IAAM,EAAO,EAAK,sBAAsB,EACxC,MAAO,CAAE,EAAG,IAAU,MAAQ,EAAK,MAAQ,EAAY,EAAK,KAAM,EAAG,EAAK,OAAS,CAAE,CACvF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{n as e,r as t}from"./rolldown-runtime-hePW80VL.js";import{n,s as r}from"./index-BMfejJ9u.js";import{B as i,K as a,d as o,l as s}from"./global-7hs7NyAO.js";import{r as c}from"./Epistemic-Cu1zgz4Q.js";import{n as l}from"./StatusBadge-RjXOZERa.js";import{t as u}from"./MutationTokenDialog-uyP-k0p1.js";import{t as d}from"./ConfirmDialog-BLa9SQCD.js";import{t as f}from"./RefreshIndicator-Di6IeZNh.js";import{a as p,i as m}from"./SkipToContent-DxOcfOLL.js";import{St as h}from"./VerseConsoleApp-CyRa9lh1.js";import{x as g}from"./VerseShared-8n7hxr-e.js";import{n as _}from"./verse-bootstrap-query-CarqaoBI.js";import{s as v}from"./verse-model-DAOz9LrY.js";import{t as y}from"./Segmented-pAErxjR4.js";import{a as b,d as x,f as S,g as C,i as w,l as T,n as E,o as D,p as O,r as k,s as A,t as j,u as M,v as N,y as P}from"./format-V6IiIMAL.js";import{n as F,r as ee}from"./workspace-model-C-q_I8xN.js";import{t as te}from"./Meter-Cm15WZWf.js";import{a as I,c as L,d as ne,f as R,g as z,h as re,i as ie,l as B,m as ae,o as V,p as oe,s as se,u as ce}from"./control-queries-CWyOtMUt.js";import{t as le}from"./Select-Css6V7wH.js";import{t as H}from"./use-ticker-C_3x5IxG.js";import{a as ue,d as de,f as fe,i as pe,n as me,o as he,p as ge,r as _e,s as ve,t as ye}from"./fleet-model-D4n8ErhA.js";import{a as be,i as xe,n as Se,o as Ce,r as we,s as Te}from"./fleet-queries-BfG7HzPg.js";import{a as Ee,c as De,d as Oe,i as ke,l as Ae,n as je,o as Me,r as Ne,s as Pe,t as Fe,u as Ie}from"./overnight-queries-DpCYfw0d.js";import{n as Le}from"./use-guarded-action-DtO48djT.js";var U=t(r(),1),W=n();function Re(e){let t=e.limit;if(typeof t!=`number`||!Number.isFinite(t)||t<=0)return`unlimited`;let n=typeof e.callsToday==`number`&&Number.isFinite(e.callsToday)?e.callsToday:0;return n>=t?`over`:n>=t*.8?`warn`:`ok`}var G={panel:`_panel_1apqn_12`,panelHead:`_panelHead_1apqn_15`,panelTitle:`_panelTitle_1apqn_16`,panelHeadSpaced:`_panelHeadSpaced_1apqn_25`,panelNote:`_panelNote_1apqn_26`,panelActions:`_panelActions_1apqn_27`,status:`_status_1apqn_30`,statusTop:`_statusTop_1apqn_31`,runState:`_runState_1apqn_32`,runDot:`_runDot_1apqn_33`,facts:`_facts_1apqn_39`,fact:`_fact_1apqn_39`,factLabel:`_factLabel_1apqn_41`,factValue:`_factValue_1apqn_42`,budget:`_budget_1apqn_49`,budgetLine:`_budgetLine_1apqn_50`,budgetLabel:`_budgetLabel_1apqn_51`,budgetNote:`_budgetNote_1apqn_52`,meter:`_meter_1apqn_53`,meterFill:`_meterFill_1apqn_58`,controls:`_controls_1apqn_61`,button:`_button_1apqn_62`,buttonPrimary:`_buttonPrimary_1apqn_76`,emergency:`_emergency_1apqn_80`,emergencyButton:`_emergencyButton_1apqn_81`,emergencyNote:`_emergencyNote_1apqn_102`,capGrid:`_capGrid_1apqn_105`,cap:`_cap_1apqn_105`,capLabel:`_capLabel_1apqn_107`,capRow:`_capRow_1apqn_108`,capInput:`_capInput_1apqn_109`,capInputInvalid:`_capInputInvalid_1apqn_123`,capUnit:`_capUnit_1apqn_124`,capHelp:`_capHelp_1apqn_125`,capUsage:`_capUsage_1apqn_126`,capError:`_capError_1apqn_127`,actionNote:`_actionNote_1apqn_130`,capApplied:`_capApplied_1apqn_131`,repoList:`_repoList_1apqn_135`,repoRow:`_repoRow_1apqn_136`,repoName:`_repoName_1apqn_137`,repoPath:`_repoPath_1apqn_138`,repoMissing:`_repoMissing_1apqn_139`,addRow:`_addRow_1apqn_140`,addInput:`_addInput_1apqn_141`,tableScroll:`_tableScroll_1apqn_156`,table:`_table_1apqn_156`,cellAction:`_cellAction_1apqn_176`,cellTime:`_cellTime_1apqn_177`,cellSummary:`_cellSummary_1apqn_178`,cellRepo:`_cellRepo_1apqn_179`,resultTag:`_resultTag_1apqn_188`,filters:`_filters_1apqn_197`,filterField:`_filterField_1apqn_198`,filterLabel:`_filterLabel_1apqn_199`,filterSelect:`_filterSelect_1apqn_214`,checkList:`_checkList_1apqn_229`,check:`_check_1apqn_229`,checkMark:`_checkMark_1apqn_231`,checkLabel:`_checkLabel_1apqn_234`,checkDetail:`_checkDetail_1apqn_235`,summaryColumns:`_summaryColumns_1apqn_238`,summaryList:`_summaryList_1apqn_239`,summaryRow:`_summaryRow_1apqn_240`,summaryTitle:`_summaryTitle_1apqn_241`,summaryMeta:`_summaryMeta_1apqn_242`,empty:`_empty_1apqn_245`,emptyStrong:`_emptyStrong_1apqn_246`,error:`_error_1apqn_249`,readOnly:`_readOnly_1apqn_250`,skeletons:`_skeletons_1apqn_252`,srOnly:`_srOnly_1apqn_253`,runtimeTop:`_runtimeTop_1apqn_268`,runtimeState:`_runtimeState_1apqn_269`,runtimeStateText:`_runtimeStateText_1apqn_270`,factWide:`_factWide_1apqn_277`,factMono:`_factMono_1apqn_278`,capacityBlock:`_capacityBlock_1apqn_282`,capacityHead:`_capacityHead_1apqn_283`,capacityBig:`_capacityBig_1apqn_284`,capacityWords:`_capacityWords_1apqn_298`,capacityHeadline:`_capacityHeadline_1apqn_299`,capacityDetail:`_capacityDetail_1apqn_300`,evidence:`_evidence_1apqn_303`,evidenceLead:`_evidenceLead_1apqn_304`,evidenceScroll:`_evidenceScroll_1apqn_305`,evidenceTable:`_evidenceTable_1apqn_306`,evidenceNums:`_evidenceNums_1apqn_311`,evidenceCode:`_evidenceCode_1apqn_312`,utilisation:`_utilisation_1apqn_314`,toggleRow:`_toggleRow_1apqn_317`,toggleState:`_toggleState_1apqn_318`,policyExplain:`_policyExplain_1apqn_319`,impact:`_impact_1apqn_322`,impactTitle:`_impactTitle_1apqn_323`,impactSummary:`_impactSummary_1apqn_324`,seatList:`_seatList_1apqn_325`,seatRow:`_seatRow_1apqn_326`,seatEngine:`_seatEngine_1apqn_327`,seatLabel:`_seatLabel_1apqn_343`,seatRefusal:`_seatRefusal_1apqn_344`,pressure:`_pressure_1apqn_347`,pressureHead:`_pressureHead_1apqn_348`,pressureHeadline:`_pressureHeadline_1apqn_349`,pressureDetail:`_pressureDetail_1apqn_352`,fleetMeters:`_fleetMeters_1apqn_354`,elapsedQualifier:`_elapsedQualifier_1apqn_355`,noteList:`_noteList_1apqn_356`,repoStanding:`_repoStanding_1apqn_360`,repoPriority:`_repoPriority_1apqn_367`,repoSection:`_repoSection_1apqn_368`,repoOutsideFocus:`_repoOutsideFocus_1apqn_369`},ze=20,K=40;function Be({snapshot:e}){let t=e.daemon?.ticks??null,n=(0,U.useMemo)(()=>t?[...t].slice(-20).reverse():[],[t]),r=(0,U.useMemo)(()=>{if(!t)return[];let e=[];for(let n=t.length-1;n>=0&&e.length<K;--n){let r=t[n];if(r?.dispatches)for(let t=r.dispatches.length-1;t>=0&&e.length<K;--t)e.push({...r.dispatches[t],tickTs:r.ts})}return e},[t]);return(0,W.jsxs)(`section`,{className:G.panel,"aria-label":`Activity`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Recent ticks`}),(0,W.jsxs)(`p`,{className:G.panelNote,children:[`Newest first · last `,ze]})]}),t===null?(0,W.jsx)(`p`,{className:G.empty,children:`The daemon ledger is not readable right now, so tick history is unknown.`}):n.length===0?(0,W.jsx)(`p`,{className:G.empty,children:`No ticks have been recorded yet. Start the loop, or run one tick, to produce the first.`}):(0,W.jsx)(`div`,{className:G.tableScroll,children:(0,W.jsxs)(`table`,{className:G.table,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{scope:`col`,children:`Time`}),(0,W.jsx)(`th`,{scope:`col`,children:`Outcome`}),(0,W.jsx)(`th`,{scope:`col`,children:`Items`}),(0,W.jsx)(`th`,{scope:`col`,children:`Proposals`}),(0,W.jsx)(`th`,{scope:`col`,children:`Dispatched`}),(0,W.jsx)(`th`,{scope:`col`,children:`Spend`}),(0,W.jsx)(`th`,{scope:`col`,children:`Direction`})]})}),(0,W.jsx)(`tbody`,{children:n.map(e=>{let t=b(e.reason);return(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`td`,{className:G.cellTime,title:M(e.ts),children:x(e.ts)}),(0,W.jsxs)(`td`,{className:G.cellSummary,"data-tone":t.tone,children:[t.label,e.dryRun?` (dry run)`:``]}),(0,W.jsx)(`td`,{className:G.cellTime,children:A(e.itemsConsidered)}),(0,W.jsx)(`td`,{className:G.cellTime,children:A(e.proposalsCreated)}),(0,W.jsx)(`td`,{className:G.cellTime,children:e.dispatches?e.dispatches.length:`—`}),(0,W.jsx)(`td`,{className:G.cellTime,children:S(e.spentUsd)}),(0,W.jsx)(`td`,{className:G.cellSummary,children:e.directionMode??`—`})]},`${e.ts}-${e.reason}`)})})]})}),(0,W.jsxs)(`div`,{className:`${G.panelHead} ${G.panelHeadSpaced}`,children:[(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Recent dispatches`}),(0,W.jsxs)(`p`,{className:G.panelNote,children:[`Newest first · last `,K]})]}),r.length===0?(0,W.jsx)(`p`,{className:G.empty,children:`No dispatches in the recorded ticks. Run one tick from Controls to see what it would pick up.`}):(0,W.jsx)(`div`,{className:G.tableScroll,children:(0,W.jsxs)(`table`,{className:G.table,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{scope:`col`,children:`Time`}),(0,W.jsx)(`th`,{scope:`col`,children:`Item`}),(0,W.jsx)(`th`,{scope:`col`,children:`Repo`}),(0,W.jsx)(`th`,{scope:`col`,children:`Engine`}),(0,W.jsx)(`th`,{scope:`col`,children:`Outcome`}),(0,W.jsx)(`th`,{scope:`col`,children:`Spend`})]})}),(0,W.jsx)(`tbody`,{children:r.map((e,t)=>(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`td`,{className:G.cellTime,title:M(e.tickTs),children:x(e.tickTs)}),(0,W.jsx)(`td`,{className:G.cellSummary,title:e.title,children:e.title}),(0,W.jsx)(`td`,{className:G.cellRepo,title:e.repo,children:e.repo?N(e.repo):`—`}),(0,W.jsx)(`td`,{className:G.cellAction,children:e.backend??`not routed`}),(0,W.jsx)(`td`,{className:G.cellSummary,children:e.dispatched?`dispatched`:`skipped — ${P(e.reason)}`}),(0,W.jsx)(`td`,{className:G.cellTime,children:S(e.spentUsd)})]},`${e.tickTs}-${e.itemId}-${t}`))})]})}),(0,W.jsx)(Ve,{})]})}function Ve(){let[e,t]=(0,U.useState)(``),[n,r]=(0,U.useState)(``),[i,a]=(0,U.useState)(``),[c,l]=(0,U.useState)(200),u=(0,U.useMemo)(()=>B({limit:c,action:n||void 0,result:i||void 0}),[c,n,i]),d=s(u),m=o(u),h=d.data?.entries??[];return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`${G.panelHead} ${G.panelHeadSpaced}`,children:[(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Audit trail`}),(0,W.jsxs)(`div`,{className:G.panelActions,children:[d.status===`refreshing`?(0,W.jsx)(f,{}):null,(0,W.jsx)(`button`,{type:`button`,className:G.button,onClick:m,children:`Refresh`})]})]}),(0,W.jsxs)(`div`,{className:G.filters,children:[(0,W.jsxs)(`label`,{className:G.filterField,children:[(0,W.jsx)(`span`,{className:G.filterLabel,children:`Action`}),(0,W.jsx)(`input`,{type:`search`,value:e,placeholder:`e.g. enroll.add`,onChange:e=>t(e.target.value),onBlur:()=>r(e.trim()),onKeyDown:t=>{t.key===`Enter`&&(t.preventDefault(),r(e.trim()))}})]}),(0,W.jsxs)(le,{className:G.filterSelect,label:`Result`,value:i,onChange:e=>a(e.target.value),children:[(0,W.jsx)(`option`,{value:``,children:`Any result`}),(0,W.jsx)(`option`,{value:`ok`,children:`ok`}),(0,W.jsx)(`option`,{value:`refused`,children:`refused`}),(0,W.jsx)(`option`,{value:`error`,children:`error`})]}),(0,W.jsxs)(le,{className:G.filterSelect,label:`Rows`,value:c,onChange:e=>l(Number(e.target.value)),children:[(0,W.jsx)(`option`,{value:50,children:`50`}),(0,W.jsx)(`option`,{value:200,children:`200`}),(0,W.jsx)(`option`,{value:500,children:`500`})]})]}),d.status===`loading`?(0,W.jsxs)(`div`,{className:G.skeletons,children:[(0,W.jsx)(p,{}),(0,W.jsx)(p,{}),(0,W.jsx)(p,{})]}):d.status===`error`?(0,W.jsx)(`p`,{className:G.error,role:`alert`,children:d.error?.message??`Could not read the audit trail.`}):h.length===0?(0,W.jsx)(`p`,{className:G.empty,children:n||i?`No audit entries match this filter. Clear the Action or Result filter to see every entry.`:`No audit entries recorded yet. Every autonomous or sandbox action appends one here, and none are ever deleted.`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`p`,{className:G.panelNote,"aria-live":`polite`,children:[h.length,` `,h.length===1?`entry`:`entries`,` · newest first`,d.data?.truncated?` · capped by the server, narrow the filter to see more`:``]}),(0,W.jsx)(`div`,{className:G.tableScroll,children:(0,W.jsxs)(`table`,{className:G.table,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{scope:`col`,children:`Time`}),(0,W.jsx)(`th`,{scope:`col`,children:`Action`}),(0,W.jsx)(`th`,{scope:`col`,children:`Result`}),(0,W.jsx)(`th`,{scope:`col`,children:`Repo`}),(0,W.jsx)(`th`,{scope:`col`,children:`Summary`})]})}),(0,W.jsx)(`tbody`,{children:h.map((e,t)=>(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`td`,{className:G.cellTime,title:M(e.ts),children:x(e.ts)}),(0,W.jsx)(`td`,{className:G.cellAction,children:e.action}),(0,W.jsx)(`td`,{children:(0,W.jsx)(`span`,{className:G.resultTag,"data-result":e.result,children:e.result})}),(0,W.jsx)(`td`,{className:G.cellRepo,title:e.repo??void 0,children:e.repo?N(e.repo):`—`}),(0,W.jsx)(`td`,{className:G.cellSummary,children:P(e.summary)})]},`${e.ts}-${e.action}-${t}`))})]})})]})]})}var q=e=>e,He=6e4,Ue=[{key:`dailyBudgetUsd`,label:`Daily budget`,unit:`USD / day`,min:0,max:1e3,integer:!1,step:1,help:`Hard ceiling on what the loop may spend in a calendar day. 0 stops the loop.`,toDisplay:q,fromDisplay:q},{key:`perTickItems`,label:`Items per tick`,unit:`items`,min:1,max:50,integer:!0,step:1,help:`How many backlog items one tick may pick up.`,toDisplay:q,fromDisplay:q},{key:`parallel`,label:`Parallel swarms`,unit:`swarms`,min:1,max:16,integer:!0,step:1,help:`Sandboxed swarms run simultaneously inside one tick (batch mode).`,toDisplay:q,fromDisplay:q},{key:`intervalMs`,label:`Tick interval`,unit:`minutes`,min:.5,max:1440,integer:!1,step:.5,help:`Gap between ticks in loop mode. 30 seconds minimum, 24 hours maximum.`,toDisplay:e=>Math.round(e/He*100)/100,fromDisplay:e=>Math.round(e*He)},{key:`maxConcurrent`,label:`Max concurrent`,unit:`dispatches`,min:1,max:32,integer:!0,step:1,help:`Absolute ceiling on in-flight dispatches in continuous mode. Takes precedence over the per-tier totals.`,toDisplay:q,fromDisplay:q},{key:`concurrency.local`,label:`Local tier`,unit:`slots`,min:1,max:32,integer:!0,step:1,help:`On-device engines. GPU/RAM bound — keep this low.`,toDisplay:q,fromDisplay:q},{key:`concurrency.cloud`,label:`Cloud tier`,unit:`slots`,min:1,max:32,integer:!0,step:1,help:`Subscription cloud agents. I/O bound — many can run at once.`,toDisplay:q,fromDisplay:q},{key:`concurrency.total`,label:`All tiers`,unit:`slots`,min:1,max:32,integer:!0,step:1,help:`Hard cap across every tier combined.`,toDisplay:q,fromDisplay:q},{key:`subscriptionMaxPercent`,label:`Subscription ceiling`,unit:`% of window`,min:1,max:100,integer:!0,step:1,help:`How much of a flat-fee provider window the fleet may consume before it backs off.`,toDisplay:q,fromDisplay:q}];function We(e,t){if(!e)return null;let n=t===`concurrency.local`?e.concurrency?.local:t===`concurrency.cloud`?e.concurrency?.cloud:t===`concurrency.total`?e.concurrency?.total:e[t];return typeof n==`number`&&Number.isFinite(n)?n:null}function Ge(e,t){return t.startsWith(`%`)?`${e}${t}`:`${e} ${t}`}function Ke(e,t){let n=t.trim();if(n===``)return{ok:!1,error:`${e.label} cannot be blank.`};let r=Number(n);if(!Number.isFinite(r))return{ok:!1,error:`${e.label} must be a number.`};if(e.integer&&!Number.isInteger(r)){let t=e.unit.startsWith(`%`)?`a whole percentage`:`a whole number of ${e.unit}`;return{ok:!1,error:`${e.label} must be ${t}.`}}return r<e.min||r>e.max?{ok:!1,error:`${e.label} must be between ${e.min} and ${Ge(e.max,e.unit)}.`}:{ok:!0,stored:e.fromDisplay(r),display:r}}function qe(e,t){switch(e){case`concurrency.local`:return{concurrency:{local:t}};case`concurrency.cloud`:return{concurrency:{cloud:t}};case`concurrency.total`:return{concurrency:{total:t}};default:return{[e]:t}}}var J=z.foundryLimitMax;function Je(e,t){let n=e.trim();if(n===``)return{ok:!1,error:`${t} limit cannot be blank.`};let r=Number(n);return Number.isFinite(r)?Number.isInteger(r)?r<J.min?{ok:!1,error:`${t} limit cannot be negative.`}:r>J.max?{ok:!1,error:`${t} limit must be at most ${J.max} dispatches.`}:{ok:!0,stored:r,display:r}:{ok:!1,error:`${t} limit must be a whole number of dispatches.`}:{ok:!1,error:`${t} limit must be a number.`}}function Ye(e,t,n){let r=n.daemon,i=r?.ticks?.[r.ticks.length-1]??null;switch(e){case`dailyBudgetUsd`:{let e=t.dailyBudgetUsd;if(e===0)return`Loop stopped ($0 budget).`;let i=n.spend,a=i?k(i.todayUsd,e,i.todayDate):k(r?.todaySpentUsd??null,e,null);return a.state===`unknown`?a.note:`${S(i?i.todayUsd:r?.todaySpentUsd??null)} spent today`}case`perTickItems`:return i?`${A(i.itemsConsidered)} considered on the last tick`:null;case`parallel`:return i?.dispatches?`${i.dispatches.length} dispatched on the last tick`:null;case`intervalMs`:return r?.lastTickAt?`last tick ${D(r.lastTickAt)} ago`:null;default:return null}}function Xe({caps:e,snapshot:t,guard:n,dispatchEnabled:r}){let[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(null),u=!r||n.readOnly;function d(e,t,r){a(e),l(null),n.request(async()=>{s(e);try{await r(),l(e)}finally{s(null)}},t)}let f=e.foundryLimits??[];return(0,W.jsxs)(`section`,{className:G.panel,"aria-label":`Budget and limits`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Budget and limits`}),(0,W.jsx)(`p`,{className:G.panelNote,children:`Committed on blur or Enter. The daemon re-reads config each tick, so changes apply live.`})]}),(0,W.jsx)(`div`,{className:G.capGrid,children:Ue.map(r=>(0,W.jsx)($e,{spec:r,stored:We(e,r.key),usage:Ye(r.key,e,t),disabled:u||o!==null&&o!==r.key,busy:o===r.key,applied:c===r.key,error:i===r.key?n.error:null,onCommit:e=>d(r.key,`Changing ${r.label.toLowerCase()} requires the dispatch token.`,()=>se(qe(r.key,e)))},r.key))}),(0,W.jsx)(`div`,{className:`${G.panelHead} ${G.panelHeadSpaced}`,children:(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Per-engine dispatch limits`})}),f.length===0?(0,W.jsxs)(`p`,{className:G.empty,children:[`No per-engine dispatch limits are configured. Every engine is bounded only by the caps above and by its own provider quota. To cap one, add it under `,(0,W.jsx)(`code`,{children:`foundry.limits`}),` in `,(0,W.jsx)(`code`,{children:`~/.ashlr/config.json`}),` `,`(a `,(0,W.jsx)(`code`,{children:`max`}),` and a `,(0,W.jsx)(`code`,{children:`window`}),`); it then appears here to edit.`]}):(0,W.jsx)(`div`,{className:G.capGrid,children:f.map((e,r)=>(0,W.jsx)(et,{limit:e,usage:Ze(e.engine,t),disabled:u||o!==null&&o!==Y(e),busy:o===Y(e),applied:c===Y(e),error:i===Y(e)?n.error:null,onCommit:t=>d(Y(e),`Changing the ${e.engine} dispatch limit requires the dispatch token.`,()=>{let e=f.map((e,n)=>n===r?{...e,max:t}:e);return se({foundryLimits:e})})},`${e.engine}:${e.window}`))})]})}function Y(e){return`foundry:${e.engine}:${e.window}`}function Ze(e,t){let n=t.quota?.find(t=>t.engine===e);if(!n)return null;let r=Re(n),i=r===`unlimited`?`no limit configured`:r;return`${A(n.callsToday)} dispatched in the last ${n.limitWindow??`1d`} · ${i}`}function Qe(e){let t=[e.usage?`${e.id}-usage`:null,e.help?`${e.id}-help`:null].filter(e=>e!==null).join(` `);return(0,W.jsxs)(`div`,{className:G.cap,children:[(0,W.jsx)(`label`,{className:G.capLabel,htmlFor:e.id,children:e.label}),(0,W.jsxs)(`div`,{className:G.capRow,children:[(0,W.jsx)(`input`,{id:e.id,type:`number`,inputMode:`decimal`,className:`${G.capInput} ${e.invalid?G.capInputInvalid:``}`,value:e.value,step:e.step,min:e.min,max:e.max,disabled:e.disabled||e.busy,"aria-invalid":e.invalid?!0:void 0,"aria-describedby":t||void 0,onChange:t=>e.onChange(t.target.value),onBlur:e.onCommit,onKeyDown:t=>{t.key===`Enter`&&(t.preventDefault(),e.onCommit())}}),(0,W.jsx)(`span`,{className:G.capUnit,children:e.unit})]}),e.usage?(0,W.jsx)(`span`,{className:G.capUsage,id:`${e.id}-usage`,children:e.usage}):null,e.help?(0,W.jsx)(`span`,{className:G.capHelp,id:`${e.id}-help`,children:e.help}):null,e.invalid?(0,W.jsx)(`span`,{className:G.capError,role:`alert`,children:e.invalid}):null,e.error&&!e.invalid?(0,W.jsx)(`span`,{className:G.capError,role:`alert`,children:e.error}):null,e.applied&&!e.invalid&&!e.error?(0,W.jsx)(`span`,{className:G.capApplied,children:`applied live`}):null]})}function $e({spec:e,stored:t,usage:n,disabled:r,busy:i,applied:a,error:o,onCommit:s}){let c=t===null?``:String(e.toDisplay(t)),[l,u]=(0,U.useState)(c),[d,f]=(0,U.useState)(null);(0,U.useEffect)(()=>{d===null&&u(c)},[c]);function p(){if(l===c){f(null);return}let t=Ke(e,l);if(!t.ok){f(t.error);return}f(null),s(t.stored)}return(0,W.jsx)(Qe,{id:`cap-${e.key.replace(`.`,`-`)}`,label:e.label,unit:e.unit,help:e.help,usage:n,value:l,invalid:d,disabled:r,busy:i,applied:a,error:o,step:e.step,min:e.min,max:e.max,onChange:e=>{u(e),d&&f(null)},onCommit:p})}function et({limit:e,usage:t,disabled:n,busy:r,applied:i,error:a,onCommit:o}){let s=String(e.max),[c,l]=(0,U.useState)(s),[u,d]=(0,U.useState)(null);(0,U.useEffect)(()=>{u===null&&l(s)},[s]);function f(){if(c===s){d(null);return}let t=Je(c,e.engine);if(!t.ok){d(t.error);return}d(null),o(t.stored)}return(0,W.jsx)(Qe,{id:`cap-foundry-${e.engine}-${e.window}`,label:e.engine,unit:`dispatches / ${e.window}`,usage:t,value:c,invalid:u,disabled:n,busy:r,applied:i,error:a,step:1,min:J.min,max:J.max,onChange:e=>{l(e),u&&d(null)},onCommit:f})}function tt(e){if(e.killSwitch?.state===`active`)return{state:`killed`,label:`Kill switch engaged`};let t=e.daemon;return!t||!c(t.sourceQuality)?{state:`unknown`,label:`Run state unknown`}:t.runtimeState===`running`?{state:`running`,label:`Running`}:t.runtimeState===`stopped`?{state:`stopped`,label:`Stopped`}:{state:`unknown`,label:`Run state unknown`}}function nt({snapshot:e}){let t=H(1e3),{state:n,label:r}=tt(e),i=e.daemon,a=c(i?.sourceQuality),o=i?.ticks?.[i.ticks.length-1]??null,s=b(o?.reason),l=e.fleet?.directionMode??o?.directionMode??null,u=e.scope?.repos??null,d=e.caps?.intervalMs??null,f=n===`running`?C(i?.lastTickAt,d):null,p=e.spend,m=p?k(p.todayUsd,e.caps?.dailyBudgetUsd??null,p.todayDate):k(i?.todaySpentUsd??null,e.caps?.dailyBudgetUsd??null,null);return(0,W.jsxs)(`section`,{className:G.status,"aria-label":`Autonomy status`,children:[(0,W.jsxs)(`div`,{className:G.statusTop,children:[(0,W.jsxs)(`span`,{className:G.runState,"data-state":n,children:[(0,W.jsx)(`span`,{className:G.runDot,"aria-hidden":`true`}),r]}),(0,W.jsxs)(`div`,{className:G.facts,children:[(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Direction`}),(0,W.jsx)(`span`,{className:G.factValue,children:l??`default`})]}),(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Last tick`}),(0,W.jsx)(`span`,{className:G.factValue,"data-tone":s.tone,children:a&&i?.lastTickAt?`${x(i.lastTickAt)} · ${s.label}`:s.label})]}),(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Next tick`}),(0,W.jsx)(`span`,{className:G.factValue,children:n===`running`?w(f,t):n===`killed`?`blocked`:`not scheduled`})]}),(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Interval`}),(0,W.jsx)(`span`,{className:G.factValue,children:T(d)})]}),(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Scope`}),(0,W.jsx)(`span`,{className:G.factValue,"data-tone":(u?.length??0)===0?`warning`:void 0,children:u?`${u.length} ${u.length===1?`repo`:`repos`}`:`—`})]}),(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Awaiting you`}),(0,W.jsx)(`span`,{className:G.factValue,children:typeof e.pendingApprovals==`number`?`${e.pendingApprovals} ${e.pendingApprovals===1?`approval`:`approvals`}`:`—`})]}),(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Started`}),(0,W.jsx)(`span`,{className:G.factValue,children:a?M(i?.startedAt):`—`})]})]})]}),(0,W.jsxs)(`div`,{className:G.budget,children:[(0,W.jsxs)(`div`,{className:G.budgetLine,children:[(0,W.jsx)(`span`,{className:G.budgetLabel,children:m.label}),(0,W.jsx)(`span`,{className:G.budgetNote,children:m.note})]}),(0,W.jsx)(`div`,{className:G.meter,"data-state":m.state,role:`meter`,"aria-label":`Today's spend against the daily budget`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":m.percent??void 0,"aria-valuetext":`${m.label}. ${m.note}`,children:(0,W.jsx)(`div`,{className:G.meterFill,style:{width:`${m.percent??0}%`}})})]})]})}function rt({snapshot:e,guard:t,dispatchEnabled:n}){let[r,i]=(0,U.useState)(null),[a,o]=(0,U.useState)(null),{state:s}=tt(e),c=e.killSwitch?.state===`active`,l=e.killSwitch?.state===`unknown`,u=e.pause?.state??`unknown`,f=u!==`running`,p=u===`unknown`,m=!n||t.readOnly||t.busy,g=e=>o(e.note?P(e.note):null);return(0,W.jsxs)(`section`,{className:G.panel,"aria-label":`Loop controls`,children:[(0,W.jsx)(`div`,{className:G.panelHead,children:(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Controls`})}),(0,W.jsxs)(`div`,{className:G.controls,children:[f?(0,W.jsx)(`button`,{type:`button`,className:`${G.button} ${G.buttonPrimary}`,disabled:m,onClick:()=>t.request(()=>V(`resume`),`Resuming autonomous dispatch requires the dispatch token.`,g),children:`Resume`}):(0,W.jsx)(`button`,{type:`button`,className:`${G.button} ${G.buttonPrimary}`,disabled:m,onClick:()=>t.request(()=>V(`pause`),`Pausing autonomous dispatch requires the dispatch token.`,g),children:`Pause`}),(0,W.jsx)(h,{label:c?`Release the emergency stop before starting the loop.`:f?`Dispatch is paused — resume before starting the loop.`:``,children:(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:m||s===`running`||c||f,onClick:()=>t.request(()=>V(`start`),`Starting the autonomous loop requires the dispatch token.`,g),children:`Start loop`})}),(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:m||s===`stopped`,onClick:()=>i(`stop`),children:`Stop loop`}),(0,W.jsx)(h,{label:f?`Dispatch is paused — resume before running a tick.`:``,children:(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:m||c||f,onClick:()=>t.request(()=>V(`once`),`Running one tick requires the dispatch token.`,g),children:`Run one tick`})})]}),f?(0,W.jsx)(`p`,{className:G.actionNote,role:`status`,children:p?`Treated as paused — the pause sentinel is unreadable.`:`Autonomous dispatch is paused. The loop parks between ticks; your own write tools are unaffected, and the global kill switch is not engaged.`}):null,(0,W.jsx)(`div`,{className:G.emergency,children:c?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:m,onClick:()=>i(`release`),children:`Release emergency stop`}),(0,W.jsxs)(`p`,{className:G.emergencyNote,children:[`The global kill switch is engaged. The daemon refuses to tick `,(0,W.jsx)(`em`,{children:`and`}),` the agent’s own write tools refuse to edit anything, anywhere — not just in enrolled repos.`]})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,className:G.emergencyButton,disabled:m,onClick:()=>i(`engage`),children:`Emergency stop`}),(0,W.jsxs)(`p`,{className:G.emergencyNote,children:[`Engages the global kill switch. Wider than “stop the loop”: it also disables the agent’s own write tools everywhere until you release it. To halt only the loop, use `,(0,W.jsx)(`strong`,{children:`Pause`}),`.`,l?` The switch’s current state could not be read.`:``]})]})}),t.error&&r===null?(0,W.jsx)(`p`,{className:G.capError,role:`alert`,children:t.error}):null,a&&!t.error?(0,W.jsx)(`p`,{className:G.actionNote,role:`status`,children:a}):null,(0,W.jsx)(d,{open:r===`stop`,onClose:()=>i(null),title:`Stop the autonomous loop?`,body:(0,W.jsxs)(W.Fragment,{children:[`This is the ordinary stop, but it works by engaging the global kill switch — the same`,(0,W.jsx)(`code`,{children:` ~/.ashlr/KILL `}),` sentinel the emergency stop writes. While it is set, the agent’s own write tools also refuse to edit anything, anywhere, until you release it from this panel.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),`If you only want the loop to stop working, `,(0,W.jsx)(`strong`,{children:`Pause`}),` does exactly that and nothing else — it leaves your own tools alone and undoes in one click.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),`Nothing in flight is rolled back. The loop will not restart by itself.`]}),confirmLabel:`Stop loop`,destructive:!0,busy:t.busy,error:t.error,onConfirm:()=>t.request(()=>V(`stop`),`Stopping the autonomous loop requires the dispatch token.`,e=>{g(e),i(null)})}),(0,W.jsx)(d,{open:r===`engage`,onClose:()=>i(null),title:`Engage the emergency stop?`,body:(0,W.jsxs)(W.Fragment,{children:[`This writes the global kill switch. It stops the autonomous loop `,(0,W.jsx)(`strong`,{children:`and`}),` disables the agent’s own write tools — every edit, apply, and merge path refuses while it is engaged, in every repo, not only the enrolled ones. Nothing in flight is rolled back; nothing new can start.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),(0,W.jsx)(`strong`,{children:`Pause`}),` halts autonomous dispatch only and leaves everything else working.`,` `,(0,W.jsx)(`strong`,{children:`Stop loop`}),` is not narrower than this button: it engages the same global kill switch.`]}),confirmLabel:`Engage emergency stop`,destructive:!0,busy:t.busy,error:t.error,onConfirm:()=>t.request(async()=>{await ie(),i(null)},`Engaging the emergency stop requires the dispatch token.`)}),(0,W.jsx)(d,{open:r===`release`,onClose:()=>i(null),title:`Release the emergency stop?`,body:(0,W.jsxs)(W.Fragment,{children:[`This clears the global kill switch. Write tools become usable again immediately. The autonomous loop does not restart by itself — use `,(0,W.jsx)(`strong`,{children:`Start loop`}),` when you want it running.`]}),confirmLabel:`Release emergency stop`,busy:t.busy,error:t.error,onConfirm:()=>t.request(async()=>{await I(),i(null)},`Releasing the emergency stop requires the dispatch token.`)})]})}var it={idle:`neutral`,working:`running`,saturated:`running`,queued:`warning`,unknown:`unknown`},at={running:`running`,finishing:`running`,queued:`neutral`};function ot({read:e,runtime:t,loading:n=!1}){let r=H(1e3),i=e?.value??null,a=de(t),o=i?.slotsBusy??t?.slotsBusy??null,s=ge(o,a.effectiveConcurrency),c=_e(i,s,a),u=i?ve(i.agents):[],d=i?.queueDepth??u.filter(e=>e.state===`queued`).length;return(0,W.jsxs)(`section`,{className:G.panel,"aria-labelledby":`verse-fleet-title`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{id:`verse-fleet-title`,className:G.panelTitle,children:`Fleet in flight`}),(0,W.jsx)(`p`,{className:G.panelNote,children:`Every agent mid-turn right now, what it is working on, and how long it has been at it.`})]}),n&&e===null?(0,W.jsx)(`p`,{className:G.empty,children:`Reading the fleet…`}):e===null||!e.available&&e.value===null?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`Fleet status unavailable. `}),e?.reason??null]}):i===null?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`Unreadable reading. `}),e.reason??`Unrecognized response — update Ashlr.`]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:G.pressure,"data-state":c.state,children:[(0,W.jsxs)(`span`,{className:G.pressureHead,children:[(0,W.jsx)(`span`,{className:G.pressureHeadline,children:c.headline}),(0,W.jsx)(l,{status:c.state,tone:it[c.state]??`unknown`,children:c.state})]}),(0,W.jsx)(`p`,{className:G.pressureDetail,children:c.detail})]}),(0,W.jsxs)(`div`,{className:G.fleetMeters,children:[(0,W.jsx)(te,{value:s.busy,max:s.total,label:`Slot utilisation`,valueText:s.percentText===null?`unknown`:`${s.busy} / ${s.total} · ${s.percentText}`,tone:s.saturated?`warning`:void 0}),(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Queue depth`}),(0,W.jsx)(`span`,{className:G.factValue,"data-tone":d>0?`warning`:void 0,children:i.queueDepth===null&&u.length===0?`—`:`${A(d)} waiting`})]})]}),s.saturated&&d===0?(0,W.jsx)(`p`,{className:G.capHelp,children:`Every slot is occupied. Nothing is waiting yet, but the next turn will.`}):null,u.length===0?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`Nothing in flight. `}),`No agent is mid-turn. The fleet answered and reported an empty list — an idle fleet, not a missing reading. Run one tick from Controls to put work in flight.`]}):(0,W.jsx)(`div`,{className:G.tableScroll,children:(0,W.jsxs)(`table`,{className:G.table,children:[(0,W.jsx)(`caption`,{className:G.srOnly,children:`Agents in flight: state, task, repository, model, slot and elapsed time`}),(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{scope:`col`,children:`State`}),(0,W.jsx)(`th`,{scope:`col`,children:`Working on`}),(0,W.jsx)(`th`,{scope:`col`,children:`Repo`}),(0,W.jsx)(`th`,{scope:`col`,children:`Model`}),(0,W.jsx)(`th`,{scope:`col`,children:`Slot`}),(0,W.jsx)(`th`,{scope:`col`,children:`Elapsed`})]})}),(0,W.jsx)(`tbody`,{children:u.map(e=>(0,W.jsx)(st,{agent:e,now:r,capacity:a},e.id))})]})}),i.notes.length>0?(0,W.jsx)(`ul`,{className:G.noteList,children:i.notes.map(e=>(0,W.jsx)(`li`,{className:G.capHelp,children:P(e)},e))}):null]})]})}function st({agent:e,now:t,capacity:n}){let r=me(e.startedAt,t),i=e.state===`queued`;return(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`td`,{children:(0,W.jsx)(l,{status:e.state,tone:at[e.state],children:e.state})}),(0,W.jsx)(`td`,{className:G.cellSummary,children:e.task??(0,W.jsx)(`span`,{className:G.capHelp,children:`not reported`})}),(0,W.jsx)(`td`,{className:G.cellRepo,title:e.repo??void 0,children:e.repo?N(e.repo):`—`}),(0,W.jsx)(`td`,{className:G.cellRepo,children:e.model??e.engine??`—`}),(0,W.jsx)(`td`,{className:G.cellTime,children:e.slot===null?i?(0,W.jsx)(`span`,{className:G.capHelp,title:n.verdict===`serialized`?`This runtime serializes, so only one slot ever frees up at a time.`:void 0,children:`no slot`}):`—`:`#${e.slot}`}),(0,W.jsxs)(`td`,{className:G.cellTime,children:[r,i?(0,W.jsx)(`span`,{className:G.elapsedQualifier,children:` queued`}):null]})]})}var X=8;function ct(){let e=s(oe),t=s(ce),n=(e.data??[]).filter(e=>e.status!==`done`&&e.status!==`archived`),r=t.data?.items??[];return(0,W.jsxs)(`section`,{className:G.panel,"aria-label":`Goals and backlog`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Goals and backlog`}),(0,W.jsx)(`p`,{className:G.panelNote,children:`Read-only in this view.`})]}),(0,W.jsxs)(`div`,{className:G.summaryColumns,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:G.factLabel,children:`Active goals`}),e.status===`loading`?(0,W.jsxs)(`div`,{className:G.skeletons,children:[(0,W.jsx)(p,{}),(0,W.jsx)(p,{})]}):e.status===`error`?(0,W.jsx)(`p`,{className:G.error,role:`alert`,children:e.error?.message??`Could not read goals.`}):n.length===0?(0,W.jsxs)(`p`,{className:G.empty,children:[`No active goals, so the loop falls back to the backlog for work. Add one with`,` `,(0,W.jsx)(`code`,{children:`ashlr goals add "<objective>"`}),`.`]}):(0,W.jsxs)(`div`,{className:G.summaryList,children:[n.slice(0,X).map(e=>{let t=O(e.progress?.fractionDone??0);return(0,W.jsxs)(`div`,{className:G.summaryRow,children:[(0,W.jsx)(`span`,{className:G.summaryTitle,title:e.objective,children:e.objective}),(0,W.jsxs)(`span`,{className:G.summaryMeta,children:[t,` · `,e.status]})]},e.id)}),n.length>X?(0,W.jsxs)(`p`,{className:G.panelNote,children:[`+`,n.length-X,` more`]}):null]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:G.factLabel,children:`Backlog`}),t.status===`loading`?(0,W.jsxs)(`div`,{className:G.skeletons,children:[(0,W.jsx)(p,{}),(0,W.jsx)(p,{})]}):t.status===`error`?(0,W.jsx)(`p`,{className:G.error,role:`alert`,children:t.error?.message??`Could not read the backlog.`}):t.data?.absent?(0,W.jsxs)(`p`,{className:G.empty,children:[`No backlog has been built yet. Run one tick from Controls, or `,(0,W.jsx)(`code`,{children:`ashlr backlog`}),`, to produce one.`]}):r.length===0?(0,W.jsxs)(`p`,{className:G.empty,children:[`The backlog is empty, so a tick records `,(0,W.jsx)(`code`,{children:`no-backlog`}),` and idles. Enroll another repository in Scope, or add a goal, to give it work.`]}):(0,W.jsxs)(`div`,{className:G.summaryList,children:[r.slice(0,X).map((e,t)=>(0,W.jsxs)(`div`,{className:G.summaryRow,children:[(0,W.jsx)(`span`,{className:G.summaryTitle,title:e.title,children:e.title??e.id??`untitled item`}),(0,W.jsxs)(`span`,{className:G.summaryMeta,title:e.repo??void 0,children:[e.repo?N(e.repo):`—`,typeof e.score==`number`?` · ${e.score}`:``]})]},e.id??`${e.title??`item`}-${t}`)),r.length>X?(0,W.jsxs)(`p`,{className:G.panelNote,children:[`+`,r.length-X,` more`]}):null]})]})]})]})}function lt({read:e,seats:t,guard:n,dispatchEnabled:r,loading:i=!1}){let[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(null),u=e?.value??null,f=ue(u,t),p=he(u),m=u?.enabled??!1,h=!r||n.readOnly||n.busy||!(u?.mutable??!1),g=e=>{n.request(()=>Ce(e),e?`Turning local-only on requires the dispatch token.`:`Turning local-only off requires the dispatch token.`,e=>{c(e.note?P(e.note):null),o(!1)})};return(0,W.jsxs)(`section`,{className:G.panel,"aria-labelledby":`verse-local-only-title`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{id:`verse-local-only-title`,className:G.panelTitle,children:`Local only`}),(0,W.jsx)(`p`,{className:G.panelNote,children:`While on, cloud engines are unreachable.`})]}),i&&e===null?(0,W.jsx)(`p`,{className:G.empty,children:`Reading the local-only policy…`}):e===null||u===null?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`No local-only source. `}),e?.reason??`Nothing answered for the local-only policy, so whether cloud engines are reachable cannot be stated here. It is not shown as off — an unread switch is not a switch that is off.`]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:G.toggleRow,children:[(0,W.jsx)(`span`,{className:G.toggleState,"data-on":m?`true`:`false`,children:(0,W.jsx)(l,{status:m?`local-only-on`:`local-only-off`,tone:m?`success`:`neutral`,children:m?`on — cloud refused`:`off — cloud reachable`})}),(0,W.jsx)(`button`,{type:`button`,className:`${G.button} ${m?``:G.buttonPrimary}`,disabled:h,"aria-pressed":m,onClick:()=>m?g(!1):o(!0),children:m?`Turn local-only off`:`Turn local-only on`})]}),(0,W.jsx)(`p`,{className:G.policyExplain,children:m?(0,W.jsxs)(W.Fragment,{children:[`Every non-local engine is `,(0,W.jsx)(`strong`,{children:`refused at dispatch`}),`. A turn sent to one does not fall back, does not queue, and does not run more slowly — it fails with a named refusal. Nothing can spend money while this is on.`]}):(0,W.jsxs)(W.Fragment,{children:[`Cloud engines are reachable. Turning this on makes them `,(0,W.jsx)(`strong`,{children:`unreachable`}),`: a dispatch to one fails outright.`]})}),p?(0,W.jsx)(`p`,{className:G.capHelp,children:p}):null,!u.mutable&&r&&!n.readOnly?(0,W.jsx)(`p`,{className:G.actionNote,role:`status`,children:`Read-only here.`}):null,(0,W.jsxs)(`div`,{className:G.impact,children:[(0,W.jsx)(`h4`,{className:G.impactTitle,children:m?`What is blocked right now`:`What this would block`}),(0,W.jsx)(`p`,{className:G.impactSummary,children:f.summary}),f.blocked.length>0?(0,W.jsx)(`ul`,{className:G.seatList,children:f.blocked.map(e=>(0,W.jsxs)(`li`,{className:G.seatRow,children:[(0,W.jsx)(`span`,{className:G.seatEngine,"data-engine":e.engine,children:e.engine}),(0,W.jsx)(`span`,{className:G.seatLabel,children:e.label}),(0,W.jsx)(`span`,{className:G.seatRefusal,children:f.refusalFor(e.engine)})]},e.id))}):null,f.allowed.length>0?(0,W.jsxs)(`p`,{className:G.capHelp,children:[`Still reachable:`,` `,f.allowed.map(e=>e.label).join(`, `),`. Local seats cost nothing to run and are unaffected by this switch.`]}):(0,W.jsx)(`p`,{className:G.capHelp,children:`No local seat is configured. With local-only on there would be nothing left to dispatch to — add a local seat before relying on this switch.`})]}),s&&!n.error?(0,W.jsx)(`p`,{className:G.actionNote,role:`status`,children:s}):null,n.error&&!a?(0,W.jsx)(`p`,{className:G.capError,role:`alert`,children:n.error}):null,(0,W.jsx)(d,{open:a,onClose:()=>o(!1),title:`Make cloud engines unreachable?`,body:(0,W.jsxs)(W.Fragment,{children:[`While local-only is on, a dispatch to a non-local engine `,(0,W.jsx)(`strong`,{children:`fails`}),` with a named refusal — no fallback to a local seat, no waiting.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),f.blocked.length===0?`No seat on this machine is affected today: every configured seat is local.`:`${f.blocked.length} of your ${t.length} ${t.length===1?`seat`:`seats`} ${f.blocked.length===1?`stops`:`stop`} working: ${f.blocked.map(e=>e.label).join(`, `)}.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),`It is reversible from this panel at any time.`]}),confirmLabel:`Turn local-only on`,busy:n.busy,error:n.error,onConfirm:()=>g(!0)})]})]})}var ut={running:`success`,starting:`running`,stopping:`running`,stopped:`neutral`,unknown:`unknown`},dt={success:`success`,warning:`warning`,danger:`danger`,neutral:`neutral`,unknown:`unknown`},ft=/^local lane is off this tick: (.+)$/s,pt=/^lane cap (\d+) is below (\d+) \([^)]*\): (.+)$/s;function mt(e){let t=e?.find(e=>typeof e==`string`&&e.startsWith(`bounded by this tick's lane cap, not by slots: `));if(!t)return null;let n=t.slice(47).trim(),r=ft.exec(n);if(r)return{off:!0,limit:null,uncapped:null,why:j(P(r[1]))};let i=pt.exec(n);return i?{off:!1,limit:Number(i[1]),uncapped:Number(i[2]),why:j(P(i[3]))}:{off:!1,limit:null,uncapped:null,why:j(P(n))}}function ht(){return(0,U.useSyncExternalStore)((0,U.useCallback)(e=>a(`verse-fleet`,e),[]),()=>i(`verse-fleet`),()=>i(`verse-fleet`)).data??null}function gt({read:e,guard:t,dispatchEnabled:n,loading:r=!1,fleet:i}){let a=H(1e3),o=ht(),s=i===void 0?o:i,c=mt(s?.value?.notes),u=s?.value?.notes.some(e=>e.startsWith(`snapshot is `))??!1,[f,p]=(0,U.useState)(null),[m,h]=(0,U.useState)(null),g=e?.value??null,_=de(g),y=ge(g?.slotsBusy??null,_.effectiveConcurrency),b=!n||t.readOnly,x=g?.supervised??!1,S=b||t.busy||!x,C=g?.state===`running`,w=(e,n)=>{t.request(()=>xe(e),n,e=>{h(e.note?P(e.note):null),p(null)})};return(0,W.jsxs)(`section`,{className:G.panel,"aria-labelledby":`verse-runtime-title`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{id:`verse-runtime-title`,className:G.panelTitle,children:`Serving runtime`}),(0,W.jsx)(`p`,{className:G.panelNote,children:`The process that answers local agent turns. Without it, a local fleet has nowhere to run.`})]}),r&&e===null?(0,W.jsx)(`p`,{className:G.empty,children:`Reading the serving runtime…`}):e===null||!e.available&&e.value===null?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`No serving-runtime source. `}),e?.reason??`Serving runtime unavailable.`]}):g===null?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`Unreadable reading. `}),e.reason??`Unrecognized response — update Ashlr.`]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:G.runtimeTop,children:[(0,W.jsxs)(`span`,{className:G.runtimeState,"data-state":g.state,children:[(0,W.jsx)(`span`,{className:G.runDot,"aria-hidden":`true`}),(0,W.jsxs)(`span`,{className:G.runtimeStateText,children:[fe(g.kind),` · `,g.state===`unknown`?`state unknown`:g.state]})]}),(0,W.jsx)(l,{status:g.state,tone:ut[g.state],children:g.state===`running`?`serving`:g.state}),g.reason?(0,W.jsx)(`code`,{className:G.evidenceCode,children:P(g.reason)}):null]}),(0,W.jsxs)(`div`,{className:G.facts,children:[(0,W.jsx)(Z,{label:`Model`,value:g.model??`—`,wide:!0}),(0,W.jsx)(Z,{label:`Endpoint`,value:g.endpoint??`—`,mono:!0}),(0,W.jsx)(Z,{label:`Context`,value:v(g.contextTokens)}),(0,W.jsx)(Z,{label:`Slots configured`,value:g.slotsTotal===null?`—`:String(g.slotsTotal)}),(0,W.jsx)(Z,{label:`Uptime`,value:C?pe(g.startedAt,a):`not running`})]}),(0,W.jsxs)(`div`,{className:G.capacityBlock,"data-verdict":_.verdict,children:[(0,W.jsxs)(`div`,{className:G.capacityHead,children:[(0,W.jsx)(`span`,{className:G.capacityBig,children:_.effectiveConcurrency===null?`—`:_.effectiveConcurrency}),(0,W.jsxs)(`div`,{className:G.capacityWords,children:[(0,W.jsxs)(`span`,{className:G.capacityHeadline,children:[_.headline,(0,W.jsx)(l,{status:_.verdict,tone:dt[_.tone],children:_.verdict===`batched`?`batches`:_.verdict===`serialized`?`serializes`:_.verdict===`offline`?`not serving`:`unconfirmed`})]}),(0,W.jsx)(`span`,{className:G.capacityDetail,children:_.detail})]})]}),c?(0,W.jsxs)(`p`,{className:G.capacityDetail,"data-limiter":`lane-cap`,role:`note`,children:[(0,W.jsx)(l,{status:`lane-cap`,tone:c.off?`neutral`:`warning`,children:c.off?`lane off`:`lane-capped`}),` `,c.off?`The fleet runs no local agent ${u?`as of its last tick`:`this tick`}: ${E(c.why)}`:`The fleet runs ${c.limit===null?`fewer`:`at most ${c.limit}`} local ${c.limit===1?`agent`:`agents`} ${u?`as of its last tick`:`this tick`}${c.uncapped===null?``:`, not ${c.uncapped}`} — a lane cap is tighter than this runtime: ${E(c.why)}`]}):null,_.overstated?(0,W.jsx)(_t,{configured:_.configuredSlots,refusal:g.parallel.refusal}):null]}),(0,W.jsxs)(`div`,{className:G.utilisation,children:[(0,W.jsx)(te,{value:y.busy,max:y.total,label:`Slots in use`,valueText:y.percent===null?`unknown`:`${y.busy} / ${y.total}`,tone:y.saturated?`warning`:void 0}),(0,W.jsx)(`p`,{className:G.capHelp,children:y.label})]}),(0,W.jsxs)(`div`,{className:G.controls,children:[(0,W.jsx)(`button`,{type:`button`,className:`${G.button} ${G.buttonPrimary}`,disabled:S||C,onClick:()=>w(`start`,`Starting the serving runtime requires the dispatch token.`),children:`Start runtime`}),(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:S||!C,onClick:()=>p(`stop`),children:`Stop runtime`}),(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:S,onClick:()=>p(`restart`),children:`Restart runtime`})]}),x?null:(0,W.jsx)(`p`,{className:G.actionNote,role:`status`,children:`Managed outside the hub (a login item or terminal owns it) — start and stop it there.`}),m&&!t.error?(0,W.jsx)(`p`,{className:G.actionNote,role:`status`,children:m}):null,t.error&&f===null?(0,W.jsx)(`p`,{className:G.capError,role:`alert`,children:t.error}):null,(0,W.jsx)(d,{open:f===`stop`,onClose:()=>p(null),title:`Stop the serving runtime?`,body:(0,W.jsxs)(W.Fragment,{children:[`Every local agent turn in flight is answered by this process. Stopping it ends those turns — nothing in flight is rolled back, and no local seat can take a new turn until it is running again.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),`This does not touch the autonomous loop, the kill switch, or your own write tools.`]}),confirmLabel:`Stop runtime`,destructive:!0,busy:t.busy,error:t.error,onConfirm:()=>w(`stop`,`Stopping the serving runtime requires the dispatch token.`)}),(0,W.jsx)(d,{open:f===`restart`,onClose:()=>p(null),title:`Restart the serving runtime?`,body:(0,W.jsxs)(W.Fragment,{children:[`The process is stopped and started again. Turns in flight end with it, and the first turn afterwards pays the model load — on a 27 GB model that is not instant.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),`Restart is the way to pick up a changed slot count or context size, since both are fixed at launch.`]}),confirmLabel:`Restart runtime`,destructive:!0,busy:t.busy,error:t.error,onConfirm:()=>w(`restart`,`Restarting the serving runtime requires the dispatch token.`)})]})]})}function _t({configured:e,refusal:t}){return(0,W.jsxs)(`div`,{className:G.evidence,children:[(0,W.jsx)(`p`,{className:G.evidenceLead,children:e===null?`The configured slot count is not a concurrency on this runtime.`:`${e} slots are configured, but this runtime will not run them in parallel. Measured on this machine, four concurrent requests to the same model:`}),(0,W.jsx)(`div`,{className:G.evidenceScroll,children:(0,W.jsxs)(`table`,{className:G.evidenceTable,children:[(0,W.jsx)(`caption`,{className:G.srOnly,children:`Four concurrent requests to the same Qwen3.8 model file, per-runtime completion times in seconds`}),(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{scope:`col`,children:`Runtime`}),(0,W.jsx)(`th`,{scope:`col`,children:`Per request (s)`}),(0,W.jsx)(`th`,{scope:`col`,children:`Wall (s)`}),(0,W.jsx)(`th`,{scope:`col`,children:`Finished`})]})}),(0,W.jsx)(`tbody`,{children:ye.map(e=>(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{scope:`row`,children:e.runtime}),(0,W.jsx)(`td`,{className:G.evidenceNums,children:e.perRequestSeconds.join(` · `)}),(0,W.jsx)(`td`,{className:G.evidenceNums,children:e.wallSeconds.toFixed(1)}),(0,W.jsx)(`td`,{children:e.verdict})]},e.runtime))})]})}),t?(0,W.jsxs)(`p`,{className:G.capHelp,children:[`The runtime’s own words: `,(0,W.jsx)(`code`,{className:G.evidenceCode,children:t})]}):null]})}function Z({label:e,value:t,mono:n=!1,wide:r=!1}){return(0,W.jsxs)(`div`,{className:`${G.fact} ${r?G.factWide:``}`,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:e}),(0,W.jsx)(`span`,{className:`${G.factValue} ${n?G.factMono:``}`,title:n||r?t:void 0,children:t})]})}var Q={armedTop:`_armedTop_8ujh1_22`,armedState:`_armedState_8ujh1_30`,haltRow:`_haltRow_8ujh1_36`,haltNote:`_haltNote_8ujh1_43`,heavier:`_heavier_8ujh1_53`,facts:`_facts_8ujh1_69`,fact:`_fact_8ujh1_69`,factWide:`_factWide_8ujh1_83`,factLabel:`_factLabel_8ujh1_87`,factValue:`_factValue_8ujh1_95`,factMono:`_factMono_8ujh1_106`,stop:`_stop_8ujh1_112`,stopHead:`_stopHead_8ujh1_121`,stopHeadline:`_stopHeadline_8ujh1_129`,stopRemaining:`_stopRemaining_8ujh1_137`,stopDetail:`_stopDetail_8ujh1_146`,ledger:`_ledger_8ujh1_154`,ledgerTitle:`_ledgerTitle_8ujh1_158`,ledgerCount:`_ledgerCount_8ujh1_171`,ledgerEmpty:`_ledgerEmpty_8ujh1_177`,ledgerList:`_ledgerList_8ujh1_183`,ledgerRow:`_ledgerRow_8ujh1_189`,ledgerRepo:`_ledgerRepo_8ujh1_203`,ledgerChange:`_ledgerChange_8ujh1_212`,ledgerMeta:`_ledgerMeta_8ujh1_222`,form:`_form_8ujh1_232`,field:`_field_8ujh1_239`,fieldLabel:`_fieldLabel_8ujh1_246`,input:`_input_8ujh1_254`,rulePreview:`_rulePreview_8ujh1_277`,armRow:`_armRow_8ujh1_285`,authorisation:`_authorisation_8ujh1_17`,authorisationTitle:`_authorisationTitle_8ujh1_305`,authorisationBody:`_authorisationBody_8ujh1_315`,authorisationCaveat:`_authorisationCaveat_8ujh1_327`},vt=[{value:`until-paused`,label:`Until I pause it`},{value:`at-time`,label:`At a time`},{value:`after-iterations`,label:`After N iterations`}],yt=`07:00`,bt=`20`;function xt({read:e,snapshot:t,guard:n,dispatchEnabled:r,loading:i=!1}){let a=H(1e3),[o,s]=(0,U.useState)(`until-paused`),[c,u]=(0,U.useState)(yt),[d,f]=(0,U.useState)(bt),[p,m]=(0,U.useState)(null),[g,_]=(0,U.useState)(null),v=e=>_(e?P(e):null),b=e?.value??null,x=b?.run??null,S=t.pause?.state??`unknown`,C=S!==`running`,w=S===`unknown`,T=t.killSwitch?.state===`active`,E=!r||n.readOnly,D=E||n.busy,O=b?.repos??t.scope?.repos?.length??null,k=b?.mirrors,A=b?.gate??null,M=Pe(A),F=De(A),ee=A?.branch??`master`,I=St(o,c,d),L=Oe(x?.stopRule??null,x,a),ne=E?`This server runs without dispatch, so an overnight run cannot be armed from here.`:T?`Release the emergency stop before arming an overnight run.`:``,R=()=>{m(null),n.request(()=>V(`pause`),`Pausing autonomous dispatch requires the dispatch token.`,e=>v(e.note||null))},z=()=>{m(null),n.request(()=>V(`resume`),`Resuming autonomous dispatch requires the dispatch token.`,e=>v(e.note||null))},re=()=>{if(I===null){m(o===`at-time`?`Enter a stop time as HH:MM before arming.`:`Enter a number of iterations between 1 and 500 before arming.`);return}m(null),n.request(()=>Fe(I),`Arming an overnight run requires the dispatch token.`,e=>v(e.note||null))},ie=()=>{m(null),n.request(()=>je(),`Disarming the overnight run requires the dispatch token.`,e=>v(e.note||null))},B=(0,W.jsxs)(`div`,{className:Q.authorisation,children:[(0,W.jsx)(`h4`,{className:Q.authorisationTitle,children:`What it does while you sleep`}),(0,W.jsxs)(`p`,{className:Q.authorisationBody,children:[`Local models work through`,` `,(0,W.jsx)(`strong`,{children:O===null?`your enrolled repositories`:`your ${O} enrolled ${O===1?`repository`:`repositories`}`}),` `,`unattended. Each change it writes is put through the gate`,M.length>0?(0,W.jsxs)(W.Fragment,{children:[` `,`— `,(0,W.jsx)(`strong`,{children:Ae(M)}),` must pass`]}):null,`. A change that passes the gate is `,(0,W.jsxs)(`strong`,{children:[`merged to `,ee,` without asking you`]}),`. A change that fails is discarded and the repository is left as it was.`]}),typeof k==`number`&&k>0?(0,W.jsxs)(`p`,{className:Q.authorisationBody,"data-testid":`overnight-mirrors`,children:[`Fleet mirrors: `,(0,W.jsx)(`strong`,{children:k}),` — the standing fleet’s own`,` `,k===1?`clone`:`clones`,` of enrolled repositories, counted apart. A mirror is not an additional repository.`]}):k===null&&b?.armed?(0,W.jsx)(`p`,{className:Q.authorisationCaveat,"data-testid":`overnight-mirrors`,children:`Fleet mirrors were not recorded for this run, so how many the standing fleet works in is unknown.`}):null,F.length>0?(0,W.jsxs)(`p`,{className:Q.authorisationCaveat,children:[`Not reported whether `,Ae(F),` `,F.length===1?`runs`:`run`,` in the gate — don't count `,F.length===1?`it`:`them`,` as passing.`]}):null,A?.autoMerge===!1?(0,W.jsxs)(`p`,{className:Q.authorisationCaveat,children:[`This build reports that passing changes are `,(0,W.jsx)(`strong`,{children:`not`}),` merged automatically — they wait for you in Approvals.`]}):null]});return(0,W.jsxs)(`section`,{className:G.panel,"aria-labelledby":`verse-overnight-title`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{id:`verse-overnight-title`,className:G.panelTitle,children:`Overnight`}),(0,W.jsx)(`p`,{className:G.panelNote,children:`Arm this when you walk away. One stop rule per run; pause halts it at any time.`})]}),i&&e===null?(0,W.jsx)(`p`,{className:G.empty,children:`Reading the overnight lane…`}):e===null||!e.available&&e.value===null?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`Not available in this build. `}),e?.reason??`Nothing answered for the overnight lane, so a run cannot be armed or reported here. Nothing is running because of this panel.`]}):b===null?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`Unreadable reading. `}),e.reason??`Unrecognized response — update Ashlr.`]}):b.armed?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:Q.armedTop,children:[(0,W.jsx)(`span`,{className:Q.armedState,children:(0,W.jsx)(l,{status:C?`paused`:`running`,tone:C?`warning`:`running`,children:C?`armed — dispatch paused`:`armed — running`})}),(0,W.jsxs)(`div`,{className:Q.haltRow,children:[C?(0,W.jsx)(`button`,{type:`button`,className:`${G.button} ${G.buttonPrimary}`,disabled:D,onClick:z,children:`Resume now`}):(0,W.jsx)(`button`,{type:`button`,className:`${G.button} ${G.buttonPrimary}`,disabled:D,onClick:R,children:`Pause now`}),(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:D,onClick:ie,children:`Disarm`})]})]}),(0,W.jsx)(`p`,{className:Q.haltNote,children:C?w?`Treated as paused — the pause sentinel is unreadable. Nothing is being dispatched.`:`Autonomous dispatch is paused. The loop parks between iterations; your own write tools are unaffected and the global kill switch is not engaged.`:`Pause halts autonomous dispatch and nothing else — it undoes in one click. Disarm stops the next run from starting but leaves this one going.`}),(0,W.jsxs)(`dl`,{className:Q.facts,children:[(0,W.jsx)(wt,{label:`Doing now`,value:x?.activity?P(x.activity):`—`,wide:!0}),(0,W.jsx)(wt,{label:`Repository`,value:x?.repo?N(x.repo):`—`,title:x?.repo??void 0,mono:!0}),(0,W.jsx)(wt,{label:`Running for`,value:Me(x?.startedAt,a)})]}),(0,W.jsxs)(`div`,{className:Q.stop,children:[(0,W.jsxs)(`div`,{className:Q.stopHead,children:[(0,W.jsx)(`span`,{className:Q.stopHeadline,children:L.headline}),(0,W.jsx)(`span`,{className:Q.stopRemaining,children:L.remaining})]}),L.percent===null?(0,W.jsx)(`p`,{className:Q.stopDetail,children:`No progress is drawn for an open-ended run: there is no finish line to draw it against.`}):(0,W.jsx)(te,{value:L.percent,max:100,variant:`line`,tone:L.reached?`warning`:`accent`,"aria-label":`Progress toward the stop condition`})]}),(0,W.jsx)(Tt,{title:`Merged`,empty:`Nothing merged yet. Changes that pass the gate land here as they merge.`,rows:(x?.merged??[]).map(e=>({id:e.id,repo:e.repo,title:e.title,meta:Ct(e.commit?e.commit.slice(0,7):null,e.at),metaTitle:e.commit??void 0}))}),(0,W.jsx)(Tt,{title:`Discarded`,empty:`Nothing discarded yet. A change that fails the gate is listed here with the reason.`,rows:(x?.discarded??[]).map(e=>({id:e.id,repo:e.repo,title:e.title,meta:Ct(j(P(e.reason)),e.at)}))}),B]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:Q.form,children:[(0,W.jsxs)(`div`,{className:Q.field,children:[(0,W.jsx)(`span`,{className:Q.fieldLabel,id:`verse-overnight-stop-label`,children:`Stop rule`}),(0,W.jsx)(y,{options:vt,value:o,onChange:e=>{s(e),m(null)},"aria-labelledby":`verse-overnight-stop-label`,size:`sm`})]}),o===`at-time`?(0,W.jsxs)(`div`,{className:Q.field,children:[(0,W.jsx)(`label`,{className:Q.fieldLabel,htmlFor:`verse-overnight-time`,children:`Stop at`}),(0,W.jsx)(`input`,{id:`verse-overnight-time`,type:`time`,className:Q.input,value:c,disabled:D,onChange:e=>{u(e.target.value),m(null)}})]}):null,o===`after-iterations`?(0,W.jsxs)(`div`,{className:Q.field,children:[(0,W.jsx)(`label`,{className:Q.fieldLabel,htmlFor:`verse-overnight-iterations`,children:`Iterations`}),(0,W.jsx)(`input`,{id:`verse-overnight-iterations`,type:`number`,inputMode:`numeric`,min:1,max:500,className:Q.input,value:d,disabled:D,onChange:e=>{f(e.target.value),m(null)}})]}):null]}),(0,W.jsx)(`p`,{className:Q.rulePreview,children:I===null?o===`at-time`?`Enter a stop time as HH:MM.`:`Enter a number of iterations between 1 and 500.`:Ee(I,new Date(a))}),B,(0,W.jsxs)(`div`,{className:Q.armRow,children:[(0,W.jsx)(h,{label:ne,children:(0,W.jsx)(`button`,{type:`button`,className:`${G.button} ${G.buttonPrimary}`,disabled:D||T,onClick:re,children:`Arm overnight run`})}),C?(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:D,onClick:z,children:`Resume now`}):null]}),C?(0,W.jsx)(`p`,{className:Q.haltNote,role:`status`,children:w?`Treated as paused — the pause sentinel is unreadable. An armed run would park until that is fixed.`:`Autonomous dispatch is paused, so an armed run would park. Resume before walking away.`}):null,(0,W.jsxs)(`p`,{className:Q.heavier,children:[`Pause is the halt for this run and it undoes in one click.`,` `,(0,W.jsx)(`strong`,{children:`Emergency stop`}),`, in Controls above, is heavier on purpose: it engages the global kill switch, which also stops the agent’s own write tools from editing anything, anywhere, until you release it.`]})]}),p?(0,W.jsx)(`p`,{className:G.capError,role:`alert`,children:p}):null,n.error?(0,W.jsx)(`p`,{className:G.capError,role:`alert`,children:n.error}):null,g&&!n.error?(0,W.jsx)(`p`,{className:G.actionNote,role:`status`,children:g}):null]})}function St(e,t,n){if(e===`until-paused`)return{kind:`until-paused`};if(e===`at-time`){let e=Ie(t);return e===null?null:{kind:`at-time`,at:e}}let r=Number(n);return!Number.isInteger(r)||r<1||r>500?null:{kind:`after-iterations`,iterations:r}}function Ct(e,t){let n=t?x(t):null;return[e,n===`—`?null:n].filter(e=>!!e).join(` · `)}function wt({label:e,value:t,title:n,mono:r=!1,wide:i=!1}){return(0,W.jsxs)(`div`,{className:`${Q.fact} ${i?Q.factWide:``}`,children:[(0,W.jsx)(`dt`,{className:Q.factLabel,children:e}),(0,W.jsx)(`dd`,{className:`${Q.factValue} ${r?Q.factMono:``}`,title:n??(r||i?t:void 0),children:t})]})}function Tt({title:e,empty:t,rows:n}){return(0,W.jsxs)(`div`,{className:Q.ledger,children:[(0,W.jsxs)(`h4`,{className:Q.ledgerTitle,children:[e,` `,(0,W.jsx)(`span`,{className:Q.ledgerCount,children:n.length})]}),n.length===0?(0,W.jsx)(`p`,{className:Q.ledgerEmpty,children:t}):(0,W.jsx)(`ul`,{className:Q.ledgerList,children:n.map(e=>(0,W.jsxs)(`li`,{className:Q.ledgerRow,children:[(0,W.jsx)(`span`,{className:Q.ledgerRepo,title:e.repo,children:N(e.repo)}),(0,W.jsx)(`span`,{className:Q.ledgerChange,children:e.title}),e.meta?(0,W.jsx)(`span`,{className:Q.ledgerMeta,title:e.metaTitle,children:e.meta}):null]},e.id))})]})}function Et(){let e=s(ae),t=o(ae),n=e.data,r=n?.checks?.filter(e=>e.pass).length??0,i=n?.checks?.length??0;return(0,W.jsxs)(`section`,{className:G.panel,"aria-label":`Safety checks`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Safety`}),(0,W.jsxs)(`div`,{className:G.panelActions,children:[e.status===`refreshing`?(0,W.jsx)(f,{}):null,n?(0,W.jsxs)(`span`,{className:G.panelNote,children:[r,`/`,i,` passing`]}):null,(0,W.jsx)(`button`,{type:`button`,className:G.button,onClick:t,disabled:e.status===`loading`,children:`Re-run checks`})]})]}),e.status===`loading`?(0,W.jsxs)(`div`,{className:G.skeletons,children:[(0,W.jsx)(m,{width:`70%`}),(0,W.jsx)(m,{width:`55%`}),(0,W.jsx)(m,{width:`62%`})]}):e.status===`error`?(0,W.jsx)(`p`,{className:G.error,role:`alert`,children:e.error?.message??`Could not run the safety checks.`}):!n||i===0?(0,W.jsxs)(`p`,{className:G.empty,children:[`The safety report came back with no checks. Press `,(0,W.jsx)(`strong`,{children:`Re-run checks`}),`; if it stays empty, treat it as a failure.`]}):(0,W.jsx)(`div`,{className:G.checkList,children:n.checks.map(e=>(0,W.jsxs)(`div`,{className:G.check,"data-pass":e.pass,children:[(0,W.jsx)(`span`,{className:G.checkMark,"aria-hidden":`true`,children:e.pass?`✓`:`✕`}),(0,W.jsxs)(`span`,{className:G.checkLabel,children:[e.label,(0,W.jsx)(`span`,{className:G.srOnly,children:e.pass?` — passed`:` — failed`})]}),(0,W.jsx)(`span`,{className:G.checkDetail,children:e.detail?P(e.detail):e.id})]},e.id))})]})}function Dt(e){let t=e.trim();return t===``?`Enter the absolute path of the repository to enroll.`:t.startsWith(`/`)?t===`/`?`The filesystem root cannot be enrolled as autonomous scope.`:/(^|\/)\.codex\/artifacts(\/|$)/.test(t)?`Paths under ~/.codex/artifacts cannot be enrolled.`:/(^|\/)\.ashlr(\/|$)/.test(t)?`Paths under ~/.ashlr cannot be enrolled — that is the agent’s own control directory.`:null:`Enrollment takes an absolute path, e.g. /Users/you/code/project.`}function Ot({path:e,scope:t}){let n=t?.entries.find(t=>t.path===e)??null;if(n===null)return null;let r=n.priority!==`normal`;return!r&&n.sections.length===0?null:(0,W.jsxs)(`span`,{className:G.repoStanding,title:ee,children:[r?(0,W.jsx)(`span`,{className:G.repoPriority,children:F[n.priority]}):null,n.sections.map(e=>(0,W.jsx)(`span`,{className:G.repoSection,children:e.name},e.id)),n.outsideFocus?(0,W.jsx)(`span`,{className:G.repoOutsideFocus,children:`outside the focused section`}):null]})}function kt({guard:e,dispatchEnabled:t}){let n=s(re),r=s(g),[i,a]=(0,U.useState)(``),[o,c]=(0,U.useState)(null),[l,u]=(0,U.useState)(null),[m,h]=(0,U.useState)(null),_=!t||e.readOnly;function v(){let e=Dt(i);if(e){c(e);return}c(null),h(i.trim())}function y(){let t=m;t&&e.request(async()=>{await L({action:`enroll`,path:t}),a(``),h(null)},`Enrolling a repository for autonomous work requires the dispatch token.`)}let b=n.data?.repos??[];return(0,W.jsxs)(`section`,{className:G.panel,"aria-label":`Scope`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Scope — enrolled repositories`}),n.status===`refreshing`?(0,W.jsx)(f,{}):null]}),n.data?.degradedReason?(0,W.jsxs)(`p`,{className:G.readOnly,children:[`The enrollment registry read is degraded: `,P(n.data.degradedReason)]}):null,n.status===`loading`?(0,W.jsxs)(`div`,{className:G.skeletons,children:[(0,W.jsx)(p,{}),(0,W.jsx)(p,{})]}):n.status===`error`?(0,W.jsx)(`p`,{className:G.error,role:`alert`,children:n.error?.message??`Could not read the enrollment registry.`}):b.length===0?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`No repositories are enrolled, so the daemon will do nothing.`}),` `,`That is the default and it is not a bug — nothing autonomous can mutate a real repository until you enroll it here. Add one below to give the loop somewhere to work.`]}):(0,W.jsx)(`div`,{className:G.repoList,children:b.map(t=>(0,W.jsxs)(`div`,{className:G.repoRow,children:[(0,W.jsx)(`span`,{className:G.repoName,children:t.name}),(0,W.jsx)(`span`,{className:G.repoPath,title:t.path,children:(0,W.jsx)(`bdi`,{children:t.path})}),t.exists?null:(0,W.jsx)(`span`,{className:G.repoMissing,children:`⚠ path missing on disk`}),(0,W.jsx)(Ot,{path:t.path,scope:r.data??null}),(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:_||e.busy,onClick:()=>u(t),children:`Remove`})]},t.path))}),(0,W.jsxs)(`div`,{className:G.addRow,children:[(0,W.jsx)(`input`,{className:G.addInput,type:`text`,value:i,placeholder:`/absolute/path/to/repository`,"aria-label":`Repository path to enroll`,"aria-invalid":o?!0:void 0,disabled:_||e.busy,onChange:e=>{a(e.target.value),o&&c(null)},onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),v())}}),(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:_||e.busy,onClick:v,children:`Enroll repository`})]}),o?(0,W.jsx)(`p`,{className:G.capError,role:`alert`,children:o}):null,e.error&&!o?(0,W.jsx)(`p`,{className:G.capError,role:`alert`,children:e.error}):null,(0,W.jsx)(d,{open:m!==null,onClose:()=>h(null),title:`Give the autonomous loop write authority here?`,body:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`code`,{children:m}),` becomes autonomous scope. The loop may propose work against it, and the agent’s own MCP-native write tools will act on it — enrolment is the gate those tools check.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),`Nothing is written by enrolling. You can remove it again from this panel at any time.`]}),confirmLabel:`Enroll repository`,busy:e.busy,error:e.error,onConfirm:y}),(0,W.jsx)(d,{open:l!==null,onClose:()=>u(null),title:`Remove this repository from scope?`,body:(0,W.jsxs)(W.Fragment,{children:[`The autonomous loop will stop proposing work for `,(0,W.jsx)(`code`,{children:l?.path}),`. Existing proposals stay in the inbox; nothing on disk is changed or deleted.`]}),confirmLabel:`Remove from scope`,destructive:!0,busy:e.busy,error:e.error,onConfirm:()=>{let t=l;t&&e.request(async()=>{await L({action:`unenroll`,path:t.path}),u(null)},`Removing a repository from autonomous scope requires the dispatch token.`)}})]})}var $={section:`_section_1vgpf_8`,header:`_header_1vgpf_10`,title:`_title_1vgpf_23`,headerActions:`_headerActions_1vgpf_31`,ghost:`_ghost_1vgpf_32`,scroll:`_scroll_1vgpf_45`,measure:`_measure_1vgpf_46`,banner:`_banner_1vgpf_48`,bannerTitle:`_bannerTitle_1vgpf_59`,failure:`_failure_1vgpf_61`,retry:`_retry_1vgpf_70`,loading:`_loading_1vgpf_82`},At=e({FleetAdvanced:()=>jt});function jt({embedded:e=!1}){let t=s(R),n=s(ne),r=s(_),i=s(be),a=s(Se),c=s(we),l=s(Ne),d=o(R),h=Le();Te(),ke(l.data?.value?.armed??!1);let g=(r.data?.dispatchEnabled??!0)&&!h.readOnly,v=t.data,y=(0,U.useMemo)(()=>(r.data?.seats??[]).map(e=>({id:e.id,engine:e.engine,label:e.label})),[r.data]),b=(0,W.jsxs)(W.Fragment,{children:[g?null:(0,W.jsxs)(`div`,{className:$.banner,role:`status`,children:[(0,W.jsx)(`span`,{className:$.bannerTitle,children:`Read-only session`}),`This server was started without dispatch, so starting, stopping, editing caps, and changing scope are unavailable. Everything below is live and accurate — run `,(0,W.jsx)(`code`,{children:`ashlr verse`}),` to get the controls.`]}),t.status===`loading`?(0,W.jsxs)(`div`,{className:$.loading,children:[(0,W.jsx)(m,{width:`42%`}),(0,W.jsx)(m,{width:`68%`}),(0,W.jsx)(p,{}),(0,W.jsx)(p,{})]}):t.status===`error`||!v?(0,W.jsxs)(`div`,{className:$.failure,role:`alert`,children:[t.error?.message??`Could not read the autonomy control snapshot.`,(0,W.jsx)(`br`,{}),`Loop status unknown, so nothing below is shown.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`button`,{type:`button`,className:$.retry,onClick:d,children:`Try again`})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(nt,{snapshot:v}),(0,W.jsx)(rt,{snapshot:v,guard:h,dispatchEnabled:g}),(0,W.jsx)(xt,{read:l.data??null,snapshot:v,guard:h,dispatchEnabled:g,loading:l.status===`loading`}),(0,W.jsx)(gt,{read:i.data??null,guard:h,dispatchEnabled:g,loading:i.status===`loading`,fleet:a.data??null}),(0,W.jsx)(lt,{read:c.data??null,seats:y,guard:h,dispatchEnabled:g,loading:c.status===`loading`}),(0,W.jsx)(ot,{read:a.data??null,runtime:i.data?.value??null,loading:a.status===`loading`}),n.status===`loading`?(0,W.jsxs)(`div`,{className:G.panel,children:[(0,W.jsx)(p,{}),(0,W.jsx)(p,{})]}):n.data?(0,W.jsx)(Xe,{caps:n.data,snapshot:v,guard:h,dispatchEnabled:g}):(0,W.jsxs)(`section`,{className:G.panel,"aria-label":`Budget and limits`,children:[(0,W.jsx)(`div`,{className:G.panelHead,children:(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Budget and limits`})}),(0,W.jsx)(`p`,{className:G.error,role:`alert`,children:n.error?.message??`Could not read the configured caps, so none are shown or editable.`})]}),(0,W.jsx)(kt,{guard:h,dispatchEnabled:g}),(0,W.jsx)(Be,{snapshot:v}),(0,W.jsx)(Et,{}),(0,W.jsx)(ct,{})]})]}),x=(0,W.jsx)(u,{open:h.tokenOpen,onClose:h.closeToken,reason:h.tokenReason,tokenHelp:`the mutation token ashlr verse printed`});return e?(0,W.jsxs)(`div`,{className:$.loading,"data-embedded":`true`,children:[(0,W.jsxs)(`div`,{className:$.headerActions,children:[t.status===`refreshing`?(0,W.jsx)(f,{}):null,(0,W.jsx)(`button`,{type:`button`,className:$.ghost,onClick:d,children:`Refresh`})]}),b,x]}):(0,W.jsxs)(`section`,{className:$.section,"aria-label":`Autonomy`,children:[(0,W.jsxs)(`header`,{className:$.header,"data-app-region":`drag`,children:[(0,W.jsx)(`h2`,{className:$.title,children:`Autonomy`}),(0,W.jsxs)(`div`,{className:$.headerActions,children:[t.status===`refreshing`?(0,W.jsx)(f,{}):null,(0,W.jsx)(`button`,{type:`button`,className:$.ghost,onClick:d,children:`Refresh`})]})]}),(0,W.jsx)(`div`,{className:$.scroll,children:(0,W.jsx)(`div`,{className:$.measure,children:b})}),x]})}export{jt as n,At as t};
|
|
2
|
+
//# sourceMappingURL=Advanced-DmCUyCfm.js.map
|