@ashlr/hub 3.11.5 → 3.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +70 -0
- package/dist/authority-surface.json +3 -3
- package/dist/build-identity.json +2 -2
- package/dist/core/authority/trust-roots.js +7 -1
- package/dist/core/authority/trust-roots.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/web/public/next/assets/{ActionMenu-DffwPklw.js → ActionMenu-B4-39f2S.js} +2 -2
- package/dist/core/web/public/next/assets/{ActionMenu-DffwPklw.js.map → ActionMenu-B4-39f2S.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Advanced-CxzE6ekM.js → Advanced-B-LqYXvd.js} +2 -2
- package/dist/core/web/public/next/assets/{Advanced-CxzE6ekM.js.map → Advanced-B-LqYXvd.js.map} +1 -1
- package/dist/core/web/public/next/assets/{App-DFlp-vdv.js → App-E2zCDRxm.js} +2 -2
- package/dist/core/web/public/next/assets/{App-DFlp-vdv.js.map → App-E2zCDRxm.js.map} +1 -1
- package/dist/core/web/public/next/assets/{AppsSection-Ct2O605-.js → AppsSection-8wXPPhZb.js} +2 -2
- package/dist/core/web/public/next/assets/{AppsSection-Ct2O605-.js.map → AppsSection-8wXPPhZb.js.map} +1 -1
- package/dist/core/web/public/next/assets/{AreaTrend-o-GLl2Is.js → AreaTrend-BFimExYn.js} +2 -2
- package/dist/core/web/public/next/assets/{AreaTrend-o-GLl2Is.js.map → AreaTrend-BFimExYn.js.map} +1 -1
- package/dist/core/web/public/next/assets/{AutonomyOffState-CXhXpsim.js → AutonomyOffState-B5eEkmiz.js} +2 -2
- package/dist/core/web/public/next/assets/{AutonomyOffState-CXhXpsim.js.map → AutonomyOffState-B5eEkmiz.js.map} +1 -1
- package/dist/core/web/public/next/assets/AutonomySection-B46igJKR.js +2 -0
- package/dist/core/web/public/next/assets/{AutonomySection-BTg7yVa1.js.map → AutonomySection-B46igJKR.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BranchBar-BjPFtGsj.js → BranchBar-BRkrEQGs.js} +2 -2
- package/dist/core/web/public/next/assets/{BranchBar-BjPFtGsj.js.map → BranchBar-BRkrEQGs.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BudgetControl-ng6swoZp.js → BudgetControl-T_RjPrw9.js} +2 -2
- package/dist/core/web/public/next/assets/{BudgetControl-ng6swoZp.js.map → BudgetControl-T_RjPrw9.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Button-OjVJSrFq.js → Button-BhO-WKPp.js} +2 -2
- package/dist/core/web/public/next/assets/{Button-OjVJSrFq.js.map → Button-BhO-WKPp.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CapacityStrip-Bx4c3dxD.js → CapacityStrip-CkFz5vq2.js} +2 -2
- package/dist/core/web/public/next/assets/{CapacityStrip-Bx4c3dxD.js.map → CapacityStrip-CkFz5vq2.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ChartFrame-B_w2Siqg.js → ChartFrame-SygZ7B3x.js} +2 -2
- package/dist/core/web/public/next/assets/{ChartFrame-B_w2Siqg.js.map → ChartFrame-SygZ7B3x.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ChatSection-Bisj9R6E.js → ChatSection-D6WybBpB.js} +3 -3
- package/dist/core/web/public/next/assets/{ChatSection-Bisj9R6E.js.map → ChatSection-D6WybBpB.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CloudBudgetForm-5Gf4iAok.js → CloudBudgetForm-Bd91iStN.js} +2 -2
- package/dist/core/web/public/next/assets/{CloudBudgetForm-5Gf4iAok.js.map → CloudBudgetForm-Bd91iStN.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CommandPalette-iTpk6I8r.js → CommandPalette-B6SgDJH-.js} +2 -2
- package/dist/core/web/public/next/assets/{CommandPalette-iTpk6I8r.js.map → CommandPalette-B6SgDJH-.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CommandSection-D8ZihzvE.js → CommandSection-DgMGoepd.js} +2 -2
- package/dist/core/web/public/next/assets/{CommandSection-D8ZihzvE.js.map → CommandSection-DgMGoepd.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ConfirmDialog-_S9iE-cJ.js → ConfirmDialog-Bv4hdK2T.js} +2 -2
- package/dist/core/web/public/next/assets/{ConfirmDialog-_S9iE-cJ.js.map → ConfirmDialog-Bv4hdK2T.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DeleteChatDialog-KUYUygiA.js → DeleteChatDialog-CH1Ix8Eh.js} +2 -2
- package/dist/core/web/public/next/assets/{DeleteChatDialog-KUYUygiA.js.map → DeleteChatDialog-CH1Ix8Eh.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Dialog-BuIaG6HF.js → Dialog-BSsIFNqD.js} +2 -2
- package/dist/core/web/public/next/assets/{Dialog-BuIaG6HF.js.map → Dialog-BSsIFNqD.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffPane-De4IQt82.js → DiffPane-BpNuJmth.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffPane-De4IQt82.js.map → DiffPane-BpNuJmth.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffViewer-B75t6Ile.js → DiffViewer-CJarUvs0.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffViewer-B75t6Ile.js.map → DiffViewer-CJarUvs0.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DockHost-BPqyhtCP.js → DockHost-DW9q0NdR.js} +2 -2
- package/dist/core/web/public/next/assets/{DockHost-BPqyhtCP.js.map → DockHost-DW9q0NdR.js.map} +1 -1
- package/dist/core/web/public/next/assets/{EmptyState-DXkT4vhW.js → EmptyState-DPrd2aak.js} +2 -2
- package/dist/core/web/public/next/assets/{EmptyState-DXkT4vhW.js.map → EmptyState-DPrd2aak.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Epistemic-CfqFe_aP.js → Epistemic-D7MxSmED.js} +2 -2
- package/dist/core/web/public/next/assets/{Epistemic-CfqFe_aP.js.map → Epistemic-D7MxSmED.js.map} +1 -1
- package/dist/core/web/public/next/assets/{FleetSection-B7f-XBiX.js → FleetSection-BdZN6rGS.js} +3 -3
- package/dist/core/web/public/next/assets/{FleetSection-B7f-XBiX.js.map → FleetSection-BdZN6rGS.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Funnel-pXYySwXQ.js → Funnel-BeNQZWv2.js} +2 -2
- package/dist/core/web/public/next/assets/{Funnel-pXYySwXQ.js.map → Funnel-BeNQZWv2.js.map} +1 -1
- package/dist/core/web/public/next/assets/{GearTray-gj6lT7ba.js → GearTray-CIPtzeIx.js} +2 -2
- package/dist/core/web/public/next/assets/{GearTray-gj6lT7ba.js.map → GearTray-CIPtzeIx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{GrowthSection-D8e9m9Wy.js → GrowthSection-iiQg6wvK.js} +2 -2
- package/dist/core/web/public/next/assets/{GrowthSection-D8e9m9Wy.js.map → GrowthSection-iiQg6wvK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{HandoffDialog-VfKxKhxF.js → HandoffDialog-DrQ6ofuy.js} +2 -2
- package/dist/core/web/public/next/assets/{HandoffDialog-VfKxKhxF.js.map → HandoffDialog-DrQ6ofuy.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Input-u1YR_Ogl.js → Input-C0MQxEM6.js} +2 -2
- package/dist/core/web/public/next/assets/{Input-u1YR_Ogl.js.map → Input-C0MQxEM6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{LeaderCard-BDELBrnx.js → LeaderCard-BRr3_yE-.js} +2 -2
- package/dist/core/web/public/next/assets/{LeaderCard-BDELBrnx.js.map → LeaderCard-BRr3_yE-.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MatrixHeatmap-NKLF2srR.js → MatrixHeatmap-DZvZeWXL.js} +2 -2
- package/dist/core/web/public/next/assets/{MatrixHeatmap-NKLF2srR.js.map → MatrixHeatmap-DZvZeWXL.js.map} +1 -1
- package/dist/core/web/public/next/assets/McpSection-BRuCcTjT.js +2 -0
- package/dist/core/web/public/next/assets/{McpSection-D1tDvlRa.js.map → McpSection-BRuCcTjT.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdown-DlfLEJxu.js → MessageMarkdown-bRvD5nSc.js} +3 -3
- package/dist/core/web/public/next/assets/{MessageMarkdown-DlfLEJxu.js.map → MessageMarkdown-bRvD5nSc.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-BYZzI115.js → MessageMarkdownRenderer-FjjkPKA2.js} +2 -2
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-BYZzI115.js.map → MessageMarkdownRenderer-FjjkPKA2.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Meter-BSVhU43Q.js → Meter-CFNLpwA-.js} +2 -2
- package/dist/core/web/public/next/assets/{Meter-BSVhU43Q.js.map → Meter-CFNLpwA-.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MindSection-lqV2e_Sq.js → MindSection-BTIiQS8P.js} +2 -2
- package/dist/core/web/public/next/assets/{MindSection-lqV2e_Sq.js.map → MindSection-BTIiQS8P.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MutationTokenDialog-CLGP72g6.js → MutationTokenDialog-T7gv3a9r.js} +2 -2
- package/dist/core/web/public/next/assets/{MutationTokenDialog-CLGP72g6.js.map → MutationTokenDialog-T7gv3a9r.js.map} +1 -1
- package/dist/core/web/public/next/assets/{NeedsYouDrawer-D992XTOn.js → NeedsYouDrawer-lYN4G_aM.js} +2 -2
- package/dist/core/web/public/next/assets/{NeedsYouDrawer-D992XTOn.js.map → NeedsYouDrawer-lYN4G_aM.js.map} +1 -1
- package/dist/core/web/public/next/assets/{NeedsYouList-eBOlJr0b.js → NeedsYouList-BgH8ezqf.js} +2 -2
- package/dist/core/web/public/next/assets/{NeedsYouList-eBOlJr0b.js.map → NeedsYouList-BgH8ezqf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{NewChatDialog-DoYTH26M.js → NewChatDialog-Db5Xjrk8.js} +2 -2
- package/dist/core/web/public/next/assets/{NewChatDialog-DoYTH26M.js.map → NewChatDialog-Db5Xjrk8.js.map} +1 -1
- package/dist/core/web/public/next/assets/{OnboardingFlow-D3yfITK1.js → OnboardingFlow-LoY-zuSe.js} +2 -2
- package/dist/core/web/public/next/assets/{OnboardingFlow-D3yfITK1.js.map → OnboardingFlow-LoY-zuSe.js.map} +1 -1
- package/dist/core/web/public/next/assets/OnboardingGate-C4VXn7BJ.js +3 -0
- package/dist/core/web/public/next/assets/{OnboardingGate-DrDEVBqw.js.map → OnboardingGate-C4VXn7BJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{PreviewPane-ULN673zm.js → PreviewPane-BPBbcROb.js} +2 -2
- package/dist/core/web/public/next/assets/{PreviewPane-ULN673zm.js.map → PreviewPane-BPBbcROb.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ProviderLogo-8WaUjTlN.js → ProviderLogo-CT2cSfkg.js} +2 -2
- package/dist/core/web/public/next/assets/{ProviderLogo-8WaUjTlN.js.map → ProviderLogo-CT2cSfkg.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RailStatus-Ckw9nvYU.js → RailStatus-Vgl0GYtd.js} +2 -2
- package/dist/core/web/public/next/assets/{RailStatus-Ckw9nvYU.js.map → RailStatus-Vgl0GYtd.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RefreshIndicator-DGubF4vR.js → RefreshIndicator-CSyqpY_q.js} +2 -2
- package/dist/core/web/public/next/assets/{RefreshIndicator-DGubF4vR.js.map → RefreshIndicator-CSyqpY_q.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BahEaY4d.js → ResourcePoolConsoleApp-BX2nkdmZ.js} +2 -2
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-BahEaY4d.js.map → ResourcePoolConsoleApp-BX2nkdmZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ResourcesChrome-C2ZrA7la.js → ResourcesChrome-B2U2lO1H.js} +3 -3
- package/dist/core/web/public/next/assets/{ResourcesChrome-C2ZrA7la.js.map → ResourcesChrome-B2U2lO1H.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ResourcesDrawer-BC93fzwQ.js → ResourcesDrawer-DlUKOjl9.js} +2 -2
- package/dist/core/web/public/next/assets/{ResourcesDrawer-BC93fzwQ.js.map → ResourcesDrawer-DlUKOjl9.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RouteErrorBoundary-BvhHNpE_.js → RouteErrorBoundary-BaC7YVzR.js} +2 -2
- package/dist/core/web/public/next/assets/{RouteErrorBoundary-BvhHNpE_.js.map → RouteErrorBoundary-BaC7YVzR.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RunInCloudAction-Dywfnw0C.js → RunInCloudAction-D5PDHJPE.js} +2 -2
- package/dist/core/web/public/next/assets/{RunInCloudAction-Dywfnw0C.js.map → RunInCloudAction-D5PDHJPE.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SeatSelector-CH7hTgwy.js → SeatSelector-Cg75LInq.js} +2 -2
- package/dist/core/web/public/next/assets/{SeatSelector-CH7hTgwy.js.map → SeatSelector-Cg75LInq.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Segmented-Wynbg0F5.js → Segmented-CametjLt.js} +2 -2
- package/dist/core/web/public/next/assets/{Segmented-Wynbg0F5.js.map → Segmented-CametjLt.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Select-DMyLCkId.js → Select-De52fghU.js} +2 -2
- package/dist/core/web/public/next/assets/{Select-DMyLCkId.js.map → Select-De52fghU.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionGate-8RtQFWeZ.js → SessionGate-CzlcNq3O.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionGate-8RtQFWeZ.js.map → SessionGate-CzlcNq3O.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionInsightChip-zBJbKv2L.js → SessionInsightChip-Bk_Owa7u.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionInsightChip-zBJbKv2L.js.map → SessionInsightChip-Bk_Owa7u.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionSearch-DfJIcxxM.js → SessionSearch-C6C8DHN8.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionSearch-DfJIcxxM.js.map → SessionSearch-C6C8DHN8.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SettingsSection-Da9RYyH5.js → SettingsSection-mI9wQYZg.js} +2 -2
- package/dist/core/web/public/next/assets/{SettingsSection-Da9RYyH5.js.map → SettingsSection-mI9wQYZg.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Sheet-DhXyIDmq.js → Sheet-CJhK9Dqv.js} +2 -2
- package/dist/core/web/public/next/assets/{Sheet-DhXyIDmq.js.map → Sheet-CJhK9Dqv.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-Bi5f-wUw.js → ShortcutsOverlay-DDW-i9Fc.js} +2 -2
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-Bi5f-wUw.js.map → ShortcutsOverlay-DDW-i9Fc.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Sidebar-BuO3sViG.js → Sidebar-DT7ykaqS.js} +3 -3
- package/dist/core/web/public/next/assets/{Sidebar-BuO3sViG.js.map → Sidebar-DT7ykaqS.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Slider-Bd9YFWEV.js → Slider-Bwd9HfXl.js} +2 -2
- package/dist/core/web/public/next/assets/{Slider-Bd9YFWEV.js.map → Slider-Bwd9HfXl.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StatTile-DScTd3c-.js → StatTile-DPZ5yyaU.js} +2 -2
- package/dist/core/web/public/next/assets/{StatTile-DScTd3c-.js.map → StatTile-DPZ5yyaU.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StatusBadge-DQ1UtQAJ.js → StatusBadge-DHKRtttH.js} +2 -2
- package/dist/core/web/public/next/assets/{StatusBadge-DQ1UtQAJ.js.map → StatusBadge-DHKRtttH.js.map} +1 -1
- package/dist/core/web/public/next/assets/{StepBand-BB3IJxhr.js → StepBand-DQykLkk_.js} +2 -2
- package/dist/core/web/public/next/assets/{StepBand-BB3IJxhr.js.map → StepBand-DQykLkk_.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Surface-DWMtQe3Q.js → Surface-D--LXgQm.js} +2 -2
- package/dist/core/web/public/next/assets/{Surface-DWMtQe3Q.js.map → Surface-D--LXgQm.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Swimlane-DcENqtdp.js → Swimlane-BzH6OCee.js} +2 -2
- package/dist/core/web/public/next/assets/{Swimlane-DcENqtdp.js.map → Swimlane-BzH6OCee.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Switch-CenChEYf.js → Switch-PMixU6b0.js} +2 -2
- package/dist/core/web/public/next/assets/{Switch-CenChEYf.js.map → Switch-PMixU6b0.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Tag-D4k5E3u0.js → Tag-fordBsrJ.js} +2 -2
- package/dist/core/web/public/next/assets/{Tag-D4k5E3u0.js.map → Tag-fordBsrJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{TerminalPane-DCQTukcE.js → TerminalPane-BSnGdUuF.js} +2 -2
- package/dist/core/web/public/next/assets/{TerminalPane-DCQTukcE.js.map → TerminalPane-BSnGdUuF.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-DsuWT0pi.js → UniverseConsoleApp-DtXFhAhw.js} +2 -2
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-DsuWT0pi.js.map → UniverseConsoleApp-DtXFhAhw.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UniverseView-DyI5ApsA.js → UniverseView-sWm3pnTW.js} +2 -2
- package/dist/core/web/public/next/assets/{UniverseView-DyI5ApsA.js.map → UniverseView-sWm3pnTW.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UsageSection-Imr28nwK.js → UsageSection-CiD1DbuF.js} +2 -2
- package/dist/core/web/public/next/assets/{UsageSection-Imr28nwK.js.map → UsageSection-CiD1DbuF.js.map} +1 -1
- package/dist/core/web/public/next/assets/{VerseConsoleApp-DeuBEvAO.js → VerseConsoleApp-BCY5uSok.js} +3 -3
- package/dist/core/web/public/next/assets/{VerseConsoleApp-DeuBEvAO.js.map → VerseConsoleApp-BCY5uSok.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Workspace-CpxBO98E.js → Workspace-BQSZFSeO.js} +5 -5
- package/dist/core/web/public/next/assets/{Workspace-CpxBO98E.js.map → Workspace-BQSZFSeO.js.map} +1 -1
- package/dist/core/web/public/next/assets/{actions-DE8NoWV_.js → actions-Ci6I4C0l.js} +2 -2
- package/dist/core/web/public/next/assets/{actions-DE8NoWV_.js.map → actions-Ci6I4C0l.js.map} +1 -1
- package/dist/core/web/public/next/assets/{apps-model-CFGCUu9p.js → apps-model-DlwnfqwJ.js} +2 -2
- package/dist/core/web/public/next/assets/{apps-model-CFGCUu9p.js.map → apps-model-DlwnfqwJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{authority-model-CmnfJzmM.js → authority-model-BFuPezSo.js} +2 -2
- package/dist/core/web/public/next/assets/{authority-model-CmnfJzmM.js.map → authority-model-BFuPezSo.js.map} +1 -1
- package/dist/core/web/public/next/assets/{budget-queries-DjrPRFwl.js → budget-queries-DsAjH8ac.js} +2 -2
- package/dist/core/web/public/next/assets/{budget-queries-DjrPRFwl.js.map → budget-queries-DsAjH8ac.js.map} +1 -1
- package/dist/core/web/public/next/assets/{capacity-strip-model-C7cdQnuK.js → capacity-strip-model-Dn1cNOhz.js} +2 -2
- package/dist/core/web/public/next/assets/{capacity-strip-model-C7cdQnuK.js.map → capacity-strip-model-Dn1cNOhz.js.map} +1 -1
- package/dist/core/web/public/next/assets/{charts-DUD_jprE.js → charts-C_xJbJiw.js} +2 -2
- package/dist/core/web/public/next/assets/{charts-DUD_jprE.js.map → charts-C_xJbJiw.js.map} +1 -1
- package/dist/core/web/public/next/assets/{cloud-model-DoxBMDvx.js → cloud-model-CX407gPY.js} +2 -2
- package/dist/core/web/public/next/assets/{cloud-model-DoxBMDvx.js.map → cloud-model-CX407gPY.js.map} +1 -1
- package/dist/core/web/public/next/assets/{cloud-queries-CTGvO-k-.js → cloud-queries-QAhpExlz.js} +2 -2
- package/dist/core/web/public/next/assets/{cloud-queries-CTGvO-k-.js.map → cloud-queries-QAhpExlz.js.map} +1 -1
- package/dist/core/web/public/next/assets/{command-catalog-CmrHNFzh.js → command-catalog-CF0cQQac.js} +2 -2
- package/dist/core/web/public/next/assets/{command-catalog-CmrHNFzh.js.map → command-catalog-CF0cQQac.js.map} +1 -1
- package/dist/core/web/public/next/assets/{context-model-9xywbXxX.js → context-model-Co4wh3SM.js} +2 -2
- package/dist/core/web/public/next/assets/{context-model-9xywbXxX.js.map → context-model-Co4wh3SM.js.map} +1 -1
- package/dist/core/web/public/next/assets/{context-model-2Owp2jYF.js → context-model-DV1zCfAm.js} +2 -2
- package/dist/core/web/public/next/assets/{context-model-2Owp2jYF.js.map → context-model-DV1zCfAm.js.map} +1 -1
- package/dist/core/web/public/next/assets/{context-queries-wvcRnV-I.js → context-queries-CktFQqSS.js} +2 -2
- package/dist/core/web/public/next/assets/{context-queries-wvcRnV-I.js.map → context-queries-CktFQqSS.js.map} +1 -1
- package/dist/core/web/public/next/assets/{control-queries-DB6Kh7UN.js → control-queries-DAvlh_YM.js} +2 -2
- package/dist/core/web/public/next/assets/{control-queries-DB6Kh7UN.js.map → control-queries-DAvlh_YM.js.map} +1 -1
- package/dist/core/web/public/next/assets/{copy-setup-CJQhFl-4.js → copy-setup-CqRSfELB.js} +2 -2
- package/dist/core/web/public/next/assets/{copy-setup-CJQhFl-4.js.map → copy-setup-CqRSfELB.js.map} +1 -1
- package/dist/core/web/public/next/assets/{dock-icons-BBUGl4tE.js → dock-icons-BFuBbqJl.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-icons-BBUGl4tE.js.map → dock-icons-BFuBbqJl.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-model-BRfRWkZl.js → fleet-model-Dfd5JyLR.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-model-BRfRWkZl.js.map → fleet-model-Dfd5JyLR.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-queries-tU6UEXN2.js → fleet-queries-RtMTd5rR.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-queries-tU6UEXN2.js.map → fleet-queries-RtMTd5rR.js.map} +1 -1
- package/dist/core/web/public/next/assets/{focus-trap-BGOceFvj.js → focus-trap-BdrbWfC4.js} +2 -2
- package/dist/core/web/public/next/assets/{focus-trap-BGOceFvj.js.map → focus-trap-BdrbWfC4.js.map} +1 -1
- package/dist/core/web/public/next/assets/{format-DEAaVF6X.js → format-Dk4Fmxax.js} +2 -2
- package/dist/core/web/public/next/assets/{format-DEAaVF6X.js.map → format-Dk4Fmxax.js.map} +1 -1
- package/dist/core/web/public/next/assets/{git-model-53iRLInY.js → git-model-_BnI_Ogh.js} +2 -2
- package/dist/core/web/public/next/assets/{git-model-53iRLInY.js.map → git-model-_BnI_Ogh.js.map} +1 -1
- package/dist/core/web/public/next/assets/{global-CXHHMz9o.js → global-CNNGMril.js} +2 -2
- package/dist/core/web/public/next/assets/{global-CXHHMz9o.js.map → global-CNNGMril.js.map} +1 -1
- package/dist/core/web/public/next/assets/{guarded-runners-B8zFVBVZ.js → guarded-runners-DPh2d32e.js} +2 -2
- package/dist/core/web/public/next/assets/{guarded-runners-B8zFVBVZ.js.map → guarded-runners-DPh2d32e.js.map} +1 -1
- package/dist/core/web/public/next/assets/{icons-D4s-jlxX.js → icons-0haWy6nh.js} +2 -2
- package/dist/core/web/public/next/assets/{icons-D4s-jlxX.js.map → icons-0haWy6nh.js.map} +1 -1
- package/dist/core/web/public/next/assets/{index-BG177cPN.js → index-QesfXBsb.js} +3 -3
- package/dist/core/web/public/next/assets/{index-BG177cPN.js.map → index-QesfXBsb.js.map} +1 -1
- package/dist/core/web/public/next/assets/{live-model-CEf01wrW.js → live-model-De-q0ZFK.js} +2 -2
- package/dist/core/web/public/next/assets/{live-model-CEf01wrW.js.map → live-model-De-q0ZFK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{mind.module-D_xk6HIQ.js → mind.module-BrK2nFOL.js} +2 -2
- package/dist/core/web/public/next/assets/{mind.module-D_xk6HIQ.js.map → mind.module-BrK2nFOL.js.map} +1 -1
- package/dist/core/web/public/next/assets/{mutations-CbTSofVH.js → mutations-DTCtKCn_.js} +2 -2
- package/dist/core/web/public/next/assets/{mutations-CbTSofVH.js.map → mutations-DTCtKCn_.js.map} +1 -1
- package/dist/core/web/public/next/assets/{nav-CmZcbPFJ.js → nav-KmGX0CVz.js} +2 -2
- package/dist/core/web/public/next/assets/{nav-CmZcbPFJ.js.map → nav-KmGX0CVz.js.map} +1 -1
- package/dist/core/web/public/next/assets/{overnight-queries-CR0b_j-V.js → overnight-queries-mlO0xzsr.js} +2 -2
- package/dist/core/web/public/next/assets/{overnight-queries-CR0b_j-V.js.map → overnight-queries-mlO0xzsr.js.map} +1 -1
- package/dist/core/web/public/next/assets/primitives-D0Fb3TtS.js +1 -0
- package/dist/core/web/public/next/assets/{queries-rvRsAGW2.js → queries-CyBE8nsW.js} +2 -2
- package/dist/core/web/public/next/assets/{queries-rvRsAGW2.js.map → queries-CyBE8nsW.js.map} +1 -1
- package/dist/core/web/public/next/assets/{reasoning-pref-DMPQkujg.js → reasoning-pref-CaoA4_Vl.js} +2 -2
- package/dist/core/web/public/next/assets/{reasoning-pref-DMPQkujg.js.map → reasoning-pref-CaoA4_Vl.js.map} +1 -1
- package/dist/core/web/public/next/assets/{reveal-anchor-BKk2wZZZ.js → reveal-anchor-BP1VqnPU.js} +2 -2
- package/dist/core/web/public/next/assets/{reveal-anchor-BKk2wZZZ.js.map → reveal-anchor-BP1VqnPU.js.map} +1 -1
- package/dist/core/web/public/next/assets/{seat-subscription-CLn2ReSZ.js → seat-subscription-C5Tvr0WQ.js} +2 -2
- package/dist/core/web/public/next/assets/{seat-subscription-CLn2ReSZ.js.map → seat-subscription-C5Tvr0WQ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{sidebar-model-CjQLvdag.js → sidebar-model-B5Qk95k_.js} +2 -2
- package/dist/core/web/public/next/assets/{sidebar-model-CjQLvdag.js.map → sidebar-model-B5Qk95k_.js.map} +1 -1
- package/dist/core/web/public/next/assets/{slots-DRxNosZg.js → slots-DHKQDoE6.js} +3 -3
- package/dist/core/web/public/next/assets/{slots-DRxNosZg.js.map → slots-DHKQDoE6.js.map} +1 -1
- package/dist/core/web/public/next/assets/{surface-data-DshUC_TU.js → surface-data-CchClvHo.js} +2 -2
- package/dist/core/web/public/next/assets/{surface-data-DshUC_TU.js.map → surface-data-CchClvHo.js.map} +1 -1
- package/dist/core/web/public/next/assets/surface-prefetch-BWr0LBQn.js +2 -0
- package/dist/core/web/public/next/assets/{surface-prefetch-DO8r4ttQ.js.map → surface-prefetch-BWr0LBQn.js.map} +1 -1
- package/dist/core/web/public/next/assets/{tasks-model-BKPFZAmZ.js → tasks-model-D6WFVULI.js} +2 -2
- package/dist/core/web/public/next/assets/{tasks-model-BKPFZAmZ.js.map → tasks-model-D6WFVULI.js.map} +1 -1
- package/dist/core/web/public/next/assets/{terminal-icons-DoeQkP3y.js → terminal-icons-BvCvuXk2.js} +2 -2
- package/dist/core/web/public/next/assets/{terminal-icons-DoeQkP3y.js.map → terminal-icons-BvCvuXk2.js.map} +1 -1
- package/dist/core/web/public/next/assets/{usage-queries-MnUeYzwp.js → usage-queries-D1SU1t7r.js} +2 -2
- package/dist/core/web/public/next/assets/{usage-queries-MnUeYzwp.js.map → usage-queries-D1SU1t7r.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-guarded-action-P12MfNwU.js → use-guarded-action-BZmBv7CJ.js} +2 -2
- package/dist/core/web/public/next/assets/{use-guarded-action-P12MfNwU.js.map → use-guarded-action-BZmBv7CJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-ticker-DIvAZ4Ey.js → use-ticker-CkJ4-0wU.js} +2 -2
- package/dist/core/web/public/next/assets/{use-ticker-DIvAZ4Ey.js.map → use-ticker-CkJ4-0wU.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-token-gate-DfEja7Wr.js → use-token-gate-CYcfk_GS.js} +2 -2
- package/dist/core/web/public/next/assets/{use-token-gate-DfEja7Wr.js.map → use-token-gate-CYcfk_GS.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useOnboarding-CkOHadqC.js → useOnboarding-CujRS6PK.js} +2 -2
- package/dist/core/web/public/next/assets/{useOnboarding-CkOHadqC.js.map → useOnboarding-CujRS6PK.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useSeatsRefresh-BDlbDlIU.js → useSeatsRefresh-BEaQdkZs.js} +2 -2
- package/dist/core/web/public/next/assets/{useSeatsRefresh-BDlbDlIU.js.map → useSeatsRefresh-BEaQdkZs.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useVerseTranscript-BGtA55k2.js → useVerseTranscript-BQ0J6Xhx.js} +2 -2
- package/dist/core/web/public/next/assets/{useVerseTranscript-BGtA55k2.js.map → useVerseTranscript-BQ0J6Xhx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{verse-icons-wOet9JZy.js → verse-icons-DndgEgKS.js} +2 -2
- package/dist/core/web/public/next/assets/{verse-icons-wOet9JZy.js.map → verse-icons-DndgEgKS.js.map} +1 -1
- package/dist/core/web/public/next/assets/{verse-model-CSzzdyu2.js → verse-model-MMySehjj.js} +2 -2
- package/dist/core/web/public/next/assets/{verse-model-CSzzdyu2.js.map → verse-model-MMySehjj.js.map} +1 -1
- package/dist/core/web/public/next/assets/{warmup-CecO_Nk0.js → warmup-CNEH_-be.js} +3 -3
- package/dist/core/web/public/next/assets/{warmup-CecO_Nk0.js.map → warmup-CNEH_-be.js.map} +1 -1
- package/dist/core/web/public/next/assets/{why-seat-model-D68ZA7G8.js → why-seat-model-jlDTwYSc.js} +2 -2
- package/dist/core/web/public/next/assets/{why-seat-model-D68ZA7G8.js.map → why-seat-model-jlDTwYSc.js.map} +1 -1
- package/dist/core/web/public/next/assets/{workspace-model-BdIVybKr.js → workspace-model-Dukb2wwv.js} +2 -2
- package/dist/core/web/public/next/assets/{workspace-model-BdIVybKr.js.map → workspace-model-Dukb2wwv.js.map} +1 -1
- package/dist/core/web/public/next/index.html +1 -1
- package/dist/release-dependency-inventory.json +1 -1
- package/package.json +1 -1
- package/dist/core/web/public/next/assets/AutonomySection-BTg7yVa1.js +0 -2
- package/dist/core/web/public/next/assets/McpSection-D1tDvlRa.js +0 -2
- package/dist/core/web/public/next/assets/OnboardingGate-DrDEVBqw.js +0 -3
- 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
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e,c as t,n}from"./index-BG177cPN.js";import{h as r,i,o as a,p as o}from"./global-CXHHMz9o.js";import{t as s}from"./MutationTokenDialog-CLGP72g6.js";import{t as c}from"./ProviderLogo-8WaUjTlN.js";import{Dt as l,Et as u,Tt as d,_n as f,bt as p,ht as m,mt as h,pt as g,vt as _,wt as v,xt as y,yt as b}from"./VerseConsoleApp-DeuBEvAO.js";import{D as x,E as S,O as C,_ as w,c as T,o as E,s as D}from"./verse-model-CSzzdyu2.js";import{p as O}from"./format-DEAaVF6X.js";import{a as ee,c as k,d as A,l as te,u as ne}from"./context-queries-wvcRnV-I.js";import{T as j,f as M,t as re,v as N,w as ie}from"./context-model-9xywbXxX.js";import{_ as ae,a as oe,i as se,k as ce,l as P,m as le,n as ue,r as de,v as F,w as fe,x as pe}from"./context-model-2Owp2jYF.js";import{d as I,p as L,u as R}from"./workspace-model-BdIVybKr.js";import{n as z,t as B}from"./ActionMenu-DffwPklw.js";import{s as me}from"./tool-semantics-GX8ScuSH.js";import{d as V,h as he,i as H,l as ge,n as U}from"./dock-icons-BBUGl4tE.js";import{a as W}from"./command-catalog-CmrHNFzh.js";import{currentTurnTasks as _e}from"./tasks-model-BKPFZAmZ.js";import{n as ve,t as G}from"./use-token-gate-DfEja7Wr.js";import{t as ye}from"./EmptyState-DXkT4vhW.js";import{a as be,n as xe,r as Se}from"./slots-DRxNosZg.js";import{i as Ce,r as K,t as we}from"./useVerseTranscript-BGtA55k2.js";import{t as Te}from"./Switch-CenChEYf.js";import{t as q}from"./context.module-BijAfoJw.js";import{s as Ee}from"./ChatSection-Bisj9R6E.js";var J=t(e(),1),Y={usage:`_usage_1xfeo_5`,muted:`_muted_1xfeo_21`,subTitle:`_subTitle_1xfeo_23`,idleWarn:`_idleWarn_1xfeo_35`},X=n();function De({session:e,seats:t,events:n,now:r}){let i=e.usage,a=ie(e,t),o=j(n??[]),s=i.inputTokens+i.cacheReadTokens+i.cacheCreationTokens,c=N(i),l=e.compactionCount??o.compactions,u=M(e,a.tokens,r,C(n??[])),d=a.exact?``:`≤`,f=o.exact?``:`≤`;return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`dl`,{className:Y.usage,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Input`}),(0,X.jsx)(`dd`,{children:x(i.inputTokens)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Output`}),(0,X.jsx)(`dd`,{children:x(i.outputTokens)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Cache read`}),(0,X.jsx)(`dd`,{children:x(i.cacheReadTokens)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Cache write`}),(0,X.jsx)(`dd`,{children:x(i.cacheCreationTokens)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Turns`}),(0,X.jsx)(`dd`,{children:e.turnCount})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Context`}),(0,X.jsxs)(`dd`,{title:a.exact?void 0:`An upper bound: the CLI reported only the turn total, which sums every call.`,children:[d,x(a.tokens),a.window===null?``:` / ${E(a.window)}`]})]})]}),(0,X.jsx)(`h4`,{className:Y.subTitle,children:`Efficiency`}),(0,X.jsxs)(`dl`,{className:Y.usage,"aria-label":`Context efficiency`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Cache hit`}),(0,X.jsx)(`dd`,{title:`Share of prompt tokens served from the provider's cache: cache read ÷ (input + cache read + cache write).`,children:c===null?s>0?`none reported`:`—`:O(c)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Compactions`}),(0,X.jsx)(`dd`,{children:l})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Avg context / turn`}),(0,X.jsx)(`dd`,{children:o.average===null?`—`:`${f}${x(o.average)}`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Peak context`}),(0,X.jsx)(`dd`,{children:o.peak===null?`—`:`${f}${x(o.peak)}`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Mode`}),(0,X.jsx)(`dd`,{children:re[a.mode]})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Compacts at`}),(0,X.jsx)(`dd`,{children:a.autoCompactAt===null?`—`:`≈${x(a.autoCompactAt)}`})]})]}),(0,X.jsxs)(`p`,{className:Y.muted,children:[a.source===null?a.window===null?`Window unknown for this chat.`:`Window as stored when this chat was created; how it was known was not recorded.`:`Window ${S(a.source,e.engine)}.`,o.turns>0&&!o.exact?` Figures marked ≤ are upper bounds: the CLI reported only turn totals.`:``]}),(0,X.jsx)(`p`,{className:Y.muted,children:e.memoryEnabled===!0?e.engine===`local`?`Shared project memory was given to this chat’s agent when it started.`:`Shared project memory was given to this chat’s agent when it started: a block of up to ${ue/1024} KB in its system prompt, re-sent every turn (cached after the first), plus the agent’s own reads and updates of MEMORY.md — a little of this seat’s usage.`:`This chat started without shared project memory.`}),u===null?null:(0,X.jsx)(`p`,{role:`status`,className:Y.idleWarn,children:u.local?`Idle for ${T(u.idleMs)}: the local model has likely dropped this chat from its cache, so the next turn re-processes ~${x(u.tokens)} tokens before it replies — time, not spend.`:`Idle for ${T(u.idleMs)}, past the ~1 h prompt-cache lifetime: the next turn likely re-reads ~${x(u.tokens)} tokens uncached, at full price.`})]})}function Oe({projectPath:e,refreshKey:t}){let n=(0,J.useId)();return e?(0,X.jsx)(Ne,{projectPath:e,refreshKey:t},e):(0,X.jsxs)(`section`,{className:q.memory,"aria-labelledby":n,children:[(0,X.jsx)(`h3`,{id:n,className:q.memoryHead,children:`Project memory`}),(0,X.jsx)(`p`,{className:q.hint,children:`Open a chat to see the memory its project shares across seats.`})]})}var ke=`Saving writes MEMORY.md for this project. Every seat on it reads this file.`,Ae=`Clearing empties MEMORY.md for every chat on this project.`,je=`This changes whether new chats on this project are given shared memory.`,Me=`This changes whether new chats on ANY project are given shared memory.`;function Ne({projectPath:e,refreshKey:t}){let n=(0,J.useId)(),c=(0,J.useId)(),l=(0,J.useId)(),u=(0,J.useMemo)(()=>ne(e),[e]),d=o(u),f=r(u),p=o(te),m=ve(),h=w(e),[g,_]=(0,J.useState)(`view`),[v,y]=(0,J.useState)(``),[b,x]=(0,J.useState)(``),[S,C]=(0,J.useState)(!1),[T,E]=(0,J.useState)(null),[D,O]=(0,J.useState)(null),[j,M]=(0,J.useState)(null),[re,N]=(0,J.useState)(null),ie=(0,J.useRef)(null),ue=(0,J.useRef)(t);(0,J.useEffect)(()=>{t!==ue.current&&(ue.current=t,f())},[t,f]),(0,J.useEffect)(()=>{let e=ie.current;g===`edit`&&e&&(e.focus(),e.setSelectionRange(e.value.length,e.value.length))},[g]);let[I,L]=(0,J.useState)(null);(0,J.useEffect)(()=>{I!==null&&d.status===`success`&&L(null)},[I,d.status]);let R=I!==null&&d.status!==`success`?I:d.data,z=d.error instanceof a&&d.error.status===404,B=p.data?!p.data.memory.enabled:!1,me=(0,J.useMemo)(()=>fe(v),[v]),V=me>ce,he=(0,J.useMemo)(()=>le({projectPath:e,content:v}),[e,v]),H=!V&&he>de,ge=g===`edit`?pe(v):null,U=g===`edit`&&S?ae(v):0;function W(e,t){y(e),x(e),C(t),E(null),M(null),N(null),_(`edit`)}async function _e(t=!1){if(!D){O(`saving`),M(null);try{let n=await ee(e);if(!t&&n.content!==b){E(n);return}let r=await m.run(ke,()=>A(e,v));if(r===null)return;L(r),E(null),_(`view`),N(r.content.length===0?`Saved — MEMORY.md is now empty.`:`Saved.`)}catch(e){M(G(e))}finally{O(null)}}}async function ye(){if(!D){O(`clearing`),M(null);try{let t=await m.run(Ae,()=>A(e,``));if(t===null)return;L(t),_(`view`),N(`Cleared. Agents start MEMORY.md afresh on their next write.`)}catch(e){M(G(e))}finally{O(null)}}}async function be(t){if(!D){O(`toggling`),M(null),N(null);try{await m.run(je,()=>k({projectPath:e,memoryEnabled:t}))!==null&&N(t?`New chats on ${h} will get shared memory. Chats already open keep what they started with.`:`New chats on ${h} will start without shared memory. The file is kept.`)}catch(e){M(G(e))}finally{O(null)}}}async function xe(e){if(!D){O(`toggling`),M(null),N(null);try{await m.run(Me,()=>k({memoryEnabled:e}))}catch(e){M(G(e))}finally{O(null)}}}let Se=R?B?`off everywhere`:R.enabled?`on`:`off`:null;return(0,X.jsxs)(`section`,{className:q.memory,"aria-labelledby":n,"data-project":e,children:[(0,X.jsxs)(`h3`,{id:n,className:q.memoryHead,children:[(0,X.jsx)(`span`,{children:`Project memory`}),Se?(0,X.jsx)(`span`,{className:q.memoryState,children:Se}):null,z?null:(0,X.jsx)(`button`,{type:`button`,className:q.memoryHeadAction,onClick:f,"aria-label":`Refresh project memory`,children:`Refresh`})]}),(0,X.jsxs)(`p`,{className:q.hint,children:[`One `,(0,X.jsx)(`code`,{children:`MEMORY.md`}),` shared by every chat on `,(0,X.jsx)(`strong`,{title:e,children:h}),`, whichever seat runs it. Agents keep it current — decisions and why, conventions, gotchas, plan status.`]}),z?(0,X.jsxs)(`p`,{className:q.hint,children:[`This server has no project memory yet — update Ashlr and restart `,(0,X.jsx)(`code`,{children:`ashlr verse`}),`.`]}):d.status===`loading`||d.status===`idle`&&!R?(0,X.jsxs)(`div`,{"aria-busy":`true`,children:[(0,X.jsx)(i,{width:`80%`}),(0,X.jsx)(i,{width:`60%`}),(0,X.jsx)(i,{width:`70%`})]}):R?(0,X.jsxs)(X.Fragment,{children:[B?(0,X.jsxs)(`div`,{className:q.field,children:[(0,X.jsx)(`p`,{className:q.hint,children:`Shared memory is off for every project, so new chats start without it.`}),(0,X.jsx)(`div`,{className:q.memoryActions,children:(0,X.jsx)(`button`,{type:`button`,className:`${q.secondary} ${q.small}`,disabled:D!==null,onClick:()=>void xe(!0),children:`Turn memory on`})})]}):(0,X.jsx)(Te,{checked:R.enabled,disabled:D!==null||!p.data,onChange:e=>void be(e),label:`Give new chats on ${h} this memory`}),g===`edit`?(0,X.jsxs)(`div`,{className:q.field,children:[(0,X.jsx)(`label`,{className:q.label,htmlFor:c,children:`Edit MEMORY.md`}),(0,X.jsx)(`textarea`,{id:c,ref:ie,className:q.textarea,value:v,rows:12,spellCheck:!1,"aria-describedby":l,"aria-invalid":V||H?!0:void 0,onChange:e=>y(e.target.value)}),(0,X.jsxs)(`p`,{id:l,className:`${q.hint} ${q.counter} ${V||H?q.counterOver:``}`,children:[P(me),` of `,P(ce),V?` — over the limit; trim it to save.`:``,H?` — ${P(he)} once line breaks and quotes are encoded for sending, over the ${P(de)} request limit; trim it to save.`:``]}),ge?(0,X.jsxs)(`p`,{className:q.warn,role:`alert`,children:[`This looks like it contains `,ge,`. MEMORY.md is sent to every seat’s model — remove it before saving.`]}):null,U>0?(0,X.jsxs)(`p`,{className:q.warn,role:`alert`,children:[U===1?`One`:U,` `,(0,X.jsx)(`code`,{children:oe}),` placeholder`,U===1?` stands`:`s stand`,` in for secret-looking text that is still in MEMORY.md. Saving `,U===1?`it`:`them`,` would replace the real value`,U===1?``:`s`,`, so Save stays off until `,U===1?`it is`:`they are`,` gone. Deleting a placeholder drops that value from the file; to keep it, edit MEMORY.md directly under `,(0,X.jsx)(`code`,{children:`~/.ashlr/verse/memory`}),`.`]}):S?(0,X.jsxs)(`p`,{className:q.hint,children:[`This copy was sanitized for the browser, so a home-folder path appears as `,(0,X.jsx)(`code`,{children:`~`}),`. Saving writes the text as shown; `,(0,X.jsx)(`code`,{children:`~`}),` names the same folder for every reader.`]}):null,T?(0,X.jsxs)(`div`,{className:q.warn,role:`alert`,children:[(0,X.jsxs)(`p`,{className:q.hint,children:[`An agent changed MEMORY.md while you were editing`,F(T.updatedAt)?` (${F(T.updatedAt)})`:``,`.`]}),(0,X.jsxs)(`div`,{className:q.memoryActions,children:[(0,X.jsx)(`button`,{type:`button`,className:`${q.secondary} ${q.small}`,disabled:D!==null||U>0,onClick:()=>void _e(!0),children:`Overwrite with mine`}),(0,X.jsx)(`button`,{type:`button`,className:`${q.cancel} ${q.small}`,disabled:D!==null,onClick:()=>W(T.content,T.contentSanitized===!0),children:`Start over from theirs`})]})]}):null,(0,X.jsxs)(`div`,{className:q.memoryActions,children:[(0,X.jsx)(`button`,{type:`button`,className:`${q.primary} ${q.small}`,disabled:D!==null||V||H||v===b||T!==null||U>0,onClick:()=>void _e(!1),children:D===`saving`?`Saving…`:`Save`}),(0,X.jsx)(`button`,{type:`button`,className:`${q.cancel} ${q.small}`,disabled:D===`saving`,onClick:()=>{_(`view`),E(null),M(null)},children:`Cancel`})]})]}):R.content.length===0?(0,X.jsxs)(`div`,{className:q.field,children:[(0,X.jsx)(`p`,{className:q.hint,children:`MEMORY.md is empty. Agents add to it as they work, or write the first entries yourself.`}),(0,X.jsx)(`div`,{className:q.memoryActions,children:(0,X.jsx)(`button`,{type:`button`,className:`${q.secondary} ${q.small}`,onClick:()=>W(``,!1),children:`Write it`})})]}):(0,X.jsxs)(`div`,{className:q.field,children:[(0,X.jsx)(`pre`,{className:q.memoryBody,tabIndex:0,"aria-label":`MEMORY.md for ${h}`,children:R.content}),(0,X.jsxs)(`p`,{className:`${q.hint} ${q.memoryMeta}`,children:[(0,X.jsx)(`span`,{children:P(R.bytes)}),F(R.updatedAt)?(0,X.jsxs)(`span`,{children:[`updated `,F(R.updatedAt)]}):null]}),R.contentSanitized?(0,X.jsxs)(`p`,{className:q.hint,children:[`Shown sanitized for the browser: a home-folder path appears as `,(0,X.jsx)(`code`,{children:`~`}),` and secret-looking text as`,` `,(0,X.jsx)(`code`,{children:oe}),`.`,ae(R.content)>0?` The real values are still in the file.`:``]}):null,g===`confirm-clear`?(0,X.jsxs)(`div`,{className:q.warn,role:`alert`,children:[(0,X.jsxs)(`p`,{className:q.hint,children:[`Clear MEMORY.md for `,h,`? Every chat on this project loses what it says. Other files in the folder stay.`]}),(0,X.jsxs)(`div`,{className:q.memoryActions,children:[(0,X.jsx)(`button`,{type:`button`,className:`${q.secondary} ${q.small} ${q.danger}`,disabled:D!==null,onClick:()=>void ye(),children:D===`clearing`?`Clearing…`:`Clear it`}),(0,X.jsx)(`button`,{type:`button`,className:`${q.cancel} ${q.small}`,onClick:()=>_(`view`),children:`Keep`})]})]}):(0,X.jsxs)(`div`,{className:q.memoryActions,children:[(0,X.jsx)(`button`,{type:`button`,className:`${q.secondary} ${q.small}`,onClick:()=>W(R.content,R.contentSanitized===!0),children:`Edit`}),(0,X.jsx)(`button`,{type:`button`,className:`${q.cancel} ${q.small}`,onClick:()=>{N(null),_(`confirm-clear`)},children:`Clear…`})]})]}),R.files.length>0?(0,X.jsxs)(`div`,{className:q.field,children:[(0,X.jsx)(`span`,{className:q.label,children:`Also in this folder`}),(0,X.jsx)(`ul`,{className:q.memoryFiles,children:R.files.map(e=>(0,X.jsx)(`li`,{children:(0,X.jsx)(`code`,{children:e})},e))})]}):null,re?(0,X.jsx)(`p`,{className:q.hint,role:`status`,children:re}):null,j?(0,X.jsx)(`p`,{className:q.error,role:`alert`,children:j}):null,(0,X.jsxs)(`details`,{children:[(0,X.jsx)(`summary`,{className:q.hint,children:`How project memory works`}),(0,X.jsxs)(`div`,{className:q.field,children:[(0,X.jsx)(`p`,{className:q.hint,children:`Claude, Codex and local seats can read and edit the file. Grok’s CLI can reach only its working folder, so a Grok seat is given the text and can only read it.`}),(0,X.jsx)(`p`,{className:q.hint,children:`A chat copies the memory into its instructions when it starts, so every turn re-sends the same prefix and the provider’s prompt cache keeps working. Chats already open see your edits when they next read the file; the switch above applies to new chats.`}),(0,X.jsxs)(`p`,{className:q.hint,children:[`It lives on this machine under `,(0,X.jsx)(`code`,{children:`~/.ashlr/verse/memory`}),`, readable only by you. It is sent to every seat’s model, so never put secrets in it.`]}),(0,X.jsx)(`p`,{className:q.hint,children:se}),B?null:(0,X.jsxs)(`p`,{className:q.hint,children:[`Memory is on for every project unless switched off per project.`,` `,(0,X.jsx)(`button`,{type:`button`,className:q.link,disabled:D!==null,onClick:()=>void xe(!1),children:`Turn it off for every project`})]})]})]})]}):(0,X.jsxs)(`div`,{className:q.searchError,role:`alert`,children:[(0,X.jsxs)(`span`,{children:[`Could not read this project’s memory: `,G(d.error)]}),(0,X.jsx)(`button`,{type:`button`,className:`${q.secondary} ${q.small}`,onClick:f,children:`Retry`})]}),(0,X.jsx)(s,{open:m.dialog.open,reason:m.dialog.reason,tokenLabel:`Mutation token`,tokenHelp:`the mutation token ashlr verse printed`,onClose:m.dialog.onClose,onUnlocked:m.dialog.onUnlocked})]})}var Z={roots:`_roots_afeac_8`,title:`_title_afeac_10`,count:`_count_afeac_22`,workspace:`_workspace_afeac_30`,list:`_list_afeac_36`,root:`_root_afeac_8`,rootHead:`_rootHead_afeac_57`,name:`_name_afeac_64`,badge:`_badge_afeac_72`,path:`_path_afeac_84`,git:`_git_afeac_97`,remote:`_remote_afeac_98`,caveat:`_caveat_afeac_99`,note:`_note_afeac_116`,error:`_error_afeac_117`};function Pe({session:e,data:t,error:n=null}){return!e||t!==null&&t.roots.length<=1&&t.workspaceId===null?null:(0,X.jsxs)(`section`,{className:Z.roots,"aria-labelledby":`verse-res-roots`,children:[(0,X.jsxs)(`h3`,{id:`verse-res-roots`,className:Z.title,children:[`Folders`,t?(0,X.jsx)(`span`,{className:Z.count,children:t.roots.length}):null]}),t?.workspaceName?(0,X.jsxs)(`p`,{className:Z.workspace,children:[`Workspace `,(0,X.jsx)(`strong`,{children:t.workspaceName})]}):null,n?(0,X.jsx)(`p`,{role:`alert`,className:Z.error,children:n}):null,(0,X.jsx)(`ul`,{className:Z.list,children:(t?.roots??[]).map(e=>{let t=I(e),n=R(e);return(0,X.jsxs)(`li`,{className:Z.root,"data-tone":L(e),children:[(0,X.jsxs)(`div`,{className:Z.rootHead,children:[(0,X.jsx)(`span`,{className:Z.name,children:e.name}),(0,X.jsx)(`span`,{className:Z.badge,children:e.primary?`primary`:`added`})]}),(0,X.jsx)(`p`,{className:Z.path,title:e.path,children:he(e.path)}),(0,X.jsx)(`p`,{className:Z.git,children:t??`not a git repo`}),e.git?.remote?(0,X.jsx)(`p`,{className:Z.remote,children:e.git.remote}):null,n?(0,X.jsx)(`p`,{className:Z.caveat,children:n}):null]},e.path)})}),(t?.notes??[]).map(e=>(0,X.jsx)(`p`,{className:Z.note,children:e},e))]})}var Q={pane:`_pane_1f7em_6`,section:`_section_1f7em_13`,sectionTitle:`_sectionTitle_1f7em_19`,count:`_count_1f7em_31`,muted:`_muted_1f7em_37`,action:`_action_1f7em_43`,hint:`_hint_1f7em_46`,reserve:`_reserve_1f7em_54`,link:`_link_1f7em_73`,task:`_task_1f7em_74`,taskList:`_taskList_1f7em_88`,taskMark:`_taskMark_1f7em_113`,"pane-pulse":`_pane-pulse_1f7em_1`,taskName:`_taskName_1f7em_125`,taskDetail:`_taskDetail_1f7em_134`,taskTime:`_taskTime_1f7em_142`,engineTick:`_engineTick_1f7em_152`},Fe=3e4;function Ie(e){let[t,n]=(0,J.useState)(()=>Date.now());return(0,J.useEffect)(()=>{if(!e)return;n(Date.now());let t=setInterval(()=>n(Date.now()),Fe);return()=>clearInterval(t)},[e]),t}function Le({session:e,seats:t,events:n,roots:r,rootsError:i,onHandoff:a,handoffDisabledReason:o=null,onOpenAccounts:s,visible:c}){let l=Ie(c&&e!==null);return(0,X.jsxs)(`div`,{className:Q.pane,"aria-label":`Context`,children:[(0,X.jsxs)(`section`,{className:Q.section,"aria-labelledby":`dock-context-chat`,children:[(0,X.jsx)(`h3`,{id:`dock-context-chat`,className:Q.sectionTitle,children:`This chat`}),e?(0,X.jsx)(De,{session:e,seats:t,events:n,now:l}):(0,X.jsx)(`p`,{className:Q.muted,children:`Open a chat to see its usage and context.`})]}),e?(0,X.jsx)(`div`,{className:Q.section,children:(0,X.jsx)(Pe,{session:e,data:r,error:i})}):null,e&&a?(0,X.jsxs)(`section`,{className:Q.section,"aria-labelledby":`dock-context-handoff`,children:[(0,X.jsx)(`h3`,{id:`dock-context-handoff`,className:Q.sectionTitle,children:`Handoff`}),(0,X.jsx)(`p`,{className:Q.muted,children:`Verse drafts a note from this chat's log — free — and opens a fresh chat with it in the message box. Nothing is sent until you press Send.`}),(0,X.jsx)(`button`,{type:`button`,className:Q.action,onClick:a,disabled:o!==null,title:o??void 0,children:`Continue in a fresh chat…`}),(0,X.jsx)(`p`,{className:`${Q.muted} ${Q.reserve}`,children:o??``})]}):null,(0,X.jsx)(`div`,{className:Q.section,children:(0,X.jsx)(Oe,{projectPath:e?.projectPath??null,refreshKey:e?.turnCount??0})}),(0,X.jsx)(`div`,{className:Q.section,children:(0,X.jsx)(`button`,{type:`button`,className:Q.link,onClick:s,children:`Accounts & capacity →`})})]})}var $={dock:`_dock_10ssf_8`,sheetLayer:`_sheetLayer_10ssf_25`,scrim:`_scrim_10ssf_37`,"dock-fade":`_dock-fade_10ssf_1`,"dock-in-right":`_dock-in-right_10ssf_1`,"dock-in-up":`_dock-in-up_10ssf_1`,grabber:`_grabber_10ssf_64`,head:`_head_10ssf_75`,tabs:`_tabs_10ssf_86`,tabWrap:`_tabWrap_10ssf_97`,tab:`_tab_10ssf_86`,tabClose:`_tabClose_10ssf_135`,headActions:`_headActions_10ssf_156`,iconButton:`_iconButton_10ssf_162`,plus:`_plus_10ssf_179`,body:`_body_10ssf_185`,pane:`_pane_10ssf_191`,splitHandle:`_splitHandle_10ssf_200`,widthHandle:`_widthHandle_10ssf_220`};function Re(e){let t=W(e)?.keys[0];return t?f(t):null}var ze=16,Be=64,Ve=.05;function He(e){let{presentation:t,windowWidth:n,columnWidth:r}=e,{state:i,requests:a}=v(),o=(0,J.useRef)(null),s=(0,J.useRef)(new Map),c=(0,J.useId)(),[f,p]=(0,J.useState)(null),[_,b]=(0,J.useState)(()=>new Set(i.open&&i.active?[i.active]:[])),x=i.tabs.filter(Ce),S=i.active!==null&&x.includes(i.active)?i.active:x[0]??null,C=i.splitWith!==null&&x.includes(i.splitWith)&&i.splitWith!==S?i.splitWith:null,w=i.open&&S!==null,T=t!==`column`;(0,J.useEffect)(()=>{w&&b(e=>{let t=[S,C].filter(e=>e!==null),n=new Set([...e].filter(e=>x.includes(e)));for(let e of t)n.add(e);return n.size===e.size&&[...n].every(t=>e.has(t))?e:n})},[w,S,C,x.join(`|`)]),(0,J.useEffect)(()=>{if(!w||!T)return;let e=document.activeElement;return o.current?.focus({preventScroll:!0}),()=>{e&&document.contains(e)&&e.focus({preventScroll:!0})}},[w,T]);let E=(0,J.useCallback)(e=>{if(!T)return;let t=e.target instanceof Element&&e.target.closest(`[data-dock-pane="terminal"]`)!==null;if(e.key===`Escape`&&!t&&!e.defaultPrevented){e.preventDefault(),g();return}if(e.key!==`Tab`||t)return;let n=o.current;if(!n)return;let r=Array.from(n.querySelectorAll(`button:not([disabled]), [href], input:not([disabled]), select, textarea, [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.closest(`[hidden]`));if(r.length===0)return;let i=r[0],a=r[r.length-1];e.shiftKey&&document.activeElement===i?(e.preventDefault(),a.focus()):!e.shiftKey&&document.activeElement===a&&(e.preventDefault(),i.focus())},[T]);if(!w)return null;function D(e,t){let n=x.indexOf(t),r;if(e.key===`ArrowRight`)r=x[(n+1)%x.length];else if(e.key===`ArrowLeft`)r=x[(n-1+x.length)%x.length];else if(e.key===`Home`)r=x[0];else if(e.key===`End`)r=x[x.length-1];else if((e.key===`Delete`||e.key===`Backspace`)&&x.length>0){e.preventDefault(),h(t);return}r&&(e.preventDefault(),m(r),s.current.get(r)?.focus())}let O=u.map(e=>e.id).filter(e=>Ce(e)&&!x.includes(e)),ee=O.map(e=>({id:e,label:K[e],icon:H[e]({}),onSelect:()=>m(e)})),k=[...u.map(e=>e.id).filter(e=>Ce(e)&&e!==S).map(e=>({id:e,label:`${K[e]} below`,icon:H[e]({}),onSelect:()=>y(e)})),...C?[{id:`unsplit`,label:`One pane`,separated:!0,onSelect:()=>y(null)}]:[]],A=Re(`dock.toggle`),te=t===`column`?r:l(i.width,n),ne=`Dock: ${K[S]}${C?` over ${K[C]}`:``}`,j=(0,X.jsxs)(`aside`,{ref:o,className:$.dock,"data-presentation":t,"data-split":C?`true`:void 0,"aria-label":ne,role:T?`dialog`:`complementary`,"aria-modal":T?!0:void 0,tabIndex:-1,style:t===`bottom-sheet`?{height:`${d.bottomSheetHeightVh}vh`}:{width:te},onKeyDown:E,children:[t===`column`?(0,X.jsx)(We,{width:te,windowWidth:n}):null,t===`bottom-sheet`?(0,X.jsx)(`span`,{className:$.grabber,"aria-hidden":`true`}):null,(0,X.jsxs)(`div`,{className:$.head,children:[(0,X.jsx)(`div`,{className:$.tabs,role:`tablist`,"aria-label":`Dock panes`,children:x.map(e=>{let t=H[e],n=e===S,r=e===C;return(0,X.jsxs)(`div`,{className:$.tabWrap,"data-selected":n||void 0,"data-below":r||void 0,children:[(0,X.jsxs)(`button`,{ref:t=>{t?s.current.set(e,t):s.current.delete(e)},type:`button`,role:`tab`,id:`${c}-tab-${e}`,"aria-selected":n,"aria-controls":`${c}-pane-${e}`,tabIndex:n?0:-1,className:$.tab,onClick:()=>m(e),onKeyDown:t=>D(t,e),title:r?`${K[e]} (lower pane)`:void 0,children:[(0,X.jsx)(t,{size:14}),(0,X.jsx)(`span`,{className:$.tabLabel,children:K[e]})]}),(0,X.jsx)(`button`,{type:`button`,className:$.tabClose,"aria-label":`Close ${K[e]}`,title:`Close ${K[e]}`,tabIndex:-1,onClick:()=>h(e),children:(0,X.jsx)(U,{size:12})})]},e)})}),(0,X.jsxs)(`div`,{className:$.headActions,children:[(0,X.jsx)(`button`,{type:`button`,className:$.iconButton,"aria-label":`Add a pane`,title:O.length>0?`Add a pane`:`Every pane is already open`,"aria-haspopup":`menu`,"aria-expanded":f?.kind===`add`,disabled:O.length===0,onClick:e=>p({kind:`add`,anchor:z(e.currentTarget),from:e.currentTarget}),children:(0,X.jsx)(`span`,{className:$.plus,"aria-hidden":`true`,children:`+`})}),t!==`bottom-sheet`&&k.length>0?(0,X.jsx)(`button`,{type:`button`,className:$.iconButton,"aria-label":C?`Split: change or undo`:`Split the dock`,title:C?`Change the split`:`Split: show a second pane below`,"aria-haspopup":`menu`,"aria-expanded":f?.kind===`split`,"aria-pressed":C!==null,onClick:e=>p({kind:`split`,anchor:z(e.currentTarget),from:e.currentTarget}),children:(0,X.jsx)(ge,{size:14})}):null,(0,X.jsx)(`button`,{type:`button`,className:$.iconButton,"aria-label":`Close the dock`,title:`Close the dock${A?` (${A})`:``}`,onClick:g,children:(0,X.jsx)(U,{size:14})})]})]}),(0,X.jsxs)(`div`,{className:$.body,children:[x.filter(e=>_.has(e)||e===S||e===C).map(n=>{let r=n===S||n===C&&t!==`bottom-sheet`,o=n===S?`top`:n===C?`bottom`:`hidden`;return(0,X.jsx)(`div`,{id:`${c}-pane-${n}`,role:`tabpanel`,"aria-labelledby":`${c}-tab-${n}`,className:$.pane,"data-dock-pane":n,"data-position":r?o:`hidden`,hidden:!r,inert:!r,style:r&&C&&t!==`bottom-sheet`?{flexBasis:`${(o===`top`?i.splitRatio:1-i.splitRatio)*100}%`,order:o===`top`?0:2}:void 0,children:(0,X.jsx)(Ue,{pane:n,visible:r,...e,requests:a})},n)}),C&&t!==`bottom-sheet`?(0,X.jsx)(Ge,{ratio:i.splitRatio,lower:K[C]}):null]}),f?(0,X.jsx)(B,{label:f.kind===`add`?`Add a pane`:`Split the dock`,items:f.kind===`add`?ee:k,anchor:f.anchor,returnFocus:f.from,onClose:()=>p(null)}):null]});return T?(0,X.jsxs)(`div`,{className:$.sheetLayer,"data-presentation":t,children:[(0,X.jsx)(`button`,{type:`button`,className:$.scrim,"aria-label":`Close the dock`,tabIndex:-1,onClick:g}),j]}):j}function Ue({pane:e,visible:t,sessionId:n,roots:r,turnFiles:i,onSendToChat:a,onAddToMessage:o,renderTasks:s,renderContext:c,requests:l}){if(e===`tasks`)return(0,X.jsx)(X.Fragment,{children:s(t)});if(e===`context`)return(0,X.jsx)(X.Fragment,{children:c(t)});if(n===null){let t=Re(`chat.new`);return(0,X.jsx)(ye,{compact:!0,title:`Open a chat to use ${K[e]}`,body:`Pick a chat in the sidebar${t?` or start one with ${t}`:``}. ${K[e]} works in that chat's folders.`})}switch(e){case`terminal`:return(0,X.jsx)(be,{sessionId:n,roots:r,request:l.terminal,onSendToChat:a,visible:t});case`preview`:return(0,X.jsx)(Se,{sessionId:n,roots:r,request:l.preview,visible:t,onOpenTerminal:_});case`diff`:return(0,X.jsx)(xe,{sessionId:n,roots:r,request:l.diff,turnFiles:i,onAddToMessage:o,visible:t});default:return null}}function We({width:e,windowWidth:t}){let n=Math.max(d.minWidth,Math.floor(t*d.maxWidthFraction)),r=(0,J.useRef)(null),[i,a]=(0,J.useState)(!1);function o(t){t.button===0&&(t.preventDefault(),r.current={startX:t.clientX,startWidth:e},t.currentTarget.setPointerCapture?.(t.pointerId),a(!0),document.body.setAttribute(`data-verse-resizing`,`true`))}function s(e){let n=r.current;n&&p(l(n.startWidth+(n.startX-e.clientX),t))}function c(){r.current=null,a(!1),document.body.removeAttribute(`data-verse-resizing`)}(0,J.useEffect)(()=>()=>document.body.removeAttribute(`data-verse-resizing`),[]);function u(r){let i=r.shiftKey?Be:ze,a=null;r.key===`ArrowLeft`?a=e+i:r.key===`ArrowRight`?a=e-i:r.key===`Home`?a=d.minWidth:r.key===`End`&&(a=n),a!==null&&(r.preventDefault(),p(l(a,t)))}return(0,X.jsx)(`div`,{className:$.widthHandle,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize the dock`,"aria-valuemin":d.minWidth,"aria-valuemax":n,"aria-valuenow":Math.round(e),tabIndex:0,"data-dragging":i||void 0,onPointerDown:o,onPointerMove:s,onPointerUp:c,onPointerCancel:c,onLostPointerCapture:c,onDoubleClick:()=>p(d.defaultWidth),onKeyDown:u})}function Ge({ratio:e,lower:t}){let n=(0,J.useRef)(null),r=(0,J.useRef)(null);function i(e){if(e.button!==0)return;let t=n.current?.parentElement;if(!t)return;e.preventDefault();let i=t.getBoundingClientRect();r.current={top:i.top,height:i.height},e.currentTarget.setPointerCapture?.(e.pointerId)}function a(e){let t=r.current;!t||t.height<=0||b((e.clientY-t.top)/t.height)}function o(t){t.key===`ArrowUp`?(t.preventDefault(),b(e-Ve)):t.key===`ArrowDown`&&(t.preventDefault(),b(e+Ve))}return(0,X.jsx)(`div`,{ref:n,className:$.splitHandle,role:`separator`,"aria-orientation":`horizontal`,"aria-label":`Resize: ${t} below`,"aria-valuemin":Math.round(d.splitRatio.min*100),"aria-valuemax":Math.round(d.splitRatio.max*100),"aria-valuenow":Math.round(e*100),tabIndex:0,style:{order:1},onPointerDown:i,onPointerMove:a,onPointerUp:()=>{r.current=null},onPointerCancel:()=>{r.current=null},onDoubleClick:()=>b(d.splitRatio.default),onKeyDown:o})}var Ke=20,qe={running:`running`,done:`done`,failed:`failed`};function Je({turnTasks:e,otherChats:t,hasSession:n,onOpenSession:r}){let i=W(`chat.new`)?.keys[0],a=i?f(i):null,o=e.filter(e=>e.status===`running`),s=e.filter(e=>e.status!==`running`).slice(0,Ke);return(0,X.jsxs)(`div`,{className:Q.pane,"aria-label":`Tasks`,children:[(0,X.jsxs)(`section`,{className:Q.section,"aria-labelledby":`dock-tasks-turn`,children:[(0,X.jsxs)(`h3`,{id:`dock-tasks-turn`,className:Q.sectionTitle,children:[`This chat `,(0,X.jsx)(`span`,{className:Q.count,children:o.length>0?`${o.length} running`:``})]}),n?e.length===0?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`p`,{className:Q.muted,children:`No tool calls in the latest turn.`}),(0,X.jsx)(`p`,{className:Q.hint,children:`Send a message: each tool the agent runs shows up here, and a click jumps to it in the chat.`})]}):(0,X.jsx)(`ul`,{className:Q.taskList,children:[...o,...s].map(e=>(0,X.jsx)(`li`,{children:(0,X.jsxs)(`button`,{type:`button`,className:Q.task,"data-status":e.status,onClick:()=>{Ee(me(e.toolUseId))},"aria-label":`${e.kind===`subagent`?`Subagent`:e.name}: ${e.detail}, ${qe[e.status]}. Jump to it in the chat.`,children:[(0,X.jsx)(`span`,{className:Q.taskMark,"data-status":e.status,"aria-hidden":`true`}),(0,X.jsx)(`span`,{className:Q.taskName,title:e.kind===`subagent`?`Subagent`:e.name,children:e.kind===`subagent`?`Subagent`:e.name}),(0,X.jsx)(`span`,{className:Q.taskDetail,title:e.detail,children:e.detail}),(0,X.jsx)(`span`,{className:Q.taskTime,children:e.status===`running`?(0,X.jsx)(V,{since:e.startedAt}):e.status===`failed`?`failed`:e.durationMs!==null&&e.durationMs>0?D(e.durationMs):`done`})]})},e.toolUseId))}):(0,X.jsx)(`p`,{className:Q.muted,children:`Open a chat to see its tool calls here.`})]}),(0,X.jsxs)(`section`,{className:Q.section,"aria-labelledby":`dock-tasks-chats`,children:[(0,X.jsxs)(`h3`,{id:`dock-tasks-chats`,className:Q.sectionTitle,children:[`Other chats `,(0,X.jsx)(`span`,{className:Q.count,children:t.length>0?`${t.length} running`:``})]}),t.length===0?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`p`,{className:Q.muted,children:`No other chat is running.`}),(0,X.jsxs)(`p`,{className:Q.hint,children:[a?`Start another with ${a}`:`Start another chat`,` and it shows here while it works, one click away.`]})]}):(0,X.jsx)(`ul`,{className:Q.taskList,children:t.map(e=>(0,X.jsx)(`li`,{children:(0,X.jsxs)(`button`,{type:`button`,className:Q.task,"data-status":`running`,onClick:()=>r(e.sessionId),"aria-label":`${e.title||`Untitled chat`}, running${e.live?`: ${e.live}`:``}. Open this chat.`,children:[(0,X.jsx)(Ye,{engine:e.engine}),(0,X.jsx)(`span`,{className:Q.taskName,title:e.title||`Untitled chat`,children:e.title||`Untitled chat`}),(0,X.jsx)(`span`,{className:Q.taskDetail,title:e.live??void 0,children:e.live??``}),(0,X.jsx)(`span`,{className:Q.taskTime,children:e.startedAt?(0,X.jsx)(V,{since:e.startedAt}):`running`})]})},e.sessionId))})]})]})}function Ye({engine:e}){return(0,X.jsx)(`span`,{className:Q.engineTick,"data-engine":e,"aria-hidden":`true`,children:(0,X.jsx)(c,{engine:e,size:12})})}function Xe(e){let{session:t,seats:n,events:r,rootsData:i,rootsError:a,otherRunning:o,dispatchEnabled:s,onOpenSession:c,onHandoff:l,onOpenAccounts:u}=e,d=s?t?.status===`running`?`Available when the current turn finishes.`:null:`Sending is disabled on this server.`;return(0,X.jsx)(He,{presentation:e.presentation,windowWidth:e.windowWidth,columnWidth:e.columnWidth,sessionId:t?.id??null,roots:e.roots,turnFiles:e.turnFiles,onSendToChat:e.onSendToChat,onAddToMessage:e.onAddToMessage,renderTasks:()=>(0,X.jsx)(Ze,{sessionId:t?.id??null,otherChats:o,onOpenSession:c}),renderContext:e=>(0,X.jsx)(Le,{session:t,seats:n,events:r,roots:i,rootsError:a,visible:e,onHandoff:t?()=>l(t.id):void 0,handoffDisabledReason:d,onOpenAccounts:u})})}function Ze({sessionId:e,otherChats:t,onOpenSession:n}){let r=we(e),i=(0,J.useMemo)(()=>_e(r.items),[r.items]);return(0,X.jsx)(Je,{turnTasks:i,otherChats:t,hasSession:e!==null,onOpenSession:n})}export{Xe as DockHost};
|
|
2
|
-
//# sourceMappingURL=DockHost-
|
|
1
|
+
import{a as e,c as t,n}from"./index-QesfXBsb.js";import{h as r,i,o as a,p as o}from"./global-CNNGMril.js";import{t as s}from"./MutationTokenDialog-T7gv3a9r.js";import{t as c}from"./ProviderLogo-CT2cSfkg.js";import{Dt as l,Et as u,Tt as d,_n as f,bt as p,ht as m,mt as h,pt as g,vt as _,wt as v,xt as y,yt as b}from"./VerseConsoleApp-BCY5uSok.js";import{D as x,E as S,O as C,_ as w,c as T,o as E,s as D}from"./verse-model-MMySehjj.js";import{p as O}from"./format-Dk4Fmxax.js";import{a as ee,c as k,d as A,l as te,u as ne}from"./context-queries-CktFQqSS.js";import{T as j,f as M,t as re,v as N,w as ie}from"./context-model-Co4wh3SM.js";import{_ as ae,a as oe,i as se,k as ce,l as P,m as le,n as ue,r as de,v as F,w as fe,x as pe}from"./context-model-DV1zCfAm.js";import{d as I,p as L,u as R}from"./workspace-model-Dukb2wwv.js";import{n as z,t as B}from"./ActionMenu-B4-39f2S.js";import{s as me}from"./tool-semantics-GX8ScuSH.js";import{d as V,h as he,i as H,l as ge,n as U}from"./dock-icons-BFuBbqJl.js";import{a as W}from"./command-catalog-CF0cQQac.js";import{currentTurnTasks as _e}from"./tasks-model-D6WFVULI.js";import{n as ve,t as G}from"./use-token-gate-CYcfk_GS.js";import{t as ye}from"./EmptyState-DPrd2aak.js";import{a as be,n as xe,r as Se}from"./slots-DHKQDoE6.js";import{i as Ce,r as K,t as we}from"./useVerseTranscript-BQ0J6Xhx.js";import{t as Te}from"./Switch-PMixU6b0.js";import{t as q}from"./context.module-BijAfoJw.js";import{s as Ee}from"./ChatSection-D6WybBpB.js";var J=t(e(),1),Y={usage:`_usage_1xfeo_5`,muted:`_muted_1xfeo_21`,subTitle:`_subTitle_1xfeo_23`,idleWarn:`_idleWarn_1xfeo_35`},X=n();function De({session:e,seats:t,events:n,now:r}){let i=e.usage,a=ie(e,t),o=j(n??[]),s=i.inputTokens+i.cacheReadTokens+i.cacheCreationTokens,c=N(i),l=e.compactionCount??o.compactions,u=M(e,a.tokens,r,C(n??[])),d=a.exact?``:`≤`,f=o.exact?``:`≤`;return(0,X.jsxs)(X.Fragment,{children:[(0,X.jsxs)(`dl`,{className:Y.usage,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Input`}),(0,X.jsx)(`dd`,{children:x(i.inputTokens)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Output`}),(0,X.jsx)(`dd`,{children:x(i.outputTokens)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Cache read`}),(0,X.jsx)(`dd`,{children:x(i.cacheReadTokens)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Cache write`}),(0,X.jsx)(`dd`,{children:x(i.cacheCreationTokens)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Turns`}),(0,X.jsx)(`dd`,{children:e.turnCount})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Context`}),(0,X.jsxs)(`dd`,{title:a.exact?void 0:`An upper bound: the CLI reported only the turn total, which sums every call.`,children:[d,x(a.tokens),a.window===null?``:` / ${E(a.window)}`]})]})]}),(0,X.jsx)(`h4`,{className:Y.subTitle,children:`Efficiency`}),(0,X.jsxs)(`dl`,{className:Y.usage,"aria-label":`Context efficiency`,children:[(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Cache hit`}),(0,X.jsx)(`dd`,{title:`Share of prompt tokens served from the provider's cache: cache read ÷ (input + cache read + cache write).`,children:c===null?s>0?`none reported`:`—`:O(c)})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Compactions`}),(0,X.jsx)(`dd`,{children:l})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Avg context / turn`}),(0,X.jsx)(`dd`,{children:o.average===null?`—`:`${f}${x(o.average)}`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Peak context`}),(0,X.jsx)(`dd`,{children:o.peak===null?`—`:`${f}${x(o.peak)}`})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Mode`}),(0,X.jsx)(`dd`,{children:re[a.mode]})]}),(0,X.jsxs)(`div`,{children:[(0,X.jsx)(`dt`,{children:`Compacts at`}),(0,X.jsx)(`dd`,{children:a.autoCompactAt===null?`—`:`≈${x(a.autoCompactAt)}`})]})]}),(0,X.jsxs)(`p`,{className:Y.muted,children:[a.source===null?a.window===null?`Window unknown for this chat.`:`Window as stored when this chat was created; how it was known was not recorded.`:`Window ${S(a.source,e.engine)}.`,o.turns>0&&!o.exact?` Figures marked ≤ are upper bounds: the CLI reported only turn totals.`:``]}),(0,X.jsx)(`p`,{className:Y.muted,children:e.memoryEnabled===!0?e.engine===`local`?`Shared project memory was given to this chat’s agent when it started.`:`Shared project memory was given to this chat’s agent when it started: a block of up to ${ue/1024} KB in its system prompt, re-sent every turn (cached after the first), plus the agent’s own reads and updates of MEMORY.md — a little of this seat’s usage.`:`This chat started without shared project memory.`}),u===null?null:(0,X.jsx)(`p`,{role:`status`,className:Y.idleWarn,children:u.local?`Idle for ${T(u.idleMs)}: the local model has likely dropped this chat from its cache, so the next turn re-processes ~${x(u.tokens)} tokens before it replies — time, not spend.`:`Idle for ${T(u.idleMs)}, past the ~1 h prompt-cache lifetime: the next turn likely re-reads ~${x(u.tokens)} tokens uncached, at full price.`})]})}function Oe({projectPath:e,refreshKey:t}){let n=(0,J.useId)();return e?(0,X.jsx)(Ne,{projectPath:e,refreshKey:t},e):(0,X.jsxs)(`section`,{className:q.memory,"aria-labelledby":n,children:[(0,X.jsx)(`h3`,{id:n,className:q.memoryHead,children:`Project memory`}),(0,X.jsx)(`p`,{className:q.hint,children:`Open a chat to see the memory its project shares across seats.`})]})}var ke=`Saving writes MEMORY.md for this project. Every seat on it reads this file.`,Ae=`Clearing empties MEMORY.md for every chat on this project.`,je=`This changes whether new chats on this project are given shared memory.`,Me=`This changes whether new chats on ANY project are given shared memory.`;function Ne({projectPath:e,refreshKey:t}){let n=(0,J.useId)(),c=(0,J.useId)(),l=(0,J.useId)(),u=(0,J.useMemo)(()=>ne(e),[e]),d=o(u),f=r(u),p=o(te),m=ve(),h=w(e),[g,_]=(0,J.useState)(`view`),[v,y]=(0,J.useState)(``),[b,x]=(0,J.useState)(``),[S,C]=(0,J.useState)(!1),[T,E]=(0,J.useState)(null),[D,O]=(0,J.useState)(null),[j,M]=(0,J.useState)(null),[re,N]=(0,J.useState)(null),ie=(0,J.useRef)(null),ue=(0,J.useRef)(t);(0,J.useEffect)(()=>{t!==ue.current&&(ue.current=t,f())},[t,f]),(0,J.useEffect)(()=>{let e=ie.current;g===`edit`&&e&&(e.focus(),e.setSelectionRange(e.value.length,e.value.length))},[g]);let[I,L]=(0,J.useState)(null);(0,J.useEffect)(()=>{I!==null&&d.status===`success`&&L(null)},[I,d.status]);let R=I!==null&&d.status!==`success`?I:d.data,z=d.error instanceof a&&d.error.status===404,B=p.data?!p.data.memory.enabled:!1,me=(0,J.useMemo)(()=>fe(v),[v]),V=me>ce,he=(0,J.useMemo)(()=>le({projectPath:e,content:v}),[e,v]),H=!V&&he>de,ge=g===`edit`?pe(v):null,U=g===`edit`&&S?ae(v):0;function W(e,t){y(e),x(e),C(t),E(null),M(null),N(null),_(`edit`)}async function _e(t=!1){if(!D){O(`saving`),M(null);try{let n=await ee(e);if(!t&&n.content!==b){E(n);return}let r=await m.run(ke,()=>A(e,v));if(r===null)return;L(r),E(null),_(`view`),N(r.content.length===0?`Saved — MEMORY.md is now empty.`:`Saved.`)}catch(e){M(G(e))}finally{O(null)}}}async function ye(){if(!D){O(`clearing`),M(null);try{let t=await m.run(Ae,()=>A(e,``));if(t===null)return;L(t),_(`view`),N(`Cleared. Agents start MEMORY.md afresh on their next write.`)}catch(e){M(G(e))}finally{O(null)}}}async function be(t){if(!D){O(`toggling`),M(null),N(null);try{await m.run(je,()=>k({projectPath:e,memoryEnabled:t}))!==null&&N(t?`New chats on ${h} will get shared memory. Chats already open keep what they started with.`:`New chats on ${h} will start without shared memory. The file is kept.`)}catch(e){M(G(e))}finally{O(null)}}}async function xe(e){if(!D){O(`toggling`),M(null),N(null);try{await m.run(Me,()=>k({memoryEnabled:e}))}catch(e){M(G(e))}finally{O(null)}}}let Se=R?B?`off everywhere`:R.enabled?`on`:`off`:null;return(0,X.jsxs)(`section`,{className:q.memory,"aria-labelledby":n,"data-project":e,children:[(0,X.jsxs)(`h3`,{id:n,className:q.memoryHead,children:[(0,X.jsx)(`span`,{children:`Project memory`}),Se?(0,X.jsx)(`span`,{className:q.memoryState,children:Se}):null,z?null:(0,X.jsx)(`button`,{type:`button`,className:q.memoryHeadAction,onClick:f,"aria-label":`Refresh project memory`,children:`Refresh`})]}),(0,X.jsxs)(`p`,{className:q.hint,children:[`One `,(0,X.jsx)(`code`,{children:`MEMORY.md`}),` shared by every chat on `,(0,X.jsx)(`strong`,{title:e,children:h}),`, whichever seat runs it. Agents keep it current — decisions and why, conventions, gotchas, plan status.`]}),z?(0,X.jsxs)(`p`,{className:q.hint,children:[`This server has no project memory yet — update Ashlr and restart `,(0,X.jsx)(`code`,{children:`ashlr verse`}),`.`]}):d.status===`loading`||d.status===`idle`&&!R?(0,X.jsxs)(`div`,{"aria-busy":`true`,children:[(0,X.jsx)(i,{width:`80%`}),(0,X.jsx)(i,{width:`60%`}),(0,X.jsx)(i,{width:`70%`})]}):R?(0,X.jsxs)(X.Fragment,{children:[B?(0,X.jsxs)(`div`,{className:q.field,children:[(0,X.jsx)(`p`,{className:q.hint,children:`Shared memory is off for every project, so new chats start without it.`}),(0,X.jsx)(`div`,{className:q.memoryActions,children:(0,X.jsx)(`button`,{type:`button`,className:`${q.secondary} ${q.small}`,disabled:D!==null,onClick:()=>void xe(!0),children:`Turn memory on`})})]}):(0,X.jsx)(Te,{checked:R.enabled,disabled:D!==null||!p.data,onChange:e=>void be(e),label:`Give new chats on ${h} this memory`}),g===`edit`?(0,X.jsxs)(`div`,{className:q.field,children:[(0,X.jsx)(`label`,{className:q.label,htmlFor:c,children:`Edit MEMORY.md`}),(0,X.jsx)(`textarea`,{id:c,ref:ie,className:q.textarea,value:v,rows:12,spellCheck:!1,"aria-describedby":l,"aria-invalid":V||H?!0:void 0,onChange:e=>y(e.target.value)}),(0,X.jsxs)(`p`,{id:l,className:`${q.hint} ${q.counter} ${V||H?q.counterOver:``}`,children:[P(me),` of `,P(ce),V?` — over the limit; trim it to save.`:``,H?` — ${P(he)} once line breaks and quotes are encoded for sending, over the ${P(de)} request limit; trim it to save.`:``]}),ge?(0,X.jsxs)(`p`,{className:q.warn,role:`alert`,children:[`This looks like it contains `,ge,`. MEMORY.md is sent to every seat’s model — remove it before saving.`]}):null,U>0?(0,X.jsxs)(`p`,{className:q.warn,role:`alert`,children:[U===1?`One`:U,` `,(0,X.jsx)(`code`,{children:oe}),` placeholder`,U===1?` stands`:`s stand`,` in for secret-looking text that is still in MEMORY.md. Saving `,U===1?`it`:`them`,` would replace the real value`,U===1?``:`s`,`, so Save stays off until `,U===1?`it is`:`they are`,` gone. Deleting a placeholder drops that value from the file; to keep it, edit MEMORY.md directly under `,(0,X.jsx)(`code`,{children:`~/.ashlr/verse/memory`}),`.`]}):S?(0,X.jsxs)(`p`,{className:q.hint,children:[`This copy was sanitized for the browser, so a home-folder path appears as `,(0,X.jsx)(`code`,{children:`~`}),`. Saving writes the text as shown; `,(0,X.jsx)(`code`,{children:`~`}),` names the same folder for every reader.`]}):null,T?(0,X.jsxs)(`div`,{className:q.warn,role:`alert`,children:[(0,X.jsxs)(`p`,{className:q.hint,children:[`An agent changed MEMORY.md while you were editing`,F(T.updatedAt)?` (${F(T.updatedAt)})`:``,`.`]}),(0,X.jsxs)(`div`,{className:q.memoryActions,children:[(0,X.jsx)(`button`,{type:`button`,className:`${q.secondary} ${q.small}`,disabled:D!==null||U>0,onClick:()=>void _e(!0),children:`Overwrite with mine`}),(0,X.jsx)(`button`,{type:`button`,className:`${q.cancel} ${q.small}`,disabled:D!==null,onClick:()=>W(T.content,T.contentSanitized===!0),children:`Start over from theirs`})]})]}):null,(0,X.jsxs)(`div`,{className:q.memoryActions,children:[(0,X.jsx)(`button`,{type:`button`,className:`${q.primary} ${q.small}`,disabled:D!==null||V||H||v===b||T!==null||U>0,onClick:()=>void _e(!1),children:D===`saving`?`Saving…`:`Save`}),(0,X.jsx)(`button`,{type:`button`,className:`${q.cancel} ${q.small}`,disabled:D===`saving`,onClick:()=>{_(`view`),E(null),M(null)},children:`Cancel`})]})]}):R.content.length===0?(0,X.jsxs)(`div`,{className:q.field,children:[(0,X.jsx)(`p`,{className:q.hint,children:`MEMORY.md is empty. Agents add to it as they work, or write the first entries yourself.`}),(0,X.jsx)(`div`,{className:q.memoryActions,children:(0,X.jsx)(`button`,{type:`button`,className:`${q.secondary} ${q.small}`,onClick:()=>W(``,!1),children:`Write it`})})]}):(0,X.jsxs)(`div`,{className:q.field,children:[(0,X.jsx)(`pre`,{className:q.memoryBody,tabIndex:0,"aria-label":`MEMORY.md for ${h}`,children:R.content}),(0,X.jsxs)(`p`,{className:`${q.hint} ${q.memoryMeta}`,children:[(0,X.jsx)(`span`,{children:P(R.bytes)}),F(R.updatedAt)?(0,X.jsxs)(`span`,{children:[`updated `,F(R.updatedAt)]}):null]}),R.contentSanitized?(0,X.jsxs)(`p`,{className:q.hint,children:[`Shown sanitized for the browser: a home-folder path appears as `,(0,X.jsx)(`code`,{children:`~`}),` and secret-looking text as`,` `,(0,X.jsx)(`code`,{children:oe}),`.`,ae(R.content)>0?` The real values are still in the file.`:``]}):null,g===`confirm-clear`?(0,X.jsxs)(`div`,{className:q.warn,role:`alert`,children:[(0,X.jsxs)(`p`,{className:q.hint,children:[`Clear MEMORY.md for `,h,`? Every chat on this project loses what it says. Other files in the folder stay.`]}),(0,X.jsxs)(`div`,{className:q.memoryActions,children:[(0,X.jsx)(`button`,{type:`button`,className:`${q.secondary} ${q.small} ${q.danger}`,disabled:D!==null,onClick:()=>void ye(),children:D===`clearing`?`Clearing…`:`Clear it`}),(0,X.jsx)(`button`,{type:`button`,className:`${q.cancel} ${q.small}`,onClick:()=>_(`view`),children:`Keep`})]})]}):(0,X.jsxs)(`div`,{className:q.memoryActions,children:[(0,X.jsx)(`button`,{type:`button`,className:`${q.secondary} ${q.small}`,onClick:()=>W(R.content,R.contentSanitized===!0),children:`Edit`}),(0,X.jsx)(`button`,{type:`button`,className:`${q.cancel} ${q.small}`,onClick:()=>{N(null),_(`confirm-clear`)},children:`Clear…`})]})]}),R.files.length>0?(0,X.jsxs)(`div`,{className:q.field,children:[(0,X.jsx)(`span`,{className:q.label,children:`Also in this folder`}),(0,X.jsx)(`ul`,{className:q.memoryFiles,children:R.files.map(e=>(0,X.jsx)(`li`,{children:(0,X.jsx)(`code`,{children:e})},e))})]}):null,re?(0,X.jsx)(`p`,{className:q.hint,role:`status`,children:re}):null,j?(0,X.jsx)(`p`,{className:q.error,role:`alert`,children:j}):null,(0,X.jsxs)(`details`,{children:[(0,X.jsx)(`summary`,{className:q.hint,children:`How project memory works`}),(0,X.jsxs)(`div`,{className:q.field,children:[(0,X.jsx)(`p`,{className:q.hint,children:`Claude, Codex and local seats can read and edit the file. Grok’s CLI can reach only its working folder, so a Grok seat is given the text and can only read it.`}),(0,X.jsx)(`p`,{className:q.hint,children:`A chat copies the memory into its instructions when it starts, so every turn re-sends the same prefix and the provider’s prompt cache keeps working. Chats already open see your edits when they next read the file; the switch above applies to new chats.`}),(0,X.jsxs)(`p`,{className:q.hint,children:[`It lives on this machine under `,(0,X.jsx)(`code`,{children:`~/.ashlr/verse/memory`}),`, readable only by you. It is sent to every seat’s model, so never put secrets in it.`]}),(0,X.jsx)(`p`,{className:q.hint,children:se}),B?null:(0,X.jsxs)(`p`,{className:q.hint,children:[`Memory is on for every project unless switched off per project.`,` `,(0,X.jsx)(`button`,{type:`button`,className:q.link,disabled:D!==null,onClick:()=>void xe(!1),children:`Turn it off for every project`})]})]})]})]}):(0,X.jsxs)(`div`,{className:q.searchError,role:`alert`,children:[(0,X.jsxs)(`span`,{children:[`Could not read this project’s memory: `,G(d.error)]}),(0,X.jsx)(`button`,{type:`button`,className:`${q.secondary} ${q.small}`,onClick:f,children:`Retry`})]}),(0,X.jsx)(s,{open:m.dialog.open,reason:m.dialog.reason,tokenLabel:`Mutation token`,tokenHelp:`the mutation token ashlr verse printed`,onClose:m.dialog.onClose,onUnlocked:m.dialog.onUnlocked})]})}var Z={roots:`_roots_afeac_8`,title:`_title_afeac_10`,count:`_count_afeac_22`,workspace:`_workspace_afeac_30`,list:`_list_afeac_36`,root:`_root_afeac_8`,rootHead:`_rootHead_afeac_57`,name:`_name_afeac_64`,badge:`_badge_afeac_72`,path:`_path_afeac_84`,git:`_git_afeac_97`,remote:`_remote_afeac_98`,caveat:`_caveat_afeac_99`,note:`_note_afeac_116`,error:`_error_afeac_117`};function Pe({session:e,data:t,error:n=null}){return!e||t!==null&&t.roots.length<=1&&t.workspaceId===null?null:(0,X.jsxs)(`section`,{className:Z.roots,"aria-labelledby":`verse-res-roots`,children:[(0,X.jsxs)(`h3`,{id:`verse-res-roots`,className:Z.title,children:[`Folders`,t?(0,X.jsx)(`span`,{className:Z.count,children:t.roots.length}):null]}),t?.workspaceName?(0,X.jsxs)(`p`,{className:Z.workspace,children:[`Workspace `,(0,X.jsx)(`strong`,{children:t.workspaceName})]}):null,n?(0,X.jsx)(`p`,{role:`alert`,className:Z.error,children:n}):null,(0,X.jsx)(`ul`,{className:Z.list,children:(t?.roots??[]).map(e=>{let t=I(e),n=R(e);return(0,X.jsxs)(`li`,{className:Z.root,"data-tone":L(e),children:[(0,X.jsxs)(`div`,{className:Z.rootHead,children:[(0,X.jsx)(`span`,{className:Z.name,children:e.name}),(0,X.jsx)(`span`,{className:Z.badge,children:e.primary?`primary`:`added`})]}),(0,X.jsx)(`p`,{className:Z.path,title:e.path,children:he(e.path)}),(0,X.jsx)(`p`,{className:Z.git,children:t??`not a git repo`}),e.git?.remote?(0,X.jsx)(`p`,{className:Z.remote,children:e.git.remote}):null,n?(0,X.jsx)(`p`,{className:Z.caveat,children:n}):null]},e.path)})}),(t?.notes??[]).map(e=>(0,X.jsx)(`p`,{className:Z.note,children:e},e))]})}var Q={pane:`_pane_1f7em_6`,section:`_section_1f7em_13`,sectionTitle:`_sectionTitle_1f7em_19`,count:`_count_1f7em_31`,muted:`_muted_1f7em_37`,action:`_action_1f7em_43`,hint:`_hint_1f7em_46`,reserve:`_reserve_1f7em_54`,link:`_link_1f7em_73`,task:`_task_1f7em_74`,taskList:`_taskList_1f7em_88`,taskMark:`_taskMark_1f7em_113`,"pane-pulse":`_pane-pulse_1f7em_1`,taskName:`_taskName_1f7em_125`,taskDetail:`_taskDetail_1f7em_134`,taskTime:`_taskTime_1f7em_142`,engineTick:`_engineTick_1f7em_152`},Fe=3e4;function Ie(e){let[t,n]=(0,J.useState)(()=>Date.now());return(0,J.useEffect)(()=>{if(!e)return;n(Date.now());let t=setInterval(()=>n(Date.now()),Fe);return()=>clearInterval(t)},[e]),t}function Le({session:e,seats:t,events:n,roots:r,rootsError:i,onHandoff:a,handoffDisabledReason:o=null,onOpenAccounts:s,visible:c}){let l=Ie(c&&e!==null);return(0,X.jsxs)(`div`,{className:Q.pane,"aria-label":`Context`,children:[(0,X.jsxs)(`section`,{className:Q.section,"aria-labelledby":`dock-context-chat`,children:[(0,X.jsx)(`h3`,{id:`dock-context-chat`,className:Q.sectionTitle,children:`This chat`}),e?(0,X.jsx)(De,{session:e,seats:t,events:n,now:l}):(0,X.jsx)(`p`,{className:Q.muted,children:`Open a chat to see its usage and context.`})]}),e?(0,X.jsx)(`div`,{className:Q.section,children:(0,X.jsx)(Pe,{session:e,data:r,error:i})}):null,e&&a?(0,X.jsxs)(`section`,{className:Q.section,"aria-labelledby":`dock-context-handoff`,children:[(0,X.jsx)(`h3`,{id:`dock-context-handoff`,className:Q.sectionTitle,children:`Handoff`}),(0,X.jsx)(`p`,{className:Q.muted,children:`Verse drafts a note from this chat's log — free — and opens a fresh chat with it in the message box. Nothing is sent until you press Send.`}),(0,X.jsx)(`button`,{type:`button`,className:Q.action,onClick:a,disabled:o!==null,title:o??void 0,children:`Continue in a fresh chat…`}),(0,X.jsx)(`p`,{className:`${Q.muted} ${Q.reserve}`,children:o??``})]}):null,(0,X.jsx)(`div`,{className:Q.section,children:(0,X.jsx)(Oe,{projectPath:e?.projectPath??null,refreshKey:e?.turnCount??0})}),(0,X.jsx)(`div`,{className:Q.section,children:(0,X.jsx)(`button`,{type:`button`,className:Q.link,onClick:s,children:`Accounts & capacity →`})})]})}var $={dock:`_dock_10ssf_8`,sheetLayer:`_sheetLayer_10ssf_25`,scrim:`_scrim_10ssf_37`,"dock-fade":`_dock-fade_10ssf_1`,"dock-in-right":`_dock-in-right_10ssf_1`,"dock-in-up":`_dock-in-up_10ssf_1`,grabber:`_grabber_10ssf_64`,head:`_head_10ssf_75`,tabs:`_tabs_10ssf_86`,tabWrap:`_tabWrap_10ssf_97`,tab:`_tab_10ssf_86`,tabClose:`_tabClose_10ssf_135`,headActions:`_headActions_10ssf_156`,iconButton:`_iconButton_10ssf_162`,plus:`_plus_10ssf_179`,body:`_body_10ssf_185`,pane:`_pane_10ssf_191`,splitHandle:`_splitHandle_10ssf_200`,widthHandle:`_widthHandle_10ssf_220`};function Re(e){let t=W(e)?.keys[0];return t?f(t):null}var ze=16,Be=64,Ve=.05;function He(e){let{presentation:t,windowWidth:n,columnWidth:r}=e,{state:i,requests:a}=v(),o=(0,J.useRef)(null),s=(0,J.useRef)(new Map),c=(0,J.useId)(),[f,p]=(0,J.useState)(null),[_,b]=(0,J.useState)(()=>new Set(i.open&&i.active?[i.active]:[])),x=i.tabs.filter(Ce),S=i.active!==null&&x.includes(i.active)?i.active:x[0]??null,C=i.splitWith!==null&&x.includes(i.splitWith)&&i.splitWith!==S?i.splitWith:null,w=i.open&&S!==null,T=t!==`column`;(0,J.useEffect)(()=>{w&&b(e=>{let t=[S,C].filter(e=>e!==null),n=new Set([...e].filter(e=>x.includes(e)));for(let e of t)n.add(e);return n.size===e.size&&[...n].every(t=>e.has(t))?e:n})},[w,S,C,x.join(`|`)]),(0,J.useEffect)(()=>{if(!w||!T)return;let e=document.activeElement;return o.current?.focus({preventScroll:!0}),()=>{e&&document.contains(e)&&e.focus({preventScroll:!0})}},[w,T]);let E=(0,J.useCallback)(e=>{if(!T)return;let t=e.target instanceof Element&&e.target.closest(`[data-dock-pane="terminal"]`)!==null;if(e.key===`Escape`&&!t&&!e.defaultPrevented){e.preventDefault(),g();return}if(e.key!==`Tab`||t)return;let n=o.current;if(!n)return;let r=Array.from(n.querySelectorAll(`button:not([disabled]), [href], input:not([disabled]), select, textarea, [tabindex]:not([tabindex="-1"])`)).filter(e=>!e.closest(`[hidden]`));if(r.length===0)return;let i=r[0],a=r[r.length-1];e.shiftKey&&document.activeElement===i?(e.preventDefault(),a.focus()):!e.shiftKey&&document.activeElement===a&&(e.preventDefault(),i.focus())},[T]);if(!w)return null;function D(e,t){let n=x.indexOf(t),r;if(e.key===`ArrowRight`)r=x[(n+1)%x.length];else if(e.key===`ArrowLeft`)r=x[(n-1+x.length)%x.length];else if(e.key===`Home`)r=x[0];else if(e.key===`End`)r=x[x.length-1];else if((e.key===`Delete`||e.key===`Backspace`)&&x.length>0){e.preventDefault(),h(t);return}r&&(e.preventDefault(),m(r),s.current.get(r)?.focus())}let O=u.map(e=>e.id).filter(e=>Ce(e)&&!x.includes(e)),ee=O.map(e=>({id:e,label:K[e],icon:H[e]({}),onSelect:()=>m(e)})),k=[...u.map(e=>e.id).filter(e=>Ce(e)&&e!==S).map(e=>({id:e,label:`${K[e]} below`,icon:H[e]({}),onSelect:()=>y(e)})),...C?[{id:`unsplit`,label:`One pane`,separated:!0,onSelect:()=>y(null)}]:[]],A=Re(`dock.toggle`),te=t===`column`?r:l(i.width,n),ne=`Dock: ${K[S]}${C?` over ${K[C]}`:``}`,j=(0,X.jsxs)(`aside`,{ref:o,className:$.dock,"data-presentation":t,"data-split":C?`true`:void 0,"aria-label":ne,role:T?`dialog`:`complementary`,"aria-modal":T?!0:void 0,tabIndex:-1,style:t===`bottom-sheet`?{height:`${d.bottomSheetHeightVh}vh`}:{width:te},onKeyDown:E,children:[t===`column`?(0,X.jsx)(We,{width:te,windowWidth:n}):null,t===`bottom-sheet`?(0,X.jsx)(`span`,{className:$.grabber,"aria-hidden":`true`}):null,(0,X.jsxs)(`div`,{className:$.head,children:[(0,X.jsx)(`div`,{className:$.tabs,role:`tablist`,"aria-label":`Dock panes`,children:x.map(e=>{let t=H[e],n=e===S,r=e===C;return(0,X.jsxs)(`div`,{className:$.tabWrap,"data-selected":n||void 0,"data-below":r||void 0,children:[(0,X.jsxs)(`button`,{ref:t=>{t?s.current.set(e,t):s.current.delete(e)},type:`button`,role:`tab`,id:`${c}-tab-${e}`,"aria-selected":n,"aria-controls":`${c}-pane-${e}`,tabIndex:n?0:-1,className:$.tab,onClick:()=>m(e),onKeyDown:t=>D(t,e),title:r?`${K[e]} (lower pane)`:void 0,children:[(0,X.jsx)(t,{size:14}),(0,X.jsx)(`span`,{className:$.tabLabel,children:K[e]})]}),(0,X.jsx)(`button`,{type:`button`,className:$.tabClose,"aria-label":`Close ${K[e]}`,title:`Close ${K[e]}`,tabIndex:-1,onClick:()=>h(e),children:(0,X.jsx)(U,{size:12})})]},e)})}),(0,X.jsxs)(`div`,{className:$.headActions,children:[(0,X.jsx)(`button`,{type:`button`,className:$.iconButton,"aria-label":`Add a pane`,title:O.length>0?`Add a pane`:`Every pane is already open`,"aria-haspopup":`menu`,"aria-expanded":f?.kind===`add`,disabled:O.length===0,onClick:e=>p({kind:`add`,anchor:z(e.currentTarget),from:e.currentTarget}),children:(0,X.jsx)(`span`,{className:$.plus,"aria-hidden":`true`,children:`+`})}),t!==`bottom-sheet`&&k.length>0?(0,X.jsx)(`button`,{type:`button`,className:$.iconButton,"aria-label":C?`Split: change or undo`:`Split the dock`,title:C?`Change the split`:`Split: show a second pane below`,"aria-haspopup":`menu`,"aria-expanded":f?.kind===`split`,"aria-pressed":C!==null,onClick:e=>p({kind:`split`,anchor:z(e.currentTarget),from:e.currentTarget}),children:(0,X.jsx)(ge,{size:14})}):null,(0,X.jsx)(`button`,{type:`button`,className:$.iconButton,"aria-label":`Close the dock`,title:`Close the dock${A?` (${A})`:``}`,onClick:g,children:(0,X.jsx)(U,{size:14})})]})]}),(0,X.jsxs)(`div`,{className:$.body,children:[x.filter(e=>_.has(e)||e===S||e===C).map(n=>{let r=n===S||n===C&&t!==`bottom-sheet`,o=n===S?`top`:n===C?`bottom`:`hidden`;return(0,X.jsx)(`div`,{id:`${c}-pane-${n}`,role:`tabpanel`,"aria-labelledby":`${c}-tab-${n}`,className:$.pane,"data-dock-pane":n,"data-position":r?o:`hidden`,hidden:!r,inert:!r,style:r&&C&&t!==`bottom-sheet`?{flexBasis:`${(o===`top`?i.splitRatio:1-i.splitRatio)*100}%`,order:o===`top`?0:2}:void 0,children:(0,X.jsx)(Ue,{pane:n,visible:r,...e,requests:a})},n)}),C&&t!==`bottom-sheet`?(0,X.jsx)(Ge,{ratio:i.splitRatio,lower:K[C]}):null]}),f?(0,X.jsx)(B,{label:f.kind===`add`?`Add a pane`:`Split the dock`,items:f.kind===`add`?ee:k,anchor:f.anchor,returnFocus:f.from,onClose:()=>p(null)}):null]});return T?(0,X.jsxs)(`div`,{className:$.sheetLayer,"data-presentation":t,children:[(0,X.jsx)(`button`,{type:`button`,className:$.scrim,"aria-label":`Close the dock`,tabIndex:-1,onClick:g}),j]}):j}function Ue({pane:e,visible:t,sessionId:n,roots:r,turnFiles:i,onSendToChat:a,onAddToMessage:o,renderTasks:s,renderContext:c,requests:l}){if(e===`tasks`)return(0,X.jsx)(X.Fragment,{children:s(t)});if(e===`context`)return(0,X.jsx)(X.Fragment,{children:c(t)});if(n===null){let t=Re(`chat.new`);return(0,X.jsx)(ye,{compact:!0,title:`Open a chat to use ${K[e]}`,body:`Pick a chat in the sidebar${t?` or start one with ${t}`:``}. ${K[e]} works in that chat's folders.`})}switch(e){case`terminal`:return(0,X.jsx)(be,{sessionId:n,roots:r,request:l.terminal,onSendToChat:a,visible:t});case`preview`:return(0,X.jsx)(Se,{sessionId:n,roots:r,request:l.preview,visible:t,onOpenTerminal:_});case`diff`:return(0,X.jsx)(xe,{sessionId:n,roots:r,request:l.diff,turnFiles:i,onAddToMessage:o,visible:t});default:return null}}function We({width:e,windowWidth:t}){let n=Math.max(d.minWidth,Math.floor(t*d.maxWidthFraction)),r=(0,J.useRef)(null),[i,a]=(0,J.useState)(!1);function o(t){t.button===0&&(t.preventDefault(),r.current={startX:t.clientX,startWidth:e},t.currentTarget.setPointerCapture?.(t.pointerId),a(!0),document.body.setAttribute(`data-verse-resizing`,`true`))}function s(e){let n=r.current;n&&p(l(n.startWidth+(n.startX-e.clientX),t))}function c(){r.current=null,a(!1),document.body.removeAttribute(`data-verse-resizing`)}(0,J.useEffect)(()=>()=>document.body.removeAttribute(`data-verse-resizing`),[]);function u(r){let i=r.shiftKey?Be:ze,a=null;r.key===`ArrowLeft`?a=e+i:r.key===`ArrowRight`?a=e-i:r.key===`Home`?a=d.minWidth:r.key===`End`&&(a=n),a!==null&&(r.preventDefault(),p(l(a,t)))}return(0,X.jsx)(`div`,{className:$.widthHandle,role:`separator`,"aria-orientation":`vertical`,"aria-label":`Resize the dock`,"aria-valuemin":d.minWidth,"aria-valuemax":n,"aria-valuenow":Math.round(e),tabIndex:0,"data-dragging":i||void 0,onPointerDown:o,onPointerMove:s,onPointerUp:c,onPointerCancel:c,onLostPointerCapture:c,onDoubleClick:()=>p(d.defaultWidth),onKeyDown:u})}function Ge({ratio:e,lower:t}){let n=(0,J.useRef)(null),r=(0,J.useRef)(null);function i(e){if(e.button!==0)return;let t=n.current?.parentElement;if(!t)return;e.preventDefault();let i=t.getBoundingClientRect();r.current={top:i.top,height:i.height},e.currentTarget.setPointerCapture?.(e.pointerId)}function a(e){let t=r.current;!t||t.height<=0||b((e.clientY-t.top)/t.height)}function o(t){t.key===`ArrowUp`?(t.preventDefault(),b(e-Ve)):t.key===`ArrowDown`&&(t.preventDefault(),b(e+Ve))}return(0,X.jsx)(`div`,{ref:n,className:$.splitHandle,role:`separator`,"aria-orientation":`horizontal`,"aria-label":`Resize: ${t} below`,"aria-valuemin":Math.round(d.splitRatio.min*100),"aria-valuemax":Math.round(d.splitRatio.max*100),"aria-valuenow":Math.round(e*100),tabIndex:0,style:{order:1},onPointerDown:i,onPointerMove:a,onPointerUp:()=>{r.current=null},onPointerCancel:()=>{r.current=null},onDoubleClick:()=>b(d.splitRatio.default),onKeyDown:o})}var Ke=20,qe={running:`running`,done:`done`,failed:`failed`};function Je({turnTasks:e,otherChats:t,hasSession:n,onOpenSession:r}){let i=W(`chat.new`)?.keys[0],a=i?f(i):null,o=e.filter(e=>e.status===`running`),s=e.filter(e=>e.status!==`running`).slice(0,Ke);return(0,X.jsxs)(`div`,{className:Q.pane,"aria-label":`Tasks`,children:[(0,X.jsxs)(`section`,{className:Q.section,"aria-labelledby":`dock-tasks-turn`,children:[(0,X.jsxs)(`h3`,{id:`dock-tasks-turn`,className:Q.sectionTitle,children:[`This chat `,(0,X.jsx)(`span`,{className:Q.count,children:o.length>0?`${o.length} running`:``})]}),n?e.length===0?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`p`,{className:Q.muted,children:`No tool calls in the latest turn.`}),(0,X.jsx)(`p`,{className:Q.hint,children:`Send a message: each tool the agent runs shows up here, and a click jumps to it in the chat.`})]}):(0,X.jsx)(`ul`,{className:Q.taskList,children:[...o,...s].map(e=>(0,X.jsx)(`li`,{children:(0,X.jsxs)(`button`,{type:`button`,className:Q.task,"data-status":e.status,onClick:()=>{Ee(me(e.toolUseId))},"aria-label":`${e.kind===`subagent`?`Subagent`:e.name}: ${e.detail}, ${qe[e.status]}. Jump to it in the chat.`,children:[(0,X.jsx)(`span`,{className:Q.taskMark,"data-status":e.status,"aria-hidden":`true`}),(0,X.jsx)(`span`,{className:Q.taskName,title:e.kind===`subagent`?`Subagent`:e.name,children:e.kind===`subagent`?`Subagent`:e.name}),(0,X.jsx)(`span`,{className:Q.taskDetail,title:e.detail,children:e.detail}),(0,X.jsx)(`span`,{className:Q.taskTime,children:e.status===`running`?(0,X.jsx)(V,{since:e.startedAt}):e.status===`failed`?`failed`:e.durationMs!==null&&e.durationMs>0?D(e.durationMs):`done`})]})},e.toolUseId))}):(0,X.jsx)(`p`,{className:Q.muted,children:`Open a chat to see its tool calls here.`})]}),(0,X.jsxs)(`section`,{className:Q.section,"aria-labelledby":`dock-tasks-chats`,children:[(0,X.jsxs)(`h3`,{id:`dock-tasks-chats`,className:Q.sectionTitle,children:[`Other chats `,(0,X.jsx)(`span`,{className:Q.count,children:t.length>0?`${t.length} running`:``})]}),t.length===0?(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`p`,{className:Q.muted,children:`No other chat is running.`}),(0,X.jsxs)(`p`,{className:Q.hint,children:[a?`Start another with ${a}`:`Start another chat`,` and it shows here while it works, one click away.`]})]}):(0,X.jsx)(`ul`,{className:Q.taskList,children:t.map(e=>(0,X.jsx)(`li`,{children:(0,X.jsxs)(`button`,{type:`button`,className:Q.task,"data-status":`running`,onClick:()=>r(e.sessionId),"aria-label":`${e.title||`Untitled chat`}, running${e.live?`: ${e.live}`:``}. Open this chat.`,children:[(0,X.jsx)(Ye,{engine:e.engine}),(0,X.jsx)(`span`,{className:Q.taskName,title:e.title||`Untitled chat`,children:e.title||`Untitled chat`}),(0,X.jsx)(`span`,{className:Q.taskDetail,title:e.live??void 0,children:e.live??``}),(0,X.jsx)(`span`,{className:Q.taskTime,children:e.startedAt?(0,X.jsx)(V,{since:e.startedAt}):`running`})]})},e.sessionId))})]})]})}function Ye({engine:e}){return(0,X.jsx)(`span`,{className:Q.engineTick,"data-engine":e,"aria-hidden":`true`,children:(0,X.jsx)(c,{engine:e,size:12})})}function Xe(e){let{session:t,seats:n,events:r,rootsData:i,rootsError:a,otherRunning:o,dispatchEnabled:s,onOpenSession:c,onHandoff:l,onOpenAccounts:u}=e,d=s?t?.status===`running`?`Available when the current turn finishes.`:null:`Sending is disabled on this server.`;return(0,X.jsx)(He,{presentation:e.presentation,windowWidth:e.windowWidth,columnWidth:e.columnWidth,sessionId:t?.id??null,roots:e.roots,turnFiles:e.turnFiles,onSendToChat:e.onSendToChat,onAddToMessage:e.onAddToMessage,renderTasks:()=>(0,X.jsx)(Ze,{sessionId:t?.id??null,otherChats:o,onOpenSession:c}),renderContext:e=>(0,X.jsx)(Le,{session:t,seats:n,events:r,roots:i,rootsError:a,visible:e,onHandoff:t?()=>l(t.id):void 0,handoffDisabledReason:d,onOpenAccounts:u})})}function Ze({sessionId:e,otherChats:t,onOpenSession:n}){let r=we(e),i=(0,J.useMemo)(()=>_e(r.items),[r.items]);return(0,X.jsx)(Je,{turnTasks:i,otherChats:t,hasSession:e!==null,onOpenSession:n})}export{Xe as DockHost};
|
|
2
|
+
//# sourceMappingURL=DockHost-DW9q0NdR.js.map
|