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,401 @@
1
+ /*
2
+ * Agent map
3
+ * ---------
4
+ * Graph navigation, relationship trees, focus layouts, and provider summaries.
5
+ */
6
+
7
+ .global-stat {
8
+ position: relative;
9
+ padding: 15px 18px;
10
+ border-right: 1px solid var(--line-soft);
11
+ }
12
+
13
+ .global-stat:last-child {
14
+ border: 0;
15
+ }
16
+
17
+ .global-stat.live strong {
18
+ color: var(--green);
19
+ }
20
+
21
+ .global-stat.alert strong {
22
+ color: var(--amber);
23
+ }
24
+
25
+ .provider-overview {
26
+ max-width: 1640px;
27
+ margin: 16px auto 0;
28
+ display: grid;
29
+ grid-template-columns: repeat(4,minmax(0,1fr));
30
+ gap: 11px;
31
+ }
32
+
33
+ .provider-overview-card:before {
34
+ content: "";
35
+ position: absolute;
36
+ inset: 0 auto 0 0;
37
+ width: 2px;
38
+ background: var(--provider);
39
+ opacity: .72;
40
+ }
41
+
42
+ .provider-overview-card:after {
43
+ content: "";
44
+ position: absolute;
45
+ width: 110px;
46
+ height: 110px;
47
+ border-radius: 50%;
48
+ right: -50px;
49
+ top: -60px;
50
+ background: var(--provider);
51
+ filter: blur(45px);
52
+ opacity: .07;
53
+ }
54
+
55
+ .poc-head {
56
+ display: flex;
57
+ align-items: center;
58
+ gap: 10px;
59
+ }
60
+
61
+ .poc-state:before {
62
+ content: "";
63
+ width: 5px;
64
+ height: 5px;
65
+ border-radius: 50%;
66
+ background: #46505e;
67
+ }
68
+
69
+ .poc-state.online:before {
70
+ background: var(--green);
71
+ }
72
+
73
+ .poc-metrics {
74
+ display: grid;
75
+ grid-template-columns: repeat(3,1fr);
76
+ gap: 5px;
77
+ margin-top: 13px;
78
+ }
79
+
80
+ .poc-metrics div {
81
+ padding-right: 5px;
82
+ border-right: 1px solid var(--line-soft);
83
+ }
84
+
85
+ .poc-metrics div:last-child {
86
+ border: 0;
87
+ }
88
+
89
+ .session-card:focus-visible {
90
+ outline: 2px solid var(--provider);
91
+ outline-offset: 3px;
92
+ }
93
+
94
+ .graph-breadcrumbs button:hover {
95
+ border-color: #416277;
96
+ color: #e7f7ff;
97
+ }
98
+
99
+ .graph-reset:hover {
100
+ border-color: #416277;
101
+ color: #e7f7ff;
102
+ }
103
+
104
+ .graph-breadcrumbs i {
105
+ color: #4f5d70;
106
+ font-style: normal;
107
+ }
108
+
109
+ .tree-parent {
110
+ position: relative;
111
+ min-width: 0;
112
+ }
113
+
114
+ .tree-child {
115
+ position: relative;
116
+ min-width: 0;
117
+ }
118
+
119
+ .tree-children {
120
+ position: relative;
121
+ min-width: 0;
122
+ display: grid;
123
+ gap: 13px;
124
+ }
125
+
126
+ .tree-children:before {
127
+ content: "";
128
+ position: absolute;
129
+ left: -37px;
130
+ top: 15%;
131
+ bottom: 15%;
132
+ width: 1px;
133
+ background: #34495a;
134
+ }
135
+
136
+ .tree-child:before {
137
+ content: "";
138
+ position: absolute;
139
+ left: -36px;
140
+ top: 50%;
141
+ width: 36px;
142
+ height: 1px;
143
+ background: #34495a;
144
+ }
145
+
146
+ .tree-connector {
147
+ position: relative;
148
+ height: 100%;
149
+ }
150
+
151
+ .tree-connector:before {
152
+ content: "";
153
+ position: absolute;
154
+ left: 0;
155
+ right: 0;
156
+ top: 50%;
157
+ height: 1px;
158
+ background: linear-gradient(90deg,var(--green),#34495a);
159
+ }
160
+
161
+ .tree-connector i {
162
+ position: absolute;
163
+ right: -3px;
164
+ top: calc(50% - 4px);
165
+ width: 8px;
166
+ height: 8px;
167
+ border-top: 1px solid #5d7b8f;
168
+ border-right: 1px solid #5d7b8f;
169
+ transform: rotate(45deg);
170
+ }
171
+
172
+ .focus-relation {
173
+ width: min(400px,32vw);
174
+ min-width: 340px;
175
+ }
176
+
177
+ .focus-relation>span {
178
+ display: block;
179
+ margin: 0 0 9px 3px;
180
+ color: #6f7c8f;
181
+ font-size: 10px;
182
+ font-weight: 700;
183
+ letter-spacing: .1em;
184
+ }
185
+
186
+ .focus-arrow {
187
+ color: #4a6578;
188
+ font-size: 25px;
189
+ }
190
+
191
+ .focus-children {
192
+ display: grid;
193
+ gap: 12px;
194
+ max-height: 650px;
195
+ overflow: auto;
196
+ padding-right: 4px;
197
+ }
198
+
199
+ .global-stats {
200
+ max-width: 1640px;
201
+ margin: 26px auto 0;
202
+ display: grid;
203
+ grid-template-columns: repeat(5,minmax(0,1fr));
204
+ border: 1px solid var(--line);
205
+ border-radius: 14px;
206
+ background: rgba(12,16,25,.76);
207
+ overflow: hidden;
208
+ margin-top: 18px;
209
+ }
210
+
211
+ .global-stat strong {
212
+ display: inline-block;
213
+ margin-top: 6px;
214
+ font-weight: 640;
215
+ letter-spacing: -.04em;
216
+ font-size: 23px;
217
+ }
218
+
219
+ .agent-focus-layout {
220
+ display: grid;
221
+ grid-template-columns: minmax(360px,520px) minmax(0,1fr);
222
+ align-items: start;
223
+ gap: 16px;
224
+ }
225
+
226
+ .agent-focus-primary {
227
+ min-width: 0;
228
+ }
229
+
230
+ .agent-focus-layout .agent-node {
231
+ width: 100%;
232
+ }
233
+
234
+ .agent-focus-layout .agent-node-main {
235
+ padding: 16px;
236
+ }
237
+
238
+ .agent-focus-layout .agent-task {
239
+ font-size: 17px;
240
+ }
241
+
242
+ .agent-focus-layout .agent-current {
243
+ margin-top: 12px;
244
+ }
245
+
246
+ .agent-focus-layout .agent-node-footer {
247
+ padding: 0 15px;
248
+ }
249
+
250
+ .graph-breadcrumbs {
251
+ min-width: 0;
252
+ display: flex;
253
+ align-items: center;
254
+ gap: 8px;
255
+ overflow: hidden;
256
+ overflow-x: auto;
257
+ scrollbar-width: none;
258
+ }
259
+
260
+ .graph-breadcrumbs::-webkit-scrollbar {
261
+ display: none;
262
+ }
263
+
264
+ .agent-focus-label {
265
+ display: block;
266
+ margin: 0 0 8px 3px;
267
+ color: #6be0b0;
268
+ font-weight: 750;
269
+ letter-spacing: .11em;
270
+ font-size: 11px;
271
+ }
272
+
273
+ .global-stat span {
274
+ display: block;
275
+ color: #667288;
276
+ font-weight: 700;
277
+ letter-spacing: .12em;
278
+ text-transform: uppercase;
279
+ font-size: 11px;
280
+ }
281
+
282
+ .global-stat em {
283
+ margin-left: 5px;
284
+ color: #657186;
285
+ font-style: normal;
286
+ font-size: 11px;
287
+ }
288
+
289
+ .provider-overview-card:active {
290
+ transform: translateY(1px) scale(.985);
291
+ }
292
+
293
+ .provider-overview-card:hover {
294
+ transform: translateY(-2px);
295
+ border-color: color-mix(in srgb,var(--provider) 34%,#273142);
296
+ will-change: transform;
297
+ }
298
+
299
+ .graph-breadcrumbs button.current {
300
+ border-color: rgba(76,227,154,.34);
301
+ background: rgba(76,227,154,.08);
302
+ color: #7cecad;
303
+ max-width: min(520px,62vw);
304
+ overflow: hidden;
305
+ text-overflow: ellipsis;
306
+ }
307
+
308
+ :where(button,a,input,textarea,select,summary,[role="button"],[tabindex]):focus-visible {
309
+ outline: 3px solid var(--focus)!important;
310
+ outline-offset: 3px!important;
311
+ box-shadow: 0 0 0 6px rgba(138,232,255,.14)!important;
312
+ }
313
+
314
+ .provider-overview-card {
315
+ --provider: #8fa2b7;
316
+ position: relative;
317
+ padding: 14px 15px 13px;
318
+ border: 1px solid var(--line);
319
+ border-radius: 14px;
320
+ background: linear-gradient(145deg,color-mix(in srgb,var(--provider) 5%,#10151f),#0d111a 62%);
321
+ overflow: hidden;
322
+ cursor: pointer;
323
+ transition: .18s ease;
324
+ min-height: 126px;
325
+ width: 100%;
326
+ color: inherit;
327
+ font: inherit;
328
+ text-align: left;
329
+ }
330
+
331
+ .provider-overview-card.selected {
332
+ border-color: color-mix(in srgb,var(--provider) 66%,#344151);
333
+ box-shadow: inset 0 0 0 1px color-mix(in srgb,var(--provider) 28%,transparent),0 10px 30px rgba(0,0,0,.2);
334
+ }
335
+
336
+ .poc-head strong {
337
+ display: block;
338
+ font-size: 14px;
339
+ }
340
+
341
+ .poc-head small {
342
+ display: block;
343
+ margin-top: 3px;
344
+ color: #98a6b6;
345
+ font-size: 11px;
346
+ }
347
+
348
+ .poc-state {
349
+ margin-left: auto;
350
+ display: flex;
351
+ align-items: center;
352
+ gap: 5px;
353
+ color: #98a6b6;
354
+ font-size: 11px;
355
+ }
356
+
357
+ .poc-metrics span {
358
+ display: block;
359
+ margin-top: 2px;
360
+ text-transform: uppercase;
361
+ letter-spacing: .08em;
362
+ color: #98a6b6;
363
+ font-size: 11px;
364
+ }
365
+
366
+ .poc-metrics b {
367
+ display: block;
368
+ font-weight: 620;
369
+ font-size: 16px;
370
+ }
371
+
372
+ .graph-breadcrumbs button {
373
+ height: 32px;
374
+ padding: 0 11px;
375
+ border: 1px solid #293547;
376
+ border-radius: 9px;
377
+ background: #101722;
378
+ color: #9ba8ba;
379
+ font-size: 11px;
380
+ cursor: pointer;
381
+ white-space: nowrap;
382
+ transition: transform var(--motion-fast) var(--motion-ease),background-color var(--motion-fast) ease,border-color var(--motion-fast) ease,color var(--motion-fast) ease,box-shadow var(--motion-medium) ease,opacity var(--motion-fast) ease;
383
+ }
384
+
385
+ .graph-reset {
386
+ height: 32px;
387
+ padding: 0 11px;
388
+ border: 1px solid #293547;
389
+ border-radius: 9px;
390
+ background: #101722;
391
+ color: #9ba8ba;
392
+ font-size: 11px;
393
+ cursor: pointer;
394
+ white-space: nowrap;
395
+ transition: transform var(--motion-fast) var(--motion-ease),background-color var(--motion-fast) ease,border-color var(--motion-fast) ease,color var(--motion-fast) ease,box-shadow var(--motion-medium) ease,opacity var(--motion-fast) ease;
396
+ }
397
+
398
+ .search-box:focus-within {
399
+ transition: border-color var(--motion-fast) ease,box-shadow var(--motion-medium) ease;
400
+ box-shadow: 0 0 0 3px rgba(89,216,255,.08);
401
+ }