symbiote-ui 0.3.0-alpha.4

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 (322) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/LICENSE +21 -0
  3. package/README.md +76 -0
  4. package/canvas/AutoLayout.js +731 -0
  5. package/canvas/Breadcrumb/Breadcrumb.css.js +75 -0
  6. package/canvas/Breadcrumb/Breadcrumb.js +96 -0
  7. package/canvas/Breadcrumb/Breadcrumb.tpl.js +7 -0
  8. package/canvas/CanvasConnectionRenderer.js +971 -0
  9. package/canvas/CanvasGraph/CanvasGraph.css.js +29 -0
  10. package/canvas/CanvasGraph/CanvasGraph.js +1697 -0
  11. package/canvas/CanvasGraph/CanvasGraphDrawState.js +280 -0
  12. package/canvas/CanvasGraph/CanvasGraphGeometry.js +194 -0
  13. package/canvas/CanvasViewport.js +550 -0
  14. package/canvas/ConnectionRenderer.js +1283 -0
  15. package/canvas/FlowSimulator.js +326 -0
  16. package/canvas/ForceLayout.js +226 -0
  17. package/canvas/ForceWorker.js +1303 -0
  18. package/canvas/FrameManager.js +223 -0
  19. package/canvas/GraphExplorerShell/GraphExplorerShell.css.js +136 -0
  20. package/canvas/GraphExplorerShell/GraphExplorerShell.js +129 -0
  21. package/canvas/GraphExplorerShell/GraphExplorerShell.tpl.js +12 -0
  22. package/canvas/GraphTabs/GraphTabs.css.js +101 -0
  23. package/canvas/GraphTabs/GraphTabs.js +189 -0
  24. package/canvas/GraphTabs/GraphTabs.tpl.js +12 -0
  25. package/canvas/LODManager.js +88 -0
  26. package/canvas/Minimap/Minimap.css.js +73 -0
  27. package/canvas/Minimap/Minimap.js +210 -0
  28. package/canvas/Minimap/Minimap.tpl.js +7 -0
  29. package/canvas/NodeCanvas/NodeCanvas.css.js +398 -0
  30. package/canvas/NodeCanvas/NodeCanvas.js +1499 -0
  31. package/canvas/NodeCanvas/NodeCanvas.tpl.js +22 -0
  32. package/canvas/NodeSearch/NodeSearch.css.js +97 -0
  33. package/canvas/NodeSearch/NodeSearch.js +140 -0
  34. package/canvas/NodeSearch/NodeSearch.tpl.js +25 -0
  35. package/canvas/NodeViewManager.js +748 -0
  36. package/canvas/PcbRouteDiagnostics.js +463 -0
  37. package/canvas/PcbRouter.js +1127 -0
  38. package/canvas/PinExpansion.js +134 -0
  39. package/canvas/PseudoConnection.js +84 -0
  40. package/canvas/SelectionSync.js +163 -0
  41. package/canvas/SubgraphManager.js +203 -0
  42. package/canvas/SubgraphRouter.js +452 -0
  43. package/canvas/ViewportActions.js +473 -0
  44. package/canvas/graph-explorer.js +339 -0
  45. package/canvas/graph-layout.js +148 -0
  46. package/canvas/graph-model.js +68 -0
  47. package/canvas/html-in-canvas.js +202 -0
  48. package/canvas/project-graph-builder.js +440 -0
  49. package/canvas/project-graph-model.js +183 -0
  50. package/chat/ChatComposer/ChatComposer.css.js +652 -0
  51. package/chat/ChatComposer/ChatComposer.js +304 -0
  52. package/chat/ChatList/ChatList.css.js +102 -0
  53. package/chat/ChatList/ChatList.js +99 -0
  54. package/chat/ChatList/ChatList.tpl.js +20 -0
  55. package/chat/ChatListItem/ChatListItem.css.js +117 -0
  56. package/chat/ChatListItem/ChatListItem.js +32 -0
  57. package/chat/ChatListItem/ChatListItem.tpl.js +17 -0
  58. package/chat/ChatMessageItem/ChatMessageItem.css.js +628 -0
  59. package/chat/ChatMessageItem/ChatMessageItem.js +156 -0
  60. package/chat/ChatSidebar/ChatSidebar.css.js +150 -0
  61. package/chat/ChatSidebar/ChatSidebar.js +230 -0
  62. package/chat/ChatSidebar/ChatSidebar.tpl.js +18 -0
  63. package/chat/ChatSidebar/constants.js +11 -0
  64. package/chat/ChatSidebarItem/ChatSidebarItem.css.js +445 -0
  65. package/chat/ChatSidebarItem/ChatSidebarItem.js +304 -0
  66. package/chat/ChatTranscript/ChatTranscript.css.js +90 -0
  67. package/chat/ChatTranscript/ChatTranscript.js +244 -0
  68. package/chat/chat-context.js +123 -0
  69. package/chat/message-model.js +156 -0
  70. package/cli.js +20 -0
  71. package/control/Button/Button.css.js +93 -0
  72. package/control/Button/Button.js +78 -0
  73. package/control/Button/Button.tpl.js +3 -0
  74. package/control/Field/Field.css.js +91 -0
  75. package/control/Field/Field.js +17 -0
  76. package/control/Field/Field.tpl.js +3 -0
  77. package/core/Connection.js +47 -0
  78. package/core/Editor.js +449 -0
  79. package/core/Frame.js +33 -0
  80. package/core/GraphMermaid.js +348 -0
  81. package/core/GraphText.js +228 -0
  82. package/core/Node.js +145 -0
  83. package/core/Portal.js +106 -0
  84. package/core/Socket.js +187 -0
  85. package/core/SubgraphNode.js +121 -0
  86. package/core/base-path.js +55 -0
  87. package/core/dom-utils.js +14 -0
  88. package/core/index.js +18 -0
  89. package/core/local-cache.js +26 -0
  90. package/core/state-sync.js +227 -0
  91. package/custom-elements.json +6380 -0
  92. package/discover.js +240 -0
  93. package/display/Badge/Badge.css.js +44 -0
  94. package/display/Badge/Badge.js +17 -0
  95. package/display/Badge/Badge.tpl.js +3 -0
  96. package/display/Banner/Banner.css.js +61 -0
  97. package/display/Banner/Banner.js +17 -0
  98. package/display/Banner/Banner.tpl.js +3 -0
  99. package/display/CodeBlock/CodeBlock.css.js +194 -0
  100. package/display/CodeBlock/CodeBlock.js +220 -0
  101. package/display/CodeBlock/CodeBlock.tpl.js +11 -0
  102. package/display/DataTable/DataTable.css.js +101 -0
  103. package/display/DataTable/DataTable.js +136 -0
  104. package/display/DataTable/DataTable.tpl.js +13 -0
  105. package/display/EmptyState/EmptyState.css.js +33 -0
  106. package/display/EmptyState/EmptyState.js +17 -0
  107. package/display/EmptyState/EmptyState.tpl.js +3 -0
  108. package/display/EventFeed/EventFeed.css.js +145 -0
  109. package/display/EventFeed/EventFeed.js +64 -0
  110. package/display/EventFeed/EventFeed.tpl.js +14 -0
  111. package/display/EventFeed/EventFeedItem.js +116 -0
  112. package/display/EventFeed/EventFeedItem.tpl.js +22 -0
  113. package/display/LoadingOverlay/LoadingOverlay.css.js +91 -0
  114. package/display/LoadingOverlay/LoadingOverlay.js +48 -0
  115. package/display/LoadingOverlay/LoadingOverlay.tpl.js +12 -0
  116. package/display/Metric/Metric.css.js +60 -0
  117. package/display/Metric/Metric.js +17 -0
  118. package/display/Metric/Metric.tpl.js +6 -0
  119. package/display/OutputGraphPreview/OutputGraphPreview.css.js +122 -0
  120. package/display/OutputGraphPreview/OutputGraphPreview.js +89 -0
  121. package/display/OutputGraphPreview/OutputGraphPreview.tpl.js +13 -0
  122. package/display/OutputListPreview/OutputListPreview.css.js +109 -0
  123. package/display/OutputListPreview/OutputListPreview.js +77 -0
  124. package/display/OutputListPreview/OutputListPreview.tpl.js +13 -0
  125. package/display/SourceEditor/SourceEditor.css.js +39 -0
  126. package/display/SourceEditor/SourceEditor.js +129 -0
  127. package/display/SourceEditor/SourceEditor.tpl.js +10 -0
  128. package/display/SourceViewer/SourceViewer.css.js +80 -0
  129. package/display/SourceViewer/SourceViewer.js +418 -0
  130. package/display/SourceViewer/SourceViewer.tpl.js +17 -0
  131. package/display/StatusRibbon/StatusRibbon.css.js +73 -0
  132. package/display/StatusRibbon/StatusRibbon.js +87 -0
  133. package/display/StatusRibbon/StatusRibbon.tpl.js +7 -0
  134. package/display/event-feed-adapter.js +72 -0
  135. package/display/format-utils.js +29 -0
  136. package/display/highlight.js +659 -0
  137. package/display/icons.js +37 -0
  138. package/display/markdown-formatter.js +60 -0
  139. package/display/network-approval-page.js +487 -0
  140. package/display/output-preview.js +261 -0
  141. package/effects/CellBg/CellBg.css.js +33 -0
  142. package/effects/CellBg/CellBg.js +410 -0
  143. package/effects/CellBg/CellBg.tpl.js +5 -0
  144. package/graph/canvas-adapter.js +223 -0
  145. package/graph/graph-algorithms.js +31 -0
  146. package/graph/index.js +46 -0
  147. package/graph/model.js +176 -0
  148. package/graph/project-graph-build.js +66 -0
  149. package/graph/project-graph-metadata.js +253 -0
  150. package/graph/project-package.js +128 -0
  151. package/graph/project-runtime.js +116 -0
  152. package/graph/project-transaction.js +284 -0
  153. package/graph/skeleton-utils.js +84 -0
  154. package/graph/theme-contract.js +36 -0
  155. package/graph/transaction-parser.js +56 -0
  156. package/icons/MaterialSymbols.js +69 -0
  157. package/icons/material-symbols-outlined-400.ttf +0 -0
  158. package/icons/material-symbols.css +24 -0
  159. package/index.js +95 -0
  160. package/inspector/InspectorPanel/InspectorPanel.css.js +375 -0
  161. package/inspector/InspectorPanel/InspectorPanel.js +368 -0
  162. package/inspector/InspectorPanel/InspectorPanel.tpl.js +96 -0
  163. package/inspector/TemplatePreview/TemplatePreview.css.js +104 -0
  164. package/inspector/TemplatePreview/TemplatePreview.js +145 -0
  165. package/inspector/TemplatePreview/TemplatePreview.tpl.js +33 -0
  166. package/interactions/ConnectFlow.js +304 -0
  167. package/interactions/Drag.js +104 -0
  168. package/interactions/Selector.js +133 -0
  169. package/interactions/SnapGrid.js +66 -0
  170. package/interactions/Zoom.js +139 -0
  171. package/layout/ActionZone/ActionZone.css.js +88 -0
  172. package/layout/ActionZone/ActionZone.js +261 -0
  173. package/layout/ActionZone/ActionZone.tpl.js +11 -0
  174. package/layout/CrossLayoutPortalBridge/CrossLayoutPortalBridge.js +255 -0
  175. package/layout/Layout/Layout.css.js +91 -0
  176. package/layout/Layout/Layout.js +637 -0
  177. package/layout/Layout/Layout.tpl.js +27 -0
  178. package/layout/LayoutNode/LayoutNode.css.js +302 -0
  179. package/layout/LayoutNode/LayoutNode.js +509 -0
  180. package/layout/LayoutNode/LayoutNode.tpl.js +39 -0
  181. package/layout/LayoutPreview/LayoutPreview.css.js +46 -0
  182. package/layout/LayoutPreview/LayoutPreview.js +102 -0
  183. package/layout/LayoutPreview/LayoutPreview.tpl.js +6 -0
  184. package/layout/LayoutRouter/LayoutRouter.js +274 -0
  185. package/layout/LayoutRouter/SectionRegistry.js +135 -0
  186. package/layout/LayoutRouter/routerSync.js +250 -0
  187. package/layout/LayoutSidebar/LayoutSidebar.css.js +411 -0
  188. package/layout/LayoutSidebar/LayoutSidebar.js +368 -0
  189. package/layout/LayoutSidebar/LayoutSidebar.tpl.js +26 -0
  190. package/layout/LayoutSidebar/SidebarSection.css.js +20 -0
  191. package/layout/LayoutSidebar/SidebarSection.js +184 -0
  192. package/layout/LayoutSidebar/SidebarSection.tpl.js +22 -0
  193. package/layout/LayoutTree.js +373 -0
  194. package/layout/PanelMenu/PanelMenu.css.js +43 -0
  195. package/layout/PanelMenu/PanelMenu.js +95 -0
  196. package/layout/PanelMenu/PanelMenu.tpl.js +17 -0
  197. package/layout/ProjectTabs/ProjectTabs.css.js +188 -0
  198. package/layout/ProjectTabs/ProjectTabs.js +77 -0
  199. package/layout/ProjectTabs/ProjectTabs.tpl.js +15 -0
  200. package/layout/index.js +40 -0
  201. package/list/ListDetailShell/ListDetailShell.css.js +128 -0
  202. package/list/ListDetailShell/ListDetailShell.js +72 -0
  203. package/list/ListDetailShell/ListDetailShell.tpl.js +36 -0
  204. package/list/ListItem/ListItem.css.js +111 -0
  205. package/list/ListItem/ListItem.js +66 -0
  206. package/list/ListItem/ListItem.tpl.js +18 -0
  207. package/locale/index.js +503 -0
  208. package/manifest/component-registry.js +2446 -0
  209. package/manifest/graph-schema.js +285 -0
  210. package/manifest/index.js +6 -0
  211. package/manifest/project-schema-catalog.js +246 -0
  212. package/manifest/rule-catalog.js +201 -0
  213. package/manifest/theme-catalog.js +2149 -0
  214. package/manifest/ui-schema-catalog.js +334 -0
  215. package/menu/ContextMenu/ContextMenu.css.js +61 -0
  216. package/menu/ContextMenu/ContextMenu.js +82 -0
  217. package/menu/ContextMenu/ContextMenu.tpl.js +19 -0
  218. package/navigation/QuickOpen/QuickOpen.css.js +92 -0
  219. package/navigation/QuickOpen/QuickOpen.js +185 -0
  220. package/navigation/QuickOpen/QuickOpen.tpl.js +15 -0
  221. package/navigation/quick-open-utils.js +101 -0
  222. package/node/CtrlItem/CtrlItem.css.js +41 -0
  223. package/node/CtrlItem/CtrlItem.js +24 -0
  224. package/node/CtrlItem/CtrlItem.tpl.js +17 -0
  225. package/node/GraphFrame/GraphFrame.css.js +66 -0
  226. package/node/GraphFrame/GraphFrame.js +32 -0
  227. package/node/GraphFrame/GraphFrame.tpl.js +13 -0
  228. package/node/GraphNode/GraphNode.css.js +815 -0
  229. package/node/GraphNode/GraphNode.js +173 -0
  230. package/node/GraphNode/GraphNode.tpl.js +33 -0
  231. package/node/NodeCallout/NodeCallout.css.js +91 -0
  232. package/node/NodeCallout/NodeCallout.js +281 -0
  233. package/node/NodeCallout/NodeCallout.tpl.js +8 -0
  234. package/node/NodeSocket/NodeSocket.css.js +68 -0
  235. package/node/NodeSocket/NodeSocket.js +26 -0
  236. package/node/NodeSocket/NodeSocket.tpl.js +7 -0
  237. package/node/PortItem/PortItem.css.js +93 -0
  238. package/node/PortItem/PortItem.js +87 -0
  239. package/node/PortItem/PortItem.tpl.js +10 -0
  240. package/package.json +165 -0
  241. package/palette/PaletteBrowser/PaletteBrowser.css.js +143 -0
  242. package/palette/PaletteBrowser/PaletteBrowser.js +152 -0
  243. package/palette/PaletteBrowser/PaletteBrowser.tpl.js +23 -0
  244. package/plugins/History.js +408 -0
  245. package/plugins/Readonly.js +60 -0
  246. package/rules/symbiote-3x.json +170 -0
  247. package/schemas/component-descriptor-v1.json +91 -0
  248. package/schemas/component-descriptor-v2.json +145 -0
  249. package/schemas/graph-model-v1.json +179 -0
  250. package/schemas/graph-v1.json +91 -0
  251. package/schemas/project-package-v1.json +102 -0
  252. package/schemas/project-transaction-v1.json +114 -0
  253. package/schemas/runtime-ui-v1.json +80 -0
  254. package/schemas/theme-rule-block-v1.json +73 -0
  255. package/shapes/CircleShape.js +79 -0
  256. package/shapes/CommentShape.js +35 -0
  257. package/shapes/DiamondShape.js +130 -0
  258. package/shapes/NodeShape.js +79 -0
  259. package/shapes/PillShape.js +91 -0
  260. package/shapes/RectShape.js +84 -0
  261. package/shapes/SVGShape.js +525 -0
  262. package/shapes/index.js +63 -0
  263. package/surface/Card/Card.css.js +57 -0
  264. package/surface/Card/Card.js +17 -0
  265. package/surface/Card/Card.tpl.js +3 -0
  266. package/themes/Palette.js +30 -0
  267. package/themes/Skin.js +113 -0
  268. package/themes/Theme.js +82 -0
  269. package/themes/carbon.js +135 -0
  270. package/themes/dark.js +140 -0
  271. package/themes/default-dark.js +714 -0
  272. package/themes/default-provider.css +635 -0
  273. package/themes/default-provider.js +718 -0
  274. package/themes/ebook.js +136 -0
  275. package/themes/grey.js +137 -0
  276. package/themes/light.js +139 -0
  277. package/themes/neon.js +138 -0
  278. package/themes/pcb.js +273 -0
  279. package/themes/synthwave.js +138 -0
  280. package/tokens/base.json +29 -0
  281. package/tokens/themes/carbon.json +11 -0
  282. package/tokens/themes/dark.json +12 -0
  283. package/tokens/themes/default-dark.json +1543 -0
  284. package/tokens/themes/default-provider.json +1543 -0
  285. package/tokens/themes/ebook.json +11 -0
  286. package/tokens/themes/grey.json +11 -0
  287. package/tokens/themes/light.json +12 -0
  288. package/tokens/themes/neon.json +11 -0
  289. package/tokens/themes/pcb.json +11 -0
  290. package/tokens/themes/synthwave.json +11 -0
  291. package/toolbar/QuickToolbar/QuickToolbar.css.js +152 -0
  292. package/toolbar/QuickToolbar/QuickToolbar.js +529 -0
  293. package/toolbar/QuickToolbar/QuickToolbar.tpl.js +34 -0
  294. package/tree/TreePanel/TreePanel.css.js +112 -0
  295. package/tree/TreePanel/TreePanel.js +147 -0
  296. package/tree/TreePanel/TreePanel.tpl.js +18 -0
  297. package/tree/TreeView/TreeView.css.js +122 -0
  298. package/tree/TreeView/TreeView.js +365 -0
  299. package/tree/TreeView/TreeView.tpl.js +10 -0
  300. package/ui/dialogs.js +221 -0
  301. package/ui/host-adapters.js +114 -0
  302. package/ui/index.js +660 -0
  303. package/ui/locale.js +50 -0
  304. package/ui/overlay-stack.js +89 -0
  305. package/ui/shared-styles.js +26 -0
  306. package/webmcp.js +37 -0
  307. package/xr/deep-graph.js +646 -0
  308. package/xr/emulation.js +198 -0
  309. package/xr/gesture.js +228 -0
  310. package/xr/html-canvas-renderer.js +472 -0
  311. package/xr/index.js +15 -0
  312. package/xr/layout-projection.js +1046 -0
  313. package/xr/panel-frame.js +128 -0
  314. package/xr/panel-host.js +267 -0
  315. package/xr/pointer.js +258 -0
  316. package/xr/scene-controller.js +242 -0
  317. package/xr/spatial-scene.js +212 -0
  318. package/xr/theme-bridge.js +105 -0
  319. package/xr/three-webxr-adapter.js +3439 -0
  320. package/xr/webgl-layer-renderer.js +419 -0
  321. package/xr/webxr.js +679 -0
  322. package/xr/workbench.js +516 -0
@@ -0,0 +1,628 @@
1
+ export default `
2
+ :host,
3
+ chat-message-item {
4
+ display: contents;
5
+ }
6
+
7
+ .message {
8
+ max-width: 100%;
9
+ display: flex;
10
+ }
11
+
12
+ .message.board {
13
+ width: 100%;
14
+ }
15
+
16
+ .message.tool {
17
+ align-self: flex-start;
18
+ max-width: 100%;
19
+ width: 100%;
20
+ }
21
+
22
+ .message.thinking {
23
+ max-width: 100%;
24
+ }
25
+
26
+ .message.agent {
27
+ flex-direction: column;
28
+ }
29
+
30
+ .message.system {
31
+ align-self: center;
32
+ font-size: 11px;
33
+ max-width: 90%;
34
+ color: var(--sn-text-dim);
35
+ }
36
+
37
+ .message.system .msg-content {
38
+ background: transparent;
39
+ text-align: center;
40
+ font-style: italic;
41
+ padding: 4px;
42
+ }
43
+
44
+ .msg-content {
45
+ padding: 12px 16px;
46
+ border-radius: 16px;
47
+ width: 100%;
48
+ line-height: 1.5;
49
+ word-break: break-word;
50
+ }
51
+
52
+ .message.user .msg-content {
53
+ background: var(--sn-chat-user-message-bg, var(--sn-composer-bg, var(--sn-chat-message-bg, var(--sn-node-bg))));
54
+ color: var(--sn-text);
55
+ }
56
+
57
+ .message.agent .msg-content {
58
+ background: var(--sn-chat-agent-message-bg, var(--sn-node-bg));
59
+ color: var(--sn-text);
60
+ }
61
+
62
+ .tool-card {
63
+ border-radius: 12px;
64
+ background: var(--sn-node-hover);
65
+ overflow: hidden;
66
+ transition: background 0.15s ease;
67
+ }
68
+
69
+ .tool-card[open] {
70
+ background: var(--sn-node-hover);
71
+ }
72
+
73
+ .tool-header {
74
+ display: flex;
75
+ align-items: center;
76
+ gap: 6px;
77
+ padding: 8px 12px;
78
+ font-size: 12px;
79
+ font-weight: 600;
80
+ color: var(--sn-text-dim);
81
+ cursor: pointer;
82
+ user-select: none;
83
+ list-style: none;
84
+ }
85
+
86
+ .tool-header::-webkit-details-marker {
87
+ display: none;
88
+ }
89
+
90
+ .tool-header::before {
91
+ content: '>';
92
+ font-size: 10px;
93
+ transition: transform 0.15s ease;
94
+ color: var(--sn-text-dim);
95
+ }
96
+
97
+ .tool-card[open] .tool-header::before {
98
+ transform: rotate(90deg);
99
+ }
100
+
101
+ .tool-header .material-symbols-outlined {
102
+ color: var(--sn-text-dim);
103
+ }
104
+
105
+ .tool-icon {
106
+ font-size: var(--sn-chat-tool-icon-size);
107
+ }
108
+
109
+ .tool-name {
110
+ flex: 0 0 auto;
111
+ }
112
+
113
+ .tool-summary {
114
+ min-width: 0;
115
+ max-width: min(56ch, 60vw);
116
+ overflow: hidden;
117
+ text-overflow: ellipsis;
118
+ white-space: nowrap;
119
+ color: var(--sn-text);
120
+ opacity: 0.72;
121
+ font-weight: 500;
122
+ }
123
+
124
+ .tool-summary::before {
125
+ content: '-';
126
+ margin-inline-end: 6px;
127
+ color: var(--sn-text-dim);
128
+ }
129
+
130
+ .tool-card[open] .tool-header {
131
+ border-bottom: none;
132
+ color: var(--sn-text);
133
+ }
134
+
135
+ .tool-section {
136
+ padding: 8px 12px;
137
+ }
138
+
139
+ .tool-label {
140
+ font-size: 10px;
141
+ font-weight: 600;
142
+ text-transform: uppercase;
143
+ letter-spacing: 0.5px;
144
+ color: var(--sn-text-dim);
145
+ margin-bottom: 4px;
146
+ }
147
+
148
+ .tool-code {
149
+ background: var(--sn-bg);
150
+ border-radius: 6px;
151
+ padding: 8px;
152
+ font-family: var(--sn-font-mono);
153
+ font-size: 11px;
154
+ color: var(--sn-text-dim);
155
+ white-space: pre-wrap;
156
+ word-break: break-all;
157
+ max-height: 200px;
158
+ overflow-y: auto;
159
+ }
160
+
161
+ .tool-waiting {
162
+ color: var(--sn-text-dim);
163
+ font-style: italic;
164
+ font-size: 11px;
165
+ }
166
+
167
+ .spin-icon {
168
+ animation: spin 1s linear infinite;
169
+ }
170
+
171
+ @keyframes spin {
172
+ 100% { transform: rotate(360deg); }
173
+ }
174
+
175
+ .streaming-cursor {
176
+ display: inline-block;
177
+ width: 6px;
178
+ height: 14px;
179
+ background-color: var(--sn-text-dim);
180
+ vertical-align: middle;
181
+ margin-left: 4px;
182
+ animation: blink 1s step-end infinite;
183
+ }
184
+
185
+ @keyframes blink {
186
+ 50% { opacity: 0; }
187
+ }
188
+
189
+ .md-code-block {
190
+ background: var(--sn-bg);
191
+ border-radius: 8px;
192
+ padding: 12px;
193
+ overflow-x: auto;
194
+ margin: 6px 0;
195
+ font-family: var(--sn-font-mono);
196
+ font-size: 12px;
197
+ white-space: pre;
198
+ }
199
+
200
+ .md-inline-code {
201
+ background: var(--sn-node-hover);
202
+ padding: 2px 5px;
203
+ border-radius: 4px;
204
+ font-family: var(--sn-font-mono);
205
+ font-size: 11px;
206
+ color: var(--sn-text);
207
+ }
208
+
209
+ .markdown-mention {
210
+ color: var(--sn-node-selected);
211
+ background: var(--sn-accent-bg);
212
+ padding: 1px 4px;
213
+ border-radius: 4px;
214
+ font-weight: 500;
215
+ word-break: break-all;
216
+ }
217
+
218
+ .md-link {
219
+ color: var(--sn-text-dim);
220
+ text-decoration: underline;
221
+ text-decoration-color: var(--sn-node-border);
222
+ }
223
+
224
+ .md-link:hover {
225
+ color: var(--sn-text);
226
+ }
227
+
228
+ .md-h {
229
+ margin: 16px 0 8px;
230
+ color: var(--sn-text);
231
+ font-weight: 700;
232
+ }
233
+
234
+ h1.md-h {
235
+ font-size: 20px;
236
+ border-bottom: 1px solid var(--sn-node-border);
237
+ padding-bottom: 6px;
238
+ }
239
+
240
+ h2.md-h {
241
+ font-size: 18px;
242
+ border-bottom: 1px solid var(--sn-node-border);
243
+ padding-bottom: 4px;
244
+ }
245
+
246
+ h3.md-h {
247
+ font-size: 16px;
248
+ }
249
+
250
+ h4.md-h {
251
+ font-size: 14px;
252
+ }
253
+
254
+ .md-p {
255
+ margin: 0;
256
+ }
257
+
258
+ .md-quote {
259
+ margin: 8px 0;
260
+ padding: 8px 16px;
261
+ border-left: 4px solid var(--sn-node-selected);
262
+ background: var(--sn-accent-bg-subtle);
263
+ border-radius: 0 4px 4px 0;
264
+ font-style: italic;
265
+ color: var(--sn-text-dim);
266
+ }
267
+
268
+ .md-list {
269
+ margin: 8px 0;
270
+ padding-left: 24px;
271
+ }
272
+
273
+ .md-list li {
274
+ margin: 3px 0;
275
+ }
276
+
277
+ .md-img {
278
+ max-width: 100%;
279
+ height: auto;
280
+ border-radius: 6px;
281
+ margin: 8px 0;
282
+ border: 1px solid var(--sn-node-border);
283
+ }
284
+
285
+ .md-hr {
286
+ border: none;
287
+ border-top: 1px solid var(--sn-node-border);
288
+ margin: 16px 0;
289
+ }
290
+
291
+ .md-table {
292
+ width: 100%;
293
+ border-collapse: collapse;
294
+ margin: 12px 0;
295
+ font-size: 12px;
296
+ }
297
+
298
+ .md-table th,
299
+ .md-table td {
300
+ padding: 6px 12px;
301
+ border: 1px solid var(--sn-node-border);
302
+ text-align: left;
303
+ }
304
+
305
+ .md-table th {
306
+ background: var(--sn-node-hover);
307
+ font-weight: 600;
308
+ }
309
+
310
+ .md-table tr:hover td {
311
+ background: var(--sn-node-hover);
312
+ }
313
+
314
+ .t-kw,
315
+ .t-lit {
316
+ color: var(--sn-syntax-keyword);
317
+ }
318
+
319
+ .t-str,
320
+ .t-num {
321
+ color: var(--sn-syntax-string);
322
+ }
323
+
324
+ .t-cm {
325
+ color: var(--sn-syntax-comment);
326
+ font-style: italic;
327
+ }
328
+
329
+ .t-fn,
330
+ .t-bi {
331
+ color: var(--sn-syntax-function);
332
+ }
333
+
334
+ .t-prop {
335
+ color: var(--sn-syntax-property);
336
+ }
337
+
338
+ .work-summary-wrap {
339
+ display: inline-flex;
340
+ align-items: flex-start;
341
+ align-self: flex-start;
342
+ max-width: 100%;
343
+ opacity: 0;
344
+ transform: translateY(-2px);
345
+ transition: opacity 0.12s ease, transform 0.12s ease;
346
+ }
347
+
348
+ .message.agent:hover .work-summary-wrap,
349
+ .message.agent:focus-within .work-summary-wrap,
350
+ .work-summary-wrap:focus-within {
351
+ opacity: 1;
352
+ transform: translateY(0);
353
+ }
354
+
355
+ .thinking-block,
356
+ .work-summary {
357
+ font-size: 12px;
358
+ color: var(--sn-text-dim);
359
+ }
360
+
361
+ .thinking-block summary,
362
+ .work-summary summary {
363
+ cursor: pointer;
364
+ user-select: none;
365
+ list-style: none;
366
+ display: inline-flex;
367
+ align-items: center;
368
+ gap: 6px;
369
+ padding: 4px 0;
370
+ font-weight: 500;
371
+ }
372
+
373
+ .thinking-block summary::-webkit-details-marker,
374
+ .work-summary summary::-webkit-details-marker {
375
+ display: none;
376
+ }
377
+
378
+ .thinking-block summary .material-symbols-outlined {
379
+ animation: thinking-pulse 1.2s ease-in-out infinite;
380
+ }
381
+
382
+ .thinking-icon {
383
+ font-size: var(--sn-chat-summary-icon-size);
384
+ }
385
+
386
+ @keyframes thinking-pulse {
387
+ 0%, 100% { opacity: 0.3; }
388
+ 50% { opacity: 1; }
389
+ }
390
+
391
+ .work-summary summary > .work-summary-icon {
392
+ color: var(--sn-success-color);
393
+ }
394
+
395
+ .work-summary-icon {
396
+ font-size: var(--sn-chat-summary-icon-size);
397
+ color: var(--sn-success-color);
398
+ }
399
+
400
+ .work-copy-btn {
401
+ flex: 0 0 24px;
402
+ margin-top: 1px;
403
+ width: 24px;
404
+ height: 24px;
405
+ border: none;
406
+ border-radius: 8px;
407
+ background: transparent;
408
+ color: var(--sn-text-dim);
409
+ display: inline-flex;
410
+ align-items: center;
411
+ justify-content: center;
412
+ cursor: pointer;
413
+ opacity: 0.75;
414
+ transition: background 0.12s ease, color 0.12s ease, opacity 0.12s ease;
415
+ }
416
+
417
+ .work-copy-btn:hover {
418
+ background: var(--sn-node-hover);
419
+ color: var(--sn-text);
420
+ opacity: 1;
421
+ }
422
+
423
+ .work-copy-btn .material-symbols-outlined {
424
+ font-size: 15px;
425
+ }
426
+
427
+ .work-copy-btn.copied {
428
+ color: var(--sn-text);
429
+ }
430
+
431
+ .work-copy-btn.copied .material-symbols-outlined {
432
+ color: var(--sn-text);
433
+ }
434
+
435
+ .work-copy-btn.copy-error {
436
+ color: var(--sn-danger-color);
437
+ }
438
+
439
+ .work-body {
440
+ display: flex;
441
+ flex-wrap: wrap;
442
+ gap: 6px;
443
+ padding: 6px 0 2px 24px;
444
+ }
445
+
446
+ .chat-session-meta {
447
+ display: flex;
448
+ align-items: center;
449
+ gap: 6px;
450
+ margin-left: 8px;
451
+ }
452
+
453
+ .chat-session-meta:empty {
454
+ display: none;
455
+ }
456
+
457
+ .meta-chip {
458
+ font-size: 10px;
459
+ font-weight: 500;
460
+ padding: 2px 7px;
461
+ border-radius: 4px;
462
+ background: var(--sn-node-hover);
463
+ color: var(--sn-text-dim);
464
+ white-space: nowrap;
465
+ font-family: var(--sn-font-mono, monospace);
466
+ letter-spacing: 0.2px;
467
+ }
468
+
469
+ .meta-chip-icon {
470
+ font-size: var(--sn-chat-meta-icon-size);
471
+ }
472
+
473
+ .meta-chip.meta-ok {
474
+ color: var(--sn-success-color);
475
+ background: var(--sn-status-ok-bg);
476
+ }
477
+
478
+ .meta-chip.meta-err {
479
+ color: var(--sn-danger-color);
480
+ background: var(--sn-status-error-bg);
481
+ }
482
+
483
+ .meta-chip.meta-sid {
484
+ cursor: default;
485
+ max-width: 110px;
486
+ overflow: hidden;
487
+ text-overflow: ellipsis;
488
+ }
489
+
490
+ .thinking-status {
491
+ display: inline-block;
492
+ margin-left: 8px;
493
+ font-size: 11px;
494
+ font-weight: 400;
495
+ color: var(--sn-text-dim);
496
+ font-style: italic;
497
+ }
498
+
499
+ .status-board {
500
+ display: flex;
501
+ flex-wrap: wrap;
502
+ gap: 8px;
503
+ padding: 4px 0;
504
+ width: 100%;
505
+ }
506
+
507
+ .status-card {
508
+ flex: 1 1 220px;
509
+ max-width: 320px;
510
+ background: var(--sn-node-hover);
511
+ border: 1px solid var(--sn-node-hover);
512
+ border-radius: 8px;
513
+ padding: 10px 12px;
514
+ display: flex;
515
+ flex-direction: column;
516
+ gap: 6px;
517
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
518
+ position: relative;
519
+ overflow: hidden;
520
+ }
521
+
522
+ .status-card::before {
523
+ content: '';
524
+ position: absolute;
525
+ top: 0;
526
+ left: 0;
527
+ right: 0;
528
+ height: 2px;
529
+ background: var(--card-accent, var(--sn-node-hover));
530
+ transition: background 0.3s ease;
531
+ }
532
+
533
+ .status-card[data-status="running"] {
534
+ border-color: var(--sn-accent-border);
535
+ --card-accent: var(--sn-cat-server);
536
+ }
537
+
538
+ .status-card[data-status="running"]::before {
539
+ animation: card-progress 1.8s ease-in-out infinite;
540
+ }
541
+
542
+ @keyframes card-progress {
543
+ 0%, 100% { opacity: 0.5; }
544
+ 50% { opacity: 1; }
545
+ }
546
+
547
+ .status-card[data-status="done"] {
548
+ border-color: var(--sn-success-border);
549
+ --card-accent: var(--sn-success-color);
550
+ }
551
+
552
+ .status-card[data-status="error"] {
553
+ border-color: var(--sn-danger-border);
554
+ --card-accent: var(--sn-danger-color);
555
+ }
556
+
557
+ .status-card-linked {
558
+ cursor: pointer;
559
+ }
560
+
561
+ .status-card-linked:hover {
562
+ border-color: var(--sn-node-border);
563
+ box-shadow: var(--sn-accent-glow);
564
+ }
565
+
566
+ .status-card-header {
567
+ display: flex;
568
+ align-items: center;
569
+ gap: 6px;
570
+ font-size: 12px;
571
+ font-weight: 500;
572
+ color: var(--sn-text);
573
+ }
574
+
575
+ .status-card-header .material-symbols-outlined {
576
+ font-size: 16px;
577
+ }
578
+
579
+ .status-card-header .spin-icon {
580
+ animation: spin 1.2s linear infinite;
581
+ }
582
+
583
+ .status-card-status {
584
+ font-size: 11px;
585
+ color: var(--sn-text-dim);
586
+ display: flex;
587
+ align-items: center;
588
+ gap: 4px;
589
+ }
590
+
591
+ .status-card-events {
592
+ display: flex;
593
+ flex-wrap: wrap;
594
+ gap: 3px;
595
+ }
596
+
597
+ .status-card-event {
598
+ display: inline-block;
599
+ background: var(--sn-node-bg);
600
+ color: var(--sn-text-dim);
601
+ padding: 2px 6px;
602
+ border-radius: 4px;
603
+ font-size: 11px;
604
+ white-space: nowrap;
605
+ max-width: 120px;
606
+ overflow: hidden;
607
+ text-overflow: ellipsis;
608
+ border: 1px solid var(--border-color, var(--sn-node-border));
609
+ }
610
+
611
+ .status-card-event[data-type="tool_use"],
612
+ .status-card-event[data-type="tool_result"] {
613
+ color: var(--sn-text);
614
+ border-color: var(--sn-node-selected);
615
+ background: var(--sn-accent-bg);
616
+ }
617
+
618
+ .status-card-event[data-status="error"] {
619
+ color: var(--sn-danger-color);
620
+ border-color: var(--sn-danger-color);
621
+ background: var(--sn-danger-bg);
622
+ }
623
+
624
+ .status-card-event[data-type="message"] {
625
+ color: var(--sn-cat-server);
626
+ background: var(--sn-message-event-bg);
627
+ }
628
+ `;