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,293 @@
1
+ import { css } from '@symbiotejs/symbiote';
2
+
3
+ export const styles = css`
4
+ layout-node {
5
+ display: flex;
6
+ flex: 1;
7
+ min-width: 0;
8
+ min-height: 0;
9
+ overflow: hidden;
10
+ position: relative;
11
+
12
+ /* Panel mode */
13
+ &[node-type="panel"] {
14
+ flex-direction: column;
15
+ background: var(--bg-panel, #252525);
16
+ border: 1px solid var(--layout-border, #333);
17
+ }
18
+
19
+ .panel-view {
20
+ display: flex;
21
+ flex-direction: column;
22
+ width: 100%;
23
+ height: 100%;
24
+ position: relative;
25
+ }
26
+
27
+ .panel-header {
28
+ display: flex;
29
+ align-items: center;
30
+ gap: 2px;
31
+ padding: 2px 4px;
32
+ background: var(--bg-header, #1e1e1e);
33
+ border-bottom: 1px solid var(--layout-border, #333);
34
+ flex-shrink: 0;
35
+ min-height: 28px;
36
+ }
37
+
38
+ .header-btn {
39
+ display: flex;
40
+ align-items: center;
41
+ gap: 4px;
42
+ padding: 4px 6px;
43
+ background: transparent;
44
+ border: none;
45
+ border-radius: 4px;
46
+ cursor: pointer;
47
+ color: var(--text-dim, #888);
48
+ font-size: 0.75rem;
49
+ transition: background 0.1s, color 0.1s;
50
+
51
+ &[hidden] {
52
+ display: none;
53
+ }
54
+
55
+ &:hover {
56
+ background: var(--bg-hover, #333);
57
+ color: var(--text-main, #e0e0e0);
58
+ }
59
+
60
+ .material-symbols-outlined {
61
+ font-size: 16px;
62
+ }
63
+ }
64
+
65
+ .type-btn {
66
+ .dropdown-arrow {
67
+ font-size: 18px;
68
+ margin-left: -2px;
69
+ opacity: 0.6;
70
+ }
71
+ }
72
+
73
+ .header-spacer {
74
+ flex: 1;
75
+ }
76
+
77
+ .panel-title {
78
+ font-weight: 500;
79
+ white-space: nowrap;
80
+ }
81
+
82
+ .panel-content {
83
+ flex: 1;
84
+ overflow: auto;
85
+ position: relative;
86
+ }
87
+
88
+ /* Collapsed state - vertical (bottom/top panels) */
89
+ &[collapsed][collapse-dir="vertical"] {
90
+ flex: 0 0 auto !important;
91
+ height: 28px !important;
92
+ min-height: 28px !important;
93
+ max-height: 28px !important;
94
+
95
+ .panel-content,
96
+ action-zone {
97
+ display: none !important;
98
+ }
99
+
100
+ .panel-header {
101
+ position: relative;
102
+ }
103
+
104
+ /* Hide fullscreen button, dropdown, and spacer */
105
+ .fullscreen-btn,
106
+ .dropdown-arrow,
107
+ .panel-title,
108
+ .header-spacer {
109
+ display: none !important;
110
+ }
111
+
112
+ /* Panel icon at left */
113
+ .type-btn {
114
+ padding: 4px 8px;
115
+ background: none;
116
+ cursor: default;
117
+ pointer-events: none;
118
+
119
+ .panel-icon {
120
+ font-size: 18px;
121
+ }
122
+ }
123
+
124
+ /* Expand button centered */
125
+ .collapse-btn {
126
+ position: absolute;
127
+ left: 50%;
128
+ top: 50%;
129
+ transform: translate(-50%, -50%);
130
+ padding: 4px;
131
+ }
132
+ }
133
+
134
+ /* Collapsed state - horizontal (side panels) */
135
+ &[collapsed][collapse-dir="horizontal"] {
136
+ width: 32px !important;
137
+ min-width: 32px !important;
138
+ max-width: 32px !important;
139
+
140
+ .panel-view {
141
+ width: 32px;
142
+ display: flex;
143
+ flex-direction: column;
144
+ height: 100%;
145
+ }
146
+
147
+ .panel-content,
148
+ action-zone {
149
+ display: none !important;
150
+ }
151
+
152
+ .panel-header {
153
+ flex-direction: column;
154
+ writing-mode: horizontal-tb;
155
+ padding: 0;
156
+ height: 100%;
157
+ gap: 0;
158
+ align-items: center;
159
+ justify-content: flex-start;
160
+ width: 32px;
161
+ }
162
+
163
+ /* Hide fullscreen button, dropdown, and spacer */
164
+ .fullscreen-btn,
165
+ .dropdown-arrow,
166
+ .panel-title,
167
+ .header-spacer {
168
+ display: none !important;
169
+ }
170
+
171
+ /* Panel icon at top */
172
+ .type-btn {
173
+ order: 1;
174
+ padding: 6px 4px;
175
+ background: none;
176
+ cursor: default;
177
+ pointer-events: none;
178
+ flex: 0 0 auto;
179
+
180
+ .panel-icon {
181
+ font-size: 20px;
182
+ }
183
+ }
184
+
185
+ /* Expand button centered via flex-grow */
186
+ .collapse-btn {
187
+ order: 2;
188
+ padding: 8px 4px;
189
+ flex: 1;
190
+ display: flex;
191
+ align-items: center;
192
+ justify-content: center;
193
+ }
194
+ }
195
+
196
+ /* Fullscreen state */
197
+ &[fullscreen] {
198
+ position: fixed !important;
199
+ inset: 0 !important;
200
+ top: 28px !important;
201
+ z-index: 10001 !important;
202
+ box-shadow: 0 0 40px var(--sn-shadow-color, rgba(0, 0, 0, 0.8));
203
+ }
204
+
205
+ /* Fullscreen: hide panel type selector, collapse btn, action zones */
206
+ &[fullscreen] .type-btn,
207
+ &[fullscreen] .collapse-btn,
208
+ &[fullscreen] action-zone {
209
+ display: none !important;
210
+ }
211
+
212
+ /* Fullscreen: remove header bottom border */
213
+ &[fullscreen] .panel-header {
214
+ border-bottom: none !important;
215
+ }
216
+
217
+ /* Split mode */
218
+ &[node-type="split"] {
219
+ background: transparent;
220
+ border: none;
221
+ }
222
+
223
+ .split-view {
224
+ display: flex;
225
+ width: 100%;
226
+ height: 100%;
227
+
228
+ &[direction="horizontal"] {
229
+ flex-direction: row;
230
+ }
231
+
232
+ &[direction="vertical"] {
233
+ flex-direction: column;
234
+ }
235
+ }
236
+
237
+ .split-first,
238
+ .split-second {
239
+ display: flex;
240
+ overflow: hidden;
241
+ min-width: 0;
242
+ min-height: 0;
243
+ }
244
+
245
+ /* Collapsed child handling */
246
+ .split-first[collapsed-child] + .split-resizer + .split-second {
247
+ flex: 1 1 auto !important;
248
+ width: auto !important;
249
+ height: auto !important;
250
+ }
251
+
252
+ .split-first:has(+ .split-resizer + .split-second[collapsed-child]) {
253
+ flex: 1 1 auto !important;
254
+ width: auto !important;
255
+ height: auto !important;
256
+ }
257
+
258
+ .split-resizer {
259
+ flex-shrink: 0;
260
+ background: var(--layout-border, #333);
261
+ transition: background 0.15s ease;
262
+ z-index: 10;
263
+ }
264
+
265
+ .split-view[direction="horizontal"] > .split-resizer {
266
+ width: 2px;
267
+ cursor: col-resize;
268
+ }
269
+
270
+ .split-view[direction="vertical"] > .split-resizer {
271
+ height: 2px;
272
+ cursor: row-resize;
273
+ }
274
+
275
+ .split-resizer:hover {
276
+ background: var(--layout-highlight, #888);
277
+ }
278
+
279
+ &[resizing] .split-resizer {
280
+ background: var(--layout-highlight, #888);
281
+ }
282
+
283
+ &[resizing] {
284
+ user-select: none;
285
+ }
286
+
287
+ /* Hidden state */
288
+ .panel-view[hidden],
289
+ .split-view[hidden] {
290
+ display: none;
291
+ }
292
+ }
293
+ `;