codex-linux 1.0.0 → 1.0.2

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.
@@ -3,12 +3,8 @@ import { Agent, AIProvider, Skill, CodeChange, ChangeStatus } from '../../shared
3
3
  import {
4
4
  Bot,
5
5
  Plus,
6
- Play,
7
- Pause,
8
- Square,
9
- Trash2,
10
6
  MessageSquare,
11
- MoreVertical
7
+ Trash2
12
8
  } from 'lucide-react';
13
9
  import DiffViewer from './DiffViewer';
14
10
 
@@ -164,7 +160,6 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
164
160
  setInFlightByAgent(prev => ({ ...prev, [agentId]: false }));
165
161
  } else {
166
162
  await window.electronAPI.agent.executeTask(agentId, claimed.content);
167
- // keep inFlight until taskCompleted/taskFailed
168
163
  }
169
164
  } catch (error) {
170
165
  console.error('Failed to dispatch queued item:', error);
@@ -173,7 +168,6 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
173
168
  try {
174
169
  await window.electronAPI.queue.complete(agentId, claimed.id, 'failed', error instanceof Error ? error.message : String(error));
175
170
  } catch {
176
- // ignore
177
171
  }
178
172
  setClaimedByAgent(prev => ({ ...prev, [agentId]: null }));
179
173
  }
@@ -224,14 +218,6 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
224
218
  }
225
219
  };
226
220
 
227
- const handleExecuteTask = async (agentId: string, task: string) => {
228
- try {
229
- await window.electronAPI.agent.executeTask(agentId, task);
230
- } catch (error) {
231
- console.error('Failed to execute task:', error);
232
- }
233
- };
234
-
235
221
  const handleApproveChange = async (changeId: string) => {
236
222
  if (!selectedAgent) return;
237
223
  try {
@@ -294,49 +280,48 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
294
280
  const getStatusIcon = (status: string) => {
295
281
  switch (status) {
296
282
  case 'running':
297
- return <div className="w-2 h-2 bg-green-500 rounded-full animate-pulse" />;
283
+ return <div className="w-2 h-2 bg-[var(--success)] rounded-full animate-pulse" />;
298
284
  case 'paused':
299
- return <div className="w-2 h-2 bg-yellow-500 rounded-full" />;
285
+ return <div className="w-2 h-2 bg-[var(--warning)] rounded-full" />;
300
286
  case 'error':
301
- return <div className="w-2 h-2 bg-red-500 rounded-full" />;
287
+ return <div className="w-2 h-2 bg-[var(--error)] rounded-full" />;
302
288
  default:
303
- return <div className="w-2 h-2 bg-gray-400 rounded-full" />;
289
+ return <div className="w-2 h-2 bg-[var(--text-muted)] rounded-full" />;
304
290
  }
305
291
  };
306
292
 
307
293
  return (
308
294
  <div className="h-full flex">
309
- {/* Agents List */}
310
- <div className="w-80 border-r border-border bg-card flex flex-col">
311
- <div className="p-4 border-b border-border flex items-center justify-between">
312
- <h2 className="font-semibold">Active Agents</h2>
295
+ <div className="w-80 border-r border-[var(--border-subtle)] bg-[var(--bg-surface)] flex flex-col">
296
+ <div className="p-4 border-b border-[var(--border-faint)] flex items-center justify-between">
297
+ <h2 className="font-medium text-[13px] text-[var(--text-primary)]">Active Agents</h2>
313
298
  <button
314
299
  onClick={() => setShowCreateModal(true)}
315
- className="p-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90"
300
+ className="p-2 bg-[var(--teal-500)] text-[var(--bg-void)] rounded-[var(--radius-sm)] hover:bg-[var(--teal-400)] transition-colors"
316
301
  >
317
302
  <Plus className="w-4 h-4" />
318
303
  </button>
319
304
  </div>
320
305
 
321
- <div className="flex-1 overflow-auto p-2 space-y-2">
306
+ <div className="flex-1 overflow-auto p-2 space-y-1">
322
307
  {agents.map(agent => (
323
308
  <div
324
309
  key={agent.id}
325
310
  onClick={() => setSelectedAgent(agent)}
326
- className={`p-3 rounded-lg cursor-pointer transition-colors ${
311
+ className={`p-3 rounded-[var(--radius-md)] cursor-pointer transition-all ${
327
312
  selectedAgent?.id === agent.id
328
- ? 'bg-primary/10 border border-primary/30'
329
- : 'hover:bg-muted border border-transparent'
313
+ ? 'bg-[rgba(0,200,168,0.08)] border border-[var(--border-accent)]'
314
+ : 'hover:bg-[var(--bg-hover)] border border-transparent'
330
315
  }`}
331
316
  >
332
317
  <div className="flex items-start justify-between">
333
318
  <div className="flex items-center gap-2">
334
- <Bot className="w-4 h-4 text-muted-foreground" />
335
- <span className="font-medium text-sm">{agent.name}</span>
319
+ <Bot className="w-4 h-4 text-[var(--text-muted)]" />
320
+ <span className="font-medium text-[13px] text-[var(--text-primary)]">{agent.name}</span>
336
321
  </div>
337
322
  {getStatusIcon(agent.status)}
338
323
  </div>
339
- <div className="mt-2 text-xs text-muted-foreground">
324
+ <div className="mt-2 text-[11px] text-[var(--text-muted)]">
340
325
  <div className="truncate">{agent.projectPath}</div>
341
326
  <div className="mt-1">{agent.model}</div>
342
327
  </div>
@@ -344,37 +329,36 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
344
329
  ))}
345
330
 
346
331
  {agents.length === 0 && (
347
- <div className="text-center py-8 text-muted-foreground">
348
- <Bot className="w-12 h-12 mx-auto mb-2 opacity-50" />
349
- <p className="text-sm">No agents yet</p>
350
- <p className="text-xs mt-1">Create your first agent to get started</p>
332
+ <div className="text-center py-8 text-[var(--text-muted)]">
333
+ <Bot className="w-12 h-12 mx-auto mb-2 opacity-30" />
334
+ <p className="text-[13px]">No agents yet</p>
335
+ <p className="text-[11px] mt-1">Create your first agent to get started</p>
351
336
  </div>
352
337
  )}
353
338
  </div>
354
339
  </div>
355
340
 
356
- {/* Agent Detail View */}
357
341
  <div className="flex-1 flex flex-col">
358
342
  {selectedAgent ? (
359
343
  <>
360
- <div className="p-4 border-b border-border flex items-center justify-between">
344
+ <div className="p-4 border-b border-[var(--border-subtle)] flex items-center justify-between">
361
345
  <div>
362
- <h2 className="text-lg font-semibold">{selectedAgent.name}</h2>
363
- <p className="text-sm text-muted-foreground">
364
- {selectedAgent.projectPath} {selectedAgent.model}
346
+ <h2 className="text-[16px] font-medium text-[var(--text-primary)]">{selectedAgent.name}</h2>
347
+ <p className="text-[12px] text-[var(--text-muted)]">
348
+ {selectedAgent.projectPath} · {selectedAgent.model}
365
349
  </p>
366
350
  </div>
367
351
  <div className="flex items-center gap-2">
368
352
  <button
369
353
  onClick={() => handleSendMessage(selectedAgent.id, 'Hello!')}
370
- className="px-3 py-1.5 text-sm bg-primary text-primary-foreground rounded-md hover:bg-primary/90"
354
+ className="px-3 py-1.5 text-[12px] bg-[var(--teal-500)] text-[var(--bg-void)] rounded-[var(--radius-sm)] hover:bg-[var(--teal-400)] transition-colors flex items-center gap-1"
371
355
  >
372
- <MessageSquare className="w-4 h-4 inline mr-1" />
356
+ <MessageSquare className="w-3.5 h-3.5" />
373
357
  Chat
374
358
  </button>
375
359
  <button
376
360
  onClick={() => onDeleteAgent(selectedAgent.id)}
377
- className="p-2 text-destructive hover:bg-destructive/10 rounded-md"
361
+ className="p-2 text-[var(--error)] hover:bg-[rgba(232,90,106,0.1)] rounded-[var(--radius-sm)] transition-colors"
378
362
  >
379
363
  <Trash2 className="w-4 h-4" />
380
364
  </button>
@@ -384,15 +368,15 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
384
368
  <div className="flex-1 overflow-auto p-4">
385
369
  <div className="grid grid-cols-1 lg:grid-cols-2 gap-4">
386
370
  <div className="space-y-4">
387
- <div className="bg-card border border-border rounded-lg p-3">
371
+ <div className="bg-[var(--bg-card)] border border-[var(--border-subtle)] rounded-[var(--radius-lg)] p-4">
388
372
  <div className="flex items-center justify-between">
389
373
  <div>
390
- <h3 className="text-sm font-medium">Queue</h3>
391
- <p className="text-xs text-muted-foreground">Stack work while the agent is busy</p>
374
+ <h3 className="text-[13px] font-medium text-[var(--text-primary)]">Queue</h3>
375
+ <p className="text-[11px] text-[var(--text-muted)]">Stack work while the agent is busy</p>
392
376
  </div>
393
- <span className="text-xs text-muted-foreground">
377
+ <span className="text-[11px] text-[var(--text-muted)]">
394
378
  {queueItems.length} queued
395
- {inFlightByAgent[selectedAgent.id] ? ' running' : ''}
379
+ {inFlightByAgent[selectedAgent.id] ? ' · running' : ''}
396
380
  </span>
397
381
  </div>
398
382
 
@@ -400,7 +384,7 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
400
384
  <select
401
385
  value={newQueueType}
402
386
  onChange={e => setNewQueueType(e.target.value as any)}
403
- className="px-2 py-2 bg-background border border-input rounded-md text-sm"
387
+ className="px-2 py-2 bg-[var(--bg-elevated)] border border-[var(--border-subtle)] rounded-[var(--radius-md)] text-[12px] text-[var(--text-primary)]"
404
388
  >
405
389
  <option value="task">Task</option>
406
390
  <option value="message">Message</option>
@@ -409,7 +393,7 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
409
393
  value={newQueueContent}
410
394
  onChange={e => setNewQueueContent(e.target.value)}
411
395
  placeholder={newQueueType === 'task' ? 'Describe the task...' : 'Type a message...'}
412
- className="flex-1 px-3 py-2 bg-background border border-input rounded-md text-sm"
396
+ className="flex-1 px-3 py-2 bg-[var(--bg-elevated)] border border-[var(--border-subtle)] rounded-[var(--radius-md)] text-[12px] text-[var(--text-primary)] placeholder:text-[var(--text-disabled)] focus:outline-none focus:border-[var(--teal-500)]"
413
397
  />
414
398
  <button
415
399
  onClick={() => {
@@ -428,7 +412,7 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
428
412
  }
429
413
  })();
430
414
  }}
431
- className="px-3 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90 text-sm"
415
+ className="px-3 py-2 bg-[var(--teal-500)] text-[var(--bg-void)] rounded-[var(--radius-md)] hover:bg-[var(--teal-400)] text-[12px] font-medium transition-colors"
432
416
  >
433
417
  Add
434
418
  </button>
@@ -436,11 +420,11 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
436
420
 
437
421
  <div className="mt-3 space-y-2 max-h-40 overflow-auto">
438
422
  {queueItems.map((item, idx) => (
439
- <div key={item.id} className="flex items-center gap-2 p-2 bg-muted rounded-md">
440
- <span className="text-xs px-2 py-0.5 rounded-full bg-background border border-border">
423
+ <div key={item.id} className="flex items-center gap-2 p-2 bg-[var(--bg-elevated)] rounded-[var(--radius-md)]">
424
+ <span className="text-[10px] px-2 py-0.5 rounded-full bg-[var(--bg-hover)] border border-[var(--border-subtle)] text-[var(--text-secondary)]">
441
425
  {item.type}
442
426
  </span>
443
- <span className="text-sm flex-1 truncate">{item.content}</span>
427
+ <span className="text-[12px] flex-1 truncate text-[var(--text-primary)]">{item.content}</span>
444
428
  <button
445
429
  onClick={() => {
446
430
  const agentId = selectedAgent.id;
@@ -449,56 +433,42 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
449
433
  await refreshQueue(agentId);
450
434
  })();
451
435
  }}
452
- className="text-xs text-destructive hover:underline"
436
+ className="text-[11px] text-[var(--error)] hover:underline"
453
437
  >
454
438
  Remove
455
439
  </button>
456
- <button
457
- disabled={idx === 0}
458
- onClick={() => {
459
- const agentId = selectedAgent.id;
460
- (async () => {
461
- await window.electronAPI.queue.moveUp(agentId, item.id);
462
- await refreshQueue(agentId);
463
- })();
464
- }}
465
- className="text-xs text-muted-foreground disabled:opacity-50"
466
- >
467
- Up
468
- </button>
469
440
  </div>
470
441
  ))}
471
442
  {queueItems.length === 0 && (
472
- <div className="text-xs text-muted-foreground">No queued items</div>
443
+ <div className="text-[11px] text-[var(--text-muted)]">No queued items</div>
473
444
  )}
474
445
  </div>
475
446
 
476
- {/* Queue History */}
477
447
  <div className="mt-3">
478
448
  <button
479
449
  onClick={() => setShowQueueHistory(!showQueueHistory)}
480
- className="text-xs text-muted-foreground hover:text-foreground"
450
+ className="text-[11px] text-[var(--text-muted)] hover:text-[var(--text-secondary)]"
481
451
  >
482
452
  {showQueueHistory ? 'Hide' : 'Show'} history ({queueHistory.length})
483
453
  </button>
484
454
  {showQueueHistory && (
485
455
  <div className="mt-2 space-y-1 max-h-32 overflow-auto">
486
456
  {queueHistory.map(item => (
487
- <div key={item.id} className="flex items-center gap-2 p-2 bg-muted/50 rounded-md text-xs">
457
+ <div key={item.id} className="flex items-center gap-2 p-2 bg-[var(--bg-elevated)] rounded-[var(--radius-md)] text-[11px]">
488
458
  <span className={`px-1.5 py-0.5 rounded-full ${
489
- item.status === 'completed' ? 'bg-green-500/10 text-green-500' : 'bg-red-500/10 text-red-500'
459
+ item.status === 'completed' ? 'bg-[rgba(60,200,120,0.1)] text-[var(--success)]' : 'bg-[rgba(232,90,106,0.1)] text-[var(--error)]'
490
460
  }`}>
491
461
  {item.status}
492
462
  </span>
493
- <span className="text-muted-foreground">{item.type}</span>
494
- <span className="flex-1 truncate">{item.content}</span>
463
+ <span className="text-[var(--text-muted)]">{item.type}</span>
464
+ <span className="flex-1 truncate text-[var(--text-primary)]">{item.content}</span>
495
465
  {item.error && (
496
- <span className="text-red-500 truncate" title={item.error}>⚠️</span>
466
+ <span className="text-[var(--error)] truncate" title={item.error}>⚠️</span>
497
467
  )}
498
468
  </div>
499
469
  ))}
500
470
  {queueHistory.length === 0 && (
501
- <div className="text-xs text-muted-foreground">No completed items yet</div>
471
+ <div className="text-[11px] text-[var(--text-muted)]">No completed items yet</div>
502
472
  )}
503
473
  </div>
504
474
  )}
@@ -506,13 +476,13 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
506
476
  </div>
507
477
 
508
478
  <div>
509
- <h3 className="text-sm font-medium mb-2">Status</h3>
479
+ <h3 className="text-[12px] font-medium text-[var(--text-secondary)] mb-2">Status</h3>
510
480
  <div className="flex items-center gap-2">
511
- <span className={`px-2 py-1 rounded-full text-xs font-medium ${
512
- selectedAgent.status === 'running' ? 'bg-green-500/10 text-green-500' :
513
- selectedAgent.status === 'paused' ? 'bg-yellow-500/10 text-yellow-500' :
514
- selectedAgent.status === 'error' ? 'bg-red-500/10 text-red-500' :
515
- 'bg-gray-500/10 text-gray-500'
481
+ <span className={`px-2 py-1 rounded-full text-[11px] font-medium ${
482
+ selectedAgent.status === 'running' ? 'bg-[rgba(60,200,120,0.1)] text-[var(--success)]' :
483
+ selectedAgent.status === 'paused' ? 'bg-[rgba(230,185,74,0.1)] text-[var(--warning)]' :
484
+ selectedAgent.status === 'error' ? 'bg-[rgba(232,90,106,0.1)] text-[var(--error)]' :
485
+ 'bg-[var(--bg-hover)] text-[var(--text-muted)]'
516
486
  }`}>
517
487
  {selectedAgent.status}
518
488
  </span>
@@ -520,48 +490,48 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
520
490
  </div>
521
491
 
522
492
  <div>
523
- <h3 className="text-sm font-medium mb-2">Skills</h3>
493
+ <h3 className="text-[12px] font-medium text-[var(--text-secondary)] mb-2">Skills</h3>
524
494
  <div className="flex flex-wrap gap-2">
525
495
  {selectedAgent.skills.map(skillId => {
526
496
  const skill = skills.find(s => s.id === skillId);
527
497
  return (
528
498
  <span
529
499
  key={skillId}
530
- className="px-2 py-1 bg-muted rounded-md text-xs"
500
+ className="px-2 py-1 bg-[var(--bg-hover)] rounded-[var(--radius-sm)] text-[11px] text-[var(--text-secondary)]"
531
501
  >
532
502
  {skill?.name || skillId}
533
503
  </span>
534
504
  );
535
505
  })}
536
506
  {selectedAgent.skills.length === 0 && (
537
- <span className="text-sm text-muted-foreground">No skills applied</span>
507
+ <span className="text-[12px] text-[var(--text-muted)]">No skills applied</span>
538
508
  )}
539
509
  </div>
540
510
  </div>
541
511
 
542
512
  <div>
543
- <h3 className="text-sm font-medium mb-2">Recent Tasks</h3>
513
+ <h3 className="text-[12px] font-medium text-[var(--text-secondary)] mb-2">Recent Tasks</h3>
544
514
  <div className="space-y-2">
545
515
  {selectedAgent.tasks.slice(-5).map(task => (
546
516
  <div
547
517
  key={task.id}
548
- className="p-3 bg-muted rounded-md"
518
+ className="p-3 bg-[var(--bg-card)] border border-[var(--border-subtle)] rounded-[var(--radius-md)]"
549
519
  >
550
520
  <div className="flex items-center justify-between">
551
- <span className="text-sm font-medium">{task.description}</span>
552
- <span className={`text-xs ${
553
- task.status === 'completed' ? 'text-green-500' :
554
- task.status === 'failed' ? 'text-red-500' :
555
- task.status === 'running' ? 'text-blue-500' :
556
- 'text-muted-foreground'
521
+ <span className="text-[12px] font-medium text-[var(--text-primary)]">{task.description}</span>
522
+ <span className={`text-[11px] ${
523
+ task.status === 'completed' ? 'text-[var(--success)]' :
524
+ task.status === 'failed' ? 'text-[var(--error)]' :
525
+ task.status === 'running' ? 'text-[var(--info)]' :
526
+ 'text-[var(--text-muted)]'
557
527
  }`}>
558
528
  {task.status}
559
529
  </span>
560
530
  </div>
561
531
  {task.status === 'running' && (
562
- <div className="mt-2 h-1 bg-muted-foreground/20 rounded-full overflow-hidden">
532
+ <div className="mt-2 h-1 bg-[var(--bg-hover)] rounded-full overflow-hidden">
563
533
  <div
564
- className="h-full bg-primary transition-all"
534
+ className="h-full bg-[var(--teal-500)] transition-all"
565
535
  style={{ width: `${task.progress}%` }}
566
536
  />
567
537
  </div>
@@ -569,17 +539,17 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
569
539
  </div>
570
540
  ))}
571
541
  {selectedAgent.tasks.length === 0 && (
572
- <span className="text-sm text-muted-foreground">No tasks yet</span>
542
+ <span className="text-[12px] text-[var(--text-muted)]">No tasks yet</span>
573
543
  )}
574
544
  </div>
575
545
  </div>
576
546
  </div>
577
547
 
578
- <div className="bg-card border border-border rounded-lg overflow-hidden min-h-[420px]">
579
- <div className="p-3 border-b border-border flex items-center justify-between">
548
+ <div className="bg-[var(--bg-card)] border border-[var(--border-subtle)] rounded-[var(--radius-lg)] overflow-hidden min-h-[420px]">
549
+ <div className="p-3 border-b border-[var(--border-subtle)] flex items-center justify-between">
580
550
  <div>
581
- <h3 className="text-sm font-medium">Changes</h3>
582
- <p className="text-xs text-muted-foreground">
551
+ <h3 className="text-[13px] font-medium text-[var(--text-primary)]">Changes</h3>
552
+ <p className="text-[11px] text-[var(--text-muted)]">
583
553
  Review and apply changes generated by the agent
584
554
  </p>
585
555
  </div>
@@ -606,12 +576,12 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
606
576
  });
607
577
  }
608
578
  }}
609
- className="px-3 py-1.5 text-xs bg-muted hover:bg-muted/80 rounded-md"
579
+ className="px-3 py-1.5 text-[11px] bg-[var(--bg-hover)] hover:bg-[var(--bg-active)] rounded-[var(--radius-sm)] text-[var(--text-secondary)] transition-colors"
610
580
  >
611
581
  Undo last apply
612
582
  </button>
613
583
  {changesLoading && (
614
- <span className="text-xs text-muted-foreground">Loading...</span>
584
+ <span className="text-[11px] text-[var(--text-muted)]">Loading...</span>
615
585
  )}
616
586
  </div>
617
587
 
@@ -628,41 +598,40 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
628
598
  </div>
629
599
  </>
630
600
  ) : (
631
- <div className="flex-1 flex items-center justify-center text-muted-foreground">
601
+ <div className="flex-1 flex items-center justify-center text-[var(--text-muted)]">
632
602
  <div className="text-center">
633
603
  <Bot className="w-16 h-16 mx-auto mb-4 opacity-30" />
634
- <p>Select an agent to view details</p>
604
+ <p className="text-[14px]">Select an agent to view details</p>
635
605
  </div>
636
606
  </div>
637
607
  )}
638
608
  </div>
639
609
 
640
- {/* Create Agent Modal */}
641
610
  {showCreateModal && (
642
- <div className="fixed inset-0 bg-black/50 flex items-center justify-center z-50">
643
- <div className="bg-card border border-border rounded-lg p-6 w-[500px] max-w-[90vw]">
644
- <h2 className="text-lg font-semibold mb-4">Create New Agent</h2>
611
+ <div className="fixed inset-0 bg-[rgba(3,7,9,0.8)] flex items-center justify-center z-50">
612
+ <div className="bg-[var(--bg-card)] border border-[var(--border-subtle)] rounded-[var(--radius-lg)] p-6 w-[500px] max-w-[90vw]">
613
+ <h2 className="text-[16px] font-medium text-[var(--text-primary)] mb-4">Create New Agent</h2>
645
614
 
646
615
  <div className="space-y-4">
647
616
  <div>
648
- <label className="block text-sm font-medium mb-1">Name</label>
617
+ <label className="block text-[11px] font-medium text-[var(--text-secondary)] mb-1">Name</label>
649
618
  <input
650
619
  type="text"
651
620
  value={newAgentConfig.name}
652
621
  onChange={e => setNewAgentConfig({ ...newAgentConfig, name: e.target.value })}
653
- className="w-full px-3 py-2 bg-background border border-input rounded-md"
622
+ className="w-full px-3 py-2 bg-[var(--bg-elevated)] border border-[var(--border-subtle)] rounded-[var(--radius-md)] text-[13px] text-[var(--text-primary)] placeholder:text-[var(--text-disabled)] focus:outline-none focus:border-[var(--teal-500)]"
654
623
  placeholder="My Coding Agent"
655
624
  />
656
625
  </div>
657
626
 
658
627
  <div>
659
- <label className="block text-sm font-medium mb-1">Project Path</label>
628
+ <label className="block text-[11px] font-medium text-[var(--text-secondary)] mb-1">Project Path</label>
660
629
  <div className="flex gap-2">
661
630
  <input
662
631
  type="text"
663
632
  value={newAgentConfig.projectPath}
664
633
  onChange={e => setNewAgentConfig({ ...newAgentConfig, projectPath: e.target.value })}
665
- className="flex-1 px-3 py-2 bg-background border border-input rounded-md"
634
+ className="flex-1 px-3 py-2 bg-[var(--bg-elevated)] border border-[var(--border-subtle)] rounded-[var(--radius-md)] text-[13px] text-[var(--text-primary)] placeholder:text-[var(--text-disabled)] focus:outline-none focus:border-[var(--teal-500)]"
666
635
  placeholder="/path/to/project"
667
636
  />
668
637
  <button
@@ -670,7 +639,7 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
670
639
  const path = await window.electronAPI.dialog.selectFolder();
671
640
  if (path) setNewAgentConfig({ ...newAgentConfig, projectPath: path });
672
641
  }}
673
- className="px-3 py-2 bg-muted rounded-md hover:bg-muted/80"
642
+ className="px-3 py-2 bg-[var(--bg-hover)] rounded-[var(--radius-md)] hover:bg-[var(--bg-active)] text-[13px] text-[var(--text-secondary)] transition-colors"
674
643
  >
675
644
  Browse
676
645
  </button>
@@ -678,7 +647,7 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
678
647
  </div>
679
648
 
680
649
  <div>
681
- <label className="block text-sm font-medium mb-1">Provider</label>
650
+ <label className="block text-[11px] font-medium text-[var(--text-secondary)] mb-1">Provider</label>
682
651
  <select
683
652
  value={newAgentConfig.providerId}
684
653
  onChange={e => {
@@ -689,7 +658,7 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
689
658
  model: provider?.models[0]?.id || ''
690
659
  });
691
660
  }}
692
- className="w-full px-3 py-2 bg-background border border-input rounded-md"
661
+ className="w-full px-3 py-2 bg-[var(--bg-elevated)] border border-[var(--border-subtle)] rounded-[var(--radius-md)] text-[13px] text-[var(--text-primary)]"
693
662
  >
694
663
  {providers.map(provider => (
695
664
  <option key={provider.id} value={provider.id}>{provider.name}</option>
@@ -698,11 +667,11 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
698
667
  </div>
699
668
 
700
669
  <div>
701
- <label className="block text-sm font-medium mb-1">Model</label>
670
+ <label className="block text-[11px] font-medium text-[var(--text-secondary)] mb-1">Model</label>
702
671
  <select
703
672
  value={newAgentConfig.model}
704
673
  onChange={e => setNewAgentConfig({ ...newAgentConfig, model: e.target.value })}
705
- className="w-full px-3 py-2 bg-background border border-input rounded-md"
674
+ className="w-full px-3 py-2 bg-[var(--bg-elevated)] border border-[var(--border-subtle)] rounded-[var(--radius-md)] text-[13px] text-[var(--text-primary)]"
706
675
  >
707
676
  {providers
708
677
  .find(p => p.id === newAgentConfig.providerId)
@@ -713,7 +682,7 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
713
682
  </div>
714
683
 
715
684
  <div>
716
- <label className="block text-sm font-medium mb-1">Skills</label>
685
+ <label className="block text-[11px] font-medium text-[var(--text-secondary)] mb-1">Skills</label>
717
686
  <div className="flex flex-wrap gap-2">
718
687
  {skills.map(skill => (
719
688
  <button
@@ -724,10 +693,10 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
724
693
  : [...newAgentConfig.skills, skill.id];
725
694
  setNewAgentConfig({ ...newAgentConfig, skills: newSkills });
726
695
  }}
727
- className={`px-3 py-1.5 rounded-md text-sm transition-colors ${
696
+ className={`px-3 py-1.5 rounded-[var(--radius-sm)] text-[12px] transition-colors ${
728
697
  newAgentConfig.skills.includes(skill.id)
729
- ? 'bg-primary text-primary-foreground'
730
- : 'bg-muted hover:bg-muted/80'
698
+ ? 'bg-[var(--teal-500)] text-[var(--bg-void)]'
699
+ : 'bg-[var(--bg-hover)] text-[var(--text-secondary)] hover:bg-[var(--bg-active)]'
731
700
  }`}
732
701
  >
733
702
  {skill.name}
@@ -740,14 +709,14 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
740
709
  <div className="flex justify-end gap-2 mt-6">
741
710
  <button
742
711
  onClick={() => setShowCreateModal(false)}
743
- className="px-4 py-2 text-muted-foreground hover:text-foreground"
712
+ className="px-4 py-2 text-[var(--text-muted)] hover:text-[var(--text-primary)] text-[13px] transition-colors"
744
713
  >
745
714
  Cancel
746
715
  </button>
747
716
  <button
748
717
  onClick={handleCreateAgent}
749
718
  disabled={!newAgentConfig.name || !newAgentConfig.projectPath}
750
- className="px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90 disabled:opacity-50"
719
+ className="px-4 py-2 bg-[var(--teal-500)] text-[var(--bg-void)] rounded-[var(--radius-sm)] hover:bg-[var(--teal-400)] disabled:opacity-50 text-[13px] font-medium transition-colors"
751
720
  >
752
721
  Create Agent
753
722
  </button>
@@ -757,4 +726,4 @@ export const AgentPanel: React.FC<AgentPanelProps> = ({
757
726
  )}
758
727
  </div>
759
728
  );
760
- };
729
+ };