loadtoagent 1.0.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 (82) hide show
  1. package/README.ko.md +175 -0
  2. package/README.md +175 -0
  3. package/README.zh-CN.md +175 -0
  4. package/bin/loadtoagent.js +171 -0
  5. package/docs/ARCHITECTURE.md +30 -0
  6. package/docs/PROVIDER-CONTRACTS.md +58 -0
  7. package/docs/assets/loadtoagent-dashboard.png +0 -0
  8. package/docs/assets/loadtoagent-demo.gif +0 -0
  9. package/main.js +493 -0
  10. package/package.json +133 -0
  11. package/preload.js +75 -0
  12. package/renderer/app-agent-actions.js +285 -0
  13. package/renderer/app-bootstrap.js +95 -0
  14. package/renderer/app-dashboard.js +361 -0
  15. package/renderer/app-drawer-content.js +203 -0
  16. package/renderer/app-drawer-data.js +41 -0
  17. package/renderer/app-drawer.js +183 -0
  18. package/renderer/app-events-dialogs.js +169 -0
  19. package/renderer/app-events-filters.js +74 -0
  20. package/renderer/app-events-navigation.js +96 -0
  21. package/renderer/app-events-sessions.js +195 -0
  22. package/renderer/app-events.js +16 -0
  23. package/renderer/app-graph-layout.js +71 -0
  24. package/renderer/app-graph-model.js +107 -0
  25. package/renderer/app-graph-orchestration.js +76 -0
  26. package/renderer/app-graph-view.js +544 -0
  27. package/renderer/app-run-modal.js +221 -0
  28. package/renderer/app-session-render.js +243 -0
  29. package/renderer/app-tmux-render.js +247 -0
  30. package/renderer/app.js +608 -0
  31. package/renderer/fonts/geist-ext.woff2 +0 -0
  32. package/renderer/fonts/geist.woff2 +0 -0
  33. package/renderer/i18n-messages.js +355 -0
  34. package/renderer/i18n.js +122 -0
  35. package/renderer/index.html +386 -0
  36. package/renderer/shared.js +26 -0
  37. package/renderer/styles-agent-map.css +401 -0
  38. package/renderer/styles-cards.css +600 -0
  39. package/renderer/styles-collaboration.css +534 -0
  40. package/renderer/styles-components.css +1293 -0
  41. package/renderer/styles-onboarding.css +344 -0
  42. package/renderer/styles-overlays.css +284 -0
  43. package/renderer/styles-product.css +686 -0
  44. package/renderer/styles-responsive-product.css +689 -0
  45. package/renderer/styles-responsive-runtime.css +718 -0
  46. package/renderer/styles-responsive-shell.css +533 -0
  47. package/renderer/styles-responsive-workflows.css +778 -0
  48. package/renderer/styles-run-composer.css +695 -0
  49. package/renderer/styles-settings.css +606 -0
  50. package/renderer/styles-terminal.css +1241 -0
  51. package/renderer/styles-tmux.css +1162 -0
  52. package/renderer/styles-workflow-map.css +513 -0
  53. package/renderer/styles-workflows.css +1217 -0
  54. package/renderer/styles.css +486 -0
  55. package/renderer/terminal-agent.js +152 -0
  56. package/renderer/terminal-events.js +226 -0
  57. package/renderer/terminal-workbench.js +464 -0
  58. package/renderer/terminal.js +497 -0
  59. package/src/agentMonitor/claudeParser.js +197 -0
  60. package/src/agentMonitor/codexCollaboration.js +95 -0
  61. package/src/agentMonitor/codexParser.js +447 -0
  62. package/src/agentMonitor/genericParser.js +244 -0
  63. package/src/agentMonitor/hierarchy.js +248 -0
  64. package/src/agentMonitor/sessionFiles.js +86 -0
  65. package/src/agentMonitor.js +591 -0
  66. package/src/agentRunner.js +465 -0
  67. package/src/bridgeServer.js +246 -0
  68. package/src/contracts.js +71 -0
  69. package/src/diagnostics.js +23 -0
  70. package/src/ipc/registerAgentIpc.js +12 -0
  71. package/src/ipc/registerAppIpc.js +20 -0
  72. package/src/ipc/registerTerminalIpc.js +50 -0
  73. package/src/ipc/registerTmuxIpc.js +30 -0
  74. package/src/ipc/registerWorkspaceIpc.js +14 -0
  75. package/src/monitorWorker.js +273 -0
  76. package/src/processMonitor.js +394 -0
  77. package/src/providerRegistry.js +120 -0
  78. package/src/terminalManager.js +438 -0
  79. package/src/tmuxController.js +183 -0
  80. package/src/tmuxMonitor.js +432 -0
  81. package/src/updateManager.js +339 -0
  82. package/src/workspaceStore.js +77 -0
@@ -0,0 +1,513 @@
1
+ /*
2
+ * Directed workflow map
3
+ * ---------------------
4
+ * Upstream/downstream columns, connection ports, summaries, and routed edges.
5
+ */
6
+
7
+ .downstream-column>header {
8
+ margin-bottom: 6px;
9
+ }
10
+
11
+ .downstream-stack.density-many {
12
+ grid-template-columns: repeat(2,minmax(0,1fr));
13
+ align-items: start;
14
+ gap: 10px 12px;
15
+ }
16
+
17
+ .downstream-column {
18
+ padding: 0 0 2px;
19
+ position: relative;
20
+ }
21
+
22
+ .agent-workflow-edges {
23
+ position: absolute;
24
+ z-index: 0;
25
+ inset: 0;
26
+ width: 100%;
27
+ height: 100%;
28
+ overflow: visible;
29
+ pointer-events: none;
30
+ }
31
+
32
+ .agent-workflow-edge.downstream {
33
+ stroke: #3fae8c;
34
+ }
35
+
36
+ .agent-workflow-column {
37
+ min-width: 0;
38
+ }
39
+
40
+ .agent-workflow-column>header {
41
+ min-height: 50px;
42
+ display: flex;
43
+ flex-direction: column;
44
+ justify-content: center;
45
+ margin-bottom: 10px;
46
+ padding: 0 3px;
47
+ }
48
+
49
+ .agent-workflow-column>header b {
50
+ display: block;
51
+ color: #dce6ee;
52
+ font-size: 13px;
53
+ }
54
+
55
+ .agent-workflow-column>header span {
56
+ display: block;
57
+ margin-top: 4px;
58
+ color: #718195;
59
+ font-size: 11px;
60
+ }
61
+
62
+ .agent-workflow-stack {
63
+ display: grid;
64
+ align-content: start;
65
+ gap: 10px;
66
+ }
67
+
68
+ .agent-workflow-node {
69
+ position: relative;
70
+ min-width: 0;
71
+ }
72
+
73
+ .agent-workflow-node .agent-flow-row {
74
+ border: 1px solid color-mix(in srgb,var(--provider) 24%,#263543);
75
+ border-radius: 12px;
76
+ background: linear-gradient(145deg,color-mix(in srgb,var(--provider) 5%,#101821),#0b1118);
77
+ box-shadow: 0 8px 22px rgba(0,0,0,.14);
78
+ }
79
+
80
+ .agent-workflow-node .agent-flow-row:hover {
81
+ border-color: color-mix(in srgb,var(--provider) 45%,#31505b);
82
+ transform: translateY(-1px);
83
+ }
84
+
85
+ .agent-workflow-selected .agent-node {
86
+ width: 100%;
87
+ box-shadow: 0 14px 35px rgba(0,0,0,.22),inset 3px 0 var(--provider);
88
+ }
89
+
90
+ .agent-workflow-origin {
91
+ position: relative;
92
+ min-width: 0;
93
+ min-height: 76px;
94
+ display: grid;
95
+ grid-template-columns: 38px minmax(0,1fr);
96
+ align-items: center;
97
+ gap: 10px;
98
+ padding: 12px;
99
+ border: 1px solid #2d4953;
100
+ border-radius: 12px;
101
+ background: linear-gradient(145deg,#102029,#0b131a);
102
+ box-shadow: 0 8px 22px rgba(0,0,0,.14);
103
+ }
104
+
105
+ .agent-workflow-origin b {
106
+ display: block;
107
+ font-size: 13px;
108
+ }
109
+
110
+ .agent-workflow-origin small {
111
+ display: block;
112
+ margin-top: 4px;
113
+ color: #75879a;
114
+ font-size: 11px;
115
+ }
116
+
117
+ .agent-workflow-empty {
118
+ min-height: 78px;
119
+ display: grid;
120
+ place-items: center;
121
+ padding: 14px;
122
+ border: 1px dashed #29403f;
123
+ border-radius: 12px;
124
+ background: rgba(8,15,20,.56);
125
+ color: #67798b;
126
+ font-size: 11px;
127
+ text-align: center;
128
+ }
129
+
130
+ .agent-workflow-port.input {
131
+ left: -7px;
132
+ top: 50%;
133
+ transform: translate(-50%,-50%);
134
+ }
135
+
136
+ .agent-workflow-port.output {
137
+ right: -7px;
138
+ top: 50%;
139
+ transform: translate(50%,-50%);
140
+ background: #55d6a8;
141
+ box-shadow: 0 0 0 1px rgba(102,222,183,.45),0 0 12px rgba(85,214,168,.28);
142
+ }
143
+
144
+ .agent-workflow-port {
145
+ position: absolute;
146
+ z-index: 4;
147
+ width: 14px;
148
+ height: 14px;
149
+ border: 3px solid #0b1218;
150
+ border-radius: 50%;
151
+ background: #5da8c3;
152
+ box-shadow: 0 0 0 1px rgba(119,188,211,.45),0 0 12px rgba(80,166,195,.28);
153
+ transition: transform var(--motion-medium) var(--motion-ease),box-shadow var(--motion-medium) ease;
154
+ background-clip: padding-box;
155
+ }
156
+
157
+ .agent-workflow-node:hover .agent-workflow-port {
158
+ box-shadow: 0 0 0 4px rgba(85,214,168,.1),0 0 16px rgba(85,214,168,.42);
159
+ }
160
+
161
+ .agent-workflow-selected:hover .agent-workflow-port {
162
+ box-shadow: 0 0 0 4px rgba(85,214,168,.1),0 0 16px rgba(85,214,168,.42);
163
+ }
164
+
165
+ .motion-connect .agent-workflow-edge {
166
+ stroke-dasharray: 1;
167
+ stroke-dashoffset: 1;
168
+ animation: motion-edge-draw 560ms var(--motion-ease) forwards;
169
+ }
170
+
171
+ .motion-connect .agent-workflow-edge.downstream {
172
+ animation-delay: 110ms;
173
+ }
174
+
175
+ .agent-workflow-selected-stack {
176
+ display: grid;
177
+ gap: 12px;
178
+ min-width: 0;
179
+ position: relative;
180
+ }
181
+
182
+ .agent-workflow-summary::-webkit-scrollbar {
183
+ display: none;
184
+ }
185
+
186
+ .agent-workflow-summary>span:first-child {
187
+ flex: 0 0 auto;
188
+ padding: 0 6px;
189
+ color: #70828d;
190
+ font-size: 9px;
191
+ }
192
+
193
+ .agent-workflow-summary>span:first-child b {
194
+ color: #66dfb3;
195
+ }
196
+
197
+ .workflow-summary-chip {
198
+ --provider: #8fa2b7;
199
+ display: flex;
200
+ align-items: center;
201
+ gap: 5px;
202
+ flex: 0 0 auto;
203
+ padding: 4px 6px;
204
+ border: 1px solid color-mix(in srgb,var(--provider) 24%,#263643);
205
+ border-radius: 7px;
206
+ background: color-mix(in srgb,var(--provider) 6%,#0d171c);
207
+ }
208
+
209
+ .workflow-summary-chip i {
210
+ width: 18px;
211
+ height: 17px;
212
+ display: grid;
213
+ place-items: center;
214
+ border-radius: 5px;
215
+ background: color-mix(in srgb,var(--provider) 12%,#152028);
216
+ color: var(--provider);
217
+ font-size: 6px;
218
+ font-style: normal;
219
+ font-weight: 800;
220
+ }
221
+
222
+ .workflow-summary-chip b {
223
+ color: #aebdc5;
224
+ font-size: 8px;
225
+ }
226
+
227
+ .workflow-summary-chip em {
228
+ color: var(--provider);
229
+ font-size: 8px;
230
+ font-style: normal;
231
+ font-weight: 800;
232
+ }
233
+
234
+ .downstream-stack .agent-workflow-node {
235
+ min-width: 0;
236
+ }
237
+
238
+ .downstream-stack .agent-flow-copy b {
239
+ font-size: 11px;
240
+ }
241
+
242
+ .downstream-stack .agent-flow-copy em {
243
+ font-size: 9px;
244
+ }
245
+
246
+ .agent-workflow-edge.downstream.group {
247
+ stroke: #53cda5;
248
+ stroke-width: 2.15;
249
+ opacity: .88;
250
+ }
251
+
252
+ .agent-workflow-edge.upstream.branch {
253
+ stroke-width: 2.1;
254
+ }
255
+
256
+ .agent-workflow-canvas {
257
+ position: relative;
258
+ min-width: 0;
259
+ border: 1px solid #20333c;
260
+ border-radius: 16px;
261
+ background-color: rgba(5,10,15,.64);
262
+ background-image: radial-gradient(circle,rgba(99,139,154,.16) 1px,transparent 1px);
263
+ background-size: 20px 20px;
264
+ padding: 22px 28px;
265
+ overflow: visible;
266
+ }
267
+
268
+ .agent-workflow-grid {
269
+ position: relative;
270
+ z-index: 1;
271
+ display: grid;
272
+ align-items: start;
273
+ min-width: 0;
274
+ grid-template-columns: minmax(150px,.5fr) minmax(300px,.95fr) minmax(420px,1.55fr);
275
+ gap: 46px;
276
+ }
277
+
278
+ .agent-workflow-selected {
279
+ position: relative;
280
+ min-width: 0;
281
+ width: 100%;
282
+ max-width: 350px;
283
+ margin-inline: auto;
284
+ }
285
+
286
+ .agent-workflow-selected>.agent-workflow-port.input {
287
+ top: 38px;
288
+ }
289
+
290
+ .agent-workflow-selected>.agent-workflow-port.output {
291
+ top: 38px;
292
+ }
293
+
294
+ .agent-workflow-selected .agent-node-main {
295
+ padding: 13px 14px;
296
+ }
297
+
298
+ .agent-workflow-selected .agent-task {
299
+ font-size: 15px;
300
+ line-height: 1.35;
301
+ }
302
+
303
+ .agent-workflow-selected .agent-current {
304
+ margin-top: 9px;
305
+ }
306
+
307
+ .agent-workflow-selected .agent-node-footer {
308
+ padding: 0 13px;
309
+ }
310
+
311
+ .agent-workflow-edge {
312
+ fill: none;
313
+ stroke: #4a7890;
314
+ stroke-width: 2;
315
+ vector-effect: non-scaling-stroke;
316
+ stroke-linecap: round;
317
+ stroke-linejoin: round;
318
+ filter: drop-shadow(0 0 3px rgba(76,180,151,.2));
319
+ }
320
+
321
+ .downstream-stack .agent-flow-row {
322
+ border-bottom: 1px solid color-mix(in srgb,var(--provider) 24%,#263543);
323
+ min-height: 66px;
324
+ align-items: start;
325
+ }
326
+
327
+ .downstream-stack .agent-flow-provider {
328
+ padding-top: 2px;
329
+ }
330
+
331
+ .downstream-column>.agent-workflow-port.group-input {
332
+ left: -7px;
333
+ top: 96px;
334
+ width: 2px;
335
+ height: 2px;
336
+ border: 0;
337
+ transform: translate(-50%,-50%);
338
+ background: transparent;
339
+ box-shadow: none;
340
+ opacity: 0;
341
+ }
342
+
343
+ .agent-workflow-summary {
344
+ align-items: center;
345
+ gap: 6px;
346
+ margin: 0 0 9px;
347
+ border: 1px solid #1d3034;
348
+ border-radius: 10px;
349
+ background: rgba(8,22,22,.72);
350
+ overflow-x: auto;
351
+ scrollbar-width: none;
352
+ display: block;
353
+ min-height: 0;
354
+ margin-bottom: 12px;
355
+ padding: 10px;
356
+ overflow: visible;
357
+ }
358
+
359
+ .workflow-summary-evidence {
360
+ display: flex;
361
+ align-items: center;
362
+ justify-content: space-between;
363
+ gap: 10px;
364
+ margin-top: 8px;
365
+ padding: 0 2px;
366
+ color: #7d9199;
367
+ font-size: 8px;
368
+ }
369
+
370
+ .workflow-summary-evidence small {
371
+ color: #5e747c;
372
+ }
373
+
374
+ .workflow-summary-providers {
375
+ display: flex;
376
+ align-items: center;
377
+ gap: 6px;
378
+ margin-top: 8px;
379
+ overflow-x: auto;
380
+ scrollbar-width: none;
381
+ }
382
+
383
+ .workflow-summary-providers::-webkit-scrollbar {
384
+ display: none;
385
+ }
386
+
387
+ .downstream-stack .agent-flow-row.child-session {
388
+ grid-template-columns: 7px minmax(0,1fr) auto;
389
+ gap: 11px;
390
+ padding: 13px 12px;
391
+ border-color: color-mix(in srgb,var(--provider) 27%,#263543);
392
+ background: linear-gradient(150deg,color-mix(in srgb,var(--provider) 6%,#101921),#091117 76%);
393
+ min-height: 158px;
394
+ position: relative;
395
+ overflow: hidden;
396
+ }
397
+
398
+ .agent-workflow-empty.current-clear {
399
+ display: flex;
400
+ min-height: 86px;
401
+ flex-direction: column;
402
+ align-items: center;
403
+ justify-content: center;
404
+ gap: 5px;
405
+ border-color: #263b42;
406
+ background: rgba(10,18,24,.72);
407
+ }
408
+
409
+ .agent-workflow-empty.current-clear b {
410
+ color: #9dacb9;
411
+ font-size: 11px;
412
+ }
413
+
414
+ .agent-workflow-empty.current-clear span {
415
+ color: #607181;
416
+ font-size: 9px;
417
+ }
418
+
419
+ .downstream-stack.density-many>.agent-workflow-empty.current-clear {
420
+ grid-column: 1/-1;
421
+ }
422
+
423
+ .agent-workflow-selected-stack>.agent-workflow-port.output {
424
+ right: auto;
425
+ left: min(calc(50% + 175px),100%);
426
+ top: 38px;
427
+ bottom: auto;
428
+ transform: translate(-50%,-50%);
429
+ }
430
+
431
+ .downstream-stack .child-session .agent-flow-copy {
432
+ width: 100%;
433
+ min-width: 0;
434
+ max-width: 100%;
435
+ overflow: hidden;
436
+ }
437
+
438
+ .downstream-stack .child-session .agent-flow-copy>* {
439
+ min-width: 0;
440
+ max-width: 100%;
441
+ box-sizing: border-box;
442
+ }
443
+
444
+ .downstream-stack .child-session .agent-flow-session-title {
445
+ color: #eef4f7;
446
+ font-size: 13px;
447
+ font-weight: 700;
448
+ line-height: 1.38;
449
+ letter-spacing: -.015em;
450
+ -webkit-box-orient: vertical;
451
+ display: block;
452
+ width: 100%;
453
+ min-width: 0;
454
+ min-height: 0;
455
+ max-width: 100%;
456
+ overflow: hidden;
457
+ text-overflow: ellipsis;
458
+ white-space: nowrap;
459
+ -webkit-line-clamp: initial;
460
+ }
461
+
462
+ .downstream-stack .child-session .agent-flow-agent strong {
463
+ min-width: 0;
464
+ max-width: 42%;
465
+ overflow: hidden;
466
+ text-overflow: ellipsis;
467
+ white-space: nowrap;
468
+ }
469
+
470
+ .downstream-stack .child-session .agent-flow-assignment strong {
471
+ display: block;
472
+ width: 100%;
473
+ min-width: 0;
474
+ overflow: hidden;
475
+ text-overflow: ellipsis;
476
+ white-space: nowrap;
477
+ -webkit-line-clamp: initial;
478
+ }
479
+
480
+ .downstream-stack .child-session .agent-flow-assignment-source {
481
+ display: block;
482
+ width: 100%;
483
+ min-width: 0;
484
+ overflow: hidden;
485
+ text-overflow: ellipsis;
486
+ white-space: nowrap;
487
+ -webkit-line-clamp: initial;
488
+ }
489
+
490
+ .downstream-stack .child-session .agent-flow-assignment {
491
+ width: 100%;
492
+ min-width: 0;
493
+ max-width: 100%;
494
+ overflow: hidden;
495
+ box-sizing: border-box;
496
+ }
497
+
498
+ .downstream-stack .child-session .agent-flow-outcome {
499
+ width: 100%;
500
+ min-width: 0;
501
+ max-width: 100%;
502
+ overflow: hidden;
503
+ box-sizing: border-box;
504
+ }
505
+
506
+ .downstream-stack .child-session .agent-flow-outcome-copy {
507
+ display: block;
508
+ min-width: 0;
509
+ flex: 1 1 auto;
510
+ overflow: hidden;
511
+ text-overflow: ellipsis;
512
+ white-space: nowrap;
513
+ }