@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,890 @@
1
+ import { create } from 'zustand';
2
+ import { installStorageObservation } from '@forgeax/app-shell/react';
3
+ import { t } from './i18n';
4
+ import { peek } from './lib/bus';
5
+ import { alertDialog } from './lib/dialog';
6
+ import { createObservabilityState } from './store-parts/observability';
7
+ import { createShellState } from './store-parts/shell';
8
+ import { getSessionClient } from './store-parts/session-client';
9
+ import { getStudioProjectClient, hasStudioDomainClients, } from './store-parts/domain-clients';
10
+ import { mostRecentSid, pickActiveSid } from './store-parts/session-pick';
11
+ import { cleanupLegacySessionKeys, loadActiveSid, loadAgentBySid, loadProviderOverride, persistActiveSid, persistAgentBySid, saveProviderOverride, } from './store-parts/persistence';
12
+ import { STORAGE_KEYS } from './lib/storageKeys';
13
+ import { resolveKernelForAgent } from './lib/agent-cli-provider';
14
+ import { setCurrentProject } from './lib/project-context';
15
+ export { configureSessionClient } from './store-parts/session-client';
16
+ export { configureStudioDomainClients, hasStudioDomainClients, getAgentCatalogClient, getStudioProjectClient, getStudioBuildClient, } from './store-parts/domain-clients';
17
+ /** UI label fallback for a tab whose server-side displayName is undefined.
18
+ * Single helper so all surfaces (TabStrip / SessionSwitcher / TopBar) render
19
+ * the same string and we never reintroduce a hardcoded "default" anywhere. */
20
+ export function tabLabel(tab) {
21
+ const n = tab.displayName?.trim();
22
+ return n && n.length > 0 ? n : t('sessionTabs.untitled');
23
+ }
24
+ // Chat message/event-engine logic lives in @forgeax/chat. The interface foundation keeps only the
25
+ // session registry and injected session-client contract used by shell chrome.
26
+ // turnsToChatMessages removed — replay no longer goes through batch
27
+ // onTurn/CompletedTurn flatten. Both live and replay now feed events into
28
+ // TurnAccumulator in arrival order; the callbacks (buildMain/SubCallbacks)
29
+ // mutate the ChatMessage model through MessageEffects (live: store; replay:
30
+ // in-memory). This is the only way `tc.at` placement matches live, because
31
+ // onMessage(tool_call) sees the same m.text.length snapshot in both paths.
32
+ // Cross-tab sync: when a sibling tab writes to PROVIDER_OVERRIDE_KEY, push
33
+ // the new value into our zustand state so the cli-selector button rerenders
34
+ // without a manual reload. Without this, two open tabs drift — tab A shows
35
+ // 'auto' even though localStorage already says 'claude-code' (tick 224 hunt).
36
+ // The 'storage' event only fires for sibling tabs, not the writer tab; that
37
+ // path uses setProviderOverride directly.
38
+ if (typeof window !== 'undefined') {
39
+ const onProviderOverrideStorage = (e) => {
40
+ if (e.key !== 'forgeax.providerOverride')
41
+ return;
42
+ const next = e.newValue && e.newValue !== 'null' ? e.newValue : null;
43
+ if (useShellStore.getState().providerOverride !== next) {
44
+ useShellStore.setState({ providerOverride: next });
45
+ }
46
+ };
47
+ void installStorageObservation({ target: window, onStorage: onProviderOverrideStorage });
48
+ }
49
+ // ── Agent chat reply language (global + persisted, cross-tab synced) ──────────
50
+ function loadReplyLanguage() {
51
+ try {
52
+ return localStorage.getItem(STORAGE_KEYS.replyLanguage) === 'zh' ? 'zh' : 'en';
53
+ }
54
+ catch {
55
+ return 'en';
56
+ }
57
+ }
58
+ function saveReplyLanguage(lang) {
59
+ try {
60
+ localStorage.setItem(STORAGE_KEYS.replyLanguage, lang);
61
+ }
62
+ catch { /* ignore */ }
63
+ }
64
+ function loadFollowInput() {
65
+ try {
66
+ // Default ON: only an explicit '0' disables it.
67
+ return localStorage.getItem(STORAGE_KEYS.followInput) !== '0';
68
+ }
69
+ catch {
70
+ return true;
71
+ }
72
+ }
73
+ function saveFollowInput(on) {
74
+ try {
75
+ localStorage.setItem(STORAGE_KEYS.followInput, on ? '1' : '0');
76
+ }
77
+ catch { /* ignore */ }
78
+ }
79
+ if (typeof window !== 'undefined') {
80
+ const onReplyPreferenceStorage = (e) => {
81
+ if (e.key === STORAGE_KEYS.replyLanguage) {
82
+ const next = e.newValue === 'zh' ? 'zh' : 'en';
83
+ if (useShellStore.getState().replyLanguage !== next)
84
+ useShellStore.setState({ replyLanguage: next });
85
+ }
86
+ else if (e.key === STORAGE_KEYS.followInput) {
87
+ const next = e.newValue !== '0';
88
+ if (useShellStore.getState().followInput !== next)
89
+ useShellStore.setState({ followInput: next });
90
+ }
91
+ };
92
+ void installStorageObservation({ target: window, onStorage: onReplyPreferenceStorage });
93
+ }
94
+ // agent 安装偏好(DEFAULT_INSTALLED_AGENT_IDS / uninstalled / bootstrap / seed)已
95
+ // 整体抽到 @forgeax/settings/agent-prefs(① · 走 bus 'prefs:agents')—— interface 不再持有。
96
+ // R5/P1 — the broadcast `/ws` daemon socket moved OUT of the store's module-load
97
+ // side-effect into the shared `lib/broadcast-stream` primitive, wired at boot by
98
+ // `boot/broadcast.ts` (`bootBroadcast()`). Importing the store no longer opens a
99
+ // socket. telemetry handling lives in bootBroadcast; daemon-tick
100
+ // is chat's (subscribeDaemonTick). See docs 17b §7.2.
101
+ // ── Sessions persistence ───────────────────────────────────────────────────
102
+ // 2026-05-20 重做:不再持久化 tabs 数组本身(tabs = GET /api/sessions 派生)。
103
+ // 只持久化 activeSid(用户上次看的是哪条),boot 时再 init。同时一次性清掉
104
+ // 老 key (forgeax.tabs / forgeax.activeTabId) 防止旧数据残留。
105
+ cleanupLegacySessionKeys();
106
+ /** Persisted per-sid agent cache —— ref ink-renderer `agentByInstance` 移植。
107
+ * 对外只暴露 read / write 两个动作;boot 时一次性 load 当 init state,runtime
108
+ * 写盘交给 `setTabAgent` 的副作用。 */
109
+ /** Patch a session tab's registry field (key = sid). Mirrors providerOverride
110
+ * to the top-level default when the patched tab is active. Chat message state
111
+ * no longer lives on the tab — it's owned by the chat app's session store. */
112
+ function patchTabField(state, sid, patch) {
113
+ const tabs = state.tabs.map((t) => (t.sid === sid ? { ...t, ...patch } : t));
114
+ const out = { tabs };
115
+ if (state.activeSid === sid && patch.providerOverride !== undefined) {
116
+ out.providerOverride = patch.providerOverride;
117
+ }
118
+ return out;
119
+ }
120
+ /** initSessions in-flight dedupe —— React StrictMode 双 mount / HMR 重载时 effect
121
+ * 会跑两次,避免对 server 发两次重复 POST。promise 完成后清回 null,下次有需要
122
+ * 可重新初始化(手动 reset 等)。 */
123
+ let _initSessionsPending = null;
124
+ let _sessionsInitialized = false;
125
+ let _activeGameUnsubscribe = null;
126
+ let _activeGameTransition = null;
127
+ let _activeGameTransitionRevision = 0;
128
+ let _sessionSwitchRevision = 0;
129
+ const _activeGameGenerationByScope = new Map();
130
+ const _busyMutationVersionBySid = new Map();
131
+ const _runningSyncGenerationBySid = new Map();
132
+ /**
133
+ * Invalidate every async switch that began before another activation decision.
134
+ * Returning the new revision lets switchToSession use the same gate for
135
+ * switch→switch ordering without maintaining a second source of truth.
136
+ */
137
+ function invalidatePendingSessionSwitches() {
138
+ return ++_sessionSwitchRevision;
139
+ }
140
+ function bumpBusyMutationVersion(sid) {
141
+ _busyMutationVersionBySid.set(sid, (_busyMutationVersionBySid.get(sid) ?? 0) + 1);
142
+ }
143
+ /** Pull active agent's running 真值并同步到 tab.isStreaming —— 解决"前端 ws 连上
144
+ * 时后端 agent 早就在跑(错过 turnStart)→ UI 仍以为 idle"这种臆想态。
145
+ *
146
+ * 调用时机:boot / refresh / 切 active session / 新建 session / 关闭兜底新建 ——
147
+ * 即每次 `connectForgeaXWs(sid)` 的紧后面。增量靠 hook:turnStart/turnEnd 事件,
148
+ * 这里只补"WS 连上一刻的快照"。
149
+ *
150
+ * 失败 / sid null 静默 —— 网络/server 抖动时 UI 维持上一份状态,下次切换再拉。 */
151
+ async function _syncActiveAgentRunning(sid) {
152
+ if (!sid)
153
+ return;
154
+ const generation = (_runningSyncGenerationBySid.get(sid) ?? 0) + 1;
155
+ _runningSyncGenerationBySid.set(sid, generation);
156
+ const busyVersionAtStart = _busyMutationVersionBySid.get(sid) ?? 0;
157
+ try {
158
+ const { listSessionAgents } = getSessionClient();
159
+ const agents = await listSessionAgents(sid);
160
+ const commitBusySnapshot = () => {
161
+ // A WS turnStart/turnEnd received while this REST request was in flight is
162
+ // newer truth. Likewise, only the newest overlapping REST sync may commit.
163
+ if (_runningSyncGenerationBySid.get(sid) !== generation ||
164
+ (_busyMutationVersionBySid.get(sid) ?? 0) !== busyVersionAtStart)
165
+ return;
166
+ const nextBusy = Object.fromEntries(agents.filter((a) => a.running).map((a) => [a.path, true]));
167
+ useShellStore.setState((s) => ({
168
+ busyByAgentBySid: {
169
+ ...s.busyByAgentBySid,
170
+ [sid]: nextBusy,
171
+ },
172
+ }));
173
+ bumpBusyMutationVersion(sid);
174
+ };
175
+ if (agents.length === 0) {
176
+ commitBusySnapshot();
177
+ return;
178
+ }
179
+ // tab.agentId 还没绑(cached === null)→ 用 depth=1 root 兜底。
180
+ //
181
+ // 已绑但 cached id 不在 list_agents 里(典型场景:用户刚点了 mochi/iro
182
+ // 这种 marketplace persona,server 端还没收到首条消息触发自动 scaffold,
183
+ // session.tree 暂时见不到该 agent)—— **保留** 用户的 pin,不要 kick 回 root。
184
+ // 这条规则与 AgentSwitcher 的 auto-pin 逻辑(line 202-208)保持一致:pin
185
+ // 是 user intent,list_agents 没观察到 ≠ 该 pin 无效。早先这里强制重指 root
186
+ // 正是用户报的「点击 mochi 头像但 forge/root 接管对话」bug 的源头之一。
187
+ const root = agents.find((a) => a.depth === 1)?.path ?? agents[0].path;
188
+ const tab = useShellStore.getState().tabs.find((t) => t.sid === sid);
189
+ const cached = tab?.agentId ?? null;
190
+ const cachedInTree = cached ? agents.some((a) => a.path === cached) : false;
191
+ const wantPath = cached ? cached : root;
192
+ const target = agents.find((a) => a.path === wantPath);
193
+ // Marketplace pin not yet observed in tree (cached but not in agents):
194
+ // wantPath === cached but `target` is undefined. We still want to keep
195
+ // the pin and show running:false until the auto-scaffold lands. No
196
+ // tab.messagesByAgent rewiring needed since the pin is unchanged.
197
+ useShellStore.setState((s) => {
198
+ // Only update agentBySid when we're filling a previously-empty slot.
199
+ // Keeping a marketplace pin: cached !== null already => leave as-is.
200
+ const agentBySid = cached ? s.agentBySid : { ...s.agentBySid, [sid]: wantPath };
201
+ const tabs = s.tabs.map((t) => (t.sid === sid ? { ...t, agentId: wantPath } : t));
202
+ return { tabs, agentBySid };
203
+ });
204
+ if (!cached)
205
+ persistAgentBySid(useShellStore.getState().agentBySid);
206
+ // 把 blackboard.RUNNING 同步到 interface busy —— Composer 的 useActiveStreaming 会 OR 这份
207
+ // 标志。缺 turnStart/snapshot 时(刷新中途加入)仍显示 Stop 而非可发送。
208
+ commitBusySnapshot();
209
+ }
210
+ catch (e) {
211
+ console.warn('[syncActiveAgentRunning] failed', e.message);
212
+ }
213
+ }
214
+ // Initial top-level mirror at module load. boot 时 tabs 是空的、activeSid 来自
215
+ // localStorage 但还没验证(initSessions 跑完才知道这个 sid 还在不在)。React
216
+ // 启动后第一次 effect 调 initSessions() 拉 server / 必要时 createSession,
217
+ // 然后 set tabs + activeSid,UI 才真亮起来(ChatPanel 在 tabs 为空时渲染空态/
218
+ // loading)。
219
+ const _initialActiveSid = loadActiveSid();
220
+ const _initialMirror = {
221
+ tabs: [],
222
+ activeSid: _initialActiveSid,
223
+ currentSessionId: _initialActiveSid,
224
+ providerOverride: loadProviderOverride(),
225
+ };
226
+ // R5/P1 — daemon-tick/telemetry WS handling moved off the store module-load
227
+ // side-effect. telemetry is wired via `boot/broadcast.ts`; daemon-tick is chat's.
228
+ export const useShellStore = create((set, get) => ({
229
+ ...createShellState(set, get),
230
+ // R5/P2 — deep-link slots moved to the interface bus (lib/deep-link-bus.ts); removed from store.
231
+ setTabAgent: (sid, agentId) => {
232
+ set((s) => {
233
+ const tabs = s.tabs.map((t) => (t.sid === sid ? { ...t, agentId } : t));
234
+ // sid 总是有效(=tab 主键),直接写 agentBySid 缓存。agentId=null 时显式
235
+ // delete 这个 key,保持 map 紧凑(避免 stale 残留)。
236
+ const agentBySid = { ...s.agentBySid };
237
+ if (agentId)
238
+ agentBySid[sid] = agentId;
239
+ else
240
+ delete agentBySid[sid];
241
+ persistAgentBySid(agentBySid);
242
+ return { tabs, agentBySid };
243
+ });
244
+ if (agentId) {
245
+ void resolveKernelForAgent(agentId).then((kernelId) => {
246
+ // 只有解析出具体 CLI 内核 id 的显式 CLI persona(cc-coder /
247
+ // claude-code-default / codex-default 等)才反写全局 provider ——
248
+ // 这是"CLI as subagent persona"要的行为。kernelId === null 意味着
249
+ // `forgeax-native` 或无偏好,而 forgeax-native 是几乎所有普通 agent
250
+ // (forge / iori / suzu…)manifest 里的脚手架默认值,不是用户意图:
251
+ // 把它当权威偏好会在 AgentSwitcher 自动 pin root、或点普通 agent
252
+ // 页签时,把用户在 Settings › Providers 手选的内核静默冲回 native
253
+ // 并写盘(体感即"内核设置没有持久化")。全局 provider 的 SSOT 是
254
+ // 用户的 Settings 选择,native 缺省不覆盖它。
255
+ if (!kernelId)
256
+ return;
257
+ useShellStore.setState((s) => {
258
+ const tab = s.tabs.find((t) => t.sid === sid);
259
+ if (!tab || tab.agentId !== agentId)
260
+ return {};
261
+ const patch = patchTabField(s, sid, { providerOverride: kernelId });
262
+ if (s.activeSid === sid) {
263
+ saveProviderOverride(kernelId);
264
+ return { ...patch, providerOverride: kernelId };
265
+ }
266
+ return patch;
267
+ });
268
+ });
269
+ }
270
+ },
271
+ agentBySid: loadAgentBySid(),
272
+ getCachedAgentForSid: (sid) => {
273
+ if (!sid)
274
+ return null;
275
+ return get().agentBySid[sid] ?? null;
276
+ },
277
+ // providerOverride 是全局单一设置(Settings › Providers):写盘当默认 + mirror 到
278
+ // active tab 仅作记录。switchToSession 不再从 tab 反向拉 provider(会让 Settings 激活值
279
+ // 随 session 乱跳),切 session 只对齐模型、不动全局 provider。
280
+ replyLanguage: loadReplyLanguage(),
281
+ followInput: loadFollowInput(),
282
+ setReplyLanguage: (lang) => {
283
+ saveReplyLanguage(lang);
284
+ set({ replyLanguage: lang });
285
+ },
286
+ setFollowInput: (on) => {
287
+ saveFollowInput(on);
288
+ set({ followInput: on });
289
+ },
290
+ pinReplyLanguage: (lang) => {
291
+ // Manual pick wins: pin the language and stop following the input language.
292
+ saveReplyLanguage(lang);
293
+ saveFollowInput(false);
294
+ set({ replyLanguage: lang, followInput: false });
295
+ },
296
+ setProviderOverride: (id) => {
297
+ saveProviderOverride(id);
298
+ set((s) => {
299
+ if (!s.activeSid)
300
+ return { providerOverride: id };
301
+ return { providerOverride: id, ...patchTabField(s, s.activeSid, { providerOverride: id }) };
302
+ });
303
+ },
304
+ // ① agent 安装偏好的写操作已移到 @forgeax/settings/agent-prefs(toggleAgentInstalled /
305
+ // setAgentInstalled / setDefaultBootstrapAgent),走 bus 'prefs:agents'。interface 不再持有。
306
+ // currentSessionId 在重做后等价 activeSid(一一对应),setter 保留只是为了不
307
+ // 破已有 import surface —— 但实际真正切 session 应该走 switchToSession()。这里
308
+ // 只 mirror top-level 字段、不动 activeSid(防止误用导致状态机错乱)。
309
+ setCurrentSessionId: (id) => {
310
+ set({ currentSessionId: id });
311
+ },
312
+ busyByAgentBySid: {},
313
+ setAgentBusy: (sid, agentId, busy) => set((s) => {
314
+ if (!sid || !agentId)
315
+ return {};
316
+ const perSid = s.busyByAgentBySid[sid] ?? {};
317
+ if (Boolean(perSid[agentId]) === busy)
318
+ return {};
319
+ bumpBusyMutationVersion(sid);
320
+ const nextPerSid = { ...perSid };
321
+ if (busy)
322
+ nextPerSid[agentId] = true;
323
+ else
324
+ delete nextPerSid[agentId];
325
+ return { busyByAgentBySid: { ...s.busyByAgentBySid, [sid]: nextPerSid } };
326
+ }),
327
+ ...createObservabilityState(set),
328
+ liveAgents: {},
329
+ agentFileActivity: {},
330
+ setLiveAgents: (sid, agents) => set((s) => ({
331
+ liveAgents: { ...s.liveAgents, [sid]: agents },
332
+ })),
333
+ pushFileTouch: (sid, agentPath, touch) => set((s) => {
334
+ const perSid = s.agentFileActivity[sid] ?? {};
335
+ const prev = perSid[agentPath] ?? [];
336
+ const deduped = prev.filter((f) => f.path !== touch.path || f.callId === touch.callId);
337
+ return {
338
+ agentFileActivity: {
339
+ ...s.agentFileActivity,
340
+ [sid]: { ...perSid, [agentPath]: [...deduped, touch] },
341
+ },
342
+ };
343
+ }),
344
+ updateFileTouchStatus: (sid, agentPath, callId, status) => set((s) => {
345
+ const perSid = s.agentFileActivity[sid];
346
+ if (!perSid)
347
+ return s;
348
+ const prev = perSid[agentPath];
349
+ if (!prev)
350
+ return s;
351
+ const next = prev.map((f) => (f.callId === callId ? { ...f, status } : f));
352
+ return {
353
+ agentFileActivity: {
354
+ ...s.agentFileActivity,
355
+ [sid]: { ...perSid, [agentPath]: next },
356
+ },
357
+ };
358
+ }),
359
+ activeGameSlug: null,
360
+ activeGameRuntime: { status: 'unbound' },
361
+ activeGameResolved: false,
362
+ initActiveGame: async () => {
363
+ if (!hasStudioDomainClients()) {
364
+ set({ activeGameResolved: true });
365
+ return;
366
+ }
367
+ const client = getStudioProjectClient();
368
+ if (!_activeGameUnsubscribe) {
369
+ _activeGameUnsubscribe = client.subscribeActiveProject((selection) => {
370
+ void get().applyActiveGame(selection);
371
+ });
372
+ }
373
+ const selection = await client.getActiveProject();
374
+ if (!get().activeGameResolved) {
375
+ const initialBinding = selection.runtime?.binding;
376
+ if (initialBinding !== undefined) {
377
+ _activeGameGenerationByScope.set(initialBinding.scopeId, initialBinding.generation);
378
+ }
379
+ set({
380
+ activeGameSlug: selection.activeSlug,
381
+ activeGameRuntime: selection.runtime ?? { status: 'unbound' },
382
+ activeGameResolved: true,
383
+ });
384
+ setCurrentProject(selection.activeSlug ?? 'default');
385
+ try {
386
+ localStorage.removeItem('forgeax.pinnedSlug');
387
+ }
388
+ catch { /* legacy cleanup */ }
389
+ return;
390
+ }
391
+ await get().applyActiveGame(selection);
392
+ },
393
+ applyActiveGame: async (selection) => {
394
+ const slug = selection.activeSlug;
395
+ const runtime = selection.runtime ?? { status: 'unbound' };
396
+ const incomingBinding = runtime.binding;
397
+ if (incomingBinding !== undefined) {
398
+ const knownGeneration = _activeGameGenerationByScope.get(incomingBinding.scopeId);
399
+ if (knownGeneration !== undefined && incomingBinding.generation < knownGeneration) {
400
+ return { status: 'superseded' };
401
+ }
402
+ if (knownGeneration === undefined || incomingBinding.generation > knownGeneration) {
403
+ _activeGameGenerationByScope.set(incomingBinding.scopeId, incomingBinding.generation);
404
+ }
405
+ }
406
+ const key = `${slug ?? '_none'}:${runtime.binding?.scopeId ?? '_unbound'}:${runtime.binding?.generation ?? 0}:${runtime.status}`;
407
+ const currentRuntime = get().activeGameRuntime;
408
+ const currentKey = `${get().activeGameSlug ?? '_none'}:${currentRuntime.binding?.scopeId ?? '_unbound'}:${currentRuntime.binding?.generation ?? 0}:${currentRuntime.status}`;
409
+ if (get().activeGameResolved && currentKey === key) {
410
+ return { status: 'applied', sessionCount: _sessionsInitialized ? get().tabs.length : null };
411
+ }
412
+ if (_activeGameTransition?.key === key)
413
+ return _activeGameTransition.promise;
414
+ // A switch started in the previous game scope must never reconnect or
415
+ // persist its sid after this accepted transition begins.
416
+ invalidatePendingSessionSwitches();
417
+ const revision = ++_activeGameTransitionRevision;
418
+ const promise = (async () => {
419
+ if (revision !== _activeGameTransitionRevision)
420
+ return { status: 'superseded' };
421
+ set({ activeGameSlug: slug, activeGameRuntime: runtime, activeGameResolved: true });
422
+ setCurrentProject(slug ?? 'default');
423
+ if (!_sessionsInitialized) {
424
+ return {
425
+ status: 'degraded',
426
+ sessionCount: null,
427
+ warning: 'active game changed, but the session projection is not initialized yet',
428
+ };
429
+ }
430
+ const refreshed = await get().refreshSessions({
431
+ scope: slug ?? undefined,
432
+ transitionRevision: revision,
433
+ });
434
+ if (refreshed.status === 'superseded' || revision !== _activeGameTransitionRevision) {
435
+ return { status: 'superseded' };
436
+ }
437
+ if (refreshed.status === 'failed') {
438
+ return {
439
+ status: 'degraded',
440
+ sessionCount: null,
441
+ warning: `active game changed, but sessions could not be refreshed: ${refreshed.error.message}`,
442
+ };
443
+ }
444
+ if (!slug)
445
+ return { status: 'applied', sessionCount: refreshed.count };
446
+ const tabs = get().tabs;
447
+ if (tabs.length === 0) {
448
+ // Observers project authority; they never manufacture downstream state.
449
+ // The server-side active-game transition ensures the default session
450
+ // before publishing its change event, so an empty result is a real
451
+ // degraded state rather than permission for every open page to race.
452
+ getSessionClient().connectForgeaXWs(null);
453
+ return {
454
+ status: 'degraded',
455
+ sessionCount: 0,
456
+ warning: 'active game changed, but no session is available in the new game scope',
457
+ };
458
+ }
459
+ const recent = mostRecentSid(tabs);
460
+ if (recent)
461
+ await get().switchToSession(recent);
462
+ if (revision !== _activeGameTransitionRevision)
463
+ return { status: 'superseded' };
464
+ return { status: 'applied', sessionCount: refreshed.count };
465
+ })();
466
+ _activeGameTransition = { key, promise };
467
+ try {
468
+ return await promise;
469
+ }
470
+ finally {
471
+ if (_activeGameTransition?.promise === promise)
472
+ _activeGameTransition = null;
473
+ }
474
+ },
475
+ // File preview state belongs to @forgeax/files.
476
+ // ── Tab-aware messages/streaming state (P6 step 1) ──
477
+ // The data lives in `tabs[active].messages` etc.; these top-level fields
478
+ // are a *mirror* of the active tab for back-compat with components that
479
+ // already do `useShellStore(s => s.messages)`. Initial values come from the
480
+ // persisted-tabs loader so the first render sees the right tab content.
481
+ //
482
+ // Note: TS narrows spread types to optional; we re-state the literal fields
483
+ // below so all required AppState slots are present at init time. The earlier
484
+ // `providerOverride: null` / `currentSessionId: null` declarations are then
485
+ // overridden by the spread.
486
+ ..._initialMirror,
487
+ initSessions: async () => {
488
+ if (_initSessionsPending)
489
+ return _initSessionsPending;
490
+ _initSessionsPending = (async () => {
491
+ const { fetchSessionList, ensureSession, connectForgeaXWs } = getSessionClient();
492
+ try {
493
+ await get().initActiveGame();
494
+ const scope = get().activeGameSlug ?? undefined;
495
+ let metas = await fetchSessionList(scope);
496
+ if (metas.length === 0) {
497
+ // 真空态:调用 server 的幂等 ensure;多个页面同时启动也只会建一条。
498
+ // 不传 displayName,让 UI 用 tabLabel 占位规则反映"无名"真值。
499
+ const { sid } = await ensureSession({ scope, autoStart: true });
500
+ metas = await fetchSessionList(scope);
501
+ // 兜底:如果 list 里居然没看到刚建的(应该不会,但 fs-watcher race 等
502
+ // 极端情况),手动补一条 meta 进去保证 UI 有 tab。
503
+ if (!metas.some((m) => m.sid === sid)) {
504
+ metas = [{ sid }, ...metas];
505
+ }
506
+ }
507
+ const newTabs = metas.map((m) => ({
508
+ sid: m.sid,
509
+ displayName: m.displayName,
510
+ agentId: get().agentBySid[m.sid] ?? null,
511
+ providerOverride: get().providerOverride,
512
+ lastActivityAt: m.lastActivityAt,
513
+ }));
514
+ // localStorage 上次的 active sid 优先(如果还在 list 里),否则最近活跃的
515
+ // 一条(规则见 session-pick.ts)。
516
+ const active = pickActiveSid(newTabs, loadActiveSid());
517
+ // provider 是全局设置,绝不从 tab 反推(会随 active session 乱跳)。
518
+ set({
519
+ tabs: newTabs,
520
+ activeSid: active,
521
+ currentSessionId: active,
522
+ });
523
+ persistActiveSid(active);
524
+ connectForgeaXWs(active);
525
+ void _syncActiveAgentRunning(active);
526
+ _sessionsInitialized = true;
527
+ if ((get().activeGameSlug ?? undefined) !== scope)
528
+ await get().refreshSessions();
529
+ }
530
+ catch (e) {
531
+ console.error('[initSessions] failed', e);
532
+ // boot 失败:UI 维持空 tabs,ChatPanel 渲染空态 + 让用户手点"重试 / 新建"。
533
+ set({ tabs: [], activeSid: null });
534
+ }
535
+ })();
536
+ try {
537
+ await _initSessionsPending;
538
+ }
539
+ finally {
540
+ _initSessionsPending = null;
541
+ }
542
+ },
543
+ refreshSessions: async (options) => {
544
+ const { fetchSessionList } = getSessionClient();
545
+ const scope = options?.scope ?? get().activeGameSlug ?? undefined;
546
+ try {
547
+ const metas = await fetchSessionList(scope);
548
+ const staleScope = (get().activeGameSlug ?? undefined) !== scope;
549
+ const staleTransition = options?.transitionRevision !== undefined
550
+ && options.transitionRevision !== _activeGameTransitionRevision;
551
+ if (staleScope || staleTransition)
552
+ return { status: 'superseded' };
553
+ set((s) => {
554
+ const byOldSid = new Map(s.tabs.map((t) => [t.sid, t]));
555
+ const merged = metas.map((m) => {
556
+ const existing = byOldSid.get(m.sid);
557
+ if (existing) {
558
+ // server 端 displayName / lastActivityAt 可能改了 —— 同步更新;
559
+ // 其余 in-flight 状态保留。
560
+ const stale = existing.displayName === m.displayName
561
+ && existing.lastActivityAt === m.lastActivityAt;
562
+ return stale
563
+ ? existing
564
+ : { ...existing, displayName: m.displayName, lastActivityAt: m.lastActivityAt };
565
+ }
566
+ return {
567
+ sid: m.sid,
568
+ displayName: m.displayName,
569
+ agentId: s.agentBySid[m.sid] ?? null,
570
+ providerOverride: s.providerOverride,
571
+ lastActivityAt: m.lastActivityAt,
572
+ };
573
+ });
574
+ // 如果 active 还在新 list 里就保留,否则掉到最近活跃的一条(规则见
575
+ // session-pick.ts)。空 list → null。
576
+ const active = pickActiveSid(merged, s.activeSid);
577
+ persistActiveSid(active);
578
+ // provider 全局,不从 tab 反推。
579
+ return {
580
+ tabs: merged,
581
+ activeSid: active,
582
+ currentSessionId: active,
583
+ };
584
+ });
585
+ return { status: 'ok', count: metas.length };
586
+ }
587
+ catch (e) {
588
+ console.warn('[refreshSessions] failed', e);
589
+ return {
590
+ status: 'failed',
591
+ error: {
592
+ code: 'SESSION_LIST_FAILED',
593
+ message: e instanceof Error ? e.message : String(e),
594
+ },
595
+ };
596
+ }
597
+ },
598
+ setActiveGame: async (slug) => {
599
+ const client = getStudioProjectClient();
600
+ const applySelection = async (selection) => {
601
+ const applied = await get().applyActiveGame(selection);
602
+ if (applied.status === 'superseded') {
603
+ throw new Error(`game switch to "${slug}" was superseded by a newer active-game selection`);
604
+ }
605
+ const runtime = selection.runtime ?? { status: 'unbound' };
606
+ const runtimeWarning = runtime.status === 'ready' || runtime.status === 'unbound'
607
+ ? undefined
608
+ : runtime.error ?? `runtime status is ${runtime.status}`;
609
+ const warning = runtimeWarning ?? (applied.status === 'degraded' ? applied.warning : undefined);
610
+ if (warning) {
611
+ void alertDialog({
612
+ title: t('gameSwitcher.activateFailedTitle'),
613
+ body: t('gameSwitcher.activatePartialBody', { slug, message: warning }),
614
+ });
615
+ return { warning };
616
+ }
617
+ return {};
618
+ };
619
+ let selection;
620
+ try {
621
+ selection = await client.setActiveProject(slug);
622
+ }
623
+ catch (e) {
624
+ const message = e instanceof Error ? e.message : String(e);
625
+ let authority = null;
626
+ try {
627
+ authority = await client.getActiveProject();
628
+ }
629
+ catch {
630
+ authority = null;
631
+ }
632
+ if (authority?.activeSlug === slug) {
633
+ return applySelection(authority);
634
+ }
635
+ if (authority && authority.activeSlug !== null) {
636
+ const activeSlug = authority.activeSlug;
637
+ void alertDialog({
638
+ title: t('gameSwitcher.activateFailedTitle'),
639
+ body: t('gameSwitcher.activateFailedBody', { slug, activeSlug, message }),
640
+ });
641
+ throw new Error(`game switch to "${slug}" was not applied; active game remains "${activeSlug}" (${message})`);
642
+ }
643
+ void alertDialog({
644
+ title: t('gameSwitcher.activateFailedTitle'),
645
+ body: t('gameSwitcher.activateUnknownBody', { slug, message }),
646
+ });
647
+ throw new Error(`game switch to "${slug}" could not be confirmed (${message})`);
648
+ }
649
+ return applySelection(selection);
650
+ },
651
+ createNewSession: async (opts) => {
652
+ const { createSession, connectForgeaXWs } = getSessionClient();
653
+ try {
654
+ // ① defaultBootstrapAgent 来自 settings/agent-prefs 的 bus 快照(interface 不再持有)。
655
+ const bootstrap = peek('prefs:agents')
656
+ ?.defaultBootstrapAgent ?? null;
657
+ const { sid, bootstrappedAgent } = await createSession({
658
+ // 用户主动在 UI 里建 session(点 + 新建),可以传一个语义化的 displayName。
659
+ // 不传时让 server 端落 undefined(UI 自己用 tabLabel 占位反映"无名")。
660
+ displayName: opts?.displayName,
661
+ scope: opts?.scope ?? (get().activeGameSlug ?? undefined),
662
+ autoStart: true,
663
+ // 用户在 Settings → Agents 里指定的「新 session 默认 agent」。null 时让
664
+ // server 走 DEFAULT_BOOTSTRAP_AGENT='root'。是 marketplace persona id
665
+ // 时 sessions.ts 解析 personaFile 注入到新 scaffold 的 agent.json。
666
+ ...(bootstrap ? { bootstrapAgent: bootstrap } : {}),
667
+ });
668
+ const seedOverride = opts?.providerOverride !== undefined
669
+ ? opts.providerOverride
670
+ : get().providerOverride;
671
+ // Activate as soon as POST /api/sessions succeeds. Composer already owns
672
+ // the model-catalog reconciliation (with a loading placeholder), so doing
673
+ // the same network work here would serialize tab activation behind a
674
+ // second request and create two competing model writers.
675
+ invalidatePendingSessionSwitches();
676
+ set((s) => {
677
+ const newTab = {
678
+ sid,
679
+ displayName: opts?.displayName,
680
+ agentId: null,
681
+ providerOverride: seedOverride,
682
+ ...(bootstrappedAgent ? { initialModelSeedAgentId: bootstrappedAgent } : {}),
683
+ };
684
+ const tabs = [...s.tabs, newTab];
685
+ persistActiveSid(sid);
686
+ return {
687
+ tabs,
688
+ activeSid: sid,
689
+ currentSessionId: sid,
690
+ providerOverride: seedOverride,
691
+ };
692
+ });
693
+ connectForgeaXWs(sid);
694
+ void _syncActiveAgentRunning(sid);
695
+ return { sid };
696
+ }
697
+ catch (e) {
698
+ void alertDialog({ title: t('store.createSession.failedTitle'), body: e.message });
699
+ return null;
700
+ }
701
+ },
702
+ switchToSession: async (sid) => {
703
+ // Session activation includes async model reconciliation. Multiple UI
704
+ // surfaces can request switches concurrently, so only the latest intent
705
+ // may commit activeSid/persistence/WS side effects after an await.
706
+ const revision = invalidatePendingSessionSwitches();
707
+ const tab = get().tabs.find((t) => t.sid === sid);
708
+ if (!tab) {
709
+ // 不在 tabs 里 —— 可能其它地方刚建好但本地 list 还没刷新,refresh 再试。
710
+ await get().refreshSessions();
711
+ if (revision !== _sessionSwitchRevision)
712
+ return;
713
+ const t2 = get().tabs.find((tb) => tb.sid === sid);
714
+ if (!t2)
715
+ return;
716
+ }
717
+ const target = get().tabs.find((t) => t.sid === sid);
718
+ // 切 session:把该 session 的模型对齐到「当前设置的 provider」。provider 是全局
719
+ // 单一设置(Settings › Providers),但从盘上加载的 session(如切 game 带出的历史
720
+ // 会话)其 agent.json 模型可能仍属于旧 provider。若不在当前 provider 的 catalog 里
721
+ // → 切到该 provider 上次手选模型(model-prefs)或默认;已属于则不动。在翻 activeSid
722
+ // 之前做,好让 composer 首帧 fetch 直接画对齐后的值(不闪旧模型)。best-effort,
723
+ // 绝不因对齐失败阻断切换。
724
+ const agentPath = target.agentId ?? get().agentBySid[sid] ?? null;
725
+ if (agentPath) {
726
+ try {
727
+ const { reconcileSessionModelToActiveProvider } = await import('./lib/model-route');
728
+ await reconcileSessionModelToActiveProvider(sid, agentPath);
729
+ }
730
+ catch { /* never block a session switch on model reconcile */ }
731
+ }
732
+ if (revision !== _sessionSwitchRevision || !get().tabs.some((t) => t.sid === sid))
733
+ return;
734
+ // provider 是全局单一设置(Settings › Providers;chat 内切换器已隐藏),切
735
+ // session 绝不改动它——否则 Settings 的激活 provider 会跟着目标 tab 的历史值乱跳。
736
+ // session 与全局 provider 的错配只对齐「模型」(上面 reconcile 已做),不动 provider。
737
+ set({
738
+ activeSid: sid,
739
+ currentSessionId: sid,
740
+ });
741
+ persistActiveSid(sid);
742
+ const { connectForgeaXWs } = getSessionClient();
743
+ connectForgeaXWs(sid);
744
+ void _syncActiveAgentRunning(sid);
745
+ },
746
+ closeSession: async (sid) => {
747
+ // liveAgents / agentFileActivity 是按 sid 累积的 write-only map(session-stream
748
+ // 与 AgentsPanel 轮询只增不删);关 session 必须随 tab 一起摘除,否则每个关闭的
749
+ // session 都把整棵 agent 树 + 文件活动记录永久滞留在 store 里(内存泄漏 case-05)。
750
+ const omitSessionResidue = (s) => {
751
+ const { [sid]: _la, ...liveAgents } = s.liveAgents;
752
+ const { [sid]: _fa, ...agentFileActivity } = s.agentFileActivity;
753
+ // case-06: agentBySid 也按 sid 累积,且 setTabAgent 把它持久化进 localStorage
754
+ // ('forgeax.agentBySid')。关 session 不摘 → 孤儿条目在内存 + 磁盘双重无界
755
+ // 累积、跨刷新永不回收。随 tab 一起摘掉并回写盘(与 setTabAgent 一致)。
756
+ const { [sid]: _ab, ...agentBySid } = s.agentBySid;
757
+ persistAgentBySid(agentBySid);
758
+ // busy 镜像(chat 写)随 tab 一起摘,避免关闭 session 残留 spinner 标记。
759
+ const { [sid]: _bb, ...busyByAgentBySid } = s.busyByAgentBySid;
760
+ return { liveAgents, agentFileActivity, agentBySid, busyByAgentBySid };
761
+ };
762
+ // 2. 真删盘 —— DELETE /api/sessions/:sid。只有 server 确认删除后,才允许
763
+ // 摘掉本地 tab 与所有 per-sid 残留;否则刷新历史会把服务端仍存在的 session
764
+ // "复活",并且用户会无从得知删除未成功。
765
+ const { deleteSession, connectForgeaXWs, createSession } = getSessionClient();
766
+ try {
767
+ await deleteSession(sid);
768
+ }
769
+ catch (e) {
770
+ console.warn('[closeSession] DELETE failed', e);
771
+ void alertDialog({
772
+ title: t('store.closeSession.failedTitle'),
773
+ body: t('store.closeSession.failedBody', { message: e.message }),
774
+ });
775
+ return {
776
+ status: 'not-deleted',
777
+ activeSid: get().activeSid,
778
+ error: {
779
+ code: 'SESSION_DELETE_FAILED',
780
+ message: e instanceof Error ? e.message : String(e),
781
+ },
782
+ };
783
+ }
784
+ // DELETE is now authoritative. Cancel any switch that still targets the
785
+ // removed tab before the last-session replacement request can await.
786
+ invalidatePendingSessionSwitches();
787
+ // case-10: file-activity-stream 的模块级 _state Map 按 sid 累积(file-activity
788
+ // 事件触发 getOrInit),只增不删 → 每个关闭的 session 永久滞留一个条目。只有
789
+ // DELETE 成功后才随 tab 一起摘除(与 closeThreadHistoryTails 同为 per-sid 模块清理)。
790
+ void import('./lib/file-activity-stream').then((m) => m.dropFileActivitySession(sid));
791
+ // 3. 从 tabs 里摘掉。如果删的是最后一条 → server 立即再 createSession 兜底
792
+ // 保证 UI 永远有一条可用 session,跟 initSessions 的"空就建一条"一致。
793
+ const remainingMetas = get().tabs.filter((t) => t.sid !== sid);
794
+ if (remainingMetas.length === 0) {
795
+ // The server has already deleted the final sid. Remove it from every
796
+ // client-facing state before awaiting the replacement POST so composer,
797
+ // tabs, and WS cannot keep using a session that no longer exists.
798
+ set((s) => ({
799
+ tabs: [],
800
+ activeSid: null,
801
+ currentSessionId: null,
802
+ ...omitSessionResidue(s),
803
+ }));
804
+ persistActiveSid(null);
805
+ connectForgeaXWs(null);
806
+ try {
807
+ const { sid: newSid } = await createSession({ autoStart: true });
808
+ const fresh = {
809
+ sid: newSid,
810
+ displayName: undefined,
811
+ agentId: null,
812
+ providerOverride: loadProviderOverride(),
813
+ };
814
+ set({
815
+ tabs: [fresh],
816
+ activeSid: newSid,
817
+ currentSessionId: newSid,
818
+ });
819
+ persistActiveSid(newSid);
820
+ connectForgeaXWs(newSid);
821
+ void _syncActiveAgentRunning(newSid);
822
+ return { status: 'deleted', activeSid: newSid };
823
+ }
824
+ catch (e) {
825
+ console.error('[closeSession] auto-create after empty failed', e);
826
+ return {
827
+ status: 'deleted-without-active-session',
828
+ activeSid: null,
829
+ error: {
830
+ code: 'SESSION_REPLACEMENT_FAILED',
831
+ message: e instanceof Error ? e.message : String(e),
832
+ },
833
+ };
834
+ }
835
+ }
836
+ set((s) => {
837
+ const oldIdx = s.tabs.findIndex((t) => t.sid === sid);
838
+ const newIdx = Math.max(0, oldIdx - 1);
839
+ const next = remainingMetas[Math.min(newIdx, remainingMetas.length - 1)];
840
+ persistActiveSid(next.sid);
841
+ return {
842
+ tabs: remainingMetas,
843
+ activeSid: next.sid,
844
+ currentSessionId: next.sid,
845
+ ...omitSessionResidue(s),
846
+ };
847
+ });
848
+ connectForgeaXWs(get().activeSid);
849
+ void _syncActiveAgentRunning(get().activeSid);
850
+ return { status: 'deleted', activeSid: get().activeSid };
851
+ },
852
+ renameTab: (sid, displayName) => {
853
+ set((s) => patchTabField(s, sid, { displayName }));
854
+ // TODO: 等 server 加 PATCH /api/sessions/:sid { displayName } 后写盘。当前
855
+ // 只是 UI 临时改名,刷新会 revert 到 server 真值。
856
+ },
857
+ setActiveEmitter: async (emitterId) => {
858
+ // 重做后 activeSid 就是 server-side thread id(一一对应,不再有"tab 没绑
859
+ // session"中间态),所以直接用 activeSid 当 PATCH /api/threads/:id 的 key。
860
+ const { activeSid } = get();
861
+ if (!activeSid) {
862
+ console.warn('[setActiveEmitter] no active session');
863
+ return;
864
+ }
865
+ try {
866
+ const r = await fetch(`/api/threads/${encodeURIComponent(activeSid)}`, {
867
+ method: 'PATCH',
868
+ headers: { 'content-type': 'application/json' },
869
+ body: JSON.stringify({ activeEmitterId: emitterId }),
870
+ });
871
+ if (!r.ok) {
872
+ console.warn(`[setActiveEmitter] PATCH failed: HTTP ${r.status}`);
873
+ return;
874
+ }
875
+ get().setTabAgent(activeSid, emitterId);
876
+ }
877
+ catch (e) {
878
+ console.warn(`[setActiveEmitter] error: ${e.message}`);
879
+ }
880
+ },
881
+ }));
882
+ /**
883
+ * @deprecated Renamed to `useShellStore` (T24 · ADR 0024). Kept as an alias
884
+ * so out-of-tree consumers (chat / editor / page / dashboard / settings
885
+ * / studio / harness — 74 callsites across 7 submodules) keep booting while
886
+ * they migrate. Both names point to the SAME store instance; there is no
887
+ * behavior difference. Remove this line once every submodule has been
888
+ * repointed and pin-bumped in root.
889
+ */
890
+ export const useAppStore = useShellStore;