@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,2130 @@
1
+ .main-area {
2
+ flex: 1; min-width: 0;
3
+ background: var(--color-background-canvas);
4
+ overflow: hidden;
5
+ display: flex; flex-direction: column;
6
+ /* Positioning context for the always-mounted keep-alive CenterPluginLayer. */
7
+ position: relative;
8
+ }
9
+
10
+ /* === Keep-alive center plugin overlay (Plan A) ===
11
+ * Always-mounted overlay that owns standalone center plugins so their iframes
12
+ * survive tab/mode switches. Absolute over .main-area; self-hides (inline
13
+ * visibility:hidden + pointer-events:none) when no standalone plugin is open. */
14
+ .fx-center-plugin-layer {
15
+ position: absolute;
16
+ inset: 0;
17
+ z-index: 5;
18
+ display: flex;
19
+ flex-direction: column;
20
+ background: var(--bg-0);
21
+ }
22
+ .fx-center-plugin-body {
23
+ flex: 1;
24
+ min-height: 0;
25
+ position: relative;
26
+ display: flex;
27
+ }
28
+
29
+ /* Keep-alive iframe stack: visited plugin iframes share one stable parent and
30
+ * overlap absolutely; only the active one is visible (StandalonePluginIframe
31
+ * applies visibility:hidden to the rest). Re-parenting is avoided so iframes
32
+ * never reload on switch. */
33
+ .fx-keepalive-stack {
34
+ position: relative;
35
+ flex: 1;
36
+ min-height: 0;
37
+ width: 100%;
38
+ height: 100%;
39
+ display: flex;
40
+ }
41
+ .fx-keepalive-item {
42
+ position: absolute;
43
+ inset: 0;
44
+ display: flex;
45
+ }
46
+
47
+ /* === Preview === */
48
+ .preview-mode {
49
+ flex: 1; display: flex; flex-direction: column;
50
+ }
51
+ .preview-frame {
52
+ flex: 1;
53
+ background: var(--color-background-base);
54
+ position: relative; overflow: hidden;
55
+ }
56
+ .preview-frame.preview-frame--waiting {
57
+ display: flex;
58
+ align-items: center;
59
+ justify-content: center;
60
+ }
61
+ /* Hides the iframe behind a spinner from slug-change / reload to first FPS.
62
+ Covers the new-game vite rescan-restart blank window so the user never sees
63
+ the bare iframe go black mid-load. pointer-events: none keeps the iframe
64
+ reachable underneath once interactions resume. */
65
+ .preview-loading-overlay {
66
+ position: absolute;
67
+ inset: 0;
68
+ display: flex;
69
+ flex-direction: column;
70
+ align-items: center;
71
+ justify-content: center;
72
+ gap: 12px;
73
+ background: var(--color-background-base);
74
+ z-index: 1;
75
+ pointer-events: none;
76
+ }
77
+ .preview-loading-spinner {
78
+ width: 28px;
79
+ height: 28px;
80
+ border: 2px solid var(--color-border-default);
81
+ border-top-color: var(--color-text-secondary);
82
+ border-radius: 50%;
83
+ animation: preview-loading-spin 0.8s linear infinite;
84
+ }
85
+ .preview-loading-text {
86
+ font-size: 12px;
87
+ color: var(--color-text-tertiary);
88
+ font-family: var(--font-mono);
89
+ letter-spacing: 0.02em;
90
+ }
91
+ @keyframes preview-loading-spin {
92
+ to { transform: rotate(360deg); }
93
+ }
94
+ /* Fatal banner — pinned to the top of a Play/Edit region when the engine reports
95
+ device-lost / scene-instantiate / WebGPU init failure. Gives the user the
96
+ reason (not just a black viewport) + a one-click reload. Shared by the play
97
+ iframe (PlaySurface) + the in-process edit viewport (same class). */
98
+ .preview-fatal-banner {
99
+ position: absolute;
100
+ top: 0; left: 0; right: 0;
101
+ z-index: 3;
102
+ display: flex;
103
+ align-items: center;
104
+ gap: 10px;
105
+ padding: 8px 12px;
106
+ background: linear-gradient(180deg, rgba(150, 24, 24, 0.97), rgba(120, 18, 18, 0.95));
107
+ color: #ffe2e2;
108
+ font-family: var(--font-mono);
109
+ font-size: 12px;
110
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.45);
111
+ border-bottom: 1px solid rgba(255, 120, 120, 0.4);
112
+ }
113
+ .preview-fatal-banner .pfb-icon { flex-shrink: 0; color: #ffd0a0; }
114
+ .preview-fatal-banner .pfb-body { flex: 1 1 auto; min-width: 0; }
115
+ .preview-fatal-banner .pfb-title { font-weight: 600; color: #fff; }
116
+ .preview-fatal-banner .pfb-msg {
117
+ opacity: 0.9;
118
+ overflow: hidden;
119
+ text-overflow: ellipsis;
120
+ white-space: nowrap;
121
+ max-width: 100%;
122
+ }
123
+ .preview-fatal-banner .pfb-retry {
124
+ flex-shrink: 0;
125
+ display: inline-flex;
126
+ align-items: center;
127
+ gap: 5px;
128
+ background: rgba(255, 255, 255, 0.14);
129
+ color: #fff;
130
+ border: 1px solid rgba(255, 255, 255, 0.35);
131
+ border-radius: 5px;
132
+ padding: 4px 10px;
133
+ cursor: pointer;
134
+ font-family: var(--font-mono);
135
+ font-size: 12px;
136
+ }
137
+ .preview-fatal-banner .pfb-retry:hover { background: rgba(255, 255, 255, 0.26); }
138
+ .preview-toolbar.top {
139
+ height: 36px; flex-shrink: 0;
140
+ display: grid;
141
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
142
+ align-items: center;
143
+ background: var(--color-background-base);
144
+ border-bottom: 1px solid var(--color-border-default);
145
+ font-size: 14px; color: var(--color-text-tertiary);
146
+ font-family: var(--font-mono);
147
+ position: relative;
148
+ }
149
+ .preview-toolbar .pt-left,
150
+ .preview-toolbar .pt-center,
151
+ .preview-toolbar .pt-right { display: flex; align-items: center; min-width: 0; }
152
+ .preview-toolbar .pt-left { justify-self: start; padding: 0 4px; }
153
+ .preview-toolbar .pt-center { justify-self: center; gap: 12px; }
154
+ .preview-toolbar .pt-right { justify-self: end; padding: 0 8px; gap: 0; }
155
+ .preview-toolbar .pt-fps { padding: 0 8px; font-variant-numeric: tabular-nums; white-space: nowrap; flex-shrink: 0; }
156
+ .preview-toolbar .pt-slug { padding: 0 8px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
157
+ .preview-toolbar .pt-divider {
158
+ width: 1px; height: 13.5px; flex-shrink: 0;
159
+ background: var(--color-divider-default);
160
+ margin: 0 8px;
161
+ }
162
+ .preview-toolbar .pt-btn {
163
+ background: transparent; border: none; cursor: pointer; padding: 4px;
164
+ color: var(--color-text-secondary);
165
+ display: inline-flex; align-items: center; justify-content: center;
166
+ border-radius: 4px;
167
+ }
168
+ .preview-toolbar .pt-btn:hover { color: var(--color-text-primary); background: var(--color-interaction-hover); }
169
+ .preview-toolbar .pt-btn.selected { color: var(--color-text-primary); background: var(--color-interaction-selected-neutral); }
170
+ .preview-toolbar .pt-btn.selected:hover { background: var(--color-interaction-selected-neutral); }
171
+ .preview-toolbar .pt-btn[disabled] { color: var(--color-icon-disabled); cursor: not-allowed; }
172
+ /* Device group (right side) */
173
+ .preview-toolbar .pt-device-group {
174
+ display: flex; align-items: center; gap: 8px;
175
+ }
176
+ .preview-toolbar .pt-device-pill {
177
+ position: relative;
178
+ display: flex; align-items: center; gap: 4px;
179
+ height: 24px;
180
+ padding: 0 8px;
181
+ background: var(--color-background-elevated);
182
+ border-radius: 8px;
183
+ cursor: pointer;
184
+ color: var(--color-text-secondary);
185
+ }
186
+ .preview-toolbar .pt-device-name {
187
+ font-size: 14px; font-family: var(--font-mono);
188
+ white-space: nowrap;
189
+ }
190
+ /* transparent native select overlaid on top of the pill — keeps OS dropdown UX */
191
+ .preview-toolbar .pt-device-select {
192
+ position: absolute; inset: 0;
193
+ opacity: 0; cursor: pointer; width: 100%;
194
+ border: none; background: transparent;
195
+ }
196
+ .preview-toolbar .pt-device-pill:hover { background: var(--color-background-floating); }
197
+
198
+ /* Import asset dropdown */
199
+ .preview-toolbar .pt-import-wrap { position: relative; }
200
+ .preview-toolbar .pt-import-menu {
201
+ position: absolute; right: 0; top: calc(100% + 4px); z-index: var(--z-dock-float);
202
+ min-width: 180px; background: var(--color-background-elevated, #161619);
203
+ border: 1px solid var(--color-border-default, #2a2d30); border-radius: 6px;
204
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.45); overflow: hidden;
205
+ }
206
+ .preview-toolbar .pt-import-head {
207
+ padding: 5px 12px 4px; font-size: 10px; color: var(--color-text-tertiary, #778);
208
+ text-transform: uppercase; letter-spacing: 0.06em; border-bottom: 1px solid var(--color-border-default, #2a2d30);
209
+ }
210
+ .preview-toolbar .pt-import-item {
211
+ display: flex; justify-content: space-between; align-items: baseline; gap: 8px;
212
+ width: 100%; padding: 7px 12px; background: none; border: none; cursor: pointer;
213
+ color: var(--color-text-primary, #e8eaed); font-size: 13px; text-align: left;
214
+ }
215
+ .preview-toolbar .pt-import-item:hover { background: var(--color-interaction-hover, rgba(255,255,255,0.06)); }
216
+ .preview-toolbar .pt-import-label { white-space: nowrap; }
217
+ .preview-toolbar .pt-import-desc { font-size: 11px; color: var(--color-text-tertiary, #778); white-space: nowrap; font-family: var(--font-mono, monospace); }
218
+
219
+ /* Import pipeline status indicator */
220
+ .preview-toolbar .pt-import-status {
221
+ font-size: 11px; font-family: var(--font-mono, monospace);
222
+ padding: 0 8px; white-space: nowrap; max-width: 200px;
223
+ overflow: hidden; text-overflow: ellipsis;
224
+ flex-shrink: 0;
225
+ }
226
+ .preview-toolbar .pt-import-status--uploading,
227
+ .preview-toolbar .pt-import-status--processing,
228
+ .preview-toolbar .pt-import-status--importing { color: var(--color-text-secondary, #aaa); }
229
+ .preview-toolbar .pt-import-status--done { color: #7ec87e; }
230
+ .preview-toolbar .pt-import-status--error { color: #e07070; }
231
+
232
+ .preview-iframe {
233
+ position: absolute; inset: 0;
234
+ width: 100%; height: 100%;
235
+ border: 0; background: var(--prim-color-neutral-1000);
236
+ }
237
+ .preview-mobile-wrap {
238
+ position: absolute; inset: 0;
239
+ display: flex; align-items: center; justify-content: center;
240
+ overflow: auto;
241
+ padding: 12px;
242
+ }
243
+ .preview-orient-btn {
244
+ position: absolute; bottom: 16px; right: 16px;
245
+ display: flex; align-items: center; justify-content: center;
246
+ padding: 6px;
247
+ background: var(--color-background-elevated);
248
+ border: 1px solid var(--color-border-default);
249
+ border-radius: 8px;
250
+ color: var(--color-text-secondary);
251
+ cursor: pointer;
252
+ transition: background 0.15s, color 0.15s;
253
+ }
254
+ .preview-orient-btn:hover {
255
+ background: var(--color-background-floating);
256
+ color: var(--color-text-primary);
257
+ }
258
+ .preview-mobile-frame {
259
+ background: var(--prim-color-neutral-1000);
260
+ border-radius: 18px;
261
+ box-shadow: 0 8px 32px rgba(0,0,0,0.7), 0 0 0 2px rgba(255,255,255,0.06);
262
+ overflow: hidden;
263
+ flex-shrink: 0;
264
+ }
265
+ .preview-iframe-mobile {
266
+ width: 100%; height: 100%;
267
+ border: 0; background: var(--prim-color-neutral-1000);
268
+ display: block;
269
+ }
270
+ /* gradient overlay only shows when iframe absent (loading state) */
271
+ .preview-frame:not(:has(iframe))::before {
272
+ content: ""; position: absolute; inset: 0;
273
+ background:
274
+ radial-gradient(circle at 30% 40%, rgba(212, 255, 72, 0.20) 0%, transparent 45%),
275
+ radial-gradient(circle at 70% 60%, rgba(72, 255, 207, 0.15) 0%, transparent 45%),
276
+ radial-gradient(circle at 50% 90%, rgba(168, 85, 247, 0.12) 0%, transparent 50%);
277
+ pointer-events: none;
278
+ }
279
+ .preview-label {
280
+ position: absolute; top: 14px; left: 14px;
281
+ background: rgba(0,0,0,0.55);
282
+ padding: 4px 12px; border-radius: 100px;
283
+ font-size: 11px; color: var(--color-text-secondary);
284
+ }
285
+ .preview-center { text-align: center; z-index: 1; }
286
+ .preview-title { font-size: 18px; color: var(--color-text-primary); margin-bottom: 4px; }
287
+ .preview-sub { color: var(--color-text-tertiary); font-size: 12px; }
288
+ .preview-retry-btn {
289
+ margin-top: 12px; padding: 6px 16px;
290
+ border: 1px solid var(--color-border-secondary); border-radius: 6px;
291
+ background: var(--color-background-surface); color: var(--color-text-primary);
292
+ font-size: 13px; cursor: pointer;
293
+ }
294
+ .preview-retry-btn:hover { background: var(--color-background-hover); }
295
+
296
+ /* === extension === */
297
+ .page-mode {
298
+ flex: 1;
299
+ display: flex; flex-direction: column;
300
+ background: var(--color-background-canvas);
301
+ overflow: hidden;
302
+ }
303
+
304
+ /* MainArea-takeover extension Page host (e.g. character iframe). */
305
+ .page-plugin-host, .page-plugin-host-empty {
306
+ flex: 1;
307
+ display: flex; flex-direction: column;
308
+ background: var(--bg-0);
309
+ overflow: hidden;
310
+ }
311
+ .page-plugin-host-bar {
312
+ height: 36px;
313
+ flex: 0 0 auto;
314
+ display: flex; align-items: center;
315
+ padding: 0 8px;
316
+ background: var(--color-background-base);
317
+ border-bottom: 1px solid var(--color-border-default);
318
+ }
319
+
320
+ /* Plugin main-window header (product prototype `pl-head`): icon + name +
321
+ description + ✕ close. */
322
+ .page-plugin-host-bar.fx-plugin-head {
323
+ height: auto;
324
+ min-height: 48px;
325
+ gap: 10px;
326
+ padding: 8px 12px;
327
+ }
328
+ .fx-plugin-head-ico {
329
+ width: 30px; height: 30px; flex: 0 0 auto;
330
+ border-radius: 8px;
331
+ display: grid; place-items: center;
332
+ background: rgba(212, 255, 72, 0.12);
333
+ border: 1px solid rgba(212, 255, 72, 0.34);
334
+ color: var(--color-brand-primary);
335
+ }
336
+ .fx-plugin-head-meta {
337
+ display: flex; flex-direction: column;
338
+ min-width: 0;
339
+ }
340
+ .fx-plugin-head-title {
341
+ font-size: 14px; font-weight: 700;
342
+ color: var(--color-text-primary);
343
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
344
+ }
345
+ .fx-plugin-head-sub {
346
+ font-size: 11px;
347
+ color: var(--color-text-tertiary);
348
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
349
+ }
350
+ .fx-plugin-head-actions {
351
+ margin-left: auto;
352
+ display: flex;
353
+ align-items: center;
354
+ gap: 10px;
355
+ flex: 0 0 auto;
356
+ }
357
+ .fx-plugin-head-close {
358
+ width: 26px; height: 26px; flex: 0 0 auto;
359
+ border-radius: 6px; border: none;
360
+ background: transparent;
361
+ color: var(--color-text-tertiary);
362
+ cursor: pointer;
363
+ display: grid; place-items: center;
364
+ }
365
+ .fx-plugin-head-close:hover {
366
+ background: rgba(255, 255, 255, 0.08);
367
+ color: var(--color-text-primary);
368
+ }
369
+ .page-plugin-back {
370
+ display: inline-flex; align-items: center; gap: 8px;
371
+ height: 100%;
372
+ max-width: 140px; min-width: 100px;
373
+ padding: 4px 8px;
374
+ font-size: 12px;
375
+ color: var(--color-text-primary);
376
+ background: transparent;
377
+ border: none;
378
+ cursor: pointer;
379
+ overflow: hidden;
380
+ flex-shrink: 0;
381
+ }
382
+ .page-plugin-back span {
383
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
384
+ }
385
+ .page-plugin-back:hover {
386
+ color: var(--color-text-secondary);
387
+ }
388
+
389
+ /* Windowing — 弹出/收回独立窗口按钮 (Tauri shell only; hidden in browser). */
390
+ .page-plugin-window-toggle {
391
+ display: inline-flex; align-items: center; gap: 6px;
392
+ height: 24px;
393
+ margin-left: 8px;
394
+ padding: 3px 10px;
395
+ font-size: 12px;
396
+ color: var(--color-text-primary);
397
+ background: transparent;
398
+ border: 1px solid var(--color-border-default);
399
+ border-radius: 4px;
400
+ cursor: pointer;
401
+ flex-shrink: 0;
402
+ }
403
+ .page-plugin-window-toggle:hover {
404
+ color: var(--text-primary, var(--color-text-secondary));
405
+ background: var(--bg-2, transparent);
406
+ }
407
+ /* Floating placeholder shown in the body when a surface is detached. */
408
+ .fx-surface-floating {
409
+ position: absolute; inset: 0;
410
+ display: flex; flex-direction: column;
411
+ align-items: center; justify-content: center; gap: 12px;
412
+ text-align: center;
413
+ }
414
+
415
+ /* extensionAgentPicker — corner widget on host bar. Iter-1 single-panel:
416
+ * click rebinds active tab agent (same as AgentSwitcher), Iter-2 will turn
417
+ * each agent into its own independent chat panel. */
418
+ .agent-picker {
419
+ position: relative;
420
+ margin-left: auto;
421
+ }
422
+ .agent-picker-btn {
423
+ display: inline-flex; align-items: center; gap: 4px;
424
+ font-size: 12px;
425
+ color: var(--text-secondary);
426
+ background: transparent; border: 1px solid var(--color-border-default);
427
+ padding: 3px 8px; border-radius: 4px;
428
+ cursor: pointer;
429
+ max-width: 200px;
430
+ }
431
+ .agent-picker-btn:hover { color: var(--text-primary); background: var(--bg-2); }
432
+ .agent-picker-name {
433
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
434
+ }
435
+ .agent-picker-hint { color: var(--accent-cyan); }
436
+ .agent-picker-menu {
437
+ position: absolute; right: 0; top: calc(100% + 4px);
438
+ min-width: 180px;
439
+ background: var(--bg-1);
440
+ border: 1px solid var(--color-border-default);
441
+ border-radius: 4px;
442
+ box-shadow: 0 4px 12px rgba(0,0,0,0.3);
443
+ padding: 4px 0;
444
+ z-index: 100;
445
+ }
446
+ .agent-picker-item {
447
+ display: flex; align-items: center; justify-content: space-between; gap: 6px;
448
+ width: 100%;
449
+ font-size: 12px;
450
+ color: var(--text-secondary);
451
+ background: transparent; border: none;
452
+ padding: 5px 10px;
453
+ cursor: pointer;
454
+ text-align: left;
455
+ }
456
+ .agent-picker-item:hover { background: var(--bg-2); color: var(--text-primary); }
457
+ .agent-picker-item.active { color: var(--text-primary); background: var(--bg-2); }
458
+ .agent-picker-empty {
459
+ font-size: 11px; color: var(--text-tertiary);
460
+ padding: 6px 10px;
461
+ }
462
+ .page-plugin-host-body {
463
+ flex: 1; min-height: 0;
464
+ display: flex; flex-direction: column;
465
+ overflow: hidden;
466
+ }
467
+ .page-plugin-iframe-wrap {
468
+ /* Works in both flex (MainArea host body) and block (sidebar tools pane)
469
+ * parents: flex:1 covers flex-column hosts, height:100% covers block hosts. */
470
+ flex: 1; min-height: 0;
471
+ height: 100%;
472
+ display: flex; flex-direction: column;
473
+ position: relative;
474
+ }
475
+
476
+ .page-tabbar {
477
+ height: 36px;
478
+ padding: 4px;
479
+ display: flex;
480
+ align-items: center;
481
+ background: var(--color-background-base);
482
+ border-bottom: 1px solid var(--color-border-default);
483
+ overflow-x: auto;
484
+ flex-shrink: 0;
485
+ scrollbar-width: none;
486
+ }
487
+ .page-tabbar::-webkit-scrollbar { height: 0; }
488
+ .page-tabbar .page-tab {
489
+ display: flex; align-items: center; gap: 8px;
490
+ padding: 4px 8px;
491
+ height: 100%;
492
+ flex: none;
493
+ width: 140px;
494
+ min-width: 100px;
495
+ max-width: 140px;
496
+ border-radius: 8px;
497
+ color: var(--color-text-tertiary);
498
+ font-size: 12px;
499
+ cursor: pointer;
500
+ position: relative;
501
+ white-space: nowrap;
502
+ overflow: hidden;
503
+ }
504
+ .page-tabbar .page-tab:hover { color: var(--color-text-primary); background: var(--color-interaction-hover); }
505
+ .page-tabbar .page-tab.active {
506
+ background: var(--color-interaction-selected-neutral);
507
+ color: var(--color-text-primary);
508
+ }
509
+ .page-tab-divider {
510
+ flex-shrink: 0;
511
+ width: 1px;
512
+ height: 14px;
513
+ align-self: center;
514
+ background: var(--color-border-subtle);
515
+ margin: 0 4px;
516
+ }
517
+ .page-tabbar .page-tab-ico { flex-shrink: 0; display: flex; align-items: center; }
518
+ .page-tabbar .page-tab-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
519
+ .page-tabbar .page-tab-close {
520
+ width: 16px; height: 16px;
521
+ flex-shrink: 0;
522
+ border-radius: 50%;
523
+ display: none;
524
+ align-items: center; justify-content: center;
525
+ color: var(--color-text-tertiary);
526
+ }
527
+ .page-tabbar .page-tab:hover .page-tab-close { display: inline-flex; }
528
+ .page-tabbar .page-tab.active:not(:hover) .page-tab-close { display: none; }
529
+ .page-tabbar .page-tab-close:hover { color: var(--color-text-primary); }
530
+ /* .page-tab.dirty:not(:hover) .page-tab-close { display: none; } — TODO: dirty indicator */
531
+ .page-tab-tooltip {
532
+ position: fixed;
533
+ z-index: var(--z-menu);
534
+ background: var(--color-background-floating);
535
+ border: 1px solid var(--color-border-default);
536
+ border-radius: 4px;
537
+ padding: 3px 8px;
538
+ font-family: var(--font-mono);
539
+ font-size: 11px;
540
+ color: var(--color-text-secondary);
541
+ white-space: nowrap;
542
+ pointer-events: none;
543
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35);
544
+ max-width: 480px;
545
+ overflow: hidden;
546
+ text-overflow: ellipsis;
547
+ }
548
+
549
+ .page-editor {
550
+ flex: 1; padding: 12px; overflow: hidden; display: flex;
551
+ }
552
+ .cm-mock {
553
+ flex: 1; margin: 0; overflow: auto;
554
+ background: var(--color-background-canvas);
555
+ border: 1px solid var(--color-border-default);
556
+ border-radius: 4px;
557
+ padding: 12px;
558
+ font-family: var(--font-mono);
559
+ font-size: 12px;
560
+ line-height: 1.6;
561
+ color: var(--color-text-secondary);
562
+ }
563
+ .cm-mock code { background: none; padding: 0; color: inherit; }
564
+
565
+ .page-bottom {
566
+ height: 140px;
567
+ background: var(--color-background-elevated);
568
+ display: flex; flex-direction: column;
569
+ flex-shrink: 0;
570
+ overflow: hidden;
571
+ }
572
+ .page-resize-bar {
573
+ height: 4px;
574
+ flex-shrink: 0;
575
+ cursor: row-resize;
576
+ background: transparent;
577
+ position: relative;
578
+ z-index: 5;
579
+ margin: -2px 0;
580
+ }
581
+ .page-resize-bar::after {
582
+ content: "";
583
+ position: absolute;
584
+ left: 0; right: 0;
585
+ top: 50%;
586
+ height: 1px;
587
+ transform: translateY(-50%);
588
+ background: var(--color-border-default);
589
+ transition: background 150ms;
590
+ pointer-events: none;
591
+ }
592
+ .page-resize-bar:hover::after,
593
+ .page-resize-bar:active::after {
594
+ background: var(--color-border-strong);
595
+ }
596
+ .page-bottom-tabs {
597
+ height: 40px;
598
+ display: flex;
599
+ align-items: flex-start;
600
+ gap: 4px;
601
+ background: var(--color-background-elevated);
602
+ padding: 8px;
603
+ flex-shrink: 0;
604
+ }
605
+ .wbb-tab {
606
+ height: 100%;
607
+ padding: 4px 8px;
608
+ display: flex; align-items: center; gap: 4px;
609
+ background: none; border: none; cursor: pointer;
610
+ color: var(--color-text-tertiary);
611
+ font-size: 14px;
612
+ font-family: var(--font-mono);
613
+ border-radius: 8px;
614
+ white-space: nowrap;
615
+ }
616
+ .wbb-tab:hover { color: var(--color-text-primary); background: var(--color-interaction-hover); }
617
+ .wbb-tab.selected {
618
+ color: var(--color-text-primary);
619
+ background: var(--color-interaction-selected-neutral);
620
+ }
621
+ .wbb-tab.selected:hover { background: var(--color-interaction-selected-neutral); }
622
+ .wbb-badge {
623
+ background: var(--color-accent-orange-default);
624
+ color: var(--prim-color-neutral-950);
625
+ border-radius: var(--radius-pill);
626
+ padding: 0 5px;
627
+ font-size: 9px;
628
+ font-weight: 700;
629
+ }
630
+ .page-bottom-body {
631
+ flex: 1; padding: 8px 14px; overflow-y: auto;
632
+ font-family: var(--font-mono);
633
+ font-size: 11px;
634
+ color: var(--color-text-secondary);
635
+ }
636
+ .wbb-row {
637
+ display: flex; align-items: center; gap: 8px;
638
+ padding: 3px 0;
639
+ border-bottom: 1px dashed var(--color-border-default);
640
+ }
641
+ .wbb-row:last-child { border: none; }
642
+ .wbb-time { color: var(--color-text-tertiary); font-size: 10px; flex-shrink: 0; }
643
+ .wbb-tag {
644
+ padding: 0 6px;
645
+ border-radius: 3px;
646
+ font-size: 10px;
647
+ font-weight: 700;
648
+ text-transform: uppercase;
649
+ }
650
+ .wbb-tag.tool { background: var(--color-accent-green-soft); color: var(--color-accent-green-default); }
651
+ .wbb-tag.agent { background: var(--color-accent-purple-soft); color: var(--color-accent-purple-default); }
652
+ .wbb-tag.user { background: var(--accent-cyan-soft); color: var(--accent-cyan); }
653
+
654
+ /* ── Bottom panel ledger event rows ─────────────────────────────────────── */
655
+ .wbb-row.event-row {
656
+ width: 100%; text-align: left;
657
+ background: transparent; border: none; cursor: pointer;
658
+ display: flex; gap: 10px; align-items: center;
659
+ padding: 4px 0;
660
+ color: var(--color-text-secondary);
661
+ font-size: 11px; font-family: inherit;
662
+ }
663
+ .wbb-row.event-row:hover { background: var(--color-interaction-hover); color: var(--color-text-primary); }
664
+ .wbb-row .wbb-ico { font-size: 11px; }
665
+ .wbb-row .wbb-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
666
+
667
+ /* ── Console panel rows ────────────────────────────────────────────────── */
668
+ .wbb-row.console-row {
669
+ font-family: var(--font-mono);
670
+ padding: 2px 0;
671
+ gap: 6px;
672
+ }
673
+ .wbb-row.console-row.level-warn .console-text { color: var(--color-accent-orange-default); }
674
+ .wbb-row.console-row.level-error .console-text { color: var(--color-accent-error-default); }
675
+ .wbb-tag.console-log { background: rgba(255,255,255,0.05); color: var(--color-text-tertiary); }
676
+ .wbb-tag.console-warn { background: rgba(255,140,66,0.12); color: var(--color-accent-orange-default); }
677
+ .wbb-tag.console-error { background: rgba(255,107,107,0.12); color: var(--color-accent-error-default); }
678
+ .wbb-tag.console-info { background: rgba(108,196,255,0.12); color: var(--color-kind-cli-provider); }
679
+ .wbb-tag.console-debug { background: rgba(255,255,255,0.05); color: var(--color-text-tertiary); }
680
+ .console-text { white-space: pre-wrap; word-break: break-word; flex: 1; min-width: 0; }
681
+
682
+ /* ── extension editor: source textarea + markdown preview + view toggle ── */
683
+ .page-view-controls { margin-left: auto; display: flex; align-items: center; gap: 8px; padding: 0 10px; }
684
+ .page-view-toggle {
685
+ display: inline-flex; padding: 2px; gap: 1px;
686
+ background: rgba(0,0,0,0.3); border-radius: 5px;
687
+ border: 1px solid var(--color-border-default);
688
+ }
689
+ .page-view-btn {
690
+ background: transparent; border: none; cursor: pointer;
691
+ padding: 3px 8px;
692
+ display: inline-flex; align-items: center; gap: 4px;
693
+ color: var(--color-text-tertiary);
694
+ font-size: 10px; border-radius: 3px;
695
+ font-family: inherit;
696
+ }
697
+ .page-view-btn:hover { color: var(--color-text-primary); }
698
+ .page-view-btn.active { background: rgba(212,255,72,0.12); color: var(--color-brand-primary); }
699
+ .page-save-btn {
700
+ background: rgba(212,255,72,0.12); border: 1px solid rgba(212,255,72,0.25);
701
+ color: var(--color-brand-primary); cursor: pointer; padding: 4px 10px;
702
+ display: inline-flex; align-items: center; gap: 4px;
703
+ font-size: 10px; border-radius: 4px; font-family: inherit;
704
+ }
705
+ .page-save-btn:hover:not(:disabled) { background: rgba(212,255,72,0.2); }
706
+ .page-save-btn:disabled { opacity: 0.4; cursor: not-allowed; background: transparent; border-color: var(--color-border-default); color: var(--color-text-tertiary); }
707
+ .page-source {
708
+ flex: 1; margin: 0; padding: 14px;
709
+ background: var(--color-background-canvas); border: 1px solid var(--color-border-default);
710
+ border-radius: 4px;
711
+ font-family: var(--font-mono); font-size: 12px; line-height: 1.6;
712
+ color: var(--color-text-primary);
713
+ outline: none; resize: none;
714
+ tab-size: 2;
715
+ }
716
+ .page-source:focus { border-color: var(--color-brand-primary); }
717
+ .page-save-err {
718
+ position: absolute; right: 16px; bottom: 16px;
719
+ background: rgba(255,107,107,0.12); border: 1px solid rgba(255,107,107,0.3);
720
+ color: var(--color-accent-error-default);
721
+ padding: 6px 10px; border-radius: 4px;
722
+ font-size: 11px;
723
+ }
724
+ /* Multimodal asset preview (image/audio/video/glb) — added 2026-05-17 to
725
+ replace the textarea dump that rendered PNG/GLB bytes as mojibake. */
726
+ .page-asset {
727
+ flex: 1;
728
+ display: flex; flex-direction: column; align-items: center; justify-content: center;
729
+ gap: 12px;
730
+ padding: 18px;
731
+ background: var(--color-background-canvas);
732
+ overflow: auto;
733
+ position: relative;
734
+ }
735
+ .page-asset-image img {
736
+ max-width: 100%; max-height: calc(100% - 28px);
737
+ object-fit: contain;
738
+ border-radius: 2px;
739
+ background:
740
+ linear-gradient(45deg, rgba(255,255,255,0.04) 25%, transparent 25%) 0 0 / 16px 16px,
741
+ linear-gradient(-45deg, rgba(255,255,255,0.04) 25%, transparent 25%) 0 0 / 16px 16px,
742
+ linear-gradient(45deg, transparent 75%, rgba(255,255,255,0.04) 75%) 8px 8px / 16px 16px,
743
+ linear-gradient(-45deg, transparent 75%, rgba(255,255,255,0.04) 75%) 8px 8px / 16px 16px;
744
+ }
745
+ .page-asset-audio audio { width: min(520px, 90%); }
746
+ .page-asset-video video {
747
+ max-width: 100%; max-height: calc(100% - 28px);
748
+ border-radius: 2px;
749
+ background: var(--prim-color-neutral-1000);
750
+ }
751
+ .page-asset-model {
752
+ flex: 1;
753
+ width: 100%;
754
+ display: flex; flex-direction: column;
755
+ background: var(--color-background-canvas);
756
+ padding: 0;
757
+ position: relative;
758
+ overflow: hidden;
759
+ }
760
+ .page-asset-model model-viewer {
761
+ flex: 1; width: 100%; min-height: 0;
762
+ }
763
+ .page-asset-model .page-asset-meta {
764
+ padding: 6px 12px;
765
+ border-top: 1px solid var(--color-border-default);
766
+ }
767
+ .page-asset-meta {
768
+ font-size: 11px;
769
+ color: var(--color-text-tertiary);
770
+ font-family: var(--font-mono);
771
+ }
772
+ .page-asset-binary {
773
+ gap: 14px;
774
+ }
775
+ .page-asset-binary-msg {
776
+ color: var(--color-text-secondary);
777
+ font-size: 13px;
778
+ }
779
+ .page-asset-download {
780
+ display: inline-block;
781
+ padding: 6px 14px;
782
+ font-size: 12px;
783
+ color: var(--color-brand-primary);
784
+ border: 1px solid rgba(212,255,72,0.4);
785
+ border-radius: 4px;
786
+ text-decoration: none;
787
+ }
788
+ .page-asset-download:hover {
789
+ background: rgba(212,255,72,0.12);
790
+ }
791
+ /* react-markdown preview rendering */
792
+ .md-preview {
793
+ flex: 1; overflow: auto;
794
+ padding: 18px 28px;
795
+ background: var(--color-background-canvas);
796
+ border: 1px solid var(--color-border-default);
797
+ border-radius: 4px;
798
+ font-size: 13px; line-height: 1.65;
799
+ color: var(--color-text-primary);
800
+ }
801
+ .md-preview h1, .md-preview h2, .md-preview h3, .md-preview h4 {
802
+ font-weight: 600;
803
+ margin: 1.4em 0 0.5em;
804
+ color: var(--color-text-primary);
805
+ border-bottom: 1px solid var(--color-border-default);
806
+ padding-bottom: 4px;
807
+ }
808
+ .md-preview h1 { font-size: 1.5em; }
809
+ .md-preview h2 { font-size: 1.3em; }
810
+ .md-preview h3 { font-size: 1.15em; border-bottom: none; }
811
+ .md-preview h4 { font-size: 1em; border-bottom: none; }
812
+ .md-preview p { margin: 0.6em 0; color: var(--color-text-secondary); }
813
+ .md-preview ul, .md-preview ol { padding-left: 1.6em; margin: 0.4em 0; color: var(--color-text-secondary); }
814
+ .md-preview li { margin: 0.2em 0; }
815
+ .md-preview blockquote {
816
+ border-left: 3px solid var(--color-brand-primary);
817
+ padding: 4px 12px;
818
+ margin: 0.8em 0;
819
+ background: rgba(212,255,72,0.04);
820
+ color: var(--color-text-secondary);
821
+ }
822
+ .md-preview code {
823
+ background: rgba(255,255,255,0.08);
824
+ padding: 1px 5px; border-radius: 3px;
825
+ font-family: var(--font-mono); font-size: 0.9em;
826
+ color: var(--color-kind-cli-provider);
827
+ }
828
+ .md-preview pre {
829
+ background: var(--color-background-base);
830
+ border: 1px solid var(--color-border-default);
831
+ border-radius: 4px;
832
+ padding: 12px 14px; overflow-x: auto;
833
+ margin: 0.8em 0;
834
+ }
835
+ .md-preview pre code { background: none; padding: 0; color: var(--color-text-primary); }
836
+ .md-preview table { border-collapse: collapse; margin: 0.8em 0; width: 100%; }
837
+ .md-preview th, .md-preview td { border: 1px solid var(--color-border-default); padding: 6px 10px; font-size: 12px; }
838
+ .md-preview th { background: rgba(255,255,255,0.04); font-weight: 600; }
839
+ .md-preview a { color: var(--color-kind-cli-provider); }
840
+ .md-preview hr { border: none; border-top: 1px solid var(--color-border-default); margin: 1.2em 0; }
841
+ .page-editor { position: relative; }
842
+
843
+ /* P3.15 — PreviewToolbar.pt-left TEAM dot strip. Inserted between .pt-fps and
844
+ * .pt-slug so the player sees "team composition" before "game slug" in the
845
+ * left-to-right reading order. Role-tribe colors mirror
846
+ * .agent-card[data-role=...] in Sidebar.css (P3.8) — keep these two blocks
847
+ * in lockstep when adding new roles.
848
+ */
849
+ .preview-toolbar .pt-team {
850
+ display: inline-flex; align-items: center; gap: 5px;
851
+ padding: 0 6px;
852
+ border-left: 1px solid var(--color-border-default);
853
+ height: 18px;
854
+ font-family: var(--font-mono);
855
+ }
856
+ .preview-toolbar .pt-team-label {
857
+ font-size: 9px;
858
+ letter-spacing: 0.08em;
859
+ color: rgba(255,255,255,0.45);
860
+ text-transform: uppercase;
861
+ font-weight: 600;
862
+ }
863
+ .preview-toolbar .pt-team-dots {
864
+ display: inline-flex; align-items: center; gap: 3px;
865
+ }
866
+ .preview-toolbar .pt-team-dot {
867
+ display: inline-block;
868
+ width: 6px; height: 6px;
869
+ border-radius: 50%;
870
+ background: rgba(255,255,255,0.20);
871
+ flex-shrink: 0;
872
+ cursor: help;
873
+ }
874
+ .preview-toolbar .pt-team-dot.is-placeholder { opacity: 0.55; }
875
+ .preview-toolbar .pt-team-dot.r-orchestrator { background: var(--color-role-orchestrator); }
876
+ .preview-toolbar .pt-team-dot.r-pillar { background: var(--color-brand-primary); }
877
+ .preview-toolbar .pt-team-dot.r-design { background: var(--color-role-design); }
878
+ .preview-toolbar .pt-team-dot.r-narrative { background: var(--color-role-narrative); }
879
+ .preview-toolbar .pt-team-dot.r-art { background: var(--color-role-art); }
880
+ .preview-toolbar .pt-team-dot.r-coding { background: var(--color-role-coding); }
881
+ .preview-toolbar .pt-team-count {
882
+ font-size: 10px;
883
+ color: var(--color-text-tertiary);
884
+ font-variant-numeric: tabular-nums;
885
+ font-weight: 600;
886
+ padding: 0 4px;
887
+ border-radius: 999px;
888
+ border: 1px solid var(--color-border-default);
889
+ background: var(--color-interaction-hover);
890
+ line-height: 14px;
891
+ min-width: 16px;
892
+ text-align: center;
893
+ }
894
+
895
+ /* === P3.19 — extension empty-state plugin gallery ===
896
+ * Replaces the legacy `.cm-mock` 2-line hint when no file is open. The grid
897
+ * uses auto-fill so it gracefully reflows from 4 cols (wide) → 1 col when the
898
+ * main area is squeezed by Sidebar+ChatPanel. Color tokens deliberately reuse
899
+ * Sidebar `.ws-icon-btn.bus` lime family so the visual story "* = bus
900
+ * sourced" stays unified across surfaces.
901
+ */
902
+ .page-gallery {
903
+ flex: 1;
904
+ overflow: auto;
905
+ padding: 18px 16px 24px;
906
+ display: flex; flex-direction: column;
907
+ gap: 14px;
908
+ background:
909
+ radial-gradient(ellipse at top, rgba(75,222,128,0.04), transparent 60%),
910
+ var(--color-background-canvas);
911
+ }
912
+ .page-gallery-header {
913
+ display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
914
+ padding-bottom: 8px;
915
+ border-bottom: 1px solid var(--color-border-default);
916
+ }
917
+ .page-gallery-title {
918
+ font-family: var(--font-mono);
919
+ font-size: 13px;
920
+ font-weight: 700;
921
+ color: var(--color-text-primary);
922
+ letter-spacing: 0.02em;
923
+ }
924
+ .page-gallery-count {
925
+ font-family: var(--font-mono);
926
+ font-size: 11px;
927
+ color: rgba(75,222,128,0.85);
928
+ font-weight: 600;
929
+ font-variant-numeric: tabular-nums;
930
+ }
931
+ .page-gallery-sub {
932
+ font-size: 11px;
933
+ color: var(--color-text-tertiary);
934
+ margin-left: auto;
935
+ }
936
+ /* P4.46 — gallery header aggregate stats strip. Sits between `.page-gallery-count`
937
+ * (11 plugins) and `.page-gallery-sub` (instruction text pushed right by margin-left:auto).
938
+ * Mirrors P4.45 AgentsHub header `Σ N total | run·stop·dead` Σ-prefix +
939
+ * 1px×11px amber vsep pattern, and reuses the per-tile chip colors below
940
+ * (amber WIP / orange tools / sky events) so the strip and the tiles speak
941
+ * one visual vocabulary. */
942
+ .page-gallery-stats {
943
+ display: inline-flex; align-items: center; gap: 4px;
944
+ font-family: var(--font-mono);
945
+ font-size: 10px;
946
+ font-variant-numeric: tabular-nums;
947
+ }
948
+ .page-gallery-stats-pill {
949
+ display: inline-flex; align-items: center; gap: 3px;
950
+ padding: 1px 6px;
951
+ border-radius: 8px;
952
+ font-weight: 600;
953
+ letter-spacing: 0.04em;
954
+ }
955
+ .page-gallery-stats-total {
956
+ background: var(--color-interaction-hover);
957
+ border: 1px solid var(--color-border-default);
958
+ color: rgba(255,255,255,0.78);
959
+ }
960
+ .page-gallery-stats-sigma {
961
+ font-size: 10px; font-weight: 500;
962
+ color: rgba(255,255,255,0.55);
963
+ }
964
+ .page-gallery-stats-n { font-weight: 700; }
965
+ .page-gallery-stats-vsep {
966
+ display: inline-block;
967
+ width: 1px; height: 10px;
968
+ background: rgba(245,158,11,0.32);
969
+ margin: 0 1px;
970
+ }
971
+ .page-gallery-stats-wip {
972
+ color: rgba(245,178,67,0.90);
973
+ background: rgba(245,178,67,0.10);
974
+ border: 1px solid rgba(245,178,67,0.34);
975
+ text-transform: uppercase;
976
+ }
977
+ .page-gallery-stats-tools {
978
+ color: rgba(255,140,66,0.90);
979
+ background: rgba(255,140,66,0.10);
980
+ border: 1px solid rgba(255,140,66,0.34);
981
+ }
982
+ .page-gallery-stats-events {
983
+ color: rgba(108,196,255,0.90);
984
+ background: rgba(108,196,255,0.10);
985
+ border: 1px solid rgba(108,196,255,0.34);
986
+ }
987
+ /* P4.59 — 5th stats pill, brand lime to mirror the per-tile `.page-gallery-tile-tag.ver.bumped`
988
+ chip from P4.58. Reads "v N" where N = plugins whose manifest version is
989
+ not 0.0.x. Same extension lime family as tile icons / id chips. */
990
+ .page-gallery-stats-bumped {
991
+ color: rgba(var(--rgb-accent-green), 0.95);
992
+ background: rgba(var(--rgb-accent-green), 0.10);
993
+ border: 1px solid rgba(var(--rgb-accent-green), 0.42);
994
+ font-variant-numeric: tabular-nums;
995
+ }
996
+ .page-gallery-grid {
997
+ display: grid;
998
+ grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
999
+ gap: 10px;
1000
+ align-content: start;
1001
+ }
1002
+ .page-gallery-tile {
1003
+ display: flex; flex-direction: column;
1004
+ gap: 4px;
1005
+ padding: 12px 12px 10px;
1006
+ min-height: 110px;
1007
+ text-align: left;
1008
+ background: rgba(255,255,255,0.025);
1009
+ border: 1px solid var(--color-border-default);
1010
+ border-radius: 6px;
1011
+ cursor: pointer;
1012
+ color: var(--color-text-secondary);
1013
+ transition: background 0.12s ease, border-color 0.12s ease, transform 0.12s ease;
1014
+ font-family: inherit;
1015
+ position: relative;
1016
+ }
1017
+ .page-gallery-tile:hover {
1018
+ background: rgba(75,222,128,0.06);
1019
+ border-color: rgba(75,222,128,0.35);
1020
+ color: var(--color-text-primary);
1021
+ transform: translateY(-1px);
1022
+ }
1023
+ .page-gallery-tile:focus-visible {
1024
+ outline: 1px solid rgba(75,222,128,0.6);
1025
+ outline-offset: 1px;
1026
+ }
1027
+ /* P4.61 — bumped manifest version: brand-lime left-edge accent on the tile frame. */
1028
+ .page-gallery-tile.bumped {
1029
+ background: rgba(var(--rgb-accent-green), 0.025);
1030
+ border-color: rgba(var(--rgb-accent-green), 0.22);
1031
+ box-shadow: inset 2px 0 0 rgba(var(--rgb-accent-green), 0.55);
1032
+ }
1033
+ .page-gallery-tile.bumped:hover {
1034
+ background: rgba(var(--rgb-accent-green), 0.06);
1035
+ border-color: rgba(var(--rgb-accent-green), 0.35);
1036
+ box-shadow: inset 2px 0 0 rgba(var(--rgb-accent-green), 0.75);
1037
+ }
1038
+ /* P4.56 — top-right `#N` rank badge on each gallery tile (1..N derived from
1039
+ manifest extension.position sort order). Gives the 12-tile grid an at-a-
1040
+ glance ordering signal so players can talk about "tile #3" or notice
1041
+ reordering without reading every name. Neutral white-on-dark by default
1042
+ (doesn't compete with WIP/🛠/📡 chips below); brightens to the same lime
1043
+ #4bde80 family on parent tile hover for muscle-memory consistency with
1044
+ .page-gallery-tile:hover. tabular-nums keeps double-digit (#10–#12) widths
1045
+ aligned. */
1046
+ .page-gallery-tile-rank {
1047
+ position: absolute;
1048
+ top: 6px;
1049
+ right: 6px;
1050
+ font-family: var(--font-mono);
1051
+ font-size: 9px;
1052
+ font-weight: 600;
1053
+ font-variant-numeric: tabular-nums;
1054
+ letter-spacing: 0.02em;
1055
+ color: rgba(255,255,255,0.45);
1056
+ background: var(--color-interaction-hover);
1057
+ border: 1px solid var(--color-border-default);
1058
+ padding: 1px 4px;
1059
+ border-radius: 7px;
1060
+ pointer-events: none;
1061
+ transition: color 0.12s ease, background 0.12s ease, border-color 0.12s ease;
1062
+ }
1063
+ .page-gallery-tile:hover .page-gallery-tile-rank {
1064
+ color: rgba(75,222,128,0.85);
1065
+ background: rgba(75,222,128,0.10);
1066
+ border-color: rgba(75,222,128,0.35);
1067
+ }
1068
+ .page-gallery-tile-ico {
1069
+ font-size: 22px;
1070
+ line-height: 1;
1071
+ margin-bottom: 2px;
1072
+ filter: saturate(0.92);
1073
+ position: relative;
1074
+ display: inline-block;
1075
+ width: max-content;
1076
+ color: var(--color-brand-primary);
1077
+ opacity: 0.88;
1078
+ }
1079
+ .page-gallery-tile:hover .page-gallery-tile-ico {
1080
+ opacity: 1;
1081
+ }
1082
+ /* P4.60 — corner `ᵛ` badge on bumped tiles (brand lime, extension tribe). */
1083
+ .page-gallery-tile-ico-ver {
1084
+ position: absolute;
1085
+ top: -3px;
1086
+ right: -10px;
1087
+ font-family: var(--font-mono);
1088
+ font-size: 8px;
1089
+ font-weight: 700;
1090
+ line-height: 1;
1091
+ letter-spacing: 0.02em;
1092
+ color: rgba(var(--rgb-accent-green), 0.95);
1093
+ background: rgba(var(--rgb-accent-green), 0.12);
1094
+ border: 1px solid rgba(var(--rgb-accent-green), 0.42);
1095
+ padding: 1px 3px;
1096
+ border-radius: 4px;
1097
+ pointer-events: none;
1098
+ text-transform: lowercase;
1099
+ }
1100
+ .page-gallery-tile-name {
1101
+ font-size: 12px;
1102
+ font-weight: 600;
1103
+ color: var(--color-text-primary);
1104
+ line-height: 1.25;
1105
+ }
1106
+ .page-gallery-tile-desc {
1107
+ font-size: 10.5px;
1108
+ color: var(--color-text-tertiary);
1109
+ line-height: 1.4;
1110
+ display: -webkit-box;
1111
+ -webkit-line-clamp: 2;
1112
+ line-clamp: 2;
1113
+ -webkit-box-orient: vertical;
1114
+ overflow: hidden;
1115
+ text-overflow: ellipsis;
1116
+ }
1117
+ .page-gallery-tile-meta {
1118
+ margin-top: auto;
1119
+ display: flex; gap: 4px; flex-wrap: wrap;
1120
+ padding-top: 6px;
1121
+ }
1122
+ .page-gallery-tile-tag {
1123
+ font-family: var(--font-mono);
1124
+ font-size: 9px;
1125
+ font-weight: 600;
1126
+ letter-spacing: 0.02em;
1127
+ color: rgba(75,222,128,0.80);
1128
+ background: rgba(75,222,128,0.08);
1129
+ border: 1px solid rgba(75,222,128,0.22);
1130
+ padding: 1px 5px;
1131
+ border-radius: 3px;
1132
+ text-transform: lowercase;
1133
+ }
1134
+ .page-gallery-tile-tag.size {
1135
+ color: rgba(255,255,255,0.55);
1136
+ background: var(--color-interaction-hover);
1137
+ border-color: var(--color-border-default);
1138
+ }
1139
+ /* P4.43 — bus capability chips on each gallery tile.
1140
+ `WIP` (amber #f5b243) flags experimental:true placeholders, today on all
1141
+ 12 tiles so the gallery visibly says "all these are scaffolds";
1142
+ `🛠 N` (tool-tribe orange #ff8c42) and `📡 N` (sky #6cc4ff) only render
1143
+ when tools / events arrays are non-empty — currently just on
1144
+ character-forge (5 tools / 4 events), giving the first per-tile
1145
+ visual differentiation in the gallery. Matches existing chip dims
1146
+ (.page-gallery-tile-tag base) so the meta row stays one line on size-md tiles. */
1147
+ .page-gallery-tile-tag.wip {
1148
+ color: rgba(245,178,67,0.85);
1149
+ background: rgba(245,178,67,0.10);
1150
+ border-color: rgba(245,178,67,0.32);
1151
+ text-transform: uppercase;
1152
+ letter-spacing: 0.04em;
1153
+ }
1154
+ .page-gallery-tile-tag.tools {
1155
+ color: rgba(255,140,66,0.85);
1156
+ background: rgba(255,140,66,0.10);
1157
+ border-color: rgba(255,140,66,0.32);
1158
+ font-variant-numeric: tabular-nums;
1159
+ text-transform: none;
1160
+ }
1161
+ .page-gallery-tile-tag.events {
1162
+ color: rgba(108,196,255,0.85);
1163
+ background: rgba(108,196,255,0.10);
1164
+ border-color: rgba(108,196,255,0.32);
1165
+ font-variant-numeric: tabular-nums;
1166
+ text-transform: none;
1167
+ }
1168
+ /* P4.58 — manifest `version` chip: muted brand lime (extension tribe, not agent violet). */
1169
+ .page-gallery-tile-tag.ver {
1170
+ color: rgba(var(--rgb-accent-green), 0.55);
1171
+ background: rgba(var(--rgb-accent-green), 0.05);
1172
+ border-color: rgba(var(--rgb-accent-green), 0.18);
1173
+ font-variant-numeric: tabular-nums;
1174
+ text-transform: none;
1175
+ letter-spacing: 0.01em;
1176
+ }
1177
+ .page-gallery-tile-tag.ver.bumped {
1178
+ color: rgba(var(--rgb-accent-green), 0.95);
1179
+ background: rgba(var(--rgb-accent-green), 0.12);
1180
+ border-color: rgba(var(--rgb-accent-green), 0.42);
1181
+ font-weight: 700;
1182
+ }
1183
+
1184
+ /* ── P3.98 BusPulse — PreviewToolbar.pt-right live event indicator ───────
1185
+ First surface on the default ⌘1 view that visibly changes on its own:
1186
+ a 6×6 lime dot + uppercase mono `BUS` label + tabular-nums event count.
1187
+ Every time /api/health bus.ringSize grows, the dot's `is-flashing` class
1188
+ restarts a 600ms keyframe via key= re-mount, so consecutive events all
1189
+ produce a fresh flash even if they arrive mid-frame. Colors reuse the
1190
+ lime #4bde80 family from TopBar.tb-bus-chip / BusHealthLamp / TabStrip
1191
+ ts-bus-chip so the player learns "lime dot = bus host healthy" once
1192
+ across 4 surfaces. */
1193
+ .preview-toolbar .pt-pulse {
1194
+ display: inline-flex; align-items: center; gap: 5px;
1195
+ padding: 2px 7px 2px 6px;
1196
+ border: 1px solid rgba(75,222,128,0.22);
1197
+ background: rgba(75,222,128,0.05);
1198
+ border-radius: 10px;
1199
+ font-family: var(--font-mono);
1200
+ font-size: 9.5px;
1201
+ letter-spacing: 0.06em;
1202
+ line-height: 1;
1203
+ user-select: none;
1204
+ }
1205
+ .preview-toolbar .pt-pulse.is-pending {
1206
+ border-color: var(--color-border-default);
1207
+ background: rgba(255,255,255,0.03);
1208
+ }
1209
+ .preview-toolbar .pt-pulse.is-down {
1210
+ border-color: rgba(248,113,113,0.32);
1211
+ background: rgba(248,113,113,0.05);
1212
+ }
1213
+ .preview-toolbar .pt-pulse-dot {
1214
+ width: 6px; height: 6px;
1215
+ border-radius: 50%;
1216
+ background: var(--prim-color-green-400);
1217
+ box-shadow: none;
1218
+ flex-shrink: 0;
1219
+ }
1220
+ .preview-toolbar .pt-pulse-dot.is-pending {
1221
+ background: rgba(255,255,255,0.22);
1222
+ box-shadow: none;
1223
+ }
1224
+ .preview-toolbar .pt-pulse-dot.is-down {
1225
+ background: var(--color-accent-error-default);
1226
+ box-shadow: none;
1227
+ }
1228
+ .preview-toolbar .pt-pulse-dot.is-flashing {
1229
+ animation: pt-pulse-flash 600ms ease-out;
1230
+ }
1231
+ @keyframes pt-pulse-flash {
1232
+ 0% { background: var(--color-text-primary); box-shadow: none; transform: scale(1.35); }
1233
+ 35% { background: var(--color-brand-primary); box-shadow: none; transform: scale(1.15); }
1234
+ 100% { background: var(--prim-color-green-400); box-shadow: none; transform: scale(1); }
1235
+ }
1236
+ .preview-toolbar .pt-pulse-label {
1237
+ color: rgba(75,222,128,0.78);
1238
+ font-weight: 600;
1239
+ }
1240
+ .preview-toolbar .pt-pulse.is-pending .pt-pulse-label,
1241
+ .preview-toolbar .pt-pulse.is-down .pt-pulse-label {
1242
+ color: rgba(255,255,255,0.40);
1243
+ }
1244
+ .preview-toolbar .pt-pulse-count {
1245
+ color: var(--color-text-primary);
1246
+ font-variant-numeric: tabular-nums;
1247
+ font-weight: 600;
1248
+ letter-spacing: 0;
1249
+ }
1250
+ .preview-toolbar .pt-pulse.is-pending .pt-pulse-count {
1251
+ color: rgba(255,255,255,0.45);
1252
+ }
1253
+ .preview-toolbar .pt-pulse.is-down .pt-pulse-count {
1254
+ color: rgba(248,113,113,0.92);
1255
+ }
1256
+
1257
+ /* ── P4.6 ModelBindingPulse — PreviewToolbar.pt-right model-binding LED pill ──
1258
+ Mirrors TopBar tb-model (P4.5) but scoped to the Preview toolbar. Same teal
1259
+ #7be7c4 family used everywhere else for kind=model-binding (BusAdminPanel
1260
+ .ba-chip.k-model-binding / ChatPanel .cp-bus-chip.k-model-binding /
1261
+ Composer .cb-mb-row). Three tone states share the pt-pulse pill grammar
1262
+ so the two pt-right pills (BUS + MB) read as siblings.
1263
+ ─────────────────────────────────────────────────────────────────────────── */
1264
+ .preview-toolbar .pt-mb {
1265
+ display: inline-flex; align-items: center; gap: 5px;
1266
+ padding: 2px 7px 2px 6px;
1267
+ border: 1px solid rgba(126,231,196,0.26);
1268
+ background: rgba(126,231,196,0.05);
1269
+ border-radius: 10px;
1270
+ font-family: var(--font-mono);
1271
+ font-size: 9.5px;
1272
+ letter-spacing: 0.06em;
1273
+ line-height: 1;
1274
+ color: inherit;
1275
+ cursor: pointer;
1276
+ user-select: none;
1277
+ transition: transform 120ms ease, background 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
1278
+ }
1279
+ .preview-toolbar .pt-mb.is-loading {
1280
+ border-color: var(--color-border-default);
1281
+ background: rgba(255,255,255,0.03);
1282
+ }
1283
+ .preview-toolbar .pt-mb.is-empty {
1284
+ border-color: rgba(126,231,196,0.18);
1285
+ background: rgba(126,231,196,0.03);
1286
+ }
1287
+ .preview-toolbar .pt-mb.is-down {
1288
+ border-color: rgba(248,113,113,0.32);
1289
+ background: rgba(248,113,113,0.05);
1290
+ }
1291
+ .preview-toolbar .pt-mb:hover {
1292
+ background: rgba(126,231,196,0.13);
1293
+ border-color: rgba(126,231,196,0.48);
1294
+ transform: translateY(-0.5px);
1295
+ box-shadow: none;
1296
+ }
1297
+ .preview-toolbar .pt-mb:focus-visible {
1298
+ outline: 2px solid rgba(126,231,196,0.65);
1299
+ outline-offset: 1px;
1300
+ }
1301
+ .preview-toolbar .pt-mb:active { transform: translateY(0.5px); }
1302
+ .preview-toolbar .pt-mb-dot {
1303
+ width: 6px; height: 6px;
1304
+ border-radius: 50%;
1305
+ background: var(--accent-mint);
1306
+ box-shadow: none;
1307
+ flex-shrink: 0;
1308
+ }
1309
+ .preview-toolbar .pt-mb.is-loading .pt-mb-dot {
1310
+ background: rgba(255,255,255,0.22);
1311
+ box-shadow: none;
1312
+ animation: pt-mb-dot-pulse 1400ms ease-in-out infinite;
1313
+ }
1314
+ .preview-toolbar .pt-mb.is-empty .pt-mb-dot {
1315
+ background: rgba(126,231,196,0.30);
1316
+ box-shadow: none;
1317
+ }
1318
+ .preview-toolbar .pt-mb.is-down .pt-mb-dot {
1319
+ background: var(--color-accent-error-default);
1320
+ box-shadow: none;
1321
+ }
1322
+ @keyframes pt-mb-dot-pulse {
1323
+ 0%, 100% { opacity: 0.35; }
1324
+ 50% { opacity: 0.85; }
1325
+ }
1326
+ .preview-toolbar .pt-mb-icon {
1327
+ color: var(--color-kind-model-binding);
1328
+ flex-shrink: 0;
1329
+ }
1330
+ .preview-toolbar .pt-mb.is-loading .pt-mb-icon,
1331
+ .preview-toolbar .pt-mb.is-empty .pt-mb-icon,
1332
+ .preview-toolbar .pt-mb.is-down .pt-mb-icon { color: var(--color-icon-tertiary); }
1333
+ .preview-toolbar .pt-mb-label {
1334
+ color: rgba(126,231,196,0.82);
1335
+ font-weight: 600;
1336
+ }
1337
+ .preview-toolbar .pt-mb.is-loading .pt-mb-label,
1338
+ .preview-toolbar .pt-mb.is-empty .pt-mb-label,
1339
+ .preview-toolbar .pt-mb.is-down .pt-mb-label {
1340
+ color: rgba(255,255,255,0.42);
1341
+ }
1342
+ .preview-toolbar .pt-mb-count {
1343
+ color: var(--color-text-primary);
1344
+ font-variant-numeric: tabular-nums;
1345
+ font-weight: 600;
1346
+ letter-spacing: 0;
1347
+ padding: 1px 4px;
1348
+ border-radius: 7px;
1349
+ background: rgba(126,231,196,0.12);
1350
+ border: 1px solid rgba(126,231,196,0.28);
1351
+ }
1352
+ .preview-toolbar .pt-mb.is-loading .pt-mb-count {
1353
+ color: rgba(255,255,255,0.45);
1354
+ background: transparent;
1355
+ border-color: transparent;
1356
+ }
1357
+ .preview-toolbar .pt-mb.is-empty .pt-mb-count {
1358
+ color: rgba(126,231,196,0.55);
1359
+ background: transparent;
1360
+ border-color: rgba(126,231,196,0.18);
1361
+ }
1362
+ .preview-toolbar .pt-mb.is-down .pt-mb-count {
1363
+ color: rgba(248,113,113,0.92);
1364
+ background: rgba(248,113,113,0.08);
1365
+ border-color: rgba(248,113,113,0.32);
1366
+ }
1367
+
1368
+ /* ── P4.7 ProvidersPulse — PreviewToolbar.pt-right CLI provider LED pill ──
1369
+ Mirrors TopBar tb-providers (P4.3) into the Preview toolbar so the player
1370
+ can see {ok}/{total} CLI provider health right next to the BUS + MB pills.
1371
+ Three tones: lime #4bde80 (all ok) / amber #f5b243 (partial) / red #ff6b6b
1372
+ (none ok). Shares the pt-pulse + pt-mb pill grammar so MB / BUS / PROV
1373
+ read as siblings on the pt-right rail.
1374
+ ─────────────────────────────────────────────────────────────────────────── */
1375
+ .preview-toolbar .pt-prov {
1376
+ display: inline-flex; align-items: center; gap: 5px;
1377
+ padding: 2px 7px 2px 6px;
1378
+ border: 1px solid var(--color-border-default);
1379
+ background: rgba(255,255,255,0.03);
1380
+ border-radius: 10px;
1381
+ font-family: var(--font-mono);
1382
+ font-size: 9.5px;
1383
+ letter-spacing: 0.06em;
1384
+ line-height: 1;
1385
+ color: inherit;
1386
+ cursor: pointer;
1387
+ user-select: none;
1388
+ transition: transform 120ms ease, background 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
1389
+ }
1390
+ .preview-toolbar .pt-prov.is-ok {
1391
+ border-color: rgba(75,222,128,0.26);
1392
+ background: rgba(75,222,128,0.05);
1393
+ }
1394
+ .preview-toolbar .pt-prov.is-warn {
1395
+ border-color: rgba(245,178,67,0.32);
1396
+ background: rgba(245,178,67,0.05);
1397
+ }
1398
+ .preview-toolbar .pt-prov.is-down {
1399
+ border-color: rgba(255,107,107,0.32);
1400
+ background: rgba(255,107,107,0.05);
1401
+ }
1402
+ .preview-toolbar .pt-prov-dot {
1403
+ width: 6px; height: 6px;
1404
+ border-radius: 50%;
1405
+ background: rgba(255,255,255,0.25);
1406
+ box-shadow: 0 0 0 0 transparent;
1407
+ flex-shrink: 0;
1408
+ transition: background 160ms ease, box-shadow 200ms ease;
1409
+ }
1410
+ .preview-toolbar .pt-prov.is-ok .pt-prov-dot {
1411
+ background: var(--prim-color-green-400);
1412
+ box-shadow: none;
1413
+ }
1414
+ .preview-toolbar .pt-prov.is-warn .pt-prov-dot {
1415
+ background: var(--color-status-amber);
1416
+ box-shadow: none;
1417
+ }
1418
+ .preview-toolbar .pt-prov.is-down .pt-prov-dot {
1419
+ background: var(--color-accent-error-default);
1420
+ box-shadow: none;
1421
+ }
1422
+ .preview-toolbar .pt-prov.is-loading .pt-prov-dot {
1423
+ animation: pt-prov-dot-pulse 1.2s ease-in-out infinite;
1424
+ }
1425
+ @keyframes pt-prov-dot-pulse {
1426
+ 0%, 100% { opacity: 0.35; }
1427
+ 50% { opacity: 0.85; }
1428
+ }
1429
+ .preview-toolbar .pt-prov-icon {
1430
+ color: var(--color-icon-tertiary);
1431
+ flex-shrink: 0;
1432
+ }
1433
+ .preview-toolbar .pt-prov.is-ok .pt-prov-icon { color: var(--prim-color-green-400); }
1434
+ .preview-toolbar .pt-prov.is-warn .pt-prov-icon { color: var(--color-status-amber); }
1435
+ .preview-toolbar .pt-prov.is-down .pt-prov-icon { color: var(--color-accent-error-default); }
1436
+ .preview-toolbar .pt-prov-label {
1437
+ color: rgba(255,255,255,0.42);
1438
+ font-weight: 600;
1439
+ }
1440
+ .preview-toolbar .pt-prov.is-ok .pt-prov-label { color: rgba(75,222,128,0.82); }
1441
+ .preview-toolbar .pt-prov.is-warn .pt-prov-label { color: rgba(245,178,67,0.82); }
1442
+ .preview-toolbar .pt-prov.is-down .pt-prov-label { color: rgba(255,107,107,0.82); }
1443
+ .preview-toolbar .pt-prov-count {
1444
+ color: var(--color-text-primary);
1445
+ font-variant-numeric: tabular-nums;
1446
+ font-weight: 600;
1447
+ letter-spacing: 0;
1448
+ padding: 1px 4px;
1449
+ border-radius: 7px;
1450
+ background: rgba(255,255,255,0.04);
1451
+ border: 1px solid transparent;
1452
+ }
1453
+ .preview-toolbar .pt-prov.is-ok .pt-prov-count {
1454
+ background: rgba(75,222,128,0.12);
1455
+ border-color: rgba(75,222,128,0.28);
1456
+ }
1457
+ .preview-toolbar .pt-prov.is-warn .pt-prov-count {
1458
+ background: rgba(245,178,67,0.12);
1459
+ border-color: rgba(245,178,67,0.32);
1460
+ }
1461
+ .preview-toolbar .pt-prov.is-down .pt-prov-count {
1462
+ color: rgba(255,107,107,0.92);
1463
+ background: rgba(255,107,107,0.10);
1464
+ border-color: rgba(255,107,107,0.32);
1465
+ }
1466
+ .preview-toolbar .pt-prov.is-loading .pt-prov-count {
1467
+ color: rgba(255,255,255,0.45);
1468
+ background: transparent;
1469
+ border-color: transparent;
1470
+ }
1471
+ .preview-toolbar .pt-prov.is-ok:hover {
1472
+ background: rgba(75,222,128,0.13);
1473
+ border-color: rgba(75,222,128,0.48);
1474
+ transform: translateY(-0.5px);
1475
+ box-shadow: none;
1476
+ }
1477
+ .preview-toolbar .pt-prov.is-warn:hover {
1478
+ background: rgba(245,178,67,0.13);
1479
+ border-color: rgba(245,178,67,0.48);
1480
+ transform: translateY(-0.5px);
1481
+ box-shadow: none;
1482
+ }
1483
+ .preview-toolbar .pt-prov.is-down:hover {
1484
+ background: rgba(255,107,107,0.13);
1485
+ border-color: rgba(255,107,107,0.48);
1486
+ transform: translateY(-0.5px);
1487
+ box-shadow: none;
1488
+ }
1489
+ .preview-toolbar .pt-prov.is-loading:hover {
1490
+ background: var(--color-divider-subtle);
1491
+ border-color: var(--color-border-default);
1492
+ }
1493
+ .preview-toolbar .pt-prov:focus-visible {
1494
+ outline: 2px solid rgba(255,255,255,0.45);
1495
+ outline-offset: 1px;
1496
+ }
1497
+ .preview-toolbar .pt-prov.is-ok:focus-visible { outline-color: rgba(75,222,128,0.65); }
1498
+ .preview-toolbar .pt-prov.is-warn:focus-visible { outline-color: rgba(245,178,67,0.65); }
1499
+ .preview-toolbar .pt-prov.is-down:focus-visible { outline-color: rgba(255,107,107,0.65); }
1500
+ .preview-toolbar .pt-prov:active { transform: translateY(0.5px); }
1501
+
1502
+ /* ── P4.23 SkillPulse — PreviewToolbar.pt-right skill LED pill ──
1503
+ Mirrors TopBar tb-skill (P4.20) into the Preview toolbar. Same gold
1504
+ #ffc878 family used everywhere else for kind=skill (BusAdminPanel
1505
+ .ba-chip.k-skill / TabStrip ts-kind-chip.k-skill / Composer slash
1506
+ menu Sparkles icon). Four tone states (loading / empty / down / ok)
1507
+ share the pt-mb pill grammar so MB / BUS / PROV / SKILL read as
1508
+ siblings on the pt-right rail.
1509
+ ─────────────────────────────────────────────────────────────────────────── */
1510
+ .preview-toolbar .pt-skill {
1511
+ display: inline-flex; align-items: center; gap: 5px;
1512
+ padding: 2px 7px 2px 6px;
1513
+ border: 1px solid rgba(255,200,120,0.26);
1514
+ background: rgba(255,200,120,0.05);
1515
+ border-radius: 10px;
1516
+ font-family: var(--font-mono);
1517
+ font-size: 9.5px;
1518
+ letter-spacing: 0.06em;
1519
+ line-height: 1;
1520
+ color: inherit;
1521
+ cursor: pointer;
1522
+ user-select: none;
1523
+ transition: transform 120ms ease, background 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
1524
+ }
1525
+ .preview-toolbar .pt-skill.is-loading {
1526
+ border-color: var(--color-border-default);
1527
+ background: rgba(255,255,255,0.03);
1528
+ }
1529
+ .preview-toolbar .pt-skill.is-empty {
1530
+ border-color: rgba(255,200,120,0.18);
1531
+ background: rgba(255,200,120,0.03);
1532
+ }
1533
+ .preview-toolbar .pt-skill.is-down {
1534
+ border-color: rgba(248,113,113,0.32);
1535
+ background: rgba(248,113,113,0.05);
1536
+ }
1537
+ .preview-toolbar .pt-skill:hover {
1538
+ background: rgba(255,200,120,0.13);
1539
+ border-color: rgba(255,200,120,0.48);
1540
+ transform: translateY(-0.5px);
1541
+ box-shadow: none;
1542
+ }
1543
+ .preview-toolbar .pt-skill:focus-visible {
1544
+ outline: 2px solid rgba(255,200,120,0.65);
1545
+ outline-offset: 1px;
1546
+ }
1547
+ .preview-toolbar .pt-skill:active { transform: translateY(0.5px); }
1548
+ .preview-toolbar .pt-skill-dot {
1549
+ width: 6px; height: 6px;
1550
+ border-radius: 50%;
1551
+ background: var(--color-role-narrative);
1552
+ box-shadow: none;
1553
+ flex-shrink: 0;
1554
+ }
1555
+ .preview-toolbar .pt-skill.is-loading .pt-skill-dot {
1556
+ background: rgba(255,255,255,0.22);
1557
+ box-shadow: none;
1558
+ animation: pt-skill-dot-pulse 1400ms ease-in-out infinite;
1559
+ }
1560
+ .preview-toolbar .pt-skill.is-empty .pt-skill-dot {
1561
+ background: rgba(255,200,120,0.30);
1562
+ box-shadow: none;
1563
+ }
1564
+ .preview-toolbar .pt-skill.is-down .pt-skill-dot {
1565
+ background: var(--color-accent-error-default);
1566
+ box-shadow: none;
1567
+ }
1568
+ @keyframes pt-skill-dot-pulse {
1569
+ 0%, 100% { opacity: 0.35; }
1570
+ 50% { opacity: 0.85; }
1571
+ }
1572
+ .preview-toolbar .pt-skill-icon {
1573
+ color: var(--color-kind-skill);
1574
+ flex-shrink: 0;
1575
+ }
1576
+ .preview-toolbar .pt-skill.is-loading .pt-skill-icon,
1577
+ .preview-toolbar .pt-skill.is-empty .pt-skill-icon,
1578
+ .preview-toolbar .pt-skill.is-down .pt-skill-icon { color: var(--color-icon-tertiary); }
1579
+ .preview-toolbar .pt-skill-label {
1580
+ color: rgba(255,200,120,0.82);
1581
+ font-weight: 600;
1582
+ }
1583
+ .preview-toolbar .pt-skill.is-loading .pt-skill-label,
1584
+ .preview-toolbar .pt-skill.is-empty .pt-skill-label,
1585
+ .preview-toolbar .pt-skill.is-down .pt-skill-label {
1586
+ color: rgba(255,255,255,0.42);
1587
+ }
1588
+ .preview-toolbar .pt-skill-count {
1589
+ color: var(--color-text-primary);
1590
+ font-variant-numeric: tabular-nums;
1591
+ font-weight: 600;
1592
+ letter-spacing: 0;
1593
+ padding: 1px 4px;
1594
+ border-radius: 7px;
1595
+ background: rgba(255,200,120,0.12);
1596
+ border: 1px solid rgba(255,200,120,0.28);
1597
+ }
1598
+ .preview-toolbar .pt-skill.is-loading .pt-skill-count {
1599
+ color: rgba(255,255,255,0.45);
1600
+ background: transparent;
1601
+ border-color: transparent;
1602
+ }
1603
+ .preview-toolbar .pt-skill.is-empty .pt-skill-count {
1604
+ color: rgba(255,200,120,0.55);
1605
+ background: transparent;
1606
+ border-color: rgba(255,200,120,0.18);
1607
+ }
1608
+ .preview-toolbar .pt-skill.is-down .pt-skill-count {
1609
+ color: rgba(248,113,113,0.92);
1610
+ background: rgba(248,113,113,0.08);
1611
+ border-color: rgba(248,113,113,0.32);
1612
+ }
1613
+
1614
+ /* ── P4.24 ToolPulse — PreviewToolbar.pt-right tool LED pill ──
1615
+ Mirrors TopBar tb-tool (P4.21) into the Preview toolbar. Same orange
1616
+ #ff8c42 family used everywhere else for kind=tool (TopBar tb-tool /
1617
+ BusAdminPanel .ba-chip.k-tool / TabStrip ts-kind-chip.k-tool). Four
1618
+ tone states (loading / empty / down / ok) share the pt-mb / pt-skill
1619
+ pill grammar so MB / BUS / PROV / SKILL / TOOL read as siblings on
1620
+ the pt-right rail. Pushes pt-right from 4 to 5 live LEDs; next
1621
+ remaining 6th would be pt-agent (violet).
1622
+ ─────────────────────────────────────────────────────────────────────────── */
1623
+ .preview-toolbar .pt-tool {
1624
+ display: inline-flex; align-items: center; gap: 5px;
1625
+ padding: 2px 7px 2px 6px;
1626
+ border: 1px solid rgba(255,140,66,0.26);
1627
+ background: rgba(255,140,66,0.05);
1628
+ border-radius: 10px;
1629
+ font-family: var(--font-mono);
1630
+ font-size: 9.5px;
1631
+ letter-spacing: 0.06em;
1632
+ line-height: 1;
1633
+ color: inherit;
1634
+ cursor: pointer;
1635
+ user-select: none;
1636
+ transition: transform 120ms ease, background 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
1637
+ }
1638
+ .preview-toolbar .pt-tool.is-loading {
1639
+ border-color: var(--color-border-default);
1640
+ background: rgba(255,255,255,0.03);
1641
+ }
1642
+ .preview-toolbar .pt-tool.is-empty {
1643
+ border-color: rgba(255,140,66,0.18);
1644
+ background: rgba(255,140,66,0.03);
1645
+ }
1646
+ .preview-toolbar .pt-tool.is-down {
1647
+ border-color: rgba(248,113,113,0.32);
1648
+ background: rgba(248,113,113,0.05);
1649
+ }
1650
+ .preview-toolbar .pt-tool:hover {
1651
+ background: rgba(255,140,66,0.13);
1652
+ border-color: rgba(255,140,66,0.48);
1653
+ transform: translateY(-0.5px);
1654
+ box-shadow: none;
1655
+ }
1656
+ .preview-toolbar .pt-tool:focus-visible {
1657
+ outline: 2px solid rgba(255,140,66,0.65);
1658
+ outline-offset: 1px;
1659
+ }
1660
+ .preview-toolbar .pt-tool:active { transform: translateY(0.5px); }
1661
+ .preview-toolbar .pt-tool-dot {
1662
+ width: 6px; height: 6px;
1663
+ border-radius: 50%;
1664
+ background: var(--color-role-coding);
1665
+ box-shadow: none;
1666
+ flex-shrink: 0;
1667
+ }
1668
+ .preview-toolbar .pt-tool.is-loading .pt-tool-dot {
1669
+ background: rgba(255,255,255,0.22);
1670
+ box-shadow: none;
1671
+ animation: pt-tool-dot-pulse 1400ms ease-in-out infinite;
1672
+ }
1673
+ .preview-toolbar .pt-tool.is-empty .pt-tool-dot {
1674
+ background: rgba(255,140,66,0.30);
1675
+ box-shadow: none;
1676
+ }
1677
+ .preview-toolbar .pt-tool.is-down .pt-tool-dot {
1678
+ background: var(--color-accent-error-default);
1679
+ box-shadow: none;
1680
+ }
1681
+ @keyframes pt-tool-dot-pulse {
1682
+ 0%, 100% { opacity: 0.35; }
1683
+ 50% { opacity: 0.85; }
1684
+ }
1685
+ .preview-toolbar .pt-tool-icon {
1686
+ color: var(--color-kind-tool);
1687
+ flex-shrink: 0;
1688
+ }
1689
+ .preview-toolbar .pt-tool.is-loading .pt-tool-icon,
1690
+ .preview-toolbar .pt-tool.is-empty .pt-tool-icon,
1691
+ .preview-toolbar .pt-tool.is-down .pt-tool-icon { color: var(--color-icon-tertiary); }
1692
+ .preview-toolbar .pt-tool-label {
1693
+ color: rgba(255,140,66,0.82);
1694
+ font-weight: 600;
1695
+ }
1696
+ .preview-toolbar .pt-tool.is-loading .pt-tool-label,
1697
+ .preview-toolbar .pt-tool.is-empty .pt-tool-label,
1698
+ .preview-toolbar .pt-tool.is-down .pt-tool-label {
1699
+ color: rgba(255,255,255,0.42);
1700
+ }
1701
+ .preview-toolbar .pt-tool-count {
1702
+ color: var(--color-text-primary);
1703
+ font-variant-numeric: tabular-nums;
1704
+ font-weight: 600;
1705
+ letter-spacing: 0;
1706
+ padding: 1px 4px;
1707
+ border-radius: 7px;
1708
+ background: rgba(255,140,66,0.12);
1709
+ border: 1px solid rgba(255,140,66,0.28);
1710
+ }
1711
+ .preview-toolbar .pt-tool.is-loading .pt-tool-count {
1712
+ color: rgba(255,255,255,0.45);
1713
+ background: transparent;
1714
+ border-color: transparent;
1715
+ }
1716
+ .preview-toolbar .pt-tool.is-empty .pt-tool-count {
1717
+ color: rgba(255,140,66,0.55);
1718
+ background: transparent;
1719
+ border-color: rgba(255,140,66,0.18);
1720
+ }
1721
+ .preview-toolbar .pt-tool.is-down .pt-tool-count {
1722
+ color: rgba(248,113,113,0.92);
1723
+ background: rgba(248,113,113,0.08);
1724
+ border-color: rgba(248,113,113,0.32);
1725
+ }
1726
+
1727
+ /* P4.25 — pt-agent (violet #c4a3ff = rgb(196,163,255)) — final 6th LED
1728
+ on pt-right, mirrors TopBar tb-agent (P4.22). Same family grammar
1729
+ as .pt-tool (orange) / .pt-skill (gold) / .pt-prov (amber-sky) /
1730
+ .pt-mb (teal) / .pt-pulse (lime BUS). Completes the bus-kind matrix
1731
+ reading on the default ⌘1 Preview workspace. */
1732
+ .preview-toolbar .pt-agent {
1733
+ display: inline-flex; align-items: center; gap: 5px;
1734
+ padding: 2px 7px 2px 6px;
1735
+ border: 1px solid rgba(196,163,255,0.26);
1736
+ background: rgba(196,163,255,0.05);
1737
+ border-radius: 10px;
1738
+ font-family: var(--font-mono);
1739
+ font-size: 9.5px;
1740
+ letter-spacing: 0.06em;
1741
+ line-height: 1;
1742
+ color: inherit;
1743
+ cursor: pointer;
1744
+ user-select: none;
1745
+ transition: transform 120ms ease, background 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
1746
+ }
1747
+ .preview-toolbar .pt-agent.is-loading {
1748
+ border-color: var(--color-border-default);
1749
+ background: rgba(255,255,255,0.03);
1750
+ }
1751
+ .preview-toolbar .pt-agent.is-empty {
1752
+ border-color: rgba(196,163,255,0.18);
1753
+ background: rgba(196,163,255,0.03);
1754
+ }
1755
+ .preview-toolbar .pt-agent.is-down {
1756
+ border-color: rgba(248,113,113,0.32);
1757
+ background: rgba(248,113,113,0.05);
1758
+ }
1759
+ .preview-toolbar .pt-agent:hover {
1760
+ background: rgba(196,163,255,0.13);
1761
+ border-color: rgba(196,163,255,0.48);
1762
+ transform: translateY(-0.5px);
1763
+ box-shadow: none;
1764
+ }
1765
+ .preview-toolbar .pt-agent:focus-visible {
1766
+ outline: 2px solid rgba(196,163,255,0.65);
1767
+ outline-offset: 1px;
1768
+ }
1769
+ .preview-toolbar .pt-agent:active { transform: translateY(0.5px); }
1770
+ .preview-toolbar .pt-agent-dot {
1771
+ width: 6px; height: 6px;
1772
+ border-radius: 50%;
1773
+ background: var(--color-role-orchestrator);
1774
+ box-shadow: none;
1775
+ flex-shrink: 0;
1776
+ }
1777
+ .preview-toolbar .pt-agent.is-loading .pt-agent-dot {
1778
+ background: rgba(255,255,255,0.22);
1779
+ box-shadow: none;
1780
+ animation: pt-agent-dot-pulse 1400ms ease-in-out infinite;
1781
+ }
1782
+ .preview-toolbar .pt-agent.is-empty .pt-agent-dot {
1783
+ background: rgba(196,163,255,0.30);
1784
+ box-shadow: none;
1785
+ }
1786
+ .preview-toolbar .pt-agent.is-down .pt-agent-dot {
1787
+ background: var(--color-accent-error-default);
1788
+ box-shadow: none;
1789
+ }
1790
+ @keyframes pt-agent-dot-pulse {
1791
+ 0%, 100% { opacity: 0.35; }
1792
+ 50% { opacity: 0.85; }
1793
+ }
1794
+ .preview-toolbar .pt-agent-icon {
1795
+ color: var(--color-kind-agent);
1796
+ flex-shrink: 0;
1797
+ }
1798
+ .preview-toolbar .pt-agent.is-loading .pt-agent-icon,
1799
+ .preview-toolbar .pt-agent.is-empty .pt-agent-icon,
1800
+ .preview-toolbar .pt-agent.is-down .pt-agent-icon { color: var(--color-icon-tertiary); }
1801
+ .preview-toolbar .pt-agent-label {
1802
+ color: rgba(196,163,255,0.82);
1803
+ font-weight: 600;
1804
+ }
1805
+ .preview-toolbar .pt-agent.is-loading .pt-agent-label,
1806
+ .preview-toolbar .pt-agent.is-empty .pt-agent-label,
1807
+ .preview-toolbar .pt-agent.is-down .pt-agent-label {
1808
+ color: rgba(255,255,255,0.42);
1809
+ }
1810
+ .preview-toolbar .pt-agent-count {
1811
+ color: var(--color-text-primary);
1812
+ font-variant-numeric: tabular-nums;
1813
+ font-weight: 600;
1814
+ letter-spacing: 0;
1815
+ padding: 1px 4px;
1816
+ border-radius: 7px;
1817
+ background: rgba(196,163,255,0.12);
1818
+ border: 1px solid rgba(196,163,255,0.28);
1819
+ }
1820
+ .preview-toolbar .pt-agent.is-loading .pt-agent-count {
1821
+ color: rgba(255,255,255,0.45);
1822
+ background: transparent;
1823
+ border-color: transparent;
1824
+ }
1825
+ .preview-toolbar .pt-agent.is-empty .pt-agent-count {
1826
+ color: rgba(196,163,255,0.55);
1827
+ background: transparent;
1828
+ border-color: rgba(196,163,255,0.18);
1829
+ }
1830
+ .preview-toolbar .pt-agent.is-down .pt-agent-count {
1831
+ color: rgba(248,113,113,0.92);
1832
+ background: rgba(248,113,113,0.08);
1833
+ border-color: rgba(248,113,113,0.32);
1834
+ }
1835
+
1836
+
1837
+ /* ── AgentsMainArea (extensionMode agents tab) ── */
1838
+ .agents-agents-main {
1839
+ flex: 1;
1840
+ overflow-y: auto;
1841
+ padding: 20px 24px;
1842
+ display: flex;
1843
+ flex-direction: column;
1844
+ gap: 16px;
1845
+ background: var(--color-background-canvas);
1846
+ }
1847
+ .agents-agents-header {
1848
+ display: flex;
1849
+ align-items: baseline;
1850
+ gap: 8px;
1851
+ }
1852
+ .agents-agents-lang {
1853
+ margin-left: auto;
1854
+ }
1855
+ .agents-agents-title {
1856
+ font-size: 14px;
1857
+ font-weight: 600;
1858
+ color: var(--color-text-primary);
1859
+ }
1860
+ .agents-agents-count {
1861
+ font-size: 11px;
1862
+ color: var(--color-text-tertiary);
1863
+ }
1864
+ .agents-agents-loading,
1865
+ .agents-agents-err,
1866
+ .agents-agents-empty {
1867
+ font-size: 12px;
1868
+ color: var(--color-text-tertiary);
1869
+ padding: 40px 0;
1870
+ text-align: center;
1871
+ }
1872
+ .agents-agents-err { color: var(--color-status-error); }
1873
+ /* Masonry via JS-distributed flex columns (2026-06-23, replaces CSS multicol).
1874
+ *
1875
+ * History: this used to be `columns: 280px` (CSS multicol) to get masonry
1876
+ * without the row-height gaps a plain CSS grid leaves under short cards. But
1877
+ * WebKit (WKWebView / desktop .app) mispaints the composited <video> avatars
1878
+ * inside a multicol fragmentation context — hovering a card re-composited its
1879
+ * <video> at a wrong page coordinate (a duplicate avatar near the window
1880
+ * bottom + black flash). No in-flow/clip-path/compositing tweak fixed it while
1881
+ * the cards lived in a fragmented column flow. Chrome (Dawn) rendered it fine.
1882
+ *
1883
+ * Fix: AgentsMainArea now measures the container width, computes the column
1884
+ * count (~280px target), and splits the folded items into N plain flex columns
1885
+ * itself (see gridRefCb / round-robin distribution there). Each column is a
1886
+ * normal flex stack — NOT a fragmentation context — so WebKit composites the
1887
+ * avatars correctly. We keep the masonry look (balanced columns, no row-height
1888
+ * gaps) without the multicol bug. Reading order becomes natural row-major.
1889
+ */
1890
+ .agents-agents-grid {
1891
+ display: flex;
1892
+ gap: 12px;
1893
+ align-items: flex-start;
1894
+ }
1895
+ .agents-agents-col {
1896
+ flex: 1 1 0;
1897
+ min-width: 0;
1898
+ display: flex;
1899
+ flex-direction: column;
1900
+ gap: 12px;
1901
+ }
1902
+ .agents-agent-card {
1903
+ background: var(--color-background-elevated);
1904
+ border: 1px solid var(--color-border-default);
1905
+ border-radius: 10px;
1906
+ padding: 12px;
1907
+ display: flex;
1908
+ flex-direction: column;
1909
+ gap: 8px;
1910
+ transition: border-color 0.15s;
1911
+ }
1912
+ .agents-agent-card.main {
1913
+ border-color: var(--color-brand-primary);
1914
+ }
1915
+ .agents-agent-card.placeholder {
1916
+ opacity: 0.5;
1917
+ }
1918
+ .agents-agent-card.is-clickable { cursor: pointer; }
1919
+ .agents-agent-card.is-clickable:hover {
1920
+ border-color: var(--color-brand-primary);
1921
+ background: var(--color-background-elevated-hover, var(--color-background-elevated));
1922
+ }
1923
+ .agents-agent-card.is-clickable:focus-visible {
1924
+ outline: 2px solid var(--color-brand-primary);
1925
+ outline-offset: 2px;
1926
+ }
1927
+ .agents-agent-card-header {
1928
+ display: flex;
1929
+ align-items: center;
1930
+ gap: 8px;
1931
+ }
1932
+ .agents-agent-avatar {
1933
+ width: 48px;
1934
+ height: 48px;
1935
+ border-radius: 50%;
1936
+ display: flex;
1937
+ align-items: center;
1938
+ justify-content: center;
1939
+ font-size: 18px;
1940
+ flex-shrink: 0;
1941
+ color: #fff;
1942
+ font-weight: 700;
1943
+ }
1944
+ .agents-agent-meta {
1945
+ flex: 1;
1946
+ min-width: 0;
1947
+ display: flex;
1948
+ flex-direction: column;
1949
+ gap: 2px;
1950
+ }
1951
+ .agents-agent-name {
1952
+ font-size: 12px;
1953
+ font-weight: 600;
1954
+ color: var(--color-text-primary);
1955
+ white-space: nowrap;
1956
+ overflow: hidden;
1957
+ text-overflow: ellipsis;
1958
+ }
1959
+ .agents-agent-role {
1960
+ font-size: 11px;
1961
+ color: var(--color-text-tertiary);
1962
+ white-space: nowrap;
1963
+ overflow: hidden;
1964
+ text-overflow: ellipsis;
1965
+ }
1966
+ .agents-agent-badge {
1967
+ font-size: 10px;
1968
+ padding: 1px 6px;
1969
+ border-radius: 10px;
1970
+ font-weight: 600;
1971
+ flex-shrink: 0;
1972
+ }
1973
+ .agents-agent-badge.active {
1974
+ background: rgba(74, 222, 128, 0.15);
1975
+ color: #4ade80;
1976
+ border: 1px solid rgba(74, 222, 128, 0.3);
1977
+ }
1978
+ .agents-agent-files {
1979
+ list-style: none;
1980
+ margin: 0;
1981
+ padding: 0;
1982
+ display: flex;
1983
+ flex-direction: column;
1984
+ gap: 2px;
1985
+ }
1986
+ .agents-agent-file-btn {
1987
+ display: flex;
1988
+ align-items: center;
1989
+ gap: 6px;
1990
+ width: 100%;
1991
+ background: none;
1992
+ border: none;
1993
+ cursor: pointer;
1994
+ padding: 3px 6px;
1995
+ border-radius: 5px;
1996
+ text-align: left;
1997
+ color: var(--color-text-secondary);
1998
+ font-size: 11px;
1999
+ transition: background 0.1s, color 0.1s;
2000
+ }
2001
+ .agents-agent-file-btn:hover {
2002
+ background: rgba(255, 255, 255, 0.07);
2003
+ color: var(--color-text-primary);
2004
+ }
2005
+ .agents-agent-file-ico { flex-shrink: 0; }
2006
+ .agents-agent-file-name {
2007
+ overflow: hidden;
2008
+ text-overflow: ellipsis;
2009
+ white-space: nowrap;
2010
+ }
2011
+ .agents-agent-no-files {
2012
+ font-size: 11px;
2013
+ color: var(--color-text-quaternary, var(--color-text-tertiary));
2014
+ padding: 4px 6px;
2015
+ }
2016
+
2017
+ /* ── Agent group cards (catalog-side fold, ADR-0019 §9, 2026-06-22) ─────
2018
+ * Three additional grid items beyond the flat `.agents-agent-card`:
2019
+ *
2020
+ * .agents-agent-group-subagent → lead card + nested column for sub-agents.
2021
+ * Single grid cell, vertical stack inside.
2022
+ * .agents-agent-nested → indented (dashed border-left, mirrors the
2023
+ * v2-vision mockup `.nested` style) container
2024
+ * that holds the sub mini-cards.
2025
+ * .agents-agent-sub-mini → compact variant of `.agents-agent-card` for
2026
+ * subs (no file list, smaller avatar). Click
2027
+ * opens Persona editor without setTabAgent
2028
+ * (view-only per user decision).
2029
+ * .agents-agent-group-skin → skin family card with a horizontal chip row
2030
+ * for the persona variants. Picking a chip IS
2031
+ * the chat-routing intent so it calls
2032
+ * openAgentDetail() normally (setTabAgent on).
2033
+ */
2034
+ .agents-agent-group-subagent {
2035
+ display: flex;
2036
+ flex-direction: column;
2037
+ gap: 6px;
2038
+ }
2039
+ .agents-agent-nested-hint {
2040
+ font-size: 10.5px;
2041
+ color: var(--color-text-tertiary);
2042
+ padding: 0 4px 0 18px;
2043
+ margin-top: -2px;
2044
+ }
2045
+ .agents-agent-nested {
2046
+ display: flex;
2047
+ flex-direction: column;
2048
+ gap: 6px;
2049
+ margin-left: 16px;
2050
+ padding-left: 12px;
2051
+ border-left: 1px dashed var(--color-border-default);
2052
+ }
2053
+ /* Sub / provider mini-cards keep their own borders (each reads as a
2054
+ * standalone framed card) — visually distinct from the lead card above so
2055
+ * the user doesn't perceive the lead's frame as extending around its
2056
+ * subagents. The dashed left border on `.agents-agent-nested` only signals
2057
+ * "these belong to the lead", it isn't a container frame.
2058
+ *
2059
+ * Earlier attempt to remove sub borders (2026-06-22) was reverted: with no
2060
+ * border the subs visually merged into the lead's frame, making the lead
2061
+ * look like one big card. */
2062
+ .agents-agent-sub-mini {
2063
+ padding: 8px 10px;
2064
+ gap: 6px;
2065
+ background: rgba(255, 255, 255, 0.015);
2066
+ }
2067
+ .agents-agent-sub-mini .agents-agent-name { font-size: 11.5px; }
2068
+ .agents-agent-sub-mini .agents-agent-role { font-size: 10.5px; }
2069
+
2070
+ /* Skin head card: reuses .agents-agent-card framing. Just owns the layout of
2071
+ * the inner sections (header row → chip row → hint line). No own border /
2072
+ * bg — both come from .agents-agent-card. Earlier .agents-agent-group-skin had its
2073
+ * own outer frame that wrapped the entire skin family (head + chips +
2074
+ * providers) into a single huge card; removed 2026-06-22 to align with the
2075
+ * subagent-family pattern (lead card framed alone, subs framed separately
2076
+ * below in the nested column). */
2077
+ .agents-agent-skin-head-card {
2078
+ gap: 10px;
2079
+ }
2080
+ .agents-skin-chip-row {
2081
+ display: flex;
2082
+ flex-wrap: wrap;
2083
+ gap: 6px;
2084
+ }
2085
+ .agents-skin-chip {
2086
+ display: inline-flex;
2087
+ align-items: center;
2088
+ gap: 6px;
2089
+ padding: 4px 8px 4px 4px;
2090
+ background: transparent;
2091
+ /* Inactive: very subtle hairline so the chip reads as a flat button, not
2092
+ * a framed pill. Only the .active chip gets a clear lime border so the
2093
+ * selected state is the only one that "frames". */
2094
+ border: 1px solid rgba(255, 255, 255, 0.06);
2095
+ border-radius: 999px;
2096
+ color: var(--color-text-secondary);
2097
+ font-size: 11px;
2098
+ cursor: pointer;
2099
+ transition: background 0.12s, border-color 0.12s, color 0.12s;
2100
+ }
2101
+ .agents-skin-chip:hover {
2102
+ background: var(--color-background-elevated-hover, rgba(255, 255, 255, 0.05));
2103
+ border-color: rgba(255, 255, 255, 0.12);
2104
+ color: var(--color-text-primary);
2105
+ }
2106
+ .agents-skin-chip.active {
2107
+ border-color: var(--color-brand-primary);
2108
+ color: var(--color-brand-primary);
2109
+ background: rgba(212, 255, 72, 0.12);
2110
+ font-weight: 600;
2111
+ }
2112
+ .agents-skin-chip.active .agents-skin-chip-name { color: var(--color-brand-primary); }
2113
+ .agents-skin-chip.placeholder { opacity: 0.5; }
2114
+ .agents-skin-chip-name {
2115
+ font-weight: 600;
2116
+ white-space: nowrap;
2117
+ }
2118
+
2119
+ /* ─── Reel Player in Play workspace ─── */
2120
+ .preview-mode--reel {
2121
+ position: relative;
2122
+ }
2123
+ .preview-iframe--reel {
2124
+ position: absolute;
2125
+ inset: 0;
2126
+ width: 100%;
2127
+ height: 100%;
2128
+ border: 0;
2129
+ background: #000;
2130
+ }