@hugobatist/smartcode 0.1.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 (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +292 -0
  3. package/dist/cli.js +4324 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/index.d.ts +374 -0
  6. package/dist/index.js +1167 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/static/annotations-panel.js +133 -0
  9. package/dist/static/annotations-svg.js +108 -0
  10. package/dist/static/annotations.css +367 -0
  11. package/dist/static/annotations.js +367 -0
  12. package/dist/static/app-init.js +497 -0
  13. package/dist/static/breakpoints.css +69 -0
  14. package/dist/static/breakpoints.js +197 -0
  15. package/dist/static/clipboard.js +94 -0
  16. package/dist/static/collapse-ui.js +325 -0
  17. package/dist/static/command-history.js +89 -0
  18. package/dist/static/context-menu.js +334 -0
  19. package/dist/static/custom-renderer.js +201 -0
  20. package/dist/static/dagre-layout.js +291 -0
  21. package/dist/static/diagram-dom.js +241 -0
  22. package/dist/static/diagram-editor.js +368 -0
  23. package/dist/static/editor-panel.js +107 -0
  24. package/dist/static/editor-popovers.js +187 -0
  25. package/dist/static/event-bus.js +57 -0
  26. package/dist/static/export.js +181 -0
  27. package/dist/static/file-tree.js +470 -0
  28. package/dist/static/ghost-paths.js +397 -0
  29. package/dist/static/heatmap.css +116 -0
  30. package/dist/static/heatmap.js +308 -0
  31. package/dist/static/icons.js +66 -0
  32. package/dist/static/inline-edit.js +294 -0
  33. package/dist/static/interaction-state.js +155 -0
  34. package/dist/static/interaction-tracker.js +93 -0
  35. package/dist/static/live.html +239 -0
  36. package/dist/static/main-layout.css +220 -0
  37. package/dist/static/main.css +334 -0
  38. package/dist/static/mcp-sessions.js +202 -0
  39. package/dist/static/modal.css +109 -0
  40. package/dist/static/modal.js +171 -0
  41. package/dist/static/node-drag.js +293 -0
  42. package/dist/static/pan-zoom.js +199 -0
  43. package/dist/static/renderer.js +280 -0
  44. package/dist/static/search.css +103 -0
  45. package/dist/static/search.js +304 -0
  46. package/dist/static/selection.js +353 -0
  47. package/dist/static/session-player.css +137 -0
  48. package/dist/static/session-player.js +411 -0
  49. package/dist/static/sidebar.css +248 -0
  50. package/dist/static/svg-renderer.js +313 -0
  51. package/dist/static/svg-shapes.js +218 -0
  52. package/dist/static/tokens.css +76 -0
  53. package/dist/static/vendor/dagre-bundle.js +43 -0
  54. package/dist/static/vendor/dagre.min.js +3 -0
  55. package/dist/static/vendor/graphlib.min.js +2 -0
  56. package/dist/static/viewport-transform.js +107 -0
  57. package/dist/static/workspace-switcher.js +202 -0
  58. package/dist/static/ws-client.js +71 -0
  59. package/dist/static/ws-handler.js +125 -0
  60. package/package.json +74 -0
@@ -0,0 +1,367 @@
1
+ /* ═══════════════════════════════════════════════
2
+ SmartCode — Annotations / Flag System
3
+ ═══════════════════════════════════════════════ */
4
+
5
+ /* ── Flag Mode Cursor ── */
6
+ .flag-mode #preview-container {
7
+ cursor: crosshair !important;
8
+ }
9
+ .flag-mode #preview-container * {
10
+ cursor: crosshair !important;
11
+ }
12
+ .flag-mode .preview-panel {
13
+ cursor: crosshair !important;
14
+ }
15
+ .flag-mode .preview-panel.grabbing {
16
+ cursor: crosshair !important;
17
+ }
18
+
19
+ /* ── Edges easier to click in flag mode ── */
20
+ .flag-mode #preview .edgePath path.flowchart-link,
21
+ .flag-mode #preview path.flowchart-link,
22
+ .flag-mode #preview .smartcode-edge path {
23
+ stroke-width: 6px !important;
24
+ transition: stroke 0.15s;
25
+ }
26
+ .flag-mode #preview .edgePath:hover path.flowchart-link,
27
+ .flag-mode #preview path.flowchart-link:hover,
28
+ .flag-mode #preview .smartcode-edge:hover path {
29
+ stroke: var(--status-problem) !important;
30
+ cursor: crosshair;
31
+ }
32
+
33
+ /* ── Flagged Node (red pulsing border) ── */
34
+ #preview .flagged rect,
35
+ #preview .flagged circle,
36
+ #preview .flagged polygon,
37
+ #preview .flagged .label-container {
38
+ stroke: var(--status-problem) !important;
39
+ stroke-width: 3px !important;
40
+ stroke-dasharray: 6 3 !important;
41
+ animation: flag-pulse 1.5s ease-in-out infinite;
42
+ }
43
+
44
+ @keyframes flag-pulse {
45
+ 0%, 100% { stroke-opacity: 1; }
46
+ 50% { stroke-opacity: 0.4; }
47
+ }
48
+
49
+ /* ── Flagged Edge (red dashed) ── */
50
+ #preview .flagged-edge path {
51
+ stroke: var(--status-problem) !important;
52
+ stroke-width: 3px !important;
53
+ stroke-dasharray: 8 4 !important;
54
+ animation: flag-pulse 1.5s ease-in-out infinite;
55
+ }
56
+
57
+ /* ── Flag Badge (red circle with "!") ── */
58
+ .flag-badge {
59
+ pointer-events: none;
60
+ filter: drop-shadow(0 1px 3px rgba(239, 68, 68, 0.5));
61
+ }
62
+
63
+ /* ── Flag Popover ── */
64
+ .flag-popover {
65
+ position: fixed;
66
+ z-index: 150;
67
+ background: var(--surface-2);
68
+ border: 1px solid var(--border-default);
69
+ border-radius: var(--radius-xl);
70
+ padding: 14px;
71
+ min-width: 260px;
72
+ max-width: 340px;
73
+ box-shadow: 0 8px 32px rgba(0,0,0,0.3);
74
+ animation: pop-in 0.15s ease-out;
75
+ }
76
+
77
+ @keyframes pop-in {
78
+ from { opacity: 0; transform: scale(0.95); }
79
+ to { opacity: 1; transform: scale(1); }
80
+ }
81
+
82
+ .flag-popover-title {
83
+ font-size: 12px;
84
+ font-weight: 700;
85
+ color: var(--text-primary);
86
+ margin-bottom: 8px;
87
+ display: flex;
88
+ align-items: center;
89
+ gap: 6px;
90
+ }
91
+
92
+ .flag-popover-title .node-id {
93
+ font-family: 'JetBrains Mono', monospace;
94
+ font-size: 11px;
95
+ color: var(--accent);
96
+ background: var(--accent-muted);
97
+ padding: 2px 8px;
98
+ border-radius: 4px;
99
+ }
100
+
101
+ .flag-popover textarea {
102
+ width: 100%;
103
+ min-height: 60px;
104
+ resize: vertical;
105
+ border: 1px solid var(--border-subtle);
106
+ border-radius: 8px;
107
+ background: var(--surface-2);
108
+ color: var(--text-primary);
109
+ font-family: inherit;
110
+ font-size: 12px;
111
+ padding: 8px 10px;
112
+ outline: none;
113
+ margin-bottom: 10px;
114
+ line-height: 1.5;
115
+ }
116
+ .flag-popover textarea:focus {
117
+ border-color: var(--accent);
118
+ box-shadow: 0 0 0 2px var(--accent-muted);
119
+ }
120
+ .flag-popover textarea::placeholder {
121
+ color: var(--text-secondary);
122
+ }
123
+
124
+ .flag-popover-actions {
125
+ display: flex;
126
+ gap: 8px;
127
+ justify-content: flex-end;
128
+ }
129
+
130
+ .flag-popover .btn-flag {
131
+ padding: 6px 16px;
132
+ border-radius: 8px;
133
+ border: none;
134
+ font-size: 12px;
135
+ font-weight: 600;
136
+ font-family: inherit;
137
+ cursor: pointer;
138
+ transition: all 0.15s;
139
+ }
140
+ .flag-popover .btn-flag.primary {
141
+ background: var(--status-problem);
142
+ color: var(--text-on-accent);
143
+ }
144
+ .flag-popover .btn-flag.primary:hover {
145
+ background: var(--status-problem-stroke);
146
+ }
147
+ .flag-popover .btn-flag.secondary {
148
+ background: var(--surface-3);
149
+ color: var(--text-secondary);
150
+ border: 1px solid var(--border-subtle);
151
+ }
152
+ .flag-popover .btn-flag.secondary:hover {
153
+ background: var(--surface-4);
154
+ color: var(--text-primary);
155
+ }
156
+ .flag-popover .btn-flag.remove {
157
+ background: rgba(239,68,68,0.12);
158
+ color: var(--status-problem);
159
+ border: 1px solid rgba(239,68,68,0.2);
160
+ }
161
+ .flag-popover .btn-flag.remove:hover {
162
+ background: rgba(239,68,68,0.25);
163
+ }
164
+
165
+ /* ── Flags Panel (right side) ── */
166
+ .flag-panel {
167
+ width: 280px;
168
+ background: var(--surface-1);
169
+ border-left: 1px solid var(--border-subtle);
170
+ display: flex;
171
+ flex-direction: column;
172
+ overflow-y: auto;
173
+ transition: width 0.25s ease, opacity 0.25s ease;
174
+ }
175
+ .flag-panel.hidden {
176
+ display: none;
177
+ }
178
+
179
+ .flag-panel-header {
180
+ padding: 10px 14px;
181
+ font-size: 10px;
182
+ font-weight: 700;
183
+ text-transform: uppercase;
184
+ letter-spacing: 1.5px;
185
+ color: var(--text-secondary);
186
+ border-bottom: 1px solid var(--border-subtle);
187
+ display: flex;
188
+ align-items: center;
189
+ justify-content: space-between;
190
+ }
191
+
192
+ .flag-panel-count {
193
+ font-size: 10px;
194
+ background: var(--status-problem);
195
+ color: var(--text-on-accent);
196
+ padding: 1px 7px;
197
+ border-radius: 10px;
198
+ font-weight: 700;
199
+ }
200
+
201
+ .flag-panel-list {
202
+ flex: 1;
203
+ overflow-y: auto;
204
+ padding: 6px 0;
205
+ }
206
+
207
+ .flag-panel-file {
208
+ padding: 6px 14px;
209
+ font-size: 10px;
210
+ font-weight: 600;
211
+ color: var(--text-secondary);
212
+ text-transform: uppercase;
213
+ letter-spacing: 0.5px;
214
+ border-bottom: 1px solid var(--surface-3);
215
+ white-space: nowrap;
216
+ overflow: hidden;
217
+ text-overflow: ellipsis;
218
+ }
219
+
220
+ .flag-panel-item {
221
+ padding: 10px 14px;
222
+ cursor: pointer;
223
+ border-bottom: 1px solid var(--surface-2);
224
+ transition: background 0.1s;
225
+ }
226
+ .flag-panel-item:hover {
227
+ background: var(--surface-2);
228
+ }
229
+
230
+ .flag-panel-item-top {
231
+ display: flex;
232
+ align-items: center;
233
+ justify-content: space-between;
234
+ margin-bottom: 3px;
235
+ }
236
+
237
+ .flag-panel-item-id {
238
+ font-family: 'JetBrains Mono', monospace;
239
+ font-size: 11px;
240
+ font-weight: 600;
241
+ color: var(--status-problem);
242
+ }
243
+
244
+ .flag-panel-item-delete {
245
+ background: none;
246
+ border: none;
247
+ color: var(--text-secondary);
248
+ font-size: 16px;
249
+ line-height: 1;
250
+ cursor: pointer;
251
+ padding: 0 2px;
252
+ opacity: 0;
253
+ transition: opacity 0.15s, color 0.15s;
254
+ }
255
+ .flag-panel-item:hover .flag-panel-item-delete {
256
+ opacity: 1;
257
+ }
258
+ .flag-panel-item-delete:hover {
259
+ color: var(--status-problem);
260
+ }
261
+
262
+ .flag-panel-item-msg {
263
+ font-size: 12px;
264
+ color: var(--text-secondary);
265
+ line-height: 1.4;
266
+ word-break: break-word;
267
+ }
268
+
269
+ .flag-panel-empty {
270
+ padding: 24px 14px;
271
+ text-align: center;
272
+ color: var(--text-secondary);
273
+ font-size: 12px;
274
+ line-height: 1.6;
275
+ }
276
+
277
+ /* ── Topbar Flag Button ── */
278
+ #btnFlags.active {
279
+ background: rgba(239, 68, 68, 0.15) !important;
280
+ color: var(--status-problem) !important;
281
+ border-color: rgba(239, 68, 68, 0.3) !important;
282
+ }
283
+
284
+ /* ═══════════════════════════════════════════════
285
+ DIAGRAM EDITOR — Correction Actions & Modes
286
+ ═══════════════════════════════════════════════ */
287
+
288
+ /* ── Correction actions inside flag popover ── */
289
+ .correction-actions {
290
+ border-top: 1px solid var(--border-subtle);
291
+ margin: 8px 0;
292
+ padding-top: 8px;
293
+ }
294
+ .correction-btns {
295
+ display: flex;
296
+ flex-wrap: wrap;
297
+ gap: 6px;
298
+ margin-top: 6px;
299
+ }
300
+ .btn-correction {
301
+ padding: 5px 12px;
302
+ border-radius: 6px;
303
+ border: 1px solid var(--border-subtle);
304
+ background: var(--accent-muted);
305
+ color: var(--accent);
306
+ font-size: 11px;
307
+ font-weight: 600;
308
+ font-family: inherit;
309
+ cursor: pointer;
310
+ transition: all 0.15s;
311
+ }
312
+ .btn-correction:hover {
313
+ background: rgba(59, 130, 246, 0.25);
314
+ }
315
+ .btn-correction-danger {
316
+ background: rgba(239,68,68,0.1);
317
+ color: var(--status-problem);
318
+ border-color: rgba(239,68,68,0.15);
319
+ }
320
+ .btn-correction-danger:hover {
321
+ background: rgba(239,68,68,0.2);
322
+ }
323
+
324
+ /* ── Add Node / Add Edge mode cursors ── */
325
+ .mode-addNode #preview-container,
326
+ .mode-addNode #preview-container *,
327
+ .mode-addEdge #preview-container,
328
+ .mode-addEdge #preview-container * {
329
+ cursor: crosshair !important;
330
+ }
331
+
332
+ /* ── Node hover highlight in addEdge mode ── */
333
+ .mode-addEdge #preview .node:hover rect,
334
+ .mode-addEdge #preview .node:hover circle,
335
+ .mode-addEdge #preview .node:hover polygon,
336
+ .mode-addEdge #preview .smartcode-node:hover rect,
337
+ .mode-addEdge #preview .smartcode-node:hover circle,
338
+ .mode-addEdge #preview .smartcode-node:hover polygon {
339
+ stroke: var(--accent) !important;
340
+ stroke-width: 3px !important;
341
+ filter: drop-shadow(0 0 6px var(--accent-muted));
342
+ }
343
+
344
+ /* ── Topbar edit buttons ── */
345
+ #btnAddNode.active,
346
+ #btnAddEdge.active {
347
+ background: var(--accent-muted) !important;
348
+ color: var(--accent) !important;
349
+ border-color: rgba(59, 130, 246, 0.3) !important;
350
+ }
351
+
352
+ /* ── Editor popover inputs ── */
353
+ .ep-input {
354
+ width: 100%;
355
+ border: 1px solid var(--border-subtle);
356
+ border-radius: 8px;
357
+ background: var(--surface-2);
358
+ color: var(--text-primary);
359
+ font-family: inherit;
360
+ font-size: 12px;
361
+ padding: 7px 10px;
362
+ outline: none;
363
+ }
364
+ .ep-input:focus {
365
+ border-color: var(--accent);
366
+ box-shadow: 0 0 0 2px var(--accent-muted);
367
+ }