@xenosystem/agent-interface-ui 0.1.3

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 (384) hide show
  1. package/LICENSE +67 -0
  2. package/dist/adapters/agentHostPlatformBridge.d.ts +24 -0
  3. package/dist/adapters/agentHostPlatformBridge.d.ts.map +1 -0
  4. package/dist/adapters/agentHostPlatformBridge.js +1244 -0
  5. package/dist/adapters/agentHostPlatformBridge.js.map +1 -0
  6. package/dist/adapters/hubAgentPlatformBridge.d.ts +17 -0
  7. package/dist/adapters/hubAgentPlatformBridge.d.ts.map +1 -0
  8. package/dist/adapters/hubAgentPlatformBridge.js +109 -0
  9. package/dist/adapters/hubAgentPlatformBridge.js.map +1 -0
  10. package/dist/adapters/xenoAgentCompatibilityBridge.d.ts +14 -0
  11. package/dist/adapters/xenoAgentCompatibilityBridge.d.ts.map +1 -0
  12. package/dist/adapters/xenoAgentCompatibilityBridge.js +237 -0
  13. package/dist/adapters/xenoAgentCompatibilityBridge.js.map +1 -0
  14. package/dist/adapters/xenoAgentHostCatalog.d.ts +40 -0
  15. package/dist/adapters/xenoAgentHostCatalog.d.ts.map +1 -0
  16. package/dist/adapters/xenoAgentHostCatalog.js +228 -0
  17. package/dist/adapters/xenoAgentHostCatalog.js.map +1 -0
  18. package/dist/components/agent/AIStatusIndicator.d.ts +25 -0
  19. package/dist/components/agent/AIStatusIndicator.d.ts.map +1 -0
  20. package/dist/components/agent/AIStatusIndicator.js +85 -0
  21. package/dist/components/agent/AIStatusIndicator.js.map +1 -0
  22. package/dist/components/agent/AgentInterface.d.ts +21 -0
  23. package/dist/components/agent/AgentInterface.d.ts.map +1 -0
  24. package/dist/components/agent/AgentInterface.js +7586 -0
  25. package/dist/components/agent/AgentInterface.js.map +1 -0
  26. package/dist/components/agent/AgentOnboarding.d.ts +16 -0
  27. package/dist/components/agent/AgentOnboarding.d.ts.map +1 -0
  28. package/dist/components/agent/AgentOnboarding.js +423 -0
  29. package/dist/components/agent/AgentOnboarding.js.map +1 -0
  30. package/dist/components/agent/AgentPtyTerminalPanel.d.ts +13 -0
  31. package/dist/components/agent/AgentPtyTerminalPanel.d.ts.map +1 -0
  32. package/dist/components/agent/AgentPtyTerminalPanel.js +129 -0
  33. package/dist/components/agent/AgentPtyTerminalPanel.js.map +1 -0
  34. package/dist/components/agent/AgentView.d.ts +143 -0
  35. package/dist/components/agent/AgentView.d.ts.map +1 -0
  36. package/dist/components/agent/AgentView.js +7250 -0
  37. package/dist/components/agent/AgentView.js.map +1 -0
  38. package/dist/components/agent/AgentWorkbenchCliPanel.d.ts +15 -0
  39. package/dist/components/agent/AgentWorkbenchCliPanel.d.ts.map +1 -0
  40. package/dist/components/agent/AgentWorkbenchCliPanel.js +275 -0
  41. package/dist/components/agent/AgentWorkbenchCliPanel.js.map +1 -0
  42. package/dist/components/agent/AgentWorkbenchPanel.d.ts +791 -0
  43. package/dist/components/agent/AgentWorkbenchPanel.d.ts.map +1 -0
  44. package/dist/components/agent/AgentWorkbenchPanel.js +584 -0
  45. package/dist/components/agent/AgentWorkbenchPanel.js.map +1 -0
  46. package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts +11 -0
  47. package/dist/components/agent/AgentWorkspaceBrowserPanel.d.ts.map +1 -0
  48. package/dist/components/agent/AgentWorkspaceBrowserPanel.js +198 -0
  49. package/dist/components/agent/AgentWorkspaceBrowserPanel.js.map +1 -0
  50. package/dist/components/agent/AssistantTurnStatusNotice.d.ts +16 -0
  51. package/dist/components/agent/AssistantTurnStatusNotice.d.ts.map +1 -0
  52. package/dist/components/agent/AssistantTurnStatusNotice.js +54 -0
  53. package/dist/components/agent/AssistantTurnStatusNotice.js.map +1 -0
  54. package/dist/components/agent/CommandToolCard.d.ts +11 -0
  55. package/dist/components/agent/CommandToolCard.d.ts.map +1 -0
  56. package/dist/components/agent/CommandToolCard.js +29 -0
  57. package/dist/components/agent/CommandToolCard.js.map +1 -0
  58. package/dist/components/agent/FleetPanel.d.ts +28 -0
  59. package/dist/components/agent/FleetPanel.d.ts.map +1 -0
  60. package/dist/components/agent/FleetPanel.js +175 -0
  61. package/dist/components/agent/FleetPanel.js.map +1 -0
  62. package/dist/components/agent/GhostTextArea.d.ts +13 -0
  63. package/dist/components/agent/GhostTextArea.d.ts.map +1 -0
  64. package/dist/components/agent/GhostTextArea.js +21 -0
  65. package/dist/components/agent/GhostTextArea.js.map +1 -0
  66. package/dist/components/agent/IntakePanel.d.ts +29 -0
  67. package/dist/components/agent/IntakePanel.d.ts.map +1 -0
  68. package/dist/components/agent/IntakePanel.js +81 -0
  69. package/dist/components/agent/IntakePanel.js.map +1 -0
  70. package/dist/components/agent/KnowledgePanel.d.ts +25 -0
  71. package/dist/components/agent/KnowledgePanel.d.ts.map +1 -0
  72. package/dist/components/agent/KnowledgePanel.js +99 -0
  73. package/dist/components/agent/KnowledgePanel.js.map +1 -0
  74. package/dist/components/agent/MonacoDiffWorkbenchEditor.d.ts +9 -0
  75. package/dist/components/agent/MonacoDiffWorkbenchEditor.d.ts.map +1 -0
  76. package/dist/components/agent/MonacoDiffWorkbenchEditor.js +204 -0
  77. package/dist/components/agent/MonacoDiffWorkbenchEditor.js.map +1 -0
  78. package/dist/components/agent/MonacoWorkbenchEditor.d.ts +15 -0
  79. package/dist/components/agent/MonacoWorkbenchEditor.d.ts.map +1 -0
  80. package/dist/components/agent/MonacoWorkbenchEditor.js +380 -0
  81. package/dist/components/agent/MonacoWorkbenchEditor.js.map +1 -0
  82. package/dist/components/agent/PermissionDialog.d.ts +34 -0
  83. package/dist/components/agent/PermissionDialog.d.ts.map +1 -0
  84. package/dist/components/agent/PermissionDialog.js +67 -0
  85. package/dist/components/agent/PermissionDialog.js.map +1 -0
  86. package/dist/components/agent/PluginManager.d.ts +20 -0
  87. package/dist/components/agent/PluginManager.d.ts.map +1 -0
  88. package/dist/components/agent/PluginManager.js +506 -0
  89. package/dist/components/agent/PluginManager.js.map +1 -0
  90. package/dist/components/agent/RunReviewPanel.d.ts +52 -0
  91. package/dist/components/agent/RunReviewPanel.d.ts.map +1 -0
  92. package/dist/components/agent/RunReviewPanel.js +236 -0
  93. package/dist/components/agent/RunReviewPanel.js.map +1 -0
  94. package/dist/components/agent/SessionsPanel.d.ts +30 -0
  95. package/dist/components/agent/SessionsPanel.d.ts.map +1 -0
  96. package/dist/components/agent/SessionsPanel.js +247 -0
  97. package/dist/components/agent/SessionsPanel.js.map +1 -0
  98. package/dist/components/agent/acp/AcpAgentConfigForm.d.ts +19 -0
  99. package/dist/components/agent/acp/AcpAgentConfigForm.d.ts.map +1 -0
  100. package/dist/components/agent/acp/AcpAgentConfigForm.js +85 -0
  101. package/dist/components/agent/acp/AcpAgentConfigForm.js.map +1 -0
  102. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.d.ts +10 -0
  103. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.d.ts.map +1 -0
  104. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js +80 -0
  105. package/dist/components/agent/acp/AcpAgentDiagnosticsPanel.js.map +1 -0
  106. package/dist/components/agent/acp/AcpAgentManager.d.ts +3 -0
  107. package/dist/components/agent/acp/AcpAgentManager.d.ts.map +1 -0
  108. package/dist/components/agent/acp/AcpAgentManager.js +152 -0
  109. package/dist/components/agent/acp/AcpAgentManager.js.map +1 -0
  110. package/dist/components/agent/acp/AcpAgentTestResultPanel.d.ts +9 -0
  111. package/dist/components/agent/acp/AcpAgentTestResultPanel.d.ts.map +1 -0
  112. package/dist/components/agent/acp/AcpAgentTestResultPanel.js +24 -0
  113. package/dist/components/agent/acp/AcpAgentTestResultPanel.js.map +1 -0
  114. package/dist/components/agent/acp/AcpApprovalPanel.d.ts +29 -0
  115. package/dist/components/agent/acp/AcpApprovalPanel.d.ts.map +1 -0
  116. package/dist/components/agent/acp/AcpApprovalPanel.js +37 -0
  117. package/dist/components/agent/acp/AcpApprovalPanel.js.map +1 -0
  118. package/dist/components/agent/acp/AcpCertificationPanel.d.ts +10 -0
  119. package/dist/components/agent/acp/AcpCertificationPanel.d.ts.map +1 -0
  120. package/dist/components/agent/acp/AcpCertificationPanel.js +41 -0
  121. package/dist/components/agent/acp/AcpCertificationPanel.js.map +1 -0
  122. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.d.ts +11 -0
  123. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.d.ts.map +1 -0
  124. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js +32 -0
  125. package/dist/components/agent/acp/AcpLiveProviderWorkflowPanel.js.map +1 -0
  126. package/dist/components/agent/acp/AcpProviderManagerPanel.d.ts +7 -0
  127. package/dist/components/agent/acp/AcpProviderManagerPanel.d.ts.map +1 -0
  128. package/dist/components/agent/acp/AcpProviderManagerPanel.js +69 -0
  129. package/dist/components/agent/acp/AcpProviderManagerPanel.js.map +1 -0
  130. package/dist/components/agent/acp/AcpProviderModelsPanel.d.ts +7 -0
  131. package/dist/components/agent/acp/AcpProviderModelsPanel.d.ts.map +1 -0
  132. package/dist/components/agent/acp/AcpProviderModelsPanel.js +108 -0
  133. package/dist/components/agent/acp/AcpProviderModelsPanel.js.map +1 -0
  134. package/dist/components/agent/acp/AcpSupportBundlePanel.d.ts +8 -0
  135. package/dist/components/agent/acp/AcpSupportBundlePanel.d.ts.map +1 -0
  136. package/dist/components/agent/acp/AcpSupportBundlePanel.js +56 -0
  137. package/dist/components/agent/acp/AcpSupportBundlePanel.js.map +1 -0
  138. package/dist/components/agent/compactionSummary.d.ts +28 -0
  139. package/dist/components/agent/compactionSummary.d.ts.map +1 -0
  140. package/dist/components/agent/compactionSummary.js +41 -0
  141. package/dist/components/agent/compactionSummary.js.map +1 -0
  142. package/dist/components/agent/monacoWorkbenchShared.d.ts +13 -0
  143. package/dist/components/agent/monacoWorkbenchShared.d.ts.map +1 -0
  144. package/dist/components/agent/monacoWorkbenchShared.js +226 -0
  145. package/dist/components/agent/monacoWorkbenchShared.js.map +1 -0
  146. package/dist/components/agent/settings/EntitySettingsLayout.d.ts +61 -0
  147. package/dist/components/agent/settings/EntitySettingsLayout.d.ts.map +1 -0
  148. package/dist/components/agent/settings/EntitySettingsLayout.js +72 -0
  149. package/dist/components/agent/settings/EntitySettingsLayout.js.map +1 -0
  150. package/dist/components/agent/settings/SettingsNavigation.d.ts +8 -0
  151. package/dist/components/agent/settings/SettingsNavigation.d.ts.map +1 -0
  152. package/dist/components/agent/settings/SettingsNavigation.js +39 -0
  153. package/dist/components/agent/settings/SettingsNavigation.js.map +1 -0
  154. package/dist/components/agent/settings/sections/AccessMembersSection.d.ts +3 -0
  155. package/dist/components/agent/settings/sections/AccessMembersSection.d.ts.map +1 -0
  156. package/dist/components/agent/settings/sections/AccessMembersSection.js +31 -0
  157. package/dist/components/agent/settings/sections/AccessMembersSection.js.map +1 -0
  158. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.d.ts +25 -0
  159. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.d.ts.map +1 -0
  160. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js +56 -0
  161. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js.map +1 -0
  162. package/dist/components/agent/settings/sections/DangerZoneSection.d.ts +3 -0
  163. package/dist/components/agent/settings/sections/DangerZoneSection.d.ts.map +1 -0
  164. package/dist/components/agent/settings/sections/DangerZoneSection.js +19 -0
  165. package/dist/components/agent/settings/sections/DangerZoneSection.js.map +1 -0
  166. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.d.ts +3 -0
  167. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.d.ts.map +1 -0
  168. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js +66 -0
  169. package/dist/components/agent/settings/sections/DefaultAgentConfigSection.js.map +1 -0
  170. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.d.ts +3 -0
  171. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.d.ts.map +1 -0
  172. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js +87 -0
  173. package/dist/components/agent/settings/sections/EnvironmentSecretsSection.js.map +1 -0
  174. package/dist/components/agent/settings/sections/ExportBackupSection.d.ts +3 -0
  175. package/dist/components/agent/settings/sections/ExportBackupSection.d.ts.map +1 -0
  176. package/dist/components/agent/settings/sections/ExportBackupSection.js +23 -0
  177. package/dist/components/agent/settings/sections/ExportBackupSection.js.map +1 -0
  178. package/dist/components/agent/settings/sections/GeneralSection.d.ts +3 -0
  179. package/dist/components/agent/settings/sections/GeneralSection.d.ts.map +1 -0
  180. package/dist/components/agent/settings/sections/GeneralSection.js +15 -0
  181. package/dist/components/agent/settings/sections/GeneralSection.js.map +1 -0
  182. package/dist/components/agent/settings/sections/IntegrationsSection.d.ts +3 -0
  183. package/dist/components/agent/settings/sections/IntegrationsSection.d.ts.map +1 -0
  184. package/dist/components/agent/settings/sections/IntegrationsSection.js +40 -0
  185. package/dist/components/agent/settings/sections/IntegrationsSection.js.map +1 -0
  186. package/dist/components/agent/settings/sections/NotificationsSection.d.ts +3 -0
  187. package/dist/components/agent/settings/sections/NotificationsSection.d.ts.map +1 -0
  188. package/dist/components/agent/settings/sections/NotificationsSection.js +28 -0
  189. package/dist/components/agent/settings/sections/NotificationsSection.js.map +1 -0
  190. package/dist/components/agent/settings/sections/ResourceLimitsSection.d.ts +3 -0
  191. package/dist/components/agent/settings/sections/ResourceLimitsSection.d.ts.map +1 -0
  192. package/dist/components/agent/settings/sections/ResourceLimitsSection.js +17 -0
  193. package/dist/components/agent/settings/sections/ResourceLimitsSection.js.map +1 -0
  194. package/dist/components/agent/settings/sections/SecurityComplianceSection.d.ts +3 -0
  195. package/dist/components/agent/settings/sections/SecurityComplianceSection.d.ts.map +1 -0
  196. package/dist/components/agent/settings/sections/SecurityComplianceSection.js +28 -0
  197. package/dist/components/agent/settings/sections/SecurityComplianceSection.js.map +1 -0
  198. package/dist/components/agent/settings/sections/UsageAnalyticsSection.d.ts +3 -0
  199. package/dist/components/agent/settings/sections/UsageAnalyticsSection.d.ts.map +1 -0
  200. package/dist/components/agent/settings/sections/UsageAnalyticsSection.js +17 -0
  201. package/dist/components/agent/settings/sections/UsageAnalyticsSection.js.map +1 -0
  202. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.d.ts +54 -0
  203. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.d.ts.map +1 -0
  204. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js +333 -0
  205. package/dist/components/agent/settings/sections/WorkspaceDirectoryAccessSection.js.map +1 -0
  206. package/dist/components/agent/settings/shared/CheckboxField.d.ts +13 -0
  207. package/dist/components/agent/settings/shared/CheckboxField.d.ts.map +1 -0
  208. package/dist/components/agent/settings/shared/CheckboxField.js +8 -0
  209. package/dist/components/agent/settings/shared/CheckboxField.js.map +1 -0
  210. package/dist/components/agent/settings/shared/InputField.d.ts +15 -0
  211. package/dist/components/agent/settings/shared/InputField.d.ts.map +1 -0
  212. package/dist/components/agent/settings/shared/InputField.js +7 -0
  213. package/dist/components/agent/settings/shared/InputField.js.map +1 -0
  214. package/dist/components/agent/settings/shared/MembersTable.d.ts +11 -0
  215. package/dist/components/agent/settings/shared/MembersTable.d.ts.map +1 -0
  216. package/dist/components/agent/settings/shared/MembersTable.js +7 -0
  217. package/dist/components/agent/settings/shared/MembersTable.js.map +1 -0
  218. package/dist/components/agent/settings/shared/SettingRow.d.ts +11 -0
  219. package/dist/components/agent/settings/shared/SettingRow.d.ts.map +1 -0
  220. package/dist/components/agent/settings/shared/SettingRow.js +6 -0
  221. package/dist/components/agent/settings/shared/SettingRow.js.map +1 -0
  222. package/dist/components/agent/settings/shared/SettingsCard.d.ts +11 -0
  223. package/dist/components/agent/settings/shared/SettingsCard.d.ts.map +1 -0
  224. package/dist/components/agent/settings/shared/SettingsCard.js +8 -0
  225. package/dist/components/agent/settings/shared/SettingsCard.js.map +1 -0
  226. package/dist/components/agent/settings/shared/ToggleSwitch.d.ts +8 -0
  227. package/dist/components/agent/settings/shared/ToggleSwitch.d.ts.map +1 -0
  228. package/dist/components/agent/settings/shared/ToggleSwitch.js +6 -0
  229. package/dist/components/agent/settings/shared/ToggleSwitch.js.map +1 -0
  230. package/dist/components/agent/settings/shared/UsageChart.d.ts +12 -0
  231. package/dist/components/agent/settings/shared/UsageChart.d.ts.map +1 -0
  232. package/dist/components/agent/settings/shared/UsageChart.js +16 -0
  233. package/dist/components/agent/settings/shared/UsageChart.js.map +1 -0
  234. package/dist/components/agent/toolCardDisplay.d.ts +24 -0
  235. package/dist/components/agent/toolCardDisplay.d.ts.map +1 -0
  236. package/dist/components/agent/toolCardDisplay.js +85 -0
  237. package/dist/components/agent/toolCardDisplay.js.map +1 -0
  238. package/dist/components/product/XenoAgentProductHeader.d.ts +18 -0
  239. package/dist/components/product/XenoAgentProductHeader.d.ts.map +1 -0
  240. package/dist/components/product/XenoAgentProductHeader.js +25 -0
  241. package/dist/components/product/XenoAgentProductHeader.js.map +1 -0
  242. package/dist/components/product/XenoAgentSessionTabs.d.ts +18 -0
  243. package/dist/components/product/XenoAgentSessionTabs.d.ts.map +1 -0
  244. package/dist/components/product/XenoAgentSessionTabs.js +103 -0
  245. package/dist/components/product/XenoAgentSessionTabs.js.map +1 -0
  246. package/dist/components/ui/CodeBlock.d.ts +8 -0
  247. package/dist/components/ui/CodeBlock.d.ts.map +1 -0
  248. package/dist/components/ui/CodeBlock.js +89 -0
  249. package/dist/components/ui/CodeBlock.js.map +1 -0
  250. package/dist/components/ui/XenoLogo.d.ts +11 -0
  251. package/dist/components/ui/XenoLogo.d.ts.map +1 -0
  252. package/dist/components/ui/XenoLogo.js +9 -0
  253. package/dist/components/ui/XenoLogo.js.map +1 -0
  254. package/dist/index.d.ts +50 -0
  255. package/dist/index.d.ts.map +1 -0
  256. package/dist/index.js +127 -0
  257. package/dist/index.js.map +1 -0
  258. package/dist/platformApiTypes.d.ts +3992 -0
  259. package/dist/platformApiTypes.d.ts.map +1 -0
  260. package/dist/platformApiTypes.js +2 -0
  261. package/dist/platformApiTypes.js.map +1 -0
  262. package/dist/platformBridge.d.ts +9 -0
  263. package/dist/platformBridge.d.ts.map +1 -0
  264. package/dist/platformBridge.js +19 -0
  265. package/dist/platformBridge.js.map +1 -0
  266. package/dist/providerSelector.d.ts +28 -0
  267. package/dist/providerSelector.d.ts.map +1 -0
  268. package/dist/providerSelector.js +104 -0
  269. package/dist/providerSelector.js.map +1 -0
  270. package/dist/services/connectionMode.d.ts +13 -0
  271. package/dist/services/connectionMode.d.ts.map +1 -0
  272. package/dist/services/connectionMode.js +31 -0
  273. package/dist/services/connectionMode.js.map +1 -0
  274. package/dist/sessionTabs.d.ts +48 -0
  275. package/dist/sessionTabs.d.ts.map +1 -0
  276. package/dist/sessionTabs.js +106 -0
  277. package/dist/sessionTabs.js.map +1 -0
  278. package/dist/stores/acpAgentStore.d.ts +264 -0
  279. package/dist/stores/acpAgentStore.d.ts.map +1 -0
  280. package/dist/stores/acpAgentStore.js +825 -0
  281. package/dist/stores/acpAgentStore.js.map +1 -0
  282. package/dist/stores/agentChatStore.d.ts +529 -0
  283. package/dist/stores/agentChatStore.d.ts.map +1 -0
  284. package/dist/stores/agentChatStore.js +5309 -0
  285. package/dist/stores/agentChatStore.js.map +1 -0
  286. package/dist/stores/agentIdeStore.d.ts +9 -0
  287. package/dist/stores/agentIdeStore.d.ts.map +1 -0
  288. package/dist/stores/agentIdeStore.js +8 -0
  289. package/dist/stores/agentIdeStore.js.map +1 -0
  290. package/dist/stores/agentSearchStore.d.ts +174 -0
  291. package/dist/stores/agentSearchStore.d.ts.map +1 -0
  292. package/dist/stores/agentSearchStore.js +305 -0
  293. package/dist/stores/agentSearchStore.js.map +1 -0
  294. package/dist/stores/authStore.d.ts +26 -0
  295. package/dist/stores/authStore.d.ts.map +1 -0
  296. package/dist/stores/authStore.js +163 -0
  297. package/dist/stores/authStore.js.map +1 -0
  298. package/dist/stores/entitySettingsStore.d.ts +236 -0
  299. package/dist/stores/entitySettingsStore.d.ts.map +1 -0
  300. package/dist/stores/entitySettingsStore.js +916 -0
  301. package/dist/stores/entitySettingsStore.js.map +1 -0
  302. package/dist/stores/permissionStore.d.ts +25 -0
  303. package/dist/stores/permissionStore.d.ts.map +1 -0
  304. package/dist/stores/permissionStore.js +58 -0
  305. package/dist/stores/permissionStore.js.map +1 -0
  306. package/dist/stores/suggestionStore.d.ts +29 -0
  307. package/dist/stores/suggestionStore.d.ts.map +1 -0
  308. package/dist/stores/suggestionStore.js +160 -0
  309. package/dist/stores/suggestionStore.js.map +1 -0
  310. package/dist/stores/tabStore.d.ts +30 -0
  311. package/dist/stores/tabStore.d.ts.map +1 -0
  312. package/dist/stores/tabStore.js +252 -0
  313. package/dist/stores/tabStore.js.map +1 -0
  314. package/dist/stores/themeStore.d.ts +13 -0
  315. package/dist/stores/themeStore.d.ts.map +1 -0
  316. package/dist/stores/themeStore.js +77 -0
  317. package/dist/stores/themeStore.js.map +1 -0
  318. package/dist/stores/workspaceStore.d.ts +175 -0
  319. package/dist/stores/workspaceStore.d.ts.map +1 -0
  320. package/dist/stores/workspaceStore.js +694 -0
  321. package/dist/stores/workspaceStore.js.map +1 -0
  322. package/dist/stores/xenoChatStore.d.ts +88 -0
  323. package/dist/stores/xenoChatStore.d.ts.map +1 -0
  324. package/dist/stores/xenoChatStore.js +572 -0
  325. package/dist/stores/xenoChatStore.js.map +1 -0
  326. package/dist/toolCardProjection.d.ts +33 -0
  327. package/dist/toolCardProjection.d.ts.map +1 -0
  328. package/dist/toolCardProjection.js +62 -0
  329. package/dist/toolCardProjection.js.map +1 -0
  330. package/dist/types/agentEditor.d.ts +39 -0
  331. package/dist/types/agentEditor.d.ts.map +1 -0
  332. package/dist/types/agentEditor.js +2 -0
  333. package/dist/types/agentEditor.js.map +1 -0
  334. package/dist/types/agentRuntimeProvider.d.ts +2 -0
  335. package/dist/types/agentRuntimeProvider.d.ts.map +1 -0
  336. package/dist/types/agentRuntimeProvider.js +2 -0
  337. package/dist/types/agentRuntimeProvider.js.map +1 -0
  338. package/dist/utils/acpExecutionAuthority.d.ts +18 -0
  339. package/dist/utils/acpExecutionAuthority.d.ts.map +1 -0
  340. package/dist/utils/acpExecutionAuthority.js +22 -0
  341. package/dist/utils/acpExecutionAuthority.js.map +1 -0
  342. package/dist/utils/agentAttachedContextPrompt.d.ts +2 -0
  343. package/dist/utils/agentAttachedContextPrompt.d.ts.map +1 -0
  344. package/dist/utils/agentAttachedContextPrompt.js +2 -0
  345. package/dist/utils/agentAttachedContextPrompt.js.map +1 -0
  346. package/dist/utils/agentModelContext.d.ts +2 -0
  347. package/dist/utils/agentModelContext.d.ts.map +1 -0
  348. package/dist/utils/agentModelContext.js +2 -0
  349. package/dist/utils/agentModelContext.js.map +1 -0
  350. package/dist/utils/agentReasoningEffort.d.ts +3 -0
  351. package/dist/utils/agentReasoningEffort.d.ts.map +1 -0
  352. package/dist/utils/agentReasoningEffort.js +2 -0
  353. package/dist/utils/agentReasoningEffort.js.map +1 -0
  354. package/dist/utils/agentRuntimeProvider.d.ts +3 -0
  355. package/dist/utils/agentRuntimeProvider.d.ts.map +1 -0
  356. package/dist/utils/agentRuntimeProvider.js +2 -0
  357. package/dist/utils/agentRuntimeProvider.js.map +1 -0
  358. package/dist/utils/cloudModels.d.ts +3 -0
  359. package/dist/utils/cloudModels.d.ts.map +1 -0
  360. package/dist/utils/cloudModels.js +181 -0
  361. package/dist/utils/cloudModels.js.map +1 -0
  362. package/dist/utils/conversationRuntime.d.ts +3 -0
  363. package/dist/utils/conversationRuntime.d.ts.map +1 -0
  364. package/dist/utils/conversationRuntime.js +2 -0
  365. package/dist/utils/conversationRuntime.js.map +1 -0
  366. package/dist/utils/fileCreateIntent.d.ts +16 -0
  367. package/dist/utils/fileCreateIntent.d.ts.map +1 -0
  368. package/dist/utils/fileCreateIntent.js +123 -0
  369. package/dist/utils/fileCreateIntent.js.map +1 -0
  370. package/dist/utils/legacyAgentRuntimeEvents.d.ts +2 -0
  371. package/dist/utils/legacyAgentRuntimeEvents.d.ts.map +1 -0
  372. package/dist/utils/legacyAgentRuntimeEvents.js +2 -0
  373. package/dist/utils/legacyAgentRuntimeEvents.js.map +1 -0
  374. package/dist/utils/markdownWindowsPaths.d.ts +2 -0
  375. package/dist/utils/markdownWindowsPaths.d.ts.map +1 -0
  376. package/dist/utils/markdownWindowsPaths.js +2 -0
  377. package/dist/utils/markdownWindowsPaths.js.map +1 -0
  378. package/dist/utils/workspaceSelectionContinuation.d.ts +2 -0
  379. package/dist/utils/workspaceSelectionContinuation.d.ts.map +1 -0
  380. package/dist/utils/workspaceSelectionContinuation.js +2 -0
  381. package/dist/utils/workspaceSelectionContinuation.js.map +1 -0
  382. package/package.json +53 -0
  383. package/src/agent.css +1156 -0
  384. package/src/foundation.css +62 -0
package/src/agent.css ADDED
@@ -0,0 +1,1156 @@
1
+ @tailwind base;
2
+ @tailwind components;
3
+ @tailwind utilities;
4
+
5
+ :root,
6
+ :root[data-theme='dark'] {
7
+ /* ─── Surface tokens (canonical) ─── */
8
+ --xeno-page-bg: #08080a;
9
+ --xeno-canvas-bg: #111111;
10
+ --xeno-panel-body: #161618;
11
+ --xeno-panel-header: #1a1a1a;
12
+ --xeno-tab-bar: #272727;
13
+ --xeno-input-bg: #2b2b2b;
14
+ --xeno-dialog-bg: #111115;
15
+ --xeno-dropdown-bg: #101011;
16
+
17
+ /* Legacy aliases */
18
+ --xeno-bg-app: #08080a;
19
+ --xeno-bg-chrome: #111111;
20
+ --xeno-bg-panel: #161618;
21
+ --xeno-bg-elevated: #1a1a1a;
22
+ --xeno-bg-subtle: rgba(255, 255, 255, 0.05);
23
+
24
+ /* ─── Borders ─── */
25
+ --xeno-border-subtle: rgba(255, 255, 255, 0.05);
26
+ --xeno-border-default: rgba(255, 255, 255, 0.08);
27
+ --xeno-border-medium: rgba(255, 255, 255, 0.10);
28
+ --xeno-border-strong: rgba(255, 255, 255, 0.15);
29
+
30
+ /* ─── Text ─── */
31
+ --xeno-ink-primary: #FFFFFF;
32
+ --xeno-ink-secondary: #E0E0E0;
33
+ --xeno-ink-muted: #9ca3af;
34
+ --xeno-ink-faint: #6b7280;
35
+
36
+ /* ─── Interactive text ─── */
37
+ --xeno-text-idle: #7f7f86;
38
+ --xeno-text-hover: #d8d8de;
39
+ --xeno-text-active: #acacb4;
40
+ --xeno-hover-bg: rgba(169, 169, 177, 0.08);
41
+
42
+ /* ─── Brand accent (monochromatic) ─── */
43
+ --xeno-accent: rgba(255, 255, 255, 0.15);
44
+ --xeno-accent-hover: rgba(255, 255, 255, 0.25);
45
+ --xeno-accent-soft: rgba(255, 255, 255, 0.10);
46
+ --xeno-accent-border: rgba(255, 255, 255, 0.15);
47
+ --xeno-marker-solid: #57575f;
48
+ --xeno-marker-accent-solid: #8a8a92;
49
+
50
+ /* ─── Status ─── */
51
+ --xeno-diff-added: #22c55e;
52
+ --xeno-diff-added-bg: rgba(34, 197, 94, 0.08);
53
+ --xeno-diff-removed: #ef4444;
54
+ --xeno-diff-removed-bg: rgba(239, 68, 68, 0.08);
55
+
56
+ /* ─── Scrollbar ─── */
57
+ --xeno-scrollbar: #3a3a3d;
58
+ --xeno-scrollbar-hover: #555555;
59
+
60
+ /* ─── Tool panels ─── */
61
+ --xeno-tool-expanded-bg: #090a0c;
62
+ --xeno-tool-expanded-border: rgba(255, 255, 255, 0.06);
63
+ --xeno-tool-expanded-active: #131416;
64
+ }
65
+
66
+ /*
67
+ * XENO Light Mode
68
+ *
69
+ * Surface reasoning (inverted depth model):
70
+ *
71
+ * Dark mode: deeper = darker. Page #08080a → panel #161618 → header #1a1a1a
72
+ * Light mode: the page (deepest) is a cool gray. Panels float above it in white.
73
+ * Headers/toolbars within panels are slightly tinted to separate from content.
74
+ *
75
+ * Layer 0 — Page/gaps: #ececee Cool gray void, visible between panels
76
+ * Layer 1 — Canvas: #f8f8f9 Near-white content viewport
77
+ * Layer 2 — Panel body: #ffffff White panels float on gray page
78
+ * Layer 3 — Panel header: #f4f4f5 Subtle tint distinguishes from white panel
79
+ * Layer 4 — Tab bar: #ececee Same tone as page — creates visual "rail"
80
+ * Layer 5 — Input: #ffffff White input fields, distinguished by border
81
+ *
82
+ * Elevated: #f4f4f5 Popovers, dropdowns — slightly off-white
83
+ * Hover: #eaeaec Interactive hover fills
84
+ *
85
+ * Text reasoning (same hierarchy, inverted polarity):
86
+ * Dark mode white → light mode near-black #18181b
87
+ * Each step down uses zinc scale: #27272a → #3f3f46 → #52525b → #71717a → #a1a1aa
88
+ *
89
+ * Border reasoning:
90
+ * Dark mode uses white-alpha (light lines on dark bg).
91
+ * Light mode uses black-alpha (dark lines on light bg).
92
+ * Ratios are lower because black-on-white has higher perceived contrast.
93
+ *
94
+ * Accent reasoning:
95
+ * Still monochromatic. Dark mode = white at low opacity. Light mode = black at low opacity.
96
+ * Both feel neutral and precise — no color, just density.
97
+ */
98
+ :root[data-theme='light'] {
99
+ /* ─── Surfaces ─── */
100
+ --xeno-page-bg: #ececee;
101
+ --xeno-canvas-bg: #f8f8f9;
102
+ --xeno-panel-body: #ffffff;
103
+ --xeno-panel-header: #f4f4f5;
104
+ --xeno-tab-bar: #ececee;
105
+ --xeno-input-bg: #ffffff;
106
+ --xeno-dialog-bg: #ffffff;
107
+ --xeno-dropdown-bg: #ffffff;
108
+
109
+ /* Legacy aliases */
110
+ --xeno-bg-app: #ececee;
111
+ --xeno-bg-chrome: #f8f8f9;
112
+ --xeno-bg-panel: #ffffff;
113
+ --xeno-bg-elevated: #f4f4f5;
114
+ --xeno-bg-subtle: rgba(0, 0, 0, 0.025);
115
+
116
+ /* ─── Borders (black-alpha — lower ratios than dark mode) ─── */
117
+ --xeno-border-subtle: rgba(0, 0, 0, 0.04);
118
+ --xeno-border-default: rgba(0, 0, 0, 0.08);
119
+ --xeno-border-medium: rgba(0, 0, 0, 0.12);
120
+ --xeno-border-strong: rgba(0, 0, 0, 0.16);
121
+
122
+ /* ─── Text (zinc scale, darkest to lightest) ─── */
123
+ --xeno-ink-primary: #18181b;
124
+ --xeno-ink-secondary: #3f3f46;
125
+ --xeno-ink-muted: #52525b;
126
+ --xeno-ink-faint: #71717a;
127
+
128
+ /* ─── Interactive text ─── */
129
+ --xeno-text-idle: #71717a;
130
+ --xeno-text-hover: #18181b;
131
+ --xeno-text-active: #3f3f46;
132
+ --xeno-hover-bg: rgba(0, 0, 0, 0.04);
133
+
134
+ /* ─── Brand accent (monochromatic — black at low opacity) ─── */
135
+ --xeno-accent: rgba(0, 0, 0, 0.07);
136
+ --xeno-accent-hover: rgba(0, 0, 0, 0.12);
137
+ --xeno-accent-soft: rgba(0, 0, 0, 0.04);
138
+ --xeno-accent-border: rgba(0, 0, 0, 0.10);
139
+ --xeno-marker-solid: #8b8b95;
140
+ --xeno-marker-accent-solid: #64646d;
141
+
142
+ /* ─── Status (one step darker than dark mode — readability on white) ─── */
143
+ --xeno-diff-added: #16a34a;
144
+ --xeno-diff-added-bg: rgba(22, 163, 74, 0.06);
145
+ --xeno-diff-removed: #dc2626;
146
+ --xeno-diff-removed-bg: rgba(220, 38, 38, 0.06);
147
+
148
+ /* ─── Scrollbar (visible but unobtrusive on white) ─── */
149
+ --xeno-scrollbar: #d4d4d8;
150
+ --xeno-scrollbar-hover: #a1a1aa;
151
+
152
+ /* ─── Tool panels ─── */
153
+ --xeno-tool-expanded-bg: #ffffff;
154
+ --xeno-tool-expanded-border: rgba(0, 0, 0, 0.06);
155
+ --xeno-tool-expanded-active: #f4f4f5;
156
+ }
157
+
158
+ /* Base styles */
159
+ html, body {
160
+ width: 100%;
161
+ height: 100%;
162
+ margin: 0;
163
+ font-family: 'Inter', sans-serif;
164
+ background-color: var(--xeno-bg-app);
165
+ color: var(--xeno-ink-primary);
166
+ }
167
+
168
+ body, #root, #app {
169
+ width: 100%;
170
+ height: 100%;
171
+ background-color: var(--xeno-bg-app);
172
+ color: var(--xeno-ink-primary);
173
+ }
174
+
175
+ /* Custom scrollbar - minimal */
176
+ ::-webkit-scrollbar {
177
+ width: 6px;
178
+ height: 6px;
179
+ }
180
+
181
+ ::-webkit-scrollbar-track {
182
+ background: transparent;
183
+ }
184
+
185
+ ::-webkit-scrollbar-thumb {
186
+ background: var(--xeno-scrollbar);
187
+ border-radius: 3px;
188
+ }
189
+
190
+ ::-webkit-scrollbar-thumb:hover {
191
+ background: var(--xeno-scrollbar-hover);
192
+ }
193
+
194
+ /* Agent interface scrollbars — slimmer, rounded, and inset from panel edge */
195
+ .agent-scrollbar {
196
+ scrollbar-width: thin;
197
+ scrollbar-color: rgba(255, 255, 255, 0.12) transparent;
198
+ }
199
+
200
+ .agent-scrollbar::-webkit-scrollbar {
201
+ width: 5px;
202
+ height: 5px;
203
+ }
204
+
205
+ .agent-scrollbar::-webkit-scrollbar-track {
206
+ background: transparent;
207
+ margin: 8px 4px 8px 0;
208
+ }
209
+
210
+ .agent-scrollbar::-webkit-scrollbar-thumb {
211
+ background: rgba(255, 255, 255, 0.12);
212
+ border-radius: 2px;
213
+ }
214
+
215
+ .agent-scrollbar::-webkit-scrollbar-thumb:hover {
216
+ background: rgba(255, 255, 255, 0.22);
217
+ }
218
+
219
+ /* Hide scrollbar utility */
220
+ .hide-scrollbar {
221
+ -ms-overflow-style: none;
222
+ scrollbar-width: none;
223
+ }
224
+
225
+ .hide-scrollbar::-webkit-scrollbar {
226
+ display: none;
227
+ }
228
+
229
+ /* Disable text selection for UI elements */
230
+ .no-select {
231
+ -webkit-user-select: none;
232
+ user-select: none;
233
+ }
234
+
235
+ /* Focus styles */
236
+ *:focus {
237
+ outline: none;
238
+ }
239
+
240
+ *:focus-visible {
241
+ outline: 2px solid var(--xeno-accent-border);
242
+ outline-offset: 2px;
243
+ }
244
+
245
+ /* Draggable regions for frameless window */
246
+ .drag-region {
247
+ -webkit-app-region: drag;
248
+ }
249
+
250
+ .no-drag {
251
+ -webkit-app-region: no-drag;
252
+ }
253
+
254
+ /* Glass effect */
255
+ .glass {
256
+ background: var(--xeno-bg-subtle);
257
+ backdrop-filter: blur(10px);
258
+ -webkit-backdrop-filter: blur(10px);
259
+ border: 1px solid var(--xeno-border-subtle);
260
+ }
261
+
262
+ /* Vignette background effect */
263
+ .bg-vignette {
264
+ background: radial-gradient(ellipse 60% 60% at 50% 50%, transparent 0%, var(--xeno-bg-app) 100%);
265
+ }
266
+
267
+ /* Gradient orbs */
268
+ .gradient-orb {
269
+ position: absolute;
270
+ border-radius: 9999px;
271
+ filter: blur(60px);
272
+ pointer-events: none;
273
+ }
274
+
275
+ .gradient-orb-1 {
276
+ width: 24rem;
277
+ height: 24rem;
278
+ background: var(--xeno-bg-subtle);
279
+ top: 25%;
280
+ left: 25%;
281
+ }
282
+
283
+ .gradient-orb-2 {
284
+ width: 24rem;
285
+ height: 24rem;
286
+ background: var(--xeno-bg-subtle);
287
+ bottom: 25%;
288
+ right: 25%;
289
+ }
290
+
291
+ .xeno-app-shell {
292
+ background-color: var(--xeno-bg-app);
293
+ color: var(--xeno-ink-primary);
294
+ }
295
+
296
+ .xeno-chrome-shell {
297
+ background-color: var(--xeno-bg-chrome);
298
+ color: var(--xeno-ink-primary);
299
+ }
300
+
301
+ .xeno-panel-shell {
302
+ background-color: var(--xeno-bg-panel);
303
+ color: var(--xeno-ink-primary);
304
+ }
305
+
306
+ .xeno-elevated-shell {
307
+ background-color: var(--xeno-bg-elevated);
308
+ color: var(--xeno-ink-primary);
309
+ }
310
+
311
+ .xeno-agent-footer-dock {
312
+ background-color: var(--xeno-bg-app);
313
+ background-image: none;
314
+ border-top: 0;
315
+ box-shadow: none;
316
+ filter: none;
317
+ }
318
+
319
+ .xeno-agent-composer-shell {
320
+ background-color: var(--xeno-bg-app);
321
+ background-image: none;
322
+ box-shadow: none;
323
+ filter: none;
324
+ }
325
+
326
+ .xeno-agent-footer-dock *,
327
+ .xeno-agent-composer-shell * {
328
+ box-shadow: none !important;
329
+ filter: none !important;
330
+ }
331
+
332
+ .xeno-border-subtle {
333
+ border-color: var(--xeno-border-subtle);
334
+ }
335
+
336
+ .xeno-text-primary {
337
+ color: var(--xeno-ink-primary);
338
+ }
339
+
340
+ .xeno-text-secondary {
341
+ color: var(--xeno-ink-secondary);
342
+ }
343
+
344
+ .xeno-text-muted {
345
+ color: var(--xeno-ink-muted);
346
+ }
347
+
348
+ .xeno-text-faint {
349
+ color: var(--xeno-ink-faint);
350
+ }
351
+
352
+ .xeno-titlebar-toggle {
353
+ background-color: var(--xeno-bg-panel);
354
+ border: 1px solid var(--xeno-border-subtle);
355
+ }
356
+
357
+ .xeno-titlebar-toggle-button {
358
+ color: var(--xeno-ink-muted);
359
+ }
360
+
361
+ .xeno-titlebar-toggle-button:hover {
362
+ color: var(--xeno-ink-secondary);
363
+ }
364
+
365
+ .xeno-titlebar-toggle-button[data-active='true'] {
366
+ background-color: var(--xeno-accent-soft);
367
+ color: var(--xeno-ink-primary);
368
+ }
369
+
370
+ /*
371
+ * Light-mode compatibility layer
372
+ *
373
+ * Maps hardcoded dark Tailwind classes → light equivalents.
374
+ * Each mapping is reasoned from the surface hierarchy above.
375
+ *
376
+ * Dark hex → Light hex reasoning:
377
+ * #08080a (page void) → #ececee (cool gray void between panels)
378
+ * #111111 (canvas) → #f8f8f9 (near-white content viewport)
379
+ * #111115 (dialog) → #ffffff (white modal floating on gray backdrop)
380
+ * #131416 (between layers) → #f4f4f5 (between white and off-white)
381
+ * #161618 (panel body) → #ffffff (white panels — primary container)
382
+ * #18181b (cards/surface1) → #ffffff (white cards on gray page)
383
+ * #1a1a1a (panel header) → #f4f4f5 (subtle off-white, separates from white panel)
384
+ * #1E1E1E (surface2) → #f0f0f2 (slightly darker than panel, grouping)
385
+ * #222224 (surface3) → #eaeaec (elevated surface, popovers)
386
+ * #252525 (surface3 alt) → #e8e8ea (hover on elevated surfaces)
387
+ * #2a2a2d (surface4) → #e4e4e7 (hover fills)
388
+ * #2b2b2b (input) → #ffffff (white input, distinguished by border)
389
+ * #101011 (dropdown) → #ffffff (white dropdown, floating with shadow)
390
+ *
391
+ * White-alpha → Black-alpha reasoning:
392
+ * Black on white has ~1.6x higher perceived contrast than white on black.
393
+ * So we scale down: white/0.08 in dark → black/0.05 in light gives equal weight.
394
+ *
395
+ * Text reasoning:
396
+ * text-white (100%) → #18181b (zinc-900 — not pure black, matches XENO restraint)
397
+ * Each opacity step maps to a zinc-scale equivalent that maintains readability.
398
+ */
399
+
400
+ /* ─── Surface hex overrides ─── */
401
+ :root[data-theme='light'] [class~="bg-[#08080a]"] { background-color: #ececee !important; }
402
+ :root[data-theme='light'] [class~="bg-[#0a0a0b]"] { background-color: #ececee !important; }
403
+ :root[data-theme='light'] [class~="bg-[#0a0a0c]"] { background-color: #ececee !important; }
404
+ :root[data-theme='light'] [class~="bg-[#101011]"] { background-color: #ffffff !important; }
405
+ :root[data-theme='light'] [class~="bg-[#111111]"] { background-color: #f8f8f9 !important; }
406
+ :root[data-theme='light'] [class~="bg-[#111113]"] { background-color: #f8f8f9 !important; }
407
+ :root[data-theme='light'] [class~="bg-[#111115]"] { background-color: #ffffff !important; }
408
+ :root[data-theme='light'] [class~="bg-[#131416]"] { background-color: #f4f4f5 !important; }
409
+ :root[data-theme='light'] [class~="bg-[#161618]"] { background-color: #ffffff !important; }
410
+ :root[data-theme='light'] [class~="bg-[#18181b]"] { background-color: #ffffff !important; }
411
+ :root[data-theme='light'] [class~="bg-[#1a1a1a]"] { background-color: #f4f4f5 !important; }
412
+ :root[data-theme='light'] [class~="bg-[#1a1a1c]"] { background-color: #f4f4f5 !important; }
413
+ :root[data-theme='light'] [class~="bg-[#1E1E1E]"] { background-color: #f0f0f2 !important; }
414
+ :root[data-theme='light'] [class~="bg-[#222224]"] { background-color: #eaeaec !important; }
415
+ :root[data-theme='light'] [class~="bg-[#252525]"] { background-color: #e8e8ea !important; }
416
+ :root[data-theme='light'] [class~="bg-[#272727]"] { background-color: #ececee !important; }
417
+ :root[data-theme='light'] [class~="bg-[#2a2a2d]"] { background-color: #e4e4e7 !important; }
418
+ :root[data-theme='light'] [class~="bg-[#2b2b2b]"] { background-color: #ffffff !important; }
419
+ :root[data-theme='light'] [class~="bg-[#333336]"] { background-color: #e0e0e3 !important; }
420
+ :root[data-theme='light'] [class~="bg-black"] { background-color: #ececee !important; }
421
+
422
+ /* ─── White-alpha backgrounds → black-alpha (scaled ×0.65 for perceptual parity) ─── */
423
+ :root[data-theme='light'] [class~="bg-white/[0.02]"] { background-color: rgba(0,0,0,0.013) !important; }
424
+ :root[data-theme='light'] [class~="bg-white/[0.03]"] { background-color: rgba(0,0,0,0.02) !important; }
425
+ :root[data-theme='light'] [class~="bg-white/[0.04]"] { background-color: rgba(0,0,0,0.025) !important; }
426
+ :root[data-theme='light'] [class~="bg-white/[0.05]"] { background-color: rgba(0,0,0,0.03) !important; }
427
+ :root[data-theme='light'] [class~="bg-white/[0.06]"] { background-color: rgba(0,0,0,0.04) !important; }
428
+ :root[data-theme='light'] [class~="bg-white/[0.08]"] { background-color: rgba(0,0,0,0.05) !important; }
429
+ :root[data-theme='light'] [class~="bg-white/[0.1]"] { background-color: rgba(0,0,0,0.065) !important; }
430
+ :root[data-theme='light'] [class~="bg-white/[0.12]"] { background-color: rgba(0,0,0,0.08) !important; }
431
+ :root[data-theme='light'] [class~="bg-white/[0.15]"] { background-color: rgba(0,0,0,0.10) !important; }
432
+ :root[data-theme='light'] [class~="bg-white/[0.25]"] { background-color: rgba(0,0,0,0.15) !important; }
433
+ :root[data-theme='light'] [class~="bg-white/10"] { background-color: rgba(0,0,0,0.065) !important; }
434
+ :root[data-theme='light'] [class~="bg-white/20"] { background-color: rgba(0,0,0,0.12) !important; }
435
+ :root[data-theme='light'] [class~="bg-white/50"] { background-color: rgba(0,0,0,0.30) !important; }
436
+
437
+ /* Black-alpha bgs on light → lighter (already dark bg, reduce intensity) */
438
+ :root[data-theme='light'] [class~="bg-black/30"] { background-color: rgba(0,0,0,0.04) !important; }
439
+ :root[data-theme='light'] [class~="bg-black/60"] { background-color: rgba(0,0,0,0.06) !important; }
440
+
441
+ /* ─── Border overrides ─── */
442
+ /* Opaque dark borders → opaque light borders (zinc scale) */
443
+ :root[data-theme='light'] [class~="border-[#27272a]"] { border-color: #d4d4d8 !important; }
444
+ :root[data-theme='light'] [class~="border-[#3a3a3d]"] { border-color: #c4c4c8 !important; }
445
+ :root[data-theme='light'] [class~="border-[#3f3f46]"] { border-color: #a1a1aa !important; }
446
+ /* White-alpha borders → black-alpha (scaled ×0.8 — borders need more presence) */
447
+ :root[data-theme='light'] [class~="border-white/[0.04]"] { border-color: rgba(0,0,0,0.04) !important; }
448
+ :root[data-theme='light'] [class~="border-white/[0.05]"] { border-color: rgba(0,0,0,0.05) !important; }
449
+ :root[data-theme='light'] [class~="border-white/[0.06]"] { border-color: rgba(0,0,0,0.06) !important; }
450
+ :root[data-theme='light'] [class~="border-white/[0.08]"] { border-color: rgba(0,0,0,0.08) !important; }
451
+ :root[data-theme='light'] [class~="border-white/[0.1]"] { border-color: rgba(0,0,0,0.10) !important; }
452
+ :root[data-theme='light'] [class~="border-white/[0.12]"] { border-color: rgba(0,0,0,0.12) !important; }
453
+ :root[data-theme='light'] [class~="border-white/[0.15]"] { border-color: rgba(0,0,0,0.14) !important; }
454
+ :root[data-theme='light'] [class~="border-white/10"] { border-color: rgba(0,0,0,0.08) !important; }
455
+ :root[data-theme='light'] [class~="border-white/40"] { border-color: rgba(0,0,0,0.22) !important; }
456
+ :root[data-theme='light'] [class~="border-transparent"] { border-color: transparent !important; }
457
+
458
+ /*
459
+ * ─── Text weight mapping — white opacity → zinc scale ───
460
+ *
461
+ * Tier 1 — Ghostly (/10-/15): #d4d4d8 zinc-300 Faintest hints, decorative
462
+ * Tier 2 — Dim (/18-/30): #a1a1aa zinc-400 Timestamps, tertiary info
463
+ * Tier 3 — Muted (/32-/42): #71717a zinc-500 Muted labels, metadata
464
+ * Tier 4 — Secondary (/45-/55): #52525b zinc-600 Labels, supporting info
465
+ * Tier 5 — Body (/58-/72): #3f3f46 zinc-700 Body text, descriptions
466
+ * Tier 6 — Strong (/74-/86): #27272a zinc-800 Active values, important labels
467
+ * Tier 7 — Primary (/88-100): #18181b zinc-900 Headings, primary content
468
+ */
469
+
470
+ /* Tier 7 — Primary */
471
+ :root[data-theme='light'] [class~="text-white"] { color: #18181b !important; }
472
+ :root[data-theme='light'] [class~="text-white/95"] { color: #18181b !important; }
473
+ :root[data-theme='light'] [class~="text-white/92"] { color: #18181b !important; }
474
+ :root[data-theme='light'] [class~="text-white/90"] { color: #18181b !important; }
475
+ :root[data-theme='light'] [class~="text-white/88"] { color: #18181b !important; }
476
+ /* Tier 6 — Strong */
477
+ :root[data-theme='light'] [class~="text-white/86"] { color: #27272a !important; }
478
+ :root[data-theme='light'] [class~="text-white/85"] { color: #27272a !important; }
479
+ :root[data-theme='light'] [class~="text-white/84"] { color: #27272a !important; }
480
+ :root[data-theme='light'] [class~="text-white/82"] { color: #27272a !important; }
481
+ :root[data-theme='light'] [class~="text-white/80"] { color: #27272a !important; }
482
+ :root[data-theme='light'] [class~="text-white/78"] { color: #27272a !important; }
483
+ :root[data-theme='light'] [class~="text-white/76"] { color: #27272a !important; }
484
+ :root[data-theme='light'] [class~="text-white/75"] { color: #27272a !important; }
485
+ :root[data-theme='light'] [class~="text-white/74"] { color: #27272a !important; }
486
+ /* Tier 5 — Body */
487
+ :root[data-theme='light'] [class~="text-white/72"] { color: #3f3f46 !important; }
488
+ :root[data-theme='light'] [class~="text-white/70"] { color: #3f3f46 !important; }
489
+ :root[data-theme='light'] [class~="text-white/68"] { color: #3f3f46 !important; }
490
+ :root[data-theme='light'] [class~="text-white/65"] { color: #3f3f46 !important; }
491
+ :root[data-theme='light'] [class~="text-white/64"] { color: #3f3f46 !important; }
492
+ :root[data-theme='light'] [class~="text-white/62"] { color: #3f3f46 !important; }
493
+ :root[data-theme='light'] [class~="text-white/60"] { color: #3f3f46 !important; }
494
+ :root[data-theme='light'] [class~="text-white/58"] { color: #3f3f46 !important; }
495
+ /* Tier 4 — Secondary */
496
+ :root[data-theme='light'] [class~="text-white/55"] { color: #52525b !important; }
497
+ :root[data-theme='light'] [class~="text-white/54"] { color: #52525b !important; }
498
+ :root[data-theme='light'] [class~="text-white/52"] { color: #52525b !important; }
499
+ :root[data-theme='light'] [class~="text-white/50"] { color: #52525b !important; }
500
+ :root[data-theme='light'] [class~="text-white/48"] { color: #52525b !important; }
501
+ :root[data-theme='light'] [class~="text-white/45"] { color: #52525b !important; }
502
+ /* Tier 3 — Muted */
503
+ :root[data-theme='light'] [class~="text-white/42"] { color: #71717a !important; }
504
+ :root[data-theme='light'] [class~="text-white/40"] { color: #71717a !important; }
505
+ :root[data-theme='light'] [class~="text-white/38"] { color: #71717a !important; }
506
+ :root[data-theme='light'] [class~="text-white/36"] { color: #71717a !important; }
507
+ :root[data-theme='light'] [class~="text-white/35"] { color: #71717a !important; }
508
+ :root[data-theme='light'] [class~="text-white/34"] { color: #71717a !important; }
509
+ :root[data-theme='light'] [class~="text-white/32"] { color: #71717a !important; }
510
+ /* Tier 2 — Dim */
511
+ :root[data-theme='light'] [class~="text-white/30"] { color: #a1a1aa !important; }
512
+ :root[data-theme='light'] [class~="text-white/28"] { color: #a1a1aa !important; }
513
+ :root[data-theme='light'] [class~="text-white/26"] { color: #a1a1aa !important; }
514
+ :root[data-theme='light'] [class~="text-white/25"] { color: #a1a1aa !important; }
515
+ :root[data-theme='light'] [class~="text-white/24"] { color: #a1a1aa !important; }
516
+ :root[data-theme='light'] [class~="text-white/22"] { color: #a1a1aa !important; }
517
+ :root[data-theme='light'] [class~="text-white/20"] { color: #a1a1aa !important; }
518
+ :root[data-theme='light'] [class~="text-white/18"] { color: #a1a1aa !important; }
519
+ /* Tier 1 — Ghostly */
520
+ :root[data-theme='light'] [class~="text-white/15"] { color: #d4d4d8 !important; }
521
+ :root[data-theme='light'] [class~="text-white/10"] { color: #d4d4d8 !important; }
522
+ :root[data-theme='light'] [class~="text-white/0"] { color: transparent !important; }
523
+
524
+ /* ─── Design system text tokens ─── */
525
+ :root[data-theme='light'] [class~="text-[#ffffff]"] { color: #18181b !important; }
526
+ :root[data-theme='light'] [class~="text-[#E0E0E0]"] { color: #3f3f46 !important; }
527
+ :root[data-theme='light'] [class~="text-[#d1d5db]"] { color: #3f3f46 !important; }
528
+ :root[data-theme='light'] [class~="text-[#9ca3af]"] { color: #52525b !important; }
529
+ :root[data-theme='light'] [class~="text-[#6b7280]"] { color: #71717a !important; }
530
+ :root[data-theme='light'] [class~="text-[#4b5563]"] { color: #a1a1aa !important; }
531
+ :root[data-theme='light'] [class~="text-[#7f7f86]"] { color: #71717a !important; }
532
+ :root[data-theme='light'] [class~="text-[#d8d8de]"] { color: #18181b !important; }
533
+ :root[data-theme='light'] [class~="text-[#acacb4]"] { color: #3f3f46 !important; }
534
+ :root[data-theme='light'] [class~="text-[#111418]"] { color: #18181b !important; }
535
+ :root[data-theme='light'] [class~="text-[#08080a]"] { color: #18181b !important; }
536
+ :root[data-theme='light'] [class~="text-[#09090b]"] { color: #18181b !important; }
537
+
538
+ /* ─── Placeholder overrides ─── */
539
+ :root[data-theme='light'] [class~="placeholder:text-[#4b5563]"]::placeholder { color: #a1a1aa !important; }
540
+ :root[data-theme='light'] [class~="placeholder:text-[#6b7280]"]::placeholder { color: #a1a1aa !important; }
541
+ :root[data-theme='light'] [class~="placeholder:text-white/30"]::placeholder { color: #a1a1aa !important; }
542
+
543
+ /* ─── Hover text overrides ─── */
544
+ :root[data-theme='light'] [class~="hover:text-white"]:hover { color: #18181b !important; }
545
+ :root[data-theme='light'] [class~="hover:text-white/70"]:hover { color: #3f3f46 !important; }
546
+ :root[data-theme='light'] [class~="hover:text-white/80"]:hover { color: #27272a !important; }
547
+ :root[data-theme='light'] [class~="hover:text-white/90"]:hover { color: #18181b !important; }
548
+ :root[data-theme='light'] [class~="hover:text-[#9ca3af]"]:hover { color: #3f3f46 !important; }
549
+
550
+ /* ─── Additional surface hex overrides ─── */
551
+ :root[data-theme='light'] [class~="bg-[#09090b]"] { background-color: #ececee !important; }
552
+ :root[data-theme='light'] [class~="bg-[#0b0b0d]"] { background-color: #ececee !important; }
553
+ :root[data-theme='light'] [class~="bg-[#0c0c0e]"] { background-color: #f0f0f2 !important; }
554
+ :root[data-theme='light'] [class~="bg-[#0e0e11]"] { background-color: #f4f4f5 !important; }
555
+ :root[data-theme='light'] [class~="bg-[#111114]"] { background-color: #f8f8f9 !important; }
556
+ :root[data-theme='light'] [class~="bg-[#18181a]"] { background-color: #ffffff !important; }
557
+ :root[data-theme='light'] [class~="bg-[#1a1b1e]"] { background-color: #f4f4f5 !important; }
558
+ :root[data-theme='light'] [class~="bg-[#3a3a3d]"] { background-color: #e0e0e3 !important; }
559
+ :root[data-theme='light'] [class~="bg-[#27272a]"] { background-color: #ececee !important; }
560
+ :root[data-theme='light'] [class~="bg-[#f4f7fb]"] { background-color: #f4f4f5 !important; }
561
+ :root[data-theme='light'] [class~="bg-[#1a0f12]"] { background-color: #fef2f2 !important; } /* error tint */
562
+ :root[data-theme='light'] [class~="bg-transparent"] { background-color: transparent !important; }
563
+
564
+ /* ─── Hover surface overrides (all hex + alpha values found in codebase) ─── */
565
+ :root[data-theme='light'] [class~="hover:bg-[#1E1E1E]"]:hover { background-color: #f0f0f2 !important; }
566
+ :root[data-theme='light'] [class~="hover:bg-[#252525]"]:hover { background-color: #e8e8ea !important; }
567
+ :root[data-theme='light'] [class~="hover:bg-[#2a2a2d]"]:hover { background-color: #e4e4e7 !important; }
568
+ :root[data-theme='light'] [class~="hover:bg-[#333336]"]:hover { background-color: #e0e0e3 !important; }
569
+ :root[data-theme='light'] [class~="hover:bg-[#3a3a3d]"]:hover { background-color: #dcdce0 !important; }
570
+ :root[data-theme='light'] [class~="hover:bg-[#1a1b1e]"]:hover { background-color: #eaeaec !important; }
571
+ :root[data-theme='light'] [class~="hover:bg-[#f4f7fb]"]:hover { background-color: #f4f4f5 !important; }
572
+ :root[data-theme='light'] [class~="hover:bg-white/[0.02]"]:hover { background-color: rgba(0,0,0,0.013) !important; }
573
+ :root[data-theme='light'] [class~="hover:bg-white/[0.03]"]:hover { background-color: rgba(0,0,0,0.02) !important; }
574
+ :root[data-theme='light'] [class~="hover:bg-white/[0.04]"]:hover { background-color: rgba(0,0,0,0.025) !important; }
575
+ :root[data-theme='light'] [class~="hover:bg-white/[0.05]"]:hover { background-color: rgba(0,0,0,0.03) !important; }
576
+ :root[data-theme='light'] [class~="hover:bg-white/[0.06]"]:hover { background-color: rgba(0,0,0,0.04) !important; }
577
+ :root[data-theme='light'] [class~="hover:bg-white/[0.08]"]:hover { background-color: rgba(0,0,0,0.05) !important; }
578
+ :root[data-theme='light'] [class~="hover:bg-white/[0.1]"]:hover { background-color: rgba(0,0,0,0.065) !important; }
579
+ :root[data-theme='light'] [class~="hover:bg-white/[0.10]"]:hover { background-color: rgba(0,0,0,0.065) !important; }
580
+ :root[data-theme='light'] [class~="hover:bg-white/[0.12]"]:hover { background-color: rgba(0,0,0,0.08) !important; }
581
+ :root[data-theme='light'] [class~="hover:bg-white/[0.14]"]:hover { background-color: rgba(0,0,0,0.09) !important; }
582
+ :root[data-theme='light'] [class~="hover:bg-white/[0.15]"]:hover { background-color: rgba(0,0,0,0.10) !important; }
583
+ :root[data-theme='light'] [class~="hover:bg-white/[0.16]"]:hover { background-color: rgba(0,0,0,0.105) !important; }
584
+ :root[data-theme='light'] [class~="hover:bg-white/[0.25]"]:hover { background-color: rgba(0,0,0,0.15) !important; }
585
+ :root[data-theme='light'] [class~="hover:bg-white/5"]:hover { background-color: rgba(0,0,0,0.03) !important; }
586
+ :root[data-theme='light'] [class~="hover:bg-white/20"]:hover { background-color: rgba(0,0,0,0.12) !important; }
587
+
588
+ /* ─── Border overrides (all opaque + alpha) ─── */
589
+ :root[data-theme='light'] [class~="border-[#333336]"] { border-color: #c4c4c8 !important; }
590
+ :root[data-theme='light'] [class~="border-[#2a2a2d]"] { border-color: #d4d4d8 !important; }
591
+ :root[data-theme='light'] [class~="border-[#52525b]"] { border-color: #a1a1aa !important; }
592
+ :root[data-theme='light'] [class~="border-[#08080a]"] { border-color: #ececee !important; }
593
+ :root[data-theme='light'] [class~="border-[#4b1f24]"] { border-color: #fecaca !important; }
594
+ :root[data-theme='light'] [class~="border-black/10"] { border-color: rgba(0,0,0,0.08) !important; }
595
+
596
+ /* ─── Hover border overrides (all values found) ─── */
597
+ :root[data-theme='light'] [class~="hover:border-[#52525b]"]:hover { border-color: #a1a1aa !important; }
598
+ :root[data-theme='light'] [class~="hover:border-[#3a3a3d]"]:hover { border-color: #a1a1aa !important; }
599
+ :root[data-theme='light'] [class~="hover:border-white/[0.1]"]:hover { border-color: rgba(0,0,0,0.10) !important; }
600
+ :root[data-theme='light'] [class~="hover:border-white/[0.10]"]:hover { border-color: rgba(0,0,0,0.10) !important; }
601
+ :root[data-theme='light'] [class~="hover:border-white/[0.12]"]:hover { border-color: rgba(0,0,0,0.12) !important; }
602
+ :root[data-theme='light'] [class~="hover:border-white/[0.14]"]:hover { border-color: rgba(0,0,0,0.14) !important; }
603
+ :root[data-theme='light'] [class~="hover:border-white/[0.15]"]:hover { border-color: rgba(0,0,0,0.14) !important; }
604
+ :root[data-theme='light'] [class~="hover:border-white/[0.25]"]:hover { border-color: rgba(0,0,0,0.18) !important; }
605
+ :root[data-theme='light'] [class~="hover:border-white/[0.4]"]:hover { border-color: rgba(0,0,0,0.25) !important; }
606
+ :root[data-theme='light'] [class~="hover:border-white/30"]:hover { border-color: rgba(0,0,0,0.18) !important; }
607
+ :root[data-theme='light'] [class~="hover:border-white/50"]:hover { border-color: rgba(0,0,0,0.30) !important; }
608
+ :root[data-theme='light'] [class~="hover:border-transparent"]:hover { border-color: transparent !important; }
609
+
610
+ /* ─── Hover text overrides (all opacity values found in codebase) ─── */
611
+ :root[data-theme='light'] [class~="hover:text-white"]:hover { color: #18181b !important; }
612
+ :root[data-theme='light'] [class~="hover:text-white/30"]:hover { color: #a1a1aa !important; }
613
+ :root[data-theme='light'] [class~="hover:text-white/40"]:hover { color: #71717a !important; }
614
+ :root[data-theme='light'] [class~="hover:text-white/45"]:hover { color: #52525b !important; }
615
+ :root[data-theme='light'] [class~="hover:text-white/50"]:hover { color: #52525b !important; }
616
+ :root[data-theme='light'] [class~="hover:text-white/55"]:hover { color: #52525b !important; }
617
+ :root[data-theme='light'] [class~="hover:text-white/58"]:hover { color: #3f3f46 !important; }
618
+ :root[data-theme='light'] [class~="hover:text-white/60"]:hover { color: #3f3f46 !important; }
619
+ :root[data-theme='light'] [class~="hover:text-white/62"]:hover { color: #3f3f46 !important; }
620
+ :root[data-theme='light'] [class~="hover:text-white/65"]:hover { color: #3f3f46 !important; }
621
+ :root[data-theme='light'] [class~="hover:text-white/70"]:hover { color: #3f3f46 !important; }
622
+ :root[data-theme='light'] [class~="hover:text-white/72"]:hover { color: #3f3f46 !important; }
623
+ :root[data-theme='light'] [class~="hover:text-white/75"]:hover { color: #27272a !important; }
624
+ :root[data-theme='light'] [class~="hover:text-white/78"]:hover { color: #27272a !important; }
625
+ :root[data-theme='light'] [class~="hover:text-white/80"]:hover { color: #27272a !important; }
626
+ :root[data-theme='light'] [class~="hover:text-white/82"]:hover { color: #27272a !important; }
627
+ :root[data-theme='light'] [class~="hover:text-white/86"]:hover { color: #27272a !important; }
628
+ :root[data-theme='light'] [class~="hover:text-white/88"]:hover { color: #18181b !important; }
629
+ :root[data-theme='light'] [class~="hover:text-white/90"]:hover { color: #18181b !important; }
630
+ :root[data-theme='light'] [class~="hover:text-[#9ca3af]"]:hover { color: #3f3f46 !important; }
631
+
632
+ /* ─── Ring/shadow overrides ─── */
633
+ :root[data-theme='light'] [class~="shadow-[0_8px_20px_rgba(0,0,0,0.22)]"] { box-shadow: 0 8px 20px rgba(0,0,0,0.08) !important; }
634
+ :root[data-theme='light'] [class~="shadow-lg"] { box-shadow: 0 10px 15px -3px rgba(0,0,0,0.06), 0 4px 6px -4px rgba(0,0,0,0.04) !important; }
635
+
636
+ /* ─── SVG/icon overrides ─── */
637
+ :root[data-theme='light'] [class~="fill-white"] { fill: #18181b !important; }
638
+ :root[data-theme='light'] [class~="fill-current"] { fill: currentColor !important; }
639
+ :root[data-theme='light'] [class~="stroke-white"] { stroke: #18181b !important; }
640
+ :root[data-theme='light'] [class~="stroke-current"] { stroke: currentColor !important; }
641
+
642
+ /* ─── Backdrop/overlay ─── */
643
+ :root[data-theme='light'] [class~="bg-black/60"] { background-color: rgba(0,0,0,0.30) !important; }
644
+ :root[data-theme='light'] [class~="backdrop-blur-sm"] { backdrop-filter: blur(4px) !important; }
645
+ :root[data-theme='light'] [class~="backdrop-blur-md"] { backdrop-filter: blur(12px) !important; }
646
+
647
+ /* Button styles */
648
+ .btn-primary {
649
+ @apply w-full font-medium py-4 rounded-xl transition-all;
650
+ background: var(--xeno-accent);
651
+ color: var(--xeno-ink-primary);
652
+ }
653
+
654
+ .btn-secondary {
655
+ @apply px-4 py-2 rounded-xl transition-all;
656
+ border: 1px solid var(--xeno-border-subtle);
657
+ background: var(--xeno-bg-elevated);
658
+ color: var(--xeno-ink-secondary);
659
+ }
660
+
661
+ /* Input styles */
662
+ .input-field {
663
+ @apply w-full rounded-xl px-4 py-4 outline-none transition-all;
664
+ background: var(--xeno-bg-elevated);
665
+ border: 1px solid var(--xeno-border-subtle);
666
+ color: var(--xeno-ink-primary);
667
+ }
668
+
669
+ /* Card styles */
670
+ .card {
671
+ @apply rounded-xl transition-all;
672
+ background: var(--xeno-bg-panel);
673
+ border: 1px solid var(--xeno-border-subtle);
674
+ }
675
+
676
+ /* Badge styles */
677
+ .badge {
678
+ @apply inline-flex items-center gap-2 px-4 py-2 rounded-[6px];
679
+ background: var(--xeno-bg-elevated);
680
+ border: 1px solid var(--xeno-border-subtle);
681
+ }
682
+
683
+ /* Loading spinner */
684
+ @keyframes spin {
685
+ to {
686
+ transform: rotate(360deg);
687
+ }
688
+ }
689
+
690
+ .animate-spin {
691
+ animation: spin 1s linear infinite;
692
+ }
693
+
694
+ /* Pulse ring for running apps */
695
+ @keyframes pulse-ring {
696
+ 0% {
697
+ transform: scale(0.9);
698
+ opacity: 1;
699
+ }
700
+ 100% {
701
+ transform: scale(1.3);
702
+ opacity: 0;
703
+ }
704
+ }
705
+
706
+ .pulse-ring {
707
+ animation: pulse-ring 1.5s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;
708
+ }
709
+
710
+ /* Tooltip fade-out animation */
711
+ @keyframes tooltip-fade-out {
712
+ 0% {
713
+ opacity: 1;
714
+ transform: translateX(0);
715
+ }
716
+ 100% {
717
+ opacity: 0;
718
+ transform: translateX(12px);
719
+ }
720
+ }
721
+
722
+ .tooltip-exit {
723
+ animation: tooltip-fade-out 150ms ease-out forwards;
724
+ }
725
+
726
+ /* Tooltip scale animation */
727
+ @keyframes tooltip-scale-in {
728
+ 0% {
729
+ opacity: 0;
730
+ transform: scale(0.85) translateY(4px);
731
+ }
732
+ 100% {
733
+ opacity: 1;
734
+ transform: scale(1) translateY(0);
735
+ }
736
+ }
737
+
738
+ /* Modal slide-in animation */
739
+ @keyframes modal-slide-in {
740
+ 0% {
741
+ opacity: 0;
742
+ transform: translateX(-8px);
743
+ }
744
+ 100% {
745
+ opacity: 1;
746
+ transform: translateX(0);
747
+ }
748
+ }
749
+
750
+ .modal-animate {
751
+ animation: modal-slide-in 150ms ease-out forwards;
752
+ }
753
+
754
+ .tooltip-animate {
755
+ transform-origin: bottom left;
756
+ opacity: 0;
757
+ transition: opacity 150ms ease-in-out, transform 150ms ease-in-out;
758
+ }
759
+
760
+ .group:hover .tooltip-animate {
761
+ opacity: 1;
762
+ transform: scale(1) translateY(0);
763
+ }
764
+
765
+ .tooltip-animate:not(.group:hover .tooltip-animate) {
766
+ transform: scale(0.9) translateY(2px);
767
+ }
768
+
769
+ /* Showcase hover animation - movement on enter, fade only on exit */
770
+ .showcase-hover-item {
771
+ opacity: 0;
772
+ transition: opacity 300ms ease-out, transform 0ms ease-out 300ms;
773
+ }
774
+
775
+ .showcase-hover-item.from-top {
776
+ transform: translateY(-8px);
777
+ }
778
+
779
+ .showcase-hover-item.from-bottom {
780
+ transform: translateY(8px);
781
+ }
782
+
783
+ /* On hover - animate in with movement */
784
+ .group:hover .showcase-hover-item {
785
+ opacity: 1;
786
+ transform: translateY(0);
787
+ transition: opacity 400ms ease-out, transform 400ms ease-out;
788
+ }
789
+
790
+ /* News item arrow animation - enters from behind date (left), exits through border (right) */
791
+ @keyframes arrow-enter {
792
+ from {
793
+ opacity: 0;
794
+ transform: translateX(-24px);
795
+ }
796
+ to {
797
+ opacity: 1;
798
+ transform: translateX(0);
799
+ }
800
+ }
801
+
802
+ @keyframes arrow-exit {
803
+ from {
804
+ opacity: 1;
805
+ transform: translateX(0);
806
+ }
807
+ to {
808
+ opacity: 0;
809
+ transform: translateX(24px);
810
+ }
811
+ }
812
+
813
+ .news-arrow-enter {
814
+ animation: arrow-enter 300ms ease-out forwards;
815
+ }
816
+
817
+ .news-arrow-exit {
818
+ animation: arrow-exit 200ms ease-out forwards;
819
+ }
820
+
821
+ /* Agent onboarding — stage entrance animations */
822
+ @keyframes stage-fade-drop {
823
+ 0% {
824
+ opacity: 0;
825
+ transform: translateY(-12px);
826
+ }
827
+ 100% {
828
+ opacity: 1;
829
+ transform: translateY(0);
830
+ }
831
+ }
832
+
833
+ @keyframes stage-fade-rise {
834
+ 0% {
835
+ opacity: 0;
836
+ transform: translateY(8px);
837
+ }
838
+ 100% {
839
+ opacity: 1;
840
+ transform: translateY(0);
841
+ }
842
+ }
843
+
844
+ @keyframes stage-fade-in {
845
+ 0% { opacity: 0; }
846
+ 100% { opacity: 1; }
847
+ }
848
+
849
+ .stage-enter-header {
850
+ animation: stage-fade-drop 400ms cubic-bezier(0.16, 1, 0.3, 1) both;
851
+ }
852
+
853
+ .stage-enter-item {
854
+ animation: stage-fade-rise 400ms cubic-bezier(0.16, 1, 0.3, 1) both;
855
+ }
856
+
857
+ .stage-enter-fade {
858
+ animation: stage-fade-in 500ms ease-out both;
859
+ }
860
+
861
+ /* Agent chat — markdown rendering for assistant messages */
862
+ .agent-markdown p {
863
+ margin-bottom: 0.75em;
864
+ }
865
+
866
+ .agent-markdown p:last-child {
867
+ margin-bottom: 0;
868
+ }
869
+
870
+ .agent-markdown strong {
871
+ color: var(--xeno-ink-primary);
872
+ font-weight: 600;
873
+ }
874
+
875
+ .agent-markdown em {
876
+ font-style: italic;
877
+ color: var(--xeno-ink-secondary);
878
+ }
879
+
880
+ .agent-markdown h1,
881
+ .agent-markdown h2,
882
+ .agent-markdown h3,
883
+ .agent-markdown h4 {
884
+ color: var(--xeno-ink-primary);
885
+ font-weight: 600;
886
+ margin-top: 1.25em;
887
+ margin-bottom: 0.5em;
888
+ }
889
+
890
+ .agent-markdown h1:first-child,
891
+ .agent-markdown h2:first-child,
892
+ .agent-markdown h3:first-child {
893
+ margin-top: 0;
894
+ }
895
+
896
+ .agent-markdown h1 { font-size: 1.15em; }
897
+ .agent-markdown h2 { font-size: 1.05em; }
898
+ .agent-markdown h3 { font-size: 1em; }
899
+
900
+ .agent-markdown ul,
901
+ .agent-markdown ol {
902
+ margin: 0.5em 0;
903
+ padding-left: 1.5em;
904
+ }
905
+
906
+ .agent-markdown ul {
907
+ list-style: none;
908
+ padding-left: 0;
909
+ }
910
+ .agent-markdown ol { list-style-type: decimal; }
911
+
912
+ .agent-markdown li {
913
+ margin-bottom: 0.3em;
914
+ }
915
+
916
+ .agent-markdown ul > li {
917
+ position: relative;
918
+ padding-left: 1em;
919
+ }
920
+
921
+ .agent-markdown ul > li::before {
922
+ content: '';
923
+ position: absolute;
924
+ left: 0;
925
+ top: 0.72em;
926
+ width: 0.38em;
927
+ height: 0.38em;
928
+ border-radius: 2px;
929
+ background: var(--xeno-ink-muted);
930
+ transform: translateY(-50%);
931
+ }
932
+
933
+ .agent-markdown ol > li::marker {
934
+ color: var(--xeno-ink-muted);
935
+ }
936
+
937
+ .agent-markdown code {
938
+ font-family: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace;
939
+ font-size: 0.9em;
940
+ background: var(--xeno-bg-subtle);
941
+ border: 1px solid var(--xeno-border-subtle);
942
+ border-radius: 4px;
943
+ padding: 0.15em 0.4em;
944
+ color: var(--xeno-ink-secondary);
945
+ }
946
+
947
+ .agent-markdown pre {
948
+ margin: 0.75em 0;
949
+ border-radius: 8px;
950
+ background: var(--xeno-bg-elevated);
951
+ border: 1px solid var(--xeno-border-subtle);
952
+ overflow-x: auto;
953
+ padding: 0;
954
+ }
955
+
956
+ .agent-markdown pre code {
957
+ display: block;
958
+ padding: 0.85em 1em;
959
+ background: none;
960
+ border: none;
961
+ border-radius: 0;
962
+ font-size: 0.85em;
963
+ line-height: 1.6;
964
+ color: var(--xeno-ink-secondary);
965
+ white-space: pre;
966
+ }
967
+
968
+ /* Code block with header — remove double border-radius */
969
+ .agent-markdown pre .group\/code {
970
+ margin: 0;
971
+ }
972
+
973
+ .agent-markdown pre .group\/code > code {
974
+ border-radius: 0 0 8px 8px;
975
+ }
976
+
977
+ .agent-markdown blockquote {
978
+ border-left: 2px solid var(--xeno-border-strong);
979
+ padding-left: 0.85em;
980
+ margin: 0.75em 0;
981
+ color: var(--xeno-ink-muted);
982
+ }
983
+
984
+ .agent-markdown a {
985
+ color: var(--xeno-ink-secondary);
986
+ text-decoration: underline;
987
+ text-decoration-color: var(--xeno-ink-muted);
988
+ text-underline-offset: 2px;
989
+ transition: color 150ms, text-decoration-color 150ms;
990
+ }
991
+
992
+ .agent-markdown a:hover,
993
+ .agent-markdown a:focus-visible {
994
+ color: var(--xeno-ink-primary);
995
+ text-decoration-color: currentColor;
996
+ }
997
+
998
+ .agent-markdown a:focus-visible {
999
+ border-radius: 2px;
1000
+ outline: 1px solid var(--xeno-border-strong);
1001
+ outline-offset: 2px;
1002
+ }
1003
+
1004
+ .agent-markdown hr {
1005
+ border: none;
1006
+ border-top: 1px solid var(--xeno-border-subtle);
1007
+ margin: 1em 0;
1008
+ }
1009
+
1010
+ .agent-markdown table {
1011
+ width: 100%;
1012
+ border-collapse: separate;
1013
+ border-spacing: 0;
1014
+ margin: 0.75em 0;
1015
+ font-size: 0.9em;
1016
+ border: 1px solid var(--xeno-border-subtle);
1017
+ border-radius: 4px;
1018
+ overflow: hidden;
1019
+ }
1020
+
1021
+ .agent-markdown th,
1022
+ .agent-markdown td {
1023
+ padding: 0.4em 0.75em;
1024
+ border-bottom: 1px solid var(--xeno-border-subtle);
1025
+ border-right: 1px solid var(--xeno-border-subtle);
1026
+ text-align: left;
1027
+ }
1028
+
1029
+ .agent-markdown th:last-child,
1030
+ .agent-markdown td:last-child {
1031
+ border-right: none;
1032
+ }
1033
+
1034
+ .agent-markdown tr:last-child td {
1035
+ border-bottom: none;
1036
+ }
1037
+
1038
+ .agent-markdown th {
1039
+ color: var(--xeno-ink-secondary);
1040
+ font-weight: 600;
1041
+ background: var(--xeno-bg-subtle);
1042
+ }
1043
+
1044
+ /* Agent chat — image preview in markdown */
1045
+ .agent-markdown img {
1046
+ border-radius: 6px;
1047
+ max-height: 300px;
1048
+ }
1049
+
1050
+ /* Agent chat — markdown rendering for assistant thinking panel */
1051
+ .agent-thinking-markdown {
1052
+ color: var(--xeno-ink-faint);
1053
+ }
1054
+
1055
+ .agent-thinking-markdown strong {
1056
+ color: var(--xeno-ink-muted);
1057
+ }
1058
+
1059
+ .agent-thinking-markdown em {
1060
+ color: var(--xeno-ink-muted);
1061
+ }
1062
+
1063
+ .agent-thinking-markdown ul > li::before {
1064
+ background: var(--xeno-ink-faint);
1065
+ }
1066
+
1067
+ .agent-thinking-markdown ol > li::marker {
1068
+ color: var(--xeno-ink-faint);
1069
+ }
1070
+
1071
+ /* Sidebar tooltip — appears to the right of hovered button */
1072
+ .sidebar-tooltip {
1073
+ pointer-events: none;
1074
+ position: absolute;
1075
+ top: 50%;
1076
+ left: calc(100% + 12px);
1077
+ transform: translateY(-50%) scale(0.65);
1078
+ transform-origin: left center;
1079
+ opacity: 0;
1080
+ padding: 0.25rem 0.5rem;
1081
+ border-radius: 6px;
1082
+ background: var(--xeno-bg-panel);
1083
+ color: var(--xeno-ink-primary);
1084
+ border: 1px solid var(--xeno-border-subtle);
1085
+ font-size: 10px;
1086
+ font-weight: 500;
1087
+ letter-spacing: 0.03em;
1088
+ white-space: nowrap;
1089
+ box-shadow: 0 8px 24px rgba(15, 17, 21, 0.18);
1090
+ z-index: 60;
1091
+ will-change: opacity, transform;
1092
+ }
1093
+
1094
+ .sidebar-tooltip[data-state='visible'] {
1095
+ animation: sidebar-tooltip-in 180ms ease-out forwards;
1096
+ }
1097
+
1098
+ .sidebar-tooltip[data-state='hidden'] {
1099
+ animation: sidebar-tooltip-out 140ms ease-out forwards;
1100
+ }
1101
+
1102
+ @keyframes sidebar-tooltip-in {
1103
+ from {
1104
+ opacity: 0;
1105
+ transform: translateY(-50%) scale(0.65);
1106
+ }
1107
+ to {
1108
+ opacity: 1;
1109
+ transform: translateY(-50%) scale(1);
1110
+ }
1111
+ }
1112
+
1113
+ @keyframes sidebar-tooltip-out {
1114
+ from {
1115
+ opacity: 1;
1116
+ transform: translateY(-50%) scale(1);
1117
+ }
1118
+ to {
1119
+ opacity: 0;
1120
+ transform: translateY(-50%) scale(0.65);
1121
+ }
1122
+ }
1123
+
1124
+ .acp-form-input {
1125
+ width: 100%;
1126
+ border-radius: 4px;
1127
+ border: 1px solid rgba(255, 255, 255, 0.07);
1128
+ background: rgba(0, 0, 0, 0.22);
1129
+ padding: 0.45rem 0.6rem;
1130
+ color: rgba(255, 255, 255, 0.76);
1131
+ font-size: 12px;
1132
+ line-height: 1.35;
1133
+ outline: none;
1134
+ transition: border-color 160ms ease, background-color 160ms ease, transform 160ms ease;
1135
+ }
1136
+
1137
+ .acp-form-input::placeholder {
1138
+ color: rgba(255, 255, 255, 0.18);
1139
+ }
1140
+
1141
+ .acp-form-input:focus {
1142
+ border-color: rgba(255, 255, 255, 0.18);
1143
+ background: rgba(255, 255, 255, 0.035);
1144
+ }
1145
+
1146
+ .acp-form-input:disabled {
1147
+ opacity: 0.45;
1148
+ }
1149
+
1150
+ .xeno-agent-session-tabs-scroll {
1151
+ scrollbar-width: none;
1152
+ }
1153
+
1154
+ .xeno-agent-session-tabs-scroll::-webkit-scrollbar {
1155
+ display: none;
1156
+ }