@ashlr/hub 3.11.5 → 3.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +153 -0
- package/README.md +29 -16
- package/dist/authority-surface.json +91 -45
- package/dist/build-identity.json +2 -2
- package/dist/cli/authority.d.ts +145 -33
- package/dist/cli/authority.js +1196 -313
- package/dist/cli/authority.js.map +1 -1
- package/dist/cli/cloud.js +12 -3
- package/dist/cli/cloud.js.map +1 -1
- package/dist/core/authority/protected-paths.js +11 -0
- package/dist/core/authority/protected-paths.js.map +1 -1
- package/dist/core/authority/resident.d.ts +101 -0
- package/dist/core/authority/resident.js +246 -0
- package/dist/core/authority/resident.js.map +1 -0
- package/dist/core/authority/trust-roots.js +7 -1
- package/dist/core/authority/trust-roots.js.map +1 -1
- package/dist/core/authority/types.d.ts +43 -0
- package/dist/core/authority/types.js +6 -0
- package/dist/core/authority/types.js.map +1 -1
- package/dist/core/cloud/budget.js +11 -1
- package/dist/core/cloud/budget.js.map +1 -1
- package/dist/core/cloud/cloud-api.d.ts +25 -2
- package/dist/core/cloud/cloud-api.js +139 -5
- package/dist/core/cloud/cloud-api.js.map +1 -1
- package/dist/core/cloud/pr-actions.d.ts +93 -0
- package/dist/core/cloud/pr-actions.js +436 -0
- package/dist/core/cloud/pr-actions.js.map +1 -0
- package/dist/core/cloud/pr-preview.d.ts +128 -0
- package/dist/core/cloud/pr-preview.js +228 -0
- package/dist/core/cloud/pr-preview.js.map +1 -0
- package/dist/core/cloud/store.d.ts +2 -0
- package/dist/core/cloud/store.js +28 -0
- package/dist/core/cloud/store.js.map +1 -1
- package/dist/core/cloud/timeline-api.d.ts +24 -0
- package/dist/core/cloud/timeline-api.js +46 -0
- package/dist/core/cloud/timeline-api.js.map +1 -0
- package/dist/core/cloud/timeline-types.d.ts +62 -0
- package/dist/core/cloud/timeline-types.js +36 -0
- package/dist/core/cloud/timeline-types.js.map +1 -0
- package/dist/core/cloud/timeline.d.ts +102 -0
- package/dist/core/cloud/timeline.js +919 -0
- package/dist/core/cloud/timeline.js.map +1 -0
- package/dist/core/cloud/tracker.js +67 -0
- package/dist/core/cloud/tracker.js.map +1 -1
- package/dist/core/cloud/types.d.ts +38 -0
- package/dist/core/cloud/types.js +1 -1
- package/dist/core/cloud/types.js.map +1 -1
- package/dist/core/daemon/service-install-authority.d.ts +10 -2
- package/dist/core/daemon/service-install-authority.js +14 -5
- package/dist/core/daemon/service-install-authority.js.map +1 -1
- package/dist/core/daemon/service.d.ts +15 -0
- package/dist/core/daemon/service.js +26 -0
- package/dist/core/daemon/service.js.map +1 -1
- package/dist/core/fleet/cloud-intake.d.ts +95 -0
- package/dist/core/fleet/cloud-intake.js +557 -0
- package/dist/core/fleet/cloud-intake.js.map +1 -0
- package/dist/core/fleet/dispatch-router.d.ts +13 -0
- package/dist/core/fleet/dispatch-router.js +32 -8
- package/dist/core/fleet/dispatch-router.js.map +1 -1
- package/dist/core/fleet/fleet-merge-state.d.ts +10 -0
- package/dist/core/fleet/fleet-merge-state.js.map +1 -1
- package/dist/core/fleet/host-merge.d.ts +5 -0
- package/dist/core/fleet/host-merge.js +11 -0
- package/dist/core/fleet/host-merge.js.map +1 -1
- package/dist/core/fleet/merge-gates.d.ts +8 -0
- package/dist/core/fleet/merge-gates.js +25 -5
- package/dist/core/fleet/merge-gates.js.map +1 -1
- package/dist/core/fleet/standing-merge-pass.js +30 -0
- package/dist/core/fleet/standing-merge-pass.js.map +1 -1
- package/dist/core/fleet/tick-hooks-live.d.ts +9 -0
- package/dist/core/fleet/tick-hooks-live.js +44 -5
- package/dist/core/fleet/tick-hooks-live.js.map +1 -1
- package/dist/core/fleet/verify-check-run.d.ts +90 -0
- package/dist/core/fleet/verify-check-run.js +274 -0
- package/dist/core/fleet/verify-check-run.js.map +1 -0
- package/dist/core/routing/budget-api.d.ts +11 -0
- package/dist/core/routing/budget-api.js +64 -8
- package/dist/core/routing/budget-api.js.map +1 -1
- package/dist/core/routing/budget-store.d.ts +22 -1
- package/dist/core/routing/budget-store.js +22 -8
- package/dist/core/routing/budget-store.js.map +1 -1
- package/dist/core/universe/builtins/preparation/manifest.json +1 -1
- package/dist/core/universe/builtins/preparation/preparation-bridge.mjs +8 -2
- package/dist/core/universe/builtins/preparation/preparation-verification-fixtures.mjs +7 -1
- package/dist/core/verse/account-health.js +9 -3
- package/dist/core/verse/account-health.js.map +1 -1
- package/dist/core/verse/activity-api.d.ts +5 -1
- package/dist/core/verse/activity-api.js +62 -14
- package/dist/core/verse/activity-api.js.map +1 -1
- package/dist/core/verse/authority-api.d.ts +9 -1
- package/dist/core/verse/authority-api.js +82 -2
- package/dist/core/verse/authority-api.js.map +1 -1
- package/dist/core/verse/seat-readiness.d.ts +25 -0
- package/dist/core/verse/seat-readiness.js +43 -6
- package/dist/core/verse/seat-readiness.js.map +1 -1
- package/dist/core/verse/verse-api.d.ts +3 -1
- package/dist/core/verse/verse-api.js +6 -0
- package/dist/core/verse/verse-api.js.map +1 -1
- package/dist/core/web/public/next/assets/{ActionMenu-DffwPklw.js → ActionMenu-Dwjk6rUQ.js} +2 -2
- package/dist/core/web/public/next/assets/{ActionMenu-DffwPklw.js.map → ActionMenu-Dwjk6rUQ.js.map} +1 -1
- package/dist/core/web/public/next/assets/Advanced-cVYTAsfB.js +2 -0
- package/dist/core/web/public/next/assets/{Advanced-CxzE6ekM.js.map → Advanced-cVYTAsfB.js.map} +1 -1
- package/dist/core/web/public/next/assets/App-IsaWDsdF.js +7 -0
- package/dist/core/web/public/next/assets/{App-DFlp-vdv.js.map → App-IsaWDsdF.js.map} +1 -1
- package/dist/core/web/public/next/assets/AppsSection-DDqeSrty.js +2 -0
- package/dist/core/web/public/next/assets/{AppsSection-Ct2O605-.js.map → AppsSection-DDqeSrty.js.map} +1 -1
- package/dist/core/web/public/next/assets/{AreaTrend-o-GLl2Is.js → AreaTrend-C32rUaxm.js} +2 -2
- package/dist/core/web/public/next/assets/{AreaTrend-o-GLl2Is.js.map → AreaTrend-C32rUaxm.js.map} +1 -1
- package/dist/core/web/public/next/assets/AutonomyOffState-CmSSTHVe.css +1 -0
- package/dist/core/web/public/next/assets/AutonomyOffState-CpFYS3tQ.js +3 -0
- package/dist/core/web/public/next/assets/AutonomyOffState-CpFYS3tQ.js.map +1 -0
- package/dist/core/web/public/next/assets/AutonomySection-Dwn8UtOy.js +2 -0
- package/dist/core/web/public/next/assets/{AutonomySection-BTg7yVa1.js.map → AutonomySection-Dwn8UtOy.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BranchBar-BjPFtGsj.js → BranchBar-ISZ7xUCj.js} +2 -2
- package/dist/core/web/public/next/assets/{BranchBar-BjPFtGsj.js.map → BranchBar-ISZ7xUCj.js.map} +1 -1
- package/dist/core/web/public/next/assets/BudgetControl-BARVp-En.js +2 -0
- package/dist/core/web/public/next/assets/BudgetControl-BARVp-En.js.map +1 -0
- package/dist/core/web/public/next/assets/{Button-OjVJSrFq.js → Button-DtE0rlWD.js} +2 -2
- package/dist/core/web/public/next/assets/{Button-OjVJSrFq.js.map → Button-DtE0rlWD.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CapacityStrip-Bx4c3dxD.js → CapacityStrip-DKbKA_Aa.js} +2 -2
- package/dist/core/web/public/next/assets/{CapacityStrip-Bx4c3dxD.js.map → CapacityStrip-DKbKA_Aa.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ChartFrame-B_w2Siqg.js → ChartFrame-DK_BDXCt.js} +2 -2
- package/dist/core/web/public/next/assets/{ChartFrame-B_w2Siqg.js.map → ChartFrame-DK_BDXCt.js.map} +1 -1
- package/dist/core/web/public/next/assets/ChatSection-C9myY4ei.js +3 -0
- package/dist/core/web/public/next/assets/ChatSection-C9myY4ei.js.map +1 -0
- package/dist/core/web/public/next/assets/{CloudBudgetForm-5Gf4iAok.js → CloudBudgetForm-CvjK4Oh6.js} +2 -2
- package/dist/core/web/public/next/assets/{CloudBudgetForm-5Gf4iAok.js.map → CloudBudgetForm-CvjK4Oh6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CommandPalette-iTpk6I8r.js → CommandPalette-DzPsth0u.js} +2 -2
- package/dist/core/web/public/next/assets/{CommandPalette-iTpk6I8r.js.map → CommandPalette-DzPsth0u.js.map} +1 -1
- package/dist/core/web/public/next/assets/CommandSection-Brp73iox.js +3 -0
- package/dist/core/web/public/next/assets/CommandSection-Brp73iox.js.map +1 -0
- package/dist/core/web/public/next/assets/{ConfirmDialog-_S9iE-cJ.js → ConfirmDialog-CLUhzaBj.js} +2 -2
- package/dist/core/web/public/next/assets/{ConfirmDialog-_S9iE-cJ.js.map → ConfirmDialog-CLUhzaBj.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DeleteChatDialog-KUYUygiA.js → DeleteChatDialog-C_eDhV8b.js} +2 -2
- package/dist/core/web/public/next/assets/{DeleteChatDialog-KUYUygiA.js.map → DeleteChatDialog-C_eDhV8b.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Dialog-BuIaG6HF.js → Dialog-BRd_B9OE.js} +2 -2
- package/dist/core/web/public/next/assets/{Dialog-BuIaG6HF.js.map → Dialog-BRd_B9OE.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffPane-De4IQt82.js → DiffPane-Cpr9soB2.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffPane-De4IQt82.js.map → DiffPane-Cpr9soB2.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffViewer-B75t6Ile.js → DiffViewer-CNwd0W3Q.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffViewer-B75t6Ile.js.map → DiffViewer-CNwd0W3Q.js.map} +1 -1
- package/dist/core/web/public/next/assets/DockHost-BcEq2qaS.js +2 -0
- package/dist/core/web/public/next/assets/{DockHost-BPqyhtCP.js.map → DockHost-BcEq2qaS.js.map} +1 -1
- package/dist/core/web/public/next/assets/{EmptyState-DXkT4vhW.js → EmptyState-DsN1H6MC.js} +2 -2
- package/dist/core/web/public/next/assets/{EmptyState-DXkT4vhW.js.map → EmptyState-DsN1H6MC.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Epistemic-CfqFe_aP.js → Epistemic-fycQTBRO.js} +2 -2
- package/dist/core/web/public/next/assets/{Epistemic-CfqFe_aP.js.map → Epistemic-fycQTBRO.js.map} +1 -1
- package/dist/core/web/public/next/assets/EvidenceTimeline-PBDAiSuG.css +1 -0
- package/dist/core/web/public/next/assets/EvidenceTimeline-sCCAdnBK.js +2 -0
- package/dist/core/web/public/next/assets/EvidenceTimeline-sCCAdnBK.js.map +1 -0
- package/dist/core/web/public/next/assets/{FleetSection-B7f-XBiX.js → FleetSection-BG8iGraG.js} +3 -3
- package/dist/core/web/public/next/assets/{FleetSection-B7f-XBiX.js.map → FleetSection-BG8iGraG.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Funnel-pXYySwXQ.js → Funnel-B88_wpA4.js} +2 -2
- package/dist/core/web/public/next/assets/{Funnel-pXYySwXQ.js.map → Funnel-B88_wpA4.js.map} +1 -1
- package/dist/core/web/public/next/assets/{GearTray-gj6lT7ba.js → GearTray-CpDt0xwj.js} +2 -2
- package/dist/core/web/public/next/assets/{GearTray-gj6lT7ba.js.map → GearTray-CpDt0xwj.js.map} +1 -1
- package/dist/core/web/public/next/assets/{GrowthSection-D8e9m9Wy.js → GrowthSection-BvZezOsX.js} +2 -2
- package/dist/core/web/public/next/assets/{GrowthSection-D8e9m9Wy.js.map → GrowthSection-BvZezOsX.js.map} +1 -1
- package/dist/core/web/public/next/assets/{HandoffDialog-VfKxKhxF.js → HandoffDialog-B1G6gQyk.js} +2 -2
- package/dist/core/web/public/next/assets/{HandoffDialog-VfKxKhxF.js.map → HandoffDialog-B1G6gQyk.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Input-u1YR_Ogl.js → Input-CI0yBHmn.js} +2 -2
- package/dist/core/web/public/next/assets/{Input-u1YR_Ogl.js.map → Input-CI0yBHmn.js.map} +1 -1
- package/dist/core/web/public/next/assets/{LeaderCard-BDELBrnx.js → LeaderCard-BxxiEg4e.js} +2 -2
- package/dist/core/web/public/next/assets/{LeaderCard-BDELBrnx.js.map → LeaderCard-BxxiEg4e.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MatrixHeatmap-NKLF2srR.js → MatrixHeatmap-iPFEU2Tv.js} +2 -2
- package/dist/core/web/public/next/assets/{MatrixHeatmap-NKLF2srR.js.map → MatrixHeatmap-iPFEU2Tv.js.map} +1 -1
- package/dist/core/web/public/next/assets/McpSection-nuXer4K-.js +2 -0
- package/dist/core/web/public/next/assets/{McpSection-D1tDvlRa.js.map → McpSection-nuXer4K-.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdown-DlfLEJxu.js → MessageMarkdown-BCe4TsXk.js} +3 -3
- package/dist/core/web/public/next/assets/{MessageMarkdown-DlfLEJxu.js.map → MessageMarkdown-BCe4TsXk.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-BYZzI115.js → MessageMarkdownRenderer-DL3LU5kL.js} +2 -2
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-BYZzI115.js.map → MessageMarkdownRenderer-DL3LU5kL.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Meter-BSVhU43Q.js → Meter-b69LM0mU.js} +2 -2
- package/dist/core/web/public/next/assets/{Meter-BSVhU43Q.js.map → Meter-b69LM0mU.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MindSection-lqV2e_Sq.js → MindSection-Dc5v5rH3.js} +2 -2
- package/dist/core/web/public/next/assets/{MindSection-lqV2e_Sq.js.map → MindSection-Dc5v5rH3.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MutationTokenDialog-CLGP72g6.js → MutationTokenDialog-Bm34BNVV.js} +2 -2
- package/dist/core/web/public/next/assets/{MutationTokenDialog-CLGP72g6.js.map → MutationTokenDialog-Bm34BNVV.js.map} +1 -1
- package/dist/core/web/public/next/assets/NeedsYouDrawer-N1cWJjpz.js +3 -0
- package/dist/core/web/public/next/assets/NeedsYouDrawer-N1cWJjpz.js.map +1 -0
- package/dist/core/web/public/next/assets/NeedsYouList-CH6Mq-E_.css +1 -0
- package/dist/core/web/public/next/assets/NeedsYouList-D5Kk549g.js +2 -0
- package/dist/core/web/public/next/assets/{NeedsYouList-eBOlJr0b.js.map → NeedsYouList-D5Kk549g.js.map} +1 -1
- package/dist/core/web/public/next/assets/{NewChatDialog-DoYTH26M.js → NewChatDialog-BqFTWgHU.js} +2 -2
- package/dist/core/web/public/next/assets/{NewChatDialog-DoYTH26M.js.map → NewChatDialog-BqFTWgHU.js.map} +1 -1
- package/dist/core/web/public/next/assets/OnboardingFlow-DcDsguAM.js +3 -0
- package/dist/core/web/public/next/assets/OnboardingFlow-DcDsguAM.js.map +1 -0
- package/dist/core/web/public/next/assets/OnboardingGate-BZafM1Vf.js +3 -0
- package/dist/core/web/public/next/assets/{OnboardingGate-DrDEVBqw.js.map → OnboardingGate-BZafM1Vf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{PreviewPane-ULN673zm.js → PreviewPane-zT3gK9TD.js} +2 -2
- package/dist/core/web/public/next/assets/{PreviewPane-ULN673zm.js.map → PreviewPane-zT3gK9TD.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ProviderLogo-8WaUjTlN.js → ProviderLogo-AwHn2sKm.js} +2 -2
- package/dist/core/web/public/next/assets/{ProviderLogo-8WaUjTlN.js.map → ProviderLogo-AwHn2sKm.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RailStatus-Ckw9nvYU.js → RailStatus-xHrovWvI.js} +2 -2
- package/dist/core/web/public/next/assets/{RailStatus-Ckw9nvYU.js.map → RailStatus-xHrovWvI.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RefreshIndicator-DGubF4vR.js → RefreshIndicator-SEFZlMB2.js} +2 -2
- package/dist/core/web/public/next/assets/{RefreshIndicator-DGubF4vR.js.map → RefreshIndicator-SEFZlMB2.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BahEaY4d.js → ResourcePoolConsoleApp-CAxPQ4sZ.js} +3 -3
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BahEaY4d.js.map → ResourcePoolConsoleApp-CAxPQ4sZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/ResourcesChrome-BnhnEdJe.js +3 -0
- package/dist/core/web/public/next/assets/{ResourcesChrome-C2ZrA7la.js.map → ResourcesChrome-BnhnEdJe.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ResourcesDrawer-BC93fzwQ.js → ResourcesDrawer-BAFGodny.js} +2 -2
- package/dist/core/web/public/next/assets/{ResourcesDrawer-BC93fzwQ.js.map → ResourcesDrawer-BAFGodny.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RouteErrorBoundary-BvhHNpE_.js → RouteErrorBoundary-C8WGiixc.js} +2 -2
- package/dist/core/web/public/next/assets/{RouteErrorBoundary-BvhHNpE_.js.map → RouteErrorBoundary-C8WGiixc.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RunInCloudAction-Dywfnw0C.js → RunInCloudAction-1-IPLYhf.js} +2 -2
- package/dist/core/web/public/next/assets/{RunInCloudAction-Dywfnw0C.js.map → RunInCloudAction-1-IPLYhf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SeatSelector-CH7hTgwy.js → SeatSelector-DpwNiX8F.js} +2 -2
- package/dist/core/web/public/next/assets/{SeatSelector-CH7hTgwy.js.map → SeatSelector-DpwNiX8F.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Segmented-Wynbg0F5.js → Segmented-Wt1ATod9.js} +2 -2
- package/dist/core/web/public/next/assets/{Segmented-Wynbg0F5.js.map → Segmented-Wt1ATod9.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Select-DMyLCkId.js → Select-By-V9lMc.js} +2 -2
- package/dist/core/web/public/next/assets/{Select-DMyLCkId.js.map → Select-By-V9lMc.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionGate-8RtQFWeZ.js → SessionGate-WROS02tK.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionGate-8RtQFWeZ.js.map → SessionGate-WROS02tK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionInsightChip-zBJbKv2L.js → SessionInsightChip-DNUcruwp.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionInsightChip-zBJbKv2L.js.map → SessionInsightChip-DNUcruwp.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionSearch-DfJIcxxM.js → SessionSearch-UHtt7a8f.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionSearch-DfJIcxxM.js.map → SessionSearch-UHtt7a8f.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SettingsSection-Da9RYyH5.js → SettingsSection-Bf74l0Gj.js} +2 -2
- package/dist/core/web/public/next/assets/{SettingsSection-Da9RYyH5.js.map → SettingsSection-Bf74l0Gj.js.map} +1 -1
- package/dist/core/web/public/next/assets/SetupChecklist-BhZpFLsj.css +1 -0
- package/dist/core/web/public/next/assets/SetupChecklist-CzpEcfOl.js +2 -0
- package/dist/core/web/public/next/assets/SetupChecklist-CzpEcfOl.js.map +1 -0
- package/dist/core/web/public/next/assets/{Sheet-DhXyIDmq.js → Sheet-HkBOBMTT.js} +2 -2
- package/dist/core/web/public/next/assets/{Sheet-DhXyIDmq.js.map → Sheet-HkBOBMTT.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-Bi5f-wUw.js → ShortcutsOverlay-DiigiT8H.js} +2 -2
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-Bi5f-wUw.js.map → ShortcutsOverlay-DiigiT8H.js.map} +1 -1
- package/dist/core/web/public/next/assets/Sidebar-C9YtBYVZ.js +3 -0
- package/dist/core/web/public/next/assets/Sidebar-C9YtBYVZ.js.map +1 -0
- package/dist/core/web/public/next/assets/{Slider-Bd9YFWEV.js → Slider-DaEDws-b.js} +2 -2
- package/dist/core/web/public/next/assets/{Slider-Bd9YFWEV.js.map → Slider-DaEDws-b.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StatTile-DScTd3c-.js → StatTile-CTX41O6y.js} +2 -2
- package/dist/core/web/public/next/assets/{StatTile-DScTd3c-.js.map → StatTile-CTX41O6y.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StatusBadge-DQ1UtQAJ.js → StatusBadge-CXG3iNL4.js} +2 -2
- package/dist/core/web/public/next/assets/{StatusBadge-DQ1UtQAJ.js.map → StatusBadge-CXG3iNL4.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StepBand-BB3IJxhr.js → StepBand-jJTqYIdX.js} +2 -2
- package/dist/core/web/public/next/assets/{StepBand-BB3IJxhr.js.map → StepBand-jJTqYIdX.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Surface-DWMtQe3Q.js → Surface-5bNA08tK.js} +2 -2
- package/dist/core/web/public/next/assets/{Surface-DWMtQe3Q.js.map → Surface-5bNA08tK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Swimlane-DcENqtdp.js → Swimlane-LrslsGxw.js} +2 -2
- package/dist/core/web/public/next/assets/{Swimlane-DcENqtdp.js.map → Swimlane-LrslsGxw.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Switch-CenChEYf.js → Switch-BmCzfFnu.js} +2 -2
- package/dist/core/web/public/next/assets/{Switch-CenChEYf.js.map → Switch-BmCzfFnu.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Tag-D4k5E3u0.js → Tag-WSUIaMVy.js} +2 -2
- package/dist/core/web/public/next/assets/{Tag-D4k5E3u0.js.map → Tag-WSUIaMVy.js.map} +1 -1
- package/dist/core/web/public/next/assets/{TerminalPane-DCQTukcE.js → TerminalPane-BVFgYX6K.js} +5 -5
- package/dist/core/web/public/next/assets/{TerminalPane-DCQTukcE.js.map → TerminalPane-BVFgYX6K.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-DsuWT0pi.js → UniverseConsoleApp-BpphLqoz.js} +2 -2
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-DsuWT0pi.js.map → UniverseConsoleApp-BpphLqoz.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UniverseView-DyI5ApsA.js → UniverseView-DbpbSMwO.js} +4 -4
- package/dist/core/web/public/next/assets/{UniverseView-DyI5ApsA.js.map → UniverseView-DbpbSMwO.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UsageSection-Imr28nwK.js → UsageSection-CUlaKtws.js} +3 -3
- package/dist/core/web/public/next/assets/{UsageSection-Imr28nwK.js.map → UsageSection-CUlaKtws.js.map} +1 -1
- package/dist/core/web/public/next/assets/VerseConsoleApp-DXDv1aOi.js +3 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-DXDv1aOi.js.map +1 -0
- package/dist/core/web/public/next/assets/{Workspace-CpxBO98E.js → Workspace-RXy0pqp6.js} +5 -5
- package/dist/core/web/public/next/assets/{Workspace-CpxBO98E.js.map → Workspace-RXy0pqp6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{actions-DE8NoWV_.js → actions-BZTidCXZ.js} +2 -2
- package/dist/core/web/public/next/assets/{actions-DE8NoWV_.js.map → actions-BZTidCXZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{apps-model-CFGCUu9p.js → apps-model-CHO133qt.js} +2 -2
- package/dist/core/web/public/next/assets/{apps-model-CFGCUu9p.js.map → apps-model-CHO133qt.js.map} +1 -1
- package/dist/core/web/public/next/assets/{authority-model-CmnfJzmM.js → authority-model-8NeAEwAF.js} +2 -2
- package/dist/core/web/public/next/assets/{authority-model-CmnfJzmM.js.map → authority-model-8NeAEwAF.js.map} +1 -1
- package/dist/core/web/public/next/assets/{budget-queries-DjrPRFwl.js → budget-queries-DFF-3ICg.js} +2 -2
- package/dist/core/web/public/next/assets/{budget-queries-DjrPRFwl.js.map → budget-queries-DFF-3ICg.js.map} +1 -1
- package/dist/core/web/public/next/assets/{capacity-strip-model-C7cdQnuK.js → capacity-strip-model-5ViUgUlP.js} +2 -2
- package/dist/core/web/public/next/assets/{capacity-strip-model-C7cdQnuK.js.map → capacity-strip-model-5ViUgUlP.js.map} +1 -1
- package/dist/core/web/public/next/assets/{charts-DUD_jprE.js → charts-CzxWrZn7.js} +2 -2
- package/dist/core/web/public/next/assets/{charts-DUD_jprE.js.map → charts-CzxWrZn7.js.map} +1 -1
- package/dist/core/web/public/next/assets/cloud-model-CfRydq8N.js +2 -0
- package/dist/core/web/public/next/assets/{cloud-model-DoxBMDvx.js.map → cloud-model-CfRydq8N.js.map} +1 -1
- package/dist/core/web/public/next/assets/{cloud-queries-CTGvO-k-.js → cloud-queries-DmptbjS8.js} +2 -2
- package/dist/core/web/public/next/assets/{cloud-queries-CTGvO-k-.js.map → cloud-queries-DmptbjS8.js.map} +1 -1
- package/dist/core/web/public/next/assets/{command-catalog-CmrHNFzh.js → command-catalog-ffCAijVY.js} +2 -2
- package/dist/core/web/public/next/assets/{command-catalog-CmrHNFzh.js.map → command-catalog-ffCAijVY.js.map} +1 -1
- package/dist/core/web/public/next/assets/{context-model-2Owp2jYF.js → context-model-Bb15chFt.js} +2 -2
- package/dist/core/web/public/next/assets/{context-model-2Owp2jYF.js.map → context-model-Bb15chFt.js.map} +1 -1
- package/dist/core/web/public/next/assets/{context-model-9xywbXxX.js → context-model-CDeyP0cA.js} +2 -2
- package/dist/core/web/public/next/assets/{context-model-9xywbXxX.js.map → context-model-CDeyP0cA.js.map} +1 -1
- package/dist/core/web/public/next/assets/{context-queries-wvcRnV-I.js → context-queries-_9bFWb9v.js} +2 -2
- package/dist/core/web/public/next/assets/{context-queries-wvcRnV-I.js.map → context-queries-_9bFWb9v.js.map} +1 -1
- package/dist/core/web/public/next/assets/{control-queries-DB6Kh7UN.js → control-queries-CXtmZZH6.js} +2 -2
- package/dist/core/web/public/next/assets/{control-queries-DB6Kh7UN.js.map → control-queries-CXtmZZH6.js.map} +1 -1
- package/dist/core/web/public/next/assets/copy-setup-BIp0iaiZ.js +2 -0
- package/dist/core/web/public/next/assets/copy-setup-BIp0iaiZ.js.map +1 -0
- package/dist/core/web/public/next/assets/{dock-icons-BBUGl4tE.js → dock-icons-Cc43W7r4.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-icons-BBUGl4tE.js.map → dock-icons-Cc43W7r4.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-model-BRfRWkZl.js → fleet-model-DOK8ZtEt.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-model-BRfRWkZl.js.map → fleet-model-DOK8ZtEt.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-queries-tU6UEXN2.js → fleet-queries-BeEAqD6y.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-queries-tU6UEXN2.js.map → fleet-queries-BeEAqD6y.js.map} +1 -1
- package/dist/core/web/public/next/assets/{focus-trap-BGOceFvj.js → focus-trap-ChZ5EFfM.js} +2 -2
- package/dist/core/web/public/next/assets/{focus-trap-BGOceFvj.js.map → focus-trap-ChZ5EFfM.js.map} +1 -1
- package/dist/core/web/public/next/assets/format-BmH2yWL6.js +2 -0
- package/dist/core/web/public/next/assets/format-BmH2yWL6.js.map +1 -0
- package/dist/core/web/public/next/assets/{git-model-53iRLInY.js → git-model-BFwAVbxF.js} +2 -2
- package/dist/core/web/public/next/assets/{git-model-53iRLInY.js.map → git-model-BFwAVbxF.js.map} +1 -1
- package/dist/core/web/public/next/assets/global-y_exIyAP.js +2 -0
- package/dist/core/web/public/next/assets/{global-CXHHMz9o.js.map → global-y_exIyAP.js.map} +1 -1
- package/dist/core/web/public/next/assets/{guarded-runners-B8zFVBVZ.js → guarded-runners-Cd4POBtI.js} +2 -2
- package/dist/core/web/public/next/assets/{guarded-runners-B8zFVBVZ.js.map → guarded-runners-Cd4POBtI.js.map} +1 -1
- package/dist/core/web/public/next/assets/{icons-D4s-jlxX.js → icons-CygCEFWs.js} +2 -2
- package/dist/core/web/public/next/assets/{icons-D4s-jlxX.js.map → icons-CygCEFWs.js.map} +1 -1
- package/dist/core/web/public/next/assets/{index-BG177cPN.js → index-CyK31YRm.js} +3 -3
- package/dist/core/web/public/next/assets/{index-BG177cPN.js.map → index-CyK31YRm.js.map} +1 -1
- package/dist/core/web/public/next/assets/{live-model-CEf01wrW.js → live-model-D7hilYFk.js} +2 -2
- package/dist/core/web/public/next/assets/live-model-D7hilYFk.js.map +1 -0
- package/dist/core/web/public/next/assets/{mind.module-D_xk6HIQ.js → mind.module-B15k0Y9q.js} +2 -2
- package/dist/core/web/public/next/assets/{mind.module-D_xk6HIQ.js.map → mind.module-B15k0Y9q.js.map} +1 -1
- package/dist/core/web/public/next/assets/mutations-CWlxEMEm.js +2 -0
- package/dist/core/web/public/next/assets/{mutations-CbTSofVH.js.map → mutations-CWlxEMEm.js.map} +1 -1
- package/dist/core/web/public/next/assets/{nav-CmZcbPFJ.js → nav-mimleI0R.js} +2 -2
- package/dist/core/web/public/next/assets/{nav-CmZcbPFJ.js.map → nav-mimleI0R.js.map} +1 -1
- package/dist/core/web/public/next/assets/{overnight-queries-CR0b_j-V.js → overnight-queries-DJ4mZKSj.js} +2 -2
- package/dist/core/web/public/next/assets/{overnight-queries-CR0b_j-V.js.map → overnight-queries-DJ4mZKSj.js.map} +1 -1
- package/dist/core/web/public/next/assets/primitives-DMijqcu0.js +1 -0
- package/dist/core/web/public/next/assets/{queries-rvRsAGW2.js → queries-Bw1McHTj.js} +2 -2
- package/dist/core/web/public/next/assets/{queries-rvRsAGW2.js.map → queries-Bw1McHTj.js.map} +1 -1
- package/dist/core/web/public/next/assets/{reasoning-pref-DMPQkujg.js → reasoning-pref-KkhI_5-j.js} +2 -2
- package/dist/core/web/public/next/assets/{reasoning-pref-DMPQkujg.js.map → reasoning-pref-KkhI_5-j.js.map} +1 -1
- package/dist/core/web/public/next/assets/{reveal-anchor-BKk2wZZZ.js → reveal-anchor-CCCx_kfT.js} +2 -2
- package/dist/core/web/public/next/assets/{reveal-anchor-BKk2wZZZ.js.map → reveal-anchor-CCCx_kfT.js.map} +1 -1
- package/dist/core/web/public/next/assets/{seat-subscription-CLn2ReSZ.js → seat-subscription-BhUUz7VL.js} +2 -2
- package/dist/core/web/public/next/assets/{seat-subscription-CLn2ReSZ.js.map → seat-subscription-BhUUz7VL.js.map} +1 -1
- package/dist/core/web/public/next/assets/{sidebar-model-CjQLvdag.js → sidebar-model-Dcd437cf.js} +2 -2
- package/dist/core/web/public/next/assets/{sidebar-model-CjQLvdag.js.map → sidebar-model-Dcd437cf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{slots-DRxNosZg.js → slots-BL_J5mmV.js} +3 -3
- package/dist/core/web/public/next/assets/{slots-DRxNosZg.js.map → slots-BL_J5mmV.js.map} +1 -1
- package/dist/core/web/public/next/assets/{surface-data-DshUC_TU.js → surface-data-C3UAQ4QX.js} +2 -2
- package/dist/core/web/public/next/assets/{surface-data-DshUC_TU.js.map → surface-data-C3UAQ4QX.js.map} +1 -1
- package/dist/core/web/public/next/assets/surface-prefetch-BXKjPsV5.js +2 -0
- package/dist/core/web/public/next/assets/{surface-prefetch-DO8r4ttQ.js.map → surface-prefetch-BXKjPsV5.js.map} +1 -1
- package/dist/core/web/public/next/assets/{tasks-model-BKPFZAmZ.js → tasks-model-CzHvclVm.js} +2 -2
- package/dist/core/web/public/next/assets/{tasks-model-BKPFZAmZ.js.map → tasks-model-CzHvclVm.js.map} +1 -1
- package/dist/core/web/public/next/assets/{terminal-icons-DoeQkP3y.js → terminal-icons-BwgQTQP0.js} +2 -2
- package/dist/core/web/public/next/assets/{terminal-icons-DoeQkP3y.js.map → terminal-icons-BwgQTQP0.js.map} +1 -1
- package/dist/core/web/public/next/assets/types-IYKrYLku.js +2 -0
- package/dist/core/web/public/next/assets/types-IYKrYLku.js.map +1 -0
- package/dist/core/web/public/next/assets/{usage-queries-MnUeYzwp.js → usage-queries-pXxvy54x.js} +2 -2
- package/dist/core/web/public/next/assets/{usage-queries-MnUeYzwp.js.map → usage-queries-pXxvy54x.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-guarded-action-P12MfNwU.js → use-guarded-action-EgVWjM5c.js} +2 -2
- package/dist/core/web/public/next/assets/{use-guarded-action-P12MfNwU.js.map → use-guarded-action-EgVWjM5c.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-ticker-DIvAZ4Ey.js → use-ticker-BoqFxRFG.js} +2 -2
- package/dist/core/web/public/next/assets/{use-ticker-DIvAZ4Ey.js.map → use-ticker-BoqFxRFG.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-token-gate-DfEja7Wr.js → use-token-gate-DSNIIpI6.js} +2 -2
- package/dist/core/web/public/next/assets/{use-token-gate-DfEja7Wr.js.map → use-token-gate-DSNIIpI6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useOnboarding-CkOHadqC.js → useOnboarding-Bk0VnkxQ.js} +2 -2
- package/dist/core/web/public/next/assets/{useOnboarding-CkOHadqC.js.map → useOnboarding-Bk0VnkxQ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useSeatsRefresh-BDlbDlIU.js → useSeatsRefresh-q7Id9RcW.js} +2 -2
- package/dist/core/web/public/next/assets/{useSeatsRefresh-BDlbDlIU.js.map → useSeatsRefresh-q7Id9RcW.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useVerseTranscript-BGtA55k2.js → useVerseTranscript-CqH51rt9.js} +2 -2
- package/dist/core/web/public/next/assets/{useVerseTranscript-BGtA55k2.js.map → useVerseTranscript-CqH51rt9.js.map} +1 -1
- package/dist/core/web/public/next/assets/{verse-icons-wOet9JZy.js → verse-icons-DsG1dOQx.js} +2 -2
- package/dist/core/web/public/next/assets/{verse-icons-wOet9JZy.js.map → verse-icons-DsG1dOQx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{verse-model-CSzzdyu2.js → verse-model-JTuvRBVK.js} +2 -2
- package/dist/core/web/public/next/assets/{verse-model-CSzzdyu2.js.map → verse-model-JTuvRBVK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{warmup-CecO_Nk0.js → warmup-Bv1RumVq.js} +3 -3
- package/dist/core/web/public/next/assets/{warmup-CecO_Nk0.js.map → warmup-Bv1RumVq.js.map} +1 -1
- package/dist/core/web/public/next/assets/why-seat-model-Cau8qG6O.js +2 -0
- package/dist/core/web/public/next/assets/why-seat-model-Cau8qG6O.js.map +1 -0
- package/dist/core/web/public/next/assets/{workspace-model-BdIVybKr.js → workspace-model-D-SLfads.js} +2 -2
- package/dist/core/web/public/next/assets/{workspace-model-BdIVybKr.js.map → workspace-model-D-SLfads.js.map} +1 -1
- package/dist/core/web/public/next/index.html +1 -1
- package/dist/release-dependency-inventory.json +1 -1
- package/docs/AUTONOMY-GAP.md +1 -1
- package/package.json +1 -1
- package/dist/core/web/public/next/assets/Advanced-CxzE6ekM.js +0 -2
- package/dist/core/web/public/next/assets/App-DFlp-vdv.js +0 -7
- package/dist/core/web/public/next/assets/AppsSection-Ct2O605-.js +0 -2
- package/dist/core/web/public/next/assets/AutonomyOffState-CXhXpsim.js +0 -2
- package/dist/core/web/public/next/assets/AutonomyOffState-CXhXpsim.js.map +0 -1
- package/dist/core/web/public/next/assets/AutonomyOffState-DmbE71vI.css +0 -1
- package/dist/core/web/public/next/assets/AutonomySection-BTg7yVa1.js +0 -2
- package/dist/core/web/public/next/assets/BudgetControl-ng6swoZp.js +0 -2
- package/dist/core/web/public/next/assets/BudgetControl-ng6swoZp.js.map +0 -1
- package/dist/core/web/public/next/assets/ChatSection-Bisj9R6E.js +0 -3
- package/dist/core/web/public/next/assets/ChatSection-Bisj9R6E.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandSection-D8ZihzvE.js +0 -2
- package/dist/core/web/public/next/assets/CommandSection-D8ZihzvE.js.map +0 -1
- package/dist/core/web/public/next/assets/DockHost-BPqyhtCP.js +0 -2
- package/dist/core/web/public/next/assets/McpSection-D1tDvlRa.js +0 -2
- package/dist/core/web/public/next/assets/NeedsYouDrawer-D992XTOn.js +0 -2
- package/dist/core/web/public/next/assets/NeedsYouDrawer-D992XTOn.js.map +0 -1
- package/dist/core/web/public/next/assets/NeedsYouList-CruOt4JT.css +0 -1
- package/dist/core/web/public/next/assets/NeedsYouList-eBOlJr0b.js +0 -2
- package/dist/core/web/public/next/assets/OnboardingFlow-D3yfITK1.js +0 -2
- package/dist/core/web/public/next/assets/OnboardingFlow-D3yfITK1.js.map +0 -1
- package/dist/core/web/public/next/assets/OnboardingGate-DrDEVBqw.js +0 -3
- package/dist/core/web/public/next/assets/ResourcesChrome-C2ZrA7la.js +0 -3
- package/dist/core/web/public/next/assets/Sidebar-BuO3sViG.js +0 -3
- package/dist/core/web/public/next/assets/Sidebar-BuO3sViG.js.map +0 -1
- package/dist/core/web/public/next/assets/VerseConsoleApp-DeuBEvAO.js +0 -3
- package/dist/core/web/public/next/assets/VerseConsoleApp-DeuBEvAO.js.map +0 -1
- package/dist/core/web/public/next/assets/cloud-model-DoxBMDvx.js +0 -2
- package/dist/core/web/public/next/assets/copy-setup-CJQhFl-4.js +0 -2
- package/dist/core/web/public/next/assets/copy-setup-CJQhFl-4.js.map +0 -1
- package/dist/core/web/public/next/assets/format-DEAaVF6X.js +0 -2
- package/dist/core/web/public/next/assets/format-DEAaVF6X.js.map +0 -1
- package/dist/core/web/public/next/assets/global-CXHHMz9o.js +0 -2
- package/dist/core/web/public/next/assets/live-model-CEf01wrW.js.map +0 -1
- package/dist/core/web/public/next/assets/mutations-CbTSofVH.js +0 -2
- package/dist/core/web/public/next/assets/primitives-DNI-uJBd.js +0 -1
- package/dist/core/web/public/next/assets/surface-prefetch-DO8r4ttQ.js +0 -2
- package/dist/core/web/public/next/assets/types-D5XOdyw8.js +0 -2
- package/dist/core/web/public/next/assets/types-D5XOdyw8.js.map +0 -1
- package/dist/core/web/public/next/assets/why-seat-model-D68ZA7G8.js +0 -2
- package/dist/core/web/public/next/assets/why-seat-model-D68ZA7G8.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["../../../../../../src/web-ui/routes/verse/workspaces/SavedProjectDialog.tsx","../../../../../../src/web-ui/routes/verse/workspaces/SavedProjects.tsx","../../../../../../src/web-ui/routes/verse/Sidebar.tsx"],"sourcesContent":["/**\n * routes/verse/workspaces/SavedProjectDialog.tsx — create, rename, reorder and\n * delete a SAVED PROJECT (a workspace in `~/.ashlr/verse/workspaces.json`).\n *\n * Why this dialog exists: the workspace routes were complete and nothing in\n * the console ever called them, so the only way to get a saved project was to\n * hand-edit a JSON file. A folder the operator typed into the new-chat dialog\n * came back only AFTER a chat had been created on it. Now a folder can be kept\n * before any chat exists, which is what \"open my project again tomorrow\"\n * actually requires.\n *\n * Three honesty rules are load-bearing here:\n *\n * - THE FIRST FOLDER IS THE PRIMARY. It is the session's cwd, and it is the\n * only folder a Grok seat can reach, so the reorder buttons are not\n * cosmetic and the first row says \"Primary folder\" rather than \"Folder 1\".\n * - PRIORITY ORDERS, IT NEVER GRANTS. `ROOT_PRIORITY_NOTE` is rendered at the\n * point of the choice; ranking a repo `critical` does not enrol it.\n * - NO SEAT IS CHOSEN HERE, so no per-seat caveat can be honest. The dialog\n * states the engine rule flatly instead (`MULTI_ROOT_ENGINE_NOTE`); the\n * seat-specific warning belongs in the new-chat dialog, where a seat exists.\n */\nimport { useEffect, useId, useState, type FormEvent } from 'react';\nimport type { VerseRootPriority, VerseWorkspace } from '../../../data/api-types.js';\nimport { Dialog } from '../../../components/primitives/Dialog.js';\nimport { nativePickerAvailable, pickDirectory } from '../folder-picker.js';\nimport { projectName } from '../verse-model.js';\nimport {\n createVerseWorkspace,\n deleteVerseWorkspace,\n setVerseFocusSection,\n setVerseRootPriority,\n updateVerseWorkspace,\n} from '../verse-queries.js';\nimport {\n MAX_WORKSPACE_ROOTS,\n MULTI_ROOT_ENGINE_NOTE,\n moveRoot,\n priorityOf,\n ROOT_PRIORITY_LABEL,\n ROOT_PRIORITY_NOTE,\n ROOT_PRIORITY_ORDER,\n rootRowLabel,\n validateWorkspaceDraft,\n workspaceRootPaths,\n} from '../workspace-model.js';\nimport styles from './SavedProjectDialog.module.css';\n\nexport interface SavedProjectDialogProps {\n open: boolean;\n /** The project being edited, or null to create a new one. */\n workspace: VerseWorkspace | null;\n /** Folder set to pre-fill a NEW project with (primary first). */\n initialRoots?: readonly string[];\n /** Per-path priority as the server holds it. Absent key means `normal`. */\n priorities?: Readonly<Record<string, VerseRootPriority>>;\n /** The section the autonomous lane is focused on, if any. */\n focusSectionId?: string | null;\n onClose: () => void;\n onSaved?: (workspace: VerseWorkspace) => void;\n onDeleted?: (id: string) => void;\n}\n\nexport function SavedProjectDialog(props: SavedProjectDialogProps) {\n const { open, workspace, initialRoots, priorities, focusSectionId = null, onClose, onSaved, onDeleted } = props;\n const titleId = useId();\n const nameId = useId();\n const [name, setName] = useState('');\n const [roots, setRoots] = useState<string[]>(['']);\n const [section, setSection] = useState(false);\n const [focused, setFocused] = useState(false);\n const [priorityDraft, setPriorityDraft] = useState<Record<string, VerseRootPriority>>({});\n const [confirmingDelete, setConfirmingDelete] = useState(false);\n const [busy, setBusy] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n // Reset on the OPEN transition only, for the same reason NewChatDialog does:\n // the workspace list is a fresh array on every invalidation, and re-running\n // this on it would wipe a half-typed path.\n useEffect(() => {\n if (!open) return;\n const existing = workspace;\n setName(existing?.name ?? '');\n setRoots(existing ? workspaceRootPaths(existing) : [...(initialRoots ?? [])].filter((r) => r.length > 0));\n setSection(existing?.section ?? false);\n setFocused(existing !== null && focusSectionId === existing.id);\n setPriorityDraft({});\n setConfirmingDelete(false);\n setBusy(false);\n setError(null);\n // eslint-disable-next-line react-hooks/exhaustive-deps -- open transition only; the inputs are read once, on purpose.\n }, [open]);\n\n // Always at least one row, so there is somewhere to type the primary folder.\n const rows = roots.length === 0 ? [''] : roots;\n const showPicker = nativePickerAvailable();\n\n function setRow(index: number, value: string) {\n setRoots(rows.map((r, i) => (i === index ? value : r)));\n }\n\n async function choose(index: number) {\n const picked = await pickDirectory();\n if (picked !== null && picked.length > 0) setRow(index, picked);\n }\n\n function priorityFor(path: string): VerseRootPriority {\n return priorityDraft[path] ?? priorityOf(path, priorities);\n }\n\n async function submit(event: FormEvent) {\n event.preventDefault();\n const draft = validateWorkspaceDraft(name, rows);\n if (!draft.ok) {\n setError(draft.error);\n return;\n }\n setBusy(true);\n setError(null);\n try {\n const saved = workspace === null\n ? await createVerseWorkspace({ name: draft.name, roots: draft.roots, section })\n : await updateVerseWorkspace(workspace.id, { name: draft.name, roots: draft.roots, section });\n // Priority is an attribute OF THE REPO, held once per path, so it is a\n // separate call per changed path rather than part of the workspace body.\n for (const path of draft.roots) {\n const next = priorityDraft[path];\n if (next !== undefined && next !== priorityOf(path, priorities)) {\n await setVerseRootPriority(path, next);\n }\n }\n const wasFocused = workspace !== null && focusSectionId === workspace.id;\n if (section && focused !== wasFocused) {\n await setVerseFocusSection(focused ? saved.id : null);\n }\n onSaved?.(saved);\n onClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : String(err));\n } finally {\n setBusy(false);\n }\n }\n\n async function remove() {\n if (workspace === null) return;\n setBusy(true);\n setError(null);\n try {\n await deleteVerseWorkspace(workspace.id);\n onDeleted?.(workspace.id);\n onClose();\n } catch (err) {\n setError(err instanceof Error ? err.message : String(err));\n setBusy(false);\n }\n }\n\n return (\n <Dialog\n open={open}\n onClose={onClose}\n titleId={titleId}\n title={workspace === null ? 'Save a project' : 'Edit project'}\n description=\"Saved projects stay in the picker — they do not need a chat on them first.\"\n widthClassName={styles.width}\n >\n <form className={styles.form} onSubmit={(event) => void submit(event)} noValidate>\n <label className={styles.field} htmlFor={nameId}>\n <span className={styles.label}>Name</span>\n <input id={nameId} className={styles.input} value={name} onChange={(event) => setName(event.target.value)}\n placeholder=\"Defaults to the folder’s own name\" maxLength={120} autoComplete=\"off\" />\n </label>\n\n <div className={styles.field}>\n <span className={styles.label}>Folders</span>\n <p className={styles.hint}>\n The first folder is the primary: it is the chat’s working directory. Move a folder to the top to make it\n the primary.\n </p>\n {rows.map((root, index) => (\n <div key={index} className={styles.rootRow}>\n <input\n className={styles.input}\n value={root}\n // A long path is cut with an ellipsis while the field is idle; the tooltip keeps it whole.\n title={root || undefined}\n onChange={(event) => setRow(index, event.target.value)}\n placeholder=\"/absolute/path/to/folder\"\n aria-label={rootRowLabel(index)}\n autoComplete=\"off\"\n spellCheck={false}\n />\n {showPicker ? (\n <button type=\"button\" className={styles.rowButton} onClick={() => void choose(index)}\n aria-label={`Choose ${rootRowLabel(index).toLowerCase()}`}>Choose folder…</button>\n ) : null}\n {/* Glyph-only: the accessible name AND the tooltip both say what the arrow does. */}\n <button type=\"button\" className={styles.rowButton} disabled={index === 0}\n onClick={() => setRoots(moveRoot(rows, index, 'up'))}\n aria-label={`Move ${rootRowLabel(index).toLowerCase()} up`}\n title={`Move ${rootRowLabel(index).toLowerCase()} up`}><span aria-hidden=\"true\">↑</span></button>\n <button type=\"button\" className={styles.rowButton} disabled={index === rows.length - 1}\n onClick={() => setRoots(moveRoot(rows, index, 'down'))}\n aria-label={`Move ${rootRowLabel(index).toLowerCase()} down`}\n title={`Move ${rootRowLabel(index).toLowerCase()} down`}><span aria-hidden=\"true\">↓</span></button>\n <button type=\"button\" className={styles.rowButton} disabled={rows.length === 1}\n onClick={() => setRoots(rows.filter((_, i) => i !== index))}\n aria-label={`Remove ${rootRowLabel(index).toLowerCase()}`}>Remove</button>\n </div>\n ))}\n {rows.length < MAX_WORKSPACE_ROOTS ? (\n <button type=\"button\" className={styles.addRoot} onClick={() => setRoots([...rows, ''])}>Add a folder</button>\n ) : null}\n {rows.length > 1 ? <p className={styles.hint}>{MULTI_ROOT_ENGINE_NOTE}</p> : null}\n </div>\n\n <div className={styles.field}>\n <label className={styles.checkbox}>\n <input type=\"checkbox\" checked={section} onChange={(event) => setSection(event.target.checked)} />\n <span>Offer this project to the autonomous lane as a section</span>\n </label>\n {section ? (\n <>\n <label className={styles.checkbox}>\n <input type=\"checkbox\" checked={focused} onChange={(event) => setFocused(event.target.checked)} />\n <span>Focus the fleet on this section</span>\n </label>\n <p className={styles.hint}>{ROOT_PRIORITY_NOTE}</p>\n {rows.filter((r) => r.trim().length > 0).map((root, index) => (\n <div key={`${root}-${index}`} className={styles.priorityRow}>\n {/* The folder's own name; the full path is the tooltip (and the select's accessible name). */}\n <span className={styles.priorityPath} title={root}>{projectName(root.trim())}</span>\n <select\n className={styles.select}\n aria-label={`Priority for ${root}`}\n value={priorityFor(root.trim())}\n onChange={(event) =>\n setPriorityDraft({ ...priorityDraft, [root.trim()]: event.target.value as VerseRootPriority })}\n >\n {ROOT_PRIORITY_ORDER.map((p) => (\n <option key={p} value={p}>{ROOT_PRIORITY_LABEL[p]}</option>\n ))}\n </select>\n </div>\n ))}\n </>\n ) : null}\n </div>\n\n {error ? <p role=\"alert\" className={styles.error}>{error}</p> : null}\n\n <div className={styles.actions}>\n {workspace === null ? null : confirmingDelete ? (\n <>\n <span className={styles.confirm}>Forget this project? Chats already on it are untouched.</span>\n <button type=\"button\" className={styles.danger} onClick={() => void remove()} disabled={busy}>Forget</button>\n <button type=\"button\" className={styles.cancel} onClick={() => setConfirmingDelete(false)}>Keep</button>\n </>\n ) : (\n <button type=\"button\" className={styles.remove} onClick={() => setConfirmingDelete(true)} disabled={busy}>\n Forget project\n </button>\n )}\n <span className={styles.spacer} />\n <button type=\"button\" className={styles.cancel} onClick={onClose}>Cancel</button>\n <button type=\"submit\" className={styles.save} disabled={busy}>{busy ? 'Saving…' : 'Save project'}</button>\n </div>\n </form>\n </Dialog>\n );\n}\n","/**\n * routes/verse/workspaces/SavedProjects.tsx — the sidebar's \"Projects\"\n * section: every saved project, and the one button that creates one.\n *\n * SELF-SUPPLIED ON PURPOSE. It reads `verseWorkspacesQuery` itself rather\n * than taking the list as a prop, because the sidebar's props are owned by the\n * chat section and this list has exactly one consumer. The key is the same one\n * the new-chat dialog's list is read from, so the cache serves both from one\n * request and the picker and this list can never disagree.\n *\n * Quiet when the read fails: an older server has no /api/verse/workspaces at\n * all, and a permanent red line in the sidebar for a feature that server does\n * not have would be noise, not honesty. The \"Save a project\" button stays —\n * pressing it surfaces the real refusal from the server, in the dialog.\n */\nimport { useState } from 'react';\nimport type { VerseWorkspace } from '../../../data/api-types.js';\nimport { useQuery } from '../../../data/hooks.js';\nimport { PlusIcon } from '../verse-icons.js';\nimport { verseWorkspacesQuery } from '../verse-queries.js';\nimport { workspacePrimary, workspaceSummary } from '../workspace-model.js';\nimport { SavedProjectDialog } from './SavedProjectDialog.js';\nimport styles from './SavedProjects.module.css';\n\nexport function SavedProjects() {\n const query = useQuery(verseWorkspacesQuery);\n const workspaces = query.data?.workspaces ?? [];\n const [editing, setEditing] = useState<{ open: boolean; workspace: VerseWorkspace | null }>(\n { open: false, workspace: null },\n );\n\n return (\n <section className={styles.projects} aria-label=\"Saved projects\">\n <h2 className={styles.head}>\n <span className={styles.headText}>Projects</span>\n <button\n type=\"button\"\n className={styles.add}\n title=\"Save a project\"\n aria-label=\"Save a project\"\n onClick={() => setEditing({ open: true, workspace: null })}\n >\n <PlusIcon />\n </button>\n </h2>\n\n {workspaces.length > 0 ? (\n <ul className={styles.list}>\n {workspaces.map((workspace) => {\n const primary = workspacePrimary(workspace) ?? '';\n return (\n <li key={workspace.id}>\n <button\n type=\"button\"\n className={styles.project}\n // The name truncates to one line, so the tooltip carries it in\n // full, then the primary folder — which costs no pixels here.\n title={primary ? `${workspace.name}\\n${primary}` : workspace.name}\n aria-label={`Edit project ${workspace.name}`}\n onClick={() => setEditing({ open: true, workspace })}\n >\n <span className={styles.name}>{workspace.name}</span>\n <span className={styles.summary}>{workspaceSummary(workspace)}</span>\n </button>\n </li>\n );\n })}\n </ul>\n ) : query.status === 'error' ? null : (\n <p className={styles.empty}>No saved projects yet. Press + to keep a folder you work in.</p>\n )}\n\n <SavedProjectDialog\n open={editing.open}\n workspace={editing.workspace}\n priorities={query.data?.priorities}\n focusSectionId={query.data?.focusSectionId ?? null}\n onClose={() => setEditing({ open: false, workspace: null })}\n />\n </section>\n );\n}\n","/**\n * routes/verse/Sidebar.tsx — the chat list (3.10, SPEC-310C §2; model:\n * chat/sidebar-model.ts).\n *\n * [search…………………………] [+] [⫿]\n * (All) (Running 2) (Needs you 1) (Pinned 3)\n * SAVED PROJECTS …\n * PINNED\n * │ Fix the login bug ● 1m 02s\n * │ npm test\n * HUB\n * │ Write the docs • ← unread\n * │ Migrate the store ! ← failed\n * ▸ ARCHIVED 12\n *\n * One row is a 2px engine tick, the title and ONE status — the most urgent\n * that applies: a pulse with the elapsed time (running), a failure mark, an\n * unread dot, or how long ago. A running row adds a muted second line from\n * activity: the command it is running, or the tail of what it is thinking.\n * Every status is a glyph with an accessible name, at least 11px, and never\n * colour alone (DESIGN §6). The row's tooltip spells the status out too\n * (\"… · Last turn failed\"), so the \"!\" is explained to a sighted pointer user\n * as well as to a screen reader.\n *\n * Group headings are the project's display name as it is on disk (never\n * upper-cased: a folder slug shouted in caps is a different-looking name),\n * with the full path as their tooltip. ↑/↓ move between chats, Home/End jump\n * to the ends, Enter opens; ↓ from the search field lands on the first chat.\n *\n * Hover a row (or right-click it, or press Shift+F10 / the menu key on it)\n * for pin, archive, rename, hand off and delete. Pin and archive need C1's\n * session-meta route; on a server without it they are shown disabled with\n * the reason, rather than hidden.\n *\n * ONE SEARCH FIELD, TWO ANSWERS (V3.9): titles and projects filter instantly\n * on the client; underneath, SessionSearch lists chats whose MESSAGES match\n * (a scan on this machine, nothing sent to a model).\n *\n * Saved projects sit above the chats: the registry the operator writes\n * deliberately (workspaces/SavedProjects.tsx).\n */\nimport { lazy, Suspense, useEffect, useId, useMemo, useRef, useState, type KeyboardEvent, type MouseEvent as ReactMouseEvent } from 'react';\nimport type { VerseProject, VerseSeat, VerseSession } from '../../data/api-types.js';\nimport type { VerseActivityResponse, VerseSessionMetaResponse } from '../../../core/verse/workbench-types.js';\nimport type { QueryStatus } from '../../data/cache.js';\nimport { Button } from '../../components/primitives/Button.js';\nimport { Dialog } from '../../components/primitives/Dialog.js';\nimport { RefreshIndicator } from '../../components/primitives/RefreshIndicator.js';\nimport { SkeletonLine } from '../../components/primitives/Skeleton.js';\nimport { Tooltip } from '../../components/primitives/Tooltip.js';\nimport { ActionMenu, type ActionMenuItem, type MenuAnchor } from './chat/ActionMenu.js';\nimport { LiveTimer } from './chat/LiveTimer.js';\nimport {\n buildSidebar,\n SIDEBAR_FILTERS,\n SIDEBAR_FILTER_LABEL,\n type SidebarFilter,\n type SidebarGroup,\n type SidebarRow,\n} from './chat/sidebar-model.js';\nimport { ArchiveGlyph, HandoffGlyph, MoreGlyph, PinGlyph, RenameGlyph, TrashGlyph } from './dock/dock-icons.js';\nimport { PlusIcon, SearchIcon, SidebarIcon } from './verse-icons.js';\nimport { seatSubscription } from './seat-subscription.js';\nimport { formatRelative, seatById, seatPillLabel } from './verse-model.js';\nimport { SavedProjects } from './workspaces/SavedProjects.js';\nimport { findCommand, formatChord } from './shell/command-catalog.js';\nimport styles from './Sidebar.module.css';\n\nexport interface SidebarProps {\n sessions: readonly VerseSession[];\n sessionsStatus: QueryStatus;\n sessionsError: string | null;\n projects: readonly VerseProject[];\n seats: readonly VerseSeat[];\n selectedId: string | null;\n query: string;\n onQuery: (value: string) => void;\n onSelect: (id: string) => void;\n onNew: () => void;\n onRetry: () => void;\n onCollapse: () => void;\n /** Called only once the operator confirms the footer's \"Disconnect from hub\" dialog. */\n onDisconnect: () => void;\n /** 3.10 — C1's activity (null: not on this server / not answered yet). */\n activity?: VerseActivityResponse | null;\n /** 3.10 — C1's per-chat meta (null: not on this server / not answered yet). */\n meta?: VerseSessionMetaResponse | null;\n /** Turn counts this tab has seen, per chat. */\n localSeen?: ReadonlyMap<string, number>;\n /** Row actions (3.10). Absent → the row menu is not offered. */\n actions?: SidebarRowActions;\n}\n\nexport interface SidebarRowActions {\n setPinned: (sessionId: string, pinned: boolean) => void;\n setArchived: (sessionId: string, archived: boolean) => void;\n rename: (sessionId: string, title: string) => Promise<boolean>;\n handoff: (sessionId: string) => void;\n requestDelete: (sessionId: string) => void;\n /** False on a read-only server: every write is shown disabled with this reason. */\n dispatchEnabled: boolean;\n}\n\nconst NO_SEEN: ReadonlyMap<string, number> = new Map();\n\n// Message search loads with the first query, not with the chat list.\nconst SessionSearch = lazy(() => import('./context/SessionSearch.js').then((m) => ({ default: m.SessionSearch })));\n\nexport function Sidebar(props: SidebarProps) {\n const { sessions, sessionsStatus, sessionsError, projects, seats, selectedId, query, onQuery, onSelect, onNew,\n onRetry, onCollapse, onDisconnect, activity = null, meta = null, localSeen = NO_SEEN, actions } = props;\n const searchId = useId();\n const newChatShortcut = findCommand('chat.new')?.keys[0];\n const sidebarShortcut = findCommand('chat.sidebar')?.keys[0];\n const newChatHint = newChatShortcut ? formatChord(newChatShortcut) : null;\n const sidebarHint = sidebarShortcut ? formatChord(sidebarShortcut) : null;\n const [filter, setFilter] = useState<SidebarFilter>('all');\n const [archivedOpen, setArchivedOpen] = useState(false);\n const [renaming, setRenaming] = useState<string | null>(null);\n const [menu, setMenu] = useState<{ row: SidebarRow; anchor: MenuAnchor; from: HTMLElement } | null>(null);\n const [confirmDisconnect, setConfirmDisconnect] = useState(false);\n const disconnectTitleId = useId();\n const disconnectCancelRef = useRef<HTMLButtonElement>(null);\n const model = useMemo(\n () => buildSidebar({ sessions, projects, query, filter, activity, meta, localSeen, selectedId }),\n [sessions, projects, query, filter, activity, meta, localSeen, selectedId],\n );\n const loading = sessionsStatus === 'loading' || (sessionsStatus === 'idle' && sessions.length === 0);\n const searching = query.trim().length > 0;\n const scrollRef = useRef<HTMLDivElement>(null);\n\n /** ↓ from the search field: into the list, on its first chat. */\n function onSearchKeyDown(event: KeyboardEvent<HTMLInputElement>) {\n if (event.key !== 'ArrowDown') return;\n const first = scrollRef.current?.querySelector<HTMLElement>(ROW_SELECTOR);\n if (!first) return;\n event.preventDefault();\n first.focus();\n }\n\n function openMenu(row: SidebarRow, anchor: MenuAnchor, from: HTMLElement) {\n if (!actions) return;\n setMenu({ row, anchor, from });\n }\n\n return (\n <nav className={styles.sidebar} aria-label=\"Chats\">\n <div className={styles.head}>\n {/* Draggable strip under the overlay title bar; zero-height in a browser. */}\n <div className={styles.headDragStrip} aria-hidden=\"true\" />\n <label className={styles.search} htmlFor={searchId}>\n <span className={styles.searchIcon} aria-hidden=\"true\"><SearchIcon /></span>\n <span className=\"visually-hidden\">Search chats and messages</span>\n <input id={searchId} type=\"search\" value={query} placeholder=\"Search chats\" autoComplete=\"off\"\n onChange={(event) => onQuery(event.target.value)} onKeyDown={onSearchKeyDown} />\n </label>\n <Tooltip label=\"New chat\" shortcut={newChatHint ?? undefined} placement=\"bottom\">\n <button type=\"button\" className={styles.iconButton} onClick={onNew} aria-label=\"New chat\">\n <PlusIcon />\n </button>\n </Tooltip>\n <Tooltip label=\"Hide chat list\" shortcut={sidebarHint ?? undefined} placement=\"bottom\">\n <button type=\"button\" className={styles.iconButton} onClick={onCollapse} aria-label=\"Hide chat list\">\n <SidebarIcon />\n </button>\n </Tooltip>\n {sessionsStatus === 'refreshing' ? <RefreshIndicator label=\"Refreshing chats\" /> : null}\n </div>\n\n <FilterChips value={filter} counts={model.counts} onChange={setFilter} />\n\n <div ref={scrollRef} className={styles.scroll} onKeyDown={onRowsKeyDown}>\n <SavedProjects />\n {loading ? (\n <div className={styles.skeleton} aria-busy=\"true\">\n <SkeletonLine width=\"48%\" /><SkeletonLine width=\"86%\" /><SkeletonLine width=\"74%\" />\n <SkeletonLine width=\"40%\" /><SkeletonLine width=\"80%\" />\n </div>\n ) : sessionsStatus === 'error' && sessions.length === 0 ? (\n <div role=\"alert\" className={styles.error}>\n <p>{sessionsError ?? 'Could not load chats.'}</p>\n <button type=\"button\" onClick={onRetry}>Retry</button>\n </div>\n ) : model.groups.length === 0 ? (\n <EmptyList query={query} filter={filter} hasSessions={sessions.length > 0} newChatHint={newChatHint} onClearQuery={() => onQuery('')}\n onClearFilter={() => setFilter('all')} onNew={onNew} />\n ) : model.groups.map((group) => (\n <GroupView key={group.id} group={group} seats={seats} selectedId={selectedId} renaming={renaming}\n open={group.kind !== 'archived' || archivedOpen || searching || filter !== 'all'}\n onToggle={group.kind === 'archived' ? () => setArchivedOpen((v) => !v) : undefined}\n onSelect={onSelect} onMenu={actions ? openMenu : undefined}\n onRenameDone={async (row, title) => {\n setRenaming(null);\n if (!actions || !title || title === row.session.title) return;\n await actions.rename(row.session.id, title);\n }} />\n ))}\n {searching ? (\n <Suspense fallback={null}>\n <SessionSearch query={query} onOpenSession={onSelect} selectedId={selectedId} />\n </Suspense>\n ) : null}\n </div>\n\n <footer className={styles.footer}>\n {/* clearReadSession (data/auth-store.ts): ends this window's read\n session — the cookie, the remembered token, the mutation hold,\n cached data and the composer's drafts — and shows the token screen\n again. The chats themselves stay on the hub. Said in the label and\n the tooltip, because \"Disconnect\" alone reads like a network blip.\n It throws away unsent drafts, so — like Settings ▸ Connection — it\n asks first; onDisconnect runs only from the dialog's red button. */}\n <Tooltip label=\"Signs this window out: clears cached chats and unsent drafts here. Chats stay on the hub.\" placement=\"top\">\n <button type=\"button\" onClick={() => setConfirmDisconnect(true)} className={styles.footerButton}\n aria-haspopup=\"dialog\">Disconnect from hub</button>\n </Tooltip>\n </footer>\n\n {/* The same confirm as Settings ▸ Connection (ConnectionPanel.tsx): the\n Dialog primitive, focus on CANCEL so Enter-Enter keeps the session,\n Escape and the backdrop cancel, and focus returns to the footer\n button. */}\n <Dialog open={confirmDisconnect} onClose={() => setConfirmDisconnect(false)} titleId={disconnectTitleId}\n title=\"Disconnect from this hub?\" initialFocusRef={disconnectCancelRef}\n description=\"Unsent drafts in open chats will be cleared. Your chats stay on the hub; you will need the read token to reconnect.\">\n <div className={styles.confirmActions}>\n <Button ref={disconnectCancelRef} variant=\"subtle\" onClick={() => setConfirmDisconnect(false)}>Cancel</Button>\n <Button variant=\"danger\" onClick={() => {\n setConfirmDisconnect(false);\n onDisconnect();\n }}>Disconnect</Button>\n </div>\n </Dialog>\n\n {menu && actions ? (\n <ActionMenu label={`Actions for ${menu.row.session.title || 'Untitled chat'}`} anchor={menu.anchor}\n returnFocus={menu.from} onClose={() => setMenu(null)}\n items={rowMenuItems(menu.row, actions, model.metaAvailable, () => setRenaming(menu.row.session.id))} />\n ) : null}\n </nav>\n );\n}\n\n/** Every chat row in the list (search results and saved projects are not rows). */\nconst ROW_SELECTOR = '[data-focus-key^=\"verse-session:\"]';\n\n/** ↑/↓ between chat rows, Home/End to the ends. Enter is the row button's own. */\nfunction onRowsKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n if (event.altKey || event.metaKey || event.ctrlKey || event.shiftKey) return;\n const target = event.target as HTMLElement;\n if (!target.matches(ROW_SELECTOR)) return;\n const rows = [...event.currentTarget.querySelectorAll<HTMLElement>(ROW_SELECTOR)];\n const at = rows.indexOf(target);\n let next: HTMLElement | undefined;\n if (event.key === 'ArrowDown') next = rows[at + 1];\n else if (event.key === 'ArrowUp') next = rows[at - 1];\n else if (event.key === 'Home') next = rows[0];\n else if (event.key === 'End') next = rows[rows.length - 1];\n else return;\n event.preventDefault();\n next?.focus();\n}\n\n/** The row's status in words, for its tooltip (the glyph's accessible name, said to everyone). */\nfunction rowStatusWords(status: SidebarRow['status']): string | null {\n switch (status.kind) {\n case 'running': return 'Running';\n case 'failed': return 'Last turn failed';\n case 'unread': return `${status.newTurns} new turn${status.newTurns === 1 ? '' : 's'}`;\n default: return null;\n }\n}\n\nfunction rowMenuItems(row: SidebarRow, actions: SidebarRowActions, metaAvailable: boolean, startRename: () => void): ActionMenuItem[] {\n const id = row.session.id;\n const running = row.status.kind === 'running';\n const writeReason = !actions.dispatchEnabled ? 'This server was started without dispatch.' : null;\n const metaReason = writeReason ?? (metaAvailable ? null : 'Not available on this server yet.');\n return [\n {\n id: 'pin',\n label: row.pinned ? 'Unpin' : 'Pin',\n icon: <PinGlyph size={14} />,\n disabled: metaReason !== null,\n reason: metaReason,\n onSelect: () => actions.setPinned(id, !row.pinned),\n },\n {\n id: 'archive',\n label: row.archived ? 'Unarchive' : 'Archive',\n icon: <ArchiveGlyph size={14} />,\n disabled: metaReason !== null,\n reason: metaReason,\n onSelect: () => actions.setArchived(id, !row.archived),\n },\n { id: 'rename', label: 'Rename', icon: <RenameGlyph size={14} />, disabled: writeReason !== null, reason: writeReason, onSelect: startRename },\n {\n id: 'handoff',\n label: 'Continue in a fresh chat…',\n icon: <HandoffGlyph size={14} />,\n disabled: writeReason !== null || running,\n reason: writeReason ?? (running ? 'Available when its turn finishes.' : null),\n onSelect: () => actions.handoff(id),\n },\n {\n id: 'delete',\n label: 'Delete…',\n icon: <TrashGlyph size={14} />,\n danger: true,\n separated: true,\n disabled: writeReason !== null || running,\n reason: writeReason ?? (running ? 'Stop its turn before deleting.' : null),\n onSelect: () => actions.requestDelete(id),\n },\n ];\n}\n\n/**\n * All / Running / Needs you / Pinned — one radio group, ONE tab stop, ←/→\n * between the options (the list below is where Tab should go next).\n */\nfunction FilterChips({ value, counts, onChange }: { value: SidebarFilter; counts: Record<SidebarFilter, number>; onChange: (f: SidebarFilter) => void }) {\n const refs = useRef(new Map<SidebarFilter, HTMLButtonElement>());\n function onKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const i = SIDEBAR_FILTERS.indexOf(value);\n let next: SidebarFilter | undefined;\n if (event.key === 'ArrowRight' || event.key === 'ArrowDown') next = SIDEBAR_FILTERS[(i + 1) % SIDEBAR_FILTERS.length];\n else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp') next = SIDEBAR_FILTERS[(i - 1 + SIDEBAR_FILTERS.length) % SIDEBAR_FILTERS.length];\n else if (event.key === 'Home') next = SIDEBAR_FILTERS[0];\n else if (event.key === 'End') next = SIDEBAR_FILTERS[SIDEBAR_FILTERS.length - 1];\n if (!next) return;\n event.preventDefault();\n onChange(next);\n refs.current.get(next)?.focus();\n }\n return (\n <div className={styles.filters} role=\"radiogroup\" aria-label=\"Show chats\" onKeyDown={onKeyDown}>\n {SIDEBAR_FILTERS.map((f) => {\n const n = counts[f];\n const checked = f === value;\n return (\n <button key={f} ref={(node) => { if (node) refs.current.set(f, node); else refs.current.delete(f); }}\n type=\"button\" role=\"radio\" aria-checked={checked} tabIndex={checked ? 0 : -1} className={styles.filter}\n data-filter={f} onClick={() => onChange(f)}>\n {SIDEBAR_FILTER_LABEL[f]}\n {f !== 'all' && n > 0 ? <span className={styles.filterCount}>{n}</span> : null}\n </button>\n );\n })}\n </div>\n );\n}\n\nfunction EmptyList({ query, filter, hasSessions, newChatHint, onClearQuery, onClearFilter, onNew }: {\n query: string;\n filter: SidebarFilter;\n hasSessions: boolean;\n newChatHint: string | null;\n onClearQuery: () => void;\n onClearFilter: () => void;\n onNew: () => void;\n}) {\n if (query.trim()) {\n return (\n <div className={`${styles.empty} ${styles.emptyCompact}`}>\n <p className={styles.emptyTitle}>No chat titles match “{query}”</p>\n <p>Titles and projects match as you type. Chats whose messages match, if any, are listed below.</p>\n <button type=\"button\" className={styles.emptyAction} onClick={onClearQuery}>Clear search</button>\n </div>\n );\n }\n if (filter !== 'all' && hasSessions) {\n const what = filter === 'running' ? 'No chat is running' : filter === 'needs-you' ? 'Nothing needs you' : 'No pinned chats';\n return (\n <div className={`${styles.empty} ${styles.emptyCompact}`}>\n <p className={styles.emptyTitle}>{what}</p>\n {filter === 'pinned' ? <p>Pin a chat from its row menu — hover it, or right-click.</p> : null}\n <button type=\"button\" className={styles.emptyAction} onClick={onClearFilter}>Show all chats</button>\n </div>\n );\n }\n return (\n <div className={styles.empty}>\n <p className={styles.emptyTitle}>No chats yet</p>\n <p>Start one on any project with any seat.</p>\n {/* Not named \"New chat\": the header already has a control by that name. */}\n <button type=\"button\" className={styles.emptyAction} onClick={onNew}>\n Start your first chat {newChatHint ? <kbd className={styles.emptyKey}>{newChatHint}</kbd> : null}\n </button>\n </div>\n );\n}\n\nfunction GroupView({ group, seats, selectedId, renaming, open, onToggle, onSelect, onMenu, onRenameDone }: {\n group: SidebarGroup;\n seats: readonly VerseSeat[];\n selectedId: string | null;\n renaming: string | null;\n open: boolean;\n onToggle?: () => void;\n onSelect: (id: string) => void;\n onMenu?: (row: SidebarRow, anchor: MenuAnchor, from: HTMLElement) => void;\n onRenameDone: (row: SidebarRow, title: string) => Promise<void>;\n}) {\n const listId = useId();\n return (\n <section className={styles.group} aria-label={group.label} data-group={group.kind}>\n <h2 className={styles.groupTitle} title={group.projectPath ?? undefined}>\n {onToggle ? (\n <button type=\"button\" className={styles.groupToggle} aria-expanded={open} aria-controls={listId} onClick={onToggle}>\n <span className={styles.twist} data-open={open || undefined} aria-hidden=\"true\" />\n <span className={styles.groupName}>{group.label}</span>\n </button>\n ) : <span className={styles.groupName}>{group.label}</span>}\n {group.enrolled ? <span className={styles.enrolled}>enrolled</span> : null}\n <span className={styles.groupCount} aria-hidden=\"true\">{group.rows.length}</span>\n </h2>\n <ul id={listId} className={styles.list} hidden={!open}>\n {open ? group.rows.map((row) => (\n <li key={row.session.id}>\n {renaming === row.session.id ? (\n <RenameRow row={row} onDone={(title) => { void onRenameDone(row, title); }} />\n ) : (\n <SessionRowView row={row} seats={seats} selected={row.session.id === selectedId} onSelect={onSelect} onMenu={onMenu} />\n )}\n </li>\n )) : null}\n </ul>\n </section>\n );\n}\n\nfunction SessionRowView({ row, seats, selected, onSelect, onMenu }: {\n row: SidebarRow;\n seats: readonly VerseSeat[];\n selected: boolean;\n onSelect: (id: string) => void;\n onMenu?: (row: SidebarRow, anchor: MenuAnchor, from: HTMLElement) => void;\n}) {\n const { session, status } = row;\n const seat = seatById(seats, session.seatId);\n const capacity = seat === undefined ? null : seatSubscription(seat);\n // Quiet by default: a marker only where it changes what the operator would\n // do — a turn in flight on a seat whose binding window is spent.\n const spentWhileRunning = status.kind === 'running' && capacity?.cls === 'blocked';\n const tip = [\n session.title || 'Untitled chat',\n seatPillLabel(seats, session),\n capacity === null || capacity.cls === 'ready' || capacity.cls === 'unread' ? null : capacity.summary,\n rowStatusWords(status),\n ].filter((part) => part !== null).join(' · ');\n const rowRef = useRef<HTMLButtonElement>(null);\n\n function onContextMenu(event: ReactMouseEvent<HTMLButtonElement>) {\n if (!onMenu) return;\n event.preventDefault();\n onMenu(row, { x: event.clientX, y: event.clientY }, event.currentTarget);\n }\n function onKeyDown(event: KeyboardEvent<HTMLButtonElement>) {\n if (!onMenu) return;\n if (event.key === 'ContextMenu' || (event.key === 'F10' && event.shiftKey)) {\n event.preventDefault();\n const rect = event.currentTarget.getBoundingClientRect();\n onMenu(row, { x: rect.left + 24, y: rect.bottom }, event.currentTarget);\n }\n }\n\n return (\n <div className={styles.row} data-selected={selected || undefined}>\n <Tooltip label={tip} placement=\"right\">\n <button ref={rowRef} type=\"button\" className={`${styles.session} ${styles[`engine-${session.engine}`] ?? ''}`}\n aria-current={selected ? 'true' : undefined}\n data-focus-key={`verse-session:${session.id}`} data-engine={session.engine} data-status={status.kind}\n aria-haspopup={onMenu ? 'menu' : undefined} aria-keyshortcuts={onMenu ? 'Shift+F10' : undefined}\n onClick={() => onSelect(session.id)} onContextMenu={onContextMenu} onKeyDown={onKeyDown}>\n <span className={styles.marker} aria-hidden=\"true\" />\n <span className={styles.sessionBody}>\n <span className={styles.sessionText}>{session.title || 'Untitled chat'}</span>\n {row.live ? <span className={styles.liveLine} title={row.live.text}>{row.live.text}</span> : null}\n </span>\n {spentWhileRunning && capacity !== null ? (\n <span className={styles.seatSpent} role=\"img\" aria-label={`Seat limit reached: ${capacity.summary}`}>▮</span>\n ) : null}\n <RowStatus row={row} />\n </button>\n </Tooltip>\n {onMenu ? (\n // A pointer affordance only, hidden from assistive tech: the row itself\n // announces its menu (aria-haspopup) and opens it with Shift+F10 or\n // the menu key, so a screen reader hears ONE control per chat.\n <button type=\"button\" className={styles.rowMore} tabIndex={-1} aria-hidden=\"true\" title=\"Chat actions\"\n onClick={(event) => {\n const rect = event.currentTarget.getBoundingClientRect();\n onMenu(row, { x: rect.right - 220, y: rect.bottom + 4 }, rowRef.current ?? event.currentTarget);\n }}>\n <MoreGlyph size={14} />\n </button>\n ) : null}\n </div>\n );\n}\n\nfunction RowStatus({ row }: { row: SidebarRow }) {\n const { status, session } = row;\n // One wording for the glyph's name and the row's tooltip (rowStatusWords).\n const words = rowStatusWords(status) ?? undefined;\n switch (status.kind) {\n case 'running':\n return (\n <span className={styles.statusRunning}>\n <span className={styles.running} role=\"img\" aria-label={words} />\n {status.startedAt ? <LiveTimer className={styles.elapsed} since={status.startedAt} /> : null}\n </span>\n );\n case 'failed':\n return <span className={styles.errored} role=\"img\" aria-label={words}>!</span>;\n case 'unread':\n return <span className={styles.unread} role=\"img\" aria-label={words} />;\n default:\n return <time className={styles.time} dateTime={session.updatedAt}>{formatRelative(session.updatedAt)}</time>;\n }\n}\n\nfunction RenameRow({ row, onDone }: { row: SidebarRow; onDone: (title: string) => void }) {\n const [value, setValue] = useState(row.session.title);\n const input = useRef<HTMLInputElement>(null);\n const done = useRef(false);\n useEffect(() => { input.current?.focus(); input.current?.select(); }, []);\n const finish = (title: string) => {\n if (done.current) return;\n done.current = true;\n onDone(title.trim());\n };\n return (\n <div className={`${styles.row} ${styles.renameRow}`}>\n <input ref={input} className={styles.renameInput} value={value} maxLength={120} aria-label=\"Chat title\"\n onChange={(event) => setValue(event.target.value)}\n onBlur={() => finish(value)}\n onKeyDown={(event) => {\n if (event.key === 'Enter') { event.preventDefault(); finish(value); }\n else if (event.key === 'Escape') { event.preventDefault(); finish(row.session.title); }\n }} />\n </div>\n );\n}\n"],"file":"Sidebar-BuO3sViG.js"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ConfirmDialog-_S9iE-cJ.js","assets/Dialog-BuIaG6HF.js","assets/focus-trap-BGOceFvj.js","assets/Dialog-tQ8kFulD.css","assets/ConfirmDialog-Dx15x0Ho.css","assets/MutationTokenDialog-CLGP72g6.js","assets/global-BlI2BYa1.css","assets/MutationTokenDialog-CrfJ0PdD.css","assets/reveal-anchor-BKk2wZZZ.js","assets/nav-CmZcbPFJ.js","assets/AppsSection-Ct2O605-.js","assets/CapacityStrip-Bx4c3dxD.js","assets/ProviderLogo-8WaUjTlN.js","assets/format-DEAaVF6X.js","assets/format-DKrNjdwD.js","assets/verse-model-CSzzdyu2.js","assets/compaction-point-VL9oegWS.js","assets/Tag-D4k5E3u0.js","assets/budget-queries-DjrPRFwl.js","assets/capacity-strip-model-C7cdQnuK.js","assets/seat-subscription-CLn2ReSZ.js","assets/context-model-2Owp2jYF.js","assets/transient-events-nTLhMBND.js","assets/useSeatsRefresh-BDlbDlIU.js","assets/Button-OjVJSrFq.js","assets/icons-D4s-jlxX.js","assets/use-token-gate-DfEja7Wr.js","assets/slots-DRxNosZg.js","assets/EmptyState-DXkT4vhW.js","assets/Switch-CenChEYf.js","assets/BudgetControl-ng6swoZp.js","assets/Segmented-Wynbg0F5.js","assets/Slider-Bd9YFWEV.js","assets/Select-DMyLCkId.js","assets/Input-u1YR_Ogl.js","assets/Sheet-DhXyIDmq.js","assets/clipboard-DkZdqlxf.js","assets/apps-model-CFGCUu9p.js","assets/Tag-D0rAEciH.css","assets/CapacityStrip-Cc28CyWk.css","assets/Button-DrnKsvnQ.css","assets/EmptyState-B3YUPGaa.css","assets/Switch-CU044EaE.css","assets/Segmented-BnjHbKzH.css","assets/Slider-AgAdMFpo.css","assets/BudgetControl-CmG1JOWK.css","assets/Select-DSu5ghId.css","assets/Input-BQ3PR065.css","assets/Sheet-ChxlNivX.css","assets/AppsSection-D88QlDpG.css","assets/AutonomySection-BTg7yVa1.js","assets/Advanced-CxzE6ekM.js","assets/Epistemic-CfqFe_aP.js","assets/StatusBadge-DQ1UtQAJ.js","assets/RefreshIndicator-DGubF4vR.js","assets/workspace-model-BdIVybKr.js","assets/Meter-BSVhU43Q.js","assets/control-queries-DB6Kh7UN.js","assets/mutations-CbTSofVH.js","assets/use-ticker-DIvAZ4Ey.js","assets/fleet-model-BRfRWkZl.js","assets/fleet-queries-tU6UEXN2.js","assets/overnight-queries-CR0b_j-V.js","assets/use-guarded-action-P12MfNwU.js","assets/Epistemic-OaGnEJkn.css","assets/StatusBadge-BVi0IBb9.css","assets/RefreshIndicator-CVv22U_j.css","assets/Meter-CYt9KpM0.css","assets/Advanced-Bywv_iYR.css","assets/ChatSection-Bisj9R6E.js","assets/verse-store-DNVRuiJL.js","assets/RouteErrorBoundary-DdxhTdZ6.css","assets/ChatSection-C9obUsLL.css","assets/CommandSection-D8ZihzvE.js","assets/Swimlane-DcENqtdp.js","assets/ChartFrame-B_w2Siqg.js","assets/colors-BZ3a9wFf.js","assets/StatTile-DScTd3c-.js","assets/command-catalog-CmrHNFzh.js","assets/types-D5XOdyw8.js","assets/cloud-model-DoxBMDvx.js","assets/cloud-queries-CTGvO-k-.js","assets/cloud.module-DOP-N4Ch.js","assets/surface-data-DshUC_TU.js","assets/AutonomyOffState-CXhXpsim.js","assets/authority-model-CmnfJzmM.js","assets/binding-left-DZpq5sLf.js","assets/actions-DE8NoWV_.js","assets/Surface-DWMtQe3Q.js","assets/CloudBudgetForm-5Gf4iAok.js","assets/why-seat-model-D68ZA7G8.js","assets/LeaderCard-BDELBrnx.js","assets/NeedsYouList-eBOlJr0b.js","assets/live-model-CEf01wrW.js","assets/ChartFrame-BVuBe6RP.css","assets/Swimlane-o6_Zsrnr.css","assets/StatTile-BuLMsJMx.css","assets/cloud-D-HXms6q.css","assets/AutonomyOffState-DmbE71vI.css","assets/actions-BmIf9avl.css","assets/Surface-e1z6GdZt.css","assets/NeedsYouList-CruOt4JT.css","assets/CommandSection-CvAVd1w4.css","assets/FleetSection-B7f-XBiX.js","assets/Funnel-pXYySwXQ.js","assets/FleetSection-CFiWeOEs.css","assets/GrowthSection-D8e9m9Wy.js","assets/queries-rvRsAGW2.js","assets/AreaTrend-o-GLl2Is.js","assets/StepBand-BB3IJxhr.js","assets/calendar-day-BxBYHfX1.js","assets/StepBand-Dz_9Kryb.css","assets/McpSection-D1tDvlRa.js","assets/MindSection-lqV2e_Sq.js","assets/MatrixHeatmap-NKLF2srR.js","assets/mind.module-D_xk6HIQ.js","assets/MatrixHeatmap-Bmnvo1l1.css","assets/mind-B9PzLcl0.css","assets/SettingsSection-Da9RYyH5.js","assets/reasoning-pref-DMPQkujg.js","assets/primitives-DNI-uJBd.js","assets/useOnboarding-CkOHadqC.js","assets/ShortcutsOverlay-Bi5f-wUw.js","assets/ShortcutsOverlay-QSjxmW0a.css","assets/SettingsSection-B8yD34ZM.css","assets/UsageSection-Imr28nwK.js","assets/charts-DUD_jprE.js","assets/context-model-9xywbXxX.js","assets/usage-queries-MnUeYzwp.js","assets/local-model-C9xNi9fN.js","assets/charts-DhKTrQLw.css","assets/UsageSection-DsB-Jqyl.css","assets/guarded-runners-B8zFVBVZ.js","assets/copy-setup-CJQhFl-4.js","assets/CommandPalette-iTpk6I8r.js","assets/verse-icons-wOet9JZy.js","assets/CommandPalette-B5Q4hGMK.css","assets/NeedsYouDrawer-D992XTOn.js","assets/DiffViewer-B75t6Ile.js","assets/highlight-CMCZK9jW.js","assets/DiffViewer-C8HHTnVE.css","assets/NeedsYouDrawer-BpvidnM2.css","assets/GearTray-gj6lT7ba.js","assets/GearTray-DQbH_yZZ.css","assets/OnboardingGate-DrDEVBqw.js","assets/RailStatus-Ckw9nvYU.js","assets/RailStatus-C3sN_ghP.css","assets/warmup-CecO_Nk0.js","assets/ResourcesChrome-C2ZrA7la.js","assets/ResourcesChrome-uZEqC2EM.css","assets/SessionGate-8RtQFWeZ.js","assets/SessionGate-DvMpXNpJ.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{a as e,c as t,i as n,n as r,s as i,t as a}from"./index-BG177cPN.js";import{E as o,H as s,K as c,O as l,P as u,V as d,W as f,a as ee,b as te,c as p,d as m,g as h,i as g,k as _,l as ne,n as v,o as y,s as b,t as x,x as re}from"./global-CXHHMz9o.js";import{n as ie,r as ae,t as oe}from"./RouteErrorBoundary-BvhHNpE_.js";var S=t(e(),1),se={global:{"surface.command":`mod+1`,"surface.fleet":`mod+2`,"surface.growth":`mod+3`,"surface.mind":`mod+4`,"surface.chat":`mod+5`,"section.settings":`mod+,`,"palette.open":`mod+k`,"needs-you.open":`mod+j`,"shortcuts.open":`mod+/`,"resources.toggle":`mod+.`,"history.back":`mod+[`,"history.forward":`mod+]`,"chat.recent-next":`ctrl+tab`,"chat.recent-prev":`ctrl+shift+tab`,"rail.toggle-labels":`mod+shift+\\`,"chat.new":`mod+n`,"appearance.toggle-theme":`mod+shift+l`,"app.summon":`ctrl+alt+space`},chat:{"chat.sidebar":`mod+b`,"chat.find":`mod+f`,"chat.turn-prev":`alt+arrowup`,"chat.turn-next":`alt+arrowdown`,"dock.toggle":`mod+\\`,"dock.terminal":"ctrl+`","dock.terminal-new":"ctrl+shift+`","dock.preview":`mod+shift+b`,"dock.diff":`mod+shift+d`,"composer.permission":`mod+shift+m`,"composer.model":`mod+shift+i`,"composer.effort":`mod+shift+e`,"composer.attach":`mod+u`},composer:{"composer.send":`enter`,"composer.stop-and-send":`mod+shift+enter`,"composer.stop":`escape`},drawer:{"drawer.next":`j`,"drawer.prev":`k`,"drawer.open":`enter`,"drawer.approve":`a`,"drawer.reject":`r`,"drawer.veto":`v`,"drawer.done":`e`,"drawer.split-prev":`h`,"drawer.split-next":`l`},chart:{"chart.table":`t`}},ce={"section.settings":{kind:`menu`,desktopCommand:`open-settings`,accelerator:`CmdOrCtrl+,`},"appearance.toggle-theme":{kind:`menu`,desktopCommand:`toggle-theme`,accelerator:`Shift+CmdOrCtrl+L`},"app.summon":{kind:`global-hotkey`,accelerator:`Control+Alt+Space`}};function le(e){let t=e.split(`+`),n={key:t.pop()};for(let e of t)n[e]=!0;return n}var ue=Object.entries(se).flatMap(([e,t])=>Object.entries(t).map(([t,n])=>{let r=ce[t];return{id:t,scope:e,keys:[le(n)],...r?{native:r}:{}}})),de=Object.fromEntries(ue.map(e=>[e.id,e])),fe=new Map(ue.map(e=>[e.id,e]));function pe(e){return fe.get(e)??null}function me(e){return fe.get(e)?.keys[0]}var he=`ashlr:command`,ge={"open-settings":`section.settings`,"toggle-theme":`appearance.toggle-theme`,"open-needs-you":`needs-you.open`,"new-chat":`chat.new`,"focus-composer":`app.summon`},_e=/^open-session:([A-Za-z0-9._-]{1,128})$/;function ve(e){if(typeof e!=`string`)return null;if(Object.prototype.hasOwnProperty.call(ge,e)){let t=e;return{kind:`command`,name:t,commandId:ge[t]}}let t=_e.exec(e);return t?{kind:`open-session`,sessionId:t[1]}:null}var ye=null;function be(e){ye=e}function xe(e){return ye?ye(e):null}function Se(){return ye!==null}function Ce(){if(typeof navigator>`u`)return`mac`;let e=navigator,t=e.userAgentData?.platform??e.platform??``;return/mac|iphone|ipad|ipod/i.test(t)?`mac`:`other`}var we={Backslash:`\\`,Backquote:"`",BracketLeft:`[`,BracketRight:`]`,Slash:`/`,Comma:`,`,Period:`.`,Semicolon:`;`,Quote:`'`,Minus:`-`,Equal:`=`,Space:`space`},Te={" ":`space`,spacebar:`space`,esc:`escape`,return:`enter`,up:`arrowup`,down:`arrowdown`,left:`arrowleft`,right:`arrowright`};function Ee(e){let t=e.key??``;if(/^[a-z]$/i.test(t))return t.toLowerCase();let n=e.code??``;if(/^Digit[0-9]$/.test(n))return n.slice(5);if(we[n])return we[n];if(/^Key[A-Z]$/.test(n))return n.slice(3).toLowerCase();let r=t.toLowerCase();return Te[r]??r}function De(e,t,n=Ce()){if(n===`mac`){if(!!t.mod!==e.metaKey||!!t.ctrl!==e.ctrlKey)return!1}else if(e.metaKey||!!(t.mod||t.ctrl)!==e.ctrlKey)return!1;return!!t.shift!==e.shiftKey||!!t.alt!==e.altKey?!1:Ee(e)===t.key}function Oe(e,t,n=Ce()){for(let r of t)for(let t of ue)if(t.scope===r&&t.native?.kind!==`global-hotkey`&&t.keys.some(t=>De(e,t,n)))return t;return null}var ke={enter:`↩`,escape:`Esc`,tab:`⇥`,space:`Space`,arrowup:`↑`,arrowdown:`↓`,arrowleft:`←`,arrowright:`→`,backspace:`⌫`},Ae={enter:`Enter`,escape:`Esc`,tab:`Tab`,space:`Space`,arrowup:`↑`,arrowdown:`↓`,arrowleft:`←`,arrowright:`→`,backspace:`Backspace`};function je(e,t=Ce()){let n=e.key.length===1?e.key.toUpperCase():(t===`mac`?ke:Ae)[e.key]??e.key;return t===`mac`?`${e.ctrl?`⌃`:``}${e.alt?`⌥`:``}${e.shift?`⇧`:``}${e.mod?`⌘`:``}${n}`:[e.mod||e.ctrl?`Ctrl`:``,e.alt?`Alt`:``,e.shift?`Shift`:``,n].filter(Boolean).join(`+`)}var Me=`ashlr:desktop-command`;function Ne(){try{return document.documentElement.getAttribute(`data-app-shell`)===`desktop`}catch{return!1}}function Pe(e){if(e===`light`||e===`dark`)return e;try{return window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}catch{return`light`}}function Fe(){return window.__ASHLR_DESKTOP__}function Ie(e){try{Fe()?.reportTheme?.(Pe(e))}catch{}}function Le(e){function t(t){let n=ve(t.detail?.command);n&&e(n)}return window.addEventListener(Me,t),()=>window.removeEventListener(Me,t)}var Re=`ashlr:desktop-state`;function ze(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Be(e){if(!ze(e)||!ze(e.hotkey)||!ze(e.notifications))return!1;let t=e.hotkey,n=e.notifications;return typeof t.enabled==`boolean`&&typeof t.registered==`boolean`&&typeof t.accelerator==`string`&&t.accelerator.length>0&&t.accelerator.length<=32&&(t.error===null||typeof t.error==`string`&&t.error.length<=300)&&typeof n.enabled==`boolean`&&(n.delivery===`native`||n.delivery===`script`)}var Ve,He=!1,Ue=new Set;function We(){try{let e=Fe()?.getState?.();return Be(e)?e:null}catch{return null}}function Ge(e){let t=e.detail;if(Be(t)){Ve=t;for(let e of[...Ue])e(t)}}function Ke(){He||(He=!0,window.addEventListener(Re,Ge))}function qe(){return Ke(),Ve??=We(),Ve}function Je(e){return Ke(),Ue.add(e),()=>{Ue.delete(e)}}function Ye(e,t){if(e!==`globalHotkey`&&e!==`notifications`||typeof t!=`boolean`)return!1;try{return Fe()?.setPreference?.(e,t)===!0}catch{return!1}}function Xe(e){return Je(()=>e())}function Ze(){return(0,S.useSyncExternalStore)(Xe,qe,()=>null)}var Qe=t(n(),1),$e={wrapper:`_wrapper_6cgsw_4`,bubble:`_bubble_6cgsw_12`,"tooltip-in":`_tooltip-in_6cgsw_1`,label:`_label_6cgsw_44`,shortcut:`_shortcut_6cgsw_49`},C=r(),et=160,tt=8,w=8;function nt(e){let t={top:`bottom`,bottom:`top`,left:`right`,right:`left`},n=[`top`,`bottom`,`right`,`left`].filter(n=>n!==e&&n!==t[e]);return[e,t[e],...n]}function rt(e,t,n,r){switch(e){case`top`:return{left:t.left+t.width/2-n/2,top:t.top-r-tt};case`bottom`:return{left:t.left+t.width/2-n/2,top:t.bottom+tt};case`left`:return{left:t.left-n-tt,top:t.top+t.height/2-r/2};case`right`:return{left:t.right+tt,top:t.top+t.height/2-r/2}}}function it(e,t,n,r){let i=window.innerWidth||0,a=window.innerHeight||0,o=null;for(let s of nt(r)){let{left:r,top:c}=rt(s,e,t,n);if(o||={left:r,top:c,placement:s},r>=w&&c>=w&&r+t<=i-w&&c+n<=a-w)return{left:r,top:c,placement:s}}let s=o;return{placement:s.placement,left:Math.max(w,Math.min(s.left,i-t-w)),top:Math.max(w,Math.min(s.top,a-n-w))}}function T(e){let{label:t,content:n,shortcut:r,placement:i=`top`,disabled:a=!1,className:o,children:s}=e,[c,l]=(0,S.useState)(!1),[u,d]=(0,S.useState)(null),f=(0,S.useId)(),ee=(0,S.useRef)(null),te=(0,S.useRef)(null),p=(0,S.useRef)(null),m=(0,S.useCallback)(()=>{p.current!==null&&(clearTimeout(p.current),p.current=null)},[]),h=(0,S.useCallback)(()=>{m(),l(!1),d(null)},[m]);(0,S.useEffect)(()=>m,[m]);let g=(0,S.useCallback)(()=>{let e=ee.current,t=te.current;if(!e||!t)return;let n=e.getBoundingClientRect();d(it(n,t.offsetWidth,t.offsetHeight,i))},[i]);(0,S.useLayoutEffect)(()=>{c&&g()},[c,g]),(0,S.useEffect)(()=>{if(!c)return;function e(e){e.key===`Escape`&&h()}return document.addEventListener(`keydown`,e),window.addEventListener(`resize`,g),window.addEventListener(`scroll`,g,!0),()=>{document.removeEventListener(`keydown`,e),window.removeEventListener(`resize`,g),window.removeEventListener(`scroll`,g,!0)}},[c,h,g]);let _=t??n;if(a||_==null||_===``)return s;function ne(e){ee.current=e,m(),p.current=setTimeout(()=>{p.current=null,l(!0)},et)}function v(e){ee.current=e,m(),l(!0)}let y=s.props.disabled===!0,b=c?f:void 0,x=(0,S.cloneElement)(s,{"aria-describedby":b,onMouseEnter:e=>{s.props.onMouseEnter?.(e),ne(e.currentTarget)},onMouseLeave:e=>{s.props.onMouseLeave?.(e),h()},onFocus:e=>{s.props.onFocus?.(e),v(e.currentTarget)},onBlur:e=>{s.props.onBlur?.(e),h()}});return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`span`,{className:`${$e.wrapper} ${o??``}`,"aria-describedby":b,"data-disabled-trigger":y?`true`:void 0,onMouseOver:y?e=>v(e.currentTarget):void 0,onMouseOut:y?h:void 0,children:x}),c?(0,Qe.createPortal)((0,C.jsxs)(`div`,{ref:te,role:`tooltip`,id:f,className:$e.bubble,"data-placement":u?.placement??i,style:{position:`fixed`,left:u?`${u.left}px`:`0px`,top:u?`${u.top}px`:`0px`,visibility:u?`visible`:`hidden`},children:[(0,C.jsx)(`span`,{className:$e.label,children:_}),r?(0,C.jsx)(`kbd`,{className:$e.shortcut,children:r}):null]}),document.body):null]})}var at=[`command`,`fleet`,`growth`,`mind`,`chat`],ot=[`settings`,`apps`,`usage`],st=[...at,...ot];function ct(e){return typeof e==`string`&&st.includes(e)}var lt={chat:{section:`chat`,openNeedsYou:!1},autonomy:{section:`fleet`,openNeedsYou:!1},approvals:{section:`command`,openNeedsYou:!0},usage:{section:`usage`,openNeedsYou:!1},settings:{section:`settings`,openNeedsYou:!1},mcp:{section:`apps`,openNeedsYou:!1}};function ut(e){return typeof e==`string`?Object.prototype.hasOwnProperty.call(lt,e)?lt[e]:ct(e)?{section:e,openNeedsYou:!1}:null:null}var dt={claude:`C`,codex:`X`,grok:`G`,local:`L`},ft=[`approvals`,`fleet`,`chats`,`accounts`],pt={approval:`approvals`,"owner-lane-pr":`approvals`,"class-c":`approvals`,"veto-window":`fleet`,"leader-question":`fleet`,"owner-hold":`fleet`,quarantine:`fleet`,revert:`fleet`,grant:`fleet`,kill:`fleet`,"chat-failed":`chats`,"queue-held":`chats`,reconnect:`accounts`,repin:`accounts`},mt={approve:`A`,reject:`R`,veto:`V`,done:`E`};function ht(e){return typeof e==`string`&&e.length<=512&&e.startsWith(`/api/`)&&!e.startsWith(`//`)&&!e.includes(`..`)&&!/[\s\\]/.test(e)}var gt=`/api/verse/activity`,_t=`/api/verse/activity/seen`,vt=`/api/verse/session-meta`,yt=`/api/verse/session-controls`,bt=`/api/verse/session-controls/defaults`,xt=`/api/verse/attachments`,St=`/api/verse/queue`,Ct=`/api/verse/files`,wt=8388608,Tt=`/api/verse/terminal`,Et=16384,Dt=`/api/verse/preview/targets`,Ot=`/api/verse/preview/raw`;function kt(e){let t;try{t=new URL(e)}catch{return!1}return t.protocol===`http:`&&(t.hostname===`127.0.0.1`||t.hostname===`localhost`)&&t.username===``&&t.password===``}var At=`/api/verse/apps`,jt=`ashlr.verse.resources.v1`;function Mt(){try{let e=JSON.parse(localStorage.getItem(`ashlr.verse.resources.v1`)??`null`),t=e?.pinned===!0;return{pinned:t,open:t&&e?.open===!0,bar:e?.bar!==!1,summary:null}}catch{return{open:!1,pinned:!1,bar:!0,summary:null}}}var E=Mt(),Nt=new Set;function Pt(e){let t={...E,...e};if(t.open===E.open&&t.pinned===E.pinned&&t.bar===E.bar&&t.summary===E.summary)return;let n=t.open!==E.open||t.pinned!==E.pinned||t.bar!==E.bar;if(E=t,n)try{localStorage.setItem(jt,JSON.stringify({open:t.open,pinned:t.pinned,bar:t.bar}))}catch{}for(let e of[...Nt])e()}function Ft(){return E}function It(){Pt({open:!0})}function Lt(){Pt({open:!1})}function Rt(e){Pt({pinned:e})}function zt(e){Pt({bar:e})}function Bt(e){(e===null||E.summary===null||e.tone!==E.summary.tone||e.spoken!==E.summary.spoken)&&Pt({summary:e})}function Vt(e){return Nt.add(e),()=>Nt.delete(e)}function Ht(){return(0,S.useSyncExternalStore)(Vt,Ft,Ft)}function Ut(e){let t=null,n=null,r=()=>(n??=e().then(e=>t=e,e=>{throw n=null,e}),n),i=(0,S.lazy)(()=>r().then(e=>({default:e})));function a(e){let[n]=(0,S.useState)(()=>t);return n?(0,C.jsx)(n,{...e}):(0,C.jsx)(i,{...e})}return typeof window<`u`&&r().catch(()=>void 0),{Slot:a,ready:r}}function Wt(e){let t=null,n=null,r=()=>(n??=e().then(e=>t=e,e=>{throw n=null,e}),n);function i(){let[e,n]=(0,S.useState)(()=>({current:t}));return(0,S.useEffect)(()=>{if(e.current)return;let t=!0;return r().then(e=>{t&&n({current:e})},()=>void 0),()=>{t=!1}},[e]),e.current}return typeof window<`u`&&r().catch(()=>void 0),{ready:r,useLoaded:i}}var Gt=Ut(()=>a(()=>import(`./ConfirmDialog-_S9iE-cJ.js`).then(e=>e.n).then(e=>e.ConfirmDialog),__vite__mapDeps([0,1,2,3,4]))).Slot,Kt=Ut(()=>a(()=>import(`./MutationTokenDialog-CLGP72g6.js`).then(e=>e.n).then(e=>e.MutationTokenDialog),__vite__mapDeps([5,1,2,6,3,7]))).Slot,D={request:null,phase:`confirm`,error:null},O=D,qt=new Set;function k(e){O=e;for(let e of[...qt])e()}function Jt(e){return O.request?!1:e.skipConfirm?(e.token&&!l()?k({request:e,phase:`token`,error:null}):Zt(e),!0):(k({request:e,phase:`confirm`,error:null}),!0)}function Yt(){return O.request!==null}function Xt(e){return e instanceof b?"This server was started without dispatch, so actions are unavailable. Run `ashlr verse` to act.":e instanceof y?e.status===401?"The mutation token was rejected. Unlock again with the token `ashlr verse` printed.":e.status===409?e.detail??`Something changed underneath this action. Refresh and try again.`:e.detail??`The server refused (HTTP ${e.status}).`:e instanceof Error&&e.message?e.message:`Something went wrong.`}async function Zt(e){k({request:e,phase:`running`,error:null});try{await e.run(),k(D),e.onDone?.()}catch(t){let n=Xt(t);k(e.skipConfirm?D:{request:e,phase:`confirm`,error:n}),e.onError?.(n)}}function Qt(){let{request:e}=O;if(e&&O.phase!==`running`){if(e.token&&!l()){k({request:e,phase:`token`,error:null});return}Zt(e)}}function $t(){O.phase!==`running`&&k(D)}function en(){let{request:e}=O;e&&(l()?Zt(e):k(D))}function tn(e){return qt.add(e),()=>qt.delete(e)}function nn(){return(0,S.useSyncExternalStore)(tn,()=>O,()=>O)}function rn(){let{request:e,phase:t,error:n}=nn();return e?(0,C.jsxs)(S.Suspense,{fallback:null,children:[(0,C.jsx)(Gt,{open:t!==`token`&&!e.skipConfirm,onClose:$t,title:e.title,body:e.body,confirmLabel:n?`Try again`:e.confirmLabel,destructive:e.destructive,busy:t===`running`,error:n,onConfirm:Qt}),(0,C.jsx)(Kt,{open:t===`token`,onClose:en,reason:e.tokenReason??`This action changes state on this machine and requires the dispatch token.`,tokenHelp:`the mutation token ashlr verse printed`})]}):null}var an=null,on=null;function sn(){return on??=a(()=>import(`./reveal-anchor-BKk2wZZZ.js`).then(e=>an=e,e=>{throw on=null,e}),__vite__mapDeps([8,9])),on}typeof window<`u`&&sn().catch(()=>void 0);function cn(e){if(an){an.revealAnchor(e);return}sn().then(t=>t.revealAnchor(e),()=>void 0)}function ln(e){if(typeof window>`u`)return()=>{};function t(e){let t=e.detail;if(typeof t!=`object`||!t)return;let{section:n,anchor:r}=t;typeof n!=`string`||typeof r!=`string`||r.length===0||r.length>200||cn({section:n,anchor:r})}return window.addEventListener(e,t),()=>window.removeEventListener(e,t)}var A=Object.freeze({compact:480,wide:1024}),un=Object.freeze({compact:`(max-width: ${A.compact-.02}px)`,wide:`(min-width: ${A.wide}px)`});function dn(e){return e<A.compact?`compact`:e<A.wide?`medium`:`wide`}function fn(){return typeof window>`u`?`wide`:typeof window.matchMedia==`function`?window.matchMedia(un.compact).matches?`compact`:window.matchMedia(un.wide).matches?`wide`:`medium`:dn(window.innerWidth||A.wide)}function pn(e){if(typeof window>`u`)return()=>{};if(typeof window.matchMedia!=`function`)return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e);let t=[window.matchMedia(un.compact),window.matchMedia(un.wide)];for(let n of t)n.addEventListener(`change`,e);return()=>{for(let n of t)n.removeEventListener(`change`,e)}}function mn(){let e=(0,S.useSyncExternalStore)(pn,fn,()=>`wide`);return(0,S.useMemo)(()=>({viewport:e,compact:e===`compact`,wide:e===`wide`}),[e])}var hn=[{id:`terminal`,label:`Terminal`,owner:`C4`,commandId:`dock.terminal`,slot:`terminal-pane`},{id:`preview`,label:`Preview`,owner:`C4`,commandId:`dock.preview`,slot:`preview-pane`},{id:`diff`,label:`Review`,owner:`C5`,commandId:`dock.diff`,slot:`diff-pane`},{id:`tasks`,label:`Tasks`,owner:`C2`,commandId:null,slot:null},{id:`context`,label:`Context`,owner:`C2`,commandId:null,slot:null}],gn=hn.map(e=>e.id);function _n(e){return typeof e==`string`&&gn.includes(e)}var j=Object.freeze({minWidth:320,maxWidthFraction:.6,defaultWidth:440,sheetBelow:A.wide,bottomSheetBelow:A.compact,bottomSheetHeightVh:75,splitRatio:Object.freeze({min:.2,max:.8,default:.5})});function vn(e){return e<j.bottomSheetBelow?`bottom-sheet`:e<j.sheetBelow?`sheet`:`column`}function yn(e,t){let n=typeof e==`number`&&Number.isFinite(e)?Math.round(e):j.defaultWidth,r=Math.max(j.minWidth,Math.floor(t*j.maxWidthFraction));return Math.min(r,Math.max(j.minWidth,n))}var bn=`ashlr.verse.ui.v2`,xn=`ashlr.verse.ui.v3`,Sn=Object.freeze({open:!1,width:j.defaultWidth,tabs:[],active:null,splitWith:null,splitRatio:j.splitRatio.default});function Cn(e){if(typeof e!=`object`||!e||Array.isArray(e))return{...Sn,tabs:[]};let t=e,n=[];if(Array.isArray(t.tabs))for(let e of t.tabs)_n(e)&&!n.includes(e)&&n.push(e);let r=_n(t.active)&&n.includes(t.active)?t.active:n[0]??null,i=_n(t.splitWith)&&n.includes(t.splitWith)&&t.splitWith!==r?t.splitWith:null,a=typeof t.width==`number`&&Number.isFinite(t.width)&&t.width>=j.minWidth?Math.round(t.width):j.defaultWidth,o=typeof t.splitRatio==`number`&&Number.isFinite(t.splitRatio)?t.splitRatio:j.splitRatio.default;return{open:t.open===!0&&n.length>0,width:a,tabs:n,active:r,splitWith:i,splitRatio:Math.min(j.splitRatio.max,Math.max(j.splitRatio.min,o))}}var wn={terminal:null,preview:null,diff:null},Tn=null,M=0,En=new Set;function Dn(){try{let e=localStorage.getItem(xn);if(!e)return Cn(null);let t=JSON.parse(e);return Cn(t&&typeof t==`object`?t.dock:null)}catch{return Cn(null)}}function N(){return Tn===null&&(Tn={state:Dn(),requests:wn}),Tn}function On(e){Tn=e;for(let e of[...En])e()}function P(e){On({...N(),state:e})}function kn(e){return En.add(e),()=>En.delete(e)}function An(){return N()}function jn(){return N().state}function Mn(e,t){let n=e.tabs.includes(t)?e.tabs:[...e.tabs,t],r=e.splitWith===t?e.active===t?null:e.active:e.splitWith;return{...e,open:!0,tabs:n,active:t,splitWith:r===t?null:r}}function Nn(e,t){return e.open&&(e.active===t||e.splitWith===t)?{...e,open:!1}:Mn(e,t)}function Pn(e,t){let n=e.tabs.filter(e=>e!==t),r=e.splitWith===t?null:e.splitWith,i=e.active;if(i===t){let a=e.tabs.indexOf(t);i=r??n[Math.min(a,n.length-1)]??null}return{...e,tabs:n,active:i,splitWith:r===i?null:r,open:n.length>0&&e.open}}function Fn(e,t){if(t===null)return{...e,splitWith:null};if(e.active===null||t===e.active)return e;let n=e.tabs.includes(t)?e.tabs:[...e.tabs,t];return{...e,open:!0,tabs:n,splitWith:t}}function In(e,t){return Number.isFinite(t)?{...e,width:Math.max(j.minWidth,Math.round(t))}:e}function Ln(e,t){if(!Number.isFinite(t))return e;let{min:n,max:r}=j.splitRatio;return{...e,splitRatio:Math.min(r,Math.max(n,t))}}function Rn(e){P(Mn(N().state,e))}function zn(e){P(Nn(N().state,e))}function Bn(){let e=N().state;e.open?P({...e,open:!1}):e.tabs.length===0?P(Mn(e,`tasks`)):P({...e,open:!0,active:e.active??e.tabs[0]})}function Vn(){let e=N().state;e.open&&P({...e,open:!1})}function Hn(e){P(Pn(N().state,e))}function Un(e){P(Fn(N().state,e))}function Wn(e){P(In(N().state,e))}function Gn(e){P(Ln(N().state,e))}function Kn(e){M+=1;let t=N();On({state:Mn(t.state,`terminal`),requests:{...t.requests,terminal:{...e,nonce:M}}})}function qn(e){let t=N(),n=t.state.open?t.state.active:null;if(n===null||n===`terminal`){Kn(e);return}M+=1,On({state:Fn(t.state,`terminal`),requests:{...t.requests,terminal:{...e,nonce:M}}})}function Jn(e){M+=1;let t=N();On({state:Mn(t.state,`diff`),requests:{...t.requests,diff:{...e,nonce:M}}})}function Yn(){let e=N();e.requests!==wn&&On({...e,requests:wn})}function Xn(){return(0,S.useSyncExternalStore)(kn,An,An)}Object.freeze({entries:Object.freeze([]),index:-1});function Zn(e,t){return!!e&&e.section===t.section&&(e.section!==`chat`||e.sessionId===t.sessionId)}function Qn(e,t){let n={section:t.section,sessionId:t.section===`chat`?t.sessionId:null},r=e.entries[e.index];if(Zn(r,n))return e;if(r&&r.section===`chat`&&r.sessionId===null&&n.section===`chat`){let t=[...e.entries.slice(0,e.index),n];return{entries:t,index:t.length-1}}let i=[...e.entries.slice(0,e.index+1),n].slice(-50);return{entries:i,index:i.length-1}}function $n(e,t){let n=e.index+t,r=e.entries[n];return r?{history:{entries:e.entries,index:n},entry:r}:null}var er=1500;function tr(e,t,n,r,i=er){let a=!t||r-t.at>i,o=a?e:t.order;if(o.length<2)return null;let s=((a?0:t.position)+n+o.length)%o.length;return{sessionId:o[s],cycle:{order:o,position:s,at:r}}}function nr(e,t,n=10){return[t,...e.filter(e=>e!==t)].slice(0,n)}var rr=Object.fromEntries(Object.entries(Object.assign({"../sections/AppsSection.tsx":()=>a(()=>import(`./AppsSection-Ct2O605-.js`),__vite__mapDeps([10,1,2,5,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,6,3,7,38,39,40,41,42,43,44,45,46,47,48,49])),"../sections/AutonomySection.tsx":()=>a(()=>import(`./AutonomySection-BTg7yVa1.js`),__vite__mapDeps([50,51,52,53,5,1,2,0,54,15,16,31,13,14,55,56,33,25,57,58,59,60,61,62,63,6,64,65,3,7,4,66,43,67,46,68])),"../sections/ChatSection.tsx":()=>a(()=>import(`./ChatSection-Bisj9R6E.js`).then(e=>e.t),__vite__mapDeps([69,70,16,22,6,71,72])),"../sections/CommandSection.tsx":()=>a(()=>import(`./CommandSection-D8ZihzvE.js`),__vite__mapDeps([73,2,1,53,54,74,75,76,14,12,77,15,16,31,13,18,19,20,21,22,24,25,78,56,29,30,5,17,26,32,79,80,81,82,59,63,57,58,9,83,34,35,84,36,85,86,87,88,89,90,91,92,93,6,3,65,66,94,95,96,43,40,67,42,7,38,44,45,97,47,48,98,99,100,101,102])),"../sections/FleetSection.tsx":()=>a(()=>import(`./FleetSection-B7f-XBiX.js`),__vite__mapDeps([103,54,74,75,76,14,12,104,13,15,16,17,18,24,25,80,21,22,79,81,82,59,62,57,58,9,83,84,36,87,1,2,5,63,88,90,93,6,66,94,95,38,40,97,98,3,7,99,100,105])),"../sections/GrowthSection.tsx":()=>a(()=>import(`./GrowthSection-D8e9m9Wy.js`),__vite__mapDeps([106,107,54,76,14,108,75,12,104,109,110,59,83,57,58,84,13,15,16,24,25,9,36,88,6,66,94,111,40,98,100])),"../sections/McpSection.tsx":()=>a(()=>import(`./McpSection-D1tDvlRa.js`),__vite__mapDeps([112,10,1,2,5,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,6,3,7,38,39,40,41,42,43,44,45,46,47,48,49])),"../sections/MindSection.tsx":()=>a(()=>import(`./MindSection-lqV2e_Sq.js`),__vite__mapDeps([113,54,108,75,76,14,12,114,13,15,16,9,83,57,58,115,110,55,84,24,25,36,87,1,2,5,63,88,91,59,6,66,94,116,117,40,98,3,7,99,100])),"../sections/SettingsSection.tsx":()=>a(()=>import(`./SettingsSection-Da9RYyH5.js`),__vite__mapDeps([118,1,2,53,5,31,17,21,15,16,22,13,14,24,25,78,119,26,56,32,29,33,34,120,52,54,28,35,121,122,6,3,65,7,71,43,38,40,67,44,42,46,47,64,66,41,48,123,124])),"../sections/UsageSection.tsx":()=>a(()=>import(`./UsageSection-Imr28nwK.js`),__vite__mapDeps([125,52,53,107,75,76,14,12,126,74,77,108,104,109,114,110,15,16,13,127,17,11,18,19,20,21,22,23,25,56,79,80,81,82,59,60,83,57,58,128,129,87,1,2,5,24,63,88,89,29,34,90,6,64,65,94,95,96,111,116,130,38,39,67,97,3,7,40,99,100,42,47,131]))})).map(([e,t])=>[e.replace(/^\.\.\//,`./`),t]));function ir(e,t=rr){return t[`./sections/${e}.tsx`]}var F=[{id:`command`,label:`Command`,module:`CommandSection`,placement:`rail`,blurb:`What the fleet did, what needs you, and the autonomy switch — the morning read.`},{id:`fleet`,label:`Fleet`,module:`FleetSection`,fallbackModules:[`AutonomySection`],placement:`rail`,blurb:`Every lane live: what is building, what the gates refused, and why each seat was chosen.`},{id:`growth`,label:`Growth`,module:`GrowthSection`,placement:`rail`,blurb:`Is the fleet getting better? Merges, cost per merge and the experiments behind them.`},{id:`mind`,label:`Mind`,module:`MindSection`,placement:`rail`,blurb:`The Leader's memos, what came of each move, and what the reasoning shows.`},{id:`chat`,label:`Chat`,module:`ChatSection`,placement:`rail`,blurb:`Talk to a seat. Chats are grouped by project and resume where they stopped.`},{id:`settings`,label:`Settings`,module:`SettingsSection`,placement:`tray`,blurb:`Theme, chat, desktop and keyboard — and this tour again.`},{id:`apps`,label:`Apps & Accounts`,module:`AppsSection`,placement:`tray`,blurb:`Seats, terminal agents, local models and MCP servers in one list.`},{id:`usage`,label:`Usage`,module:`UsageSection`,placement:`tray`,blurb:`Which account you can actually use right now, and what it costs.`}],ar=F.filter(e=>e.placement===`rail`);F.filter(e=>e.placement===`tray`);var or=new Set(F.map(e=>e.id));function sr(e){return F.find(t=>t.id===e)}function cr(e,t=e=>ir(e)!==void 0){let n=sr(e);for(let e of[n.module,...n.fallbackModules??[]])if(t(e))return e;return null}var lr=[`all`,...ft],ur={min:240,max:360,def:264},dr={min:260,max:480,def:320},fr={section:`chat`,railExpanded:!1,sidebarWidth:ur.def,sidebarCollapsed:!1,resourcesOpen:!0,resourcesWidth:dr.def,recentActions:[],recentChats:[],mounted:[`chat`],overlay:null,needsYouSplit:`all`,needsYouFocus:null,history:{entries:[{section:`chat`,sessionId:null}],index:0},activeSessionId:null,command:null,announceChatMoved:!1};function pr(e,t){let n=Number(e);return!Number.isFinite(n)||n<=0?t.def:Math.max(t.min,Math.min(t.max,Math.round(n)))}function mr(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())}`}function hr(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function gr(e,t,n){if(!Array.isArray(e))return[];let r=[];for(let i of e)if(typeof i==`string`&&n.test(i)&&!r.includes(i)&&r.push(i),r.length>=t)break;return r}function _r(e){try{let t=localStorage.getItem(e);if(!t)return null;let n=JSON.parse(t);return hr(n)?n:null}catch{return null}}var vr=null,yr=!1;function br(e={}){let t=e.now??Date.now(),n=e.landed??(e=>ir(e)!==void 0),r=_r(xn),i=r?null:_r(bn),a=r??i??{},o=fr.section,s=null,c=ut(a.section);c&&or.has(c.section)&&(o=c.section,c.openNeedsYou&&!r&&(s=`needs-you`)),vr=r&&typeof r.lastLaunchDay==`string`?r.lastLaunchDay:null,yr=r?r.chatMovedAnnounced===!0:!1;let l=mr(t);return vr!==l&&cr(`command`,n)!==null&&(o=`command`),vr=l,{...fr,section:o,railExpanded:a.railExpanded===!0,sidebarWidth:pr(a.sidebarWidth,ur),sidebarCollapsed:a.sidebarCollapsed===!0,resourcesOpen:a.resourcesOpen!==!1,resourcesWidth:pr(a.resourcesWidth,dr),recentActions:gr(a.recentActions,5,/^[a-z][a-z0-9.-]{0,63}$/),recentChats:gr(a.recentChats,10,/^[\w.-]{1,200}$/),mounted:[o],overlay:s,history:{entries:[{section:o,sessionId:null}],index:0},announceChatMoved:i!==null&&!yr}}var I=fr,xr=0,Sr=null,Cr=new Set;function wr(e){let t={version:3,section:e.section,railExpanded:e.railExpanded,sidebarWidth:e.sidebarWidth,sidebarCollapsed:e.sidebarCollapsed,resourcesOpen:e.resourcesOpen,resourcesWidth:e.resourcesWidth,recentActions:[...e.recentActions],recentChats:[...e.recentChats],lastLaunchDay:vr,chatMovedAnnounced:yr,dock:jn()};try{localStorage.setItem(xn,JSON.stringify(t))}catch{}}var Tr=[`section`,`railExpanded`,`sidebarWidth`,`sidebarCollapsed`,`resourcesOpen`,`resourcesWidth`,`recentActions`,`recentChats`];function L(e){let t={...I,...e};if(Object.keys(e).every(e=>Object.is(I[e],t[e])))return;let n=Tr.some(e=>!Object.is(I[e],t[e]));I=t,n&&wr(t);for(let e of[...Cr])e()}function Er(){I=br(),wr(I)}Er();var Dr=``;kn(()=>{let e=``;try{e=JSON.stringify(jn())}catch{e=``}e!==Dr&&(Dr=e,wr(I))});function Or(e){return Cr.add(e),()=>Cr.delete(e)}function R(){return I}function kr(e,t){let n=t===`chat`||e.includes(`chat`),r=e.filter(e=>e!==`chat`&&e!==t),i=(t===`chat`?r:[t,...r]).slice(0,3),a=t===`chat`?[`chat`,...i]:i;return n&&!a.includes(`chat`)&&a.push(`chat`),a}function Ar(e,t){if(!or.has(e))return;let n=t.history?Qn(I.history,{section:e,sessionId:e===`chat`?I.activeSessionId:null}):I.history;L({section:e,mounted:kr(I.mounted,e),history:n})}var jr=`ashlr:verse-anchor`;function z(e,t=null){if(Ar(e,{history:!0}),!t||typeof window>`u`)return;let n={section:e,anchor:t};window.dispatchEvent(new CustomEvent(jr,{detail:n}))}function Mr(e){let t=$n(I.history,e);if(!t)return!1;L({history:t.history}),Ar(t.entry.section,{history:!1});let n=t.entry.sessionId;return t.entry.section===`chat`&&n&&n!==I.activeSessionId&&(Ir(`open-session`,{sessionId:n},!1),L({activeSessionId:n,recentChats:nr(I.recentChats,n)})),!0}function Nr(e){e!==I.activeSessionId&&L({activeSessionId:e,recentChats:e?nr(I.recentChats,e):I.recentChats,history:e&&I.section===`chat`?Qn(I.history,{section:`chat`,sessionId:e}):I.history})}function Pr(e,t=Date.now()){let n=tr(I.activeSessionId?nr(I.recentChats,I.activeSessionId):[...I.recentChats],Sr,e,t);return n?(Sr=n.cycle,Rr(n.sessionId),n.sessionId):null}var Fr=`ashlr.verse.selected.v1`;function Ir(e,t,n){xr+=1;let r={name:e,nonce:xr,...t};n&&I.section!==`chat`&&Ar(`chat`,{history:!0}),L({command:r})}function Lr(e,t={}){Ir(e,t,!0)}function Rr(e){if(/^[\w.-]{1,200}$/.test(e)){if(!I.mounted.includes(`chat`))try{localStorage.setItem(Fr,e)}catch{}Ir(`open-session`,{sessionId:e},!0),Nr(e)}}function zr(){L({command:null})}function Br(e){L({overlay:e})}function Vr(){L({overlay:null,needsYouFocus:null})}function Hr(e){L({overlay:I.overlay===e?null:e,needsYouFocus:null})}function Ur(e={}){L({overlay:`needs-you`,needsYouSplit:e.split??I.needsYouSplit,needsYouFocus:e.focusId??null})}function Wr(e){lr.includes(e)&&L({needsYouSplit:e})}function Gr(){L({railExpanded:!I.railExpanded})}function Kr(e){L({sidebarCollapsed:e})}function qr(e){/^[a-z][a-z0-9.-]{0,63}$/.test(e)&&L({recentActions:[e,...I.recentActions.filter(t=>t!==e)].slice(0,5)})}function Jr(){yr=!0,I.announceChatMoved&&L({announceChatMoved:!1}),wr(I)}var Yr=`ashlr.verse.seats.v1`,Xr=50,Zr=null;function Qr(){if(Zr)return Zr;let e={};try{let t=localStorage.getItem(Yr),n=t?JSON.parse(t):null;if(n&&typeof n==`object`&&!Array.isArray(n))for(let[t,r]of Object.entries(n)){if(!r||typeof r!=`object`||Array.isArray(r))continue;let{seatId:n,model:i}=r;typeof n==`string`&&n.length!==0&&typeof i==`string`&&i.length!==0&&(e[t]={seatId:n,model:i})}}catch{}return Zr=e,e}function $r(e){let t=Qr();if(e){let n=t[e];if(n)return n}let n=Object.keys(t),r=n[n.length-1];return r?t[r]??null:null}function ei(e,t){if(!e||!t.seatId||!t.model)return;let n=Qr();delete n[e],n[e]={seatId:t.seatId,model:t.model};let r=Object.keys(n);for(let e of r.slice(0,Math.max(0,r.length-Xr)))delete n[e];try{localStorage.setItem(Yr,JSON.stringify(n))}catch{}}var B=new Map,ti=50;function ni(e,t){if(!e||!t)return;let n=B.get(e)??new Set;n.add(t),B.delete(e),B.set(e,n);for(let e of[...B.keys()].slice(0,Math.max(0,B.size-ti)))B.delete(e)}function ri(e,t){return B.get(e)?.has(t)??!1}var ii=[`composer.permission`,`composer.model`,`composer.effort`,`composer.attach`,`composer.cloud`,`composer.send`,`composer.stop-and-send`,`composer.stop`];function ai(e,t){let n=pe(t);return n!==null&&n.keys.some(t=>De(e,t))}function oi(e){let t=me(e);return t?je(t):``}var si=new Map,V=null,ci=4e3;function li(e){if(!V||V.id!==e)return;if(Date.now()>V.until){V=null;return}let{invocation:t}=V;V=null,queueMicrotask(()=>{U(e,t)})}function H(e,t){let n=si.get(e)??[];return n.push(t),si.set(e,n),li(e),()=>{let n=si.get(e);if(!n)return;let r=n.lastIndexOf(t);r>=0&&n.splice(r,1),n.length===0&&si.delete(e)}}function U(e,t={}){let n=si.get(e);if(!n)return!1;for(let r of[...n].reverse())try{if(r(t)!==!1)return!0}catch(t){return console.error(`[verse] command ${e} failed`,t),!0}return!1}function ui(e,t={},n=ci){return U(e,t)?!0:(V={id:e,invocation:t,until:Date.now()+n},!1)}function di(e,t,n=!0){let r=(0,S.useRef)(t);r.current=t,(0,S.useEffect)(()=>{if(n)return H(e,e=>r.current(e))},[e,n])}var fi=()=>{};function pi(e){fi=e??(()=>{})}function mi(e,t){fi(e,t)}var hi=new Set([`chats.stop-all`,`fleet.stop`]);function gi(){return document.querySelector(`[data-surface="chat"] textarea[aria-label="Message"]`)!==null}function _i(e){window.dispatchEvent(new CustomEvent(he,{detail:{id:e}}))}function vi(e,t=ci){if(typeof document>`u`)return;if(R().section!==`chat`&&z(`chat`),gi()){_i(e);return}let n=!1,r=t=>{n||(n=!0,i.disconnect(),window.clearTimeout(a),t&&window.setTimeout(()=>_i(e),50))},i=new MutationObserver(()=>{gi()&&r(!0)});i.observe(document.body,{childList:!0,subtree:!0});let a=window.setTimeout(()=>r(!1),t)}var yi=new Set(ii);function bi(e,t={}){let n=xe(e),r=n??pe(e);if(!r)return!Se()&&(a(()=>import(`./command-catalog-CmrHNFzh.js`).then(e=>e.i).then(()=>{xe(e)&&bi(e,t)},e=>console.error(`[verse] command catalog failed to load`,e)),__vite__mapDeps([78])),!0);if(n&&n.group!==null&&t.via===`palette`&&qr(n.id),n?.guard){if(!hi.has(n.id))return U(e,t);let r=n.id,{confirm:i,token:o}=n.guard;return Jt({title:i.title,body:i.body,confirmLabel:i.confirmLabel,destructive:i.destructive,token:o,tokenReason:`${n.title.replace(/…$/,``)} requires the dispatch token.`,run:()=>a(()=>import(`./guarded-runners-B8zFVBVZ.js`).then(e=>e.runGuardedShellCommand(r)),__vite__mapDeps([132,6]))}),!0}if(n?.surface)return R().section!==n.surface&&z(n.surface),ui(e,t),!0;if(yi.has(r.id))return U(e,t)||vi(e),!0;if(r.scope===`chat`||r.scope===`composer`)return U(e,t)?!0:(R().section!==`chat`&&z(`chat`),ui(e,t),!0);if(U(e,t))return!0;let i=e=>fi(`${e} isn't available here yet.`,`neutral`);return n?i(n.title):a(()=>import(`./command-catalog-CmrHNFzh.js`).then(e=>e.i).then(t=>i(t.findCommand(e)?.title??e),()=>i(e)),__vite__mapDeps([78])),!1}function xi(){let e=[...[[`surface.command`,`command`],[`surface.fleet`,`fleet`],[`surface.growth`,`growth`],[`surface.mind`,`mind`],[`surface.chat`,`chat`],[`section.settings`,`settings`],[`section.apps`,`apps`],[`section.usage`,`usage`]].map(([e,t])=>H(e,()=>z(t))),H(`palette.open`,()=>Hr(`palette`)),H(`needs-you.open`,e=>{e.via!==`menu`&&R().overlay===`needs-you`?Vr():Ur()}),H(`shortcuts.open`,()=>Hr(`shortcuts`)),H(`history.back`,()=>{Mr(-1)}),H(`history.forward`,()=>{Mr(1)}),H(`chat.recent-next`,()=>{Pr(1)}),H(`chat.recent-prev`,()=>{Pr(-1)}),H(`rail.toggle-labels`,()=>Gr()),H(`chat.new`,()=>Lr(`new-chat`)),H(`chat.new-on`,e=>{let t=e.argument?.kind===`seat`?e.argument.id:void 0;Lr(`new-chat`,t?{seatId:t}:{})}),H(`appearance.toggle-theme`,()=>te()),H(`app.summon`,()=>Lr(`focus-composer`)),H(`autonomy.copy-setup`,()=>{a(()=>import(`./copy-setup-CJQhFl-4.js`).then(e=>e.copyAutonomySetupCommand()),__vite__mapDeps([133,78,36]))})];return()=>e.forEach(e=>e())}function Si(){let e=ae();(0,S.useEffect)(()=>(pi(e.show),()=>pi(null)),[e.show]),(0,S.useEffect)(()=>xi(),[])}var Ci=(0,S.createContext)(!0);function wi({visible:e,children:t}){let n=(0,S.useContext)(Ci);return(0,C.jsx)(Ci.Provider,{value:n&&e,children:t})}function Ti(){return(0,S.useContext)(Ci)}function Ei(){return typeof document>`u`||document.visibilityState!==`hidden`}function Di(e){return typeof document>`u`?()=>{}:(document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e))}function Oi(){return(0,S.useSyncExternalStore)(Di,Ei,()=>!0)}var ki=2e3;function Ai(e,t,n={}){let r=Ti(),i=Oi(),a=r&&i,o=(n.enabled??!0)&&a,s=n.refreshOnShow??!0,c=Math.max(ki,Number.isFinite(t)?t:ki),l=(0,S.useRef)(e);l.current=e;let u=(0,S.useRef)(null);(0,S.useEffect)(()=>{let e=u.current;if(u.current=a,!o)return;e===!1&&s&&l.current();let t=setInterval(()=>l.current(),c);return()=>clearInterval(t)},[o,a,c,s])}var W={frame:`_frame_hm6ck_1`,strip:`_strip_hm6ck_9`,chat:`_chat_hm6ck_18`,chatList:`_chatList_hm6ck_19`,chatBody:`_chatBody_hm6ck_20`,grid:`_grid_hm6ck_22`,wide:`_wide_hm6ck_29`,kpi:`_kpi_hm6ck_30`,half:`_half_hm6ck_31`,column:`_column_hm6ck_33`,missing:`_missing_hm6ck_35`,missingTitle:`_missingTitle_hm6ck_42`,missingBody:`_missingBody_hm6ck_49`},ji=new Set([`command`,`fleet`,`growth`,`mind`]);function Mi({section:e,label:t}){return(0,C.jsxs)(`div`,{className:W.frame,role:`status`,"aria-label":`Loading ${t}`,"data-skeleton":e,children:[(0,C.jsx)(`div`,{className:W.strip,children:(0,C.jsx)(g,{width:`140px`})}),e===`chat`?(0,C.jsxs)(`div`,{className:W.chat,children:[(0,C.jsx)(`div`,{className:W.chatList,children:Array.from({length:8},(e,t)=>(0,C.jsx)(g,{width:`${70+t*13%25}%`},t))}),(0,C.jsxs)(`div`,{className:W.chatBody,children:[(0,C.jsx)(g,{width:`42%`}),(0,C.jsx)(g,{width:`88%`}),(0,C.jsx)(g,{width:`76%`}),(0,C.jsx)(g,{width:`64%`})]})]}):ji.has(e)?(0,C.jsxs)(`div`,{className:W.grid,children:[(0,C.jsx)(`div`,{className:W.wide,children:(0,C.jsx)(g,{width:`60%`})}),Array.from({length:5},(e,t)=>(0,C.jsx)(`div`,{className:W.kpi,children:(0,C.jsx)(v,{})},t)),(0,C.jsx)(`div`,{className:W.half,children:(0,C.jsx)(v,{})}),(0,C.jsx)(`div`,{className:W.half,children:(0,C.jsx)(v,{})})]}):(0,C.jsx)(`div`,{className:W.column,children:Array.from({length:6},(e,t)=>(0,C.jsx)(ee,{},t))})]})}function Ni({label:e,blurb:t}){return(0,C.jsxs)(`div`,{className:W.missing,role:`status`,children:[(0,C.jsxs)(`h1`,{className:W.missingTitle,children:[e,` isn't in this build yet`]}),(0,C.jsx)(`p`,{className:W.missingBody,children:t}),(0,C.jsx)(`p`,{className:W.missingBody,children:`It appears here as soon as it ships. Everything else in Verse works normally.`})]})}var Pi=5e3,Fi=3e4,Ii=(e,t)=>p(e,t),G={status:`idle`,data:null,updatedAt:null},K=null,q=null,Li=null,J=0,Ri=new Set,zi=new Set;function Bi(e){G=e;for(let e of[...Ri])e()}function Vi(){return typeof document<`u`&&document.visibilityState===`hidden`}function Hi(){if(q&&clearTimeout(q),q=null,J===0)return;let e=Math.max(ki,Vi()?Fi:Pi);q=setTimeout(()=>{Ui()},e)}function Ui(){if(Li)return Li;G.status===`idle`&&Bi({...G,status:`loading`});let e=K?`${gt}?since=${encodeURIComponent(K)}`:gt;return Li=(async()=>{try{let t=await Ii(e),n=K===null;if(K=typeof t.cursor==`string`?t.cursor:null,Bi({status:`ready`,data:t,updatedAt:Date.now()}),!n&&Array.isArray(t.completions)&&t.completions.length>0)for(let e of[...zi])try{e(t.completions)}catch{}}catch(e){e instanceof y&&e.status===404?Bi({status:`unavailable`,data:null,updatedAt:G.updatedAt}):e instanceof y&&e.status===400&&K?(K=null,Bi({...G,status:G.data?`stale`:`loading`})):Bi({...G,status:G.data?`stale`:`unavailable`})}finally{Li=null,Hi()}})(),Li}function Wi(){!Vi()&&J>0?Ui():Hi()}function Gi(){J+=1,J===1&&(typeof document<`u`&&document.addEventListener(`visibilitychange`,Wi),Ui())}function Ki(){J=Math.max(0,J-1),!(J>0)&&(q&&clearTimeout(q),q=null,typeof document<`u`&&document.removeEventListener(`visibilitychange`,Wi))}function qi(e){return Ri.add(e),Gi(),()=>{Ri.delete(e),Ki()}}function Ji(){return G}function Yi(){return(0,S.useSyncExternalStore)(qi,Ji,Ji)}function Xi(e){return zi.add(e),()=>zi.delete(e)}function Zi(){return(0,S.useSyncExternalStore)(Or,R,R)}function Qi({size:e=16,title:t,children:n,...r}){return(0,C.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 16 16`,fill:`none`,stroke:`currentColor`,strokeWidth:1.5,strokeLinecap:`round`,strokeLinejoin:`round`,focusable:`false`,...t?{role:`img`}:{"aria-hidden":!0},...r,children:[t?(0,C.jsx)(`title`,{children:t}):null,n]})}var $i=e=>(0,C.jsx)(Qi,{...e,children:(0,C.jsx)(`path`,{d:`M2.5 11.5V4.25A1.75 1.75 0 0 1 4.25 2.5h7.5a1.75 1.75 0 0 1 1.75 1.75v4.5a1.75 1.75 0 0 1-1.75 1.75H5.5L2.5 13.5v-2Z`})}),ea=e=>(0,C.jsxs)(Qi,{...e,children:[(0,C.jsx)(`path`,{d:`M2 9.5 3.6 3.4A1.5 1.5 0 0 1 5.05 2.3h5.9a1.5 1.5 0 0 1 1.45 1.1L14 9.5`}),(0,C.jsx)(`path`,{d:`M2 9.5h3l.8 1.6h4.4l.8-1.6h3v2.6A1.9 1.9 0 0 1 12.1 14H3.9A1.9 1.9 0 0 1 2 12.1V9.5Z`})]}),ta=$i;function Y({size:e=16,children:t,...n}){return(0,C.jsx)(`svg`,{viewBox:`0 0 16 16`,width:e,height:e,fill:`none`,stroke:`currentColor`,strokeWidth:1.5,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,focusable:`false`,...n,children:t})}function na(e){let{size:t=20,...n}=e;return(0,C.jsxs)(`svg`,{viewBox:`54 67 146 124`,width:t,height:t,"aria-hidden":`true`,focusable:`false`,...n,children:[(0,C.jsx)(`path`,{fill:`currentColor`,d:`M106 76H123V115H100L113 154L99 179H72L59 156Z M130 76H147L194 156L181 179H154L140 154L153 115H130Z`}),(0,C.jsx)(`path`,{fill:`#2563EB`,d:`M110 121H143L133 152H120Z`})]})}function ra(e){return(0,C.jsxs)(Y,{...e,children:[(0,C.jsx)(`rect`,{x:`2.5`,y:`2.5`,width:`5`,height:`6`,rx:`1`}),(0,C.jsx)(`rect`,{x:`8.5`,y:`2.5`,width:`5`,height:`3.5`,rx:`1`}),(0,C.jsx)(`rect`,{x:`8.5`,y:`7.5`,width:`5`,height:`6`,rx:`1`}),(0,C.jsx)(`rect`,{x:`2.5`,y:`10`,width:`5`,height:`3.5`,rx:`1`})]})}function ia(e){return(0,C.jsxs)(Y,{...e,children:[(0,C.jsx)(`path`,{d:`M2.5 4.5h5M2.5 8h9M2.5 11.5h3.5`}),(0,C.jsx)(`circle`,{cx:`10`,cy:`4.5`,r:`1.3`}),(0,C.jsx)(`circle`,{cx:`13.2`,cy:`8`,r:`1.3`}),(0,C.jsx)(`circle`,{cx:`8.5`,cy:`11.5`,r:`1.3`})]})}function aa(e){return(0,C.jsxs)(Y,{...e,children:[(0,C.jsx)(`path`,{d:`M2.5 12.5 6.5 8.5l2.5 2.5 4.5-5`}),(0,C.jsx)(`path`,{d:`M10.5 6h3v3`})]})}function oa(e){return(0,C.jsxs)(Y,{...e,children:[(0,C.jsx)(`path`,{d:`M8 2.5a4 4 0 0 0-2.4 7.2c.3.25.4.6.4 1v.8h4v-.8c0-.4.1-.75.4-1A4 4 0 0 0 8 2.5Z`}),(0,C.jsx)(`path`,{d:`M6.5 13.5h3`})]})}function sa(e){return(0,C.jsxs)(Y,{...e,children:[(0,C.jsx)(`circle`,{cx:`8`,cy:`8`,r:`2.1`}),(0,C.jsx)(`path`,{d:`M8 1.8v1.7M8 12.5v1.7M14.2 8h-1.7M3.5 8H1.8M12.4 3.6l-1.2 1.2M4.8 11.2l-1.2 1.2M12.4 12.4l-1.2-1.2M4.8 4.8 3.6 3.6`}),(0,C.jsx)(`circle`,{cx:`8`,cy:`8`,r:`4.4`})]})}var ca=ea,la={command:ra,fleet:ia,growth:aa,mind:oa,chat:ta},X={shell:`_shell_k3usr_6`,rail:`_rail_k3usr_51`,railDragStrip:`_railDragStrip_k3usr_85`,mark:`_mark_k3usr_94`,railList:`_railList_k3usr_104`,railFoot:`_railFoot_k3usr_113`,railButton:`_railButton_k3usr_128`,railIcon:`_railIcon_k3usr_154`,railLabel:`_railLabel_k3usr_164`,railKey:`_railKey_k3usr_178`,section:`_section_k3usr_229`,surface:`_surface_k3usr_242`};function ua(e){if(typeof e!=`number`||!Number.isFinite(e))return`—`;let t=Math.max(0,Math.min(100,e));return t>0&&t<1?`<1%`:t>99&&t<100?`99%`:`${Math.round(t)}%`}function da({label:e,blurb:t}){return(0,C.jsx)(Ni,{label:e,blurb:t??``})}function fa(e){let t=sr(e);return async()=>{let n=cr(e),r=n?ir(n):void 0;if(!n||!r)return{default:()=>(0,C.jsx)(da,{label:t.label,blurb:t.blurb})};try{let e=await r(),t=e[n]??e.default;if(typeof t==`function`)return{default:t};console.error(`[verse] ${n} exports no ${n} component`)}catch(e){console.error(`[verse] ${t.label} failed to load`,e)}return{default:()=>(0,C.jsx)(da,{label:t.label,blurb:t.blurb})}}}var pa=new Map,ma=new Map;function ha(e){let t=pa.get(e);return t||(t=fa(e)().then(t=>(ma.set(e,t.default),t)),pa.set(e,t)),t}var ga=new Map(F.map(e=>[e.id,(0,S.lazy)(()=>ha(e.id))])),_a=()=>a(()=>import(`./CommandPalette-iTpk6I8r.js`),__vite__mapDeps([134,2,12,135,25,78,6,136])),va=()=>a(()=>import(`./NeedsYouDrawer-D992XTOn.js`),__vite__mapDeps([137,2,52,53,107,58,5,1,0,54,138,139,13,14,15,16,24,25,135,78,92,6,64,65,3,7,4,71,66,140,40,101,141])),ya=()=>a(()=>import(`./ShortcutsOverlay-Bi5f-wUw.js`).then(e=>e.t),__vite__mapDeps([122,1,2,78,3,123])),ba=()=>a(()=>import(`./GearTray-gj6lT7ba.js`),__vite__mapDeps([142,25,135,78,6,143])),xa=()=>a(()=>import(`./OnboardingGate-DrDEVBqw.js`),__vite__mapDeps([144,121])),Sa=()=>a(()=>import(`./RailStatus-Ckw9nvYU.js`),__vite__mapDeps([145,11,12,13,14,15,16,17,18,19,20,21,22,23,6,38,39,146])),Ca=()=>a(()=>import(`./warmup-CecO_Nk0.js`),__vite__mapDeps([147])),wa=()=>a(()=>import(`./ResourcesChrome-C2ZrA7la.js`).then(e=>e.t),__vite__mapDeps([148,12,15,16,11,13,14,17,18,19,20,21,22,23,78,79,86,129,6,38,39,149])),Ta=(0,S.lazy)(()=>_a().then(e=>({default:e.CommandPalette}))),Ea=(0,S.lazy)(()=>va().then(e=>({default:e.NeedsYouDrawer}))),Da=(0,S.lazy)(()=>ya().then(e=>({default:e.ShortcutsOverlay}))),Oa=(0,S.lazy)(()=>ba().then(e=>({default:e.GearTray}))),ka=(0,S.lazy)(()=>xa().then(e=>({default:e.OnboardingGate}))),Aa=(0,S.lazy)(()=>wa().then(e=>({default:e.ResourcesChrome}))),ja=(0,S.lazy)(()=>wa().then(e=>({default:e.ResourcesRailButton}))),Ma=(0,S.lazy)(()=>wa().then(e=>({default:e.ResourcesBar})));function Na(e){let t=()=>{let e=f();return e.active+e.queued>0},n=!0,r=null;return Ca().then(i=>{n&&(r=i.warmUpAfterFirstPaint({loadSection:ha,overlays:[_a,va,ya,()=>wa().then(e=>e.preloadResourcesDrawer())],readsInFlight:t},e))},()=>void 0),()=>{n=!1,r?.()}}var Pa=null;function Fa(){let[e,t]=(0,S.useState)(Pa);return(0,S.useEffect)(()=>{if(e)return;let n=!0;return Sa().then(e=>{Pa=e,n&&t(e)},e=>console.error(`[verse] rail status failed to load`,e)),()=>{n=!1}},[e]),e}function Ia(){return[...document.querySelectorAll(`[aria-modal="true"]`)].some(e=>!e.hasAttribute(`data-verse-overlay`)&&!e.querySelector(`[data-verse-overlay]`))}var La=3;function Ra(){let e=Zi(),t=h(),n=ae(),r=Yi(),{compact:i}=mn(),a=(0,S.useMemo)(()=>Ce(),[]),s=(0,S.useRef)(null),[c,l]=(0,S.useState)(!1),u=r.data,d=Fa(),f=Ht();(0,S.useEffect)(()=>Na(),[]);let[ee,te]=(0,S.useState)(!1);(0,S.useEffect)(()=>{let e=!0;return ba().then(()=>{e&&te(!0)},e=>console.error(`[verse] settings tray failed to load`,e)),()=>{e=!1}},[]),Si(),(0,S.useEffect)(()=>{function e(e){if(e.defaultPrevented||R().overlay===`palette`||Ia())return;let t=Oe(e,[`global`]);t&&(e.preventDefault(),bi(t.id,{via:`key`}))}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[]),(0,S.useEffect)(()=>Le(e=>{if(e.kind===`open-session`){Vr(),Rr(e.sessionId);return}(e.name===`new-chat`||e.name===`focus-composer`)&&Vr(),bi(e.commandId,{via:`menu`})}),[]),(0,S.useEffect)(()=>ln(jr),[]),(0,S.useEffect)(()=>{Ie(t.theme)},[t.theme]),(0,S.useEffect)(()=>{if(!e.announceChatMoved)return;let t=me(`surface.chat`);n.show(`Chat moved to ${t?je(t,a):`⌘5`} — Command, Fleet, Growth and Mind come first now.`),Jr()},[e.announceChatMoved,n,a]),(0,S.useEffect)(()=>Xi(e=>{if(typeof document<`u`&&document.visibilityState===`hidden`)return;let t=R(),r=e.filter(e=>t.section!==`chat`||t.activeSessionId!==e.sessionId),i=r.filter(e=>e.outcome===`failed`);for(let e of i.slice(0,La))n.show(`Failed: ${e.title}`,`danger`);let a=r.filter(e=>e.outcome===`ok`);if(a.length>La)n.show(`${a.length} chats finished.`,`success`);else for(let e of a)n.show(`Finished: ${e.title}`,`success`)}),[n]);let[p,m]=(0,S.useState)(null),g=u?.mind?.latestMemoAt??null;(0,S.useEffect)(()=>{if(e.section!==`mind`||!u?.mind?.unseen||!g)return;m(g);let t=o();t&&ne(_t,{surface:`mind`},t).catch(()=>void 0)},[e.section,u?.mind?.unseen,g]);let _=e.railExpanded&&!i,v=u?u.counts.needsYou:null,y=sr(e.section),b=y.placement===`tray`?y:null,x=d?.RailBadgeMark??null,re=e=>{let t=me(e);return t?je(t,a):void 0};return(0,C.jsxs)(`div`,{className:X.shell,"data-rail":_?`expanded`:`collapsed`,"data-compact":i||void 0,"data-resources":f.open&&f.pinned&&!i?`docked`:void 0,children:[(0,C.jsxs)(`nav`,{className:X.rail,"data-rail":_?`expanded`:`collapsed`,"aria-label":`Verse sections`,children:[(0,C.jsx)(`span`,{className:X.railDragStrip,"data-app-region":`drag`,"aria-hidden":`true`}),(0,C.jsx)(T,{label:`Ashlr Verse`,placement:`right`,disabled:_,children:(0,C.jsxs)(`span`,{className:X.mark,children:[(0,C.jsx)(na,{}),(0,C.jsx)(`span`,{className:`visually-hidden`,children:`Ashlr Verse`})]})}),(0,C.jsx)(`ul`,{className:X.railList,children:ar.map(t=>{let n=la[t.id],r=t.id===`mind`&&g!==null&&p===g||!d?null:d.railBadgeFor(t.id,u),a=e.section===t.id,o=re(`surface.${t.id}`);return(0,C.jsx)(`li`,{children:(0,C.jsx)(T,{label:t.label,shortcut:o,placement:`right`,disabled:_||i,children:(0,C.jsxs)(`button`,{type:`button`,className:X.railButton,"aria-current":a?`page`:void 0,"data-section":t.id,"aria-label":`${t.label}${r?.spoken??``}`,onClick:()=>z(t.id),children:[(0,C.jsxs)(`span`,{className:X.railIcon,children:[n?(0,C.jsx)(n,{}):null,r&&x?(0,C.jsx)(x,{badge:r}):null]}),_||i?(0,C.jsx)(`span`,{className:X.railLabel,children:t.label}):null,_&&o?(0,C.jsx)(`span`,{className:X.railKey,"aria-hidden":`true`,children:o}):null]})})},t.id)})}),(0,C.jsxs)(`div`,{className:X.railFoot,children:[(0,C.jsx)(T,{label:`Needs you`,shortcut:re(`needs-you.open`),placement:`right`,disabled:_||i,children:(0,C.jsxs)(`button`,{type:`button`,className:X.railButton,"aria-label":v===null?`Needs you`:`Needs you, ${v}`,"aria-expanded":e.overlay===`needs-you`,"data-needs-you":v??void 0,onClick:()=>bi(`needs-you.open`,{via:`button`}),children:[(0,C.jsxs)(`span`,{className:X.railIcon,children:[(0,C.jsx)(ca,{}),v&&x?(0,C.jsx)(x,{badge:{kind:`count`,count:v,spoken:``,tone:`warning`}}):null]}),_||i?(0,C.jsx)(`span`,{className:X.railLabel,children:i?`Inbox`:`Needs you`}):null]})}),i?null:(0,C.jsx)(S.Suspense,{fallback:null,children:(0,C.jsx)(ja,{expanded:_,buttonClass:X.railButton,iconClass:X.railIcon,labelClass:X.railLabel})}),i?null:f.bar?(0,C.jsx)(S.Suspense,{fallback:null,children:(0,C.jsx)(Ma,{expanded:_})}):d?(0,C.jsx)(za,{rail:d,expanded:_}):null,(0,C.jsx)(T,{label:`Settings and more`,placement:`right`,disabled:_||i||c,children:(0,C.jsxs)(`button`,{ref:s,type:`button`,className:X.railButton,"aria-label":b?`Settings and more (${b.label} open)`:`Settings and more`,"aria-haspopup":`menu`,"aria-expanded":c,"aria-current":b?`page`:void 0,"data-gear":!0,"data-active":b?!0:void 0,onClick:()=>l(e=>!e),children:[(0,C.jsx)(`span`,{className:X.railIcon,children:(0,C.jsx)(sa,{})}),_||i?(0,C.jsx)(`span`,{className:X.railLabel,children:i?`More`:`Settings`}):null]})})]})]}),(0,C.jsx)(`main`,{className:X.section,"data-section":e.section,id:`main-content`,tabIndex:-1,children:e.mounted.map(t=>(0,C.jsx)(Ba,{id:t,active:t===e.section},t))}),(0,C.jsx)(S.Suspense,{fallback:null,children:ee||c?(0,C.jsx)(Oa,{open:c,anchorRef:s,onClose:()=>l(!1),compact:i}):null}),(0,C.jsx)(S.Suspense,{fallback:null,children:(0,C.jsx)(Aa,{compact:i})}),(0,C.jsxs)(S.Suspense,{fallback:null,children:[e.overlay===`palette`?(0,C.jsx)(Ta,{}):null,e.overlay===`needs-you`?(0,C.jsx)(Ea,{}):null,e.overlay===`shortcuts`?(0,C.jsx)(Da,{}):null]}),(0,C.jsx)(rn,{}),(0,C.jsx)(S.Suspense,{fallback:null,children:(0,C.jsx)(ka,{})})]})}function za({rail:e,expanded:t}){let n=e.useRailCapacity();if(!n)return null;let{CapacityRing:r,describeRailCapacity:i}=e;return(0,C.jsx)(T,{label:i(n),placement:`right`,disabled:t,children:(0,C.jsxs)(`button`,{type:`button`,className:X.railButton,"aria-label":`Capacity — ${i(n)}`,"data-capacity":Math.round(n.usedPercent),onClick:()=>z(`apps`,`seat:${n.seatId}`),children:[(0,C.jsx)(`span`,{className:X.railIcon,children:(0,C.jsx)(r,{badge:n})}),t?(0,C.jsxs)(`span`,{className:X.railLabel,children:[n.label,` `,n.limitReached?`limit`:ua(n.usedPercent)]}):null]})})}function Ba({id:e,active:t}){let[n]=(0,S.useState)(()=>ma.get(e)??ga.get(e)),r=sr(e);return(0,C.jsx)(`div`,{className:X.surface,"data-surface":e,hidden:!t,inert:!t,children:(0,C.jsx)(wi,{visible:t,children:(0,C.jsx)(oe,{resetKey:e,children:(0,C.jsx)(S.Suspense,{fallback:(0,C.jsx)(Mi,{section:e,label:r.label}),children:(0,C.jsx)(n,{})})})})})}var Va=`verse-bootstrap`,Z=`verse-sessions`,Ha={key:Va,fetch:e=>p(`/api/verse/bootstrap`,e)},Ua={key:Z,fetch:e=>p(`/api/verse/sessions`,e)};function Q(e,t=``){return`/api/verse/sessions/${encodeURIComponent(e)}${t}`}function Wa(e,t){return p(Q(e),t)}var Ga=class extends Error{constructor(){super(`Unlock actions with the mutation token before chatting.`),this.name=`VerseMutationLockedError`}};async function $(e,t){let n=o();if(!n)throw new Ga;let r=await ne(e,t,n);return u(),r}function Ka(){s(Z),s(Va)}async function qa(e){let t=await $(`/api/verse/sessions`,e);return Ka(),t}async function Ja(e,t){let n={text:t},r=await $(Q(e,`/turns`),n);return s(Z),r}async function Ya(e){await $(Q(e,`/cancel`),{}),s(Z)}async function Xa(e){await $(Q(e,`/delete`),{}),Ka()}async function Za(e,t){let n=await $(Q(e,`/rename`),{title:t});return s(Z),n}var Qa=`verse-workspaces`,$a=`verse-autonomy-scope`,eo={key:Qa,fetch:e=>p(`/api/verse/workspaces`,e)},to={key:$a,fetch:e=>p(`/api/verse/autonomy-scope`,e)};function no(e,t){return p(Q(e,`/roots`),t)}function ro(){s(Qa),s($a),s(Va)}async function io(e){let t=await $(`/api/verse/workspaces`,e);return ro(),t}async function ao(e,t){let n=await $(`/api/verse/workspaces/${encodeURIComponent(e)}/update`,t);return ro(),n}async function oo(e){await $(`/api/verse/workspaces/${encodeURIComponent(e)}/delete`,{}),ro()}async function so(e,t){await $(`/api/verse/workspaces/priority`,{path:e,priority:t}),ro()}async function co(e){await $(`/api/verse/workspaces/focus`,{sectionId:e}),ro()}var lo=`verse-activity`,uo=`verse-session-meta`;async function fo(e,t){try{return await p(e,t)}catch(e){if(e instanceof y&&e.status===404)return null;throw e}}var po={key:lo,fetch:e=>fo(gt,e)},mo={key:uo,fetch:e=>fo(vt,e)};async function ho(e,t){let n={};typeof t.pinned==`boolean`&&(n.pinned=t.pinned),typeof t.archived==`boolean`&&(n.archived=t.archived);let r=await $(`${vt}/${encodeURIComponent(e)}`,n);return s(uo),r}async function go(e,t){let n=o();if(!n)return!1;let r={sessionId:e,turnCount:t};try{return await ne(_t,r,n),!0}catch{return!1}}var _o=`/next/assets/AshlrSans-latin-DVBgX9ac.woff2`,vo=`/next/assets/SpaceGrotesk-latin-C6WxOMZt.woff2`,yo={shell:`_shell_k4nf7_1`,checking:`_checking_k4nf7_2`},bo=i({SIDECAR_RESTARTED_EVENT:()=>Eo,VerseConsoleApp:()=>Oo,listenForSidecarRestart:()=>Do,preloadVerseFirstPaint:()=>So,preloadVerseFonts:()=>xo});function xo(e,t){if(e?.head)for(let n of t?[_o,vo]:[_o]){if([...e.head.querySelectorAll(`link[rel="preload"]`)].some(e=>e.getAttribute(`href`)===n))continue;let t=e.createElement(`link`);t.rel=`preload`,t.as=`font`,t.type=`font/woff2`,t.crossOrigin=`anonymous`,t.href=n,e.head.append(t)}}function So(e=typeof document>`u`?null:document,t=typeof window<`u`&&window.__ASHLR_TOKENS__!==void 0){let n=F.find(e=>e.id===R().section),r=n?rr[`./sections/${n.module}.tsx`]:void 0;r&&r().catch(()=>void 0),xo(e,t)}So();var Co=()=>a(()=>import(`./SessionGate-8RtQFWeZ.js`),__vite__mapDeps([150,6,151])),wo=(0,S.lazy)(()=>Co().then(e=>({default:e.SessionGate})));function To(){Co().catch(()=>void 0)}var Eo=`ashlr:sidecar-restarted`;function Do(e=window){let t=!1,n=!1,r=!1,i=()=>{if(!r){if(t){n=!0;return}t=!0,re().then(e=>{e&&Ka()}).catch(()=>void 0).finally(()=>{t=!1,n&&(n=!1,i())})}};return e.addEventListener(Eo,i),()=>{r=!0,e.removeEventListener(Eo,i)}}function Oo(){let e=m();return(0,S.useEffect)(()=>Do(),[]),(0,S.useEffect)(()=>{if(e===`authenticated`&&xo(document,!0),e!==`checking`)return;To();let t=!1;return re().then(e=>{if(!(t||e))return c(Ha.key,Ha.fetch).then(()=>{t||_(d(Ha.key).status===`success`)})}),()=>{t=!0}},[e]),e===`checking`?(0,C.jsx)(`p`,{className:yo.checking,role:`status`,children:`Checking for an existing Verse session…`}):e===`unauthenticated`?(0,C.jsx)(S.Suspense,{fallback:(0,C.jsx)(`p`,{className:yo.checking,role:`status`,children:`Checking for an existing Verse session…`}),children:(0,C.jsx)(wo,{heading:`Connect to Ashlr Verse`,command:`ashlr verse`,subject:`Ashlr Verse`,mutationField:!0})}):(0,C.jsxs)(ie,{children:[(0,C.jsx)(x,{}),(0,C.jsx)(`div`,{className:yo.shell,children:(0,C.jsx)(Ra,{})})]})}export{ri as $,bt as $t,na as A,Xt as At,mi as B,Bt,mo as C,be as Cn,zn as Ct,ua as D,yn as Dt,eo as E,hn as Et,Ui as F,Lt as Ft,oi as G,At as Gt,di as H,dt as Ht,Yi as I,Ft as It,jr as J,Ct as Jt,lr as K,xt as Kt,Ai as L,It as Lt,$i as M,Jt as Mt,Zi as N,Ut as Nt,Y as O,vn as Ot,Ji as P,Wt as Pt,R as Q,yt as Qt,Ti as R,zt as Rt,Ha as S,ve as Sn,Bn as St,Ua as T,j as Tt,ii as U,mt as Ut,H as V,Ht as Vt,ai as W,pt as Wt,Vr as X,Dt as Xt,zr as Y,Ot as Yt,ni as Z,St as Zt,so as _,je as _n,Kn as _t,Ya as a,Ne as an,Lr as at,po as b,Oe as bn,Wn as bt,Xa as c,de as cn,Wr as ct,no as d,he as dn,Gr as dt,Et as en,$r as et,Ka as f,De as fn,Yn as ft,co as g,Ee as gn,Jn as gt,Ja as h,Ce as hn,Rn as ht,Ga as i,T as in,ei as it,Qi as j,Yt as jt,la as k,mn as kt,oo as l,ge as ln,z as lt,Za as m,me as mn,Hn as mt,Va as n,kt as nn,Br as nt,qa as o,Ye as on,sr as ot,go as p,Se as pn,Vn as pt,ar as q,wt as qt,Z as r,ht as rn,Rr as rt,io as s,Ze as sn,Nr as st,bo as t,Tt as tn,Ur as tt,Wa as u,_e as un,Kr as ut,ho as v,pe as vn,qn as vt,Q as w,Xn as wt,to as x,le as xn,Un as xt,ao as y,xe as yn,Gn as yt,bi as z,Rt as zt};
|
|
3
|
-
//# sourceMappingURL=VerseConsoleApp-DeuBEvAO.js.map
|