@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.
Files changed (963) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +9 -0
  3. package/README.md +111 -0
  4. package/dist/package/browser/App.css +192 -0
  5. package/dist/package/browser/App.d.ts +11 -0
  6. package/dist/package/browser/App.js +11 -0
  7. package/dist/package/browser/ApplicationDetachedShell.d.ts +13 -0
  8. package/dist/package/browser/ApplicationDetachedShell.js +10 -0
  9. package/dist/package/browser/ApplicationShell.d.ts +19 -0
  10. package/dist/package/browser/ApplicationShell.js +62 -0
  11. package/dist/package/browser/app-kit.d.ts +1 -0
  12. package/dist/package/browser/app-kit.js +4 -0
  13. package/dist/package/browser/appHostBootstrap.d.ts +16 -0
  14. package/dist/package/browser/appHostBootstrap.js +145 -0
  15. package/dist/package/browser/application.d.ts +35 -0
  16. package/dist/package/browser/application.js +64 -0
  17. package/dist/package/browser/assets/icons/agent-icon.png +0 -0
  18. package/dist/package/browser/assets/icons/at.svg +3 -0
  19. package/dist/package/browser/assets/icons/chevron-collapse.svg +3 -0
  20. package/dist/package/browser/assets/icons/chevron-expand.svg +3 -0
  21. package/dist/package/browser/assets/icons/chevron-up.svg +3 -0
  22. package/dist/package/browser/assets/icons/close-x.svg +3 -0
  23. package/dist/package/browser/assets/icons/close.svg +3 -0
  24. package/dist/package/browser/assets/icons/copy.svg +4 -0
  25. package/dist/package/browser/assets/icons/edit.svg +3 -0
  26. package/dist/package/browser/assets/icons/fullscreen.svg +3 -0
  27. package/dist/package/browser/assets/icons/pause.svg +4 -0
  28. package/dist/package/browser/assets/icons/play.svg +3 -0
  29. package/dist/package/browser/assets/icons/select.svg +3 -0
  30. package/dist/package/browser/assets/icons/sendMessage-enable.svg +4 -0
  31. package/dist/package/browser/assets/icons/sendMessage.svg +4 -0
  32. package/dist/package/browser/assets/icons/status-done.svg +11 -0
  33. package/dist/package/browser/assets/icons/status-running.svg +10 -0
  34. package/dist/package/browser/assets/icons/status-waiting.svg +10 -0
  35. package/dist/package/browser/assets/icons/tool-execute-script.svg +3 -0
  36. package/dist/package/browser/assets/icons/tool-other.svg +10 -0
  37. package/dist/package/browser/assets/icons/tool-read-file.svg +3 -0
  38. package/dist/package/browser/assets/icons/tool-resource-search.svg +3 -0
  39. package/dist/package/browser/assets/icons/tool-task-todo.svg +4 -0
  40. package/dist/package/browser/assets/icons/tool-write-file.svg +3 -0
  41. package/dist/package/browser/boot/SettingsSection.d.ts +14 -0
  42. package/dist/package/browser/boot/SettingsSection.js +82 -0
  43. package/dist/package/browser/boot/broadcast.d.ts +2 -0
  44. package/dist/package/browser/boot/broadcast.js +32 -0
  45. package/dist/package/browser/boot/driver.d.ts +22 -0
  46. package/dist/package/browser/boot/driver.js +47 -0
  47. package/dist/package/browser/boot/store.d.ts +29 -0
  48. package/dist/package/browser/boot/store.js +114 -0
  49. package/dist/package/browser/boot/themes.d.ts +19 -0
  50. package/dist/package/browser/boot/themes.js +21 -0
  51. package/dist/package/browser/boot/types.d.ts +22 -0
  52. package/dist/package/browser/boot/types.js +30 -0
  53. package/dist/package/browser/brand/BrandProvider.d.ts +19 -0
  54. package/dist/package/browser/brand/BrandProvider.js +35 -0
  55. package/dist/package/browser/brand/index.d.ts +4 -0
  56. package/dist/package/browser/brand/index.js +3 -0
  57. package/dist/package/browser/brand/runtime.d.ts +17 -0
  58. package/dist/package/browser/brand/runtime.js +71 -0
  59. package/dist/package/browser/brand/types.d.ts +77 -0
  60. package/dist/package/browser/brand/types.js +9 -0
  61. package/dist/package/browser/components/ActivityRail/ActivityRail.css +294 -0
  62. package/dist/package/browser/components/ActivityRail/ActivityRail.d.ts +2 -0
  63. package/dist/package/browser/components/ActivityRail/ActivityRail.js +164 -0
  64. package/dist/package/browser/components/ActivityRail/activity-rail-model.d.ts +18 -0
  65. package/dist/package/browser/components/ActivityRail/activity-rail-model.js +144 -0
  66. package/dist/package/browser/components/AgentAvatar/AgentAvatar.d.ts +17 -0
  67. package/dist/package/browser/components/AgentAvatar/AgentAvatar.js +50 -0
  68. package/dist/package/browser/components/BuildBadge/BuildBadge.d.ts +1 -0
  69. package/dist/package/browser/components/BuildBadge/BuildBadge.js +279 -0
  70. package/dist/package/browser/components/Bus/BusAdminPanel.css +2425 -0
  71. package/dist/package/browser/components/Bus/BusAdminPanel.d.ts +2 -0
  72. package/dist/package/browser/components/Bus/BusAdminPanel.js +1385 -0
  73. package/dist/package/browser/components/Bus/CapabilityOverview.d.ts +3 -0
  74. package/dist/package/browser/components/Bus/CapabilityOverview.js +50 -0
  75. package/dist/package/browser/components/ChatColumn/ChatColumn.d.ts +2 -0
  76. package/dist/package/browser/components/ChatColumn/ChatColumn.js +18 -0
  77. package/dist/package/browser/components/ChatColumn/SessionTabStrip.d.ts +1 -0
  78. package/dist/package/browser/components/ChatColumn/SessionTabStrip.js +103 -0
  79. package/dist/package/browser/components/ChatColumn/useChatWidth.d.ts +5 -0
  80. package/dist/package/browser/components/ChatColumn/useChatWidth.js +13 -0
  81. package/dist/package/browser/components/CommandPalette/CommandPalette.css +199 -0
  82. package/dist/package/browser/components/CommandPalette/CommandPalette.d.ts +2 -0
  83. package/dist/package/browser/components/CommandPalette/CommandPalette.js +242 -0
  84. package/dist/package/browser/components/Confirm/ConfirmDialog.d.ts +2 -0
  85. package/dist/package/browser/components/Confirm/ConfirmDialog.js +113 -0
  86. package/dist/package/browser/components/ContextMenu/ContextMenu.d.ts +10 -0
  87. package/dist/package/browser/components/ContextMenu/ContextMenu.js +218 -0
  88. package/dist/package/browser/components/ContextMenu/menuRegistry.d.ts +18 -0
  89. package/dist/package/browser/components/ContextMenu/menuRegistry.js +152 -0
  90. package/dist/package/browser/components/DetachedSurface.d.ts +20 -0
  91. package/dist/package/browser/components/DetachedSurface.js +102 -0
  92. package/dist/package/browser/components/DockShell/DockPanelHost.d.ts +4 -0
  93. package/dist/package/browser/components/DockShell/DockPanelHost.js +7 -0
  94. package/dist/package/browser/components/DockShell/DockRegion.d.ts +7 -0
  95. package/dist/package/browser/components/DockShell/DockRegion.js +315 -0
  96. package/dist/package/browser/components/DockShell/DockShell.css +1018 -0
  97. package/dist/package/browser/components/DockShell/DockTab.d.ts +3 -0
  98. package/dist/package/browser/components/DockShell/DockTab.js +139 -0
  99. package/dist/package/browser/components/DockShell/ExtensionHostPanel.d.ts +9 -0
  100. package/dist/package/browser/components/DockShell/ExtensionHostPanel.js +68 -0
  101. package/dist/package/browser/components/DockShell/ExtensionRuntimeFrame.d.ts +14 -0
  102. package/dist/package/browser/components/DockShell/ExtensionRuntimeFrame.js +56 -0
  103. package/dist/package/browser/components/DockShell/PanelWindowingBoundary.d.ts +6 -0
  104. package/dist/package/browser/components/DockShell/PanelWindowingBoundary.js +9 -0
  105. package/dist/package/browser/components/DockShell/chatDockAnimation.d.ts +45 -0
  106. package/dist/package/browser/components/DockShell/chatDockAnimation.js +101 -0
  107. package/dist/package/browser/components/DockShell/chatDockFullscreen.d.ts +17 -0
  108. package/dist/package/browser/components/DockShell/chatDockFullscreen.js +22 -0
  109. package/dist/package/browser/components/DockShell/chatDockLayout.d.ts +10 -0
  110. package/dist/package/browser/components/DockShell/chatDockLayout.js +11 -0
  111. package/dist/package/browser/components/DockShell/compact-empty-dock-groups.d.ts +16 -0
  112. package/dist/package/browser/components/DockShell/compact-empty-dock-groups.js +28 -0
  113. package/dist/package/browser/components/DockShell/crossInstanceDrop.d.ts +1 -0
  114. package/dist/package/browser/components/DockShell/crossInstanceDrop.js +1 -0
  115. package/dist/package/browser/components/DockShell/dockResetEpoch.d.ts +2 -0
  116. package/dist/package/browser/components/DockShell/dockResetEpoch.js +13 -0
  117. package/dist/package/browser/components/DockShell/dockTitle.d.ts +12 -0
  118. package/dist/package/browser/components/DockShell/dockTitle.js +36 -0
  119. package/dist/package/browser/components/DockShell/dockviewRegistry.d.ts +1 -0
  120. package/dist/package/browser/components/DockShell/dockviewRegistry.js +1 -0
  121. package/dist/package/browser/components/DockShell/edgeDrawer.d.ts +24 -0
  122. package/dist/package/browser/components/DockShell/edgeDrawer.js +1144 -0
  123. package/dist/package/browser/components/DockShell/edgePinStore.d.ts +12 -0
  124. package/dist/package/browser/components/DockShell/edgePinStore.js +37 -0
  125. package/dist/package/browser/components/DockShell/extension-editor-bridge.d.ts +13 -0
  126. package/dist/package/browser/components/DockShell/extension-editor-bridge.js +100 -0
  127. package/dist/package/browser/components/DockShell/extension-runtime-selection.d.ts +8 -0
  128. package/dist/package/browser/components/DockShell/extension-runtime-selection.js +6 -0
  129. package/dist/package/browser/components/DockShell/extensionRuntime.d.ts +17 -0
  130. package/dist/package/browser/components/DockShell/extensionRuntime.js +84 -0
  131. package/dist/package/browser/components/DockShell/footer-panel-visibility.d.ts +7 -0
  132. package/dist/package/browser/components/DockShell/footer-panel-visibility.js +43 -0
  133. package/dist/package/browser/components/DockShell/footer-panels.d.ts +2 -0
  134. package/dist/package/browser/components/DockShell/footer-panels.js +7 -0
  135. package/dist/package/browser/components/DockShell/panelRegistry.d.ts +37 -0
  136. package/dist/package/browser/components/DockShell/panelRegistry.js +126 -0
  137. package/dist/package/browser/components/DockShell/panelRenderers.d.ts +325 -0
  138. package/dist/package/browser/components/DockShell/panelRenderers.js +25 -0
  139. package/dist/package/browser/components/DockShell/panelTabCommands.d.ts +18 -0
  140. package/dist/package/browser/components/DockShell/panelTabCommands.js +133 -0
  141. package/dist/package/browser/components/DockShell/panelWindowing.d.ts +32 -0
  142. package/dist/package/browser/components/DockShell/panelWindowing.js +42 -0
  143. package/dist/package/browser/components/DockShell/regions.d.ts +1 -0
  144. package/dist/package/browser/components/DockShell/regions.js +1 -0
  145. package/dist/package/browser/components/DockShell/resolveRegion.d.ts +1 -0
  146. package/dist/package/browser/components/DockShell/resolveRegion.js +1 -0
  147. package/dist/package/browser/components/DockShell/sanitizeDockLayout.d.ts +3 -0
  148. package/dist/package/browser/components/DockShell/sanitizeDockLayout.js +46 -0
  149. package/dist/package/browser/components/DockShell/sideEdgeMove.d.ts +1 -0
  150. package/dist/package/browser/components/DockShell/sideEdgeMove.js +1 -0
  151. package/dist/package/browser/components/DockShell/studioTabMenuProvider.d.ts +13 -0
  152. package/dist/package/browser/components/DockShell/studioTabMenuProvider.js +39 -0
  153. package/dist/package/browser/components/DockShell/tabContextMenu.d.ts +29 -0
  154. package/dist/package/browser/components/DockShell/tabContextMenu.js +68 -0
  155. package/dist/package/browser/components/DockShell/ueDrag/controller.d.ts +80 -0
  156. package/dist/package/browser/components/DockShell/ueDrag/controller.js +785 -0
  157. package/dist/package/browser/components/DockShell/ueDrag/geometry.d.ts +94 -0
  158. package/dist/package/browser/components/DockShell/ueDrag/geometry.js +217 -0
  159. package/dist/package/browser/components/DockShell/ueDrag/overlay.d.ts +32 -0
  160. package/dist/package/browser/components/DockShell/ueDrag/overlay.js +206 -0
  161. package/dist/package/browser/components/DockShell/ueDrag/ueDrag.css +199 -0
  162. package/dist/package/browser/components/DockShell/useAuxBarWidth.d.ts +5 -0
  163. package/dist/package/browser/components/DockShell/useAuxBarWidth.js +13 -0
  164. package/dist/package/browser/components/Drawer/DrawerHostView.css +143 -0
  165. package/dist/package/browser/components/Drawer/DrawerHostView.d.ts +19 -0
  166. package/dist/package/browser/components/Drawer/DrawerHostView.js +93 -0
  167. package/dist/package/browser/components/Drawer/DrawerLauncher.d.ts +12 -0
  168. package/dist/package/browser/components/Drawer/DrawerLauncher.js +22 -0
  169. package/dist/package/browser/components/Drawer/useDrawerStore.d.ts +15 -0
  170. package/dist/package/browser/components/Drawer/useDrawerStore.js +80 -0
  171. package/dist/package/browser/components/ErrorBoundary.d.ts +55 -0
  172. package/dist/package/browser/components/ErrorBoundary.js +131 -0
  173. package/dist/package/browser/components/ExtensionHost/ExtensionIframeHost.d.ts +28 -0
  174. package/dist/package/browser/components/ExtensionHost/ExtensionIframeHost.js +179 -0
  175. package/dist/package/browser/components/ExtensionHost/NativeExtensionHost.d.ts +14 -0
  176. package/dist/package/browser/components/ExtensionHost/NativeExtensionHost.js +152 -0
  177. package/dist/package/browser/components/Feedback/FeedbackPanel.css +640 -0
  178. package/dist/package/browser/components/Feedback/FeedbackPanel.d.ts +8 -0
  179. package/dist/package/browser/components/Feedback/FeedbackPanel.js +118 -0
  180. package/dist/package/browser/components/Feedback/PassiveFeedback.css +179 -0
  181. package/dist/package/browser/components/Feedback/PassiveFeedback.d.ts +2 -0
  182. package/dist/package/browser/components/Feedback/PassiveFeedback.js +218 -0
  183. package/dist/package/browser/components/Feedback/collect.d.ts +15 -0
  184. package/dist/package/browser/components/Feedback/collect.js +80 -0
  185. package/dist/package/browser/components/Feedback/store.d.ts +61 -0
  186. package/dist/package/browser/components/Feedback/store.js +174 -0
  187. package/dist/package/browser/components/LangSwitcher/LangSwitcher.css +78 -0
  188. package/dist/package/browser/components/LangSwitcher/LangSwitcher.d.ts +14 -0
  189. package/dist/package/browser/components/LangSwitcher/LangSwitcher.js +44 -0
  190. package/dist/package/browser/components/MainArea/ConsolePanel.d.ts +1 -0
  191. package/dist/package/browser/components/MainArea/ConsolePanel.js +16 -0
  192. package/dist/package/browser/components/MainArea/MainArea.css +2130 -0
  193. package/dist/package/browser/components/MainArea/MainArea.d.ts +2 -0
  194. package/dist/package/browser/components/MainArea/MainArea.js +20 -0
  195. package/dist/package/browser/components/MainArea/StandaloneExtensionIframe.d.ts +25 -0
  196. package/dist/package/browser/components/MainArea/StandaloneExtensionIframe.js +155 -0
  197. package/dist/package/browser/components/MainArea/SurfacePanels.d.ts +3 -0
  198. package/dist/package/browser/components/MainArea/SurfacePanels.js +27 -0
  199. package/dist/package/browser/components/MainArea/TelemetryViewer.css +122 -0
  200. package/dist/package/browser/components/MainArea/TelemetryViewer.d.ts +36 -0
  201. package/dist/package/browser/components/MainArea/TelemetryViewer.js +116 -0
  202. package/dist/package/browser/components/MenuBar/MenuBar.css +186 -0
  203. package/dist/package/browser/components/MenuBar/MenuBar.d.ts +27 -0
  204. package/dist/package/browser/components/MenuBar/MenuBar.js +286 -0
  205. package/dist/package/browser/components/MenuBar/index.d.ts +1 -0
  206. package/dist/package/browser/components/MenuBar/index.js +1 -0
  207. package/dist/package/browser/components/MenuBar/menubar-open-state.d.ts +8 -0
  208. package/dist/package/browser/components/MenuBar/menubar-open-state.js +11 -0
  209. package/dist/package/browser/components/MenuBar/menubar-surface.d.ts +30 -0
  210. package/dist/package/browser/components/MenuBar/menubar-surface.js +201 -0
  211. package/dist/package/browser/components/ModelPicker/index.d.ts +1 -0
  212. package/dist/package/browser/components/ModelPicker/index.js +1 -0
  213. package/dist/package/browser/components/ModelPicker/useModelCatalog.d.ts +22 -0
  214. package/dist/package/browser/components/ModelPicker/useModelCatalog.js +100 -0
  215. package/dist/package/browser/components/Onboarding/ConnectModelPrompt.d.ts +2 -0
  216. package/dist/package/browser/components/Onboarding/ConnectModelPrompt.js +40 -0
  217. package/dist/package/browser/components/Onboarding/Onboarding.css +232 -0
  218. package/dist/package/browser/components/Onboarding/OnboardingController.d.ts +10 -0
  219. package/dist/package/browser/components/Onboarding/OnboardingController.js +549 -0
  220. package/dist/package/browser/components/Onboarding/connect-selection.d.ts +17 -0
  221. package/dist/package/browser/components/Onboarding/connect-selection.js +18 -0
  222. package/dist/package/browser/components/Onboarding/home-transition.d.ts +9 -0
  223. package/dist/package/browser/components/Onboarding/home-transition.js +20 -0
  224. package/dist/package/browser/components/Onboarding/index.d.ts +4 -0
  225. package/dist/package/browser/components/Onboarding/index.js +3 -0
  226. package/dist/package/browser/components/Onboarding/prepareTourShell.d.ts +5 -0
  227. package/dist/package/browser/components/Onboarding/prepareTourShell.js +11 -0
  228. package/dist/package/browser/components/Onboarding/project-name.d.ts +17 -0
  229. package/dist/package/browser/components/Onboarding/project-name.js +29 -0
  230. package/dist/package/browser/components/Onboarding/types.d.ts +31 -0
  231. package/dist/package/browser/components/Onboarding/types.js +77 -0
  232. package/dist/package/browser/components/PageTabs/PageTabStrip.css +221 -0
  233. package/dist/package/browser/components/PageTabs/PageTabStrip.d.ts +3 -0
  234. package/dist/package/browser/components/PageTabs/PageTabStrip.js +214 -0
  235. package/dist/package/browser/components/PageTabs/openablePageTypes.d.ts +9 -0
  236. package/dist/package/browser/components/PageTabs/openablePageTypes.js +13 -0
  237. package/dist/package/browser/components/PanelShell/PanelShell.css +517 -0
  238. package/dist/package/browser/components/PanelShell/PanelShell.d.ts +7 -0
  239. package/dist/package/browser/components/PanelShell/PanelShell.js +459 -0
  240. package/dist/package/browser/components/Resize/ResizeHandle.d.ts +1 -0
  241. package/dist/package/browser/components/Resize/ResizeHandle.js +1 -0
  242. package/dist/package/browser/components/SceneBackground/SceneBackground.d.ts +2 -0
  243. package/dist/package/browser/components/SceneBackground/SceneBackground.js +5 -0
  244. package/dist/package/browser/components/SchemaForm/SchemaForm.css +138 -0
  245. package/dist/package/browser/components/SchemaForm/SchemaForm.d.ts +17 -0
  246. package/dist/package/browser/components/SchemaForm/SchemaForm.js +86 -0
  247. package/dist/package/browser/components/SchemaForm/schema-form-utils.d.ts +30 -0
  248. package/dist/package/browser/components/SchemaForm/schema-form-utils.js +51 -0
  249. package/dist/package/browser/components/SettingsPrimitives.d.ts +24 -0
  250. package/dist/package/browser/components/SettingsPrimitives.js +145 -0
  251. package/dist/package/browser/components/Sidebar/BusHealthLamp.d.ts +1 -0
  252. package/dist/package/browser/components/Sidebar/BusHealthLamp.js +72 -0
  253. package/dist/package/browser/components/Sidebar/FilesPanel.d.ts +1 -0
  254. package/dist/package/browser/components/Sidebar/FilesPanel.js +234 -0
  255. package/dist/package/browser/components/Sidebar/Sidebar.css +1393 -0
  256. package/dist/package/browser/components/Sidebar/Sidebar.d.ts +3 -0
  257. package/dist/package/browser/components/Sidebar/Sidebar.js +8 -0
  258. package/dist/package/browser/components/Sidebar/sidebar-types.d.ts +18 -0
  259. package/dist/package/browser/components/Sidebar/sidebar-types.js +1 -0
  260. package/dist/package/browser/components/SlotDebugOverlay/SlotDebugOverlay.d.ts +1 -0
  261. package/dist/package/browser/components/SlotDebugOverlay/SlotDebugOverlay.js +1 -0
  262. package/dist/package/browser/components/SlotDebugOverlay/hashHue.d.ts +1 -0
  263. package/dist/package/browser/components/SlotDebugOverlay/hashHue.js +1 -0
  264. package/dist/package/browser/components/SlotDebugOverlay/index.d.ts +1 -0
  265. package/dist/package/browser/components/SlotDebugOverlay/index.js +1 -0
  266. package/dist/package/browser/components/SlotDebugOverlay/isSlotDebugEnabled.d.ts +1 -0
  267. package/dist/package/browser/components/SlotDebugOverlay/isSlotDebugEnabled.js +1 -0
  268. package/dist/package/browser/components/StatusBar/FatalBanner.d.ts +25 -0
  269. package/dist/package/browser/components/StatusBar/FatalBanner.js +52 -0
  270. package/dist/package/browser/components/StatusBar/GlobalStatusBar.css +304 -0
  271. package/dist/package/browser/components/StatusBar/InfoPanel.css +174 -0
  272. package/dist/package/browser/components/StatusBar/InfoPanel.d.ts +19 -0
  273. package/dist/package/browser/components/StatusBar/InfoPanel.js +128 -0
  274. package/dist/package/browser/components/StatusBar/StatusChip.css +52 -0
  275. package/dist/package/browser/components/StatusBar/StatusChip.d.ts +40 -0
  276. package/dist/package/browser/components/StatusBar/StatusChip.js +13 -0
  277. package/dist/package/browser/components/StatusBar/StripHostView.d.ts +2 -0
  278. package/dist/package/browser/components/StatusBar/StripHostView.js +91 -0
  279. package/dist/package/browser/components/StatusBar/StripPopover.css +58 -0
  280. package/dist/package/browser/components/StatusBar/StripPopover.d.ts +16 -0
  281. package/dist/package/browser/components/StatusBar/StripPopover.js +15 -0
  282. package/dist/package/browser/components/StatusBar/feeds/PulseFeeds.d.ts +16 -0
  283. package/dist/package/browser/components/StatusBar/feeds/PulseFeeds.js +88 -0
  284. package/dist/package/browser/components/StatusBar/footer/CheckpointsDrawer.d.ts +4 -0
  285. package/dist/package/browser/components/StatusBar/footer/CheckpointsDrawer.js +77 -0
  286. package/dist/package/browser/components/StatusBar/footer/DiagnosticsPopover.d.ts +4 -0
  287. package/dist/package/browser/components/StatusBar/footer/DiagnosticsPopover.js +108 -0
  288. package/dist/package/browser/components/StatusBar/footer/EventsDrawer.d.ts +14 -0
  289. package/dist/package/browser/components/StatusBar/footer/EventsDrawer.js +25 -0
  290. package/dist/package/browser/components/StatusBar/footer/ForgeaxBuildPopover.d.ts +4 -0
  291. package/dist/package/browser/components/StatusBar/footer/ForgeaxBuildPopover.js +62 -0
  292. package/dist/package/browser/components/StatusBar/footer/footer.css +178 -0
  293. package/dist/package/browser/components/StatusBar/healthBridge.d.ts +38 -0
  294. package/dist/package/browser/components/StatusBar/healthBridge.js +245 -0
  295. package/dist/package/browser/components/StatusBar/healthStore.d.ts +80 -0
  296. package/dist/package/browser/components/StatusBar/healthStore.js +129 -0
  297. package/dist/package/browser/components/StatusBar/useStatusItem.d.ts +10 -0
  298. package/dist/package/browser/components/StatusBar/useStatusItem.js +35 -0
  299. package/dist/package/browser/components/Surfaces/SurfaceKeepAlive.css +34 -0
  300. package/dist/package/browser/components/Surfaces/SurfaceKeepAliveLayer.d.ts +3 -0
  301. package/dist/package/browser/components/Surfaces/SurfaceKeepAliveLayer.js +218 -0
  302. package/dist/package/browser/components/Surfaces/SurfaceOverlay.css +160 -0
  303. package/dist/package/browser/components/Surfaces/SurfaceOverlay.d.ts +9 -0
  304. package/dist/package/browser/components/Surfaces/SurfaceOverlay.js +144 -0
  305. package/dist/package/browser/components/TopBar/AndroidPackageDialog.d.ts +23 -0
  306. package/dist/package/browser/components/TopBar/AndroidPackageDialog.js +115 -0
  307. package/dist/package/browser/components/TopBar/FsBrowser.css +156 -0
  308. package/dist/package/browser/components/TopBar/FsBrowser.d.ts +8 -0
  309. package/dist/package/browser/components/TopBar/FsBrowser.js +93 -0
  310. package/dist/package/browser/components/TopBar/GameSwitcher.d.ts +29 -0
  311. package/dist/package/browser/components/TopBar/GameSwitcher.js +157 -0
  312. package/dist/package/browser/components/TopBar/IosPackageDialog.d.ts +23 -0
  313. package/dist/package/browser/components/TopBar/IosPackageDialog.js +115 -0
  314. package/dist/package/browser/components/TopBar/ProjectSwitcher.d.ts +3 -0
  315. package/dist/package/browser/components/TopBar/ProjectSwitcher.js +41 -0
  316. package/dist/package/browser/components/TopBar/PublishOnboarding.css +133 -0
  317. package/dist/package/browser/components/TopBar/PublishOnboarding.d.ts +10 -0
  318. package/dist/package/browser/components/TopBar/PublishOnboarding.js +144 -0
  319. package/dist/package/browser/components/TopBar/SessionSwitcher.d.ts +2 -0
  320. package/dist/package/browser/components/TopBar/SessionSwitcher.js +124 -0
  321. package/dist/package/browser/components/TopBar/TopBar.css +1672 -0
  322. package/dist/package/browser/components/TopBar/TopBar.d.ts +2 -0
  323. package/dist/package/browser/components/TopBar/TopBar.js +606 -0
  324. package/dist/package/browser/components/TopBar/publish-options.d.ts +20 -0
  325. package/dist/package/browser/components/TopBar/publish-options.js +28 -0
  326. package/dist/package/browser/components/TourOverlay/TourOverlay.css +122 -0
  327. package/dist/package/browser/components/TourOverlay/TourOverlay.d.ts +26 -0
  328. package/dist/package/browser/components/TourOverlay/TourOverlay.js +233 -0
  329. package/dist/package/browser/components/TourOverlay/index.d.ts +2 -0
  330. package/dist/package/browser/components/TourOverlay/index.js +1 -0
  331. package/dist/package/browser/components/ownership.d.ts +7 -0
  332. package/dist/package/browser/components/ownership.js +7 -0
  333. package/dist/package/browser/components/ui/SearchableMenu.css +143 -0
  334. package/dist/package/browser/components/ui/SearchableMenu.d.ts +30 -0
  335. package/dist/package/browser/components/ui/SearchableMenu.js +40 -0
  336. package/dist/package/browser/components/ui/alert-dialog.d.ts +20 -0
  337. package/dist/package/browser/components/ui/alert-dialog.js +38 -0
  338. package/dist/package/browser/components/ui/button.d.ts +11 -0
  339. package/dist/package/browser/components/ui/button.js +33 -0
  340. package/dist/package/browser/components/ui/checkbox.d.ts +4 -0
  341. package/dist/package/browser/components/ui/checkbox.js +8 -0
  342. package/dist/package/browser/components/ui/command.d.ts +74 -0
  343. package/dist/package/browser/components/ui/command.js +20 -0
  344. package/dist/package/browser/components/ui/dialog.d.ts +21 -0
  345. package/dist/package/browser/components/ui/dialog.js +34 -0
  346. package/dist/package/browser/components/ui/dropdown-menu.d.ts +18 -0
  347. package/dist/package/browser/components/ui/dropdown-menu.js +30 -0
  348. package/dist/package/browser/components/ui/input.d.ts +3 -0
  349. package/dist/package/browser/components/ui/input.js +8 -0
  350. package/dist/package/browser/components/ui/label.d.ts +4 -0
  351. package/dist/package/browser/components/ui/label.js +7 -0
  352. package/dist/package/browser/components/ui/popover.d.ts +7 -0
  353. package/dist/package/browser/components/ui/popover.js +10 -0
  354. package/dist/package/browser/components/ui/select.d.ts +11 -0
  355. package/dist/package/browser/components/ui/select.js +31 -0
  356. package/dist/package/browser/components/ui/tabs.d.ts +7 -0
  357. package/dist/package/browser/components/ui/tabs.js +12 -0
  358. package/dist/package/browser/components/ui/textarea.d.ts +3 -0
  359. package/dist/package/browser/components/ui/textarea.js +8 -0
  360. package/dist/package/browser/components/ui/tooltip.d.ts +7 -0
  361. package/dist/package/browser/components/ui/tooltip.js +10 -0
  362. package/dist/package/browser/core/app-shell/catalog-page-extensions.d.ts +28 -0
  363. package/dist/package/browser/core/app-shell/catalog-page-extensions.js +234 -0
  364. package/dist/package/browser/core/app-shell/derive-panel-renderers.d.ts +2 -0
  365. package/dist/package/browser/core/app-shell/derive-panel-renderers.js +17 -0
  366. package/dist/package/browser/core/app-shell/host.d.ts +31 -0
  367. package/dist/package/browser/core/app-shell/host.js +188 -0
  368. package/dist/package/browser/core/app-shell/index.d.ts +7 -0
  369. package/dist/package/browser/core/app-shell/index.js +8 -0
  370. package/dist/package/browser/core/app-shell/logger.d.ts +2 -0
  371. package/dist/package/browser/core/app-shell/logger.js +6 -0
  372. package/dist/package/browser/core/app-shell/ownership.d.ts +7 -0
  373. package/dist/package/browser/core/app-shell/ownership.js +7 -0
  374. package/dist/package/browser/core/app-shell/react/HostProvider.d.ts +10 -0
  375. package/dist/package/browser/core/app-shell/react/HostProvider.js +35 -0
  376. package/dist/package/browser/core/app-shell/surface-extension.d.ts +17 -0
  377. package/dist/package/browser/core/app-shell/surface-extension.js +33 -0
  378. package/dist/package/browser/core/app-shell/types.d.ts +176 -0
  379. package/dist/package/browser/core/app-shell/types.js +1 -0
  380. package/dist/package/browser/core/contextual-keybindings.d.ts +71 -0
  381. package/dist/package/browser/core/contextual-keybindings.js +198 -0
  382. package/dist/package/browser/core/extension-foundation/bus.d.ts +2 -0
  383. package/dist/package/browser/core/extension-foundation/bus.js +3 -0
  384. package/dist/package/browser/core/extension-foundation/capabilities.d.ts +2 -0
  385. package/dist/package/browser/core/extension-foundation/capabilities.js +3 -0
  386. package/dist/package/browser/core/extension-foundation/commands.d.ts +2 -0
  387. package/dist/package/browser/core/extension-foundation/commands.js +3 -0
  388. package/dist/package/browser/core/extension-foundation/context-keys.d.ts +2 -0
  389. package/dist/package/browser/core/extension-foundation/context-keys.js +3 -0
  390. package/dist/package/browser/core/extension-foundation/contribution-registry.d.ts +2 -0
  391. package/dist/package/browser/core/extension-foundation/contribution-registry.js +3 -0
  392. package/dist/package/browser/core/extension-foundation/errors.d.ts +2 -0
  393. package/dist/package/browser/core/extension-foundation/errors.js +3 -0
  394. package/dist/package/browser/core/extension-foundation/index.d.ts +8 -0
  395. package/dist/package/browser/core/extension-foundation/index.js +9 -0
  396. package/dist/package/browser/core/extension-foundation/loader.d.ts +2 -0
  397. package/dist/package/browser/core/extension-foundation/loader.js +3 -0
  398. package/dist/package/browser/core/extension-foundation/storage.d.ts +2 -0
  399. package/dist/package/browser/core/extension-foundation/storage.js +3 -0
  400. package/dist/package/browser/core/extension-foundation/types.d.ts +2 -0
  401. package/dist/package/browser/core/extension-foundation/types.js +1 -0
  402. package/dist/package/browser/core/extensions/builtin-commands.d.ts +2 -0
  403. package/dist/package/browser/core/extensions/builtin-commands.js +256 -0
  404. package/dist/package/browser/core/extensions/builtin-menus.d.ts +2 -0
  405. package/dist/package/browser/core/extensions/builtin-menus.js +252 -0
  406. package/dist/package/browser/core/extensions/chrome-drawer.d.ts +3 -0
  407. package/dist/package/browser/core/extensions/chrome-drawer.js +45 -0
  408. package/dist/package/browser/core/extensions/chrome-statusbar.d.ts +6 -0
  409. package/dist/package/browser/core/extensions/chrome-statusbar.js +26 -0
  410. package/dist/package/browser/core/extensions/detached-agents-browser.d.ts +3 -0
  411. package/dist/package/browser/core/extensions/detached-agents-browser.js +9 -0
  412. package/dist/package/browser/core/extensions/detached-files-browser.d.ts +3 -0
  413. package/dist/package/browser/core/extensions/detached-files-browser.js +6 -0
  414. package/dist/package/browser/core/extensions/editor-commands.d.ts +2 -0
  415. package/dist/package/browser/core/extensions/editor-commands.js +182 -0
  416. package/dist/package/browser/core/extensions/foundation-bus.d.ts +2 -0
  417. package/dist/package/browser/core/extensions/foundation-bus.js +3 -0
  418. package/dist/package/browser/core/extensions/foundation-commands.d.ts +2 -0
  419. package/dist/package/browser/core/extensions/foundation-commands.js +6 -0
  420. package/dist/package/browser/core/extensions/foundation-storage.d.ts +2 -0
  421. package/dist/package/browser/core/extensions/foundation-storage.js +3 -0
  422. package/dist/package/browser/core/extensions/host-commands.d.ts +18 -0
  423. package/dist/package/browser/core/extensions/host-commands.js +52 -0
  424. package/dist/package/browser/core/extensions/observability.d.ts +14 -0
  425. package/dist/package/browser/core/extensions/observability.js +18 -0
  426. package/dist/package/browser/core/extensions/panels-chat.d.ts +2 -0
  427. package/dist/package/browser/core/extensions/panels-chat.js +41 -0
  428. package/dist/package/browser/core/extensions/panels-editor.d.ts +8 -0
  429. package/dist/package/browser/core/extensions/panels-editor.js +26 -0
  430. package/dist/package/browser/core/extensions/panels-viewport.d.ts +2 -0
  431. package/dist/package/browser/core/extensions/panels-viewport.js +20 -0
  432. package/dist/package/browser/core/extensions/session-client.d.ts +29 -0
  433. package/dist/package/browser/core/extensions/session-client.js +42 -0
  434. package/dist/package/browser/core/extensions/slots-corner-agent-picker.d.ts +5 -0
  435. package/dist/package/browser/core/extensions/slots-corner-agent-picker.js +6 -0
  436. package/dist/package/browser/core/extensions/slots-main-area-body.d.ts +3 -0
  437. package/dist/package/browser/core/extensions/slots-main-area-body.js +6 -0
  438. package/dist/package/browser/core/extensions/slots-sidebar-agents.d.ts +3 -0
  439. package/dist/package/browser/core/extensions/slots-sidebar-agents.js +6 -0
  440. package/dist/package/browser/core/extensions/studio-domain-clients.d.ts +12 -0
  441. package/dist/package/browser/core/extensions/studio-domain-clients.js +15 -0
  442. package/dist/package/browser/core/extensions/surfaces-scene-editor.d.ts +3 -0
  443. package/dist/package/browser/core/extensions/surfaces-scene-editor.js +6 -0
  444. package/dist/package/browser/core/extensions/trajectory.d.ts +2 -0
  445. package/dist/package/browser/core/extensions/trajectory.js +50 -0
  446. package/dist/package/browser/core/page-navigation.d.ts +1 -0
  447. package/dist/package/browser/core/page-navigation.js +1 -0
  448. package/dist/package/browser/core/page-platform/activity.d.ts +4 -0
  449. package/dist/package/browser/core/page-platform/activity.js +46 -0
  450. package/dist/package/browser/core/page-platform/dockview-layout.d.ts +7 -0
  451. package/dist/package/browser/core/page-platform/dockview-layout.js +63 -0
  452. package/dist/package/browser/core/page-platform/index.d.ts +8 -0
  453. package/dist/package/browser/core/page-platform/index.js +8 -0
  454. package/dist/package/browser/core/page-platform/layout-store.d.ts +18 -0
  455. package/dist/package/browser/core/page-platform/layout-store.js +54 -0
  456. package/dist/package/browser/core/page-platform/page-dirty-probe.d.ts +1 -0
  457. package/dist/package/browser/core/page-platform/page-dirty-probe.js +4 -0
  458. package/dist/package/browser/core/page-platform/registry.d.ts +3 -0
  459. package/dist/package/browser/core/page-platform/registry.js +194 -0
  460. package/dist/package/browser/core/page-platform/resource-editor.d.ts +3 -0
  461. package/dist/package/browser/core/page-platform/resource-editor.js +74 -0
  462. package/dist/package/browser/core/page-platform/session.d.ts +10 -0
  463. package/dist/package/browser/core/page-platform/session.js +327 -0
  464. package/dist/package/browser/core/page-platform/types.d.ts +242 -0
  465. package/dist/package/browser/core/page-platform/types.js +10 -0
  466. package/dist/package/browser/core/panels/context-expression.d.ts +1 -0
  467. package/dist/package/browser/core/panels/context-expression.js +1 -0
  468. package/dist/package/browser/core/panels/drawer.d.ts +23 -0
  469. package/dist/package/browser/core/panels/drawer.js +1 -0
  470. package/dist/package/browser/core/panels/index.d.ts +7 -0
  471. package/dist/package/browser/core/panels/index.js +7 -0
  472. package/dist/package/browser/core/panels/panel-action-registry.d.ts +6 -0
  473. package/dist/package/browser/core/panels/panel-action-registry.js +62 -0
  474. package/dist/package/browser/core/panels/panel-control-registry.d.ts +6 -0
  475. package/dist/package/browser/core/panels/panel-control-registry.js +54 -0
  476. package/dist/package/browser/core/panels/resolve-panel-action-state.d.ts +10 -0
  477. package/dist/package/browser/core/panels/resolve-panel-action-state.js +9 -0
  478. package/dist/package/browser/core/panels/strip.d.ts +40 -0
  479. package/dist/package/browser/core/panels/strip.js +1 -0
  480. package/dist/package/browser/core/panels/types.d.ts +143 -0
  481. package/dist/package/browser/core/panels/types.js +1 -0
  482. package/dist/package/browser/i18n/index.d.ts +50 -0
  483. package/dist/package/browser/i18n/index.js +207 -0
  484. package/dist/package/browser/i18n/locales/en.json +1959 -0
  485. package/dist/package/browser/i18n/locales/zh.json +1959 -0
  486. package/dist/package/browser/index.d.ts +2 -0
  487. package/dist/package/browser/index.js +2 -0
  488. package/dist/package/browser/lib/a11y-summary.d.ts +17 -0
  489. package/dist/package/browser/lib/a11y-summary.js +66 -0
  490. package/dist/package/browser/lib/action-dom-discovery.d.ts +2 -0
  491. package/dist/package/browser/lib/action-dom-discovery.js +84 -0
  492. package/dist/package/browser/lib/action-registry.d.ts +94 -0
  493. package/dist/package/browser/lib/action-registry.js +210 -0
  494. package/dist/package/browser/lib/aegis.d.ts +40 -0
  495. package/dist/package/browser/lib/aegis.js +230 -0
  496. package/dist/package/browser/lib/agent-catalog-url.d.ts +9 -0
  497. package/dist/package/browser/lib/agent-catalog-url.js +24 -0
  498. package/dist/package/browser/lib/agent-cli-provider.d.ts +10 -0
  499. package/dist/package/browser/lib/agent-cli-provider.js +81 -0
  500. package/dist/package/browser/lib/ai-intents.d.ts +30 -0
  501. package/dist/package/browser/lib/ai-intents.js +52 -0
  502. package/dist/package/browser/lib/broadcast-stream.d.ts +17 -0
  503. package/dist/package/browser/lib/broadcast-stream.js +163 -0
  504. package/dist/package/browser/lib/browser-prefs-sync.d.ts +16 -0
  505. package/dist/package/browser/lib/browser-prefs-sync.js +151 -0
  506. package/dist/package/browser/lib/builtin-actions.d.ts +2 -0
  507. package/dist/package/browser/lib/builtin-actions.js +558 -0
  508. package/dist/package/browser/lib/bus.d.ts +25 -0
  509. package/dist/package/browser/lib/bus.js +71 -0
  510. package/dist/package/browser/lib/checkpoint-api.d.ts +54 -0
  511. package/dist/package/browser/lib/checkpoint-api.js +41 -0
  512. package/dist/package/browser/lib/cli-providers.d.ts +33 -0
  513. package/dist/package/browser/lib/cli-providers.js +61 -0
  514. package/dist/package/browser/lib/command-palette-store.d.ts +5 -0
  515. package/dist/package/browser/lib/command-palette-store.js +22 -0
  516. package/dist/package/browser/lib/composer-bridge.d.ts +103 -0
  517. package/dist/package/browser/lib/composer-bridge.js +448 -0
  518. package/dist/package/browser/lib/dashboard-api.d.ts +104 -0
  519. package/dist/package/browser/lib/dashboard-api.js +125 -0
  520. package/dist/package/browser/lib/deep-link-bus.d.ts +10 -0
  521. package/dist/package/browser/lib/deep-link-bus.js +35 -0
  522. package/dist/package/browser/lib/dialog.d.ts +40 -0
  523. package/dist/package/browser/lib/dialog.js +103 -0
  524. package/dist/package/browser/lib/editor-facts-bus.d.ts +27 -0
  525. package/dist/package/browser/lib/editor-facts-bus.js +25 -0
  526. package/dist/package/browser/lib/extension-api.d.ts +140 -0
  527. package/dist/package/browser/lib/extension-api.js +90 -0
  528. package/dist/package/browser/lib/file-activity-stream.d.ts +54 -0
  529. package/dist/package/browser/lib/file-activity-stream.js +123 -0
  530. package/dist/package/browser/lib/file-family.d.ts +15 -0
  531. package/dist/package/browser/lib/file-family.js +25 -0
  532. package/dist/package/browser/lib/game-templates.d.ts +7 -0
  533. package/dist/package/browser/lib/game-templates.js +15 -0
  534. package/dist/package/browser/lib/global-shortcuts.d.ts +121 -0
  535. package/dist/package/browser/lib/global-shortcuts.js +551 -0
  536. package/dist/package/browser/lib/logSink.d.ts +16 -0
  537. package/dist/package/browser/lib/logSink.js +128 -0
  538. package/dist/package/browser/lib/lucide-icon.d.ts +5 -0
  539. package/dist/package/browser/lib/lucide-icon.js +20 -0
  540. package/dist/package/browser/lib/menu-registry.d.ts +113 -0
  541. package/dist/package/browser/lib/menu-registry.js +197 -0
  542. package/dist/package/browser/lib/model-config.d.ts +89 -0
  543. package/dist/package/browser/lib/model-config.js +72 -0
  544. package/dist/package/browser/lib/model-prefs.d.ts +5 -0
  545. package/dist/package/browser/lib/model-prefs.js +53 -0
  546. package/dist/package/browser/lib/model-route/index.d.ts +81 -0
  547. package/dist/package/browser/lib/model-route/index.js +175 -0
  548. package/dist/package/browser/lib/narrative-copilot.d.ts +20 -0
  549. package/dist/package/browser/lib/narrative-copilot.js +105 -0
  550. package/dist/package/browser/lib/native-menu-bridge.d.ts +37 -0
  551. package/dist/package/browser/lib/native-menu-bridge.js +151 -0
  552. package/dist/package/browser/lib/page-tab-icons.d.ts +21 -0
  553. package/dist/package/browser/lib/page-tab-icons.js +64 -0
  554. package/dist/package/browser/lib/panel-tab-icons.d.ts +21 -0
  555. package/dist/package/browser/lib/panel-tab-icons.js +49 -0
  556. package/dist/package/browser/lib/passive-feedback.d.ts +50 -0
  557. package/dist/package/browser/lib/passive-feedback.js +171 -0
  558. package/dist/package/browser/lib/perception-stream.d.ts +27 -0
  559. package/dist/package/browser/lib/perception-stream.js +42 -0
  560. package/dist/package/browser/lib/platform/index.d.ts +14 -0
  561. package/dist/package/browser/lib/platform/index.js +13 -0
  562. package/dist/package/browser/lib/platform/runtime.d.ts +22 -0
  563. package/dist/package/browser/lib/platform/runtime.js +42 -0
  564. package/dist/package/browser/lib/platform/shell-adapter.d.ts +24 -0
  565. package/dist/package/browser/lib/platform/shell-adapter.js +74 -0
  566. package/dist/package/browser/lib/platform/surface-windowing.d.ts +4 -0
  567. package/dist/package/browser/lib/platform/surface-windowing.js +16 -0
  568. package/dist/package/browser/lib/platform/surface.d.ts +13 -0
  569. package/dist/package/browser/lib/platform/surface.js +27 -0
  570. package/dist/package/browser/lib/platform/use-surface-windowing.d.ts +1 -0
  571. package/dist/package/browser/lib/platform/use-surface-windowing.js +6 -0
  572. package/dist/package/browser/lib/platform/window-manager.d.ts +2 -0
  573. package/dist/package/browser/lib/platform/window-manager.js +82 -0
  574. package/dist/package/browser/lib/project-context.d.ts +4 -0
  575. package/dist/package/browser/lib/project-context.js +42 -0
  576. package/dist/package/browser/lib/project.d.ts +5 -0
  577. package/dist/package/browser/lib/project.js +8 -0
  578. package/dist/package/browser/lib/recent-games.d.ts +24 -0
  579. package/dist/package/browser/lib/recent-games.js +50 -0
  580. package/dist/package/browser/lib/repair-builtin-menus.d.ts +6 -0
  581. package/dist/package/browser/lib/repair-builtin-menus.js +18 -0
  582. package/dist/package/browser/lib/reply-language.d.ts +9 -0
  583. package/dist/package/browser/lib/reply-language.js +11 -0
  584. package/dist/package/browser/lib/resilient-polling.d.ts +9 -0
  585. package/dist/package/browser/lib/resilient-polling.js +16 -0
  586. package/dist/package/browser/lib/session-time.d.ts +8 -0
  587. package/dist/package/browser/lib/session-time.js +40 -0
  588. package/dist/package/browser/lib/shell-live-data.d.ts +12 -0
  589. package/dist/package/browser/lib/shell-live-data.js +66 -0
  590. package/dist/package/browser/lib/sse.d.ts +5 -0
  591. package/dist/package/browser/lib/sse.js +42 -0
  592. package/dist/package/browser/lib/storageKeys.d.ts +70 -0
  593. package/dist/package/browser/lib/storageKeys.js +89 -0
  594. package/dist/package/browser/lib/surface-store.d.ts +38 -0
  595. package/dist/package/browser/lib/surface-store.js +62 -0
  596. package/dist/package/browser/lib/surface.d.ts +56 -0
  597. package/dist/package/browser/lib/surface.js +225 -0
  598. package/dist/package/browser/lib/surfaceAnchors.d.ts +16 -0
  599. package/dist/package/browser/lib/surfaceAnchors.js +76 -0
  600. package/dist/package/browser/lib/surfaceKeepAliveLayout.d.ts +7 -0
  601. package/dist/package/browser/lib/surfaceKeepAliveLayout.js +12 -0
  602. package/dist/package/browser/lib/telemetry-test-prelude.d.ts +0 -0
  603. package/dist/package/browser/lib/telemetry-test-prelude.js +14 -0
  604. package/dist/package/browser/lib/text-edit-actions.d.ts +14 -0
  605. package/dist/package/browser/lib/text-edit-actions.js +184 -0
  606. package/dist/package/browser/lib/trace.d.ts +34 -0
  607. package/dist/package/browser/lib/trace.js +273 -0
  608. package/dist/package/browser/lib/trustedOrigins.d.ts +4 -0
  609. package/dist/package/browser/lib/trustedOrigins.js +36 -0
  610. package/dist/package/browser/lib/ui-action-highlight.d.ts +2 -0
  611. package/dist/package/browser/lib/ui-action-highlight.js +93 -0
  612. package/dist/package/browser/lib/ui-bridge.d.ts +2 -0
  613. package/dist/package/browser/lib/ui-bridge.js +224 -0
  614. package/dist/package/browser/lib/ui-screenshot.d.ts +31 -0
  615. package/dist/package/browser/lib/ui-screenshot.js +155 -0
  616. package/dist/package/browser/lib/ui-trajectory.d.ts +47 -0
  617. package/dist/package/browser/lib/ui-trajectory.js +99 -0
  618. package/dist/package/browser/lib/use-bus-snapshot.d.ts +3 -0
  619. package/dist/package/browser/lib/use-bus-snapshot.js +13 -0
  620. package/dist/package/browser/lib/use-extension-manifest.d.ts +19 -0
  621. package/dist/package/browser/lib/use-extension-manifest.js +67 -0
  622. package/dist/package/browser/lib/useConfirmToast.d.ts +26 -0
  623. package/dist/package/browser/lib/useConfirmToast.js +120 -0
  624. package/dist/package/browser/lib/utils.d.ts +2 -0
  625. package/dist/package/browser/lib/utils.js +5 -0
  626. package/dist/package/browser/lib/vag-action-bridge.d.ts +2 -0
  627. package/dist/package/browser/lib/vag-action-bridge.js +130 -0
  628. package/dist/package/browser/main.d.ts +1 -0
  629. package/dist/package/browser/main.js +157 -0
  630. package/dist/package/browser/store-parts/domain-clients.d.ts +149 -0
  631. package/dist/package/browser/store-parts/domain-clients.js +17 -0
  632. package/dist/package/browser/store-parts/observability.d.ts +4 -0
  633. package/dist/package/browser/store-parts/observability.js +35 -0
  634. package/dist/package/browser/store-parts/persistence.d.ts +40 -0
  635. package/dist/package/browser/store-parts/persistence.js +245 -0
  636. package/dist/package/browser/store-parts/session-client.d.ts +73 -0
  637. package/dist/package/browser/store-parts/session-client.js +17 -0
  638. package/dist/package/browser/store-parts/session-pick.d.ts +8 -0
  639. package/dist/package/browser/store-parts/session-pick.js +21 -0
  640. package/dist/package/browser/store-parts/shell.d.ts +5 -0
  641. package/dist/package/browser/store-parts/shell.js +37 -0
  642. package/dist/package/browser/store.d.ts +455 -0
  643. package/dist/package/browser/store.js +890 -0
  644. package/dist/package/browser/styles/forgeax-preview/agent-avatar.css +69 -0
  645. package/dist/package/browser/styles/forgeax-preview/aliases.css +21 -0
  646. package/dist/package/browser/styles/forgeax-preview/chat-popover.css +141 -0
  647. package/dist/package/browser/styles/forgeax-preview/chat-session.css +896 -0
  648. package/dist/package/browser/styles/forgeax-preview/composer-port.css +531 -0
  649. package/dist/package/browser/styles/forgeax-preview/design-tokens.css +25 -0
  650. package/dist/package/browser/styles/forgeax-preview/index.css +9 -0
  651. package/dist/package/browser/styles/forgeax-preview/scene-fx.css +117 -0
  652. package/dist/package/browser/styles/forgeax-preview/shell-layout.css +280 -0
  653. package/dist/package/browser/styles/forgeax-preview/shell-skin.css +128 -0
  654. package/dist/package/browser/styles/foundation.tokens.json +2755 -0
  655. package/dist/package/browser/styles/global.css +196 -0
  656. package/dist/package/browser/styles/motion.css +558 -0
  657. package/dist/package/browser/styles/plugin-token-bridge.css +19 -0
  658. package/dist/package/browser/styles/primitive.css +197 -0
  659. package/dist/package/browser/styles/semantic.tokens.json +1524 -0
  660. package/dist/package/browser/styles/tokens.css +304 -0
  661. package/dist/package/node/App.js +11 -0
  662. package/dist/package/node/ApplicationDetachedShell.js +10 -0
  663. package/dist/package/node/ApplicationShell.js +62 -0
  664. package/dist/package/node/app-kit.js +4 -0
  665. package/dist/package/node/appHostBootstrap.js +145 -0
  666. package/dist/package/node/application.js +64 -0
  667. package/dist/package/node/boot/SettingsSection.js +82 -0
  668. package/dist/package/node/boot/broadcast.js +32 -0
  669. package/dist/package/node/boot/driver.js +47 -0
  670. package/dist/package/node/boot/store.js +114 -0
  671. package/dist/package/node/boot/themes.js +21 -0
  672. package/dist/package/node/boot/types.js +30 -0
  673. package/dist/package/node/brand/BrandProvider.js +35 -0
  674. package/dist/package/node/brand/index.js +3 -0
  675. package/dist/package/node/brand/runtime.js +71 -0
  676. package/dist/package/node/brand/types.js +9 -0
  677. package/dist/package/node/components/ActivityRail/ActivityRail.js +164 -0
  678. package/dist/package/node/components/ActivityRail/activity-rail-model.js +144 -0
  679. package/dist/package/node/components/AgentAvatar/AgentAvatar.js +50 -0
  680. package/dist/package/node/components/BuildBadge/BuildBadge.js +279 -0
  681. package/dist/package/node/components/Bus/BusAdminPanel.js +1385 -0
  682. package/dist/package/node/components/Bus/CapabilityOverview.js +50 -0
  683. package/dist/package/node/components/ChatColumn/ChatColumn.js +18 -0
  684. package/dist/package/node/components/ChatColumn/SessionTabStrip.js +103 -0
  685. package/dist/package/node/components/ChatColumn/useChatWidth.js +13 -0
  686. package/dist/package/node/components/CommandPalette/CommandPalette.js +242 -0
  687. package/dist/package/node/components/Confirm/ConfirmDialog.js +113 -0
  688. package/dist/package/node/components/ContextMenu/ContextMenu.js +218 -0
  689. package/dist/package/node/components/ContextMenu/menuRegistry.js +152 -0
  690. package/dist/package/node/components/DetachedSurface.js +102 -0
  691. package/dist/package/node/components/DockShell/DockPanelHost.js +7 -0
  692. package/dist/package/node/components/DockShell/DockRegion.js +315 -0
  693. package/dist/package/node/components/DockShell/DockTab.js +139 -0
  694. package/dist/package/node/components/DockShell/ExtensionHostPanel.js +68 -0
  695. package/dist/package/node/components/DockShell/ExtensionRuntimeFrame.js +56 -0
  696. package/dist/package/node/components/DockShell/PanelWindowingBoundary.js +9 -0
  697. package/dist/package/node/components/DockShell/chatDockAnimation.js +101 -0
  698. package/dist/package/node/components/DockShell/chatDockFullscreen.js +22 -0
  699. package/dist/package/node/components/DockShell/chatDockLayout.js +11 -0
  700. package/dist/package/node/components/DockShell/compact-empty-dock-groups.js +28 -0
  701. package/dist/package/node/components/DockShell/crossInstanceDrop.js +1 -0
  702. package/dist/package/node/components/DockShell/dockResetEpoch.js +13 -0
  703. package/dist/package/node/components/DockShell/dockTitle.js +36 -0
  704. package/dist/package/node/components/DockShell/dockviewRegistry.js +1 -0
  705. package/dist/package/node/components/DockShell/edgeDrawer.js +1144 -0
  706. package/dist/package/node/components/DockShell/edgePinStore.js +37 -0
  707. package/dist/package/node/components/DockShell/extension-editor-bridge.js +100 -0
  708. package/dist/package/node/components/DockShell/extension-runtime-selection.js +6 -0
  709. package/dist/package/node/components/DockShell/extensionRuntime.js +84 -0
  710. package/dist/package/node/components/DockShell/footer-panel-visibility.js +43 -0
  711. package/dist/package/node/components/DockShell/footer-panels.js +7 -0
  712. package/dist/package/node/components/DockShell/panelRegistry.js +126 -0
  713. package/dist/package/node/components/DockShell/panelRenderers.js +25 -0
  714. package/dist/package/node/components/DockShell/panelTabCommands.js +133 -0
  715. package/dist/package/node/components/DockShell/panelWindowing.js +42 -0
  716. package/dist/package/node/components/DockShell/regions.js +1 -0
  717. package/dist/package/node/components/DockShell/resolveRegion.js +1 -0
  718. package/dist/package/node/components/DockShell/sanitizeDockLayout.js +46 -0
  719. package/dist/package/node/components/DockShell/sideEdgeMove.js +1 -0
  720. package/dist/package/node/components/DockShell/studioTabMenuProvider.js +39 -0
  721. package/dist/package/node/components/DockShell/tabContextMenu.js +68 -0
  722. package/dist/package/node/components/DockShell/ueDrag/controller.js +785 -0
  723. package/dist/package/node/components/DockShell/ueDrag/geometry.js +217 -0
  724. package/dist/package/node/components/DockShell/ueDrag/overlay.js +206 -0
  725. package/dist/package/node/components/DockShell/useAuxBarWidth.js +13 -0
  726. package/dist/package/node/components/Drawer/DrawerHostView.js +93 -0
  727. package/dist/package/node/components/Drawer/DrawerLauncher.js +22 -0
  728. package/dist/package/node/components/Drawer/useDrawerStore.js +80 -0
  729. package/dist/package/node/components/ErrorBoundary.js +131 -0
  730. package/dist/package/node/components/ExtensionHost/ExtensionIframeHost.js +179 -0
  731. package/dist/package/node/components/ExtensionHost/NativeExtensionHost.js +152 -0
  732. package/dist/package/node/components/Feedback/FeedbackPanel.js +118 -0
  733. package/dist/package/node/components/Feedback/PassiveFeedback.js +218 -0
  734. package/dist/package/node/components/Feedback/collect.js +80 -0
  735. package/dist/package/node/components/Feedback/store.js +174 -0
  736. package/dist/package/node/components/LangSwitcher/LangSwitcher.js +44 -0
  737. package/dist/package/node/components/MainArea/ConsolePanel.js +16 -0
  738. package/dist/package/node/components/MainArea/MainArea.js +20 -0
  739. package/dist/package/node/components/MainArea/StandaloneExtensionIframe.js +155 -0
  740. package/dist/package/node/components/MainArea/SurfacePanels.js +27 -0
  741. package/dist/package/node/components/MainArea/TelemetryViewer.js +116 -0
  742. package/dist/package/node/components/MenuBar/MenuBar.js +286 -0
  743. package/dist/package/node/components/MenuBar/index.js +1 -0
  744. package/dist/package/node/components/MenuBar/menubar-open-state.js +11 -0
  745. package/dist/package/node/components/MenuBar/menubar-surface.js +201 -0
  746. package/dist/package/node/components/ModelPicker/index.js +1 -0
  747. package/dist/package/node/components/ModelPicker/useModelCatalog.js +100 -0
  748. package/dist/package/node/components/Onboarding/ConnectModelPrompt.js +40 -0
  749. package/dist/package/node/components/Onboarding/OnboardingController.js +549 -0
  750. package/dist/package/node/components/Onboarding/connect-selection.js +18 -0
  751. package/dist/package/node/components/Onboarding/home-transition.js +20 -0
  752. package/dist/package/node/components/Onboarding/index.js +3 -0
  753. package/dist/package/node/components/Onboarding/prepareTourShell.js +11 -0
  754. package/dist/package/node/components/Onboarding/project-name.js +29 -0
  755. package/dist/package/node/components/Onboarding/types.js +77 -0
  756. package/dist/package/node/components/PageTabs/PageTabStrip.js +214 -0
  757. package/dist/package/node/components/PageTabs/openablePageTypes.js +13 -0
  758. package/dist/package/node/components/PanelShell/PanelShell.js +459 -0
  759. package/dist/package/node/components/Resize/ResizeHandle.js +1 -0
  760. package/dist/package/node/components/SceneBackground/SceneBackground.js +5 -0
  761. package/dist/package/node/components/SchemaForm/SchemaForm.js +86 -0
  762. package/dist/package/node/components/SchemaForm/schema-form-utils.js +51 -0
  763. package/dist/package/node/components/SettingsPrimitives.js +145 -0
  764. package/dist/package/node/components/Sidebar/BusHealthLamp.js +72 -0
  765. package/dist/package/node/components/Sidebar/FilesPanel.js +234 -0
  766. package/dist/package/node/components/Sidebar/Sidebar.js +8 -0
  767. package/dist/package/node/components/Sidebar/sidebar-types.js +1 -0
  768. package/dist/package/node/components/SlotDebugOverlay/SlotDebugOverlay.js +1 -0
  769. package/dist/package/node/components/SlotDebugOverlay/hashHue.js +1 -0
  770. package/dist/package/node/components/SlotDebugOverlay/index.js +1 -0
  771. package/dist/package/node/components/SlotDebugOverlay/isSlotDebugEnabled.js +1 -0
  772. package/dist/package/node/components/StatusBar/FatalBanner.js +52 -0
  773. package/dist/package/node/components/StatusBar/InfoPanel.js +128 -0
  774. package/dist/package/node/components/StatusBar/StatusChip.js +13 -0
  775. package/dist/package/node/components/StatusBar/StripHostView.js +91 -0
  776. package/dist/package/node/components/StatusBar/StripPopover.js +15 -0
  777. package/dist/package/node/components/StatusBar/feeds/PulseFeeds.js +88 -0
  778. package/dist/package/node/components/StatusBar/footer/CheckpointsDrawer.js +77 -0
  779. package/dist/package/node/components/StatusBar/footer/DiagnosticsPopover.js +108 -0
  780. package/dist/package/node/components/StatusBar/footer/EventsDrawer.js +25 -0
  781. package/dist/package/node/components/StatusBar/footer/ForgeaxBuildPopover.js +62 -0
  782. package/dist/package/node/components/StatusBar/healthBridge.js +245 -0
  783. package/dist/package/node/components/StatusBar/healthStore.js +129 -0
  784. package/dist/package/node/components/StatusBar/useStatusItem.js +35 -0
  785. package/dist/package/node/components/Surfaces/SurfaceKeepAliveLayer.js +218 -0
  786. package/dist/package/node/components/Surfaces/SurfaceOverlay.js +144 -0
  787. package/dist/package/node/components/TopBar/AndroidPackageDialog.js +115 -0
  788. package/dist/package/node/components/TopBar/FsBrowser.js +93 -0
  789. package/dist/package/node/components/TopBar/GameSwitcher.js +157 -0
  790. package/dist/package/node/components/TopBar/IosPackageDialog.js +115 -0
  791. package/dist/package/node/components/TopBar/ProjectSwitcher.js +41 -0
  792. package/dist/package/node/components/TopBar/PublishOnboarding.js +144 -0
  793. package/dist/package/node/components/TopBar/SessionSwitcher.js +124 -0
  794. package/dist/package/node/components/TopBar/TopBar.js +606 -0
  795. package/dist/package/node/components/TopBar/publish-options.js +28 -0
  796. package/dist/package/node/components/TourOverlay/TourOverlay.js +233 -0
  797. package/dist/package/node/components/TourOverlay/index.js +1 -0
  798. package/dist/package/node/components/ownership.js +7 -0
  799. package/dist/package/node/components/ui/SearchableMenu.js +40 -0
  800. package/dist/package/node/components/ui/alert-dialog.js +38 -0
  801. package/dist/package/node/components/ui/button.js +33 -0
  802. package/dist/package/node/components/ui/checkbox.js +8 -0
  803. package/dist/package/node/components/ui/command.js +20 -0
  804. package/dist/package/node/components/ui/dialog.js +34 -0
  805. package/dist/package/node/components/ui/dropdown-menu.js +30 -0
  806. package/dist/package/node/components/ui/input.js +8 -0
  807. package/dist/package/node/components/ui/label.js +7 -0
  808. package/dist/package/node/components/ui/popover.js +10 -0
  809. package/dist/package/node/components/ui/select.js +31 -0
  810. package/dist/package/node/components/ui/tabs.js +12 -0
  811. package/dist/package/node/components/ui/textarea.js +8 -0
  812. package/dist/package/node/components/ui/tooltip.js +10 -0
  813. package/dist/package/node/core/app-shell/catalog-page-extensions.js +234 -0
  814. package/dist/package/node/core/app-shell/derive-panel-renderers.js +17 -0
  815. package/dist/package/node/core/app-shell/host.js +188 -0
  816. package/dist/package/node/core/app-shell/index.js +8 -0
  817. package/dist/package/node/core/app-shell/logger.js +6 -0
  818. package/dist/package/node/core/app-shell/ownership.js +7 -0
  819. package/dist/package/node/core/app-shell/react/HostProvider.js +35 -0
  820. package/dist/package/node/core/app-shell/surface-extension.js +33 -0
  821. package/dist/package/node/core/app-shell/types.js +1 -0
  822. package/dist/package/node/core/contextual-keybindings.js +198 -0
  823. package/dist/package/node/core/extension-foundation/bus.js +3 -0
  824. package/dist/package/node/core/extension-foundation/capabilities.js +3 -0
  825. package/dist/package/node/core/extension-foundation/commands.js +3 -0
  826. package/dist/package/node/core/extension-foundation/context-keys.js +3 -0
  827. package/dist/package/node/core/extension-foundation/contribution-registry.js +3 -0
  828. package/dist/package/node/core/extension-foundation/errors.js +3 -0
  829. package/dist/package/node/core/extension-foundation/index.js +9 -0
  830. package/dist/package/node/core/extension-foundation/loader.js +3 -0
  831. package/dist/package/node/core/extension-foundation/storage.js +3 -0
  832. package/dist/package/node/core/extension-foundation/types.js +1 -0
  833. package/dist/package/node/core/extensions/builtin-commands.js +256 -0
  834. package/dist/package/node/core/extensions/builtin-menus.js +252 -0
  835. package/dist/package/node/core/extensions/chrome-drawer.js +45 -0
  836. package/dist/package/node/core/extensions/chrome-statusbar.js +26 -0
  837. package/dist/package/node/core/extensions/detached-agents-browser.js +9 -0
  838. package/dist/package/node/core/extensions/detached-files-browser.js +6 -0
  839. package/dist/package/node/core/extensions/editor-commands.js +182 -0
  840. package/dist/package/node/core/extensions/foundation-bus.js +3 -0
  841. package/dist/package/node/core/extensions/foundation-commands.js +6 -0
  842. package/dist/package/node/core/extensions/foundation-storage.js +3 -0
  843. package/dist/package/node/core/extensions/host-commands.js +52 -0
  844. package/dist/package/node/core/extensions/observability.js +18 -0
  845. package/dist/package/node/core/extensions/panels-chat.js +41 -0
  846. package/dist/package/node/core/extensions/panels-editor.js +26 -0
  847. package/dist/package/node/core/extensions/panels-viewport.js +20 -0
  848. package/dist/package/node/core/extensions/session-client.js +42 -0
  849. package/dist/package/node/core/extensions/slots-corner-agent-picker.js +6 -0
  850. package/dist/package/node/core/extensions/slots-main-area-body.js +6 -0
  851. package/dist/package/node/core/extensions/slots-sidebar-agents.js +6 -0
  852. package/dist/package/node/core/extensions/studio-domain-clients.js +15 -0
  853. package/dist/package/node/core/extensions/surfaces-scene-editor.js +6 -0
  854. package/dist/package/node/core/extensions/trajectory.js +50 -0
  855. package/dist/package/node/core/page-navigation.js +1 -0
  856. package/dist/package/node/core/page-platform/activity.js +46 -0
  857. package/dist/package/node/core/page-platform/dockview-layout.js +63 -0
  858. package/dist/package/node/core/page-platform/index.js +8 -0
  859. package/dist/package/node/core/page-platform/layout-store.js +54 -0
  860. package/dist/package/node/core/page-platform/page-dirty-probe.js +4 -0
  861. package/dist/package/node/core/page-platform/registry.js +194 -0
  862. package/dist/package/node/core/page-platform/resource-editor.js +74 -0
  863. package/dist/package/node/core/page-platform/session.js +327 -0
  864. package/dist/package/node/core/page-platform/types.js +10 -0
  865. package/dist/package/node/core/panels/context-expression.js +1 -0
  866. package/dist/package/node/core/panels/drawer.js +1 -0
  867. package/dist/package/node/core/panels/index.js +7 -0
  868. package/dist/package/node/core/panels/panel-action-registry.js +62 -0
  869. package/dist/package/node/core/panels/panel-control-registry.js +54 -0
  870. package/dist/package/node/core/panels/resolve-panel-action-state.js +9 -0
  871. package/dist/package/node/core/panels/strip.js +1 -0
  872. package/dist/package/node/core/panels/types.js +1 -0
  873. package/dist/package/node/i18n/index.js +207 -0
  874. package/dist/package/node/i18n/locales/en.json +1959 -0
  875. package/dist/package/node/i18n/locales/zh.json +1959 -0
  876. package/dist/package/node/index.js +2 -0
  877. package/dist/package/node/lib/a11y-summary.js +66 -0
  878. package/dist/package/node/lib/action-dom-discovery.js +84 -0
  879. package/dist/package/node/lib/action-registry.js +210 -0
  880. package/dist/package/node/lib/aegis.js +230 -0
  881. package/dist/package/node/lib/agent-catalog-url.js +24 -0
  882. package/dist/package/node/lib/agent-cli-provider.js +81 -0
  883. package/dist/package/node/lib/ai-intents.js +52 -0
  884. package/dist/package/node/lib/broadcast-stream.js +163 -0
  885. package/dist/package/node/lib/browser-prefs-sync.js +151 -0
  886. package/dist/package/node/lib/builtin-actions.js +558 -0
  887. package/dist/package/node/lib/bus.js +71 -0
  888. package/dist/package/node/lib/checkpoint-api.js +41 -0
  889. package/dist/package/node/lib/cli-providers.js +61 -0
  890. package/dist/package/node/lib/command-palette-store.js +22 -0
  891. package/dist/package/node/lib/composer-bridge.js +448 -0
  892. package/dist/package/node/lib/dashboard-api.js +125 -0
  893. package/dist/package/node/lib/deep-link-bus.js +35 -0
  894. package/dist/package/node/lib/dialog.js +103 -0
  895. package/dist/package/node/lib/editor-facts-bus.js +25 -0
  896. package/dist/package/node/lib/extension-api.js +90 -0
  897. package/dist/package/node/lib/file-activity-stream.js +123 -0
  898. package/dist/package/node/lib/file-family.js +25 -0
  899. package/dist/package/node/lib/game-templates.js +15 -0
  900. package/dist/package/node/lib/global-shortcuts.js +551 -0
  901. package/dist/package/node/lib/logSink.js +128 -0
  902. package/dist/package/node/lib/lucide-icon.js +20 -0
  903. package/dist/package/node/lib/menu-registry.js +197 -0
  904. package/dist/package/node/lib/model-config.js +72 -0
  905. package/dist/package/node/lib/model-prefs.js +53 -0
  906. package/dist/package/node/lib/model-route/index.js +175 -0
  907. package/dist/package/node/lib/narrative-copilot.js +105 -0
  908. package/dist/package/node/lib/native-menu-bridge.js +151 -0
  909. package/dist/package/node/lib/page-tab-icons.js +64 -0
  910. package/dist/package/node/lib/panel-tab-icons.js +49 -0
  911. package/dist/package/node/lib/passive-feedback.js +171 -0
  912. package/dist/package/node/lib/perception-stream.js +42 -0
  913. package/dist/package/node/lib/platform/index.js +13 -0
  914. package/dist/package/node/lib/platform/runtime.js +42 -0
  915. package/dist/package/node/lib/platform/shell-adapter.js +74 -0
  916. package/dist/package/node/lib/platform/surface-windowing.js +16 -0
  917. package/dist/package/node/lib/platform/surface.js +27 -0
  918. package/dist/package/node/lib/platform/use-surface-windowing.js +6 -0
  919. package/dist/package/node/lib/platform/window-manager.js +82 -0
  920. package/dist/package/node/lib/project-context.js +42 -0
  921. package/dist/package/node/lib/project.js +8 -0
  922. package/dist/package/node/lib/recent-games.js +50 -0
  923. package/dist/package/node/lib/repair-builtin-menus.js +18 -0
  924. package/dist/package/node/lib/reply-language.js +11 -0
  925. package/dist/package/node/lib/resilient-polling.js +16 -0
  926. package/dist/package/node/lib/session-time.js +40 -0
  927. package/dist/package/node/lib/shell-live-data.js +66 -0
  928. package/dist/package/node/lib/sse.js +42 -0
  929. package/dist/package/node/lib/storageKeys.js +89 -0
  930. package/dist/package/node/lib/surface-store.js +62 -0
  931. package/dist/package/node/lib/surface.js +225 -0
  932. package/dist/package/node/lib/surfaceAnchors.js +76 -0
  933. package/dist/package/node/lib/surfaceKeepAliveLayout.js +12 -0
  934. package/dist/package/node/lib/telemetry-test-prelude.js +14 -0
  935. package/dist/package/node/lib/text-edit-actions.js +184 -0
  936. package/dist/package/node/lib/trace.js +273 -0
  937. package/dist/package/node/lib/trustedOrigins.js +36 -0
  938. package/dist/package/node/lib/ui-action-highlight.js +93 -0
  939. package/dist/package/node/lib/ui-bridge.js +224 -0
  940. package/dist/package/node/lib/ui-screenshot.js +155 -0
  941. package/dist/package/node/lib/ui-trajectory.js +99 -0
  942. package/dist/package/node/lib/use-bus-snapshot.js +13 -0
  943. package/dist/package/node/lib/use-extension-manifest.js +67 -0
  944. package/dist/package/node/lib/useConfirmToast.js +120 -0
  945. package/dist/package/node/lib/utils.js +5 -0
  946. package/dist/package/node/lib/vag-action-bridge.js +130 -0
  947. package/dist/package/node/main.js +157 -0
  948. package/dist/package/node/store-parts/domain-clients.js +17 -0
  949. package/dist/package/node/store-parts/observability.js +35 -0
  950. package/dist/package/node/store-parts/persistence.js +245 -0
  951. package/dist/package/node/store-parts/session-client.js +17 -0
  952. package/dist/package/node/store-parts/session-pick.js +21 -0
  953. package/dist/package/node/store-parts/shell.js +37 -0
  954. package/dist/package/node/store.js +890 -0
  955. package/dist/package/node/styles/foundation.tokens.json +2755 -0
  956. package/dist/package/node/styles/semantic.tokens.json +1524 -0
  957. package/dist/package/packages/design/styles/fx-bridge.css +25 -0
  958. package/dist/package/packages/design/styles/primitive.css +199 -0
  959. package/dist/package/packages/design/styles/semantic.css +262 -0
  960. package/dist/package/packages/design/theme.d.ts +15 -0
  961. package/dist/package/packages/design/theme.js +31 -0
  962. package/dist/package/packages/design/tokens.css +14 -0
  963. package/package.json +145 -0
@@ -0,0 +1,155 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Phase A3 — iframe-mounted page plugin.
4
+ *
5
+ * Renders the plugin's standalone dev server inside an iframe and wires it to
6
+ * the host RPC channel via `createExtensionPort` from `@forgeax/extension-platform/transport`. This
7
+ * is the new path that will eventually replace the import-tree-based
8
+ * `MAINAREA_PLUGIN_LOADERS` map. Today (A3) it's gated behind the
9
+ * `VITE_FX_USE_IFRAME=true` env flag and only kicks in when a plugin
10
+ * manifest declares `entry.standalone`.
11
+ *
12
+ * What we wire on the host side (interface):
13
+ * - onChat — plugin → composer text (TODO B-phase: dispatch into store)
14
+ * - onToolCall — plugin → tool registry (TODO B-phase: real registry)
15
+ * - surface.subscribe — observe surface.expose for AgentsPanel
16
+ * - setTheme — pushed when light/dark or locale changes
17
+ */
18
+ import { useCallback, useMemo } from 'react';
19
+ import { getLocale, useTranslation } from '../../i18n/index.js';
20
+ import { useShellStore } from '../../store.js';
21
+ import { openExtensionPage } from '../../core/page-navigation.js';
22
+ import { getSessionClient } from '../../store-parts/session-client.js';
23
+ import { ExtensionIframeHost } from '../ExtensionHost/ExtensionIframeHost.js';
24
+ import { usePanelRenderers } from '../DockShell/panelRenderers.js';
25
+ export function buildIframeSrc(plugin, pane, slug) {
26
+ const sa = plugin.entry?.standalone;
27
+ if (!plugin.frontendUrl && !sa && !plugin.entry?.frontend)
28
+ return null;
29
+ // Explicit host-validated dev URLs win. Existing embedded/proxy/port modes
30
+ // remain for installed extensions and never infer a Toolkit registration.
31
+ // Four address modes:
32
+ // 1. embeddedAlso=true — plugin ships a built dist served by the host at
33
+ // /extensions/<id>/. Prefer this when set: the studio doesn't launch the
34
+ // plugin's own dev server, and declared `port` may collide with other
35
+ // services (e.g. extension-character's 15173 collides with the engine).
36
+ // 2. anydev/cloud proxy mode — keep the browser on Studio's HTTPS origin and
37
+ // let Vite proxy to the plugin's plain-HTTP dev server inside the container.
38
+ // 3. plugin declares `port` — use http://<host>:<port>/<readyProbe?>
39
+ // 4. plugin only declares `start` — fall back to /extensions/<id>/.
40
+ const shortId = plugin.id.replace(/^@[^/]+\//, '');
41
+ const encodedShortId = encodeURIComponent(shortId);
42
+ const embeddedSrc = `/extensions/${encodedShortId}/`;
43
+ let base;
44
+ if (plugin.frontendUrl)
45
+ base = plugin.frontendUrl;
46
+ else if (plugin.entry?.frontend || sa?.embeddedAlso === true)
47
+ base = embeddedSrc;
48
+ else if (import.meta.env.VITE_FORGEAX_STANDALONE_PROXY === '1') {
49
+ const probe = sa?.readyProbe ?? '/';
50
+ const path = probe.startsWith('/') ? probe : `/${probe}`;
51
+ base = `/__fx-plugin/${encodedShortId}${path}`;
52
+ }
53
+ else if (typeof sa?.port === 'number') {
54
+ const probe = sa.readyProbe ?? '/';
55
+ const path = probe.startsWith('/') ? probe : `/${probe}`;
56
+ // Match the parent page's protocol. When the Studio UI is served over HTTPS
57
+ // (FORGEAX_INTERFACE_HTTPS=1, e.g. remote-IP access) an `http://` iframe is
58
+ // blocked as mixed content. The plugin dev server must then also serve HTTPS
59
+ // (run.ts passes the studio .tls cert to its vite). Falls back to http://
60
+ // transparently when the parent is http.
61
+ base = `${window.location.protocol}//${window.location.hostname}:${sa.port}${path}`;
62
+ }
63
+ else
64
+ base = embeddedSrc;
65
+ // 多游戏:把当前 game slug 喂进 iframe URL,让 extension-scene 等"per-game data"
66
+ // 类型的插件能在自己空间里读出。其它插件忽略此参数即可。
67
+ const params = [];
68
+ if (pane)
69
+ params.push(`pane=${encodeURIComponent(pane)}`);
70
+ if (slug)
71
+ params.push(`slug=${encodeURIComponent(slug)}`);
72
+ params.push(`locale=${encodeURIComponent(getLocale())}`);
73
+ if (params.length === 0)
74
+ return base;
75
+ return base + (base.includes('?') ? '&' : '?') + params.join('&');
76
+ }
77
+ /** localStorage key the host writes the cross-page handoff payload to.
78
+ * Same-origin so the target plugin iframe (e.g. extension-anim) can read it on boot
79
+ * + via the 'storage' event. Mirrored constant lives in extension-anim's bridge. */
80
+ const ANIM_HANDOFF_KEY = 'forgeax:anim-handoff';
81
+ /** Resolve the target plugin's page tab id + flip the store so MainArea
82
+ * takes over with the target plugin. Writes the handoff payload (charId/role/
83
+ * slug) to localStorage first so the target iframe can pick it up. */
84
+ function doNavigate(targetPluginId, payload) {
85
+ try {
86
+ if (payload && Object.keys(payload).length > 0) {
87
+ window.localStorage.setItem(ANIM_HANDOFF_KEY, JSON.stringify({ ...payload, targetPluginId, ts: Date.now() }));
88
+ }
89
+ }
90
+ catch {
91
+ /* localStorage unavailable (private mode) — target falls back to selector */
92
+ }
93
+ void openExtensionPage(targetPluginId);
94
+ }
95
+ export function StandaloneExtensionIframe({ plugin, pane, active = true, reloadNonce = 0 }) {
96
+ const { t } = useTranslation();
97
+ const { editor } = usePanelRenderers();
98
+ // STABLE cache key. Was `${version}-${Date.now()}` which defeated keep-alive:
99
+ // any iframe remount (re-parent / reconcile) recomputed Date.now() → new URL →
100
+ // a full cold reload that tore down the WebGPU ctx + WS + scroll on every
101
+ // panel/game switch. Now keyed only on identity (id + version) + an explicit
102
+ // reloadNonce, so the URL stays identical across switches and the browser
103
+ // reuses the live iframe. A deliberate reload bumps reloadNonce.
104
+ const iframeCacheKey = useMemo(() => `${plugin.version ?? 'dev'}-${reloadNonce}`, [plugin.id, plugin.version, reloadNonce]);
105
+ const effectiveSlug = useShellStore((s) => s.activeGameSlug);
106
+ const slugReady = useShellStore((s) => s.activeGameResolved);
107
+ const rawSrc = slugReady ? buildIframeSrc(plugin, pane, effectiveSlug) : null;
108
+ const src = rawSrc ? rawSrc + (rawSrc.includes('?') ? '&' : '?') + `fxv=${encodeURIComponent(iframeCacheKey)}` : null;
109
+ const handleNavigate = useCallback((targetPluginId, payload) => {
110
+ doNavigate(targetPluginId, payload);
111
+ }, []);
112
+ const handleChatPost = useCallback((e) => {
113
+ if (!e.text || !e.text.trim())
114
+ return;
115
+ if (e.attachments && e.attachments.length > 0 && import.meta.env.DEV) {
116
+ // eslint-disable-next-line no-console
117
+ console.warn('[plugin chat.post] attachments dropped (not yet supported):', plugin.id, e.attachments);
118
+ }
119
+ const st = useShellStore.getState();
120
+ const sid = st.activeSid;
121
+ if (!sid)
122
+ return;
123
+ const to = st.tabs.find((tb) => tb.sid === sid)?.agentId ?? undefined;
124
+ void getSessionClient().emitForgeaXMessage(sid, e.text, to ? { to } : {}).catch((err) => {
125
+ if (import.meta.env.DEV) {
126
+ // eslint-disable-next-line no-console
127
+ console.warn('[plugin chat.post] emit failed:', plugin.id, err);
128
+ }
129
+ });
130
+ }, [plugin.id]);
131
+ const handleToolCall = useCallback(async (call) => {
132
+ try {
133
+ const r = await fetch('/api/tools/call', {
134
+ method: 'POST',
135
+ headers: { 'content-type': 'application/json' },
136
+ body: JSON.stringify({
137
+ toolId: call.toolId,
138
+ args: call.args ?? {},
139
+ caller: { kind: 'extension', extensionId: plugin.id, instanceId: `standalone:${plugin.id}` },
140
+ }),
141
+ });
142
+ const body = (await r.json());
143
+ return body.ok
144
+ ? { ok: true, result: body.result }
145
+ : { ok: false, error: body.error ?? 'tool call failed' };
146
+ }
147
+ catch (e) {
148
+ return { ok: false, error: e.message };
149
+ }
150
+ }, [plugin.id]);
151
+ if (!src) {
152
+ return (_jsxs("div", { style: { padding: 20, color: '#888' }, children: [t('standaloneExtension.noEntryPrefix'), " ", _jsx("code", { children: plugin.id }), ' ', t('standaloneExtension.noEntryMiddle'), " ", _jsx("code", { children: "entry.standalone" }), ' ', t('standaloneExtension.noEntrySuffix')] }));
153
+ }
154
+ return (_jsx(ExtensionIframeHost, { extensionId: plugin.id, src: src, pane: pane, active: active, onNavigate: handleNavigate, onChatPost: handleChatPost, onEditorAssetImport: editor?.importAssetSource, onToolCall: handleToolCall, allowedOrigin: plugin.allowedOrigin, loadErrorText: (error) => t('standaloneExtension.iframeLoadFailed', { error }) }));
155
+ }
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from 'react';
3
+ import { SurfaceRegion } from '@forgeax/app-shell/react';
4
+ import { setAnchor } from '../../lib/surfaceAnchors.js';
5
+ // SurfaceAnchor — empty flex-fill placeholder that registers its element with the
6
+ // anchor registry on mount and clears it on unmount. The keep-alive layer reads
7
+ // this element's bounding rect to position the live (kept-alive) surface over it.
8
+ function SurfaceAnchor({ kind }) {
9
+ const ref = useRef(null);
10
+ useEffect(() => {
11
+ setAnchor(kind, ref.current);
12
+ return () => setAnchor(kind, null);
13
+ }, [kind]);
14
+ return _jsx("div", { ref: ref, className: "surface-anchor", "data-surface-anchor": kind });
15
+ }
16
+ // ViewportPanel — combined edit+preview surface, renders the editor viewport anchor.
17
+ // The keep-alive layer manages the actual surface rendering.
18
+ export function ViewportPanel() {
19
+ return (_jsx(SurfaceRegion, { children: _jsx(SurfaceAnchor, { kind: "edit" }) }));
20
+ }
21
+ // Backward-compat aliases kept for existing consumers during migration.
22
+ // These are thin wrappers around ViewportPanel; the old 'preview'/'edit' modes
23
+ // should no longer be used (they map to 'viewport' via AppMode migration).
24
+ export { ViewportPanel as EditPanel };
25
+ export function PreviewPanel() {
26
+ return (_jsx(SurfaceRegion, { children: _jsx(SurfaceAnchor, { kind: "play" }) }));
27
+ }
@@ -0,0 +1,116 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useState } from 'react';
3
+ import { useShellStore } from '../../store.js';
4
+
5
+ // TelemetryViewer — a dock panel for the observability (trace + log) feed.
6
+ //
7
+ // One store slice (`telemetry`) carries BOTH node-produced records (WS
8
+ // `{type:'telemetry'}`) and iframe-produced ones (postMessage
9
+ // `{type:'VAG_TELEMETRY'}`); see store.ts pushTelemetry. This viewer splits by
10
+ // `kind`:
11
+ // - spans → a per-trace waterfall (nested by parentSpanId, bars positioned by
12
+ // startTs and sized by duration; provisional spans render as「ongoing」).
13
+ // - logs → a newest-first stream with a level filter.
14
+ // 见 .claude/docs/架构设计/forgeax-os/可观测性-trace-log-v3-B档-并行执行计划-2026-06-24.md §C Track UI。
15
+ const LOG_LEVELS = ['debug', 'info', 'warn', 'error'];
16
+ /** Group spans by traceId and order each trace's spans into a depth-tagged DFS
17
+ * list (root spans first, children nested under their parentSpanId). Spans with
18
+ * an unknown / absent parent are treated as roots so nothing is dropped. */
19
+ export function buildTraces(spans) {
20
+ // Latest record per spanId wins (onEnd `final` overrides the onStart
21
+ // `provisional`, both share the same spanId).
22
+ const bySpanId = new Map();
23
+ for (const s of spans)
24
+ bySpanId.set(s.spanId, s);
25
+ const latest = [...bySpanId.values()];
26
+ const byTrace = new Map();
27
+ for (const s of latest) {
28
+ const arr = byTrace.get(s.traceId) ?? [];
29
+ arr.push(s);
30
+ byTrace.set(s.traceId, arr);
31
+ }
32
+ const trees = [];
33
+ for (const [traceId, list] of byTrace) {
34
+ const ids = new Set(list.map((s) => s.spanId));
35
+ const children = new Map();
36
+ const roots = [];
37
+ for (const s of list) {
38
+ if (s.parentSpanId && ids.has(s.parentSpanId)) {
39
+ const arr = children.get(s.parentSpanId) ?? [];
40
+ arr.push(s);
41
+ children.set(s.parentSpanId, arr);
42
+ }
43
+ else {
44
+ roots.push(s);
45
+ }
46
+ }
47
+ const sortByStart = (a, b) => a.startTs - b.startTs;
48
+ roots.sort(sortByStart);
49
+ for (const arr of children.values())
50
+ arr.sort(sortByStart);
51
+ const rows = [];
52
+ const walk = (s, depth) => {
53
+ rows.push({ span: s, depth });
54
+ for (const c of children.get(s.spanId) ?? [])
55
+ walk(c, depth + 1);
56
+ };
57
+ for (const r of roots)
58
+ walk(r, 0);
59
+ let t0 = Infinity;
60
+ let t1 = -Infinity;
61
+ const now = Date.now();
62
+ for (const s of list) {
63
+ t0 = Math.min(t0, s.startTs);
64
+ t1 = Math.max(t1, s.endTs ?? now); // provisional → extend to now
65
+ }
66
+ trees.push({ traceId, t0, t1, rows });
67
+ }
68
+ // Newest trace first (by its earliest span).
69
+ trees.sort((a, b) => b.t0 - a.t0);
70
+ return trees;
71
+ }
72
+ export function fmtDur(ms) {
73
+ if (ms < 1)
74
+ return '<1ms';
75
+ if (ms < 1000)
76
+ return `${Math.round(ms)}ms`;
77
+ return `${(ms / 1000).toFixed(2)}s`;
78
+ }
79
+ export function SpanBar({ span, depth, t0, t1 }) {
80
+ const span0 = span.startTs;
81
+ const span1 = span.endTs ?? Date.now();
82
+ const total = Math.max(1, t1 - t0);
83
+ const leftPct = ((span0 - t0) / total) * 100;
84
+ const widthPct = Math.max(0.5, ((span1 - span0) / total) * 100);
85
+ const dur = (span.endTs ?? span1) - span0;
86
+ const isErr = span.status?.code === 'error';
87
+ const cls = ['tv-span-bar', isErr ? 'tv-span-bar--error' : '', span.provisional || span.endTs == null ? 'tv-span-bar--ongoing' : '']
88
+ .filter(Boolean)
89
+ .join(' ');
90
+ const who = span.agentId ? `${span.agentId}` : span.sid ?? '';
91
+ return (_jsxs("div", { className: "tv-span-row", children: [_jsxs("div", { className: "tv-span-label", style: { paddingLeft: depth * 12 }, title: `${span.name} · ${span.spanId}`, children: [_jsx("span", { className: "tv-span-name", children: span.name }), _jsxs("span", { className: "tv-span-meta", children: [fmtDur(dur), span.endTs == null ? '…' : '', who ? ` · ${who}` : ''] })] }), _jsx("div", { className: "tv-span-track", children: _jsx("div", { className: cls, style: { left: `${leftPct}%`, width: `${widthPct}%` } }) })] }));
92
+ }
93
+ /** 日志按 level 过滤(`'all'` = 不过滤)+ 按 ts 新→旧排序。纯函数,可独立单测。 */
94
+ export function filterAndSortLogs(logs, level) {
95
+ const filtered = level === 'all' ? logs : logs.filter((l) => l.level === level);
96
+ return [...filtered].sort((a, b) => b.ts - a.ts);
97
+ }
98
+ /** store-connected 容器:读 telemetry slice + clear,委托给纯展示组件 {@link TelemetryView}。 */
99
+ export function TelemetryViewer() {
100
+ const telemetry = useShellStore((s) => s.telemetry);
101
+ const clearTelemetry = useShellStore((s) => s.clearTelemetry);
102
+ return _jsx(TelemetryView, { telemetry: telemetry, onClear: clearTelemetry });
103
+ }
104
+ /** 纯展示组件(prop 驱动,不读 store)—— 便于 renderToStaticMarkup 注入 seeded 数据单测。 */
105
+ export function TelemetryView({ telemetry, onClear }) {
106
+ const [levelFilter, setLevelFilter] = useState('all');
107
+ const spans = useMemo(() => telemetry.filter((r) => r.kind === 'span'), [telemetry]);
108
+ const logs = useMemo(() => telemetry.filter((r) => r.kind === 'log'), [telemetry]);
109
+ const traces = useMemo(() => buildTraces(spans), [spans]);
110
+ const visibleLogs = useMemo(() => filterAndSortLogs(logs, levelFilter), [logs, levelFilter]);
111
+ return (_jsxs("div", { className: "tv-panel", children: [_jsxs("div", { className: "tv-bar", children: [_jsxs("span", { className: "tv-title", children: ["Telemetry", telemetry.length ? ` · ${spans.length} span / ${logs.length} log` : ''] }), telemetry.length > 0 && (_jsx("button", { type: "button", className: "tv-clear", onClick: () => onClear(), title: "clear telemetry", children: "clear" }))] }), _jsxs("div", { className: "tv-section tv-traces thin-scrollbar", children: [traces.length === 0 && _jsx("div", { className: "tv-empty", children: "no spans yet" }), traces.map((tr) => (_jsxs("div", { className: "tv-trace", children: [_jsxs("div", { className: "tv-trace-head", title: tr.traceId, children: [_jsx("span", { className: "tv-trace-id", children: tr.traceId.slice(0, 12) }), _jsx("span", { className: "tv-trace-dur", children: fmtDur(tr.t1 - tr.t0) }), _jsxs("span", { className: "tv-trace-count", children: [tr.rows.length, " spans"] })] }), tr.rows.map(({ span, depth }) => (_jsx(SpanBar, { span: span, depth: depth, t0: tr.t0, t1: tr.t1 }, span.spanId)))] }, tr.traceId)))] }), _jsxs("div", { className: "tv-logbar", children: [_jsx("span", { className: "tv-logbar-title", children: "Logs" }), _jsxs("div", { className: "tv-filters", children: [_jsx("button", { type: "button", className: `tv-filter ${levelFilter === 'all' ? 'tv-filter--on' : ''}`, onClick: () => setLevelFilter('all'), children: "all" }), LOG_LEVELS.map((lv) => (_jsx("button", { type: "button", className: `tv-filter tv-filter--${lv} ${levelFilter === lv ? 'tv-filter--on' : ''}`, onClick: () => setLevelFilter(lv), children: lv }, lv)))] })] }), _jsxs("div", { className: "tv-section tv-logs thin-scrollbar", children: [visibleLogs.length === 0 && _jsx("div", { className: "tv-empty", children: "no logs" }), visibleLogs.map((l, i) => {
112
+ const d = new Date(l.ts);
113
+ const stamp = `${String(d.getHours()).padStart(2, '0')}:${String(d.getMinutes()).padStart(2, '0')}:${String(d.getSeconds()).padStart(2, '0')}`;
114
+ return (_jsxs("div", { className: `tv-log-row tv-log--${l.level}`, children: [_jsx("span", { className: "tv-log-time", children: stamp }), _jsx("span", { className: `tv-log-level tv-log-level--${l.level}`, children: l.level }), _jsx("span", { className: "tv-log-msg", children: l.msg }), l.traceId && _jsx("span", { className: "tv-log-trace", title: l.traceId, children: l.traceId.slice(0, 8) })] }, `${l.ts}-${i}`));
115
+ })] })] }));
116
+ }
@@ -0,0 +1,286 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * MenuBar — Web renderer for the menu registry (T2).
4
+ *
5
+ * Subscribes to `lib/menu-registry` via `useSyncExternalStore` and renders
6
+ * top-level dropdowns for `file` / `edit` / `window` / `build` / `select` /
7
+ * `help` (in that order). `brand` renders first as a small app-menu dropdown.
8
+ * `publish` is intentionally excluded — TopBar already owns a Publish button.
9
+ *
10
+ * Platform guard: under Tauri the OS draws the real menu bar (T5's native
11
+ * bridge), so we render ONLY the brand entry (or nothing when brand is empty).
12
+ * On web we render the full bar.
13
+ *
14
+ * Commands: clicking a leaf item dispatches through the SAME accessor TopBar
15
+ * uses — `useHost().commands.execute(id, args)` (`useCommand<T>(id)` bakes the
16
+ * id into the callback, which doesn't fit here since ids are dynamic at click
17
+ * time; the underlying accessor is identical). This keeps keyboard shortcuts,
18
+ * command palette, and menu clicks on one entry.
19
+ */
20
+ import { useCallback, useEffect, useState, useSyncExternalStore } from 'react';
21
+ import { BookOpen, BoxSelect, Check, Clipboard, Clock, Code, Copy, FilePlus, FlipHorizontal2, Focus, FolderOpen, FolderSearch, Gamepad2, Github, Globe, GraduationCap, Hash, Info, Keyboard, LayoutGrid, Maximize, MessageCircle, Newspaper, Package, Pencil, Play, Redo2, RefreshCw, RotateCcw, Save, SaveAll, Scale, Scan, Scissors, ScrollText, Search, Settings, Shapes, Sparkles, Square, SquareDashed, Store, Trash2, Undo2, Upload, X, } from 'lucide-react';
22
+ import { useTranslation } from '../../i18n/index.js';
23
+ import { useHost } from '../../core/app-shell/index.js';
24
+ import { useBrand } from '../../brand/BrandProvider.js';
25
+ import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, } from '../ui/dropdown-menu.js';
26
+ import { onMenuChange, snapshotAllMenus, } from '../../lib/menu-registry.js';
27
+ import { prettyCombo } from '../../lib/global-shortcuts.js';
28
+ import { useMenubarSurface } from './menubar-surface.js';
29
+ import { openMenuFromTriggerPointerDown } from './menubar-open-state.js';
30
+ import { isTauri } from '../../lib/platform/runtime.js';
31
+ import { captureFocusedTextEditTarget } from '../../lib/text-edit-actions.js';
32
+ import { getRecentGamesRevision, subscribeRecentGames, warmRecentGames, } from '../../lib/recent-games.js';
33
+ import { repairBuiltinMenusIfEmpty } from '../../lib/repair-builtin-menus.js';
34
+
35
+ // Icon name → lucide component. Mirrors ContextMenu.tsx's MENU_ICONS pattern
36
+ // (single-file lookup so an unknown name gracefully renders no icon rather
37
+ // than crashing). Static import — never dynamic — so the bundle keeps only
38
+ // the icons actually referenced from builtin-menus.ts.
39
+ const MENU_ICONS = {
40
+ 'book-open': BookOpen,
41
+ 'box-select': BoxSelect,
42
+ clipboard: Clipboard,
43
+ clock: Clock,
44
+ code: Code,
45
+ copy: Copy,
46
+ 'file-plus': FilePlus,
47
+ 'flip-horizontal-2': FlipHorizontal2,
48
+ focus: Focus,
49
+ 'folder-open': FolderOpen,
50
+ 'folder-search': FolderSearch,
51
+ 'gamepad-2': Gamepad2,
52
+ github: Github,
53
+ globe: Globe,
54
+ 'graduation-cap': GraduationCap,
55
+ hash: Hash,
56
+ info: Info,
57
+ keyboard: Keyboard,
58
+ 'layout-grid': LayoutGrid,
59
+ maximize: Maximize,
60
+ 'message-circle': MessageCircle,
61
+ newspaper: Newspaper,
62
+ package: Package,
63
+ pencil: Pencil,
64
+ play: Play,
65
+ 'redo-2': Redo2,
66
+ 'refresh-cw': RefreshCw,
67
+ 'rotate-ccw': RotateCcw,
68
+ save: Save,
69
+ 'save-all': SaveAll,
70
+ scale: Scale,
71
+ scan: Scan,
72
+ scissors: Scissors,
73
+ 'scroll-text': ScrollText,
74
+ search: Search,
75
+ settings: Settings,
76
+ shapes: Shapes,
77
+ sparkles: Sparkles,
78
+ square: Square,
79
+ 'square-dashed': SquareDashed,
80
+ store: Store,
81
+ 'trash-2': Trash2,
82
+ 'undo-2': Undo2,
83
+ upload: Upload,
84
+ x: X,
85
+ };
86
+ // ── snapshot cache (stable identity across getSnapshot calls) ────────────
87
+ // snapshotAllMenus() computes a fresh object each call; useSyncExternalStore
88
+ // requires that repeated getSnapshot() reads return the SAME identity until
89
+ // the store actually changes, else React re-renders on every read (potential
90
+ // infinite loop). Module-level cache + a single change-listener keeps identity
91
+ // stable between registrations. Registry lives as long as this module, so a
92
+ // single unbound listener at import time is fine (no cleanup handle needed).
93
+ let cachedSnapshot = snapshotAllMenus();
94
+ onMenuChange(() => { cachedSnapshot = snapshotAllMenus(); });
95
+ function getSnapshot() {
96
+ return cachedSnapshot;
97
+ }
98
+ // SSR/server snapshot — stable identity across calls. This app is a pure
99
+ // client build, so this branch never actually fires; providing it satisfies
100
+ // the useSyncExternalStore contract and future-proofs against SSR.
101
+ const EMPTY_SNAPSHOT = Object.freeze({
102
+ brand: [], file: [], edit: [], window: [], build: [], select: [], help: [], publish: [],
103
+ });
104
+ function getServerSnapshot() {
105
+ return EMPTY_SNAPSHOT;
106
+ }
107
+ function subscribe(cb) {
108
+ return onMenuChange(cb);
109
+ }
110
+ // Top-level dropdowns rendered on web, in order. `publish` is excluded (TopBar
111
+ // owns the Publish CTA at the far right); `brand` renders separately at the
112
+ // far left.
113
+ const TOP_MENUS = [
114
+ 'file', 'edit', 'window', 'build', 'select', 'help',
115
+ ];
116
+ /** Compute the resolved enabled flag for one item.
117
+ * - Explicit `enabled()` always wins.
118
+ * - Items with children (static or dynamic) default to enabled (a submenu
119
+ * opener needs no cmd).
120
+ * - Leaf items default to `!!commandId` (no command = no-op = disabled). */
121
+ function resolveEnabled(item) {
122
+ if (item.enabled)
123
+ return item.enabled();
124
+ if ((item.children && item.children.length > 0) || item.dynamicChildren)
125
+ return true;
126
+ return !!item.commandId;
127
+ }
128
+ function MenuItemRow({ item, t, execute }) {
129
+ // when=false items are hidden entirely (caller also skips their separator).
130
+ if (item.when && !item.when())
131
+ return null;
132
+ const enabled = resolveEnabled(item);
133
+ const label = t(item.labelKey);
134
+ const combo = item.keybinding ? prettyCombo(item.keybinding) : '';
135
+ const checked = item.checked ? item.checked() : false;
136
+ const hasStaticChildren = !!item.children && item.children.length > 0;
137
+ const hasChildren = hasStaticChildren || !!item.dynamicChildren;
138
+ const dangerCls = item.danger ? 'fx-menubar-item--danger text-destructive focus:text-destructive' : '';
139
+ // Left glyph — a SINGLE slot, like the prototype's `.fe-ctx-item`: a checkable
140
+ // item shows its check state there, every other item shows its icon. Rendering
141
+ // both a check column AND an icon would reserve an empty column that shoves the
142
+ // icon right, so we pick one. Unknown / missing icon name renders nothing.
143
+ const Icon = item.icon ? MENU_ICONS[item.icon] : undefined;
144
+ const iconNode = Icon
145
+ ? _jsx("span", { className: "fx-menubar-item-icon", "aria-hidden": "true", children: _jsx(Icon, { size: 14 }) })
146
+ : null;
147
+ const leftNode = item.checked
148
+ ? (_jsx("span", { className: "fx-menubar-item-check", "aria-hidden": "true", children: checked ? _jsx(Check, { size: 12 }) : null }))
149
+ : iconNode;
150
+ if (hasChildren) {
151
+ // Dynamic children are evaluated fresh on each render of the SubContent.
152
+ // Radix mounts SubContent lazily (on hover-open) and unmounts on close, so
153
+ // `item.dynamicChildren()` runs at open-time — the caller must have the data
154
+ // ready synchronously (see file-menu game-list prefetch). Empty result → a
155
+ // single disabled "no recent" placeholder so the submenu never looks broken.
156
+ const kids = hasStaticChildren ? item.children : item.dynamicChildren();
157
+ return (_jsxs(DropdownMenuSub, { children: [_jsxs(DropdownMenuSubTrigger, { disabled: !enabled, className: ['fx-menubar-item', dangerCls].filter(Boolean).join(' '), children: [leftNode, _jsx("span", { className: "fx-menubar-item-label", children: label })] }), _jsx(DropdownMenuSubContent, { className: "fx-menubar-content", children: kids.length > 0
158
+ ? renderMenuChildren(kids, t, execute)
159
+ : (_jsx(DropdownMenuItem, { disabled: true, className: "fx-menubar-item", children: _jsx("span", { className: "fx-menubar-item-label", children: t('menu.file.openRecentEmpty') }) })) })] }));
160
+ }
161
+ // Leaf. Disabled leaves render as text-only rows: greyed, no click handler,
162
+ // still showing label + keybinding. Radix `disabled` prop applies pointer-
163
+ // events-none + opacity via the ui/dropdown-menu component styling.
164
+ return (_jsxs(DropdownMenuItem, { disabled: !enabled, className: ['fx-menubar-item', dangerCls].filter(Boolean).join(' '), onSelect: (e) => {
165
+ if (!enabled || !item.commandId) {
166
+ e.preventDefault();
167
+ return;
168
+ }
169
+ execute(item.commandId, item.args, item.id);
170
+ }, children: [leftNode, _jsx("span", { className: "fx-menubar-item-label", children: label }), combo && _jsx("span", { className: "fx-menubar-item-kbd", children: combo })] }));
171
+ }
172
+ /** Walk a sorted item list, inserting a `DropdownMenuSeparator` at each
173
+ * group boundary. Boundary rule mirrors `serializeMenusForNative` in the
174
+ * registry: `prevGroup` is updated even for hidden items so the separator
175
+ * policy stays identical between the two renderers (§SSOT / §Derive). */
176
+ function renderMenuChildren(items, t, execute) {
177
+ const rows = [];
178
+ let prevGroup = null;
179
+ for (const it of items) {
180
+ const hidden = it.when ? !it.when() : false;
181
+ if (!hidden && prevGroup !== null && it.group !== prevGroup) {
182
+ rows.push(_jsx(DropdownMenuSeparator, {}, `sep-${it.id}`));
183
+ }
184
+ if (!hidden) {
185
+ rows.push(_jsx(MenuItemRow, { item: it, t: t, execute: execute }, it.id));
186
+ }
187
+ prevGroup = it.group;
188
+ }
189
+ return rows;
190
+ }
191
+ export function TopMenu({ menu, items, t, execute, open, onOpenChange, onTriggerPointerDown, onTriggerEnter }) {
192
+ const brand = useBrand();
193
+ // The async warm completes after File has rendered. Subscribe so an
194
+ // already-open recent submenu replaces its empty placeholder immediately.
195
+ useSyncExternalStore(subscribeRecentGames, getRecentGamesRevision, getRecentGamesRevision);
196
+ if (items.length === 0)
197
+ return null;
198
+ const isBrand = menu === 'brand';
199
+ // Top-level titles are fixed labels (`menubar.<menu>`). If i18n hasn't been
200
+ // populated yet (T3 owns that), `t()` falls back to returning the key so we
201
+ // don't crash — we just show "menubar.file" in place of "File" until T3.
202
+ const titleKey = `menubar.${menu}`;
203
+ return (_jsxs(DropdownMenu, { open: open, onOpenChange: onOpenChange, modal: false, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx("button", { type: "button", className: isBrand ? 'fx-menubar-btn fx-menubar-btn--brand no-motion-lift' : 'fx-menubar-btn no-motion-lift', "data-menu": menu, onPointerDown: (event) => {
204
+ if (menu === 'edit' || menu === 'select') {
205
+ captureFocusedTextEditTarget(event.currentTarget.ownerDocument);
206
+ }
207
+ onTriggerPointerDown(event);
208
+ }, onPointerEnter: onTriggerEnter, children: isBrand ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "fx-menubar-brand-mark", "aria-hidden": "true", children: brand.product.name.charAt(0).toUpperCase() }), _jsx("span", { className: "fx-menubar-brand-name", children: brand.product.name })] })) : (t(titleKey)) }) }), _jsx(DropdownMenuContent, { align: "start", sideOffset: 4, className: "fx-menubar-content", children: renderMenuChildren(items, t, execute) })] }));
209
+ }
210
+ // ── Public component ─────────────────────────────────────────────────────
211
+ export function MenuBar() {
212
+ // StrictMode dispose / Vite HMR can leave the registry empty while chrome
213
+ // stays mounted — repair synchronously so the first render sees menus.
214
+ repairBuiltinMenusIfEmpty();
215
+ const { t, i18n } = useTranslation();
216
+ const menus = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
217
+ const host = useHost();
218
+ // Same command bus TopBar uses. Fire-and-forget: menu clicks never await
219
+ // the command result — that would block dropdown-close animation.
220
+ // 纯执行,不记账。AI 经 host.menubar.invoke 走的就是这一个 —— 它那一路已经由
221
+ // dispatchToSurface 记了 source:'ai',这里再补一次会变成同一次操作在账本里既是
222
+ // ai 又是 user(而 /dispatched 端点无条件打 source:'user',分不出调用方)。
223
+ const execute = useCallback((id, args) => { void host.commands.execute(id, args); }, [host]);
224
+ // 人点菜单项才走这个:先补账再执行。人机同账的语义是"同一条 handler、只用 source
225
+ // 区分",所以记账必须挂在**人这条调用点**上,不能挂在两路共用的 execute 里。
226
+ // 两侧统一记 { itemId, commandId } —— 不统一的话账本里 AI 记 itemId、人记
227
+ // commandId,同一个动作两种名字,离线比对还得回查注册表(2026-08-05 实测)。
228
+ // fire-and-forget,失败静默(账本是观测面,不是功能依赖)。
229
+ const executeFromClick = useCallback((id, args, itemId) => {
230
+ void fetch('/api/bus/ui/surfaces/host.menubar/dispatched', {
231
+ method: 'POST',
232
+ headers: { 'content-type': 'application/json' },
233
+ body: JSON.stringify({ action: 'invoke', args: { itemId, commandId: id, args } }),
234
+ }).catch(() => { });
235
+ execute(id, args);
236
+ }, [execute]);
237
+ // AI 面(host.menubar.invoke)的执行器:**await 命令本体** —— 命令失败要变成
238
+ // ack ok=false,agent 才不会把失败说成"已完成"(2026-08-06 外审 B6①:此前同步
239
+ // 返回,file.save 失败也被 ack 成功)。人点击仍走上面的 fire-and-forget(不卡
240
+ // 下拉动画);两者只差等不等结果,handler 是同一个 commands.execute。
241
+ const executeForSurface = useCallback((id, args) => Promise.resolve(host.commands.execute(id, args)), [host]);
242
+ // Dual-modality projection: publish the menu tree + an `invoke` action that
243
+ // runs the SAME execute a human click runs. Must sit before the isTauri()
244
+ // early return (hooks rule); the registry stays the SSOT either way.
245
+ // 传 i18n.language 而不是 t:`t` 是模块级恒定标识(i18n/index.ts 刻意如此,
246
+ // 免得列进依赖数组造成无限重渲染),用它当依赖等于永不重投影 —— 切语言后 DOM
247
+ // 变了、snapshot 还是旧语言,AI 按 label 导航与用户所见错位(2026-08-06 探测)。
248
+ useMenubarSurface(menus, t, executeForSurface, i18n.language);
249
+ // One shared "which top-level menu is open" value for the whole bar. This is
250
+ // what makes it behave like a native/UE menu bar rather than N unrelated
251
+ // dropdowns: only one panel is open at a time, and once ANY panel is open,
252
+ // pointer-entering a sibling trigger steals the open state to it (see
253
+ // `handleTriggerEnter`). `null` = closed bar (idle: hover just highlights,
254
+ // it does NOT open — matching UE, where you must click to arm the bar).
255
+ const [openMenu, setOpenMenu] = useState(null);
256
+ // File owns a dynamic 打开最近 submenu backed by an async game list. Warm the
257
+ // cache whenever File becomes the open menu — via click OR hover-steal — so
258
+ // `getRecentGames()` is populated by the time the user reaches the submenu.
259
+ useEffect(() => {
260
+ if (openMenu === 'file')
261
+ void warmRecentGames();
262
+ }, [openMenu]);
263
+ const handleOpenChange = useCallback((menu) => (isOpen) => {
264
+ // Radix fires (false) on the previously-open menu when we steal focus to
265
+ // a sibling; only honour a close if THIS menu is still the current one,
266
+ // else the steal would immediately re-close the bar.
267
+ setOpenMenu((cur) => (isOpen ? menu : cur === menu ? null : cur));
268
+ }, []);
269
+ const handleTriggerEnter = useCallback((menu) => () => {
270
+ // Steal the open panel to the hovered trigger, but only while the bar is
271
+ // already armed (some other menu open). Idle hover must not auto-open.
272
+ setOpenMenu((cur) => (cur !== null && cur !== menu ? menu : cur));
273
+ }, []);
274
+ const handleTriggerPointerDown = useCallback((menu) => (event) => {
275
+ setOpenMenu((cur) => openMenuFromTriggerPointerDown(cur, menu, event.nativeEvent));
276
+ }, []);
277
+ // Under Tauri the OS native menu is the SSOT for the whole menu bar (T5
278
+ // bridge) — brand/app menu included — so the HTML bar renders nothing at all
279
+ // (no brand chip, no dropdowns). The trailing divider goes with it.
280
+ if (isTauri())
281
+ return null;
282
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "fx-menubar", children: [menus.brand.length > 0 && (_jsx(TopMenu, { menu: "brand", items: menus.brand, t: t,
283
+ // 人点击走 executeFromClick(先补账再执行),不是共用的 execute ——
284
+ // 人机同账靠的就是记账挂在人这条调用点上。main 新加的悬停切换 props 照收。
285
+ execute: executeFromClick, open: openMenu === 'brand', onOpenChange: handleOpenChange('brand'), onTriggerPointerDown: handleTriggerPointerDown('brand'), onTriggerEnter: handleTriggerEnter('brand') })), TOP_MENUS.map((m) => (_jsx(TopMenu, { menu: m, items: menus[m], t: t, execute: executeFromClick, open: openMenu === m, onOpenChange: handleOpenChange(m), onTriggerPointerDown: handleTriggerPointerDown(m), onTriggerEnter: handleTriggerEnter(m) }, m)))] }), _jsx("span", { className: "tb-divider", "aria-hidden": "true" })] }));
286
+ }
@@ -0,0 +1 @@
1
+ export { MenuBar } from './MenuBar.js';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * A top-level trigger must claim the shared menubar state on pointer-down.
3
+ * Radix still owns the matching open/close notification; this eager claim
4
+ * prevents the controlled roots from dropping the first pointer interaction
5
+ * while ownership moves between independent DropdownMenu roots.
6
+ */
7
+ export function openMenuFromTriggerPointerDown(current, menu, event) {
8
+ // Match Radix Trigger's own activation gate. In particular, Ctrl+click is a
9
+ // context-menu gesture on macOS and secondary buttons must not arm the bar.
10
+ return event.button === 0 && !event.ctrlKey ? menu : current;
11
+ }