codexmate 0.0.19 → 0.0.21

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 (102) hide show
  1. package/README.en.md +349 -255
  2. package/README.md +284 -248
  3. package/cli/agents-files.js +162 -0
  4. package/cli/archive-helpers.js +446 -0
  5. package/cli/auth-profiles.js +359 -0
  6. package/cli/builtin-proxy.js +580 -0
  7. package/cli/claude-proxy.js +998 -0
  8. package/cli/config-bootstrap.js +384 -0
  9. package/cli/config-health.js +338 -0
  10. package/cli/openclaw-config.js +629 -0
  11. package/cli/skills.js +1141 -0
  12. package/cli/zip-commands.js +510 -0
  13. package/cli.js +13129 -12973
  14. package/lib/cli-file-utils.js +151 -151
  15. package/lib/cli-models-utils.js +419 -152
  16. package/lib/cli-network-utils.js +164 -148
  17. package/lib/cli-path-utils.js +69 -0
  18. package/lib/cli-session-utils.js +121 -121
  19. package/lib/cli-sessions.js +386 -0
  20. package/lib/cli-utils.js +155 -155
  21. package/lib/download-artifacts.js +77 -0
  22. package/lib/mcp-stdio.js +440 -440
  23. package/lib/task-orchestrator.js +869 -0
  24. package/lib/text-diff.js +303 -303
  25. package/lib/workflow-engine.js +340 -340
  26. package/package.json +74 -63
  27. package/res/json5.min.js +1 -1
  28. package/res/vue.global.prod.js +13 -0
  29. package/web-ui/app.js +530 -5548
  30. package/web-ui/index.html +33 -2246
  31. package/web-ui/logic.agents-diff.mjs +386 -0
  32. package/web-ui/logic.claude.mjs +168 -0
  33. package/web-ui/logic.mjs +5 -793
  34. package/web-ui/logic.runtime.mjs +124 -0
  35. package/web-ui/logic.sessions.mjs +581 -0
  36. package/web-ui/modules/api.mjs +90 -0
  37. package/web-ui/modules/app.computed.dashboard.mjs +113 -0
  38. package/web-ui/modules/app.computed.index.mjs +15 -0
  39. package/web-ui/modules/app.computed.main-tabs.mjs +195 -0
  40. package/web-ui/modules/app.computed.session.mjs +507 -0
  41. package/web-ui/modules/app.constants.mjs +15 -0
  42. package/web-ui/modules/app.methods.agents.mjs +493 -0
  43. package/web-ui/modules/app.methods.claude-config.mjs +174 -0
  44. package/web-ui/modules/app.methods.codex-config.mjs +640 -0
  45. package/web-ui/modules/app.methods.index.mjs +88 -0
  46. package/web-ui/modules/app.methods.install.mjs +149 -0
  47. package/web-ui/modules/app.methods.navigation.mjs +619 -0
  48. package/web-ui/modules/app.methods.openclaw-core.mjs +814 -0
  49. package/web-ui/modules/app.methods.openclaw-editing.mjs +372 -0
  50. package/web-ui/modules/app.methods.openclaw-persist.mjs +369 -0
  51. package/web-ui/modules/app.methods.providers.mjs +363 -0
  52. package/web-ui/modules/app.methods.runtime.mjs +323 -0
  53. package/web-ui/modules/app.methods.session-actions.mjs +520 -0
  54. package/web-ui/modules/app.methods.session-browser.mjs +626 -0
  55. package/web-ui/modules/app.methods.session-timeline.mjs +448 -0
  56. package/web-ui/modules/app.methods.session-trash.mjs +422 -0
  57. package/web-ui/modules/app.methods.startup-claude.mjs +412 -0
  58. package/web-ui/modules/app.methods.task-orchestration.mjs +471 -0
  59. package/web-ui/modules/config-mode.computed.mjs +126 -124
  60. package/web-ui/modules/skills.computed.mjs +107 -107
  61. package/web-ui/modules/skills.methods.mjs +481 -481
  62. package/web-ui/partials/index/layout-footer.html +13 -0
  63. package/web-ui/partials/index/layout-header.html +402 -0
  64. package/web-ui/partials/index/modal-config-template-agents.html +125 -0
  65. package/web-ui/partials/index/modal-confirm-toast.html +32 -0
  66. package/web-ui/partials/index/modal-health-check.html +72 -0
  67. package/web-ui/partials/index/modal-openclaw-config.html +280 -0
  68. package/web-ui/partials/index/modal-skills.html +184 -0
  69. package/web-ui/partials/index/modals-basic.html +156 -0
  70. package/web-ui/partials/index/panel-config-claude.html +126 -0
  71. package/web-ui/partials/index/panel-config-codex.html +237 -0
  72. package/web-ui/partials/index/panel-config-openclaw.html +78 -0
  73. package/web-ui/partials/index/panel-docs.html +130 -0
  74. package/web-ui/partials/index/panel-market.html +174 -0
  75. package/web-ui/partials/index/panel-orchestration.html +397 -0
  76. package/web-ui/partials/index/panel-sessions.html +292 -0
  77. package/web-ui/partials/index/panel-settings.html +190 -0
  78. package/web-ui/partials/index/panel-usage.html +213 -0
  79. package/web-ui/session-helpers.mjs +559 -362
  80. package/web-ui/source-bundle.cjs +233 -0
  81. package/web-ui/styles/base-theme.css +271 -0
  82. package/web-ui/styles/controls-forms.css +360 -0
  83. package/web-ui/styles/docs-panel.css +182 -0
  84. package/web-ui/styles/feedback.css +108 -0
  85. package/web-ui/styles/health-check-dialog.css +144 -0
  86. package/web-ui/styles/layout-shell.css +376 -0
  87. package/web-ui/styles/modals-core.css +464 -0
  88. package/web-ui/styles/navigation-panels.css +348 -0
  89. package/web-ui/styles/openclaw-structured.css +266 -0
  90. package/web-ui/styles/responsive.css +450 -0
  91. package/web-ui/styles/sessions-list.css +400 -0
  92. package/web-ui/styles/sessions-preview.css +411 -0
  93. package/web-ui/styles/sessions-toolbar-trash.css +243 -0
  94. package/web-ui/styles/sessions-usage.css +628 -0
  95. package/web-ui/styles/skills-list.css +296 -0
  96. package/web-ui/styles/skills-market.css +335 -0
  97. package/web-ui/styles/task-orchestration.css +776 -0
  98. package/web-ui/styles/titles-cards.css +408 -0
  99. package/web-ui/styles.css +18 -4668
  100. package/web-ui.html +17 -17
  101. package/res/screenshot.png +0 -0
  102. package/res/vue.global.js +0 -18552
@@ -0,0 +1,776 @@
1
+ .task-layout-grid {
2
+ display: grid;
3
+ gap: 16px;
4
+ margin-bottom: 16px;
5
+ }
6
+
7
+ .task-layout-grid-primary {
8
+ grid-template-columns: minmax(0, 1fr);
9
+ }
10
+
11
+ .task-layout-grid-secondary {
12
+ grid-template-columns: minmax(0, 1fr);
13
+ }
14
+
15
+ .task-hero-card,
16
+ .task-compose-flow-card,
17
+ .task-sidebar-card,
18
+ .task-plan-card,
19
+ .task-workbench-card,
20
+ .task-template-block,
21
+ .task-readiness-card,
22
+ .task-action-help,
23
+ .task-empty-state {
24
+ min-width: 0;
25
+ border: 1px solid var(--color-border-soft);
26
+ border-radius: 18px;
27
+ background: var(--color-surface);
28
+ box-shadow: var(--shadow-subtle);
29
+ }
30
+
31
+ .task-hero-card {
32
+ padding: 18px;
33
+ margin-bottom: 16px;
34
+ background: linear-gradient(180deg, rgba(199, 116, 98, 0.10) 0%, rgba(199, 116, 98, 0.03) 100%), var(--color-surface);
35
+ }
36
+
37
+ .task-hero-main {
38
+ display: flex;
39
+ align-items: flex-start;
40
+ justify-content: space-between;
41
+ gap: 16px;
42
+ }
43
+
44
+ .task-hero-kicker {
45
+ font-size: 11px;
46
+ font-weight: 700;
47
+ letter-spacing: 0.08em;
48
+ text-transform: uppercase;
49
+ color: var(--color-text-secondary);
50
+ margin-bottom: 8px;
51
+ }
52
+
53
+ .task-hero-copy {
54
+ margin-top: 8px;
55
+ max-width: 760px;
56
+ line-height: 1.65;
57
+ }
58
+
59
+ .task-hero-actions {
60
+ flex: 0 0 auto;
61
+ flex-wrap: nowrap;
62
+ align-self: flex-start;
63
+ }
64
+
65
+ .task-hero-actions > .btn-tool-compact {
66
+ min-width: 108px;
67
+ }
68
+
69
+ .task-hero-actions > .btn-tool + .btn-tool,
70
+ .task-hero-actions > .btn-tool-compact + .btn-tool,
71
+ .task-hero-actions > .btn-tool + .btn-tool-compact,
72
+ .task-hero-actions > .btn-tool-compact + .btn-tool-compact {
73
+ margin-top: 0;
74
+ }
75
+
76
+ .task-hero-meta-strip {
77
+ display: flex;
78
+ flex-wrap: wrap;
79
+ gap: 8px;
80
+ margin-top: 14px;
81
+ }
82
+
83
+ .task-hero-meta {
84
+ display: inline-flex;
85
+ align-items: center;
86
+ gap: 6px;
87
+ min-height: 34px;
88
+ padding: 0 12px;
89
+ border-radius: 999px;
90
+ background: rgba(255, 255, 255, 0.56);
91
+ border: 1px solid rgba(199, 116, 98, 0.14);
92
+ color: var(--color-text-secondary);
93
+ font-size: 12px;
94
+ font-weight: 600;
95
+ }
96
+
97
+ .task-hero-meta strong {
98
+ color: var(--color-text-primary);
99
+ }
100
+
101
+ .task-compose-flow-card,
102
+ .task-sidebar-card,
103
+ .task-plan-card,
104
+ .task-workbench-card {
105
+ padding: 18px;
106
+ }
107
+
108
+ .task-flow-section + .task-flow-section,
109
+ .task-sidebar-group + .task-sidebar-group {
110
+ margin-top: 18px;
111
+ padding-top: 18px;
112
+ border-top: 1px solid var(--color-border-soft);
113
+ }
114
+
115
+ .task-flow-section-compact {
116
+ margin-top: 0;
117
+ }
118
+
119
+ .task-flow-head {
120
+ display: flex;
121
+ align-items: flex-start;
122
+ gap: 12px;
123
+ margin-bottom: 14px;
124
+ }
125
+
126
+ .task-flow-step {
127
+ width: 28px;
128
+ height: 28px;
129
+ border-radius: 999px;
130
+ background: var(--color-brand-light);
131
+ color: var(--color-brand-dark);
132
+ font-size: 13px;
133
+ font-weight: 700;
134
+ display: inline-flex;
135
+ align-items: center;
136
+ justify-content: center;
137
+ flex: 0 0 auto;
138
+ }
139
+
140
+ .task-flow-title,
141
+ .task-sidebar-title,
142
+ .task-readiness-title,
143
+ .task-empty-title,
144
+ .task-template-label {
145
+ font-size: 14px;
146
+ font-weight: 700;
147
+ color: var(--color-text-primary);
148
+ }
149
+
150
+ .task-flow-copy,
151
+ .task-readiness-copy,
152
+ .task-field-hint,
153
+ .task-empty-copy,
154
+ .task-action-help-item {
155
+ font-size: 12px;
156
+ line-height: 1.6;
157
+ color: var(--color-text-secondary);
158
+ }
159
+
160
+ .task-template-block {
161
+ padding: 12px 14px;
162
+ background: var(--color-surface-alt);
163
+ }
164
+
165
+ .task-template-panel {
166
+ margin-bottom: 14px;
167
+ padding: 12px 14px;
168
+ border: 1px solid var(--color-border-soft);
169
+ border-radius: 16px;
170
+ background: var(--color-surface-alt);
171
+ }
172
+
173
+ .task-template-chip-group,
174
+ .task-workflow-suggestions {
175
+ display: flex;
176
+ flex-wrap: wrap;
177
+ gap: 8px;
178
+ margin-top: 10px;
179
+ }
180
+
181
+ .task-template-chip,
182
+ .task-workflow-chip,
183
+ .task-workbench-tab {
184
+ border: 1px solid var(--color-border);
185
+ background: var(--color-surface);
186
+ color: var(--color-text-primary);
187
+ border-radius: 999px;
188
+ padding: 7px 12px;
189
+ font-size: 12px;
190
+ font-weight: 600;
191
+ cursor: pointer;
192
+ transition:
193
+ background var(--transition-fast) var(--ease-smooth),
194
+ border-color var(--transition-fast) var(--ease-smooth),
195
+ color var(--transition-fast) var(--ease-smooth),
196
+ box-shadow var(--transition-fast) var(--ease-smooth);
197
+ }
198
+
199
+ .task-template-chip:hover,
200
+ .task-workflow-chip:hover,
201
+ .task-workbench-tab:hover {
202
+ background: var(--color-brand-light);
203
+ border-color: var(--color-brand);
204
+ color: var(--color-brand-dark);
205
+ }
206
+
207
+ .task-workflow-chip {
208
+ display: inline-flex;
209
+ align-items: center;
210
+ gap: 8px;
211
+ }
212
+
213
+ .task-workflow-chip small {
214
+ color: var(--color-text-secondary);
215
+ font-size: 11px;
216
+ }
217
+
218
+ .task-composer-grid {
219
+ display: grid;
220
+ grid-template-columns: repeat(2, minmax(0, 1fr));
221
+ gap: 12px;
222
+ }
223
+
224
+ .task-composer-grid-primary {
225
+ grid-template-columns: minmax(0, 1fr);
226
+ }
227
+
228
+ .task-composer-grid-compact {
229
+ grid-template-columns: minmax(180px, 240px) minmax(0, 1fr);
230
+ align-items: stretch;
231
+ }
232
+
233
+ .task-field-wide {
234
+ grid-column: 1 / -1;
235
+ }
236
+
237
+ .task-goal-field {
238
+ padding: 16px;
239
+ border-radius: 16px;
240
+ background: var(--color-surface-alt);
241
+ border: 1px solid var(--color-border-soft);
242
+ }
243
+
244
+ .task-textarea,
245
+ .task-log-block {
246
+ width: 100%;
247
+ min-height: 92px;
248
+ resize: vertical;
249
+ padding: 10px 12px;
250
+ border-radius: 12px;
251
+ border: 1px solid var(--color-border);
252
+ background: var(--color-surface);
253
+ color: var(--color-text-primary);
254
+ font: inherit;
255
+ box-sizing: border-box;
256
+ }
257
+
258
+ .task-textarea-goal {
259
+ min-height: 132px;
260
+ font-size: 14px;
261
+ line-height: 1.65;
262
+ }
263
+
264
+ .task-toggle-card {
265
+ padding: 14px;
266
+ border-radius: 16px;
267
+ border: 1px solid var(--color-border-soft);
268
+ background: var(--color-surface-alt);
269
+ }
270
+
271
+ .task-toggle-stack {
272
+ display: flex;
273
+ flex-direction: column;
274
+ gap: 10px;
275
+ margin-top: 8px;
276
+ }
277
+
278
+ .task-toggle-inline {
279
+ display: flex;
280
+ flex-wrap: wrap;
281
+ gap: 12px;
282
+ margin-top: 8px;
283
+ }
284
+
285
+ .task-toggle-card-inline {
286
+ min-height: 100%;
287
+ }
288
+
289
+ .task-toggle {
290
+ display: inline-flex;
291
+ align-items: center;
292
+ gap: 8px;
293
+ color: var(--color-text-secondary);
294
+ font-size: 13px;
295
+ }
296
+
297
+ .task-config-strip {
298
+ display: flex;
299
+ flex-wrap: wrap;
300
+ gap: 10px;
301
+ }
302
+
303
+ .task-config-strip-vertical {
304
+ flex-direction: column;
305
+ }
306
+
307
+ .task-config-pill {
308
+ display: inline-flex;
309
+ align-items: center;
310
+ min-height: 34px;
311
+ padding: 0 12px;
312
+ border-radius: 999px;
313
+ background: var(--color-surface-alt);
314
+ border: 1px solid var(--color-border);
315
+ color: var(--color-text-secondary);
316
+ font-size: 12px;
317
+ font-weight: 600;
318
+ }
319
+
320
+ .task-readiness-card,
321
+ .task-action-help,
322
+ .task-empty-state,
323
+ .task-stage-card {
324
+ padding: 14px;
325
+ background: var(--color-surface-alt);
326
+ }
327
+
328
+ .task-draft-overview,
329
+ .task-draft-inline,
330
+ .task-advanced-panel {
331
+ margin-top: 14px;
332
+ padding: 14px;
333
+ border: 1px solid var(--color-border-soft);
334
+ border-radius: 16px;
335
+ background: var(--color-surface-alt);
336
+ }
337
+
338
+ .task-draft-inline {
339
+ display: flex;
340
+ flex-direction: column;
341
+ gap: 12px;
342
+ }
343
+
344
+ .task-draft-inline-head {
345
+ display: flex;
346
+ align-items: center;
347
+ gap: 10px;
348
+ flex-wrap: wrap;
349
+ }
350
+
351
+ .task-draft-inline-copy {
352
+ min-width: 0;
353
+ }
354
+
355
+ .task-draft-overview-head {
356
+ display: flex;
357
+ align-items: flex-start;
358
+ justify-content: space-between;
359
+ gap: 12px;
360
+ }
361
+
362
+ .task-checklist-inline {
363
+ display: grid;
364
+ grid-template-columns: repeat(2, minmax(0, 1fr));
365
+ gap: 10px;
366
+ margin-top: 12px;
367
+ }
368
+
369
+ .task-check-chip {
370
+ display: flex;
371
+ flex-direction: column;
372
+ gap: 4px;
373
+ padding: 12px;
374
+ border-radius: 14px;
375
+ border: 1px solid var(--color-border);
376
+ background: var(--color-surface);
377
+ }
378
+
379
+ .task-check-chip strong {
380
+ font-size: 12px;
381
+ color: var(--color-text-primary);
382
+ }
383
+
384
+ .task-check-chip span {
385
+ font-size: 12px;
386
+ line-height: 1.5;
387
+ color: var(--color-text-secondary);
388
+ }
389
+
390
+ .task-check-chip.done {
391
+ border-color: rgba(81, 154, 91, 0.24);
392
+ background: rgba(81, 154, 91, 0.08);
393
+ }
394
+
395
+ .task-draft-overview .task-config-strip {
396
+ margin-top: 12px;
397
+ }
398
+
399
+ .task-advanced-panel[open] {
400
+ box-shadow: var(--shadow-subtle);
401
+ }
402
+
403
+ .task-advanced-summary {
404
+ cursor: pointer;
405
+ font-size: 13px;
406
+ font-weight: 700;
407
+ color: var(--color-text-primary);
408
+ list-style: none;
409
+ }
410
+
411
+ .task-advanced-summary::-webkit-details-marker {
412
+ display: none;
413
+ }
414
+
415
+ .task-advanced-panel > .task-composer-grid,
416
+ .task-advanced-panel > .selector-grid {
417
+ margin-top: 12px;
418
+ }
419
+
420
+ .task-readiness-head {
421
+ display: flex;
422
+ align-items: flex-start;
423
+ justify-content: space-between;
424
+ gap: 12px;
425
+ }
426
+
427
+ .task-readiness-grid {
428
+ display: grid;
429
+ grid-template-columns: repeat(2, minmax(0, 1fr));
430
+ gap: 10px;
431
+ margin-top: 12px;
432
+ }
433
+
434
+ .task-readiness-item {
435
+ display: flex;
436
+ flex-direction: column;
437
+ gap: 4px;
438
+ padding: 12px;
439
+ border-radius: 14px;
440
+ border: 1px solid var(--color-border);
441
+ background: var(--color-surface);
442
+ }
443
+
444
+ .task-readiness-item strong {
445
+ font-size: 12px;
446
+ color: var(--color-text-primary);
447
+ }
448
+
449
+ .task-readiness-item span {
450
+ font-size: 12px;
451
+ color: var(--color-text-secondary);
452
+ line-height: 1.5;
453
+ }
454
+
455
+ .task-readiness-item.done {
456
+ border-color: rgba(81, 154, 91, 0.24);
457
+ background: rgba(81, 154, 91, 0.08);
458
+ }
459
+
460
+ .task-action-row,
461
+ .task-plan-summary-strip,
462
+ .task-detail-summary-strip {
463
+ display: flex;
464
+ flex-wrap: wrap;
465
+ gap: 10px;
466
+ }
467
+
468
+ .task-action-row-prominent {
469
+ align-items: center;
470
+ margin-top: 4px;
471
+ }
472
+
473
+ .task-action-row > .btn-tool,
474
+ .task-section-header .settings-tab-actions > .btn-tool-compact,
475
+ .task-action-row-right > .btn-tool,
476
+ .task-detail-toolbar > .btn-tool-compact {
477
+ min-height: 38px;
478
+ height: 38px;
479
+ display: inline-flex;
480
+ align-items: center;
481
+ justify-content: center;
482
+ box-sizing: border-box;
483
+ }
484
+
485
+ .task-action-preview {
486
+ min-width: 110px;
487
+ }
488
+
489
+ .task-action-row-right {
490
+ display: flex;
491
+ flex-wrap: wrap;
492
+ gap: 10px;
493
+ }
494
+
495
+ .task-action-row-right-prominent > .btn-tool {
496
+ min-width: 110px;
497
+ }
498
+
499
+ .task-action-help-prominent,
500
+ .task-action-help-sidebar {
501
+ display: flex;
502
+ flex-direction: column;
503
+ gap: 8px;
504
+ margin-top: 12px;
505
+ }
506
+
507
+ .task-section-header {
508
+ align-items: center;
509
+ justify-content: space-between;
510
+ gap: 12px;
511
+ }
512
+
513
+ .task-section-header > :first-child {
514
+ flex: 1 1 auto;
515
+ min-width: 0;
516
+ }
517
+
518
+ .task-header-actions,
519
+ .task-section-header .settings-tab-actions,
520
+ .task-detail-toolbar {
521
+ display: flex;
522
+ flex-wrap: wrap;
523
+ gap: 8px;
524
+ align-items: center;
525
+ justify-content: flex-end;
526
+ margin-left: auto;
527
+ }
528
+
529
+ .task-workbench-tabs {
530
+ display: flex;
531
+ flex-wrap: wrap;
532
+ gap: 8px;
533
+ margin-top: 14px;
534
+ }
535
+
536
+ .task-workbench-tab.active {
537
+ background: var(--color-brand-light);
538
+ border-color: var(--color-brand);
539
+ color: var(--color-brand-dark);
540
+ box-shadow: var(--shadow-subtle);
541
+ }
542
+
543
+ .task-workbench-panel {
544
+ margin-top: 14px;
545
+ }
546
+
547
+ .task-action-caption {
548
+ margin-top: 12px;
549
+ font-size: 12px;
550
+ line-height: 1.6;
551
+ color: var(--color-text-secondary);
552
+ }
553
+
554
+ .task-stage-empty {
555
+ display: flex;
556
+ align-items: center;
557
+ justify-content: space-between;
558
+ gap: 16px;
559
+ }
560
+
561
+ .task-stage-strip {
562
+ display: flex;
563
+ flex-wrap: wrap;
564
+ gap: 8px;
565
+ justify-content: flex-end;
566
+ }
567
+
568
+ .task-stage-pill {
569
+ padding: 8px 12px;
570
+ border-radius: 999px;
571
+ border: 1px solid var(--color-border-soft);
572
+ background: var(--color-surface);
573
+ font-size: 12px;
574
+ font-weight: 600;
575
+ color: var(--color-text-secondary);
576
+ }
577
+
578
+ .task-plan-summary-item {
579
+ min-width: 120px;
580
+ padding: 12px;
581
+ border-radius: 14px;
582
+ border: 1px solid var(--color-border);
583
+ background: var(--color-surface-alt);
584
+ display: flex;
585
+ flex-direction: column;
586
+ gap: 4px;
587
+ }
588
+
589
+ .task-plan-summary-label {
590
+ font-size: 11px;
591
+ color: var(--color-text-muted);
592
+ text-transform: uppercase;
593
+ letter-spacing: 0.06em;
594
+ }
595
+
596
+ .task-wave-list,
597
+ .task-node-list,
598
+ .task-runtime-list,
599
+ .task-warning-list,
600
+ .task-issues-list {
601
+ display: flex;
602
+ flex-direction: column;
603
+ gap: 10px;
604
+ margin-top: 12px;
605
+ }
606
+
607
+ .task-wave-card,
608
+ .task-node-card,
609
+ .task-runtime-item,
610
+ .task-warning-item,
611
+ .task-issue-item {
612
+ border: 1px solid var(--color-border);
613
+ border-radius: 14px;
614
+ background: var(--color-surface-alt);
615
+ }
616
+
617
+ .task-wave-card,
618
+ .task-node-card {
619
+ padding: 14px;
620
+ }
621
+
622
+ .task-warning-item,
623
+ .task-issue-item {
624
+ padding: 10px 12px;
625
+ font-size: 13px;
626
+ }
627
+
628
+ .task-warning-item {
629
+ color: var(--color-text-secondary);
630
+ background: rgba(255, 244, 220, 0.7);
631
+ }
632
+
633
+ .task-issue-item {
634
+ color: #8f2d21;
635
+ background: rgba(255, 232, 228, 0.75);
636
+ }
637
+
638
+ .task-wave-title,
639
+ .task-node-title,
640
+ .task-runtime-item-title {
641
+ font-weight: 700;
642
+ color: var(--color-text-primary);
643
+ }
644
+
645
+ .task-wave-nodes,
646
+ .task-node-meta,
647
+ .task-node-deps,
648
+ .task-runtime-item-meta,
649
+ .task-runtime-item-summary {
650
+ font-size: 12px;
651
+ color: var(--color-text-secondary);
652
+ line-height: 1.55;
653
+ }
654
+
655
+ .task-node-head,
656
+ .task-runtime-item,
657
+ .task-runtime-item-actions {
658
+ display: flex;
659
+ align-items: flex-start;
660
+ justify-content: space-between;
661
+ gap: 10px;
662
+ }
663
+
664
+ .task-runtime-item {
665
+ width: 100%;
666
+ padding: 14px;
667
+ cursor: default;
668
+ text-align: left;
669
+ }
670
+
671
+ .task-runtime-item.clickable {
672
+ cursor: pointer;
673
+ }
674
+
675
+ .task-runtime-item.active {
676
+ border-color: rgba(199, 116, 98, 0.3);
677
+ background: var(--color-brand-light);
678
+ }
679
+
680
+ .task-runtime-item-main {
681
+ min-width: 0;
682
+ flex: 1;
683
+ display: flex;
684
+ flex-direction: column;
685
+ gap: 4px;
686
+ }
687
+
688
+ .task-runtime-item-actions {
689
+ flex-direction: row;
690
+ align-items: center;
691
+ justify-content: flex-end;
692
+ flex-wrap: nowrap;
693
+ flex: 0 0 auto;
694
+ }
695
+
696
+ .task-runtime-item-actions .btn-mini {
697
+ min-width: 72px;
698
+ min-height: 30px;
699
+ height: 30px;
700
+ display: inline-flex;
701
+ align-items: center;
702
+ justify-content: center;
703
+ box-sizing: border-box;
704
+ }
705
+
706
+ .pill.success {
707
+ background: rgba(81, 154, 91, 0.14);
708
+ color: #285d31;
709
+ }
710
+
711
+ .pill.warn {
712
+ background: rgba(214, 153, 58, 0.16);
713
+ color: #7a5110;
714
+ }
715
+
716
+ .pill.error {
717
+ background: rgba(194, 73, 63, 0.16);
718
+ color: #8f2d21;
719
+ }
720
+
721
+ .pill.neutral {
722
+ background: rgba(116, 126, 138, 0.14);
723
+ color: #45515e;
724
+ }
725
+
726
+ .task-log-block {
727
+ margin: 10px 0 0;
728
+ min-height: 120px;
729
+ white-space: pre-wrap;
730
+ word-break: break-word;
731
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
732
+ font-size: 12px;
733
+ line-height: 1.55;
734
+ }
735
+
736
+ @media (max-width: 1200px) {
737
+ .task-layout-grid-primary,
738
+ .task-layout-grid-secondary {
739
+ grid-template-columns: 1fr;
740
+ }
741
+ }
742
+
743
+ @media (max-width: 720px) {
744
+ .task-composer-grid,
745
+ .task-readiness-grid,
746
+ .task-checklist-inline,
747
+ .task-composer-grid-compact {
748
+ grid-template-columns: 1fr;
749
+ }
750
+
751
+ .task-hero-main,
752
+ .task-flow-head,
753
+ .task-draft-overview-head,
754
+ .task-stage-empty,
755
+ .task-readiness-head,
756
+ .task-section-header,
757
+ .task-node-head,
758
+ .task-runtime-item,
759
+ .task-runtime-item-actions {
760
+ flex-direction: column;
761
+ align-items: stretch;
762
+ }
763
+
764
+ .task-header-actions,
765
+ .task-section-header .settings-tab-actions,
766
+ .task-detail-toolbar,
767
+ .task-action-row-right {
768
+ margin-left: 0;
769
+ width: 100%;
770
+ justify-content: flex-start;
771
+ }
772
+
773
+ .task-hero-actions {
774
+ flex-wrap: wrap;
775
+ }
776
+ }