@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,89 @@
|
|
|
1
|
+
// Storage key registry — the single place every localStorage key the interface
|
|
2
|
+
// owns is declared (architecture review §D). Before this, ~17 `forgeax:*` keys
|
|
3
|
+
// with ad-hoc versions (v1/v2/v4/v5) were scattered across modules with no map,
|
|
4
|
+
// making migrations easy to miss and collisions easy to introduce.
|
|
5
|
+
//
|
|
6
|
+
// RULE: never inline a `'forgeax…'` localStorage key string in a component.
|
|
7
|
+
// Add it here (with a one-line purpose + version note) and import the const.
|
|
8
|
+
//
|
|
9
|
+
// Versioning: when a value's SHAPE changes incompatibly, bump its key suffix
|
|
10
|
+
// (…:v2 → …:v3) and add a migration. The dockview layout uses a separate
|
|
11
|
+
// numeric stamp (LAYOUT_VERSION) handled by the page workspace migrator.
|
|
12
|
+
export const STORAGE_KEYS = {
|
|
13
|
+
// ── session / chat shell (store.ts) ──
|
|
14
|
+
/** persisted open chat tabs. */
|
|
15
|
+
tabs: 'forgeax.tabs',
|
|
16
|
+
/** active session id. */
|
|
17
|
+
activeSid: 'forgeax.activeSid',
|
|
18
|
+
/** active tab id. */
|
|
19
|
+
activeTabId: 'forgeax.activeTabId',
|
|
20
|
+
/** first-run boot splash seen flag. */
|
|
21
|
+
bootSplash: 'forgeax.boot.splash.v1',
|
|
22
|
+
/** first-run onboarding state machine (welcome→project→home). Shape:
|
|
23
|
+
* OnboardingPersisted (see components/Onboarding/types). v2 supersedes the
|
|
24
|
+
* legacy boolean `onboardingSeenLegacy`, which is read once to migrate. */
|
|
25
|
+
onboarding: 'forgeax.onboarding.v2',
|
|
26
|
+
/** legacy boolean "onboarding dismissed" flag (pre state-machine) — read once
|
|
27
|
+
* to migrate existing users past the first-run wizard, then ignored. */
|
|
28
|
+
onboardingSeenLegacy: 'forgeax.onboarding.seen',
|
|
29
|
+
// ── i18n ──
|
|
30
|
+
/** active UI language code ('en' | 'zh' | …). English is the default/source. */
|
|
31
|
+
locale: 'forgeax.locale',
|
|
32
|
+
// ── model routing ──
|
|
33
|
+
/** persistent cli provider override (store.ts). null → native forgeax path. */
|
|
34
|
+
providerOverride: 'forgeax.providerOverride',
|
|
35
|
+
/** { [providerKey]: modelId } — last model the user HAND-PICKED per provider
|
|
36
|
+
* (providerKey = cli-id | 'forgeax'). New sessions seed from this so the
|
|
37
|
+
* picker lands on "where I left off"; a provider SWITCH still resets to the
|
|
38
|
+
* provider default. See lib/model-prefs.ts. */
|
|
39
|
+
lastModelByProvider: 'forgeax.lastModel.byProvider.v1',
|
|
40
|
+
// ── reply language ──
|
|
41
|
+
/** agent chat reply language ('en' | 'zh'). Global, decoupled from UI locale.
|
|
42
|
+
* Default 'en'. Overridden per-turn by followInput when that is enabled. */
|
|
43
|
+
replyLanguage: 'forgeax.replyLanguage',
|
|
44
|
+
/** when '1', the agent reply language follows the detected language of each
|
|
45
|
+
* user message (highest priority). Default enabled ('1'). */
|
|
46
|
+
followInput: 'forgeax.followInput',
|
|
47
|
+
// ── publish module ──
|
|
48
|
+
/** when '1', the first-run Publish coach-mark has been seen (or skipped). */
|
|
49
|
+
publishOnboarded: 'forgeax.publish.onboarded',
|
|
50
|
+
/** Contact email reused by the manual feedback form. Plain string, v1. */
|
|
51
|
+
feedbackEmail: 'forgeax.feedback.email.v1',
|
|
52
|
+
// ── activity rail ──
|
|
53
|
+
/** [v3] qualified activity IDs pinned to the ActivityRail.
|
|
54
|
+
* Shape: string[]. Display order keeps the historical curated entries first,
|
|
55
|
+
* then follows ActivityRegistry order for newly pinned extensions;
|
|
56
|
+
* missing key → the historical 12-plugin product seed is derived. */
|
|
57
|
+
activityRailPinned: 'forgeax.activityRail.pinned.v3',
|
|
58
|
+
/** one-shot migration marker: add the Video Game entry to existing v3 pins
|
|
59
|
+
* once without re-pinning it after a deliberate user unpin. */
|
|
60
|
+
activityRailPinnedVideoGameDefault: 'forgeax.activityRail.pinned.videoGameDefault.v1',
|
|
61
|
+
/** [ABANDONED, v2] briefly seeded every registered activity; intentionally not migrated. */
|
|
62
|
+
activityRailPinnedLegacyV2: 'forgeax.activityRail.pinned.v2',
|
|
63
|
+
/** [LEGACY, v1] plugin slugs (or early qualified IDs); read-only migration source. */
|
|
64
|
+
activityRailPinnedLegacyV1: 'forgeax.activityRail.pinned.v1',
|
|
65
|
+
};
|
|
66
|
+
// Cross-component window CustomEvent names (NOT storage, but same "stringly-typed
|
|
67
|
+
// global namespace" footgun — centralized here so they can't drift either).
|
|
68
|
+
export const APP_EVENTS = {
|
|
69
|
+
dockLayoutToggle: 'forgeax:shell:dock-layout-toggle',
|
|
70
|
+
dockReset: 'forgeax:shell:dock-reset',
|
|
71
|
+
animHandoff: 'forgeax:anim-handoff',
|
|
72
|
+
/** Viewport run axis changed. detail: { running: boolean }. */
|
|
73
|
+
viewportRunChanged: 'forgeax:viewport-run-changed',
|
|
74
|
+
/** Open (or focus, if already open) a dock panel by id. detail: { id: string } */
|
|
75
|
+
openPanel: 'forgeax:shell:open-panel',
|
|
76
|
+
/** Focus a dock panel by id ONLY if it already exists (no reopen / no force-insert). detail: { id: string } */
|
|
77
|
+
focusPanel: 'forgeax:shell:focus-panel',
|
|
78
|
+
/** Chat composer intercepted a send with no model path — open the connect
|
|
79
|
+
* prompt. detail: { text?: string } (the pending message, echoed back on
|
|
80
|
+
* resume so the composer can re-send it after the user connects). */
|
|
81
|
+
openConnectPrompt: 'forgeax:open-connect-prompt',
|
|
82
|
+
/** Connect prompt resolved with a usable model path — the composer that
|
|
83
|
+
* opened it should re-send the pending message. detail: { text?: string } */
|
|
84
|
+
resumeSend: 'forgeax:resume-send',
|
|
85
|
+
/** Onboarding milestones changed in the SAME session (tour finished, first
|
|
86
|
+
* chat done) — lets the chat empty-state hint react without a reload, since
|
|
87
|
+
* it can't re-read localStorage on its own. No detail. */
|
|
88
|
+
onboardingChanged: 'forgeax:onboarding-changed',
|
|
89
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase D2 — surface store.
|
|
3
|
+
*
|
|
4
|
+
* In-process registry of `surface.expose` snapshots that arrive from plugin
|
|
5
|
+
* iframes via the host SDK (`port.surface.subscribe` in StandaloneExtensionIframe).
|
|
6
|
+
* Lets the dev-mode hover overlay show "this button equals tool X(args)" and
|
|
7
|
+
* gives an AI prompt-builder a single place to read the catalogue of UI
|
|
8
|
+
* actions the user could currently click.
|
|
9
|
+
*
|
|
10
|
+
* Scope intentionally narrow: a Map keyed on `extensionId:surfaceId`, plus a
|
|
11
|
+
* subscribe(cb) fanout. No persistence, no server round-trip — a refresh
|
|
12
|
+
* tears it down and the next iframe load re-emits expose().
|
|
13
|
+
*/
|
|
14
|
+
export interface SurfaceAction {
|
|
15
|
+
id: string;
|
|
16
|
+
label?: string;
|
|
17
|
+
args?: unknown;
|
|
18
|
+
enabled: boolean;
|
|
19
|
+
hotkey?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface SurfaceState {
|
|
22
|
+
extensionId: string;
|
|
23
|
+
surfaceId: string;
|
|
24
|
+
actions: SurfaceAction[];
|
|
25
|
+
snapshot: unknown;
|
|
26
|
+
/** Wall-clock ms when this surface was last refreshed by the plugin. */
|
|
27
|
+
updatedAt: number;
|
|
28
|
+
}
|
|
29
|
+
type Listener = (snapshot: ReadonlyMap<string, SurfaceState>) => void;
|
|
30
|
+
export declare function upsertSurface(s: SurfaceState): void;
|
|
31
|
+
/** Drop every surface owned by `extensionId`. Call when an iframe unmounts. */
|
|
32
|
+
export declare function removeExtensionSurfaces(extensionId: string): void;
|
|
33
|
+
export declare function listSurfaces(): SurfaceState[];
|
|
34
|
+
export declare function getSurface(extensionId: string, surfaceId: string): SurfaceState | null;
|
|
35
|
+
export declare function subscribeSurfaces(cb: Listener): () => void;
|
|
36
|
+
/** Test helper. */
|
|
37
|
+
export declare function _resetSurfaceStoreForTests(): void;
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase D2 — surface store.
|
|
3
|
+
*
|
|
4
|
+
* In-process registry of `surface.expose` snapshots that arrive from plugin
|
|
5
|
+
* iframes via the host SDK (`port.surface.subscribe` in StandaloneExtensionIframe).
|
|
6
|
+
* Lets the dev-mode hover overlay show "this button equals tool X(args)" and
|
|
7
|
+
* gives an AI prompt-builder a single place to read the catalogue of UI
|
|
8
|
+
* actions the user could currently click.
|
|
9
|
+
*
|
|
10
|
+
* Scope intentionally narrow: a Map keyed on `extensionId:surfaceId`, plus a
|
|
11
|
+
* subscribe(cb) fanout. No persistence, no server round-trip — a refresh
|
|
12
|
+
* tears it down and the next iframe load re-emits expose().
|
|
13
|
+
*/
|
|
14
|
+
const surfaces = new Map();
|
|
15
|
+
const listeners = new Set();
|
|
16
|
+
function key(extensionId, surfaceId) {
|
|
17
|
+
return `${extensionId}:${surfaceId}`;
|
|
18
|
+
}
|
|
19
|
+
function fanout() {
|
|
20
|
+
for (const cb of listeners) {
|
|
21
|
+
try {
|
|
22
|
+
cb(surfaces);
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
if (typeof console !== 'undefined')
|
|
26
|
+
console.error('[surface-store] listener', e);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function upsertSurface(s) {
|
|
31
|
+
surfaces.set(key(s.extensionId, s.surfaceId), { ...s, updatedAt: Date.now() });
|
|
32
|
+
fanout();
|
|
33
|
+
}
|
|
34
|
+
/** Drop every surface owned by `extensionId`. Call when an iframe unmounts. */
|
|
35
|
+
export function removeExtensionSurfaces(extensionId) {
|
|
36
|
+
let changed = false;
|
|
37
|
+
for (const k of [...surfaces.keys()]) {
|
|
38
|
+
if (surfaces.get(k).extensionId === extensionId) {
|
|
39
|
+
surfaces.delete(k);
|
|
40
|
+
changed = true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (changed)
|
|
44
|
+
fanout();
|
|
45
|
+
}
|
|
46
|
+
export function listSurfaces() {
|
|
47
|
+
return [...surfaces.values()];
|
|
48
|
+
}
|
|
49
|
+
export function getSurface(extensionId, surfaceId) {
|
|
50
|
+
return surfaces.get(key(extensionId, surfaceId)) ?? null;
|
|
51
|
+
}
|
|
52
|
+
export function subscribeSurfaces(cb) {
|
|
53
|
+
listeners.add(cb);
|
|
54
|
+
return () => {
|
|
55
|
+
listeners.delete(cb);
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** Test helper. */
|
|
59
|
+
export function _resetSurfaceStoreForTests() {
|
|
60
|
+
surfaces.clear();
|
|
61
|
+
listeners.clear();
|
|
62
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** 服务端 ui-surfaces.ts 的 JsonSchema 同构, 客户端不强约束. */
|
|
2
|
+
export type JsonSchema = Record<string, unknown>;
|
|
3
|
+
export type UIActionSource = "ai" | "user" | "plugin";
|
|
4
|
+
export interface UISurfaceActionDef<A = unknown> {
|
|
5
|
+
/** 唯一动作 id (跨 surface 内唯一). */
|
|
6
|
+
id: string;
|
|
7
|
+
argsSchema?: JsonSchema;
|
|
8
|
+
exposedToAI?: boolean;
|
|
9
|
+
requireConfirm?: boolean;
|
|
10
|
+
/** Local handler. 玩家 / AI 路径在这里收敛.
|
|
11
|
+
* 返回值会作为 ack.result 回服务端. throw -> ack.ok=false + error. */
|
|
12
|
+
run: (args: A, ctx: ActionContext) => unknown | Promise<unknown>;
|
|
13
|
+
}
|
|
14
|
+
export interface ActionContext {
|
|
15
|
+
/** 来源 'ai' / 'user' / 'plugin' -- handler 可据此决定是否弹确认. */
|
|
16
|
+
source: UIActionSource;
|
|
17
|
+
/** AI 路径独有: enqueueAction 给的 token. user 路径为 null. */
|
|
18
|
+
token: string | null;
|
|
19
|
+
}
|
|
20
|
+
export interface UseSurfaceOptions<S, AMap extends Record<string, UISurfaceActionDef>> {
|
|
21
|
+
id: string;
|
|
22
|
+
layer?: "host" | "plugin" | "iframe";
|
|
23
|
+
schema: JsonSchema;
|
|
24
|
+
initialSnapshot: S;
|
|
25
|
+
actions: AMap;
|
|
26
|
+
/** false -> 整个 surface 不报给 AI (e.g. dev-only debug surface). 默认 true. */
|
|
27
|
+
exposedToAI?: boolean;
|
|
28
|
+
/** AI pending action 轮询间隔. <=0 关闭轮询. 默认 1000ms. */
|
|
29
|
+
pollIntervalMs?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface SurfaceHandle<S, AMap extends Record<string, UISurfaceActionDef>> {
|
|
32
|
+
/** 当前 snapshot (React state, 触发 re-render). */
|
|
33
|
+
snapshot: S;
|
|
34
|
+
/** 主写入入口 -- 调用方更新 state 时调; 同时 PUT 给服务端. */
|
|
35
|
+
setSnapshot: (next: S | ((prev: S) => S)) => void;
|
|
36
|
+
/** 玩家 / 本地路径调一个 action. 也是 AI 路径轮询拿到 pending 后内部调的同一函数. */
|
|
37
|
+
dispatch: <K extends keyof AMap>(action: K, args: Parameters<AMap[K]["run"]>[0]) => Promise<unknown>;
|
|
38
|
+
/** 服务端是否已确认 register OK (failed register 不阻塞 UI, 但 AI 路径会熄火). */
|
|
39
|
+
mounted: boolean;
|
|
40
|
+
/** 最近一次 PUT/POST 错误 (用于 dev banner). */
|
|
41
|
+
lastError: string | null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* useSurface -- 把一个 React 组件挂成 UISurface.
|
|
45
|
+
*
|
|
46
|
+
* 重要不变量 (DUAL-MODALITY §2.1):
|
|
47
|
+
* - DOM event handler 内部必须走 dispatch() 而非 inline setState; 这是把 AI 路径
|
|
48
|
+
* 提升成一等公民的代价. setSnapshot 只用于"非动作驱动的状态同步"
|
|
49
|
+
* (e.g. 外部 store mirror).
|
|
50
|
+
* - 每次 setSnapshot 自动 PUT 服务端镜像 (server 是 snapshot 的 source of truth
|
|
51
|
+
* for AI; React state 是 source of truth for DOM render).
|
|
52
|
+
*
|
|
53
|
+
* 错误处理: register 失败不抛 -- 客户端仍可玩本地, 只是 AI 看不到这个 surface.
|
|
54
|
+
* lastError 暴露原因, dev banner 可挂.
|
|
55
|
+
*/
|
|
56
|
+
export declare function useSurface<S, AMap extends Record<string, UISurfaceActionDef>>(opts: UseSurfaceOptions<S, AMap>): SurfaceHandle<S, AMap>;
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
// P9.3 — useSurface() hook + thin client around /api/bus/ui/* (server router
|
|
2
|
+
// lives at packages/server/src/api/ui-surfaces.ts).
|
|
3
|
+
//
|
|
4
|
+
// Spec: forgeax-dev-diary/2026-05-16/DUAL-MODALITY-UI.md §四 (4 层物理实现)
|
|
5
|
+
//
|
|
6
|
+
// 双模态 (dual-modality) 收敛点的 React 端实现:
|
|
7
|
+
// 1. mount useSurface() effect 启动时 POST /surfaces 注册 schema + 初始 snapshot
|
|
8
|
+
// 2. update 调用方每次 state 变化调 setSnapshot() 并 PUT 服务端镜像
|
|
9
|
+
// 3. dispatch DOM event handler 调 dispatch('act', args) 直走本地 actions[act].run
|
|
10
|
+
// 4. ai-path AI POST /surfaces/:id/action 入队; hook 轮询 /pending 拉走 +
|
|
11
|
+
// 同样调 actions[act].run + POST /ack 上报结果
|
|
12
|
+
// 5. unmount cleanup -> DELETE /surfaces/:id
|
|
13
|
+
//
|
|
14
|
+
// 注意: 服务端 registry 是 in-mem 单进程; vite dev 重启不掉服务端 -- 我们靠
|
|
15
|
+
// register 时 "re-mount 同 id" 语义 (UISurfaceRegistry.register 检测旧 record,
|
|
16
|
+
// pending 不丢, 走 ui.surface.mounted remount:true) 保证刷新无副作用.
|
|
17
|
+
import { useEffect, useRef, useState, useCallback } from "react";
|
|
18
|
+
/** 本页面的身份。surface id(host.sidebar 等)是"这类界面"的名字,不是"哪个页面"
|
|
19
|
+
* 的名字 —— 两个 ForgeaX 标签页注册同一个 id、共用同一条 pending 队列和同一份
|
|
20
|
+
* snapshot。于是一次 AI 派发落在哪一页是随机的,而回读 snapshot 又必然"验证成功"
|
|
21
|
+
* (那份 snapshot 正是执行了动作的那一页 PUT 上来的),工具就会向用户断言一个
|
|
22
|
+
* 他看不见的变化。轮询时把这个 id 带上,服务端据此数出"现在有几个页面在听",
|
|
23
|
+
* >1 时工具改说"无法确认是哪一页动了",而不是继续断言。
|
|
24
|
+
*
|
|
25
|
+
* 只做**检测**不做路由:知道有几页 ≠ 知道用户在看哪一页(那需要焦点上报 +
|
|
26
|
+
* 按页分队列)。先把撒谎那部分干掉。 */
|
|
27
|
+
const PAGE_ID = `p${Math.random().toString(36).slice(2, 9)}`;
|
|
28
|
+
const POLL_INTERVAL_MS = 1000;
|
|
29
|
+
/**
|
|
30
|
+
* useSurface -- 把一个 React 组件挂成 UISurface.
|
|
31
|
+
*
|
|
32
|
+
* 重要不变量 (DUAL-MODALITY §2.1):
|
|
33
|
+
* - DOM event handler 内部必须走 dispatch() 而非 inline setState; 这是把 AI 路径
|
|
34
|
+
* 提升成一等公民的代价. setSnapshot 只用于"非动作驱动的状态同步"
|
|
35
|
+
* (e.g. 外部 store mirror).
|
|
36
|
+
* - 每次 setSnapshot 自动 PUT 服务端镜像 (server 是 snapshot 的 source of truth
|
|
37
|
+
* for AI; React state 是 source of truth for DOM render).
|
|
38
|
+
*
|
|
39
|
+
* 错误处理: register 失败不抛 -- 客户端仍可玩本地, 只是 AI 看不到这个 surface.
|
|
40
|
+
* lastError 暴露原因, dev banner 可挂.
|
|
41
|
+
*/
|
|
42
|
+
export function useSurface(opts) {
|
|
43
|
+
const { id, layer = "host", schema, initialSnapshot, actions, exposedToAI, pollIntervalMs } = opts;
|
|
44
|
+
const [snapshot, _setSnapshot] = useState(initialSnapshot);
|
|
45
|
+
const [mounted, setMounted] = useState(false);
|
|
46
|
+
const [lastError, setLastError] = useState(null);
|
|
47
|
+
const snapshotRef = useRef(initialSnapshot);
|
|
48
|
+
const actionsRef = useRef(actions);
|
|
49
|
+
// actionsRef 跟随 actions prop (closures 经常引用最新 state) -- 关键: 不要把
|
|
50
|
+
// actions 进依赖, 否则每次父组件 re-render 都会触发卸载 -> 重新 register, 闪烁.
|
|
51
|
+
actionsRef.current = actions;
|
|
52
|
+
// setSnapshot wrapper -- 1) React state 2) snapshot ref 3) PUT 服务端
|
|
53
|
+
const setSnapshot = useCallback((next) => {
|
|
54
|
+
_setSnapshot((prev) => {
|
|
55
|
+
const v = typeof next === "function" ? next(prev) : next;
|
|
56
|
+
snapshotRef.current = v;
|
|
57
|
+
// Fire-and-forget; PUT 失败仅写 lastError, 不回滚 React state.
|
|
58
|
+
void fetch(`/api/bus/ui/surfaces/${encodeURIComponent(id)}/snapshot`, {
|
|
59
|
+
method: "PUT",
|
|
60
|
+
headers: { "content-type": "application/json" },
|
|
61
|
+
body: JSON.stringify({ snapshot: v }),
|
|
62
|
+
})
|
|
63
|
+
.then((r) => {
|
|
64
|
+
if (!r.ok)
|
|
65
|
+
setLastError(`PUT snapshot HTTP ${r.status}`);
|
|
66
|
+
else
|
|
67
|
+
setLastError(null);
|
|
68
|
+
})
|
|
69
|
+
.catch((e) => setLastError(`PUT snapshot: ${e.message}`));
|
|
70
|
+
return v;
|
|
71
|
+
});
|
|
72
|
+
}, [id]);
|
|
73
|
+
// dispatch -- DOM 路径 + AI 路径在这里收敛.
|
|
74
|
+
const dispatch = useCallback(async (action, args) => {
|
|
75
|
+
const def = actionsRef.current[action];
|
|
76
|
+
if (!def) {
|
|
77
|
+
throw new Error(`[useSurface ${id}] unknown action: ${String(action)}`);
|
|
78
|
+
}
|
|
79
|
+
// 单门账本对称:AI 路径每步落 ui.surface.action,人路径此前零记录。
|
|
80
|
+
// handler 已在本地跑,这里只补账 —— fire-and-forget,不挡交互,失败静默
|
|
81
|
+
// (账本是观测面,不是功能依赖)。
|
|
82
|
+
void fetch(`/api/bus/ui/surfaces/${encodeURIComponent(id)}/dispatched`, {
|
|
83
|
+
method: "POST",
|
|
84
|
+
headers: { "content-type": "application/json" },
|
|
85
|
+
body: JSON.stringify({ action: def.id, args }),
|
|
86
|
+
}).catch(() => { });
|
|
87
|
+
return await def.run(args, { source: "user", token: null });
|
|
88
|
+
}, [id]);
|
|
89
|
+
// register / unregister effect -- 仅依赖 id + layer + schema + exposedToAI.
|
|
90
|
+
// actions 通过 actionsRef 兜底, 不进依赖.
|
|
91
|
+
useEffect(() => {
|
|
92
|
+
let cancelled = false;
|
|
93
|
+
const body = {
|
|
94
|
+
id,
|
|
95
|
+
layer,
|
|
96
|
+
// 注册即入册:注销要按**在册成员**判定,不能靠"最近有没有轮询"——只读面
|
|
97
|
+
// (所有 action 对 AI 隐藏)根本不进轮询循环(2026-08-06 外审)。
|
|
98
|
+
page: PAGE_ID,
|
|
99
|
+
schema,
|
|
100
|
+
snapshot: snapshotRef.current,
|
|
101
|
+
exposedToAI: exposedToAI !== false,
|
|
102
|
+
actions: Object.values(actionsRef.current).map((a) => ({
|
|
103
|
+
id: a.id,
|
|
104
|
+
argsSchema: a.argsSchema,
|
|
105
|
+
exposedToAI: a.exposedToAI,
|
|
106
|
+
requireConfirm: a.requireConfirm,
|
|
107
|
+
})),
|
|
108
|
+
};
|
|
109
|
+
fetch("/api/bus/ui/surfaces", {
|
|
110
|
+
method: "POST",
|
|
111
|
+
headers: { "content-type": "application/json" },
|
|
112
|
+
body: JSON.stringify(body),
|
|
113
|
+
})
|
|
114
|
+
.then((r) => {
|
|
115
|
+
if (cancelled)
|
|
116
|
+
return;
|
|
117
|
+
if (!r.ok) {
|
|
118
|
+
setLastError(`register HTTP ${r.status}`);
|
|
119
|
+
setMounted(false);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
setLastError(null);
|
|
123
|
+
setMounted(true);
|
|
124
|
+
}
|
|
125
|
+
})
|
|
126
|
+
.catch((e) => {
|
|
127
|
+
if (!cancelled) {
|
|
128
|
+
setLastError(`register: ${e.message}`);
|
|
129
|
+
setMounted(false);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
return () => {
|
|
133
|
+
cancelled = true;
|
|
134
|
+
// best-effort DELETE -- 失败不影响 React 卸载.
|
|
135
|
+
// 按页注销:多个标签页共用同一个 surface id,整删会把别的页面一起弄哑
|
|
136
|
+
// (2026-08-06 外审 MAJOR)。服务端只在没有其他存活页面时才真正移除记录。
|
|
137
|
+
void fetch(`/api/bus/ui/surfaces/${encodeURIComponent(id)}?page=${encodeURIComponent(PAGE_ID)}`, { method: "DELETE" }).catch(() => { });
|
|
138
|
+
};
|
|
139
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
140
|
+
}, [id, layer, exposedToAI]);
|
|
141
|
+
// pending-action polling -- AI 路径的客户端 puller.
|
|
142
|
+
useEffect(() => {
|
|
143
|
+
const interval = pollIntervalMs ?? POLL_INTERVAL_MS;
|
|
144
|
+
if (interval <= 0)
|
|
145
|
+
return;
|
|
146
|
+
if (!mounted)
|
|
147
|
+
return;
|
|
148
|
+
// A surface whose actions are all hidden from AI has no server-to-client
|
|
149
|
+
// action path to service. Avoid a permanent empty GET loop for read-only
|
|
150
|
+
// surfaces such as host.toast; snapshot mirroring still works normally.
|
|
151
|
+
const hasAiActions = Object.values(actionsRef.current).some((action) => action.exposedToAI !== false);
|
|
152
|
+
if (!hasAiActions)
|
|
153
|
+
return;
|
|
154
|
+
let stopped = false;
|
|
155
|
+
let timer = null;
|
|
156
|
+
// 404 backoff -- StrictMode 双 mount / 启动期 race 期间 register POST
|
|
157
|
+
// 还没落到 server, polling 这边就先看到 404. 默认 1s 间隔会瞬间在 console
|
|
158
|
+
// 喷一大坨. 收到 404 时退避到 30s, 给 register 留下窗口; 任何 200 立刻
|
|
159
|
+
// 回到正常 interval.
|
|
160
|
+
const NOT_FOUND_BACKOFF_MS = 30_000;
|
|
161
|
+
const tick = async () => {
|
|
162
|
+
if (stopped)
|
|
163
|
+
return;
|
|
164
|
+
let nextDelay = interval;
|
|
165
|
+
try {
|
|
166
|
+
const r = await fetch(`/api/bus/ui/surfaces/${encodeURIComponent(id)}/pending?page=${PAGE_ID}`);
|
|
167
|
+
if (!stopped && r.ok) {
|
|
168
|
+
const body = (await r.json());
|
|
169
|
+
for (const item of body.items) {
|
|
170
|
+
const def = actionsRef.current[item.action];
|
|
171
|
+
if (!def) {
|
|
172
|
+
// ack as error so server side ledger logs it -- 客户端没这个 action 了
|
|
173
|
+
await ack(id, item.token, false, undefined, `client-side unknown action: ${item.action}`);
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
try {
|
|
177
|
+
const result = await def.run(item.args, { source: item.source, token: item.token });
|
|
178
|
+
await ack(id, item.token, true, result, undefined);
|
|
179
|
+
}
|
|
180
|
+
catch (e) {
|
|
181
|
+
// 结构化标记随回执上报;丢在这里,下游就只能去错误文案里捞子串。
|
|
182
|
+
// **只在为真时才传** —— `=== true` 会把"没有这个属性"变成 false,而 false
|
|
183
|
+
// 在协议里意思是"确定没开始执行"(可以安全回落重派),与"未知"后果相反。
|
|
184
|
+
// 2026-08-07:这条纪律我在别处写了三遍,却在这一行自己违反了,由新增的
|
|
185
|
+
// ack 请求体钉子照出来。
|
|
186
|
+
const started = e.started === true ? true : undefined;
|
|
187
|
+
await ack(id, item.token, false, undefined, e.message, started);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
else if (!stopped && r.status === 404) {
|
|
192
|
+
nextDelay = NOT_FOUND_BACKOFF_MS;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
// 网络抖动: 静默重试; lastError 由 register / snapshot 路径报.
|
|
197
|
+
}
|
|
198
|
+
finally {
|
|
199
|
+
if (!stopped)
|
|
200
|
+
timer = setTimeout(tick, nextDelay);
|
|
201
|
+
}
|
|
202
|
+
};
|
|
203
|
+
timer = setTimeout(tick, interval);
|
|
204
|
+
return () => {
|
|
205
|
+
stopped = true;
|
|
206
|
+
if (timer)
|
|
207
|
+
clearTimeout(timer);
|
|
208
|
+
};
|
|
209
|
+
}, [id, mounted, pollIntervalMs]);
|
|
210
|
+
return { snapshot, setSnapshot, dispatch, mounted, lastError };
|
|
211
|
+
}
|
|
212
|
+
async function ack(id, token, ok, result, error, started) {
|
|
213
|
+
try {
|
|
214
|
+
await fetch(`/api/bus/ui/surfaces/${encodeURIComponent(id)}/ack`, {
|
|
215
|
+
method: "POST",
|
|
216
|
+
headers: { "content-type": "application/json" },
|
|
217
|
+
// started 缺省 = **未知**,不能用 false 冒充"确定没开始" —— 消费方据键的有无判断。
|
|
218
|
+
// (2026-08-07 外审 N3:此前这个信号只活在中文错误文案的子串里,重排一句话就失效。)
|
|
219
|
+
body: JSON.stringify({ token, ok, result, error, ...(started === undefined ? {} : { started }) }),
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
// 静默 -- ack 失败时上层 action 已 run, ledger 拿不到 applied 事件就是结果.
|
|
224
|
+
}
|
|
225
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type SurfaceKind = 'play' | 'edit';
|
|
2
|
+
type AnchorListener = () => void;
|
|
3
|
+
/** Register (el) / unregister (null) the DOM node that marks where `kind`'s
|
|
4
|
+
* surface should be drawn. Call from the dockview panel's mount/unmount. */
|
|
5
|
+
export declare function setAnchor(kind: SurfaceKind, el: HTMLElement | null): void;
|
|
6
|
+
export declare function getAnchor(kind: SurfaceKind): HTMLElement | null;
|
|
7
|
+
/** Fires whenever an anchor is added/removed (panel mount/unmount, workspace
|
|
8
|
+
* switch, pop-out). The keep-alive layer re-evaluates which surface is visible. */
|
|
9
|
+
export declare function subscribeAnchors(cb: AnchorListener): () => void;
|
|
10
|
+
/** Pure position/size invalidation — anchor identity unchanged but its rect may
|
|
11
|
+
* have moved (dock drag/resize/close). DockShell pings this on layout change. */
|
|
12
|
+
export declare function pingAnchorRelayout(): void;
|
|
13
|
+
export declare function subscribeRelayout(cb: AnchorListener): () => void;
|
|
14
|
+
/** Test helper. */
|
|
15
|
+
export declare function _resetSurfaceAnchorsForTests(): void;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// Surface anchor registry — the bridge between the dockview `preview`/`edit`
|
|
2
|
+
// panels and the always-mounted SurfaceKeepAliveLayer.
|
|
3
|
+
//
|
|
4
|
+
// Why this exists: Play / Edit / AI are separate dockview *workspaces*. Switching
|
|
5
|
+
// tabs rebuilds the whole dock tree (DockShell `api.fromJSON`/`clear+buildDefault`),
|
|
6
|
+
// which would destroy + cold-reboot the heavy Play/Edit viewport iframes on every
|
|
7
|
+
// switch (the freeze). To keep those iframes ALIVE we mount them ONCE in a stable
|
|
8
|
+
// parent outside dockview (SurfaceKeepAliveLayer) and position each one over the
|
|
9
|
+
// place where its dockview panel currently sits. The dockview panel renders only a
|
|
10
|
+
// thin `<SurfaceAnchor>` placeholder that publishes its DOM element here; the layer
|
|
11
|
+
// reads the active anchor's rect and overlays the live surface on top.
|
|
12
|
+
//
|
|
13
|
+
// Same "render-but-hide, never re-parent" idea as KeepAliveExtensionIframes — moving an
|
|
14
|
+
// iframe between DOM parents forces a reload, so the iframe never moves; only its
|
|
15
|
+
// fixed-position rect tracks the anchor.
|
|
16
|
+
const anchors = new Map();
|
|
17
|
+
const anchorListeners = new Set();
|
|
18
|
+
const relayoutListeners = new Set();
|
|
19
|
+
function notifyAnchors() {
|
|
20
|
+
for (const cb of anchorListeners) {
|
|
21
|
+
try {
|
|
22
|
+
cb();
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
if (typeof console !== 'undefined')
|
|
26
|
+
console.error('[surfaceAnchors] listener', e);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Register (el) / unregister (null) the DOM node that marks where `kind`'s
|
|
31
|
+
* surface should be drawn. Call from the dockview panel's mount/unmount. */
|
|
32
|
+
export function setAnchor(kind, el) {
|
|
33
|
+
if (el) {
|
|
34
|
+
if (anchors.get(kind) === el)
|
|
35
|
+
return;
|
|
36
|
+
anchors.set(kind, el);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
if (!anchors.has(kind))
|
|
40
|
+
return;
|
|
41
|
+
anchors.delete(kind);
|
|
42
|
+
}
|
|
43
|
+
notifyAnchors();
|
|
44
|
+
}
|
|
45
|
+
export function getAnchor(kind) {
|
|
46
|
+
return anchors.get(kind) ?? null;
|
|
47
|
+
}
|
|
48
|
+
/** Fires whenever an anchor is added/removed (panel mount/unmount, workspace
|
|
49
|
+
* switch, pop-out). The keep-alive layer re-evaluates which surface is visible. */
|
|
50
|
+
export function subscribeAnchors(cb) {
|
|
51
|
+
anchorListeners.add(cb);
|
|
52
|
+
return () => { anchorListeners.delete(cb); };
|
|
53
|
+
}
|
|
54
|
+
/** Pure position/size invalidation — anchor identity unchanged but its rect may
|
|
55
|
+
* have moved (dock drag/resize/close). DockShell pings this on layout change. */
|
|
56
|
+
export function pingAnchorRelayout() {
|
|
57
|
+
for (const cb of relayoutListeners) {
|
|
58
|
+
try {
|
|
59
|
+
cb();
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
if (typeof console !== 'undefined')
|
|
63
|
+
console.error('[surfaceAnchors] relayout', e);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export function subscribeRelayout(cb) {
|
|
68
|
+
relayoutListeners.add(cb);
|
|
69
|
+
return () => { relayoutListeners.delete(cb); };
|
|
70
|
+
}
|
|
71
|
+
/** Test helper. */
|
|
72
|
+
export function _resetSurfaceAnchorsForTests() {
|
|
73
|
+
anchors.clear();
|
|
74
|
+
anchorListeners.clear();
|
|
75
|
+
relayoutListeners.clear();
|
|
76
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Map a viewport-space rect onto a keep-alive overlay root's local coordinates. */
|
|
2
|
+
export declare function mapViewportRectToOverlayRoot(viewportRect: DOMRectReadOnly, overlayRoot: HTMLElement | null): {
|
|
3
|
+
top: number;
|
|
4
|
+
left: number;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Map a viewport-space rect onto a keep-alive overlay root's local coordinates. */
|
|
2
|
+
export function mapViewportRectToOverlayRoot(viewportRect, overlayRoot) {
|
|
3
|
+
const origin = overlayRoot?.getBoundingClientRect();
|
|
4
|
+
const ox = origin?.left ?? 0;
|
|
5
|
+
const oy = origin?.top ?? 0;
|
|
6
|
+
return {
|
|
7
|
+
top: viewportRect.top - oy,
|
|
8
|
+
left: viewportRect.left - ox,
|
|
9
|
+
width: viewportRect.width,
|
|
10
|
+
height: viewportRect.height,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 单测前置(仅测试用,无生产引用):阻止 store.ts 模块加载时的 daemon-WS 自动连接。
|
|
4
|
+
*
|
|
5
|
+
* store.ts 在 `typeof window !== 'undefined'` 下会在模块求值时 `connectDaemonWs(...)`,
|
|
6
|
+
* happy-dom 里这会留下一个悬挂的重连 setTimeout → 测试帧 teardown 时报
|
|
7
|
+
* 「AsyncTaskManager has been destroyed」。store 用一个全局 string 旗标
|
|
8
|
+
* `__FORGEAX_DAEMON_WS_BOUND__` 作「已绑定」判据;在 import store **之前**把它置上,
|
|
9
|
+
* store 就走「只更新 handler、不再 connect」分支(store.ts:1538-1546)。
|
|
10
|
+
*
|
|
11
|
+
* 用法:在任何会(直接或经组件)import 大 store 的测试文件里,把本模块作为**第一个**
|
|
12
|
+
* side-effect import 放最上面(ESM 按出现顺序求值,确保先于 store)。
|
|
13
|
+
*/
|
|
14
|
+
globalThis.__FORGEAX_DAEMON_WS_BOUND__ ??= { handler: () => { } };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type TextEditAction = 'cut' | 'copy' | 'paste' | 'selectAll';
|
|
2
|
+
export interface TextClipboard {
|
|
3
|
+
readText(): Promise<string>;
|
|
4
|
+
writeText(text: string): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export type NativeTextEditTarget = HTMLInputElement | HTMLTextAreaElement;
|
|
7
|
+
export type TextEditTarget = NativeTextEditTarget | HTMLElement;
|
|
8
|
+
export declare function textEditTargetFrom(target: EventTarget | null): TextEditTarget | null;
|
|
9
|
+
export declare function selectedText(target: TextEditTarget): string;
|
|
10
|
+
/** Preserve the focused editor before a web menu moves DOM focus into its
|
|
11
|
+
* portalled menu surface. The next text command consumes this snapshot. */
|
|
12
|
+
export declare function captureFocusedTextEditTarget(ownerDocument?: Document): boolean;
|
|
13
|
+
export declare function executeTextEditAction(action: TextEditAction, target: TextEditTarget, clipboard?: TextClipboard | undefined): Promise<boolean>;
|
|
14
|
+
export declare function executeFocusedTextEditAction(action: TextEditAction, ownerDocument?: Document, clipboard?: TextClipboard | undefined): Promise<boolean>;
|