@forgeax/interface 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/NOTICE +9 -0
- package/README.md +111 -0
- package/dist/package/browser/App.css +192 -0
- package/dist/package/browser/App.d.ts +11 -0
- package/dist/package/browser/App.js +11 -0
- package/dist/package/browser/ApplicationDetachedShell.d.ts +13 -0
- package/dist/package/browser/ApplicationDetachedShell.js +10 -0
- package/dist/package/browser/ApplicationShell.d.ts +19 -0
- package/dist/package/browser/ApplicationShell.js +62 -0
- package/dist/package/browser/app-kit.d.ts +1 -0
- package/dist/package/browser/app-kit.js +4 -0
- package/dist/package/browser/appHostBootstrap.d.ts +16 -0
- package/dist/package/browser/appHostBootstrap.js +145 -0
- package/dist/package/browser/application.d.ts +35 -0
- package/dist/package/browser/application.js +64 -0
- package/dist/package/browser/assets/icons/agent-icon.png +0 -0
- package/dist/package/browser/assets/icons/at.svg +3 -0
- package/dist/package/browser/assets/icons/chevron-collapse.svg +3 -0
- package/dist/package/browser/assets/icons/chevron-expand.svg +3 -0
- package/dist/package/browser/assets/icons/chevron-up.svg +3 -0
- package/dist/package/browser/assets/icons/close-x.svg +3 -0
- package/dist/package/browser/assets/icons/close.svg +3 -0
- package/dist/package/browser/assets/icons/copy.svg +4 -0
- package/dist/package/browser/assets/icons/edit.svg +3 -0
- package/dist/package/browser/assets/icons/fullscreen.svg +3 -0
- package/dist/package/browser/assets/icons/pause.svg +4 -0
- package/dist/package/browser/assets/icons/play.svg +3 -0
- package/dist/package/browser/assets/icons/select.svg +3 -0
- package/dist/package/browser/assets/icons/sendMessage-enable.svg +4 -0
- package/dist/package/browser/assets/icons/sendMessage.svg +4 -0
- package/dist/package/browser/assets/icons/status-done.svg +11 -0
- package/dist/package/browser/assets/icons/status-running.svg +10 -0
- package/dist/package/browser/assets/icons/status-waiting.svg +10 -0
- package/dist/package/browser/assets/icons/tool-execute-script.svg +3 -0
- package/dist/package/browser/assets/icons/tool-other.svg +10 -0
- package/dist/package/browser/assets/icons/tool-read-file.svg +3 -0
- package/dist/package/browser/assets/icons/tool-resource-search.svg +3 -0
- package/dist/package/browser/assets/icons/tool-task-todo.svg +4 -0
- package/dist/package/browser/assets/icons/tool-write-file.svg +3 -0
- package/dist/package/browser/boot/SettingsSection.d.ts +14 -0
- package/dist/package/browser/boot/SettingsSection.js +82 -0
- package/dist/package/browser/boot/broadcast.d.ts +2 -0
- package/dist/package/browser/boot/broadcast.js +32 -0
- package/dist/package/browser/boot/driver.d.ts +22 -0
- package/dist/package/browser/boot/driver.js +47 -0
- package/dist/package/browser/boot/store.d.ts +29 -0
- package/dist/package/browser/boot/store.js +114 -0
- package/dist/package/browser/boot/themes.d.ts +19 -0
- package/dist/package/browser/boot/themes.js +21 -0
- package/dist/package/browser/boot/types.d.ts +22 -0
- package/dist/package/browser/boot/types.js +30 -0
- package/dist/package/browser/brand/BrandProvider.d.ts +19 -0
- package/dist/package/browser/brand/BrandProvider.js +35 -0
- package/dist/package/browser/brand/index.d.ts +4 -0
- package/dist/package/browser/brand/index.js +3 -0
- package/dist/package/browser/brand/runtime.d.ts +17 -0
- package/dist/package/browser/brand/runtime.js +71 -0
- package/dist/package/browser/brand/types.d.ts +77 -0
- package/dist/package/browser/brand/types.js +9 -0
- package/dist/package/browser/components/ActivityRail/ActivityRail.css +294 -0
- package/dist/package/browser/components/ActivityRail/ActivityRail.d.ts +2 -0
- package/dist/package/browser/components/ActivityRail/ActivityRail.js +164 -0
- package/dist/package/browser/components/ActivityRail/activity-rail-model.d.ts +18 -0
- package/dist/package/browser/components/ActivityRail/activity-rail-model.js +144 -0
- package/dist/package/browser/components/AgentAvatar/AgentAvatar.d.ts +17 -0
- package/dist/package/browser/components/AgentAvatar/AgentAvatar.js +50 -0
- package/dist/package/browser/components/BuildBadge/BuildBadge.d.ts +1 -0
- package/dist/package/browser/components/BuildBadge/BuildBadge.js +279 -0
- package/dist/package/browser/components/Bus/BusAdminPanel.css +2425 -0
- package/dist/package/browser/components/Bus/BusAdminPanel.d.ts +2 -0
- package/dist/package/browser/components/Bus/BusAdminPanel.js +1385 -0
- package/dist/package/browser/components/Bus/CapabilityOverview.d.ts +3 -0
- package/dist/package/browser/components/Bus/CapabilityOverview.js +50 -0
- package/dist/package/browser/components/ChatColumn/ChatColumn.d.ts +2 -0
- package/dist/package/browser/components/ChatColumn/ChatColumn.js +18 -0
- package/dist/package/browser/components/ChatColumn/SessionTabStrip.d.ts +1 -0
- package/dist/package/browser/components/ChatColumn/SessionTabStrip.js +103 -0
- package/dist/package/browser/components/ChatColumn/useChatWidth.d.ts +5 -0
- package/dist/package/browser/components/ChatColumn/useChatWidth.js +13 -0
- package/dist/package/browser/components/CommandPalette/CommandPalette.css +199 -0
- package/dist/package/browser/components/CommandPalette/CommandPalette.d.ts +2 -0
- package/dist/package/browser/components/CommandPalette/CommandPalette.js +242 -0
- package/dist/package/browser/components/Confirm/ConfirmDialog.d.ts +2 -0
- package/dist/package/browser/components/Confirm/ConfirmDialog.js +113 -0
- package/dist/package/browser/components/ContextMenu/ContextMenu.d.ts +10 -0
- package/dist/package/browser/components/ContextMenu/ContextMenu.js +218 -0
- package/dist/package/browser/components/ContextMenu/menuRegistry.d.ts +18 -0
- package/dist/package/browser/components/ContextMenu/menuRegistry.js +152 -0
- package/dist/package/browser/components/DetachedSurface.d.ts +20 -0
- package/dist/package/browser/components/DetachedSurface.js +102 -0
- package/dist/package/browser/components/DockShell/DockPanelHost.d.ts +4 -0
- package/dist/package/browser/components/DockShell/DockPanelHost.js +7 -0
- package/dist/package/browser/components/DockShell/DockRegion.d.ts +7 -0
- package/dist/package/browser/components/DockShell/DockRegion.js +315 -0
- package/dist/package/browser/components/DockShell/DockShell.css +1018 -0
- package/dist/package/browser/components/DockShell/DockTab.d.ts +3 -0
- package/dist/package/browser/components/DockShell/DockTab.js +139 -0
- package/dist/package/browser/components/DockShell/ExtensionHostPanel.d.ts +9 -0
- package/dist/package/browser/components/DockShell/ExtensionHostPanel.js +68 -0
- package/dist/package/browser/components/DockShell/ExtensionRuntimeFrame.d.ts +14 -0
- package/dist/package/browser/components/DockShell/ExtensionRuntimeFrame.js +56 -0
- package/dist/package/browser/components/DockShell/PanelWindowingBoundary.d.ts +6 -0
- package/dist/package/browser/components/DockShell/PanelWindowingBoundary.js +9 -0
- package/dist/package/browser/components/DockShell/chatDockAnimation.d.ts +45 -0
- package/dist/package/browser/components/DockShell/chatDockAnimation.js +101 -0
- package/dist/package/browser/components/DockShell/chatDockFullscreen.d.ts +17 -0
- package/dist/package/browser/components/DockShell/chatDockFullscreen.js +22 -0
- package/dist/package/browser/components/DockShell/chatDockLayout.d.ts +10 -0
- package/dist/package/browser/components/DockShell/chatDockLayout.js +11 -0
- package/dist/package/browser/components/DockShell/compact-empty-dock-groups.d.ts +16 -0
- package/dist/package/browser/components/DockShell/compact-empty-dock-groups.js +28 -0
- package/dist/package/browser/components/DockShell/crossInstanceDrop.d.ts +1 -0
- package/dist/package/browser/components/DockShell/crossInstanceDrop.js +1 -0
- package/dist/package/browser/components/DockShell/dockResetEpoch.d.ts +2 -0
- package/dist/package/browser/components/DockShell/dockResetEpoch.js +13 -0
- package/dist/package/browser/components/DockShell/dockTitle.d.ts +12 -0
- package/dist/package/browser/components/DockShell/dockTitle.js +36 -0
- package/dist/package/browser/components/DockShell/dockviewRegistry.d.ts +1 -0
- package/dist/package/browser/components/DockShell/dockviewRegistry.js +1 -0
- package/dist/package/browser/components/DockShell/edgeDrawer.d.ts +24 -0
- package/dist/package/browser/components/DockShell/edgeDrawer.js +1144 -0
- package/dist/package/browser/components/DockShell/edgePinStore.d.ts +12 -0
- package/dist/package/browser/components/DockShell/edgePinStore.js +37 -0
- package/dist/package/browser/components/DockShell/extension-editor-bridge.d.ts +13 -0
- package/dist/package/browser/components/DockShell/extension-editor-bridge.js +100 -0
- package/dist/package/browser/components/DockShell/extension-runtime-selection.d.ts +8 -0
- package/dist/package/browser/components/DockShell/extension-runtime-selection.js +6 -0
- package/dist/package/browser/components/DockShell/extensionRuntime.d.ts +17 -0
- package/dist/package/browser/components/DockShell/extensionRuntime.js +84 -0
- package/dist/package/browser/components/DockShell/footer-panel-visibility.d.ts +7 -0
- package/dist/package/browser/components/DockShell/footer-panel-visibility.js +43 -0
- package/dist/package/browser/components/DockShell/footer-panels.d.ts +2 -0
- package/dist/package/browser/components/DockShell/footer-panels.js +7 -0
- package/dist/package/browser/components/DockShell/panelRegistry.d.ts +37 -0
- package/dist/package/browser/components/DockShell/panelRegistry.js +126 -0
- package/dist/package/browser/components/DockShell/panelRenderers.d.ts +325 -0
- package/dist/package/browser/components/DockShell/panelRenderers.js +25 -0
- package/dist/package/browser/components/DockShell/panelTabCommands.d.ts +18 -0
- package/dist/package/browser/components/DockShell/panelTabCommands.js +133 -0
- package/dist/package/browser/components/DockShell/panelWindowing.d.ts +32 -0
- package/dist/package/browser/components/DockShell/panelWindowing.js +42 -0
- package/dist/package/browser/components/DockShell/regions.d.ts +1 -0
- package/dist/package/browser/components/DockShell/regions.js +1 -0
- package/dist/package/browser/components/DockShell/resolveRegion.d.ts +1 -0
- package/dist/package/browser/components/DockShell/resolveRegion.js +1 -0
- package/dist/package/browser/components/DockShell/sanitizeDockLayout.d.ts +3 -0
- package/dist/package/browser/components/DockShell/sanitizeDockLayout.js +46 -0
- package/dist/package/browser/components/DockShell/sideEdgeMove.d.ts +1 -0
- package/dist/package/browser/components/DockShell/sideEdgeMove.js +1 -0
- package/dist/package/browser/components/DockShell/studioTabMenuProvider.d.ts +13 -0
- package/dist/package/browser/components/DockShell/studioTabMenuProvider.js +39 -0
- package/dist/package/browser/components/DockShell/tabContextMenu.d.ts +29 -0
- package/dist/package/browser/components/DockShell/tabContextMenu.js +68 -0
- package/dist/package/browser/components/DockShell/ueDrag/controller.d.ts +80 -0
- package/dist/package/browser/components/DockShell/ueDrag/controller.js +785 -0
- package/dist/package/browser/components/DockShell/ueDrag/geometry.d.ts +94 -0
- package/dist/package/browser/components/DockShell/ueDrag/geometry.js +217 -0
- package/dist/package/browser/components/DockShell/ueDrag/overlay.d.ts +32 -0
- package/dist/package/browser/components/DockShell/ueDrag/overlay.js +206 -0
- package/dist/package/browser/components/DockShell/ueDrag/ueDrag.css +199 -0
- package/dist/package/browser/components/DockShell/useAuxBarWidth.d.ts +5 -0
- package/dist/package/browser/components/DockShell/useAuxBarWidth.js +13 -0
- package/dist/package/browser/components/Drawer/DrawerHostView.css +143 -0
- package/dist/package/browser/components/Drawer/DrawerHostView.d.ts +19 -0
- package/dist/package/browser/components/Drawer/DrawerHostView.js +93 -0
- package/dist/package/browser/components/Drawer/DrawerLauncher.d.ts +12 -0
- package/dist/package/browser/components/Drawer/DrawerLauncher.js +22 -0
- package/dist/package/browser/components/Drawer/useDrawerStore.d.ts +15 -0
- package/dist/package/browser/components/Drawer/useDrawerStore.js +80 -0
- package/dist/package/browser/components/ErrorBoundary.d.ts +55 -0
- package/dist/package/browser/components/ErrorBoundary.js +131 -0
- package/dist/package/browser/components/ExtensionHost/ExtensionIframeHost.d.ts +28 -0
- package/dist/package/browser/components/ExtensionHost/ExtensionIframeHost.js +179 -0
- package/dist/package/browser/components/ExtensionHost/NativeExtensionHost.d.ts +14 -0
- package/dist/package/browser/components/ExtensionHost/NativeExtensionHost.js +152 -0
- package/dist/package/browser/components/Feedback/FeedbackPanel.css +640 -0
- package/dist/package/browser/components/Feedback/FeedbackPanel.d.ts +8 -0
- package/dist/package/browser/components/Feedback/FeedbackPanel.js +118 -0
- package/dist/package/browser/components/Feedback/PassiveFeedback.css +179 -0
- package/dist/package/browser/components/Feedback/PassiveFeedback.d.ts +2 -0
- package/dist/package/browser/components/Feedback/PassiveFeedback.js +218 -0
- package/dist/package/browser/components/Feedback/collect.d.ts +15 -0
- package/dist/package/browser/components/Feedback/collect.js +80 -0
- package/dist/package/browser/components/Feedback/store.d.ts +61 -0
- package/dist/package/browser/components/Feedback/store.js +174 -0
- package/dist/package/browser/components/LangSwitcher/LangSwitcher.css +78 -0
- package/dist/package/browser/components/LangSwitcher/LangSwitcher.d.ts +14 -0
- package/dist/package/browser/components/LangSwitcher/LangSwitcher.js +44 -0
- package/dist/package/browser/components/MainArea/ConsolePanel.d.ts +1 -0
- package/dist/package/browser/components/MainArea/ConsolePanel.js +16 -0
- package/dist/package/browser/components/MainArea/MainArea.css +2130 -0
- package/dist/package/browser/components/MainArea/MainArea.d.ts +2 -0
- package/dist/package/browser/components/MainArea/MainArea.js +20 -0
- package/dist/package/browser/components/MainArea/StandaloneExtensionIframe.d.ts +25 -0
- package/dist/package/browser/components/MainArea/StandaloneExtensionIframe.js +155 -0
- package/dist/package/browser/components/MainArea/SurfacePanels.d.ts +3 -0
- package/dist/package/browser/components/MainArea/SurfacePanels.js +27 -0
- package/dist/package/browser/components/MainArea/TelemetryViewer.css +122 -0
- package/dist/package/browser/components/MainArea/TelemetryViewer.d.ts +36 -0
- package/dist/package/browser/components/MainArea/TelemetryViewer.js +116 -0
- package/dist/package/browser/components/MenuBar/MenuBar.css +186 -0
- package/dist/package/browser/components/MenuBar/MenuBar.d.ts +27 -0
- package/dist/package/browser/components/MenuBar/MenuBar.js +286 -0
- package/dist/package/browser/components/MenuBar/index.d.ts +1 -0
- package/dist/package/browser/components/MenuBar/index.js +1 -0
- package/dist/package/browser/components/MenuBar/menubar-open-state.d.ts +8 -0
- package/dist/package/browser/components/MenuBar/menubar-open-state.js +11 -0
- package/dist/package/browser/components/MenuBar/menubar-surface.d.ts +30 -0
- package/dist/package/browser/components/MenuBar/menubar-surface.js +201 -0
- package/dist/package/browser/components/ModelPicker/index.d.ts +1 -0
- package/dist/package/browser/components/ModelPicker/index.js +1 -0
- package/dist/package/browser/components/ModelPicker/useModelCatalog.d.ts +22 -0
- package/dist/package/browser/components/ModelPicker/useModelCatalog.js +100 -0
- package/dist/package/browser/components/Onboarding/ConnectModelPrompt.d.ts +2 -0
- package/dist/package/browser/components/Onboarding/ConnectModelPrompt.js +40 -0
- package/dist/package/browser/components/Onboarding/Onboarding.css +232 -0
- package/dist/package/browser/components/Onboarding/OnboardingController.d.ts +10 -0
- package/dist/package/browser/components/Onboarding/OnboardingController.js +549 -0
- package/dist/package/browser/components/Onboarding/connect-selection.d.ts +17 -0
- package/dist/package/browser/components/Onboarding/connect-selection.js +18 -0
- package/dist/package/browser/components/Onboarding/home-transition.d.ts +9 -0
- package/dist/package/browser/components/Onboarding/home-transition.js +20 -0
- package/dist/package/browser/components/Onboarding/index.d.ts +4 -0
- package/dist/package/browser/components/Onboarding/index.js +3 -0
- package/dist/package/browser/components/Onboarding/prepareTourShell.d.ts +5 -0
- package/dist/package/browser/components/Onboarding/prepareTourShell.js +11 -0
- package/dist/package/browser/components/Onboarding/project-name.d.ts +17 -0
- package/dist/package/browser/components/Onboarding/project-name.js +29 -0
- package/dist/package/browser/components/Onboarding/types.d.ts +31 -0
- package/dist/package/browser/components/Onboarding/types.js +77 -0
- package/dist/package/browser/components/PageTabs/PageTabStrip.css +221 -0
- package/dist/package/browser/components/PageTabs/PageTabStrip.d.ts +3 -0
- package/dist/package/browser/components/PageTabs/PageTabStrip.js +214 -0
- package/dist/package/browser/components/PageTabs/openablePageTypes.d.ts +9 -0
- package/dist/package/browser/components/PageTabs/openablePageTypes.js +13 -0
- package/dist/package/browser/components/PanelShell/PanelShell.css +517 -0
- package/dist/package/browser/components/PanelShell/PanelShell.d.ts +7 -0
- package/dist/package/browser/components/PanelShell/PanelShell.js +459 -0
- package/dist/package/browser/components/Resize/ResizeHandle.d.ts +1 -0
- package/dist/package/browser/components/Resize/ResizeHandle.js +1 -0
- package/dist/package/browser/components/SceneBackground/SceneBackground.d.ts +2 -0
- package/dist/package/browser/components/SceneBackground/SceneBackground.js +5 -0
- package/dist/package/browser/components/SchemaForm/SchemaForm.css +138 -0
- package/dist/package/browser/components/SchemaForm/SchemaForm.d.ts +17 -0
- package/dist/package/browser/components/SchemaForm/SchemaForm.js +86 -0
- package/dist/package/browser/components/SchemaForm/schema-form-utils.d.ts +30 -0
- package/dist/package/browser/components/SchemaForm/schema-form-utils.js +51 -0
- package/dist/package/browser/components/SettingsPrimitives.d.ts +24 -0
- package/dist/package/browser/components/SettingsPrimitives.js +145 -0
- package/dist/package/browser/components/Sidebar/BusHealthLamp.d.ts +1 -0
- package/dist/package/browser/components/Sidebar/BusHealthLamp.js +72 -0
- package/dist/package/browser/components/Sidebar/FilesPanel.d.ts +1 -0
- package/dist/package/browser/components/Sidebar/FilesPanel.js +234 -0
- package/dist/package/browser/components/Sidebar/Sidebar.css +1393 -0
- package/dist/package/browser/components/Sidebar/Sidebar.d.ts +3 -0
- package/dist/package/browser/components/Sidebar/Sidebar.js +8 -0
- package/dist/package/browser/components/Sidebar/sidebar-types.d.ts +18 -0
- package/dist/package/browser/components/Sidebar/sidebar-types.js +1 -0
- package/dist/package/browser/components/SlotDebugOverlay/SlotDebugOverlay.d.ts +1 -0
- package/dist/package/browser/components/SlotDebugOverlay/SlotDebugOverlay.js +1 -0
- package/dist/package/browser/components/SlotDebugOverlay/hashHue.d.ts +1 -0
- package/dist/package/browser/components/SlotDebugOverlay/hashHue.js +1 -0
- package/dist/package/browser/components/SlotDebugOverlay/index.d.ts +1 -0
- package/dist/package/browser/components/SlotDebugOverlay/index.js +1 -0
- package/dist/package/browser/components/SlotDebugOverlay/isSlotDebugEnabled.d.ts +1 -0
- package/dist/package/browser/components/SlotDebugOverlay/isSlotDebugEnabled.js +1 -0
- package/dist/package/browser/components/StatusBar/FatalBanner.d.ts +25 -0
- package/dist/package/browser/components/StatusBar/FatalBanner.js +52 -0
- package/dist/package/browser/components/StatusBar/GlobalStatusBar.css +304 -0
- package/dist/package/browser/components/StatusBar/InfoPanel.css +174 -0
- package/dist/package/browser/components/StatusBar/InfoPanel.d.ts +19 -0
- package/dist/package/browser/components/StatusBar/InfoPanel.js +128 -0
- package/dist/package/browser/components/StatusBar/StatusChip.css +52 -0
- package/dist/package/browser/components/StatusBar/StatusChip.d.ts +40 -0
- package/dist/package/browser/components/StatusBar/StatusChip.js +13 -0
- package/dist/package/browser/components/StatusBar/StripHostView.d.ts +2 -0
- package/dist/package/browser/components/StatusBar/StripHostView.js +91 -0
- package/dist/package/browser/components/StatusBar/StripPopover.css +58 -0
- package/dist/package/browser/components/StatusBar/StripPopover.d.ts +16 -0
- package/dist/package/browser/components/StatusBar/StripPopover.js +15 -0
- package/dist/package/browser/components/StatusBar/feeds/PulseFeeds.d.ts +16 -0
- package/dist/package/browser/components/StatusBar/feeds/PulseFeeds.js +88 -0
- package/dist/package/browser/components/StatusBar/footer/CheckpointsDrawer.d.ts +4 -0
- package/dist/package/browser/components/StatusBar/footer/CheckpointsDrawer.js +77 -0
- package/dist/package/browser/components/StatusBar/footer/DiagnosticsPopover.d.ts +4 -0
- package/dist/package/browser/components/StatusBar/footer/DiagnosticsPopover.js +108 -0
- package/dist/package/browser/components/StatusBar/footer/EventsDrawer.d.ts +14 -0
- package/dist/package/browser/components/StatusBar/footer/EventsDrawer.js +25 -0
- package/dist/package/browser/components/StatusBar/footer/ForgeaxBuildPopover.d.ts +4 -0
- package/dist/package/browser/components/StatusBar/footer/ForgeaxBuildPopover.js +62 -0
- package/dist/package/browser/components/StatusBar/footer/footer.css +178 -0
- package/dist/package/browser/components/StatusBar/healthBridge.d.ts +38 -0
- package/dist/package/browser/components/StatusBar/healthBridge.js +245 -0
- package/dist/package/browser/components/StatusBar/healthStore.d.ts +80 -0
- package/dist/package/browser/components/StatusBar/healthStore.js +129 -0
- package/dist/package/browser/components/StatusBar/useStatusItem.d.ts +10 -0
- package/dist/package/browser/components/StatusBar/useStatusItem.js +35 -0
- package/dist/package/browser/components/Surfaces/SurfaceKeepAlive.css +34 -0
- package/dist/package/browser/components/Surfaces/SurfaceKeepAliveLayer.d.ts +3 -0
- package/dist/package/browser/components/Surfaces/SurfaceKeepAliveLayer.js +218 -0
- package/dist/package/browser/components/Surfaces/SurfaceOverlay.css +160 -0
- package/dist/package/browser/components/Surfaces/SurfaceOverlay.d.ts +9 -0
- package/dist/package/browser/components/Surfaces/SurfaceOverlay.js +144 -0
- package/dist/package/browser/components/TopBar/AndroidPackageDialog.d.ts +23 -0
- package/dist/package/browser/components/TopBar/AndroidPackageDialog.js +115 -0
- package/dist/package/browser/components/TopBar/FsBrowser.css +156 -0
- package/dist/package/browser/components/TopBar/FsBrowser.d.ts +8 -0
- package/dist/package/browser/components/TopBar/FsBrowser.js +93 -0
- package/dist/package/browser/components/TopBar/GameSwitcher.d.ts +29 -0
- package/dist/package/browser/components/TopBar/GameSwitcher.js +157 -0
- package/dist/package/browser/components/TopBar/IosPackageDialog.d.ts +23 -0
- package/dist/package/browser/components/TopBar/IosPackageDialog.js +115 -0
- package/dist/package/browser/components/TopBar/ProjectSwitcher.d.ts +3 -0
- package/dist/package/browser/components/TopBar/ProjectSwitcher.js +41 -0
- package/dist/package/browser/components/TopBar/PublishOnboarding.css +133 -0
- package/dist/package/browser/components/TopBar/PublishOnboarding.d.ts +10 -0
- package/dist/package/browser/components/TopBar/PublishOnboarding.js +144 -0
- package/dist/package/browser/components/TopBar/SessionSwitcher.d.ts +2 -0
- package/dist/package/browser/components/TopBar/SessionSwitcher.js +124 -0
- package/dist/package/browser/components/TopBar/TopBar.css +1672 -0
- package/dist/package/browser/components/TopBar/TopBar.d.ts +2 -0
- package/dist/package/browser/components/TopBar/TopBar.js +606 -0
- package/dist/package/browser/components/TopBar/publish-options.d.ts +20 -0
- package/dist/package/browser/components/TopBar/publish-options.js +28 -0
- package/dist/package/browser/components/TourOverlay/TourOverlay.css +122 -0
- package/dist/package/browser/components/TourOverlay/TourOverlay.d.ts +26 -0
- package/dist/package/browser/components/TourOverlay/TourOverlay.js +233 -0
- package/dist/package/browser/components/TourOverlay/index.d.ts +2 -0
- package/dist/package/browser/components/TourOverlay/index.js +1 -0
- package/dist/package/browser/components/ownership.d.ts +7 -0
- package/dist/package/browser/components/ownership.js +7 -0
- package/dist/package/browser/components/ui/SearchableMenu.css +143 -0
- package/dist/package/browser/components/ui/SearchableMenu.d.ts +30 -0
- package/dist/package/browser/components/ui/SearchableMenu.js +40 -0
- package/dist/package/browser/components/ui/alert-dialog.d.ts +20 -0
- package/dist/package/browser/components/ui/alert-dialog.js +38 -0
- package/dist/package/browser/components/ui/button.d.ts +11 -0
- package/dist/package/browser/components/ui/button.js +33 -0
- package/dist/package/browser/components/ui/checkbox.d.ts +4 -0
- package/dist/package/browser/components/ui/checkbox.js +8 -0
- package/dist/package/browser/components/ui/command.d.ts +74 -0
- package/dist/package/browser/components/ui/command.js +20 -0
- package/dist/package/browser/components/ui/dialog.d.ts +21 -0
- package/dist/package/browser/components/ui/dialog.js +34 -0
- package/dist/package/browser/components/ui/dropdown-menu.d.ts +18 -0
- package/dist/package/browser/components/ui/dropdown-menu.js +30 -0
- package/dist/package/browser/components/ui/input.d.ts +3 -0
- package/dist/package/browser/components/ui/input.js +8 -0
- package/dist/package/browser/components/ui/label.d.ts +4 -0
- package/dist/package/browser/components/ui/label.js +7 -0
- package/dist/package/browser/components/ui/popover.d.ts +7 -0
- package/dist/package/browser/components/ui/popover.js +10 -0
- package/dist/package/browser/components/ui/select.d.ts +11 -0
- package/dist/package/browser/components/ui/select.js +31 -0
- package/dist/package/browser/components/ui/tabs.d.ts +7 -0
- package/dist/package/browser/components/ui/tabs.js +12 -0
- package/dist/package/browser/components/ui/textarea.d.ts +3 -0
- package/dist/package/browser/components/ui/textarea.js +8 -0
- package/dist/package/browser/components/ui/tooltip.d.ts +7 -0
- package/dist/package/browser/components/ui/tooltip.js +10 -0
- package/dist/package/browser/core/app-shell/catalog-page-extensions.d.ts +28 -0
- package/dist/package/browser/core/app-shell/catalog-page-extensions.js +234 -0
- package/dist/package/browser/core/app-shell/derive-panel-renderers.d.ts +2 -0
- package/dist/package/browser/core/app-shell/derive-panel-renderers.js +17 -0
- package/dist/package/browser/core/app-shell/host.d.ts +31 -0
- package/dist/package/browser/core/app-shell/host.js +188 -0
- package/dist/package/browser/core/app-shell/index.d.ts +7 -0
- package/dist/package/browser/core/app-shell/index.js +8 -0
- package/dist/package/browser/core/app-shell/logger.d.ts +2 -0
- package/dist/package/browser/core/app-shell/logger.js +6 -0
- package/dist/package/browser/core/app-shell/ownership.d.ts +7 -0
- package/dist/package/browser/core/app-shell/ownership.js +7 -0
- package/dist/package/browser/core/app-shell/react/HostProvider.d.ts +10 -0
- package/dist/package/browser/core/app-shell/react/HostProvider.js +35 -0
- package/dist/package/browser/core/app-shell/surface-extension.d.ts +17 -0
- package/dist/package/browser/core/app-shell/surface-extension.js +33 -0
- package/dist/package/browser/core/app-shell/types.d.ts +176 -0
- package/dist/package/browser/core/app-shell/types.js +1 -0
- package/dist/package/browser/core/contextual-keybindings.d.ts +71 -0
- package/dist/package/browser/core/contextual-keybindings.js +198 -0
- package/dist/package/browser/core/extension-foundation/bus.d.ts +2 -0
- package/dist/package/browser/core/extension-foundation/bus.js +3 -0
- package/dist/package/browser/core/extension-foundation/capabilities.d.ts +2 -0
- package/dist/package/browser/core/extension-foundation/capabilities.js +3 -0
- package/dist/package/browser/core/extension-foundation/commands.d.ts +2 -0
- package/dist/package/browser/core/extension-foundation/commands.js +3 -0
- package/dist/package/browser/core/extension-foundation/context-keys.d.ts +2 -0
- package/dist/package/browser/core/extension-foundation/context-keys.js +3 -0
- package/dist/package/browser/core/extension-foundation/contribution-registry.d.ts +2 -0
- package/dist/package/browser/core/extension-foundation/contribution-registry.js +3 -0
- package/dist/package/browser/core/extension-foundation/errors.d.ts +2 -0
- package/dist/package/browser/core/extension-foundation/errors.js +3 -0
- package/dist/package/browser/core/extension-foundation/index.d.ts +8 -0
- package/dist/package/browser/core/extension-foundation/index.js +9 -0
- package/dist/package/browser/core/extension-foundation/loader.d.ts +2 -0
- package/dist/package/browser/core/extension-foundation/loader.js +3 -0
- package/dist/package/browser/core/extension-foundation/storage.d.ts +2 -0
- package/dist/package/browser/core/extension-foundation/storage.js +3 -0
- package/dist/package/browser/core/extension-foundation/types.d.ts +2 -0
- package/dist/package/browser/core/extension-foundation/types.js +1 -0
- package/dist/package/browser/core/extensions/builtin-commands.d.ts +2 -0
- package/dist/package/browser/core/extensions/builtin-commands.js +256 -0
- package/dist/package/browser/core/extensions/builtin-menus.d.ts +2 -0
- package/dist/package/browser/core/extensions/builtin-menus.js +252 -0
- package/dist/package/browser/core/extensions/chrome-drawer.d.ts +3 -0
- package/dist/package/browser/core/extensions/chrome-drawer.js +45 -0
- package/dist/package/browser/core/extensions/chrome-statusbar.d.ts +6 -0
- package/dist/package/browser/core/extensions/chrome-statusbar.js +26 -0
- package/dist/package/browser/core/extensions/detached-agents-browser.d.ts +3 -0
- package/dist/package/browser/core/extensions/detached-agents-browser.js +9 -0
- package/dist/package/browser/core/extensions/detached-files-browser.d.ts +3 -0
- package/dist/package/browser/core/extensions/detached-files-browser.js +6 -0
- package/dist/package/browser/core/extensions/editor-commands.d.ts +2 -0
- package/dist/package/browser/core/extensions/editor-commands.js +182 -0
- package/dist/package/browser/core/extensions/foundation-bus.d.ts +2 -0
- package/dist/package/browser/core/extensions/foundation-bus.js +3 -0
- package/dist/package/browser/core/extensions/foundation-commands.d.ts +2 -0
- package/dist/package/browser/core/extensions/foundation-commands.js +6 -0
- package/dist/package/browser/core/extensions/foundation-storage.d.ts +2 -0
- package/dist/package/browser/core/extensions/foundation-storage.js +3 -0
- package/dist/package/browser/core/extensions/host-commands.d.ts +18 -0
- package/dist/package/browser/core/extensions/host-commands.js +52 -0
- package/dist/package/browser/core/extensions/observability.d.ts +14 -0
- package/dist/package/browser/core/extensions/observability.js +18 -0
- package/dist/package/browser/core/extensions/panels-chat.d.ts +2 -0
- package/dist/package/browser/core/extensions/panels-chat.js +41 -0
- package/dist/package/browser/core/extensions/panels-editor.d.ts +8 -0
- package/dist/package/browser/core/extensions/panels-editor.js +26 -0
- package/dist/package/browser/core/extensions/panels-viewport.d.ts +2 -0
- package/dist/package/browser/core/extensions/panels-viewport.js +20 -0
- package/dist/package/browser/core/extensions/session-client.d.ts +29 -0
- package/dist/package/browser/core/extensions/session-client.js +42 -0
- package/dist/package/browser/core/extensions/slots-corner-agent-picker.d.ts +5 -0
- package/dist/package/browser/core/extensions/slots-corner-agent-picker.js +6 -0
- package/dist/package/browser/core/extensions/slots-main-area-body.d.ts +3 -0
- package/dist/package/browser/core/extensions/slots-main-area-body.js +6 -0
- package/dist/package/browser/core/extensions/slots-sidebar-agents.d.ts +3 -0
- package/dist/package/browser/core/extensions/slots-sidebar-agents.js +6 -0
- package/dist/package/browser/core/extensions/studio-domain-clients.d.ts +12 -0
- package/dist/package/browser/core/extensions/studio-domain-clients.js +15 -0
- package/dist/package/browser/core/extensions/surfaces-scene-editor.d.ts +3 -0
- package/dist/package/browser/core/extensions/surfaces-scene-editor.js +6 -0
- package/dist/package/browser/core/extensions/trajectory.d.ts +2 -0
- package/dist/package/browser/core/extensions/trajectory.js +50 -0
- package/dist/package/browser/core/page-navigation.d.ts +1 -0
- package/dist/package/browser/core/page-navigation.js +1 -0
- package/dist/package/browser/core/page-platform/activity.d.ts +4 -0
- package/dist/package/browser/core/page-platform/activity.js +46 -0
- package/dist/package/browser/core/page-platform/dockview-layout.d.ts +7 -0
- package/dist/package/browser/core/page-platform/dockview-layout.js +63 -0
- package/dist/package/browser/core/page-platform/index.d.ts +8 -0
- package/dist/package/browser/core/page-platform/index.js +8 -0
- package/dist/package/browser/core/page-platform/layout-store.d.ts +18 -0
- package/dist/package/browser/core/page-platform/layout-store.js +54 -0
- package/dist/package/browser/core/page-platform/page-dirty-probe.d.ts +1 -0
- package/dist/package/browser/core/page-platform/page-dirty-probe.js +4 -0
- package/dist/package/browser/core/page-platform/registry.d.ts +3 -0
- package/dist/package/browser/core/page-platform/registry.js +194 -0
- package/dist/package/browser/core/page-platform/resource-editor.d.ts +3 -0
- package/dist/package/browser/core/page-platform/resource-editor.js +74 -0
- package/dist/package/browser/core/page-platform/session.d.ts +10 -0
- package/dist/package/browser/core/page-platform/session.js +327 -0
- package/dist/package/browser/core/page-platform/types.d.ts +242 -0
- package/dist/package/browser/core/page-platform/types.js +10 -0
- package/dist/package/browser/core/panels/context-expression.d.ts +1 -0
- package/dist/package/browser/core/panels/context-expression.js +1 -0
- package/dist/package/browser/core/panels/drawer.d.ts +23 -0
- package/dist/package/browser/core/panels/drawer.js +1 -0
- package/dist/package/browser/core/panels/index.d.ts +7 -0
- package/dist/package/browser/core/panels/index.js +7 -0
- package/dist/package/browser/core/panels/panel-action-registry.d.ts +6 -0
- package/dist/package/browser/core/panels/panel-action-registry.js +62 -0
- package/dist/package/browser/core/panels/panel-control-registry.d.ts +6 -0
- package/dist/package/browser/core/panels/panel-control-registry.js +54 -0
- package/dist/package/browser/core/panels/resolve-panel-action-state.d.ts +10 -0
- package/dist/package/browser/core/panels/resolve-panel-action-state.js +9 -0
- package/dist/package/browser/core/panels/strip.d.ts +40 -0
- package/dist/package/browser/core/panels/strip.js +1 -0
- package/dist/package/browser/core/panels/types.d.ts +143 -0
- package/dist/package/browser/core/panels/types.js +1 -0
- package/dist/package/browser/i18n/index.d.ts +50 -0
- package/dist/package/browser/i18n/index.js +207 -0
- package/dist/package/browser/i18n/locales/en.json +1959 -0
- package/dist/package/browser/i18n/locales/zh.json +1959 -0
- package/dist/package/browser/index.d.ts +2 -0
- package/dist/package/browser/index.js +2 -0
- package/dist/package/browser/lib/a11y-summary.d.ts +17 -0
- package/dist/package/browser/lib/a11y-summary.js +66 -0
- package/dist/package/browser/lib/action-dom-discovery.d.ts +2 -0
- package/dist/package/browser/lib/action-dom-discovery.js +84 -0
- package/dist/package/browser/lib/action-registry.d.ts +94 -0
- package/dist/package/browser/lib/action-registry.js +210 -0
- package/dist/package/browser/lib/aegis.d.ts +40 -0
- package/dist/package/browser/lib/aegis.js +230 -0
- package/dist/package/browser/lib/agent-catalog-url.d.ts +9 -0
- package/dist/package/browser/lib/agent-catalog-url.js +24 -0
- package/dist/package/browser/lib/agent-cli-provider.d.ts +10 -0
- package/dist/package/browser/lib/agent-cli-provider.js +81 -0
- package/dist/package/browser/lib/ai-intents.d.ts +30 -0
- package/dist/package/browser/lib/ai-intents.js +52 -0
- package/dist/package/browser/lib/broadcast-stream.d.ts +17 -0
- package/dist/package/browser/lib/broadcast-stream.js +163 -0
- package/dist/package/browser/lib/browser-prefs-sync.d.ts +16 -0
- package/dist/package/browser/lib/browser-prefs-sync.js +151 -0
- package/dist/package/browser/lib/builtin-actions.d.ts +2 -0
- package/dist/package/browser/lib/builtin-actions.js +558 -0
- package/dist/package/browser/lib/bus.d.ts +25 -0
- package/dist/package/browser/lib/bus.js +71 -0
- package/dist/package/browser/lib/checkpoint-api.d.ts +54 -0
- package/dist/package/browser/lib/checkpoint-api.js +41 -0
- package/dist/package/browser/lib/cli-providers.d.ts +33 -0
- package/dist/package/browser/lib/cli-providers.js +61 -0
- package/dist/package/browser/lib/command-palette-store.d.ts +5 -0
- package/dist/package/browser/lib/command-palette-store.js +22 -0
- package/dist/package/browser/lib/composer-bridge.d.ts +103 -0
- package/dist/package/browser/lib/composer-bridge.js +448 -0
- package/dist/package/browser/lib/dashboard-api.d.ts +104 -0
- package/dist/package/browser/lib/dashboard-api.js +125 -0
- package/dist/package/browser/lib/deep-link-bus.d.ts +10 -0
- package/dist/package/browser/lib/deep-link-bus.js +35 -0
- package/dist/package/browser/lib/dialog.d.ts +40 -0
- package/dist/package/browser/lib/dialog.js +103 -0
- package/dist/package/browser/lib/editor-facts-bus.d.ts +27 -0
- package/dist/package/browser/lib/editor-facts-bus.js +25 -0
- package/dist/package/browser/lib/extension-api.d.ts +140 -0
- package/dist/package/browser/lib/extension-api.js +90 -0
- package/dist/package/browser/lib/file-activity-stream.d.ts +54 -0
- package/dist/package/browser/lib/file-activity-stream.js +123 -0
- package/dist/package/browser/lib/file-family.d.ts +15 -0
- package/dist/package/browser/lib/file-family.js +25 -0
- package/dist/package/browser/lib/game-templates.d.ts +7 -0
- package/dist/package/browser/lib/game-templates.js +15 -0
- package/dist/package/browser/lib/global-shortcuts.d.ts +121 -0
- package/dist/package/browser/lib/global-shortcuts.js +551 -0
- package/dist/package/browser/lib/logSink.d.ts +16 -0
- package/dist/package/browser/lib/logSink.js +128 -0
- package/dist/package/browser/lib/lucide-icon.d.ts +5 -0
- package/dist/package/browser/lib/lucide-icon.js +20 -0
- package/dist/package/browser/lib/menu-registry.d.ts +113 -0
- package/dist/package/browser/lib/menu-registry.js +197 -0
- package/dist/package/browser/lib/model-config.d.ts +89 -0
- package/dist/package/browser/lib/model-config.js +72 -0
- package/dist/package/browser/lib/model-prefs.d.ts +5 -0
- package/dist/package/browser/lib/model-prefs.js +53 -0
- package/dist/package/browser/lib/model-route/index.d.ts +81 -0
- package/dist/package/browser/lib/model-route/index.js +175 -0
- package/dist/package/browser/lib/narrative-copilot.d.ts +20 -0
- package/dist/package/browser/lib/narrative-copilot.js +105 -0
- package/dist/package/browser/lib/native-menu-bridge.d.ts +37 -0
- package/dist/package/browser/lib/native-menu-bridge.js +151 -0
- package/dist/package/browser/lib/page-tab-icons.d.ts +21 -0
- package/dist/package/browser/lib/page-tab-icons.js +64 -0
- package/dist/package/browser/lib/panel-tab-icons.d.ts +21 -0
- package/dist/package/browser/lib/panel-tab-icons.js +49 -0
- package/dist/package/browser/lib/passive-feedback.d.ts +50 -0
- package/dist/package/browser/lib/passive-feedback.js +171 -0
- package/dist/package/browser/lib/perception-stream.d.ts +27 -0
- package/dist/package/browser/lib/perception-stream.js +42 -0
- package/dist/package/browser/lib/platform/index.d.ts +14 -0
- package/dist/package/browser/lib/platform/index.js +13 -0
- package/dist/package/browser/lib/platform/runtime.d.ts +22 -0
- package/dist/package/browser/lib/platform/runtime.js +42 -0
- package/dist/package/browser/lib/platform/shell-adapter.d.ts +24 -0
- package/dist/package/browser/lib/platform/shell-adapter.js +74 -0
- package/dist/package/browser/lib/platform/surface-windowing.d.ts +4 -0
- package/dist/package/browser/lib/platform/surface-windowing.js +16 -0
- package/dist/package/browser/lib/platform/surface.d.ts +13 -0
- package/dist/package/browser/lib/platform/surface.js +27 -0
- package/dist/package/browser/lib/platform/use-surface-windowing.d.ts +1 -0
- package/dist/package/browser/lib/platform/use-surface-windowing.js +6 -0
- package/dist/package/browser/lib/platform/window-manager.d.ts +2 -0
- package/dist/package/browser/lib/platform/window-manager.js +82 -0
- package/dist/package/browser/lib/project-context.d.ts +4 -0
- package/dist/package/browser/lib/project-context.js +42 -0
- package/dist/package/browser/lib/project.d.ts +5 -0
- package/dist/package/browser/lib/project.js +8 -0
- package/dist/package/browser/lib/recent-games.d.ts +24 -0
- package/dist/package/browser/lib/recent-games.js +50 -0
- package/dist/package/browser/lib/repair-builtin-menus.d.ts +6 -0
- package/dist/package/browser/lib/repair-builtin-menus.js +18 -0
- package/dist/package/browser/lib/reply-language.d.ts +9 -0
- package/dist/package/browser/lib/reply-language.js +11 -0
- package/dist/package/browser/lib/resilient-polling.d.ts +9 -0
- package/dist/package/browser/lib/resilient-polling.js +16 -0
- package/dist/package/browser/lib/session-time.d.ts +8 -0
- package/dist/package/browser/lib/session-time.js +40 -0
- package/dist/package/browser/lib/shell-live-data.d.ts +12 -0
- package/dist/package/browser/lib/shell-live-data.js +66 -0
- package/dist/package/browser/lib/sse.d.ts +5 -0
- package/dist/package/browser/lib/sse.js +42 -0
- package/dist/package/browser/lib/storageKeys.d.ts +70 -0
- package/dist/package/browser/lib/storageKeys.js +89 -0
- package/dist/package/browser/lib/surface-store.d.ts +38 -0
- package/dist/package/browser/lib/surface-store.js +62 -0
- package/dist/package/browser/lib/surface.d.ts +56 -0
- package/dist/package/browser/lib/surface.js +225 -0
- package/dist/package/browser/lib/surfaceAnchors.d.ts +16 -0
- package/dist/package/browser/lib/surfaceAnchors.js +76 -0
- package/dist/package/browser/lib/surfaceKeepAliveLayout.d.ts +7 -0
- package/dist/package/browser/lib/surfaceKeepAliveLayout.js +12 -0
- package/dist/package/browser/lib/telemetry-test-prelude.d.ts +0 -0
- package/dist/package/browser/lib/telemetry-test-prelude.js +14 -0
- package/dist/package/browser/lib/text-edit-actions.d.ts +14 -0
- package/dist/package/browser/lib/text-edit-actions.js +184 -0
- package/dist/package/browser/lib/trace.d.ts +34 -0
- package/dist/package/browser/lib/trace.js +273 -0
- package/dist/package/browser/lib/trustedOrigins.d.ts +4 -0
- package/dist/package/browser/lib/trustedOrigins.js +36 -0
- package/dist/package/browser/lib/ui-action-highlight.d.ts +2 -0
- package/dist/package/browser/lib/ui-action-highlight.js +93 -0
- package/dist/package/browser/lib/ui-bridge.d.ts +2 -0
- package/dist/package/browser/lib/ui-bridge.js +224 -0
- package/dist/package/browser/lib/ui-screenshot.d.ts +31 -0
- package/dist/package/browser/lib/ui-screenshot.js +155 -0
- package/dist/package/browser/lib/ui-trajectory.d.ts +47 -0
- package/dist/package/browser/lib/ui-trajectory.js +99 -0
- package/dist/package/browser/lib/use-bus-snapshot.d.ts +3 -0
- package/dist/package/browser/lib/use-bus-snapshot.js +13 -0
- package/dist/package/browser/lib/use-extension-manifest.d.ts +19 -0
- package/dist/package/browser/lib/use-extension-manifest.js +67 -0
- package/dist/package/browser/lib/useConfirmToast.d.ts +26 -0
- package/dist/package/browser/lib/useConfirmToast.js +120 -0
- package/dist/package/browser/lib/utils.d.ts +2 -0
- package/dist/package/browser/lib/utils.js +5 -0
- package/dist/package/browser/lib/vag-action-bridge.d.ts +2 -0
- package/dist/package/browser/lib/vag-action-bridge.js +130 -0
- package/dist/package/browser/main.d.ts +1 -0
- package/dist/package/browser/main.js +157 -0
- package/dist/package/browser/store-parts/domain-clients.d.ts +149 -0
- package/dist/package/browser/store-parts/domain-clients.js +17 -0
- package/dist/package/browser/store-parts/observability.d.ts +4 -0
- package/dist/package/browser/store-parts/observability.js +35 -0
- package/dist/package/browser/store-parts/persistence.d.ts +40 -0
- package/dist/package/browser/store-parts/persistence.js +245 -0
- package/dist/package/browser/store-parts/session-client.d.ts +73 -0
- package/dist/package/browser/store-parts/session-client.js +17 -0
- package/dist/package/browser/store-parts/session-pick.d.ts +8 -0
- package/dist/package/browser/store-parts/session-pick.js +21 -0
- package/dist/package/browser/store-parts/shell.d.ts +5 -0
- package/dist/package/browser/store-parts/shell.js +37 -0
- package/dist/package/browser/store.d.ts +455 -0
- package/dist/package/browser/store.js +890 -0
- package/dist/package/browser/styles/forgeax-preview/agent-avatar.css +69 -0
- package/dist/package/browser/styles/forgeax-preview/aliases.css +21 -0
- package/dist/package/browser/styles/forgeax-preview/chat-popover.css +141 -0
- package/dist/package/browser/styles/forgeax-preview/chat-session.css +896 -0
- package/dist/package/browser/styles/forgeax-preview/composer-port.css +531 -0
- package/dist/package/browser/styles/forgeax-preview/design-tokens.css +25 -0
- package/dist/package/browser/styles/forgeax-preview/index.css +9 -0
- package/dist/package/browser/styles/forgeax-preview/scene-fx.css +117 -0
- package/dist/package/browser/styles/forgeax-preview/shell-layout.css +280 -0
- package/dist/package/browser/styles/forgeax-preview/shell-skin.css +128 -0
- package/dist/package/browser/styles/foundation.tokens.json +2755 -0
- package/dist/package/browser/styles/global.css +196 -0
- package/dist/package/browser/styles/motion.css +558 -0
- package/dist/package/browser/styles/plugin-token-bridge.css +19 -0
- package/dist/package/browser/styles/primitive.css +197 -0
- package/dist/package/browser/styles/semantic.tokens.json +1524 -0
- package/dist/package/browser/styles/tokens.css +304 -0
- package/dist/package/node/App.js +11 -0
- package/dist/package/node/ApplicationDetachedShell.js +10 -0
- package/dist/package/node/ApplicationShell.js +62 -0
- package/dist/package/node/app-kit.js +4 -0
- package/dist/package/node/appHostBootstrap.js +145 -0
- package/dist/package/node/application.js +64 -0
- package/dist/package/node/boot/SettingsSection.js +82 -0
- package/dist/package/node/boot/broadcast.js +32 -0
- package/dist/package/node/boot/driver.js +47 -0
- package/dist/package/node/boot/store.js +114 -0
- package/dist/package/node/boot/themes.js +21 -0
- package/dist/package/node/boot/types.js +30 -0
- package/dist/package/node/brand/BrandProvider.js +35 -0
- package/dist/package/node/brand/index.js +3 -0
- package/dist/package/node/brand/runtime.js +71 -0
- package/dist/package/node/brand/types.js +9 -0
- package/dist/package/node/components/ActivityRail/ActivityRail.js +164 -0
- package/dist/package/node/components/ActivityRail/activity-rail-model.js +144 -0
- package/dist/package/node/components/AgentAvatar/AgentAvatar.js +50 -0
- package/dist/package/node/components/BuildBadge/BuildBadge.js +279 -0
- package/dist/package/node/components/Bus/BusAdminPanel.js +1385 -0
- package/dist/package/node/components/Bus/CapabilityOverview.js +50 -0
- package/dist/package/node/components/ChatColumn/ChatColumn.js +18 -0
- package/dist/package/node/components/ChatColumn/SessionTabStrip.js +103 -0
- package/dist/package/node/components/ChatColumn/useChatWidth.js +13 -0
- package/dist/package/node/components/CommandPalette/CommandPalette.js +242 -0
- package/dist/package/node/components/Confirm/ConfirmDialog.js +113 -0
- package/dist/package/node/components/ContextMenu/ContextMenu.js +218 -0
- package/dist/package/node/components/ContextMenu/menuRegistry.js +152 -0
- package/dist/package/node/components/DetachedSurface.js +102 -0
- package/dist/package/node/components/DockShell/DockPanelHost.js +7 -0
- package/dist/package/node/components/DockShell/DockRegion.js +315 -0
- package/dist/package/node/components/DockShell/DockTab.js +139 -0
- package/dist/package/node/components/DockShell/ExtensionHostPanel.js +68 -0
- package/dist/package/node/components/DockShell/ExtensionRuntimeFrame.js +56 -0
- package/dist/package/node/components/DockShell/PanelWindowingBoundary.js +9 -0
- package/dist/package/node/components/DockShell/chatDockAnimation.js +101 -0
- package/dist/package/node/components/DockShell/chatDockFullscreen.js +22 -0
- package/dist/package/node/components/DockShell/chatDockLayout.js +11 -0
- package/dist/package/node/components/DockShell/compact-empty-dock-groups.js +28 -0
- package/dist/package/node/components/DockShell/crossInstanceDrop.js +1 -0
- package/dist/package/node/components/DockShell/dockResetEpoch.js +13 -0
- package/dist/package/node/components/DockShell/dockTitle.js +36 -0
- package/dist/package/node/components/DockShell/dockviewRegistry.js +1 -0
- package/dist/package/node/components/DockShell/edgeDrawer.js +1144 -0
- package/dist/package/node/components/DockShell/edgePinStore.js +37 -0
- package/dist/package/node/components/DockShell/extension-editor-bridge.js +100 -0
- package/dist/package/node/components/DockShell/extension-runtime-selection.js +6 -0
- package/dist/package/node/components/DockShell/extensionRuntime.js +84 -0
- package/dist/package/node/components/DockShell/footer-panel-visibility.js +43 -0
- package/dist/package/node/components/DockShell/footer-panels.js +7 -0
- package/dist/package/node/components/DockShell/panelRegistry.js +126 -0
- package/dist/package/node/components/DockShell/panelRenderers.js +25 -0
- package/dist/package/node/components/DockShell/panelTabCommands.js +133 -0
- package/dist/package/node/components/DockShell/panelWindowing.js +42 -0
- package/dist/package/node/components/DockShell/regions.js +1 -0
- package/dist/package/node/components/DockShell/resolveRegion.js +1 -0
- package/dist/package/node/components/DockShell/sanitizeDockLayout.js +46 -0
- package/dist/package/node/components/DockShell/sideEdgeMove.js +1 -0
- package/dist/package/node/components/DockShell/studioTabMenuProvider.js +39 -0
- package/dist/package/node/components/DockShell/tabContextMenu.js +68 -0
- package/dist/package/node/components/DockShell/ueDrag/controller.js +785 -0
- package/dist/package/node/components/DockShell/ueDrag/geometry.js +217 -0
- package/dist/package/node/components/DockShell/ueDrag/overlay.js +206 -0
- package/dist/package/node/components/DockShell/useAuxBarWidth.js +13 -0
- package/dist/package/node/components/Drawer/DrawerHostView.js +93 -0
- package/dist/package/node/components/Drawer/DrawerLauncher.js +22 -0
- package/dist/package/node/components/Drawer/useDrawerStore.js +80 -0
- package/dist/package/node/components/ErrorBoundary.js +131 -0
- package/dist/package/node/components/ExtensionHost/ExtensionIframeHost.js +179 -0
- package/dist/package/node/components/ExtensionHost/NativeExtensionHost.js +152 -0
- package/dist/package/node/components/Feedback/FeedbackPanel.js +118 -0
- package/dist/package/node/components/Feedback/PassiveFeedback.js +218 -0
- package/dist/package/node/components/Feedback/collect.js +80 -0
- package/dist/package/node/components/Feedback/store.js +174 -0
- package/dist/package/node/components/LangSwitcher/LangSwitcher.js +44 -0
- package/dist/package/node/components/MainArea/ConsolePanel.js +16 -0
- package/dist/package/node/components/MainArea/MainArea.js +20 -0
- package/dist/package/node/components/MainArea/StandaloneExtensionIframe.js +155 -0
- package/dist/package/node/components/MainArea/SurfacePanels.js +27 -0
- package/dist/package/node/components/MainArea/TelemetryViewer.js +116 -0
- package/dist/package/node/components/MenuBar/MenuBar.js +286 -0
- package/dist/package/node/components/MenuBar/index.js +1 -0
- package/dist/package/node/components/MenuBar/menubar-open-state.js +11 -0
- package/dist/package/node/components/MenuBar/menubar-surface.js +201 -0
- package/dist/package/node/components/ModelPicker/index.js +1 -0
- package/dist/package/node/components/ModelPicker/useModelCatalog.js +100 -0
- package/dist/package/node/components/Onboarding/ConnectModelPrompt.js +40 -0
- package/dist/package/node/components/Onboarding/OnboardingController.js +549 -0
- package/dist/package/node/components/Onboarding/connect-selection.js +18 -0
- package/dist/package/node/components/Onboarding/home-transition.js +20 -0
- package/dist/package/node/components/Onboarding/index.js +3 -0
- package/dist/package/node/components/Onboarding/prepareTourShell.js +11 -0
- package/dist/package/node/components/Onboarding/project-name.js +29 -0
- package/dist/package/node/components/Onboarding/types.js +77 -0
- package/dist/package/node/components/PageTabs/PageTabStrip.js +214 -0
- package/dist/package/node/components/PageTabs/openablePageTypes.js +13 -0
- package/dist/package/node/components/PanelShell/PanelShell.js +459 -0
- package/dist/package/node/components/Resize/ResizeHandle.js +1 -0
- package/dist/package/node/components/SceneBackground/SceneBackground.js +5 -0
- package/dist/package/node/components/SchemaForm/SchemaForm.js +86 -0
- package/dist/package/node/components/SchemaForm/schema-form-utils.js +51 -0
- package/dist/package/node/components/SettingsPrimitives.js +145 -0
- package/dist/package/node/components/Sidebar/BusHealthLamp.js +72 -0
- package/dist/package/node/components/Sidebar/FilesPanel.js +234 -0
- package/dist/package/node/components/Sidebar/Sidebar.js +8 -0
- package/dist/package/node/components/Sidebar/sidebar-types.js +1 -0
- package/dist/package/node/components/SlotDebugOverlay/SlotDebugOverlay.js +1 -0
- package/dist/package/node/components/SlotDebugOverlay/hashHue.js +1 -0
- package/dist/package/node/components/SlotDebugOverlay/index.js +1 -0
- package/dist/package/node/components/SlotDebugOverlay/isSlotDebugEnabled.js +1 -0
- package/dist/package/node/components/StatusBar/FatalBanner.js +52 -0
- package/dist/package/node/components/StatusBar/InfoPanel.js +128 -0
- package/dist/package/node/components/StatusBar/StatusChip.js +13 -0
- package/dist/package/node/components/StatusBar/StripHostView.js +91 -0
- package/dist/package/node/components/StatusBar/StripPopover.js +15 -0
- package/dist/package/node/components/StatusBar/feeds/PulseFeeds.js +88 -0
- package/dist/package/node/components/StatusBar/footer/CheckpointsDrawer.js +77 -0
- package/dist/package/node/components/StatusBar/footer/DiagnosticsPopover.js +108 -0
- package/dist/package/node/components/StatusBar/footer/EventsDrawer.js +25 -0
- package/dist/package/node/components/StatusBar/footer/ForgeaxBuildPopover.js +62 -0
- package/dist/package/node/components/StatusBar/healthBridge.js +245 -0
- package/dist/package/node/components/StatusBar/healthStore.js +129 -0
- package/dist/package/node/components/StatusBar/useStatusItem.js +35 -0
- package/dist/package/node/components/Surfaces/SurfaceKeepAliveLayer.js +218 -0
- package/dist/package/node/components/Surfaces/SurfaceOverlay.js +144 -0
- package/dist/package/node/components/TopBar/AndroidPackageDialog.js +115 -0
- package/dist/package/node/components/TopBar/FsBrowser.js +93 -0
- package/dist/package/node/components/TopBar/GameSwitcher.js +157 -0
- package/dist/package/node/components/TopBar/IosPackageDialog.js +115 -0
- package/dist/package/node/components/TopBar/ProjectSwitcher.js +41 -0
- package/dist/package/node/components/TopBar/PublishOnboarding.js +144 -0
- package/dist/package/node/components/TopBar/SessionSwitcher.js +124 -0
- package/dist/package/node/components/TopBar/TopBar.js +606 -0
- package/dist/package/node/components/TopBar/publish-options.js +28 -0
- package/dist/package/node/components/TourOverlay/TourOverlay.js +233 -0
- package/dist/package/node/components/TourOverlay/index.js +1 -0
- package/dist/package/node/components/ownership.js +7 -0
- package/dist/package/node/components/ui/SearchableMenu.js +40 -0
- package/dist/package/node/components/ui/alert-dialog.js +38 -0
- package/dist/package/node/components/ui/button.js +33 -0
- package/dist/package/node/components/ui/checkbox.js +8 -0
- package/dist/package/node/components/ui/command.js +20 -0
- package/dist/package/node/components/ui/dialog.js +34 -0
- package/dist/package/node/components/ui/dropdown-menu.js +30 -0
- package/dist/package/node/components/ui/input.js +8 -0
- package/dist/package/node/components/ui/label.js +7 -0
- package/dist/package/node/components/ui/popover.js +10 -0
- package/dist/package/node/components/ui/select.js +31 -0
- package/dist/package/node/components/ui/tabs.js +12 -0
- package/dist/package/node/components/ui/textarea.js +8 -0
- package/dist/package/node/components/ui/tooltip.js +10 -0
- package/dist/package/node/core/app-shell/catalog-page-extensions.js +234 -0
- package/dist/package/node/core/app-shell/derive-panel-renderers.js +17 -0
- package/dist/package/node/core/app-shell/host.js +188 -0
- package/dist/package/node/core/app-shell/index.js +8 -0
- package/dist/package/node/core/app-shell/logger.js +6 -0
- package/dist/package/node/core/app-shell/ownership.js +7 -0
- package/dist/package/node/core/app-shell/react/HostProvider.js +35 -0
- package/dist/package/node/core/app-shell/surface-extension.js +33 -0
- package/dist/package/node/core/app-shell/types.js +1 -0
- package/dist/package/node/core/contextual-keybindings.js +198 -0
- package/dist/package/node/core/extension-foundation/bus.js +3 -0
- package/dist/package/node/core/extension-foundation/capabilities.js +3 -0
- package/dist/package/node/core/extension-foundation/commands.js +3 -0
- package/dist/package/node/core/extension-foundation/context-keys.js +3 -0
- package/dist/package/node/core/extension-foundation/contribution-registry.js +3 -0
- package/dist/package/node/core/extension-foundation/errors.js +3 -0
- package/dist/package/node/core/extension-foundation/index.js +9 -0
- package/dist/package/node/core/extension-foundation/loader.js +3 -0
- package/dist/package/node/core/extension-foundation/storage.js +3 -0
- package/dist/package/node/core/extension-foundation/types.js +1 -0
- package/dist/package/node/core/extensions/builtin-commands.js +256 -0
- package/dist/package/node/core/extensions/builtin-menus.js +252 -0
- package/dist/package/node/core/extensions/chrome-drawer.js +45 -0
- package/dist/package/node/core/extensions/chrome-statusbar.js +26 -0
- package/dist/package/node/core/extensions/detached-agents-browser.js +9 -0
- package/dist/package/node/core/extensions/detached-files-browser.js +6 -0
- package/dist/package/node/core/extensions/editor-commands.js +182 -0
- package/dist/package/node/core/extensions/foundation-bus.js +3 -0
- package/dist/package/node/core/extensions/foundation-commands.js +6 -0
- package/dist/package/node/core/extensions/foundation-storage.js +3 -0
- package/dist/package/node/core/extensions/host-commands.js +52 -0
- package/dist/package/node/core/extensions/observability.js +18 -0
- package/dist/package/node/core/extensions/panels-chat.js +41 -0
- package/dist/package/node/core/extensions/panels-editor.js +26 -0
- package/dist/package/node/core/extensions/panels-viewport.js +20 -0
- package/dist/package/node/core/extensions/session-client.js +42 -0
- package/dist/package/node/core/extensions/slots-corner-agent-picker.js +6 -0
- package/dist/package/node/core/extensions/slots-main-area-body.js +6 -0
- package/dist/package/node/core/extensions/slots-sidebar-agents.js +6 -0
- package/dist/package/node/core/extensions/studio-domain-clients.js +15 -0
- package/dist/package/node/core/extensions/surfaces-scene-editor.js +6 -0
- package/dist/package/node/core/extensions/trajectory.js +50 -0
- package/dist/package/node/core/page-navigation.js +1 -0
- package/dist/package/node/core/page-platform/activity.js +46 -0
- package/dist/package/node/core/page-platform/dockview-layout.js +63 -0
- package/dist/package/node/core/page-platform/index.js +8 -0
- package/dist/package/node/core/page-platform/layout-store.js +54 -0
- package/dist/package/node/core/page-platform/page-dirty-probe.js +4 -0
- package/dist/package/node/core/page-platform/registry.js +194 -0
- package/dist/package/node/core/page-platform/resource-editor.js +74 -0
- package/dist/package/node/core/page-platform/session.js +327 -0
- package/dist/package/node/core/page-platform/types.js +10 -0
- package/dist/package/node/core/panels/context-expression.js +1 -0
- package/dist/package/node/core/panels/drawer.js +1 -0
- package/dist/package/node/core/panels/index.js +7 -0
- package/dist/package/node/core/panels/panel-action-registry.js +62 -0
- package/dist/package/node/core/panels/panel-control-registry.js +54 -0
- package/dist/package/node/core/panels/resolve-panel-action-state.js +9 -0
- package/dist/package/node/core/panels/strip.js +1 -0
- package/dist/package/node/core/panels/types.js +1 -0
- package/dist/package/node/i18n/index.js +207 -0
- package/dist/package/node/i18n/locales/en.json +1959 -0
- package/dist/package/node/i18n/locales/zh.json +1959 -0
- package/dist/package/node/index.js +2 -0
- package/dist/package/node/lib/a11y-summary.js +66 -0
- package/dist/package/node/lib/action-dom-discovery.js +84 -0
- package/dist/package/node/lib/action-registry.js +210 -0
- package/dist/package/node/lib/aegis.js +230 -0
- package/dist/package/node/lib/agent-catalog-url.js +24 -0
- package/dist/package/node/lib/agent-cli-provider.js +81 -0
- package/dist/package/node/lib/ai-intents.js +52 -0
- package/dist/package/node/lib/broadcast-stream.js +163 -0
- package/dist/package/node/lib/browser-prefs-sync.js +151 -0
- package/dist/package/node/lib/builtin-actions.js +558 -0
- package/dist/package/node/lib/bus.js +71 -0
- package/dist/package/node/lib/checkpoint-api.js +41 -0
- package/dist/package/node/lib/cli-providers.js +61 -0
- package/dist/package/node/lib/command-palette-store.js +22 -0
- package/dist/package/node/lib/composer-bridge.js +448 -0
- package/dist/package/node/lib/dashboard-api.js +125 -0
- package/dist/package/node/lib/deep-link-bus.js +35 -0
- package/dist/package/node/lib/dialog.js +103 -0
- package/dist/package/node/lib/editor-facts-bus.js +25 -0
- package/dist/package/node/lib/extension-api.js +90 -0
- package/dist/package/node/lib/file-activity-stream.js +123 -0
- package/dist/package/node/lib/file-family.js +25 -0
- package/dist/package/node/lib/game-templates.js +15 -0
- package/dist/package/node/lib/global-shortcuts.js +551 -0
- package/dist/package/node/lib/logSink.js +128 -0
- package/dist/package/node/lib/lucide-icon.js +20 -0
- package/dist/package/node/lib/menu-registry.js +197 -0
- package/dist/package/node/lib/model-config.js +72 -0
- package/dist/package/node/lib/model-prefs.js +53 -0
- package/dist/package/node/lib/model-route/index.js +175 -0
- package/dist/package/node/lib/narrative-copilot.js +105 -0
- package/dist/package/node/lib/native-menu-bridge.js +151 -0
- package/dist/package/node/lib/page-tab-icons.js +64 -0
- package/dist/package/node/lib/panel-tab-icons.js +49 -0
- package/dist/package/node/lib/passive-feedback.js +171 -0
- package/dist/package/node/lib/perception-stream.js +42 -0
- package/dist/package/node/lib/platform/index.js +13 -0
- package/dist/package/node/lib/platform/runtime.js +42 -0
- package/dist/package/node/lib/platform/shell-adapter.js +74 -0
- package/dist/package/node/lib/platform/surface-windowing.js +16 -0
- package/dist/package/node/lib/platform/surface.js +27 -0
- package/dist/package/node/lib/platform/use-surface-windowing.js +6 -0
- package/dist/package/node/lib/platform/window-manager.js +82 -0
- package/dist/package/node/lib/project-context.js +42 -0
- package/dist/package/node/lib/project.js +8 -0
- package/dist/package/node/lib/recent-games.js +50 -0
- package/dist/package/node/lib/repair-builtin-menus.js +18 -0
- package/dist/package/node/lib/reply-language.js +11 -0
- package/dist/package/node/lib/resilient-polling.js +16 -0
- package/dist/package/node/lib/session-time.js +40 -0
- package/dist/package/node/lib/shell-live-data.js +66 -0
- package/dist/package/node/lib/sse.js +42 -0
- package/dist/package/node/lib/storageKeys.js +89 -0
- package/dist/package/node/lib/surface-store.js +62 -0
- package/dist/package/node/lib/surface.js +225 -0
- package/dist/package/node/lib/surfaceAnchors.js +76 -0
- package/dist/package/node/lib/surfaceKeepAliveLayout.js +12 -0
- package/dist/package/node/lib/telemetry-test-prelude.js +14 -0
- package/dist/package/node/lib/text-edit-actions.js +184 -0
- package/dist/package/node/lib/trace.js +273 -0
- package/dist/package/node/lib/trustedOrigins.js +36 -0
- package/dist/package/node/lib/ui-action-highlight.js +93 -0
- package/dist/package/node/lib/ui-bridge.js +224 -0
- package/dist/package/node/lib/ui-screenshot.js +155 -0
- package/dist/package/node/lib/ui-trajectory.js +99 -0
- package/dist/package/node/lib/use-bus-snapshot.js +13 -0
- package/dist/package/node/lib/use-extension-manifest.js +67 -0
- package/dist/package/node/lib/useConfirmToast.js +120 -0
- package/dist/package/node/lib/utils.js +5 -0
- package/dist/package/node/lib/vag-action-bridge.js +130 -0
- package/dist/package/node/main.js +157 -0
- package/dist/package/node/store-parts/domain-clients.js +17 -0
- package/dist/package/node/store-parts/observability.js +35 -0
- package/dist/package/node/store-parts/persistence.js +245 -0
- package/dist/package/node/store-parts/session-client.js +17 -0
- package/dist/package/node/store-parts/session-pick.js +21 -0
- package/dist/package/node/store-parts/shell.js +37 -0
- package/dist/package/node/store.js +890 -0
- package/dist/package/node/styles/foundation.tokens.json +2755 -0
- package/dist/package/node/styles/semantic.tokens.json +1524 -0
- package/dist/package/packages/design/styles/fx-bridge.css +25 -0
- package/dist/package/packages/design/styles/primitive.css +199 -0
- package/dist/package/packages/design/styles/semantic.css +262 -0
- package/dist/package/packages/design/theme.d.ts +15 -0
- package/dist/package/packages/design/theme.js +31 -0
- package/dist/package/packages/design/tokens.css +14 -0
- package/package.json +145 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export function createPanelActionRegistry() {
|
|
2
|
+
const entries = [];
|
|
3
|
+
const listeners = new Set();
|
|
4
|
+
let cache = null;
|
|
5
|
+
let version = 0;
|
|
6
|
+
const emit = () => {
|
|
7
|
+
cache = null;
|
|
8
|
+
version++;
|
|
9
|
+
for (const listener of [...listeners])
|
|
10
|
+
listener();
|
|
11
|
+
};
|
|
12
|
+
// Batch-deferred notification: data mutations (push/splice) happen
|
|
13
|
+
// immediately so reads (list/all) always return fresh data, but listener
|
|
14
|
+
// notifications are deferred to a microtask. This avoids triggering
|
|
15
|
+
// forceStoreRerender (useSyncExternalStore) during React 19's commit
|
|
16
|
+
// phase, which otherwise causes "Maximum update depth exceeded".
|
|
17
|
+
let emitScheduled = false;
|
|
18
|
+
const scheduleEmit = () => {
|
|
19
|
+
cache = null;
|
|
20
|
+
if (emitScheduled)
|
|
21
|
+
return;
|
|
22
|
+
emitScheduled = true;
|
|
23
|
+
queueMicrotask(() => {
|
|
24
|
+
emitScheduled = false;
|
|
25
|
+
emit();
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
const all = () => {
|
|
29
|
+
if (cache)
|
|
30
|
+
return cache;
|
|
31
|
+
cache = entries.flatMap((entry) => entry.actions).sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
|
|
32
|
+
return cache;
|
|
33
|
+
};
|
|
34
|
+
return {
|
|
35
|
+
contribute(owner, actions) {
|
|
36
|
+
const entry = { owner, actions };
|
|
37
|
+
entries.push(entry);
|
|
38
|
+
scheduleEmit();
|
|
39
|
+
let removed = false;
|
|
40
|
+
return () => {
|
|
41
|
+
if (removed)
|
|
42
|
+
return;
|
|
43
|
+
removed = true;
|
|
44
|
+
const index = entries.indexOf(entry);
|
|
45
|
+
if (index >= 0)
|
|
46
|
+
entries.splice(index, 1);
|
|
47
|
+
scheduleEmit();
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
list(panelId) {
|
|
51
|
+
return all().filter((action) => action.panelId === panelId);
|
|
52
|
+
},
|
|
53
|
+
all,
|
|
54
|
+
onChange(listener) {
|
|
55
|
+
listeners.add(listener);
|
|
56
|
+
return () => { listeners.delete(listener); };
|
|
57
|
+
},
|
|
58
|
+
version() {
|
|
59
|
+
return version;
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Cleanup } from '../extension-foundation/types';
|
|
2
|
+
import type { PanelControlContribution, PanelControlsApi } from './types';
|
|
3
|
+
export interface PanelControlRegistry extends PanelControlsApi {
|
|
4
|
+
contribute(owner: string, controls: readonly PanelControlContribution[]): Cleanup;
|
|
5
|
+
}
|
|
6
|
+
export declare function createPanelControlRegistry(): PanelControlRegistry;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export function createPanelControlRegistry() {
|
|
2
|
+
const entries = [];
|
|
3
|
+
const listeners = new Set();
|
|
4
|
+
let version = 0;
|
|
5
|
+
const emit = () => {
|
|
6
|
+
version++;
|
|
7
|
+
for (const listener of [...listeners])
|
|
8
|
+
listener();
|
|
9
|
+
};
|
|
10
|
+
// Batch-deferred notification: data mutations (push/splice) happen
|
|
11
|
+
// immediately so reads (list/get) always return fresh data, but listener
|
|
12
|
+
// notifications are deferred to a microtask. This avoids triggering
|
|
13
|
+
// forceStoreRerender (useSyncExternalStore) during React 19's commit
|
|
14
|
+
// phase, which otherwise causes "Maximum update depth exceeded".
|
|
15
|
+
let emitScheduled = false;
|
|
16
|
+
const scheduleEmit = () => {
|
|
17
|
+
if (emitScheduled)
|
|
18
|
+
return;
|
|
19
|
+
emitScheduled = true;
|
|
20
|
+
queueMicrotask(() => {
|
|
21
|
+
emitScheduled = false;
|
|
22
|
+
emit();
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
const list = () => entries.flatMap((entry) => entry.controls);
|
|
26
|
+
return {
|
|
27
|
+
contribute(owner, controls) {
|
|
28
|
+
const entry = { owner, controls };
|
|
29
|
+
entries.push(entry);
|
|
30
|
+
scheduleEmit();
|
|
31
|
+
let removed = false;
|
|
32
|
+
return () => {
|
|
33
|
+
if (removed)
|
|
34
|
+
return;
|
|
35
|
+
removed = true;
|
|
36
|
+
const index = entries.indexOf(entry);
|
|
37
|
+
if (index >= 0)
|
|
38
|
+
entries.splice(index, 1);
|
|
39
|
+
scheduleEmit();
|
|
40
|
+
};
|
|
41
|
+
},
|
|
42
|
+
get(id) {
|
|
43
|
+
return list().find((control) => control.id === id);
|
|
44
|
+
},
|
|
45
|
+
list,
|
|
46
|
+
onChange(listener) {
|
|
47
|
+
listeners.add(listener);
|
|
48
|
+
return () => { listeners.delete(listener); };
|
|
49
|
+
},
|
|
50
|
+
version() {
|
|
51
|
+
return version;
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ContextKeysApi } from '../extension-foundation/context-keys';
|
|
2
|
+
import type { ResolvedPanelActionState } from './types';
|
|
3
|
+
interface ActionStateSource {
|
|
4
|
+
readonly when?: string;
|
|
5
|
+
readonly enablement?: string;
|
|
6
|
+
readonly activeWhen?: string;
|
|
7
|
+
readonly highlightWhen?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function resolvePanelActionState(action: ActionStateSource, contextKeys: ContextKeysApi): ResolvedPanelActionState;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { evaluateContextExpression } from './context-expression';
|
|
2
|
+
export function resolvePanelActionState(action, contextKeys) {
|
|
3
|
+
return {
|
|
4
|
+
visible: evaluateContextExpression(action.when, contextKeys, true),
|
|
5
|
+
enabled: evaluateContextExpression(action.enablement, contextKeys, true),
|
|
6
|
+
active: evaluateContextExpression(action.activeWhen, contextKeys, false),
|
|
7
|
+
highlighted: evaluateContextExpression(action.highlightWhen, contextKeys, false),
|
|
8
|
+
};
|
|
9
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/** Strip locations exposed by the footer StripHostView. `center` is the flex
|
|
3
|
+
* spacer between the left/right chip groups (content is flex-end aligned so a
|
|
4
|
+
* lone chip pins to the far right — matches the legacy status bar layout). */
|
|
5
|
+
export type StripLocationId = 'statusbar.left' | 'statusbar.center' | 'statusbar.right';
|
|
6
|
+
export declare const STRIP_LOCATIONS: readonly ["statusbar.left", "statusbar.center", "statusbar.right"];
|
|
7
|
+
export type StatusItemBody =
|
|
8
|
+
/** Static / derived text. */
|
|
9
|
+
{
|
|
10
|
+
readonly type: 'text';
|
|
11
|
+
readonly text: string;
|
|
12
|
+
readonly tooltip?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Icon/label button; clicking runs `command` through host.commands. */
|
|
15
|
+
| {
|
|
16
|
+
readonly type: 'button';
|
|
17
|
+
readonly label?: string;
|
|
18
|
+
/** lucide icon name (resolved by StripHostView), optional. */
|
|
19
|
+
readonly icon?: string;
|
|
20
|
+
readonly tooltip?: string;
|
|
21
|
+
readonly command: string;
|
|
22
|
+
readonly args?: unknown;
|
|
23
|
+
}
|
|
24
|
+
/** In-process live chip. The render owns its own subscriptions/polling. */
|
|
25
|
+
| {
|
|
26
|
+
readonly type: 'custom';
|
|
27
|
+
readonly render: () => ReactNode;
|
|
28
|
+
};
|
|
29
|
+
export interface StatusItemContribution {
|
|
30
|
+
readonly kind?: 'status-item';
|
|
31
|
+
/** Stable id; collisions overwrite (later contribution wins per key). */
|
|
32
|
+
readonly id: string;
|
|
33
|
+
readonly location: StripLocationId;
|
|
34
|
+
/** Higher = more permanent (anchored); lower = rotates in the carousel when
|
|
35
|
+
* the slot overflows. Default 0. */
|
|
36
|
+
readonly priority?: number;
|
|
37
|
+
/** Conditional visibility. Missing = always visible. */
|
|
38
|
+
readonly when?: () => boolean;
|
|
39
|
+
readonly item: StatusItemBody;
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const STRIP_LOCATIONS = ['statusbar.left', 'statusbar.center', 'statusbar.right'];
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import type { Cleanup } from '../extension-foundation/types';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
export type PanelActionLocation = 'header/left' | 'header/center' | 'header/right' | 'context';
|
|
4
|
+
export type PanelActionContribution = PanelCommandActionContribution | PanelMenuActionContribution | PanelControlActionContribution;
|
|
5
|
+
export interface PanelCommandActionContribution {
|
|
6
|
+
readonly kind?: 'command';
|
|
7
|
+
readonly id: string;
|
|
8
|
+
readonly panelId: string;
|
|
9
|
+
readonly command: string;
|
|
10
|
+
readonly title: string;
|
|
11
|
+
readonly label?: string;
|
|
12
|
+
readonly icon?: string;
|
|
13
|
+
readonly testId?: string;
|
|
14
|
+
readonly order?: number;
|
|
15
|
+
readonly location?: PanelActionLocation;
|
|
16
|
+
readonly group?: string;
|
|
17
|
+
/** Lower value folds into the overflow flyout first. Defaults to `order`. */
|
|
18
|
+
readonly overflowPriority?: number;
|
|
19
|
+
/** When true, never folds into the overflow flyout. */
|
|
20
|
+
readonly pinned?: boolean;
|
|
21
|
+
/** When true, folding drops the action instead of moving it into the flyout. */
|
|
22
|
+
readonly hideOnOverflow?: boolean;
|
|
23
|
+
readonly when?: string;
|
|
24
|
+
readonly enablement?: string;
|
|
25
|
+
readonly activeWhen?: string;
|
|
26
|
+
readonly highlightWhen?: string;
|
|
27
|
+
readonly args?: unknown;
|
|
28
|
+
}
|
|
29
|
+
export interface PanelMenuActionContribution {
|
|
30
|
+
readonly kind: 'menu';
|
|
31
|
+
readonly id: string;
|
|
32
|
+
readonly panelId: string;
|
|
33
|
+
readonly title: string;
|
|
34
|
+
readonly label?: string;
|
|
35
|
+
readonly labelContextKey?: string;
|
|
36
|
+
readonly icon?: string;
|
|
37
|
+
readonly testId?: string;
|
|
38
|
+
readonly order?: number;
|
|
39
|
+
readonly location?: Exclude<PanelActionLocation, 'context'>;
|
|
40
|
+
readonly group?: string;
|
|
41
|
+
readonly when?: string;
|
|
42
|
+
readonly enablement?: string;
|
|
43
|
+
readonly activeWhen?: string;
|
|
44
|
+
readonly highlightWhen?: string;
|
|
45
|
+
readonly items: readonly PanelMenuItemContribution[];
|
|
46
|
+
readonly itemsContextKey?: string;
|
|
47
|
+
/** Lower value folds into the overflow flyout first. Defaults to `order`. */
|
|
48
|
+
readonly overflowPriority?: number;
|
|
49
|
+
/** When true, never folds into the overflow flyout. */
|
|
50
|
+
readonly pinned?: boolean;
|
|
51
|
+
/** When true, folding drops the action instead of moving it into the flyout. */
|
|
52
|
+
readonly hideOnOverflow?: boolean;
|
|
53
|
+
}
|
|
54
|
+
export interface PanelControlActionContribution {
|
|
55
|
+
readonly kind: 'control';
|
|
56
|
+
readonly id: string;
|
|
57
|
+
readonly panelId: string;
|
|
58
|
+
readonly control: string;
|
|
59
|
+
readonly order?: number;
|
|
60
|
+
readonly location?: Exclude<PanelActionLocation, 'context'>;
|
|
61
|
+
readonly group?: string;
|
|
62
|
+
readonly when?: string;
|
|
63
|
+
readonly enablement?: string;
|
|
64
|
+
/** Lower value folds into the overflow flyout first. Defaults to `order`. */
|
|
65
|
+
readonly overflowPriority?: number;
|
|
66
|
+
/** When true, never folds into the overflow flyout. */
|
|
67
|
+
readonly pinned?: boolean;
|
|
68
|
+
/** When true, folding drops the action instead of moving it into the flyout. */
|
|
69
|
+
readonly hideOnOverflow?: boolean;
|
|
70
|
+
}
|
|
71
|
+
export type PanelMenuItemContribution = PanelCommandMenuItemContribution | PanelSeparatorMenuItemContribution;
|
|
72
|
+
export interface PanelCommandMenuItemContribution {
|
|
73
|
+
readonly kind?: 'command';
|
|
74
|
+
readonly id: string;
|
|
75
|
+
readonly command: string;
|
|
76
|
+
readonly title: string;
|
|
77
|
+
readonly icon?: string;
|
|
78
|
+
readonly checkable?: boolean;
|
|
79
|
+
readonly tone?: 'default' | 'reset';
|
|
80
|
+
readonly order?: number;
|
|
81
|
+
readonly when?: string;
|
|
82
|
+
readonly enablement?: string;
|
|
83
|
+
readonly activeWhen?: string;
|
|
84
|
+
readonly highlightWhen?: string;
|
|
85
|
+
readonly args?: unknown;
|
|
86
|
+
}
|
|
87
|
+
export interface PanelSeparatorMenuItemContribution {
|
|
88
|
+
readonly kind: 'separator';
|
|
89
|
+
readonly id: string;
|
|
90
|
+
readonly order?: number;
|
|
91
|
+
readonly when?: string;
|
|
92
|
+
}
|
|
93
|
+
export interface PanelActionInvokeContext {
|
|
94
|
+
readonly panelId: string;
|
|
95
|
+
readonly actionId: string;
|
|
96
|
+
readonly source: 'panel-header' | 'panel-context-menu';
|
|
97
|
+
readonly args?: unknown;
|
|
98
|
+
}
|
|
99
|
+
export interface ResolvedPanelActionState {
|
|
100
|
+
readonly visible: boolean;
|
|
101
|
+
readonly enabled: boolean;
|
|
102
|
+
readonly active: boolean;
|
|
103
|
+
readonly highlighted: boolean;
|
|
104
|
+
}
|
|
105
|
+
export interface PanelActionsApi {
|
|
106
|
+
contribute(owner: string, actions: readonly PanelActionContribution[]): Cleanup;
|
|
107
|
+
list(panelId: string): readonly PanelActionContribution[];
|
|
108
|
+
all(): readonly PanelActionContribution[];
|
|
109
|
+
onChange(listener: () => void): Cleanup;
|
|
110
|
+
version(): number;
|
|
111
|
+
}
|
|
112
|
+
export interface PanelControlRenderContext {
|
|
113
|
+
readonly panelId: string;
|
|
114
|
+
readonly actionId: string;
|
|
115
|
+
}
|
|
116
|
+
export interface PanelControlContribution {
|
|
117
|
+
readonly id: string;
|
|
118
|
+
readonly render: (ctx: PanelControlRenderContext) => ReactNode;
|
|
119
|
+
}
|
|
120
|
+
export interface PanelControlsApi {
|
|
121
|
+
contribute(owner: string, controls: readonly PanelControlContribution[]): Cleanup;
|
|
122
|
+
get(id: string): PanelControlContribution | undefined;
|
|
123
|
+
list(): readonly PanelControlContribution[];
|
|
124
|
+
onChange(listener: () => void): Cleanup;
|
|
125
|
+
version(): number;
|
|
126
|
+
}
|
|
127
|
+
export interface PanelHeaderDefinition {
|
|
128
|
+
readonly visible?: boolean;
|
|
129
|
+
readonly showTitle?: boolean;
|
|
130
|
+
readonly subtitle?: string;
|
|
131
|
+
readonly badges?: readonly PanelBadgeDefinition[];
|
|
132
|
+
}
|
|
133
|
+
export interface PanelContentDefinition {
|
|
134
|
+
readonly padding?: 'none' | 'sm' | 'md';
|
|
135
|
+
readonly scroll?: 'none' | 'auto';
|
|
136
|
+
readonly tone?: 'default' | 'surface' | 'tool';
|
|
137
|
+
}
|
|
138
|
+
export interface PanelBadgeDefinition {
|
|
139
|
+
readonly id: string;
|
|
140
|
+
readonly label: string;
|
|
141
|
+
readonly tone?: 'neutral' | 'info' | 'warning' | 'danger' | 'success';
|
|
142
|
+
readonly when?: string;
|
|
143
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight i18n core for the Studio interface.
|
|
3
|
+
*
|
|
4
|
+
* Design principles:
|
|
5
|
+
* - English is the SOURCE OF TRUTH. `locales/en.json` holds the English UI
|
|
6
|
+
* copy; reading it ≈ reading the English UI. Keys are English semantic
|
|
7
|
+
* identifiers. AI / developers read English everywhere; other languages are
|
|
8
|
+
* a user-facing overlay only.
|
|
9
|
+
* - Zero external deps. The public API is deliberately shaped like
|
|
10
|
+
* `react-i18next` (`useTranslation() → { t }`, `t(key, vars)`,
|
|
11
|
+
* `changeLanguage`, `{{var}}` interpolation) so it feels familiar and could
|
|
12
|
+
* be swapped for the real library later with near-zero churn.
|
|
13
|
+
* - Module-level store + `useSyncExternalStore`, matching this repo's
|
|
14
|
+
* hand-rolled store style (see StatusBar/store.ts, SettingsPanel/store.ts).
|
|
15
|
+
*
|
|
16
|
+
* Lookup order for any key: current locale → English → the key string itself.
|
|
17
|
+
*/
|
|
18
|
+
export type Locale = 'en' | 'zh';
|
|
19
|
+
export interface LocaleMeta {
|
|
20
|
+
/** BCP-47-ish code used as the locale id + persisted value + <html lang>. */
|
|
21
|
+
code: Locale;
|
|
22
|
+
/** English label (for code/AI-facing contexts). */
|
|
23
|
+
label: string;
|
|
24
|
+
/** Endonym shown to the user in the language picker. */
|
|
25
|
+
nativeLabel: string;
|
|
26
|
+
}
|
|
27
|
+
/** Adding a language = append here + drop a sibling JSON in ./locales. */
|
|
28
|
+
export declare const SUPPORTED_LOCALES: readonly LocaleMeta[];
|
|
29
|
+
export declare const DEFAULT_LOCALE: Locale;
|
|
30
|
+
export declare function initI18n(): void;
|
|
31
|
+
export declare function getLocale(): Locale;
|
|
32
|
+
/** Subscribe to host locale changes (same-tab; storage events don't fire locally). */
|
|
33
|
+
export declare function subscribeLocale(listener: (locale: Locale) => void): () => void;
|
|
34
|
+
export declare function setLocale(next: Locale, opts?: {
|
|
35
|
+
persist?: boolean;
|
|
36
|
+
}): void;
|
|
37
|
+
/** react-i18next-compatible alias. */
|
|
38
|
+
export declare function changeLanguage(next: Locale): void;
|
|
39
|
+
export declare function subscribe(fn: () => void): () => void;
|
|
40
|
+
export type TFunction = (key: string, vars?: Record<string, string | number>) => string;
|
|
41
|
+
/** Locale-agnostic translate. Falls back current → en → key. */
|
|
42
|
+
export declare function t(key: string, vars?: Record<string, string | number>): string;
|
|
43
|
+
/** react-i18next-compatible hook. Re-renders the caller on language change. */
|
|
44
|
+
export declare function useTranslation(): {
|
|
45
|
+
t: TFunction;
|
|
46
|
+
i18n: {
|
|
47
|
+
language: Locale;
|
|
48
|
+
changeLanguage: (l: Locale) => void;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight i18n core for the Studio interface.
|
|
3
|
+
*
|
|
4
|
+
* Design principles:
|
|
5
|
+
* - English is the SOURCE OF TRUTH. `locales/en.json` holds the English UI
|
|
6
|
+
* copy; reading it ≈ reading the English UI. Keys are English semantic
|
|
7
|
+
* identifiers. AI / developers read English everywhere; other languages are
|
|
8
|
+
* a user-facing overlay only.
|
|
9
|
+
* - Zero external deps. The public API is deliberately shaped like
|
|
10
|
+
* `react-i18next` (`useTranslation() → { t }`, `t(key, vars)`,
|
|
11
|
+
* `changeLanguage`, `{{var}}` interpolation) so it feels familiar and could
|
|
12
|
+
* be swapped for the real library later with near-zero churn.
|
|
13
|
+
* - Module-level store + `useSyncExternalStore`, matching this repo's
|
|
14
|
+
* hand-rolled store style (see StatusBar/store.ts, SettingsPanel/store.ts).
|
|
15
|
+
*
|
|
16
|
+
* Lookup order for any key: current locale → English → the key string itself.
|
|
17
|
+
*/
|
|
18
|
+
import { useSyncExternalStore } from 'react';
|
|
19
|
+
import { installCustomEventObservation, installStorageObservation, } from '@forgeax/app-shell/react';
|
|
20
|
+
import en from './locales/en.json';
|
|
21
|
+
import zh from './locales/zh.json';
|
|
22
|
+
import { STORAGE_KEYS } from '../lib/storageKeys';
|
|
23
|
+
import { flushBrowserPrefs } from '../lib/browser-prefs-sync';
|
|
24
|
+
/** Same-FRAME broadcast event. Injected editor panels (@forgeax/editor-panels)
|
|
25
|
+
* render in THIS frame but read their copy from @forgeax/editor-core/i18n — a
|
|
26
|
+
* SEPARATE store instance. It listens for this window event to re-read the
|
|
27
|
+
* locale, so a switch here live-updates the editor panels too. Must match
|
|
28
|
+
* editor-core's LOCALE_CHANGED_EVENT. (`storage` never fires in the document
|
|
29
|
+
* that wrote it, and the extension postMessage only reaches iframes, so this
|
|
30
|
+
* window event is the only same-frame channel.) */
|
|
31
|
+
const LOCALE_CHANGED_EVENT = 'forgeax:locale-changed';
|
|
32
|
+
/** Adding a language = append here + drop a sibling JSON in ./locales. */
|
|
33
|
+
export const SUPPORTED_LOCALES = [
|
|
34
|
+
{ code: 'en', label: 'English', nativeLabel: 'English' },
|
|
35
|
+
{ code: 'zh', label: 'Chinese', nativeLabel: '简体中文' },
|
|
36
|
+
];
|
|
37
|
+
export const DEFAULT_LOCALE = 'en';
|
|
38
|
+
const CATALOGS = { en: en, zh: zh };
|
|
39
|
+
// ── store ──────────────────────────────────────────────────────────────────
|
|
40
|
+
let current = DEFAULT_LOCALE;
|
|
41
|
+
const listeners = new Set();
|
|
42
|
+
function broadcastLocaleToExtensions(locale) {
|
|
43
|
+
if (typeof window === 'undefined')
|
|
44
|
+
return;
|
|
45
|
+
const msg = { type: 'forgeax:locale-changed', locale };
|
|
46
|
+
for (const iframe of document.querySelectorAll('iframe')) {
|
|
47
|
+
try {
|
|
48
|
+
iframe.contentWindow?.postMessage(msg, '*');
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
/* cross-origin or detached */
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function emit() {
|
|
56
|
+
broadcastLocaleToExtensions(current);
|
|
57
|
+
for (const fn of listeners)
|
|
58
|
+
fn();
|
|
59
|
+
}
|
|
60
|
+
function isLocale(v) {
|
|
61
|
+
return typeof v === 'string' && SUPPORTED_LOCALES.some((l) => l.code === v);
|
|
62
|
+
}
|
|
63
|
+
/** Read the persisted locale (no side effects). Falls back to the configured
|
|
64
|
+
* product default on first run (no stored value). English is the source UI;
|
|
65
|
+
* an explicit user selection is persisted and continues to win. */
|
|
66
|
+
function readPersisted() {
|
|
67
|
+
if (typeof window === 'undefined')
|
|
68
|
+
return DEFAULT_LOCALE;
|
|
69
|
+
try {
|
|
70
|
+
const raw = window.localStorage.getItem(STORAGE_KEYS.locale);
|
|
71
|
+
if (isLocale(raw))
|
|
72
|
+
return raw;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
/* private mode */
|
|
76
|
+
}
|
|
77
|
+
return DEFAULT_LOCALE;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Initialize locale from persisted prefs. Call once, early, in main.tsx.
|
|
81
|
+
* Safe to call again (idempotent) — restored prefs sync may re-trigger it.
|
|
82
|
+
*/
|
|
83
|
+
let storageWired = false;
|
|
84
|
+
export function initI18n() {
|
|
85
|
+
setLocale(readPersisted(), { persist: false });
|
|
86
|
+
// Cross-document/tab sync: the `storage` event fires in OTHER same-origin
|
|
87
|
+
// documents when localStorage changes. The editor runs same-origin (proxied
|
|
88
|
+
// at /editor/), so switching language in the host live-updates the editor
|
|
89
|
+
// shell (and vice-versa), plus multi-tab stays in sync. Apply with
|
|
90
|
+
// persist:false to avoid a write-loop.
|
|
91
|
+
if (!storageWired && typeof window !== 'undefined') {
|
|
92
|
+
storageWired = true;
|
|
93
|
+
const onLocaleStorage = (e) => {
|
|
94
|
+
if (!e.key || e.key === STORAGE_KEYS.locale)
|
|
95
|
+
setLocale(readPersisted(), { persist: false });
|
|
96
|
+
};
|
|
97
|
+
void installStorageObservation({ target: window, onStorage: onLocaleStorage });
|
|
98
|
+
// Symmetric same-frame sync: if the editor-core store initiates a switch it
|
|
99
|
+
// dispatches this window event; pick it up so the shell follows. persist:false
|
|
100
|
+
// + readPersisted() makes our own re-broadcast a no-op (no change → no
|
|
101
|
+
// re-emit), so there is no feedback loop.
|
|
102
|
+
const onLocaleChanged = (event) => {
|
|
103
|
+
const detail = event.detail;
|
|
104
|
+
setLocale(isLocale(detail) ? detail : readPersisted(), { persist: false });
|
|
105
|
+
};
|
|
106
|
+
void installCustomEventObservation({
|
|
107
|
+
target: window,
|
|
108
|
+
eventType: LOCALE_CHANGED_EVENT,
|
|
109
|
+
onEvent: onLocaleChanged,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export function getLocale() {
|
|
114
|
+
return current;
|
|
115
|
+
}
|
|
116
|
+
/** Subscribe to host locale changes (same-tab; storage events don't fire locally). */
|
|
117
|
+
export function subscribeLocale(listener) {
|
|
118
|
+
const wrapped = () => listener(current);
|
|
119
|
+
listeners.add(wrapped);
|
|
120
|
+
return () => listeners.delete(wrapped);
|
|
121
|
+
}
|
|
122
|
+
export function setLocale(next, opts = {}) {
|
|
123
|
+
const persist = opts.persist ?? true;
|
|
124
|
+
if (!isLocale(next))
|
|
125
|
+
return;
|
|
126
|
+
const changed = next !== current;
|
|
127
|
+
current = next;
|
|
128
|
+
if (typeof document !== 'undefined') {
|
|
129
|
+
document.documentElement.lang = next;
|
|
130
|
+
}
|
|
131
|
+
if (persist && typeof window !== 'undefined') {
|
|
132
|
+
try {
|
|
133
|
+
window.localStorage.setItem(STORAGE_KEYS.locale, next);
|
|
134
|
+
// Same-tab localStorage writes don't fire the `storage` event the prefs
|
|
135
|
+
// sync listens to, so push immediately — otherwise a quick reload would
|
|
136
|
+
// restore a stale server snapshot and revert the language.
|
|
137
|
+
if (changed)
|
|
138
|
+
void flushBrowserPrefs();
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
/* ignore */
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (changed) {
|
|
145
|
+
emit();
|
|
146
|
+
// Notify the same-frame editor-core i18n store (see LOCALE_CHANGED_EVENT).
|
|
147
|
+
// Runs AFTER the localStorage write so the listener's readPersisted() sees
|
|
148
|
+
// the new value.
|
|
149
|
+
if (typeof window !== 'undefined') {
|
|
150
|
+
try {
|
|
151
|
+
window.dispatchEvent(new CustomEvent(LOCALE_CHANGED_EVENT, { detail: next }));
|
|
152
|
+
}
|
|
153
|
+
catch { /* ignore */ }
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/** react-i18next-compatible alias. */
|
|
158
|
+
export function changeLanguage(next) {
|
|
159
|
+
setLocale(next);
|
|
160
|
+
}
|
|
161
|
+
export function subscribe(fn) {
|
|
162
|
+
listeners.add(fn);
|
|
163
|
+
return () => {
|
|
164
|
+
listeners.delete(fn);
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
// ── lookup ───────────────────────────────────────────────────────────────────
|
|
168
|
+
function resolve(catalog, key) {
|
|
169
|
+
// Support both flat keys ("settings.title" as a literal property) and nested
|
|
170
|
+
// objects ({ settings: { title } }). Try flat first, then walk the path.
|
|
171
|
+
const flat = catalog[key];
|
|
172
|
+
if (typeof flat === 'string')
|
|
173
|
+
return flat;
|
|
174
|
+
let node = catalog;
|
|
175
|
+
for (const part of key.split('.')) {
|
|
176
|
+
if (node && typeof node === 'object' && part in node) {
|
|
177
|
+
node = node[part];
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
return undefined;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return typeof node === 'string' ? node : undefined;
|
|
184
|
+
}
|
|
185
|
+
function interpolate(tpl, vars) {
|
|
186
|
+
if (!vars)
|
|
187
|
+
return tpl;
|
|
188
|
+
// Supports {{name}} (i18next style) and {name} (terse).
|
|
189
|
+
return tpl.replace(/\{\{?\s*(\w+)\s*\}?\}/g, (m, name) => name in vars ? String(vars[name]) : m);
|
|
190
|
+
}
|
|
191
|
+
/** Locale-agnostic translate. Falls back current → en → key. */
|
|
192
|
+
export function t(key, vars) {
|
|
193
|
+
const hit = resolve(CATALOGS[current], key) ??
|
|
194
|
+
(current !== 'en' ? resolve(CATALOGS.en, key) : undefined) ??
|
|
195
|
+
key;
|
|
196
|
+
return interpolate(hit, vars);
|
|
197
|
+
}
|
|
198
|
+
// ── React binding ────────────────────────────────────────────────────────────
|
|
199
|
+
const getSnapshot = () => current;
|
|
200
|
+
/** react-i18next-compatible hook. Re-renders the caller on language change. */
|
|
201
|
+
export function useTranslation() {
|
|
202
|
+
const language = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
203
|
+
// Return the module-level `t` (stable identity). It already reads `current`
|
|
204
|
+
// at call time, so a new closure per render is unnecessary and breaks any
|
|
205
|
+
// useEffect/useMemo that lists `t` as a dependency (infinite re-render loops).
|
|
206
|
+
return { t, i18n: { language, changeLanguage } };
|
|
207
|
+
}
|