project-graph-mcp 2.2.6 → 2.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/ARCHITECTURE.md +81 -0
  2. package/CHANGELOG.md +57 -0
  3. package/README.md +9 -4
  4. package/package.json +4 -13
  5. package/project-graph-mcp-2.3.0.tgz +0 -0
  6. package/src/compact/expand.js +1 -1
  7. package/src/core/graph-builder.js +2 -2
  8. package/src/core/parser.js +2 -2
  9. package/src/network/server.js +1 -2
  10. package/src/network/web-server.js +1 -1
  11. package/vendor/symbiote-node/CHANGELOG.md +31 -0
  12. package/vendor/symbiote-node/LICENSE +21 -0
  13. package/vendor/symbiote-node/README.md +206 -0
  14. package/vendor/symbiote-node/canvas/AutoLayout.js +725 -0
  15. package/vendor/symbiote-node/canvas/Breadcrumb/Breadcrumb.css.js +73 -0
  16. package/vendor/symbiote-node/canvas/Breadcrumb/Breadcrumb.js +93 -0
  17. package/vendor/symbiote-node/canvas/Breadcrumb/Breadcrumb.tpl.js +9 -0
  18. package/vendor/symbiote-node/canvas/CanvasConnectionRenderer.js +962 -0
  19. package/vendor/symbiote-node/canvas/ConnectionRenderer.js +1468 -0
  20. package/vendor/symbiote-node/canvas/FlowSimulator.js +323 -0
  21. package/vendor/symbiote-node/canvas/ForceLayout.js +189 -0
  22. package/vendor/symbiote-node/canvas/ForceWorker.js +1325 -0
  23. package/vendor/symbiote-node/canvas/GraphTabs/GraphTabs.css.js +97 -0
  24. package/vendor/symbiote-node/canvas/GraphTabs/GraphTabs.js +176 -0
  25. package/vendor/symbiote-node/canvas/GraphTabs/GraphTabs.tpl.js +12 -0
  26. package/vendor/symbiote-node/canvas/LODManager.js +88 -0
  27. package/vendor/symbiote-node/canvas/Minimap/Minimap.css.js +71 -0
  28. package/vendor/symbiote-node/canvas/Minimap/Minimap.js +207 -0
  29. package/vendor/symbiote-node/canvas/Minimap/Minimap.tpl.js +9 -0
  30. package/vendor/symbiote-node/canvas/NodeCanvas/NodeCanvas.css.js +261 -0
  31. package/vendor/symbiote-node/canvas/NodeCanvas/NodeCanvas.js +1840 -0
  32. package/vendor/symbiote-node/canvas/NodeCanvas/NodeCanvas.tpl.js +22 -0
  33. package/vendor/symbiote-node/canvas/NodeSearch/NodeSearch.css.js +97 -0
  34. package/vendor/symbiote-node/canvas/NodeSearch/NodeSearch.js +132 -0
  35. package/vendor/symbiote-node/canvas/NodeSearch/NodeSearch.tpl.js +21 -0
  36. package/vendor/symbiote-node/canvas/NodeViewManager.js +584 -0
  37. package/vendor/symbiote-node/canvas/PinExpansion.js +131 -0
  38. package/vendor/symbiote-node/canvas/PseudoConnection.js +80 -0
  39. package/vendor/symbiote-node/canvas/SubgraphManager.js +201 -0
  40. package/vendor/symbiote-node/canvas/SubgraphRouter.js +443 -0
  41. package/vendor/symbiote-node/canvas/ViewportActions.js +446 -0
  42. package/vendor/symbiote-node/core/Connection.js +45 -0
  43. package/vendor/symbiote-node/core/Editor.js +451 -0
  44. package/vendor/symbiote-node/core/Frame.js +31 -0
  45. package/vendor/symbiote-node/core/GraphMermaid.js +348 -0
  46. package/vendor/symbiote-node/core/GraphText.js +210 -0
  47. package/vendor/symbiote-node/core/Node.js +143 -0
  48. package/vendor/symbiote-node/core/Portal.js +104 -0
  49. package/vendor/symbiote-node/core/Socket.js +185 -0
  50. package/vendor/symbiote-node/core/SubgraphNode.js +125 -0
  51. package/vendor/symbiote-node/index.js +103 -0
  52. package/vendor/symbiote-node/inspector/InspectorPanel/InspectorPanel.css.js +361 -0
  53. package/vendor/symbiote-node/inspector/InspectorPanel/InspectorPanel.js +332 -0
  54. package/vendor/symbiote-node/inspector/InspectorPanel/InspectorPanel.tpl.js +96 -0
  55. package/vendor/symbiote-node/inspector/TemplatePreview/TemplatePreview.css.js +104 -0
  56. package/vendor/symbiote-node/inspector/TemplatePreview/TemplatePreview.js +133 -0
  57. package/vendor/symbiote-node/inspector/TemplatePreview/TemplatePreview.tpl.js +33 -0
  58. package/vendor/symbiote-node/interactions/ConnectFlow.js +307 -0
  59. package/vendor/symbiote-node/interactions/Drag.js +102 -0
  60. package/vendor/symbiote-node/interactions/Selector.js +132 -0
  61. package/vendor/symbiote-node/interactions/SnapGrid.js +65 -0
  62. package/vendor/symbiote-node/interactions/Zoom.js +140 -0
  63. package/vendor/symbiote-node/layout/ActionZone/ActionZone.css.js +88 -0
  64. package/vendor/symbiote-node/layout/ActionZone/ActionZone.js +254 -0
  65. package/vendor/symbiote-node/layout/ActionZone/ActionZone.tpl.js +11 -0
  66. package/vendor/symbiote-node/layout/Layout/Layout.css.js +88 -0
  67. package/vendor/symbiote-node/layout/Layout/Layout.js +622 -0
  68. package/vendor/symbiote-node/layout/Layout/Layout.tpl.js +25 -0
  69. package/vendor/symbiote-node/layout/LayoutNode/LayoutNode.css.js +293 -0
  70. package/vendor/symbiote-node/layout/LayoutNode/LayoutNode.js +467 -0
  71. package/vendor/symbiote-node/layout/LayoutNode/LayoutNode.tpl.js +33 -0
  72. package/vendor/symbiote-node/layout/LayoutPreview/LayoutPreview.css.js +46 -0
  73. package/vendor/symbiote-node/layout/LayoutPreview/LayoutPreview.js +102 -0
  74. package/vendor/symbiote-node/layout/LayoutPreview/LayoutPreview.tpl.js +6 -0
  75. package/vendor/symbiote-node/layout/LayoutRouter/LayoutRouter.js +156 -0
  76. package/vendor/symbiote-node/layout/LayoutRouter/routerSync.js +250 -0
  77. package/vendor/symbiote-node/layout/LayoutSidebar/LayoutSidebar.css.js +379 -0
  78. package/vendor/symbiote-node/layout/LayoutSidebar/LayoutSidebar.js +263 -0
  79. package/vendor/symbiote-node/layout/LayoutSidebar/LayoutSidebar.tpl.js +20 -0
  80. package/vendor/symbiote-node/layout/LayoutSidebar/SidebarSection.js +183 -0
  81. package/vendor/symbiote-node/layout/LayoutTree.js +246 -0
  82. package/vendor/symbiote-node/layout/PanelMenu/PanelMenu.css.js +43 -0
  83. package/vendor/symbiote-node/layout/PanelMenu/PanelMenu.js +89 -0
  84. package/vendor/symbiote-node/layout/PanelMenu/PanelMenu.tpl.js +14 -0
  85. package/vendor/symbiote-node/layout/index.js +16 -0
  86. package/vendor/symbiote-node/menu/ContextMenu/ContextMenu.css.js +61 -0
  87. package/vendor/symbiote-node/menu/ContextMenu/ContextMenu.js +79 -0
  88. package/vendor/symbiote-node/menu/ContextMenu/ContextMenu.tpl.js +19 -0
  89. package/vendor/symbiote-node/node/CtrlItem/CtrlItem.css.js +41 -0
  90. package/vendor/symbiote-node/node/CtrlItem/CtrlItem.js +24 -0
  91. package/vendor/symbiote-node/node/CtrlItem/CtrlItem.tpl.js +16 -0
  92. package/vendor/symbiote-node/node/GraphFrame/GraphFrame.css.js +65 -0
  93. package/vendor/symbiote-node/node/GraphFrame/GraphFrame.js +29 -0
  94. package/vendor/symbiote-node/node/GraphFrame/GraphFrame.tpl.js +13 -0
  95. package/vendor/symbiote-node/node/GraphNode/GraphNode.css.js +683 -0
  96. package/vendor/symbiote-node/node/GraphNode/GraphNode.js +92 -0
  97. package/vendor/symbiote-node/node/GraphNode/GraphNode.tpl.js +17 -0
  98. package/vendor/symbiote-node/node/NodeSocket/NodeSocket.js +25 -0
  99. package/vendor/symbiote-node/node/NodeSocket/NodeSocket.tpl.js +7 -0
  100. package/vendor/symbiote-node/node/PortItem/PortItem.css.js +90 -0
  101. package/vendor/symbiote-node/node/PortItem/PortItem.js +87 -0
  102. package/vendor/symbiote-node/node/PortItem/PortItem.tpl.js +10 -0
  103. package/vendor/symbiote-node/package.json +59 -0
  104. package/vendor/symbiote-node/palette/PaletteBrowser/PaletteBrowser.css.js +143 -0
  105. package/vendor/symbiote-node/palette/PaletteBrowser/PaletteBrowser.js +131 -0
  106. package/vendor/symbiote-node/palette/PaletteBrowser/PaletteBrowser.tpl.js +16 -0
  107. package/vendor/symbiote-node/plugins/History.js +384 -0
  108. package/vendor/symbiote-node/plugins/Readonly.js +59 -0
  109. package/vendor/symbiote-node/shapes/CircleShape.js +80 -0
  110. package/vendor/symbiote-node/shapes/CommentShape.js +35 -0
  111. package/vendor/symbiote-node/shapes/DiamondShape.js +115 -0
  112. package/vendor/symbiote-node/shapes/NodeShape.js +80 -0
  113. package/vendor/symbiote-node/shapes/PillShape.js +91 -0
  114. package/vendor/symbiote-node/shapes/RectShape.js +72 -0
  115. package/vendor/symbiote-node/shapes/SVGShape.js +494 -0
  116. package/vendor/symbiote-node/shapes/index.js +53 -0
  117. package/vendor/symbiote-node/themes/Palette.js +32 -0
  118. package/vendor/symbiote-node/themes/Skin.js +113 -0
  119. package/vendor/symbiote-node/themes/Theme.js +84 -0
  120. package/vendor/symbiote-node/themes/carbon.js +137 -0
  121. package/vendor/symbiote-node/themes/dark.js +137 -0
  122. package/vendor/symbiote-node/themes/ebook.js +138 -0
  123. package/vendor/symbiote-node/themes/grey.js +137 -0
  124. package/vendor/symbiote-node/themes/light.js +137 -0
  125. package/vendor/symbiote-node/themes/neon.js +138 -0
  126. package/vendor/symbiote-node/themes/pcb.js +273 -0
  127. package/vendor/symbiote-node/themes/synthwave.js +137 -0
  128. package/vendor/symbiote-node/toolbar/QuickToolbar/QuickToolbar.css.js +86 -0
  129. package/vendor/symbiote-node/toolbar/QuickToolbar/QuickToolbar.js +128 -0
  130. package/vendor/symbiote-node/toolbar/QuickToolbar/QuickToolbar.tpl.js +29 -0
  131. package/web/app.js +9 -5
  132. package/web/components/canvas-graph.js +1705 -0
  133. package/web/components/code-block.js +1 -1
  134. package/web/components/event-feed/CodeWidget.js +32 -0
  135. package/web/components/event-feed/EventWidget.js +97 -0
  136. package/web/components/event-feed/ListWidget.js +57 -0
  137. package/web/components/event-feed/MiniGraphWidget.js +159 -0
  138. package/web/components/follow-ribbon.js +134 -0
  139. package/web/dashboard.js +1 -1
  140. package/web/follow-controller.js +241 -0
  141. package/web/index.html +4 -0
  142. package/web/panels/ActionBoard/ActionBoard.js +1 -1
  143. package/web/panels/SettingsPanel/SettingsPanel.tpl.js +1 -1
  144. package/web/panels/code-viewer.js +50 -15
  145. package/web/panels/dep-graph.js +2691 -7
  146. package/web/panels/file-tree.js +5 -2
  147. package/web/panels/live-monitor.js +75 -3
  148. package/web/style.css +39 -0
  149. package/docs/img/explorer-compact.jpg +0 -0
  150. package/docs/img/explorer-expanded.jpg +0 -0
  151. package/src/.contextignore +0 -22
  152. package/src/.project-graph-cache.json +0 -1
  153. package/src/compact/.project-graph-cache.json +0 -1
  154. package/web/.project-graph-cache.json +0 -1
  155. package/web/panels/SettingsPanel/.project-graph-cache.json +0 -1
@@ -0,0 +1,261 @@
1
+ import { css } from '@symbiotejs/symbiote';
2
+
3
+ export const styles = css`
4
+ node-canvas {
5
+ display: block;
6
+ width: 100%;
7
+ height: 100%;
8
+ overflow: hidden;
9
+ position: relative;
10
+ background-color: var(--sn-bg, #1a1a2e);
11
+ background-image: radial-gradient(circle, var(--sn-grid-dot, rgba(255,255,255,0.06)) 1px, transparent 1px);
12
+ background-size: var(--sn-grid-size, 20px) var(--sn-grid-size, 20px);
13
+ cursor: grab;
14
+ /* Prevent scrollbar oscillation: canvas manages its own viewport internally.
15
+ - size: SVG overflow:visible children cannot influence parent sizing
16
+ - layout: internal layout changes don't trigger parent reflow
17
+ - paint: clips painting to element box */
18
+ contain: size layout paint;
19
+
20
+ &:active {
21
+ cursor: grabbing;
22
+ }
23
+
24
+ & .canvas-container {
25
+ width: 100%;
26
+ height: 100%;
27
+ position: relative;
28
+ overflow: hidden;
29
+ outline: none;
30
+ }
31
+
32
+ &[data-readonly] {
33
+ cursor: default;
34
+ }
35
+
36
+ & .content {
37
+ position: absolute;
38
+ top: 0;
39
+ left: 0;
40
+ transform-origin: 0 0;
41
+ will-change: transform;
42
+ }
43
+
44
+ & .sn-connections {
45
+ position: absolute;
46
+ top: 0;
47
+ left: 0;
48
+ pointer-events: all;
49
+ overflow: visible;
50
+ width: 1px;
51
+ height: 1px;
52
+ contain: layout style;
53
+ }
54
+
55
+ & .sn-conn-canvas {
56
+ position: absolute;
57
+ top: 0;
58
+ left: 0;
59
+ width: 100%;
60
+ height: 100%;
61
+ pointer-events: none;
62
+ }
63
+
64
+ & .sn-nodes {
65
+ position: relative;
66
+ }
67
+
68
+ & .pseudo-svg {
69
+ position: absolute;
70
+ top: 0;
71
+ left: 0;
72
+ overflow: visible;
73
+ width: 1px;
74
+ height: 1px;
75
+ pointer-events: none;
76
+ z-index: 100;
77
+ }
78
+ }
79
+
80
+ /* Connection paths */
81
+ .sn-conn-path {
82
+ fill: none;
83
+ stroke: var(--sn-conn-color, #4a9eff);
84
+ stroke-width: var(--sn-conn-width, 2);
85
+ stroke-linecap: var(--sn-conn-linecap, round);
86
+ stroke-linejoin: var(--sn-conn-linejoin, round);
87
+ opacity: 0.7;
88
+ pointer-events: stroke;
89
+ cursor: pointer;
90
+ /* Prevent sub-pixel anti-aliasing recalcs during parent transform */
91
+ shape-rendering: geometricPrecision;
92
+ vector-effect: non-scaling-stroke;
93
+
94
+ &:hover {
95
+ opacity: 1;
96
+ stroke-width: 3;
97
+ }
98
+
99
+ &[data-selected] {
100
+ stroke: var(--sn-conn-selected, #ff6b6b);
101
+ stroke-width: 3;
102
+ opacity: 1;
103
+ }
104
+ }
105
+
106
+ /* Kill pointer-events on SVG paths during active zoom/pan to prevent
107
+ CSS :hover thrashing (stroke-width transition) from causing flicker */
108
+ node-canvas[data-interacting] .sn-conn-path {
109
+ pointer-events: none;
110
+ transition: none;
111
+ }
112
+
113
+ /* Connector endpoint dots — hidden by default, shown only for SVG nodes */
114
+ .sn-conn-dot {
115
+ display: none;
116
+ fill: var(--sn-conn-dot-fill, var(--sn-conn-color, #4a9eff));
117
+ stroke: var(--sn-conn-dot-stroke, var(--sn-node-bg, #fff));
118
+ stroke-width: var(--sn-conn-dot-stroke-width, 1.5);
119
+ r: var(--sn-conn-dot-r, 3);
120
+ opacity: 0.9;
121
+ pointer-events: none;
122
+ /* PERF: removed filter:drop-shadow — 672 GPU layers killed Chrome renderer */
123
+ }
124
+
125
+ .sn-conn-dot[data-svg-wired] {
126
+ display: initial;
127
+ }
128
+
129
+ /* Free dots for unconnected SVG ports */
130
+ .sn-free-dot {
131
+ fill: var(--sn-conn-color, #4a9eff);
132
+ stroke: var(--sn-node-bg, #fff);
133
+ stroke-width: 1.5;
134
+ opacity: 0.9;
135
+ /* PERF: removed filter:drop-shadow — see .sn-conn-dot */
136
+ }
137
+ .sn-free-dot:hover {
138
+ r: 6;
139
+ }
140
+
141
+ /* Dot highlight during compatible connector drag */
142
+ .sn-dot-hint {
143
+ r: 7;
144
+ /* PERF: removed filter:drop-shadow — GPU layer per dot */
145
+ animation: sn-dot-pulse 0.6s ease-in-out infinite;
146
+ }
147
+
148
+ @keyframes sn-dot-pulse {
149
+ 0%, 100% { opacity: 0.9; }
150
+ 50% { opacity: 1; }
151
+ }
152
+
153
+ .pseudo-path {
154
+ fill: none;
155
+ stroke: var(--sn-conn-color, #4a9eff);
156
+ stroke-width: 2;
157
+ opacity: 0.5;
158
+ stroke-dasharray: 8 4;
159
+ }
160
+
161
+ /* Data flow animation */
162
+ @keyframes sn-flow {
163
+ from { stroke-dashoffset: 0; }
164
+ to { stroke-dashoffset: -20; }
165
+ }
166
+
167
+ .sn-conn-path[data-flowing] {
168
+ stroke-dasharray: 10 5;
169
+ animation: sn-flow 0.6s linear infinite;
170
+ opacity: 0.9;
171
+ }
172
+
173
+ /* Plus indicator at connection drag endpoint */
174
+ .plus-indicator {
175
+ circle {
176
+ fill: var(--sn-node-bg, #16213e);
177
+ stroke: var(--sn-conn-color, #4a9eff);
178
+ stroke-width: 1.5;
179
+ opacity: 0.9;
180
+ }
181
+ line {
182
+ stroke: var(--sn-conn-color, #4a9eff);
183
+ stroke-width: 1.5;
184
+ stroke-linecap: round;
185
+ }
186
+ }
187
+
188
+ /* Socket highlighting during connection drag */
189
+ @keyframes sn-socket-glow {
190
+ 0%, 100% { box-shadow: 0 0 4px currentColor; }
191
+ 50% { box-shadow: 0 0 12px currentColor, 0 0 20px currentColor; }
192
+ }
193
+
194
+ .sn-socket[data-compatible] {
195
+ animation: sn-socket-glow 1s ease-in-out infinite;
196
+ transform: scale(1.3);
197
+ z-index: 10;
198
+ }
199
+
200
+ .sn-socket[data-incompatible] {
201
+ opacity: 0.25;
202
+ transform: scale(0.8);
203
+ }
204
+
205
+ /* Node lift effect when dragging */
206
+ .sn-node-lifted {
207
+ box-shadow: 0 6px 12px var(--sn-shadow-color, rgba(0, 0, 0, 0.5));
208
+ border-color: var(--sn-node-active-border, rgba(74, 158, 255, 0.5)) !important;
209
+ }
210
+
211
+ /* Connector dot: input vs output side */
212
+ .sn-dot-output {
213
+ fill: var(--sn-dot-output, #e8915a);
214
+ }
215
+ .sn-dot-input {
216
+ fill: var(--sn-dot-input, #5ac8e8);
217
+ }
218
+
219
+ /* Connector dot: socket type overrides */
220
+ .sn-dot-exec {
221
+ fill: var(--sn-dot-exec, #e8a15a);
222
+ r: 6;
223
+ }
224
+ .sn-dot-data {
225
+ /* uses side color by default */
226
+ }
227
+ .sn-dot-ctrl {
228
+ fill: var(--sn-dot-ctrl, #78d97a);
229
+ r: 4;
230
+ }
231
+
232
+ /* Direction arrow on wire midpoint */
233
+ .sn-conn-arrow {
234
+ fill: var(--sn-conn-color, #4a9eff);
235
+ opacity: 0.5;
236
+ pointer-events: none;
237
+ }
238
+
239
+ /* Fire trace: sequential node execution highlighting */
240
+ @keyframes sn-fire-pulse {
241
+ 0% { box-shadow: 0 0 0 0 rgba(76, 175, 80, 0.6); }
242
+ 50% { box-shadow: 0 0 16px 4px rgba(76, 175, 80, 0.4); }
243
+ 100% { box-shadow: 0 0 0 0 rgba(76, 175, 80, 0); }
244
+ }
245
+
246
+ graph-node[data-fire-state="active"] {
247
+ border-color: #4caf50 !important;
248
+ animation: sn-fire-pulse 0.6s ease-out;
249
+ z-index: 50;
250
+ }
251
+
252
+ graph-node[data-fire-state="done"] {
253
+ border-color: rgba(76, 175, 80, 0.4) !important;
254
+ transition: border-color 2s ease-out;
255
+ }
256
+
257
+ graph-node[data-fire-state="pending"] {
258
+ opacity: 0.5;
259
+ transition: opacity 0.15s;
260
+ }
261
+ `;