agentweaver 0.1.19 → 0.1.20

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 (50) hide show
  1. package/README.md +47 -7
  2. package/dist/artifacts.js +9 -0
  3. package/dist/executors/git-commit-executor.js +24 -6
  4. package/dist/flow-state.js +3 -8
  5. package/dist/git/git-diff-parser.js +223 -0
  6. package/dist/git/git-service.js +562 -0
  7. package/dist/git/git-stage-selection.js +24 -0
  8. package/dist/git/git-status-parser.js +171 -0
  9. package/dist/git/git-types.js +1 -0
  10. package/dist/index.js +450 -108
  11. package/dist/interactive/auto-flow.js +644 -0
  12. package/dist/interactive/controller.js +417 -9
  13. package/dist/interactive/progress.js +194 -1
  14. package/dist/interactive/state.js +25 -0
  15. package/dist/interactive/web/index.js +97 -12
  16. package/dist/interactive/web/protocol.js +216 -1
  17. package/dist/interactive/web/server.js +72 -14
  18. package/dist/interactive/web/static/app.js +1603 -49
  19. package/dist/interactive/web/static/index.html +76 -11
  20. package/dist/interactive/web/static/styles.css +1 -1
  21. package/dist/interactive/web/static/styles.input.css +901 -47
  22. package/dist/pipeline/auto-flow-blocks.js +307 -0
  23. package/dist/pipeline/auto-flow-config.js +273 -0
  24. package/dist/pipeline/auto-flow-identity.js +49 -0
  25. package/dist/pipeline/auto-flow-presets.js +52 -0
  26. package/dist/pipeline/auto-flow-resolver.js +830 -0
  27. package/dist/pipeline/auto-flow-types.js +17 -0
  28. package/dist/pipeline/context.js +1 -0
  29. package/dist/pipeline/declarative-flows.js +27 -1
  30. package/dist/pipeline/flow-specs/auto-common-guided.json +11 -0
  31. package/dist/pipeline/flow-specs/auto-golang.json +12 -1
  32. package/dist/pipeline/flow-specs/bugz/bug-analyze.json +54 -1
  33. package/dist/pipeline/flow-specs/gitlab/gitlab-diff-review.json +19 -1
  34. package/dist/pipeline/flow-specs/gitlab/gitlab-review.json +33 -1
  35. package/dist/pipeline/flow-specs/review/review-project.json +19 -1
  36. package/dist/pipeline/flow-specs/task-source/manual-jira-input.json +70 -0
  37. package/dist/pipeline/node-registry.js +9 -0
  38. package/dist/pipeline/nodes/codex-prompt-node.js +8 -1
  39. package/dist/pipeline/nodes/flow-run-node.js +5 -3
  40. package/dist/pipeline/nodes/git-status-node.js +2 -168
  41. package/dist/pipeline/nodes/manual-jira-task-input-node.js +146 -0
  42. package/dist/pipeline/nodes/opencode-prompt-node.js +8 -1
  43. package/dist/pipeline/nodes/plan-codex-node.js +8 -1
  44. package/dist/pipeline/spec-loader.js +14 -4
  45. package/dist/runtime/artifact-catalog.js +29 -5
  46. package/dist/runtime/settings.js +114 -0
  47. package/dist/scope.js +14 -4
  48. package/package.json +1 -1
  49. package/dist/pipeline/flow-specs/auto-common.json +0 -179
  50. package/dist/pipeline/flow-specs/auto-simple.json +0 -141
@@ -4,6 +4,68 @@
4
4
  @source "./app.js";
5
5
 
6
6
  :root {
7
+ color-scheme: light;
8
+ --aw-bg: #f4f7f5;
9
+ --aw-bg-soft: #edf3ef;
10
+ --aw-panel: #ffffff;
11
+ --aw-panel-muted: #f7faf8;
12
+ --aw-border: #d4dfd9;
13
+ --aw-border-strong: #a9bcb1;
14
+ --aw-text: #17231e;
15
+ --aw-muted: #5d7066;
16
+ --aw-dim: #7a8b82;
17
+ --aw-accent: #168254;
18
+ --aw-accent-strong: #0d6b45;
19
+ --aw-accent-soft: rgba(22, 130, 84, 0.1);
20
+ --aw-cyan: #0e7490;
21
+ --aw-danger: #c03535;
22
+ --aw-success: #168254;
23
+ --aw-warning: #946500;
24
+ --aw-shadow: 0 18px 52px rgba(26, 42, 34, 0.15);
25
+ --aw-glow: 0 0 0 1px rgba(22, 130, 84, 0.07), 0 16px 44px rgba(26, 42, 34, 0.07);
26
+ --aw-body-bg: linear-gradient(180deg, rgba(22, 130, 84, 0.08), transparent 24rem), radial-gradient(circle at 88% 8%, rgba(14, 116, 144, 0.08), transparent 24rem), var(--aw-bg);
27
+ --aw-control-bg: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(242, 248, 245, 0.92));
28
+ --aw-primary-bg: linear-gradient(180deg, rgba(22, 130, 84, 0.18), rgba(22, 130, 84, 0.09));
29
+ --aw-danger-text: #a62f2f;
30
+ --aw-success-text: #0d6b45;
31
+ --aw-warning-text: #755400;
32
+ --aw-running-text: #0c6580;
33
+ --aw-pending-text: #405349;
34
+ --aw-control-ring: rgba(22, 130, 84, 0.16);
35
+ --aw-topbar-bg: rgba(255, 255, 255, 0.86);
36
+ --aw-panel-bg: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(247, 250, 248, 0.98));
37
+ --aw-heading-bg: linear-gradient(180deg, rgba(25, 52, 39, 0.04), rgba(25, 52, 39, 0.012));
38
+ --aw-surface-bg: rgba(239, 246, 242, 0.76);
39
+ --aw-surface-subtle-bg: rgba(248, 251, 249, 0.82);
40
+ --aw-input-bg: #ffffff;
41
+ --aw-text-panel-text: #21322a;
42
+ --aw-log-bg: linear-gradient(180deg, rgba(22, 130, 84, 0.045), transparent 8rem), #f8faf8;
43
+ --aw-drawer-bg: rgba(255, 255, 255, 0.98);
44
+ --aw-modal-overlay: rgba(216, 226, 221, 0.68);
45
+ --aw-code-bg: rgba(14, 116, 144, 0.08);
46
+ --aw-code-text: #17231e;
47
+ --aw-pre-bg: rgba(247, 250, 248, 0.88);
48
+ --aw-pre-text: #21322a;
49
+ --aw-muted-bg: rgba(23, 35, 30, 0.05);
50
+ --aw-inset-border: rgba(23, 35, 30, 0.08);
51
+ --aw-warning-soft: rgba(148, 101, 0, 0.12);
52
+ --aw-success-soft: rgba(22, 130, 84, 0.11);
53
+ --aw-running-soft: rgba(14, 116, 144, 0.11);
54
+ --aw-danger-soft: rgba(192, 53, 53, 0.11);
55
+ --aw-file-badge-bg: rgba(14, 116, 144, 0.08);
56
+ --aw-diff-border: rgba(190, 205, 197, 0.92);
57
+ --aw-diff-line-number-bg: rgba(238, 244, 240, 0.86);
58
+ --aw-diff-add-bg: rgba(22, 130, 84, 0.12);
59
+ --aw-diff-add-text: #0d5f3d;
60
+ --aw-diff-delete-bg: rgba(192, 53, 53, 0.11);
61
+ --aw-diff-delete-text: #932222;
62
+ --aw-diff-context-bg: rgba(255, 255, 255, 0.72);
63
+ --aw-scrollbar-thumb: #b8c8bf;
64
+ --aw-scrollbar-track: #edf3ef;
65
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
66
+ }
67
+
68
+ :root[data-theme="dark"] {
7
69
  color-scheme: dark;
8
70
  --aw-bg: #070b0a;
9
71
  --aw-bg-soft: #0b1210;
@@ -23,7 +85,45 @@
23
85
  --aw-warning: #f2c94c;
24
86
  --aw-shadow: 0 28px 90px rgba(0, 0, 0, 0.45);
25
87
  --aw-glow: 0 0 0 1px rgba(56, 224, 143, 0.08), 0 18px 60px rgba(56, 224, 143, 0.08);
26
- font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
88
+ --aw-body-bg: linear-gradient(180deg, rgba(56, 224, 143, 0.08), transparent 24rem), radial-gradient(circle at 88% 8%, rgba(101, 216, 255, 0.09), transparent 24rem), var(--aw-bg);
89
+ --aw-control-bg: linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.015));
90
+ --aw-primary-bg: linear-gradient(180deg, rgba(56, 224, 143, 0.26), rgba(56, 224, 143, 0.13));
91
+ --aw-danger-text: #ffb3b3;
92
+ --aw-success-text: #9df0c2;
93
+ --aw-warning-text: #ffe49a;
94
+ --aw-running-text: #bfefff;
95
+ --aw-pending-text: #c2d0c8;
96
+ --aw-control-ring: rgba(56, 224, 143, 0.12);
97
+ --aw-topbar-bg: rgba(7, 11, 10, 0.88);
98
+ --aw-panel-bg: linear-gradient(180deg, rgba(15, 23, 20, 0.96), rgba(10, 16, 14, 0.96));
99
+ --aw-heading-bg: linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.012));
100
+ --aw-surface-bg: rgba(7, 11, 10, 0.42);
101
+ --aw-surface-subtle-bg: rgba(3, 7, 6, 0.36);
102
+ --aw-input-bg: #070b0a;
103
+ --aw-text-panel-text: #d7eadf;
104
+ --aw-log-bg: linear-gradient(180deg, rgba(56, 224, 143, 0.035), transparent 8rem), #050806;
105
+ --aw-drawer-bg: rgba(10, 16, 14, 0.98);
106
+ --aw-modal-overlay: rgba(2, 5, 4, 0.72);
107
+ --aw-code-bg: rgba(101, 216, 255, 0.08);
108
+ --aw-code-text: #d8f7e7;
109
+ --aw-pre-bg: rgba(3, 7, 6, 0.62);
110
+ --aw-pre-text: #d7eadf;
111
+ --aw-muted-bg: rgba(255, 255, 255, 0.035);
112
+ --aw-inset-border: rgba(255, 255, 255, 0.08);
113
+ --aw-warning-soft: rgba(242, 201, 76, 0.12);
114
+ --aw-success-soft: rgba(56, 224, 143, 0.14);
115
+ --aw-running-soft: rgba(101, 216, 255, 0.12);
116
+ --aw-danger-soft: rgba(255, 107, 107, 0.12);
117
+ --aw-file-badge-bg: rgba(101, 216, 255, 0.09);
118
+ --aw-diff-border: rgba(34, 53, 46, 0.72);
119
+ --aw-diff-line-number-bg: rgba(7, 11, 10, 0.55);
120
+ --aw-diff-add-bg: rgba(56, 224, 143, 0.13);
121
+ --aw-diff-add-text: #dcffe9;
122
+ --aw-diff-delete-bg: rgba(255, 107, 107, 0.12);
123
+ --aw-diff-delete-text: #ffd6d6;
124
+ --aw-diff-context-bg: rgba(255, 255, 255, 0.015);
125
+ --aw-scrollbar-thumb: #284137;
126
+ --aw-scrollbar-track: #08100d;
27
127
  }
28
128
 
29
129
  * {
@@ -41,10 +141,7 @@ body {
41
141
 
42
142
  body {
43
143
  @apply m-0 overflow-hidden;
44
- background:
45
- linear-gradient(180deg, rgba(56, 224, 143, 0.08), transparent 24rem),
46
- radial-gradient(circle at 88% 8%, rgba(101, 216, 255, 0.09), transparent 24rem),
47
- var(--aw-bg);
144
+ background: var(--aw-body-bg);
48
145
  color: var(--aw-text);
49
146
  }
50
147
 
@@ -58,7 +155,7 @@ textarea {
58
155
  button {
59
156
  @apply inline-flex min-h-8 items-center justify-center gap-2 rounded-md px-3 py-1.5 text-sm font-semibold transition;
60
157
  border: 1px solid var(--aw-border-strong);
61
- background: linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.015));
158
+ background: var(--aw-control-bg);
62
159
  color: var(--aw-text);
63
160
  cursor: pointer;
64
161
  }
@@ -68,18 +165,18 @@ button:focus-visible {
68
165
  border-color: var(--aw-accent);
69
166
  color: var(--aw-accent-strong);
70
167
  outline: 2px solid transparent;
71
- box-shadow: 0 0 0 3px rgba(56, 224, 143, 0.12);
168
+ box-shadow: 0 0 0 3px var(--aw-control-ring);
72
169
  }
73
170
 
74
171
  button.primary {
75
172
  border-color: rgba(56, 224, 143, 0.75);
76
- background: linear-gradient(180deg, rgba(56, 224, 143, 0.26), rgba(56, 224, 143, 0.13));
173
+ background: var(--aw-primary-bg);
77
174
  color: var(--aw-accent-strong);
78
175
  }
79
176
 
80
177
  button.danger {
81
178
  border-color: rgba(255, 107, 107, 0.68);
82
- color: #ffb3b3;
179
+ color: var(--aw-danger-text);
83
180
  }
84
181
 
85
182
  button:disabled {
@@ -96,7 +193,7 @@ button:disabled {
96
193
  @apply grid items-center gap-4 px-4 py-3;
97
194
  grid-template-columns: minmax(220px, 1fr) auto auto;
98
195
  border-bottom: 1px solid var(--aw-border);
99
- background: rgba(7, 11, 10, 0.88);
196
+ background: var(--aw-topbar-bg);
100
197
  backdrop-filter: blur(16px);
101
198
  }
102
199
 
@@ -150,6 +247,60 @@ h2 {
150
247
  @apply justify-end;
151
248
  }
152
249
 
250
+ .log-actions {
251
+ @apply flex items-center gap-2;
252
+ }
253
+
254
+ .log-autoscroll {
255
+ @apply inline-flex items-center gap-1.5;
256
+ color: var(--aw-muted);
257
+ font-size: 12px;
258
+ font-weight: 700;
259
+ line-height: 1;
260
+ }
261
+
262
+ .log-autoscroll input {
263
+ width: 13px;
264
+ height: 13px;
265
+ margin: 0;
266
+ }
267
+
268
+ .theme-toggle {
269
+ @apply px-2.5;
270
+ min-width: 92px;
271
+ }
272
+
273
+ .theme-toggle-track {
274
+ width: 34px;
275
+ height: 18px;
276
+ flex: none;
277
+ position: relative;
278
+ border-radius: 999px;
279
+ border: 1px solid var(--aw-border-strong);
280
+ background: var(--aw-surface-bg);
281
+ }
282
+
283
+ .theme-toggle-thumb {
284
+ position: absolute;
285
+ top: 2px;
286
+ left: 2px;
287
+ width: 12px;
288
+ height: 12px;
289
+ border-radius: 999px;
290
+ background: var(--aw-accent-strong);
291
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.22);
292
+ transition: transform 0.18s ease;
293
+ }
294
+
295
+ :root[data-theme="dark"] .theme-toggle-thumb {
296
+ transform: translateX(16px);
297
+ }
298
+
299
+ .theme-toggle-label {
300
+ font-size: 12px;
301
+ line-height: 1;
302
+ }
303
+
153
304
  .connection {
154
305
  @apply inline-flex min-w-24 justify-center rounded-full px-2.5 py-1 text-xs font-bold;
155
306
  border: 1px solid currentColor;
@@ -181,28 +332,70 @@ h2 {
181
332
  .details-pane,
182
333
  .log-pane,
183
334
  .help-panel,
184
- .work-panel {
335
+ .work-panel,
336
+ .git-workspace {
185
337
  @apply grid min-h-0 overflow-hidden rounded-lg;
186
338
  grid-template-rows: auto minmax(0, 1fr);
187
339
  border: 1px solid var(--aw-border);
188
- background: linear-gradient(180deg, rgba(15, 23, 20, 0.96), rgba(10, 16, 14, 0.96));
340
+ background: var(--aw-panel-bg);
189
341
  box-shadow: var(--aw-glow);
190
342
  }
191
343
 
192
344
  .details-pane {
193
- gap: 10px;
194
- grid-template-rows: auto minmax(92px, 0.24fr) minmax(0, 1fr);
345
+ gap: 0;
346
+ grid-template-rows: auto auto minmax(0, 1fr);
195
347
  }
196
348
 
197
349
  .split-panels {
198
- @apply grid min-h-0 gap-3;
199
- grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
350
+ @apply grid min-h-0;
351
+ --aw-work-panel-width: 36%;
352
+ grid-template-columns: minmax(220px, var(--aw-work-panel-width)) 12px minmax(360px, 1fr);
353
+ grid-auto-rows: minmax(0, 1fr);
354
+ grid-row: 3;
355
+ }
356
+
357
+ .workspace-resizer {
358
+ position: relative;
359
+ cursor: col-resize;
360
+ border-left: 1px solid var(--aw-border);
361
+ border-right: 1px solid var(--aw-border);
362
+ background: var(--aw-heading-bg);
363
+ }
364
+
365
+ .workspace-resizer::before {
366
+ content: "";
367
+ position: absolute;
368
+ left: 50%;
369
+ top: 50%;
370
+ width: 3px;
371
+ height: min(220px, 42%);
372
+ border-radius: 999px;
373
+ background: var(--aw-border-strong);
374
+ transform: translate(-50%, -50%);
375
+ opacity: 0.7;
376
+ }
377
+
378
+ .workspace-resizer:hover::before,
379
+ .workspace-resizer:focus-visible::before,
380
+ .workspace-resizer.resizing::before {
381
+ background: var(--aw-accent);
382
+ opacity: 1;
383
+ }
384
+
385
+ .workspace-resizer:focus-visible {
386
+ outline: 2px solid transparent;
387
+ box-shadow: inset 0 0 0 2px var(--aw-accent);
388
+ }
389
+
390
+ .workspace-split-resizing {
391
+ cursor: col-resize;
392
+ user-select: none;
200
393
  }
201
394
 
202
395
  .pane-heading {
203
396
  @apply min-h-10 justify-between px-3 py-2;
204
397
  border-bottom: 1px solid var(--aw-border);
205
- background: linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.012));
398
+ background: var(--aw-heading-bg);
206
399
  }
207
400
 
208
401
  .flows-list {
@@ -253,19 +446,455 @@ h2 {
253
446
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
254
447
  font-size: 12px;
255
448
  line-height: 1.5;
256
- background: rgba(7, 11, 10, 0.42);
257
- color: #d7eadf;
449
+ background: var(--aw-surface-bg);
450
+ color: var(--aw-text-panel-text);
258
451
  }
259
452
 
260
453
  .text-panel.compact {
261
454
  border-bottom: 1px solid var(--aw-border);
262
455
  }
263
456
 
457
+ .progress-tree {
458
+ @apply m-0 grid min-h-0 content-start gap-1 overflow-auto p-2;
459
+ background: var(--aw-surface-bg);
460
+ color: var(--aw-text-panel-text);
461
+ font-size: 12px;
462
+ line-height: 1.35;
463
+ }
464
+
465
+ .progress-tree.fallback {
466
+ display: block;
467
+ overflow-wrap: anywhere;
468
+ white-space: pre-wrap;
469
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
470
+ line-height: 1.5;
471
+ }
472
+
473
+ .progress-flow-label {
474
+ @apply min-w-0 overflow-hidden text-ellipsis whitespace-nowrap;
475
+ color: var(--aw-text);
476
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
477
+ font-size: 11px;
478
+ font-weight: 800;
479
+ text-transform: none;
480
+ }
481
+
482
+ .progress-row {
483
+ @apply grid min-w-0 items-start gap-2 rounded-md border border-transparent px-2 py-1.5;
484
+ grid-template-columns: 18px minmax(0, 1fr);
485
+ min-height: 32px;
486
+ }
487
+
488
+ .progress-marker {
489
+ @apply inline-flex h-5 w-5 items-center justify-center rounded-full text-xs font-bold;
490
+ border: 1px solid currentColor;
491
+ line-height: 1;
492
+ }
493
+
494
+ .progress-row-body {
495
+ @apply grid min-w-0 gap-0.5;
496
+ }
497
+
498
+ .progress-label,
499
+ .progress-detail {
500
+ @apply min-w-0 overflow-hidden text-ellipsis whitespace-nowrap;
501
+ }
502
+
503
+ .progress-detail {
504
+ color: var(--aw-muted);
505
+ font-size: 11px;
506
+ }
507
+
508
+ .progress-row.kind-group .progress-label {
509
+ font-weight: 800;
510
+ }
511
+
512
+ .progress-row.kind-phase .progress-label {
513
+ font-weight: 700;
514
+ }
515
+
516
+ .progress-row.kind-step .progress-label,
517
+ .progress-row.kind-termination .progress-label {
518
+ font-weight: 600;
519
+ }
520
+
521
+ .progress-row.status-done {
522
+ color: var(--aw-success-text);
523
+ background: var(--aw-success-soft);
524
+ }
525
+
526
+ .progress-row.status-done .progress-marker {
527
+ background: var(--aw-success-soft);
528
+ }
529
+
530
+ .progress-row.status-running {
531
+ border-color: rgba(101, 216, 255, 0.56);
532
+ background: var(--aw-running-soft);
533
+ color: var(--aw-running-text);
534
+ box-shadow: inset 3px 0 0 rgba(101, 216, 255, 0.82);
535
+ }
536
+
537
+ .progress-row.status-running .progress-marker {
538
+ background: var(--aw-running-soft);
539
+ }
540
+
541
+ .progress-row.status-pending {
542
+ color: var(--aw-pending-text);
543
+ }
544
+
545
+ .progress-row.status-pending .progress-marker {
546
+ color: var(--aw-muted);
547
+ background: var(--aw-muted-bg);
548
+ }
549
+
550
+ .progress-row.status-skipped {
551
+ color: var(--aw-dim);
552
+ background: var(--aw-muted-bg);
553
+ }
554
+
555
+ .progress-row.status-skipped .progress-marker {
556
+ background: var(--aw-muted-bg);
557
+ }
558
+
559
+ .progress-row.status-success {
560
+ color: var(--aw-success-text);
561
+ background: var(--aw-success-soft);
562
+ }
563
+
564
+ .progress-row.status-success .progress-marker {
565
+ background: var(--aw-success-soft);
566
+ }
567
+
568
+ .progress-row.status-waiting-user,
569
+ .progress-row.status-stopped,
570
+ .progress-row.status-blocked {
571
+ border-color: rgba(242, 201, 76, 0.58);
572
+ background: var(--aw-warning-soft);
573
+ color: var(--aw-warning-text);
574
+ }
575
+
576
+ .progress-row.status-failed,
577
+ .progress-row.status-invalid {
578
+ border-color: rgba(255, 107, 107, 0.66);
579
+ background: var(--aw-danger-soft);
580
+ color: var(--aw-danger-text);
581
+ }
582
+
583
+ .progress-row.status-disabled,
584
+ .progress-row.status-empty {
585
+ color: var(--aw-dim);
586
+ background: var(--aw-muted-bg);
587
+ }
588
+
589
+ .auto-flow-editor {
590
+ @apply grid gap-1.5 overflow-auto px-2 pb-2;
591
+ height: min(56vh, 520px);
592
+ min-height: 120px;
593
+ max-height: min(72vh, 640px);
594
+ font-size: 12px;
595
+ }
596
+
597
+ .auto-flow-resizer {
598
+ position: relative;
599
+ height: 12px;
600
+ cursor: row-resize;
601
+ border-top: 1px solid var(--aw-border);
602
+ border-bottom: 1px solid var(--aw-border);
603
+ background: var(--aw-heading-bg);
604
+ }
605
+
606
+ .auto-flow-resizer::before {
607
+ content: "";
608
+ position: absolute;
609
+ left: 50%;
610
+ top: 50%;
611
+ width: min(220px, 42%);
612
+ height: 3px;
613
+ border-radius: 999px;
614
+ background: var(--aw-border-strong);
615
+ transform: translate(-50%, -50%);
616
+ opacity: 0.7;
617
+ }
618
+
619
+ .auto-flow-resizer:hover::before,
620
+ .auto-flow-resizer:focus-visible::before,
621
+ .auto-flow-resizer.resizing::before {
622
+ background: var(--aw-accent);
623
+ opacity: 1;
624
+ }
625
+
626
+ .auto-flow-resizer:focus-visible {
627
+ outline: 2px solid transparent;
628
+ box-shadow: inset 0 0 0 2px var(--aw-accent);
629
+ }
630
+
631
+ .auto-flow-resizing {
632
+ cursor: row-resize;
633
+ user-select: none;
634
+ }
635
+
636
+ .auto-flow-toolbar,
637
+ .auto-flow-block,
638
+ .auto-flow-insert,
639
+ .auto-flow-params {
640
+ @apply flex flex-wrap items-center gap-2;
641
+ }
642
+
643
+ .auto-flow-toolbar {
644
+ @apply py-1.5;
645
+ position: sticky;
646
+ top: 0;
647
+ z-index: 2;
648
+ margin-inline: calc(var(--spacing) * -2);
649
+ padding-inline: calc(var(--spacing) * 2);
650
+ border-bottom: 1px solid var(--aw-border);
651
+ background: var(--aw-panel-bg);
652
+ }
653
+
654
+ .auto-flow-toolbar button {
655
+ min-height: 26px;
656
+ padding: 3px 10px;
657
+ font-size: 12px;
658
+ }
659
+
660
+ .auto-flow-status,
661
+ .auto-flow-pill,
662
+ .auto-flow-locked {
663
+ @apply inline-flex items-center justify-center rounded-full border font-bold;
664
+ min-height: 16px;
665
+ padding: 1px 5px;
666
+ font-size: 10px;
667
+ line-height: 1;
668
+ }
669
+
670
+ .auto-flow-status.valid,
671
+ .auto-flow-pill.status-success,
672
+ .auto-flow-pill.status-running {
673
+ color: var(--aw-accent-strong);
674
+ border-color: rgba(56, 224, 143, 0.68);
675
+ background: var(--aw-success-soft);
676
+ }
677
+
678
+ .auto-flow-status.invalid,
679
+ .auto-flow-pill.status-invalid,
680
+ .auto-flow-pill.status-failed {
681
+ color: var(--aw-danger-text);
682
+ border-color: rgba(255, 107, 107, 0.66);
683
+ background: var(--aw-danger-soft);
684
+ }
685
+
686
+ .auto-flow-pill.status-disabled,
687
+ .auto-flow-pill.status-empty,
688
+ .auto-flow-locked {
689
+ color: var(--aw-dim);
690
+ border-color: var(--aw-border);
691
+ background: var(--aw-muted-bg);
692
+ }
693
+
694
+ .auto-flow-message,
695
+ .auto-flow-reason,
696
+ .auto-flow-empty {
697
+ color: var(--aw-muted);
698
+ font-size: 11px;
699
+ line-height: 1.25;
700
+ }
701
+
702
+ .auto-flow-diagnostics {
703
+ @apply grid gap-1 rounded-md border p-2;
704
+ color: var(--aw-danger-text);
705
+ border-color: rgba(255, 107, 107, 0.5);
706
+ background: var(--aw-danger-soft);
707
+ font-size: 12px;
708
+ }
709
+
710
+ .auto-flow-slots {
711
+ @apply grid gap-1.5;
712
+ }
713
+
714
+ .auto-flow-slot {
715
+ @apply grid rounded-md border;
716
+ gap: 3px;
717
+ padding: 6px 8px;
718
+ border-color: var(--aw-border);
719
+ background: var(--aw-surface-bg);
720
+ }
721
+
722
+ .auto-flow-slot-title,
723
+ .auto-flow-block-label {
724
+ @apply flex flex-wrap items-center gap-1.5;
725
+ line-height: 1.2;
726
+ }
727
+
728
+ .auto-flow-slot-title strong,
729
+ .auto-flow-block-label strong {
730
+ font-size: 13px;
731
+ }
732
+
733
+ .auto-flow-blocks {
734
+ @apply grid gap-0.5;
735
+ }
736
+
737
+ .auto-flow-block {
738
+ @apply rounded-md border;
739
+ padding: 5px 7px;
740
+ border-color: var(--aw-inset-border);
741
+ background: var(--aw-muted-bg);
742
+ }
743
+
744
+ .auto-flow-block-main {
745
+ @apply grid min-w-0 gap-0.5;
746
+ }
747
+
748
+ .auto-flow-params input,
749
+ .auto-flow-insert select {
750
+ min-height: 26px;
751
+ border-radius: var(--radius-md);
752
+ padding: 2px 6px;
753
+ border: 1px solid var(--aw-border-strong);
754
+ color: var(--aw-text);
755
+ background: var(--aw-input-bg);
756
+ font-size: 11px;
757
+ }
758
+
759
+ .git-body {
760
+ @apply grid min-h-0 gap-1.5 overflow-auto p-1.5;
761
+ grid-template-rows: auto auto minmax(72px, 1fr) auto auto;
762
+ background: var(--aw-surface-bg);
763
+ }
764
+
765
+ .git-summary,
766
+ .git-feedback,
767
+ .git-empty {
768
+ color: var(--aw-muted);
769
+ font-size: 12px;
770
+ line-height: 1.4;
771
+ }
772
+
773
+ .git-summary strong {
774
+ color: var(--aw-text);
775
+ }
776
+
777
+ .git-actions,
778
+ .git-commit-actions {
779
+ @apply flex flex-wrap items-center gap-2;
780
+ }
781
+
782
+ .git-actions input,
783
+ .git-actions select,
784
+ .git-commit-row textarea {
785
+ @apply min-h-8 rounded-md px-2 py-1.5;
786
+ min-width: 0;
787
+ border: 1px solid var(--aw-border-strong);
788
+ background: var(--aw-input-bg);
789
+ color: var(--aw-text);
790
+ font-size: 12px;
791
+ }
792
+
793
+ .git-actions input {
794
+ width: min(210px, 100%);
795
+ }
796
+
797
+ .git-actions select {
798
+ width: min(190px, 100%);
799
+ }
800
+
801
+ .git-files {
802
+ @apply grid content-start gap-0.5 overflow-auto rounded-md p-1;
803
+ border: 1px solid var(--aw-border);
804
+ background: var(--aw-surface-subtle-bg);
805
+ }
806
+
807
+ .git-tree-node {
808
+ @apply grid gap-0;
809
+ }
810
+
811
+ .git-tree-row {
812
+ @apply grid items-center gap-1.5 rounded-md px-1.5 py-0.5;
813
+ grid-template-columns: auto auto minmax(0, 1fr) auto auto;
814
+ min-height: 24px;
815
+ border: 1px solid transparent;
816
+ color: var(--aw-text-panel-text);
817
+ font-size: 11px;
818
+ line-height: 1.25;
819
+ }
820
+
821
+ .git-tree-row.without-type {
822
+ grid-template-columns: auto minmax(0, 1fr) auto auto;
823
+ }
824
+
825
+ .git-tree-row:hover {
826
+ border-color: var(--aw-border-strong);
827
+ background: var(--aw-muted-bg);
828
+ }
829
+
830
+ .git-tree-row input {
831
+ margin: 0;
832
+ width: 13px;
833
+ height: 13px;
834
+ }
835
+
836
+ .git-tree-group {
837
+ color: var(--aw-accent-strong);
838
+ background: var(--aw-success-soft);
839
+ }
840
+
841
+ .git-tree-dir {
842
+ color: var(--aw-text);
843
+ }
844
+
845
+ .git-file-type {
846
+ @apply inline-flex items-center justify-center rounded-full font-bold uppercase tracking-normal;
847
+ min-height: 14px;
848
+ padding: 1px 4px;
849
+ font-size: 9px;
850
+ line-height: 1;
851
+ border: 1px solid var(--aw-border-strong);
852
+ color: var(--aw-cyan);
853
+ background: var(--aw-file-badge-bg);
854
+ }
855
+
856
+ .git-file-type.staged {
857
+ border-color: rgba(56, 224, 143, 0.72);
858
+ color: var(--aw-accent-strong);
859
+ background: var(--aw-success-soft);
860
+ }
861
+
862
+ .git-file-path {
863
+ @apply overflow-hidden text-ellipsis whitespace-nowrap;
864
+ }
865
+
866
+ .git-file-meta {
867
+ color: var(--aw-dim);
868
+ font-size: 10px;
869
+ }
870
+
871
+ .git-diff-open {
872
+ min-height: 22px;
873
+ padding: 1px 6px;
874
+ font-size: 10px;
875
+ }
876
+
877
+ .git-commit-row {
878
+ @apply grid gap-2;
879
+ grid-template-columns: minmax(0, 1fr) auto;
880
+ }
881
+
882
+ .git-commit-row textarea {
883
+ width: 100%;
884
+ resize: vertical;
885
+ }
886
+
887
+ .git-feedback.error {
888
+ color: var(--aw-danger-text);
889
+ }
890
+
891
+ .git-feedback.success {
892
+ color: var(--aw-success-text);
893
+ }
894
+
264
895
  .log-output {
265
- background:
266
- linear-gradient(180deg, rgba(56, 224, 143, 0.035), transparent 8rem),
267
- #050806;
268
- color: #d8f7e7;
896
+ background: var(--aw-log-bg);
897
+ color: var(--aw-code-text);
269
898
  }
270
899
 
271
900
  .help-panel {
@@ -283,14 +912,14 @@ h2 {
283
912
  width: min(1120px, calc(100vw - 32px));
284
913
  grid-template-rows: auto auto minmax(0, 1fr);
285
914
  border-left: 1px solid var(--aw-border-strong);
286
- background: rgba(10, 16, 14, 0.98);
915
+ background: var(--aw-drawer-bg);
287
916
  box-shadow: var(--aw-shadow);
288
917
  }
289
918
 
290
919
  .artifact-drawer-header {
291
920
  @apply flex items-start justify-between gap-3 px-4 py-3;
292
921
  border-bottom: 1px solid var(--aw-border);
293
- background: linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.012));
922
+ background: var(--aw-heading-bg);
294
923
  }
295
924
 
296
925
  .artifact-drawer-header p,
@@ -336,11 +965,21 @@ h2 {
336
965
  color: var(--aw-dim);
337
966
  }
338
967
 
968
+ .artifact-subgroup {
969
+ @apply gap-1 border-l pl-3 py-1;
970
+ border-color: var(--aw-border);
971
+ }
972
+
973
+ .artifact-subgroup h4 {
974
+ @apply m-0 text-xs font-bold tracking-normal;
975
+ color: var(--aw-muted);
976
+ }
977
+
339
978
  .artifact-row {
340
979
  @apply grid items-center gap-2 rounded-md p-2;
341
980
  grid-template-columns: minmax(0, 1fr) auto;
342
981
  border: 1px solid var(--aw-border);
343
- background: rgba(7, 11, 10, 0.42);
982
+ background: var(--aw-surface-bg);
344
983
  }
345
984
 
346
985
  .artifact-row.selected {
@@ -404,7 +1043,7 @@ h2 {
404
1043
  .artifact-preview-header {
405
1044
  @apply grid gap-2 px-3 py-2;
406
1045
  border-bottom: 1px solid var(--aw-border);
407
- background: linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.012));
1046
+ background: var(--aw-heading-bg);
408
1047
  }
409
1048
 
410
1049
  .artifact-selected {
@@ -423,7 +1062,7 @@ h2 {
423
1062
  .artifact-action-link {
424
1063
  @apply inline-flex min-h-8 items-center justify-center rounded-md px-3 py-1.5;
425
1064
  border: 1px solid var(--aw-border-strong);
426
- background: linear-gradient(180deg, rgba(255, 255, 255, 0.035), rgba(255, 255, 255, 0.015));
1065
+ background: var(--aw-control-bg);
427
1066
  }
428
1067
 
429
1068
  .artifact-action-link.disabled {
@@ -505,17 +1144,17 @@ h2 {
505
1144
  .artifact-rendered-markdown code {
506
1145
  border: 1px solid var(--aw-border);
507
1146
  border-radius: 4px;
508
- background: rgba(101, 216, 255, 0.08);
1147
+ background: var(--aw-code-bg);
509
1148
  padding: 0.08rem 0.28rem;
510
- color: #d8f7e7;
1149
+ color: var(--aw-code-text);
511
1150
  }
512
1151
 
513
1152
  .artifact-rendered-markdown pre,
514
1153
  .artifact-text-preview {
515
1154
  @apply m-0 overflow-auto rounded-md p-3;
516
1155
  border: 1px solid var(--aw-border);
517
- background: rgba(3, 7, 6, 0.62);
518
- color: #d7eadf;
1156
+ background: var(--aw-pre-bg);
1157
+ color: var(--aw-pre-text);
519
1158
  font-size: 12px;
520
1159
  line-height: 1.5;
521
1160
  overflow-wrap: anywhere;
@@ -543,7 +1182,7 @@ h2 {
543
1182
  }
544
1183
 
545
1184
  .artifact-rendered-markdown th {
546
- background: rgba(255, 255, 255, 0.05);
1185
+ background: var(--aw-muted-bg);
547
1186
  color: var(--aw-accent-strong);
548
1187
  }
549
1188
 
@@ -559,8 +1198,8 @@ h2 {
559
1198
  .artifact-truncation {
560
1199
  @apply rounded-md px-3 py-2;
561
1200
  border: 1px solid rgba(242, 201, 76, 0.42);
562
- background: rgba(242, 201, 76, 0.11);
563
- color: #ffe49a;
1201
+ background: var(--aw-warning-soft);
1202
+ color: var(--aw-warning-text);
564
1203
  font-size: 13px;
565
1204
  }
566
1205
 
@@ -568,13 +1207,13 @@ h2 {
568
1207
  @apply inline-flex w-fit rounded-full px-2.5 py-1 text-xs font-bold uppercase tracking-normal;
569
1208
  border: 1px solid var(--aw-border-strong);
570
1209
  color: var(--aw-cyan);
571
- background: rgba(101, 216, 255, 0.09);
1210
+ background: var(--aw-file-badge-bg);
572
1211
  }
573
1212
 
574
1213
  .artifact-placeholder {
575
1214
  @apply grid gap-3 rounded-md p-3;
576
1215
  border: 1px dashed var(--aw-border-strong);
577
- background: rgba(7, 11, 10, 0.38);
1216
+ background: var(--aw-surface-bg);
578
1217
  }
579
1218
 
580
1219
  .artifact-placeholder dl {
@@ -600,7 +1239,179 @@ h2 {
600
1239
  .artifact-empty {
601
1240
  @apply rounded-md p-3;
602
1241
  border: 1px dashed var(--aw-border);
603
- background: rgba(7, 11, 10, 0.32);
1242
+ background: var(--aw-surface-bg);
1243
+ }
1244
+
1245
+ .git-diff-drawer {
1246
+ @apply fixed right-0 top-0 z-10 grid h-full;
1247
+ width: min(1240px, calc(100vw - 24px));
1248
+ grid-template-rows: auto auto minmax(0, 1fr);
1249
+ border-left: 1px solid var(--aw-border-strong);
1250
+ background: var(--aw-drawer-bg);
1251
+ box-shadow: var(--aw-shadow);
1252
+ }
1253
+
1254
+ .git-diff-drawer-header {
1255
+ @apply flex items-start justify-between gap-3 px-4 py-3;
1256
+ border-bottom: 1px solid var(--aw-border);
1257
+ background: var(--aw-heading-bg);
1258
+ }
1259
+
1260
+ .git-diff-drawer-header p,
1261
+ .git-diff-status,
1262
+ .git-diff-empty,
1263
+ .git-diff-file span,
1264
+ .git-diff-selected p {
1265
+ color: var(--aw-muted);
1266
+ font-size: 13px;
1267
+ }
1268
+
1269
+ .git-diff-status {
1270
+ min-height: 38px;
1271
+ padding: 10px 14px;
1272
+ border-bottom: 1px solid var(--aw-border);
1273
+ }
1274
+
1275
+ .git-diff-drawer-body {
1276
+ @apply grid min-h-0;
1277
+ grid-template-columns: minmax(270px, 0.28fr) minmax(620px, 1fr);
1278
+ }
1279
+
1280
+ .git-diff-file-pane,
1281
+ .git-diff-preview {
1282
+ @apply grid min-h-0;
1283
+ grid-template-rows: auto minmax(0, 1fr);
1284
+ }
1285
+
1286
+ .git-diff-file-pane {
1287
+ border-right: 1px solid var(--aw-border);
1288
+ }
1289
+
1290
+ .git-diff-file-list {
1291
+ @apply grid min-h-0 content-start gap-2 overflow-auto p-3;
1292
+ }
1293
+
1294
+ .git-diff-file {
1295
+ @apply grid w-full justify-stretch gap-1 rounded-md p-2 text-left;
1296
+ border: 1px solid var(--aw-border);
1297
+ background: var(--aw-surface-bg);
1298
+ box-shadow: none;
1299
+ }
1300
+
1301
+ .git-diff-file.selected {
1302
+ border-color: rgba(101, 216, 255, 0.72);
1303
+ background: var(--aw-running-soft);
1304
+ }
1305
+
1306
+ .git-diff-file strong,
1307
+ .git-diff-file span {
1308
+ @apply min-w-0 overflow-hidden text-ellipsis whitespace-nowrap;
1309
+ }
1310
+
1311
+ .git-diff-preview {
1312
+ grid-template-rows: auto minmax(0, 1fr);
1313
+ }
1314
+
1315
+ .git-diff-preview-header {
1316
+ @apply grid gap-2 px-3 py-2;
1317
+ grid-template-columns: minmax(0, 1fr) auto;
1318
+ border-bottom: 1px solid var(--aw-border);
1319
+ background: var(--aw-heading-bg);
1320
+ }
1321
+
1322
+ .git-diff-selected {
1323
+ @apply grid min-w-0 gap-1;
1324
+ }
1325
+
1326
+ .git-diff-selected h2,
1327
+ .git-diff-selected p {
1328
+ @apply overflow-hidden text-ellipsis whitespace-nowrap;
1329
+ }
1330
+
1331
+ .git-diff-mode-controls {
1332
+ @apply flex flex-wrap items-center justify-end gap-2;
1333
+ }
1334
+
1335
+ .git-diff-body {
1336
+ @apply min-h-0 overflow-auto p-3;
1337
+ background: var(--aw-surface-bg);
1338
+ color: var(--aw-text-panel-text);
1339
+ font-size: 12px;
1340
+ }
1341
+
1342
+ .git-diff-table {
1343
+ display: grid;
1344
+ min-width: 760px;
1345
+ grid-auto-rows: minmax(26px, auto);
1346
+ border: 1px solid var(--aw-border);
1347
+ border-radius: 6px;
1348
+ overflow: hidden;
1349
+ }
1350
+
1351
+ .git-diff-hunk,
1352
+ .git-diff-row {
1353
+ display: grid;
1354
+ grid-template-columns: 58px minmax(260px, 1fr) 58px minmax(260px, 1fr);
1355
+ }
1356
+
1357
+ .git-diff-hunk {
1358
+ grid-column: 1 / -1;
1359
+ padding: 7px 10px;
1360
+ border-top: 1px solid var(--aw-border);
1361
+ border-bottom: 1px solid var(--aw-border);
1362
+ background: var(--aw-running-soft);
1363
+ color: var(--aw-running-text);
1364
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
1365
+ font-weight: 700;
1366
+ }
1367
+
1368
+ .git-diff-table .git-diff-hunk:first-child {
1369
+ border-top: 0;
1370
+ }
1371
+
1372
+ .git-diff-row {
1373
+ border-bottom: 1px solid var(--aw-diff-border);
1374
+ }
1375
+
1376
+ .git-diff-row:last-child {
1377
+ border-bottom: 0;
1378
+ }
1379
+
1380
+ .git-diff-line-number,
1381
+ .git-diff-code {
1382
+ min-width: 0;
1383
+ padding: 4px 8px;
1384
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
1385
+ white-space: pre-wrap;
1386
+ overflow-wrap: anywhere;
1387
+ }
1388
+
1389
+ .git-diff-line-number {
1390
+ color: var(--aw-dim);
1391
+ text-align: right;
1392
+ user-select: none;
1393
+ border-right: 1px solid var(--aw-diff-border);
1394
+ background: var(--aw-diff-line-number-bg);
1395
+ }
1396
+
1397
+ .git-diff-code.left {
1398
+ border-right: 1px solid var(--aw-border);
1399
+ }
1400
+
1401
+ .git-diff-row.row-add .right,
1402
+ .git-diff-row.row-modify .right {
1403
+ background: var(--aw-diff-add-bg);
1404
+ color: var(--aw-diff-add-text);
1405
+ }
1406
+
1407
+ .git-diff-row.row-delete .left,
1408
+ .git-diff-row.row-modify .left {
1409
+ background: var(--aw-diff-delete-bg);
1410
+ color: var(--aw-diff-delete-text);
1411
+ }
1412
+
1413
+ .git-diff-row.row-context .git-diff-code {
1414
+ background: var(--aw-diff-context-bg);
604
1415
  }
605
1416
 
606
1417
  .modal-root:empty {
@@ -609,7 +1420,7 @@ h2 {
609
1420
 
610
1421
  .modal-root {
611
1422
  @apply fixed inset-0 z-20 grid place-items-center p-5;
612
- background: rgba(2, 5, 4, 0.72);
1423
+ background: var(--aw-modal-overlay);
613
1424
  backdrop-filter: blur(8px);
614
1425
  }
615
1426
 
@@ -695,7 +1506,7 @@ h2 {
695
1506
  .field select {
696
1507
  @apply min-h-9 w-full rounded-md px-2.5 py-2;
697
1508
  border: 1px solid var(--aw-border-strong);
698
- background: #070b0a;
1509
+ background: var(--aw-input-bg);
699
1510
  color: var(--aw-text);
700
1511
  }
701
1512
 
@@ -704,7 +1515,7 @@ h2 {
704
1515
  .field select:focus {
705
1516
  border-color: var(--aw-accent);
706
1517
  outline: 2px solid transparent;
707
- box-shadow: 0 0 0 3px rgba(56, 224, 143, 0.12);
1518
+ box-shadow: 0 0 0 3px var(--aw-control-ring);
708
1519
  }
709
1520
 
710
1521
  .field textarea {
@@ -726,7 +1537,7 @@ h2 {
726
1537
  }
727
1538
 
728
1539
  ::selection {
729
- background: rgba(56, 224, 143, 0.32);
1540
+ background: var(--aw-accent-soft);
730
1541
  color: var(--aw-text);
731
1542
  }
732
1543
 
@@ -736,13 +1547,13 @@ h2 {
736
1547
  }
737
1548
 
738
1549
  ::-webkit-scrollbar-thumb {
739
- background: #284137;
740
- border: 2px solid #08100d;
1550
+ background: var(--aw-scrollbar-thumb);
1551
+ border: 2px solid var(--aw-scrollbar-track);
741
1552
  border-radius: 999px;
742
1553
  }
743
1554
 
744
1555
  ::-webkit-scrollbar-track {
745
- background: #08100d;
1556
+ background: var(--aw-scrollbar-track);
746
1557
  }
747
1558
 
748
1559
  @media (max-width: 1080px) {
@@ -757,7 +1568,7 @@ h2 {
757
1568
 
758
1569
  .workspace {
759
1570
  grid-template-columns: minmax(220px, 0.35fr) minmax(0, 1fr);
760
- grid-template-rows: minmax(260px, 42vh) minmax(320px, 1fr);
1571
+ grid-template-rows: minmax(260px, 42vh) minmax(520px, 1fr);
761
1572
  }
762
1573
 
763
1574
  .log-pane {
@@ -769,9 +1580,17 @@ h2 {
769
1580
  width: min(960px, calc(100vw - 18px));
770
1581
  }
771
1582
 
1583
+ .git-diff-drawer {
1584
+ width: min(1000px, calc(100vw - 18px));
1585
+ }
1586
+
772
1587
  .artifact-drawer-body {
773
1588
  grid-template-columns: minmax(280px, 0.45fr) minmax(360px, 1fr);
774
1589
  }
1590
+
1591
+ .git-diff-drawer-body {
1592
+ grid-template-columns: minmax(250px, 0.35fr) minmax(520px, 1fr);
1593
+ }
775
1594
  }
776
1595
 
777
1596
  @media (max-width: 760px) {
@@ -791,8 +1610,12 @@ h2 {
791
1610
  grid-template-columns: 1fr;
792
1611
  }
793
1612
 
1613
+ .workspace-resizer {
1614
+ display: none;
1615
+ }
1616
+
794
1617
  .workspace {
795
- grid-template-rows: 260px 520px 340px;
1618
+ grid-template-rows: 260px 760px 340px;
796
1619
  }
797
1620
 
798
1621
  .artifact-drawer {
@@ -805,6 +1628,15 @@ h2 {
805
1628
  border-top: 1px solid var(--aw-border-strong);
806
1629
  }
807
1630
 
1631
+ .git-diff-drawer {
1632
+ top: auto;
1633
+ bottom: 0;
1634
+ height: min(94vh, 820px);
1635
+ width: 100vw;
1636
+ border-left: 0;
1637
+ border-top: 1px solid var(--aw-border-strong);
1638
+ }
1639
+
808
1640
  .artifact-drawer-header {
809
1641
  align-items: flex-start;
810
1642
  }
@@ -814,11 +1646,29 @@ h2 {
814
1646
  grid-template-rows: minmax(190px, 0.42fr) minmax(260px, 1fr);
815
1647
  }
816
1648
 
1649
+ .git-diff-drawer-body {
1650
+ grid-template-columns: 1fr;
1651
+ grid-template-rows: minmax(160px, 0.32fr) minmax(360px, 1fr);
1652
+ }
1653
+
817
1654
  .artifact-list-pane {
818
1655
  border-right: 0;
819
1656
  border-bottom: 1px solid var(--aw-border);
820
1657
  }
821
1658
 
1659
+ .git-diff-file-pane {
1660
+ border-right: 0;
1661
+ border-bottom: 1px solid var(--aw-border);
1662
+ }
1663
+
1664
+ .git-diff-preview-header {
1665
+ grid-template-columns: 1fr;
1666
+ }
1667
+
1668
+ .git-diff-mode-controls {
1669
+ justify-content: flex-start;
1670
+ }
1671
+
822
1672
  .artifact-row {
823
1673
  grid-template-columns: 1fr;
824
1674
  }
@@ -846,4 +1696,8 @@ h2 {
846
1696
  grid-template-columns: 1fr;
847
1697
  gap: 12px;
848
1698
  }
1699
+
1700
+ .git-commit-row {
1701
+ grid-template-columns: 1fr;
1702
+ }
849
1703
  }