project-graph-mcp 2.2.4 → 2.3.0

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 (151) hide show
  1. package/ARCHITECTURE.md +81 -0
  2. package/CHANGELOG.md +57 -0
  3. package/README.md +9 -4
  4. package/package.json +6 -13
  5. package/src/compact/expand.js +2 -4
  6. package/src/core/graph-builder.js +2 -2
  7. package/src/core/parser.js +2 -2
  8. package/src/network/server.js +1 -2
  9. package/src/network/web-server.js +4 -1
  10. package/vendor/symbiote-node/CHANGELOG.md +31 -0
  11. package/vendor/symbiote-node/LICENSE +21 -0
  12. package/vendor/symbiote-node/README.md +206 -0
  13. package/vendor/symbiote-node/canvas/AutoLayout.js +725 -0
  14. package/vendor/symbiote-node/canvas/Breadcrumb/Breadcrumb.css.js +73 -0
  15. package/vendor/symbiote-node/canvas/Breadcrumb/Breadcrumb.js +93 -0
  16. package/vendor/symbiote-node/canvas/Breadcrumb/Breadcrumb.tpl.js +9 -0
  17. package/vendor/symbiote-node/canvas/CanvasConnectionRenderer.js +962 -0
  18. package/vendor/symbiote-node/canvas/ConnectionRenderer.js +1468 -0
  19. package/vendor/symbiote-node/canvas/FlowSimulator.js +323 -0
  20. package/vendor/symbiote-node/canvas/ForceLayout.js +189 -0
  21. package/vendor/symbiote-node/canvas/ForceWorker.js +1325 -0
  22. package/vendor/symbiote-node/canvas/GraphTabs/GraphTabs.css.js +97 -0
  23. package/vendor/symbiote-node/canvas/GraphTabs/GraphTabs.js +176 -0
  24. package/vendor/symbiote-node/canvas/GraphTabs/GraphTabs.tpl.js +12 -0
  25. package/vendor/symbiote-node/canvas/LODManager.js +88 -0
  26. package/vendor/symbiote-node/canvas/Minimap/Minimap.css.js +71 -0
  27. package/vendor/symbiote-node/canvas/Minimap/Minimap.js +207 -0
  28. package/vendor/symbiote-node/canvas/Minimap/Minimap.tpl.js +9 -0
  29. package/vendor/symbiote-node/canvas/NodeCanvas/NodeCanvas.css.js +261 -0
  30. package/vendor/symbiote-node/canvas/NodeCanvas/NodeCanvas.js +1840 -0
  31. package/vendor/symbiote-node/canvas/NodeCanvas/NodeCanvas.tpl.js +22 -0
  32. package/vendor/symbiote-node/canvas/NodeSearch/NodeSearch.css.js +97 -0
  33. package/vendor/symbiote-node/canvas/NodeSearch/NodeSearch.js +132 -0
  34. package/vendor/symbiote-node/canvas/NodeSearch/NodeSearch.tpl.js +21 -0
  35. package/vendor/symbiote-node/canvas/NodeViewManager.js +584 -0
  36. package/vendor/symbiote-node/canvas/PinExpansion.js +131 -0
  37. package/vendor/symbiote-node/canvas/PseudoConnection.js +80 -0
  38. package/vendor/symbiote-node/canvas/SubgraphManager.js +201 -0
  39. package/vendor/symbiote-node/canvas/SubgraphRouter.js +443 -0
  40. package/vendor/symbiote-node/canvas/ViewportActions.js +446 -0
  41. package/vendor/symbiote-node/core/Connection.js +45 -0
  42. package/vendor/symbiote-node/core/Editor.js +451 -0
  43. package/vendor/symbiote-node/core/Frame.js +31 -0
  44. package/vendor/symbiote-node/core/GraphMermaid.js +348 -0
  45. package/vendor/symbiote-node/core/GraphText.js +210 -0
  46. package/vendor/symbiote-node/core/Node.js +143 -0
  47. package/vendor/symbiote-node/core/Portal.js +104 -0
  48. package/vendor/symbiote-node/core/Socket.js +185 -0
  49. package/vendor/symbiote-node/core/SubgraphNode.js +125 -0
  50. package/vendor/symbiote-node/index.js +103 -0
  51. package/vendor/symbiote-node/inspector/InspectorPanel/InspectorPanel.css.js +361 -0
  52. package/vendor/symbiote-node/inspector/InspectorPanel/InspectorPanel.js +332 -0
  53. package/vendor/symbiote-node/inspector/InspectorPanel/InspectorPanel.tpl.js +96 -0
  54. package/vendor/symbiote-node/inspector/TemplatePreview/TemplatePreview.css.js +104 -0
  55. package/vendor/symbiote-node/inspector/TemplatePreview/TemplatePreview.js +133 -0
  56. package/vendor/symbiote-node/inspector/TemplatePreview/TemplatePreview.tpl.js +33 -0
  57. package/vendor/symbiote-node/interactions/ConnectFlow.js +307 -0
  58. package/vendor/symbiote-node/interactions/Drag.js +102 -0
  59. package/vendor/symbiote-node/interactions/Selector.js +132 -0
  60. package/vendor/symbiote-node/interactions/SnapGrid.js +65 -0
  61. package/vendor/symbiote-node/interactions/Zoom.js +140 -0
  62. package/vendor/symbiote-node/layout/ActionZone/ActionZone.css.js +88 -0
  63. package/vendor/symbiote-node/layout/ActionZone/ActionZone.js +254 -0
  64. package/vendor/symbiote-node/layout/ActionZone/ActionZone.tpl.js +11 -0
  65. package/vendor/symbiote-node/layout/Layout/Layout.css.js +88 -0
  66. package/vendor/symbiote-node/layout/Layout/Layout.js +622 -0
  67. package/vendor/symbiote-node/layout/Layout/Layout.tpl.js +25 -0
  68. package/vendor/symbiote-node/layout/LayoutNode/LayoutNode.css.js +293 -0
  69. package/vendor/symbiote-node/layout/LayoutNode/LayoutNode.js +467 -0
  70. package/vendor/symbiote-node/layout/LayoutNode/LayoutNode.tpl.js +33 -0
  71. package/vendor/symbiote-node/layout/LayoutPreview/LayoutPreview.css.js +46 -0
  72. package/vendor/symbiote-node/layout/LayoutPreview/LayoutPreview.js +102 -0
  73. package/vendor/symbiote-node/layout/LayoutPreview/LayoutPreview.tpl.js +6 -0
  74. package/vendor/symbiote-node/layout/LayoutRouter/LayoutRouter.js +156 -0
  75. package/vendor/symbiote-node/layout/LayoutRouter/routerSync.js +250 -0
  76. package/vendor/symbiote-node/layout/LayoutSidebar/LayoutSidebar.css.js +379 -0
  77. package/vendor/symbiote-node/layout/LayoutSidebar/LayoutSidebar.js +263 -0
  78. package/vendor/symbiote-node/layout/LayoutSidebar/LayoutSidebar.tpl.js +20 -0
  79. package/vendor/symbiote-node/layout/LayoutSidebar/SidebarSection.js +183 -0
  80. package/vendor/symbiote-node/layout/LayoutTree.js +246 -0
  81. package/vendor/symbiote-node/layout/PanelMenu/PanelMenu.css.js +43 -0
  82. package/vendor/symbiote-node/layout/PanelMenu/PanelMenu.js +89 -0
  83. package/vendor/symbiote-node/layout/PanelMenu/PanelMenu.tpl.js +14 -0
  84. package/vendor/symbiote-node/layout/index.js +16 -0
  85. package/vendor/symbiote-node/menu/ContextMenu/ContextMenu.css.js +61 -0
  86. package/vendor/symbiote-node/menu/ContextMenu/ContextMenu.js +79 -0
  87. package/vendor/symbiote-node/menu/ContextMenu/ContextMenu.tpl.js +19 -0
  88. package/vendor/symbiote-node/node/CtrlItem/CtrlItem.css.js +41 -0
  89. package/vendor/symbiote-node/node/CtrlItem/CtrlItem.js +24 -0
  90. package/vendor/symbiote-node/node/CtrlItem/CtrlItem.tpl.js +16 -0
  91. package/vendor/symbiote-node/node/GraphFrame/GraphFrame.css.js +65 -0
  92. package/vendor/symbiote-node/node/GraphFrame/GraphFrame.js +29 -0
  93. package/vendor/symbiote-node/node/GraphFrame/GraphFrame.tpl.js +13 -0
  94. package/vendor/symbiote-node/node/GraphNode/GraphNode.css.js +683 -0
  95. package/vendor/symbiote-node/node/GraphNode/GraphNode.js +92 -0
  96. package/vendor/symbiote-node/node/GraphNode/GraphNode.tpl.js +17 -0
  97. package/vendor/symbiote-node/node/NodeSocket/NodeSocket.js +25 -0
  98. package/vendor/symbiote-node/node/NodeSocket/NodeSocket.tpl.js +7 -0
  99. package/vendor/symbiote-node/node/PortItem/PortItem.css.js +90 -0
  100. package/vendor/symbiote-node/node/PortItem/PortItem.js +87 -0
  101. package/vendor/symbiote-node/node/PortItem/PortItem.tpl.js +10 -0
  102. package/vendor/symbiote-node/package.json +59 -0
  103. package/vendor/symbiote-node/palette/PaletteBrowser/PaletteBrowser.css.js +143 -0
  104. package/vendor/symbiote-node/palette/PaletteBrowser/PaletteBrowser.js +131 -0
  105. package/vendor/symbiote-node/palette/PaletteBrowser/PaletteBrowser.tpl.js +16 -0
  106. package/vendor/symbiote-node/plugins/History.js +384 -0
  107. package/vendor/symbiote-node/plugins/Readonly.js +59 -0
  108. package/vendor/symbiote-node/shapes/CircleShape.js +80 -0
  109. package/vendor/symbiote-node/shapes/CommentShape.js +35 -0
  110. package/vendor/symbiote-node/shapes/DiamondShape.js +115 -0
  111. package/vendor/symbiote-node/shapes/NodeShape.js +80 -0
  112. package/vendor/symbiote-node/shapes/PillShape.js +91 -0
  113. package/vendor/symbiote-node/shapes/RectShape.js +72 -0
  114. package/vendor/symbiote-node/shapes/SVGShape.js +494 -0
  115. package/vendor/symbiote-node/shapes/index.js +53 -0
  116. package/vendor/symbiote-node/themes/Palette.js +32 -0
  117. package/vendor/symbiote-node/themes/Skin.js +113 -0
  118. package/vendor/symbiote-node/themes/Theme.js +84 -0
  119. package/vendor/symbiote-node/themes/carbon.js +137 -0
  120. package/vendor/symbiote-node/themes/dark.js +137 -0
  121. package/vendor/symbiote-node/themes/ebook.js +138 -0
  122. package/vendor/symbiote-node/themes/grey.js +137 -0
  123. package/vendor/symbiote-node/themes/light.js +137 -0
  124. package/vendor/symbiote-node/themes/neon.js +138 -0
  125. package/vendor/symbiote-node/themes/pcb.js +273 -0
  126. package/vendor/symbiote-node/themes/synthwave.js +137 -0
  127. package/vendor/symbiote-node/toolbar/QuickToolbar/QuickToolbar.css.js +86 -0
  128. package/vendor/symbiote-node/toolbar/QuickToolbar/QuickToolbar.js +128 -0
  129. package/vendor/symbiote-node/toolbar/QuickToolbar/QuickToolbar.tpl.js +29 -0
  130. package/web/app.js +6 -5
  131. package/web/components/canvas-graph.js +1666 -0
  132. package/web/components/event-feed/CodeWidget.js +32 -0
  133. package/web/components/event-feed/EventWidget.js +97 -0
  134. package/web/components/event-feed/ListWidget.js +57 -0
  135. package/web/components/event-feed/MiniGraphWidget.js +69 -0
  136. package/web/dashboard.js +1 -1
  137. package/web/index.html +4 -0
  138. package/web/panels/ActionBoard/ActionBoard.js +1 -1
  139. package/web/panels/SettingsPanel/SettingsPanel.tpl.js +1 -1
  140. package/web/panels/code-viewer.js +50 -15
  141. package/web/panels/dep-graph.js +2712 -7
  142. package/web/panels/file-tree.js +5 -2
  143. package/web/panels/live-monitor.js +75 -3
  144. package/web/style.css +33 -0
  145. package/docs/img/explorer-compact.jpg +0 -0
  146. package/docs/img/explorer-expanded.jpg +0 -0
  147. package/src/.contextignore +0 -22
  148. package/src/.project-graph-cache.json +0 -1
  149. package/src/compact/.project-graph-cache.json +0 -1
  150. package/web/.project-graph-cache.json +0 -1
  151. package/web/panels/SettingsPanel/.project-graph-cache.json +0 -1
@@ -0,0 +1,206 @@
1
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
2
+ [![Node.js](https://img.shields.io/badge/Node.js-%3E%3D18-339933?logo=node.js&logoColor=white)](https://nodejs.org)
3
+ [![Zero Dependencies](https://img.shields.io/badge/dependencies-0-brightgreen)](#)
4
+ [![Web Components](https://img.shields.io/badge/Web_Components-native-blue?logo=webcomponents.org&logoColor=white)](#)
5
+
6
+ # symbiote-node
7
+
8
+ A **visual node graph editor** and **execution engine** built on [Symbiote.js](https://github.com/symbiotejs/symbiote.js) — extensible, themeable, zero-dependency. Pure Web Components, works anywhere: vanilla HTML, React, Vue, Svelte, or any framework that supports custom elements.
9
+
10
+ > [!TIP]
11
+ > **22K lines, 150 files, zero external dependencies.** 70+ public API exports. Clone, serve, and start building node graphs in under a minute.
12
+
13
+ ### Graph Editor
14
+
15
+ The editor constructs visual node graphs from a data model. Nodes have typed input/output ports with compatibility validation, color-coded category headers, inline controls, and drag & drop with snap-to-grid. Connections render as SVG Bézier curves with gradient coloring.
16
+
17
+ ```javascript
18
+ import { NodeEditor, Node, Socket, Input, Output, NodeCanvas } from 'symbiote-node';
19
+
20
+ const editor = new NodeEditor();
21
+ const socket = new Socket('data', { color: '#4a9eff' });
22
+
23
+ const node1 = new Node('Source', { category: 'server' });
24
+ node1.addOutput('out', new Output(socket, 'Output'));
25
+
26
+ const node2 = new Node('Target', { category: 'control' });
27
+ node2.addInput('in', new Input(socket, 'Input'));
28
+
29
+ editor.addNode(node1);
30
+ editor.addNode(node2);
31
+
32
+ const canvas = document.querySelector('node-canvas');
33
+ canvas.setEditor(editor);
34
+ ```
35
+
36
+ ### Execution Engine
37
+
38
+ Server-side graph runtime with handler packs for data flow, control flow, I/O, and transforms. Graphs serialize to JSON and execute with topological ordering, retry logic, and parallel barriers.
39
+
40
+ ```javascript
41
+ import { Graph, Executor, Registry } from 'symbiote-node/engine';
42
+
43
+ const registry = new Registry();
44
+ await registry.loadDir('./engine/packs');
45
+
46
+ const graph = Graph.fromFile('workflow.json');
47
+ const executor = new Executor(graph, registry);
48
+ const results = await executor.run();
49
+ ```
50
+
51
+ ### Node Shapes
52
+
53
+ Two coexisting rendering modes on the same canvas — **HTML nodes** (CSS-styled rectangles) and **SVG nodes** (arbitrary vector shapes with perimeter-aware connector positioning). Built-in presets: `hexagon`, `star`, `cloud`, `shield`, `heart`, `rect`, `pill`, `circle`, `diamond`, `comment`.
54
+
55
+ ```javascript
56
+ import { createSVGShape, registerShape } from 'symbiote-node';
57
+
58
+ const myShape = createSVGShape('myshape', 'M12 2L22 8V16L12 22L2 16V8Z');
59
+ registerShape('myshape', myShape);
60
+
61
+ const node = new Node('Custom', { shape: 'myshape' });
62
+ ```
63
+
64
+ ### Theme System
65
+
66
+ Separate **Palette** (colors), **Skin** (geometry), and **Theme** (combined) layers — all driven by CSS custom properties. Switch at runtime without page reload.
67
+
68
+ | Theme | Description |
69
+ |-------|-------------|
70
+ | `GREY_NEUTRAL` | Balanced grey UI (default) |
71
+ | `DARK_DEFAULT` | Professional dark interface |
72
+ | `LIGHT_CLEAN` | Light mode |
73
+ | `SYNTHWAVE` | Neon retro aesthetic |
74
+ | `NEON_GLOW` | Vivid glow effects |
75
+ | `CARBON` | IBM Carbon-inspired |
76
+ | `EBOOK` | Warm paper-like reading theme |
77
+
78
+ ```javascript
79
+ import { applyTheme, CARBON, applyPalette, SYNTHWAVE_PALETTE } from 'symbiote-node';
80
+
81
+ applyTheme(canvasElement, CARBON); // Full theme
82
+ applyPalette(canvasElement, SYNTHWAVE_PALETTE); // Colors only
83
+ ```
84
+
85
+ ### Layout System (BSP)
86
+
87
+ Binary Space Partitioning layout engine for IDE-style panel workspaces. Panels resize by dragging dividers, sections split horizontally or vertically. Sidebar navigation with section switching and panel routing.
88
+
89
+ ```javascript
90
+ import { Layout, LayoutTree, LayoutSidebar } from 'symbiote-node';
91
+ ```
92
+
93
+ ### Plugins & Interactions
94
+
95
+ - **History** — undo/redo with keyboard bindings (Ctrl+Z / Ctrl+Shift+Z)
96
+ - **Readonly** — toggle read-only mode, blocks all mutations
97
+ - **FlowSimulator** — topological sort-based data flow animation with marching ants
98
+ - **SnapGrid** — configurable grid snapping
99
+ - **Selector** — rubber-band multi-select
100
+ - **ConnectFlow** — socket highlighting during connection drag
101
+ - **AutoLayout** — Sugiyama-based automatic node arrangement
102
+ - **Minimap** — viewport minimap with live position tracking
103
+ - **NodeSearch** — search/omnibox for quick node insertion
104
+ - **GraphTabs** — multi-page graph management
105
+ - **Subgraphs** — drill-down with breadcrumb navigation
106
+ - **Portals** — named reroutes for cross-graph connections
107
+ - **InspectorPanel** — property inspector sidebar
108
+ - **QuickToolbar** — floating action toolbar above selected node
109
+
110
+ ## Quick Start
111
+
112
+ ```bash
113
+ git clone https://github.com/RND-PRO/symbiote-node.git
114
+ cd symbiote-node
115
+ npx -y serve -l 3000 .
116
+ # Open http://localhost:3000/demo/
117
+ ```
118
+
119
+ ### As ES Module (CDN)
120
+
121
+ ```html
122
+ <script type="importmap">
123
+ {
124
+ "imports": {
125
+ "@symbiotejs/symbiote": "https://esm.sh/@symbiotejs/symbiote@3.2.1",
126
+ "symbiote-node": "./index.js"
127
+ }
128
+ }
129
+ </script>
130
+ <script type="module">
131
+ import { NodeEditor, Node, Socket, Input, Output, NodeCanvas } from 'symbiote-node';
132
+ import 'symbiote-node/canvas/NodeCanvas/NodeCanvas.js';
133
+ import 'symbiote-node/node/GraphNode/GraphNode.js';
134
+ // ...
135
+ </script>
136
+ ```
137
+
138
+ ## CLI (Engine)
139
+
140
+ ```bash
141
+ node engine/cli.js run <workflow.json> # Execute graph
142
+ node engine/cli.js validate <workflow.json> # Validate graph
143
+ node engine/cli.js list # List available node types
144
+ node engine/cli.js inspect <workflow.json> # Inspect graph structure
145
+ ```
146
+
147
+ ## Engine Handler Packs
148
+
149
+ Built-in node types organized by domain:
150
+
151
+ | Pack | Handlers | Description |
152
+ |------|----------|-------------|
153
+ | `flow` | `if`, `switch`, `loop`, `merge`, `retry`, `wait-all`, `agent` | Control flow and branching |
154
+ | `data` | `db-query`, `prompt-loader`, `rss-feed` | Data sources |
155
+ | `transform` | `json-parse`, `set`, `template`, `template-builder` | Data transformation |
156
+ | `io` | `http-request`, `read-file`, `write-file` | External I/O |
157
+ | `util` | `delay`, `log` | Utility nodes |
158
+ | `debug` | `inject` | Testing and debugging |
159
+
160
+ Custom handler packs can be loaded from any directory via `registry.loadDir()`.
161
+
162
+ ## Project Structure
163
+
164
+ ```
165
+ symbiote-node/
166
+ ├── index.js — public API (70+ exports)
167
+ ├── core/ — Editor, Node, Connection, Socket, Portal
168
+ ├── canvas/ — NodeCanvas, ConnectionRenderer, FlowSimulator, AutoLayout
169
+ ├── node/ — GraphNode, PortItem, CtrlItem, NodeSocket
170
+ ├── menu/ — ContextMenu
171
+ ├── interactions/ — Drag, Zoom, Selector, SnapGrid, ConnectFlow
172
+ ├── shapes/ — SVG shape system with 10 presets
173
+ ├── themes/ — Theme, Palette, Skin (7 themes)
174
+ ├── layout/ — BSP layout engine + LayoutSidebar + LayoutRouter
175
+ ├── toolbar/ — QuickToolbar
176
+ ├── inspector/ — InspectorPanel
177
+ ├── palette/ — PaletteBrowser
178
+ ├── plugins/ — Readonly, History
179
+ ├── engine/ — Server-side graph runtime
180
+ │ ├── packs/ — Built-in handler packs (flow, data, transform, io, util)
181
+ │ └── cli.js — CLI runner
182
+ ├── demo/ — Interactive demo
183
+ └── tests/ — 45 tests (geometry, serialization, topology)
184
+ ```
185
+
186
+ ## Tests
187
+
188
+ ```bash
189
+ node --test tests/*.test.js
190
+ # 45 tests: geometry, Bézier paths, serialization, socket compatibility,
191
+ # collapse/mute, subgraphs, execution, duck-typing
192
+ ```
193
+
194
+ ## Related Projects
195
+
196
+ - [project-graph-mcp](https://github.com/rnd-pro/project-graph-mcp) — MCP server for AI agents: project graph, code analysis, 18 tools
197
+ - [agent-pool-mcp](https://github.com/rnd-pro/agent-pool-mcp) — Multi-agent orchestration via Gemini CLI
198
+ - [Symbiote.js](https://github.com/symbiotejs/symbiote.js) — Isomorphic Reactive Web Components framework
199
+
200
+ ## License
201
+
202
+ MIT © [RND-PRO.com](https://rnd-pro.com)
203
+
204
+ ---
205
+
206
+ **Made with ❤️ by the RND-PRO team**