@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,1672 @@
1
+ .topbar {
2
+ background: var(--color-background-elevated);
3
+ border-bottom: 1px solid var(--color-border-default);
4
+ display: grid;
5
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
6
+ align-items: center;
7
+ font-size: 12px;
8
+ height: 36px;
9
+ flex-shrink: 0;
10
+ position: relative;
11
+ min-width: 0;
12
+ }
13
+ .tb-left { display: flex; align-items: center; gap: 0; min-width: 0; max-width: 100%; overflow: hidden; height: 100%; }
14
+ .tb-session-switcher { flex: 0 1 140px; min-width: 0; max-width: 100%; overflow: hidden; }
15
+ .tb-dots-cluster { display: flex; align-items: center; gap: 12px; padding: 0 24px; height: 100%; flex-shrink: 0; }
16
+ .tb-left .title {
17
+ display: inline-flex; align-items: baseline; flex-wrap: nowrap; min-width: 0;
18
+ overflow: hidden; white-space: nowrap;
19
+ }
20
+ .tb-left .title-head, .tb-left .title-tail, .tb-left .title-sep { flex-shrink: 0; }
21
+ /* Defensive caps for ridiculously long project / branch names (e.g.
22
+ `feature/long-living-experiment-with-multiple-iterations`): head + tail
23
+ ellipsis past ~18ch / ~14ch so they don't push the rest of the topbar off
24
+ screen. Hover title attribute still shows the full string. */
25
+ .tb-left .title-head { max-width: 18ch; overflow: hidden; text-overflow: ellipsis; }
26
+ .tb-left .title-tail { max-width: 14ch; overflow: hidden; text-overflow: ellipsis; }
27
+ .tb-left .title-mid { overflow: hidden; text-overflow: ellipsis; min-width: 0; flex-shrink: 1; }
28
+ .tb-left .title-tail { color: var(--color-text-primary); }
29
+ /* Two responsive breakpoints. The hover tooltip on `.title` shows the full
30
+ string at every width, so visible text only needs to convey "where am I". */
31
+ @media (max-width: 900px) {
32
+ /* drop the middle path — keep "forgeax · main" */
33
+ .tb-left .title-mid, .tb-left .title-sep:first-of-type { display: none; }
34
+ }
35
+ @media (max-width: 640px) {
36
+ /* drop the project name entirely — keep just branch tail */
37
+ .tb-left .title-head, .tb-left .title-sep { display: none; }
38
+ }
39
+ .tb-left .dot {
40
+ width: 12px;
41
+ height: 12px;
42
+ border-radius: 50%;
43
+ background: var(--color-background-floating);
44
+ flex-shrink: 0;
45
+ /* P4.65 — subtle 3D bevel + outer ring on the three macOS-style traffic
46
+ dots. Inset highlight (top) + inset shadow (bottom) gives them a glossy
47
+ pearl feel; `outline` paints a 1px hairline ring 0.5px outside the
48
+ circumference so adjacent dots read as discrete buttons rather than a
49
+ run of flat blobs. No tsx change — purely visual layer on top of the
50
+ existing 12px circles already rendered by TopBar (".tb-left .dot.r/y/g"
51
+ spans). */
52
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.22),
53
+ inset 0 -1px 1px rgba(0, 0, 0, 0.35);
54
+ outline: 1px solid rgba(255, 255, 255, 0.06);
55
+ outline-offset: -0.5px;
56
+ transition: box-shadow 0.15s, outline-color 0.15s;
57
+ }
58
+ .tb-left .dot.r { background: #ff5f57; }
59
+ .tb-left .dot.y { background: #febc2e; }
60
+ .tb-left .dot.g {
61
+ background: #28c840;
62
+ /* P4.65 — outer halo on the green "live" dot only. Two-stop emerald glow
63
+ reads as "session is running" from across the room without needing a
64
+ tooltip. Stays small (4px outer + 2px inner) so it doesn't bleed past
65
+ the 12px adjacent yellow dot. */
66
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.28),
67
+ inset 0 -1px 1px rgba(0, 0, 0, 0.35),
68
+ 0 0 0 2px rgba(40, 200, 64, 0.18);
69
+ }
70
+ .tb-left .title { color: var(--color-text-secondary); margin-left: 4px; }
71
+
72
+ .tb-center {
73
+ display: flex; align-items: center; gap: 4px;
74
+ background: var(--color-background-floating);
75
+ border-radius: var(--radius-pill);
76
+ padding: 4px;
77
+ /* Centered on the full topbar width — independent of sidebar/chatpanel widths. */
78
+ position: absolute;
79
+ left: 50%;
80
+ top: 50%;
81
+ transform: translate(-50%, -50%);
82
+ /* Raise above tb-left / tb-right grid children so their buttons don't
83
+ intercept pointer events on the workspace tabs. */
84
+ z-index: 1;
85
+ max-width: calc(100% - 16px);
86
+ overflow: hidden;
87
+ }
88
+ /* Sliding pill indicator — absolutely positioned inside .tb-center,
89
+ sits behind the tab buttons (z-index 0) and slides via translateX. */
90
+ .mode-tab-slider {
91
+ position: absolute;
92
+ top: 4px;
93
+ left: 0;
94
+ height: calc(100% - 8px);
95
+ background: var(--color-brand-primary);
96
+ border-radius: var(--radius-pill);
97
+ box-shadow: 0 2px 3px rgba(0, 0, 0, 0.20);
98
+ pointer-events: none;
99
+ z-index: 0;
100
+ /* No transition on mount — avoids sliding from (0,0) to active tab position. */
101
+ }
102
+ .mode-tab-slider.ready {
103
+ transition:
104
+ transform var(--motion-duration-fast) var(--motion-ease-spring),
105
+ width var(--motion-duration-fast) var(--motion-ease-spring);
106
+ }
107
+
108
+ .mode-tab {
109
+ position: relative;
110
+ z-index: 1; /* float above the slider */
111
+ display: inline-flex; align-items: center; gap: 6px;
112
+ padding: 4px 8px;
113
+ border: none; background: transparent; cursor: pointer;
114
+ color: var(--color-text-tertiary);
115
+ border-radius: var(--radius-pill);
116
+ font-size: 12px;
117
+ font-weight: 500;
118
+ transition: color var(--motion-duration-fast) var(--motion-ease-spring);
119
+ }
120
+ .mode-tab:hover { color: var(--color-text-primary); }
121
+ .mode-tab.active {
122
+ color: var(--color-text-on-bright-primary);
123
+ font-weight: 500;
124
+ }
125
+ .mode-tab.active:hover { color: var(--color-text-on-bright-primary); }
126
+ .mode-tab .kb {
127
+ font-family: var(--font-mono);
128
+ font-size: 10px;
129
+ opacity: 0.6;
130
+ margin-left: 2px;
131
+ }
132
+ .mode-tab.active .kb { opacity: 0.55; color: var(--color-text-on-bright-primary); }
133
+
134
+ /* Right-click context menu for workspace tabs */
135
+ .ws-ctx-menu {
136
+ z-index: var(--z-menu);
137
+ min-width: 140px;
138
+ background: var(--color-background-elevated, #1e1e24);
139
+ border: 1px solid var(--color-border-default, rgba(255,255,255,0.1));
140
+ border-radius: var(--radius-md, 8px);
141
+ padding: 4px;
142
+ box-shadow: 0 8px 24px rgba(0,0,0,0.45);
143
+ display: flex;
144
+ flex-direction: column;
145
+ gap: 1px;
146
+ }
147
+ .ws-ctx-item {
148
+ display: flex; align-items: center;
149
+ width: 100%;
150
+ padding: 6px 10px;
151
+ background: transparent;
152
+ border: none;
153
+ border-radius: var(--radius-sm, 4px);
154
+ color: var(--color-text-primary);
155
+ font-size: 12px;
156
+ font-weight: 400;
157
+ text-align: left;
158
+ cursor: pointer;
159
+ transition: background 0.1s;
160
+ }
161
+ .ws-ctx-item:hover { background: rgba(255,255,255,0.08); }
162
+ .ws-ctx-item--send { color: var(--color-text-secondary); }
163
+ .ws-ctx-item--send:hover { color: var(--color-text-primary); background: rgba(255,255,255,0.06); }
164
+ .ws-ctx-item--danger { color: var(--color-status-error, #f87171); }
165
+ .ws-ctx-item--danger:hover { background: rgba(248,113,113,0.12); }
166
+ .ws-ctx-separator {
167
+ height: 1px;
168
+ background: var(--color-border-subtle, rgba(255,255,255,0.07));
169
+ margin: 3px 4px;
170
+ }
171
+
172
+ /* Inline rename input — matches tab typography */
173
+ .ws-rename-input {
174
+ background: transparent;
175
+ border: none;
176
+ outline: none;
177
+ color: inherit;
178
+ font: inherit;
179
+ width: 72px;
180
+ padding: 0;
181
+ min-width: 40px;
182
+ }
183
+
184
+ /* + add workspace button */
185
+ .ws-add-btn {
186
+ display: inline-flex; align-items: center; justify-content: center;
187
+ width: 20px; height: 20px;
188
+ border: none;
189
+ background: rgba(255,255,255,0.08);
190
+ cursor: pointer;
191
+ color: var(--color-text-secondary, #aaa);
192
+ border-radius: var(--radius-sm, 4px);
193
+ padding: 0;
194
+ margin-left: 4px;
195
+ flex-shrink: 0;
196
+ transition: background var(--motion-duration-fast), color var(--motion-duration-fast);
197
+ }
198
+ .ws-add-btn:hover { background: rgba(255,255,255,0.15); color: var(--color-text-primary, #fff); }
199
+
200
+ /* P3.53 — TopBar mode-tab keyboard nav focus ring + ←→ key-cap glyph.
201
+ * `.mode-tab` had no focus-visible style before, so the new tablist nav
202
+ * produced no pixel signal when Tab walked into the row. 2px white
203
+ * outline matches `.ws-icon-btn:focus-visible` (P3.51) so the same family
204
+ * of keyboard cues applies to the Sidebar extension tab strip AND the
205
+ * TopBar mode tab strip. `.tb-center-kbd` mirrors `.ss-header-kbd`
206
+ * (P3.51) and `.ss-footer-kbd` (P3.50) — three identical key-cap chips
207
+ * across Sidebar header / Sidebar footer / TopBar center signal "←→
208
+ * works here" without requiring focus. */
209
+ .mode-tab:focus-visible {
210
+ outline: 2px solid var(--color-border-strong);
211
+ outline-offset: -1px;
212
+ border-radius: var(--radius-pill);
213
+ }
214
+ .tb-center-kbd {
215
+ font-family: var(--font-mono);
216
+ font-size: 9.5px;
217
+ letter-spacing: 0;
218
+ padding: 0 3px;
219
+ margin: 0 4px 0 2px;
220
+ border-radius: 3px;
221
+ background: rgba(255, 255, 255, 0.06);
222
+ border: 1px solid rgba(255, 255, 255, 0.18);
223
+ color: rgba(255, 255, 255, 0.72);
224
+ line-height: 1.5;
225
+ user-select: none;
226
+ }
227
+
228
+ /* P3.2 · TopBar Bus 按钮 plugin count chip — 跟 Sidebar BusHealthChip
229
+ (.bus-chip) 是同色系语言:"bus = 一级公民"。差别仅在尺寸:mode-tab 行高
230
+ 只有 ~20px,所以小一号 + 用 inline padding,不带圆点。 */
231
+ .tb-bus-count {
232
+ display: inline-flex;
233
+ align-items: center;
234
+ justify-content: center;
235
+ min-width: 18px;
236
+ padding: 1px 6px;
237
+ margin-left: 4px;
238
+ border-radius: 999px;
239
+ font-family: var(--font-mono);
240
+ font-size: 10px;
241
+ font-weight: 700;
242
+ font-variant-numeric: tabular-nums;
243
+ line-height: 1.2;
244
+ letter-spacing: 0.02em;
245
+ }
246
+ .tb-bus-count.is-ok {
247
+ background: rgba(46, 204, 113, 0.18);
248
+ color: var(--accent-mint);
249
+ border: 1px solid rgba(46, 204, 113, 0.32);
250
+ }
251
+ .tb-bus-count.is-warn {
252
+ background: rgba(255, 176, 32, 0.18);
253
+ color: var(--color-status-warning-text);
254
+ border: 1px solid rgba(255, 176, 32, 0.36);
255
+ }
256
+ .tb-bus-count.is-down {
257
+ background: rgba(255, 95, 87, 0.22);
258
+ color: var(--accent-error);
259
+ border: 1px solid rgba(255, 95, 87, 0.4);
260
+ }
261
+ /* When the Bus tab is active the count sits on the primary-color fill,
262
+ so we soften it to neutral dark so contrast holds. */
263
+ .mode-tab.active .tb-bus-count.is-ok {
264
+ background: rgba(10, 10, 10, 0.18);
265
+ color: var(--prim-color-neutral-950);
266
+ border-color: rgba(10, 10, 10, 0.28);
267
+ }
268
+ .mode-tab.active .tb-bus-count.is-warn {
269
+ background: rgba(180, 96, 0, 0.32);
270
+ color: #2a1500;
271
+ border-color: rgba(180, 96, 0, 0.5);
272
+ }
273
+
274
+ /* Preview WS client count chip. Sky-blue palette (rgb(108,196,255) family) reuses the
275
+ blue we've already established for cli-provider plugins (P2.7d
276
+ .cb-cli-bus-pill / Sidebar .ss-kind-chip.k-cli-provider), but here it
277
+ means "WS observers". .is-down keeps the same red palette as .tb-bus-count.is-down
278
+ for visual consistency on server failure. */
279
+ .tb-preview-count {
280
+ display: inline-flex;
281
+ align-items: center;
282
+ justify-content: center;
283
+ min-width: 18px;
284
+ padding: 1px 6px;
285
+ margin-left: 4px;
286
+ border-radius: 999px;
287
+ font-family: var(--font-mono);
288
+ font-size: 10px;
289
+ font-weight: 700;
290
+ font-variant-numeric: tabular-nums;
291
+ line-height: 1.2;
292
+ letter-spacing: 0.02em;
293
+ background: rgba(108, 196, 255, 0.16);
294
+ color: var(--color-role-art);
295
+ border: 1px solid rgba(108, 196, 255, 0.34);
296
+ }
297
+ .tb-preview-count.is-down {
298
+ background: rgba(255, 95, 87, 0.22);
299
+ color: var(--accent-error);
300
+ border-color: rgba(255, 95, 87, 0.4);
301
+ }
302
+ /* When Preview tab is active the primary-color (amber) fill replaces the
303
+ chip background, so flip to a dark contrast variant like the other two. */
304
+ .mode-tab.active .tb-preview-count {
305
+ background: rgba(10, 10, 10, 0.18);
306
+ color: var(--prim-color-neutral-950);
307
+ border-color: rgba(10, 10, 10, 0.28);
308
+ }
309
+
310
+ /* ── shared vertical divider used in both tb-left and tb-right ── */
311
+ .tb-divider {
312
+ width: 1px;
313
+ height: 13.5px;
314
+ background: var(--color-border-default);
315
+ flex-shrink: 0;
316
+ align-self: center;
317
+ margin: 0 8px;
318
+ }
319
+
320
+ /* ── simple icon-only button for tb-right ── */
321
+ .tb-icon-btn {
322
+ width: 28px; height: 28px;
323
+ display: inline-flex; align-items: center; justify-content: center;
324
+ background: transparent;
325
+ border: none;
326
+ border-radius: 4px;
327
+ color: var(--color-text-secondary);
328
+ cursor: pointer;
329
+ padding: 0;
330
+ flex-shrink: 0;
331
+ transition: background var(--motion-duration-instant) var(--motion-ease-standard), color var(--motion-duration-instant) var(--motion-ease-standard);
332
+ }
333
+ .tb-icon-btn:hover { background: var(--color-interaction-hover); color: var(--color-text-primary); }
334
+ .tb-icon-btn.active { color: var(--color-text-primary); }
335
+
336
+ /* ── 反馈入口(喇叭 icon + 文字),对齐 tb-game-btn 范式(需求 §1:图标+文字) ── */
337
+ .tb-feedback-btn {
338
+ display: inline-flex; align-items: center; gap: 6px;
339
+ height: 28px; padding: 0 8px;
340
+ background: transparent;
341
+ border: none;
342
+ border-radius: 4px;
343
+ color: var(--color-text-secondary);
344
+ font-size: 12px; cursor: pointer;
345
+ flex-shrink: 0;
346
+ transition: background var(--motion-duration-instant) var(--motion-ease-standard), color var(--motion-duration-instant) var(--motion-ease-standard);
347
+ }
348
+ .tb-feedback-btn:hover { background: var(--color-interaction-hover); color: var(--color-text-primary); }
349
+
350
+ /* ── publish CTA (icon only, white background) ── */
351
+ .tb-publish-btn {
352
+ display: inline-flex; align-items: center; justify-content: center;
353
+ width: 56px; height: 24px;
354
+ background: var(--prim-color-neutral-0, #fff);
355
+ border: none;
356
+ border-radius: 4px;
357
+ color: var(--prim-color-neutral-950, #0a0a0a);
358
+ cursor: pointer;
359
+ flex-shrink: 0;
360
+ transition: background var(--motion-duration-instant) var(--motion-ease-standard);
361
+ }
362
+ .tb-publish-btn:hover { background: var(--prim-color-neutral-100, #f5f5f5); }
363
+
364
+ .tb-right { display: flex; align-items: center; gap: 0; justify-self: end; min-width: 0; flex-wrap: nowrap; padding-right: 12px; }
365
+ .pill {
366
+ padding: 3px 10px;
367
+ background: var(--color-background-floating);
368
+ border-radius: var(--radius-pill);
369
+ color: var(--text-secondary);
370
+ font-size: 12px;
371
+ border: none;
372
+ cursor: pointer;
373
+ white-space: nowrap;
374
+ flex-shrink: 0;
375
+ }
376
+ .pill:hover { color: var(--text-primary); }
377
+ .pill.publish {
378
+ background: linear-gradient(90deg, var(--primary) 0%, var(--secondary) 100%);
379
+ color: var(--prim-color-neutral-950);
380
+ font-weight: 700;
381
+ }
382
+ /* Pill content can be split into icon + label so we can collapse to
383
+ icon-only at narrow widths instead of hiding the whole pill. */
384
+ .pill { display: inline-flex; align-items: center; gap: 5px; }
385
+ .pill-icon { font-size: 12px; line-height: 1; }
386
+ .pill-label { display: inline; }
387
+ /* P4.67 — extend the P4.65/P4.66 pearl/bevel language from `.tb-left .dot`
388
+ and `.tb-center` mode-tab strip to the right-side status LED chips
389
+ (.tb-bus / .tb-model / .tb-providers / .tb-skill / .tb-tool / .tb-agent).
390
+ Two-stop inset shadow (top white 4% highlight + bottom black 28% shadow)
391
+ gives every pill a recessed "physical chip" feel that visually rhymes
392
+ with the segmented mode-tab groove on its left, so the whole TopBar
393
+ reads as a single tactile control strip rather than a flat ribbon.
394
+ `.publish` is excluded — it keeps the lime gradient call-to-action
395
+ look. `:hover` slightly lifts the top highlight + softens the bottom
396
+ shadow → ledger-style "chip lifts under finger" microinteraction that
397
+ matches the existing -0.5px translateY on tone-aware hover states. */
398
+ .tb-right .pill:not(.publish) {
399
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04),
400
+ inset 0 -1px 1px rgba(0, 0, 0, 0.28);
401
+ transition: box-shadow 0.15s ease;
402
+ }
403
+ .tb-right .pill:not(.publish):hover {
404
+ box-shadow: inset 0 1px 0 var(--color-divider-default),
405
+ inset 0 -1px 1px rgba(0, 0, 0, 0.20);
406
+ }
407
+ /* When the topbar narrows: hide the verbose labels but keep the brand-coded
408
+ icons (🧠/⚡/🚀) visible & clickable. Publish still keeps its label until a
409
+ second breakpoint. */
410
+ @media (max-width: 1000px) {
411
+ .tb-right .pill:not(.publish) .pill-label { display: none; }
412
+ .tb-right .pill:not(.publish) { padding: 3px 8px; }
413
+ }
414
+ @media (max-width: 720px) {
415
+ .pill.publish .pill-label { display: none; }
416
+ .pill.publish { padding: 3px 8px; }
417
+ .tb-left .title { font-size: 11px; }
418
+ /* All three pills are icon-only now (≈24px wide). 8px gap makes the trio
419
+ look glued together at narrow widths — bump to 12px for breathing room,
420
+ mirrors the 4px-of-icon-width visual rhythm. */
421
+ .tb-right { gap: 12px; }
422
+ }
423
+
424
+ @media (max-width: 640px) {
425
+ .tb-session-switcher { flex-basis: clamp(64px, 20vw, 140px); }
426
+ .tb-game-btn { width: 100%; }
427
+ .tb-game-label { display: none; }
428
+ }
429
+
430
+ /* ── New menu (Plus dropdown in TopBar left) ────────────────────────────── */
431
+ .tb-new-menu { position: relative; padding: 0 4px; display: flex; align-items: center; height: 100%; flex-shrink: 0; }
432
+ .tb-new-btn {
433
+ width: 28px; height: 28px;
434
+ display: inline-flex; align-items: center; justify-content: center;
435
+ background: transparent;
436
+ border: none;
437
+ border-radius: 4px;
438
+ color: var(--color-text-secondary);
439
+ cursor: pointer;
440
+ padding: 0;
441
+ transition: background var(--motion-duration-instant) var(--motion-ease-standard), color var(--motion-duration-instant) var(--motion-ease-standard);
442
+ }
443
+ .tb-new-btn:hover { background: var(--color-interaction-hover); color: var(--color-text-primary); }
444
+ .tb-new-dropdown {
445
+ position: absolute; top: 28px; left: 0; z-index: 100;
446
+ min-width: 220px;
447
+ background: var(--bg-2);
448
+ border: 1px solid var(--color-border-default);
449
+ border-radius: 6px;
450
+ box-shadow: 0 8px 24px rgba(0,0,0,0.5);
451
+ padding: 4px;
452
+ display: flex; flex-direction: column;
453
+ }
454
+ .tb-new-item {
455
+ display: flex; align-items: center; gap: 10px;
456
+ padding: 8px 10px; border-radius: 4px;
457
+ background: transparent; border: none; cursor: pointer;
458
+ color: var(--text-secondary, rgba(255,255,255,0.7));
459
+ text-align: left;
460
+ }
461
+ .tb-new-item:hover { background: var(--color-interaction-hover); color: var(--color-text-primary); }
462
+ .tb-new-text { display: flex; flex-direction: column; gap: 1px; }
463
+ .tb-new-title { font-size: 12px; font-weight: 500; }
464
+ .tb-new-sub { font-size: 10px; color: var(--text-muted, rgba(255,255,255,0.4)); }
465
+
466
+ /* ── New game modal ─────────────────────────────────────────────────────── */
467
+ .tb-modal-overlay {
468
+ position: fixed; inset: 0; z-index: var(--z-popover);
469
+ background: rgba(0,0,0,0.55);
470
+ display: flex; align-items: center; justify-content: center;
471
+ }
472
+ .tb-modal {
473
+ background: var(--bg-2);
474
+ border: 1px solid var(--color-border-default);
475
+ border-radius: 8px;
476
+ padding: 18px 18px 14px;
477
+ width: 360px;
478
+ display: flex; flex-direction: column; gap: 8px;
479
+ }
480
+ .tb-modal-title { font-size: 14px; font-weight: 600; color: var(--text-primary); margin-bottom: 4px; }
481
+ .tb-modal-label { font-size: 11px; color: var(--text-muted, rgba(255,255,255,0.5)); margin-top: 4px; }
482
+ .tb-modal-input, .tb-modal-textarea {
483
+ background: rgba(0,0,0,0.3);
484
+ border: 1px solid rgba(255,255,255,0.1);
485
+ color: var(--text-primary);
486
+ font-size: 12px;
487
+ padding: 6px 8px;
488
+ border-radius: 4px;
489
+ outline: none;
490
+ font-family: inherit;
491
+ }
492
+ .tb-modal-input:focus, .tb-modal-textarea:focus { border-color: var(--primary); }
493
+ .tb-modal-textarea { resize: vertical; }
494
+ .tb-modal-select {
495
+ background: rgba(0,0,0,0.3);
496
+ border: 1px solid rgba(255,255,255,0.1);
497
+ color: var(--text-primary);
498
+ font-size: 12px;
499
+ padding: 6px 8px;
500
+ border-radius: 4px;
501
+ outline: none;
502
+ font-family: inherit;
503
+ }
504
+ .tb-modal-select:focus { border-color: var(--primary); }
505
+ .tb-modal-help {
506
+ font-size: 11px;
507
+ color: var(--text-muted, rgba(255,255,255,0.4));
508
+ padding: 2px 0;
509
+ }
510
+ .tb-modal-error {
511
+ font-size: 11px;
512
+ color: var(--accent-error);
513
+ background: rgba(255,107,107,0.08);
514
+ padding: 6px 8px;
515
+ border-radius: 4px;
516
+ }
517
+ .tb-modal-actions {
518
+ display: flex; gap: 8px; justify-content: flex-end;
519
+ margin-top: 8px;
520
+ }
521
+ .tb-modal-btn {
522
+ background: rgba(255,255,255,0.06);
523
+ border: 1px solid rgba(255,255,255,0.08);
524
+ color: var(--text-secondary, rgba(255,255,255,0.7));
525
+ padding: 6px 14px;
526
+ border-radius: 4px;
527
+ cursor: pointer;
528
+ font-size: 12px;
529
+ }
530
+ .tb-modal-btn:hover:not(:disabled):not(.primary) {
531
+ background: var(--color-interaction-selected-neutral);
532
+ color: var(--color-text-primary);
533
+ }
534
+ .tb-modal-btn.primary {
535
+ background: var(--primary);
536
+ color: var(--color-text-on-bright-primary, var(--prim-color-neutral-950));
537
+ border-color: var(--primary);
538
+ font-weight: 600;
539
+ }
540
+ .tb-modal-btn.primary:hover:not(:disabled),
541
+ .tb-modal-btn.primary:active:not(:disabled) {
542
+ background: var(--color-brand-primary-hover, var(--primary));
543
+ color: var(--color-text-on-bright-primary, var(--prim-color-neutral-950));
544
+ border-color: var(--primary);
545
+ }
546
+ .tb-modal-btn:disabled { opacity: 0.5; cursor: not-allowed; }
547
+
548
+ /* ── Game switcher dropdown ────────────────────────────────────────────── */
549
+ /* z-index lifts the entire switcher's stacking context above Sidebar/extension
550
+ panels that follow in DOM order — otherwise the dropdown's internal z-index:100
551
+ is trapped inside this context and sibling .ss-active-label etc. paint on top. */
552
+ .tb-game-switcher { position: relative; z-index: 50; }
553
+ .tb-game-switcher:has(.tb-game-dropdown) { z-index: 100; }
554
+ .tb-new-menu { z-index: 50; position: relative; }
555
+ .tb-new-menu:has(.tb-new-dropdown) { z-index: 100; }
556
+ .tb-session-switcher { z-index: 50; }
557
+ .tb-session-switcher:has(.tb-game-dropdown) { z-index: 100; }
558
+ .tb-game-btn {
559
+ display: inline-flex; align-items: center; gap: 8px;
560
+ width: 140px; max-width: 100%; min-width: 0; height: 28px; padding: 0 8px;
561
+ background: transparent;
562
+ border: none;
563
+ border-radius: 4px;
564
+ color: var(--color-text-secondary);
565
+ font-size: 12px; cursor: pointer;
566
+ text-align: left;
567
+ overflow: hidden;
568
+ flex-shrink: 0;
569
+ }
570
+ .tb-game-btn:hover { background: var(--color-interaction-hover); color: var(--color-text-primary); }
571
+ .tb-game-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
572
+ .tb-game-dropdown {
573
+ position: absolute; top: 28px; left: 0; z-index: 100;
574
+ min-width: 260px; max-width: 360px;
575
+ /* 长 session 列表(>20 条)会顶到视口下沿。限高 + 内滚,"+ 新建 session"
576
+ 在 TSX 里加了 position:sticky 留在顶上不被滚走。 */
577
+ max-height: min(60vh, 480px);
578
+ overflow-y: auto;
579
+ overscroll-behavior: contain;
580
+ background: var(--bg-2);
581
+ border: 1px solid var(--color-border-default);
582
+ border-radius: 6px;
583
+ box-shadow: 0 8px 24px rgba(0,0,0,0.5);
584
+ padding: 4px;
585
+ display: flex; flex-direction: column; gap: 1px;
586
+ }
587
+ /* When parent has overflow:hidden (e.g. .tb-left), absolute children get
588
+ clipped. Fixed positioning anchors to the viewport — coordinates computed
589
+ from the button's getBoundingClientRect on click. */
590
+ .tb-game-dropdown--fixed,
591
+ .tb-new-dropdown--fixed {
592
+ position: fixed; top: auto; left: auto; z-index: var(--z-popover);
593
+ }
594
+ /* Inside a Radix Popover the content is portaled + popper-positioned, so the
595
+ menu drops its own absolute positioning and keeps only box styling. */
596
+ .tb-game-dropdown--popover,
597
+ .tb-new-dropdown--popover {
598
+ position: static; top: auto; left: auto; z-index: auto;
599
+ }
600
+ .tb-game-empty { font-size: 11px; color: var(--text-muted, rgba(255,255,255,0.4)); padding: 8px 10px; }
601
+ .tb-game-row {
602
+ display: flex; align-items: center; gap: 4px;
603
+ border-radius: 4px;
604
+ background: transparent;
605
+ }
606
+ .tb-game-row.active { background: rgba(212,255,72,0.08); }
607
+ .tb-game-row.reset { background: rgba(255,255,255,0.03); margin-top: 2px; padding: 4px 10px; cursor: pointer; border: none; color: var(--text-muted, rgba(255,255,255,0.45)); font-size: 10px; font-family: inherit; }
608
+ .tb-game-row.reset:hover { color: var(--color-text-secondary); background: var(--color-interaction-hover); }
609
+ .tb-game-pick {
610
+ flex: 1; min-width: 0;
611
+ background: transparent; border: none; cursor: pointer;
612
+ padding: 6px 10px; text-align: left;
613
+ display: flex; flex-direction: column; gap: 1px;
614
+ color: var(--text-secondary, rgba(255,255,255,0.7));
615
+ }
616
+ .tb-game-pick:hover { background: var(--color-interaction-hover); color: var(--color-text-primary); }
617
+ .tb-game-row.active .tb-game-pick { color: var(--primary); }
618
+ .tb-game-name { font-size: 12px; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
619
+ .tb-game-meta { font-size: 10px; color: var(--text-muted, rgba(255,255,255,0.4)); }
620
+ .tb-game-del {
621
+ width: 24px; height: 24px;
622
+ display: inline-flex; align-items: center; justify-content: center;
623
+ background: transparent; border: none; cursor: pointer;
624
+ color: var(--text-muted, rgba(255,255,255,0.4));
625
+ border-radius: 4px;
626
+ }
627
+ .tb-game-del:hover { color: var(--color-accent-error-default); background: var(--color-interaction-error); }
628
+ .tb-game-add-session:hover { color: var(--primary); background: rgba(212,255,72,0.08); }
629
+
630
+ /* prefix tag on switcher buttons to distinguish ProjectSwitcher / GameSwitcher / SessionSwitcher */
631
+ .tb-game-tag {
632
+ font-size: 9px;
633
+ color: var(--text-muted, rgba(255,255,255,0.4));
634
+ background: rgba(255,255,255,0.06);
635
+ border-radius: 3px;
636
+ padding: 1px 3px;
637
+ font-weight: 500;
638
+ flex-shrink: 0;
639
+ line-height: 1.1;
640
+ }
641
+
642
+ .title-legacy { display: none; }
643
+
644
+ /* ── settings (⚙️) gear button + drawer ──────────────────────────────── */
645
+ .pill-icon-btn {
646
+ width: 28px; height: 28px;
647
+ display: inline-flex; align-items: center; justify-content: center;
648
+ background: rgba(255,255,255,0.06);
649
+ border: 1px solid rgba(255,255,255,0.08);
650
+ border-radius: 50%;
651
+ color: var(--text-secondary, rgba(255,255,255,0.65));
652
+ cursor: pointer;
653
+ padding: 0;
654
+ }
655
+ .pill-icon-btn:hover { background: var(--color-interaction-selected-brand); color: var(--color-brand-primary); }
656
+
657
+ .settings-overlay {
658
+ position: fixed; inset: 0; z-index: var(--z-app-modal);
659
+ background: rgba(0,0,0,0.55);
660
+ display: flex; justify-content: flex-end;
661
+ }
662
+ .settings-drawer {
663
+ width: 480px; max-width: 90vw; height: 100%;
664
+ background: var(--bg-2);
665
+ border-left: 1px solid var(--color-border-default);
666
+ display: flex; flex-direction: column;
667
+ position: relative;
668
+ animation: slide-in 0.16s ease;
669
+ }
670
+ @keyframes slide-in { from { transform: translateX(100%); } to { transform: translateX(0); } }
671
+ .settings-header {
672
+ padding: 16px 18px;
673
+ border-bottom: 1px solid var(--color-border-default);
674
+ display: flex; align-items: center; justify-content: space-between;
675
+ }
676
+ .settings-header h2 { margin: 0; font-size: 15px; font-weight: 600; color: var(--text-primary); }
677
+ .settings-close {
678
+ background: transparent; border: none; cursor: pointer;
679
+ color: var(--text-muted, rgba(255,255,255,0.5));
680
+ padding: 4px;
681
+ }
682
+ .settings-close:hover { color: var(--text-primary); }
683
+ .settings-loading { padding: 30px; text-align: center; color: var(--text-muted); }
684
+ .settings-body { flex: 1; overflow-y: auto; padding: 18px; }
685
+
686
+ .settings-section { margin-bottom: 24px; }
687
+ .settings-section-head { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
688
+ .settings-section-icon { color: var(--primary); }
689
+ .settings-section-title { font-size: 12px; font-weight: 600; color: var(--text-primary); text-transform: uppercase; letter-spacing: 0.04em; }
690
+ .settings-section-hint { font-size: 10px; color: var(--text-muted, rgba(255,255,255,0.4)); margin-bottom: 10px; }
691
+ .settings-section-body { display: flex; flex-direction: column; gap: 6px; }
692
+
693
+ .settings-row { display: flex; align-items: center; gap: 8px; font-size: 11px; }
694
+ .settings-row.edit { flex-wrap: wrap; }
695
+ .settings-label {
696
+ width: 180px;
697
+ flex-shrink: 0;
698
+ color: var(--text-secondary, rgba(255,255,255,0.65));
699
+ font-family: var(--font-mono);
700
+ font-size: 10px;
701
+ line-height: 1.2;
702
+ overflow-wrap: anywhere;
703
+ }
704
+ .settings-label--long { font-size: 8px; white-space: nowrap; }
705
+ .settings-current { flex: 1; font-family: var(--font-mono); color: var(--text-primary); font-size: 11px; }
706
+ .settings-empty { color: var(--text-muted, rgba(255,255,255,0.35)); font-style: italic; }
707
+ .settings-edit-btn, .settings-save-btn, .settings-cancel-btn {
708
+ background: rgba(255,255,255,0.06);
709
+ border: 1px solid rgba(255,255,255,0.08);
710
+ color: var(--text-secondary, rgba(255,255,255,0.7));
711
+ cursor: pointer; padding: 3px 8px; border-radius: 3px; font-size: 10px;
712
+ font-family: inherit;
713
+ }
714
+ .settings-edit-btn:hover { background: var(--color-interaction-selected-neutral); color: var(--color-text-primary); }
715
+ .settings-save-btn {
716
+ background: var(--primary);
717
+ color: var(--color-text-on-bright-primary, var(--prim-color-neutral-950));
718
+ border-color: var(--primary);
719
+ font-weight: 600;
720
+ }
721
+ .settings-save-btn:hover:not(:disabled),
722
+ .settings-save-btn:active:not(:disabled) {
723
+ background: var(--color-brand-primary-hover);
724
+ color: var(--color-text-on-bright-primary, var(--prim-color-neutral-950));
725
+ }
726
+ .settings-save-btn:disabled, .settings-edit-btn:disabled, .settings-cancel-btn:disabled { opacity: 0.4; cursor: not-allowed; }
727
+ .settings-input {
728
+ flex: 1; min-width: 200px;
729
+ background: rgba(0,0,0,0.3); border: 1px solid rgba(255,255,255,0.1);
730
+ color: var(--text-primary); font-family: var(--font-mono); font-size: 11px;
731
+ padding: 4px 8px; border-radius: 3px;
732
+ outline: none;
733
+ }
734
+ .settings-input:focus { border-color: var(--primary); }
735
+ .settings-input::placeholder { color: var(--text-muted, rgba(255,255,255,0.35)); font-family: var(--font-mono); }
736
+ .settings-input-wrap {
737
+ flex: 1; min-width: 200px;
738
+ position: relative; display: flex; align-items: center;
739
+ }
740
+ .settings-input-wrap > .settings-input { flex: 1; min-width: 0; width: 100%; }
741
+ .settings-input-wrap.with-eye > .settings-input { padding-right: 28px; }
742
+ .settings-eye-btn {
743
+ position: absolute; right: 4px; top: 50%; transform: translateY(-50%);
744
+ background: transparent; border: none;
745
+ color: var(--text-muted, rgba(255,255,255,0.45));
746
+ cursor: pointer; padding: 4px; line-height: 0; border-radius: 3px;
747
+ display: inline-flex; align-items: center; justify-content: center;
748
+ }
749
+ .settings-eye-btn:hover { color: var(--color-text-primary); background: var(--color-interaction-hover); }
750
+ .settings-eye-btn:disabled { color: var(--color-icon-disabled); cursor: not-allowed; }
751
+ .settings-select {
752
+ flex: 1; background: rgba(0,0,0,0.4); border: 1px solid rgba(255,255,255,0.1);
753
+ color: var(--text-primary); font-size: 11px;
754
+ padding: 4px 8px; border-radius: 3px; cursor: pointer;
755
+ }
756
+ /* provider 行里的权限档位下拉:`.settings-select` 自带 flex:1(为 Models 那种独占
757
+ 一行的场景设计),放进 settings-provider-head 会把「设为使用」挤出去 → 这里收成
758
+ 内容宽度,并给个上限防长文案(如「跟随默认(全权限(危险))」)撑破行。 */
759
+ .settings-perm-select { flex: 0 0 auto; max-width: 190px; margin-left: auto; }
760
+
761
+ .settings-help { font-size: 10px; color: var(--text-muted, rgba(255,255,255,0.45)); margin-top: 6px; line-height: 1.5; }
762
+ .settings-help code { background: rgba(255,255,255,0.06); padding: 1px 4px; border-radius: 2px; font-size: 10px; color: var(--color-kind-cli-provider); }
763
+ /* Links otherwise inherit browser-default blue — invisible on the dark panel. */
764
+ .settings-help a {
765
+ color: var(--accent-mint, #7ee7c4);
766
+ text-decoration: underline;
767
+ text-underline-offset: 2px;
768
+ }
769
+ .settings-help a:hover { color: var(--text-primary, #fff); }
770
+
771
+ /* CLI Test round-trip result — readable status color (the shared .settings-help
772
+ dim gray was unreadable for a pass/fail signal). Green = ok, red = failed. */
773
+ .settings-test-result { display: inline; margin-left: 8px; font-size: 10px; line-height: 1.5; font-weight: 600; }
774
+ .settings-test-result.is-ok { color: var(--accent-green); }
775
+ .settings-test-result.is-err { color: var(--accent-error); }
776
+
777
+ .ok-pill { background: rgba(74,222,128,0.12); color: var(--accent-green); padding: 1px 6px; border-radius: 3px; font-size: 10px; margin-left: 4px; }
778
+ .err-pill { background: rgba(255,107,107,0.12); color: var(--accent-error); padding: 1px 6px; border-radius: 3px; font-size: 10px; margin-left: 4px; }
779
+
780
+ .settings-provider-row {
781
+ display: flex; flex-direction: column; gap: 4px;
782
+ padding: 8px 10px;
783
+ border: 1px solid rgba(255,255,255,0.06);
784
+ border-radius: 6px;
785
+ background: rgba(255,255,255,0.02);
786
+ margin-bottom: 6px;
787
+ }
788
+ /* Dim capability chips + body of DOWN providers so they read as "this is what
789
+ * the backend would offer when healthy" not "this is what's available now". */
790
+ .settings-provider-row.is-down .settings-provider-caps,
791
+ .settings-provider-row.is-down .settings-provider-test {
792
+ opacity: 0.55;
793
+ }
794
+ .settings-provider-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
795
+ .settings-provider-id {
796
+ font-size: 11px; padding: 1px 6px; border-radius: 3px;
797
+ background: rgba(255,255,255,0.05);
798
+ font-family: var(--font-mono);
799
+ color: var(--text-default, rgba(255,255,255,0.85));
800
+ }
801
+ .settings-provider-name { font-size: 12px; color: var(--text-muted, rgba(255,255,255,0.55)); }
802
+ .settings-provider-caps { display: flex; gap: 4px; flex-wrap: wrap; }
803
+ .settings-provider-test { display: flex; align-items: center; margin-top: 2px; }
804
+ .settings-cap-chip {
805
+ font-size: 10px; padding: 1px 6px; border-radius: 3px;
806
+ background: rgba(126,231,196,0.08);
807
+ color: var(--accent-mint);
808
+ border: 1px solid rgba(126,231,196,0.18);
809
+ letter-spacing: 0.02em;
810
+ }
811
+
812
+ .settings-danger-btn {
813
+ display: inline-flex; align-items: center; gap: 6px;
814
+ background: rgba(255,107,107,0.08); border: 1px solid rgba(255,107,107,0.25);
815
+ color: var(--accent-error); cursor: pointer;
816
+ padding: 6px 12px; border-radius: 4px; font-size: 11px;
817
+ font-family: inherit;
818
+ align-self: flex-start;
819
+ }
820
+ .settings-danger-btn:hover:not(:disabled) { background: var(--color-interaction-error-strong); }
821
+ .settings-danger-btn:disabled { opacity: 0.5; cursor: not-allowed; }
822
+
823
+ .settings-info { font-family: var(--font-mono); font-size: 10px; line-height: 1.8; color: var(--text-secondary); }
824
+ .settings-info .dim { color: var(--text-muted, rgba(255,255,255,0.4)); display: inline-block; width: 110px; }
825
+ .settings-info code { background: rgba(255,255,255,0.06); padding: 1px 4px; border-radius: 2px; color: var(--color-kind-cli-provider); }
826
+
827
+ .settings-toast {
828
+ position: absolute; bottom: 16px; left: 16px; right: 16px;
829
+ padding: 8px 12px; border-radius: 4px;
830
+ font-size: 11px; text-align: center;
831
+ }
832
+ .settings-toast.ok { background: rgba(74,222,128,0.12); color: var(--accent-green); border: 1px solid rgba(74,222,128,0.3); }
833
+ .settings-toast.err { background: rgba(255,107,107,0.12); color: var(--accent-error); border: 1px solid rgba(255,107,107,0.3); }
834
+
835
+ /* ── P4.3 · tb-providers ProvidersBadge ────────────────────────────────────
836
+ CLI provider health pill in tb-right. Three tone classes wrap the same
837
+ .tb-prov-dot 6×6 LED + .pill-label count text. Hover applies the matching
838
+ tone's 13% bg + 48% border + 8px glow + -0.5px translateY lift — the same
839
+ visual grammar as BusHealthLamp / TabStrip ts-bus-chip / CpBusPulse so the
840
+ strip reads as a coherent "live system status" family across surfaces. */
841
+ .tb-providers {
842
+ display: inline-flex; align-items: center; gap: 6px;
843
+ border: 1px solid transparent;
844
+ transition: background var(--motion-duration-instant) var(--motion-ease-standard), border-color var(--motion-duration-instant) var(--motion-ease-standard), transform var(--motion-duration-instant) var(--motion-ease-standard), box-shadow var(--motion-duration-instant) var(--motion-ease-standard);
845
+ }
846
+ .tb-providers .tb-prov-dot {
847
+ width: 6px; height: 6px; border-radius: 50%;
848
+ background: rgba(255,255,255,0.4);
849
+ box-shadow: 0 0 0 0 transparent;
850
+ transition: background var(--motion-duration-instant) var(--motion-ease-standard), box-shadow var(--motion-duration-fast) var(--motion-ease-standard);
851
+ }
852
+ .tb-providers.is-ok .tb-prov-dot {
853
+ background: var(--prim-color-green-400);
854
+ box-shadow: none;
855
+ }
856
+ .tb-providers.is-warn .tb-prov-dot {
857
+ background: var(--color-status-amber);
858
+ box-shadow: none;
859
+ }
860
+ .tb-providers.is-down .tb-prov-dot {
861
+ background: var(--accent-error);
862
+ box-shadow: none;
863
+ }
864
+ .tb-providers.is-loading .tb-prov-dot {
865
+ background: rgba(255,255,255,0.25);
866
+ animation: tb-prov-dot-pulse 1.2s ease-in-out infinite;
867
+ }
868
+ @keyframes tb-prov-dot-pulse {
869
+ 0%, 100% { opacity: 0.35; }
870
+ 50% { opacity: 0.85; }
871
+ }
872
+ .tb-providers.is-ok:hover {
873
+ background: var(--color-interaction-hover);
874
+ border-color: rgba(var(--rgb-accent-green), 0.48);
875
+ transform: translateY(-0.5px);
876
+ }
877
+ .tb-providers.is-warn:hover {
878
+ background: var(--color-interaction-hover);
879
+ border-color: rgba(var(--rgb-accent-warn), 0.48);
880
+ transform: translateY(-0.5px);
881
+ }
882
+ .tb-providers.is-down:hover {
883
+ background: var(--color-interaction-hover);
884
+ border-color: rgba(var(--rgb-accent-error), 0.48);
885
+ transform: translateY(-0.5px);
886
+ }
887
+ .tb-providers.is-loading:hover {
888
+ background: var(--color-interaction-hover);
889
+ border-color: var(--color-border-default);
890
+ }
891
+ /* At narrow widths the surrounding .pill rule already hides .pill-label
892
+ for non-publish pills, but the count is the whole point of this pill —
893
+ keep it visible so the player still sees "2/4" even when the model
894
+ label collapses. */
895
+ @media (max-width: 1000px) {
896
+ .tb-right .pill.tb-providers .pill-label { display: inline; }
897
+ }
898
+
899
+ /* ── P4.5 · tb-model BrainPill (model-binding deep-link) ───────────────────
900
+ Replaces the previously-static Brain pill in tb-right with a live button
901
+ that surfaces the bus model-binding plugin count and routes a click into
902
+ Bus admin (kind=model-binding). Color family = teal #7be7c4 to match
903
+ .cb-mb-row / .ba-chip.k-model-binding / .cp-bus-chip.k-model-binding
904
+ everywhere else — "teal = model-binding" muscle memory transfers across
905
+ surfaces. Hover/focus/active grammar mirrors P4.3 .tb-providers (13% bg
906
+ + 48% border + 8px glow + -0.5px lift) so the two adjacent pills read as
907
+ one coherent "live status indicator strip". Four tones: is-ok (count > 0,
908
+ teal LED) / is-empty (count = 0, dim) / is-loading (dim pulse) / is-down
909
+ (red fallback when bus list errors). */
910
+ .tb-model {
911
+ display: inline-flex; align-items: center; gap: 6px;
912
+ border: 1px solid transparent;
913
+ cursor: pointer;
914
+ transition: background var(--motion-duration-instant) var(--motion-ease-standard), border-color var(--motion-duration-instant) var(--motion-ease-standard), transform var(--motion-duration-instant) var(--motion-ease-standard), box-shadow var(--motion-duration-instant) var(--motion-ease-standard);
915
+ }
916
+ .tb-model .tb-model-dot {
917
+ width: 6px; height: 6px; border-radius: 50%;
918
+ background: rgba(255,255,255,0.4);
919
+ box-shadow: 0 0 0 0 transparent;
920
+ transition: background var(--motion-duration-instant) var(--motion-ease-standard), box-shadow var(--motion-duration-fast) var(--motion-ease-standard);
921
+ }
922
+ .tb-model.is-ok .tb-model-dot {
923
+ background: var(--accent-mint);
924
+ box-shadow: none;
925
+ }
926
+ .tb-model.is-empty .tb-model-dot {
927
+ background: rgba(126,231,196,0.35);
928
+ }
929
+ .tb-model.is-down .tb-model-dot {
930
+ background: var(--accent-error);
931
+ box-shadow: none;
932
+ }
933
+ .tb-model.is-loading .tb-model-dot {
934
+ background: rgba(126,231,196,0.25);
935
+ animation: tb-model-dot-pulse 1.2s ease-in-out infinite;
936
+ }
937
+ @keyframes tb-model-dot-pulse {
938
+ 0%, 100% { opacity: 0.35; }
939
+ 50% { opacity: 0.85; }
940
+ }
941
+ .tb-model .tb-model-count {
942
+ font-size: 10px;
943
+ font-variant-numeric: tabular-nums;
944
+ padding: 0 5px;
945
+ margin-left: 2px;
946
+ border-radius: 8px;
947
+ background: rgba(126,231,196,0.12);
948
+ color: var(--accent-mint);
949
+ border: 1px solid rgba(126,231,196,0.28);
950
+ line-height: 14px;
951
+ min-width: 12px;
952
+ text-align: center;
953
+ }
954
+ .tb-model.is-empty .tb-model-count {
955
+ background: rgba(255,255,255,0.04);
956
+ color: rgba(255,255,255,0.4);
957
+ border-color: rgba(255,255,255,0.1);
958
+ }
959
+ .tb-model.is-ok:hover,
960
+ .tb-model.is-empty:hover {
961
+ background: var(--color-interaction-hover);
962
+ border-color: rgba(var(--rgb-accent-teal), 0.48);
963
+ transform: translateY(-0.5px);
964
+ }
965
+ .tb-model.is-down:hover {
966
+ background: var(--color-interaction-hover);
967
+ border-color: rgba(var(--rgb-accent-error), 0.48);
968
+ transform: translateY(-0.5px);
969
+ }
970
+ .tb-model.is-loading:hover {
971
+ background: var(--color-interaction-hover);
972
+ border-color: var(--color-border-default);
973
+ }
974
+ .tb-model:focus-visible {
975
+ outline: 2px solid rgba(126,231,196,0.55);
976
+ outline-offset: 1px;
977
+ }
978
+ .tb-model:active {
979
+ transform: translateY(0.5px);
980
+ background: rgba(126,231,196,0.20);
981
+ }
982
+ /* Keep the count visible even when narrow viewports collapse the label —
983
+ the count is the new live signal, the label is decorative once the dot
984
+ is already telling the player "teal = model-binding". */
985
+ @media (max-width: 1000px) {
986
+ .tb-right .pill.tb-model .pill-label { display: inline; }
987
+ }
988
+
989
+ /* ── P4.20 · tb-skill SkillBadge (skill-kind deep-link) ───────────────────
990
+ Adds the 4th live LED to tb-right: gold #ffc878 dot + Sparkles glyph +
991
+ small `Skill N` count, polled every 12s via /api/extensions/list?kind=skill.
992
+ Color family is the same gold the rest of the codebase already uses for
993
+ skill (.ba-chip.k-skill / .ss-kind-chip.k-skill / .dash-kind-row.k-skill /
994
+ .cp-bus-chip.k-skill / .ba-prov-tag.k-skill) so "gold = skill" reads
995
+ consistently from the very top bar to deep inside Bus admin. Grammar
996
+ mirrors P4.5 .tb-model (4 tones: ok/empty/loading/down) and P4.3
997
+ .tb-providers (13% bg + 48% border + 8px glow + -0.5px lift on hover),
998
+ making the four tb-right LEDs (bus lime / model teal / providers amber /
999
+ skill gold) read as one coherent "kind health indicator strip". Click
1000
+ drops into Bus admin with kind-chip solo (kind=skill) — same deep-link
1001
+ pattern P4.3/P4.5 already wired. */
1002
+ .tb-skill {
1003
+ display: inline-flex; align-items: center; gap: 6px;
1004
+ border: 1px solid transparent;
1005
+ cursor: pointer;
1006
+ transition: background var(--motion-duration-instant) var(--motion-ease-standard), border-color var(--motion-duration-instant) var(--motion-ease-standard), transform var(--motion-duration-instant) var(--motion-ease-standard), box-shadow var(--motion-duration-instant) var(--motion-ease-standard);
1007
+ }
1008
+ .tb-skill .tb-skill-dot {
1009
+ width: 6px; height: 6px; border-radius: 50%;
1010
+ background: rgba(255,255,255,0.4);
1011
+ box-shadow: 0 0 0 0 transparent;
1012
+ transition: background var(--motion-duration-instant) var(--motion-ease-standard), box-shadow var(--motion-duration-fast) var(--motion-ease-standard);
1013
+ }
1014
+ .tb-skill.is-ok .tb-skill-dot {
1015
+ background: var(--color-role-narrative);
1016
+ box-shadow: none;
1017
+ }
1018
+ .tb-skill.is-empty .tb-skill-dot {
1019
+ background: rgba(255,200,120,0.35);
1020
+ }
1021
+ .tb-skill.is-down .tb-skill-dot {
1022
+ background: var(--accent-error);
1023
+ box-shadow: none;
1024
+ }
1025
+ .tb-skill.is-loading .tb-skill-dot {
1026
+ background: rgba(255,200,120,0.25);
1027
+ animation: tb-skill-dot-pulse 1.2s ease-in-out infinite;
1028
+ }
1029
+ @keyframes tb-skill-dot-pulse {
1030
+ 0%, 100% { opacity: 0.35; }
1031
+ 50% { opacity: 0.85; }
1032
+ }
1033
+ .tb-skill .tb-skill-count {
1034
+ font-size: 10px;
1035
+ font-variant-numeric: tabular-nums;
1036
+ padding: 0 5px;
1037
+ margin-left: 2px;
1038
+ border-radius: 8px;
1039
+ background: rgba(255,200,120,0.12);
1040
+ color: var(--color-role-narrative);
1041
+ border: 1px solid rgba(255,200,120,0.28);
1042
+ line-height: 14px;
1043
+ min-width: 12px;
1044
+ text-align: center;
1045
+ }
1046
+ .tb-skill .tb-skill-count.is-down {
1047
+ background: rgba(255,107,107,0.12);
1048
+ color: var(--accent-error);
1049
+ border-color: rgba(255,107,107,0.32);
1050
+ }
1051
+ .tb-skill.is-empty .tb-skill-count {
1052
+ background: rgba(255,255,255,0.04);
1053
+ color: rgba(255,255,255,0.4);
1054
+ border-color: rgba(255,255,255,0.1);
1055
+ }
1056
+ .tb-skill.is-ok:hover,
1057
+ .tb-skill.is-empty:hover {
1058
+ background: var(--color-interaction-hover);
1059
+ border-color: rgba(var(--rgb-accent-gold), 0.48);
1060
+ transform: translateY(-0.5px);
1061
+ }
1062
+ .tb-skill.is-down:hover {
1063
+ background: var(--color-interaction-hover);
1064
+ border-color: rgba(var(--rgb-accent-error), 0.48);
1065
+ transform: translateY(-0.5px);
1066
+ }
1067
+ .tb-skill.is-loading:hover {
1068
+ background: var(--color-interaction-hover);
1069
+ border-color: var(--color-border-default);
1070
+ }
1071
+ .tb-skill:focus-visible {
1072
+ outline: 2px solid rgba(255,200,120,0.55);
1073
+ outline-offset: 1px;
1074
+ }
1075
+ .tb-skill:active {
1076
+ transform: translateY(0.5px);
1077
+ background: rgba(255,200,120,0.20);
1078
+ }
1079
+ @media (max-width: 1000px) {
1080
+ .tb-right .pill.tb-skill .pill-label { display: inline; }
1081
+ }
1082
+
1083
+ /* ── P4.21 · tb-tool ToolBadge (tool-kind deep-link) ──────────────────────
1084
+ Adds the 5th live LED to tb-right: orange #ff8c42 dot + Wrench glyph +
1085
+ small `Tool N` count, polled every 12s via /api/extensions/list?kind=tool.
1086
+ Same orange family used by .ba-chip.k-tool / .ba-kind-tag.k-tool /
1087
+ .ss-kind-chip.k-tool / .ba-prov-tag.k-tool so "orange = tool" stays
1088
+ consistent from the very top bar into Bus admin. 4-tone grammar
1089
+ (ok/empty/loading/down) mirrors P4.20 .tb-skill exactly; with this fifth
1090
+ pill the tb-right strip reads bus(lime) → model(teal) → prov(amber/sky)
1091
+ → skill(gold) → tool(orange) — 5 of 6 kinds covered (only agent
1092
+ remaining). Click drops into Bus admin with kind-chip solo (kind=tool). */
1093
+ .tb-tool {
1094
+ display: inline-flex; align-items: center; gap: 6px;
1095
+ border: 1px solid transparent;
1096
+ cursor: pointer;
1097
+ transition: background var(--motion-duration-instant) var(--motion-ease-standard), border-color var(--motion-duration-instant) var(--motion-ease-standard), transform var(--motion-duration-instant) var(--motion-ease-standard), box-shadow var(--motion-duration-instant) var(--motion-ease-standard);
1098
+ }
1099
+ .tb-tool .tb-tool-dot {
1100
+ width: 6px; height: 6px; border-radius: 50%;
1101
+ background: rgba(255,255,255,0.4);
1102
+ box-shadow: 0 0 0 0 transparent;
1103
+ transition: background var(--motion-duration-instant) var(--motion-ease-standard), box-shadow var(--motion-duration-fast) var(--motion-ease-standard);
1104
+ }
1105
+ .tb-tool.is-ok .tb-tool-dot {
1106
+ background: var(--color-role-coding);
1107
+ box-shadow: none;
1108
+ }
1109
+ .tb-tool.is-empty .tb-tool-dot {
1110
+ background: rgba(255,140,66,0.35);
1111
+ }
1112
+ .tb-tool.is-down .tb-tool-dot {
1113
+ background: var(--accent-error);
1114
+ box-shadow: none;
1115
+ }
1116
+ .tb-tool.is-loading .tb-tool-dot {
1117
+ background: rgba(255,140,66,0.25);
1118
+ animation: tb-tool-dot-pulse 1.2s ease-in-out infinite;
1119
+ }
1120
+ @keyframes tb-tool-dot-pulse {
1121
+ 0%, 100% { opacity: 0.35; }
1122
+ 50% { opacity: 0.85; }
1123
+ }
1124
+ .tb-tool .tb-tool-count {
1125
+ font-size: 10px;
1126
+ font-variant-numeric: tabular-nums;
1127
+ padding: 0 5px;
1128
+ margin-left: 2px;
1129
+ border-radius: 8px;
1130
+ background: rgba(255,140,66,0.12);
1131
+ color: var(--color-role-coding);
1132
+ border: 1px solid rgba(255,140,66,0.28);
1133
+ line-height: 14px;
1134
+ min-width: 12px;
1135
+ text-align: center;
1136
+ }
1137
+ .tb-tool .tb-tool-count.is-down {
1138
+ background: rgba(255,107,107,0.12);
1139
+ color: var(--accent-error);
1140
+ border-color: rgba(255,107,107,0.32);
1141
+ }
1142
+ .tb-tool.is-empty .tb-tool-count {
1143
+ background: rgba(255,255,255,0.04);
1144
+ color: rgba(255,255,255,0.4);
1145
+ border-color: rgba(255,255,255,0.1);
1146
+ }
1147
+ .tb-tool.is-ok:hover,
1148
+ .tb-tool.is-empty:hover {
1149
+ background: var(--color-interaction-hover);
1150
+ border-color: rgba(var(--rgb-accent-orange), 0.48);
1151
+ transform: translateY(-0.5px);
1152
+ }
1153
+ .tb-tool.is-down:hover {
1154
+ background: var(--color-interaction-hover);
1155
+ border-color: rgba(var(--rgb-accent-error), 0.48);
1156
+ transform: translateY(-0.5px);
1157
+ }
1158
+ .tb-tool.is-loading:hover {
1159
+ background: var(--color-interaction-hover);
1160
+ border-color: var(--color-border-default);
1161
+ }
1162
+ .tb-tool:focus-visible {
1163
+ outline: 2px solid rgba(255,140,66,0.55);
1164
+ outline-offset: 1px;
1165
+ }
1166
+ .tb-tool:active {
1167
+ transform: translateY(0.5px);
1168
+ background: rgba(255,140,66,0.20);
1169
+ }
1170
+ @media (max-width: 1000px) {
1171
+ .tb-right .pill.tb-tool .pill-label { display: inline; }
1172
+ }
1173
+
1174
+ /* ── P4.22 · tb-agent AgentBadge (agent-kind deep-link, 6/6 完成) ─────────
1175
+ Final tb-right kind LED, completing 6-color bus-kind mission-control
1176
+ strip: bus(lime) → model(teal) → prov(amber) → skill(gold) → tool(orange)
1177
+ → agent(violet). Color family = violet #c4a3ff matching
1178
+ .ac-role-dot.tribe-* / .ba-chip.k-agent / .ss-kind-chip.k-agent /
1179
+ .cp-agent-bar empty-state so "violet = agent" muscle memory transfers
1180
+ across all agent surfaces. 4-tone grammar (ok/empty/loading/down) cloned
1181
+ from .tb-skill / .tb-tool. */
1182
+ .tb-agent {
1183
+ display: inline-flex; align-items: center; gap: 6px;
1184
+ border: 1px solid transparent;
1185
+ cursor: pointer;
1186
+ transition: background var(--motion-duration-instant) var(--motion-ease-standard), border-color var(--motion-duration-instant) var(--motion-ease-standard), transform var(--motion-duration-instant) var(--motion-ease-standard), box-shadow var(--motion-duration-instant) var(--motion-ease-standard);
1187
+ }
1188
+ .tb-agent .tb-agent-dot {
1189
+ width: 6px; height: 6px; border-radius: 50%;
1190
+ background: rgba(255,255,255,0.4);
1191
+ box-shadow: 0 0 0 0 transparent;
1192
+ transition: background var(--motion-duration-instant) var(--motion-ease-standard), box-shadow var(--motion-duration-fast) var(--motion-ease-standard);
1193
+ }
1194
+ .tb-agent.is-ok .tb-agent-dot {
1195
+ background: var(--color-role-orchestrator);
1196
+ box-shadow: none;
1197
+ }
1198
+ .tb-agent.is-empty .tb-agent-dot {
1199
+ background: rgba(196,163,255,0.35);
1200
+ }
1201
+ .tb-agent.is-down .tb-agent-dot {
1202
+ background: var(--accent-error);
1203
+ box-shadow: none;
1204
+ }
1205
+ .tb-agent.is-loading .tb-agent-dot {
1206
+ background: rgba(196,163,255,0.25);
1207
+ animation: tb-agent-dot-pulse 1.2s ease-in-out infinite;
1208
+ }
1209
+ @keyframes tb-agent-dot-pulse {
1210
+ 0%, 100% { opacity: 0.35; }
1211
+ 50% { opacity: 0.85; }
1212
+ }
1213
+ .tb-agent .tb-agent-count {
1214
+ font-size: 10px;
1215
+ font-variant-numeric: tabular-nums;
1216
+ padding: 0 5px;
1217
+ margin-left: 2px;
1218
+ border-radius: 8px;
1219
+ background: rgba(196,163,255,0.12);
1220
+ color: var(--color-role-orchestrator);
1221
+ border: 1px solid rgba(196,163,255,0.28);
1222
+ line-height: 14px;
1223
+ min-width: 12px;
1224
+ text-align: center;
1225
+ }
1226
+ .tb-agent .tb-agent-count.is-down {
1227
+ background: rgba(255,107,107,0.12);
1228
+ color: var(--accent-error);
1229
+ border-color: rgba(255,107,107,0.32);
1230
+ }
1231
+ .tb-agent.is-empty .tb-agent-count {
1232
+ background: rgba(255,255,255,0.04);
1233
+ color: rgba(255,255,255,0.4);
1234
+ border-color: rgba(255,255,255,0.1);
1235
+ }
1236
+ .tb-agent.is-ok:hover,
1237
+ .tb-agent.is-empty:hover {
1238
+ background: var(--color-interaction-hover);
1239
+ border-color: rgba(var(--rgb-accent-violet), 0.48);
1240
+ transform: translateY(-0.5px);
1241
+ }
1242
+ .tb-agent.is-down:hover {
1243
+ background: var(--color-interaction-hover);
1244
+ border-color: rgba(var(--rgb-accent-error), 0.48);
1245
+ transform: translateY(-0.5px);
1246
+ }
1247
+ .tb-agent.is-loading:hover {
1248
+ background: var(--color-interaction-hover);
1249
+ border-color: var(--color-border-default);
1250
+ }
1251
+ .tb-agent:focus-visible {
1252
+ outline: 2px solid rgba(196,163,255,0.55);
1253
+ outline-offset: 1px;
1254
+ }
1255
+ .tb-agent:active {
1256
+ transform: translateY(0.5px);
1257
+ background: rgba(196,163,255,0.20);
1258
+ }
1259
+ @media (max-width: 1000px) {
1260
+ .tb-right .pill.tb-agent .pill-label { display: inline; }
1261
+ }
1262
+
1263
+ /* ── Workspace tabs (Blender-style, replaces 3 fixed mode tabs) ─────────────── */
1264
+
1265
+ /* Add workspace button */
1266
+ .ws-add-btn {
1267
+ position: relative;
1268
+ z-index: 1;
1269
+ display: inline-flex; align-items: center; justify-content: center;
1270
+ width: 22px; height: 22px;
1271
+ border: none; background: transparent; cursor: pointer;
1272
+ color: var(--color-text-tertiary);
1273
+ border-radius: var(--radius-pill);
1274
+ font-size: 14px; font-weight: 400;
1275
+ margin-left: 2px;
1276
+ transition: color var(--motion-duration-fast) var(--motion-ease-spring),
1277
+ background var(--motion-duration-fast) var(--motion-ease-spring);
1278
+ }
1279
+ .ws-add-btn:hover {
1280
+ color: var(--color-text-primary);
1281
+ background: rgba(255, 255, 255, 0.08);
1282
+ }
1283
+
1284
+ /* Inline rename input — sits inside the tab button */
1285
+ .ws-rename-input {
1286
+ background: transparent;
1287
+ border: none;
1288
+ outline: none;
1289
+ color: inherit;
1290
+ font: inherit;
1291
+ width: 80px;
1292
+ min-width: 40px;
1293
+ padding: 0;
1294
+ caret-color: var(--color-text-primary);
1295
+ border-bottom: 1px solid rgba(255, 255, 255, 0.4);
1296
+ }
1297
+
1298
+ /* Right-click context menu */
1299
+ .ws-ctx-menu {
1300
+ position: fixed;
1301
+ z-index: var(--z-menu);
1302
+ background: var(--color-background-floating);
1303
+ border: 1px solid var(--color-border-default);
1304
+ border-radius: var(--radius-md);
1305
+ box-shadow: 0 8px 24px rgba(0,0,0,0.45);
1306
+ padding: 4px;
1307
+ min-width: 120px;
1308
+ display: flex;
1309
+ flex-direction: column;
1310
+ gap: 1px;
1311
+ }
1312
+ .ws-ctx-item {
1313
+ display: block;
1314
+ width: 100%;
1315
+ text-align: left;
1316
+ padding: 5px 10px;
1317
+ border: none;
1318
+ background: transparent;
1319
+ color: var(--color-text-primary);
1320
+ font-size: 12px;
1321
+ border-radius: var(--radius-sm, 4px);
1322
+ cursor: pointer;
1323
+ }
1324
+ .ws-ctx-item:hover { background: rgba(255,255,255,0.08); }
1325
+ .ws-ctx-item.ws-ctx-delete { color: var(--color-text-danger, #ff6b6b); }
1326
+ .ws-ctx-item.disabled { opacity: 0.4; cursor: not-allowed; }
1327
+ .ws-ctx-item.disabled:hover { background: transparent; }
1328
+
1329
+ /* ── Package progress overlay ── */
1330
+ .tb-progress-overlay {
1331
+ position: fixed;
1332
+ inset: 0;
1333
+ z-index: 9999;
1334
+ background: rgba(0, 0, 0, 0.55);
1335
+ display: flex;
1336
+ align-items: center;
1337
+ justify-content: center;
1338
+ }
1339
+ .tb-progress-dialog {
1340
+ background: var(--color-background-floating, #1e1e2e);
1341
+ border: 1px solid var(--color-border-default, #333);
1342
+ border-radius: 8px;
1343
+ padding: 16px 20px;
1344
+ min-width: 340px;
1345
+ max-width: 540px;
1346
+ color: var(--color-text-primary, #e0e0e0);
1347
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5);
1348
+ }
1349
+ .tb-package-error {
1350
+ max-width: min(760px, calc(100vw - 48px));
1351
+ max-height: min(70vh, 560px);
1352
+ overflow: auto;
1353
+ margin: 0;
1354
+ padding: 10px 12px;
1355
+ border-radius: 6px;
1356
+ background: rgba(0, 0, 0, 0.28);
1357
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
1358
+ font-size: 12px;
1359
+ line-height: 1.5;
1360
+ white-space: pre-wrap;
1361
+ overflow-wrap: anywhere;
1362
+ }
1363
+ @keyframes tb-spin { to { transform: rotate(360deg); } }
1364
+ .tb-spinner { animation: tb-spin 1s linear infinite; }
1365
+
1366
+ /* ── Packaging progress card (redesigned) ── */
1367
+ .tb-progress-overlay { backdrop-filter: blur(2px); }
1368
+ .tb-prog {
1369
+ width: 400px;
1370
+ min-width: 0;
1371
+ max-width: calc(100vw - 32px);
1372
+ padding: 20px 20px 16px;
1373
+ border-radius: 14px;
1374
+ border: 1px solid rgba(255, 255, 255, 0.12);
1375
+ box-shadow:
1376
+ 0 24px 60px rgba(0, 0, 0, 0.6),
1377
+ 0 2px 10px rgba(0, 0, 0, 0.4),
1378
+ inset 0 1px 0 rgba(255, 255, 255, 0.05);
1379
+ }
1380
+
1381
+ /* header: glowing orb + title/phase */
1382
+ .tb-prog-head { display: flex; align-items: center; gap: 13px; }
1383
+ .tb-prog-orb {
1384
+ flex: none;
1385
+ width: 42px;
1386
+ height: 42px;
1387
+ display: flex;
1388
+ align-items: center;
1389
+ justify-content: center;
1390
+ border-radius: 50%;
1391
+ color: var(--accent, #d4ff48);
1392
+ background: radial-gradient(circle at 50% 45%, color-mix(in srgb, var(--accent, #d4ff48) 26%, transparent), transparent 72%);
1393
+ box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent, #d4ff48) 32%, transparent);
1394
+ animation: tb-prog-pulse 2s ease-in-out infinite;
1395
+ }
1396
+ @keyframes tb-prog-pulse {
1397
+ 0%, 100% { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent, #d4ff48) 32%, transparent), 0 0 0 0 color-mix(in srgb, var(--accent, #d4ff48) 22%, transparent); }
1398
+ 50% { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent, #d4ff48) 42%, transparent), 0 0 0 7px color-mix(in srgb, var(--accent, #d4ff48) 0%, transparent); }
1399
+ }
1400
+ .tb-prog-headtxt { min-width: 0; flex: 1; }
1401
+ .tb-prog-title {
1402
+ display: flex;
1403
+ align-items: center;
1404
+ gap: 8px;
1405
+ font-size: 14px;
1406
+ font-weight: 600;
1407
+ line-height: 1.3;
1408
+ }
1409
+ .tb-prog-badge {
1410
+ font-size: 10px;
1411
+ font-weight: 600;
1412
+ letter-spacing: 0.04em;
1413
+ text-transform: uppercase;
1414
+ padding: 2px 7px;
1415
+ border-radius: 999px;
1416
+ color: var(--accent, #d4ff48);
1417
+ background: color-mix(in srgb, var(--accent, #d4ff48) 14%, transparent);
1418
+ border: 1px solid color-mix(in srgb, var(--accent, #d4ff48) 34%, transparent);
1419
+ }
1420
+ .tb-prog-phase {
1421
+ margin-top: 2px;
1422
+ font-size: 12.5px;
1423
+ opacity: 0.7;
1424
+ overflow: hidden;
1425
+ text-overflow: ellipsis;
1426
+ white-space: nowrap;
1427
+ }
1428
+
1429
+ /* indeterminate shimmer bar */
1430
+ .tb-prog-bar {
1431
+ position: relative;
1432
+ height: 5px;
1433
+ margin: 16px 0 12px;
1434
+ border-radius: 999px;
1435
+ overflow: hidden;
1436
+ background: rgba(255, 255, 255, 0.08);
1437
+ }
1438
+ .tb-prog-bar > span {
1439
+ position: absolute;
1440
+ top: 0;
1441
+ left: 0;
1442
+ height: 100%;
1443
+ width: 40%;
1444
+ border-radius: 999px;
1445
+ background: linear-gradient(90deg,
1446
+ transparent,
1447
+ var(--accent, #d4ff48),
1448
+ color-mix(in srgb, var(--accent, #d4ff48) 55%, white));
1449
+ animation: tb-prog-slide 1.35s cubic-bezier(0.4, 0, 0.2, 1) infinite;
1450
+ }
1451
+ @keyframes tb-prog-slide {
1452
+ 0% { left: -42%; }
1453
+ 100% { left: 102%; }
1454
+ }
1455
+
1456
+ /* latest build line (live status) */
1457
+ .tb-prog-line {
1458
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
1459
+ font-size: 11.5px;
1460
+ line-height: 1.5;
1461
+ opacity: 0.72;
1462
+ min-height: 1.5em;
1463
+ word-break: break-word;
1464
+ }
1465
+ .tb-prog-hint {
1466
+ margin-top: 7px;
1467
+ font-size: 11.5px;
1468
+ line-height: 1.5;
1469
+ opacity: 0.5;
1470
+ }
1471
+
1472
+ /* collapsible terminal log */
1473
+ .tb-prog-logbox { margin-top: 12px; }
1474
+ .tb-prog-logbox summary {
1475
+ display: flex;
1476
+ align-items: center;
1477
+ gap: 4px;
1478
+ cursor: pointer;
1479
+ font-size: 11.5px;
1480
+ opacity: 0.6;
1481
+ list-style: none;
1482
+ user-select: none;
1483
+ }
1484
+ .tb-prog-logbox summary::-webkit-details-marker { display: none; }
1485
+ .tb-prog-logbox summary:hover { opacity: 0.9; }
1486
+ .tb-prog-caret { transition: transform .15s ease; flex: none; }
1487
+ .tb-prog-logbox[open] .tb-prog-caret { transform: rotate(90deg); }
1488
+ .tb-prog-logbox pre {
1489
+ max-height: 180px;
1490
+ overflow-y: auto;
1491
+ margin: 8px 0 0;
1492
+ padding: 10px 12px;
1493
+ border-radius: 9px;
1494
+ background: rgba(0, 0, 0, 0.34);
1495
+ border: 1px solid rgba(255, 255, 255, 0.07);
1496
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
1497
+ font-size: 11px;
1498
+ line-height: 1.55;
1499
+ white-space: pre-wrap;
1500
+ word-break: break-word;
1501
+ opacity: 0.82;
1502
+ }
1503
+
1504
+ /* footer close button */
1505
+ .tb-prog-foot { display: flex; justify-content: flex-end; margin-top: 16px; }
1506
+ .tb-prog-close {
1507
+ font-size: 12px;
1508
+ font-weight: 500;
1509
+ padding: 7px 16px;
1510
+ border-radius: 8px;
1511
+ cursor: pointer;
1512
+ color: inherit;
1513
+ border: 1px solid rgba(255, 255, 255, 0.14);
1514
+ background: rgba(255, 255, 255, 0.04);
1515
+ transition: background .12s ease, border-color .12s ease;
1516
+ }
1517
+ .tb-prog-close:hover { background: rgba(255, 255, 255, 0.1); border-color: rgba(255, 255, 255, 0.26); }
1518
+
1519
+ /* ── Publish dropdown: two-line items (title + "when" subtitle) ── */
1520
+ .tb-publish-menu {
1521
+ min-width: 264px;
1522
+ /* Lift the menu off the app chrome — the default shadow-md reads as a faint
1523
+ border on dark surfaces, so add a deeper ambient + contact shadow and a
1524
+ slightly brighter 1px edge. */
1525
+ border: 1px solid rgba(255, 255, 255, 0.14);
1526
+ box-shadow:
1527
+ 0 18px 50px rgba(0, 0, 0, 0.55),
1528
+ 0 4px 14px rgba(0, 0, 0, 0.4),
1529
+ 0 0 0 1px rgba(0, 0, 0, 0.35);
1530
+ }
1531
+ .tb-mi-txt {
1532
+ display: flex;
1533
+ flex-direction: column;
1534
+ min-width: 0;
1535
+ flex: 1;
1536
+ gap: 1px;
1537
+ }
1538
+ .tb-mi-title { font-size: 13px; line-height: 1.3; }
1539
+ .tb-mi-sub {
1540
+ font-size: 11px;
1541
+ line-height: 1.3;
1542
+ opacity: 0.55;
1543
+ overflow: hidden;
1544
+ text-overflow: ellipsis;
1545
+ white-space: nowrap;
1546
+ }
1547
+
1548
+ /* ── Packaging-done dialog (PackageSuccessBody) ── */
1549
+ .tb-pkg-success { font-size: 13px; line-height: 1.55; }
1550
+
1551
+ /* friendly header line */
1552
+ .tb-pkg-head {
1553
+ display: flex;
1554
+ align-items: center;
1555
+ gap: 8px;
1556
+ margin-bottom: 12px;
1557
+ }
1558
+ .tb-pkg-head-ic { flex: none; color: var(--accent, #d4ff48); }
1559
+ .tb-pkg-head-txt { font-size: 13px; line-height: 1.4; }
1560
+
1561
+ /* export path shown as a subtle mono card */
1562
+ .tb-pkg-path {
1563
+ display: flex;
1564
+ align-items: flex-start;
1565
+ gap: 8px;
1566
+ padding: 9px 11px;
1567
+ border-radius: 8px;
1568
+ background: rgba(255, 255, 255, 0.04);
1569
+ border: 1px solid rgba(255, 255, 255, 0.08);
1570
+ }
1571
+ .tb-pkg-path-ic { flex: none; margin-top: 2px; opacity: 0.5; }
1572
+ .tb-pkg-path-txt {
1573
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
1574
+ font-size: 12px;
1575
+ line-height: 1.5;
1576
+ word-break: break-all;
1577
+ opacity: 0.85;
1578
+ }
1579
+
1580
+ /* action tiles — all in one row, equal width (icon over label) */
1581
+ .tb-success-actions {
1582
+ display: flex;
1583
+ gap: 8px;
1584
+ margin: 12px 0 2px;
1585
+ }
1586
+ .tb-sa-btn {
1587
+ flex: 1 1 0;
1588
+ min-width: 0;
1589
+ display: flex;
1590
+ flex-direction: column;
1591
+ align-items: center;
1592
+ justify-content: center;
1593
+ gap: 7px;
1594
+ font-size: 12px;
1595
+ font-weight: 500;
1596
+ padding: 13px 6px 11px;
1597
+ border-radius: 10px;
1598
+ cursor: pointer;
1599
+ border: 1px solid var(--color-border-default, rgba(255, 255, 255, 0.12));
1600
+ background: rgba(255, 255, 255, 0.035);
1601
+ color: inherit;
1602
+ text-align: center;
1603
+ transition: background .12s ease, border-color .12s ease, transform .1s ease;
1604
+ }
1605
+ .tb-sa-btn > span {
1606
+ max-width: 100%;
1607
+ overflow: hidden;
1608
+ text-overflow: ellipsis;
1609
+ white-space: nowrap;
1610
+ }
1611
+ .tb-sa-btn svg { flex: none; opacity: 0.9; }
1612
+ .tb-sa-btn:hover { background: rgba(255, 255, 255, 0.09); border-color: rgba(255, 255, 255, 0.22); }
1613
+ .tb-sa-btn:active { transform: scale(.96); }
1614
+ .tb-sa-btn:disabled { opacity: 0.6; cursor: default; }
1615
+ .tb-sa-btn.primary {
1616
+ border-color: color-mix(in srgb, var(--accent, #d4ff48) 50%, transparent);
1617
+ background: color-mix(in srgb, var(--accent, #d4ff48) 13%, transparent);
1618
+ color: var(--accent, #d4ff48);
1619
+ font-weight: 600;
1620
+ }
1621
+ .tb-sa-btn.primary svg { opacity: 1; }
1622
+ .tb-sa-btn.primary:hover { background: color-mix(in srgb, var(--accent, #d4ff48) 20%, transparent); }
1623
+
1624
+ /* transient status (serving / failed) */
1625
+ .tb-pkg-status {
1626
+ display: flex;
1627
+ align-items: center;
1628
+ gap: 6px;
1629
+ margin-top: 9px;
1630
+ font-size: 12px;
1631
+ }
1632
+ .tb-pkg-status.info { opacity: 0.8; }
1633
+ .tb-pkg-status.error { color: var(--destructive, #e05260); }
1634
+
1635
+ /* collapsible run-locally command */
1636
+ .tb-pkg-cmd { margin-top: 10px; }
1637
+ .tb-pkg-cmd summary {
1638
+ display: flex;
1639
+ align-items: center;
1640
+ gap: 4px;
1641
+ cursor: pointer;
1642
+ font-size: 12px;
1643
+ opacity: 0.6;
1644
+ list-style: none;
1645
+ user-select: none;
1646
+ }
1647
+ .tb-pkg-cmd summary::-webkit-details-marker { display: none; }
1648
+ .tb-pkg-cmd summary:hover { opacity: 0.85; }
1649
+ .tb-pkg-cmd-caret { transition: transform .15s ease; }
1650
+ .tb-pkg-cmd[open] .tb-pkg-cmd-caret { transform: rotate(90deg); }
1651
+ .tb-pkg-cmd pre {
1652
+ white-space: pre-wrap;
1653
+ word-break: break-all;
1654
+ margin: 7px 0 0;
1655
+ padding: 9px 11px;
1656
+ border-radius: 8px;
1657
+ background: rgba(0, 0, 0, 0.28);
1658
+ border: 1px solid rgba(255, 255, 255, 0.07);
1659
+ font-size: 12px;
1660
+ line-height: 1.5;
1661
+ }
1662
+
1663
+ /* muted info hints (webgpu / cached shell) */
1664
+ .tb-pkg-hint {
1665
+ display: flex;
1666
+ align-items: flex-start;
1667
+ gap: 6px;
1668
+ margin-top: 9px;
1669
+ font-size: 11.5px;
1670
+ opacity: 0.6;
1671
+ }
1672
+ .tb-pkg-hint svg { flex: none; margin-top: 1px; }