symbiote-ui 0.3.0-alpha.10

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 (326) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/LICENSE +21 -0
  3. package/README.md +119 -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 +994 -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 +400 -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 +925 -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 +680 -0
  51. package/chat/ChatComposer/ChatComposer.js +282 -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 +6389 -0
  92. package/discover.js +245 -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 +101 -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 +213 -0
  175. package/layout/CrossLayoutPortalBridge/portal-bridge-routing.js +86 -0
  176. package/layout/Layout/Layout.css.js +91 -0
  177. package/layout/Layout/Layout.js +637 -0
  178. package/layout/Layout/Layout.tpl.js +27 -0
  179. package/layout/LayoutNode/LayoutNode.css.js +304 -0
  180. package/layout/LayoutNode/LayoutNode.js +509 -0
  181. package/layout/LayoutNode/LayoutNode.tpl.js +39 -0
  182. package/layout/LayoutPreview/LayoutPreview.css.js +46 -0
  183. package/layout/LayoutPreview/LayoutPreview.js +102 -0
  184. package/layout/LayoutPreview/LayoutPreview.tpl.js +6 -0
  185. package/layout/LayoutRouter/LayoutRouter.js +274 -0
  186. package/layout/LayoutRouter/SectionRegistry.js +135 -0
  187. package/layout/LayoutRouter/routerSync.js +250 -0
  188. package/layout/LayoutSidebar/LayoutSidebar.css.js +411 -0
  189. package/layout/LayoutSidebar/LayoutSidebar.js +368 -0
  190. package/layout/LayoutSidebar/LayoutSidebar.tpl.js +26 -0
  191. package/layout/LayoutSidebar/SidebarSection.css.js +20 -0
  192. package/layout/LayoutSidebar/SidebarSection.js +184 -0
  193. package/layout/LayoutSidebar/SidebarSection.tpl.js +22 -0
  194. package/layout/LayoutTree.js +373 -0
  195. package/layout/PanelMenu/PanelMenu.css.js +43 -0
  196. package/layout/PanelMenu/PanelMenu.js +95 -0
  197. package/layout/PanelMenu/PanelMenu.tpl.js +17 -0
  198. package/layout/ProjectTabs/ProjectTabs.css.js +188 -0
  199. package/layout/ProjectTabs/ProjectTabs.js +77 -0
  200. package/layout/ProjectTabs/ProjectTabs.tpl.js +15 -0
  201. package/layout/index.js +40 -0
  202. package/list/ListDetailShell/ListDetailShell.css.js +128 -0
  203. package/list/ListDetailShell/ListDetailShell.js +72 -0
  204. package/list/ListDetailShell/ListDetailShell.tpl.js +36 -0
  205. package/list/ListItem/ListItem.css.js +111 -0
  206. package/list/ListItem/ListItem.js +66 -0
  207. package/list/ListItem/ListItem.tpl.js +18 -0
  208. package/locale/index.js +491 -0
  209. package/manifest/component-registry.js +2448 -0
  210. package/manifest/graph-schema.js +285 -0
  211. package/manifest/index.js +6 -0
  212. package/manifest/project-schema-catalog.js +246 -0
  213. package/manifest/rule-catalog.js +201 -0
  214. package/manifest/theme-catalog.js +2190 -0
  215. package/manifest/ui-schema-catalog.js +334 -0
  216. package/menu/ContextMenu/ContextMenu.css.js +61 -0
  217. package/menu/ContextMenu/ContextMenu.js +82 -0
  218. package/menu/ContextMenu/ContextMenu.tpl.js +19 -0
  219. package/navigation/QuickOpen/QuickOpen.css.js +92 -0
  220. package/navigation/QuickOpen/QuickOpen.js +185 -0
  221. package/navigation/QuickOpen/QuickOpen.tpl.js +15 -0
  222. package/navigation/quick-open-utils.js +101 -0
  223. package/node/CtrlItem/CtrlItem.css.js +41 -0
  224. package/node/CtrlItem/CtrlItem.js +24 -0
  225. package/node/CtrlItem/CtrlItem.tpl.js +17 -0
  226. package/node/GraphFrame/GraphFrame.css.js +66 -0
  227. package/node/GraphFrame/GraphFrame.js +32 -0
  228. package/node/GraphFrame/GraphFrame.tpl.js +13 -0
  229. package/node/GraphNode/GraphNode.css.js +849 -0
  230. package/node/GraphNode/GraphNode.js +173 -0
  231. package/node/GraphNode/GraphNode.tpl.js +33 -0
  232. package/node/NodeCallout/NodeCallout.css.js +91 -0
  233. package/node/NodeCallout/NodeCallout.js +281 -0
  234. package/node/NodeCallout/NodeCallout.tpl.js +8 -0
  235. package/node/NodeSocket/NodeSocket.css.js +68 -0
  236. package/node/NodeSocket/NodeSocket.js +26 -0
  237. package/node/NodeSocket/NodeSocket.tpl.js +7 -0
  238. package/node/PortItem/PortItem.css.js +93 -0
  239. package/node/PortItem/PortItem.js +87 -0
  240. package/node/PortItem/PortItem.tpl.js +10 -0
  241. package/package.json +174 -0
  242. package/palette/PaletteBrowser/PaletteBrowser.css.js +143 -0
  243. package/palette/PaletteBrowser/PaletteBrowser.js +152 -0
  244. package/palette/PaletteBrowser/PaletteBrowser.tpl.js +23 -0
  245. package/plugins/History.js +408 -0
  246. package/plugins/Readonly.js +60 -0
  247. package/rules/symbiote-3x.json +170 -0
  248. package/schemas/component-descriptor-v1.json +91 -0
  249. package/schemas/component-descriptor-v2.json +145 -0
  250. package/schemas/graph-model-v1.json +179 -0
  251. package/schemas/graph-v1.json +91 -0
  252. package/schemas/project-package-v1.json +102 -0
  253. package/schemas/project-transaction-v1.json +114 -0
  254. package/schemas/runtime-ui-v1.json +80 -0
  255. package/schemas/theme-rule-block-v1.json +73 -0
  256. package/shapes/CircleShape.js +79 -0
  257. package/shapes/CommentShape.js +35 -0
  258. package/shapes/DiamondShape.js +130 -0
  259. package/shapes/NodeShape.js +79 -0
  260. package/shapes/PillShape.js +91 -0
  261. package/shapes/RectShape.js +84 -0
  262. package/shapes/SVGShape.js +525 -0
  263. package/shapes/index.js +63 -0
  264. package/surface/Card/Card.css.js +57 -0
  265. package/surface/Card/Card.js +17 -0
  266. package/surface/Card/Card.tpl.js +3 -0
  267. package/themes/Palette.js +30 -0
  268. package/themes/Skin.js +113 -0
  269. package/themes/Theme.js +91 -0
  270. package/themes/carbon.js +135 -0
  271. package/themes/cascade-theme.js +447 -0
  272. package/themes/dark.js +140 -0
  273. package/themes/default-dark.js +724 -0
  274. package/themes/default-provider.css +642 -0
  275. package/themes/default-provider.js +728 -0
  276. package/themes/ebook.js +136 -0
  277. package/themes/grey.js +137 -0
  278. package/themes/light.js +139 -0
  279. package/themes/neon.js +138 -0
  280. package/themes/pcb.js +273 -0
  281. package/themes/scrollbar-styles.js +73 -0
  282. package/themes/synthwave.js +138 -0
  283. package/tokens/base.json +29 -0
  284. package/tokens/themes/carbon.json +11 -0
  285. package/tokens/themes/dark.json +12 -0
  286. package/tokens/themes/default-dark.json +1567 -0
  287. package/tokens/themes/default-provider.json +1567 -0
  288. package/tokens/themes/ebook.json +11 -0
  289. package/tokens/themes/grey.json +11 -0
  290. package/tokens/themes/light.json +12 -0
  291. package/tokens/themes/neon.json +11 -0
  292. package/tokens/themes/pcb.json +11 -0
  293. package/tokens/themes/synthwave.json +11 -0
  294. package/toolbar/QuickToolbar/QuickToolbar.css.js +152 -0
  295. package/toolbar/QuickToolbar/QuickToolbar.js +529 -0
  296. package/toolbar/QuickToolbar/QuickToolbar.tpl.js +34 -0
  297. package/tree/TreePanel/TreePanel.css.js +112 -0
  298. package/tree/TreePanel/TreePanel.js +147 -0
  299. package/tree/TreePanel/TreePanel.tpl.js +18 -0
  300. package/tree/TreeView/TreeView.css.js +122 -0
  301. package/tree/TreeView/TreeView.js +365 -0
  302. package/tree/TreeView/TreeView.tpl.js +10 -0
  303. package/ui/dialogs.js +221 -0
  304. package/ui/host-adapters.js +114 -0
  305. package/ui/index.js +667 -0
  306. package/ui/locale.js +50 -0
  307. package/ui/overlay-stack.js +89 -0
  308. package/ui/scrollbar-styles.js +4 -0
  309. package/ui/shared-styles.js +26 -0
  310. package/webmcp.js +37 -0
  311. package/xr/deep-graph.js +646 -0
  312. package/xr/emulation.js +198 -0
  313. package/xr/gesture.js +228 -0
  314. package/xr/html-canvas-renderer.js +501 -0
  315. package/xr/index.js +15 -0
  316. package/xr/layout-projection.js +1046 -0
  317. package/xr/panel-frame.js +128 -0
  318. package/xr/panel-host.js +271 -0
  319. package/xr/pointer.js +258 -0
  320. package/xr/scene-controller.js +242 -0
  321. package/xr/spatial-scene.js +212 -0
  322. package/xr/theme-bridge.js +105 -0
  323. package/xr/three-webxr-adapter.js +3556 -0
  324. package/xr/webgl-layer-renderer.js +419 -0
  325. package/xr/webxr.js +679 -0
  326. package/xr/workbench.js +516 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,70 @@
1
+ # Changelog
2
+
3
+ All notable changes to `symbiote-ui` will be documented in this file.
4
+
5
+ ## [0.3.0-alpha.10] - 2026-06-04
6
+
7
+ ### Added
8
+
9
+ - Added a reusable cascade theme contract with `createCascadeTheme()` and `applyCascadeTheme()`.
10
+ - Exposed cascade theme controls and WebMCP metadata through provider discovery.
11
+
12
+ ### Changed
13
+
14
+ - Updated the cascade theme lab to consume the library API instead of owning local theme formulas.
15
+
16
+ ## [0.3.0-alpha.6] - 2026-06-03
17
+
18
+ ### Changed
19
+
20
+ - Updated package metadata to point at the standalone `symbiote-ui` repository.
21
+ - Updated the `symbiote-engine` dependency to `0.3.0-alpha.6`.
22
+
23
+ ## [0.3.0-alpha.5] - 2026-06-03
24
+
25
+ ### Fixed
26
+
27
+ - Kept browser UI exports off the `symbiote-engine` barrel so browser bundlers do not pull Node-only engine modules into UI builds.
28
+
29
+ ## [0.3.0-alpha.4] - 2026-06-03
30
+
31
+ ### Added
32
+
33
+ - Split UI/provider ownership from the former `symbiote-node` monolith.
34
+ - Added `symbiote-ui/webmcp` for explicit WebMCP descriptors and registration helpers.
35
+ - Added `component-descriptor-v2` with SSR and WebMCP contract metadata.
36
+ - Added provider discovery through `symbiote-ui/discover` and the `symbiote-ui discover` CLI command.
37
+
38
+ ### Changed
39
+
40
+ - UI/provider imports now belong under `symbiote-ui`.
41
+ - Runtime execution imports now belong under `symbiote-engine`.
42
+ - `symbiote-node` remains only as the terminal migration facade.
43
+
44
+ ## [0.3.0-alpha.0] — 2026-04-18
45
+
46
+ ### Fixed
47
+ - **Memory leak**: zombie `setTimeout` loops in SubgraphNode preview rendering — replaced with on-demand redraws
48
+ - **Memory leak**: event listener accumulation in `NodeCanvas.setEditor()` — added explicit unsubscribe on context switch
49
+ - **Memory leak**: incorrect `cancelAnimationFrame` cleanup for `setTimeout` IDs in `NodeViewManager.removeView()`
50
+ - **Layout overlap**: nodes measured as 4px height (DOM not ready) caused overlap — enforced minimum `nodeHeight` floor in `getSize()`
51
+ - **Inspector z-index**: panel header overlapped toolbar buttons — removed header, added toolbar-aware padding
52
+
53
+ ### Added
54
+ - `Editor.removeAllListeners()` — clean teardown method for editor event system
55
+ - `computeTreeLayout()` — directory-hierarchy-aware tree layout with indent levels
56
+ - Shape primitives: `CircleShape`, `DiamondShape`, `PillShape`, `RectShape`
57
+ - PCB dark theme enhancements: improved node styling, copper trace connections
58
+
59
+ ### Breaking
60
+ - `InspectorPanel` no longer renders a title header bar — consumers relying on `.insp-header` CSS should update
61
+
62
+ ## [0.2.1] — 2026-04-13
63
+
64
+ - Initial open-source release
65
+ - Node graph editor with Symbiote.js web components
66
+ - Sugiyama-based auto layout (`computeAutoLayout`)
67
+ - PCB/Carbon theming system
68
+ - Inspector panel with resize handle
69
+ - Subgraph navigation (drill-down/drill-up)
70
+ - Execution engine with topological sorting
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 RND-PRO
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,119 @@
1
+ # symbiote-ui
2
+
3
+ `symbiote-ui` owns the browser-facing and agent-facing UI contracts for Symbiote provider systems.
4
+
5
+ It is built for agents that construct components, data views, and surrounding layouts dynamically. A chat agent can choose a component descriptor, bind data, compose a layout, and let the browser hydrate interactive Web Components without restarting the server.
6
+
7
+ ## Install
8
+
9
+ ```sh
10
+ npm install symbiote-ui @symbiotejs/symbiote@3.8.0-webmcp.2
11
+ ```
12
+
13
+ For SSR integration tests or JSDA-based hosts, install the integration dependencies in the host project:
14
+
15
+ ```sh
16
+ npm install jsda-kit linkedom
17
+ ```
18
+
19
+ `jsda-kit` is intentionally not a runtime dependency of `symbiote-ui`.
20
+
21
+ ## Entry Points
22
+
23
+ - `symbiote-ui` - Node-safe core primitives.
24
+ - `symbiote-ui/core` - graph editor data primitives.
25
+ - `symbiote-ui/layout` - SSR-safe layout helpers.
26
+ - `symbiote-ui/graph` - provider graph normalization and projection helpers.
27
+ - `symbiote-ui/manifest` - component, schema, rule, theme, and provider catalogs.
28
+ - `symbiote-ui/ui` - browser Web Component registration and UI runtime.
29
+ - `symbiote-ui/webmcp` - WebMCP descriptor helpers and registration utilities.
30
+ - `symbiote-ui/xr` - WebXR provider helpers.
31
+ - `symbiote-ui/locale` - Node-safe locale catalogs and translation helpers.
32
+ - `symbiote-ui/discover` - provider discovery JSON API used by the CLI.
33
+ - `symbiote-ui/custom-elements.json` - Custom Elements manifest.
34
+ - `symbiote-ui/schemas/*`, `symbiote-ui/tokens/*`, `symbiote-ui/rules/*` - machine-readable provider contracts.
35
+ - `symbiote-ui/display/*` - reusable display utilities exposed by package export map.
36
+
37
+ For the complete export map and provider catalog, run:
38
+
39
+ ```sh
40
+ symbiote-ui discover
41
+ ```
42
+
43
+ Use `symbiote-node` only as the terminal migration facade for older consumers.
44
+
45
+ ## Related Packages
46
+
47
+ - [`symbiote-engine`](https://github.com/RND-PRO/symbiote-engine) - runtime execution, CLI commands, server helpers, persistence, and handlers.
48
+ - [`symbiote-node`](https://github.com/RND-PRO/symbiote-node) - terminal migration facade for older imports.
49
+ - [Package split guide](https://github.com/RND-PRO/symbiote-node/blob/main/docs/package-split.md)
50
+ - [Agent contract index](https://github.com/RND-PRO/symbiote-node/blob/main/docs/agent-contracts.md)
51
+
52
+ ## Browser Registration
53
+
54
+ ```js
55
+ import { defineModule, listModules } from 'symbiote-ui/ui';
56
+
57
+ defineModule('chat-composer');
58
+
59
+ console.log(listModules());
60
+ ```
61
+
62
+ The root package and Node-safe entry points must import without creating DOM globals. Import safety does not mean every exported helper is useful without host data, a DOM adapter, browser hydration, or runtime-provided objects. Browser-only custom elements and module definition helpers belong behind `symbiote-ui/ui`.
63
+
64
+ ## Cascade Theme
65
+
66
+ `symbiote-ui` exposes a reusable cascade theme contract for agent-built UI, graph canvases, layouts, scrollbars, and VR-ready panels:
67
+
68
+ ```js
69
+ import { applyCascadeTheme, createCascadeTheme } from 'symbiote-ui';
70
+
71
+ let theme = createCascadeTheme({
72
+ mode: 'dark',
73
+ brightness: 0,
74
+ contrast: 58,
75
+ chroma: 89,
76
+ hue: 218,
77
+ outline: 38,
78
+ type: 100,
79
+ density: 100,
80
+ });
81
+
82
+ applyCascadeTheme(document.documentElement, theme.state);
83
+ ```
84
+
85
+ Apply the cascade once at `:root`, an app shell, or a subtree boundary. Components inherit `--sn-*` tokens; host projects should not duplicate the formulas in app-local CSS or JS.
86
+
87
+ ## Demos
88
+
89
+ - [`demo/cascade-theme-lab.html`](./demo/cascade-theme-lab.html) - cascade theme controls for dark/light mode, brightness, contrast, accent chroma, and graph/UI token inheritance.
90
+ - [`demo/pcb-router-stress.html`](./demo/pcb-router-stress.html) - animated PCB route diagnostics with orbit metrics, keyframes, and agent-readable JSON samples.
91
+
92
+ ## WebMCP
93
+
94
+ Component metadata uses `component-descriptor-v2` with bounded agent-facing contracts:
95
+
96
+ - `contract.ssr.mode` classifies SSR safety as `node-safe`, `ssr-entry-safe`, `jsda-ssr-renderable`, `hydrate-only`, or `client-only`.
97
+ - `contract.webmcp.tools[]` documents explicit tool descriptors with `name`, `description`, `inputSchema`, `annotations`, visibility, and permission hints.
98
+ - WebMCP exposure is explicit-first. The package does not enable global `Symbiote.mcpToolMode` by default.
99
+
100
+ The upstream Symbiote WebMCP reference is:
101
+
102
+ https://github.com/symbiotejs/symbiote.js/blob/webmcp/docs/webmcp.md
103
+
104
+ ## JSDA SSR
105
+
106
+ Hosts that use JSDA SSR should provide their own SSR runtime and DOM adapter:
107
+
108
+ ```js
109
+ import { parseHTML } from 'linkedom';
110
+ import 'symbiote-ui/ui';
111
+ ```
112
+
113
+ `jsda-ssr-renderable` components are expected to import safely in a JSDA SSR fixture with `ssr.enabled`, `ssr.imports`, `linkedom`, and Web Component SSR enabled by the host.
114
+
115
+ ## Package Boundary
116
+
117
+ `symbiote-ui` owns Web Components, UI/layout primitives, manifests, schemas, rules, tokens, themes, locale helpers, provider-facing graph metadata, WebMCP metadata, and `custom-elements.json`.
118
+
119
+ Runtime workflow execution, persistence, server commands, handler packs, and process lifecycle belong in `symbiote-engine`.