@ashlr/hub 3.13.0 → 3.14.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 +74 -0
- package/dist/authority-surface.json +204 -124
- package/dist/build-identity.json +2 -2
- package/dist/cli/authority.js +112 -18
- package/dist/cli/authority.js.map +1 -1
- package/dist/cli/comms.d.ts +33 -19
- package/dist/cli/comms.js +128 -151
- package/dist/cli/comms.js.map +1 -1
- package/dist/cli/completions.js +1 -1
- package/dist/cli/completions.js.map +1 -1
- package/dist/cli/daemon.js +29 -0
- package/dist/cli/daemon.js.map +1 -1
- package/dist/cli/director.d.ts +8 -12
- package/dist/cli/director.js +17 -52
- package/dist/cli/director.js.map +1 -1
- package/dist/cli/fleet.js +4 -1
- package/dist/cli/fleet.js.map +1 -1
- package/dist/cli/help.js +1 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/leader.d.ts +27 -3
- package/dist/cli/leader.js +253 -4
- package/dist/cli/leader.js.map +1 -1
- package/dist/core/authority/server-enforcement.d.ts +110 -0
- package/dist/core/authority/server-enforcement.js +260 -0
- package/dist/core/authority/server-enforcement.js.map +1 -0
- package/dist/core/authority/standing-grant.d.ts +24 -4
- package/dist/core/authority/standing-grant.js +19 -3
- package/dist/core/authority/standing-grant.js.map +1 -1
- package/dist/core/cloud/timeline.js +13 -7
- package/dist/core/cloud/timeline.js.map +1 -1
- package/dist/core/comms/change-digest.d.ts +130 -0
- package/dist/core/comms/change-digest.js +451 -0
- package/dist/core/comms/change-digest.js.map +1 -0
- package/dist/core/comms/director-prompt.d.ts +4 -5
- package/dist/core/comms/director-prompt.js +4 -71
- package/dist/core/comms/director-prompt.js.map +1 -1
- package/dist/core/comms/director.d.ts +24 -61
- package/dist/core/comms/director.js +29 -382
- package/dist/core/comms/director.js.map +1 -1
- package/dist/core/comms/dispatch.d.ts +37 -12
- package/dist/core/comms/dispatch.js +244 -177
- package/dist/core/comms/dispatch.js.map +1 -1
- package/dist/core/comms/elon-dialogue.d.ts +23 -15
- package/dist/core/comms/elon-dialogue.js +36 -307
- package/dist/core/comms/elon-dialogue.js.map +1 -1
- package/dist/core/comms/fleet-pulse.js +4 -7
- package/dist/core/comms/fleet-pulse.js.map +1 -1
- package/dist/core/comms/handlers.d.ts +10 -6
- package/dist/core/comms/handlers.js +14 -48
- package/dist/core/comms/handlers.js.map +1 -1
- package/dist/core/comms/migrations.d.ts +47 -0
- package/dist/core/comms/migrations.js +125 -0
- package/dist/core/comms/migrations.js.map +1 -0
- package/dist/core/comms/requests.d.ts +32 -5
- package/dist/core/comms/requests.js +101 -5
- package/dist/core/comms/requests.js.map +1 -1
- package/dist/core/comms/telegram-channel.d.ts +104 -0
- package/dist/core/comms/telegram-channel.js +622 -0
- package/dist/core/comms/telegram-channel.js.map +1 -0
- package/dist/core/comms/telegram-thread-map.d.ts +56 -0
- package/dist/core/comms/telegram-thread-map.js +144 -0
- package/dist/core/comms/telegram-thread-map.js.map +1 -0
- package/dist/core/daemon/capacity-publisher.d.ts +8 -1
- package/dist/core/daemon/capacity-publisher.js +40 -2
- package/dist/core/daemon/capacity-publisher.js.map +1 -1
- package/dist/core/daemon/loop.js +18 -4
- package/dist/core/daemon/loop.js.map +1 -1
- package/dist/core/daemon/tick-deadline.d.ts +44 -0
- package/dist/core/daemon/tick-deadline.js +83 -0
- package/dist/core/daemon/tick-deadline.js.map +1 -0
- package/dist/core/daemon/tick-hooks.d.ts +7 -0
- package/dist/core/daemon/tick-hooks.js.map +1 -1
- package/dist/core/daemon/tick-progress.d.ts +39 -0
- package/dist/core/daemon/tick-progress.js +194 -0
- package/dist/core/daemon/tick-progress.js.map +1 -0
- package/dist/core/dashboard.js +3 -1
- package/dist/core/dashboard.js.map +1 -1
- package/dist/core/fleet/fleet-merge-state.d.ts +6 -0
- package/dist/core/fleet/fleet-merge-state.js.map +1 -1
- package/dist/core/fleet/host-merge.d.ts +9 -0
- package/dist/core/fleet/host-merge.js +13 -2
- package/dist/core/fleet/host-merge.js.map +1 -1
- package/dist/core/fleet/merge-gates.d.ts +13 -0
- package/dist/core/fleet/merge-gates.js +14 -0
- package/dist/core/fleet/merge-gates.js.map +1 -1
- package/dist/core/fleet/mirrors.d.ts +162 -6
- package/dist/core/fleet/mirrors.js +1051 -49
- package/dist/core/fleet/mirrors.js.map +1 -1
- package/dist/core/fleet/standing-merge-pass.d.ts +8 -0
- package/dist/core/fleet/standing-merge-pass.js +72 -1
- package/dist/core/fleet/standing-merge-pass.js.map +1 -1
- package/dist/core/fleet/status.d.ts +17 -0
- package/dist/core/fleet/status.js +22 -0
- package/dist/core/fleet/status.js.map +1 -1
- package/dist/core/fleet/tick-hooks-live.d.ts +1 -1
- package/dist/core/fleet/tick-hooks-live.js +13 -3
- package/dist/core/fleet/tick-hooks-live.js.map +1 -1
- package/dist/core/git.d.ts +17 -0
- package/dist/core/git.js +124 -25
- package/dist/core/git.js.map +1 -1
- package/dist/core/goals/open-goals.d.ts +47 -0
- package/dist/core/goals/open-goals.js +33 -0
- package/dist/core/goals/open-goals.js.map +1 -0
- package/dist/core/inbox/merge.d.ts +5 -0
- package/dist/core/inbox/merge.js +58 -2
- package/dist/core/inbox/merge.js.map +1 -1
- package/dist/core/integrations/locus.d.ts +28 -0
- package/dist/core/integrations/locus.js +155 -30
- package/dist/core/integrations/locus.js.map +1 -1
- package/dist/core/integrations/telegram-format.d.ts +40 -0
- package/dist/core/integrations/telegram-format.js +123 -0
- package/dist/core/integrations/telegram-format.js.map +1 -0
- package/dist/core/integrations/telegram.d.ts +60 -4
- package/dist/core/integrations/telegram.js +161 -28
- package/dist/core/integrations/telegram.js.map +1 -1
- package/dist/core/mcp-registry.d.ts +12 -0
- package/dist/core/mcp-registry.js +70 -0
- package/dist/core/mcp-registry.js.map +1 -1
- package/dist/core/observability/rollup.d.ts +12 -10
- package/dist/core/observability/rollup.js +44 -17
- package/dist/core/observability/rollup.js.map +1 -1
- package/dist/core/resources/connection-monitor.d.ts +9 -0
- package/dist/core/resources/connection-monitor.js +19 -9
- package/dist/core/resources/connection-monitor.js.map +1 -1
- package/dist/core/resources/quota-refresh-lease.d.ts +17 -0
- package/dist/core/resources/quota-refresh-lease.js +34 -1
- package/dist/core/resources/quota-refresh-lease.js.map +1 -1
- package/dist/core/routing/budget-api.d.ts +7 -1
- package/dist/core/routing/budget-api.js +56 -2
- package/dist/core/routing/budget-api.js.map +1 -1
- package/dist/core/routing/readiness-types.d.ts +82 -0
- package/dist/core/routing/readiness-types.js +23 -0
- package/dist/core/routing/readiness-types.js.map +1 -0
- package/dist/core/routing/readiness.d.ts +103 -0
- package/dist/core/routing/readiness.js +480 -0
- package/dist/core/routing/readiness.js.map +1 -0
- package/dist/core/sandbox/confine.js +22 -1
- package/dist/core/sandbox/confine.js.map +1 -1
- package/dist/core/sandbox/policy.d.ts +23 -0
- package/dist/core/sandbox/policy.js +100 -0
- package/dist/core/sandbox/policy.js.map +1 -1
- package/dist/core/types.d.ts +13 -0
- package/dist/core/types.js.map +1 -1
- package/dist/core/universe/builtins/preparation/manifest.json +1 -1
- package/dist/core/universe/builtins/preparation/preparation-bridge.mjs +1204 -939
- package/dist/core/universe/builtins/preparation/preparation-verification-fixtures.mjs +1319 -1054
- package/dist/core/usage/frontier-usage.d.ts +20 -2
- package/dist/core/usage/frontier-usage.js +75 -17
- package/dist/core/usage/frontier-usage.js.map +1 -1
- package/dist/core/verse/accounts.d.ts +45 -0
- package/dist/core/verse/accounts.js +246 -17
- package/dist/core/verse/accounts.js.map +1 -1
- package/dist/core/verse/apps-api.js +23 -11
- package/dist/core/verse/apps-api.js.map +1 -1
- package/dist/core/verse/apps.d.ts +11 -9
- package/dist/core/verse/apps.js +2 -2
- package/dist/core/verse/apps.js.map +1 -1
- package/dist/core/verse/authority-api.d.ts +8 -2
- package/dist/core/verse/authority-api.js +40 -5
- package/dist/core/verse/authority-api.js.map +1 -1
- package/dist/core/verse/autonomy-ladder.d.ts +172 -0
- package/dist/core/verse/autonomy-ladder.js +251 -0
- package/dist/core/verse/autonomy-ladder.js.map +1 -0
- package/dist/core/verse/context-fit.js +7 -5
- package/dist/core/verse/context-fit.js.map +1 -1
- package/dist/core/verse/control-api.d.ts +23 -1
- package/dist/core/verse/control-api.js +117 -10
- package/dist/core/verse/control-api.js.map +1 -1
- package/dist/core/verse/fleet-live-api.js +13 -5
- package/dist/core/verse/fleet-live-api.js.map +1 -1
- package/dist/core/verse/folder-io.d.ts +50 -0
- package/dist/core/verse/folder-io.js +142 -0
- package/dist/core/verse/folder-io.js.map +1 -0
- package/dist/core/verse/git-api.js +5 -4
- package/dist/core/verse/git-api.js.map +1 -1
- package/dist/core/verse/git-ops.d.ts +10 -1
- package/dist/core/verse/git-ops.js +18 -2
- package/dist/core/verse/git-ops.js.map +1 -1
- package/dist/core/verse/github-api.d.ts +1 -1
- package/dist/core/verse/github-api.js +5 -4
- package/dist/core/verse/github-api.js.map +1 -1
- package/dist/core/verse/github-repo.js +118 -14
- package/dist/core/verse/github-repo.js.map +1 -1
- package/dist/core/verse/leader-api.d.ts +5 -4
- package/dist/core/verse/leader-api.js +237 -10
- package/dist/core/verse/leader-api.js.map +1 -1
- package/dist/core/verse/local-models.d.ts +10 -0
- package/dist/core/verse/local-models.js +10 -1
- package/dist/core/verse/local-models.js.map +1 -1
- package/dist/core/verse/login-path.d.ts +73 -0
- package/dist/core/verse/login-path.js +123 -14
- package/dist/core/verse/login-path.js.map +1 -1
- package/dist/core/verse/mcp-control-api.js +4 -4
- package/dist/core/verse/mcp-control-api.js.map +1 -1
- package/dist/core/verse/mcp-scope.d.ts +22 -0
- package/dist/core/verse/mcp-scope.js +41 -1
- package/dist/core/verse/mcp-scope.js.map +1 -1
- package/dist/core/verse/mcp-seat-view.d.ts +10 -0
- package/dist/core/verse/mcp-seat-view.js +30 -4
- package/dist/core/verse/mcp-seat-view.js.map +1 -1
- package/dist/core/verse/overnight-api.js +20 -2
- package/dist/core/verse/overnight-api.js.map +1 -1
- package/dist/core/verse/path-guard.d.ts +24 -0
- package/dist/core/verse/path-guard.js +91 -22
- package/dist/core/verse/path-guard.js.map +1 -1
- package/dist/core/verse/preview-api.js +22 -0
- package/dist/core/verse/preview-api.js.map +1 -1
- package/dist/core/verse/projects.d.ts +21 -0
- package/dist/core/verse/projects.js +82 -0
- package/dist/core/verse/projects.js.map +1 -1
- package/dist/core/verse/session-controls-api.js +5 -3
- package/dist/core/verse/session-controls-api.js.map +1 -1
- package/dist/core/verse/session-handoff.d.ts +26 -0
- package/dist/core/verse/session-handoff.js +90 -12
- package/dist/core/verse/session-handoff.js.map +1 -1
- package/dist/core/verse/terminal-api.js +7 -4
- package/dist/core/verse/terminal-api.js.map +1 -1
- package/dist/core/verse/terminal.js +9 -5
- package/dist/core/verse/terminal.js.map +1 -1
- package/dist/core/verse/verse-api.js +81 -27
- package/dist/core/verse/verse-api.js.map +1 -1
- package/dist/core/verse/workspaces.d.ts +51 -0
- package/dist/core/verse/workspaces.js +177 -47
- package/dist/core/verse/workspaces.js.map +1 -1
- package/dist/core/vision/leader-apply.d.ts +40 -0
- package/dist/core/vision/leader-apply.js +101 -30
- package/dist/core/vision/leader-apply.js.map +1 -1
- package/dist/core/vision/leader-cadence.d.ts +114 -0
- package/dist/core/vision/leader-cadence.js +127 -0
- package/dist/core/vision/leader-cadence.js.map +1 -0
- package/dist/core/vision/leader-goal-evidence.d.ts +25 -0
- package/dist/core/vision/leader-goal-evidence.js +36 -0
- package/dist/core/vision/leader-goal-evidence.js.map +1 -0
- package/dist/core/vision/leader-health.d.ts +53 -0
- package/dist/core/vision/leader-health.js +92 -0
- package/dist/core/vision/leader-health.js.map +1 -0
- package/dist/core/vision/leader-operator.d.ts +176 -0
- package/dist/core/vision/leader-operator.js +355 -0
- package/dist/core/vision/leader-operator.js.map +1 -0
- package/dist/core/vision/leader-run-chain.d.ts +41 -0
- package/dist/core/vision/leader-run-chain.js +54 -0
- package/dist/core/vision/leader-run-chain.js.map +1 -0
- package/dist/core/vision/leader-seat-plan.d.ts +68 -0
- package/dist/core/vision/leader-seat-plan.js +93 -0
- package/dist/core/vision/leader-seat-plan.js.map +1 -0
- package/dist/core/vision/leader-seat.d.ts +71 -5
- package/dist/core/vision/leader-seat.js +235 -33
- package/dist/core/vision/leader-seat.js.map +1 -1
- package/dist/core/vision/leader-thread-types.d.ts +104 -0
- package/dist/core/vision/leader-thread-types.js +9 -0
- package/dist/core/vision/leader-thread-types.js.map +1 -0
- package/dist/core/vision/leader-thread.d.ts +138 -0
- package/dist/core/vision/leader-thread.js +926 -0
- package/dist/core/vision/leader-thread.js.map +1 -0
- package/dist/core/vision/leader-types.d.ts +75 -1
- package/dist/core/vision/leader.d.ts +88 -18
- package/dist/core/vision/leader.js +269 -69
- package/dist/core/vision/leader.js.map +1 -1
- package/dist/core/web/public/next/assets/{ActionMenu-Dwjk6rUQ.js → ActionMenu-CIiX2X8w.js} +2 -2
- package/dist/core/web/public/next/assets/{ActionMenu-Dwjk6rUQ.js.map → ActionMenu-CIiX2X8w.js.map} +1 -1
- package/dist/core/web/public/next/assets/Advanced-DHsysoIL.js +2 -0
- package/dist/core/web/public/next/assets/{Advanced-cVYTAsfB.js.map → Advanced-DHsysoIL.js.map} +1 -1
- package/dist/core/web/public/next/assets/{App-IsaWDsdF.js → App-CMeAocmW.js} +5 -5
- package/dist/core/web/public/next/assets/{App-IsaWDsdF.js.map → App-CMeAocmW.js.map} +1 -1
- package/dist/core/web/public/next/assets/AppsSection-DISYnMnc.js +2 -0
- package/dist/core/web/public/next/assets/{AppsSection-DDqeSrty.js.map → AppsSection-DISYnMnc.js.map} +1 -1
- package/dist/core/web/public/next/assets/AreaTrend-DK2Y2TbZ.js +2 -0
- package/dist/core/web/public/next/assets/AreaTrend-DK2Y2TbZ.js.map +1 -0
- package/dist/core/web/public/next/assets/{AutonomyOffState-CpFYS3tQ.js → AutonomyOffState-CEPSZToP.js} +3 -3
- package/dist/core/web/public/next/assets/{AutonomyOffState-CpFYS3tQ.js.map → AutonomyOffState-CEPSZToP.js.map} +1 -1
- package/dist/core/web/public/next/assets/AutonomySection-DWc3ciAD.js +2 -0
- package/dist/core/web/public/next/assets/{AutonomySection-Dwn8UtOy.js.map → AutonomySection-DWc3ciAD.js.map} +1 -1
- package/dist/core/web/public/next/assets/AutonomyStatus-CYaHjJ9U.js +2 -0
- package/dist/core/web/public/next/assets/AutonomyStatus-CYaHjJ9U.js.map +1 -0
- package/dist/core/web/public/next/assets/{BranchBar-ISZ7xUCj.js → BranchBar-BxhdiIpx.js} +2 -2
- package/dist/core/web/public/next/assets/{BranchBar-ISZ7xUCj.js.map → BranchBar-BxhdiIpx.js.map} +1 -1
- package/dist/core/web/public/next/assets/{BudgetControl-BARVp-En.js → BudgetControl-C-0KhjRS.js} +2 -2
- package/dist/core/web/public/next/assets/{BudgetControl-BARVp-En.js.map → BudgetControl-C-0KhjRS.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Button-DtE0rlWD.js → Button-D90dzI_o.js} +2 -2
- package/dist/core/web/public/next/assets/{Button-DtE0rlWD.js.map → Button-D90dzI_o.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CapacityStrip-DKbKA_Aa.js → CapacityStrip-qKDBC65C.js} +2 -2
- package/dist/core/web/public/next/assets/{CapacityStrip-DKbKA_Aa.js.map → CapacityStrip-qKDBC65C.js.map} +1 -1
- package/dist/core/web/public/next/assets/ChartFrame-DY-GVUb3.js +2 -0
- package/dist/core/web/public/next/assets/ChartFrame-DY-GVUb3.js.map +1 -0
- package/dist/core/web/public/next/assets/ChartFrame-DyjmyV8N.css +1 -0
- package/dist/core/web/public/next/assets/ChatSection-DlT4QU6a.js +3 -0
- package/dist/core/web/public/next/assets/{ChatSection-C9myY4ei.js.map → ChatSection-DlT4QU6a.js.map} +1 -1
- package/dist/core/web/public/next/assets/{CloudBudgetForm-CvjK4Oh6.js → CloudBudgetForm-BrNun_Yu.js} +2 -2
- package/dist/core/web/public/next/assets/{CloudBudgetForm-CvjK4Oh6.js.map → CloudBudgetForm-BrNun_Yu.js.map} +1 -1
- package/dist/core/web/public/next/assets/CommandPalette-C5lDDKN0.js +2 -0
- package/dist/core/web/public/next/assets/CommandPalette-C5lDDKN0.js.map +1 -0
- package/dist/core/web/public/next/assets/CommandSection-B0xuU-yZ.css +1 -0
- package/dist/core/web/public/next/assets/CommandSection-DXFvPgKp.js +3 -0
- package/dist/core/web/public/next/assets/CommandSection-DXFvPgKp.js.map +1 -0
- package/dist/core/web/public/next/assets/{ConfirmDialog-CLUhzaBj.js → ConfirmDialog-BR4nZQ2D.js} +2 -2
- package/dist/core/web/public/next/assets/{ConfirmDialog-CLUhzaBj.js.map → ConfirmDialog-BR4nZQ2D.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DeleteChatDialog-C_eDhV8b.js → DeleteChatDialog-BCfP12GH.js} +2 -2
- package/dist/core/web/public/next/assets/{DeleteChatDialog-C_eDhV8b.js.map → DeleteChatDialog-BCfP12GH.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Dialog-BRd_B9OE.js → Dialog-D3msQlCj.js} +2 -2
- package/dist/core/web/public/next/assets/{Dialog-BRd_B9OE.js.map → Dialog-D3msQlCj.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffPane-Cpr9soB2.js → DiffPane-Ix6hvXlY.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffPane-Cpr9soB2.js.map → DiffPane-Ix6hvXlY.js.map} +1 -1
- package/dist/core/web/public/next/assets/{DiffViewer-CNwd0W3Q.js → DiffViewer-C4WKsCIe.js} +2 -2
- package/dist/core/web/public/next/assets/{DiffViewer-CNwd0W3Q.js.map → DiffViewer-C4WKsCIe.js.map} +1 -1
- package/dist/core/web/public/next/assets/DockHost-aWP7liri.js +2 -0
- package/dist/core/web/public/next/assets/{DockHost-BcEq2qaS.js.map → DockHost-aWP7liri.js.map} +1 -1
- package/dist/core/web/public/next/assets/{EmptyState-DsN1H6MC.js → EmptyState-D2IRy3Cg.js} +2 -2
- package/dist/core/web/public/next/assets/{EmptyState-DsN1H6MC.js.map → EmptyState-D2IRy3Cg.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Epistemic-fycQTBRO.js → Epistemic-DMr18muX.js} +2 -2
- package/dist/core/web/public/next/assets/{Epistemic-fycQTBRO.js.map → Epistemic-DMr18muX.js.map} +1 -1
- package/dist/core/web/public/next/assets/{EvidenceTimeline-sCCAdnBK.js → EvidenceTimeline-DXmmz6Fi.js} +2 -2
- package/dist/core/web/public/next/assets/{EvidenceTimeline-sCCAdnBK.js.map → EvidenceTimeline-DXmmz6Fi.js.map} +1 -1
- package/dist/core/web/public/next/assets/FleetSection-BfplcwFU.js +3 -0
- package/dist/core/web/public/next/assets/FleetSection-BfplcwFU.js.map +1 -0
- package/dist/core/web/public/next/assets/Funnel-Dh2yVHws.js +2 -0
- package/dist/core/web/public/next/assets/Funnel-Dh2yVHws.js.map +1 -0
- package/dist/core/web/public/next/assets/{GearTray-CpDt0xwj.js → GearTray-Dt-ee32-.js} +2 -2
- package/dist/core/web/public/next/assets/{GearTray-CpDt0xwj.js.map → GearTray-Dt-ee32-.js.map} +1 -1
- package/dist/core/web/public/next/assets/GrowthSection-P9EUfGeA.js +2 -0
- package/dist/core/web/public/next/assets/{GrowthSection-BvZezOsX.js.map → GrowthSection-P9EUfGeA.js.map} +1 -1
- package/dist/core/web/public/next/assets/{HandoffDialog-B1G6gQyk.js → HandoffDialog-CLJQLe7M.js} +2 -2
- package/dist/core/web/public/next/assets/{HandoffDialog-B1G6gQyk.js.map → HandoffDialog-CLJQLe7M.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Input-CI0yBHmn.js → Input-D_KRJA9V.js} +2 -2
- package/dist/core/web/public/next/assets/{Input-CI0yBHmn.js.map → Input-D_KRJA9V.js.map} +1 -1
- package/dist/core/web/public/next/assets/LeaderCard-D-7DlJuR.js +2 -0
- package/dist/core/web/public/next/assets/LeaderCard-D-7DlJuR.js.map +1 -0
- package/dist/core/web/public/next/assets/LeaderCard-DNsbLwY3.css +1 -0
- package/dist/core/web/public/next/assets/LeaderConversation-DGZjWI-E.js +2 -0
- package/dist/core/web/public/next/assets/LeaderConversation-DGZjWI-E.js.map +1 -0
- package/dist/core/web/public/next/assets/LeaderConversation-DPHUTq6W.css +1 -0
- package/dist/core/web/public/next/assets/MatrixHeatmap-C7BCG2d7.js +2 -0
- package/dist/core/web/public/next/assets/MatrixHeatmap-C7BCG2d7.js.map +1 -0
- package/dist/core/web/public/next/assets/McpSection-DGbRcyv8.js +2 -0
- package/dist/core/web/public/next/assets/{McpSection-nuXer4K-.js.map → McpSection-DGbRcyv8.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdown-BCe4TsXk.js → MessageMarkdown-DFvk06qG.js} +3 -3
- package/dist/core/web/public/next/assets/{MessageMarkdown-BCe4TsXk.js.map → MessageMarkdown-DFvk06qG.js.map} +1 -1
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-DL3LU5kL.js → MessageMarkdownRenderer-BAv4oEUf.js} +2 -2
- package/dist/core/web/public/next/assets/{MessageMarkdownRenderer-DL3LU5kL.js.map → MessageMarkdownRenderer-BAv4oEUf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Meter-b69LM0mU.js → Meter-CMj-VafN.js} +2 -2
- package/dist/core/web/public/next/assets/{Meter-b69LM0mU.js.map → Meter-CMj-VafN.js.map} +1 -1
- package/dist/core/web/public/next/assets/MindSection-C6kLPIjt.js +3 -0
- package/dist/core/web/public/next/assets/MindSection-C6kLPIjt.js.map +1 -0
- package/dist/core/web/public/next/assets/{MutationTokenDialog-Bm34BNVV.js → MutationTokenDialog-DbnO8aYi.js} +2 -2
- package/dist/core/web/public/next/assets/{MutationTokenDialog-Bm34BNVV.js.map → MutationTokenDialog-DbnO8aYi.js.map} +1 -1
- package/dist/core/web/public/next/assets/NeedsYouDrawer-crsiX-Nc.js +3 -0
- package/dist/core/web/public/next/assets/NeedsYouDrawer-crsiX-Nc.js.map +1 -0
- package/dist/core/web/public/next/assets/{NeedsYouList-D5Kk549g.js → NeedsYouList-CCsijdWt.js} +2 -2
- package/dist/core/web/public/next/assets/{NeedsYouList-D5Kk549g.js.map → NeedsYouList-CCsijdWt.js.map} +1 -1
- package/dist/core/web/public/next/assets/NewChatDialog-BlCHtOIr.js +3 -0
- package/dist/core/web/public/next/assets/{NewChatDialog-BqFTWgHU.js.map → NewChatDialog-BlCHtOIr.js.map} +1 -1
- package/dist/core/web/public/next/assets/{OnboardingFlow-DcDsguAM.js → OnboardingFlow-Cy9BA9eR.js} +3 -3
- package/dist/core/web/public/next/assets/{OnboardingFlow-DcDsguAM.js.map → OnboardingFlow-Cy9BA9eR.js.map} +1 -1
- package/dist/core/web/public/next/assets/OnboardingGate-BXpNFoLt.js +3 -0
- package/dist/core/web/public/next/assets/{OnboardingGate-BZafM1Vf.js.map → OnboardingGate-BXpNFoLt.js.map} +1 -1
- package/dist/core/web/public/next/assets/PreviewPane-COid5A0f.js +2 -0
- package/dist/core/web/public/next/assets/{PreviewPane-zT3gK9TD.js.map → PreviewPane-COid5A0f.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ProviderLogo-AwHn2sKm.js → ProviderLogo-Cq-CYIwT.js} +2 -2
- package/dist/core/web/public/next/assets/{ProviderLogo-AwHn2sKm.js.map → ProviderLogo-Cq-CYIwT.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RailStatus-xHrovWvI.js → RailStatus-Co5UB6We.js} +2 -2
- package/dist/core/web/public/next/assets/{RailStatus-xHrovWvI.js.map → RailStatus-Co5UB6We.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RefreshIndicator-SEFZlMB2.js → RefreshIndicator-DO9ibnSq.js} +2 -2
- package/dist/core/web/public/next/assets/{RefreshIndicator-SEFZlMB2.js.map → RefreshIndicator-DO9ibnSq.js.map} +1 -1
- package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-Dr2WRgkq.js +7 -0
- package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-CAxPQ4sZ.js.map → ResourcePoolConsoleApp-Dr2WRgkq.js.map} +1 -1
- package/dist/core/web/public/next/assets/ResourcesChrome-CwMnbqI1.js +3 -0
- package/dist/core/web/public/next/assets/ResourcesChrome-CwMnbqI1.js.map +1 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-B_Xp_JNc.js +2 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-B_Xp_JNc.js.map +1 -0
- package/dist/core/web/public/next/assets/ResourcesDrawer-DrGoO8KG.css +1 -0
- package/dist/core/web/public/next/assets/{RouteErrorBoundary-C8WGiixc.js → RouteErrorBoundary-SkNhhUbt.js} +2 -2
- package/dist/core/web/public/next/assets/{RouteErrorBoundary-C8WGiixc.js.map → RouteErrorBoundary-SkNhhUbt.js.map} +1 -1
- package/dist/core/web/public/next/assets/{RunInCloudAction-1-IPLYhf.js → RunInCloudAction-BXPlZwJQ.js} +2 -2
- package/dist/core/web/public/next/assets/{RunInCloudAction-1-IPLYhf.js.map → RunInCloudAction-BXPlZwJQ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SeatSelector-DpwNiX8F.js → SeatSelector-J5R3zDkB.js} +3 -3
- package/dist/core/web/public/next/assets/{SeatSelector-DpwNiX8F.js.map → SeatSelector-J5R3zDkB.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Segmented-Wt1ATod9.js → Segmented-CGh_-tBb.js} +2 -2
- package/dist/core/web/public/next/assets/{Segmented-Wt1ATod9.js.map → Segmented-CGh_-tBb.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Select-By-V9lMc.js → Select-CWnmUzs3.js} +2 -2
- package/dist/core/web/public/next/assets/{Select-By-V9lMc.js.map → Select-CWnmUzs3.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionGate-WROS02tK.js → SessionGate-sp4KsnUo.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionGate-WROS02tK.js.map → SessionGate-sp4KsnUo.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionInsightChip-DNUcruwp.js → SessionInsightChip-DLFAzdbi.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionInsightChip-DNUcruwp.js.map → SessionInsightChip-DLFAzdbi.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SessionSearch-UHtt7a8f.js → SessionSearch-DbFjwR1h.js} +2 -2
- package/dist/core/web/public/next/assets/{SessionSearch-UHtt7a8f.js.map → SessionSearch-DbFjwR1h.js.map} +1 -1
- package/dist/core/web/public/next/assets/{SettingsSection-Bf74l0Gj.js → SettingsSection-Ch23msJ5.js} +2 -2
- package/dist/core/web/public/next/assets/SettingsSection-Ch23msJ5.js.map +1 -0
- package/dist/core/web/public/next/assets/{SetupChecklist-CzpEcfOl.js → SetupChecklist-Bd76MBAR.js} +2 -2
- package/dist/core/web/public/next/assets/{SetupChecklist-CzpEcfOl.js.map → SetupChecklist-Bd76MBAR.js.map} +1 -1
- package/dist/core/web/public/next/assets/ShadowDecisions-C5RAY91f.js +3 -0
- package/dist/core/web/public/next/assets/ShadowDecisions-C5RAY91f.js.map +1 -0
- package/dist/core/web/public/next/assets/{Sheet-HkBOBMTT.js → Sheet-BZ2AG4Eo.js} +2 -2
- package/dist/core/web/public/next/assets/{Sheet-HkBOBMTT.js.map → Sheet-BZ2AG4Eo.js.map} +1 -1
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-DiigiT8H.js → ShortcutsOverlay-C8n8y3zf.js} +2 -2
- package/dist/core/web/public/next/assets/{ShortcutsOverlay-DiigiT8H.js.map → ShortcutsOverlay-C8n8y3zf.js.map} +1 -1
- package/dist/core/web/public/next/assets/Sidebar-DN--cPYN.js +3 -0
- package/dist/core/web/public/next/assets/{Sidebar-C9YtBYVZ.js.map → Sidebar-DN--cPYN.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Slider-DaEDws-b.js → Slider-KVoJLDD6.js} +2 -2
- package/dist/core/web/public/next/assets/{Slider-DaEDws-b.js.map → Slider-KVoJLDD6.js.map} +1 -1
- package/dist/core/web/public/next/assets/StatTile-C4KgjltA.js +2 -0
- package/dist/core/web/public/next/assets/StatTile-C4KgjltA.js.map +1 -0
- package/dist/core/web/public/next/assets/StatTile-CNCqDoPO.css +1 -0
- package/dist/core/web/public/next/assets/{StatusBadge-CXG3iNL4.js → StatusBadge-CXsYqmdU.js} +2 -2
- package/dist/core/web/public/next/assets/{StatusBadge-CXG3iNL4.js.map → StatusBadge-CXsYqmdU.js.map} +1 -1
- package/dist/core/web/public/next/assets/StepBand-BMtVOFpK.js +2 -0
- package/dist/core/web/public/next/assets/StepBand-BMtVOFpK.js.map +1 -0
- package/dist/core/web/public/next/assets/{Surface-5bNA08tK.js → Surface-BfDmQcKe.js} +2 -2
- package/dist/core/web/public/next/assets/{Surface-5bNA08tK.js.map → Surface-BfDmQcKe.js.map} +1 -1
- package/dist/core/web/public/next/assets/Swimlane-B9Exxekk.js +2 -0
- package/dist/core/web/public/next/assets/Swimlane-B9Exxekk.js.map +1 -0
- package/dist/core/web/public/next/assets/Swimlane-Bf4Rjoy9.css +1 -0
- package/dist/core/web/public/next/assets/{Switch-BmCzfFnu.js → Switch-9NtO_6Lj.js} +2 -2
- package/dist/core/web/public/next/assets/{Switch-BmCzfFnu.js.map → Switch-9NtO_6Lj.js.map} +1 -1
- package/dist/core/web/public/next/assets/{Tag-WSUIaMVy.js → Tag-DscCRFcN.js} +2 -2
- package/dist/core/web/public/next/assets/{Tag-WSUIaMVy.js.map → Tag-DscCRFcN.js.map} +1 -1
- package/dist/core/web/public/next/assets/{TerminalPane-BVFgYX6K.js → TerminalPane-B668-DJW.js} +5 -5
- package/dist/core/web/public/next/assets/{TerminalPane-BVFgYX6K.js.map → TerminalPane-B668-DJW.js.map} +1 -1
- package/dist/core/web/public/next/assets/UniverseConsoleApp-BUV_brY7.js +2 -0
- package/dist/core/web/public/next/assets/{UniverseConsoleApp-BpphLqoz.js.map → UniverseConsoleApp-BUV_brY7.js.map} +1 -1
- package/dist/core/web/public/next/assets/{UniverseView-DbpbSMwO.js → UniverseView-DG70zH0W.js} +4 -4
- package/dist/core/web/public/next/assets/{UniverseView-DbpbSMwO.js.map → UniverseView-DG70zH0W.js.map} +1 -1
- package/dist/core/web/public/next/assets/UsageSection-DY7uOTm1.js +3 -0
- package/dist/core/web/public/next/assets/UsageSection-DY7uOTm1.js.map +1 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-CWU6R3By.js +3 -0
- package/dist/core/web/public/next/assets/VerseConsoleApp-CWU6R3By.js.map +1 -0
- package/dist/core/web/public/next/assets/Workspace-D1nP9BhD.js +10 -0
- package/dist/core/web/public/next/assets/{Workspace-RXy0pqp6.js.map → Workspace-D1nP9BhD.js.map} +1 -1
- package/dist/core/web/public/next/assets/actions-CY-PjpGc.js +2 -0
- package/dist/core/web/public/next/assets/{actions-BZTidCXZ.js.map → actions-CY-PjpGc.js.map} +1 -1
- package/dist/core/web/public/next/assets/actions-DkWhhWIg.css +1 -0
- package/dist/core/web/public/next/assets/{apps-model-CHO133qt.js → apps-model-Du02KhAf.js} +2 -2
- package/dist/core/web/public/next/assets/{apps-model-CHO133qt.js.map → apps-model-Du02KhAf.js.map} +1 -1
- package/dist/core/web/public/next/assets/{authority-model-8NeAEwAF.js → authority-model-79SeuKlJ.js} +2 -2
- package/dist/core/web/public/next/assets/{authority-model-8NeAEwAF.js.map → authority-model-79SeuKlJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/autonomy-ladder-BGWmZzP7.css +1 -0
- package/dist/core/web/public/next/assets/autonomy-ladder.module-ArDv4bkr.js +2 -0
- package/dist/core/web/public/next/assets/autonomy-ladder.module-ArDv4bkr.js.map +1 -0
- package/dist/core/web/public/next/assets/budget-queries-D8QV5XtH.js +2 -0
- package/dist/core/web/public/next/assets/{budget-queries-DFF-3ICg.js.map → budget-queries-D8QV5XtH.js.map} +1 -1
- package/dist/core/web/public/next/assets/{capacity-strip-model-5ViUgUlP.js → capacity-strip-model-BwZ1ZbkU.js} +2 -2
- package/dist/core/web/public/next/assets/{capacity-strip-model-5ViUgUlP.js.map → capacity-strip-model-BwZ1ZbkU.js.map} +1 -1
- package/dist/core/web/public/next/assets/charts-BZ50mZD_.js +2 -0
- package/dist/core/web/public/next/assets/charts-BZ50mZD_.js.map +1 -0
- package/dist/core/web/public/next/assets/charts-ClCB18la.css +1 -0
- package/dist/core/web/public/next/assets/{cloud-model-CfRydq8N.js → cloud-model-BDivRMqv.js} +2 -2
- package/dist/core/web/public/next/assets/{cloud-model-CfRydq8N.js.map → cloud-model-BDivRMqv.js.map} +1 -1
- package/dist/core/web/public/next/assets/{cloud-queries-DmptbjS8.js → cloud-queries-BPQQ5_pJ.js} +2 -2
- package/dist/core/web/public/next/assets/{cloud-queries-DmptbjS8.js.map → cloud-queries-BPQQ5_pJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{colors-BZ3a9wFf.js → colors-DvK0wMHH.js} +2 -2
- package/dist/core/web/public/next/assets/{colors-BZ3a9wFf.js.map → colors-DvK0wMHH.js.map} +1 -1
- package/dist/core/web/public/next/assets/{command-catalog-ffCAijVY.js → command-catalog-BIntSa9l.js} +2 -2
- package/dist/core/web/public/next/assets/command-catalog-BIntSa9l.js.map +1 -0
- package/dist/core/web/public/next/assets/{context-model-CDeyP0cA.js → context-model-Br8t9jgG.js} +2 -2
- package/dist/core/web/public/next/assets/{context-model-CDeyP0cA.js.map → context-model-Br8t9jgG.js.map} +1 -1
- package/dist/core/web/public/next/assets/{context-model-Bb15chFt.js → context-model-CokrgEUq.js} +3 -3
- package/dist/core/web/public/next/assets/{context-model-Bb15chFt.js.map → context-model-CokrgEUq.js.map} +1 -1
- package/dist/core/web/public/next/assets/context-queries-eL3caKVG.js +2 -0
- package/dist/core/web/public/next/assets/{context-queries-_9bFWb9v.js.map → context-queries-eL3caKVG.js.map} +1 -1
- package/dist/core/web/public/next/assets/{control-queries-CXtmZZH6.js → control-queries-B9K-wmcB.js} +2 -2
- package/dist/core/web/public/next/assets/{control-queries-CXtmZZH6.js.map → control-queries-B9K-wmcB.js.map} +1 -1
- package/dist/core/web/public/next/assets/{copy-setup-BIp0iaiZ.js → copy-setup-XMgCC5f8.js} +2 -2
- package/dist/core/web/public/next/assets/{copy-setup-BIp0iaiZ.js.map → copy-setup-XMgCC5f8.js.map} +1 -1
- package/dist/core/web/public/next/assets/{dock-icons-Cc43W7r4.js → dock-icons-BJ6ZqB2t.js} +2 -2
- package/dist/core/web/public/next/assets/{dock-icons-Cc43W7r4.js.map → dock-icons-BJ6ZqB2t.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-model-DOK8ZtEt.js → fleet-model-BvDR3gjp.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-model-DOK8ZtEt.js.map → fleet-model-BvDR3gjp.js.map} +1 -1
- package/dist/core/web/public/next/assets/{fleet-queries-BeEAqD6y.js → fleet-queries-W2UFVMZJ.js} +2 -2
- package/dist/core/web/public/next/assets/{fleet-queries-BeEAqD6y.js.map → fleet-queries-W2UFVMZJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{focus-trap-ChZ5EFfM.js → focus-trap-CtI1SlMX.js} +2 -2
- package/dist/core/web/public/next/assets/{focus-trap-ChZ5EFfM.js.map → focus-trap-CtI1SlMX.js.map} +1 -1
- package/dist/core/web/public/next/assets/{format-BmH2yWL6.js → format-CH4g_sl1.js} +2 -2
- package/dist/core/web/public/next/assets/{format-BmH2yWL6.js.map → format-CH4g_sl1.js.map} +1 -1
- package/dist/core/web/public/next/assets/{format-DKrNjdwD.js → format-D7nBg2bn.js} +2 -2
- package/dist/core/web/public/next/assets/{format-DKrNjdwD.js.map → format-D7nBg2bn.js.map} +1 -1
- package/dist/core/web/public/next/assets/{git-model-BFwAVbxF.js → git-model-Dnkd1TnK.js} +2 -2
- package/dist/core/web/public/next/assets/{git-model-BFwAVbxF.js.map → git-model-Dnkd1TnK.js.map} +1 -1
- package/dist/core/web/public/next/assets/global-CMNW_dqn.js +2 -0
- package/dist/core/web/public/next/assets/{global-y_exIyAP.js.map → global-CMNW_dqn.js.map} +1 -1
- package/dist/core/web/public/next/assets/guarded-runners-YeAc9wLQ.js +2 -0
- package/dist/core/web/public/next/assets/{guarded-runners-Cd4POBtI.js.map → guarded-runners-YeAc9wLQ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{icons-CygCEFWs.js → icons-D1sYbCTQ.js} +2 -2
- package/dist/core/web/public/next/assets/{icons-CygCEFWs.js.map → icons-D1sYbCTQ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{index-CyK31YRm.js → index-DZ-UQ7v8.js} +3 -3
- package/dist/core/web/public/next/assets/{index-CyK31YRm.js.map → index-DZ-UQ7v8.js.map} +1 -1
- package/dist/core/web/public/next/assets/leader-focus-BjeJv7CW.js +2 -0
- package/dist/core/web/public/next/assets/leader-focus-BjeJv7CW.js.map +1 -0
- package/dist/core/web/public/next/assets/leader-thread-types-CDb-VPPO.js +2 -0
- package/dist/core/web/public/next/assets/leader-thread-types-CDb-VPPO.js.map +1 -0
- package/dist/core/web/public/next/assets/{live-model-D7hilYFk.js → live-model-D_32RAOR.js} +2 -2
- package/dist/core/web/public/next/assets/{live-model-D7hilYFk.js.map → live-model-D_32RAOR.js.map} +1 -1
- package/dist/core/web/public/next/assets/{mind.module-B15k0Y9q.js → mind.module-7hA92hRg.js} +2 -2
- package/dist/core/web/public/next/assets/{mind.module-B15k0Y9q.js.map → mind.module-7hA92hRg.js.map} +1 -1
- package/dist/core/web/public/next/assets/mutations-DQPbFdRJ.js +2 -0
- package/dist/core/web/public/next/assets/{mutations-CWlxEMEm.js.map → mutations-DQPbFdRJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{nav-mimleI0R.js → nav-0dOYe2rJ.js} +2 -2
- package/dist/core/web/public/next/assets/{nav-mimleI0R.js.map → nav-0dOYe2rJ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{overnight-queries-DJ4mZKSj.js → overnight-queries-C4wOnFtE.js} +2 -2
- package/dist/core/web/public/next/assets/{overnight-queries-DJ4mZKSj.js.map → overnight-queries-C4wOnFtE.js.map} +1 -1
- package/dist/core/web/public/next/assets/primitives-2A5Eq8FQ.js +1 -0
- package/dist/core/web/public/next/assets/{queries-Bw1McHTj.js → queries-BTXWdZzU.js} +2 -2
- package/dist/core/web/public/next/assets/{queries-Bw1McHTj.js.map → queries-BTXWdZzU.js.map} +1 -1
- package/dist/core/web/public/next/assets/{reasoning-pref-KkhI_5-j.js → reasoning-pref-Ca6lN6x_.js} +2 -2
- package/dist/core/web/public/next/assets/{reasoning-pref-KkhI_5-j.js.map → reasoning-pref-Ca6lN6x_.js.map} +1 -1
- package/dist/core/web/public/next/assets/{reveal-anchor-CCCx_kfT.js → reveal-anchor-DfNLgK_I.js} +2 -2
- package/dist/core/web/public/next/assets/{reveal-anchor-CCCx_kfT.js.map → reveal-anchor-DfNLgK_I.js.map} +1 -1
- package/dist/core/web/public/next/assets/seat-subscription-C5uPHBsN.js +2 -0
- package/dist/core/web/public/next/assets/{seat-subscription-BhUUz7VL.js.map → seat-subscription-C5uPHBsN.js.map} +1 -1
- package/dist/core/web/public/next/assets/{sidebar-model-Dcd437cf.js → sidebar-model-CLCdqwkR.js} +2 -2
- package/dist/core/web/public/next/assets/{sidebar-model-Dcd437cf.js.map → sidebar-model-CLCdqwkR.js.map} +1 -1
- package/dist/core/web/public/next/assets/{slots-BL_J5mmV.js → slots-C-qBeu-8.js} +3 -3
- package/dist/core/web/public/next/assets/{slots-BL_J5mmV.js.map → slots-C-qBeu-8.js.map} +1 -1
- package/dist/core/web/public/next/assets/{surface-data-C3UAQ4QX.js → surface-data-Dj71tdD-.js} +2 -2
- package/dist/core/web/public/next/assets/{surface-data-C3UAQ4QX.js.map → surface-data-Dj71tdD-.js.map} +1 -1
- package/dist/core/web/public/next/assets/surface-prefetch-B0WdJOJG.js +2 -0
- package/dist/core/web/public/next/assets/surface-prefetch-B0WdJOJG.js.map +1 -0
- package/dist/core/web/public/next/assets/{tasks-model-CzHvclVm.js → tasks-model-O8yR5YXp.js} +2 -2
- package/dist/core/web/public/next/assets/{tasks-model-CzHvclVm.js.map → tasks-model-O8yR5YXp.js.map} +1 -1
- package/dist/core/web/public/next/assets/{terminal-icons-BwgQTQP0.js → terminal-icons-CoRZq9iO.js} +2 -2
- package/dist/core/web/public/next/assets/{terminal-icons-BwgQTQP0.js.map → terminal-icons-CoRZq9iO.js.map} +1 -1
- package/dist/core/web/public/next/assets/thread-data-DQB_g66d.js +2 -0
- package/dist/core/web/public/next/assets/thread-data-DQB_g66d.js.map +1 -0
- package/dist/core/web/public/next/assets/{usage-queries-pXxvy54x.js → usage-queries-AdjEyEtn.js} +2 -2
- package/dist/core/web/public/next/assets/{usage-queries-pXxvy54x.js.map → usage-queries-AdjEyEtn.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-guarded-action-EgVWjM5c.js → use-guarded-action-CuuMHeDX.js} +2 -2
- package/dist/core/web/public/next/assets/{use-guarded-action-EgVWjM5c.js.map → use-guarded-action-CuuMHeDX.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-ticker-BoqFxRFG.js → use-ticker-BBcp02SZ.js} +2 -2
- package/dist/core/web/public/next/assets/{use-ticker-BoqFxRFG.js.map → use-ticker-BBcp02SZ.js.map} +1 -1
- package/dist/core/web/public/next/assets/{use-token-gate-DSNIIpI6.js → use-token-gate-CbXVYQYI.js} +2 -2
- package/dist/core/web/public/next/assets/{use-token-gate-DSNIIpI6.js.map → use-token-gate-CbXVYQYI.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useOnboarding-Bk0VnkxQ.js → useOnboarding-C_Fpe_sH.js} +2 -2
- package/dist/core/web/public/next/assets/{useOnboarding-Bk0VnkxQ.js.map → useOnboarding-C_Fpe_sH.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useSeatsRefresh-q7Id9RcW.js → useSeatsRefresh-Co1CnxLc.js} +2 -2
- package/dist/core/web/public/next/assets/{useSeatsRefresh-q7Id9RcW.js.map → useSeatsRefresh-Co1CnxLc.js.map} +1 -1
- package/dist/core/web/public/next/assets/{useVerseTranscript-CqH51rt9.js → useVerseTranscript-DgbigUlV.js} +2 -2
- package/dist/core/web/public/next/assets/{useVerseTranscript-CqH51rt9.js.map → useVerseTranscript-DgbigUlV.js.map} +1 -1
- package/dist/core/web/public/next/assets/{verse-icons-DsG1dOQx.js → verse-icons-S56hIiXS.js} +2 -2
- package/dist/core/web/public/next/assets/{verse-icons-DsG1dOQx.js.map → verse-icons-S56hIiXS.js.map} +1 -1
- package/dist/core/web/public/next/assets/verse-model-DAVevkNe.js +2 -0
- package/dist/core/web/public/next/assets/{verse-model-JTuvRBVK.js.map → verse-model-DAVevkNe.js.map} +1 -1
- package/dist/core/web/public/next/assets/{warmup-Bv1RumVq.js → warmup-B_RAtNZ_.js} +3 -3
- package/dist/core/web/public/next/assets/{warmup-Bv1RumVq.js.map → warmup-B_RAtNZ_.js.map} +1 -1
- package/dist/core/web/public/next/assets/{why-seat-model-Cau8qG6O.js → why-seat-model-M_r0wX3b.js} +2 -2
- package/dist/core/web/public/next/assets/{why-seat-model-Cau8qG6O.js.map → why-seat-model-M_r0wX3b.js.map} +1 -1
- package/dist/core/web/public/next/assets/{workspace-model-D-SLfads.js → workspace-model-dji5-Al3.js} +2 -2
- package/dist/core/web/public/next/assets/{workspace-model-D-SLfads.js.map → workspace-model-dji5-Al3.js.map} +1 -1
- package/dist/core/web/public/next/index.html +1 -1
- package/dist/core/web/read-projection-worker.js +2 -1
- package/dist/core/web/read-projection-worker.js.map +1 -1
- package/dist/core/web/read-projections.d.ts +3 -0
- package/dist/core/web/read-projections.js +2 -2
- package/dist/core/web/read-projections.js.map +1 -1
- package/dist/core/web/visibility.js +3 -4
- package/dist/core/web/visibility.js.map +1 -1
- package/dist/release-dependency-inventory.json +1 -1
- package/package.json +3 -2
- package/dist/core/web/public/next/assets/Advanced-cVYTAsfB.js +0 -2
- package/dist/core/web/public/next/assets/AppsSection-DDqeSrty.js +0 -2
- package/dist/core/web/public/next/assets/AreaTrend-C32rUaxm.js +0 -2
- package/dist/core/web/public/next/assets/AreaTrend-C32rUaxm.js.map +0 -1
- package/dist/core/web/public/next/assets/AutonomySection-Dwn8UtOy.js +0 -2
- package/dist/core/web/public/next/assets/ChartFrame-BVuBe6RP.css +0 -1
- package/dist/core/web/public/next/assets/ChartFrame-DK_BDXCt.js +0 -2
- package/dist/core/web/public/next/assets/ChartFrame-DK_BDXCt.js.map +0 -1
- package/dist/core/web/public/next/assets/ChatSection-C9myY4ei.js +0 -3
- package/dist/core/web/public/next/assets/CommandPalette-DzPsth0u.js +0 -2
- package/dist/core/web/public/next/assets/CommandPalette-DzPsth0u.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandSection-Brp73iox.js +0 -3
- package/dist/core/web/public/next/assets/CommandSection-Brp73iox.js.map +0 -1
- package/dist/core/web/public/next/assets/CommandSection-CvAVd1w4.css +0 -1
- package/dist/core/web/public/next/assets/DockHost-BcEq2qaS.js +0 -2
- package/dist/core/web/public/next/assets/FleetSection-BG8iGraG.js +0 -3
- package/dist/core/web/public/next/assets/FleetSection-BG8iGraG.js.map +0 -1
- package/dist/core/web/public/next/assets/Funnel-B88_wpA4.js +0 -2
- package/dist/core/web/public/next/assets/Funnel-B88_wpA4.js.map +0 -1
- package/dist/core/web/public/next/assets/GrowthSection-BvZezOsX.js +0 -2
- package/dist/core/web/public/next/assets/LeaderCard-BxxiEg4e.js +0 -2
- package/dist/core/web/public/next/assets/LeaderCard-BxxiEg4e.js.map +0 -1
- package/dist/core/web/public/next/assets/MatrixHeatmap-iPFEU2Tv.js +0 -2
- package/dist/core/web/public/next/assets/MatrixHeatmap-iPFEU2Tv.js.map +0 -1
- package/dist/core/web/public/next/assets/McpSection-nuXer4K-.js +0 -2
- package/dist/core/web/public/next/assets/MindSection-Dc5v5rH3.js +0 -2
- package/dist/core/web/public/next/assets/MindSection-Dc5v5rH3.js.map +0 -1
- package/dist/core/web/public/next/assets/NeedsYouDrawer-N1cWJjpz.js +0 -3
- package/dist/core/web/public/next/assets/NeedsYouDrawer-N1cWJjpz.js.map +0 -1
- package/dist/core/web/public/next/assets/NewChatDialog-BqFTWgHU.js +0 -3
- package/dist/core/web/public/next/assets/OnboardingGate-BZafM1Vf.js +0 -3
- package/dist/core/web/public/next/assets/PreviewPane-zT3gK9TD.js +0 -2
- package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-CAxPQ4sZ.js +0 -7
- package/dist/core/web/public/next/assets/ResourcesChrome-BnhnEdJe.js +0 -3
- package/dist/core/web/public/next/assets/ResourcesChrome-BnhnEdJe.js.map +0 -1
- package/dist/core/web/public/next/assets/ResourcesDrawer-BAFGodny.js +0 -2
- package/dist/core/web/public/next/assets/ResourcesDrawer-BAFGodny.js.map +0 -1
- package/dist/core/web/public/next/assets/ResourcesDrawer-BCFJ2Uq8.css +0 -1
- package/dist/core/web/public/next/assets/SettingsSection-Bf74l0Gj.js.map +0 -1
- package/dist/core/web/public/next/assets/Sidebar-C9YtBYVZ.js +0 -3
- package/dist/core/web/public/next/assets/StatTile-BuLMsJMx.css +0 -1
- package/dist/core/web/public/next/assets/StatTile-CTX41O6y.js +0 -2
- package/dist/core/web/public/next/assets/StatTile-CTX41O6y.js.map +0 -1
- package/dist/core/web/public/next/assets/StepBand-jJTqYIdX.js +0 -2
- package/dist/core/web/public/next/assets/StepBand-jJTqYIdX.js.map +0 -1
- package/dist/core/web/public/next/assets/Swimlane-LrslsGxw.js +0 -2
- package/dist/core/web/public/next/assets/Swimlane-LrslsGxw.js.map +0 -1
- package/dist/core/web/public/next/assets/Swimlane-o6_Zsrnr.css +0 -1
- package/dist/core/web/public/next/assets/UniverseConsoleApp-BpphLqoz.js +0 -2
- package/dist/core/web/public/next/assets/UsageSection-CUlaKtws.js +0 -3
- package/dist/core/web/public/next/assets/UsageSection-CUlaKtws.js.map +0 -1
- package/dist/core/web/public/next/assets/VerseConsoleApp-DXDv1aOi.js +0 -3
- package/dist/core/web/public/next/assets/VerseConsoleApp-DXDv1aOi.js.map +0 -1
- package/dist/core/web/public/next/assets/Workspace-RXy0pqp6.js +0 -10
- package/dist/core/web/public/next/assets/actions-BZTidCXZ.js +0 -2
- package/dist/core/web/public/next/assets/actions-BmIf9avl.css +0 -1
- package/dist/core/web/public/next/assets/budget-queries-DFF-3ICg.js +0 -2
- package/dist/core/web/public/next/assets/charts-CzxWrZn7.js +0 -2
- package/dist/core/web/public/next/assets/charts-CzxWrZn7.js.map +0 -1
- package/dist/core/web/public/next/assets/charts-DhKTrQLw.css +0 -1
- package/dist/core/web/public/next/assets/command-catalog-ffCAijVY.js.map +0 -1
- package/dist/core/web/public/next/assets/context-queries-_9bFWb9v.js +0 -2
- package/dist/core/web/public/next/assets/global-y_exIyAP.js +0 -2
- package/dist/core/web/public/next/assets/guarded-runners-Cd4POBtI.js +0 -2
- package/dist/core/web/public/next/assets/mutations-CWlxEMEm.js +0 -2
- package/dist/core/web/public/next/assets/primitives-DMijqcu0.js +0 -1
- package/dist/core/web/public/next/assets/seat-subscription-BhUUz7VL.js +0 -2
- package/dist/core/web/public/next/assets/surface-prefetch-BXKjPsV5.js +0 -2
- package/dist/core/web/public/next/assets/surface-prefetch-BXKjPsV5.js.map +0 -1
- package/dist/core/web/public/next/assets/verse-model-JTuvRBVK.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"algorithm":"sha256","assurance":"packaged-build-byte-observation","inventoryDigest":"573dc985c9be87e27b69d099f56399232f37fc3e2eec1933ce9e3cbd3417ca84","package":{"manifestSha256":"1fa07501066fe660763f37013677345336f1ff8699553f168a98c7400e5910f8","name":"@ashlr/hub","version":"3.13.0"},"packages":[{"archiveModeSha256":"e593537ea027a53342e9c95325f3823e507298732511cd61c314537000cb008c","contentSha256":"39703185cd013059db3eb5ac351625fa9dfd1eef0509fb47ff04fcc0a4cec6f5","fileCount":25,"name":"@hono/node-server","path":"@hono/node-server","size":120353,"version":"2.0.12"},{"archiveModeSha256":"f331e808f8ff6d9d2e9cbf1ad1bc05f35c36b7ac1489084d24460c345a354819","contentSha256":"ef4367c4587f87b13b688ecafe7010c2764623bfbf1f386a1943d7392f545551","fileCount":13,"name":"@isaacs/fs-minipass","path":"@isaacs/fs-minipass","size":100617,"version":"4.0.1"},{"archiveModeSha256":"212ef6ab48b10cfc61481fdb4d517d5aefa8a9e78f321c9483e13f8f0854aade","contentSha256":"54ecfe6624026e35139d2f943de8626043145c82c1d6580882a4adf4ee6b3c90","fileCount":693,"name":"@modelcontextprotocol/sdk","path":"@modelcontextprotocol/sdk","size":4322438,"version":"1.30.0"},{"archiveModeSha256":"30bd56bd2c26086e14f1b0c58123fc916fea96c6c86f7bd8e7e2fba1526cb30f","contentSha256":"78052c66ba1f5f3d3310d2685ee84af5b060c6960c06eba5cb1d08da860019ff","fileCount":466,"name":"ajv","path":"@modelcontextprotocol/sdk/node_modules/ajv","size":1033496,"version":"8.20.0"},{"archiveModeSha256":"0e9ff2b53d7e42a61c51248833683dfc6b09c9726c3f0c50663af0a6b6f83fea","contentSha256":"18bc9ecab93292b6f357a0bef6b26e39e8d7b14c46fb9b1adc8a0826f7ad419b","fileCount":12,"name":"json-schema-traverse","path":"@modelcontextprotocol/sdk/node_modules/json-schema-traverse","size":22220,"version":"1.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"93bc4d919570486c9dac1184c65d89802a5d7e5e51d2ad2c9c79e9229b0d2bfd","fileCount":5,"name":"accepts","path":"accepts","size":16917,"version":"2.0.0"},{"archiveModeSha256":"338fe03444b2468ffb84fa0a62e4ad26985fbe9063f5b6500fc00baab52687a7","contentSha256":"a570e5cd740441f9e2ad9e20aab09d6ff5f01c54b5ca63889fb9cc65aa22ed38","fileCount":15,"name":"ajv-formats","path":"ajv-formats","size":56763,"version":"3.0.1"},{"archiveModeSha256":"30bd56bd2c26086e14f1b0c58123fc916fea96c6c86f7bd8e7e2fba1526cb30f","contentSha256":"78052c66ba1f5f3d3310d2685ee84af5b060c6960c06eba5cb1d08da860019ff","fileCount":466,"name":"ajv","path":"ajv-formats/node_modules/ajv","size":1033496,"version":"8.20.0"},{"archiveModeSha256":"0e9ff2b53d7e42a61c51248833683dfc6b09c9726c3f0c50663af0a6b6f83fea","contentSha256":"18bc9ecab93292b6f357a0bef6b26e39e8d7b14c46fb9b1adc8a0826f7ad419b","fileCount":12,"name":"json-schema-traverse","path":"ajv-formats/node_modules/json-schema-traverse","size":22220,"version":"1.0.0"},{"archiveModeSha256":"99258e0ccfd899459bc7f95949a5bec9039234f80f0a96cfbf7de4cfd9deaad9","contentSha256":"e6f71097d1bf22309cc2010ba116320dbe0b37b53af324631969ccef03817448","fileCount":10,"name":"body-parser","path":"body-parser","size":42536,"version":"2.3.0"},{"archiveModeSha256":"b06c6eaf0b12f13ca2978123c3bc1ee1a6f8bacabea1533868e34accee2145ec","contentSha256":"a90e26ff6b282c4ec28742358f45cffa2a4736aceb4abc7cb558bd6fc740f73b","fileCount":6,"name":"content-type","path":"body-parser/node_modules/content-type","size":20751,"version":"2.0.0"},{"archiveModeSha256":"51df0d122ab1b5f510d0a80e73a4d33fcb1ab44cf00e903f505c384be80528c8","contentSha256":"048d4140095d01f76e5d5a576d5a10de4e1cebcc64cab6ea49f14afc54939be6","fileCount":5,"name":"bytes","path":"bytes","size":12270,"version":"3.1.2"},{"archiveModeSha256":"df415aae8a21af7234f013c4d934c5074b07e617f6189084a43c78a49bafcb78","contentSha256":"870b383c07315fef9619399c2450297d079b1398583984a5ccb9cd2b1005cb59","fileCount":21,"name":"call-bind-apply-helpers","path":"call-bind-apply-helpers","size":15952,"version":"1.0.2"},{"archiveModeSha256":"fd4de57fefcfd077cce1a9e57bd1b208bf59a7da3ae9f25a7e787ab17b10490f","contentSha256":"01be39d7156b173ffe2869dcd589e2080dcf2f1bcbcfa2f20409582ccb21cfaf","fileCount":11,"name":"call-bound","path":"call-bound","size":17106,"version":"1.0.4"},{"archiveModeSha256":"155b84d16e5a3094314970a26a6b1a157604be8a208c32a0562ce579ec994c2c","contentSha256":"e1ec1eb1cc0367f01e1e8a9a8366d040942612a277ba4034707a130d6d70a0ce","fileCount":13,"name":"chownr","path":"chownr","size":22048,"version":"3.0.0"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"4f967d79760cd06bcfdbf918d30b3a77752d03e6e76582aeac4b3a81dcd6a6a9","fileCount":4,"name":"content-disposition","path":"content-disposition","size":19928,"version":"1.1.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"1ad93015c6082464b41e63397fc9ee739d6bb7cb93755c9fbef749cff39b8675","fileCount":5,"name":"content-type","path":"content-type","size":10471,"version":"1.0.5"},{"archiveModeSha256":"2048aee59eb971a928e2fcac3881a222b2c9140ec980dfd14756de04a3885902","contentSha256":"ca8dd7ddd6a3970df6e3efff74247cd6f985dfdcc596ac0f58cd50c5b88555e8","fileCount":5,"name":"cookie","path":"cookie","size":23382,"version":"0.7.2"},{"archiveModeSha256":"51df0d122ab1b5f510d0a80e73a4d33fcb1ab44cf00e903f505c384be80528c8","contentSha256":"360601ff3d56cfdb8de7d836940caa5d74a437474129017697aab4696fc84e03","fileCount":5,"name":"cookie-signature","path":"cookie-signature","size":4993,"version":"1.2.2"},{"archiveModeSha256":"3bf3b01496f9ce98ec5c58c595c317975f470de6da6599d5d405c60c294f12c6","contentSha256":"9a628bd867c40f8bd4753d84f5f364a5ce92fcdd73fb164977d566275580786e","fileCount":4,"name":"cors","path":"cors","size":19956,"version":"2.8.6"},{"archiveModeSha256":"0c4b2570bd695c455ca6e9f67aaabdf88b1d486e39e9e52f4b8cc0c595e08f33","contentSha256":"9666a5f3074e7ff71dab89ccc0fecd79699b6c68e85087cc3416e9b220e9369e","fileCount":9,"name":"cross-spawn","path":"cross-spawn","size":16094,"version":"7.0.6"},{"archiveModeSha256":"fd7ec5fdf7ea41f349416d375406faf41b35702e2e23f02d2c015acb72adc8f2","contentSha256":"e9f41fdd4e55dc936295270bdb7c994d9ad85dd2bd6f2fb3d46767a16ee1a03e","fileCount":7,"name":"debug","path":"debug","size":42793,"version":"4.4.3"},{"archiveModeSha256":"bb32a6d3c5b9088943cd629938024c4c8d207814db8194313063fe3844cbbc8c","contentSha256":"cfc74892a99b215bdc61d9817f90b235318267ddbf8a29ef52b2906d8b26e980","fileCount":6,"name":"depd","path":"depd","size":27117,"version":"2.0.0"},{"archiveModeSha256":"305af32d2ba2d5fe89c9acaa17537f1a06e7e131bf81112cb11d623fdbb9c6f1","contentSha256":"5c4728d83554a1fc2fd51c01cf2d30bb89adbe1c6469a52201eed72b68af0f91","fileCount":15,"name":"dunder-proto","path":"dunder-proto","size":13003,"version":"1.0.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"bae9f4988b2d279e16b4bb3e5527647300137f2978aef97f40acd1b453a8d5a7","fileCount":4,"name":"ee-first","path":"ee-first","size":6259,"version":"1.1.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"1c50e3d3cd38c66e1e462f0004781f789e59959aec798aef31f9a2f049d216e5","fileCount":4,"name":"encodeurl","path":"encodeurl","size":6980,"version":"2.0.0"},{"archiveModeSha256":"fd4de57fefcfd077cce1a9e57bd1b208bf59a7da3ae9f25a7e787ab17b10490f","contentSha256":"a2dd73d6e2d58eda48469112f2eacae1fec583f84f72643b3593c6092bd3e877","fileCount":11,"name":"es-define-property","path":"es-define-property","size":10217,"version":"1.0.1"},{"archiveModeSha256":"23a440c46333c31a4ae0a1ffdc2ec6db818da1c36a039abc189b118e1bcdc625","contentSha256":"fd08a46013bf09d90a2240c6a8a97f12ff7106507456c73e7db53f608b41214e","fileCount":22,"name":"es-errors","path":"es-errors","size":12324,"version":"1.3.0"},{"archiveModeSha256":"b6b95f08bcc5f254eddbff61393e6efa09637b9fe2996a163d3c2c71c28bb681","contentSha256":"893e26d760872fd0c233391eff242a717320d6b2d6ab004ad827d1dd6c517ea5","fileCount":16,"name":"es-object-atoms","path":"es-object-atoms","size":11967,"version":"1.1.2"},{"archiveModeSha256":"764d64b5de2e2faa2387d92a5ed5dcbc1822797787a67ee46e827d4d353a2cb5","contentSha256":"27b564cee7701979ecc9ba3ad9b57c4eb185ddfe14f6fbef7961b9d95fc51789","fileCount":4,"name":"escape-html","path":"escape-html","size":3660,"version":"1.0.3"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"53b09a946276069cc9e202851404809b0b27f9616f6398ba1ba053cf27a9b61f","fileCount":5,"name":"etag","path":"etag","size":10809,"version":"1.8.1"},{"archiveModeSha256":"15cc21147f13500c581198be8a82187d7d2cd38a2c23b9459c89f22990a5b971","contentSha256":"fda71ef638beebe2ebae12fe705f63cb2276d6b35564064714ad352727e6f0a9","fileCount":13,"name":"eventsource","path":"eventsource","size":147304,"version":"3.0.7"},{"archiveModeSha256":"57e54f8cb946a2072d2c928cce29ff71a0383916edbb50e97042f859f043677f","contentSha256":"57456c2bbbfd8965c4466cf8a120581c6de9c67c1e04bf815189370f5f76ec3f","fileCount":21,"name":"eventsource-parser","path":"eventsource-parser","size":123218,"version":"3.1.0"},{"archiveModeSha256":"e882878862f5bfd4ff0cb5120df0b9e29758544fabad522563cc91a5102513a0","contentSha256":"c4cccb2f6077128bc31e51f7f772663988796261352298821eea234de1f42281","fileCount":10,"name":"express","path":"express","size":75429,"version":"5.2.1"},{"archiveModeSha256":"0f783761dfb7c14c80535b5a3d2f282398f8621985ed04be794ef3144740784e","contentSha256":"332479fcc3eaa25713fa7df0d4e3a953b7a008fde6413d4278aa667d7e4473e1","fileCount":9,"name":"express-rate-limit","path":"express-rate-limit","size":146332,"version":"8.5.2"},{"archiveModeSha256":"78e09d25ac30efc25d5604344654f3158820dbd9d45a1900b9f44e0e500839cf","contentSha256":"5ca43c0737026213eee30eb17e40859c918af2ae30f16d3882fdfbd8bcb03afd","fileCount":11,"name":"fast-deep-equal","path":"fast-deep-equal","size":12966,"version":"3.1.3"},{"archiveModeSha256":"f75ddef45cc69b6bfbcad49bde00345a7e27f27d03cd67d1083d2a334122fc1a","contentSha256":"36e796ba92bcc878b9b3c6b939c0aa1dba25e4c2ed8609f0ed748aa17c80347e","fileCount":44,"name":"fast-uri","path":"fast-uri","size":215561,"version":"3.1.6"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"a184198d4d20e0177fd4f9e5d82bc40d34143c3a8279e7200511905b08e91d1a","fileCount":5,"name":"finalhandler","path":"finalhandler","size":18111,"version":"2.1.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"5a3882ea4acfd16ac4851f43587d6ab87fd08de45665981db6e8ee5944486118","fileCount":5,"name":"forwarded","path":"forwarded","size":5876,"version":"0.2.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"c3d3cc5e56026a726c20ed1d516509608bddb667d5cc999f01cd3971a92e4406","fileCount":5,"name":"fresh","path":"fresh","size":10289,"version":"2.0.0"},{"archiveModeSha256":"6f10ab8235c8a46f648cd17681016bf68595208a48d01f1351bd0b19bcb4301c","contentSha256":"8afcdc5f094efcac14509859ce70157ec7daff89642bc5d604b235f6917dd5b0","fileCount":12,"name":"function-bind","path":"function-bind","size":31427,"version":"1.1.2"},{"archiveModeSha256":"2d4c82c10091157e0f33c6a4a049ef4b2609c8f2a6d70882fa538122b54c1ce3","contentSha256":"1b862b6fe457cd272bb8bce8407ac7f972c857ac317189afe7a29ba378f0f6ac","fileCount":9,"name":"get-intrinsic","path":"get-intrinsic","size":46542,"version":"1.3.0"},{"archiveModeSha256":"995b5a61ce2e3cb963405de061067b699b48e90eb6ce2ac0d88e88bd9c38549a","contentSha256":"3dc759afa7e26cd60cc642b39bffcbd22dd574469e4ac2174cc9b57b97599f82","fileCount":15,"name":"get-proto","path":"get-proto","size":10840,"version":"1.0.1"},{"archiveModeSha256":"169ecf4d0c444e719e5bcd4e912e3ceb193138b5ab7eef8f727798759a4331d3","contentSha256":"6f2eeeb1483b34581df01b15d1b80b2b45be2c7ce06496c72a90351194858738","fileCount":12,"name":"gopd","path":"gopd","size":9869,"version":"1.2.0"},{"archiveModeSha256":"2f2262ae382d511cef7d373ff151a1a662ae623e50cb17d3a920d9e87593011d","contentSha256":"617f42cde01c4ca5a0bdab28f544a70e5f52c8707daad05016cb789193ba0554","fileCount":16,"name":"has-symbols","path":"has-symbols","size":23409,"version":"1.1.0"},{"archiveModeSha256":"35386dc8ee83de6dc1f61324623e1d9907205a1bd2fa66b02bc7c0429bdf85cc","contentSha256":"e6b281a2b3f6100d9b44f0916c797da53c254e8a38cb357134e80eddf5181a48","fileCount":10,"name":"hasown","path":"hasown","size":10332,"version":"2.0.4"},{"archiveModeSha256":"6c607d433127ab8aa7eae155e5777360167dc436457ed7fbfe66ff391f0988fa","contentSha256":"ab285a621121201b7aed9fa2a4447836246643db498bf1a4b71888d5fce36f83","fileCount":568,"name":"hono","path":"hono","size":1386244,"version":"4.13.5"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"b34d2d8fdbf41450767591b746eb2adaa4a22b59aa55c94ef0ce65ff1ba6fe6d","fileCount":5,"name":"http-errors","path":"http-errors","size":19064,"version":"2.0.1"},{"archiveModeSha256":"086f9d977a09c672ced4c2d703944875d8db454fe8fdd7fe8882f0888ed7c20f","contentSha256":"762b205b641d142557d0b3fb5d376d571e7823473661004f6cb319b7c0603976","fileCount":27,"name":"iconv-lite","path":"iconv-lite","size":343635,"version":"0.7.2"},{"archiveModeSha256":"7b3e1bd04c00f38ad3e4f4fb20e65a4eeb707527b4fd7c84ea7764cef9cebdff","contentSha256":"7c50865fdccbf6c6b44600a997d13c0c5c215ded131f0a4c98acd8d15694e632","fileCount":5,"name":"inherits","path":"inherits","size":3958,"version":"2.0.4"},{"archiveModeSha256":"3ef444401f83c959cfda73e7e9fd50d0796f6f141f36f458a3f132b362e6c375","contentSha256":"0e8533c4762708d8f61d9a21b3fa5f10d7f4907a36609490e71edaadb1186c1e","fileCount":30,"name":"ip-address","path":"ip-address","size":299533,"version":"10.4.0"},{"archiveModeSha256":"a710aacb72996fbfa6d514e678b50cfe4d17619a71648b516a3a09a96479c2c8","contentSha256":"272599141de35d28a1e92b1aec64154c866998a44310163040e6499b6ec1d9c3","fileCount":6,"name":"ipaddr.js","path":"ipaddr.js","size":42145,"version":"1.9.1"},{"archiveModeSha256":"969b492deb1f22a61f85cf9f98cc0f7c1984c3c0fd162d3ba5a600f0f6181ed8","contentSha256":"31aa30a6fbd5f134714c0ae7bc1e4c7a00b1c5bfabd2931e92618a4121bd6fa8","fileCount":6,"name":"is-promise","path":"is-promise","size":2958,"version":"4.0.0"},{"archiveModeSha256":"8f22f331a576ff070646bb75a80918007ff2b93be80520594930dd04865a6e44","contentSha256":"a560d4935c162172bd5feede21bc62536cec616c166de516cd5c367a7ca23f98","fileCount":8,"name":"isexe","path":"isexe","size":10956,"version":"2.0.0"},{"archiveModeSha256":"ec3d3c0b513b0905f208bc029bc355c1cf7038f95e2e7b1e2d19ddac26e374ea","contentSha256":"e3633b6af5ec16f6448989dd91dad2798a190e52e7a3d16d90ceca23d52c5b35","fileCount":88,"name":"jose","path":"jose","size":257736,"version":"6.2.3"},{"archiveModeSha256":"bdba5b2b7f19b131522a9af3d6cd30db94ee97690d535e5c3c84d1bce068c2a9","contentSha256":"efcb8d289875749e930bf8f745c132edf832c0f9a25768fcd97e129851288174","fileCount":9,"name":"json-schema-typed","path":"json-schema-typed","size":197188,"version":"8.0.2"},{"archiveModeSha256":"3353a1cbd727174e11aa6b1a8b1163caeb467c3ac3cad2ddb7d4c230da64bdd8","contentSha256":"251a6d99cfc3364a8732128487bbd422d3964f990fe1755b0b78046b65328731","fileCount":12,"name":"marked","path":"marked","size":469664,"version":"18.0.10"},{"archiveModeSha256":"74a40513091b687e690f49f4110e314302d0b8b3c9f196cf587c9d702c4cd7e9","contentSha256":"a4884adbf4399adaff50d30983c4afa402a1d15b56a371824ea5c7c7cab385fa","fileCount":38,"name":"math-intrinsics","path":"math-intrinsics","size":17323,"version":"1.1.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"1ec2d844bc07543d41a6ab6d78008dd2998877609cc16ba532204995fb4339c5","fileCount":5,"name":"media-typer","path":"media-typer","size":9256,"version":"1.1.0"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"983f0d7028b74df8828007fabcab26e7f36e42fc7db74e321a110f6f40aa3fa7","fileCount":5,"name":"merge-descriptors","path":"merge-descriptors","size":4373,"version":"2.0.0"},{"archiveModeSha256":"2cb256014f7e1eda905b4809694ab3b06e8c1f1c5b78cb4de5da514e4e57659a","contentSha256":"c979d86230ca6688633d5ef7c89397f312c6d556a1964cb8dfe33596b8b548b9","fileCount":6,"name":"mime-db","path":"mime-db","size":225566,"version":"1.54.0"},{"archiveModeSha256":"20c4497e7b68189571962123cabb12dc852bb2346c45deed91c081c899659249","contentSha256":"28ee29177b736969ce0a555c11ae5275280510007a2670dcdd7ea6b1868f46c3","fileCount":6,"name":"mime-types","path":"mime-types","size":22871,"version":"3.0.2"},{"archiveModeSha256":"155b84d16e5a3094314970a26a6b1a157604be8a208c32a0562ce579ec994c2c","contentSha256":"46d898fe1f0594d49333d4bc32bce63349d6f124c78dfc3eda96c9f9b2f796fe","fileCount":13,"name":"minipass","path":"minipass","size":366791,"version":"7.1.3"},{"archiveModeSha256":"78b1977130401dbbba561837630370f3061275bb5a1963454b5f092e3cf208fe","contentSha256":"19c7cff62b036e6f0aad440e776cc94134bb6434c0c96939de864df88e2b0f21","fileCount":21,"name":"minizlib","path":"minizlib","size":117811,"version":"3.1.0"},{"archiveModeSha256":"20014b85b0431588ccd9c0e6c6afeffc10e21d0ee7de53e2ba2296fd52bb1a7c","contentSha256":"667f3d7d170cb303a69e67dc3a69a08255a3e5cfb8703f4904417b0362bc0d28","fileCount":4,"name":"ms","path":"ms","size":6721,"version":"2.1.3"},{"archiveModeSha256":"5602cdc50f925bdc25002fe3756f55c3e1117229d22c2b2c600e8ffca90295f6","contentSha256":"84851509ca06e7b5b721720762592fa23f696ba1d72172dbc1e692c1dfa7b567","fileCount":9,"name":"negotiator","path":"negotiator","size":28710,"version":"1.0.0"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"501ecc61ad148476eb5316bad6418e95bb6ed9bfc794c23fcec15bc2c592ccf1","fileCount":4,"name":"object-assign","path":"object-assign","size":5493,"version":"4.1.1"},{"archiveModeSha256":"e3c2f2fe74f79d600564d5d6af9a6bd278aee46db5e0ec18493cdc9d895e0bbf","contentSha256":"7d76d46a138318bcabde842b6a8b994da11a2e3d2e8ecbc0f8780f50e17f2ca8","fileCount":34,"name":"object-inspect","path":"object-inspect","size":102920,"version":"1.13.4"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"ffb31d328870b95d8218c54f26f73d6e122847c7289052f57bf1569b0027593b","fileCount":5,"name":"on-finished","path":"on-finished","size":13679,"version":"2.4.1"},{"archiveModeSha256":"71f44c60c38bc2c3e17382504bf0dae39045eeec535cf6f4e1283e0514e8c2f4","contentSha256":"dc238bfc47820f9fb5bb56f1f3aae901657074482f52f91545784f041efb0210","fileCount":4,"name":"once","path":"once","size":4046,"version":"1.4.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"ca67e36d858cdb2f3a4eefd00d0bf7284143c1241b9ad06feec17799fc587638","fileCount":5,"name":"parseurl","path":"parseurl","size":10299,"version":"1.3.3"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"a3945cbf1aaf19b6dba601c948b6522566517f9b9f4181c964d5a0d8ee34270e","fileCount":5,"name":"path-key","path":"path-key","size":4553,"version":"3.1.1"},{"archiveModeSha256":"1514e7595cbbb9d1902c24ce60454e544df780b8fc73b7967218c3491dd3cefb","contentSha256":"17d110a00db54cd903aba2283f1d027f5acfbf7ce0003590c3abeb6059b5d221","fileCount":6,"name":"path-to-regexp","path":"path-to-regexp","size":59680,"version":"8.4.2"},{"archiveModeSha256":"f0a8527de334749bd26e70302ee03517ec50ff590e93cb3ea9a45ce4124a3829","contentSha256":"d5a9fd4846acac4b5ce086c88eca29de645c535aeee06df4a99a69cf4317e397","fileCount":10,"name":"pkce-challenge","path":"pkce-challenge","size":18211,"version":"5.0.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"d05e2db9e9d803ea440dd46461d51f482ed09978f2688eeda51a5711f1f41320","fileCount":5,"name":"proxy-addr","path":"proxy-addr","size":15399,"version":"2.0.7"},{"archiveModeSha256":"5ab250cd90dfced7c9429dd43d78846951b7b961947594e9f5175faee4c88a56","contentSha256":"fc8bdb9e912132fa5d83b22283d4f7f816f2e24a36761387e13cd942024186c1","fileCount":20,"name":"qs","path":"qs","size":374851,"version":"6.16.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"d12cb812790fa7b85393df185775b6c9ad8d05fd313f2b31cfb817d6296b1888","fileCount":5,"name":"range-parser","path":"range-parser","size":8457,"version":"1.2.1"},{"archiveModeSha256":"42cc208595e23f148383e3b4292ce5922102522b8bfd5f77417b06d1306d7aa1","contentSha256":"8f8dedbaf8d48e5de26e87910168aa505b7403e4c7739edc953cf5b25240839c","fileCount":5,"name":"raw-body","path":"raw-body","size":18495,"version":"3.0.2"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"4d281fcce32339c1f532a6e128db448b5d4c02ff371243a5c5696b40c86d3680","fileCount":4,"name":"require-from-string","path":"require-from-string","size":3422,"version":"2.0.2"},{"archiveModeSha256":"e09f32c46d1a5885aae361e487ce603fd60a9fbff1d5dcaab0f6236f971a9837","contentSha256":"99b97f87c5ffc0951428a30eea4a95cbe83f9a70122dbcc8a4b2e7634f8e8dcd","fileCount":7,"name":"router","path":"router","size":46851,"version":"2.2.0"},{"archiveModeSha256":"a462b8a4b54a0e6b8dcfc3d87612450f34478e7dc5845d4b16f239a578821a2c","contentSha256":"e075173c0c6569f0b806c5802462e19b25ed330b11040151ca5e0d8ea9e276d1","fileCount":7,"name":"safer-buffer","path":"safer-buffer","size":42299,"version":"2.1.2"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"3a396c8597fbbc013b13e4cf5dd7f05f798ee9809ad21d3966616d4f50964f02","fileCount":4,"name":"send","path":"send","size":32200,"version":"1.2.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"1724d9fc1a50078597419e4a1014f0d179522a46ed0e2a3a94b71f2f78575513","fileCount":4,"name":"serve-static","path":"serve-static","size":14335,"version":"2.2.1"},{"archiveModeSha256":"e1fd687bea7843794dae9ff84fa5a22ca00f6bea6583da85ed3e27d3d8444230","contentSha256":"db27148aba2fa1340dc867179dbccee745a7311c870a68bee4cea1e3fe2f3f8a","fileCount":6,"name":"setprototypeof","path":"setprototypeof","size":4025,"version":"1.2.0"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"6754ac701a5f6a41aface06678b945984b2c4088d9c81a9beae10d2f236ebbad","fileCount":4,"name":"shebang-command","path":"shebang-command","size":2556,"version":"2.0.0"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"a793c341e7bf38ef241be3075c0420da5b2c2df9c71b3aa64f16e8d80751acac","fileCount":5,"name":"shebang-regex","path":"shebang-regex","size":2828,"version":"3.0.0"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"28e3e44b391a232fea118591ef73556f7f3bd207d35a4fa6c2d8b04bf11be322","fileCount":12,"name":"side-channel","path":"side-channel","size":22864,"version":"1.1.1"},{"archiveModeSha256":"d7170194465bf2624edfb7844fea886827d0f714bb09d49567d5c7a1c3ce78c0","contentSha256":"6959587507edce3ca38987daa64c966a2f802e6ef85b8c9f96e36b51b7d63752","fileCount":13,"name":"side-channel-list","path":"side-channel-list","size":16973,"version":"1.0.1"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"c69ec67d49924576f5b78d598fe950d7a9464c1c61ad256cbebcda7641e1630a","fileCount":12,"name":"side-channel-map","path":"side-channel-map","size":13348,"version":"1.0.1"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"3f830eae8141c06d7395d4c9ae072ae767e98aace4720762ebded0ae32fca96c","fileCount":12,"name":"side-channel-weakmap","path":"side-channel-weakmap","size":14667,"version":"1.0.2"},{"archiveModeSha256":"c0228c165b333628d8971a1ebdeb334786829db2fa1c9cb6ba374a9214cd4d11","contentSha256":"0b9e6a3e2e50328afbb9254550c688707172bd481eb1084c02af1456aa803249","fileCount":6,"name":"statuses","path":"statuses","size":12505,"version":"2.0.2"},{"archiveModeSha256":"fbfe9587c1875404cd616f4b49a10531431b12aed0b44210e21f3459beb3eacd","contentSha256":"6d854be5694f54f83a7cec190bcd141318a1c8a78df8b42ab64fbae2c5dc4518","fileCount":249,"name":"tar","path":"tar","size":2298662,"version":"7.5.22"},{"archiveModeSha256":"155b84d16e5a3094314970a26a6b1a157604be8a208c32a0562ce579ec994c2c","contentSha256":"7db31cac4d54315057535dd080e4423ab16e09e9161e8b83191c58e2a90f7ea5","fileCount":13,"name":"yallist","path":"tar/node_modules/yallist","size":80297,"version":"5.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"0c7b3b8db791f787793c0968ec6f6b9dc48d14783c4c34ada0e0475eb3c011d4","fileCount":5,"name":"toidentifier","path":"toidentifier","size":4685,"version":"1.0.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"79ce0363e01b714db55735699052b2534d0f6ef84d785b137323647cf779657a","fileCount":5,"name":"type-is","path":"type-is","size":21269,"version":"2.1.0"},{"archiveModeSha256":"b06c6eaf0b12f13ca2978123c3bc1ee1a6f8bacabea1533868e34accee2145ec","contentSha256":"a90e26ff6b282c4ec28742358f45cffa2a4736aceb4abc7cb558bd6fc740f73b","fileCount":6,"name":"content-type","path":"type-is/node_modules/content-type","size":20751,"version":"2.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"99534b97972283845db4ef41d39156d6720030a2307f2f0649a7f1c8fabf68c6","fileCount":5,"name":"unpipe","path":"unpipe","size":4311,"version":"1.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"880e12feeb6220ce4cdb0bd7f19ddb9d693666a77059502e9d667e06b3e04ce8","fileCount":5,"name":"vary","path":"vary","size":8747,"version":"1.1.2"},{"archiveModeSha256":"8fc892f4d8b9a44a1bfc252b556ebb01d424366ec71fb56f8b0fc2b81bbb5897","contentSha256":"dbe8a52a4c488ed54e7b60f93f89947ff828f9786a804b40a049152c35a47132","fileCount":5,"name":"which","path":"which","size":7308,"version":"2.0.2"},{"archiveModeSha256":"4b84777e08ccbe4ad45474b4248dc37be2c73b6467d369958cc06ca38507a13f","contentSha256":"4f5c30f228b020aca343e88dc0b15af855173a168663e687afd72c58cf586b99","fileCount":4,"name":"wrappy","path":"wrappy","size":2961,"version":"1.0.2"},{"archiveModeSha256":"b98a45815677c477e01457344c56184f50841e90f1f78c98f47d4f631140c4f3","contentSha256":"eaed4b517e605755ecde1e008133c5418c238657a3236735a1053f00b4a7e58b","fileCount":718,"name":"zod","path":"zod","size":4558122,"version":"4.4.3"},{"archiveModeSha256":"224107ce4653d3b406ca40837a05712425b14ff999773673d516eb31d8e9a34d","contentSha256":"d45857bb67c09b95d65c081b1afc095fcfd8d3e8d8bc3b57f645a1f369b1ea04","fileCount":130,"name":"zod-to-json-schema","path":"zod-to-json-schema","size":219264,"version":"3.25.2"}],"portability":"platform-independent-no-native-or-install-variance","rootDependencies":[{"name":"@modelcontextprotocol/sdk","requested":"^1.30.0"},{"name":"marked","requested":"18.0.10"},{"name":"tar","requested":"7.5.22"}],"schemaVersion":2}
|
|
1
|
+
{"algorithm":"sha256","assurance":"packaged-build-byte-observation","inventoryDigest":"82873e3a3cdb02eacf318d11d2b42ddfd568ecb44de3ea97d9a3070f53685e9b","package":{"manifestSha256":"d7bab5c948aa8eafb19e27d99ffdb0e19e56fad5ab8e4721be5d7d40cf06068f","name":"@ashlr/hub","version":"3.14.0"},"packages":[{"archiveModeSha256":"e593537ea027a53342e9c95325f3823e507298732511cd61c314537000cb008c","contentSha256":"39703185cd013059db3eb5ac351625fa9dfd1eef0509fb47ff04fcc0a4cec6f5","fileCount":25,"name":"@hono/node-server","path":"@hono/node-server","size":120353,"version":"2.0.12"},{"archiveModeSha256":"f331e808f8ff6d9d2e9cbf1ad1bc05f35c36b7ac1489084d24460c345a354819","contentSha256":"ef4367c4587f87b13b688ecafe7010c2764623bfbf1f386a1943d7392f545551","fileCount":13,"name":"@isaacs/fs-minipass","path":"@isaacs/fs-minipass","size":100617,"version":"4.0.1"},{"archiveModeSha256":"212ef6ab48b10cfc61481fdb4d517d5aefa8a9e78f321c9483e13f8f0854aade","contentSha256":"54ecfe6624026e35139d2f943de8626043145c82c1d6580882a4adf4ee6b3c90","fileCount":693,"name":"@modelcontextprotocol/sdk","path":"@modelcontextprotocol/sdk","size":4322438,"version":"1.30.0"},{"archiveModeSha256":"30bd56bd2c26086e14f1b0c58123fc916fea96c6c86f7bd8e7e2fba1526cb30f","contentSha256":"78052c66ba1f5f3d3310d2685ee84af5b060c6960c06eba5cb1d08da860019ff","fileCount":466,"name":"ajv","path":"@modelcontextprotocol/sdk/node_modules/ajv","size":1033496,"version":"8.20.0"},{"archiveModeSha256":"0e9ff2b53d7e42a61c51248833683dfc6b09c9726c3f0c50663af0a6b6f83fea","contentSha256":"18bc9ecab93292b6f357a0bef6b26e39e8d7b14c46fb9b1adc8a0826f7ad419b","fileCount":12,"name":"json-schema-traverse","path":"@modelcontextprotocol/sdk/node_modules/json-schema-traverse","size":22220,"version":"1.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"93bc4d919570486c9dac1184c65d89802a5d7e5e51d2ad2c9c79e9229b0d2bfd","fileCount":5,"name":"accepts","path":"accepts","size":16917,"version":"2.0.0"},{"archiveModeSha256":"338fe03444b2468ffb84fa0a62e4ad26985fbe9063f5b6500fc00baab52687a7","contentSha256":"a570e5cd740441f9e2ad9e20aab09d6ff5f01c54b5ca63889fb9cc65aa22ed38","fileCount":15,"name":"ajv-formats","path":"ajv-formats","size":56763,"version":"3.0.1"},{"archiveModeSha256":"30bd56bd2c26086e14f1b0c58123fc916fea96c6c86f7bd8e7e2fba1526cb30f","contentSha256":"78052c66ba1f5f3d3310d2685ee84af5b060c6960c06eba5cb1d08da860019ff","fileCount":466,"name":"ajv","path":"ajv-formats/node_modules/ajv","size":1033496,"version":"8.20.0"},{"archiveModeSha256":"0e9ff2b53d7e42a61c51248833683dfc6b09c9726c3f0c50663af0a6b6f83fea","contentSha256":"18bc9ecab93292b6f357a0bef6b26e39e8d7b14c46fb9b1adc8a0826f7ad419b","fileCount":12,"name":"json-schema-traverse","path":"ajv-formats/node_modules/json-schema-traverse","size":22220,"version":"1.0.0"},{"archiveModeSha256":"99258e0ccfd899459bc7f95949a5bec9039234f80f0a96cfbf7de4cfd9deaad9","contentSha256":"e6f71097d1bf22309cc2010ba116320dbe0b37b53af324631969ccef03817448","fileCount":10,"name":"body-parser","path":"body-parser","size":42536,"version":"2.3.0"},{"archiveModeSha256":"b06c6eaf0b12f13ca2978123c3bc1ee1a6f8bacabea1533868e34accee2145ec","contentSha256":"a90e26ff6b282c4ec28742358f45cffa2a4736aceb4abc7cb558bd6fc740f73b","fileCount":6,"name":"content-type","path":"body-parser/node_modules/content-type","size":20751,"version":"2.0.0"},{"archiveModeSha256":"51df0d122ab1b5f510d0a80e73a4d33fcb1ab44cf00e903f505c384be80528c8","contentSha256":"048d4140095d01f76e5d5a576d5a10de4e1cebcc64cab6ea49f14afc54939be6","fileCount":5,"name":"bytes","path":"bytes","size":12270,"version":"3.1.2"},{"archiveModeSha256":"df415aae8a21af7234f013c4d934c5074b07e617f6189084a43c78a49bafcb78","contentSha256":"870b383c07315fef9619399c2450297d079b1398583984a5ccb9cd2b1005cb59","fileCount":21,"name":"call-bind-apply-helpers","path":"call-bind-apply-helpers","size":15952,"version":"1.0.2"},{"archiveModeSha256":"fd4de57fefcfd077cce1a9e57bd1b208bf59a7da3ae9f25a7e787ab17b10490f","contentSha256":"01be39d7156b173ffe2869dcd589e2080dcf2f1bcbcfa2f20409582ccb21cfaf","fileCount":11,"name":"call-bound","path":"call-bound","size":17106,"version":"1.0.4"},{"archiveModeSha256":"155b84d16e5a3094314970a26a6b1a157604be8a208c32a0562ce579ec994c2c","contentSha256":"e1ec1eb1cc0367f01e1e8a9a8366d040942612a277ba4034707a130d6d70a0ce","fileCount":13,"name":"chownr","path":"chownr","size":22048,"version":"3.0.0"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"4f967d79760cd06bcfdbf918d30b3a77752d03e6e76582aeac4b3a81dcd6a6a9","fileCount":4,"name":"content-disposition","path":"content-disposition","size":19928,"version":"1.1.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"1ad93015c6082464b41e63397fc9ee739d6bb7cb93755c9fbef749cff39b8675","fileCount":5,"name":"content-type","path":"content-type","size":10471,"version":"1.0.5"},{"archiveModeSha256":"2048aee59eb971a928e2fcac3881a222b2c9140ec980dfd14756de04a3885902","contentSha256":"ca8dd7ddd6a3970df6e3efff74247cd6f985dfdcc596ac0f58cd50c5b88555e8","fileCount":5,"name":"cookie","path":"cookie","size":23382,"version":"0.7.2"},{"archiveModeSha256":"51df0d122ab1b5f510d0a80e73a4d33fcb1ab44cf00e903f505c384be80528c8","contentSha256":"360601ff3d56cfdb8de7d836940caa5d74a437474129017697aab4696fc84e03","fileCount":5,"name":"cookie-signature","path":"cookie-signature","size":4993,"version":"1.2.2"},{"archiveModeSha256":"3bf3b01496f9ce98ec5c58c595c317975f470de6da6599d5d405c60c294f12c6","contentSha256":"9a628bd867c40f8bd4753d84f5f364a5ce92fcdd73fb164977d566275580786e","fileCount":4,"name":"cors","path":"cors","size":19956,"version":"2.8.6"},{"archiveModeSha256":"0c4b2570bd695c455ca6e9f67aaabdf88b1d486e39e9e52f4b8cc0c595e08f33","contentSha256":"9666a5f3074e7ff71dab89ccc0fecd79699b6c68e85087cc3416e9b220e9369e","fileCount":9,"name":"cross-spawn","path":"cross-spawn","size":16094,"version":"7.0.6"},{"archiveModeSha256":"fd7ec5fdf7ea41f349416d375406faf41b35702e2e23f02d2c015acb72adc8f2","contentSha256":"e9f41fdd4e55dc936295270bdb7c994d9ad85dd2bd6f2fb3d46767a16ee1a03e","fileCount":7,"name":"debug","path":"debug","size":42793,"version":"4.4.3"},{"archiveModeSha256":"bb32a6d3c5b9088943cd629938024c4c8d207814db8194313063fe3844cbbc8c","contentSha256":"cfc74892a99b215bdc61d9817f90b235318267ddbf8a29ef52b2906d8b26e980","fileCount":6,"name":"depd","path":"depd","size":27117,"version":"2.0.0"},{"archiveModeSha256":"305af32d2ba2d5fe89c9acaa17537f1a06e7e131bf81112cb11d623fdbb9c6f1","contentSha256":"5c4728d83554a1fc2fd51c01cf2d30bb89adbe1c6469a52201eed72b68af0f91","fileCount":15,"name":"dunder-proto","path":"dunder-proto","size":13003,"version":"1.0.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"bae9f4988b2d279e16b4bb3e5527647300137f2978aef97f40acd1b453a8d5a7","fileCount":4,"name":"ee-first","path":"ee-first","size":6259,"version":"1.1.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"1c50e3d3cd38c66e1e462f0004781f789e59959aec798aef31f9a2f049d216e5","fileCount":4,"name":"encodeurl","path":"encodeurl","size":6980,"version":"2.0.0"},{"archiveModeSha256":"fd4de57fefcfd077cce1a9e57bd1b208bf59a7da3ae9f25a7e787ab17b10490f","contentSha256":"a2dd73d6e2d58eda48469112f2eacae1fec583f84f72643b3593c6092bd3e877","fileCount":11,"name":"es-define-property","path":"es-define-property","size":10217,"version":"1.0.1"},{"archiveModeSha256":"23a440c46333c31a4ae0a1ffdc2ec6db818da1c36a039abc189b118e1bcdc625","contentSha256":"fd08a46013bf09d90a2240c6a8a97f12ff7106507456c73e7db53f608b41214e","fileCount":22,"name":"es-errors","path":"es-errors","size":12324,"version":"1.3.0"},{"archiveModeSha256":"b6b95f08bcc5f254eddbff61393e6efa09637b9fe2996a163d3c2c71c28bb681","contentSha256":"893e26d760872fd0c233391eff242a717320d6b2d6ab004ad827d1dd6c517ea5","fileCount":16,"name":"es-object-atoms","path":"es-object-atoms","size":11967,"version":"1.1.2"},{"archiveModeSha256":"764d64b5de2e2faa2387d92a5ed5dcbc1822797787a67ee46e827d4d353a2cb5","contentSha256":"27b564cee7701979ecc9ba3ad9b57c4eb185ddfe14f6fbef7961b9d95fc51789","fileCount":4,"name":"escape-html","path":"escape-html","size":3660,"version":"1.0.3"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"53b09a946276069cc9e202851404809b0b27f9616f6398ba1ba053cf27a9b61f","fileCount":5,"name":"etag","path":"etag","size":10809,"version":"1.8.1"},{"archiveModeSha256":"15cc21147f13500c581198be8a82187d7d2cd38a2c23b9459c89f22990a5b971","contentSha256":"fda71ef638beebe2ebae12fe705f63cb2276d6b35564064714ad352727e6f0a9","fileCount":13,"name":"eventsource","path":"eventsource","size":147304,"version":"3.0.7"},{"archiveModeSha256":"57e54f8cb946a2072d2c928cce29ff71a0383916edbb50e97042f859f043677f","contentSha256":"57456c2bbbfd8965c4466cf8a120581c6de9c67c1e04bf815189370f5f76ec3f","fileCount":21,"name":"eventsource-parser","path":"eventsource-parser","size":123218,"version":"3.1.0"},{"archiveModeSha256":"e882878862f5bfd4ff0cb5120df0b9e29758544fabad522563cc91a5102513a0","contentSha256":"c4cccb2f6077128bc31e51f7f772663988796261352298821eea234de1f42281","fileCount":10,"name":"express","path":"express","size":75429,"version":"5.2.1"},{"archiveModeSha256":"0f783761dfb7c14c80535b5a3d2f282398f8621985ed04be794ef3144740784e","contentSha256":"332479fcc3eaa25713fa7df0d4e3a953b7a008fde6413d4278aa667d7e4473e1","fileCount":9,"name":"express-rate-limit","path":"express-rate-limit","size":146332,"version":"8.5.2"},{"archiveModeSha256":"78e09d25ac30efc25d5604344654f3158820dbd9d45a1900b9f44e0e500839cf","contentSha256":"5ca43c0737026213eee30eb17e40859c918af2ae30f16d3882fdfbd8bcb03afd","fileCount":11,"name":"fast-deep-equal","path":"fast-deep-equal","size":12966,"version":"3.1.3"},{"archiveModeSha256":"f75ddef45cc69b6bfbcad49bde00345a7e27f27d03cd67d1083d2a334122fc1a","contentSha256":"36e796ba92bcc878b9b3c6b939c0aa1dba25e4c2ed8609f0ed748aa17c80347e","fileCount":44,"name":"fast-uri","path":"fast-uri","size":215561,"version":"3.1.6"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"a184198d4d20e0177fd4f9e5d82bc40d34143c3a8279e7200511905b08e91d1a","fileCount":5,"name":"finalhandler","path":"finalhandler","size":18111,"version":"2.1.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"5a3882ea4acfd16ac4851f43587d6ab87fd08de45665981db6e8ee5944486118","fileCount":5,"name":"forwarded","path":"forwarded","size":5876,"version":"0.2.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"c3d3cc5e56026a726c20ed1d516509608bddb667d5cc999f01cd3971a92e4406","fileCount":5,"name":"fresh","path":"fresh","size":10289,"version":"2.0.0"},{"archiveModeSha256":"6f10ab8235c8a46f648cd17681016bf68595208a48d01f1351bd0b19bcb4301c","contentSha256":"8afcdc5f094efcac14509859ce70157ec7daff89642bc5d604b235f6917dd5b0","fileCount":12,"name":"function-bind","path":"function-bind","size":31427,"version":"1.1.2"},{"archiveModeSha256":"2d4c82c10091157e0f33c6a4a049ef4b2609c8f2a6d70882fa538122b54c1ce3","contentSha256":"1b862b6fe457cd272bb8bce8407ac7f972c857ac317189afe7a29ba378f0f6ac","fileCount":9,"name":"get-intrinsic","path":"get-intrinsic","size":46542,"version":"1.3.0"},{"archiveModeSha256":"995b5a61ce2e3cb963405de061067b699b48e90eb6ce2ac0d88e88bd9c38549a","contentSha256":"3dc759afa7e26cd60cc642b39bffcbd22dd574469e4ac2174cc9b57b97599f82","fileCount":15,"name":"get-proto","path":"get-proto","size":10840,"version":"1.0.1"},{"archiveModeSha256":"169ecf4d0c444e719e5bcd4e912e3ceb193138b5ab7eef8f727798759a4331d3","contentSha256":"6f2eeeb1483b34581df01b15d1b80b2b45be2c7ce06496c72a90351194858738","fileCount":12,"name":"gopd","path":"gopd","size":9869,"version":"1.2.0"},{"archiveModeSha256":"2f2262ae382d511cef7d373ff151a1a662ae623e50cb17d3a920d9e87593011d","contentSha256":"617f42cde01c4ca5a0bdab28f544a70e5f52c8707daad05016cb789193ba0554","fileCount":16,"name":"has-symbols","path":"has-symbols","size":23409,"version":"1.1.0"},{"archiveModeSha256":"35386dc8ee83de6dc1f61324623e1d9907205a1bd2fa66b02bc7c0429bdf85cc","contentSha256":"e6b281a2b3f6100d9b44f0916c797da53c254e8a38cb357134e80eddf5181a48","fileCount":10,"name":"hasown","path":"hasown","size":10332,"version":"2.0.4"},{"archiveModeSha256":"6c607d433127ab8aa7eae155e5777360167dc436457ed7fbfe66ff391f0988fa","contentSha256":"ab285a621121201b7aed9fa2a4447836246643db498bf1a4b71888d5fce36f83","fileCount":568,"name":"hono","path":"hono","size":1386244,"version":"4.13.5"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"b34d2d8fdbf41450767591b746eb2adaa4a22b59aa55c94ef0ce65ff1ba6fe6d","fileCount":5,"name":"http-errors","path":"http-errors","size":19064,"version":"2.0.1"},{"archiveModeSha256":"086f9d977a09c672ced4c2d703944875d8db454fe8fdd7fe8882f0888ed7c20f","contentSha256":"762b205b641d142557d0b3fb5d376d571e7823473661004f6cb319b7c0603976","fileCount":27,"name":"iconv-lite","path":"iconv-lite","size":343635,"version":"0.7.2"},{"archiveModeSha256":"7b3e1bd04c00f38ad3e4f4fb20e65a4eeb707527b4fd7c84ea7764cef9cebdff","contentSha256":"7c50865fdccbf6c6b44600a997d13c0c5c215ded131f0a4c98acd8d15694e632","fileCount":5,"name":"inherits","path":"inherits","size":3958,"version":"2.0.4"},{"archiveModeSha256":"3ef444401f83c959cfda73e7e9fd50d0796f6f141f36f458a3f132b362e6c375","contentSha256":"0e8533c4762708d8f61d9a21b3fa5f10d7f4907a36609490e71edaadb1186c1e","fileCount":30,"name":"ip-address","path":"ip-address","size":299533,"version":"10.4.0"},{"archiveModeSha256":"a710aacb72996fbfa6d514e678b50cfe4d17619a71648b516a3a09a96479c2c8","contentSha256":"272599141de35d28a1e92b1aec64154c866998a44310163040e6499b6ec1d9c3","fileCount":6,"name":"ipaddr.js","path":"ipaddr.js","size":42145,"version":"1.9.1"},{"archiveModeSha256":"969b492deb1f22a61f85cf9f98cc0f7c1984c3c0fd162d3ba5a600f0f6181ed8","contentSha256":"31aa30a6fbd5f134714c0ae7bc1e4c7a00b1c5bfabd2931e92618a4121bd6fa8","fileCount":6,"name":"is-promise","path":"is-promise","size":2958,"version":"4.0.0"},{"archiveModeSha256":"8f22f331a576ff070646bb75a80918007ff2b93be80520594930dd04865a6e44","contentSha256":"a560d4935c162172bd5feede21bc62536cec616c166de516cd5c367a7ca23f98","fileCount":8,"name":"isexe","path":"isexe","size":10956,"version":"2.0.0"},{"archiveModeSha256":"ec3d3c0b513b0905f208bc029bc355c1cf7038f95e2e7b1e2d19ddac26e374ea","contentSha256":"e3633b6af5ec16f6448989dd91dad2798a190e52e7a3d16d90ceca23d52c5b35","fileCount":88,"name":"jose","path":"jose","size":257736,"version":"6.2.3"},{"archiveModeSha256":"bdba5b2b7f19b131522a9af3d6cd30db94ee97690d535e5c3c84d1bce068c2a9","contentSha256":"efcb8d289875749e930bf8f745c132edf832c0f9a25768fcd97e129851288174","fileCount":9,"name":"json-schema-typed","path":"json-schema-typed","size":197188,"version":"8.0.2"},{"archiveModeSha256":"3353a1cbd727174e11aa6b1a8b1163caeb467c3ac3cad2ddb7d4c230da64bdd8","contentSha256":"251a6d99cfc3364a8732128487bbd422d3964f990fe1755b0b78046b65328731","fileCount":12,"name":"marked","path":"marked","size":469664,"version":"18.0.10"},{"archiveModeSha256":"74a40513091b687e690f49f4110e314302d0b8b3c9f196cf587c9d702c4cd7e9","contentSha256":"a4884adbf4399adaff50d30983c4afa402a1d15b56a371824ea5c7c7cab385fa","fileCount":38,"name":"math-intrinsics","path":"math-intrinsics","size":17323,"version":"1.1.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"1ec2d844bc07543d41a6ab6d78008dd2998877609cc16ba532204995fb4339c5","fileCount":5,"name":"media-typer","path":"media-typer","size":9256,"version":"1.1.0"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"983f0d7028b74df8828007fabcab26e7f36e42fc7db74e321a110f6f40aa3fa7","fileCount":5,"name":"merge-descriptors","path":"merge-descriptors","size":4373,"version":"2.0.0"},{"archiveModeSha256":"2cb256014f7e1eda905b4809694ab3b06e8c1f1c5b78cb4de5da514e4e57659a","contentSha256":"c979d86230ca6688633d5ef7c89397f312c6d556a1964cb8dfe33596b8b548b9","fileCount":6,"name":"mime-db","path":"mime-db","size":225566,"version":"1.54.0"},{"archiveModeSha256":"20c4497e7b68189571962123cabb12dc852bb2346c45deed91c081c899659249","contentSha256":"28ee29177b736969ce0a555c11ae5275280510007a2670dcdd7ea6b1868f46c3","fileCount":6,"name":"mime-types","path":"mime-types","size":22871,"version":"3.0.2"},{"archiveModeSha256":"155b84d16e5a3094314970a26a6b1a157604be8a208c32a0562ce579ec994c2c","contentSha256":"46d898fe1f0594d49333d4bc32bce63349d6f124c78dfc3eda96c9f9b2f796fe","fileCount":13,"name":"minipass","path":"minipass","size":366791,"version":"7.1.3"},{"archiveModeSha256":"78b1977130401dbbba561837630370f3061275bb5a1963454b5f092e3cf208fe","contentSha256":"19c7cff62b036e6f0aad440e776cc94134bb6434c0c96939de864df88e2b0f21","fileCount":21,"name":"minizlib","path":"minizlib","size":117811,"version":"3.1.0"},{"archiveModeSha256":"20014b85b0431588ccd9c0e6c6afeffc10e21d0ee7de53e2ba2296fd52bb1a7c","contentSha256":"667f3d7d170cb303a69e67dc3a69a08255a3e5cfb8703f4904417b0362bc0d28","fileCount":4,"name":"ms","path":"ms","size":6721,"version":"2.1.3"},{"archiveModeSha256":"5602cdc50f925bdc25002fe3756f55c3e1117229d22c2b2c600e8ffca90295f6","contentSha256":"84851509ca06e7b5b721720762592fa23f696ba1d72172dbc1e692c1dfa7b567","fileCount":9,"name":"negotiator","path":"negotiator","size":28710,"version":"1.0.0"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"501ecc61ad148476eb5316bad6418e95bb6ed9bfc794c23fcec15bc2c592ccf1","fileCount":4,"name":"object-assign","path":"object-assign","size":5493,"version":"4.1.1"},{"archiveModeSha256":"e3c2f2fe74f79d600564d5d6af9a6bd278aee46db5e0ec18493cdc9d895e0bbf","contentSha256":"7d76d46a138318bcabde842b6a8b994da11a2e3d2e8ecbc0f8780f50e17f2ca8","fileCount":34,"name":"object-inspect","path":"object-inspect","size":102920,"version":"1.13.4"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"ffb31d328870b95d8218c54f26f73d6e122847c7289052f57bf1569b0027593b","fileCount":5,"name":"on-finished","path":"on-finished","size":13679,"version":"2.4.1"},{"archiveModeSha256":"71f44c60c38bc2c3e17382504bf0dae39045eeec535cf6f4e1283e0514e8c2f4","contentSha256":"dc238bfc47820f9fb5bb56f1f3aae901657074482f52f91545784f041efb0210","fileCount":4,"name":"once","path":"once","size":4046,"version":"1.4.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"ca67e36d858cdb2f3a4eefd00d0bf7284143c1241b9ad06feec17799fc587638","fileCount":5,"name":"parseurl","path":"parseurl","size":10299,"version":"1.3.3"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"a3945cbf1aaf19b6dba601c948b6522566517f9b9f4181c964d5a0d8ee34270e","fileCount":5,"name":"path-key","path":"path-key","size":4553,"version":"3.1.1"},{"archiveModeSha256":"1514e7595cbbb9d1902c24ce60454e544df780b8fc73b7967218c3491dd3cefb","contentSha256":"17d110a00db54cd903aba2283f1d027f5acfbf7ce0003590c3abeb6059b5d221","fileCount":6,"name":"path-to-regexp","path":"path-to-regexp","size":59680,"version":"8.4.2"},{"archiveModeSha256":"f0a8527de334749bd26e70302ee03517ec50ff590e93cb3ea9a45ce4124a3829","contentSha256":"d5a9fd4846acac4b5ce086c88eca29de645c535aeee06df4a99a69cf4317e397","fileCount":10,"name":"pkce-challenge","path":"pkce-challenge","size":18211,"version":"5.0.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"d05e2db9e9d803ea440dd46461d51f482ed09978f2688eeda51a5711f1f41320","fileCount":5,"name":"proxy-addr","path":"proxy-addr","size":15399,"version":"2.0.7"},{"archiveModeSha256":"5ab250cd90dfced7c9429dd43d78846951b7b961947594e9f5175faee4c88a56","contentSha256":"fc8bdb9e912132fa5d83b22283d4f7f816f2e24a36761387e13cd942024186c1","fileCount":20,"name":"qs","path":"qs","size":374851,"version":"6.16.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"d12cb812790fa7b85393df185775b6c9ad8d05fd313f2b31cfb817d6296b1888","fileCount":5,"name":"range-parser","path":"range-parser","size":8457,"version":"1.2.1"},{"archiveModeSha256":"42cc208595e23f148383e3b4292ce5922102522b8bfd5f77417b06d1306d7aa1","contentSha256":"8f8dedbaf8d48e5de26e87910168aa505b7403e4c7739edc953cf5b25240839c","fileCount":5,"name":"raw-body","path":"raw-body","size":18495,"version":"3.0.2"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"4d281fcce32339c1f532a6e128db448b5d4c02ff371243a5c5696b40c86d3680","fileCount":4,"name":"require-from-string","path":"require-from-string","size":3422,"version":"2.0.2"},{"archiveModeSha256":"e09f32c46d1a5885aae361e487ce603fd60a9fbff1d5dcaab0f6236f971a9837","contentSha256":"99b97f87c5ffc0951428a30eea4a95cbe83f9a70122dbcc8a4b2e7634f8e8dcd","fileCount":7,"name":"router","path":"router","size":46851,"version":"2.2.0"},{"archiveModeSha256":"a462b8a4b54a0e6b8dcfc3d87612450f34478e7dc5845d4b16f239a578821a2c","contentSha256":"e075173c0c6569f0b806c5802462e19b25ed330b11040151ca5e0d8ea9e276d1","fileCount":7,"name":"safer-buffer","path":"safer-buffer","size":42299,"version":"2.1.2"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"3a396c8597fbbc013b13e4cf5dd7f05f798ee9809ad21d3966616d4f50964f02","fileCount":4,"name":"send","path":"send","size":32200,"version":"1.2.1"},{"archiveModeSha256":"9838afc4a08f6acf39bb46bba0c8cb523556b2fc61d2958c7bdcb1ae66ca13dd","contentSha256":"1724d9fc1a50078597419e4a1014f0d179522a46ed0e2a3a94b71f2f78575513","fileCount":4,"name":"serve-static","path":"serve-static","size":14335,"version":"2.2.1"},{"archiveModeSha256":"e1fd687bea7843794dae9ff84fa5a22ca00f6bea6583da85ed3e27d3d8444230","contentSha256":"db27148aba2fa1340dc867179dbccee745a7311c870a68bee4cea1e3fe2f3f8a","fileCount":6,"name":"setprototypeof","path":"setprototypeof","size":4025,"version":"1.2.0"},{"archiveModeSha256":"99458992876825b1bc4dca80d075db820436a88fcf71baefbc25db39f52760e9","contentSha256":"6754ac701a5f6a41aface06678b945984b2c4088d9c81a9beae10d2f236ebbad","fileCount":4,"name":"shebang-command","path":"shebang-command","size":2556,"version":"2.0.0"},{"archiveModeSha256":"320af631be54ba1ce035560718a037511184c1d85329f83345fbe80f2527e8c9","contentSha256":"a793c341e7bf38ef241be3075c0420da5b2c2df9c71b3aa64f16e8d80751acac","fileCount":5,"name":"shebang-regex","path":"shebang-regex","size":2828,"version":"3.0.0"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"28e3e44b391a232fea118591ef73556f7f3bd207d35a4fa6c2d8b04bf11be322","fileCount":12,"name":"side-channel","path":"side-channel","size":22864,"version":"1.1.1"},{"archiveModeSha256":"d7170194465bf2624edfb7844fea886827d0f714bb09d49567d5c7a1c3ce78c0","contentSha256":"6959587507edce3ca38987daa64c966a2f802e6ef85b8c9f96e36b51b7d63752","fileCount":13,"name":"side-channel-list","path":"side-channel-list","size":16973,"version":"1.0.1"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"c69ec67d49924576f5b78d598fe950d7a9464c1c61ad256cbebcda7641e1630a","fileCount":12,"name":"side-channel-map","path":"side-channel-map","size":13348,"version":"1.0.1"},{"archiveModeSha256":"0e4409f8c28db8f2663ca9ff448e6029ee7e54e7d9d11f23f416dd0b83289589","contentSha256":"3f830eae8141c06d7395d4c9ae072ae767e98aace4720762ebded0ae32fca96c","fileCount":12,"name":"side-channel-weakmap","path":"side-channel-weakmap","size":14667,"version":"1.0.2"},{"archiveModeSha256":"c0228c165b333628d8971a1ebdeb334786829db2fa1c9cb6ba374a9214cd4d11","contentSha256":"0b9e6a3e2e50328afbb9254550c688707172bd481eb1084c02af1456aa803249","fileCount":6,"name":"statuses","path":"statuses","size":12505,"version":"2.0.2"},{"archiveModeSha256":"fbfe9587c1875404cd616f4b49a10531431b12aed0b44210e21f3459beb3eacd","contentSha256":"6d854be5694f54f83a7cec190bcd141318a1c8a78df8b42ab64fbae2c5dc4518","fileCount":249,"name":"tar","path":"tar","size":2298662,"version":"7.5.22"},{"archiveModeSha256":"155b84d16e5a3094314970a26a6b1a157604be8a208c32a0562ce579ec994c2c","contentSha256":"7db31cac4d54315057535dd080e4423ab16e09e9161e8b83191c58e2a90f7ea5","fileCount":13,"name":"yallist","path":"tar/node_modules/yallist","size":80297,"version":"5.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"0c7b3b8db791f787793c0968ec6f6b9dc48d14783c4c34ada0e0475eb3c011d4","fileCount":5,"name":"toidentifier","path":"toidentifier","size":4685,"version":"1.0.1"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"79ce0363e01b714db55735699052b2534d0f6ef84d785b137323647cf779657a","fileCount":5,"name":"type-is","path":"type-is","size":21269,"version":"2.1.0"},{"archiveModeSha256":"b06c6eaf0b12f13ca2978123c3bc1ee1a6f8bacabea1533868e34accee2145ec","contentSha256":"a90e26ff6b282c4ec28742358f45cffa2a4736aceb4abc7cb558bd6fc740f73b","fileCount":6,"name":"content-type","path":"type-is/node_modules/content-type","size":20751,"version":"2.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"99534b97972283845db4ef41d39156d6720030a2307f2f0649a7f1c8fabf68c6","fileCount":5,"name":"unpipe","path":"unpipe","size":4311,"version":"1.0.0"},{"archiveModeSha256":"6deab79d9a3bed680c53dd7207c0797080f88a1f668db456501aed3105c7eea5","contentSha256":"880e12feeb6220ce4cdb0bd7f19ddb9d693666a77059502e9d667e06b3e04ce8","fileCount":5,"name":"vary","path":"vary","size":8747,"version":"1.1.2"},{"archiveModeSha256":"8fc892f4d8b9a44a1bfc252b556ebb01d424366ec71fb56f8b0fc2b81bbb5897","contentSha256":"dbe8a52a4c488ed54e7b60f93f89947ff828f9786a804b40a049152c35a47132","fileCount":5,"name":"which","path":"which","size":7308,"version":"2.0.2"},{"archiveModeSha256":"4b84777e08ccbe4ad45474b4248dc37be2c73b6467d369958cc06ca38507a13f","contentSha256":"4f5c30f228b020aca343e88dc0b15af855173a168663e687afd72c58cf586b99","fileCount":4,"name":"wrappy","path":"wrappy","size":2961,"version":"1.0.2"},{"archiveModeSha256":"b98a45815677c477e01457344c56184f50841e90f1f78c98f47d4f631140c4f3","contentSha256":"eaed4b517e605755ecde1e008133c5418c238657a3236735a1053f00b4a7e58b","fileCount":718,"name":"zod","path":"zod","size":4558122,"version":"4.4.3"},{"archiveModeSha256":"224107ce4653d3b406ca40837a05712425b14ff999773673d516eb31d8e9a34d","contentSha256":"d45857bb67c09b95d65c081b1afc095fcfd8d3e8d8bc3b57f645a1f369b1ea04","fileCount":130,"name":"zod-to-json-schema","path":"zod-to-json-schema","size":219264,"version":"3.25.2"}],"portability":"platform-independent-no-native-or-install-variance","rootDependencies":[{"name":"@modelcontextprotocol/sdk","requested":"^1.30.0"},{"name":"marked","requested":"18.0.10"},{"name":"tar","requested":"7.5.22"}],"schemaVersion":2}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ashlr/hub",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.14.0",
|
|
4
4
|
"description": "Local-first command center for agentic engineers.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -113,8 +113,9 @@
|
|
|
113
113
|
"gate": "node scripts/gate.mjs",
|
|
114
114
|
"gate:full": "node scripts/gate.mjs --full",
|
|
115
115
|
"ship:local": "node scripts/ship-local.mjs",
|
|
116
|
-
"lint": "eslint . && npm run lint:realio-lane",
|
|
116
|
+
"lint": "eslint . && npm run lint:realio-lane && npm run lint:verse-sync-io",
|
|
117
117
|
"lint:realio-lane": "node scripts/check-realio-lane-membership.mjs",
|
|
118
|
+
"lint:verse-sync-io": "node scripts/check-verse-sync-io.mjs",
|
|
118
119
|
"typecheck": "tsc --noEmit && npm run typecheck:web",
|
|
119
120
|
"typecheck:web": "tsc --noEmit -p src/web-ui/tsconfig.json"
|
|
120
121
|
},
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,n,s as r}from"./index-CyK31YRm.js";import{H as i,J as a,a as o,g as s,i as c,m as l}from"./global-y_exIyAP.js";import{r as u}from"./Epistemic-fycQTBRO.js";import{n as d}from"./StatusBadge-CXG3iNL4.js";import{t as f}from"./MutationTokenDialog-Bm34BNVV.js";import{t as p}from"./ConfirmDialog-CLUhzaBj.js";import{t as m}from"./RefreshIndicator-SEFZlMB2.js";import{S as h,in as g,x as _}from"./VerseConsoleApp-DXDv1aOi.js";import{o as v}from"./verse-model-JTuvRBVK.js";import{t as y}from"./Segmented-Wt1ATod9.js";import{a as b,d as x,f as S,g as C,i as w,l as T,n as E,o as D,p as O,r as k,s as A,t as j,u as M,v as N,y as P}from"./format-BmH2yWL6.js";import{n as F,r as ee}from"./workspace-model-D-SLfads.js";import{t as I}from"./Meter-b69LM0mU.js";import{t as L}from"./Select-By-V9lMc.js";import{a as R,c as z,d as te,f as ne,h as B,i as re,l as ie,m as V,o as ae,p as oe,r as se,s as ce,u as le}from"./control-queries-CXtmZZH6.js";import{t as H}from"./use-ticker-BoqFxRFG.js";import{a as ue,d as de,f as fe,i as pe,n as me,o as he,p as ge,r as _e,s as ve,t as ye}from"./fleet-model-DOK8ZtEt.js";import{a as be,i as xe,n as Se,o as Ce,r as we,s as Te}from"./fleet-queries-BeEAqD6y.js";import{a as Ee,c as De,d as Oe,i as ke,l as Ae,n as je,o as Me,r as Ne,s as Pe,t as Fe,u as Ie}from"./overnight-queries-DJ4mZKSj.js";import{n as Le}from"./use-guarded-action-EgVWjM5c.js";var U=t(e(),1),W=n();function Re(e){let t=e.limit;if(typeof t!=`number`||!Number.isFinite(t)||t<=0)return`unlimited`;let n=typeof e.callsToday==`number`&&Number.isFinite(e.callsToday)?e.callsToday:0;return n>=t?`over`:n>=t*.8?`warn`:`ok`}var G={panel:`_panel_2noy3_12`,panelHead:`_panelHead_2noy3_15`,panelTitle:`_panelTitle_2noy3_16`,panelHeadSpaced:`_panelHeadSpaced_2noy3_25`,panelNote:`_panelNote_2noy3_26`,panelActions:`_panelActions_2noy3_27`,status:`_status_2noy3_30`,statusTop:`_statusTop_2noy3_31`,runState:`_runState_2noy3_32`,runDot:`_runDot_2noy3_33`,facts:`_facts_2noy3_39`,fact:`_fact_2noy3_39`,factLabel:`_factLabel_2noy3_41`,factValue:`_factValue_2noy3_42`,budget:`_budget_2noy3_49`,budgetLine:`_budgetLine_2noy3_50`,budgetLabel:`_budgetLabel_2noy3_51`,budgetNote:`_budgetNote_2noy3_52`,meter:`_meter_2noy3_53`,meterFill:`_meterFill_2noy3_58`,controls:`_controls_2noy3_61`,button:`_button_2noy3_62`,buttonPrimary:`_buttonPrimary_2noy3_76`,emergency:`_emergency_2noy3_80`,emergencyButton:`_emergencyButton_2noy3_81`,emergencyNote:`_emergencyNote_2noy3_102`,capGrid:`_capGrid_2noy3_105`,cap:`_cap_2noy3_105`,capLabel:`_capLabel_2noy3_107`,capRow:`_capRow_2noy3_108`,capInput:`_capInput_2noy3_109`,capInputInvalid:`_capInputInvalid_2noy3_123`,capUnit:`_capUnit_2noy3_124`,capHelp:`_capHelp_2noy3_125`,capUsage:`_capUsage_2noy3_126`,capError:`_capError_2noy3_127`,actionNote:`_actionNote_2noy3_130`,capApplied:`_capApplied_2noy3_131`,repoList:`_repoList_2noy3_135`,repoRow:`_repoRow_2noy3_136`,repoName:`_repoName_2noy3_137`,repoPath:`_repoPath_2noy3_138`,repoMissing:`_repoMissing_2noy3_139`,addRow:`_addRow_2noy3_140`,addInput:`_addInput_2noy3_141`,tableScroll:`_tableScroll_2noy3_156`,table:`_table_2noy3_156`,cellAction:`_cellAction_2noy3_176`,cellTime:`_cellTime_2noy3_177`,cellSummary:`_cellSummary_2noy3_178`,cellRepo:`_cellRepo_2noy3_179`,resultTag:`_resultTag_2noy3_188`,filters:`_filters_2noy3_197`,filterField:`_filterField_2noy3_198`,filterLabel:`_filterLabel_2noy3_199`,filterSelect:`_filterSelect_2noy3_214`,checkList:`_checkList_2noy3_229`,check:`_check_2noy3_229`,checkMark:`_checkMark_2noy3_231`,checkLabel:`_checkLabel_2noy3_234`,checkDetail:`_checkDetail_2noy3_235`,summaryColumns:`_summaryColumns_2noy3_238`,summaryList:`_summaryList_2noy3_239`,summaryRow:`_summaryRow_2noy3_240`,summaryTitle:`_summaryTitle_2noy3_241`,summaryMeta:`_summaryMeta_2noy3_242`,empty:`_empty_2noy3_245`,emptyStrong:`_emptyStrong_2noy3_246`,error:`_error_2noy3_249`,readOnly:`_readOnly_2noy3_250`,skeletons:`_skeletons_2noy3_252`,srOnly:`_srOnly_2noy3_253`,runtimeTop:`_runtimeTop_2noy3_268`,runtimeState:`_runtimeState_2noy3_269`,runtimeStateText:`_runtimeStateText_2noy3_270`,factWide:`_factWide_2noy3_277`,factMono:`_factMono_2noy3_278`,capacityBlock:`_capacityBlock_2noy3_282`,capacityHead:`_capacityHead_2noy3_283`,capacityBig:`_capacityBig_2noy3_284`,capacityWords:`_capacityWords_2noy3_298`,capacityHeadline:`_capacityHeadline_2noy3_299`,capacityDetail:`_capacityDetail_2noy3_300`,evidence:`_evidence_2noy3_303`,evidenceLead:`_evidenceLead_2noy3_304`,evidenceScroll:`_evidenceScroll_2noy3_305`,evidenceTable:`_evidenceTable_2noy3_306`,evidenceNums:`_evidenceNums_2noy3_311`,evidenceCode:`_evidenceCode_2noy3_312`,utilisation:`_utilisation_2noy3_314`,toggleRow:`_toggleRow_2noy3_317`,toggleState:`_toggleState_2noy3_318`,policyExplain:`_policyExplain_2noy3_319`,impact:`_impact_2noy3_322`,impactTitle:`_impactTitle_2noy3_323`,impactSummary:`_impactSummary_2noy3_324`,seatList:`_seatList_2noy3_325`,seatRow:`_seatRow_2noy3_326`,seatEngine:`_seatEngine_2noy3_327`,seatLabel:`_seatLabel_2noy3_342`,seatRefusal:`_seatRefusal_2noy3_343`,pressure:`_pressure_2noy3_346`,pressureHead:`_pressureHead_2noy3_347`,pressureHeadline:`_pressureHeadline_2noy3_348`,pressureDetail:`_pressureDetail_2noy3_351`,fleetMeters:`_fleetMeters_2noy3_353`,elapsedQualifier:`_elapsedQualifier_2noy3_354`,noteList:`_noteList_2noy3_355`,repoStanding:`_repoStanding_2noy3_359`,repoPriority:`_repoPriority_2noy3_366`,repoSection:`_repoSection_2noy3_367`,repoOutsideFocus:`_repoOutsideFocus_2noy3_368`},ze=20,K=40;function Be({snapshot:e}){let t=e.daemon?.ticks??null,n=(0,U.useMemo)(()=>t?[...t].slice(-20).reverse():[],[t]),r=(0,U.useMemo)(()=>{if(!t)return[];let e=[];for(let n=t.length-1;n>=0&&e.length<K;--n){let r=t[n];if(r?.dispatches)for(let t=r.dispatches.length-1;t>=0&&e.length<K;--t)e.push({...r.dispatches[t],tickTs:r.ts})}return e},[t]);return(0,W.jsxs)(`section`,{className:G.panel,"aria-label":`Activity`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Recent ticks`}),(0,W.jsxs)(`p`,{className:G.panelNote,children:[`Newest first · last `,ze]})]}),t===null?(0,W.jsx)(`p`,{className:G.empty,children:`The daemon ledger is not readable right now, so tick history is unknown.`}):n.length===0?(0,W.jsx)(`p`,{className:G.empty,children:`No ticks have been recorded yet. Start the loop, or run one tick, to produce the first.`}):(0,W.jsx)(`div`,{className:G.tableScroll,children:(0,W.jsxs)(`table`,{className:G.table,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{scope:`col`,children:`Time`}),(0,W.jsx)(`th`,{scope:`col`,children:`Outcome`}),(0,W.jsx)(`th`,{scope:`col`,children:`Items`}),(0,W.jsx)(`th`,{scope:`col`,children:`Proposals`}),(0,W.jsx)(`th`,{scope:`col`,children:`Dispatched`}),(0,W.jsx)(`th`,{scope:`col`,children:`Spend`}),(0,W.jsx)(`th`,{scope:`col`,children:`Direction`})]})}),(0,W.jsx)(`tbody`,{children:n.map(e=>{let t=b(e.reason);return(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`td`,{className:G.cellTime,title:M(e.ts),children:x(e.ts)}),(0,W.jsxs)(`td`,{className:G.cellSummary,"data-tone":t.tone,children:[t.label,e.dryRun?` (dry run)`:``]}),(0,W.jsx)(`td`,{className:G.cellTime,children:A(e.itemsConsidered)}),(0,W.jsx)(`td`,{className:G.cellTime,children:A(e.proposalsCreated)}),(0,W.jsx)(`td`,{className:G.cellTime,children:e.dispatches?e.dispatches.length:`—`}),(0,W.jsx)(`td`,{className:G.cellTime,children:S(e.spentUsd)}),(0,W.jsx)(`td`,{className:G.cellSummary,children:e.directionMode??`—`})]},`${e.ts}-${e.reason}`)})})]})}),(0,W.jsxs)(`div`,{className:`${G.panelHead} ${G.panelHeadSpaced}`,children:[(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Recent dispatches`}),(0,W.jsxs)(`p`,{className:G.panelNote,children:[`Newest first · last `,K]})]}),r.length===0?(0,W.jsx)(`p`,{className:G.empty,children:`No dispatches in the recorded ticks. Run one tick from Controls to see what it would pick up.`}):(0,W.jsx)(`div`,{className:G.tableScroll,children:(0,W.jsxs)(`table`,{className:G.table,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{scope:`col`,children:`Time`}),(0,W.jsx)(`th`,{scope:`col`,children:`Item`}),(0,W.jsx)(`th`,{scope:`col`,children:`Repo`}),(0,W.jsx)(`th`,{scope:`col`,children:`Engine`}),(0,W.jsx)(`th`,{scope:`col`,children:`Outcome`}),(0,W.jsx)(`th`,{scope:`col`,children:`Spend`})]})}),(0,W.jsx)(`tbody`,{children:r.map((e,t)=>(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`td`,{className:G.cellTime,title:M(e.tickTs),children:x(e.tickTs)}),(0,W.jsx)(`td`,{className:G.cellSummary,title:e.title,children:e.title}),(0,W.jsx)(`td`,{className:G.cellRepo,title:e.repo,children:e.repo?N(e.repo):`—`}),(0,W.jsx)(`td`,{className:G.cellAction,children:e.backend??`not routed`}),(0,W.jsx)(`td`,{className:G.cellSummary,children:e.dispatched?`dispatched`:`skipped — ${P(e.reason)}`}),(0,W.jsx)(`td`,{className:G.cellTime,children:S(e.spentUsd)})]},`${e.tickTs}-${e.itemId}-${t}`))})]})}),(0,W.jsx)(Ve,{})]})}function Ve(){let[e,t]=(0,U.useState)(``),[n,r]=(0,U.useState)(``),[i,a]=(0,U.useState)(``),[c,u]=(0,U.useState)(200),d=(0,U.useMemo)(()=>z({limit:c,action:n||void 0,result:i||void 0}),[c,n,i]),f=l(d),p=s(d),h=f.data?.entries??[];return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`${G.panelHead} ${G.panelHeadSpaced}`,children:[(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Audit trail`}),(0,W.jsxs)(`div`,{className:G.panelActions,children:[f.status===`refreshing`?(0,W.jsx)(m,{}):null,(0,W.jsx)(`button`,{type:`button`,className:G.button,onClick:p,children:`Refresh`})]})]}),(0,W.jsxs)(`div`,{className:G.filters,children:[(0,W.jsxs)(`label`,{className:G.filterField,children:[(0,W.jsx)(`span`,{className:G.filterLabel,children:`Action`}),(0,W.jsx)(`input`,{type:`search`,value:e,placeholder:`e.g. enroll.add`,onChange:e=>t(e.target.value),onBlur:()=>r(e.trim()),onKeyDown:t=>{t.key===`Enter`&&(t.preventDefault(),r(e.trim()))}})]}),(0,W.jsxs)(L,{className:G.filterSelect,label:`Result`,value:i,onChange:e=>a(e.target.value),children:[(0,W.jsx)(`option`,{value:``,children:`Any result`}),(0,W.jsx)(`option`,{value:`ok`,children:`ok`}),(0,W.jsx)(`option`,{value:`refused`,children:`refused`}),(0,W.jsx)(`option`,{value:`error`,children:`error`})]}),(0,W.jsxs)(L,{className:G.filterSelect,label:`Rows`,value:c,onChange:e=>u(Number(e.target.value)),children:[(0,W.jsx)(`option`,{value:50,children:`50`}),(0,W.jsx)(`option`,{value:200,children:`200`}),(0,W.jsx)(`option`,{value:500,children:`500`})]})]}),f.status===`loading`?(0,W.jsxs)(`div`,{className:G.skeletons,children:[(0,W.jsx)(o,{}),(0,W.jsx)(o,{}),(0,W.jsx)(o,{})]}):f.status===`error`?(0,W.jsx)(`p`,{className:G.error,role:`alert`,children:f.error?.message??`Could not read the audit trail.`}):h.length===0?(0,W.jsx)(`p`,{className:G.empty,children:n||i?`No audit entries match this filter. Clear the Action or Result filter to see every entry.`:`No audit entries recorded yet. Every autonomous or sandbox action appends one here, and none are ever deleted.`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`p`,{className:G.panelNote,"aria-live":`polite`,children:[h.length,` `,h.length===1?`entry`:`entries`,` · newest first`,f.data?.truncated?` · capped by the server, narrow the filter to see more`:``]}),(0,W.jsx)(`div`,{className:G.tableScroll,children:(0,W.jsxs)(`table`,{className:G.table,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{scope:`col`,children:`Time`}),(0,W.jsx)(`th`,{scope:`col`,children:`Action`}),(0,W.jsx)(`th`,{scope:`col`,children:`Result`}),(0,W.jsx)(`th`,{scope:`col`,children:`Repo`}),(0,W.jsx)(`th`,{scope:`col`,children:`Summary`})]})}),(0,W.jsx)(`tbody`,{children:h.map((e,t)=>(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`td`,{className:G.cellTime,title:M(e.ts),children:x(e.ts)}),(0,W.jsx)(`td`,{className:G.cellAction,children:e.action}),(0,W.jsx)(`td`,{children:(0,W.jsx)(`span`,{className:G.resultTag,"data-result":e.result,children:e.result})}),(0,W.jsx)(`td`,{className:G.cellRepo,title:e.repo??void 0,children:e.repo?N(e.repo):`—`}),(0,W.jsx)(`td`,{className:G.cellSummary,children:P(e.summary)})]},`${e.ts}-${e.action}-${t}`))})]})})]})]})}var q=e=>e,He=6e4,Ue=[{key:`dailyBudgetUsd`,label:`Daily budget`,unit:`USD / day`,min:0,max:1e3,integer:!1,step:1,help:`Hard ceiling on what the loop may spend in a calendar day. 0 stops the loop.`,toDisplay:q,fromDisplay:q},{key:`perTickItems`,label:`Items per tick`,unit:`items`,min:1,max:50,integer:!0,step:1,help:`How many backlog items one tick may pick up.`,toDisplay:q,fromDisplay:q},{key:`parallel`,label:`Parallel swarms`,unit:`swarms`,min:1,max:16,integer:!0,step:1,help:`Sandboxed swarms run simultaneously inside one tick (batch mode).`,toDisplay:q,fromDisplay:q},{key:`intervalMs`,label:`Tick interval`,unit:`minutes`,min:.5,max:1440,integer:!1,step:.5,help:`Gap between ticks in loop mode. 30 seconds minimum, 24 hours maximum.`,toDisplay:e=>Math.round(e/He*100)/100,fromDisplay:e=>Math.round(e*He)},{key:`maxConcurrent`,label:`Max concurrent`,unit:`dispatches`,min:1,max:32,integer:!0,step:1,help:`Absolute ceiling on in-flight dispatches in continuous mode. Takes precedence over the per-tier totals.`,toDisplay:q,fromDisplay:q},{key:`concurrency.local`,label:`Local tier`,unit:`slots`,min:1,max:32,integer:!0,step:1,help:`On-device engines. GPU/RAM bound — keep this low.`,toDisplay:q,fromDisplay:q},{key:`concurrency.cloud`,label:`Cloud tier`,unit:`slots`,min:1,max:32,integer:!0,step:1,help:`Subscription cloud agents. I/O bound — many can run at once.`,toDisplay:q,fromDisplay:q},{key:`concurrency.total`,label:`All tiers`,unit:`slots`,min:1,max:32,integer:!0,step:1,help:`Hard cap across every tier combined.`,toDisplay:q,fromDisplay:q},{key:`subscriptionMaxPercent`,label:`Subscription ceiling`,unit:`% of window`,min:1,max:100,integer:!0,step:1,help:`How much of a flat-fee provider window the fleet may consume before it backs off.`,toDisplay:q,fromDisplay:q}];function We(e,t){if(!e)return null;let n=t===`concurrency.local`?e.concurrency?.local:t===`concurrency.cloud`?e.concurrency?.cloud:t===`concurrency.total`?e.concurrency?.total:e[t];return typeof n==`number`&&Number.isFinite(n)?n:null}function Ge(e,t){return t.startsWith(`%`)?`${e}${t}`:`${e} ${t}`}function Ke(e,t){let n=t.trim();if(n===``)return{ok:!1,error:`${e.label} cannot be blank.`};let r=Number(n);if(!Number.isFinite(r))return{ok:!1,error:`${e.label} must be a number.`};if(e.integer&&!Number.isInteger(r)){let t=e.unit.startsWith(`%`)?`a whole percentage`:`a whole number of ${e.unit}`;return{ok:!1,error:`${e.label} must be ${t}.`}}return r<e.min||r>e.max?{ok:!1,error:`${e.label} must be between ${e.min} and ${Ge(e.max,e.unit)}.`}:{ok:!0,stored:e.fromDisplay(r),display:r}}function qe(e,t){switch(e){case`concurrency.local`:return{concurrency:{local:t}};case`concurrency.cloud`:return{concurrency:{cloud:t}};case`concurrency.total`:return{concurrency:{total:t}};default:return{[e]:t}}}var J=B.foundryLimitMax;function Je(e,t){let n=e.trim();if(n===``)return{ok:!1,error:`${t} limit cannot be blank.`};let r=Number(n);return Number.isFinite(r)?Number.isInteger(r)?r<J.min?{ok:!1,error:`${t} limit cannot be negative.`}:r>J.max?{ok:!1,error:`${t} limit must be at most ${J.max} dispatches.`}:{ok:!0,stored:r,display:r}:{ok:!1,error:`${t} limit must be a whole number of dispatches.`}:{ok:!1,error:`${t} limit must be a number.`}}function Ye(e,t,n){let r=n.daemon,i=r?.ticks?.[r.ticks.length-1]??null;switch(e){case`dailyBudgetUsd`:{let e=t.dailyBudgetUsd;if(e===0)return`Loop stopped ($0 budget).`;let i=n.spend,a=i?k(i.todayUsd,e,i.todayDate):k(r?.todaySpentUsd??null,e,null);return a.state===`unknown`?a.note:`${S(i?i.todayUsd:r?.todaySpentUsd??null)} spent today`}case`perTickItems`:return i?`${A(i.itemsConsidered)} considered on the last tick`:null;case`parallel`:return i?.dispatches?`${i.dispatches.length} dispatched on the last tick`:null;case`intervalMs`:return r?.lastTickAt?`last tick ${D(r.lastTickAt)} ago`:null;default:return null}}function Xe({caps:e,snapshot:t,guard:n,dispatchEnabled:r}){let[i,a]=(0,U.useState)(null),[o,s]=(0,U.useState)(null),[c,l]=(0,U.useState)(null),u=!r||n.readOnly;function d(e,t,r){a(e),l(null),n.request(async()=>{s(e);try{await r(),l(e)}finally{s(null)}},t)}let f=e.foundryLimits??[];return(0,W.jsxs)(`section`,{className:G.panel,"aria-label":`Budget and limits`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Budget and limits`}),(0,W.jsx)(`p`,{className:G.panelNote,children:`Committed on blur or Enter. The daemon re-reads config each tick, so changes apply live.`})]}),(0,W.jsx)(`div`,{className:G.capGrid,children:Ue.map(r=>(0,W.jsx)($e,{spec:r,stored:We(e,r.key),usage:Ye(r.key,e,t),disabled:u||o!==null&&o!==r.key,busy:o===r.key,applied:c===r.key,error:i===r.key?n.error:null,onCommit:e=>d(r.key,`Changing ${r.label.toLowerCase()} requires the dispatch token.`,()=>ae(qe(r.key,e)))},r.key))}),(0,W.jsx)(`div`,{className:`${G.panelHead} ${G.panelHeadSpaced}`,children:(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Per-engine dispatch limits`})}),f.length===0?(0,W.jsxs)(`p`,{className:G.empty,children:[`No per-engine dispatch limits are configured. Every engine is bounded only by the caps above and by its own provider quota. To cap one, add it under `,(0,W.jsx)(`code`,{children:`foundry.limits`}),` in `,(0,W.jsx)(`code`,{children:`~/.ashlr/config.json`}),` `,`(a `,(0,W.jsx)(`code`,{children:`max`}),` and a `,(0,W.jsx)(`code`,{children:`window`}),`); it then appears here to edit.`]}):(0,W.jsx)(`div`,{className:G.capGrid,children:f.map((e,r)=>(0,W.jsx)(et,{limit:e,usage:Ze(e.engine,t),disabled:u||o!==null&&o!==Y(e),busy:o===Y(e),applied:c===Y(e),error:i===Y(e)?n.error:null,onCommit:t=>d(Y(e),`Changing the ${e.engine} dispatch limit requires the dispatch token.`,()=>{let e=f.map((e,n)=>n===r?{...e,max:t}:e);return ae({foundryLimits:e})})},`${e.engine}:${e.window}`))})]})}function Y(e){return`foundry:${e.engine}:${e.window}`}function Ze(e,t){let n=t.quota?.find(t=>t.engine===e);if(!n)return null;let r=Re(n),i=r===`unlimited`?`no limit configured`:r;return`${A(n.callsToday)} dispatched in the last ${n.limitWindow??`1d`} · ${i}`}function Qe(e){let t=[e.usage?`${e.id}-usage`:null,e.help?`${e.id}-help`:null].filter(e=>e!==null).join(` `);return(0,W.jsxs)(`div`,{className:G.cap,children:[(0,W.jsx)(`label`,{className:G.capLabel,htmlFor:e.id,children:e.label}),(0,W.jsxs)(`div`,{className:G.capRow,children:[(0,W.jsx)(`input`,{id:e.id,type:`number`,inputMode:`decimal`,className:`${G.capInput} ${e.invalid?G.capInputInvalid:``}`,value:e.value,step:e.step,min:e.min,max:e.max,disabled:e.disabled||e.busy,"aria-invalid":e.invalid?!0:void 0,"aria-describedby":t||void 0,onChange:t=>e.onChange(t.target.value),onBlur:e.onCommit,onKeyDown:t=>{t.key===`Enter`&&(t.preventDefault(),e.onCommit())}}),(0,W.jsx)(`span`,{className:G.capUnit,children:e.unit})]}),e.usage?(0,W.jsx)(`span`,{className:G.capUsage,id:`${e.id}-usage`,children:e.usage}):null,e.help?(0,W.jsx)(`span`,{className:G.capHelp,id:`${e.id}-help`,children:e.help}):null,e.invalid?(0,W.jsx)(`span`,{className:G.capError,role:`alert`,children:e.invalid}):null,e.error&&!e.invalid?(0,W.jsx)(`span`,{className:G.capError,role:`alert`,children:e.error}):null,e.applied&&!e.invalid&&!e.error?(0,W.jsx)(`span`,{className:G.capApplied,children:`applied live`}):null]})}function $e({spec:e,stored:t,usage:n,disabled:r,busy:i,applied:a,error:o,onCommit:s}){let c=t===null?``:String(e.toDisplay(t)),[l,u]=(0,U.useState)(c),[d,f]=(0,U.useState)(null);(0,U.useEffect)(()=>{d===null&&u(c)},[c]);function p(){if(l===c){f(null);return}let t=Ke(e,l);if(!t.ok){f(t.error);return}f(null),s(t.stored)}return(0,W.jsx)(Qe,{id:`cap-${e.key.replace(`.`,`-`)}`,label:e.label,unit:e.unit,help:e.help,usage:n,value:l,invalid:d,disabled:r,busy:i,applied:a,error:o,step:e.step,min:e.min,max:e.max,onChange:e=>{u(e),d&&f(null)},onCommit:p})}function et({limit:e,usage:t,disabled:n,busy:r,applied:i,error:a,onCommit:o}){let s=String(e.max),[c,l]=(0,U.useState)(s),[u,d]=(0,U.useState)(null);(0,U.useEffect)(()=>{u===null&&l(s)},[s]);function f(){if(c===s){d(null);return}let t=Je(c,e.engine);if(!t.ok){d(t.error);return}d(null),o(t.stored)}return(0,W.jsx)(Qe,{id:`cap-foundry-${e.engine}-${e.window}`,label:e.engine,unit:`dispatches / ${e.window}`,usage:t,value:c,invalid:u,disabled:n,busy:r,applied:i,error:a,step:1,min:J.min,max:J.max,onChange:e=>{l(e),u&&d(null)},onCommit:f})}function tt(e){if(e.killSwitch?.state===`active`)return{state:`killed`,label:`Kill switch engaged`};let t=e.daemon;return!t||!u(t.sourceQuality)?{state:`unknown`,label:`Run state unknown`}:t.runtimeState===`running`?{state:`running`,label:`Running`}:t.runtimeState===`stopped`?{state:`stopped`,label:`Stopped`}:{state:`unknown`,label:`Run state unknown`}}function nt({snapshot:e}){let t=H(1e3),{state:n,label:r}=tt(e),i=e.daemon,a=u(i?.sourceQuality),o=i?.ticks?.[i.ticks.length-1]??null,s=b(o?.reason),c=e.fleet?.directionMode??o?.directionMode??null,l=e.scope?.repos??null,d=e.caps?.intervalMs??null,f=n===`running`?C(i?.lastTickAt,d):null,p=e.spend,m=p?k(p.todayUsd,e.caps?.dailyBudgetUsd??null,p.todayDate):k(i?.todaySpentUsd??null,e.caps?.dailyBudgetUsd??null,null);return(0,W.jsxs)(`section`,{className:G.status,"aria-label":`Autonomy status`,children:[(0,W.jsxs)(`div`,{className:G.statusTop,children:[(0,W.jsxs)(`span`,{className:G.runState,"data-state":n,children:[(0,W.jsx)(`span`,{className:G.runDot,"aria-hidden":`true`}),r]}),(0,W.jsxs)(`div`,{className:G.facts,children:[(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Direction`}),(0,W.jsx)(`span`,{className:G.factValue,children:c??`default`})]}),(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Last tick`}),(0,W.jsx)(`span`,{className:G.factValue,"data-tone":s.tone,children:a&&i?.lastTickAt?`${x(i.lastTickAt)} · ${s.label}`:s.label})]}),(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Next tick`}),(0,W.jsx)(`span`,{className:G.factValue,children:n===`running`?w(f,t):n===`killed`?`blocked`:`not scheduled`})]}),(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Interval`}),(0,W.jsx)(`span`,{className:G.factValue,children:T(d)})]}),(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Scope`}),(0,W.jsx)(`span`,{className:G.factValue,"data-tone":(l?.length??0)===0?`warning`:void 0,children:l?`${l.length} ${l.length===1?`repo`:`repos`}`:`—`})]}),(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Awaiting you`}),(0,W.jsx)(`span`,{className:G.factValue,children:typeof e.pendingApprovals==`number`?`${e.pendingApprovals} ${e.pendingApprovals===1?`approval`:`approvals`}`:`—`})]}),(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Started`}),(0,W.jsx)(`span`,{className:G.factValue,children:a?M(i?.startedAt):`—`})]})]})]}),(0,W.jsxs)(`div`,{className:G.budget,children:[(0,W.jsxs)(`div`,{className:G.budgetLine,children:[(0,W.jsx)(`span`,{className:G.budgetLabel,children:m.label}),(0,W.jsx)(`span`,{className:G.budgetNote,children:m.note})]}),(0,W.jsx)(`div`,{className:G.meter,"data-state":m.state,role:`meter`,"aria-label":`Today's spend against the daily budget`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":m.percent??void 0,"aria-valuetext":`${m.label}. ${m.note}`,children:(0,W.jsx)(`div`,{className:G.meterFill,style:{width:`${m.percent??0}%`}})})]})]})}function rt({snapshot:e,guard:t,dispatchEnabled:n}){let[r,i]=(0,U.useState)(null),[a,o]=(0,U.useState)(null),{state:s}=tt(e),c=e.killSwitch?.state===`active`,l=e.killSwitch?.state===`unknown`,u=e.pause?.state??`unknown`,d=u!==`running`,f=u===`unknown`,m=!n||t.readOnly||t.busy,h=e=>o(e.note?P(e.note):null);return(0,W.jsxs)(`section`,{className:G.panel,"aria-label":`Loop controls`,children:[(0,W.jsx)(`div`,{className:G.panelHead,children:(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Controls`})}),(0,W.jsxs)(`div`,{className:G.controls,children:[d?(0,W.jsx)(`button`,{type:`button`,className:`${G.button} ${G.buttonPrimary}`,disabled:m,onClick:()=>t.request(()=>R(`resume`),`Resuming autonomous dispatch requires the dispatch token.`,h),children:`Resume`}):(0,W.jsx)(`button`,{type:`button`,className:`${G.button} ${G.buttonPrimary}`,disabled:m,onClick:()=>t.request(()=>R(`pause`),`Pausing autonomous dispatch requires the dispatch token.`,h),children:`Pause`}),(0,W.jsx)(g,{label:c?`Release the emergency stop before starting the loop.`:d?`Dispatch is paused — resume before starting the loop.`:``,children:(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:m||s===`running`||c||d,onClick:()=>t.request(()=>R(`start`),`Starting the autonomous loop requires the dispatch token.`,h),children:`Start loop`})}),(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:m||s===`stopped`,onClick:()=>i(`stop`),children:`Stop loop`}),(0,W.jsx)(g,{label:d?`Dispatch is paused — resume before running a tick.`:``,children:(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:m||c||d,onClick:()=>t.request(()=>R(`once`),`Running one tick requires the dispatch token.`,h),children:`Run one tick`})})]}),d?(0,W.jsx)(`p`,{className:G.actionNote,role:`status`,children:f?`Treated as paused — the pause sentinel is unreadable.`:`Autonomous dispatch is paused. The loop parks between ticks; your own write tools are unaffected, and the global kill switch is not engaged.`}):null,(0,W.jsx)(`div`,{className:G.emergency,children:c?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:m,onClick:()=>i(`release`),children:`Release emergency stop`}),(0,W.jsxs)(`p`,{className:G.emergencyNote,children:[`The global kill switch is engaged. The daemon refuses to tick `,(0,W.jsx)(`em`,{children:`and`}),` the agent’s own write tools refuse to edit anything, anywhere — not just in enrolled repos.`]})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,className:G.emergencyButton,disabled:m,onClick:()=>i(`engage`),children:`Emergency stop`}),(0,W.jsxs)(`p`,{className:G.emergencyNote,children:[`Engages the global kill switch. Wider than “stop the loop”: it also disables the agent’s own write tools everywhere until you release it. To halt only the loop, use `,(0,W.jsx)(`strong`,{children:`Pause`}),`.`,l?` The switch’s current state could not be read.`:``]})]})}),t.error&&r===null?(0,W.jsx)(`p`,{className:G.capError,role:`alert`,children:t.error}):null,a&&!t.error?(0,W.jsx)(`p`,{className:G.actionNote,role:`status`,children:a}):null,(0,W.jsx)(p,{open:r===`stop`,onClose:()=>i(null),title:`Stop the autonomous loop?`,body:(0,W.jsxs)(W.Fragment,{children:[`This is the ordinary stop, but it works by engaging the global kill switch — the same`,(0,W.jsx)(`code`,{children:` ~/.ashlr/KILL `}),` sentinel the emergency stop writes. While it is set, the agent’s own write tools also refuse to edit anything, anywhere, until you release it from this panel.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),`If you only want the loop to stop working, `,(0,W.jsx)(`strong`,{children:`Pause`}),` does exactly that and nothing else — it leaves your own tools alone and undoes in one click.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),`Nothing in flight is rolled back. The loop will not restart by itself.`]}),confirmLabel:`Stop loop`,destructive:!0,busy:t.busy,error:t.error,onConfirm:()=>t.request(()=>R(`stop`),`Stopping the autonomous loop requires the dispatch token.`,e=>{h(e),i(null)})}),(0,W.jsx)(p,{open:r===`engage`,onClose:()=>i(null),title:`Engage the emergency stop?`,body:(0,W.jsxs)(W.Fragment,{children:[`This writes the global kill switch. It stops the autonomous loop `,(0,W.jsx)(`strong`,{children:`and`}),` disables the agent’s own write tools — every edit, apply, and merge path refuses while it is engaged, in every repo, not only the enrolled ones. Nothing in flight is rolled back; nothing new can start.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),(0,W.jsx)(`strong`,{children:`Pause`}),` halts autonomous dispatch only and leaves everything else working.`,` `,(0,W.jsx)(`strong`,{children:`Stop loop`}),` is not narrower than this button: it engages the same global kill switch.`]}),confirmLabel:`Engage emergency stop`,destructive:!0,busy:t.busy,error:t.error,onConfirm:()=>t.request(async()=>{await se(),i(null)},`Engaging the emergency stop requires the dispatch token.`)}),(0,W.jsx)(p,{open:r===`release`,onClose:()=>i(null),title:`Release the emergency stop?`,body:(0,W.jsxs)(W.Fragment,{children:[`This clears the global kill switch. Write tools become usable again immediately. The autonomous loop does not restart by itself — use `,(0,W.jsx)(`strong`,{children:`Start loop`}),` when you want it running.`]}),confirmLabel:`Release emergency stop`,busy:t.busy,error:t.error,onConfirm:()=>t.request(async()=>{await re(),i(null)},`Releasing the emergency stop requires the dispatch token.`)})]})}var it={idle:`neutral`,working:`running`,saturated:`running`,queued:`warning`,unknown:`unknown`},at={running:`running`,finishing:`running`,queued:`neutral`};function ot({read:e,runtime:t,loading:n=!1}){let r=H(1e3),i=e?.value??null,a=de(t),o=i?.slotsBusy??t?.slotsBusy??null,s=ge(o,a.effectiveConcurrency),c=_e(i,s,a),l=i?ve(i.agents):[],u=i?.queueDepth??l.filter(e=>e.state===`queued`).length;return(0,W.jsxs)(`section`,{className:G.panel,"aria-labelledby":`verse-fleet-title`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{id:`verse-fleet-title`,className:G.panelTitle,children:`Fleet in flight`}),(0,W.jsx)(`p`,{className:G.panelNote,children:`Every agent mid-turn right now, what it is working on, and how long it has been at it.`})]}),n&&e===null?(0,W.jsx)(`p`,{className:G.empty,children:`Reading the fleet…`}):e===null||!e.available&&e.value===null?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`Fleet status unavailable. `}),e?.reason??null]}):i===null?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`Unreadable reading. `}),e.reason??`Unrecognized response — update Ashlr.`]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:G.pressure,"data-state":c.state,children:[(0,W.jsxs)(`span`,{className:G.pressureHead,children:[(0,W.jsx)(`span`,{className:G.pressureHeadline,children:c.headline}),(0,W.jsx)(d,{status:c.state,tone:it[c.state]??`unknown`,children:c.state})]}),(0,W.jsx)(`p`,{className:G.pressureDetail,children:c.detail})]}),(0,W.jsxs)(`div`,{className:G.fleetMeters,children:[(0,W.jsx)(I,{value:s.busy,max:s.total,label:`Slot utilisation`,valueText:s.percentText===null?`unknown`:`${s.busy} / ${s.total} · ${s.percentText}`,tone:s.saturated?`warning`:void 0}),(0,W.jsxs)(`div`,{className:G.fact,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:`Queue depth`}),(0,W.jsx)(`span`,{className:G.factValue,"data-tone":u>0?`warning`:void 0,children:i.queueDepth===null&&l.length===0?`—`:`${A(u)} waiting`})]})]}),s.saturated&&u===0?(0,W.jsx)(`p`,{className:G.capHelp,children:`Every slot is occupied. Nothing is waiting yet, but the next turn will.`}):null,l.length===0?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`Nothing in flight. `}),`No agent is mid-turn. The fleet answered and reported an empty list — an idle fleet, not a missing reading. Run one tick from Controls to put work in flight.`]}):(0,W.jsx)(`div`,{className:G.tableScroll,children:(0,W.jsxs)(`table`,{className:G.table,children:[(0,W.jsx)(`caption`,{className:G.srOnly,children:`Agents in flight: state, task, repository, model, slot and elapsed time`}),(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{scope:`col`,children:`State`}),(0,W.jsx)(`th`,{scope:`col`,children:`Working on`}),(0,W.jsx)(`th`,{scope:`col`,children:`Repo`}),(0,W.jsx)(`th`,{scope:`col`,children:`Model`}),(0,W.jsx)(`th`,{scope:`col`,children:`Slot`}),(0,W.jsx)(`th`,{scope:`col`,children:`Elapsed`})]})}),(0,W.jsx)(`tbody`,{children:l.map(e=>(0,W.jsx)(st,{agent:e,now:r,capacity:a},e.id))})]})}),i.notes.length>0?(0,W.jsx)(`ul`,{className:G.noteList,children:i.notes.map(e=>(0,W.jsx)(`li`,{className:G.capHelp,children:P(e)},e))}):null]})]})}function st({agent:e,now:t,capacity:n}){let r=me(e.startedAt,t),i=e.state===`queued`;return(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`td`,{children:(0,W.jsx)(d,{status:e.state,tone:at[e.state],children:e.state})}),(0,W.jsx)(`td`,{className:G.cellSummary,children:e.task??(0,W.jsx)(`span`,{className:G.capHelp,children:`not reported`})}),(0,W.jsx)(`td`,{className:G.cellRepo,title:e.repo??void 0,children:e.repo?N(e.repo):`—`}),(0,W.jsx)(`td`,{className:G.cellRepo,children:e.model??e.engine??`—`}),(0,W.jsx)(`td`,{className:G.cellTime,children:e.slot===null?i?(0,W.jsx)(`span`,{className:G.capHelp,title:n.verdict===`serialized`?`This runtime serializes, so only one slot ever frees up at a time.`:void 0,children:`no slot`}):`—`:`#${e.slot}`}),(0,W.jsxs)(`td`,{className:G.cellTime,children:[r,i?(0,W.jsx)(`span`,{className:G.elapsedQualifier,children:` queued`}):null]})]})}var X=8;function ct(){let e=l(ne),t=l(ie),n=(e.data??[]).filter(e=>e.status!==`done`&&e.status!==`archived`),r=t.data?.items??[];return(0,W.jsxs)(`section`,{className:G.panel,"aria-label":`Goals and backlog`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Goals and backlog`}),(0,W.jsx)(`p`,{className:G.panelNote,children:`Read-only in this view.`})]}),(0,W.jsxs)(`div`,{className:G.summaryColumns,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:G.factLabel,children:`Active goals`}),e.status===`loading`?(0,W.jsxs)(`div`,{className:G.skeletons,children:[(0,W.jsx)(o,{}),(0,W.jsx)(o,{})]}):e.status===`error`?(0,W.jsx)(`p`,{className:G.error,role:`alert`,children:e.error?.message??`Could not read goals.`}):n.length===0?(0,W.jsxs)(`p`,{className:G.empty,children:[`No active goals, so the loop falls back to the backlog for work. Add one with`,` `,(0,W.jsx)(`code`,{children:`ashlr goals add "<objective>"`}),`.`]}):(0,W.jsxs)(`div`,{className:G.summaryList,children:[n.slice(0,X).map(e=>{let t=O(e.progress?.fractionDone??0);return(0,W.jsxs)(`div`,{className:G.summaryRow,children:[(0,W.jsx)(`span`,{className:G.summaryTitle,title:e.objective,children:e.objective}),(0,W.jsxs)(`span`,{className:G.summaryMeta,children:[t,` · `,e.status]})]},e.id)}),n.length>X?(0,W.jsxs)(`p`,{className:G.panelNote,children:[`+`,n.length-X,` more`]}):null]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:G.factLabel,children:`Backlog`}),t.status===`loading`?(0,W.jsxs)(`div`,{className:G.skeletons,children:[(0,W.jsx)(o,{}),(0,W.jsx)(o,{})]}):t.status===`error`?(0,W.jsx)(`p`,{className:G.error,role:`alert`,children:t.error?.message??`Could not read the backlog.`}):t.data?.absent?(0,W.jsxs)(`p`,{className:G.empty,children:[`No backlog has been built yet. Run one tick from Controls, or `,(0,W.jsx)(`code`,{children:`ashlr backlog`}),`, to produce one.`]}):r.length===0?(0,W.jsxs)(`p`,{className:G.empty,children:[`The backlog is empty, so a tick records `,(0,W.jsx)(`code`,{children:`no-backlog`}),` and idles. Enroll another repository in Scope, or add a goal, to give it work.`]}):(0,W.jsxs)(`div`,{className:G.summaryList,children:[r.slice(0,X).map((e,t)=>(0,W.jsxs)(`div`,{className:G.summaryRow,children:[(0,W.jsx)(`span`,{className:G.summaryTitle,title:e.title,children:e.title??e.id??`untitled item`}),(0,W.jsxs)(`span`,{className:G.summaryMeta,title:e.repo??void 0,children:[e.repo?N(e.repo):`—`,typeof e.score==`number`?` · ${e.score}`:``]})]},e.id??`${e.title??`item`}-${t}`)),r.length>X?(0,W.jsxs)(`p`,{className:G.panelNote,children:[`+`,r.length-X,` more`]}):null]})]})]})]})}function lt({read:e,seats:t,guard:n,dispatchEnabled:r,loading:i=!1}){let[a,o]=(0,U.useState)(!1),[s,c]=(0,U.useState)(null),l=e?.value??null,u=ue(l,t),f=he(l),m=l?.enabled??!1,h=!r||n.readOnly||n.busy||!(l?.mutable??!1),g=e=>{n.request(()=>Ce(e),e?`Turning local-only on requires the dispatch token.`:`Turning local-only off requires the dispatch token.`,e=>{c(e.note?P(e.note):null),o(!1)})};return(0,W.jsxs)(`section`,{className:G.panel,"aria-labelledby":`verse-local-only-title`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{id:`verse-local-only-title`,className:G.panelTitle,children:`Local only`}),(0,W.jsx)(`p`,{className:G.panelNote,children:`While on, cloud engines are unreachable.`})]}),i&&e===null?(0,W.jsx)(`p`,{className:G.empty,children:`Reading the local-only policy…`}):e===null||l===null?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`No local-only source. `}),e?.reason??`Nothing answered for the local-only policy, so whether cloud engines are reachable cannot be stated here. It is not shown as off — an unread switch is not a switch that is off.`]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:G.toggleRow,children:[(0,W.jsx)(`span`,{className:G.toggleState,"data-on":m?`true`:`false`,children:(0,W.jsx)(d,{status:m?`local-only-on`:`local-only-off`,tone:m?`success`:`neutral`,children:m?`on — cloud refused`:`off — cloud reachable`})}),(0,W.jsx)(`button`,{type:`button`,className:`${G.button} ${m?``:G.buttonPrimary}`,disabled:h,"aria-pressed":m,onClick:()=>m?g(!1):o(!0),children:m?`Turn local-only off`:`Turn local-only on`})]}),(0,W.jsx)(`p`,{className:G.policyExplain,children:m?(0,W.jsxs)(W.Fragment,{children:[`Every non-local engine is `,(0,W.jsx)(`strong`,{children:`refused at dispatch`}),`. A turn sent to one does not fall back, does not queue, and does not run more slowly — it fails with a named refusal. Nothing can spend money while this is on.`]}):(0,W.jsxs)(W.Fragment,{children:[`Cloud engines are reachable. Turning this on makes them `,(0,W.jsx)(`strong`,{children:`unreachable`}),`: a dispatch to one fails outright.`]})}),f?(0,W.jsx)(`p`,{className:G.capHelp,children:f}):null,!l.mutable&&r&&!n.readOnly?(0,W.jsx)(`p`,{className:G.actionNote,role:`status`,children:`Read-only here.`}):null,(0,W.jsxs)(`div`,{className:G.impact,children:[(0,W.jsx)(`h4`,{className:G.impactTitle,children:m?`What is blocked right now`:`What this would block`}),(0,W.jsx)(`p`,{className:G.impactSummary,children:u.summary}),u.blocked.length>0?(0,W.jsx)(`ul`,{className:G.seatList,children:u.blocked.map(e=>(0,W.jsxs)(`li`,{className:G.seatRow,children:[(0,W.jsx)(`span`,{className:G.seatEngine,"data-engine":e.engine,children:e.engine}),(0,W.jsx)(`span`,{className:G.seatLabel,children:e.label}),(0,W.jsx)(`span`,{className:G.seatRefusal,children:u.refusalFor(e.engine)})]},e.id))}):null,u.allowed.length>0?(0,W.jsxs)(`p`,{className:G.capHelp,children:[`Still reachable:`,` `,u.allowed.map(e=>e.label).join(`, `),`. Local seats cost nothing to run and are unaffected by this switch.`]}):(0,W.jsx)(`p`,{className:G.capHelp,children:`No local seat is configured. With local-only on there would be nothing left to dispatch to — add a local seat before relying on this switch.`})]}),s&&!n.error?(0,W.jsx)(`p`,{className:G.actionNote,role:`status`,children:s}):null,n.error&&!a?(0,W.jsx)(`p`,{className:G.capError,role:`alert`,children:n.error}):null,(0,W.jsx)(p,{open:a,onClose:()=>o(!1),title:`Make cloud engines unreachable?`,body:(0,W.jsxs)(W.Fragment,{children:[`While local-only is on, a dispatch to a non-local engine `,(0,W.jsx)(`strong`,{children:`fails`}),` with a named refusal — no fallback to a local seat, no waiting.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),u.blocked.length===0?`No seat on this machine is affected today: every configured seat is local.`:`${u.blocked.length} of your ${t.length} ${t.length===1?`seat`:`seats`} ${u.blocked.length===1?`stops`:`stop`} working: ${u.blocked.map(e=>e.label).join(`, `)}.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),`It is reversible from this panel at any time.`]}),confirmLabel:`Turn local-only on`,busy:n.busy,error:n.error,onConfirm:()=>g(!0)})]})]})}var ut={running:`success`,starting:`running`,stopping:`running`,stopped:`neutral`,unknown:`unknown`},dt={success:`success`,warning:`warning`,danger:`danger`,neutral:`neutral`,unknown:`unknown`},ft=/^local lane is off this tick: (.+)$/s,pt=/^lane cap (\d+) is below (\d+) \([^)]*\): (.+)$/s;function mt(e){let t=e?.find(e=>typeof e==`string`&&e.startsWith(`bounded by this tick's lane cap, not by slots: `));if(!t)return null;let n=t.slice(47).trim(),r=ft.exec(n);if(r)return{off:!0,limit:null,uncapped:null,why:j(P(r[1]))};let i=pt.exec(n);return i?{off:!1,limit:Number(i[1]),uncapped:Number(i[2]),why:j(P(i[3]))}:{off:!1,limit:null,uncapped:null,why:j(P(n))}}function ht(){return(0,U.useSyncExternalStore)((0,U.useCallback)(e=>a(`verse-fleet`,e),[]),()=>i(`verse-fleet`),()=>i(`verse-fleet`)).data??null}function gt({read:e,guard:t,dispatchEnabled:n,loading:r=!1,fleet:i}){let a=H(1e3),o=ht(),s=i===void 0?o:i,c=mt(s?.value?.notes),l=s?.value?.notes.some(e=>e.startsWith(`snapshot is `))??!1,[u,f]=(0,U.useState)(null),[m,h]=(0,U.useState)(null),g=e?.value??null,_=de(g),y=ge(g?.slotsBusy??null,_.effectiveConcurrency),b=!n||t.readOnly,x=g?.supervised??!1,S=b||t.busy||!x,C=g?.state===`running`,w=(e,n)=>{t.request(()=>xe(e),n,e=>{h(e.note?P(e.note):null),f(null)})};return(0,W.jsxs)(`section`,{className:G.panel,"aria-labelledby":`verse-runtime-title`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{id:`verse-runtime-title`,className:G.panelTitle,children:`Serving runtime`}),(0,W.jsx)(`p`,{className:G.panelNote,children:`The process that answers local agent turns. Without it, a local fleet has nowhere to run.`})]}),r&&e===null?(0,W.jsx)(`p`,{className:G.empty,children:`Reading the serving runtime…`}):e===null||!e.available&&e.value===null?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`No serving-runtime source. `}),e?.reason??`Serving runtime unavailable.`]}):g===null?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`Unreadable reading. `}),e.reason??`Unrecognized response — update Ashlr.`]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:G.runtimeTop,children:[(0,W.jsxs)(`span`,{className:G.runtimeState,"data-state":g.state,children:[(0,W.jsx)(`span`,{className:G.runDot,"aria-hidden":`true`}),(0,W.jsxs)(`span`,{className:G.runtimeStateText,children:[fe(g.kind),` · `,g.state===`unknown`?`state unknown`:g.state]})]}),(0,W.jsx)(d,{status:g.state,tone:ut[g.state],children:g.state===`running`?`serving`:g.state}),g.reason?(0,W.jsx)(`code`,{className:G.evidenceCode,children:P(g.reason)}):null]}),(0,W.jsxs)(`div`,{className:G.facts,children:[(0,W.jsx)(Z,{label:`Model`,value:g.model??`—`,wide:!0}),(0,W.jsx)(Z,{label:`Endpoint`,value:g.endpoint??`—`,mono:!0}),(0,W.jsx)(Z,{label:`Context`,value:v(g.contextTokens)}),(0,W.jsx)(Z,{label:`Slots configured`,value:g.slotsTotal===null?`—`:String(g.slotsTotal)}),(0,W.jsx)(Z,{label:`Uptime`,value:C?pe(g.startedAt,a):`not running`})]}),(0,W.jsxs)(`div`,{className:G.capacityBlock,"data-verdict":_.verdict,children:[(0,W.jsxs)(`div`,{className:G.capacityHead,children:[(0,W.jsx)(`span`,{className:G.capacityBig,children:_.effectiveConcurrency===null?`—`:_.effectiveConcurrency}),(0,W.jsxs)(`div`,{className:G.capacityWords,children:[(0,W.jsxs)(`span`,{className:G.capacityHeadline,children:[_.headline,(0,W.jsx)(d,{status:_.verdict,tone:dt[_.tone],children:_.verdict===`batched`?`batches`:_.verdict===`serialized`?`serializes`:_.verdict===`offline`?`not serving`:`unconfirmed`})]}),(0,W.jsx)(`span`,{className:G.capacityDetail,children:_.detail})]})]}),c?(0,W.jsxs)(`p`,{className:G.capacityDetail,"data-limiter":`lane-cap`,role:`note`,children:[(0,W.jsx)(d,{status:`lane-cap`,tone:c.off?`neutral`:`warning`,children:c.off?`lane off`:`lane-capped`}),` `,c.off?`The fleet runs no local agent ${l?`as of its last tick`:`this tick`}: ${E(c.why)}`:`The fleet runs ${c.limit===null?`fewer`:`at most ${c.limit}`} local ${c.limit===1?`agent`:`agents`} ${l?`as of its last tick`:`this tick`}${c.uncapped===null?``:`, not ${c.uncapped}`} — a lane cap is tighter than this runtime: ${E(c.why)}`]}):null,_.overstated?(0,W.jsx)(_t,{configured:_.configuredSlots,refusal:g.parallel.refusal}):null]}),(0,W.jsxs)(`div`,{className:G.utilisation,children:[(0,W.jsx)(I,{value:y.busy,max:y.total,label:`Slots in use`,valueText:y.percent===null?`unknown`:`${y.busy} / ${y.total}`,tone:y.saturated?`warning`:void 0}),(0,W.jsx)(`p`,{className:G.capHelp,children:y.label})]}),(0,W.jsxs)(`div`,{className:G.controls,children:[(0,W.jsx)(`button`,{type:`button`,className:`${G.button} ${G.buttonPrimary}`,disabled:S||C,onClick:()=>w(`start`,`Starting the serving runtime requires the dispatch token.`),children:`Start runtime`}),(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:S||!C,onClick:()=>f(`stop`),children:`Stop runtime`}),(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:S,onClick:()=>f(`restart`),children:`Restart runtime`})]}),x?null:(0,W.jsx)(`p`,{className:G.actionNote,role:`status`,children:`Managed outside the hub (a login item or terminal owns it) — start and stop it there.`}),m&&!t.error?(0,W.jsx)(`p`,{className:G.actionNote,role:`status`,children:m}):null,t.error&&u===null?(0,W.jsx)(`p`,{className:G.capError,role:`alert`,children:t.error}):null,(0,W.jsx)(p,{open:u===`stop`,onClose:()=>f(null),title:`Stop the serving runtime?`,body:(0,W.jsxs)(W.Fragment,{children:[`Every local agent turn in flight is answered by this process. Stopping it ends those turns — nothing in flight is rolled back, and no local seat can take a new turn until it is running again.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),`This does not touch the autonomous loop, the kill switch, or your own write tools.`]}),confirmLabel:`Stop runtime`,destructive:!0,busy:t.busy,error:t.error,onConfirm:()=>w(`stop`,`Stopping the serving runtime requires the dispatch token.`)}),(0,W.jsx)(p,{open:u===`restart`,onClose:()=>f(null),title:`Restart the serving runtime?`,body:(0,W.jsxs)(W.Fragment,{children:[`The process is stopped and started again. Turns in flight end with it, and the first turn afterwards pays the model load — on a 27 GB model that is not instant.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),`Restart is the way to pick up a changed slot count or context size, since both are fixed at launch.`]}),confirmLabel:`Restart runtime`,destructive:!0,busy:t.busy,error:t.error,onConfirm:()=>w(`restart`,`Restarting the serving runtime requires the dispatch token.`)})]})]})}function _t({configured:e,refusal:t}){return(0,W.jsxs)(`div`,{className:G.evidence,children:[(0,W.jsx)(`p`,{className:G.evidenceLead,children:e===null?`The configured slot count is not a concurrency on this runtime.`:`${e} slots are configured, but this runtime will not run them in parallel. Measured on this machine, four concurrent requests to the same model:`}),(0,W.jsx)(`div`,{className:G.evidenceScroll,children:(0,W.jsxs)(`table`,{className:G.evidenceTable,children:[(0,W.jsx)(`caption`,{className:G.srOnly,children:`Four concurrent requests to the same Qwen3.8 model file, per-runtime completion times in seconds`}),(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{scope:`col`,children:`Runtime`}),(0,W.jsx)(`th`,{scope:`col`,children:`Per request (s)`}),(0,W.jsx)(`th`,{scope:`col`,children:`Wall (s)`}),(0,W.jsx)(`th`,{scope:`col`,children:`Finished`})]})}),(0,W.jsx)(`tbody`,{children:ye.map(e=>(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{scope:`row`,children:e.runtime}),(0,W.jsx)(`td`,{className:G.evidenceNums,children:e.perRequestSeconds.join(` · `)}),(0,W.jsx)(`td`,{className:G.evidenceNums,children:e.wallSeconds.toFixed(1)}),(0,W.jsx)(`td`,{children:e.verdict})]},e.runtime))})]})}),t?(0,W.jsxs)(`p`,{className:G.capHelp,children:[`The runtime’s own words: `,(0,W.jsx)(`code`,{className:G.evidenceCode,children:t})]}):null]})}function Z({label:e,value:t,mono:n=!1,wide:r=!1}){return(0,W.jsxs)(`div`,{className:`${G.fact} ${r?G.factWide:``}`,children:[(0,W.jsx)(`span`,{className:G.factLabel,children:e}),(0,W.jsx)(`span`,{className:`${G.factValue} ${n?G.factMono:``}`,title:n||r?t:void 0,children:t})]})}var Q={armedTop:`_armedTop_8ujh1_22`,armedState:`_armedState_8ujh1_30`,haltRow:`_haltRow_8ujh1_36`,haltNote:`_haltNote_8ujh1_43`,heavier:`_heavier_8ujh1_53`,facts:`_facts_8ujh1_69`,fact:`_fact_8ujh1_69`,factWide:`_factWide_8ujh1_83`,factLabel:`_factLabel_8ujh1_87`,factValue:`_factValue_8ujh1_95`,factMono:`_factMono_8ujh1_106`,stop:`_stop_8ujh1_112`,stopHead:`_stopHead_8ujh1_121`,stopHeadline:`_stopHeadline_8ujh1_129`,stopRemaining:`_stopRemaining_8ujh1_137`,stopDetail:`_stopDetail_8ujh1_146`,ledger:`_ledger_8ujh1_154`,ledgerTitle:`_ledgerTitle_8ujh1_158`,ledgerCount:`_ledgerCount_8ujh1_171`,ledgerEmpty:`_ledgerEmpty_8ujh1_177`,ledgerList:`_ledgerList_8ujh1_183`,ledgerRow:`_ledgerRow_8ujh1_189`,ledgerRepo:`_ledgerRepo_8ujh1_203`,ledgerChange:`_ledgerChange_8ujh1_212`,ledgerMeta:`_ledgerMeta_8ujh1_222`,form:`_form_8ujh1_232`,field:`_field_8ujh1_239`,fieldLabel:`_fieldLabel_8ujh1_246`,input:`_input_8ujh1_254`,rulePreview:`_rulePreview_8ujh1_277`,armRow:`_armRow_8ujh1_285`,authorisation:`_authorisation_8ujh1_17`,authorisationTitle:`_authorisationTitle_8ujh1_305`,authorisationBody:`_authorisationBody_8ujh1_315`,authorisationCaveat:`_authorisationCaveat_8ujh1_327`},vt=[{value:`until-paused`,label:`Until I pause it`},{value:`at-time`,label:`At a time`},{value:`after-iterations`,label:`After N iterations`}],yt=`07:00`,bt=`20`;function xt({read:e,snapshot:t,guard:n,dispatchEnabled:r,loading:i=!1}){let a=H(1e3),[o,s]=(0,U.useState)(`until-paused`),[c,l]=(0,U.useState)(yt),[u,f]=(0,U.useState)(bt),[p,m]=(0,U.useState)(null),[h,_]=(0,U.useState)(null),v=e=>_(e?P(e):null),b=e?.value??null,x=b?.run??null,S=t.pause?.state??`unknown`,C=S!==`running`,w=S===`unknown`,T=t.killSwitch?.state===`active`,E=!r||n.readOnly,D=E||n.busy,O=b?.repos??t.scope?.repos?.length??null,k=b?.mirrors,A=b?.gate??null,M=Pe(A),F=De(A),ee=A?.branch??`master`,L=St(o,c,u),z=Oe(x?.stopRule??null,x,a),te=E?`This server runs without dispatch, so an overnight run cannot be armed from here.`:T?`Release the emergency stop before arming an overnight run.`:``,ne=()=>{m(null),n.request(()=>R(`pause`),`Pausing autonomous dispatch requires the dispatch token.`,e=>v(e.note||null))},B=()=>{m(null),n.request(()=>R(`resume`),`Resuming autonomous dispatch requires the dispatch token.`,e=>v(e.note||null))},re=()=>{if(L===null){m(o===`at-time`?`Enter a stop time as HH:MM before arming.`:`Enter a number of iterations between 1 and 500 before arming.`);return}m(null),n.request(()=>Fe(L),`Arming an overnight run requires the dispatch token.`,e=>v(e.note||null))},ie=()=>{m(null),n.request(()=>je(),`Disarming the overnight run requires the dispatch token.`,e=>v(e.note||null))},V=(0,W.jsxs)(`div`,{className:Q.authorisation,children:[(0,W.jsx)(`h4`,{className:Q.authorisationTitle,children:`What it does while you sleep`}),(0,W.jsxs)(`p`,{className:Q.authorisationBody,children:[`Local models work through`,` `,(0,W.jsx)(`strong`,{children:O===null?`your enrolled repositories`:`your ${O} enrolled ${O===1?`repository`:`repositories`}`}),` `,`unattended. Each change it writes is put through the gate`,M.length>0?(0,W.jsxs)(W.Fragment,{children:[` `,`— `,(0,W.jsx)(`strong`,{children:Ae(M)}),` must pass`]}):null,`. A change that passes the gate is `,(0,W.jsxs)(`strong`,{children:[`merged to `,ee,` without asking you`]}),`. A change that fails is discarded and the repository is left as it was.`]}),typeof k==`number`&&k>0?(0,W.jsxs)(`p`,{className:Q.authorisationBody,"data-testid":`overnight-mirrors`,children:[`Fleet mirrors: `,(0,W.jsx)(`strong`,{children:k}),` — the standing fleet’s own`,` `,k===1?`clone`:`clones`,` of enrolled repositories, counted apart. A mirror is not an additional repository.`]}):k===null&&b?.armed?(0,W.jsx)(`p`,{className:Q.authorisationCaveat,"data-testid":`overnight-mirrors`,children:`Fleet mirrors were not recorded for this run, so how many the standing fleet works in is unknown.`}):null,F.length>0?(0,W.jsxs)(`p`,{className:Q.authorisationCaveat,children:[`Not reported whether `,Ae(F),` `,F.length===1?`runs`:`run`,` in the gate — don't count `,F.length===1?`it`:`them`,` as passing.`]}):null,A?.autoMerge===!1?(0,W.jsxs)(`p`,{className:Q.authorisationCaveat,children:[`This build reports that passing changes are `,(0,W.jsx)(`strong`,{children:`not`}),` merged automatically — they wait for you in Approvals.`]}):null]});return(0,W.jsxs)(`section`,{className:G.panel,"aria-labelledby":`verse-overnight-title`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{id:`verse-overnight-title`,className:G.panelTitle,children:`Overnight`}),(0,W.jsx)(`p`,{className:G.panelNote,children:`Arm this when you walk away. One stop rule per run; pause halts it at any time.`})]}),i&&e===null?(0,W.jsx)(`p`,{className:G.empty,children:`Reading the overnight lane…`}):e===null||!e.available&&e.value===null?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`Not available in this build. `}),e?.reason??`Nothing answered for the overnight lane, so a run cannot be armed or reported here. Nothing is running because of this panel.`]}):b===null?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`Unreadable reading. `}),e.reason??`Unrecognized response — update Ashlr.`]}):b.armed?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:Q.armedTop,children:[(0,W.jsx)(`span`,{className:Q.armedState,children:(0,W.jsx)(d,{status:C?`paused`:`running`,tone:C?`warning`:`running`,children:C?`armed — dispatch paused`:`armed — running`})}),(0,W.jsxs)(`div`,{className:Q.haltRow,children:[C?(0,W.jsx)(`button`,{type:`button`,className:`${G.button} ${G.buttonPrimary}`,disabled:D,onClick:B,children:`Resume now`}):(0,W.jsx)(`button`,{type:`button`,className:`${G.button} ${G.buttonPrimary}`,disabled:D,onClick:ne,children:`Pause now`}),(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:D,onClick:ie,children:`Disarm`})]})]}),(0,W.jsx)(`p`,{className:Q.haltNote,children:C?w?`Treated as paused — the pause sentinel is unreadable. Nothing is being dispatched.`:`Autonomous dispatch is paused. The loop parks between iterations; your own write tools are unaffected and the global kill switch is not engaged.`:`Pause halts autonomous dispatch and nothing else — it undoes in one click. Disarm stops the next run from starting but leaves this one going.`}),(0,W.jsxs)(`dl`,{className:Q.facts,children:[(0,W.jsx)(wt,{label:`Doing now`,value:x?.activity?P(x.activity):`—`,wide:!0}),(0,W.jsx)(wt,{label:`Repository`,value:x?.repo?N(x.repo):`—`,title:x?.repo??void 0,mono:!0}),(0,W.jsx)(wt,{label:`Running for`,value:Me(x?.startedAt,a)})]}),(0,W.jsxs)(`div`,{className:Q.stop,children:[(0,W.jsxs)(`div`,{className:Q.stopHead,children:[(0,W.jsx)(`span`,{className:Q.stopHeadline,children:z.headline}),(0,W.jsx)(`span`,{className:Q.stopRemaining,children:z.remaining})]}),z.percent===null?(0,W.jsx)(`p`,{className:Q.stopDetail,children:`No progress is drawn for an open-ended run: there is no finish line to draw it against.`}):(0,W.jsx)(I,{value:z.percent,max:100,variant:`line`,tone:z.reached?`warning`:`accent`,"aria-label":`Progress toward the stop condition`})]}),(0,W.jsx)(Tt,{title:`Merged`,empty:`Nothing merged yet. Changes that pass the gate land here as they merge.`,rows:(x?.merged??[]).map(e=>({id:e.id,repo:e.repo,title:e.title,meta:Ct(e.commit?e.commit.slice(0,7):null,e.at),metaTitle:e.commit??void 0}))}),(0,W.jsx)(Tt,{title:`Discarded`,empty:`Nothing discarded yet. A change that fails the gate is listed here with the reason.`,rows:(x?.discarded??[]).map(e=>({id:e.id,repo:e.repo,title:e.title,meta:Ct(j(P(e.reason)),e.at)}))}),V]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:Q.form,children:[(0,W.jsxs)(`div`,{className:Q.field,children:[(0,W.jsx)(`span`,{className:Q.fieldLabel,id:`verse-overnight-stop-label`,children:`Stop rule`}),(0,W.jsx)(y,{options:vt,value:o,onChange:e=>{s(e),m(null)},"aria-labelledby":`verse-overnight-stop-label`,size:`sm`})]}),o===`at-time`?(0,W.jsxs)(`div`,{className:Q.field,children:[(0,W.jsx)(`label`,{className:Q.fieldLabel,htmlFor:`verse-overnight-time`,children:`Stop at`}),(0,W.jsx)(`input`,{id:`verse-overnight-time`,type:`time`,className:Q.input,value:c,disabled:D,onChange:e=>{l(e.target.value),m(null)}})]}):null,o===`after-iterations`?(0,W.jsxs)(`div`,{className:Q.field,children:[(0,W.jsx)(`label`,{className:Q.fieldLabel,htmlFor:`verse-overnight-iterations`,children:`Iterations`}),(0,W.jsx)(`input`,{id:`verse-overnight-iterations`,type:`number`,inputMode:`numeric`,min:1,max:500,className:Q.input,value:u,disabled:D,onChange:e=>{f(e.target.value),m(null)}})]}):null]}),(0,W.jsx)(`p`,{className:Q.rulePreview,children:L===null?o===`at-time`?`Enter a stop time as HH:MM.`:`Enter a number of iterations between 1 and 500.`:Ee(L,new Date(a))}),V,(0,W.jsxs)(`div`,{className:Q.armRow,children:[(0,W.jsx)(g,{label:te,children:(0,W.jsx)(`button`,{type:`button`,className:`${G.button} ${G.buttonPrimary}`,disabled:D||T,onClick:re,children:`Arm overnight run`})}),C?(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:D,onClick:B,children:`Resume now`}):null]}),C?(0,W.jsx)(`p`,{className:Q.haltNote,role:`status`,children:w?`Treated as paused — the pause sentinel is unreadable. An armed run would park until that is fixed.`:`Autonomous dispatch is paused, so an armed run would park. Resume before walking away.`}):null,(0,W.jsxs)(`p`,{className:Q.heavier,children:[`Pause is the halt for this run and it undoes in one click.`,` `,(0,W.jsx)(`strong`,{children:`Emergency stop`}),`, in Controls above, is heavier on purpose: it engages the global kill switch, which also stops the agent’s own write tools from editing anything, anywhere, until you release it.`]})]}),p?(0,W.jsx)(`p`,{className:G.capError,role:`alert`,children:p}):null,n.error?(0,W.jsx)(`p`,{className:G.capError,role:`alert`,children:n.error}):null,h&&!n.error?(0,W.jsx)(`p`,{className:G.actionNote,role:`status`,children:h}):null]})}function St(e,t,n){if(e===`until-paused`)return{kind:`until-paused`};if(e===`at-time`){let e=Ie(t);return e===null?null:{kind:`at-time`,at:e}}let r=Number(n);return!Number.isInteger(r)||r<1||r>500?null:{kind:`after-iterations`,iterations:r}}function Ct(e,t){let n=t?x(t):null;return[e,n===`—`?null:n].filter(e=>!!e).join(` · `)}function wt({label:e,value:t,title:n,mono:r=!1,wide:i=!1}){return(0,W.jsxs)(`div`,{className:`${Q.fact} ${i?Q.factWide:``}`,children:[(0,W.jsx)(`dt`,{className:Q.factLabel,children:e}),(0,W.jsx)(`dd`,{className:`${Q.factValue} ${r?Q.factMono:``}`,title:n??(r||i?t:void 0),children:t})]})}function Tt({title:e,empty:t,rows:n}){return(0,W.jsxs)(`div`,{className:Q.ledger,children:[(0,W.jsxs)(`h4`,{className:Q.ledgerTitle,children:[e,` `,(0,W.jsx)(`span`,{className:Q.ledgerCount,children:n.length})]}),n.length===0?(0,W.jsx)(`p`,{className:Q.ledgerEmpty,children:t}):(0,W.jsx)(`ul`,{className:Q.ledgerList,children:n.map(e=>(0,W.jsxs)(`li`,{className:Q.ledgerRow,children:[(0,W.jsx)(`span`,{className:Q.ledgerRepo,title:e.repo,children:N(e.repo)}),(0,W.jsx)(`span`,{className:Q.ledgerChange,children:e.title}),e.meta?(0,W.jsx)(`span`,{className:Q.ledgerMeta,title:e.metaTitle,children:e.meta}):null]},e.id))})]})}function Et(){let e=l(oe),t=s(oe),n=e.data,r=n?.checks?.filter(e=>e.pass).length??0,i=n?.checks?.length??0;return(0,W.jsxs)(`section`,{className:G.panel,"aria-label":`Safety checks`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Safety`}),(0,W.jsxs)(`div`,{className:G.panelActions,children:[e.status===`refreshing`?(0,W.jsx)(m,{}):null,n?(0,W.jsxs)(`span`,{className:G.panelNote,children:[r,`/`,i,` passing`]}):null,(0,W.jsx)(`button`,{type:`button`,className:G.button,onClick:t,disabled:e.status===`loading`,children:`Re-run checks`})]})]}),e.status===`loading`?(0,W.jsxs)(`div`,{className:G.skeletons,children:[(0,W.jsx)(c,{width:`70%`}),(0,W.jsx)(c,{width:`55%`}),(0,W.jsx)(c,{width:`62%`})]}):e.status===`error`?(0,W.jsx)(`p`,{className:G.error,role:`alert`,children:e.error?.message??`Could not run the safety checks.`}):!n||i===0?(0,W.jsxs)(`p`,{className:G.empty,children:[`The safety report came back with no checks. Press `,(0,W.jsx)(`strong`,{children:`Re-run checks`}),`; if it stays empty, treat it as a failure.`]}):(0,W.jsx)(`div`,{className:G.checkList,children:n.checks.map(e=>(0,W.jsxs)(`div`,{className:G.check,"data-pass":e.pass,children:[(0,W.jsx)(`span`,{className:G.checkMark,"aria-hidden":`true`,children:e.pass?`✓`:`✕`}),(0,W.jsxs)(`span`,{className:G.checkLabel,children:[e.label,(0,W.jsx)(`span`,{className:G.srOnly,children:e.pass?` — passed`:` — failed`})]}),(0,W.jsx)(`span`,{className:G.checkDetail,children:e.detail?P(e.detail):e.id})]},e.id))})]})}function Dt(e){let t=e.trim();return t===``?`Enter the absolute path of the repository to enroll.`:t.startsWith(`/`)?t===`/`?`The filesystem root cannot be enrolled as autonomous scope.`:/(^|\/)\.codex\/artifacts(\/|$)/.test(t)?`Paths under ~/.codex/artifacts cannot be enrolled.`:/(^|\/)\.ashlr(\/|$)/.test(t)?`Paths under ~/.ashlr cannot be enrolled — that is the agent’s own control directory.`:null:`Enrollment takes an absolute path, e.g. /Users/you/code/project.`}function Ot({path:e,scope:t}){let n=t?.entries.find(t=>t.path===e)??null;if(n===null)return null;let r=n.priority!==`normal`;return!r&&n.sections.length===0?null:(0,W.jsxs)(`span`,{className:G.repoStanding,title:ee,children:[r?(0,W.jsx)(`span`,{className:G.repoPriority,children:F[n.priority]}):null,n.sections.map(e=>(0,W.jsx)(`span`,{className:G.repoSection,children:e.name},e.id)),n.outsideFocus?(0,W.jsx)(`span`,{className:G.repoOutsideFocus,children:`outside the focused section`}):null]})}function kt({guard:e,dispatchEnabled:t}){let n=l(V),r=l(_),[i,a]=(0,U.useState)(``),[s,c]=(0,U.useState)(null),[u,d]=(0,U.useState)(null),[f,h]=(0,U.useState)(null),g=!t||e.readOnly;function v(){let e=Dt(i);if(e){c(e);return}c(null),h(i.trim())}function y(){let t=f;t&&e.request(async()=>{await ce({action:`enroll`,path:t}),a(``),h(null)},`Enrolling a repository for autonomous work requires the dispatch token.`)}let b=n.data?.repos??[];return(0,W.jsxs)(`section`,{className:G.panel,"aria-label":`Scope`,children:[(0,W.jsxs)(`div`,{className:G.panelHead,children:[(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Scope — enrolled repositories`}),n.status===`refreshing`?(0,W.jsx)(m,{}):null]}),n.data?.degradedReason?(0,W.jsxs)(`p`,{className:G.readOnly,children:[`The enrollment registry read is degraded: `,P(n.data.degradedReason)]}):null,n.status===`loading`?(0,W.jsxs)(`div`,{className:G.skeletons,children:[(0,W.jsx)(o,{}),(0,W.jsx)(o,{})]}):n.status===`error`?(0,W.jsx)(`p`,{className:G.error,role:`alert`,children:n.error?.message??`Could not read the enrollment registry.`}):b.length===0?(0,W.jsxs)(`p`,{className:G.empty,children:[(0,W.jsx)(`span`,{className:G.emptyStrong,children:`No repositories are enrolled, so the daemon will do nothing.`}),` `,`That is the default and it is not a bug — nothing autonomous can mutate a real repository until you enroll it here. Add one below to give the loop somewhere to work.`]}):(0,W.jsx)(`div`,{className:G.repoList,children:b.map(t=>(0,W.jsxs)(`div`,{className:G.repoRow,children:[(0,W.jsx)(`span`,{className:G.repoName,children:t.name}),(0,W.jsx)(`span`,{className:G.repoPath,title:t.path,children:(0,W.jsx)(`bdi`,{children:t.path})}),t.exists?null:(0,W.jsx)(`span`,{className:G.repoMissing,children:`⚠ path missing on disk`}),(0,W.jsx)(Ot,{path:t.path,scope:r.data??null}),(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:g||e.busy,onClick:()=>d(t),children:`Remove`})]},t.path))}),(0,W.jsxs)(`div`,{className:G.addRow,children:[(0,W.jsx)(`input`,{className:G.addInput,type:`text`,value:i,placeholder:`/absolute/path/to/repository`,"aria-label":`Repository path to enroll`,"aria-invalid":s?!0:void 0,disabled:g||e.busy,onChange:e=>{a(e.target.value),s&&c(null)},onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),v())}}),(0,W.jsx)(`button`,{type:`button`,className:G.button,disabled:g||e.busy,onClick:v,children:`Enroll repository`})]}),s?(0,W.jsx)(`p`,{className:G.capError,role:`alert`,children:s}):null,e.error&&!s?(0,W.jsx)(`p`,{className:G.capError,role:`alert`,children:e.error}):null,(0,W.jsx)(p,{open:f!==null,onClose:()=>h(null),title:`Give the autonomous loop write authority here?`,body:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`code`,{children:f}),` becomes autonomous scope. The loop may propose work against it, and the agent’s own MCP-native write tools will act on it — enrolment is the gate those tools check.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`br`,{}),`Nothing is written by enrolling. You can remove it again from this panel at any time.`]}),confirmLabel:`Enroll repository`,busy:e.busy,error:e.error,onConfirm:y}),(0,W.jsx)(p,{open:u!==null,onClose:()=>d(null),title:`Remove this repository from scope?`,body:(0,W.jsxs)(W.Fragment,{children:[`The autonomous loop will stop proposing work for `,(0,W.jsx)(`code`,{children:u?.path}),`. Existing proposals stay in the inbox; nothing on disk is changed or deleted.`]}),confirmLabel:`Remove from scope`,destructive:!0,busy:e.busy,error:e.error,onConfirm:()=>{let t=u;t&&e.request(async()=>{await ce({action:`unenroll`,path:t.path}),d(null)},`Removing a repository from autonomous scope requires the dispatch token.`)}})]})}var $={section:`_section_1vgpf_8`,header:`_header_1vgpf_10`,title:`_title_1vgpf_23`,headerActions:`_headerActions_1vgpf_31`,ghost:`_ghost_1vgpf_32`,scroll:`_scroll_1vgpf_45`,measure:`_measure_1vgpf_46`,banner:`_banner_1vgpf_48`,bannerTitle:`_bannerTitle_1vgpf_59`,failure:`_failure_1vgpf_61`,retry:`_retry_1vgpf_70`,loading:`_loading_1vgpf_82`},At=r({FleetAdvanced:()=>jt});function jt({embedded:e=!1}){let t=l(te),n=l(le),r=l(h),i=l(be),a=l(Se),u=l(we),d=l(Ne),p=s(te),g=Le();Te(),ke(d.data?.value?.armed??!1);let _=(r.data?.dispatchEnabled??!0)&&!g.readOnly,v=t.data,y=(0,U.useMemo)(()=>(r.data?.seats??[]).map(e=>({id:e.id,engine:e.engine,label:e.label})),[r.data]),b=(0,W.jsxs)(W.Fragment,{children:[_?null:(0,W.jsxs)(`div`,{className:$.banner,role:`status`,children:[(0,W.jsx)(`span`,{className:$.bannerTitle,children:`Read-only session`}),`This server was started without dispatch, so starting, stopping, editing caps, and changing scope are unavailable. Everything below is live and accurate — run `,(0,W.jsx)(`code`,{children:`ashlr verse`}),` to get the controls.`]}),t.status===`loading`?(0,W.jsxs)(`div`,{className:$.loading,children:[(0,W.jsx)(c,{width:`42%`}),(0,W.jsx)(c,{width:`68%`}),(0,W.jsx)(o,{}),(0,W.jsx)(o,{})]}):t.status===`error`||!v?(0,W.jsxs)(`div`,{className:$.failure,role:`alert`,children:[t.error?.message??`Could not read the autonomy control snapshot.`,(0,W.jsx)(`br`,{}),`Loop status unknown, so nothing below is shown.`,(0,W.jsx)(`br`,{}),(0,W.jsx)(`button`,{type:`button`,className:$.retry,onClick:p,children:`Try again`})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(nt,{snapshot:v}),(0,W.jsx)(rt,{snapshot:v,guard:g,dispatchEnabled:_}),(0,W.jsx)(xt,{read:d.data??null,snapshot:v,guard:g,dispatchEnabled:_,loading:d.status===`loading`}),(0,W.jsx)(gt,{read:i.data??null,guard:g,dispatchEnabled:_,loading:i.status===`loading`,fleet:a.data??null}),(0,W.jsx)(lt,{read:u.data??null,seats:y,guard:g,dispatchEnabled:_,loading:u.status===`loading`}),(0,W.jsx)(ot,{read:a.data??null,runtime:i.data?.value??null,loading:a.status===`loading`}),n.status===`loading`?(0,W.jsxs)(`div`,{className:G.panel,children:[(0,W.jsx)(o,{}),(0,W.jsx)(o,{})]}):n.data?(0,W.jsx)(Xe,{caps:n.data,snapshot:v,guard:g,dispatchEnabled:_}):(0,W.jsxs)(`section`,{className:G.panel,"aria-label":`Budget and limits`,children:[(0,W.jsx)(`div`,{className:G.panelHead,children:(0,W.jsx)(`h3`,{className:G.panelTitle,children:`Budget and limits`})}),(0,W.jsx)(`p`,{className:G.error,role:`alert`,children:n.error?.message??`Could not read the configured caps, so none are shown or editable.`})]}),(0,W.jsx)(kt,{guard:g,dispatchEnabled:_}),(0,W.jsx)(Be,{snapshot:v}),(0,W.jsx)(Et,{}),(0,W.jsx)(ct,{})]})]}),x=(0,W.jsx)(f,{open:g.tokenOpen,onClose:g.closeToken,reason:g.tokenReason,tokenHelp:`the mutation token ashlr verse printed`});return e?(0,W.jsxs)(`div`,{className:$.loading,"data-embedded":`true`,children:[(0,W.jsxs)(`div`,{className:$.headerActions,children:[t.status===`refreshing`?(0,W.jsx)(m,{}):null,(0,W.jsx)(`button`,{type:`button`,className:$.ghost,onClick:p,children:`Refresh`})]}),b,x]}):(0,W.jsxs)(`section`,{className:$.section,"aria-label":`Autonomy`,children:[(0,W.jsxs)(`header`,{className:$.header,"data-app-region":`drag`,children:[(0,W.jsx)(`h2`,{className:$.title,children:`Autonomy`}),(0,W.jsxs)(`div`,{className:$.headerActions,children:[t.status===`refreshing`?(0,W.jsx)(m,{}):null,(0,W.jsx)(`button`,{type:`button`,className:$.ghost,onClick:p,children:`Refresh`})]})]}),(0,W.jsx)(`div`,{className:$.scroll,children:(0,W.jsx)(`div`,{className:$.measure,children:b})}),x]})}export{jt as n,At as t};
|
|
2
|
-
//# sourceMappingURL=Advanced-cVYTAsfB.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,n}from"./index-CyK31YRm.js";import{D as r,F as i,K as a,U as o,c as s,h as c,i as l,l as u,m as d,o as f}from"./global-y_exIyAP.js";import{t as p}from"./Dialog-BRd_B9OE.js";import{t as m}from"./MutationTokenDialog-Bm34BNVV.js";import{Gt as h,L as g,N as _,S as v,_t as y,i as b,lt as x,tn as S}from"./VerseConsoleApp-DXDv1aOi.js";import{a as C,i as ee,n as w,o as T}from"./CapacityStrip-DKbKA_Aa.js";import{C as E,T as te,f as ne,t as D,w as re}from"./capacity-strip-model-5ViUgUlP.js";import{t as O}from"./Button-DtE0rlWD.js";import{_ as ie,a as ae,g as k,h as A,i as j,n as oe,o as M}from"./icons-CygCEFWs.js";import{n as se,t as N}from"./use-token-gate-DSNIIpI6.js";import{o as ce}from"./slots-BL_J5mmV.js";import{t as P}from"./Switch-BmCzfFnu.js";import{t as le}from"./BudgetControl-BARVp-En.js";import{t as F}from"./Sheet-HkBOBMTT.js";import{t as I}from"./Select-By-V9lMc.js";import{t as L}from"./Input-CI0yBHmn.js";import{t as R}from"./clipboard-DkZdqlxf.js";import{a as ue,c as de,d as z,f as fe,i as pe,l as B,m as V,n as me,o as he,p as ge,r as H,s as _e,t as ve,u as ye}from"./apps-model-CHO133qt.js";var U=t(e(),1),W=n();function G({tone:e,label:t}){return(0,W.jsxs)(`span`,{className:T.health,"data-tone":e,children:[(0,W.jsx)(`span`,{className:T.healthDot,"aria-hidden":`true`}),t]})}function K({id:e,name:t,monogram:n,engine:r,description:i,version:a,health:o,detail:s,aside:c,children:l}){return(0,W.jsxs)(`li`,{className:T.row,"data-app":e,children:[(0,W.jsx)(C,{monogram:n,engine:r}),(0,W.jsxs)(`div`,{className:T.rowMain,children:[(0,W.jsxs)(`div`,{className:T.rowHead,children:[(0,W.jsx)(`span`,{id:`${e}-name`,className:T.rowName,children:t}),a?(0,W.jsx)(`span`,{className:T.rowVersion,children:a}):null,(0,W.jsx)(G,{tone:o.tone,label:o.label})]}),(0,W.jsx)(`p`,{className:T.rowDesc,children:i}),s?(0,W.jsx)(`p`,{className:T.rowDetail,children:s}):null,l]}),c?(0,W.jsx)(`div`,{className:T.rowAside,children:c}):null]})}function q({id:e,title:t,caveat:n,action:r,children:i,headingRef:a}){let o=`apps-group-${e}`;return(0,W.jsxs)(`section`,{className:T.group,"aria-labelledby":o,"data-group":e,children:[(0,W.jsxs)(`div`,{className:T.groupHead,children:[(0,W.jsx)(`h3`,{id:o,ref:a,tabIndex:-1,className:T.groupTitle,children:t}),r]}),n?(0,W.jsx)(`p`,{className:T.caveat,children:n}):null,(0,W.jsx)(`div`,{className:T.card,children:i})]})}var be=1200;function J({text:e,label:t,what:n}){let[r,i]=(0,U.useState)(`idle`),a=(0,U.useRef)(null);(0,U.useEffect)(()=>()=>{a.current&&clearTimeout(a.current)},[]);let o=async()=>{let t=await R(e);i(t?`copied`:`failed`),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>i(`idle`),be)};return(0,W.jsxs)(`span`,{className:T.pillWrap,children:[(0,W.jsxs)(`button`,{type:`button`,className:T.pill,"data-state":r,onClick:()=>void o(),"aria-label":`Copy ${n}: ${e}`,title:`Copy: ${e}`,children:[(0,W.jsx)(`code`,{className:T.pillText,children:t??e}),(0,W.jsx)(`span`,{className:T.pillIcon,"aria-hidden":`true`,children:r===`copied`?(0,W.jsx)(oe,{size:14}):(0,W.jsx)(M,{size:14})})]}),(0,W.jsx)(`span`,{className:T.visuallyHidden,role:`status`,"aria-live":`polite`,children:r===`copied`?`Copied`:r===`failed`?`Copy failed — select the command and copy it yourself`:``})]})}var Y=ne;function xe(e){return e.slotLanded??ce(`terminal-pane`)?e.terminalAvailable===!0?e.activeSessionId===null?{available:!1,reason:`Open a chat first — its terminal hosts the agent.`}:{available:!0,reason:null}:{available:!1,reason:e.terminalReason??`The Verse terminal needs the desktop app.`}:{available:!1,reason:`This build has no Verse terminal yet.`}}function Se(e,t){t.via===`native`&&t.model===null?y({newTab:!0,appId:e}):y({newTab:!0,appId:e,via:`ollama`,...t.model===null?{}:{model:t.model}}),x(`chat`)}var Ce=`No accounts connected yet. Sign in to Claude Code, Codex or Grok in a terminal, or start Ollama for local models — they show up here within a minute.`;function we({seats:e,health:t,budget:n,loading:r,reconnecting:i,onReconnect:a,now:o}){let[s,c]=(0,U.useState)(null),[l,u]=(0,U.useState)(!1),[d,f]=(0,U.useState)(null),[h,g]=(0,U.useState)(null),_=se(),v=(0,U.useId)(),y=(0,U.useId)(),b=(0,U.useRef)(null),x=t!==null,S=async e=>{f(e.seatId),g(null);try{await _.run(`Check ${e.label} again (status commands only — nothing is spent)`,()=>te())&&g({tone:`neutral`,text:`Checked ${e.label} again.`})}catch(e){g({tone:`danger`,text:N(e)})}finally{f(null)}};return(0,W.jsxs)(q,{id:`accounts`,title:`Accounts`,caveat:`Which accounts you can use now, which are spent and when they reset, and how much autonomy leaves for you.`,children:[r?(0,W.jsx)(`p`,{className:T.loadingLine,"aria-busy":`true`,children:`Reading accounts…`}):(0,W.jsx)(w,{seats:e,health:t,budget:n,labelledBy:`apps-group-accounts`,emptyText:Ce,accounts:{healthRead:x,checkingSeatId:d,...o===void 0?{}:{now:o}},renderActions:e=>ve(e,D(e,{healthRead:x,...o===void 0?{}:{now:o}})).map(t=>(0,W.jsx)(O,{size:`sm`,variant:t.primary&&t.kind!==`edit-budget`?`primary`:`ghost`,busy:t.kind===`reconnect`&&i===e.seatId||t.kind===`check-again`&&d===e.seatId,"aria-label":`${t.label}: ${e.label}`,onClick:()=>{t.kind===`reconnect`?a(e):t.kind===`check-again`?S(e):t.kind===`fix`?c(e):u(!0)},children:t.label},t.kind))}),(0,W.jsx)(`p`,{className:h?T.accountsNote:T.visuallyHidden,"data-tone":h?.tone,role:`status`,"aria-live":`polite`,children:h?.text??``}),s!==null&&s.connection?.fixCommand?(0,W.jsx)(p,{open:!0,onClose:()=>c(null),titleId:v,title:`Fix ${s.label}`,description:s.connection.word,initialFocusRef:b,children:(0,W.jsxs)(`div`,{className:T.dialogBody,children:[s.connection.reasons.map(e=>(0,W.jsx)(`p`,{children:e},e)),(0,W.jsxs)(`div`,{className:T.commandBlock,children:[(0,W.jsx)(`span`,{className:T.commandLabel,children:`Run this in a terminal`}),(0,W.jsx)(J,{text:Y(s.connection.fixCommand),what:`the fix for ${s.label}`})]}),(0,W.jsx)(`p`,{children:`Verse shows the command and never runs it for you: it changes which CLI this seat is pinned to.`}),(0,W.jsx)(`div`,{className:T.dialogActions,children:(0,W.jsx)(O,{ref:b,variant:`subtle`,onClick:()=>c(null),children:`Done`})})]})}):null,(0,W.jsx)(F,{open:l,onClose:()=>u(!1),titleId:y,title:`Budget`,description:`How much of each seat autonomy may use, and how much is kept for you.`,width:560,children:l?(0,W.jsx)(le,{}):null}),(0,W.jsx)(m,{open:_.dialog.open,reason:_.dialog.reason,tokenLabel:`Mutation token`,tokenHelp:`the mutation token ashlr verse printed`,onClose:_.dialog.onClose,onUnlocked:_.dialog.onUnlocked})]})}var X=`verse-apps`,Te=`verse-terminal-status`;async function Ee(e,t){try{return{available:!0,data:await s(e,t)}}catch(e){if(e instanceof f&&e.status===401||e instanceof DOMException&&e.name===`AbortError`)throw e;return e instanceof f&&e.status===404?{available:!1,reason:`This server is older than Apps & Accounts, so desktop, terminal and local rows are not available.`}:{available:!1,reason:e instanceof f?`The apps check answered HTTP ${e.status}.`:`The apps check could not be reached.`}}}var Z={key:X,fetch:e=>Ee(h,e)},De={key:Te,fetch:e=>Ee(S,e)};async function Q(e,t){let n=r();if(!n)throw new b;let a=await u(e,t,n);return i(),a}async function Oe(){let e=await Q(`${h}/refresh`,{});return await a(X,E(()=>Promise.resolve({available:!0,data:e}),()=>Z.fetch()),!0),e}async function ke(e,t){let n=await Q(`${h}/${encodeURIComponent(e)}/toggle`,{enabled:t,confirm:!0});return a(X,()=>Z.fetch(),!0),n}function Ae(e,t){return Q(`${h}/${encodeURIComponent(e)}/launch`,{root:t.root,...t.via?{via:t.via}:{},...t.model?{model:t.model}:{}})}function je({row:e,enable:t,busy:n,error:r,onCancel:i,onConfirm:a}){let o=(0,U.useId)(),s=(0,U.useRef)(null);if(e===null||e.toggle===null)return null;let c=t?e.toggle.command:e.toggle.restoreCommand,l=t?e.toggle.restoreCommand:e.toggle.command,u=t?`Turn on “${e.description}”?`:`Restore ${e.name}?`;return(0,W.jsx)(p,{open:!0,onClose:i,titleId:o,title:u,initialFocusRef:s,description:t?`This changes ${e.name}’s own settings until you restore it.`:`This puts ${e.name} back on its own defaults.`,children:(0,W.jsxs)(`div`,{className:T.dialogBody,children:[e.detail?(0,W.jsx)(`p`,{children:e.detail}):null,t&&e.id===`claude-desktop`?(0,W.jsx)(`p`,{children:`Recommended: leave this off. Claude Desktop would run local models instead of its own, and Verse’s local seats already use Ollama.`}):null,(0,W.jsxs)(`div`,{className:T.commandBlock,children:[(0,W.jsx)(`span`,{className:T.commandLabel,children:`Runs`}),(0,W.jsx)(J,{text:Y(c),what:`the command this runs`})]}),(0,W.jsxs)(`div`,{className:T.commandBlock,children:[(0,W.jsx)(`span`,{className:T.commandLabel,children:t?`Undo later with`:`Turn back on with`}),(0,W.jsx)(J,{text:Y(l),what:t?`the restore command`:`the command that turns it on`})]}),(0,W.jsx)(`p`,{children:`It opens in a Terminal window so you can answer its prompts. Verse does not answer them for you, and nothing changes until you do.`}),r?(0,W.jsx)(`p`,{className:T.error,role:`alert`,children:r}):null,(0,W.jsxs)(`div`,{className:T.dialogActions,children:[(0,W.jsx)(O,{ref:s,variant:`subtle`,onClick:i,children:`Cancel`}),(0,W.jsx)(O,{variant:t?`danger`:`primary`,busy:n,onClick:a,children:t?`Open in Terminal`:`Restore in Terminal`})]})]})})}function Me({row:e,projects:t,models:n,inVerse:r,busy:i,error:a,onCancel:o,onLaunch:s}){let c=(0,U.useId)(),l=(0,U.useRef)(null),[u,d]=(0,U.useState)(`native`),[f,m]=(0,U.useState)(``),[h,g]=(0,U.useState)(t[0]?.path??``);(0,U.useEffect)(()=>{d(`native`),m(``),g(t[0]?.path??``)},[e?.id]);let _={via:u,model:u===`ollama`&&f!==``?f:null},v=(0,U.useMemo)(()=>e?H(e,_):null,[e,_.via,_.model]);if(e===null)return null;let y=H(e,{via:`native`,model:null}),b=e.ollamaLaunch,x=`${c}-via`,S=h!==``;return(0,W.jsx)(p,{open:!0,onClose:o,titleId:c,title:`Launch ${e.name}`,description:`Nothing starts until you choose where.`,initialFocusRef:l,children:(0,W.jsxs)(`div`,{className:T.dialogBody,children:[(0,W.jsxs)(`fieldset`,{className:T.fieldset,children:[(0,W.jsx)(`legend`,{className:T.legend,children:`Run`}),y?(0,W.jsxs)(`label`,{className:T.radio,children:[(0,W.jsx)(`input`,{ref:l,type:`radio`,name:x,checked:u===`native`,onChange:()=>d(`native`)}),(0,W.jsx)(`code`,{className:T.inlineCode,children:Y(y)}),(0,W.jsx)(`span`,{className:T.hint,children:`its own command`})]}):null,b?(0,W.jsxs)(`label`,{className:T.radio,children:[(0,W.jsx)(`input`,{type:`radio`,name:x,checked:u===`ollama`,onChange:()=>d(`ollama`)}),(0,W.jsx)(`code`,{className:T.inlineCode,children:Y(b)}),(0,W.jsx)(`span`,{className:T.hint,children:`through Ollama`})]}):null]}),u===`ollama`?n.length>0?(0,W.jsxs)(I,{label:`Local model`,value:f,onChange:e=>m(e.target.value),children:[(0,W.jsx)(`option`,{value:``,children:`Ollama’s default`}),n.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]}):(0,W.jsx)(`p`,{className:T.hint,children:`No local models are known to Verse, so Ollama will ask which to use.`}):null,(0,W.jsxs)(I,{label:`Folder (Terminal.app)`,value:h,onChange:e=>g(e.target.value),hint:t.length===0?`No chat folders or enrolled projects yet.`:`A Verse tab opens in the chat you have open.`,disabled:t.length===0,children:[t.length===0?(0,W.jsx)(`option`,{value:``,children:`—`}):null,t.map(e=>(0,W.jsx)(`option`,{value:e.path,children:e.name},e.path))]}),v?(0,W.jsxs)(`div`,{className:T.commandBlock,children:[(0,W.jsx)(`span`,{className:T.commandLabel,children:`Command`}),(0,W.jsx)(J,{text:Y(v),what:`the ${e.name} launch command`})]}):null,u===`ollama`&&r.available?(0,W.jsx)(`p`,{className:T.hint,children:`In a Verse tab this runs exactly the command above — Verse builds it from what is installed, never from this page.`}):null,!r.available&&r.reason?(0,W.jsxs)(`p`,{className:T.hint,children:[`Verse terminal: `,r.reason]}):null,a?(0,W.jsx)(`p`,{className:T.error,role:`alert`,children:a}):null,(0,W.jsxs)(`div`,{className:T.dialogActions,children:[(0,W.jsx)(O,{variant:`ghost`,onClick:o,children:`Cancel`}),(0,W.jsx)(O,{variant:r.available?`subtle`:`primary`,busy:i,disabled:!S||v===null,onClick:()=>v&&s({choice:_,target:`terminal-app`,root:h,command:v}),children:`Open in Terminal.app`}),r.available?(0,W.jsx)(O,{variant:`primary`,disabled:v===null,onClick:()=>v&&s({choice:_,target:`verse`,root:null,command:v}),children:`Open in Verse terminal`}):null]})]})})}var $={section:`_section_mum7s_11`,body:`_body_mum7s_19`,panel:`_panel_mum7s_29`,panelHead:`_panelHead_mum7s_35`,panelTitle:`_panelTitle_mum7s_43`,panelNote:`_panelNote_mum7s_51`,muted:`_muted_mum7s_52`,alert:`_alert_mum7s_61`,alertTitle:`_alertTitle_mum7s_72`,seatList:`_seatList_mum7s_78`,rowList:`_rowList_mum7s_79`,seatRow:`_seatRow_mum7s_85`,healthRow:`_healthRow_mum7s_86`,seatHead:`_seatHead_mum7s_94`,seatLabel:`_seatLabel_mum7s_101`,engineTag:`_engineTag_mum7s_106`,code:`_code_mum7s_107`,count:`_count_mum7s_118`,disclosure:`_disclosure_mum7s_124`,commandLine:`_commandLine_mum7s_134`,envList:`_envList_mum7s_143`,envItem:`_envItem_mum7s_152`,warnList:`_warnList_mum7s_161`,digest:`_digest_mum7s_171`,actions:`_actions_mum7s_178`};function Ne({server:e,heading:t}){let n=e.env===null?[]:Object.keys(e.env);return(0,W.jsxs)(`div`,{className:$.disclosure,children:[t===void 0?null:(0,W.jsx)(`p`,{className:$.alertTitle,children:t}),(0,W.jsxs)(`p`,{className:$.commandLine,children:[e.command,e.args.length>0?` ${e.args.join(` `)}`:``]}),n.length===0?(0,W.jsx)(`p`,{className:$.muted,children:`No environment variables are passed to this server.`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`p`,{className:$.muted,children:[n.length,` environment variable`,n.length===1?``:`s`,` passed to this server. Values are never displayed.`]}),(0,W.jsx)(`ul`,{className:$.envList,children:n.map(e=>(0,W.jsxs)(`li`,{className:$.envItem,children:[e,`=<set>`]},e))})]}),(0,W.jsxs)(`p`,{className:$.code,children:[`configured in `,e.sourceRef]})]})}var Pe=`verse-mcp-snapshot`,Fe=`verse-mcp-cli-health`;function Ie(e,t){return t instanceof f?t.status===404?`This server does not expose ${e}, so this panel has no source.`:`${e} answered HTTP ${t.status}.`:`${e} could not be reached.`}function Le(e){return async t=>{try{return{raw:await s(e,t),available:!0,reason:null}}catch(t){if(t instanceof f&&t.status===401||t instanceof DOMException&&t.name===`AbortError`)throw t;return{raw:null,available:!1,reason:Ie(e,t)}}}}var Re={key:Pe,fetch:Le(`/api/verse/mcp`)},ze={key:Fe,fetch:Le(`/api/verse/mcp/cli-health`)},Be=class extends Error{constructor(){super(`Unlock actions with the mutation token before changing MCP configuration.`),this.name=`McpLockedError`}};async function Ve(e,t){let n=r();if(!n)throw new Be;let a=await u(e,t,n);return i(),a}function He(e,t){return Ve(`/api/verse/mcp/proposal`,{target:e,server:t})}async function Ue(e,t,n){let r=await Ve(`/api/verse/mcp/apply`,{target:e,server:t,digest:n,confirm:!0});return o(Pe),r}function We({row:e}){let[t,n]=(0,U.useState)(!1),r=(0,U.useId)(),i=e.servers.length>0;return(0,W.jsxs)(K,{id:`mcp-${e.seatId}`,name:e.label,monogram:e.monogram,engine:e.engine,description:e.sentence,health:{tone:i?`success`:`off`,label:e.loads},aside:i?(0,W.jsx)(O,{variant:`ghost`,size:`sm`,"aria-expanded":t,"aria-controls":r,icon:t?(0,W.jsx)(j,{size:14}):(0,W.jsx)(ae,{size:14}),onClick:()=>n(e=>!e),children:t?`Hide servers`:`Show servers`}):null,children:[(0,W.jsx)(`span`,{className:T.reasonCode,children:e.reason}),i&&t?(0,W.jsx)(`div`,{id:r,className:T.servers,children:e.servers.map(e=>(0,W.jsx)(Ne,{server:e,heading:e.name},e.name))}):null]})}function Ge(e){if(typeof e!=`object`||!e)return null;let t=e,n=z(t.server),r=t.target;return!n||typeof t.digest!=`string`||!r?null:{server:n,targetRef:typeof r.ref==`string`?r.ref:``,targetLabel:typeof r.label==`string`?r.label:``,action:t.action===`replace`?`replace`:`add`,replaces:z(t.replaces),warnings:Array.isArray(t.warnings)?t.warnings.filter(e=>typeof e==`string`):[],note:typeof t.note==`string`?t.note:``,digest:t.digest}}function Ke(e){return e instanceof f?e.detail??`The server refused (HTTP ${e.status}).`:e instanceof Error&&e.name===`VerseMutationLockedError`?`Unlock actions with the mutation token first.`:`The request could not be completed.`}function qe({open:e,snapshot:t,run:n,onClose:r,onAdded:i}){let a=(0,U.useId)(),o=_e(t),[s,c]=(0,U.useState)(`hub`),[l,u]=(0,U.useState)(``),[d,f]=(0,U.useState)(``),[p,m]=(0,U.useState)(``),[h,g]=(0,U.useState)(``),[_,v]=(0,U.useState)(null),[y,b]=(0,U.useState)(!1),[x,S]=(0,U.useState)(null),C=()=>{S(null),v(null),b(!1)},ee=async e=>{e.preventDefault(),v(null);let t=de(h);if(!t.ok){v(t.error);return}let r={name:l.trim(),command:d.trim(),args:B(p),...Object.keys(t.env).length>0?{env:t.env}:{}};b(!0);try{let e=await n(`Review an MCP server before adding it`,()=>He(s,r));if(e===null)return;let t=Ge(e);t?S({input:r,target:s,value:t}):v(`The server answered with something that is not a proposal.`)}catch(e){v(Ke(e))}finally{b(!1)}},w=async()=>{if(x){b(!0),v(null);try{if(await n(`Add an MCP server`,()=>Ue(x.target,x.input,x.value.digest))===null)return;i(`${x.value.action===`replace`?`Replaced`:`Added`} ${x.value.server.name} in ${x.value.targetRef}.`),u(``),f(``),m(``),g(``),C(),r()}catch(e){v(Ke(e))}finally{b(!1)}}},E=o.find(e=>e.id===s);return(0,W.jsx)(F,{open:e,onClose:()=>{C(),r()},titleId:a,title:x?`Review before adding`:`Add an MCP server`,description:`An MCP server is a program that runs with the agent’s permissions. Nothing is written until you confirm what you read.`,width:520,children:x===null?(0,W.jsxs)(`form`,{className:T.dialogBody,onSubmit:e=>void ee(e),children:[(0,W.jsx)(I,{label:`Add to`,value:s,onChange:e=>c(e.target.value),hint:E?.disabledReason??(s===`hub`?`The hub’s own registry.`:`A Verse chat on a Claude seat still loads none; Claude Code in a terminal does.`),children:o.map(e=>(0,W.jsx)(`option`,{value:e.id,disabled:e.disabledReason!==null,children:e.label},e.id))}),(0,W.jsx)(L,{label:`Name`,value:l,onChange:e=>u(e.target.value),required:!0,placeholder:`filesystem`,autoComplete:`off`}),(0,W.jsx)(L,{label:`Command`,value:d,onChange:e=>f(e.target.value),required:!0,placeholder:`/opt/homebrew/bin/npx`,autoComplete:`off`,hint:`An absolute path is safest; a bare name is looked up on PATH when the server starts.`}),(0,W.jsx)(L,{label:`Arguments`,value:p,onChange:e=>m(e.target.value),placeholder:`-y @modelcontextprotocol/server-filesystem "~/code"`,autoComplete:`off`}),(0,W.jsxs)(`label`,{className:T.fieldLabel,children:[`Environment `,(0,W.jsx)(`span`,{className:T.hint,children:`One KEY=value per line. Values are sent once and never shown again.`}),(0,W.jsx)(`textarea`,{className:T.textarea,value:h,onChange:e=>g(e.target.value),spellCheck:!1,autoComplete:`off`})]}),_?(0,W.jsx)(`p`,{className:T.error,role:`alert`,children:_}):null,(0,W.jsxs)(`div`,{className:T.dialogActions,children:[(0,W.jsx)(O,{type:`button`,variant:`ghost`,onClick:r,children:`Cancel`}),(0,W.jsx)(O,{type:`submit`,variant:`primary`,busy:y,disabled:l.trim()===``||d.trim()===``||E?.disabledReason!=null,children:`Review`})]})]}):(0,W.jsxs)(`div`,{className:T.dialogBody,children:[(0,W.jsxs)(`p`,{children:[x.value.action===`replace`?`Replaces`:`Adds`,` `,(0,W.jsx)(`strong`,{children:x.value.server.name}),` in`,` `,(0,W.jsx)(`code`,{className:T.inlineCode,children:x.value.targetRef}),x.value.targetLabel?` (${x.value.targetLabel})`:``,`.`]}),(0,W.jsx)(Ne,{server:x.value.server,heading:`This will run`}),x.value.replaces?(0,W.jsx)(Ne,{server:x.value.replaces,heading:`Replacing`}):null,x.value.warnings.length>0?(0,W.jsx)(`ul`,{className:T.warnings,children:x.value.warnings.map(e=>(0,W.jsx)(`li`,{children:e},e))}):null,x.value.note?(0,W.jsx)(`p`,{className:T.hint,children:x.value.note}):null,_?(0,W.jsx)(`p`,{className:T.error,role:`alert`,children:_}):null,(0,W.jsxs)(`div`,{className:T.dialogActions,children:[(0,W.jsx)(O,{variant:`ghost`,onClick:()=>S(null),children:`Back`}),(0,W.jsx)(O,{variant:`primary`,busy:y,onClick:()=>void w(),children:x.value.action===`replace`?`Replace server`:`Add server`})]})]})})}function Je({snapshot:e,cliHealth:t,unavailable:n,loading:r,run:i,onAdded:a,headingRef:o}){let[s,c]=(0,U.useState)(!1),l=e?he(e):[];return(0,W.jsxs)(q,{id:`mcp-servers`,title:`MCP servers`,headingRef:o,action:(0,W.jsx)(O,{variant:`subtle`,size:`sm`,icon:(0,W.jsx)(k,{size:14}),onClick:()=>c(!0),"aria-haspopup":`dialog`,children:`Add server`}),caveat:(0,W.jsxs)(W.Fragment,{children:[`Claude and local seats load no MCP servers: Verse starts them with`,` `,(0,W.jsx)(`code`,{children:`--strict-mcp-config`}),` and an empty `,(0,W.jsx)(`code`,{children:`--mcp-config`}),`. Codex and Grok seats load their own account’s config — and an `,(0,W.jsx)(`code`,{children:`ashlr__`}),` write through one is refused on a folder that is not enrolled.`]}),children:[e!==null&&e.notes.length>0?(0,W.jsxs)(`div`,{className:T.loadingLine,role:`note`,children:[(0,W.jsx)(`strong`,{children:`Configured, but unused.`}),` `,e.notes.join(` `),` `,e.machine.note]}):null,t!==null&&t.driftDetected?(0,W.jsxs)(`div`,{className:T.loadingLine,role:`alert`,children:[(0,W.jsx)(`strong`,{children:`CLI version drift.`}),` `,t.notes.join(` `),` `,t.accounts.filter(e=>e.versionState===`drift`).map(e=>`${e.label}: ${e.version??`unread`}, pinned ${e.pinnedVersion??`—`}.`).join(` `)]}):null,e===null?(0,W.jsx)(`p`,{className:T.loadingLine,"aria-busy":r||void 0,children:r?`Reading each seat’s configuration…`:n??`No per-seat reading is available.`}):(0,W.jsx)(`ul`,{className:T.rows,children:l.map(e=>(0,W.jsx)(We,{row:e},e.seatId))}),e?.scope?(0,W.jsxs)(`p`,{className:T.scopeLine,children:[`Scope: `,V(ye,e.scope.reason,`Locus did not report a usable scope.`),e.scope.tenantRef?` (${e.scope.tenantRef})`:``]}):null,(0,W.jsx)(qe,{open:s,snapshot:e,run:i,onClose:()=>c(!1),onAdded:a})]})}function Ye(e){return{tone:me(e.health.state),label:e.health.label}}function Xe({group:e,onToggle:t,onRestore:n}){return(0,W.jsx)(q,{id:e.id,title:e.title,caveat:e.caveat,children:(0,W.jsx)(`ul`,{className:T.rows,children:e.apps.map(e=>{let r=e.actions.find(e=>e.kind===`restore`)??null;return(0,W.jsx)(K,{id:`app-${e.id}`,name:e.name,monogram:e.monogram,engine:e.engine,description:e.description,health:Ye(e),detail:e.toggle===null?e.detail:null,aside:e.toggle===null?null:(0,W.jsxs)(W.Fragment,{children:[r?(0,W.jsx)(O,{variant:`ghost`,size:`sm`,onClick:()=>n(e),disabled:r.disabledReason!==null,title:Y(r.command??[]),children:r.label}):null,(0,W.jsx)(P,{checked:e.toggle.enabled,onChange:n=>t(e,n),"aria-label":`${e.description}: ${e.toggle.enabled?`on`:`off`}`,"aria-describedby":`app-${e.id}-name`})]})},e.id)})})})}function Ze({group:e,quickLaunchReason:t,onQuickLaunch:n,onLaunchOptions:r}){return(0,W.jsx)(q,{id:e.id,title:e.title,caveat:e.caveat,children:(0,W.jsx)(`ul`,{className:T.rows,children:e.apps.map(e=>{let i=e.actions.find(e=>e.kind===`launch`)??null,a=i?.disabledReason??t;return(0,W.jsx)(K,{id:`app-${e.id}`,name:e.name,monogram:e.monogram,engine:e.engine,description:e.description,version:e.version,health:Ye(e),detail:e.detail,aside:(0,W.jsxs)(W.Fragment,{children:[e.copy&&e.installed?(0,W.jsx)(J,{text:e.copy.text,label:e.copy.label,what:`the ${e.name} command`}):null,e.ollamaLaunch?(0,W.jsx)(J,{text:Y(e.ollamaLaunch),what:`the Ollama launch command for ${e.name}`}):null,i?i.disabledReason===null?(0,W.jsxs)(`span`,{className:T.split,children:[(0,W.jsx)(O,{variant:`subtle`,size:`sm`,icon:(0,W.jsx)(A,{size:14}),disabled:a!==null,title:a??void 0,onClick:()=>n(e),"aria-label":`Launch ${e.name}`,children:`Launch`}),(0,W.jsx)(O,{variant:`subtle`,size:`sm`,iconOnly:!0,icon:(0,W.jsx)(j,{size:14}),"aria-label":`Launch options for ${e.name}`,title:`Launch options for ${e.name}`,"aria-haspopup":`dialog`,onClick:()=>r(e)})]}):(0,W.jsx)(`span`,{className:T.disabledNote,children:i.disabledReason}):null]})},e.id)})})})}function Qe({group:e}){return(0,W.jsx)(q,{id:e.id,title:e.title,caveat:e.caveat,children:(0,W.jsx)(`ul`,{className:T.rows,children:e.apps.map(e=>(0,W.jsx)(K,{id:`app-${e.id}`,name:e.name,monogram:e.monogram,engine:e.engine,description:e.description,version:e.version,health:Ye(e),detail:e.detail},e.id))})})}var $e=6e4;function et(e,t){let n=Date.parse(e);if(!Number.isFinite(n))return`not checked`;let r=Math.max(0,Math.round((t-n)/6e4));return r<1?`checked just now`:r<120?`checked ${r} min ago`:`checked ${Math.round(r/60)} h ago`}function tt({focusGroup:e}={}){let t=d(Z),n=c(Z);g(n,$e);let r=d(De),i=d(Re),a=d(ze),o=c(Re),s=d(v),u=ee(),f=_(),p=se(),[h,y]=(0,U.useState)(null),[b,x]=(0,U.useState)(!1),[S,C]=(0,U.useState)(null),[w,E]=(0,U.useState)(null),[ne,D]=(0,U.useState)(!1),[ae,k]=(0,U.useState)(null),[A,j]=(0,U.useState)(null),[oe,M]=(0,U.useState)(!1),[ce,P]=(0,U.useState)(null),[le,F]=(0,U.useState)(()=>Date.now());g(()=>F(Date.now()),3e4);let I=(0,U.useRef)(null);(0,U.useEffect)(()=>{if(e!==`mcp-servers`)return;let t=I.current;t&&(typeof t.scrollIntoView==`function`&&t.scrollIntoView({block:`start`}),t.focus({preventScroll:!0}))},[e]);let L=s.data,R=pe(L),de=ue(u.seats),z=xe({terminalAvailable:r.data?.available?r.data.data.available:!r.data&&null,terminalReason:r.data?.available?r.data.data.reason:null,activeSessionId:f.activeSessionId}),B=t.data?.available?t.data.data:null,V=e=>B?.groups.find(t=>t.id===e)??null,me=i.data?.available?ge(i.data.raw):null,he=a.data?.available?fe(a.data.raw):null,H=(0,U.useCallback)((e,t=`neutral`)=>y({text:e,tone:t}),[]),_e=async()=>{x(!0);try{await p.run(`Check every app and seat again`,async()=>(await Promise.all([Oe(),te().catch(()=>null)]),o(),!0))&&(F(Date.now()),H(`Checked again.`))}catch(e){H(N(e),`danger`)}finally{x(!1)}},ve=async e=>{C(e.seatId);try{await p.run(`Open the sign-in for ${e.label} in Terminal`,async()=>(await re(e.seatId),!0))&&H(`Opened the sign-in for ${e.label} in Terminal. Finish it there; this page picks it up.`)}catch(e){H(N(e),`danger`)}finally{C(null)}},ye=async()=>{if(w){D(!0),k(null);try{let e=await p.run(`${w.enable?`Switch on`:`Restore`} ${w.row.name}`,()=>ke(w.row.id,w.enable));e&&(H(`Opened “${e.command.join(` `)}” in Terminal. Answer its prompts there.`),E(null))}catch(e){k(N(e))}finally{D(!1)}}},G=async(e,t)=>{if(t.target===`verse`){Se(e.id,t.choice),j(null);return}if(t.root!==null){M(!0),P(null);try{await p.run(`Launch ${e.name} in Terminal`,()=>Ae(e.id,{root:t.root,via:t.choice.via,model:t.choice.model}))&&(H(`Opened ${e.name} in Terminal.`),j(null))}catch(e){let t=N(e);A?P(t):H(t,`danger`)}finally{M(!1)}}},K=z.available||R.length>0?null:`Open a chat or enrol a project first.`,q=e=>{let t={via:`native`,model:null},n=e.actions.find(e=>e.kind===`launch`)?.command??null;n&&G(e,{choice:t,target:z.available?`verse`:`terminal-app`,root:R[0]?.path??null,command:n})},be=t.data===void 0&&(t.status===`loading`||t.status===`idle`);return(0,W.jsxs)(`section`,{className:T.section,"aria-label":`Apps & Accounts`,children:[(0,W.jsx)(`div`,{className:T.scroll,children:(0,W.jsxs)(`div`,{className:T.page,children:[(0,W.jsxs)(`header`,{className:T.header,children:[(0,W.jsxs)(`div`,{className:T.headerText,children:[(0,W.jsx)(`h2`,{className:T.title,children:`Apps & Accounts`}),(0,W.jsx)(`p`,{className:T.lede,children:`Everything Verse can run with on this Mac, and whether it is ready.`})]}),(0,W.jsxs)(`div`,{className:T.headerMeta,children:[B?(0,W.jsxs)(`span`,{children:[et(B.checkedAt,le),B.pathSource===`fallback`?` · PATH from known folders (your login shell did not answer)`:``]}):null,(0,W.jsx)(O,{variant:`ghost`,size:`sm`,icon:(0,W.jsx)(ie,{size:14}),busy:b,onClick:()=>void _e(),children:`Check again`})]})]}),(0,W.jsx)(`p`,{className:h?T.banner:T.visuallyHidden,"data-tone":h?.tone,role:`status`,"aria-live":`polite`,children:h?.text??``}),(0,W.jsx)(we,{seats:u.seats,health:u.health,budget:u.budget,loading:u.loading,reconnecting:S,onReconnect:e=>void ve(e)}),t.data&&!t.data.available?(0,W.jsx)(`p`,{className:T.banner,children:t.data.reason}):be?(0,W.jsxs)(`div`,{"aria-busy":`true`,"aria-label":`Checking apps`,children:[(0,W.jsx)(l,{width:`30%`}),(0,W.jsx)(l,{width:`80%`}),(0,W.jsx)(l,{width:`70%`})]}):(0,W.jsxs)(W.Fragment,{children:[V(`desktop`)?(0,W.jsx)(Xe,{group:V(`desktop`),onToggle:(e,t)=>{k(null),E({row:e,enable:t})},onRestore:e=>{k(null),E({row:e,enable:!1})}}):null,V(`terminal-agents`)?(0,W.jsx)(Ze,{group:V(`terminal-agents`),quickLaunchReason:K,onQuickLaunch:q,onLaunchOptions:e=>{P(null),j(e)}}):null,V(`local-models`)?(0,W.jsx)(Qe,{group:V(`local-models`)}):null]}),(0,W.jsx)(Je,{snapshot:me,cliHealth:he,unavailable:i.data&&!i.data.available?i.data.reason:null,loading:i.data===void 0,run:p.run,onAdded:e=>{H(e),o()},headingRef:I})]})}),(0,W.jsx)(je,{row:w?.row??null,enable:w?.enable??!1,busy:ne,error:ae,onCancel:()=>E(null),onConfirm:()=>void ye()}),(0,W.jsx)(Me,{row:A,projects:R,models:de,inVerse:z,busy:oe,error:ce,onCancel:()=>j(null),onLaunch:e=>{A&&G(A,e)}}),(0,W.jsx)(m,{open:p.dialog.open,reason:p.dialog.reason,tokenLabel:`Mutation token`,tokenHelp:`the mutation token ashlr verse printed`,onClose:p.dialog.onClose,onUnlocked:p.dialog.onUnlocked})]})}export{$e as APPS_POLL_MS,tt as AppsSection};
|
|
2
|
-
//# sourceMappingURL=AppsSection-DDqeSrty.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,n}from"./index-CyK31YRm.js";import{C as r,D as i,E as a,I as ee,L as te,P as o,R as ne,T as re,_ as ie,c as ae,d as oe,f as se,g as ce,k as s,l as c,m as le,n as ue,o as de,p as fe,r as pe,s as l,t as me,u as he,w as ge}from"./ChartFrame-DK_BDXCt.js";import{_ as _e}from"./colors-BZ3a9wFf.js";import{l as ve,o as u,t as ye}from"./format-DKrNjdwD.js";var d=t(e(),1),f=n(),p=12,be=26,xe=12,Se=6.6,m=120,h=14;function g({title:e,description:t,caveat:n,status:g,series:_,stacked:v=!1,height:y=200,width:Ce,formatX:b,formatY:x,threshold:S,yDomain:we,ariaLabel:Te}){let C=b??u,w=x??ye,T=(0,d.useRef)(null),E=he(T,Ce),D=c(),[O,k]=(0,d.useState)(null),A=(0,d.useId)(),j=_.map((e,t)=>e.color??_e(t)),M=(0,d.useMemo)(()=>{let e=_.flatMap(e=>e.points.map(e=>e.x)),t=ne(e),n=Array.from(new Set(e.filter(t))).sort((e,t)=>e-t),r=_.map(e=>new Map(e.points.map(e=>[e.x,e.y])));return n.map(e=>{let t=r.map(t=>t.has(e)?t.get(e):null);return{x:e,values:t,total:t.some(e=>e===null)?null:t.reduce((e,t)=>e+(t??0),0)}})},[_]),Ee=M.some(e=>e.values.some(e=>e!==null)),De=g??(Ee?{kind:`ready`}:{kind:`empty`}),N=v?M.map(e=>e.total).filter(e=>e!==null):M.flatMap(e=>e.values).filter(e=>e!==null),P=x?s(x):null,F=we??(P!==null&&(e=>N.every(t=>t>=e[0]&&t<=e[1]))([0,P])?[0,P]:null),I=le(Math.min(0,F?.[0]??0,...N),Math.max(0,F?.[1]??0,...N,S?.value??0),{count:4,integer:N.length>0&&se(N),format:x}),L=I.ticks,R=L[0],Oe=L[L.length-1],z=te(I.labels,28,64,D),B=y-p-be,V=i(R,Oe,p+B,p),H=!v&&_.length<=4?Math.max(0,..._.map(e=>e.label.length))*Se*D+6:0,U=_.flatMap((e,t)=>{for(let n=M.length-1;n>=0;n--){let r=M[n].values[t];if(r!=null)return[{key:e.id,y:V(r)}]}return[]}),W=H>0&&H<=m&&E>=420?ce(U,h*D,p,p+B):null,G=W!==null&&U.length>0,ke=xe+(G?H:0),K=Math.max(40,E-z-ke),q=M.length?M[0].x:0,J=M.length?M[M.length-1].x:1,Y=r(M.map(e=>e.x)),[Ae,je]=Y&&J>q?ie(q,J,oe):[q,J],X=i(Ae,je,z,z+K),Me=(()=>{if(v){let e=M.map(()=>0);return _.map((t,n)=>{let r=M.map((t,r)=>{if(t.total===null)return{x:t.x,y:null,base:null};let i=e[r];return e[r]=i+(t.values[n]??0),{x:t.x,y:e[r],base:i}});return o(r.map(e=>({x:e.x,y:e.y}))).map(e=>({top:e.map(e=>({x:X(e.x),y:V(e.y)})),bottom:e.map(e=>{let t=r.find(t=>t.x===e.x);return{x:X(e.x),y:V(t.base??0)}})}))})}return _.map((e,t)=>o(M.map(e=>({x:e.x,y:e.values[t]??null}))).map(e=>({top:e.map(e=>({x:X(e.x),y:V(e.y)})),bottom:e.map(e=>({x:X(e.x),y:V(Math.max(R,0))}))})))})(),Z=ee(M.length,Math.max(2,Math.floor(K/84))),Ne=Y?ve(q,J,b,Z.map(e=>M[e].x)):[C],Pe=re(Z.map((e,t)=>{let n=X(M[e].x),r=t===0,i=t===Z.length-1;return{key:String(e),x:n,anchor:M.length===1?`middle`:r&&n<=z+.5?`start`:i&&n>=z+K-.5?`end`:`middle`,priority:i?3:r?2:1,required:r||i,variants:Ne.map(t=>t(M[e].x))}}),{min:z,max:z+K,charPx:ge(D)});function Fe(e){let t=T.current;if(!t||M.length===0)return null;let n=e-t.getBoundingClientRect().left,r=0,i=1/0;return M.forEach((e,t)=>{let a=Math.abs(X(e.x)-n);a<i&&(i=a,r=t)}),r}function Ie(e){if(M.length===0)return;let t=O??M.length-1,n=e.key===`ArrowLeft`?t-1:e.key===`ArrowRight`?t+1:e.key===`Home`?0:e.key===`End`?M.length-1:null;n!==null&&(e.preventDefault(),k(Math.max(0,Math.min(M.length-1,n))))}let Q=O===null?void 0:M[O],$=[...M].reverse().find(e=>e.values.some(e=>e!==null)),Le=Te??(M.length?`${e}: ${M.length} points from ${C(q)} to ${C(J)}.`+($?` Latest ${C($.x)}: ${_.map((e,t)=>`${e.label} ${$.values[t]===null?`no data`:w($.values[t])}`).join(`, `)}.`:``):`${e}: no data.`),Re=[{key:`x`,label:`When`,render:e=>C(e.x)},..._.map((e,t)=>({key:e.id,label:e.label,numeric:!0,render:e=>e.values[t]===null?`—`:w(e.values[t])})),...v&&_.length>1?[{key:`__total`,label:`Total`,numeric:!0,render:e=>e.total===null?`—`:w(e.total)}]:[]];return(0,f.jsx)(me,{title:e,description:t,caveat:n,status:De,table:(0,f.jsx)(ae,{caption:e,columns:Re,rows:M,rowKey:e=>String(e.x)}),footer:(0,f.jsx)(ue,{items:_.map((e,t)=>({label:e.label,color:j[t],kind:v?`swatch`:`line`}))}),children:(0,f.jsxs)(`div`,{ref:T,className:`${l.plotWrap} ${l.focusable}`,tabIndex:0,role:`group`,"aria-label":`${e}. Use the left and right arrow keys to read values.`,"aria-describedby":A,onFocus:()=>k(e=>e??(M.length?M.length-1:null)),onBlur:()=>k(null),onKeyDown:Ie,children:[(0,f.jsxs)(`svg`,{className:l.svg,width:E,height:y,viewBox:`0 0 ${E} ${y}`,role:`img`,"aria-label":Le,onPointerMove:e=>k(Fe(e.clientX)),onPointerLeave:()=>k(null),children:[L.map((e,t)=>(0,f.jsxs)(`g`,{children:[(0,f.jsx)(`line`,{className:l.grid,x1:z,x2:z+K,y1:V(e),y2:V(e)}),(0,f.jsx)(`text`,{className:l.tick,x:z-6,y:V(e),dy:`0.32em`,textAnchor:`end`,children:I.labels[t]})]},e)),(0,f.jsx)(`line`,{className:l.axis,x1:z,x2:z+K,y1:V(Math.max(R,0)),y2:V(Math.max(R,0))}),Pe.map(e=>(0,f.jsx)(`text`,{"data-axis-label":e.key,className:l.tick,x:e.x,y:y-8,textAnchor:e.anchor,children:e.text},e.key)),Me.map((e,t)=>(0,f.jsxs)(`g`,{"data-series":_[t].id,children:[e.map((e,n)=>(0,f.jsx)(`path`,{d:fe(e.top,e.bottom),fill:j[t],className:v?void 0:l.wash,opacity:v?.85:void 0,stroke:v?`var(--chart-surface)`:void 0,strokeWidth:v?2:void 0},`a${n}`)),v?null:e.map((e,n)=>e.top.length===1?(0,f.jsx)(`circle`,{cx:e.top[0].x,cy:e.top[0].y,r:3,fill:j[t]},`p${n}`):(0,f.jsx)(`path`,{d:a(e.top),stroke:j[t],className:l.line},`l${n}`)),G&&e.length?(()=>{let n=e[e.length-1].top,r=n[n.length-1];return(0,f.jsx)(`text`,{"data-end-label":_[t].id,className:l.label,x:r.x+6,y:W.get(_[t].id)??r.y,dy:`0.32em`,children:_[t].label})})():null]},_[t].id)),S?(0,f.jsxs)(`g`,{children:[(0,f.jsx)(`line`,{className:l.reference,x1:z,x2:z+K,y1:V(S.value),y2:V(S.value)}),(0,f.jsxs)(`text`,{className:l.tick,x:z+K,y:V(S.value)-4,textAnchor:`end`,children:[S.label,` · `,w(S.value)]})]}):null,Q?(0,f.jsxs)(`g`,{children:[(0,f.jsx)(`line`,{className:l.crosshair,x1:X(Q.x),x2:X(Q.x),y1:p,y2:p+B}),_.map((e,t)=>{let n=v?Q.total===null?null:Q.values.slice(0,t+1).reduce((e,t)=>e+(t??0),0):Q.values[t];return n==null?null:(0,f.jsx)(`circle`,{className:l.marker,cx:X(Q.x),cy:V(n),r:4,fill:j[t]},e.id)})]}):null]}),(0,f.jsx)(`span`,{id:A,className:l.srOnly,"aria-live":`polite`,children:Q?`${C(Q.x)}: ${_.map((e,t)=>`${e.label} ${Q.values[t]===null?`no data`:w(Q.values[t])}`).join(`, `)}`:``}),Q?(0,f.jsx)(pe,{left:de(X(Q.x),E),top:p,title:C(Q.x),rows:[..._.map((e,t)=>({key:e.id,label:e.label,value:Q.values[t]===null?null:w(Q.values[t]),color:j[t]})),...v&&_.length>1?[{key:`__t`,label:`Total`,value:Q.total===null?null:w(Q.total)}]:[]]}):null]})})}export{g as t};
|
|
2
|
-
//# sourceMappingURL=AreaTrend-C32rUaxm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AreaTrend-C32rUaxm.js","names":[],"sources":["../../../../../../src/web-ui/components/charts/AreaTrend.tsx"],"sourcesContent":["/**\n * components/charts/AreaTrend.tsx — change over time for 1–4 series, as lines\n * over a 10% wash (overlaid) or as a stacked composition (`stacked`).\n *\n * Honesty: a `null` y is a GAP — the line and wash break there, and in stacked\n * mode an unknown in any layer breaks the whole stack at that x (the total is\n * unknown), never a silent zero. One y-axis only; a threshold is a labelled\n * reference line, not a second scale.\n *\n * Interaction: crosshair + tooltip on hover; the plot is focusable and the\n * arrow keys (Home/End) walk the same crosshair, announced through a live\n * region. The Table view carries every value without hovering.\n */\nimport { useId, useMemo, useRef, useState, type KeyboardEvent, type PointerEvent } from 'react';\nimport type { Series } from './types.js';\nimport { seriesColor } from './colors.js';\nimport { ChartFrame, type ChartStatus } from './ChartFrame.js';\nimport { ChartLegend, ChartTooltip, clampTooltipLeft } from './ChartParts.js';\nimport { TableView, type TableColumn } from './TableView.js';\nimport {\n MIN_TIME_SPAN_MS,\n allIntegers,\n areaPath,\n axisTicks,\n dodgeLabels,\n ensureSpan,\n isTimeAxis,\n labelCharPx,\n layoutAxisLabels,\n linePath,\n linearScale,\n percentScale,\n splitRuns,\n thinIndexes,\n tickGutter,\n xKeeper,\n type XY,\n} from './chart-math.js';\nimport { formatCompact, formatTimeLabel, timeLabelLadder } from './format.js';\nimport { useChartWidth } from './useChartWidth.js';\nimport { useTextScale } from './useTextScale.js';\nimport plot from './plot.module.css';\n\nexport interface AreaTrendSeries extends Series {\n /** Override the identity colour (defaults to the fixed categorical slot by index). */\n color?: string;\n}\n\nexport interface AreaTrendProps {\n title: string;\n description?: string;\n caveat?: string;\n status?: ChartStatus;\n series: AreaTrendSeries[];\n stacked?: boolean;\n /** Plot height in px, including the x-axis band. */\n height?: number;\n /** Fixed width (tests, print). Omit to fill the container. */\n width?: number;\n formatX?: (x: number) => string;\n formatY?: (y: number) => string;\n /** A labelled horizontal reference (a cap, a target). */\n threshold?: { value: number; label: string };\n /**\n * The y range to draw (widened, never clipped, if a value falls outside).\n * Default: a percent formatter (`formatY(50)` → \"50%\") gets 0–100 — or 0–1\n * for a fraction formatter — so percent cards share one scale; anything\n * else fits its data.\n */\n yDomain?: readonly [number, number];\n /** Accessible summary override. */\n ariaLabel?: string;\n}\n\nconst PAD_T = 12;\nconst PAD_B = 26;\nconst PAD_R = 12;\n/* End-label estimates are for 12 px text and are multiplied by the Display\n size (useTextScale) where they are used. END_LABEL_MAX is a budget of plot\n width, not a text measure, so it stays in px: at a larger size a long name\n falls back to the legend sooner rather than squeezing the plot. */\nconst END_LABEL_CH = 6.6;\nconst END_LABEL_MAX = 120;\n/** Line height of a direct end label at 12 px: two closer than this overlap. */\nconst END_LABEL_GAP_Y = 14;\n\ninterface Row {\n x: number;\n values: (number | null)[];\n total: number | null;\n}\n\nexport function AreaTrend({\n title,\n description,\n caveat,\n status,\n series,\n stacked = false,\n height = 200,\n width: fixedWidth,\n formatX: formatXProp,\n formatY: formatYProp,\n threshold,\n yDomain,\n ariaLabel,\n}: AreaTrendProps) {\n const formatX = formatXProp ?? formatTimeLabel;\n const formatY = formatYProp ?? formatCompact;\n const wrapRef = useRef<HTMLDivElement>(null);\n const width = useChartWidth(wrapRef, fixedWidth);\n const textScale = useTextScale();\n const [active, setActive] = useState<number | null>(null);\n const liveId = useId();\n\n const colors = series.map((s, i) => s.color ?? seriesColor(i));\n\n const rows: Row[] = useMemo(() => {\n // On a time axis a 0 / NaN / pre-2000 x is a null timestamp that leaked\n // through, not a moment — it would start the axis at \"Dec 31\" 1969.\n const all = series.flatMap((s) => s.points.map((p) => p.x));\n const keep = xKeeper(all);\n const xs = Array.from(new Set(all.filter(keep))).sort((a, b) => a - b);\n const lookup = series.map((s) => new Map(s.points.map((p) => [p.x, p.y])));\n return xs.map((x) => {\n const values = lookup.map((m) => (m.has(x) ? m.get(x)! : null));\n const total = values.some((v) => v === null) ? null : values.reduce<number>((a, v) => a + (v ?? 0), 0);\n return { x, values, total };\n });\n }, [series]);\n\n const hasData = rows.some((r) => r.values.some((v) => v !== null));\n const resolvedStatus: ChartStatus = status ?? (hasData ? { kind: 'ready' } : { kind: 'empty' });\n\n // ── scales ─────────────────────────────────────────────────────────────\n const known = stacked\n ? rows.map((r) => r.total).filter((v): v is number => v !== null)\n : rows.flatMap((r) => r.values).filter((v): v is number => v !== null);\n const pctScale = formatYProp ? percentScale(formatYProp) : null;\n const inDomain = (d: readonly [number, number]) => known.every((v) => v >= d[0] && v <= d[1]);\n const baseDomain: readonly [number, number] | null = yDomain ?? (pctScale !== null && inDomain([0, pctScale]) ? [0, pctScale] : null);\n const yAxis = axisTicks(\n Math.min(0, baseDomain?.[0] ?? 0, ...known),\n Math.max(0, baseDomain?.[1] ?? 0, ...known, threshold?.value ?? 0),\n { count: 4, integer: known.length > 0 && allIntegers(known), format: formatYProp },\n );\n const ticksY = yAxis.ticks;\n const yMin = ticksY[0]!;\n const yMax = ticksY[ticksY.length - 1]!;\n const padL = tickGutter(yAxis.labels, 28, 64, textScale);\n const plotH = height - PAD_T - PAD_B;\n const ys = linearScale(yMin, yMax, PAD_T + plotH, PAD_T);\n\n // Direct end labels (series names at each line's last point), dodged so\n // two lines ending on the same value (\"Struggles\" and \"Wins\" both at 3)\n // never print over each other. If they cannot all fit, the legend alone\n // names the series. Decided before the x scale: the gutter they need is\n // what plotW is measured against.\n const endLabelW = !stacked && series.length <= 4\n ? Math.max(0, ...series.map((s) => s.label.length)) * END_LABEL_CH * textScale + 6\n : 0;\n const endPoints = series.flatMap((s, si) => {\n for (let r = rows.length - 1; r >= 0; r--) {\n const v = rows[r]!.values[si];\n if (v !== null && v !== undefined) return [{ key: s.id, y: ys(v) }];\n }\n return [];\n });\n const dodged = endLabelW > 0 && endLabelW <= END_LABEL_MAX && width >= 420\n ? dodgeLabels(endPoints, END_LABEL_GAP_Y * textScale, PAD_T, PAD_T + plotH)\n : null;\n const showEndLabels = dodged !== null && endPoints.length > 0;\n const padR = PAD_R + (showEndLabels ? endLabelW : 0);\n const plotW = Math.max(40, width - padL - padR);\n\n const rawMin = rows.length ? rows[0]!.x : 0;\n const rawMax = rows.length ? rows[rows.length - 1]!.x : 1;\n const timeAxis = isTimeAxis(rows.map((r) => r.x));\n // A burst of readings seconds apart is widened to MIN_TIME_SPAN_MS around\n // itself, not stretched edge to edge (a lone point stays centred as before).\n const [xMin, xMax] = timeAxis && rawMax > rawMin ? ensureSpan(rawMin, rawMax, MIN_TIME_SPAN_MS) : [rawMin, rawMax];\n const xs = linearScale(xMin, xMax, padL, padL + plotW);\n\n // ── geometry ───────────────────────────────────────────────────────────\n // Recomputed per render on purpose: the scales depend on the measured width.\n const layers = (() => {\n if (stacked) {\n const acc = rows.map(() => 0);\n return series.map((_, si) => {\n const top = rows.map((r, ri) => {\n if (r.total === null) return { x: r.x, y: null as number | null, base: null as number | null };\n const base = acc[ri]!;\n acc[ri] = base + (r.values[si] ?? 0);\n return { x: r.x, y: acc[ri]!, base };\n });\n const runs = splitRuns(top.map((p) => ({ x: p.x, y: p.y })));\n return runs.map((run) => {\n const topPx: XY[] = run.map((p) => ({ x: xs(p.x), y: ys(p.y) }));\n const bottomPx: XY[] = run.map((p) => {\n const src = top.find((t) => t.x === p.x)!;\n return { x: xs(p.x), y: ys(src.base ?? 0) };\n });\n return { top: topPx, bottom: bottomPx };\n });\n });\n }\n return series.map((_, si) => {\n const runs = splitRuns(rows.map((r) => ({ x: r.x, y: r.values[si] ?? null })));\n return runs.map((run) => {\n const topPx = run.map((p) => ({ x: xs(p.x), y: ys(p.y) }));\n const bottomPx = run.map((p) => ({ x: xs(p.x), y: ys(Math.max(yMin, 0)) }));\n return { top: topPx, bottom: bottomPx };\n });\n });\n })();\n\n const xTickIdx = thinIndexes(rows.length, Math.max(2, Math.floor(plotW / 84)));\n // Collision-free x labels: the last point outranks the first, and both\n // outrank the interior ticks, which are simply dropped when they collide.\n // On a time axis the labels walk one shared detail ladder (caller's format\n // → shorter date/time; clock time only inside one day) until the ends fit.\n const ladder = timeAxis\n ? timeLabelLadder(rawMin, rawMax, formatXProp, xTickIdx.map((i) => rows[i]!.x))\n : [formatX];\n const xLabels = layoutAxisLabels(\n xTickIdx.map((i, n) => {\n const px = xs(rows[i]!.x);\n const isFirst = n === 0;\n const isLast = n === xTickIdx.length - 1;\n return {\n key: String(i),\n x: px,\n anchor: rows.length === 1 ? 'middle' as const : isFirst && px <= padL + 0.5 ? 'start' as const : isLast && px >= padL + plotW - 0.5 ? 'end' as const : 'middle' as const,\n priority: isLast ? 3 : isFirst ? 2 : 1,\n required: isFirst || isLast,\n variants: ladder.map((f) => f(rows[i]!.x)),\n };\n }),\n { min: padL, max: padL + plotW, charPx: labelCharPx(textScale) },\n );\n\n function indexAt(clientX: number): number | null {\n const el = wrapRef.current;\n if (!el || rows.length === 0) return null;\n const rect = el.getBoundingClientRect();\n const px = clientX - rect.left;\n let best = 0;\n let bestD = Infinity;\n rows.forEach((r, i) => {\n const d = Math.abs(xs(r.x) - px);\n if (d < bestD) { bestD = d; best = i; }\n });\n return best;\n }\n\n function onKey(e: KeyboardEvent<HTMLDivElement>): void {\n if (rows.length === 0) return;\n const cur = active ?? rows.length - 1;\n const next = e.key === 'ArrowLeft' ? cur - 1 : e.key === 'ArrowRight' ? cur + 1 : e.key === 'Home' ? 0 : e.key === 'End' ? rows.length - 1 : null;\n if (next === null) return;\n e.preventDefault();\n setActive(Math.max(0, Math.min(rows.length - 1, next)));\n }\n\n const activeRow = active !== null ? rows[active] : undefined;\n const latest = [...rows].reverse().find((r) => r.values.some((v) => v !== null));\n const summary = ariaLabel ?? (rows.length\n ? `${title}: ${rows.length} points from ${formatX(rawMin)} to ${formatX(rawMax)}.` +\n (latest ? ` Latest ${formatX(latest.x)}: ${series.map((s, i) => `${s.label} ${latest.values[i] === null ? 'no data' : formatY(latest.values[i]!)}`).join(', ')}.` : '')\n : `${title}: no data.`);\n\n const columns: TableColumn<Row>[] = [\n { key: 'x', label: 'When', render: (r) => formatX(r.x) },\n ...series.map((s, i) => ({\n key: s.id,\n label: s.label,\n numeric: true,\n render: (r: Row) => (r.values[i] === null ? '—' : formatY(r.values[i]!)),\n })),\n ...(stacked && series.length > 1\n ? [{ key: '__total', label: 'Total', numeric: true, render: (r: Row) => (r.total === null ? '—' : formatY(r.total)) }]\n : []),\n ];\n\n return (\n <ChartFrame\n title={title}\n description={description}\n caveat={caveat}\n status={resolvedStatus}\n table={<TableView caption={title} columns={columns} rows={rows} rowKey={(r) => String(r.x)} />}\n footer={\n <ChartLegend\n items={series.map((s, i) => ({ label: s.label, color: colors[i], kind: stacked ? 'swatch' : 'line' }))}\n />\n }\n >\n <div\n ref={wrapRef}\n className={`${plot.plotWrap} ${plot.focusable}`}\n tabIndex={0}\n role=\"group\"\n aria-label={`${title}. Use the left and right arrow keys to read values.`}\n aria-describedby={liveId}\n onFocus={() => setActive((a) => a ?? (rows.length ? rows.length - 1 : null))}\n onBlur={() => setActive(null)}\n onKeyDown={onKey}\n >\n <svg\n className={plot.svg}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n role=\"img\"\n aria-label={summary}\n onPointerMove={(e: PointerEvent<SVGSVGElement>) => setActive(indexAt(e.clientX))}\n onPointerLeave={() => setActive(null)}\n >\n {ticksY.map((t, i) => (\n <g key={t}>\n <line className={plot.grid} x1={padL} x2={padL + plotW} y1={ys(t)} y2={ys(t)} />\n <text className={plot.tick} x={padL - 6} y={ys(t)} dy=\"0.32em\" textAnchor=\"end\">{yAxis.labels[i]}</text>\n </g>\n ))}\n <line className={plot.axis} x1={padL} x2={padL + plotW} y1={ys(Math.max(yMin, 0))} y2={ys(Math.max(yMin, 0))} />\n {xLabels.map((l) => (\n <text key={l.key} data-axis-label={l.key} className={plot.tick} x={l.x} y={height - 8} textAnchor={l.anchor}>\n {l.text}\n </text>\n ))}\n\n {layers.map((runs, si) => (\n <g key={series[si]!.id} data-series={series[si]!.id}>\n {runs.map((run, ri) => (\n <path\n key={`a${ri}`}\n d={areaPath(run.top, run.bottom)}\n fill={colors[si]}\n className={stacked ? undefined : plot.wash}\n opacity={stacked ? 0.85 : undefined}\n stroke={stacked ? 'var(--chart-surface)' : undefined}\n strokeWidth={stacked ? 2 : undefined}\n />\n ))}\n {!stacked\n ? runs.map((run, ri) =>\n run.top.length === 1 ? (\n <circle key={`p${ri}`} cx={run.top[0]!.x} cy={run.top[0]!.y} r={3} fill={colors[si]} />\n ) : (\n <path key={`l${ri}`} d={linePath(run.top)} stroke={colors[si]} className={plot.line} />\n ),\n )\n : null}\n {showEndLabels && runs.length ? (() => {\n const last = runs[runs.length - 1]!.top;\n const end = last[last.length - 1]!;\n return (\n <text data-end-label={series[si]!.id} className={plot.label} x={end.x + 6} y={dodged!.get(series[si]!.id) ?? end.y} dy=\"0.32em\">{series[si]!.label}</text>\n );\n })() : null}\n </g>\n ))}\n\n {threshold ? (\n <g>\n <line className={plot.reference} x1={padL} x2={padL + plotW} y1={ys(threshold.value)} y2={ys(threshold.value)} />\n <text className={plot.tick} x={padL + plotW} y={ys(threshold.value) - 4} textAnchor=\"end\">\n {threshold.label} · {formatY(threshold.value)}\n </text>\n </g>\n ) : null}\n\n {activeRow ? (\n <g>\n <line className={plot.crosshair} x1={xs(activeRow.x)} x2={xs(activeRow.x)} y1={PAD_T} y2={PAD_T + plotH} />\n {series.map((s, si) => {\n const v = stacked\n ? (activeRow.total === null ? null : activeRow.values.slice(0, si + 1).reduce<number>((a, b) => a + (b ?? 0), 0))\n : activeRow.values[si];\n return v === null || v === undefined ? null : (\n <circle key={s.id} className={plot.marker} cx={xs(activeRow.x)} cy={ys(v)} r={4} fill={colors[si]} />\n );\n })}\n </g>\n ) : null}\n\n </svg>\n <span id={liveId} className={plot.srOnly} aria-live=\"polite\">\n {activeRow\n ? `${formatX(activeRow.x)}: ${series.map((s, i) => `${s.label} ${activeRow.values[i] === null ? 'no data' : formatY(activeRow.values[i]!)}`).join(', ')}`\n : ''}\n </span>\n {activeRow ? (\n <ChartTooltip\n left={clampTooltipLeft(xs(activeRow.x), width)}\n top={PAD_T}\n title={formatX(activeRow.x)}\n rows={[\n ...series.map((s, i) => ({\n key: s.id,\n label: s.label,\n value: activeRow.values[i] === null ? null : formatY(activeRow.values[i]!),\n color: colors[i],\n })),\n ...(stacked && series.length > 1\n ? [{ key: '__t', label: 'Total', value: activeRow.total === null ? null : formatY(activeRow.total) }]\n : []),\n ]}\n />\n ) : null}\n </div>\n </ChartFrame>\n );\n}\n"],"mappings":"wYA0EM,EAAQ,GACR,GAAQ,GACR,GAAQ,GAKR,GAAe,IACf,EAAgB,IAEhB,EAAkB,GAQxB,SAAgB,EAAU,CACxB,QACA,cACA,SACA,SACA,SACA,UAAU,GACV,SAAS,IACT,MAAO,GACP,QAAS,EACT,QAAS,EACT,YACA,WACA,cACiB,CACjB,IAAM,EAAU,GAAe,EACzB,EAAU,GAAe,GACzB,GAAA,EAAU,EAAA,OAAA,CAAuB,IAAI,EACrC,EAAQ,GAAc,EAAS,EAAU,EACzC,EAAY,EAAa,EACzB,CAAC,EAAQ,IAAA,EAAa,EAAA,SAAA,CAAwB,IAAI,EAClD,GAAA,EAAS,EAAA,MAAA,CAAM,EAEf,EAAS,EAAO,KAAK,EAAG,IAAM,EAAE,OAAS,GAAY,CAAC,CAAC,EAEvD,GAAA,EAAc,EAAA,QAAA,KAAc,CAGhC,IAAM,EAAM,EAAO,QAAS,GAAM,EAAE,OAAO,IAAK,GAAM,EAAE,CAAC,CAAC,EACpD,EAAO,GAAQ,CAAG,EAClB,EAAK,MAAM,KAAK,IAAI,IAAI,EAAI,OAAO,CAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAG,IAAM,EAAI,CAAC,EAC/D,EAAS,EAAO,IAAK,GAAM,IAAI,IAAI,EAAE,OAAO,IAAK,GAAM,CAAC,EAAE,EAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EACzE,OAAO,EAAG,IAAK,GAAM,CACnB,IAAM,EAAS,EAAO,IAAK,GAAO,EAAE,IAAI,CAAC,EAAI,EAAE,IAAI,CAAC,EAAK,IAAK,EAE9D,MAAO,CAAE,IAAG,SAAQ,MADN,EAAO,KAAM,GAAM,IAAM,IAAI,EAAI,KAAO,EAAO,QAAgB,EAAG,IAAM,GAAK,GAAK,GAAI,CAAC,CAC3E,CAC5B,CAAC,CACH,EAAG,CAAC,CAAM,CAAC,EAEL,GAAU,EAAK,KAAM,GAAM,EAAE,OAAO,KAAM,GAAM,IAAM,IAAI,CAAC,EAC3D,GAA8B,IAAW,GAAU,CAAE,KAAM,OAAQ,EAAI,CAAE,KAAM,OAAQ,GAGvF,EAAQ,EACV,EAAK,IAAK,GAAM,EAAE,KAAK,CAAC,CAAC,OAAQ,GAAmB,IAAM,IAAI,EAC9D,EAAK,QAAS,GAAM,EAAE,MAAM,CAAC,CAAC,OAAQ,GAAmB,IAAM,IAAI,EACjE,EAAW,EAAc,EAAa,CAAW,EAAI,KAErD,EAA+C,KAAY,IAAa,OAD5D,GAAiC,EAAM,MAAO,GAAM,GAAK,EAAE,IAAM,GAAK,EAAE,EAAE,EACN,CAAS,CAAC,EAAG,CAAQ,CAAC,EAAI,CAAC,EAAG,CAAQ,EAAI,MAC1H,EAAQ,GACZ,KAAK,IAAI,EAAG,IAAa,IAAM,EAAG,GAAG,CAAK,EAC1C,KAAK,IAAI,EAAG,IAAa,IAAM,EAAG,GAAG,EAAO,GAAW,OAAS,CAAC,EACjE,CAAE,MAAO,EAAG,QAAS,EAAM,OAAS,GAAK,GAAY,CAAK,EAAG,OAAQ,CAAY,CACnF,EACM,EAAS,EAAM,MACf,EAAO,EAAO,GACd,GAAO,EAAO,EAAO,OAAS,GAC9B,EAAO,GAAW,EAAM,OAAQ,GAAI,GAAI,CAAS,EACjD,EAAQ,EAAS,EAAQ,GACzB,EAAK,EAAY,EAAM,GAAM,EAAQ,EAAO,CAAK,EAOjD,EAAY,CAAC,GAAW,EAAO,QAAU,EAC3C,KAAK,IAAI,EAAG,GAAG,EAAO,IAAK,GAAM,EAAE,MAAM,MAAM,CAAC,EAAI,GAAe,EAAY,EAC/E,EACE,EAAY,EAAO,SAAS,EAAG,IAAO,CAC1C,IAAK,IAAI,EAAI,EAAK,OAAS,EAAG,GAAK,EAAG,IAAK,CACzC,IAAM,EAAI,EAAK,EAAE,CAAE,OAAO,GAC1B,GAAI,GAAM,KAAyB,MAAO,CAAC,CAAE,IAAK,EAAE,GAAI,EAAG,EAAG,CAAC,CAAE,CAAC,CACpE,CACA,MAAO,CAAC,CACV,CAAC,EACK,EAAS,EAAY,GAAK,GAAa,GAAiB,GAAS,IACnE,GAAY,EAAW,EAAkB,EAAW,EAAO,EAAQ,CAAK,EACxE,KACE,EAAgB,IAAW,MAAQ,EAAU,OAAS,EACtD,GAAO,IAAS,EAAgB,EAAY,GAC5C,EAAQ,KAAK,IAAI,GAAI,EAAQ,EAAO,EAAI,EAExC,EAAS,EAAK,OAAS,EAAK,EAAE,CAAE,EAAI,EACpC,EAAS,EAAK,OAAS,EAAK,EAAK,OAAS,EAAE,CAAE,EAAI,EAClD,EAAW,EAAW,EAAK,IAAK,GAAM,EAAE,CAAC,CAAC,EAG1C,CAAC,GAAM,IAAQ,GAAY,EAAS,EAAS,GAAW,EAAQ,EAAQ,EAAgB,EAAI,CAAC,EAAQ,CAAM,EAC3G,EAAK,EAAY,GAAM,GAAM,EAAM,EAAO,CAAK,EAI/C,QAAgB,CACpB,GAAI,EAAS,CACX,IAAM,EAAM,EAAK,QAAU,CAAC,EAC5B,OAAO,EAAO,KAAK,EAAG,IAAO,CAC3B,IAAM,EAAM,EAAK,KAAK,EAAG,IAAO,CAC9B,GAAI,EAAE,QAAU,KAAM,MAAO,CAAE,EAAG,EAAE,EAAG,EAAG,KAAuB,KAAM,IAAsB,EAC7F,IAAM,EAAO,EAAI,GAEjB,MADA,GAAI,GAAM,GAAQ,EAAE,OAAO,IAAO,GAC3B,CAAE,EAAG,EAAE,EAAG,EAAG,EAAI,GAAM,MAAK,CACrC,CAAC,EAED,OADa,EAAU,EAAI,IAAK,IAAO,CAAE,EAAG,EAAE,EAAG,EAAG,EAAE,CAAE,EAAE,CACnD,CAAA,CAAK,IAAK,IAMR,CAAE,IALW,EAAI,IAAK,IAAO,CAAE,EAAG,EAAG,EAAE,CAAC,EAAG,EAAG,EAAG,EAAE,CAAC,CAAE,EAK/C,EAAO,OAJE,EAAI,IAAK,GAAM,CACpC,IAAM,EAAM,EAAI,KAAM,GAAM,EAAE,IAAM,EAAE,CAAC,EACvC,MAAO,CAAE,EAAG,EAAG,EAAE,CAAC,EAAG,EAAG,EAAG,EAAI,MAAQ,CAAC,CAAE,CAC5C,CAC6B,CAAS,EACvC,CACH,CAAC,CACH,CACA,OAAO,EAAO,KAAK,EAAG,IACP,EAAU,EAAK,IAAK,IAAO,CAAE,EAAG,EAAE,EAAG,EAAG,EAAE,OAAO,IAAO,IAAK,EAAE,CACrE,CAAA,CAAK,IAAK,IAGR,CAAE,IAFK,EAAI,IAAK,IAAO,CAAE,EAAG,EAAG,EAAE,CAAC,EAAG,EAAG,EAAG,EAAE,CAAC,CAAE,EAEzC,EAAO,OADJ,EAAI,IAAK,IAAO,CAAE,EAAG,EAAG,EAAE,CAAC,EAAG,EAAG,EAAG,KAAK,IAAI,EAAM,CAAC,CAAC,CAAE,EAC3C,CAAS,EACvC,CACF,CACH,EAAA,CAAG,EAEG,EAAW,GAAY,EAAK,OAAQ,KAAK,IAAI,EAAG,KAAK,MAAM,EAAQ,EAAE,CAAC,CAAC,EAKvE,GAAS,EACX,GAAgB,EAAQ,EAAQ,EAAa,EAAS,IAAK,GAAM,EAAK,EAAE,CAAE,CAAC,CAAC,EAC5E,CAAC,CAAO,EACN,GAAU,GACd,EAAS,KAAK,EAAG,IAAM,CACrB,IAAM,EAAK,EAAG,EAAK,EAAE,CAAE,CAAC,EAClB,EAAU,IAAM,EAChB,EAAS,IAAM,EAAS,OAAS,EACvC,MAAO,CACL,IAAK,OAAO,CAAC,EACb,EAAG,EACH,OAAQ,EAAK,SAAW,EAAI,SAAoB,GAAW,GAAM,EAAO,GAAM,QAAmB,GAAU,GAAM,EAAO,EAAQ,GAAM,MAAiB,SACvJ,SAAU,EAAS,EAAI,EAAU,EAAI,EACrC,SAAU,GAAW,EACrB,SAAU,GAAO,IAAK,GAAM,EAAE,EAAK,EAAE,CAAE,CAAC,CAAC,CAC3C,CACF,CAAC,EACD,CAAE,IAAK,EAAM,IAAK,EAAO,EAAO,OAAQ,GAAY,CAAS,CAAE,CACjE,EAEA,SAAS,GAAQ,EAAgC,CAC/C,IAAM,EAAK,EAAQ,QACnB,GAAI,CAAC,GAAM,EAAK,SAAW,EAAG,OAAO,KAErC,IAAM,EAAK,EADE,EAAG,sBACK,CAAA,CAAK,KACtB,EAAO,EACP,EAAQ,IAKZ,OAJA,EAAK,SAAS,EAAG,IAAM,CACrB,IAAM,EAAI,KAAK,IAAI,EAAG,EAAE,CAAC,EAAI,CAAE,EAC3B,EAAI,IAAS,EAAQ,EAAG,EAAO,EACrC,CAAC,EACM,CACT,CAEA,SAAS,GAAM,EAAwC,CACrD,GAAI,EAAK,SAAW,EAAG,OACvB,IAAM,EAAM,GAAU,EAAK,OAAS,EAC9B,EAAO,EAAE,MAAQ,YAAc,EAAM,EAAI,EAAE,MAAQ,aAAe,EAAM,EAAI,EAAE,MAAQ,OAAS,EAAI,EAAE,MAAQ,MAAQ,EAAK,OAAS,EAAI,KACzI,IAAS,OACb,EAAE,eAAe,EACjB,EAAU,KAAK,IAAI,EAAG,KAAK,IAAI,EAAK,OAAS,EAAG,CAAI,CAAC,CAAC,EACxD,CAEA,IAAM,EAAY,IAAW,KAAsB,IAAA,GAAf,EAAK,GACnC,EAAS,CAAC,GAAG,CAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAM,GAAM,EAAE,OAAO,KAAM,GAAM,IAAM,IAAI,CAAC,EACzE,GAAU,KAAc,EAAK,OAC/B,GAAG,EAAM,IAAI,EAAK,OAAO,eAAe,EAAQ,CAAM,EAAE,MAAM,EAAQ,CAAM,EAAE,IAC7E,EAAS,WAAW,EAAQ,EAAO,CAAC,EAAE,IAAI,EAAO,KAAK,EAAG,IAAM,GAAG,EAAE,MAAM,GAAG,EAAO,OAAO,KAAO,KAAO,UAAY,EAAQ,EAAO,OAAO,EAAG,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,GAAK,IACpK,GAAG,EAAM,aAEP,GAA8B,CAClC,CAAE,IAAK,IAAK,MAAO,OAAQ,OAAS,GAAM,EAAQ,EAAE,CAAC,CAAE,EACvD,GAAG,EAAO,KAAK,EAAG,KAAO,CACvB,IAAK,EAAE,GACP,MAAO,EAAE,MACT,QAAS,GACT,OAAS,GAAY,EAAE,OAAO,KAAO,KAAO,IAAM,EAAQ,EAAE,OAAO,EAAG,CACxE,EAAE,EACF,GAAI,GAAW,EAAO,OAAS,EAC3B,CAAC,CAAE,IAAK,UAAW,MAAO,QAAS,QAAS,GAAM,OAAS,GAAY,EAAE,QAAU,KAAO,IAAM,EAAQ,EAAE,KAAK,CAAG,CAAC,EACnH,CAAC,CACP,EAEA,OACE,EAAA,EAAA,IAAA,CAAC,GAAD,CACS,QACM,cACL,SACR,OAAQ,GACR,OAAO,EAAA,EAAA,IAAA,CAAC,GAAD,CAAW,QAAS,EAAgB,WAAe,OAAM,OAAS,GAAM,OAAO,EAAE,CAAC,CAAI,CAAA,EAC7F,QACE,EAAA,EAAA,IAAA,CAAC,GAAD,CACE,MAAO,EAAO,KAAK,EAAG,KAAO,CAAE,MAAO,EAAE,MAAO,MAAO,EAAO,GAAI,KAAM,EAAU,SAAW,MAAO,EAAE,CACtG,CAAA,EAGH,UAAA,EAAA,EAAA,KAAA,CAAC,MAAD,CACE,IAAK,EACL,UAAW,GAAG,EAAK,SAAS,GAAG,EAAK,YACpC,SAAU,EACV,KAAK,QACL,aAAY,GAAG,EAAM,qDACrB,mBAAkB,EAClB,YAAe,EAAW,GAAM,IAAM,EAAK,OAAS,EAAK,OAAS,EAAI,KAAK,EAC3E,WAAc,EAAU,IAAI,EAC5B,UAAW,GATb,SAAA,EAWE,EAAA,EAAA,KAAA,CAAC,MAAD,CACE,UAAW,EAAK,IACT,QACC,SACR,QAAS,OAAO,EAAM,GAAG,IACzB,KAAK,MACL,aAAY,GACZ,cAAgB,GAAmC,EAAU,GAAQ,EAAE,OAAO,CAAC,EAC/E,mBAAsB,EAAU,IAAI,EARtC,SAAA,CAUG,EAAO,KAAK,EAAG,KACd,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAK,KAAM,GAAI,EAAM,GAAI,EAAO,EAAO,GAAI,EAAG,CAAC,EAAG,GAAI,EAAG,CAAC,CAAI,CAAA,GAC/E,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAK,KAAM,EAAG,EAAO,EAAG,EAAG,EAAG,CAAC,EAAG,GAAG,SAAS,WAAW,MAAO,SAAA,EAAM,OAAO,EAAS,CAAA,CACtG,CAAA,EAHK,CAGL,CACJ,GACD,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAK,KAAM,GAAI,EAAM,GAAI,EAAO,EAAO,GAAI,EAAG,KAAK,IAAI,EAAM,CAAC,CAAC,EAAG,GAAI,EAAG,KAAK,IAAI,EAAM,CAAC,CAAC,CAAI,CAAA,EAC9G,GAAQ,IAAK,IACZ,EAAA,EAAA,IAAA,CAAC,OAAD,CAAkB,kBAAiB,EAAE,IAAK,UAAW,EAAK,KAAM,EAAG,EAAE,EAAG,EAAG,EAAS,EAAG,WAAY,EAAE,OAClG,SAAA,EAAE,IACC,EAFK,EAAE,GAEP,CACP,EAEA,GAAO,KAAK,EAAM,KACjB,EAAA,EAAA,KAAA,CAAC,IAAD,CAAwB,cAAa,EAAO,EAAG,CAAE,GAAjD,SAAA,CACG,EAAK,KAAK,EAAK,KACd,EAAA,EAAA,IAAA,CAAC,OAAD,CAEE,EAAG,GAAS,EAAI,IAAK,EAAI,MAAM,EAC/B,KAAM,EAAO,GACb,UAAW,EAAU,IAAA,GAAY,EAAK,KACtC,QAAS,EAAU,IAAO,IAAA,GAC1B,OAAQ,EAAU,uBAAyB,IAAA,GAC3C,YAAa,EAAU,EAAI,IAAA,EAC5B,EAPM,IAAI,GAOV,CACF,EACC,EAQE,KAPA,EAAK,KAAK,EAAK,IACb,EAAI,IAAI,SAAW,GACjB,EAAA,EAAA,IAAA,CAAC,SAAD,CAAuB,GAAI,EAAI,IAAI,EAAE,CAAE,EAAG,GAAI,EAAI,IAAI,EAAE,CAAE,EAAG,EAAG,EAAG,KAAM,EAAO,EAAM,EAAzE,IAAI,GAAqE,GAEtF,EAAA,EAAA,IAAA,CAAC,OAAD,CAAqB,EAAG,EAAS,EAAI,GAAG,EAAG,OAAQ,EAAO,GAAK,UAAW,EAAK,IAAO,EAA3E,IAAI,GAAuE,CAE1F,EAEH,GAAiB,EAAK,YAAgB,CACrC,IAAM,EAAO,EAAK,EAAK,OAAS,EAAE,CAAE,IAC9B,EAAM,EAAK,EAAK,OAAS,GAC/B,OACE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,iBAAgB,EAAO,EAAG,CAAE,GAAI,UAAW,EAAK,MAAO,EAAG,EAAI,EAAI,EAAG,EAAG,EAAQ,IAAI,EAAO,EAAG,CAAE,EAAE,GAAK,EAAI,EAAG,GAAG,SAAU,SAAA,EAAO,EAAG,CAAE,KAAY,CAAA,CAE7J,EAAA,CAAG,EAAI,IACN,CA5BK,EAAA,EAAO,EAAG,CAAE,EA4BjB,CACJ,EAEA,GACC,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAK,UAAW,GAAI,EAAM,GAAI,EAAO,EAAO,GAAI,EAAG,EAAU,KAAK,EAAG,GAAI,EAAG,EAAU,KAAK,CAAI,CAAA,GAChH,EAAA,EAAA,KAAA,CAAC,OAAD,CAAM,UAAW,EAAK,KAAM,EAAG,EAAO,EAAO,EAAG,EAAG,EAAU,KAAK,EAAI,EAAG,WAAW,MAApF,SAAA,CACG,EAAU,MAAM,MAAI,EAAQ,EAAU,KAAK,CACxC,CACL,CAAA,CAAA,CAAA,CAAA,EACD,KAEH,GACC,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,UAAW,EAAK,UAAW,GAAI,EAAG,EAAU,CAAC,EAAG,GAAI,EAAG,EAAU,CAAC,EAAG,GAAI,EAAO,GAAI,EAAQ,CAAQ,CAAA,EACzG,EAAO,KAAK,EAAG,IAAO,CACrB,IAAM,EAAI,EACL,EAAU,QAAU,KAAO,KAAO,EAAU,OAAO,MAAM,EAAG,EAAK,CAAC,CAAC,CAAC,QAAgB,EAAG,IAAM,GAAK,GAAK,GAAI,CAAC,EAC7G,EAAU,OAAO,GACrB,OAAO,GAAM,KAA0B,MACrC,EAAA,EAAA,IAAA,CAAC,SAAD,CAAmB,UAAW,EAAK,OAAQ,GAAI,EAAG,EAAU,CAAC,EAAG,GAAI,EAAG,CAAC,EAAG,EAAG,EAAG,KAAM,EAAO,EAAM,EAAvF,EAAE,EAAqF,CAExG,CAAC,CACA,CAAA,CAAA,EACD,IAED,KACL,EAAA,EAAA,IAAA,CAAC,OAAD,CAAM,GAAI,EAAQ,UAAW,EAAK,OAAQ,YAAU,SACjD,SAAA,EACG,GAAG,EAAQ,EAAU,CAAC,EAAE,IAAI,EAAO,KAAK,EAAG,IAAM,GAAG,EAAE,MAAM,GAAG,EAAU,OAAO,KAAO,KAAO,UAAY,EAAQ,EAAU,OAAO,EAAG,GAAG,CAAC,CAAC,KAAK,IAAI,IACpJ,EACA,CAAA,EACL,GACC,EAAA,EAAA,IAAA,CAAC,GAAD,CACE,KAAM,GAAiB,EAAG,EAAU,CAAC,EAAG,CAAK,EAC7C,IAAK,EACL,MAAO,EAAQ,EAAU,CAAC,EAC1B,KAAM,CACJ,GAAG,EAAO,KAAK,EAAG,KAAO,CACvB,IAAK,EAAE,GACP,MAAO,EAAE,MACT,MAAO,EAAU,OAAO,KAAO,KAAO,KAAO,EAAQ,EAAU,OAAO,EAAG,EACzE,MAAO,EAAO,EAChB,EAAE,EACF,GAAI,GAAW,EAAO,OAAS,EAC3B,CAAC,CAAE,IAAK,MAAO,MAAO,QAAS,MAAO,EAAU,QAAU,KAAO,KAAO,EAAQ,EAAU,KAAK,CAAE,CAAC,EAClG,CAAC,CACP,CACD,CAAA,EACC,IACD,GACK,CAAA,CAEhB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
:root{--chart-series-1:var(--data-cat-1);--chart-series-2:var(--data-cat-2);--chart-series-3:var(--data-cat-3);--chart-series-4:var(--data-cat-4);--chart-series-5:var(--data-cat-5);--chart-series-6:var(--data-cat-6);--chart-neutral:var(--status-neutral-solid);--chart-seq-1:var(--data-seq-1);--chart-seq-2:var(--data-seq-2);--chart-seq-3:var(--data-seq-3);--chart-seq-4:var(--data-seq-4);--chart-seq-5:var(--data-seq-5);--chart-seq-6:var(--data-seq-6);--chart-seq-7:var(--data-seq-7);--chart-sequential:var(--chart-seq-5);--chart-sequential-soft:var(--chart-seq-3);--chart-diverging-pos:var(--chart-seq-5);--chart-diverging-neg:var(--status-danger-solid);--chart-diverging-mid:var(--border-strong);--chart-unknown:var(--status-unknown-solid);--chart-unknown-hatch:repeating-linear-gradient(135deg, var(--chart-unknown) 0 1px, transparent 1px 5px);--chart-queued-outline:var(--status-neutral-solid);--chart-grid:var(--border-subtle);--chart-axis:var(--border-strong);--chart-surface:var(--bg-surface);--chart-tooltip-bg:var(--bg-surface-raised);--chart-tooltip-border:var(--border-default);--chart-heat-0:var(--chart-grid);--chart-heat-1:var(--chart-seq-2);--chart-heat-2:var(--chart-seq-3);--chart-heat-3:var(--chart-seq-5);--chart-heat-4:var(--chart-seq-7);--chart-track:var(--chart-seq-1);--chart-quantity-ink:var(--gray-950)}._table_x2yvy_1{border-collapse:collapse;width:100%;font-size:var(--text-xs-size)}._table_x2yvy_1 th,._table_x2yvy_1 td{text-align:left;padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--border-subtle)}._table_x2yvy_1 th{color:var(--text-tertiary);font-weight:var(--font-weight-medium);text-transform:uppercase;letter-spacing:.04em;font-size:var(--text-xs-size)}._numeric_x2yvy_22{text-align:right;font-variant-numeric:tabular-nums}._empty_x2yvy_27{color:var(--text-tertiary);text-align:center}._plotWrap_1cs0k_3{width:100%;min-width:0;position:relative}._svg_1cs0k_9{max-width:100%;display:block;overflow:visible}._grid_1cs0k_15{stroke:var(--chart-grid);stroke-width:1px;shape-rendering:crispedges}._axis_1cs0k_21{stroke:var(--chart-axis);stroke-width:1px;shape-rendering:crispedges}._tick_1cs0k_27{font-family:var(--font-ui);font-size:var(--text-xs-size);fill:var(--text-tertiary);font-variant-numeric:tabular-nums}._label_1cs0k_34{font-family:var(--font-ui);font-size:var(--text-xs-size);fill:var(--text-secondary)}._labelStrong_1cs0k_40{font-family:var(--font-ui);font-size:var(--text-xs-size);font-weight:var(--font-weight-medium);fill:var(--text-primary)}._line_1cs0k_47{fill:none;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}._wash_1cs0k_54{stroke:none;opacity:.1}._reference_1cs0k_59{fill:none;stroke:var(--text-tertiary);stroke-width:1px;stroke-dasharray:4 3}._projection_1cs0k_66{fill:none;stroke-width:2px;stroke-dasharray:5 4;stroke-linecap:round}._marker_1cs0k_73{stroke:var(--chart-surface);stroke-width:2px}._crosshair_1cs0k_78{stroke:var(--chart-axis);stroke-width:1px;pointer-events:none}._hit_1cs0k_84{fill:#0000;cursor:default}._hit_1cs0k_84:focus{outline:none}._hit_1cs0k_84:focus-visible{stroke:var(--border-focus);stroke-width:2px}._focusable_1cs0k_98:focus{outline:none}._focusable_1cs0k_98:focus-visible{outline:2px solid var(--border-focus);outline-offset:2px;border-radius:var(--radius-sm)}._track_1cs0k_108{fill:var(--chart-track)}._trackEmpty_1cs0k_122{fill:var(--meter-track)}._noData_1cs0k_126{fill:none;stroke:var(--chart-grid);stroke-width:1px;stroke-dasharray:2 2}._tooltip_1cs0k_133{z-index:var(--z-dropdown);pointer-events:none;padding:var(--space-2);border:1px solid var(--chart-tooltip-border);border-radius:var(--radius-sm);background:var(--chart-tooltip-bg);box-shadow:var(--shadow-md);color:var(--text-primary);font-size:var(--text-xs-size);white-space:nowrap;position:absolute;transform:translate(-50%,calc(-100% - 8px))}._tooltipTitle_1cs0k_148{color:var(--text-tertiary);margin-bottom:var(--space-1)}._tooltipRow_1cs0k_153{align-items:center;gap:var(--space-2);display:flex}._tooltipKey_1cs0k_159{border-radius:2px;flex:none;width:8px;height:8px}._tooltipValue_1cs0k_166{padding-left:var(--space-3);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums;margin-left:auto}._tooltipMuted_1cs0k_173{color:var(--text-tertiary);font-style:italic}._legend_1cs0k_178{gap:var(--space-1) var(--space-3);margin:var(--space-2) 0 0;font-size:var(--text-xs-size);color:var(--text-secondary);flex-wrap:wrap;padding:0;list-style:none;display:flex}._legendItem_1cs0k_189{align-items:center;gap:var(--space-1);display:inline-flex}._swatch_1cs0k_195{border-radius:2px;flex:none;width:10px;height:10px}._swatchLine_1cs0k_202{flex:none;width:12px;height:2px}._swatchEmpty_1cs0k_208{border:1px dashed var(--chart-axis);border-radius:2px;flex:none;width:10px;height:10px}._note_1cs0k_216{margin:var(--space-2) 0 0;font-size:var(--text-xs-size);color:var(--text-tertiary)}._srOnly_1cs0k_222{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:no-preference){._animated_1cs0k_235{transition:opacity .12s}}._monogram_1cs0k_241{font-family:var(--font-display);font-size:var(--text-2xs-size);font-weight:var(--font-weight-semibold);fill:var(--text-secondary);color:var(--text-secondary)}._unknownMark_1cs0k_251{stroke:var(--chart-unknown);stroke-width:1px}._swatchHatch_1cs0k_257{border:1px solid var(--chart-unknown);background:var(--chart-unknown-hatch);border-radius:2px;flex:none;width:10px;height:10px}._halo_1cs0k_268{paint-order:stroke;stroke:var(--chart-surface);stroke-width:3px;stroke-linejoin:round}._frame_cmx6f_1{border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--bg-surface);min-width:0;padding:var(--card-pad,var(--space-4));margin:0}._header_cmx6f_11{justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-3);flex-wrap:nowrap;display:flex}._actions_cmx6f_23{align-items:center;gap:var(--space-2);flex:none;margin-left:auto;display:inline-flex}._menuWrap_cmx6f_31{display:inline-flex;position:relative}._more_cmx6f_37{width:calc(var(--control-h-xs,20px) + 4px);height:calc(var(--control-h-xs,20px) + 4px);border-radius:var(--radius-sm);color:var(--text-tertiary);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;display:inline-flex}._more_cmx6f_37:hover,._more_cmx6f_37[aria-expanded=true]{background:var(--bg-hover);color:var(--text-primary)}._more_cmx6f_37:focus-visible{outline:2px solid var(--border-focus);outline-offset:1px}._menu_cmx6f_31{top:calc(100% + var(--space-1));z-index:var(--z-dropdown);min-width:176px;padding:var(--space-1);border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-surface-raised);box-shadow:var(--shadow-menu);flex-direction:column;display:flex;position:absolute;right:0}._menuItem_cmx6f_78{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);color:var(--text-primary);font:inherit;font-size:var(--text-xs-size);line-height:var(--text-xs-line);text-align:left;cursor:pointer;background:0 0;border:0;display:flex}._menuItem_cmx6f_78:hover,._menuItem_cmx6f_78:focus-visible{background:var(--bg-hover);outline:none}._check_cmx6f_100{width:1em;color:var(--text-secondary)}._hint_cmx6f_105{padding:0 var(--space-1);border:1px solid var(--border-subtle);border-radius:var(--radius-xs,3px);color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-2xs-size);margin-left:auto}._heading_cmx6f_17{flex-direction:column;flex:auto;gap:2px;min-width:0;display:flex}._title_cmx6f_123{font-size:var(--text-sm-size);font-weight:var(--font-weight-semibold);color:var(--text-primary)}._description_cmx6f_129{font-size:var(--text-xs-size);color:var(--text-tertiary)}._plot_cmx6f_134{width:100%;min-width:0;position:relative}._table_cmx6f_140{max-height:360px;overflow:auto}._caveat_cmx6f_145{margin:0 0 var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--status-unknown-bg);color:var(--status-unknown-fg);font-size:var(--text-xs-size);line-height:var(--text-sm-line)}._state_cmx6f_155{padding:var(--space-6) var(--space-3);text-align:center;color:var(--text-tertiary);font-size:var(--text-sm-size);margin:0}._dark_cmx6f_163{gap:var(--space-1);flex-direction:column;align-items:center;display:flex}._darkTitle_cmx6f_170{color:var(--text-secondary);font-weight:var(--font-weight-semibold);margin:0}._darkBody_cmx6f_176{font-size:var(--text-xs-size);max-width:44ch;margin:0}._unknown_cmx6f_182{color:var(--status-unknown-fg)}
|