@wrongstack/webui 0.318.0 → 0.319.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 (86) hide show
  1. package/dist/assets/{AgentRosterView-C46rL23K.js → AgentRosterView-BVpIFQwi.js} +1 -1
  2. package/dist/assets/{AnalyticsDashboard-B8r_8kNv.js → AnalyticsDashboard-nqlWJi6M.js} +1 -1
  3. package/dist/assets/{AudienceMemoryPanel-Ciybycpn.js → AudienceMemoryPanel-BT6C4Jkw.js} +1 -1
  4. package/dist/assets/{ChangesView-BREfCsEq.js → ChangesView-CN7NWDeV.js} +1 -1
  5. package/dist/assets/{ChimeraReviewsView-aSYmQ8tC.js → ChimeraReviewsView-BNQE5kRx.js} +1 -1
  6. package/dist/assets/{ChronicleDashboard-bo2jv52s.js → ChronicleDashboard-BWMkG_hu.js} +1 -1
  7. package/dist/assets/{CodeEditor-C_KzNkIb.js → CodeEditor-DZ2k-Mz5.js} +1 -1
  8. package/dist/assets/{CodeMap-DA_k3u5g.js → CodeMap-CLOuNLqN.js} +1 -1
  9. package/dist/assets/{ConfirmModal-gukSikBD.js → ConfirmModal-B6BGiiN8.js} +1 -1
  10. package/dist/assets/{CronJobsPanel-D-43oYQ-.js → CronJobsPanel-CsMIoWVQ.js} +1 -1
  11. package/dist/assets/{DeadCodeScanPanel-VnMQatbH.js → DeadCodeScanPanel-DooqnEMF.js} +1 -1
  12. package/dist/assets/{DebugDashboard-DNDadwro.js → DebugDashboard-C0tmxxV8.js} +1 -1
  13. package/dist/assets/{DesignGalleryView-B9ZMJPOQ.js → DesignGalleryView-lc-XRmVG.js} +1 -1
  14. package/dist/assets/{GoalView-BkoCNN8l.js → GoalView-BuYUc4OB.js} +1 -1
  15. package/dist/assets/{KanbanView-nql6LkaS.js → KanbanView-DQK6adut.js} +1 -1
  16. package/dist/assets/{MailboxDetailView-CdHRfnNq.js → MailboxDetailView-CBV3-Hf2.js} +1 -1
  17. package/dist/assets/{MemoryDrawer-CfukdhlF.js → MemoryDrawer-rPf-1Ulk.js} +1 -1
  18. package/dist/assets/{MemoryManager-BD_VnFAu.js → MemoryManager-B_ZJhOqq.js} +1 -1
  19. package/dist/assets/{ModelPicker-C3r7IFfh.js → ModelPicker-CLs0qQgg.js} +1 -1
  20. package/dist/assets/{OfficeMapPanel-B47jfEHf.js → OfficeMapPanel-DnbdkXL1.js} +1 -1
  21. package/dist/assets/{ProcessMonitor-CvHdN8Bn.js → ProcessMonitor-CHNNqCk9.js} +1 -1
  22. package/dist/assets/{PromptJournalView-CXZ9notj.js → PromptJournalView-Biu4DknM.js} +1 -1
  23. package/dist/assets/{QueuePanel-DOcgHRH3.js → QueuePanel-CzTXq6j4.js} +1 -1
  24. package/dist/assets/{RefreshDebugView-BYmeORMQ.js → RefreshDebugView-d9iU3sFX.js} +1 -1
  25. package/dist/assets/{RequirementIntakeView-CFgVx_0T.js → RequirementIntakeView-g9dzUTVw.js} +1 -1
  26. package/dist/assets/{SageTabs-BRJG0fhZ.js → SageTabs-Bw6PDwy3.js} +2 -2
  27. package/dist/assets/{SddFlowGraph-BsfhxlDK.js → SddFlowGraph-Bj_Aqq5B.js} +1 -1
  28. package/dist/assets/{SddHub-Br1vyCgq.js → SddHub-Cdow0Exb.js} +1 -1
  29. package/dist/assets/{SessionInspectView-BSRjWErA.js → SessionInspectView-je_xLISf.js} +1 -1
  30. package/dist/assets/{SessionList-BkaI91oW.js → SessionList-4y1uuB-y.js} +1 -1
  31. package/dist/assets/{SessionsDashboard-BEQs4Div.js → SessionsDashboard-DkaNF5lx.js} +1 -1
  32. package/dist/assets/{SetupScreen-zY4541lT.js → SetupScreen-DWzbXvmU.js} +1 -1
  33. package/dist/assets/{SkillDetailView-DqxkOnb8.js → SkillDetailView-Bjq8GkDB.js} +1 -1
  34. package/dist/assets/{SpecsView-COS0-sxq.js → SpecsView-ok8HZ8ws.js} +1 -1
  35. package/dist/assets/{TechStackView-Dr8vI0hK.js → TechStackView-CQ9AdoBa.js} +1 -1
  36. package/dist/assets/{TerminalPanel-DlIyvxm6.js → TerminalPanel-cbM6oQWQ.js} +1 -1
  37. package/dist/assets/{activity-q85HXQNv.js → activity-BU6MNvBJ.js} +1 -1
  38. package/dist/assets/{activity-B2_Vr2oD.js → activity-C7dkJqBU.js} +1 -1
  39. package/dist/assets/{activity-DYMBKGt0.js → activity-C_18AaRY.js} +1 -1
  40. package/dist/assets/{activity-IxgYWPDt.js → activity-CpnSsE22.js} +1 -1
  41. package/dist/assets/{activity-BF1idM4Y.js → activity-CtTKsSX6.js} +1 -1
  42. package/dist/assets/{activity-C-kOJZXC.js → activity-D1rp3dH9.js} +1 -1
  43. package/dist/assets/{activity-DPpMW8BU.js → activity-hTPcI4q1.js} +1 -1
  44. package/dist/assets/{chat-DTI7lNDx.js → chat-6dE2AJNN.js} +1 -1
  45. package/dist/assets/{chat-BvKkSd09.js → chat-B3AJmhGD.js} +1 -1
  46. package/dist/assets/{chat-BNWqeV-N.js → chat-BHsbpaVt.js} +1 -1
  47. package/dist/assets/{chat-BlllxfpP.js → chat-BITJe8-v.js} +1 -1
  48. package/dist/assets/{chat-DlhXGxxi.js → chat-U-Jjb8_k.js} +1 -1
  49. package/dist/assets/{chat-B60h8Cji.js → chat-_Xp5fDnj.js} +1 -1
  50. package/dist/assets/{chat-B5a3cvps.js → chat-mSbSzPl5.js} +1 -1
  51. package/dist/assets/{chat-store-DIcs826A.js → chat-store-oW_-zcJP.js} +1 -1
  52. package/dist/assets/{i18n-Cv65b1SP.js → i18n-D06uU1PM.js} +2 -2
  53. package/dist/assets/index-CWYymMpa.css +1 -0
  54. package/dist/assets/index-Cwjer17r.js +144 -0
  55. package/dist/assets/{roster-ws-D5JW3IPJ.js → roster-ws-BQUI8QuW.js} +1 -1
  56. package/dist/assets/setup-B0D9CK3-.js +1 -0
  57. package/dist/assets/setup-B58YVaGU.js +1 -0
  58. package/dist/assets/setup-C2H9Uv0Q.js +1 -0
  59. package/dist/assets/setup-CzM4dkkU.js +1 -0
  60. package/dist/assets/setup-Di56FlHP.js +1 -0
  61. package/dist/assets/setup-Dwt58Mpz.js +1 -0
  62. package/dist/assets/setup-DznVdlJy.js +1 -0
  63. package/dist/assets/{stores-CNuMLG8X.js → stores-C7Vvce-6.js} +1 -1
  64. package/dist/assets/ui-store-Dm7ujR9u.js +1 -0
  65. package/dist/assets/useWebSocket-9lfOsI_r.js +27 -0
  66. package/dist/assets/{view-navigation-DPOY0lyt.js → view-navigation-wOKaM_Rf.js} +1 -1
  67. package/dist/assets/{ws-client-D-d32pHb.js → ws-client-DtTZLD8e.js} +2 -2
  68. package/dist/index.html +14 -14
  69. package/dist/index.js +1065 -543
  70. package/dist/lib/launch-builtin-round.d.ts +43 -0
  71. package/dist/lib/perf-run-message.d.ts +51 -0
  72. package/dist/stores/fleet-store.d.ts +4 -0
  73. package/dist/stores/types.d.ts +9 -0
  74. package/dist/stores/ui-store.d.ts +0 -2
  75. package/package.json +10 -10
  76. package/dist/assets/index-DSyVpLgL.css +0 -1
  77. package/dist/assets/index-DbprKWmG.js +0 -137
  78. package/dist/assets/setup-BQLPzL3N.js +0 -1
  79. package/dist/assets/setup-C9lrNwQF.js +0 -1
  80. package/dist/assets/setup-CcxP7cUl.js +0 -1
  81. package/dist/assets/setup-CtKKNpH9.js +0 -1
  82. package/dist/assets/setup-D4rp2jda.js +0 -1
  83. package/dist/assets/setup-MvmOtwNp.js +0 -1
  84. package/dist/assets/setup-blxUcxNU.js +0 -1
  85. package/dist/assets/ui-store-DpKUBLWd.js +0 -1
  86. package/dist/assets/useWebSocket-VIItbvVK.js +0 -27
package/dist/index.js CHANGED
@@ -655,6 +655,8 @@ var require_activity = __commonJS({
655
655
  openChat: "Open chat",
656
656
  leaderTab: "Leader",
657
657
  tabsLabel: "Switch agent view",
658
+ moreTabsTitle: "More agents ({{n}})",
659
+ closeTab: "Close {{name}}",
658
660
  emptyFilteredTitle: "No agents match the filter",
659
661
  emptyFilteredHint: "Change the filter or clear it to see all agents.",
660
662
  emptyFilteredClear: "Show all",
@@ -4296,7 +4298,10 @@ var require_chat = __commonJS({
4296
4298
  delegations: "{{count}} delegated run(s)",
4297
4299
  delegationFailed: "{{count}} failed",
4298
4300
  delegateToolCalls: "{{count}} tools inside",
4299
- leaderLine: "Leader: {{ok}}\u2713 {{failed}}\u2717"
4301
+ leaderLine: "Leader: {{ok}}\u2713 {{failed}}\u2717",
4302
+ tool: "Tool",
4303
+ outcome: "Outcome",
4304
+ average: "Avg."
4300
4305
  }
4301
4306
  };
4302
4307
  }
@@ -5427,6 +5432,16 @@ var require_setup = __commonJS({
5427
5432
  on: "On",
5428
5433
  off: "Off",
5429
5434
  bugHunterError: "The Elite Bug Hunter prompt could not be loaded. Check the prompt library and try again.",
5435
+ perfTitle: "Start Performance Ratchet",
5436
+ perfBody: "Baseline it, change one thing, re-measure, and revert anything that is not measurably better.",
5437
+ perfScope: "Scope",
5438
+ perfWholeProject: "Whole project",
5439
+ perfDirectoryScope: "{{path}} and below",
5440
+ perfMode: "Mode",
5441
+ perfMetric: "Metric",
5442
+ perfMetricAuto: "Metric: let the agent choose",
5443
+ perfStart: "Start round",
5444
+ perfError: "The performance prompt could not be loaded. Check the prompt library and try again.",
5430
5445
  pickBackUp: "Pick back up",
5431
5446
  recentPrompts: "Recent prompts",
5432
5447
  quickCommands: "Quick commands",
@@ -5748,6 +5763,8 @@ var require_activity2 = __commonJS({
5748
5763
  openChat: "Chat \xF6ffnen",
5749
5764
  leaderTab: "Leiter",
5750
5765
  tabsLabel: "Agentenansicht wechseln",
5766
+ moreTabsTitle: "Mehr Agents ({{n}})",
5767
+ closeTab: "{{name}} schlie\xDFen",
5751
5768
  emptyFilteredTitle: "Keine Agents entsprechen dem Filter",
5752
5769
  emptyFilteredHint: "\xC4ndere oder l\xF6sche den Filter, um alle Agents zu sehen.",
5753
5770
  emptyFilteredClear: "Alle anzeigen",
@@ -9397,7 +9414,10 @@ var require_chat2 = __commonJS({
9397
9414
  delegations: "{{count}} delegierte Laufzeit(en)",
9398
9415
  delegationFailed: "{{count}} fehlgeschlagen",
9399
9416
  delegateToolCalls: "{{count}} Tools darin",
9400
- leaderLine: "Leiter: {{ok}}\u2713 {{failed}}\u2717"
9417
+ leaderLine: "Leiter: {{ok}}\u2713 {{failed}}\u2717",
9418
+ tool: "Werkzeug",
9419
+ outcome: "Ergebnis",
9420
+ average: "\xD8"
9401
9421
  }
9402
9422
  };
9403
9423
  }
@@ -10524,6 +10544,16 @@ var require_setup2 = __commonJS({
10524
10544
  on: "Ein",
10525
10545
  off: "Aus",
10526
10546
  bugHunterError: "Der Elite-Bug-Hunter-Prompt konnte nicht geladen werden. Pr\xFCfe die Prompt-Bibliothek und versuche es erneut.",
10547
+ perfTitle: "Performance-Ratchet starten",
10548
+ perfBody: "Erst messen, dann genau eine Sache \xE4ndern, erneut messen \u2014 und alles zur\xFCcknehmen, was nicht messbar besser ist.",
10549
+ perfScope: "Bereich",
10550
+ perfWholeProject: "Gesamtes Projekt",
10551
+ perfDirectoryScope: "{{path}} und darunter",
10552
+ perfMode: "Modus",
10553
+ perfMetric: "Metrik",
10554
+ perfMetricAuto: "Metrik: vom Agenten w\xE4hlen lassen",
10555
+ perfStart: "Runde starten",
10556
+ perfError: "Der Performance-Prompt konnte nicht geladen werden. Pr\xFCfe die Prompt-Bibliothek und versuche es erneut.",
10527
10557
  pickBackUp: "Fortsetzen",
10528
10558
  recentPrompts: "Zuletzt verwendete Prompts",
10529
10559
  quickCommands: "Schnellbefehle",
@@ -10845,6 +10875,8 @@ var require_activity3 = __commonJS({
10845
10875
  openChat: "Abrir chat",
10846
10876
  leaderTab: "L\xEDder",
10847
10877
  tabsLabel: "Cambiar vista de agente",
10878
+ moreTabsTitle: "M\xE1s agentes ({{n}})",
10879
+ closeTab: "Cerrar {{name}}",
10848
10880
  emptyFilteredTitle: "Ning\xFAn agente coincide con el filtro",
10849
10881
  emptyFilteredHint: "Cambia o borra el filtro para ver todos los agentes.",
10850
10882
  emptyFilteredClear: "Mostrar todos",
@@ -14494,7 +14526,10 @@ var require_chat3 = __commonJS({
14494
14526
  delegations: "{{count}} ejecuci\xF3n(es) delegada(s)",
14495
14527
  delegationFailed: "{{count}} fallida(s)",
14496
14528
  delegateToolCalls: "{{count}} herramientas dentro",
14497
- leaderLine: "L\xEDder: {{ok}}\u2713 {{failed}}\u2717"
14529
+ leaderLine: "L\xEDder: {{ok}}\u2713 {{failed}}\u2717",
14530
+ tool: "Herramienta",
14531
+ outcome: "Resultado",
14532
+ average: "Prom."
14498
14533
  }
14499
14534
  };
14500
14535
  }
@@ -15621,6 +15656,16 @@ var require_setup3 = __commonJS({
15621
15656
  on: "Activado",
15622
15657
  off: "Desactivado",
15623
15658
  bugHunterError: "No se pudo cargar el prompt de Elite Bug Hunter. Revisa la biblioteca de prompts e int\xE9ntalo de nuevo.",
15659
+ perfTitle: "Iniciar Performance Ratchet",
15660
+ perfBody: "Mide primero, cambia una sola cosa, vuelve a medir y revierte todo lo que no sea mejor de forma medible.",
15661
+ perfScope: "Alcance",
15662
+ perfWholeProject: "Todo el proyecto",
15663
+ perfDirectoryScope: "{{path}} y por debajo",
15664
+ perfMode: "Modo",
15665
+ perfMetric: "M\xE9trica",
15666
+ perfMetricAuto: "M\xE9trica: que la elija el agente",
15667
+ perfStart: "Iniciar ronda",
15668
+ perfError: "No se pudo cargar el prompt de rendimiento. Revisa la biblioteca de prompts e int\xE9ntalo de nuevo.",
15624
15669
  pickBackUp: "Retomar",
15625
15670
  recentPrompts: "Prompts recientes",
15626
15671
  quickCommands: "Comandos r\xE1pidos",
@@ -15942,6 +15987,8 @@ var require_activity4 = __commonJS({
15942
15987
  openChat: "Ouvrir le chat",
15943
15988
  leaderTab: "Leader",
15944
15989
  tabsLabel: "Changer de vue d\u2019agent",
15990
+ moreTabsTitle: "Plus d\u2019agents ({{n}})",
15991
+ closeTab: "Fermer {{name}}",
15945
15992
  emptyFilteredTitle: "Aucun agent ne correspond au filtre",
15946
15993
  emptyFilteredHint: "Modifiez ou effacez le filtre pour afficher tous les agents.",
15947
15994
  emptyFilteredClear: "Tout afficher",
@@ -19592,7 +19639,10 @@ var require_chat4 = __commonJS({
19592
19639
  delegations: "{{count}} ex\xE9cution(s) d\xE9l\xE9gu\xE9e(s)",
19593
19640
  delegationFailed: "{{count}} \xE9chec(s)",
19594
19641
  delegateToolCalls: "{{count}} outils \xE0 l'int\xE9rieur",
19595
- leaderLine: "Leader : {{ok}}\u2713 {{failed}}\u2717"
19642
+ leaderLine: "Leader : {{ok}}\u2713 {{failed}}\u2717",
19643
+ tool: "Outil",
19644
+ outcome: "R\xE9sultat",
19645
+ average: "Moy."
19596
19646
  }
19597
19647
  };
19598
19648
  }
@@ -20719,6 +20769,16 @@ var require_setup4 = __commonJS({
20719
20769
  on: "Activ\xE9",
20720
20770
  off: "D\xE9sactiv\xE9",
20721
20771
  bugHunterError: "Le prompt Elite Bug Hunter n'a pas pu \xEAtre charg\xE9. V\xE9rifiez la biblioth\xE8que de prompts et r\xE9essayez.",
20772
+ perfTitle: "Lancer le Performance Ratchet",
20773
+ perfBody: "Mesurer d\u2019abord, changer une seule chose, mesurer \xE0 nouveau, et annuler tout ce qui n\u2019est pas mesurablement meilleur.",
20774
+ perfScope: "P\xE9rim\xE8tre",
20775
+ perfWholeProject: "Tout le projet",
20776
+ perfDirectoryScope: "{{path}} et en dessous",
20777
+ perfMode: "Mode",
20778
+ perfMetric: "M\xE9trique",
20779
+ perfMetricAuto: "M\xE9trique : laisser l\u2019agent choisir",
20780
+ perfStart: "Lancer le tour",
20781
+ perfError: "Le prompt de performance n\u2019a pas pu \xEAtre charg\xE9. V\xE9rifiez la biblioth\xE8que de prompts et r\xE9essayez.",
20722
20782
  pickBackUp: "Reprendre",
20723
20783
  recentPrompts: "Prompts r\xE9cents",
20724
20784
  quickCommands: "Commandes rapides",
@@ -21040,6 +21100,8 @@ var require_activity5 = __commonJS({
21040
21100
  openChat: "Apri chat",
21041
21101
  leaderTab: "Leader",
21042
21102
  tabsLabel: "Cambia vista agente",
21103
+ moreTabsTitle: "Altri agenti ({{n}})",
21104
+ closeTab: "Chiudi {{name}}",
21043
21105
  emptyFilteredTitle: "Nessun agente corrisponde al filtro",
21044
21106
  emptyFilteredHint: "Modifica o cancella il filtro per vedere tutti gli agenti.",
21045
21107
  emptyFilteredClear: "Mostra tutti",
@@ -24690,7 +24752,10 @@ var require_chat5 = __commonJS({
24690
24752
  delegations: "{{count}} esecuzione/i delegata/e",
24691
24753
  delegationFailed: "{{count}} fallite",
24692
24754
  delegateToolCalls: "{{count}} strumenti interni",
24693
- leaderLine: "Leader: {{ok}}\u2713 {{failed}}\u2717"
24755
+ leaderLine: "Leader: {{ok}}\u2713 {{failed}}\u2717",
24756
+ tool: "Strumento",
24757
+ outcome: "Esito",
24758
+ average: "Media"
24694
24759
  }
24695
24760
  };
24696
24761
  }
@@ -25817,6 +25882,16 @@ var require_setup5 = __commonJS({
25817
25882
  on: "Attivo",
25818
25883
  off: "Disattivo",
25819
25884
  bugHunterError: "Impossibile caricare il prompt Elite Bug Hunter. Controlla la libreria dei prompt e riprova.",
25885
+ perfTitle: "Avvia Performance Ratchet",
25886
+ perfBody: "Prima misura, poi cambia una sola cosa, misura di nuovo e annulla tutto ci\xF2 che non \xE8 misurabilmente migliore.",
25887
+ perfScope: "Ambito",
25888
+ perfWholeProject: "Intero progetto",
25889
+ perfDirectoryScope: "{{path}} e sottocartelle",
25890
+ perfMode: "Modalit\xE0",
25891
+ perfMetric: "Metrica",
25892
+ perfMetricAuto: "Metrica: scelga l\u2019agente",
25893
+ perfStart: "Avvia round",
25894
+ perfError: "Impossibile caricare il prompt di performance. Controlla la libreria dei prompt e riprova.",
25820
25895
  pickBackUp: "Riprendi",
25821
25896
  recentPrompts: "Prompt recenti",
25822
25897
  quickCommands: "Comandi rapidi",
@@ -26138,6 +26213,8 @@ var require_activity6 = __commonJS({
26138
26213
  openChat: "Abrir chat",
26139
26214
  leaderTab: "L\xEDder",
26140
26215
  tabsLabel: "Alternar visualiza\xE7\xE3o de agente",
26216
+ moreTabsTitle: "Mais agentes ({{n}})",
26217
+ closeTab: "Fechar {{name}}",
26141
26218
  emptyFilteredTitle: "Nenhum agente corresponde ao filtro",
26142
26219
  emptyFilteredHint: "Altere ou limpe o filtro para ver todos os agentes.",
26143
26220
  emptyFilteredClear: "Mostrar todos",
@@ -29787,7 +29864,10 @@ var require_chat6 = __commonJS({
29787
29864
  delegations: "{{count}} execu\xE7\xE3o(\xF5es) delegada(s)",
29788
29865
  delegationFailed: "{{count}} falha(s)",
29789
29866
  delegateToolCalls: "{{count}} ferramentas dentro",
29790
- leaderLine: "L\xEDder: {{ok}}\u2713 {{failed}}\u2717"
29867
+ leaderLine: "L\xEDder: {{ok}}\u2713 {{failed}}\u2717",
29868
+ tool: "Ferramenta",
29869
+ outcome: "Resultado",
29870
+ average: "M\xE9dia"
29791
29871
  }
29792
29872
  };
29793
29873
  }
@@ -30914,6 +30994,16 @@ var require_setup6 = __commonJS({
30914
30994
  on: "Ligado",
30915
30995
  off: "Desligado",
30916
30996
  bugHunterError: "N\xE3o foi poss\xEDvel carregar o prompt Elite Bug Hunter. Verifique a biblioteca de prompts e tente novamente.",
30997
+ perfTitle: "Iniciar Performance Ratchet",
30998
+ perfBody: "Me\xE7a primeiro, mude uma coisa s\xF3, me\xE7a de novo e reverta tudo que n\xE3o for mensuravelmente melhor.",
30999
+ perfScope: "Escopo",
31000
+ perfWholeProject: "Projeto inteiro",
31001
+ perfDirectoryScope: "{{path}} e abaixo",
31002
+ perfMode: "Modo",
31003
+ perfMetric: "M\xE9trica",
31004
+ perfMetricAuto: "M\xE9trica: deixar o agente escolher",
31005
+ perfStart: "Iniciar rodada",
31006
+ perfError: "N\xE3o foi poss\xEDvel carregar o prompt de performance. Verifique a biblioteca de prompts e tente novamente.",
30917
31007
  pickBackUp: "Retomar de onde parou",
30918
31008
  recentPrompts: "Prompts recentes",
30919
31009
  quickCommands: "Comandos r\xE1pidos",
@@ -31235,6 +31325,8 @@ var require_activity7 = __commonJS({
31235
31325
  openChat: "Sohbet a\xE7",
31236
31326
  leaderTab: "Lider",
31237
31327
  tabsLabel: "Ajan g\xF6r\xFCn\xFCm\xFCn\xFC de\u011Fi\u015Ftir",
31328
+ moreTabsTitle: "Di\u011Fer ajanlar ({{n}})",
31329
+ closeTab: "Kapat ({{name}})",
31238
31330
  emptyFilteredTitle: "Filtreyle e\u015Fle\u015Fen arac\u0131 yok",
31239
31331
  emptyFilteredHint: "T\xFCm arac\u0131lar\u0131 g\xF6rmek i\xE7in filtreyi de\u011Fi\u015Ftirin veya temizleyin.",
31240
31332
  emptyFilteredClear: "T\xFCm\xFCn\xFC g\xF6ster",
@@ -34884,7 +34976,10 @@ var require_chat7 = __commonJS({
34884
34976
  delegations: "{{count}} devredilen \xE7al\u0131\u015Ft\u0131rma",
34885
34977
  delegationFailed: "{{count}} ba\u015Far\u0131s\u0131z",
34886
34978
  delegateToolCalls: "i\xE7inde {{count}} ara\xE7",
34887
- leaderLine: "Lider: {{ok}}\u2713 {{failed}}\u2717"
34979
+ leaderLine: "Lider: {{ok}}\u2713 {{failed}}\u2717",
34980
+ tool: "Ara\xE7",
34981
+ outcome: "Sonu\xE7",
34982
+ average: "Ort."
34888
34983
  }
34889
34984
  };
34890
34985
  }
@@ -36015,6 +36110,16 @@ var require_setup7 = __commonJS({
36015
36110
  on: "A\xE7\u0131k",
36016
36111
  off: "Kapal\u0131",
36017
36112
  bugHunterError: "Elite Bug Hunter promptu y\xFCklenemedi. Prompt library'yi kontrol edip tekrar deneyin.",
36113
+ perfTitle: "Performans Ratchet ba\u015Flat",
36114
+ perfBody: "\xD6nce \xF6l\xE7er, tek bir \u015Feyi de\u011Fi\u015Ftirir, yeniden \xF6l\xE7er; \xF6l\xE7\xFClebilir bi\xE7imde daha iyi olmayan her de\u011Fi\u015Fikli\u011Fi geri al\u0131r.",
36115
+ perfScope: "Kapsam",
36116
+ perfWholeProject: "T\xFCm proje",
36117
+ perfDirectoryScope: "{{path}} ve alt\u0131",
36118
+ perfMode: "Mod",
36119
+ perfMetric: "Metrik",
36120
+ perfMetricAuto: "Metrik: vekil se\xE7sin",
36121
+ perfStart: "Turu ba\u015Flat",
36122
+ perfError: "Performans promptu y\xFCklenemedi. Prompt library\u2019yi kontrol edip tekrar deneyin.",
36018
36123
  pickBackUp: "Kald\u0131\u011F\u0131n yerden devam et",
36019
36124
  recentPrompts: "Son promptlar",
36020
36125
  quickCommands: "H\u0131zl\u0131 komutlar",
@@ -38777,7 +38882,6 @@ function homeNavigationStatePatch(options = {}) {
38777
38882
  inspectorFocusedAgentId: null,
38778
38883
  subagentChatFocusId: null,
38779
38884
  subagentChatFocusSessionId: null,
38780
- subagentChatFocusBySession: {},
38781
38885
  terminalOpen: false,
38782
38886
  paletteOpen: false,
38783
38887
  shortcutsOpen: false,
@@ -39007,7 +39111,6 @@ var init_ui_store = __esm({
39007
39111
  inspectorFocusedAgentId: null,
39008
39112
  subagentChatFocusId: null,
39009
39113
  subagentChatFocusSessionId: null,
39010
- subagentChatFocusBySession: {},
39011
39114
  processMonitorOpen: false,
39012
39115
  queuePanelOpen: false,
39013
39116
  cronJobsOpen: false,
@@ -39154,11 +39257,10 @@ var init_ui_store = __esm({
39154
39257
  }
39155
39258
  const parked = sessionId ? chromeBySession[sessionId] : void 0;
39156
39259
  const chrome = parked ?? defaultSessionChrome();
39157
- const subagentChatFocusId = sessionId ? state.subagentChatFocusBySession[sessionId] ?? null : null;
39158
39260
  return {
39159
39261
  chromeSessionId: sessionId,
39160
39262
  chromeBySession,
39161
- subagentChatFocusId,
39263
+ subagentChatFocusId: null,
39162
39264
  subagentChatFocusSessionId: sessionId,
39163
39265
  sidebarOpen: chrome.sidebarOpen ?? defaultSessionChrome().sidebarOpen,
39164
39266
  activeActivity: chrome.activeActivity,
@@ -39303,33 +39405,29 @@ var init_ui_store = __esm({
39303
39405
  inspectorFocusedAgentId: id,
39304
39406
  ...parkChrome(state, { inspectorFocusedAgentId: id })
39305
39407
  })),
39306
- // Which subagent transcript is open is a property of the TAB, not of the
39307
- // app: focusing one in tab 2 must not swap tab 1's chat out from under
39308
- // the user. The map is keyed by session; the flat field stays as the
39309
- // foreground projection so existing readers keep working.
39408
+ // Which subagent transcript is open is stamped with the session it
39409
+ // belongs to, so ChatView can auto-clear a focus that arrives from (or
39410
+ // names) another tab. Focus itself is foreground-only: switching tabs
39411
+ // always lands on the Leader chat.
39310
39412
  setSubagentChatFocus: (id, sessionId) => set((state) => {
39311
39413
  const requested = sessionId === "" ? null : sessionId;
39312
39414
  const key = requested ?? state.chromeSessionId ?? state.subagentChatFocusSessionId;
39313
39415
  return {
39314
39416
  subagentChatFocusId: id,
39315
- subagentChatFocusSessionId: key ?? null,
39316
- subagentChatFocusBySession: key ? { ...state.subagentChatFocusBySession, [key]: id } : state.subagentChatFocusBySession
39417
+ subagentChatFocusSessionId: key ?? null
39317
39418
  };
39318
39419
  }),
39319
39420
  forgetSession: (sessionId) => set((state) => {
39320
- const hasSubagentFocus = sessionId in state.subagentChatFocusBySession || state.subagentChatFocusSessionId === sessionId;
39421
+ const hasSubagentFocus = state.subagentChatFocusSessionId === sessionId;
39321
39422
  const hasChrome = sessionId in state.chromeBySession || state.chromeSessionId === sessionId;
39322
39423
  if (!hasSubagentFocus && !hasChrome) {
39323
39424
  return state;
39324
39425
  }
39325
- const nextFocus = { ...state.subagentChatFocusBySession };
39326
- delete nextFocus[sessionId];
39327
39426
  const nextChrome = { ...state.chromeBySession };
39328
39427
  delete nextChrome[sessionId];
39329
39428
  const droppingFront = state.subagentChatFocusSessionId === sessionId;
39330
39429
  const droppingChrome = state.chromeSessionId === sessionId;
39331
39430
  return {
39332
- subagentChatFocusBySession: nextFocus,
39333
39431
  chromeBySession: nextChrome,
39334
39432
  ...droppingFront ? { subagentChatFocusId: null, subagentChatFocusSessionId: null } : {},
39335
39433
  ...droppingChrome ? { chromeSessionId: null, ...defaultSessionChrome() } : {}
@@ -40574,6 +40672,25 @@ var init_fleet_store = __esm({
40574
40672
  fleetTokensOut: Math.max(0, state.fleetTokensOut - droppedTokensOut)
40575
40673
  };
40576
40674
  }),
40675
+ removeAgent: (subagentId) => set((state) => {
40676
+ const agent = state.agents.get(subagentId);
40677
+ if (!agent) return state;
40678
+ const agents = new Map(state.agents);
40679
+ agents.delete(subagentId);
40680
+ const agentTranscripts = new Map(state.agentTranscripts);
40681
+ agentTranscripts.delete(subagentId);
40682
+ return {
40683
+ agents,
40684
+ agentTranscripts,
40685
+ agentTimeline: state.agentTimeline.filter((e) => e.subagentId !== subagentId),
40686
+ eventTimeline: state.eventTimeline.filter((e) => e.agentId !== subagentId),
40687
+ leaderId: state.leaderId === subagentId ? void 0 : state.leaderId,
40688
+ // Same running-delta contract as clearFinishedAgents: totals are sums
40689
+ // of per-agent contributions, so the agent's tokens leave with it.
40690
+ fleetTokensIn: Math.max(0, state.fleetTokensIn - (agent.tokensIn ?? 0)),
40691
+ fleetTokensOut: Math.max(0, state.fleetTokensOut - (agent.tokensOut ?? 0))
40692
+ };
40693
+ }),
40577
40694
  applyEvent: (e) => set((state) => {
40578
40695
  const agents = new Map(state.agents);
40579
40696
  const agentTranscripts = new Map(state.agentTranscripts);
@@ -41358,7 +41475,7 @@ function activate(sessionId) {
41358
41475
  useSessionStore.getState().switchSession(sessionId);
41359
41476
  const ui = useUIStore.getState();
41360
41477
  ui.bindSessionChrome(sessionId);
41361
- ui.setSubagentChatFocus(ui.subagentChatFocusBySession[sessionId] ?? null, sessionId);
41478
+ ui.setSubagentChatFocus(null, sessionId);
41362
41479
  const lane = readLane(sessionId);
41363
41480
  const parked = lane.pendingConfirm;
41364
41481
  if (parked) ui.showConfirm(parked);
@@ -48800,6 +48917,95 @@ var init_bug_hunt_message = __esm({
48800
48917
  }
48801
48918
  });
48802
48919
 
48920
+ // src/lib/perf-run-message.ts
48921
+ function isMode(value) {
48922
+ return PERF_RUN_MODES.includes(value);
48923
+ }
48924
+ function isMetric(value) {
48925
+ return PERF_RUN_METRICS.includes(value);
48926
+ }
48927
+ function buildPerfRunMessage(instruction, summary) {
48928
+ return `${PERF_RUN_PREFIX} scope="${encodeURIComponent(summary.scope)}" mode="${summary.mode}" metric="${summary.metric}" -->
48929
+ ${instruction}`;
48930
+ }
48931
+ function parsePerfRunMessage(content) {
48932
+ const match = PERF_RUN_PATTERN.exec(content);
48933
+ if (!match) return void 0;
48934
+ const mode = match[2] ?? "";
48935
+ const metric = match[3] ?? "";
48936
+ if (!isMode(mode)) return void 0;
48937
+ try {
48938
+ return {
48939
+ scope: decodeURIComponent(match[1] ?? ""),
48940
+ mode,
48941
+ metric: isMetric(metric) ? metric : ""
48942
+ };
48943
+ } catch {
48944
+ return void 0;
48945
+ }
48946
+ }
48947
+ var PERF_RUN_MODES, PERF_RUN_METRICS, PERF_RUN_MODE_LABELS, PERF_RUN_METRIC_LABELS, PERF_MODE_SLUGS, PERF_MUTATING_MODES, PERF_RUN_PREFIX, PERF_RUN_PATTERN;
48948
+ var init_perf_run_message = __esm({
48949
+ "src/lib/perf-run-message.ts"() {
48950
+ "use strict";
48951
+ PERF_RUN_MODES = [
48952
+ "ratchet",
48953
+ "audit",
48954
+ "triage",
48955
+ "memory",
48956
+ "io",
48957
+ "cpu",
48958
+ "guard",
48959
+ "contract"
48960
+ ];
48961
+ PERF_RUN_METRICS = [
48962
+ "wall-ms",
48963
+ "p99-latency-ms",
48964
+ "peak-rss-bytes",
48965
+ "throughput-ops",
48966
+ "allocs-per-op",
48967
+ "cold-start-ms",
48968
+ "bundle-bytes"
48969
+ ];
48970
+ PERF_RUN_MODE_LABELS = {
48971
+ ratchet: "Performance Ratchet",
48972
+ audit: "Performance Audit",
48973
+ triage: "Performance Triage",
48974
+ memory: "Memory & Retention Hunt",
48975
+ io: "I/O & Concurrency Analysis",
48976
+ cpu: "CPU Hot Path Reduction",
48977
+ guard: "Regression Guard Setup",
48978
+ contract: "Performance Contract"
48979
+ };
48980
+ PERF_RUN_METRIC_LABELS = {
48981
+ "wall-ms": "Wall time",
48982
+ "p99-latency-ms": "p99 latency",
48983
+ "peak-rss-bytes": "Peak RSS",
48984
+ "throughput-ops": "Throughput",
48985
+ "allocs-per-op": "Allocations/op",
48986
+ "cold-start-ms": "Cold start",
48987
+ "bundle-bytes": "Bundle size"
48988
+ };
48989
+ PERF_MODE_SLUGS = {
48990
+ ratchet: "elite-performance-ratchet",
48991
+ audit: "performance-baseline-audit",
48992
+ triage: "performance-quick-triage",
48993
+ memory: "performance-memory-hunt",
48994
+ io: "performance-io-concurrency",
48995
+ cpu: "performance-cpu-hot-path",
48996
+ guard: "performance-regression-guard",
48997
+ contract: "performance-contract"
48998
+ };
48999
+ PERF_MUTATING_MODES = /* @__PURE__ */ new Set([
49000
+ "ratchet",
49001
+ "cpu",
49002
+ "guard"
49003
+ ]);
49004
+ PERF_RUN_PREFIX = "<!-- wrongstack-perf-run";
49005
+ PERF_RUN_PATTERN = /^<!-- wrongstack-perf-run scope="([^"]*)" mode="([a-z]+)" metric="([a-z0-9-]*)" -->\n/;
49006
+ }
49007
+ });
49008
+
48803
49009
  // src/hooks/ws-handlers/session-replay-handlers.ts
48804
49010
  import { projectSessionTimeline } from "@wrongstack/core/types/session-timeline";
48805
49011
  function replayTimestamp(ts) {
@@ -48850,12 +49056,14 @@ function hydrateReplayMessages(replay, markers = [], toolMeta = []) {
48850
49056
  switch (item.kind) {
48851
49057
  case "user": {
48852
49058
  const bugHunt = parseBugHuntMessage(item.text);
49059
+ const perfRun = parsePerfRunMessage(item.text);
48853
49060
  messages.push({
48854
49061
  id,
48855
49062
  role: "user",
48856
49063
  content: item.text,
48857
49064
  timestamp: timestamp2,
48858
49065
  ...bugHunt ? { bugHunt } : {},
49066
+ ...perfRun ? { perfRun } : {},
48859
49067
  ...item.images ? { attachments: replayAttachments(item.images, id) } : {}
48860
49068
  });
48861
49069
  break;
@@ -49131,6 +49339,7 @@ var init_session_replay_handlers = __esm({
49131
49339
  init_view_navigation();
49132
49340
  init_ws_client();
49133
49341
  init_bug_hunt_message();
49342
+ init_perf_run_message();
49134
49343
  init_stores();
49135
49344
  init_session_tab_store();
49136
49345
  init_resume_progress_store();
@@ -51764,7 +51973,7 @@ var init_useProviderModels = __esm({
51764
51973
  });
51765
51974
 
51766
51975
  // src/components/MessageBubble/CopyButton.tsx
51767
- import { Copy as Copy5, Check as Check15 } from "lucide-react";
51976
+ import { Copy as Copy5, Check as Check16 } from "lucide-react";
51768
51977
  import { useState as useState54 } from "react";
51769
51978
  import { Fragment as Fragment24, jsx as jsx85, jsxs as jsxs80 } from "react/jsx-runtime";
51770
51979
  function CopyButton({
@@ -51795,7 +52004,7 @@ function CopyButton({
51795
52004
  ),
51796
52005
  title: labelText,
51797
52006
  children: copied ? /* @__PURE__ */ jsxs80(Fragment24, { children: [
51798
- /* @__PURE__ */ jsx85(Check15, { className: "h-3 w-3 text-success" }),
52007
+ /* @__PURE__ */ jsx85(Check16, { className: "h-3 w-3 text-success" }),
51799
52008
  /* @__PURE__ */ jsx85("span", { children: t("common:action.copied") })
51800
52009
  ] }) : /* @__PURE__ */ jsxs80(Fragment24, { children: [
51801
52010
  /* @__PURE__ */ jsx85(Copy5, { className: "h-3 w-3" }),
@@ -52383,7 +52592,7 @@ var init_fallback_ref = __esm({
52383
52592
  });
52384
52593
 
52385
52594
  // src/components/ModelPicker.tsx
52386
- import { Check as Check17, ChevronDown as ChevronDown18, Cpu as Cpu10, RotateCcw as RotateCcw8, Star as Star4, X as X17 } from "lucide-react";
52595
+ import { Check as Check18, ChevronDown as ChevronDown19, Cpu as Cpu10, RotateCcw as RotateCcw8, Star as Star4, X as X18 } from "lucide-react";
52387
52596
  import { useEffect as useEffect73, useMemo as useMemo37, useRef as useRef37, useState as useState72 } from "react";
52388
52597
  import { jsx as jsx120, jsxs as jsxs113 } from "react/jsx-runtime";
52389
52598
  function ModelPicker({
@@ -52432,7 +52641,7 @@ function ModelPicker({
52432
52641
  children: value ? provider ? `${provider}/${value}` : value : placeholder ?? t("activity:model.runDefault")
52433
52642
  }
52434
52643
  ),
52435
- /* @__PURE__ */ jsx120(ChevronDown18, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" })
52644
+ /* @__PURE__ */ jsx120(ChevronDown19, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" })
52436
52645
  ]
52437
52646
  }
52438
52647
  ),
@@ -52453,7 +52662,7 @@ function ModelPicker({
52453
52662
  type: "button",
52454
52663
  onClick: () => setQuery(""),
52455
52664
  className: "text-muted-foreground hover:text-foreground",
52456
- children: /* @__PURE__ */ jsx120(X17, { className: "h-3 w-3" })
52665
+ children: /* @__PURE__ */ jsx120(X18, { className: "h-3 w-3" })
52457
52666
  }
52458
52667
  )
52459
52668
  ] }),
@@ -52489,7 +52698,7 @@ function ModelPicker({
52489
52698
  selected ? "bg-primary/8 text-primary" : "text-foreground"
52490
52699
  ),
52491
52700
  children: [
52492
- selected ? /* @__PURE__ */ jsx120(Check17, { className: "mt-0.5 h-3 w-3 shrink-0 text-primary" }) : /* @__PURE__ */ jsx120("span", { className: "w-3 shrink-0" }),
52701
+ selected ? /* @__PURE__ */ jsx120(Check18, { className: "mt-0.5 h-3 w-3 shrink-0 text-primary" }) : /* @__PURE__ */ jsx120("span", { className: "w-3 shrink-0" }),
52493
52702
  /* @__PURE__ */ jsxs113("span", { className: "min-w-0 flex-1", children: [
52494
52703
  /* @__PURE__ */ jsxs113("span", { className: "flex items-center gap-1", children: [
52495
52704
  /* @__PURE__ */ jsx120("span", { className: "break-words", children: c.label }),
@@ -52517,7 +52726,7 @@ var init_ModelPicker = __esm({
52517
52726
  });
52518
52727
 
52519
52728
  // src/components/FallbackEditor.tsx
52520
- import { AlertTriangle as AlertTriangle15, ArrowDown as ArrowDown3, ArrowUp as ArrowUp3, Plus as Plus6, X as X18 } from "lucide-react";
52729
+ import { AlertTriangle as AlertTriangle15, ArrowDown as ArrowDown3, ArrowUp as ArrowUp3, Plus as Plus6, X as X19 } from "lucide-react";
52521
52730
  import { jsx as jsx121, jsxs as jsxs114 } from "react/jsx-runtime";
52522
52731
  function FallbackEditor({
52523
52732
  value,
@@ -52598,7 +52807,7 @@ function FallbackEditor({
52598
52807
  onClick: () => remove(i),
52599
52808
  className: "text-muted-foreground hover:text-destructive",
52600
52809
  title: t("common:action.remove"),
52601
- children: /* @__PURE__ */ jsx121(X18, { className: "h-3 w-3" })
52810
+ children: /* @__PURE__ */ jsx121(X19, { className: "h-3 w-3" })
52602
52811
  }
52603
52812
  )
52604
52813
  ]
@@ -52688,7 +52897,7 @@ var init_useFieldKeyboardNav = __esm({
52688
52897
  });
52689
52898
 
52690
52899
  // src/components/SetupScreen/ModelEditor.tsx
52691
- import { Check as Check19, Loader2 as Loader218, Plus as Plus9, Search as Search10, X as X20 } from "lucide-react";
52900
+ import { Check as Check20, Loader2 as Loader218, Plus as Plus9, Search as Search10, X as X21 } from "lucide-react";
52692
52901
  import { useCallback as useCallback34, useEffect as useEffect76, useRef as useRef40, useState as useState76 } from "react";
52693
52902
  import { jsx as jsx130, jsxs as jsxs122 } from "react/jsx-runtime";
52694
52903
  function ModelEditor({
@@ -52792,7 +53001,7 @@ maxOutput: ${model.maxOutput}` : ""}` : void 0,
52792
53001
  type: "button",
52793
53002
  onClick: () => removeModel(model.id),
52794
53003
  className: "opacity-0 group-hover:opacity-100 transition-opacity text-muted-foreground hover:text-destructive",
52795
- children: /* @__PURE__ */ jsx130(X20, { className: "h-3 w-3" })
53004
+ children: /* @__PURE__ */ jsx130(X21, { className: "h-3 w-3" })
52796
53005
  }
52797
53006
  )
52798
53007
  ]
@@ -52824,7 +53033,7 @@ maxOutput: ${model.maxOutput}` : ""}` : void 0,
52824
53033
  "hover:bg-accent/10 border border-transparent hover:border-accent/30"
52825
53034
  ),
52826
53035
  children: [
52827
- /* @__PURE__ */ jsx130(Check19, { className: "h-3.5 w-3.5 mt-0.5 shrink-0 text-muted-foreground" }),
53036
+ /* @__PURE__ */ jsx130(Check20, { className: "h-3.5 w-3.5 mt-0.5 shrink-0 text-muted-foreground" }),
52828
53037
  /* @__PURE__ */ jsxs122("div", { className: "min-w-0 flex-1", children: [
52829
53038
  /* @__PURE__ */ jsx130("span", { className: "font-medium block truncate", children: match.name }),
52830
53039
  /* @__PURE__ */ jsxs122("span", { className: "text-muted-foreground block", children: [
@@ -52869,7 +53078,7 @@ maxOutput: ${model.maxOutput}` : ""}` : void 0,
52869
53078
  }
52870
53079
  ),
52871
53080
  /* @__PURE__ */ jsxs122(Button, { type: "button", size: "sm", onClick: confirmCustom, disabled: !customId.trim(), children: [
52872
- /* @__PURE__ */ jsx130(Check19, { className: "h-3.5 w-3.5 mr-1" }),
53081
+ /* @__PURE__ */ jsx130(Check20, { className: "h-3.5 w-3.5 mr-1" }),
52873
53082
  t("setup:screen.custom.add")
52874
53083
  ] })
52875
53084
  ] }),
@@ -54091,7 +54300,7 @@ var init_roster_ws = __esm({
54091
54300
  });
54092
54301
 
54093
54302
  // src/components/AgentRosterCatalogTab.tsx
54094
- import { Activity as Activity11, Bot as Bot17, ChevronDown as ChevronDown22, Database as Database4, FileText as FileText12, Search as Search14, Settings as Settings3, X as X27 } from "lucide-react";
54303
+ import { Activity as Activity11, Bot as Bot17, ChevronDown as ChevronDown23, Database as Database4, FileText as FileText12, Search as Search14, Settings as Settings3, X as X28 } from "lucide-react";
54095
54304
  import { useCallback as useCallback52, useMemo as useMemo47, useState as useState98 } from "react";
54096
54305
  import { jsx as jsx159, jsxs as jsxs150 } from "react/jsx-runtime";
54097
54306
  function RosterCatalogTab({
@@ -54146,7 +54355,7 @@ function RosterCatalogTab({
54146
54355
  type: "button",
54147
54356
  onClick: () => setSearchQuery(""),
54148
54357
  className: "text-muted-foreground hover:text-foreground",
54149
- children: /* @__PURE__ */ jsx159(X27, { className: "h-3 w-3" })
54358
+ children: /* @__PURE__ */ jsx159(X28, { className: "h-3 w-3" })
54150
54359
  }
54151
54360
  )
54152
54361
  ] }) }),
@@ -54180,7 +54389,7 @@ function RosterCatalogTab({
54180
54389
  ] })
54181
54390
  ] }),
54182
54391
  /* @__PURE__ */ jsx159(
54183
- ChevronDown22,
54392
+ ChevronDown23,
54184
54393
  {
54185
54394
  className: cn(
54186
54395
  "h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform",
@@ -56378,7 +56587,7 @@ import {
56378
56587
  Tag as Tag2,
56379
56588
  Trash2 as Trash216,
56380
56589
  Upload,
56381
- X as X28
56590
+ X as X29
56382
56591
  } from "lucide-react";
56383
56592
  import { useCallback as useCallback55, useEffect as useEffect94, useMemo as useMemo50, useRef as useRef51, useState as useState101 } from "react";
56384
56593
  import { Fragment as Fragment44, jsx as jsx167, jsxs as jsxs157 } from "react/jsx-runtime";
@@ -56686,7 +56895,7 @@ function AudienceMemoryPanel() {
56686
56895
  className: "absolute right-2 top-1/2 -translate-y-1/2 rounded-sm p-0.5 text-muted-foreground hover:text-foreground",
56687
56896
  onClick: () => setQuery(""),
56688
56897
  "aria-label": t("activity:audienceMem.clearAudienceMemorySearch"),
56689
- children: /* @__PURE__ */ jsx167(X28, { className: "size-3" })
56898
+ children: /* @__PURE__ */ jsx167(X29, { className: "size-3" })
56690
56899
  }
56691
56900
  )
56692
56901
  ] }),
@@ -56746,7 +56955,7 @@ function AudienceMemoryPanel() {
56746
56955
  onClick: () => setFeedback(null),
56747
56956
  className: "shrink-0 rounded-sm opacity-70 hover:opacity-100",
56748
56957
  "aria-label": t("activity:audienceMem.dismissMessage"),
56749
- children: /* @__PURE__ */ jsx167(X28, { className: "size-3" })
56958
+ children: /* @__PURE__ */ jsx167(X29, { className: "size-3" })
56750
56959
  }
56751
56960
  )
56752
56961
  ]
@@ -57521,7 +57730,7 @@ import {
57521
57730
  MessageSquareText as MessageSquareText2,
57522
57731
  Search as Search16,
57523
57732
  TerminalSquare,
57524
- X as X29
57733
+ X as X30
57525
57734
  } from "lucide-react";
57526
57735
  import { jsx as jsx168, jsxs as jsxs158 } from "react/jsx-runtime";
57527
57736
  function shortPath(value, max = 46) {
@@ -57566,7 +57775,7 @@ function ToolActionDetail({
57566
57775
  /* @__PURE__ */ jsx168("span", { children: t("activity:agentOffice.toolCall") }),
57567
57776
  /* @__PURE__ */ jsx168("h2", { children: call.toolName })
57568
57777
  ] }),
57569
- /* @__PURE__ */ jsx168("button", { type: "button", onClick: onClose, "aria-label": t("activity:agentOffice.closeDetails"), children: /* @__PURE__ */ jsx168(X29, {}) })
57778
+ /* @__PURE__ */ jsx168("button", { type: "button", onClick: onClose, "aria-label": t("activity:agentOffice.closeDetails"), children: /* @__PURE__ */ jsx168(X30, {}) })
57570
57779
  ] }),
57571
57780
  /* @__PURE__ */ jsxs158("div", { className: "agent-office__detail-status", children: [
57572
57781
  /* @__PURE__ */ jsx168(
@@ -57663,7 +57872,7 @@ function MailActionDetail({
57663
57872
  /* @__PURE__ */ jsx168("span", { children: mail.direction === "incoming" ? "INCOMING MAIL" : "OUTGOING MAIL" }),
57664
57873
  /* @__PURE__ */ jsx168("h2", { children: mail.subject })
57665
57874
  ] }),
57666
- /* @__PURE__ */ jsx168("button", { type: "button", onClick: onClose, "aria-label": t("activity:agentOffice.closeMailDetails"), children: /* @__PURE__ */ jsx168(X29, {}) })
57875
+ /* @__PURE__ */ jsx168("button", { type: "button", onClick: onClose, "aria-label": t("activity:agentOffice.closeMailDetails"), children: /* @__PURE__ */ jsx168(X30, {}) })
57667
57876
  ] }),
57668
57877
  /* @__PURE__ */ jsxs158("div", { className: "agent-office__detail-status", children: [
57669
57878
  /* @__PURE__ */ jsx168("span", { className: cn("agent-office__status-dot", mail.unread && "is-active") }),
@@ -57710,7 +57919,7 @@ function TaskActionDetail({
57710
57919
  /* @__PURE__ */ jsx168("span", { children: t("activity:agentOffice.currentTask") }),
57711
57920
  /* @__PURE__ */ jsx168("h2", { children: selected.agentName })
57712
57921
  ] }),
57713
- /* @__PURE__ */ jsx168("button", { type: "button", onClick: onClose, "aria-label": t("activity:agentOffice.closeTaskDetails"), children: /* @__PURE__ */ jsx168(X29, {}) })
57922
+ /* @__PURE__ */ jsx168("button", { type: "button", onClick: onClose, "aria-label": t("activity:agentOffice.closeTaskDetails"), children: /* @__PURE__ */ jsx168(X30, {}) })
57714
57923
  ] }),
57715
57924
  /* @__PURE__ */ jsxs158("section", { className: "agent-office__detail-section", children: [
57716
57925
  /* @__PURE__ */ jsx168("h3", { children: t("activity:agentOffice.task") }),
@@ -57732,7 +57941,7 @@ function OfficeBriefingDetail({
57732
57941
  /* @__PURE__ */ jsx168("span", { children: selected.instructionActive ? t("activity:agentOffice.activeInstruction") : t("activity:agentOffice.officeBriefing") }),
57733
57942
  /* @__PURE__ */ jsx168("h2", { children: selected.officeLabel })
57734
57943
  ] }),
57735
- /* @__PURE__ */ jsx168("button", { type: "button", onClick: onClose, "aria-label": t("activity:agentOffice.closeOfficeBriefing"), children: /* @__PURE__ */ jsx168(X29, {}) })
57944
+ /* @__PURE__ */ jsx168("button", { type: "button", onClick: onClose, "aria-label": t("activity:agentOffice.closeOfficeBriefing"), children: /* @__PURE__ */ jsx168(X30, {}) })
57736
57945
  ] }),
57737
57946
  /* @__PURE__ */ jsxs158("div", { className: "agent-office__detail-status", children: [
57738
57947
  /* @__PURE__ */ jsx168(
@@ -58195,7 +58404,7 @@ var init_AgentOfficeView = __esm({
58195
58404
  // src/components/AgentOfficeView/model.ts
58196
58405
  import {
58197
58406
  Building2 as Building22,
58198
- Check as Check24,
58407
+ Check as Check25,
58199
58408
  Code2 as Code25,
58200
58409
  FilePenLine as FilePenLine2,
58201
58410
  FolderSearch as FolderSearch2,
@@ -58416,7 +58625,7 @@ var init_model = __esm({
58416
58625
  leader: Building22,
58417
58626
  builder: Code25,
58418
58627
  researcher: Search17,
58419
- reviewer: Check24,
58628
+ reviewer: Check25,
58420
58629
  planner: ListTodo5,
58421
58630
  operator: TerminalSquare2
58422
58631
  };
@@ -58428,7 +58637,7 @@ import {
58428
58637
  Activity as Activity13,
58429
58638
  Bot as Bot19,
58430
58639
  Building2 as Building23,
58431
- Check as Check25,
58640
+ Check as Check26,
58432
58641
  CheckCircle2 as CheckCircle222,
58433
58642
  Clock3 as Clock34,
58434
58643
  Code2 as Code26,
@@ -58445,7 +58654,7 @@ import {
58445
58654
  Send as Send5,
58446
58655
  TerminalSquare as TerminalSquare3,
58447
58656
  Wifi as Wifi3,
58448
- X as X30,
58657
+ X as X31,
58449
58658
  Zap as Zap24
58450
58659
  } from "lucide-react";
58451
58660
  import { useMemo as useMemo52, useState as useState102 } from "react";
@@ -58523,7 +58732,7 @@ function ToolParcel({
58523
58732
  !compact && call.target && /* @__PURE__ */ jsx169("span", { className: "agent-office__parcel-target", children: shortPath2(call.target) }),
58524
58733
  /* @__PURE__ */ jsx169("span", { className: "agent-office__parcel-summary", children: call.summary })
58525
58734
  ] }),
58526
- /* @__PURE__ */ jsx169("span", { className: "agent-office__parcel-state", "aria-hidden": "true", children: active ? /* @__PURE__ */ jsx169("span", { className: "agent-office__pulse-dot" }) : call.status === "failed" ? /* @__PURE__ */ jsx169(X30, {}) : /* @__PURE__ */ jsx169(Check25, {}) })
58735
+ /* @__PURE__ */ jsx169("span", { className: "agent-office__parcel-state", "aria-hidden": "true", children: active ? /* @__PURE__ */ jsx169("span", { className: "agent-office__pulse-dot" }) : call.status === "failed" ? /* @__PURE__ */ jsx169(X31, {}) : /* @__PURE__ */ jsx169(Check26, {}) })
58527
58736
  ]
58528
58737
  }
58529
58738
  );
@@ -58842,7 +59051,7 @@ function AgentLane({
58842
59051
  className: "agent-office__agent-verified",
58843
59052
  title: agent.presenceSource === "registry" ? "Verified by live session registry" : "Verified by local fleet state",
58844
59053
  children: [
58845
- /* @__PURE__ */ jsx169(Check25, { "aria-hidden": "true" }),
59054
+ /* @__PURE__ */ jsx169(Check26, { "aria-hidden": "true" }),
58846
59055
  agent.presenceSource === "registry" ? "LIVE" : "LOCAL"
58847
59056
  ]
58848
59057
  }
@@ -63134,7 +63343,7 @@ var init_monaco_theme = __esm({
63134
63343
 
63135
63344
  // src/components/MonacoDiffView.tsx
63136
63345
  import { DiffEditor, loader } from "@monaco-editor/react";
63137
- import { Check as Check26, Loader2 as Loader230, Save } from "lucide-react";
63346
+ import { Check as Check27, Loader2 as Loader230, Save } from "lucide-react";
63138
63347
  import * as monaco2 from "monaco-editor";
63139
63348
  import { useCallback as useCallback60, useEffect as useEffect99, useRef as useRef55, useState as useState107 } from "react";
63140
63349
  import { jsx as jsx183, jsxs as jsxs173 } from "react/jsx-runtime";
@@ -63198,7 +63407,7 @@ function MonacoDiffView({
63198
63407
  className: "inline-flex items-center gap-1.5 h-7 px-2.5 rounded-md border border-border text-xs font-medium disabled:opacity-40 enabled:hover:bg-muted transition-colors",
63199
63408
  title: t("activity:monacoDiff.applyTitle"),
63200
63409
  children: [
63201
- saving ? /* @__PURE__ */ jsx183(Loader230, { className: "h-3.5 w-3.5 animate-spin" }) : savedAt && !dirty ? /* @__PURE__ */ jsx183(Check26, { className: "h-3.5 w-3.5 text-success" }) : /* @__PURE__ */ jsx183(Save, { className: "h-3.5 w-3.5" }),
63410
+ saving ? /* @__PURE__ */ jsx183(Loader230, { className: "h-3.5 w-3.5 animate-spin" }) : savedAt && !dirty ? /* @__PURE__ */ jsx183(Check27, { className: "h-3.5 w-3.5 text-success" }) : /* @__PURE__ */ jsx183(Save, { className: "h-3.5 w-3.5" }),
63202
63411
  saving ? t("activity:monacoDiff.applying") : savedAt && !dirty ? t("activity:monacoDiff.applied") : t("activity:monacoDiff.apply")
63203
63412
  ]
63204
63413
  }
@@ -63547,7 +63756,7 @@ import {
63547
63756
  ShieldCheck as ShieldCheck7,
63548
63757
  TerminalSquare as TerminalSquare4,
63549
63758
  TriangleAlert as TriangleAlert5,
63550
- X as X31
63759
+ X as X32
63551
63760
  } from "lucide-react";
63552
63761
  import { useCallback as useCallback61, useEffect as useEffect101, useMemo as useMemo56, useRef as useRef56, useState as useState109 } from "react";
63553
63762
  import { jsx as jsx186, jsxs as jsxs176 } from "react/jsx-runtime";
@@ -64136,7 +64345,7 @@ function ChronicleDashboard() {
64136
64345
  type: "button",
64137
64346
  onClick: () => setSelected(null),
64138
64347
  className: "rounded p-1 hover:bg-muted",
64139
- children: /* @__PURE__ */ jsx186(X31, { className: "h-4 w-4" })
64348
+ children: /* @__PURE__ */ jsx186(X32, { className: "h-4 w-4" })
64140
64349
  }
64141
64350
  )
64142
64351
  ] }),
@@ -64674,7 +64883,7 @@ var init_useMemoryForFile = __esm({
64674
64883
  import { useCallback as useCallback63, useEffect as useEffect103, useState as useState111 } from "react";
64675
64884
  import {
64676
64885
  AlertTriangle as AlertTriangle21,
64677
- Check as Check27,
64886
+ Check as Check28,
64678
64887
  CircleX,
64679
64888
  Eye as Eye7,
64680
64889
  EyeOff as EyeOff2,
@@ -64684,7 +64893,7 @@ import {
64684
64893
  Pin as Pin3,
64685
64894
  RefreshCw as RefreshCw20,
64686
64895
  Sparkles as Sparkles15,
64687
- X as X32
64896
+ X as X33
64688
64897
  } from "lucide-react";
64689
64898
  import { Fragment as Fragment51, jsx as jsx187, jsxs as jsxs177 } from "react/jsx-runtime";
64690
64899
  function matchStrengthClass(strength) {
@@ -64826,7 +65035,7 @@ function MemoryCard({
64826
65035
  className: "h-7 gap-1 px-2 text-[11px]",
64827
65036
  title: t("activity:memoryManager.acceptSuggestionTitle"),
64828
65037
  children: [
64829
- /* @__PURE__ */ jsx187(Check27, { className: "size-3" }),
65038
+ /* @__PURE__ */ jsx187(Check28, { className: "size-3" }),
64830
65039
  " ",
64831
65040
  t("activity:memoryManager.actionAcceptDeletion")
64832
65041
  ]
@@ -64843,7 +65052,7 @@ function MemoryCard({
64843
65052
  className: "h-7 gap-1 px-2 text-[11px]",
64844
65053
  title: t("activity:memoryManager.rejectSuggestionTitle"),
64845
65054
  children: [
64846
- /* @__PURE__ */ jsx187(X32, { className: "size-3" }),
65055
+ /* @__PURE__ */ jsx187(X33, { className: "size-3" }),
64847
65056
  " ",
64848
65057
  t("activity:memoryManager.actionKeep")
64849
65058
  ]
@@ -65180,8 +65389,8 @@ import {
65180
65389
  Activity as Activity17,
65181
65390
  Bot as Bot28,
65182
65391
  BrainCircuit as BrainCircuit6,
65183
- Check as Check28,
65184
- ChevronDown as ChevronDown23,
65392
+ Check as Check29,
65393
+ ChevronDown as ChevronDown24,
65185
65394
  ChevronUp as ChevronUp4,
65186
65395
  CircleDot as CircleDot5,
65187
65396
  Copy as Copy8,
@@ -65516,7 +65725,7 @@ function FileActivityDrawer({ file }) {
65516
65725
  children: [
65517
65726
  /* @__PURE__ */ jsx188(FileClock, { className: "h-3.5 w-3.5 shrink-0 text-primary" }),
65518
65727
  /* @__PURE__ */ jsx188("span", { className: "truncate", children: t("activity:fileActivity.title") }),
65519
- expanded ? /* @__PURE__ */ jsx188(ChevronDown23, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx188(ChevronUp4, { className: "h-3 w-3" })
65728
+ expanded ? /* @__PURE__ */ jsx188(ChevronDown24, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx188(ChevronUp4, { className: "h-3 w-3" })
65520
65729
  ]
65521
65730
  }
65522
65731
  ),
@@ -66027,7 +66236,7 @@ function SkeletonTab({ file }) {
66027
66236
  disabled: !skeleton,
66028
66237
  className: "inline-flex items-center gap-1 rounded bg-secondary px-2 py-1 text-[10px] font-medium text-secondary-foreground hover:bg-secondary/80 disabled:opacity-50",
66029
66238
  children: [
66030
- copied ? /* @__PURE__ */ jsx188(Check28, { className: "h-3 w-3 text-success" }) : /* @__PURE__ */ jsx188(Copy8, { className: "h-3 w-3" }),
66239
+ copied ? /* @__PURE__ */ jsx188(Check29, { className: "h-3 w-3 text-success" }) : /* @__PURE__ */ jsx188(Copy8, { className: "h-3 w-3" }),
66031
66240
  /* @__PURE__ */ jsx188("span", { children: copied ? "Copied" : "Copy" })
66032
66241
  ]
66033
66242
  }
@@ -66062,7 +66271,7 @@ var CodeEditor_exports = {};
66062
66271
  __export(CodeEditor_exports, {
66063
66272
  CodeEditor: () => CodeEditor
66064
66273
  });
66065
- import { Circle as Circle8, FileText as FileText15, GitBranch as GitBranch7, Map as MapIcon, Send as Send9, WrapText, X as X33 } from "lucide-react";
66274
+ import { Circle as Circle8, FileText as FileText15, GitBranch as GitBranch7, Map as MapIcon, Send as Send9, WrapText, X as X34 } from "lucide-react";
66066
66275
  import { useCallback as useCallback65, useEffect as useEffect105, useMemo as useMemo58, useRef as useRef59, useState as useState113 } from "react";
66067
66276
  import Editor, { loader as loader2 } from "@monaco-editor/react";
66068
66277
  import * as monaco3 from "monaco-editor";
@@ -66134,7 +66343,7 @@ function EditorTabs() {
66134
66343
  f.dirty && /* @__PURE__ */ jsx189(Circle8, { className: "h-2 w-2 fill-current text-primary shrink-0" }),
66135
66344
  /* @__PURE__ */ jsx189("span", { className: "truncate", children: baseName }),
66136
66345
  /* @__PURE__ */ jsx189(
66137
- X33,
66346
+ X34,
66138
66347
  {
66139
66348
  className: cn(
66140
66349
  "h-3 w-3 shrink-0 rounded-sm hover:bg-muted-foreground/20 opacity-0 group-hover:opacity-100 transition-opacity",
@@ -66961,7 +67170,7 @@ var init_CodeMapActivityHelpers = __esm({
66961
67170
  });
66962
67171
 
66963
67172
  // src/components/CodeMapActivityDrawer.tsx
66964
- import { Activity as ActivityIcon2, X as X34 } from "lucide-react";
67173
+ import { Activity as ActivityIcon2, X as X35 } from "lucide-react";
66965
67174
  import { jsx as jsx190, jsxs as jsxs180 } from "react/jsx-runtime";
66966
67175
  function CodeMapActivityDrawer({
66967
67176
  historyFile,
@@ -66982,7 +67191,7 @@ function CodeMapActivityDrawer({
66982
67191
  onClick: onClose,
66983
67192
  className: "flex h-7 w-7 items-center justify-center border text-muted-foreground hover:bg-muted",
66984
67193
  "aria-label": t("activity:codeMap.closeActivity"),
66985
- children: /* @__PURE__ */ jsx190(X34, { className: "h-3.5 w-3.5" })
67194
+ children: /* @__PURE__ */ jsx190(X35, { className: "h-3.5 w-3.5" })
66986
67195
  }
66987
67196
  )
66988
67197
  ] }),
@@ -68035,7 +68244,7 @@ var init_CodeMapSelectedNodeSummary = __esm({
68035
68244
  });
68036
68245
 
68037
68246
  // src/components/CodeMapRelations.tsx
68038
- import { ChevronDown as ChevronDown24, ChevronRight as ChevronRight16, GitBranch as GitBranch9 } from "lucide-react";
68247
+ import { ChevronDown as ChevronDown25, ChevronRight as ChevronRight16, GitBranch as GitBranch9 } from "lucide-react";
68039
68248
  import { jsx as jsx198, jsxs as jsxs188 } from "react/jsx-runtime";
68040
68249
  function RelationSection(props) {
68041
68250
  const { t } = useTranslation();
@@ -68066,7 +68275,7 @@ function RelationSection(props) {
68066
68275
  className: "flex h-6 w-5 shrink-0 items-center justify-center text-muted-foreground",
68067
68276
  onClick: () => nested.length > 0 && onToggle(key),
68068
68277
  "aria-label": `${isExpanded ? "Collapse" : "Expand"} relation ${item.node.label}`,
68069
- children: nested.length > 0 ? isExpanded ? /* @__PURE__ */ jsx198(ChevronDown24, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx198(ChevronRight16, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx198("span", { className: "h-px w-2 bg-border" })
68278
+ children: nested.length > 0 ? isExpanded ? /* @__PURE__ */ jsx198(ChevronDown25, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx198(ChevronRight16, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx198("span", { className: "h-px w-2 bg-border" })
68070
68279
  }
68071
68280
  ),
68072
68281
  /* @__PURE__ */ jsxs188(
@@ -68122,7 +68331,7 @@ var init_CodeMapRelations = __esm({
68122
68331
  });
68123
68332
 
68124
68333
  // src/components/CodeMapRelationInspector.tsx
68125
- import { Radio as Radio6, X as X35 } from "lucide-react";
68334
+ import { Radio as Radio6, X as X36 } from "lucide-react";
68126
68335
  import { jsx as jsx199, jsxs as jsxs189 } from "react/jsx-runtime";
68127
68336
  function CodeMapRelationInspector({
68128
68337
  selectedNode,
@@ -68152,7 +68361,7 @@ function CodeMapRelationInspector({
68152
68361
  className: "text-muted-foreground hover:text-foreground",
68153
68362
  onClick: onClearSelection,
68154
68363
  "aria-label": t("activity:codeMap.clearSelection"),
68155
- children: /* @__PURE__ */ jsx199(X35, { className: "h-3.5 w-3.5" })
68364
+ children: /* @__PURE__ */ jsx199(X36, { className: "h-3.5 w-3.5" })
68156
68365
  }
68157
68366
  )
68158
68367
  ] }),
@@ -68282,7 +68491,7 @@ var init_CodeMapSearchResults = __esm({
68282
68491
  // src/components/CodeMapDirectoryTree.tsx
68283
68492
  import {
68284
68493
  Box as Box2,
68285
- ChevronDown as ChevronDown25,
68494
+ ChevronDown as ChevronDown26,
68286
68495
  ChevronRight as ChevronRight17,
68287
68496
  ExternalLink as ExternalLink6,
68288
68497
  FileCode as FileCode6,
@@ -68349,7 +68558,7 @@ var init_CodeMapDirectoryTree = __esm({
68349
68558
  style: { paddingLeft: 8 + depth * 12 },
68350
68559
  onClick: () => onToggleDirectory(key),
68351
68560
  children: [
68352
- expanded ? /* @__PURE__ */ jsx201(ChevronDown25, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx201(ChevronRight17, { className: "h-3 w-3" }),
68561
+ expanded ? /* @__PURE__ */ jsx201(ChevronDown26, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx201(ChevronRight17, { className: "h-3 w-3" }),
68353
68562
  expanded ? /* @__PURE__ */ jsx201(FolderOpen6, { className: "h-3.5 w-3.5 text-warning" }) : /* @__PURE__ */ jsx201(Folder3, { className: "h-3.5 w-3.5 text-warning" }),
68354
68563
  /* @__PURE__ */ jsx201("span", { className: "truncate", children: child.name })
68355
68564
  ]
@@ -68387,7 +68596,7 @@ var init_CodeMapDirectoryTree = __esm({
68387
68596
  className: "flex h-6 w-4 shrink-0 items-center justify-center text-muted-foreground",
68388
68597
  onClick: () => onToggleFile(file),
68389
68598
  "aria-label": `${expanded ? "Collapse" : "Expand"} ${file.label}`,
68390
- children: loadingBranches.has(branchKey) ? /* @__PURE__ */ jsx201(Loader235, { className: "h-3 w-3 animate-spin" }) : expanded ? /* @__PURE__ */ jsx201(ChevronDown25, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx201(ChevronRight17, { className: "h-3 w-3" })
68599
+ children: loadingBranches.has(branchKey) ? /* @__PURE__ */ jsx201(Loader235, { className: "h-3 w-3 animate-spin" }) : expanded ? /* @__PURE__ */ jsx201(ChevronDown26, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx201(ChevronRight17, { className: "h-3 w-3" })
68391
68600
  }
68392
68601
  ),
68393
68602
  /* @__PURE__ */ jsxs191(
@@ -68483,7 +68692,7 @@ var init_CodeMapDirectoryTree = __esm({
68483
68692
  });
68484
68693
 
68485
68694
  // src/components/CodeMapTreeSidebar.tsx
68486
- import { ChevronDown as ChevronDown26, ChevronRight as ChevronRight18, ExternalLink as ExternalLink7, Loader2 as Loader236, Package as Package4, Search as Search20, X as X36 } from "lucide-react";
68695
+ import { ChevronDown as ChevronDown27, ChevronRight as ChevronRight18, ExternalLink as ExternalLink7, Loader2 as Loader236, Package as Package4, Search as Search20, X as X37 } from "lucide-react";
68487
68696
  import { jsx as jsx202, jsxs as jsxs192 } from "react/jsx-runtime";
68488
68697
  function CodeMapTreeSidebar({
68489
68698
  rootGraph,
@@ -68545,7 +68754,7 @@ function CodeMapTreeSidebar({
68545
68754
  onSearchChange("");
68546
68755
  },
68547
68756
  "aria-label": t("activity:codeMapTree.clearSearch"),
68548
- children: /* @__PURE__ */ jsx202(X36, { className: "h-3 w-3 text-muted-foreground" })
68757
+ children: /* @__PURE__ */ jsx202(X37, { className: "h-3 w-3 text-muted-foreground" })
68549
68758
  }
68550
68759
  )
68551
68760
  ] })
@@ -68608,7 +68817,7 @@ function CodeMapTreeSidebar({
68608
68817
  className: "flex h-6 w-5 items-center justify-center text-muted-foreground",
68609
68818
  onClick: () => togglePackage(packageNode),
68610
68819
  "aria-label": `${expanded ? "Collapse" : "Expand"} ${packageName}`,
68611
- children: loadingBranches.has(branchKey) ? /* @__PURE__ */ jsx202(Loader236, { className: "h-3 w-3 animate-spin" }) : expanded ? /* @__PURE__ */ jsx202(ChevronDown26, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx202(ChevronRight18, { className: "h-3 w-3" })
68820
+ children: loadingBranches.has(branchKey) ? /* @__PURE__ */ jsx202(Loader236, { className: "h-3 w-3 animate-spin" }) : expanded ? /* @__PURE__ */ jsx202(ChevronDown27, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx202(ChevronRight18, { className: "h-3 w-3" })
68612
68821
  }
68613
68822
  ),
68614
68823
  /* @__PURE__ */ jsxs192(
@@ -69524,7 +69733,7 @@ import {
69524
69733
  Clock as Clock17,
69525
69734
  Eye as Eye8,
69526
69735
  FileWarning,
69527
- Gauge as Gauge4,
69736
+ Gauge as Gauge6,
69528
69737
  RefreshCw as RefreshCw22,
69529
69738
  Server as Server5,
69530
69739
  TrendingUp as TrendingUp3
@@ -69704,7 +69913,7 @@ function DebugDashboard() {
69704
69913
  title: t("activity:debug.filesProcessed"),
69705
69914
  value: data.fileWatcher?.filesProcessed ?? 0,
69706
69915
  subtitle: t("activity:debug.afterHash"),
69707
- icon: Gauge4,
69916
+ icon: Gauge6,
69708
69917
  color: "text-success"
69709
69918
  }
69710
69919
  )
@@ -69754,7 +69963,7 @@ function DebugDashboard() {
69754
69963
  ] }),
69755
69964
  /* @__PURE__ */ jsxs194("section", { children: [
69756
69965
  /* @__PURE__ */ jsxs194("h2", { className: "mb-3 flex items-center gap-2 text-sm font-semibold text-muted-foreground", children: [
69757
- /* @__PURE__ */ jsx204(Gauge4, { className: "h-4 w-4 text-primary" }),
69966
+ /* @__PURE__ */ jsx204(Gauge6, { className: "h-4 w-4 text-primary" }),
69758
69967
  t("activity:debugDash.webuiServerProcess")
69759
69968
  ] }),
69760
69969
  /* @__PURE__ */ jsxs194("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4", children: [
@@ -69794,7 +70003,7 @@ function DebugDashboard() {
69794
70003
  title: t("activity:debugDash.v8HeapLimit"),
69795
70004
  value: formatBytes2(data.system?.heapLimit ?? 0),
69796
70005
  subtitle: t("activity:debugDash.oldSpaceCeiling"),
69797
- icon: Gauge4,
70006
+ icon: Gauge6,
69798
70007
  color: "text-warning"
69799
70008
  }
69800
70009
  ),
@@ -69983,7 +70192,7 @@ function DebugDashboard() {
69983
70192
  title: t("activity:debugDash.indexWorkload"),
69984
70193
  value: `${data.system?.codebaseIndexServer?.health?.server?.activeRequests ?? 0} requests`,
69985
70194
  subtitle: `${data.system?.codebaseIndexServer?.health?.server?.activeWrites ?? 0} writes \xB7 ${data.system?.codebaseIndexServer?.health?.server?.queuedWrites ?? 0} queued`,
69986
- icon: Gauge4,
70195
+ icon: Gauge6,
69987
70196
  color: "text-primary"
69988
70197
  }
69989
70198
  ),
@@ -70111,7 +70320,7 @@ var DesignGalleryView_exports = {};
70111
70320
  __export(DesignGalleryView_exports, {
70112
70321
  DesignGalleryView: () => DesignGalleryView
70113
70322
  });
70114
- import { Check as Check29, Download as Download7, Palette as Palette5, Search as Search21, ShieldCheck as ShieldCheck9, X as X37 } from "lucide-react";
70323
+ import { Check as Check30, Download as Download7, Palette as Palette5, Search as Search21, ShieldCheck as ShieldCheck9, X as X38 } from "lucide-react";
70115
70324
  import { useCallback as useCallback68, useEffect as useEffect108, useMemo as useMemo60, useState as useState116 } from "react";
70116
70325
  import { jsx as jsx205, jsxs as jsxs195 } from "react/jsx-runtime";
70117
70326
  function applyOv(base, overrides, theme) {
@@ -70496,7 +70705,7 @@ function DesignGalleryView({ className }) {
70496
70705
  onClick: () => showPanel("chat"),
70497
70706
  className: "inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground",
70498
70707
  title: t("common:action.close"),
70499
- children: /* @__PURE__ */ jsx205(X37, { className: "h-4 w-4" })
70708
+ children: /* @__PURE__ */ jsx205(X38, { className: "h-4 w-4" })
70500
70709
  }
70501
70710
  )
70502
70711
  ] })
@@ -70542,7 +70751,7 @@ function DesignGalleryView({ className }) {
70542
70751
  /* @__PURE__ */ jsx205("h3", { className: "text-sm font-semibold truncate", children: kit.name }),
70543
70752
  /* @__PURE__ */ jsx205("code", { className: "text-[10px] text-muted-foreground", children: kit.id }),
70544
70753
  isActive && /* @__PURE__ */ jsxs195("span", { className: "inline-flex items-center gap-0.5 text-[9px] font-semibold uppercase text-primary ml-auto", children: [
70545
- /* @__PURE__ */ jsx205(Check29, { className: "w-3 h-3" }),
70754
+ /* @__PURE__ */ jsx205(Check30, { className: "w-3 h-3" }),
70546
70755
  " ",
70547
70756
  t("activity:design.active")
70548
70757
  ] })
@@ -71218,7 +71427,7 @@ __export(GoalView_exports, {
71218
71427
  GoalView: () => GoalView
71219
71428
  });
71220
71429
  import { useCallback as useCallback70, useEffect as useEffect109, useRef as useRef61, useState as useState119 } from "react";
71221
- import { Layers as Layers11, Loader2 as Loader237, Pause as Pause7, Play as Play5, Plus as Plus17, Rocket as Rocket4, Square as Square7, Undo2 as Undo23, X as X38, Zap as Zap27 } from "lucide-react";
71430
+ import { Layers as Layers11, Loader2 as Loader237, Pause as Pause7, Play as Play5, Plus as Plus17, Rocket as Rocket4, Square as Square7, Undo2 as Undo23, X as X39, Zap as Zap27 } from "lucide-react";
71222
71431
  import { Fragment as Fragment58, jsx as jsx208, jsxs as jsxs198 } from "react/jsx-runtime";
71223
71432
  function GoalView({ onClose }) {
71224
71433
  const { client: client2 } = useWebSocket();
@@ -71457,7 +71666,7 @@ function GoalView({ onClose }) {
71457
71666
  }
71458
71667
  )
71459
71668
  ] }),
71460
- /* @__PURE__ */ jsx208(Button, { variant: "ghost", size: "icon", onClick: onClose, children: /* @__PURE__ */ jsx208(X38, { className: "h-4 w-4" }) })
71669
+ /* @__PURE__ */ jsx208(Button, { variant: "ghost", size: "icon", onClick: onClose, children: /* @__PURE__ */ jsx208(X39, { className: "h-4 w-4" }) })
71461
71670
  ] })
71462
71671
  ] }),
71463
71672
  hasPhases && goalText && /* @__PURE__ */ jsxs198("div", { className: "shrink-0 border-b border-border/60 bg-muted/20 px-4 py-2.5", children: [
@@ -72057,7 +72266,7 @@ var init_useKanbanMeta = __esm({
72057
72266
  });
72058
72267
 
72059
72268
  // src/components/ChipMultiSelect.tsx
72060
- import { Check as Check30, ChevronDown as ChevronDown27, Plus as Plus18, X as X39 } from "lucide-react";
72269
+ import { Check as Check31, ChevronDown as ChevronDown28, Plus as Plus18, X as X40 } from "lucide-react";
72061
72270
  import { useEffect as useEffect112, useMemo as useMemo62, useRef as useRef62, useState as useState121 } from "react";
72062
72271
  import { jsx as jsx209, jsxs as jsxs199 } from "react/jsx-runtime";
72063
72272
  function ChipMultiSelect({
@@ -72105,7 +72314,7 @@ function ChipMultiSelect({
72105
72314
  onClick: () => toggle(value),
72106
72315
  className: "text-muted-foreground hover:text-destructive",
72107
72316
  "aria-label": `Remove ${labelFor(value)}`,
72108
- children: /* @__PURE__ */ jsx209(X39, { size: 11 })
72317
+ children: /* @__PURE__ */ jsx209(X40, { size: 11 })
72109
72318
  }
72110
72319
  )
72111
72320
  ]
@@ -72121,7 +72330,7 @@ function ChipMultiSelect({
72121
72330
  children: [
72122
72331
  /* @__PURE__ */ jsx209(Plus18, { className: "h-3.5 w-3.5 shrink-0 text-primary" }),
72123
72332
  /* @__PURE__ */ jsx209("span", { className: "min-w-0 flex-1 truncate text-muted-foreground", children: placeholder ?? "Add\u2026" }),
72124
- /* @__PURE__ */ jsx209(ChevronDown27, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" })
72333
+ /* @__PURE__ */ jsx209(ChevronDown28, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" })
72125
72334
  ]
72126
72335
  }
72127
72336
  ),
@@ -72142,7 +72351,7 @@ function ChipMultiSelect({
72142
72351
  type: "button",
72143
72352
  onClick: () => setQuery(""),
72144
72353
  className: "text-muted-foreground hover:text-foreground",
72145
- children: /* @__PURE__ */ jsx209(X39, { className: "h-3 w-3" })
72354
+ children: /* @__PURE__ */ jsx209(X40, { className: "h-3 w-3" })
72146
72355
  }
72147
72356
  )
72148
72357
  ] }),
@@ -72159,7 +72368,7 @@ function ChipMultiSelect({
72159
72368
  isSelected ? "bg-primary/8 text-primary" : "text-foreground"
72160
72369
  ),
72161
72370
  children: [
72162
- isSelected ? /* @__PURE__ */ jsx209(Check30, { className: "mt-0.5 h-3 w-3 shrink-0 text-primary" }) : /* @__PURE__ */ jsx209("span", { className: "w-3 shrink-0" }),
72371
+ isSelected ? /* @__PURE__ */ jsx209(Check31, { className: "mt-0.5 h-3 w-3 shrink-0 text-primary" }) : /* @__PURE__ */ jsx209("span", { className: "w-3 shrink-0" }),
72163
72372
  /* @__PURE__ */ jsxs199("span", { className: "min-w-0 flex-1", children: [
72164
72373
  /* @__PURE__ */ jsx209("span", { className: "block truncate", children: o.label }),
72165
72374
  o.description && /* @__PURE__ */ jsx209("span", { className: "mt-0.5 block truncate text-[10px] text-muted-foreground", children: o.description })
@@ -72184,7 +72393,7 @@ var init_ChipMultiSelect = __esm({
72184
72393
  });
72185
72394
 
72186
72395
  // src/components/KanbanBoardChrome.tsx
72187
- import { Activity as Activity19, ChevronDown as ChevronDown28, CircleUserRound, Clock3 as Clock37, Save as Save2, ShieldCheck as ShieldCheck10 } from "lucide-react";
72396
+ import { Activity as Activity19, ChevronDown as ChevronDown29, CircleUserRound, Clock3 as Clock37, Save as Save2, ShieldCheck as ShieldCheck10 } from "lucide-react";
72188
72397
  import { useEffect as useEffect113, useState as useState122 } from "react";
72189
72398
  import { jsx as jsx210, jsxs as jsxs200 } from "react/jsx-runtime";
72190
72399
  function relativeLastSeen(lastSeenAt) {
@@ -72314,7 +72523,7 @@ function SupervisorBar({
72314
72523
  ] }),
72315
72524
  snapshot?.summary && /* @__PURE__ */ jsx210("span", { className: "min-w-0 flex-1 truncate text-muted-foreground", children: snapshot.summary }),
72316
72525
  /* @__PURE__ */ jsx210("span", { className: "ml-auto text-muted-foreground", children: snapshot?.lastAuditAt ? t("activity:kanban.checkedAgo", { ago: fmtElapsed4(snapshot.lastAuditAt) }) : t("activity:kanban.notChecked") }),
72317
- /* @__PURE__ */ jsx210(ChevronDown28, { size: 13, className: cn("transition-transform", expanded && "rotate-180") })
72526
+ /* @__PURE__ */ jsx210(ChevronDown29, { size: 13, className: cn("transition-transform", expanded && "rotate-180") })
72318
72527
  ]
72319
72528
  }
72320
72529
  ),
@@ -72862,7 +73071,7 @@ var init_KanbanBoundaryEditor = __esm({
72862
73071
  });
72863
73072
 
72864
73073
  // src/components/KanbanCleanerAlert.tsx
72865
- import { AlertTriangle as AlertTriangle22, ChevronDown as ChevronDown29, CircleAlert, Sparkles as Sparkles16 } from "lucide-react";
73074
+ import { AlertTriangle as AlertTriangle22, ChevronDown as ChevronDown30, CircleAlert, Sparkles as Sparkles16 } from "lucide-react";
72866
73075
  import { useEffect as useEffect115, useId as useId3, useRef as useRef63, useState as useState124 } from "react";
72867
73076
  import { jsx as jsx213, jsxs as jsxs203 } from "react/jsx-runtime";
72868
73077
  function KanbanCleanerAlert({
@@ -72927,7 +73136,7 @@ function KanbanCleanerAlert({
72927
73136
  onClick: () => setExpanded((value) => !value),
72928
73137
  className: "flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary",
72929
73138
  children: /* @__PURE__ */ jsx213(
72930
- ChevronDown29,
73139
+ ChevronDown30,
72931
73140
  {
72932
73141
  size: 14,
72933
73142
  "aria-hidden": "true",
@@ -73171,7 +73380,7 @@ var init_KanbanTaskFields = __esm({
73171
73380
  });
73172
73381
 
73173
73382
  // src/components/TaskRiskPanel.tsx
73174
- import { AlertTriangle as AlertTriangle23, CheckCircle2 as CheckCircle224, ChevronDown as ChevronDown30, Database as Database10, ShieldAlert as ShieldAlert8 } from "lucide-react";
73383
+ import { AlertTriangle as AlertTriangle23, CheckCircle2 as CheckCircle224, ChevronDown as ChevronDown31, Database as Database10, ShieldAlert as ShieldAlert8 } from "lucide-react";
73175
73384
  import { jsx as jsx215, jsxs as jsxs205 } from "react/jsx-runtime";
73176
73385
  function record2(value) {
73177
73386
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
@@ -73480,7 +73689,7 @@ function TaskRiskPanel({
73480
73689
  }
73481
73690
  ),
73482
73691
  assessment.critical > 0 && /* @__PURE__ */ jsx215("span", { className: "rounded bg-destructive/10 px-1.5 py-0.5 text-[9px] text-destructive", children: t("activity:taskRisk.criticalCount", { count: assessment.critical }) }),
73483
- /* @__PURE__ */ jsx215(ChevronDown30, { className: "ml-auto size-3.5 text-muted-foreground" })
73692
+ /* @__PURE__ */ jsx215(ChevronDown31, { className: "ml-auto size-3.5 text-muted-foreground" })
73484
73693
  ] }),
73485
73694
  /* @__PURE__ */ jsxs205("div", { className: "space-y-2 border-t border-border/60 p-2.5", children: [
73486
73695
  /* @__PURE__ */ jsx215("div", { className: "grid grid-cols-3 gap-1 text-center sm:grid-cols-6", children: [
@@ -74553,7 +74762,7 @@ import {
74553
74762
  AlertTriangle as AlertTriangle25,
74554
74763
  Ban as Ban2,
74555
74764
  Brain as Brain14,
74556
- Check as Check31,
74765
+ Check as Check32,
74557
74766
  CircleDot as CircleDot7,
74558
74767
  GitMerge as GitMerge3,
74559
74768
  Layers as Layers12,
@@ -74562,7 +74771,7 @@ import {
74562
74771
  RotateCcw as RotateCcw12,
74563
74772
  ShieldAlert as ShieldAlert10,
74564
74773
  Split,
74565
- X as X40
74774
+ X as X41
74566
74775
  } from "lucide-react";
74567
74776
  function statusStyle(s) {
74568
74777
  return SDD_STATUS[s] ?? SDD_STATUS.pending;
@@ -74637,7 +74846,7 @@ var init_sdd_theme = __esm({
74637
74846
  },
74638
74847
  failed: {
74639
74848
  label: "Failed",
74640
- icon: X40,
74849
+ icon: X41,
74641
74850
  text: "text-destructive",
74642
74851
  ring: "border-destructive/45 bg-destructive/10",
74643
74852
  dot: "bg-destructive",
@@ -74645,7 +74854,7 @@ var init_sdd_theme = __esm({
74645
74854
  },
74646
74855
  completed: {
74647
74856
  label: "Done",
74648
- icon: Check31,
74857
+ icon: Check32,
74649
74858
  text: "text-success",
74650
74859
  ring: "border-success/35 bg-success/10",
74651
74860
  dot: "bg-success",
@@ -74698,8 +74907,8 @@ var init_sdd_theme = __esm({
74698
74907
  ];
74699
74908
  SDD_FEED_KIND = {
74700
74909
  started: { icon: Play6, color: "text-warning" },
74701
- completed: { icon: Check31, color: "text-success" },
74702
- failed: { icon: X40, color: "text-destructive" },
74910
+ completed: { icon: Check32, color: "text-success" },
74911
+ failed: { icon: X41, color: "text-destructive" },
74703
74912
  retrying: { icon: RotateCcw12, color: "text-warning" },
74704
74913
  wave: { icon: Layers12, color: "text-primary" },
74705
74914
  deadlock: { icon: AlertTriangle25, color: "text-destructive" },
@@ -74725,14 +74934,14 @@ import {
74725
74934
  useReactFlow as useReactFlow3
74726
74935
  } from "@xyflow/react";
74727
74936
  import "@xyflow/react/dist/style.css";
74728
- import { Check as Check32, Loader2 as Loader239, X as X41, GitBranch as GitBranch11, RotateCcw as RotateCcw13, CircleDot as CircleDot8 } from "lucide-react";
74937
+ import { Check as Check33, Loader2 as Loader239, X as X42, GitBranch as GitBranch11, RotateCcw as RotateCcw13, CircleDot as CircleDot8 } from "lucide-react";
74729
74938
  import { jsx as jsx219, jsxs as jsxs209 } from "react/jsx-runtime";
74730
74939
  function TaskNode({ data }) {
74731
74940
  const t = data.task;
74732
74941
  const { t: tt } = useTranslation();
74733
74942
  const s = STATUS[t.displayStatus];
74734
74943
  const running = t.displayStatus === "in_progress";
74735
- const StatusIcon2 = t.displayStatus === "completed" ? Check32 : t.displayStatus === "failed" ? X41 : running ? Loader239 : CircleDot8;
74944
+ const StatusIcon2 = t.displayStatus === "completed" ? Check33 : t.displayStatus === "failed" ? X42 : running ? Loader239 : CircleDot8;
74736
74945
  return /* @__PURE__ */ jsxs209(
74737
74946
  "div",
74738
74947
  {
@@ -74929,7 +75138,7 @@ var init_SddFlowGraph = __esm({
74929
75138
  });
74930
75139
 
74931
75140
  // src/components/KanbanDecompositionPanel.tsx
74932
- import { Check as Check33, ChevronDown as ChevronDown31, ChevronRight as ChevronRight19, Scissors, X as X42 } from "lucide-react";
75141
+ import { Check as Check34, ChevronDown as ChevronDown32, ChevronRight as ChevronRight19, Scissors, X as X43 } from "lucide-react";
74933
75142
  import { useMemo as useMemo65, useState as useState127 } from "react";
74934
75143
  import { Fragment as Fragment59, jsx as jsx220, jsxs as jsxs210 } from "react/jsx-runtime";
74935
75144
  function KanbanDecompositionApprovalCard({
@@ -74949,7 +75158,7 @@ function KanbanDecompositionApprovalCard({
74949
75158
  onClick: () => setCollapsed((value) => !value),
74950
75159
  className: "flex w-full items-center gap-2 text-left text-xs font-semibold text-warning",
74951
75160
  children: [
74952
- collapsed ? /* @__PURE__ */ jsx220(ChevronRight19, { size: 13 }) : /* @__PURE__ */ jsx220(ChevronDown31, { size: 13 }),
75161
+ collapsed ? /* @__PURE__ */ jsx220(ChevronRight19, { size: 13 }) : /* @__PURE__ */ jsx220(ChevronDown32, { size: 13 }),
74953
75162
  /* @__PURE__ */ jsx220(Scissors, { size: 13 }),
74954
75163
  pending.length,
74955
75164
  " decomposition proposal",
@@ -74986,7 +75195,7 @@ function KanbanDecompositionApprovalCard({
74986
75195
  }),
74987
75196
  className: "inline-flex items-center gap-1 rounded-md bg-success/10 px-2 py-1 text-[11px] font-medium text-success hover:bg-success/20",
74988
75197
  children: [
74989
- /* @__PURE__ */ jsx220(Check33, { size: 12 }),
75198
+ /* @__PURE__ */ jsx220(Check34, { size: 12 }),
74990
75199
  " ",
74991
75200
  t("activity:kanbanDecomp.approve")
74992
75201
  ]
@@ -75003,7 +75212,7 @@ function KanbanDecompositionApprovalCard({
75003
75212
  }),
75004
75213
  className: "inline-flex items-center gap-1 rounded-md bg-destructive/10 px-2 py-1 text-[11px] font-medium text-destructive hover:bg-destructive/20",
75005
75214
  children: [
75006
- /* @__PURE__ */ jsx220(X42, { size: 12 }),
75215
+ /* @__PURE__ */ jsx220(X43, { size: 12 }),
75007
75216
  " ",
75008
75217
  t("activity:kanbanDecomp.reject")
75009
75218
  ]
@@ -75127,7 +75336,7 @@ function KanbanDecompositionPanel({
75127
75336
  }),
75128
75337
  className: "inline-flex items-center gap-1 rounded-md bg-success/10 px-2.5 py-1.5 text-xs font-medium text-success hover:bg-success/20",
75129
75338
  children: [
75130
- /* @__PURE__ */ jsx220(Check33, { size: 13 }),
75339
+ /* @__PURE__ */ jsx220(Check34, { size: 13 }),
75131
75340
  " ",
75132
75341
  t("activity:kanbanDecomp.approveAmpSplit")
75133
75342
  ]
@@ -75144,7 +75353,7 @@ function KanbanDecompositionPanel({
75144
75353
  }),
75145
75354
  className: "inline-flex items-center gap-1 rounded-md bg-destructive/10 px-2.5 py-1.5 text-xs font-medium text-destructive hover:bg-destructive/20",
75146
75355
  children: [
75147
- /* @__PURE__ */ jsx220(X42, { size: 13 }),
75356
+ /* @__PURE__ */ jsx220(X43, { size: 13 }),
75148
75357
  " ",
75149
75358
  t("activity:kanbanDecomp.reject")
75150
75359
  ]
@@ -75296,7 +75505,7 @@ var init_KanbanQueueHealthBar = __esm({
75296
75505
  });
75297
75506
 
75298
75507
  // src/components/KanbanRunControls.tsx
75299
- import { Check as Check34, Pause as Pause8, Play as Play7, Rocket as Rocket5, RotateCcw as RotateCcw14, Square as Square8, UserPlus as UserPlus2, X as X43 } from "lucide-react";
75508
+ import { Check as Check35, Pause as Pause8, Play as Play7, Rocket as Rocket5, RotateCcw as RotateCcw14, Square as Square8, UserPlus as UserPlus2, X as X44 } from "lucide-react";
75300
75509
  import { useState as useState128 } from "react";
75301
75510
  import { jsx as jsx222, jsxs as jsxs212 } from "react/jsx-runtime";
75302
75511
  function RunControlBar({
@@ -75456,7 +75665,7 @@ function RunTaskControls({
75456
75665
  type: "button",
75457
75666
  onClick: submitReassign,
75458
75667
  className: "rounded-md bg-primary/10 px-2 py-1.5 text-primary",
75459
- children: /* @__PURE__ */ jsx222(Check34, { size: 14 })
75668
+ children: /* @__PURE__ */ jsx222(Check35, { size: 14 })
75460
75669
  }
75461
75670
  ),
75462
75671
  /* @__PURE__ */ jsx222(
@@ -75465,7 +75674,7 @@ function RunTaskControls({
75465
75674
  type: "button",
75466
75675
  onClick: () => setReassigning(false),
75467
75676
  className: "rounded-md bg-muted px-2 py-1.5",
75468
- children: /* @__PURE__ */ jsx222(X43, { size: 14 })
75677
+ children: /* @__PURE__ */ jsx222(X44, { size: 14 })
75469
75678
  }
75470
75679
  )
75471
75680
  ] }) : /* @__PURE__ */ jsxs212("div", { className: "flex flex-wrap gap-2", children: [
@@ -75723,7 +75932,7 @@ var init_KanbanTaskActivityRecorder = __esm({
75723
75932
  });
75724
75933
 
75725
75934
  // src/components/KanbanTaskCompletionChecks.tsx
75726
- import { Check as Check35, Plus as Plus21 } from "lucide-react";
75935
+ import { Check as Check36, Plus as Plus21 } from "lucide-react";
75727
75936
  import { jsx as jsx225, jsxs as jsxs215 } from "react/jsx-runtime";
75728
75937
  function KanbanTaskCompletionChecks({
75729
75938
  board,
@@ -75743,7 +75952,7 @@ function KanbanTaskCompletionChecks({
75743
75952
  className: "grid grid-cols-[auto_1fr_92px] items-center gap-2 rounded-md border bg-background px-2 py-1.5 text-xs",
75744
75953
  children: [
75745
75954
  /* @__PURE__ */ jsx225(
75746
- Check35,
75955
+ Check36,
75747
75956
  {
75748
75957
  size: 13,
75749
75958
  className: check.status === "passed" ? "text-success" : "text-muted-foreground"
@@ -75978,7 +76187,7 @@ var init_KanbanTaskOptions = __esm({
75978
76187
  });
75979
76188
 
75980
76189
  // src/components/TaskActivityTimeline.tsx
75981
- import { Activity as Activity20, Check as Check36, Copy as Copy9, Download as Download8, RefreshCw as RefreshCw24, Search as Search22, X as X44 } from "lucide-react";
76190
+ import { Activity as Activity20, Check as Check37, Copy as Copy9, Download as Download8, RefreshCw as RefreshCw24, Search as Search22, X as X45 } from "lucide-react";
75982
76191
  import { useMemo as useMemo66, useState as useState129 } from "react";
75983
76192
  import { Fragment as Fragment60, jsx as jsx227, jsxs as jsxs217 } from "react/jsx-runtime";
75984
76193
  function buildTaskActivityExport(task, events, scope, exportedAt = (/* @__PURE__ */ new Date()).toISOString()) {
@@ -76367,7 +76576,7 @@ function TaskActivityTimeline({
76367
76576
  className: "flex size-7 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground",
76368
76577
  "aria-label": t("activity:taskTimeline.copyVisibleTaskActivityJson"),
76369
76578
  title: t("activity:taskTimeline.copyFilteredActivityJson"),
76370
- children: copied ? /* @__PURE__ */ jsx227(Check36, { className: "size-3 text-success" }) : /* @__PURE__ */ jsx227(Copy9, { className: "size-3" })
76579
+ children: copied ? /* @__PURE__ */ jsx227(Check37, { className: "size-3 text-success" }) : /* @__PURE__ */ jsx227(Copy9, { className: "size-3" })
76371
76580
  }
76372
76581
  ),
76373
76582
  /* @__PURE__ */ jsx227(
@@ -76440,7 +76649,7 @@ function TaskActivityTimeline({
76440
76649
  onClick: () => setQuery(""),
76441
76650
  "aria-label": t("activity:taskTimeline.clearTaskActivitySearch"),
76442
76651
  className: "absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",
76443
- children: /* @__PURE__ */ jsx227(X44, { className: "size-3" })
76652
+ children: /* @__PURE__ */ jsx227(X45, { className: "size-3" })
76444
76653
  }
76445
76654
  )
76446
76655
  ] }),
@@ -76580,7 +76789,7 @@ var init_TaskActivityTimeline = __esm({
76580
76789
  });
76581
76790
 
76582
76791
  // src/components/TaskExecutionAttempts.tsx
76583
- import { Bot as Bot29, ChevronDown as ChevronDown32, History as History6, Route, Timer as Timer2 } from "lucide-react";
76792
+ import { Bot as Bot29, ChevronDown as ChevronDown33, History as History6, Route, Timer as Timer2 } from "lucide-react";
76584
76793
  import { jsx as jsx228, jsxs as jsxs218 } from "react/jsx-runtime";
76585
76794
  function record4(value) {
76586
76795
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
@@ -76703,7 +76912,7 @@ function TaskExecutionAttempts({
76703
76912
  "latest:",
76704
76913
  attempts[0].status
76705
76914
  ] }),
76706
- /* @__PURE__ */ jsx228(ChevronDown32, { className: "ml-auto size-3.5 text-muted-foreground" })
76915
+ /* @__PURE__ */ jsx228(ChevronDown33, { className: "ml-auto size-3.5 text-muted-foreground" })
76707
76916
  ] }),
76708
76917
  /* @__PURE__ */ jsxs218("div", { className: "space-y-2 border-t border-border/60 p-2.5", children: [
76709
76918
  attemptPage.pageItems.map((attempt) => /* @__PURE__ */ jsxs218("section", { className: "rounded-md border bg-background/70 p-2.5", children: [
@@ -76791,7 +77000,7 @@ import {
76791
77000
  Activity as Activity21,
76792
77001
  Bot as Bot30,
76793
77002
  BrainCircuit as BrainCircuit7,
76794
- ChevronDown as ChevronDown33,
77003
+ ChevronDown as ChevronDown34,
76795
77004
  GitBranch as GitBranch13,
76796
77005
  Route as Route2,
76797
77006
  ShieldCheck as ShieldCheck14
@@ -76967,7 +77176,7 @@ function TaskIntelligencePanel({
76967
77176
  /* @__PURE__ */ jsx229("span", { className: "text-xs font-semibold", children: t("activity:taskIntel.heading") }),
76968
77177
  /* @__PURE__ */ jsx229("span", { className: "rounded bg-muted px-1.5 py-0.5 text-[9px] uppercase text-muted-foreground", children: task.status }),
76969
77178
  /* @__PURE__ */ jsx229("span", { className: "ml-auto text-[10px] text-muted-foreground", children: t("activity:taskIntel.eventsCount", { count: intelligence.eventCount }) }),
76970
- /* @__PURE__ */ jsx229(ChevronDown33, { className: "size-3.5 text-muted-foreground" })
77179
+ /* @__PURE__ */ jsx229(ChevronDown34, { className: "size-3.5 text-muted-foreground" })
76971
77180
  ] }),
76972
77181
  /* @__PURE__ */ jsxs219("div", { className: "space-y-2.5 border-t border-border/60 p-2.5", children: [
76973
77182
  /* @__PURE__ */ jsxs219("section", { className: "rounded-md border border-info/25 bg-info/5 p-2.5", children: [
@@ -77368,7 +77577,7 @@ var init_KanbanContractGraphPanel = __esm({
77368
77577
  import {
77369
77578
  AlertTriangle as AlertTriangle27,
77370
77579
  CheckCircle2 as CheckCircle227,
77371
- ChevronDown as ChevronDown34,
77580
+ ChevronDown as ChevronDown35,
77372
77581
  ChevronRight as ChevronRight20,
77373
77582
  FileCode2 as FileCode24,
77374
77583
  FileText as FileText17,
@@ -77409,7 +77618,7 @@ function CollapsibleSection({
77409
77618
  onClick: () => setOpen(!open),
77410
77619
  className: "flex w-full items-center gap-2 px-3 py-2 text-xs font-semibold uppercase text-muted-foreground hover:bg-muted/50",
77411
77620
  children: [
77412
- open ? /* @__PURE__ */ jsx231(ChevronDown34, { size: 13 }) : /* @__PURE__ */ jsx231(ChevronRight20, { size: 13 }),
77621
+ open ? /* @__PURE__ */ jsx231(ChevronDown35, { size: 13 }) : /* @__PURE__ */ jsx231(ChevronRight20, { size: 13 }),
77413
77622
  /* @__PURE__ */ jsx231(Icon2, { size: 13 }),
77414
77623
  title
77415
77624
  ]
@@ -77438,7 +77647,7 @@ function CheckResultRow({ check }) {
77438
77647
  type: "button",
77439
77648
  onClick: () => setExpanded(!expanded),
77440
77649
  className: "shrink-0 text-muted-foreground hover:text-foreground",
77441
- children: expanded ? /* @__PURE__ */ jsx231(ChevronDown34, { size: 13 }) : /* @__PURE__ */ jsx231(ChevronRight20, { size: 13 })
77650
+ children: expanded ? /* @__PURE__ */ jsx231(ChevronDown35, { size: 13 }) : /* @__PURE__ */ jsx231(ChevronRight20, { size: 13 })
77442
77651
  }
77443
77652
  )
77444
77653
  ] }),
@@ -77658,7 +77867,7 @@ var init_TaskVerificationSection = __esm({
77658
77867
 
77659
77868
  // src/components/KanbanTaskInspector.tsx
77660
77869
  import {
77661
- ChevronDown as ChevronDown35,
77870
+ ChevronDown as ChevronDown36,
77662
77871
  Copy as Copy10,
77663
77872
  Maximize2 as Maximize26,
77664
77873
  Minimize2 as Minimize22,
@@ -77667,7 +77876,7 @@ import {
77667
77876
  Send as Send10,
77668
77877
  ShieldCheck as ShieldCheck16,
77669
77878
  UserPlus as UserPlus3,
77670
- X as X45
77879
+ X as X46
77671
77880
  } from "lucide-react";
77672
77881
  import { useEffect as useEffect118, useState as useState132 } from "react";
77673
77882
  import { Fragment as Fragment62, jsx as jsx233, jsxs as jsxs223 } from "react/jsx-runtime";
@@ -77937,7 +78146,7 @@ function KanbanTaskInspector({
77937
78146
  onClose();
77938
78147
  },
77939
78148
  className: "flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground",
77940
- children: /* @__PURE__ */ jsx233(X45, { size: 16 })
78149
+ children: /* @__PURE__ */ jsx233(X46, { size: 16 })
77941
78150
  }
77942
78151
  )
77943
78152
  ] }),
@@ -78411,7 +78620,7 @@ function KanbanTaskInspector({
78411
78620
  children: [
78412
78621
  t("activity:kanbanInspector.advanced"),
78413
78622
  /* @__PURE__ */ jsx233(
78414
- ChevronDown35,
78623
+ ChevronDown36,
78415
78624
  {
78416
78625
  size: 13,
78417
78626
  className: cn("transition-transform", showAdvanced && "rotate-180")
@@ -78635,20 +78844,20 @@ var init_KanbanTaskInspector = __esm({
78635
78844
  // src/components/KanbanTaskTree.tsx
78636
78845
  import {
78637
78846
  AlertTriangle as AlertTriangle28,
78638
- Check as Check37,
78847
+ Check as Check38,
78639
78848
  ChevronRight as ChevronRight21,
78640
78849
  CircleDot as CircleDot9,
78641
78850
  Loader2 as Loader241,
78642
78851
  ShieldCheck as ShieldCheck17,
78643
78852
  ShieldQuestion as ShieldQuestion2,
78644
78853
  ShieldX,
78645
- X as X46
78854
+ X as X47
78646
78855
  } from "lucide-react";
78647
78856
  import { useMemo as useMemo68 } from "react";
78648
78857
  import { jsx as jsx234, jsxs as jsxs224 } from "react/jsx-runtime";
78649
78858
  function StatusIcon({ task }) {
78650
- if (task.status === "completed") return /* @__PURE__ */ jsx234(Check37, { size: 13, className: "text-success" });
78651
- if (task.status === "failed") return /* @__PURE__ */ jsx234(X46, { size: 13, className: "text-destructive" });
78859
+ if (task.status === "completed") return /* @__PURE__ */ jsx234(Check38, { size: 13, className: "text-success" });
78860
+ if (task.status === "failed") return /* @__PURE__ */ jsx234(X47, { size: 13, className: "text-destructive" });
78652
78861
  if (task.status === "in_progress")
78653
78862
  return /* @__PURE__ */ jsx234(Loader241, { size: 13, className: "animate-spin text-info" });
78654
78863
  return /* @__PURE__ */ jsx234(CircleDot9, { size: 13, className: "text-muted-foreground" });
@@ -79197,7 +79406,7 @@ __export(KanbanView_exports, {
79197
79406
  TASK_ACTIVITY_LOAD_LIMIT: () => TASK_ACTIVITY_LOAD_LIMIT,
79198
79407
  deriveTaskCardIntelligence: () => deriveTaskCardIntelligence
79199
79408
  });
79200
- import { Copy as Copy11, History as History7, Plus as Plus22, Trash2 as Trash219, X as X47 } from "lucide-react";
79409
+ import { Copy as Copy11, History as History7, Plus as Plus22, Trash2 as Trash219, X as X48 } from "lucide-react";
79201
79410
  import { useEffect as useEffect120, useMemo as useMemo70, useRef as useRef65, useState as useState134 } from "react";
79202
79411
  import { Fragment as Fragment63, jsx as jsx238, jsxs as jsxs227 } from "react/jsx-runtime";
79203
79412
  function KanbanView({ onClose }) {
@@ -79603,7 +79812,7 @@ function KanbanView({ onClose }) {
79603
79812
  }
79604
79813
  ),
79605
79814
  error && /* @__PURE__ */ jsxs227("div", { className: "flex h-9 shrink-0 items-center gap-2 border-b border-destructive/30 bg-destructive/10 px-4 text-sm text-destructive", children: [
79606
- /* @__PURE__ */ jsx238(X47, { size: 15 }),
79815
+ /* @__PURE__ */ jsx238(X48, { size: 15 }),
79607
79816
  /* @__PURE__ */ jsx238("span", { className: "min-w-0 flex-1 truncate", children: error }),
79608
79817
  /* @__PURE__ */ jsx238(
79609
79818
  "button",
@@ -79612,7 +79821,7 @@ function KanbanView({ onClose }) {
79612
79821
  "aria-label": t("common:action.close"),
79613
79822
  onClick: () => setError(null),
79614
79823
  className: "flex h-6 w-6 shrink-0 items-center justify-center rounded hover:bg-destructive/20",
79615
- children: /* @__PURE__ */ jsx238(X47, { size: 15 })
79824
+ children: /* @__PURE__ */ jsx238(X48, { size: 15 })
79616
79825
  }
79617
79826
  )
79618
79827
  ] }),
@@ -79771,7 +79980,7 @@ import {
79771
79980
  MessageSquare as MessageSquare10,
79772
79981
  Reply,
79773
79982
  Search as Search23,
79774
- X as X48,
79983
+ X as X49,
79775
79984
  Lock as Lock3,
79776
79985
  Globe as Globe8
79777
79986
  } from "lucide-react";
@@ -79904,7 +80113,7 @@ function MailboxDetailView({ className }) {
79904
80113
  onClick: handleClose,
79905
80114
  className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
79906
80115
  title: t("activity:mailbox.closeTitle"),
79907
- children: /* @__PURE__ */ jsx239(X48, { className: "h-4 w-4" })
80116
+ children: /* @__PURE__ */ jsx239(X49, { className: "h-4 w-4" })
79908
80117
  }
79909
80118
  )
79910
80119
  ] }),
@@ -79989,7 +80198,7 @@ __export(PromptJournalView_exports, {
79989
80198
  PromptJournalView: () => PromptJournalView
79990
80199
  });
79991
80200
  import {
79992
- ChevronDown as ChevronDown36,
80201
+ ChevronDown as ChevronDown37,
79993
80202
  ChevronRight as ChevronRight22,
79994
80203
  FileText as FileText19,
79995
80204
  RefreshCw as RefreshCw25,
@@ -80198,7 +80407,7 @@ function JournalEntryCard({
80198
80407
  onClick: onToggle,
80199
80408
  className: "flex w-full items-start gap-2 rounded-lg px-3 py-2 text-left hover:bg-accent/40",
80200
80409
  children: [
80201
- expanded ? /* @__PURE__ */ jsx240(ChevronDown36, { className: "mt-0.5 h-4 w-4 shrink-0 text-muted-foreground" }) : /* @__PURE__ */ jsx240(ChevronRight22, { className: "mt-0.5 h-4 w-4 shrink-0 text-muted-foreground" }),
80410
+ expanded ? /* @__PURE__ */ jsx240(ChevronDown37, { className: "mt-0.5 h-4 w-4 shrink-0 text-muted-foreground" }) : /* @__PURE__ */ jsx240(ChevronRight22, { className: "mt-0.5 h-4 w-4 shrink-0 text-muted-foreground" }),
80202
80411
  /* @__PURE__ */ jsxs229("div", { className: "min-w-0 flex-1", children: [
80203
80412
  /* @__PURE__ */ jsxs229("div", { className: "flex flex-wrap items-center gap-x-2 gap-y-1 text-xs", children: [
80204
80413
  /* @__PURE__ */ jsx240("span", { className: "tabular text-muted-foreground", children: time }),
@@ -81208,7 +81417,7 @@ import {
81208
81417
  Save as Save5,
81209
81418
  Sparkles as Sparkles18,
81210
81419
  Trash2 as Trash222,
81211
- X as X49
81420
+ X as X50
81212
81421
  } from "lucide-react";
81213
81422
  import { useEffect as useEffect123, useRef as useRef66, useState as useState138 } from "react";
81214
81423
  import { Fragment as Fragment65, jsx as jsx246, jsxs as jsxs235 } from "react/jsx-runtime";
@@ -81261,7 +81470,7 @@ function MemoryEditor({
81261
81470
  ] }),
81262
81471
  /* @__PURE__ */ jsxs235("div", { className: "ml-auto flex items-center gap-2", children: [
81263
81472
  /* @__PURE__ */ jsxs235(Button, { type: "button", variant: "ghost", size: "sm", onClick: onCancel, disabled: busy, children: [
81264
- /* @__PURE__ */ jsx246(X49, { className: "size-3.5" }),
81473
+ /* @__PURE__ */ jsx246(X50, { className: "size-3.5" }),
81265
81474
  " ",
81266
81475
  t("common:action.cancel")
81267
81476
  ] }),
@@ -81669,7 +81878,7 @@ var init_MemoryEditor = __esm({
81669
81878
  });
81670
81879
 
81671
81880
  // src/components/MemoryManager/MemoryFilters.tsx
81672
- import { BrainCircuit as BrainCircuit9, ChevronDown as ChevronDown37, FilterX, Search as Search24, Tag as Tag5, X as X50 } from "lucide-react";
81881
+ import { BrainCircuit as BrainCircuit9, ChevronDown as ChevronDown38, FilterX, Search as Search24, Tag as Tag5, X as X51 } from "lucide-react";
81673
81882
  import { useState as useState139 } from "react";
81674
81883
  import { jsx as jsx247, jsxs as jsxs236 } from "react/jsx-runtime";
81675
81884
  function MemoryFilters({
@@ -81713,7 +81922,7 @@ function MemoryFilters({
81713
81922
  "aria-label": t("activity:memoryManager.clearSearchAria"),
81714
81923
  onClick: () => onSearchChange(""),
81715
81924
  className: "absolute right-2 top-1/2 -translate-y-1/2 p-1 text-muted-foreground hover:text-foreground",
81716
- children: /* @__PURE__ */ jsx247(X50, { className: "size-3.5" })
81925
+ children: /* @__PURE__ */ jsx247(X51, { className: "size-3.5" })
81717
81926
  }
81718
81927
  )
81719
81928
  ] }),
@@ -81799,7 +82008,7 @@ function MemoryFilters({
81799
82008
  title: tagFilter ? `Active filter: ${tagFilter} (click the chip to clear)` : tagsVisible ? "Hide tag filters" : `Show tag filters (${allTags.length})`,
81800
82009
  children: [
81801
82010
  /* @__PURE__ */ jsx247(
81802
- ChevronDown37,
82011
+ ChevronDown38,
81803
82012
  {
81804
82013
  className: cn(
81805
82014
  "size-3 transition-transform",
@@ -82191,7 +82400,7 @@ var init_MemorySearchBreakdown = __esm({
82191
82400
  });
82192
82401
 
82193
82402
  // src/components/MemoryManager/MemoryManagerEmpty.tsx
82194
- import { BrainCircuit as BrainCircuit11, Check as Check38, Plus as Plus25 } from "lucide-react";
82403
+ import { BrainCircuit as BrainCircuit11, Check as Check39, Plus as Plus25 } from "lucide-react";
82195
82404
  import { jsx as jsx250, jsxs as jsxs239 } from "react/jsx-runtime";
82196
82405
  function MemoryManagerEmpty({ onCapture }) {
82197
82406
  const { t } = useTranslation();
@@ -82204,7 +82413,7 @@ function MemoryManagerEmpty({ onCapture }) {
82204
82413
  /* @__PURE__ */ jsx250("p", { className: "mt-2 max-w-md text-sm leading-6 text-muted-foreground", children: t("activity:memoryManager.emptyBody") }),
82205
82414
  /* @__PURE__ */ jsxs239("div", { className: "mt-6 grid w-full max-w-lg gap-2 sm:grid-cols-3", children: [
82206
82415
  /* @__PURE__ */ jsxs239("div", { className: "border border-border/70 bg-card/45 p-3", children: [
82207
- /* @__PURE__ */ jsx250(Check38, { className: "mx-auto size-4 text-success" }),
82416
+ /* @__PURE__ */ jsx250(Check39, { className: "mx-auto size-4 text-success" }),
82208
82417
  /* @__PURE__ */ jsx250("p", { className: "mt-2 text-[10px] font-bold uppercase", children: t("activity:memoryManager.emptyVerifiedAnchors") })
82209
82418
  ] }),
82210
82419
  /* @__PURE__ */ jsxs239("div", { className: "border border-border/70 bg-card/45 p-3", children: [
@@ -82394,7 +82603,7 @@ var init_MemoryManagerStatsBar = __esm({
82394
82603
  });
82395
82604
 
82396
82605
  // src/components/MemoryManager/ReviewQueue.tsx
82397
- import { AlertTriangle as AlertTriangle33, Check as Check39, Loader2 as Loader244, RefreshCw as RefreshCw28, X as X51 } from "lucide-react";
82606
+ import { AlertTriangle as AlertTriangle33, Check as Check40, Loader2 as Loader244, RefreshCw as RefreshCw28, X as X52 } from "lucide-react";
82398
82607
  import { useCallback as useCallback72, useEffect as useEffect124, useRef as useRef67, useState as useState140 } from "react";
82399
82608
  import { Fragment as Fragment68, jsx as jsx253, jsxs as jsxs242 } from "react/jsx-runtime";
82400
82609
  function ReviewQueue({
@@ -82528,7 +82737,7 @@ function ReviewQueue({
82528
82737
  }
82529
82738
  if (candidates.length === 0) {
82530
82739
  return /* @__PURE__ */ jsxs242("div", { className: "flex flex-1 flex-col items-center justify-center gap-2 p-8 text-center", children: [
82531
- /* @__PURE__ */ jsx253(Check39, { className: "size-6 text-success" }),
82740
+ /* @__PURE__ */ jsx253(Check40, { className: "size-6 text-success" }),
82532
82741
  /* @__PURE__ */ jsx253("p", { className: "text-sm font-medium", children: t("activity:memoryManager.reviewEmptyTitle") }),
82533
82742
  /* @__PURE__ */ jsx253("p", { className: "max-w-sm text-xs text-muted-foreground", children: t("activity:memoryManager.reviewEmptyHint") }),
82534
82743
  /* @__PURE__ */ jsxs242(Button, { size: "sm", variant: "ghost", onClick: () => load(), children: [
@@ -82562,7 +82771,7 @@ function ReviewQueue({
82562
82771
  disabled: selectedCount === 0 || bulkBusy,
82563
82772
  onClick: () => void bulkAct("accept"),
82564
82773
  children: [
82565
- bulkBusy ? /* @__PURE__ */ jsx253(Loader244, { className: "size-3 animate-spin" }) : /* @__PURE__ */ jsx253(Check39, { className: "size-3" }),
82774
+ bulkBusy ? /* @__PURE__ */ jsx253(Loader244, { className: "size-3 animate-spin" }) : /* @__PURE__ */ jsx253(Check40, { className: "size-3" }),
82566
82775
  t("activity:memoryManager.reviewBulkAccept"),
82567
82776
  selectedCount > 0 ? ` (${selectedCount})` : ""
82568
82777
  ]
@@ -82577,7 +82786,7 @@ function ReviewQueue({
82577
82786
  disabled: selectedCount === 0 || bulkBusy,
82578
82787
  onClick: () => void bulkAct("reject"),
82579
82788
  children: [
82580
- /* @__PURE__ */ jsx253(X51, { className: "size-3" }),
82789
+ /* @__PURE__ */ jsx253(X52, { className: "size-3" }),
82581
82790
  t("activity:memoryManager.reviewBulkKeep"),
82582
82791
  selectedCount > 0 ? ` (${selectedCount})` : ""
82583
82792
  ]
@@ -82643,7 +82852,7 @@ function ReviewQueue({
82643
82852
  disabled: busy,
82644
82853
  onClick: () => void act(c.id, "accept"),
82645
82854
  children: [
82646
- busyId === c.id ? /* @__PURE__ */ jsx253(Loader244, { className: "size-3 animate-spin" }) : /* @__PURE__ */ jsx253(Check39, { className: "size-3" }),
82855
+ busyId === c.id ? /* @__PURE__ */ jsx253(Loader244, { className: "size-3 animate-spin" }) : /* @__PURE__ */ jsx253(Check40, { className: "size-3" }),
82647
82856
  t("activity:memoryManager.actionAcceptDeletion")
82648
82857
  ]
82649
82858
  }
@@ -82657,7 +82866,7 @@ function ReviewQueue({
82657
82866
  disabled: busy,
82658
82867
  onClick: () => void act(c.id, "reject"),
82659
82868
  children: [
82660
- /* @__PURE__ */ jsx253(X51, { className: "size-3" }),
82869
+ /* @__PURE__ */ jsx253(X52, { className: "size-3" }),
82661
82870
  t("activity:memoryManager.actionKeep")
82662
82871
  ]
82663
82872
  }
@@ -83363,7 +83572,7 @@ var MemoryManager_exports = {};
83363
83572
  __export(MemoryManager_exports, {
83364
83573
  MemoryManager: () => MemoryManager
83365
83574
  });
83366
- import { AlertTriangle as AlertTriangle34, ArrowLeft as ArrowLeft7, Check as Check40, RefreshCw as RefreshCw29 } from "lucide-react";
83575
+ import { AlertTriangle as AlertTriangle34, ArrowLeft as ArrowLeft7, Check as Check41, RefreshCw as RefreshCw29 } from "lucide-react";
83367
83576
  import { Fragment as Fragment69, jsx as jsx254, jsxs as jsxs243 } from "react/jsx-runtime";
83368
83577
  function MemoryManager() {
83369
83578
  const { t } = useTranslation();
@@ -83423,7 +83632,7 @@ function MemoryManager() {
83423
83632
  ),
83424
83633
  (state.notice || state.loadError || state.mutationError) && /* @__PURE__ */ jsxs243("div", { className: "shrink-0 border-b border-border/70 px-4 py-2", "aria-live": "polite", children: [
83425
83634
  state.notice && /* @__PURE__ */ jsxs243("div", { role: "status", className: "flex items-center gap-2 text-xs text-success", children: [
83426
- /* @__PURE__ */ jsx254(Check40, { className: "size-3.5" }),
83635
+ /* @__PURE__ */ jsx254(Check41, { className: "size-3.5" }),
83427
83636
  " ",
83428
83637
  state.notice
83429
83638
  ] }),
@@ -84817,7 +85026,7 @@ var init_SddDestroyDialog = __esm({
84817
85026
  });
84818
85027
 
84819
85028
  // src/components/SddKanbanView.tsx
84820
- import { Check as Check41, GitBranch as GitBranch16, Loader2 as Loader247, RotateCcw as RotateCcw15, X as X52 } from "lucide-react";
85029
+ import { Check as Check42, GitBranch as GitBranch16, Loader2 as Loader247, RotateCcw as RotateCcw15, X as X53 } from "lucide-react";
84821
85030
  import { useMemo as useMemo77 } from "react";
84822
85031
  import { jsx as jsx261, jsxs as jsxs250 } from "react/jsx-runtime";
84823
85032
  function SddKanbanView({
@@ -84878,8 +85087,8 @@ function KanbanCard({
84878
85087
  children: [
84879
85088
  /* @__PURE__ */ jsxs250("div", { className: "flex items-center gap-1.5", children: [
84880
85089
  running && /* @__PURE__ */ jsx261(Loader247, { className: "h-3 w-3 animate-spin text-warning" }),
84881
- task.displayStatus === "completed" && /* @__PURE__ */ jsx261(Check41, { className: "h-3 w-3 text-success" }),
84882
- task.displayStatus === "failed" && /* @__PURE__ */ jsx261(X52, { className: "h-3 w-3 text-destructive" }),
85090
+ task.displayStatus === "completed" && /* @__PURE__ */ jsx261(Check42, { className: "h-3 w-3 text-success" }),
85091
+ task.displayStatus === "failed" && /* @__PURE__ */ jsx261(X53, { className: "h-3 w-3 text-destructive" }),
84883
85092
  /* @__PURE__ */ jsx261("span", { className: "font-mono text-[10px] text-muted-foreground", children: task.shortId }),
84884
85093
  /* @__PURE__ */ jsx261(
84885
85094
  "span",
@@ -84969,7 +85178,7 @@ var init_SddKanbanView = __esm({
84969
85178
  import {
84970
85179
  Activity as Activity24,
84971
85180
  ArrowLeft as ArrowLeft8,
84972
- Check as Check42,
85181
+ Check as Check43,
84973
85182
  Clock as Clock20,
84974
85183
  FileText as FileText20,
84975
85184
  GitBranch as GitBranch17,
@@ -84981,7 +85190,7 @@ import {
84981
85190
  Terminal as Terminal13,
84982
85191
  Trash2 as Trash225,
84983
85192
  UserCog as UserCog2,
84984
- X as X53
85193
+ X as X54
84985
85194
  } from "lucide-react";
84986
85195
  import { useMemo as useMemo78, useState as useState146 } from "react";
84987
85196
  import { jsx as jsx262, jsxs as jsxs251 } from "react/jsx-runtime";
@@ -85304,7 +85513,7 @@ function SddTaskDrawer({
85304
85513
  onClick: submitReassign,
85305
85514
  disabled: !reassignName.trim(),
85306
85515
  className: "rounded-md bg-primary/10 px-2 py-1.5 text-xs font-medium text-primary hover:bg-primary/15 disabled:opacity-40",
85307
- children: /* @__PURE__ */ jsx262(Check42, { className: "h-3.5 w-3.5" })
85516
+ children: /* @__PURE__ */ jsx262(Check43, { className: "h-3.5 w-3.5" })
85308
85517
  }
85309
85518
  ),
85310
85519
  /* @__PURE__ */ jsx262(
@@ -85313,7 +85522,7 @@ function SddTaskDrawer({
85313
85522
  type: "button",
85314
85523
  onClick: () => setReassigning(false),
85315
85524
  className: "rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted",
85316
- children: /* @__PURE__ */ jsx262(X53, { className: "h-3.5 w-3.5" })
85525
+ children: /* @__PURE__ */ jsx262(X54, { className: "h-3.5 w-3.5" })
85317
85526
  }
85318
85527
  )
85319
85528
  ] }) : confirm ? /* @__PURE__ */ jsxs251("div", { className: "sdd-rise flex items-center gap-2", children: [
@@ -85329,7 +85538,7 @@ function SddTaskDrawer({
85329
85538
  },
85330
85539
  className: "inline-flex items-center gap-1 rounded-md bg-destructive/10 px-2.5 py-1.5 text-xs font-medium text-destructive hover:bg-destructive/15",
85331
85540
  children: [
85332
- /* @__PURE__ */ jsx262(Check42, { className: "h-3.5 w-3.5" }),
85541
+ /* @__PURE__ */ jsx262(Check43, { className: "h-3.5 w-3.5" }),
85333
85542
  " ",
85334
85543
  confirm === "stop" ? t("common:action.stop") : t("common:action.delete")
85335
85544
  ]
@@ -85341,7 +85550,7 @@ function SddTaskDrawer({
85341
85550
  type: "button",
85342
85551
  onClick: () => setConfirm(null),
85343
85552
  className: "rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted",
85344
- children: /* @__PURE__ */ jsx262(X53, { className: "h-3.5 w-3.5" })
85553
+ children: /* @__PURE__ */ jsx262(X54, { className: "h-3.5 w-3.5" })
85345
85554
  }
85346
85555
  )
85347
85556
  ] }) : /* @__PURE__ */ jsxs251("div", { className: "flex flex-wrap gap-2", children: [
@@ -85451,7 +85660,7 @@ function SddTaskDrawer({
85451
85660
  setSplitText("");
85452
85661
  },
85453
85662
  className: "rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted",
85454
- children: /* @__PURE__ */ jsx262(X53, { className: "h-3.5 w-3.5" })
85663
+ children: /* @__PURE__ */ jsx262(X54, { className: "h-3.5 w-3.5" })
85455
85664
  }
85456
85665
  )
85457
85666
  ] })
@@ -85596,7 +85805,7 @@ import {
85596
85805
  Square as Square10,
85597
85806
  Trash2 as Trash226,
85598
85807
  Undo2 as Undo24,
85599
- X as X54,
85808
+ X as X55,
85600
85809
  XCircle as XCircle12,
85601
85810
  Zap as Zap28
85602
85811
  } from "lucide-react";
@@ -85928,7 +86137,7 @@ function SddBoardView({ onClose }) {
85928
86137
  ]
85929
86138
  }
85930
86139
  )),
85931
- /* @__PURE__ */ jsx263(Button, { variant: "ghost", size: "icon", onClick: onClose, children: /* @__PURE__ */ jsx263(X54, { className: "h-4 w-4" }) })
86140
+ /* @__PURE__ */ jsx263(Button, { variant: "ghost", size: "icon", onClick: onClose, children: /* @__PURE__ */ jsx263(X55, { className: "h-4 w-4" }) })
85932
86141
  ] })
85933
86142
  ] }),
85934
86143
  snapshot && p && /* @__PURE__ */ jsxs252("div", { className: "mt-2.5 flex items-center gap-5", children: [
@@ -86121,7 +86330,7 @@ function LifecycleResultBanner({
86121
86330
  children: [
86122
86331
  warn ? /* @__PURE__ */ jsx263(XCircle12, { className: "mt-0.5 h-4 w-4 shrink-0" }) : /* @__PURE__ */ jsx263(CheckCircle231, { className: "mt-0.5 h-4 w-4 shrink-0" }),
86123
86332
  /* @__PURE__ */ jsx263("span", { className: "flex-1", children: lifecycleMessage(result) }),
86124
- /* @__PURE__ */ jsx263("button", { type: "button", onClick: onDismiss, className: "shrink-0 opacity-60 hover:opacity-100", children: /* @__PURE__ */ jsx263(X54, { className: "h-3.5 w-3.5" }) })
86333
+ /* @__PURE__ */ jsx263("button", { type: "button", onClick: onDismiss, className: "shrink-0 opacity-60 hover:opacity-100", children: /* @__PURE__ */ jsx263(X55, { className: "h-3.5 w-3.5" }) })
86125
86334
  ]
86126
86335
  }
86127
86336
  );
@@ -86154,9 +86363,9 @@ var init_SddBoardView = __esm({
86154
86363
  // src/components/SddWizard.tsx
86155
86364
  import {
86156
86365
  Bot as Bot31,
86157
- Check as Check43,
86366
+ Check as Check44,
86158
86367
  CheckCheck,
86159
- ChevronDown as ChevronDown38,
86368
+ ChevronDown as ChevronDown39,
86160
86369
  ChevronRight as ChevronRight26,
86161
86370
  Copy as Copy12,
86162
86371
  Lightbulb as Lightbulb3,
@@ -86169,7 +86378,7 @@ import {
86169
86378
  Sparkles as Sparkles20,
86170
86379
  Target as Target4,
86171
86380
  User as User5,
86172
- X as X55,
86381
+ X as X56,
86173
86382
  Zap as Zap29
86174
86383
  } from "lucide-react";
86175
86384
  import { useCallback as useCallback76, useEffect as useEffect131, useMemo as useMemo80, useRef as useRef71, useState as useState148 } from "react";
@@ -86428,7 +86637,7 @@ function SddWizard({
86428
86637
  /* @__PURE__ */ jsx264("p", { className: "mt-1 text-[10px] text-muted-foreground", children: runPlanDecompose ? t("activity:sddWizard.planDecomposeOn") : t("activity:sddWizard.planDecomposeOff") })
86429
86638
  ] })
86430
86639
  ] }),
86431
- /* @__PURE__ */ jsx264(Button, { variant: "ghost", size: "icon", onClick: onClose, children: /* @__PURE__ */ jsx264(X55, { className: "h-4 w-4" }) })
86640
+ /* @__PURE__ */ jsx264(Button, { variant: "ghost", size: "icon", onClick: onClose, children: /* @__PURE__ */ jsx264(X56, { className: "h-4 w-4" }) })
86432
86641
  ] })
86433
86642
  ] }),
86434
86643
  started && /* @__PURE__ */ jsx264("div", { className: "flex shrink-0 items-center gap-1 border-b bg-card/50 px-4 py-1.5 text-[11px]", children: PHASE_ORDER.map((p, i) => {
@@ -86444,7 +86653,7 @@ function SddWizard({
86444
86653
  title: t("activity:sddWizard.rewindToPhaseTitle", "Return to this phase to revise"),
86445
86654
  className: "inline-flex items-center rounded-full px-2 py-0.5 text-success transition hover:bg-success/10 hover:underline",
86446
86655
  children: [
86447
- /* @__PURE__ */ jsx264(Check43, { className: "mr-0.5 inline h-3 w-3" }),
86656
+ /* @__PURE__ */ jsx264(Check44, { className: "mr-0.5 inline h-3 w-3" }),
86448
86657
  t(`activity:sddWizard.${PHASE_LABEL[p]}`)
86449
86658
  ]
86450
86659
  }
@@ -86456,7 +86665,7 @@ function SddWizard({
86456
86665
  active ? "bg-primary/15 text-primary font-medium" : done ? "text-success" : "text-muted-foreground"
86457
86666
  ),
86458
86667
  children: [
86459
- done && /* @__PURE__ */ jsx264(Check43, { className: "mr-0.5 inline h-3 w-3" }),
86668
+ done && /* @__PURE__ */ jsx264(Check44, { className: "mr-0.5 inline h-3 w-3" }),
86460
86669
  t(`activity:sddWizard.${PHASE_LABEL[p]}`)
86461
86670
  ]
86462
86671
  }
@@ -86530,7 +86739,7 @@ function SddWizard({
86530
86739
  onClick: () => setGraphOpen((o) => !o),
86531
86740
  className: "flex w-full items-center gap-1.5 border-b border-border/60 px-3 py-1.5 text-[11px] font-medium text-primary hover:bg-muted/40",
86532
86741
  children: [
86533
- graphOpen ? /* @__PURE__ */ jsx264(ChevronDown38, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx264(ChevronRight26, { className: "h-3.5 w-3.5" }),
86742
+ graphOpen ? /* @__PURE__ */ jsx264(ChevronDown39, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx264(ChevronRight26, { className: "h-3.5 w-3.5" }),
86534
86743
  /* @__PURE__ */ jsx264(Network10, { className: "h-3.5 w-3.5" }),
86535
86744
  t("activity:sddWizard.taskGraphSummary", { count: snapshot?.taskCount ?? 0 }),
86536
86745
  /* @__PURE__ */ jsx264("span", { className: "ml-auto text-muted-foreground", children: graphOpen ? t("activity:sddWizard.dragToExplore") : t("activity:sddWizard.show") })
@@ -86591,7 +86800,7 @@ function SddWizard({
86591
86800
  onClick: () => setPlanOpen((o) => !o),
86592
86801
  className: "flex w-full items-center gap-1.5 border-b border-border/60 px-3 py-2 text-sm font-semibold hover:bg-muted/40",
86593
86802
  children: [
86594
- planOpen ? /* @__PURE__ */ jsx264(ChevronDown38, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx264(ChevronRight26, { className: "h-3.5 w-3.5" }),
86803
+ planOpen ? /* @__PURE__ */ jsx264(ChevronDown39, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx264(ChevronRight26, { className: "h-3.5 w-3.5" }),
86595
86804
  /* @__PURE__ */ jsx264(Sparkles20, { className: "h-3.5 w-3.5 text-primary" }),
86596
86805
  " ",
86597
86806
  t("activity:sddWizard.implementationPlan")
@@ -86614,7 +86823,7 @@ function SddWizard({
86614
86823
  ]
86615
86824
  }
86616
86825
  ) : /* @__PURE__ */ jsxs253(Button, { variant: "secondary", onClick: approve, disabled: busy, children: [
86617
- /* @__PURE__ */ jsx264(Check43, { className: "mr-1.5 h-4 w-4" }),
86826
+ /* @__PURE__ */ jsx264(Check44, { className: "mr-1.5 h-4 w-4" }),
86618
86827
  phase === "spec_review" ? t("activity:sddWizard.approveSpec") : t("activity:sddWizard.approvePlan")
86619
86828
  ] }),
86620
86829
  /* @__PURE__ */ jsxs253(
@@ -86959,7 +87168,7 @@ __export(SpecsView_exports, {
86959
87168
  SpecsView: () => SpecsView
86960
87169
  });
86961
87170
  import { useCallback as useCallback77, useEffect as useEffect132, useState as useState149 } from "react";
86962
- import { ChevronDown as ChevronDown39, ChevronRight as ChevronRight28, FileText as FileText21, LayoutList, Network as Network11, Play as Play10, X as X56 } from "lucide-react";
87171
+ import { ChevronDown as ChevronDown40, ChevronRight as ChevronRight28, FileText as FileText21, LayoutList, Network as Network11, Play as Play10, X as X57 } from "lucide-react";
86963
87172
  import { jsx as jsx266, jsxs as jsxs255 } from "react/jsx-runtime";
86964
87173
  function detailToPhases(detail) {
86965
87174
  return detail.columns.map((col) => ({
@@ -87047,7 +87256,7 @@ function SpecsView({
87047
87256
  /* @__PURE__ */ jsx266("p", { className: "text-xs text-muted-foreground", children: t("activity:specs.subtitle") })
87048
87257
  ] })
87049
87258
  ] }),
87050
- /* @__PURE__ */ jsx266(Button, { variant: "ghost", size: "icon", onClick: onClose, children: /* @__PURE__ */ jsx266(X56, { className: "h-4 w-4" }) })
87259
+ /* @__PURE__ */ jsx266(Button, { variant: "ghost", size: "icon", onClick: onClose, children: /* @__PURE__ */ jsx266(X57, { className: "h-4 w-4" }) })
87051
87260
  ] }),
87052
87261
  /* @__PURE__ */ jsx266("div", { className: "min-h-0 flex-1 overflow-y-auto overscroll-contain p-4", children: specs.length === 0 ? /* @__PURE__ */ jsx266("div", { className: "flex h-40 items-center justify-center text-sm text-muted-foreground", children: t("activity:specs.empty", { command: "/sdd" }) }) : /* @__PURE__ */ jsx266("div", { className: "space-y-3", children: specs.map((spec) => {
87053
87262
  const expanded = expandedSpecId === spec.id;
@@ -87060,7 +87269,7 @@ function SpecsView({
87060
87269
  onClick: () => toggle(spec),
87061
87270
  className: "flex w-full items-start gap-3 p-4 text-left",
87062
87271
  children: [
87063
- /* @__PURE__ */ jsx266("span", { className: "mt-1 text-muted-foreground", children: expanded ? /* @__PURE__ */ jsx266(ChevronDown39, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx266(ChevronRight28, { className: "h-4 w-4" }) }),
87272
+ /* @__PURE__ */ jsx266("span", { className: "mt-1 text-muted-foreground", children: expanded ? /* @__PURE__ */ jsx266(ChevronDown40, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx266(ChevronRight28, { className: "h-4 w-4" }) }),
87064
87273
  /* @__PURE__ */ jsx266(FileText21, { className: "mt-0.5 h-4 w-4 text-muted-foreground" }),
87065
87274
  /* @__PURE__ */ jsxs255("div", { className: "min-w-0 flex-1", children: [
87066
87275
  /* @__PURE__ */ jsxs255("div", { className: "flex items-center gap-2", children: [
@@ -87334,7 +87543,7 @@ import {
87334
87543
  Star as Star6,
87335
87544
  Trash2 as Trash227,
87336
87545
  Wrench as Wrench18,
87337
- X as X57
87546
+ X as X58
87338
87547
  } from "lucide-react";
87339
87548
  import { useCallback as useCallback79, useEffect as useEffect134, useMemo as useMemo81, useRef as useRef72, useState as useState151 } from "react";
87340
87549
  import { jsx as jsx268, jsxs as jsxs257 } from "react/jsx-runtime";
@@ -87753,7 +87962,7 @@ function SessionList({
87753
87962
  onClick: () => setHistoryQuery(""),
87754
87963
  className: "absolute right-0 top-0 inline-flex h-9 w-8 items-center justify-center text-muted-foreground hover:text-foreground",
87755
87964
  title: t("activity:sessions.clearFilter"),
87756
- children: /* @__PURE__ */ jsx268(X57, { className: "h-3.5 w-3.5" })
87965
+ children: /* @__PURE__ */ jsx268(X58, { className: "h-3.5 w-3.5" })
87757
87966
  }
87758
87967
  ) : null
87759
87968
  ] }),
@@ -89054,7 +89263,7 @@ __export(SkillDetailView_exports, {
89054
89263
  });
89055
89264
  import {
89056
89265
  Sparkles as Sparkles21,
89057
- X as X58,
89266
+ X as X59,
89058
89267
  ChevronLeft as ChevronLeft3,
89059
89268
  ChevronRight as ChevronRight29,
89060
89269
  Download as Download9,
@@ -89062,7 +89271,7 @@ import {
89062
89271
  RefreshCw as RefreshCw31,
89063
89272
  Trash2 as Trash228,
89064
89273
  Copy as Copy13,
89065
- Check as Check44,
89274
+ Check as Check45,
89066
89275
  Globe as Globe9,
89067
89276
  ArrowUpRight,
89068
89277
  FolderOpen as FolderOpen7,
@@ -89437,7 +89646,7 @@ function SkillDetailView({ className }) {
89437
89646
  onClick: handleCopySourceUrl,
89438
89647
  className: "flex shrink-0 items-center text-muted-foreground transition-colors hover:text-foreground",
89439
89648
  title: t("activity:skillDetail.copySourceUrl"),
89440
- children: copiedSourceUrl ? /* @__PURE__ */ jsx271(Check44, { className: "h-3 w-3 text-success" }) : /* @__PURE__ */ jsx271(Copy13, { className: "h-3 w-3" })
89649
+ children: copiedSourceUrl ? /* @__PURE__ */ jsx271(Check45, { className: "h-3 w-3 text-success" }) : /* @__PURE__ */ jsx271(Copy13, { className: "h-3 w-3" })
89441
89650
  }
89442
89651
  )
89443
89652
  ] }),
@@ -89497,7 +89706,7 @@ function SkillDetailView({ className }) {
89497
89706
  onClick: handleClose,
89498
89707
  className: "flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground",
89499
89708
  title: t("activity:skillDetail.closeTitle"),
89500
- children: /* @__PURE__ */ jsx271(X58, { className: "h-4 w-4" })
89709
+ children: /* @__PURE__ */ jsx271(X59, { className: "h-4 w-4" })
89501
89710
  }
89502
89711
  )
89503
89712
  ] })
@@ -89714,7 +89923,7 @@ function SkillDetailView({ className }) {
89714
89923
  /* @__PURE__ */ jsx271(Trash228, { className: "h-4 w-4 text-destructive" }),
89715
89924
  /* @__PURE__ */ jsx271(DialogTitle, { className: "font-semibold text-sm", children: t("activity:skillDetail.uninstallSkillHeading") })
89716
89925
  ] }),
89717
- /* @__PURE__ */ jsx271("button", { type: "button", onClick: () => setUninstallConfirmSkill(null), "aria-label": t("common:action.close"), className: "rounded p-1 text-muted-foreground hover:bg-accent hover:text-accent-foreground", children: /* @__PURE__ */ jsx271(X58, { className: "h-4 w-4" }) })
89926
+ /* @__PURE__ */ jsx271("button", { type: "button", onClick: () => setUninstallConfirmSkill(null), "aria-label": t("common:action.close"), className: "rounded p-1 text-muted-foreground hover:bg-accent hover:text-accent-foreground", children: /* @__PURE__ */ jsx271(X59, { className: "h-4 w-4" }) })
89718
89927
  ] }),
89719
89928
  /* @__PURE__ */ jsxs260("div", { className: "min-h-0 flex-1 space-y-2 overflow-y-auto overscroll-contain p-4", children: [
89720
89929
  /* @__PURE__ */ jsx271("p", { className: "text-sm", children: uninstallConfirmSkill && t("activity:skillDetail.uninstallConfirm", { name: uninstallConfirmSkill.name }) }),
@@ -90504,7 +90713,7 @@ var init_FindingsPanel = __esm({
90504
90713
  });
90505
90714
 
90506
90715
  // src/components/TechStackView/TechStackToolbar.tsx
90507
- import { FilterX as FilterX3, Search as Search27, X as X59 } from "lucide-react";
90716
+ import { FilterX as FilterX3, Search as Search27, X as X60 } from "lucide-react";
90508
90717
  import { jsx as jsx276, jsxs as jsxs265 } from "react/jsx-runtime";
90509
90718
  function TechStackToolbar({
90510
90719
  searchQuery,
@@ -90546,7 +90755,7 @@ function TechStackToolbar({
90546
90755
  "aria-label": t("activity:techStack.clearSearch"),
90547
90756
  onClick: () => onSearchChange(""),
90548
90757
  className: "absolute right-2 top-1/2 -translate-y-1/2 p-1 text-muted-foreground hover:text-foreground",
90549
- children: /* @__PURE__ */ jsx276(X59, { className: "size-3.5" })
90758
+ children: /* @__PURE__ */ jsx276(X60, { className: "size-3.5" })
90550
90759
  }
90551
90760
  )
90552
90761
  ] }),
@@ -90653,7 +90862,7 @@ var TechStackView_exports = {};
90653
90862
  __export(TechStackView_exports, {
90654
90863
  TechStackView: () => TechStackView
90655
90864
  });
90656
- import { Boxes as Boxes2, Download as Download10, FileCode as FileCode7, FileText as FileText23, Loader2 as Loader255, RefreshCw as RefreshCw32, Shield as Shield6, ShieldCheck as ShieldCheck20, Sparkles as Sparkles24, X as X60 } from "lucide-react";
90865
+ import { Boxes as Boxes2, Download as Download10, FileCode as FileCode7, FileText as FileText23, Loader2 as Loader255, RefreshCw as RefreshCw32, Shield as Shield6, ShieldCheck as ShieldCheck20, Sparkles as Sparkles24, X as X61 } from "lucide-react";
90657
90866
  import { useCallback as useCallback83, useEffect as useEffect138, useMemo as useMemo84, useState as useState155 } from "react";
90658
90867
  import { Fragment as Fragment76, jsx as jsx277, jsxs as jsxs266 } from "react/jsx-runtime";
90659
90868
  function TechStackView() {
@@ -90888,7 +91097,7 @@ function TechStackView() {
90888
91097
  size: "icon",
90889
91098
  onClick: () => void cancelJob(),
90890
91099
  "aria-label": t("activity:techStack.cancelJob"),
90891
- children: /* @__PURE__ */ jsx277(X60, { className: "size-4" })
91100
+ children: /* @__PURE__ */ jsx277(X61, { className: "size-4" })
90892
91101
  }
90893
91102
  ),
90894
91103
  /* @__PURE__ */ jsxs266(DropdownMenu, { children: [
@@ -91760,9 +91969,9 @@ __export(ChimeraReviewsView_exports, {
91760
91969
  });
91761
91970
  import {
91762
91971
  AlertCircle as AlertCircle7,
91763
- Check as Check45,
91972
+ Check as Check46,
91764
91973
  CheckCircle2 as CheckCircle236,
91765
- ChevronDown as ChevronDown40,
91974
+ ChevronDown as ChevronDown41,
91766
91975
  ChevronRight as ChevronRight30,
91767
91976
  FileCode2 as FileCode28,
91768
91977
  History as History11,
@@ -92062,7 +92271,7 @@ function ChimeraReviewsView() {
92062
92271
  disabled: detail.report.lifecycle === "completed",
92063
92272
  className: "inline-flex items-center gap-1 rounded-lg border border-success/30 bg-success/10 px-2.5 py-1 text-xs font-medium text-success hover:bg-success/20 disabled:opacity-40 transition-colors",
92064
92273
  children: [
92065
- /* @__PURE__ */ jsx279(Check45, { className: "h-3.5 w-3.5" }),
92274
+ /* @__PURE__ */ jsx279(Check46, { className: "h-3.5 w-3.5" }),
92066
92275
  "Mark Completed"
92067
92276
  ]
92068
92277
  }
@@ -92263,7 +92472,7 @@ function ChimeraReviewsView() {
92263
92472
  className: "flex w-full items-center justify-between px-4 py-3 text-xs font-semibold text-muted-foreground hover:bg-muted/50 transition-colors",
92264
92473
  children: [
92265
92474
  /* @__PURE__ */ jsx279("span", { children: "Raw Report Markdown" }),
92266
- showRawText ? /* @__PURE__ */ jsx279(ChevronDown40, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx279(ChevronRight30, { className: "h-4 w-4" })
92475
+ showRawText ? /* @__PURE__ */ jsx279(ChevronDown41, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx279(ChevronRight30, { className: "h-4 w-4" })
92267
92476
  ]
92268
92477
  }
92269
92478
  ),
@@ -92640,8 +92849,8 @@ var init_relative_time = __esm({
92640
92849
 
92641
92850
  // src/components/SetupScreen/ProviderKeyCard.tsx
92642
92851
  import {
92643
- Check as Check46,
92644
- ChevronDown as ChevronDown41,
92852
+ Check as Check47,
92853
+ ChevronDown as ChevronDown42,
92645
92854
  ChevronRight as ChevronRight32,
92646
92855
  Copy as Copy14,
92647
92856
  ExternalLink as ExternalLink10,
@@ -92739,7 +92948,7 @@ function ProviderKeyCard({
92739
92948
  /* @__PURE__ */ jsxs270("div", { className: "flex items-center gap-2", children: [
92740
92949
  /* @__PURE__ */ jsx281("h3", { className: "text-sm font-semibold", children: popular.name }),
92741
92950
  saved && /* @__PURE__ */ jsxs270("span", { className: "inline-flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded-full bg-success/10 text-success border border-success/20", children: [
92742
- /* @__PURE__ */ jsx281(Check46, { className: "h-2.5 w-2.5" }),
92951
+ /* @__PURE__ */ jsx281(Check47, { className: "h-2.5 w-2.5" }),
92743
92952
  t("setup:screen.card.keySaved")
92744
92953
  ] }),
92745
92954
  popular.referral && !saved && /* @__PURE__ */ jsxs270("span", { className: "inline-flex items-center gap-1 text-[10px] px-1.5 py-0.5 rounded-full bg-warning/10 text-warning border border-warning/20", children: [
@@ -92798,7 +93007,7 @@ function ProviderKeyCard({
92798
93007
  onClick: handleCopyReferral,
92799
93008
  className: "inline-flex items-center gap-1 text-[11px] text-warning/80 hover:text-warning transition-colors",
92800
93009
  children: copied ? /* @__PURE__ */ jsxs270(Fragment77, { children: [
92801
- /* @__PURE__ */ jsx281(Check46, { className: "h-3 w-3" }),
93010
+ /* @__PURE__ */ jsx281(Check47, { className: "h-3 w-3" }),
92802
93011
  " ",
92803
93012
  t("setup:screen.card.copied")
92804
93013
  ] }) : /* @__PURE__ */ jsxs270(Fragment77, { children: [
@@ -92848,7 +93057,7 @@ function ProviderKeyCard({
92848
93057
  /* @__PURE__ */ jsx281(Loader258, { className: "h-3 w-3 animate-spin" }),
92849
93058
  t("setup:screen.probe.checking", "Checking connection\u2026")
92850
93059
  ] }) : probeResult?.ok ? /* @__PURE__ */ jsxs270("div", { className: "flex items-center gap-1.5 text-[11px] text-success mt-1", children: [
92851
- /* @__PURE__ */ jsx281(Check46, { className: "h-3 w-3" }),
93060
+ /* @__PURE__ */ jsx281(Check47, { className: "h-3 w-3" }),
92852
93061
  /* @__PURE__ */ jsxs270("span", { children: [
92853
93062
  t("setup:screen.probe.connected", "Connected"),
92854
93063
  probeResult.modelCount != null && ` \xB7 ${probeResult.modelCount} ${t("setup:screen.probe.models", "models")}`,
@@ -92877,7 +93086,7 @@ function ProviderKeyCard({
92877
93086
  className: "text-[11px] text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1",
92878
93087
  children: [
92879
93088
  t("setup:screen.providers.modelsAvailable", { count: catalogProvider?.modelCount ?? 0 }),
92880
- showModels ? /* @__PURE__ */ jsx281(ChevronDown41, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx281(ChevronRight32, { className: "h-3 w-3" })
93089
+ showModels ? /* @__PURE__ */ jsx281(ChevronDown42, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx281(ChevronRight32, { className: "h-3 w-3" })
92881
93090
  ]
92882
93091
  }
92883
93092
  )
@@ -93085,7 +93294,7 @@ function ProviderKeyCard({
93085
93294
  variant: "outline",
93086
93295
  onClick: handleCopyReferral,
93087
93296
  className: "shrink-0",
93088
- children: copied ? /* @__PURE__ */ jsx281(Check46, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx281(Copy14, { className: "h-4 w-4" })
93297
+ children: copied ? /* @__PURE__ */ jsx281(Check47, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx281(Copy14, { className: "h-4 w-4" })
93089
93298
  }
93090
93299
  )
93091
93300
  ] }),
@@ -93120,7 +93329,7 @@ __export(SetupScreen_exports, {
93120
93329
  import {
93121
93330
  ArrowRight as ArrowRight5,
93122
93331
  Bot as Bot32,
93123
- Check as Check47,
93332
+ Check as Check48,
93124
93333
  ChevronRight as ChevronRight33,
93125
93334
  Globe as Globe10,
93126
93335
  KeyRound as KeyRound2,
@@ -93371,7 +93580,7 @@ function SetupScreen() {
93371
93580
  ] })
93372
93581
  ] }),
93373
93582
  hasAnyKey && selectedProvider ? /* @__PURE__ */ jsxs271("span", { className: "text-xs text-success/80", children: [
93374
- /* @__PURE__ */ jsx282(Check47, { className: "h-3 w-3 inline-block mr-1" }),
93583
+ /* @__PURE__ */ jsx282(Check48, { className: "h-3 w-3 inline-block mr-1" }),
93375
93584
  t("setup:screen.header.continue")
93376
93585
  ] }) : null
93377
93586
  ] }),
@@ -93569,7 +93778,7 @@ function SetupScreen() {
93569
93778
  ))
93570
93779
  ] })
93571
93780
  ] }),
93572
- selectedModel === m.id && /* @__PURE__ */ jsx282("div", { className: "flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-primary", children: /* @__PURE__ */ jsx282(Check47, { className: "h-3 w-3 text-primary-foreground" }) })
93781
+ selectedModel === m.id && /* @__PURE__ */ jsx282("div", { className: "flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-primary", children: /* @__PURE__ */ jsx282(Check48, { className: "h-3 w-3 text-primary-foreground" }) })
93573
93782
  ] })
93574
93783
  },
93575
93784
  m.id
@@ -93599,7 +93808,7 @@ function SetupScreen() {
93599
93808
  /* @__PURE__ */ jsx282(ArrowRight5, { className: "h-4 w-4 ml-2" })
93600
93809
  ] }),
93601
93810
  /* @__PURE__ */ jsxs271(Button, { onClick: handleSaveConfig, variant: "outline", className: "flex-1", size: "lg", children: [
93602
- /* @__PURE__ */ jsx282(Check47, { className: "h-4 w-4 mr-2" }),
93811
+ /* @__PURE__ */ jsx282(Check48, { className: "h-4 w-4 mr-2" }),
93603
93812
  t("setup:screen.start.saveConfig")
93604
93813
  ] })
93605
93814
  ] }),
@@ -93661,7 +93870,7 @@ __export(TerminalPanel_exports, {
93661
93870
  import { FitAddon } from "@xterm/addon-fit";
93662
93871
  import { Terminal as Terminal15 } from "@xterm/xterm";
93663
93872
  import "@xterm/xterm/css/xterm.css";
93664
- import { Plus as Plus29, RotateCcw as RotateCcw20, TerminalSquare as TerminalSquare7, Trash2 as Trash229, X as X61 } from "lucide-react";
93873
+ import { Plus as Plus29, RotateCcw as RotateCcw20, TerminalSquare as TerminalSquare7, Trash2 as Trash229, X as X62 } from "lucide-react";
93665
93874
  import {
93666
93875
  useEffect as useEffect142,
93667
93876
  useRef as useRef75,
@@ -93879,7 +94088,7 @@ function TerminalPanel({
93879
94088
  onClick: onClose,
93880
94089
  title: t("activity:terminal.closeDock"),
93881
94090
  className: "inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
93882
- children: /* @__PURE__ */ jsx283(X61, { className: "h-4 w-4" })
94091
+ children: /* @__PURE__ */ jsx283(X62, { className: "h-4 w-4" })
93883
94092
  }
93884
94093
  )
93885
94094
  ] })
@@ -93938,7 +94147,7 @@ function TerminalPanel({
93938
94147
  },
93939
94148
  className: "mr-1 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded text-muted-foreground opacity-70 hover:bg-accent hover:text-foreground hover:opacity-100",
93940
94149
  title: t("activity:terminal.closeTab", { name: tab.name }),
93941
- children: /* @__PURE__ */ jsx283(X61, { className: "h-3 w-3" })
94150
+ children: /* @__PURE__ */ jsx283(X62, { className: "h-3 w-3" })
93942
94151
  }
93943
94152
  )
93944
94153
  ]
@@ -94251,7 +94460,7 @@ var QueuePanel_exports = {};
94251
94460
  __export(QueuePanel_exports, {
94252
94461
  QueuePanel: () => QueuePanel
94253
94462
  });
94254
- import { ArrowDownAZ as ArrowDownAZ2, ArrowUpAZ as ArrowUpAZ2, Check as Check50, ListOrdered, Trash2 as Trash231, X as X63 } from "lucide-react";
94463
+ import { ArrowDownAZ as ArrowDownAZ2, ArrowUpAZ as ArrowUpAZ2, Check as Check51, ListOrdered, Trash2 as Trash231, X as X64 } from "lucide-react";
94255
94464
  import { useCallback as useCallback90, useLayoutEffect as useLayoutEffect9, useMemo as useMemo87, useRef as useRef76, useState as useState165 } from "react";
94256
94465
  import { jsx as jsx289, jsxs as jsxs278 } from "react/jsx-runtime";
94257
94466
  function QueuePanel({
@@ -94392,7 +94601,7 @@ function QueuePanel({
94392
94601
  title: t("activity:queue.dispatchedTitle"),
94393
94602
  "data-testid": `queue-dispatched-${sourceIdx}`,
94394
94603
  children: [
94395
- /* @__PURE__ */ jsx289(Check50, { className: "h-3 w-3" }),
94604
+ /* @__PURE__ */ jsx289(Check51, { className: "h-3 w-3" }),
94396
94605
  t("activity:queue.dispatchedLabel")
94397
94606
  ]
94398
94607
  }
@@ -94406,7 +94615,7 @@ function QueuePanel({
94406
94615
  className: "ml-1 p-1.5 rounded-md shrink-0 hover:bg-destructive/10 hover:text-destructive transition-colors",
94407
94616
  title: t("activity:queue.removeTitle"),
94408
94617
  "data-testid": `queue-remove-${sourceIdx}`,
94409
- children: /* @__PURE__ */ jsx289(X63, { className: "h-3.5 w-3.5" })
94618
+ children: /* @__PURE__ */ jsx289(X64, { className: "h-3.5 w-3.5" })
94410
94619
  }
94411
94620
  )
94412
94621
  ]
@@ -106505,7 +106714,7 @@ import { lazy as lazy5, Suspense as Suspense5 } from "react";
106505
106714
  import { useShallow as useShallow18 } from "zustand/react/shallow";
106506
106715
 
106507
106716
  // src/components/ChatView/index.tsx
106508
- import { ArrowDown as ArrowDown2, ArrowUp as ArrowUp2, Bot as Bot12, ChevronDown as ChevronDown16, ChevronUp as ChevronUp3, Square as Square6 } from "lucide-react";
106717
+ import { ArrowDown as ArrowDown2, ArrowUp as ArrowUp2, Bot as Bot12, ChevronDown as ChevronDown17, ChevronUp as ChevronUp3, Square as Square6 } from "lucide-react";
106509
106718
  import { lazy as lazy2, Suspense as Suspense2, useEffect as useEffect66 } from "react";
106510
106719
  import { VList as VList2 } from "virtua";
106511
106720
 
@@ -111689,10 +111898,130 @@ function SearchOverlay() {
111689
111898
 
111690
111899
  // src/components/ToolStatsModal.tsx
111691
111900
  init_i18n();
111901
+ import { Bot as Bot8, Clock as Clock5, Layers as Layers2, TriangleAlert as TriangleAlert3, Wrench as Wrench8, X as X15 } from "lucide-react";
111902
+ import { useEffect as useEffect55, useMemo as useMemo28, useState as useState45 } from "react";
111903
+
111904
+ // src/lib/tool-icon.ts
111905
+ import { getToolIcon, TOOL_ICON_CONFIG } from "@wrongstack/tools/tool-icons";
111906
+ import {
111907
+ Brain as Brain4,
111908
+ ClipboardList as ClipboardList2,
111909
+ Code2 as Code22,
111910
+ Database as Database2,
111911
+ FileEdit as FileEdit2,
111912
+ FileJson as FileJson2,
111913
+ FileText as FileText7,
111914
+ FlaskConical,
111915
+ FolderOpen as FolderOpen4,
111916
+ FolderTree,
111917
+ GitBranch as GitBranch2,
111918
+ GitCompare as GitCompare3,
111919
+ Globe as Globe4,
111920
+ Hammer,
111921
+ Hash as Hash2,
111922
+ ListChecks,
111923
+ ListTodo as ListTodo2,
111924
+ Package as Package2,
111925
+ ScrollText as ScrollText2,
111926
+ Search as Search7,
111927
+ Settings,
111928
+ Shell,
111929
+ Wrench as Wrench7
111930
+ } from "lucide-react";
111931
+ var TOOL_LUCIDE = {
111932
+ file: FileText7,
111933
+ edit: FileEdit2,
111934
+ search: Search7,
111935
+ folder: FolderOpen4,
111936
+ terminal: Shell,
111937
+ web: Globe4,
111938
+ git: GitBranch2,
111939
+ tree: FolderTree,
111940
+ code: Code22,
111941
+ test: FlaskConical,
111942
+ package: Package2,
111943
+ document: ScrollText2,
111944
+ scaffold: Hammer,
111945
+ todo: ListTodo2,
111946
+ plan: ClipboardList2,
111947
+ task: ListChecks,
111948
+ meta: Wrench7,
111949
+ index: Database2,
111950
+ json: FileJson2,
111951
+ diff: GitCompare3,
111952
+ logs: Hash2,
111953
+ settings: Settings,
111954
+ brain: Brain4,
111955
+ fallback: Wrench7
111956
+ };
111957
+ function getToolVisual(name) {
111958
+ const id = getToolIcon(name);
111959
+ return { Icon: TOOL_LUCIDE[id], color: TOOL_ICON_CONFIG[id].color };
111960
+ }
111961
+ var TOOL_CATEGORY_LABELS = {
111962
+ file: "file read/write",
111963
+ edit: "file editing",
111964
+ search: "search & grep",
111965
+ folder: "folder navigation",
111966
+ terminal: "shell commands",
111967
+ web: "web fetch",
111968
+ git: "git operations",
111969
+ tree: "directory tree",
111970
+ code: "code quality",
111971
+ test: "testing",
111972
+ package: "package management",
111973
+ document: "documentation",
111974
+ scaffold: "project scaffolding",
111975
+ todo: "todo tracking",
111976
+ plan: "planning",
111977
+ task: "task management",
111978
+ meta: "tool orchestration",
111979
+ index: "code indexing",
111980
+ json: "JSON data",
111981
+ diff: "diff & patch",
111982
+ logs: "log viewing",
111983
+ settings: "configuration",
111984
+ brain: "memory",
111985
+ fallback: "external tool"
111986
+ };
111987
+ function getToolTooltip(name) {
111988
+ const id = getToolIcon(name);
111989
+ const colorName = hexToColorName(TOOL_ICON_CONFIG[id].color);
111990
+ const category = TOOL_CATEGORY_LABELS[id];
111991
+ return `${category} \u2014 ${colorName}`;
111992
+ }
111993
+ function hexToColorName(hex) {
111994
+ const colors = {
111995
+ "#60a5fa": "blue",
111996
+ "#fbbf24": "amber",
111997
+ "#a78bfa": "violet",
111998
+ "#38bdf8": "sky",
111999
+ "#67e8f9": "cyan-light",
112000
+ "#a3e635": "lime",
112001
+ "#34d399": "emerald",
112002
+ "#22d3ee": "cyan",
112003
+ "#818cf8": "indigo",
112004
+ "#4ade80": "green",
112005
+ "#f472b6": "pink",
112006
+ "#94a3b8": "slate",
112007
+ "#c084fc": "purple",
112008
+ "#facc15": "yellow",
112009
+ "#2dd4bf": "teal",
112010
+ "#5eead4": "teal-light",
112011
+ "#cbd5e1": "slate-light",
112012
+ "#06b6d4": "cyan-dark",
112013
+ "#eab308": "yellow-dark",
112014
+ "#93c5fd": "blue-light",
112015
+ "#a3a3a3": "neutral",
112016
+ "#9ca3af": "gray",
112017
+ "#e879f9": "fuchsia"
112018
+ };
112019
+ return colors[hex] ?? "colored";
112020
+ }
112021
+
112022
+ // src/components/ToolStatsModal.tsx
111692
112023
  init_utils();
111693
112024
  init_stores();
111694
- import { Bot as Bot8, Clock as Clock5, Layers as Layers2, TriangleAlert as TriangleAlert3, Wrench as Wrench7, X as X15 } from "lucide-react";
111695
- import { useEffect as useEffect55, useMemo as useMemo28, useState as useState45 } from "react";
111696
112025
  import { jsx as jsx72, jsxs as jsxs67 } from "react/jsx-runtime";
111697
112026
  function emptyTotals() {
111698
112027
  return { started: 0, ok: 0, failed: 0, totalMs: 0 };
@@ -111715,11 +112044,24 @@ function formatMs(ms) {
111715
112044
  if (ms < 1e3) return `${Math.round(ms)}ms`;
111716
112045
  return `${(ms / 1e3).toFixed(1)}s`;
111717
112046
  }
111718
- function RatioBar({
111719
- ok,
111720
- failed,
111721
- inFlight
111722
- }) {
112047
+ function toolDisplayName(name) {
112048
+ const knownNames = {
112049
+ bash: "Shell command",
112050
+ cat: "Read file",
112051
+ edit: "Edit file",
112052
+ glob: "Find files",
112053
+ grep: "Search text",
112054
+ read: "Read file",
112055
+ web_fetch: "Fetch URL",
112056
+ web_search: "Web search",
112057
+ write: "Write file"
112058
+ };
112059
+ const normalized = name.toLowerCase();
112060
+ const known = knownNames[normalized];
112061
+ if (known) return known;
112062
+ return name.replace(/^mcp__/, "").replace(/__/g, " \xB7 ").replace(/[_-]+/g, " ").replace(/\b\w/g, (letter) => letter.toUpperCase());
112063
+ }
112064
+ function RatioBar({ ok, failed, inFlight }) {
111723
112065
  const total = Math.max(1, ok + failed + inFlight);
111724
112066
  return /* @__PURE__ */ jsxs67("span", { className: "relative inline-block h-2 w-full min-w-16 overflow-hidden rounded-full bg-muted/60 align-middle ring-1 ring-inset ring-border/20", children: [
111725
112067
  /* @__PURE__ */ jsx72(
@@ -111747,17 +112089,32 @@ function StatChip({ label, value, tone: tone3 }) {
111747
112089
  function ToolRow({ name, bucket }) {
111748
112090
  const completed = bucket.ok + bucket.failed;
111749
112091
  const avg = completed > 0 ? bucket.totalMs / completed : 0;
111750
- return /* @__PURE__ */ jsxs67("div", { className: "flex items-center gap-2 px-2 py-1 text-xs rounded hover:bg-muted/40 transition-colors", children: [
111751
- /* @__PURE__ */ jsx72(Wrench7, { className: "h-3 w-3 shrink-0 text-muted-foreground" }),
111752
- /* @__PURE__ */ jsx72("span", { className: "font-mono truncate flex-1 min-w-0", title: name, children: name }),
111753
- /* @__PURE__ */ jsxs67("span", { className: "tabular-nums text-muted-foreground w-12 text-right", children: [
112092
+ const { Icon: Icon2, color } = getToolVisual(name);
112093
+ const label = toolDisplayName(name);
112094
+ return /* @__PURE__ */ jsxs67("div", { className: "grid grid-cols-[minmax(9rem,1.15fr)_minmax(5rem,1fr)_3.5rem_4rem] items-center gap-x-3 gap-y-1 rounded-md px-2.5 py-2 text-xs transition-colors hover:bg-muted/50 sm:grid-cols-[minmax(11rem,1.2fr)_minmax(7rem,1.5fr)_3.5rem_3.5rem_4rem]", children: [
112095
+ /* @__PURE__ */ jsxs67("div", { className: "flex min-w-0 items-center gap-2", children: [
112096
+ /* @__PURE__ */ jsx72("span", { className: "grid h-6 w-6 shrink-0 place-items-center rounded-md bg-background ring-1 ring-inset ring-border/50", children: /* @__PURE__ */ jsx72(Icon2, { className: "h-3.5 w-3.5", style: { color } }) }),
112097
+ /* @__PURE__ */ jsxs67("span", { className: "min-w-0", children: [
112098
+ /* @__PURE__ */ jsx72("span", { className: "block truncate font-medium text-foreground", title: name, children: label }),
112099
+ /* @__PURE__ */ jsx72("span", { className: "block truncate font-mono text-[10px] text-muted-foreground", title: name, children: name })
112100
+ ] })
112101
+ ] }),
112102
+ /* @__PURE__ */ jsx72("div", { className: "hidden sm:block", children: /* @__PURE__ */ jsx72(RatioBar, { ok: bucket.ok, failed: bucket.failed, inFlight: 0 }) }),
112103
+ /* @__PURE__ */ jsxs67("span", { className: "text-right font-mono tabular-nums text-muted-foreground", title: "Calls", children: [
111754
112104
  bucket.started,
111755
112105
  "\xD7"
111756
112106
  ] }),
111757
- /* @__PURE__ */ jsx72(RatioBar, { ok: bucket.ok, failed: bucket.failed, inFlight: 0 }),
111758
- /* @__PURE__ */ jsx72("span", { className: "tabular-nums text-success w-8 text-right", children: bucket.ok }),
111759
- /* @__PURE__ */ jsx72("span", { className: "tabular-nums text-destructive w-8 text-right", children: bucket.failed }),
111760
- /* @__PURE__ */ jsx72("span", { className: "tabular-nums text-muted-foreground w-14 text-right", children: formatMs(avg) })
112107
+ /* @__PURE__ */ jsx72(
112108
+ "span",
112109
+ {
112110
+ className: cn(
112111
+ "text-right font-mono tabular-nums",
112112
+ bucket.failed > 0 ? "text-destructive" : "text-success"
112113
+ ),
112114
+ children: formatPct(successPct(bucket.ok, bucket.failed))
112115
+ }
112116
+ ),
112117
+ /* @__PURE__ */ jsx72("span", { className: "text-right font-mono tabular-nums text-muted-foreground", children: formatMs(avg) })
111761
112118
  ] });
111762
112119
  }
111763
112120
  function ToolStatsModal({ open, onClose }) {
@@ -111819,13 +112176,13 @@ function ToolStatsModal({ open, onClose }) {
111819
112176
  {
111820
112177
  "aria-label": t("chat:toolStats.title", "Tool call statistics"),
111821
112178
  className: cn(
111822
- "flex max-h-[82vh] w-full max-w-2xl flex-col overflow-hidden rounded-xl border border-border/70 bg-card shadow-2xl transition-transform duration-200",
112179
+ "flex max-h-[86vh] w-full max-w-4xl flex-col overflow-hidden rounded-xl border border-border/70 bg-card shadow-2xl transition-transform duration-200",
111823
112180
  animateIn ? "scale-100" : "scale-95"
111824
112181
  ),
111825
112182
  onClick: (e) => e.stopPropagation(),
111826
112183
  children: [
111827
112184
  /* @__PURE__ */ jsxs67("div", { className: "flex items-center gap-2 border-b border-border/60 px-4 py-3", children: [
111828
- /* @__PURE__ */ jsx72(Wrench7, { className: "h-4 w-4 text-primary" }),
112185
+ /* @__PURE__ */ jsx72(Wrench8, { className: "h-4 w-4 text-primary" }),
111829
112186
  /* @__PURE__ */ jsx72("h2", { className: "text-sm font-semibold", children: t("chat:toolStats.title", "Tool call statistics") }),
111830
112187
  /* @__PURE__ */ jsx72("span", { className: "ml-auto text-[10px] text-muted-foreground", children: t("chat:toolStats.liveScope", "This page \xB7 live + closed sessions") }),
111831
112188
  /* @__PURE__ */ jsx72(
@@ -111840,7 +112197,7 @@ function ToolStatsModal({ open, onClose }) {
111840
112197
  )
111841
112198
  ] }),
111842
112199
  /* @__PURE__ */ jsxs67("div", { className: "flex-1 space-y-4 overflow-y-auto overscroll-contain p-4", children: [
111843
- /* @__PURE__ */ jsxs67("div", { className: "flex gap-2", children: [
112200
+ /* @__PURE__ */ jsxs67("div", { className: "grid grid-cols-2 gap-2 sm:grid-cols-3 lg:grid-cols-6", children: [
111844
112201
  /* @__PURE__ */ jsx72(
111845
112202
  StatChip,
111846
112203
  {
@@ -111848,7 +112205,14 @@ function ToolStatsModal({ open, onClose }) {
111848
112205
  value: totals.started.toLocaleString()
111849
112206
  }
111850
112207
  ),
111851
- /* @__PURE__ */ jsx72(StatChip, { label: t("chat:toolStats.ok", "Success"), value: `${totals.ok}`, tone: "text-success" }),
112208
+ /* @__PURE__ */ jsx72(
112209
+ StatChip,
112210
+ {
112211
+ label: t("chat:toolStats.ok", "Success"),
112212
+ value: `${totals.ok}`,
112213
+ tone: "text-success"
112214
+ }
112215
+ ),
111852
112216
  /* @__PURE__ */ jsx72(
111853
112217
  StatChip,
111854
112218
  {
@@ -111881,14 +112245,7 @@ function ToolStatsModal({ open, onClose }) {
111881
112245
  }
111882
112246
  )
111883
112247
  ] }),
111884
- /* @__PURE__ */ jsx72(
111885
- RatioBar,
111886
- {
111887
- ok: totals.ok,
111888
- failed: totals.failed,
111889
- inFlight: totals.inFlight
111890
- }
111891
- ),
112248
+ /* @__PURE__ */ jsx72(RatioBar, { ok: totals.ok, failed: totals.failed, inFlight: totals.inFlight }),
111892
112249
  /* @__PURE__ */ jsxs67("div", { children: [
111893
112250
  /* @__PURE__ */ jsxs67("h3", { className: "mb-1.5 flex items-center gap-1.5 text-xs font-bold uppercase tracking-wider text-foreground/80", children: [
111894
112251
  /* @__PURE__ */ jsx72(Layers2, { className: "h-3.5 w-3.5 text-primary" }),
@@ -111897,7 +112254,14 @@ function ToolStatsModal({ open, onClose }) {
111897
112254
  !hasLive ? /* @__PURE__ */ jsx72("p", { className: "rounded-lg border border-border/40 bg-muted/20 px-3 py-4 text-center text-xs text-muted-foreground", children: t(
111898
112255
  "chat:toolStats.noLiveData",
111899
112256
  "No tool calls recorded yet on this page. Run a prompt \u2014 stats appear here live, per tab."
111900
- ) }) : /* @__PURE__ */ jsx72("div", { className: "space-y-2", children: liveSessions.map((session) => /* @__PURE__ */ jsx72(SessionCard, { session, label: sessionLabel(session.sessionId, nicknames) }, session.sessionId)) })
112257
+ ) }) : /* @__PURE__ */ jsx72("div", { className: "space-y-2", children: liveSessions.map((session) => /* @__PURE__ */ jsx72(
112258
+ SessionCard,
112259
+ {
112260
+ session,
112261
+ label: sessionLabel(session.sessionId, nicknames)
112262
+ },
112263
+ session.sessionId
112264
+ )) })
111901
112265
  ] }),
111902
112266
  pastSessions.length > 0 && /* @__PURE__ */ jsxs67("div", { children: [
111903
112267
  /* @__PURE__ */ jsxs67("h3", { className: "mb-1.5 flex items-center gap-1.5 text-xs font-bold uppercase tracking-wider text-foreground/80", children: [
@@ -111944,10 +112308,7 @@ function SessionCard({ session, label }) {
111944
112308
  () => Object.entries(session.perTool).sort(([, a], [, b]) => b.started - a.started),
111945
112309
  [session.perTool]
111946
112310
  );
111947
- const agentEntries = useMemo28(
111948
- () => Object.entries(session.perAgent),
111949
- [session.perAgent]
111950
- );
112311
+ const agentEntries = useMemo28(() => Object.entries(session.perAgent), [session.perAgent]);
111951
112312
  const agentToAgent = agentEntries.filter(([key]) => key !== LEADER_AGENT_KEY);
111952
112313
  const leader = session.perAgent[LEADER_AGENT_KEY];
111953
112314
  const totals = useMemo28(() => {
@@ -111971,26 +112332,28 @@ function SessionCard({ session, label }) {
111971
112332
  ] }),
111972
112333
  /* @__PURE__ */ jsx72("span", { className: "w-24 shrink-0", children: /* @__PURE__ */ jsx72(RatioBar, { ok: totals.ok, failed: totals.failed, inFlight }) })
111973
112334
  ] }),
111974
- /* @__PURE__ */ jsx72("div", { className: "space-y-0.5", children: tools.map(([name, bucket]) => /* @__PURE__ */ jsx72(ToolRow, { name, bucket }, name)) }),
112335
+ /* @__PURE__ */ jsxs67("div", { className: "overflow-hidden rounded-lg border border-border/40 bg-background/30", children: [
112336
+ /* @__PURE__ */ jsxs67("div", { className: "grid grid-cols-[minmax(9rem,1.15fr)_3.5rem_4rem] gap-x-3 border-b border-border/40 bg-muted/30 px-2.5 py-1.5 text-[10px] font-semibold uppercase tracking-wider text-muted-foreground sm:grid-cols-[minmax(11rem,1.2fr)_minmax(7rem,1.5fr)_3.5rem_3.5rem_4rem]", children: [
112337
+ /* @__PURE__ */ jsx72("span", { children: t("chat:toolStats.tool", "Tool") }),
112338
+ /* @__PURE__ */ jsx72("span", { className: "hidden sm:block", children: t("chat:toolStats.outcome", "Outcome") }),
112339
+ /* @__PURE__ */ jsx72("span", { className: "text-right", children: t("chat:toolStats.calls", "Calls") }),
112340
+ /* @__PURE__ */ jsx72("span", { className: "text-right", children: t("chat:toolStats.successRate", "Success rate") }),
112341
+ /* @__PURE__ */ jsx72("span", { className: "text-right", children: t("chat:toolStats.average", "Avg.") })
112342
+ ] }),
112343
+ /* @__PURE__ */ jsx72("div", { className: "divide-y divide-border/30", children: tools.map(([name, bucket]) => /* @__PURE__ */ jsx72(ToolRow, { name, bucket }, name)) })
112344
+ ] }),
111975
112345
  (agentToAgent.length > 0 || d.started > 0) && /* @__PURE__ */ jsxs67("div", { className: "mt-2 rounded border border-border/40 bg-background/40 p-2", children: [
111976
112346
  /* @__PURE__ */ jsxs67("div", { className: "mb-1 flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-wider text-muted-foreground", children: [
111977
112347
  /* @__PURE__ */ jsx72(Bot8, { className: "h-3 w-3" }),
111978
112348
  t("chat:toolStats.agentToAgent", "Agent-to-agent")
111979
112349
  ] }),
111980
- agentToAgent.map(([agent, bucket]) => /* @__PURE__ */ jsxs67(
111981
- "div",
111982
- {
111983
- className: "flex items-center gap-2 px-1 py-0.5 text-xs",
111984
- children: [
111985
- /* @__PURE__ */ jsx72(Bot8, { className: "h-3 w-3 shrink-0 text-info" }),
111986
- /* @__PURE__ */ jsx72("span", { className: "font-mono truncate flex-1 min-w-0", title: agent, children: agent }),
111987
- /* @__PURE__ */ jsx72(RatioBar, { ok: bucket.ok, failed: bucket.failed, inFlight: 0 }),
111988
- /* @__PURE__ */ jsx72("span", { className: "tabular-nums text-success w-8 text-right", children: bucket.ok }),
111989
- /* @__PURE__ */ jsx72("span", { className: "tabular-nums text-destructive w-8 text-right", children: bucket.failed })
111990
- ]
111991
- },
111992
- agent
111993
- )),
112350
+ agentToAgent.map(([agent, bucket]) => /* @__PURE__ */ jsxs67("div", { className: "flex items-center gap-2 px-1 py-0.5 text-xs", children: [
112351
+ /* @__PURE__ */ jsx72(Bot8, { className: "h-3 w-3 shrink-0 text-info" }),
112352
+ /* @__PURE__ */ jsx72("span", { className: "font-mono truncate flex-1 min-w-0", title: agent, children: agent }),
112353
+ /* @__PURE__ */ jsx72(RatioBar, { ok: bucket.ok, failed: bucket.failed, inFlight: 0 }),
112354
+ /* @__PURE__ */ jsx72("span", { className: "tabular-nums text-success w-8 text-right", children: bucket.ok }),
112355
+ /* @__PURE__ */ jsx72("span", { className: "tabular-nums text-destructive w-8 text-right", children: bucket.failed })
112356
+ ] }, agent)),
111994
112357
  d.started > 0 && /* @__PURE__ */ jsxs67("div", { className: "mt-1 flex items-center gap-1.5 px-1 text-[11px] text-muted-foreground", children: [
111995
112358
  /* @__PURE__ */ jsx72(
111996
112359
  TriangleAlert3,
@@ -112017,14 +112380,75 @@ function SessionCard({ session, label }) {
112017
112380
  // src/components/WelcomeScreen.tsx
112018
112381
  init_i18n();
112019
112382
  init_bug_hunt_message();
112383
+ import { ArrowRight as ArrowRight3, Crosshair, Gauge as Gauge2, KeyRound, Loader2 as Loader212, ShieldOff } from "lucide-react";
112384
+ import { useCallback as useCallback21, useEffect as useEffect56, useState as useState46 } from "react";
112385
+ import { useShallow as useShallow7 } from "zustand/react/shallow";
112386
+
112387
+ // src/lib/launch-builtin-round.ts
112388
+ function launchBuiltinRound(options) {
112389
+ const { client: client2, slug } = options;
112390
+ let settled = false;
112391
+ let policyOff = () => {
112392
+ };
112393
+ let contentOff = () => {
112394
+ };
112395
+ const finish = (next) => {
112396
+ if (settled) return;
112397
+ settled = true;
112398
+ clearTimeout(timeout);
112399
+ policyOff();
112400
+ contentOff();
112401
+ options.onSettle(next);
112402
+ };
112403
+ const timeout = setTimeout(() => finish("error"), options.timeoutMs ?? 8e3);
112404
+ const requestPrompt = () => {
112405
+ contentOff = client2.on("prompts.content", (message) => {
112406
+ const payload = message.payload;
112407
+ if (payload?.slug !== slug) return;
112408
+ const content = payload.content?.trim() ?? "";
112409
+ if (!payload.found || !content) {
112410
+ finish("error");
112411
+ return;
112412
+ }
112413
+ const text4 = options.compose(content);
112414
+ const id = client2.sendMessage(text4);
112415
+ options.onSent(id, text4);
112416
+ client2.send({ type: "prompts.used", payload: { slug } });
112417
+ finish("idle");
112418
+ });
112419
+ client2.send({ type: "prompts.content", payload: { slug } });
112420
+ };
112421
+ if (!options.requireSoloSession || !options.subagentsAllowed) {
112422
+ requestPrompt();
112423
+ return;
112424
+ }
112425
+ policyOff = client2.on("prefs.updated", (message) => {
112426
+ const payload = message.payload;
112427
+ if (options.sessionId && payload["sessionId"] !== options.sessionId) return;
112428
+ if (typeof payload["subagentsAllowed"] !== "boolean") return;
112429
+ if (payload["subagentsAllowed"] !== false) {
112430
+ finish("error");
112431
+ return;
112432
+ }
112433
+ policyOff();
112434
+ policyOff = () => {
112435
+ };
112436
+ requestPrompt();
112437
+ });
112438
+ options.setPrefs({ subagentsAllowed: false });
112439
+ client2.send({
112440
+ type: "prefs.update",
112441
+ payload: { subagentsAllowed: false, ...options.sessionId ? { sessionId: options.sessionId } : {} }
112442
+ });
112443
+ }
112444
+
112445
+ // src/components/WelcomeScreen.tsx
112446
+ init_perf_run_message();
112020
112447
  init_utils();
112021
112448
  init_view_navigation();
112022
112449
  init_ws_client();
112023
112450
  init_stores();
112024
112451
  init_local_prefs();
112025
- import { ArrowRight as ArrowRight3, Crosshair, KeyRound, Loader2 as Loader212, ShieldOff } from "lucide-react";
112026
- import { useCallback as useCallback21, useEffect as useEffect56, useState as useState46 } from "react";
112027
- import { useShallow as useShallow7 } from "zustand/react/shallow";
112028
112452
  import { jsx as jsx73, jsxs as jsxs68 } from "react/jsx-runtime";
112029
112453
  var ELITE_BUG_HUNTER_SLUG = "elite-bug-hunter";
112030
112454
  function directoryPaths(tree) {
@@ -112062,6 +112486,10 @@ function WelcomeScreen() {
112062
112486
  const [bugHuntState, setBugHuntState] = useState46("idle");
112063
112487
  const [bugHuntScope, setBugHuntScope] = useState46("");
112064
112488
  const [bugHuntMaxBugs, setBugHuntMaxBugs] = useState46(1);
112489
+ const [perfState, setPerfState] = useState46("idle");
112490
+ const [perfScope, setPerfScope] = useState46("");
112491
+ const [perfMode, setPerfMode] = useState46("ratchet");
112492
+ const [perfMetric, setPerfMetric] = useState46("");
112065
112493
  const scopeDirectories = directoryPaths(projectTree);
112066
112494
  useEffect56(() => {
112067
112495
  if (!wsConnected) return;
@@ -112086,71 +112514,33 @@ function WelcomeScreen() {
112086
112514
  const client2 = getWSClient(wsUrl);
112087
112515
  if (!client2.isConnected || bugHuntState === "loading") return;
112088
112516
  setBugHuntState("loading");
112089
- let settled = false;
112090
- let policyOff = () => {
112091
- };
112092
- let contentOff = () => {
112093
- };
112094
- const finish = (next) => {
112095
- if (settled) return;
112096
- settled = true;
112097
- clearTimeout(timeout);
112098
- policyOff();
112099
- contentOff();
112100
- setBugHuntState(next);
112101
- };
112102
- const timeout = setTimeout(() => finish("error"), 8e3);
112103
- const requestPrompt = () => {
112104
- contentOff = client2.on("prompts.content", (message) => {
112105
- const payload = message.payload;
112106
- if (payload?.slug !== ELITE_BUG_HUNTER_SLUG) return;
112107
- const content = payload.content?.trim() ?? "";
112108
- if (!payload.found || !content) {
112109
- finish("error");
112110
- return;
112111
- }
112517
+ launchBuiltinRound({
112518
+ client: client2,
112519
+ slug: ELITE_BUG_HUNTER_SLUG,
112520
+ requireSoloSession: true,
112521
+ subagentsAllowed,
112522
+ sessionId,
112523
+ setPrefs,
112524
+ compose: (content) => {
112112
112525
  const scopeText = bugHuntScope ? `${bugHuntScope} and all of its descendants` : "the whole project";
112113
- const runPrompt = buildBugHuntMessage(
112526
+ return buildBugHuntMessage(
112114
112527
  `${content}
112115
112528
 
112116
112529
  ## WebUI run configuration (mandatory)
112117
112530
  This run may complete up to ${bugHuntMaxBugs} proven bug ${bugHuntMaxBugs === 1 ? "round" : "rounds"}. Work on only one bug at a time; after its proof, fix, verification, and cleanup are complete, continue to the next round only while below this limit. Stop early when no further proven bug is available. Stay strictly within ${scopeText}. This configuration overrides the prompt's one-issue total limit, but not its one-issue-per-round discipline.`,
112118
112531
  { scope: bugHuntScope, maxBugs: bugHuntMaxBugs }
112119
112532
  );
112120
- const id = client2.sendMessage(runPrompt);
112533
+ },
112534
+ onSent: (id, content) => {
112121
112535
  addMessage({
112122
112536
  id,
112123
112537
  role: "user",
112124
- content: runPrompt,
112538
+ content,
112125
112539
  bugHunt: { scope: bugHuntScope, maxBugs: bugHuntMaxBugs }
112126
112540
  });
112127
112541
  setLoading(true);
112128
- client2.send({ type: "prompts.used", payload: { slug: ELITE_BUG_HUNTER_SLUG } });
112129
- finish("idle");
112130
- });
112131
- client2.send({ type: "prompts.content", payload: { slug: ELITE_BUG_HUNTER_SLUG } });
112132
- };
112133
- if (!subagentsAllowed) {
112134
- requestPrompt();
112135
- return;
112136
- }
112137
- policyOff = client2.on("prefs.updated", (message) => {
112138
- const payload = message.payload;
112139
- if (sessionId && payload["sessionId"] !== sessionId) return;
112140
- if (typeof payload["subagentsAllowed"] !== "boolean") return;
112141
- if (payload["subagentsAllowed"] !== false) {
112142
- finish("error");
112143
- return;
112144
- }
112145
- policyOff();
112146
- policyOff = () => {
112147
- };
112148
- requestPrompt();
112149
- });
112150
- setPrefs({ subagentsAllowed: false });
112151
- client2.send({
112152
- type: "prefs.update",
112153
- payload: { subagentsAllowed: false, ...sessionId ? { sessionId } : {} }
112542
+ },
112543
+ onSettle: setBugHuntState
112154
112544
  });
112155
112545
  }, [
112156
112546
  addMessage,
@@ -112163,6 +112553,54 @@ This run may complete up to ${bugHuntMaxBugs} proven bug ${bugHuntMaxBugs === 1
112163
112553
  subagentsAllowed,
112164
112554
  wsUrl
112165
112555
  ]);
112556
+ const startPerfRun = useCallback21(() => {
112557
+ const client2 = getWSClient(wsUrl);
112558
+ if (!client2.isConnected || perfState === "loading") return;
112559
+ setPerfState("loading");
112560
+ launchBuiltinRound({
112561
+ client: client2,
112562
+ slug: PERF_MODE_SLUGS[perfMode],
112563
+ // Only the modes that may edit production code force a solo session; an
112564
+ // audit or a triage is read-only and has no attribution to protect.
112565
+ requireSoloSession: PERF_MUTATING_MODES.has(perfMode),
112566
+ subagentsAllowed,
112567
+ sessionId,
112568
+ setPrefs,
112569
+ compose: (content) => {
112570
+ const scopeText = perfScope ? `${perfScope} and all of its descendants` : "the whole project";
112571
+ const metricLine = perfMetric ? `Optimise for ${PERF_RUN_METRIC_LABELS[perfMetric]} (\`${perfMetric}\`). A change that improves another metric while making this one worse is a regression for this round.` : "Pick the metric the user actually feels for this workload, name it explicitly, and state why it is the one that matters before you measure anything.";
112572
+ return buildPerfRunMessage(
112573
+ `${content}
112574
+
112575
+ ## WebUI run configuration (mandatory)
112576
+ Stay strictly within ${scopeText}. ${metricLine}
112577
+ Record the baseline, every attempt, and every keep/revert verdict in \`PERF_LOG.md\` as you go \u2014 a result that is not in the ledger did not happen.`,
112578
+ { scope: perfScope, mode: perfMode, metric: perfMetric }
112579
+ );
112580
+ },
112581
+ onSent: (id, content) => {
112582
+ addMessage({
112583
+ id,
112584
+ role: "user",
112585
+ content,
112586
+ perfRun: { scope: perfScope, mode: perfMode, metric: perfMetric }
112587
+ });
112588
+ setLoading(true);
112589
+ },
112590
+ onSettle: setPerfState
112591
+ });
112592
+ }, [
112593
+ addMessage,
112594
+ perfMetric,
112595
+ perfMode,
112596
+ perfScope,
112597
+ perfState,
112598
+ sessionId,
112599
+ setLoading,
112600
+ setPrefs,
112601
+ subagentsAllowed,
112602
+ wsUrl
112603
+ ]);
112166
112604
  const toggleSoloSession = useCallback21(() => {
112167
112605
  const allowed = !subagentsAllowed;
112168
112606
  setPrefs({ subagentsAllowed: allowed });
@@ -112276,7 +112714,76 @@ This run may complete up to ${bugHuntMaxBugs} proven bug ${bugHuntMaxBugs === 1
112276
112714
  )
112277
112715
  ] })
112278
112716
  ] }),
112279
- bugHuntState === "error" && /* @__PURE__ */ jsx73("p", { className: "mt-2 text-xs text-destructive", role: "alert", children: t("setup:welcome.bugHunterError") })
112717
+ bugHuntState === "error" && /* @__PURE__ */ jsx73("p", { className: "mt-2 text-xs text-destructive", role: "alert", children: t("setup:welcome.bugHunterError") }),
112718
+ /* @__PURE__ */ jsxs68("div", { className: "mt-3 rounded-md border border-primary/35 bg-primary/8 p-4", children: [
112719
+ /* @__PURE__ */ jsxs68("div", { className: "flex items-center gap-3", children: [
112720
+ /* @__PURE__ */ jsx73("span", { className: "flex h-9 w-9 shrink-0 items-center justify-center rounded-md bg-primary/15 text-primary", children: perfState === "loading" ? /* @__PURE__ */ jsx73(Loader212, { className: "h-5 w-5 animate-spin" }) : /* @__PURE__ */ jsx73(Gauge2, { className: "h-5 w-5" }) }),
112721
+ /* @__PURE__ */ jsxs68("span", { className: "min-w-0 flex-1", children: [
112722
+ /* @__PURE__ */ jsx73("span", { className: "block text-sm font-semibold", children: t("setup:welcome.perfTitle") }),
112723
+ /* @__PURE__ */ jsx73("span", { className: "mt-0.5 block text-xs leading-relaxed text-muted-foreground", children: t("setup:welcome.perfBody") })
112724
+ ] })
112725
+ ] }),
112726
+ /* @__PURE__ */ jsxs68("div", { className: "mt-3 grid gap-2 sm:grid-cols-[minmax(0,1fr)_minmax(0,1fr)]", children: [
112727
+ /* @__PURE__ */ jsx73("label", { className: "sr-only", htmlFor: "perf-scope", children: t("setup:welcome.perfScope") }),
112728
+ /* @__PURE__ */ jsxs68(
112729
+ "select",
112730
+ {
112731
+ id: "perf-scope",
112732
+ value: perfScope,
112733
+ onChange: (event) => setPerfScope(event.target.value),
112734
+ disabled: !wsConnected || perfState === "loading",
112735
+ className: "min-w-0 rounded-md border border-border bg-background px-3 py-2 text-sm",
112736
+ children: [
112737
+ /* @__PURE__ */ jsx73("option", { value: "", children: t("setup:welcome.perfWholeProject") }),
112738
+ scopeDirectories.map((path) => /* @__PURE__ */ jsx73("option", { value: path, children: t("setup:welcome.perfDirectoryScope", { path }) }, path))
112739
+ ]
112740
+ }
112741
+ ),
112742
+ /* @__PURE__ */ jsx73("label", { className: "sr-only", htmlFor: "perf-mode", children: t("setup:welcome.perfMode") }),
112743
+ /* @__PURE__ */ jsx73(
112744
+ "select",
112745
+ {
112746
+ id: "perf-mode",
112747
+ value: perfMode,
112748
+ onChange: (event) => setPerfMode(event.target.value),
112749
+ disabled: !wsConnected || perfState === "loading",
112750
+ className: "min-w-0 rounded-md border border-border bg-background px-3 py-2 text-sm",
112751
+ children: PERF_RUN_MODES.map((mode) => /* @__PURE__ */ jsx73("option", { value: mode, children: PERF_RUN_MODE_LABELS[mode] }, mode))
112752
+ }
112753
+ )
112754
+ ] }),
112755
+ /* @__PURE__ */ jsxs68("div", { className: "mt-2 grid gap-2 sm:grid-cols-[minmax(0,1fr)_auto]", children: [
112756
+ /* @__PURE__ */ jsx73("label", { className: "sr-only", htmlFor: "perf-metric", children: t("setup:welcome.perfMetric") }),
112757
+ /* @__PURE__ */ jsxs68(
112758
+ "select",
112759
+ {
112760
+ id: "perf-metric",
112761
+ value: perfMetric,
112762
+ onChange: (event) => setPerfMetric(event.target.value),
112763
+ disabled: !wsConnected || perfState === "loading",
112764
+ className: "min-w-0 rounded-md border border-border bg-background px-3 py-2 text-sm",
112765
+ children: [
112766
+ /* @__PURE__ */ jsx73("option", { value: "", children: t("setup:welcome.perfMetricAuto") }),
112767
+ PERF_RUN_METRICS.map((metric) => /* @__PURE__ */ jsx73("option", { value: metric, children: PERF_RUN_METRIC_LABELS[metric] }, metric))
112768
+ ]
112769
+ }
112770
+ ),
112771
+ /* @__PURE__ */ jsxs68(
112772
+ "button",
112773
+ {
112774
+ type: "button",
112775
+ onClick: startPerfRun,
112776
+ disabled: !wsConnected || savedCount === 0 || perfState === "loading",
112777
+ className: "group flex items-center justify-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-semibold text-primary-foreground transition-colors hover:bg-primary/90 disabled:cursor-not-allowed disabled:opacity-50",
112778
+ children: [
112779
+ t("setup:welcome.perfStart"),
112780
+ /* @__PURE__ */ jsx73(ArrowRight3, { className: "h-4 w-4 transition-transform group-hover:translate-x-0.5" })
112781
+ ]
112782
+ }
112783
+ )
112784
+ ] })
112785
+ ] }),
112786
+ perfState === "error" && /* @__PURE__ */ jsx73("p", { className: "mt-2 text-xs text-destructive", role: "alert", children: t("setup:welcome.perfError") })
112280
112787
  ] })
112281
112788
  ] })
112282
112789
  ] }),
@@ -112308,13 +112815,14 @@ This run may complete up to ${bugHuntMaxBugs} proven bug ${bugHuntMaxBugs === 1
112308
112815
  }
112309
112816
 
112310
112817
  // src/components/ChatView/AgentTabs.tsx
112818
+ init_dropdown_menu();
112311
112819
  init_i18n();
112312
112820
  init_agent_session();
112313
112821
  init_task_brief_preview();
112314
112822
  init_utils();
112315
112823
  init_ws_client();
112316
112824
  init_stores();
112317
- import { Bot as Bot9, CheckCircle2 as CheckCircle28, Crown as Crown5, Loader2 as Loader213, Square as Square4 } from "lucide-react";
112825
+ import { Bot as Bot9, Check as Check11, CheckCircle2 as CheckCircle28, ChevronDown as ChevronDown6, Crown as Crown5, Loader2 as Loader213, Square as Square4, X as X16 } from "lucide-react";
112318
112826
  import { useShallow as useShallow8 } from "zustand/react/shallow";
112319
112827
  import { jsx as jsx74, jsxs as jsxs69 } from "react/jsx-runtime";
112320
112828
  var TAB_LED = {
@@ -112324,6 +112832,56 @@ var TAB_LED = {
112324
112832
  timeout: { led: "bg-warning", pulse: false },
112325
112833
  stopped: { led: "bg-muted-foreground", pulse: false }
112326
112834
  };
112835
+ var MAX_INLINE_SUBAGENTS = 3;
112836
+ function SubagentTabButton({
112837
+ agent,
112838
+ active,
112839
+ onOpen,
112840
+ onRemove,
112841
+ removeLabel
112842
+ }) {
112843
+ const meta2 = TAB_LED[agent.status] ?? TAB_LED.stopped;
112844
+ return /* @__PURE__ */ jsxs69(
112845
+ "button",
112846
+ {
112847
+ type: "button",
112848
+ role: "tab",
112849
+ "aria-selected": active,
112850
+ title: agent.description ? taskBriefPreview(agent.description, 180) : agent.name,
112851
+ onClick: onOpen,
112852
+ className: cn(
112853
+ "flex shrink-0 items-center gap-1.5 rounded-md px-2 py-0.5 text-[11px] font-medium transition-colors border",
112854
+ active ? "bg-primary/15 text-primary border-primary/30 shadow-xs" : "text-muted-foreground border-transparent hover:bg-muted/50 hover:text-foreground"
112855
+ ),
112856
+ children: [
112857
+ /* @__PURE__ */ jsx74(
112858
+ "span",
112859
+ {
112860
+ className: cn("led shrink-0", meta2.led, meta2.pulse && "led-pulse"),
112861
+ "aria-hidden": "true"
112862
+ }
112863
+ ),
112864
+ /* @__PURE__ */ jsx74("span", { className: "max-w-[10rem] truncate", children: agent.name }),
112865
+ onRemove && /* @__PURE__ */ jsx74(
112866
+ "span",
112867
+ {
112868
+ role: "button",
112869
+ tabIndex: -1,
112870
+ "data-testid": "agent-tab-close",
112871
+ "aria-label": removeLabel,
112872
+ title: removeLabel,
112873
+ onClick: (e) => {
112874
+ e.stopPropagation();
112875
+ onRemove();
112876
+ },
112877
+ className: "-mr-0.5 flex shrink-0 items-center rounded-sm p-0.5 text-muted-foreground/60 transition-colors hover:bg-destructive/15 hover:text-destructive",
112878
+ children: /* @__PURE__ */ jsx74(X16, { className: "h-2.5 w-2.5", "aria-hidden": "true" })
112879
+ }
112880
+ )
112881
+ ]
112882
+ }
112883
+ );
112884
+ }
112327
112885
  function AgentTabs() {
112328
112886
  const { t } = useTranslation();
112329
112887
  const currentSessionId = useActiveSessionId();
@@ -112333,10 +112891,20 @@ function AgentTabs() {
112333
112891
  const leaderName = useFleetStore((s) => leaderId ? s.agents.get(leaderId)?.name : void 0);
112334
112892
  const focusId = useUIStore((s) => s.subagentChatFocusId);
112335
112893
  const setFocus = useUIStore((s) => s.setSubagentChatFocus);
112894
+ const removeAgent = useFleetStore((s) => s.removeAgent);
112336
112895
  const agents = allAgents.filter((a) => agentBelongsToSession(a.sessionId, currentSessionId));
112337
112896
  const subagents = agents.filter((a) => a.id !== leaderId);
112338
112897
  const runningSubs = subagents.filter((a) => a.status === "running").length;
112339
112898
  const finishedSubs = subagents.length - runningSubs;
112899
+ const inlineSubs = subagents.slice(0, MAX_INLINE_SUBAGENTS);
112900
+ const overflowSubs = subagents.slice(MAX_INLINE_SUBAGENTS);
112901
+ const overflowFocusActive = overflowSubs.some((a) => a.id === focusId);
112902
+ const anyOverflowRunning = overflowSubs.some((a) => a.status === "running");
112903
+ const openAgent = (id) => {
112904
+ setFocus(id, currentSessionId);
112905
+ useUIStore.getState().setCurrentView("chat");
112906
+ };
112907
+ const closeLabel = (name) => t("activity:agents.closeTab", { name });
112340
112908
  return /* @__PURE__ */ jsxs69(
112341
112909
  "div",
112342
112910
  {
@@ -112371,38 +112939,89 @@ function AgentTabs() {
112371
112939
  ]
112372
112940
  }
112373
112941
  ),
112374
- subagents.map((a) => {
112375
- const meta2 = TAB_LED[a.status] ?? TAB_LED.stopped;
112376
- const active = focusId === a.id;
112377
- return /* @__PURE__ */ jsxs69(
112942
+ inlineSubs.map((a) => /* @__PURE__ */ jsx74(
112943
+ SubagentTabButton,
112944
+ {
112945
+ agent: a,
112946
+ active: focusId === a.id,
112947
+ onOpen: () => openAgent(a.id),
112948
+ onRemove: a.status !== "running" ? () => removeAgent(a.id) : void 0,
112949
+ removeLabel: closeLabel(a.name)
112950
+ },
112951
+ a.id
112952
+ )),
112953
+ overflowSubs.length > 0 && /* @__PURE__ */ jsxs69(DropdownMenu, { children: [
112954
+ /* @__PURE__ */ jsx74(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs69(
112378
112955
  "button",
112379
112956
  {
112380
112957
  type: "button",
112381
- role: "tab",
112382
- "aria-selected": active,
112383
- title: a.description ? taskBriefPreview(a.description, 180) : a.name,
112384
- onClick: () => {
112385
- setFocus(a.id, currentSessionId);
112386
- useUIStore.getState().setCurrentView("chat");
112387
- },
112958
+ "data-testid": "agent-tabs-overflow",
112959
+ title: t("activity:agents.moreTabsTitle", { n: overflowSubs.length }),
112960
+ "aria-label": t("activity:agents.moreTabsTitle", { n: overflowSubs.length }),
112388
112961
  className: cn(
112389
- "flex shrink-0 items-center gap-1.5 rounded-md px-2 py-0.5 text-[11px] font-medium transition-colors border",
112390
- active ? "bg-primary/15 text-primary border-primary/30 shadow-xs" : "text-muted-foreground border-transparent hover:bg-muted/50 hover:text-foreground"
112962
+ "flex shrink-0 items-center gap-1 rounded-md px-2 py-0.5 text-[11px] font-medium transition-colors border",
112963
+ overflowFocusActive ? "bg-primary/15 text-primary border-primary/30 shadow-xs" : "text-muted-foreground border-transparent hover:bg-muted/50 hover:text-foreground"
112391
112964
  ),
112392
112965
  children: [
112393
112966
  /* @__PURE__ */ jsx74(
112394
112967
  "span",
112395
112968
  {
112396
- className: cn("led shrink-0", meta2.led, meta2.pulse && "led-pulse"),
112969
+ className: cn(
112970
+ "led shrink-0",
112971
+ anyOverflowRunning ? "bg-success led-pulse" : "bg-muted-foreground"
112972
+ ),
112397
112973
  "aria-hidden": "true"
112398
112974
  }
112399
112975
  ),
112400
- /* @__PURE__ */ jsx74("span", { className: "max-w-[10rem] truncate", children: a.name })
112976
+ /* @__PURE__ */ jsxs69("span", { className: "font-mono", children: [
112977
+ "+",
112978
+ overflowSubs.length
112979
+ ] }),
112980
+ /* @__PURE__ */ jsx74(ChevronDown6, { className: "h-3 w-3 shrink-0 opacity-60" })
112401
112981
  ]
112402
- },
112403
- a.id
112404
- );
112405
- })
112982
+ }
112983
+ ) }),
112984
+ /* @__PURE__ */ jsx74(DropdownMenuContent, { align: "start", className: "max-h-72 w-60 overflow-y-auto", children: overflowSubs.map((a) => {
112985
+ const meta2 = TAB_LED[a.status] ?? TAB_LED.stopped;
112986
+ const active = focusId === a.id;
112987
+ return /* @__PURE__ */ jsxs69(
112988
+ DropdownMenuItem,
112989
+ {
112990
+ "data-testid": "agent-tabs-overflow-item",
112991
+ title: a.description ? taskBriefPreview(a.description, 180) : a.name,
112992
+ onSelect: () => openAgent(a.id),
112993
+ children: [
112994
+ /* @__PURE__ */ jsx74(
112995
+ "span",
112996
+ {
112997
+ className: cn("led shrink-0", meta2.led, meta2.pulse && "led-pulse"),
112998
+ "aria-hidden": "true"
112999
+ }
113000
+ ),
113001
+ /* @__PURE__ */ jsx74("span", { className: "max-w-[12rem] flex-1 truncate", children: a.name }),
113002
+ active && /* @__PURE__ */ jsx74(Check11, { className: "h-3 w-3 shrink-0 text-primary", "aria-hidden": "true" }),
113003
+ a.status !== "running" && /* @__PURE__ */ jsx74(
113004
+ "span",
113005
+ {
113006
+ role: "button",
113007
+ tabIndex: -1,
113008
+ "data-testid": "agent-tab-close",
113009
+ "aria-label": closeLabel(a.name),
113010
+ title: closeLabel(a.name),
113011
+ onClick: (e) => {
113012
+ e.stopPropagation();
113013
+ removeAgent(a.id);
113014
+ },
113015
+ className: "flex shrink-0 items-center rounded-sm p-1 text-muted-foreground/60 transition-colors hover:bg-destructive/15 hover:text-destructive",
113016
+ children: /* @__PURE__ */ jsx74(X16, { className: "h-3 w-3", "aria-hidden": "true" })
113017
+ }
113018
+ )
113019
+ ]
113020
+ },
113021
+ a.id
113022
+ );
113023
+ }) })
113024
+ ] })
112406
113025
  ] }),
112407
113026
  /* @__PURE__ */ jsxs69("div", { className: "flex shrink-0 items-center gap-2 pl-2 border-l border-border/30", children: [
112408
113027
  isLoading ? /* @__PURE__ */ jsxs69("div", { className: "inline-flex items-center gap-1", children: [
@@ -112608,14 +113227,14 @@ init_utils();
112608
113227
  import {
112609
113228
  Activity as Activity5,
112610
113229
  AlertTriangle as AlertTriangle11,
112611
- Brain as Brain4,
112612
- ChevronDown as ChevronDown9,
113230
+ Brain as Brain5,
113231
+ ChevronDown as ChevronDown10,
112613
113232
  History as History4,
112614
113233
  PanelLeftOpen,
112615
113234
  Pencil as Pencil2,
112616
113235
  Terminal as Terminal4,
112617
113236
  Wand2 as Wand23,
112618
- Wrench as Wrench9,
113237
+ Wrench as Wrench10,
112619
113238
  Zap as Zap13
112620
113239
  } from "lucide-react";
112621
113240
 
@@ -112625,7 +113244,7 @@ init_i18n();
112625
113244
  import {
112626
113245
  Activity as Activity4,
112627
113246
  ArrowRightLeft,
112628
- ChevronDown as ChevronDown6,
113247
+ ChevronDown as ChevronDown7,
112629
113248
  Pause as Pause2,
112630
113249
  Play as Play2
112631
113250
  } from "lucide-react";
@@ -112707,7 +113326,7 @@ function AutonomyPicker({
112707
113326
  children: [
112708
113327
  current?.icon,
112709
113328
  !compact && /* @__PURE__ */ jsx77("span", { className: "truncate max-w-[7rem]", children: current ? t(`activity:autonomy.${current.labelKey}`) : value }),
112710
- /* @__PURE__ */ jsx77(ChevronDown6, { className: "h-3 w-3 opacity-60" })
113329
+ /* @__PURE__ */ jsx77(ChevronDown7, { className: "h-3 w-3 opacity-60" })
112711
113330
  ]
112712
113331
  }
112713
113332
  ),
@@ -112746,7 +113365,7 @@ init_utils();
112746
113365
  init_i18n();
112747
113366
  init_stores();
112748
113367
  import { expectDefined as expectDefined8 } from "@wrongstack/core/utils/expect-defined";
112749
- import { Check as Check11, ChevronDown as ChevronDown7, Gauge as Gauge2, Wrench as Wrench8, Zap as Zap12, FileSearch } from "lucide-react";
113368
+ import { Check as Check12, ChevronDown as ChevronDown8, Gauge as Gauge3, Wrench as Wrench9, Zap as Zap12, FileSearch } from "lucide-react";
112750
113369
  import { useCallback as useCallback22, useEffect as useEffect58, useRef as useRef26, useState as useState48 } from "react";
112751
113370
  import { jsx as jsx78, jsxs as jsxs73 } from "react/jsx-runtime";
112752
113371
  function ContextModePicker() {
@@ -112818,11 +113437,11 @@ function ContextModePicker() {
112818
113437
  ),
112819
113438
  title: t("activity:ctxMode.triggerTitle"),
112820
113439
  children: [
112821
- /* @__PURE__ */ jsx78(Gauge2, { className: "h-3 w-3" }),
113440
+ /* @__PURE__ */ jsx78(Gauge3, { className: "h-3 w-3" }),
112822
113441
  t("activity:ctxMode.ctxPrefix"),
112823
113442
  " ",
112824
113443
  /* @__PURE__ */ jsx78("span", { className: "font-mono", children: contextMode || active.id }),
112825
- /* @__PURE__ */ jsx78(ChevronDown7, { className: "h-3 w-3 opacity-60" })
113444
+ /* @__PURE__ */ jsx78(ChevronDown8, { className: "h-3 w-3 opacity-60" })
112826
113445
  ]
112827
113446
  }
112828
113447
  ),
@@ -112838,7 +113457,7 @@ function ContextModePicker() {
112838
113457
  opsOpen && "bg-accent/50 text-foreground"
112839
113458
  ),
112840
113459
  title: t("activity:ctxMode.opsHeading"),
112841
- children: /* @__PURE__ */ jsx78(Wrench8, { className: "h-3 w-3" })
113460
+ children: /* @__PURE__ */ jsx78(Wrench9, { className: "h-3 w-3" })
112842
113461
  }
112843
113462
  ),
112844
113463
  opsOpen && /* @__PURE__ */ jsxs73("div", { className: "absolute top-full right-0 mt-1 w-52 rounded-md border bg-popover shadow-lg z-40 py-1", children: [
@@ -112880,7 +113499,7 @@ function ContextModePicker() {
112880
113499
  onClick: repair,
112881
113500
  className: "w-full text-left px-3 py-2 hover:bg-accent/40 flex items-center gap-2",
112882
113501
  children: [
112883
- /* @__PURE__ */ jsx78(Wrench8, { className: "h-3.5 w-3.5 shrink-0 text-info" }),
113502
+ /* @__PURE__ */ jsx78(Wrench9, { className: "h-3.5 w-3.5 shrink-0 text-info" }),
112884
113503
  /* @__PURE__ */ jsxs73("div", { children: [
112885
113504
  /* @__PURE__ */ jsx78("div", { className: "text-xs", children: t("activity:ctxMode.repairContext") }),
112886
113505
  /* @__PURE__ */ jsx78("div", { className: "text-[10px] text-muted-foreground", children: t("activity:ctxMode.repairDesc") })
@@ -112926,7 +113545,7 @@ function ContextModePicker() {
112926
113545
  ),
112927
113546
  children: [
112928
113547
  /* @__PURE__ */ jsx78(
112929
- Check11,
113548
+ Check12,
112930
113549
  {
112931
113550
  className: cn(
112932
113551
  "h-3.5 w-3.5 mt-0.5 shrink-0",
@@ -113088,7 +113707,7 @@ init_useWebSocket();
113088
113707
  init_utils();
113089
113708
  init_i18n();
113090
113709
  init_stores();
113091
- import { Check as Check12, ChevronDown as ChevronDown8 } from "lucide-react";
113710
+ import { Check as Check13, ChevronDown as ChevronDown9 } from "lucide-react";
113092
113711
  import { useEffect as useEffect60, useRef as useRef28, useState as useState50 } from "react";
113093
113712
  import { jsx as jsx80, jsxs as jsxs75 } from "react/jsx-runtime";
113094
113713
  function ModePicker() {
@@ -113138,7 +113757,7 @@ function ModePicker() {
113138
113757
  t("activity:mode.modePrefix"),
113139
113758
  " ",
113140
113759
  /* @__PURE__ */ jsx80("span", { className: "font-mono", children: mode || "default" }),
113141
- /* @__PURE__ */ jsx80(ChevronDown8, { className: "h-3 w-3 opacity-60" })
113760
+ /* @__PURE__ */ jsx80(ChevronDown9, { className: "h-3 w-3 opacity-60" })
113142
113761
  ]
113143
113762
  }
113144
113763
  ),
@@ -113158,7 +113777,7 @@ function ModePicker() {
113158
113777
  ),
113159
113778
  children: [
113160
113779
  /* @__PURE__ */ jsx80(
113161
- Check12,
113780
+ Check13,
113162
113781
  {
113163
113782
  className: cn(
113164
113783
  "h-3.5 w-3.5 mt-0.5 shrink-0",
@@ -113311,7 +113930,7 @@ function ChatHeader({
113311
113930
  title: t("chat:switchSession"),
113312
113931
  children: [
113313
113932
  /* @__PURE__ */ jsx81(History4, { className: "h-3 w-3" }),
113314
- /* @__PURE__ */ jsx81(ChevronDown9, { className: "h-2.5 w-2.5" })
113933
+ /* @__PURE__ */ jsx81(ChevronDown10, { className: "h-2.5 w-2.5" })
113315
113934
  ]
113316
113935
  }
113317
113936
  ),
@@ -113370,7 +113989,7 @@ function ChatHeader({
113370
113989
  onClick: () => setToolStatsOpen((v) => !v),
113371
113990
  title: t("chat:header.toolStatsTitle", "Tool call stats"),
113372
113991
  children: [
113373
- /* @__PURE__ */ jsx81(Wrench9, { className: "h-4 w-4" }),
113992
+ /* @__PURE__ */ jsx81(Wrench10, { className: "h-4 w-4" }),
113374
113993
  toolStatsOpen && /* @__PURE__ */ jsx81("span", { className: "absolute -bottom-0.5 left-1/2 -translate-x-1/2 w-1 h-1 rounded-full bg-primary" })
113375
113994
  ]
113376
113995
  }
@@ -113384,7 +114003,7 @@ function ChatHeader({
113384
114003
  onClick: () => setMemoryPanelOpen((v) => !v),
113385
114004
  title: t("chat:header.memoryContextTitle", "Memory context"),
113386
114005
  children: [
113387
- /* @__PURE__ */ jsx81(Brain4, { className: "h-4 w-4" }),
114006
+ /* @__PURE__ */ jsx81(Brain5, { className: "h-4 w-4" }),
113388
114007
  activeMemoryCount > 0 && /* @__PURE__ */ jsx81("span", { className: "absolute -top-0.5 -right-0.5 min-w-3.5 h-3.5 px-0.5 rounded-full bg-primary text-primary-foreground text-[9px] font-bold flex items-center justify-center tabular-nums", children: activeMemoryCount }),
113389
114008
  memoryPanelOpen && /* @__PURE__ */ jsx81("span", { className: "absolute -bottom-0.5 left-1/2 -translate-x-1/2 w-1 h-1 rounded-full bg-primary" })
113390
114009
  ]
@@ -113501,6 +114120,7 @@ import { memo as memo12 } from "react";
113501
114120
 
113502
114121
  // src/components/MessageBubble/index.tsx
113503
114122
  init_i18n();
114123
+ init_perf_run_message();
113504
114124
  init_utils();
113505
114125
  init_ws_client();
113506
114126
  init_stores();
@@ -113512,9 +114132,10 @@ import {
113512
114132
  Bot as Bot10,
113513
114133
  Brain as Brain8,
113514
114134
  Crosshair as Crosshair2,
113515
- ChevronDown as ChevronDown14,
114135
+ ChevronDown as ChevronDown15,
113516
114136
  ChevronRight as ChevronRight9,
113517
114137
  FileCode2 as FileCode22,
114138
+ Gauge as Gauge4,
113518
114139
  Info as Info3,
113519
114140
  Pencil as Pencil3,
113520
114141
  Pin as Pin2,
@@ -113534,10 +114155,10 @@ import { memo as memo4, useMemo as useMemo29, useState as useState51 } from "rea
113534
114155
  import {
113535
114156
  Activity as Activity6,
113536
114157
  AlertOctagon,
113537
- Brain as Brain5,
113538
- Check as Check13,
114158
+ Brain as Brain6,
114159
+ Check as Check14,
113539
114160
  CheckCircle2 as CheckCircle29,
113540
- ChevronDown as ChevronDown10,
114161
+ ChevronDown as ChevronDown11,
113541
114162
  ChevronRight as ChevronRight5,
113542
114163
  Compass,
113543
114164
  Copy as Copy3,
@@ -113683,7 +114304,7 @@ var BrainDecisionCard = memo4(function BrainDecisionCard2({
113683
114304
  "flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border shadow-xs transition-transform duration-200 hover:scale-105",
113684
114305
  isIntervention ? "border-warning/30 bg-warning/10 text-warning" : isDenied ? "border-destructive/30 bg-destructive/10 text-destructive" : isAskHuman ? "border-info/30 bg-info/10 text-info" : "border-primary/30 bg-primary/10 text-primary"
113685
114306
  ),
113686
- children: isIntervention ? /* @__PURE__ */ jsx82(Zap14, { className: "h-5 w-5" }) : isDenied ? /* @__PURE__ */ jsx82(ShieldAlert4, { className: "h-5 w-5" }) : isAskHuman ? /* @__PURE__ */ jsx82(UserCheck2, { className: "h-5 w-5" }) : /* @__PURE__ */ jsx82(Brain5, { className: "h-5 w-5" })
114307
+ children: isIntervention ? /* @__PURE__ */ jsx82(Zap14, { className: "h-5 w-5" }) : isDenied ? /* @__PURE__ */ jsx82(ShieldAlert4, { className: "h-5 w-5" }) : isAskHuman ? /* @__PURE__ */ jsx82(UserCheck2, { className: "h-5 w-5" }) : /* @__PURE__ */ jsx82(Brain6, { className: "h-5 w-5" })
113687
114308
  }
113688
114309
  ),
113689
114310
  /* @__PURE__ */ jsxs77("div", { children: [
@@ -113703,7 +114324,7 @@ var BrainDecisionCard = memo4(function BrainDecisionCard2({
113703
114324
  className: "inline-flex items-center gap-1 rounded-full border border-border bg-surface-1/60 hover:bg-surface-1 px-2.5 py-0.5 text-xs text-muted-foreground hover:text-foreground transition-colors cursor-pointer",
113704
114325
  title: "Copy Brain Directive",
113705
114326
  children: [
113706
- copied ? /* @__PURE__ */ jsx82(Check13, { className: "h-3 w-3 text-success" }) : /* @__PURE__ */ jsx82(Copy3, { className: "h-3 w-3" }),
114327
+ copied ? /* @__PURE__ */ jsx82(Check14, { className: "h-3 w-3 text-success" }) : /* @__PURE__ */ jsx82(Copy3, { className: "h-3 w-3" }),
113707
114328
  /* @__PURE__ */ jsx82("span", { className: "text-[11px]", children: copied ? "Copied" : "Copy" })
113708
114329
  ]
113709
114330
  }
@@ -113781,7 +114402,7 @@ var BrainDecisionCard = memo4(function BrainDecisionCard2({
113781
114402
  className: "text-[11px] text-primary hover:underline font-medium flex items-center gap-0.5 cursor-pointer",
113782
114403
  children: [
113783
114404
  /* @__PURE__ */ jsx82("span", { children: rationaleExpanded ? "Collapse" : "Expand" }),
113784
- rationaleExpanded ? /* @__PURE__ */ jsx82(ChevronDown10, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx82(ChevronRight5, { className: "h-3 w-3" })
114405
+ rationaleExpanded ? /* @__PURE__ */ jsx82(ChevronDown11, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx82(ChevronRight5, { className: "h-3 w-3" })
113785
114406
  ]
113786
114407
  }
113787
114408
  )
@@ -113820,9 +114441,9 @@ import { memo as memo5, useMemo as useMemo30, useState as useState52 } from "rea
113820
114441
  import {
113821
114442
  AlertTriangle as AlertTriangle12,
113822
114443
  Award,
113823
- Check as Check14,
114444
+ Check as Check15,
113824
114445
  CheckCircle2 as CheckCircle210,
113825
- ChevronDown as ChevronDown11,
114446
+ ChevronDown as ChevronDown12,
113826
114447
  ChevronRight as ChevronRight6,
113827
114448
  Clock as Clock6,
113828
114449
  Coins,
@@ -113837,7 +114458,7 @@ import {
113837
114458
  ShieldCheck,
113838
114459
  Sparkles as Sparkles9,
113839
114460
  Users as Users3,
113840
- Wrench as Wrench10,
114461
+ Wrench as Wrench11,
113841
114462
  XCircle as XCircle3,
113842
114463
  Zap as Zap15
113843
114464
  } from "lucide-react";
@@ -113904,7 +114525,7 @@ function getPersonaIcon(persona) {
113904
114525
  if (p.includes("skeptic")) return /* @__PURE__ */ jsx83(ShieldAlert5, { className: "h-3.5 w-3.5" });
113905
114526
  if (p.includes("security")) return /* @__PURE__ */ jsx83(Shield, { className: "h-3.5 w-3.5" });
113906
114527
  if (p.includes("auditor") || p.includes("cost") || p.includes("budget")) return /* @__PURE__ */ jsx83(Coins, { className: "h-3.5 w-3.5" });
113907
- if (p.includes("maintainer") || p.includes("architect")) return /* @__PURE__ */ jsx83(Wrench10, { className: "h-3.5 w-3.5" });
114528
+ if (p.includes("maintainer") || p.includes("architect")) return /* @__PURE__ */ jsx83(Wrench11, { className: "h-3.5 w-3.5" });
113908
114529
  if (p.includes("user") || p.includes("advocate")) return /* @__PURE__ */ jsx83(Users3, { className: "h-3.5 w-3.5" });
113909
114530
  return /* @__PURE__ */ jsx83(Award, { className: "h-3.5 w-3.5" });
113910
114531
  }
@@ -114074,7 +114695,7 @@ var CouncilDecisionCard = memo5(function CouncilDecisionCard2({
114074
114695
  className: "inline-flex items-center gap-1 rounded-full border border-border bg-surface-1/60 hover:bg-surface-1 px-2.5 py-0.5 text-xs text-muted-foreground hover:text-foreground transition-colors cursor-pointer",
114075
114696
  title: "Copy Council Summary",
114076
114697
  children: [
114077
- copied ? /* @__PURE__ */ jsx83(Check14, { className: "h-3 w-3 text-success" }) : /* @__PURE__ */ jsx83(Copy4, { className: "h-3 w-3" }),
114698
+ copied ? /* @__PURE__ */ jsx83(Check15, { className: "h-3 w-3 text-success" }) : /* @__PURE__ */ jsx83(Copy4, { className: "h-3 w-3" }),
114078
114699
  /* @__PURE__ */ jsx83("span", { className: "text-[11px]", children: copied ? "Copied" : "Copy" })
114079
114700
  ]
114080
114701
  }
@@ -114314,7 +114935,7 @@ var CouncilDecisionCard = memo5(function CouncilDecisionCard2({
114314
114935
  className: "inline-flex items-center gap-0.5 text-primary hover:underline font-medium cursor-pointer",
114315
114936
  children: [
114316
114937
  /* @__PURE__ */ jsx83("span", { children: isExpanded ? "Hide" : "Rationale" }),
114317
- isExpanded ? /* @__PURE__ */ jsx83(ChevronDown11, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx83(ChevronRight6, { className: "h-3 w-3" })
114938
+ isExpanded ? /* @__PURE__ */ jsx83(ChevronDown12, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx83(ChevronRight6, { className: "h-3 w-3" })
114318
114939
  ]
114319
114940
  }
114320
114941
  ) : null
@@ -114539,7 +115160,7 @@ function StreamingMarkdown({ text: text4 }) {
114539
115160
  // src/components/MessageBubble/ToolLedgerCard.tsx
114540
115161
  init_i18n();
114541
115162
  import {
114542
- ChevronDown as ChevronDown13,
115163
+ ChevronDown as ChevronDown14,
114543
115164
  ChevronRight as ChevronRight8,
114544
115165
  Clock as Clock7,
114545
115166
  Download as Download5,
@@ -114547,124 +115168,6 @@ import {
114547
115168
  } from "lucide-react";
114548
115169
  import { memo as memo8, useState as useState59 } from "react";
114549
115170
 
114550
- // src/lib/tool-icon.ts
114551
- import { getToolIcon, TOOL_ICON_CONFIG } from "@wrongstack/tools/tool-icons";
114552
- import {
114553
- Brain as Brain6,
114554
- ClipboardList as ClipboardList2,
114555
- Code2 as Code22,
114556
- Database as Database2,
114557
- FileEdit as FileEdit2,
114558
- FileJson as FileJson2,
114559
- FileText as FileText7,
114560
- FlaskConical,
114561
- FolderOpen as FolderOpen4,
114562
- FolderTree,
114563
- GitBranch as GitBranch2,
114564
- GitCompare as GitCompare3,
114565
- Globe as Globe4,
114566
- Hammer,
114567
- Hash as Hash2,
114568
- ListChecks,
114569
- ListTodo as ListTodo2,
114570
- Package as Package2,
114571
- ScrollText as ScrollText2,
114572
- Search as Search7,
114573
- Settings,
114574
- Shell,
114575
- Wrench as Wrench11
114576
- } from "lucide-react";
114577
- var TOOL_LUCIDE = {
114578
- file: FileText7,
114579
- edit: FileEdit2,
114580
- search: Search7,
114581
- folder: FolderOpen4,
114582
- terminal: Shell,
114583
- web: Globe4,
114584
- git: GitBranch2,
114585
- tree: FolderTree,
114586
- code: Code22,
114587
- test: FlaskConical,
114588
- package: Package2,
114589
- document: ScrollText2,
114590
- scaffold: Hammer,
114591
- todo: ListTodo2,
114592
- plan: ClipboardList2,
114593
- task: ListChecks,
114594
- meta: Wrench11,
114595
- index: Database2,
114596
- json: FileJson2,
114597
- diff: GitCompare3,
114598
- logs: Hash2,
114599
- settings: Settings,
114600
- brain: Brain6,
114601
- fallback: Wrench11
114602
- };
114603
- function getToolVisual(name) {
114604
- const id = getToolIcon(name);
114605
- return { Icon: TOOL_LUCIDE[id], color: TOOL_ICON_CONFIG[id].color };
114606
- }
114607
- var TOOL_CATEGORY_LABELS = {
114608
- file: "file read/write",
114609
- edit: "file editing",
114610
- search: "search & grep",
114611
- folder: "folder navigation",
114612
- terminal: "shell commands",
114613
- web: "web fetch",
114614
- git: "git operations",
114615
- tree: "directory tree",
114616
- code: "code quality",
114617
- test: "testing",
114618
- package: "package management",
114619
- document: "documentation",
114620
- scaffold: "project scaffolding",
114621
- todo: "todo tracking",
114622
- plan: "planning",
114623
- task: "task management",
114624
- meta: "tool orchestration",
114625
- index: "code indexing",
114626
- json: "JSON data",
114627
- diff: "diff & patch",
114628
- logs: "log viewing",
114629
- settings: "configuration",
114630
- brain: "memory",
114631
- fallback: "external tool"
114632
- };
114633
- function getToolTooltip(name) {
114634
- const id = getToolIcon(name);
114635
- const colorName = hexToColorName(TOOL_ICON_CONFIG[id].color);
114636
- const category = TOOL_CATEGORY_LABELS[id];
114637
- return `${category} \u2014 ${colorName}`;
114638
- }
114639
- function hexToColorName(hex) {
114640
- const colors = {
114641
- "#60a5fa": "blue",
114642
- "#fbbf24": "amber",
114643
- "#a78bfa": "violet",
114644
- "#38bdf8": "sky",
114645
- "#67e8f9": "cyan-light",
114646
- "#a3e635": "lime",
114647
- "#34d399": "emerald",
114648
- "#22d3ee": "cyan",
114649
- "#818cf8": "indigo",
114650
- "#4ade80": "green",
114651
- "#f472b6": "pink",
114652
- "#94a3b8": "slate",
114653
- "#c084fc": "purple",
114654
- "#facc15": "yellow",
114655
- "#2dd4bf": "teal",
114656
- "#5eead4": "teal-light",
114657
- "#cbd5e1": "slate-light",
114658
- "#06b6d4": "cyan-dark",
114659
- "#eab308": "yellow-dark",
114660
- "#93c5fd": "blue-light",
114661
- "#a3a3a3": "neutral",
114662
- "#9ca3af": "gray",
114663
- "#e879f9": "fuchsia"
114664
- };
114665
- return colors[hex] ?? "colored";
114666
- }
114667
-
114668
115171
  // src/lib/tool-summary.ts
114669
115172
  import { FALLBACK_HEAD_FIELDS, summarizeToolInput } from "@wrongstack/tools/tool-summary";
114670
115173
 
@@ -114675,7 +115178,7 @@ init_DiffView();
114675
115178
  // src/components/ToolResult.tsx
114676
115179
  init_utils();
114677
115180
  init_i18n();
114678
- import { Brain as Brain7, ChevronDown as ChevronDown12, ChevronRight as ChevronRight7, ChevronsDown, ChevronsUp } from "lucide-react";
115181
+ import { Brain as Brain7, ChevronDown as ChevronDown13, ChevronRight as ChevronRight7, ChevronsDown, ChevronsUp } from "lucide-react";
114679
115182
  import { memo as memo7, useMemo as useMemo32, useState as useState57 } from "react";
114680
115183
 
114681
115184
  // src/lib/sage-block.ts
@@ -114933,7 +115436,7 @@ function JsonResult({
114933
115436
  className: "w-full flex items-center justify-between px-2 py-1 border-b bg-muted/30 text-[11px] text-muted-foreground hover:text-foreground",
114934
115437
  children: [
114935
115438
  /* @__PURE__ */ jsxs84("span", { className: "flex items-center gap-1", children: [
114936
- expanded ? /* @__PURE__ */ jsx90(ChevronDown12, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx90(ChevronRight7, { className: "h-3 w-3" }),
115439
+ expanded ? /* @__PURE__ */ jsx90(ChevronDown13, { className: "h-3 w-3" }) : /* @__PURE__ */ jsx90(ChevronRight7, { className: "h-3 w-3" }),
114937
115440
  /* @__PURE__ */ jsx90("span", { className: "font-mono", children: t("activity:toolResult.jsonLines", { count: lineCount2 }) })
114938
115441
  ] }),
114939
115442
  /* @__PURE__ */ jsx90("span", { children: expanded ? t("activity:toolResult.collapse") : t("activity:toolResult.expand") })
@@ -115027,7 +115530,7 @@ var ToolLedgerCard = memo8(function ToolLedgerCard2({
115027
115530
  }
115028
115531
  ),
115029
115532
  typeof message.toolDurationMs === "number" && /* @__PURE__ */ jsx92("span", { className: "text-[10px]", children: formatToolDuration(message.toolDurationMs) }),
115030
- status === "running" ? /* @__PURE__ */ jsx92(Loader214, { className: "h-3 w-3 animate-spin text-warning" }) : hasBody ? expanded ? /* @__PURE__ */ jsx92(ChevronDown13, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx92(ChevronRight8, { className: "h-3.5 w-3.5" }) : null
115533
+ status === "running" ? /* @__PURE__ */ jsx92(Loader214, { className: "h-3 w-3 animate-spin text-warning" }) : hasBody ? expanded ? /* @__PURE__ */ jsx92(ChevronDown14, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx92(ChevronRight8, { className: "h-3.5 w-3.5" }) : null
115031
115534
  ] })
115032
115535
  ]
115033
115536
  }
@@ -115110,6 +115613,9 @@ var MessageBubble = memo9(function MessageBubble2({
115110
115613
  const isUser = message.role === "user";
115111
115614
  const bugHunt = message.bugHunt;
115112
115615
  const isBugHunt = !!bugHunt;
115616
+ const perfRun = message.perfRun;
115617
+ const isPerfRun = !!perfRun;
115618
+ const isPromptCard = isBugHunt || isPerfRun;
115113
115619
  const isTool = message.role === "tool";
115114
115620
  const isThinkingLog = !!message.thinkingLog;
115115
115621
  const isSystem = message.role === "system" && !isThinkingLog;
@@ -115343,6 +115849,22 @@ var MessageBubble = memo9(function MessageBubble2({
115343
115849
  }
115344
115850
  )
115345
115851
  ] })
115852
+ ] }) : isPerfRun ? /* @__PURE__ */ jsxs87("div", { className: "min-w-[15rem]", children: [
115853
+ /* @__PURE__ */ jsxs87("div", { className: "flex items-center gap-2 text-sm font-semibold text-primary", children: [
115854
+ /* @__PURE__ */ jsx93(Gauge4, { className: "h-4 w-4" }),
115855
+ /* @__PURE__ */ jsx93("span", { children: PERF_RUN_MODE_LABELS[perfRun.mode] })
115856
+ ] }),
115857
+ /* @__PURE__ */ jsxs87("div", { className: "mt-2 flex flex-wrap gap-2 text-xs", children: [
115858
+ /* @__PURE__ */ jsx93(
115859
+ "span",
115860
+ {
115861
+ className: "max-w-full truncate rounded-full border border-border bg-background/60 px-2 py-1",
115862
+ title: perfRun.scope || "Whole project",
115863
+ children: perfRun.scope ? `${perfRun.scope} and below` : "Whole project"
115864
+ }
115865
+ ),
115866
+ perfRun.metric && /* @__PURE__ */ jsx93("span", { className: "rounded-full border border-primary/25 bg-primary/10 px-2 py-1", children: PERF_RUN_METRIC_LABELS[perfRun.metric] })
115867
+ ] })
115346
115868
  ] }) : editing && isUser ? /* @__PURE__ */ jsxs87("div", { className: "flex flex-col gap-2 min-w-[280px]", children: [
115347
115869
  /* @__PURE__ */ jsx93(
115348
115870
  "textarea",
@@ -115408,7 +115930,7 @@ var MessageBubble = memo9(function MessageBubble2({
115408
115930
  dur: durationLabel,
115409
115931
  lines: t("activity:message.linesSuffix", { count: lineCount2 })
115410
115932
  }) }),
115411
- /* @__PURE__ */ jsx93("span", { className: "ml-auto text-muted-foreground/60", children: thinkingExpanded ? /* @__PURE__ */ jsx93(ChevronDown14, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx93(ChevronRight9, { className: "h-3.5 w-3.5" }) })
115933
+ /* @__PURE__ */ jsx93("span", { className: "ml-auto text-muted-foreground/60", children: thinkingExpanded ? /* @__PURE__ */ jsx93(ChevronDown15, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx93(ChevronRight9, { className: "h-3.5 w-3.5" }) })
115412
115934
  ]
115413
115935
  }
115414
115936
  ),
@@ -115569,7 +116091,7 @@ var MessageBubble = memo9(function MessageBubble2({
115569
116091
  }
115570
116092
  );
115571
116093
  })(),
115572
- !isTool && !isBugHunt && message.content && !message.streaming && /* @__PURE__ */ jsx93(
116094
+ !isTool && !isPromptCard && message.content && !message.streaming && /* @__PURE__ */ jsx93(
115573
116095
  CopyButton,
115574
116096
  {
115575
116097
  text: message.content,
@@ -115593,7 +116115,7 @@ var MessageBubble = memo9(function MessageBubble2({
115593
116115
  ]
115594
116116
  }
115595
116117
  ),
115596
- isUser && !isBugHunt && !editing && !isLoading && /* @__PURE__ */ jsxs87(Fragment27, { children: [
116118
+ isUser && !isPromptCard && !editing && !isLoading && /* @__PURE__ */ jsxs87(Fragment27, { children: [
115597
116119
  message.status === "failed" && /* @__PURE__ */ jsxs87(
115598
116120
  "button",
115599
116121
  {
@@ -115665,7 +116187,7 @@ var MessageBubble = memo9(function MessageBubble2({
115665
116187
  init_utils();
115666
116188
  init_i18n();
115667
116189
  import { expectDefined as expectDefined11 } from "@wrongstack/core/utils/expect-defined";
115668
- import { CheckCircle2 as CheckCircle211, ChevronDown as ChevronDown15, ChevronRight as ChevronRight10, Loader2 as Loader215, Terminal as Terminal6, XCircle as XCircle4 } from "lucide-react";
116190
+ import { CheckCircle2 as CheckCircle211, ChevronDown as ChevronDown16, ChevronRight as ChevronRight10, Loader2 as Loader215, Terminal as Terminal6, XCircle as XCircle4 } from "lucide-react";
115669
116191
  import { memo as memo10, useState as useState61 } from "react";
115670
116192
  import { jsx as jsx94, jsxs as jsxs88 } from "react/jsx-runtime";
115671
116193
  function formatDuration(ms) {
@@ -115705,7 +116227,7 @@ var ToolGroup = memo10(function ToolGroup2({
115705
116227
  "border border-border/40 bg-muted/30"
115706
116228
  ),
115707
116229
  children: [
115708
- open ? /* @__PURE__ */ jsx94(ChevronDown15, { className: "h-3.5 w-3.5 text-muted-foreground" }) : /* @__PURE__ */ jsx94(ChevronRight10, { className: "h-3.5 w-3.5 text-muted-foreground" }),
116230
+ open ? /* @__PURE__ */ jsx94(ChevronDown16, { className: "h-3.5 w-3.5 text-muted-foreground" }) : /* @__PURE__ */ jsx94(ChevronRight10, { className: "h-3.5 w-3.5 text-muted-foreground" }),
115709
116231
  /* @__PURE__ */ jsx94(Terminal6, { className: "h-3.5 w-3.5 text-muted-foreground" }),
115710
116232
  /* @__PURE__ */ jsx94("span", { className: "font-mono text-xs", children: t("activity:toolGroup.toolCalls", { count: tools.length }) }),
115711
116233
  running > 0 ? /* @__PURE__ */ jsx94(Loader215, { className: "h-3 w-3 animate-spin text-warning" }) : errored > 0 ? /* @__PURE__ */ jsx94(XCircle4, { className: "h-3 w-3 text-destructive" }) : /* @__PURE__ */ jsx94(CheckCircle211, { className: "h-3 w-3 text-success" }),
@@ -115900,12 +116422,12 @@ import {
115900
116422
  AlertCircle as AlertCircle2,
115901
116423
  Bot as Bot11,
115902
116424
  Brain as Brain9,
115903
- Check as Check16,
116425
+ Check as Check17,
115904
116426
  CircleDot as CircleDot4,
115905
116427
  Info as Info4,
115906
116428
  Maximize2 as Maximize22,
115907
116429
  Wrench as Wrench12,
115908
- X as X16
116430
+ X as X17
115909
116431
  } from "lucide-react";
115910
116432
  import { memo as memo13, useEffect as useEffect63, useRef as useRef30, useState as useState62 } from "react";
115911
116433
  import { Fragment as Fragment28, jsx as jsx97, jsxs as jsxs91 } from "react/jsx-runtime";
@@ -115960,7 +116482,7 @@ var TranscriptRow = memo13(function TranscriptRow2({ entry }) {
115960
116482
  if (entry.kind === "tool_use" || entry.kind === "tool_result") {
115961
116483
  const isUse = entry.kind === "tool_use";
115962
116484
  const ok = entry.toolOk !== false;
115963
- const Icon3 = isUse ? Wrench12 : ok ? Check16 : X16;
116485
+ const Icon3 = isUse ? Wrench12 : ok ? Check17 : X17;
115964
116486
  return /* @__PURE__ */ jsxs91(
115965
116487
  "div",
115966
116488
  {
@@ -116095,7 +116617,7 @@ function SubagentTranscriptView({ agentId }) {
116095
116617
  "aria-label": t("activity:transcript.returnToLeader"),
116096
116618
  className: "ml-0.5 inline-flex shrink-0 items-center gap-0.5 rounded bg-primary/15 px-1.5 py-0.5 text-[10px] font-medium text-primary transition-colors hover:bg-primary/25",
116097
116619
  children: [
116098
- /* @__PURE__ */ jsx97(X16, { className: "h-3 w-3" }),
116620
+ /* @__PURE__ */ jsx97(X17, { className: "h-3 w-3" }),
116099
116621
  t("activity:transcript.returnToLeader")
116100
116622
  ]
116101
116623
  }
@@ -116906,7 +117428,7 @@ function ChatView() {
116906
117428
  onClick: () => state.setInputCollapsed(true),
116907
117429
  className: "mb-1 flex w-full items-center gap-1.5 rounded px-2 py-0.5 text-[10px] text-muted-foreground/50 hover:text-muted-foreground/80 transition-colors",
116908
117430
  children: [
116909
- /* @__PURE__ */ jsx100(ChevronDown16, { className: "h-3 w-3" }),
117431
+ /* @__PURE__ */ jsx100(ChevronDown17, { className: "h-3 w-3" }),
116910
117432
  /* @__PURE__ */ jsx100("span", { children: t("chat:input.collapseInput", "Collapse") })
116911
117433
  ]
116912
117434
  }
@@ -116962,7 +117484,7 @@ import {
116962
117484
  BarChart3 as BarChart33,
116963
117485
  Cpu as Cpu8,
116964
117486
  FileText as FileText8,
116965
- Gauge as Gauge3,
117487
+ Gauge as Gauge5,
116966
117488
  HardDrive,
116967
117489
  Layers as Layers4,
116968
117490
  MessageSquare as MessageSquare7,
@@ -117419,7 +117941,7 @@ function PressureSection({
117419
117941
  const { t } = useTranslation();
117420
117942
  const zone = zoneFor(pct);
117421
117943
  const accent = pct > 85 ? "danger" : pct > 60 ? "warning" : "success";
117422
- return /* @__PURE__ */ jsxs97(SectionCard, { title: t("activity:ctxDash.contextPressure"), icon: Gauge3, accent, children: [
117944
+ return /* @__PURE__ */ jsxs97(SectionCard, { title: t("activity:ctxDash.contextPressure"), icon: Gauge5, accent, children: [
117423
117945
  /* @__PURE__ */ jsxs97("div", { className: "flex flex-col sm:flex-row items-center gap-4", children: [
117424
117946
  /* @__PURE__ */ jsx103(
117425
117947
  "div",
@@ -118018,7 +118540,7 @@ import {
118018
118540
  Radio,
118019
118541
  Settings2,
118020
118542
  Shield as Shield4,
118021
- X as X25,
118543
+ X as X26,
118022
118544
  Zap as Zap20
118023
118545
  } from "lucide-react";
118024
118546
  import { useCallback as useCallback45, useEffect as useEffect84, useRef as useRef43, useState as useState87 } from "react";
@@ -119137,7 +119659,7 @@ init_button();
119137
119659
  import {
119138
119660
  AlertTriangle as AlertTriangle14,
119139
119661
  Ban,
119140
- ChevronDown as ChevronDown17,
119662
+ ChevronDown as ChevronDown18,
119141
119663
  ChevronRight as ChevronRight11,
119142
119664
  Clock as Clock8,
119143
119665
  RefreshCw as RefreshCw12,
@@ -119215,7 +119737,7 @@ function ModelRow({
119215
119737
  onClick: () => setExpanded((e) => !e),
119216
119738
  className: "flex w-full items-center gap-2 px-3 py-2 text-left hover:bg-muted/50 transition-colors rounded-md",
119217
119739
  children: [
119218
- /* @__PURE__ */ jsx112("span", { className: "shrink-0 text-muted-foreground", children: expanded ? /* @__PURE__ */ jsx112(ChevronDown17, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx112(ChevronRight11, { className: "h-3.5 w-3.5" }) }),
119740
+ /* @__PURE__ */ jsx112("span", { className: "shrink-0 text-muted-foreground", children: expanded ? /* @__PURE__ */ jsx112(ChevronDown18, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx112(ChevronRight11, { className: "h-3.5 w-3.5" }) }),
119219
119741
  /* @__PURE__ */ jsx112(
119220
119742
  "span",
119221
119743
  {
@@ -121175,8 +121697,8 @@ init_dialog();
121175
121697
  init_input();
121176
121698
  init_tabs();
121177
121699
  import {
121178
- Check as Check18,
121179
- ChevronDown as ChevronDown19,
121700
+ Check as Check19,
121701
+ ChevronDown as ChevronDown20,
121180
121702
  ChevronRight as ChevronRight12,
121181
121703
  Edit3 as Edit32,
121182
121704
  Loader2 as Loader216,
@@ -121370,7 +121892,7 @@ function ServerCard({
121370
121892
  className: "flex min-w-0 flex-1 items-center gap-2 text-left",
121371
121893
  onClick: () => setExpanded(!expanded),
121372
121894
  children: [
121373
- expanded ? /* @__PURE__ */ jsx124(ChevronDown19, { className: "h-4 w-4 text-muted-foreground" }) : /* @__PURE__ */ jsx124(ChevronRight12, { className: "h-4 w-4 text-muted-foreground" }),
121895
+ expanded ? /* @__PURE__ */ jsx124(ChevronDown20, { className: "h-4 w-4 text-muted-foreground" }) : /* @__PURE__ */ jsx124(ChevronRight12, { className: "h-4 w-4 text-muted-foreground" }),
121374
121896
  /* @__PURE__ */ jsx124(StatusDot, { status: server.status }),
121375
121897
  /* @__PURE__ */ jsx124("span", { className: "min-w-0 truncate font-medium", children: server.name }),
121376
121898
  /* @__PURE__ */ jsx124("span", { className: "rounded bg-muted/60 px-1.5 py-0.5 text-xs text-muted-foreground", children: server.transport }),
@@ -121725,7 +122247,7 @@ function OfficialServerCard({
121725
122247
  server.requiresEnvVars && server.requiresEnvVars.length > 0 && /* @__PURE__ */ jsx124("p", { className: "mt-1 text-xs text-warning", children: t("settings:mcp.requires", { vars: server.requiresEnvVars.join(", ") }) })
121726
122248
  ] }),
121727
122249
  /* @__PURE__ */ jsx124("div", { className: "shrink-0", children: isAdded ? /* @__PURE__ */ jsxs117(Button, { variant: "ghost", size: "sm", disabled: true, children: [
121728
- /* @__PURE__ */ jsx124(Check18, { className: "w-4 h-4 mr-1" }),
122250
+ /* @__PURE__ */ jsx124(Check19, { className: "w-4 h-4 mr-1" }),
121729
122251
  t("settings:mcp.added")
121730
122252
  ] }) : /* @__PURE__ */ jsxs117(Button, { size: "sm", variant: "outline", onClick: onAdd, children: [
121731
122253
  /* @__PURE__ */ jsx124(Plus7, { className: "w-4 h-4 mr-1" }),
@@ -122364,7 +122886,7 @@ function ModelSection({
122364
122886
  // src/components/SettingsPanel/ModelTiersSection.tsx
122365
122887
  init_local_prefs();
122366
122888
  init_button();
122367
- import { Coins as Coins2, Plus as Plus8, X as X19 } from "lucide-react";
122889
+ import { Coins as Coins2, Plus as Plus8, X as X20 } from "lucide-react";
122368
122890
  import { useCallback as useCallback32, useState as useState75 } from "react";
122369
122891
  import { jsx as jsx129, jsxs as jsxs121 } from "react/jsx-runtime";
122370
122892
  var LEADER_MODES = [
@@ -122481,7 +123003,7 @@ function ModelTiersSection({ syncPref }) {
122481
123003
  className: "text-muted-foreground hover:text-destructive",
122482
123004
  title: "Remove level",
122483
123005
  "data-testid": `model-tier-remove-${id}`,
122484
- children: /* @__PURE__ */ jsx129(X19, { className: "h-3 w-3" })
123006
+ children: /* @__PURE__ */ jsx129(X20, { className: "h-3 w-3" })
122485
123007
  }
122486
123008
  )
122487
123009
  ] }),
@@ -122589,7 +123111,7 @@ function ModelTiersSection({ syncPref }) {
122589
123111
  onClick: () => removeRoute(key),
122590
123112
  className: "text-muted-foreground hover:text-destructive",
122591
123113
  title: "Remove rule",
122592
- children: /* @__PURE__ */ jsx129(X19, { className: "h-3 w-3" })
123114
+ children: /* @__PURE__ */ jsx129(X20, { className: "h-3 w-3" })
122593
123115
  }
122594
123116
  )
122595
123117
  ]
@@ -122745,7 +123267,7 @@ import { useCallback as useCallback41, useEffect as useEffect81, useMemo as useM
122745
123267
  // src/components/ui/api-key-display.tsx
122746
123268
  init_utils();
122747
123269
  init_i18n();
122748
- import { Check as Check20, Copy as Copy6 } from "lucide-react";
123270
+ import { Check as Check21, Copy as Copy6 } from "lucide-react";
122749
123271
  import { useCallback as useCallback35, useState as useState77 } from "react";
122750
123272
  import { jsx as jsx131, jsxs as jsxs123 } from "react/jsx-runtime";
122751
123273
  function ApiKeyDisplay({ maskedKey, className }) {
@@ -122774,7 +123296,7 @@ function ApiKeyDisplay({ maskedKey, className }) {
122774
123296
  className: "shrink-0 rounded p-0.5 text-muted-foreground/50 opacity-0 transition-all hover:text-foreground group-hover:opacity-100 focus:opacity-100",
122775
123297
  title: copied ? "Copied" : "Copy key preview",
122776
123298
  "aria-label": t("activity:apikeydisplay.copyApiKeyToClipboard"),
122777
- children: copied ? /* @__PURE__ */ jsx131(Check20, { className: "h-3 w-3 text-success" }) : /* @__PURE__ */ jsx131(Copy6, { className: "h-3 w-3" })
123299
+ children: copied ? /* @__PURE__ */ jsx131(Check21, { className: "h-3 w-3 text-success" }) : /* @__PURE__ */ jsx131(Copy6, { className: "h-3 w-3" })
122778
123300
  }
122779
123301
  )
122780
123302
  ]
@@ -123288,7 +123810,7 @@ init_Toaster();
123288
123810
  init_button();
123289
123811
  import {
123290
123812
  Brain as Brain11,
123291
- Check as Check22,
123813
+ Check as Check23,
123292
123814
  Clock as Clock9,
123293
123815
  DollarSign,
123294
123816
  Eye as Eye2,
@@ -123301,13 +123823,13 @@ import {
123301
123823
  Trash2 as Trash212,
123302
123824
  Video,
123303
123825
  Wrench as Wrench14,
123304
- X as X23
123826
+ X as X24
123305
123827
  } from "lucide-react";
123306
123828
  import { Fragment as Fragment37, useCallback as useCallback39, useMemo as useMemo39, useState as useState81 } from "react";
123307
123829
 
123308
123830
  // src/components/SettingsPanel/ModelCatalogPicker.tsx
123309
123831
  init_i18n();
123310
- import { Loader2 as Loader220, Search as Search11, X as X21 } from "lucide-react";
123832
+ import { Loader2 as Loader220, Search as Search11, X as X22 } from "lucide-react";
123311
123833
  import { useCallback as useCallback37, useEffect as useEffect79, useRef as useRef42, useState as useState79 } from "react";
123312
123834
  import { jsx as jsx134, jsxs as jsxs126 } from "react/jsx-runtime";
123313
123835
  function ModelCatalogPicker({ ws, onSelect, onClose }) {
@@ -123394,7 +123916,7 @@ function ModelCatalogPicker({ ws, onSelect, onClose }) {
123394
123916
  type: "button",
123395
123917
  onClick: onClose,
123396
123918
  className: "text-muted-foreground hover:text-foreground",
123397
- children: /* @__PURE__ */ jsx134(X21, { className: "h-4 w-4" })
123919
+ children: /* @__PURE__ */ jsx134(X22, { className: "h-4 w-4" })
123398
123920
  }
123399
123921
  )
123400
123922
  ] }),
@@ -123450,7 +123972,7 @@ init_i18n();
123450
123972
  init_utils();
123451
123973
  init_button();
123452
123974
  import { MODELS_DEV_MODALITY_VALUES, modelsDevModelSchema } from "@wrongstack/core/models";
123453
- import { Check as Check21, X as X22 } from "lucide-react";
123975
+ import { Check as Check22, X as X23 } from "lucide-react";
123454
123976
  import { useCallback as useCallback38, useState as useState80 } from "react";
123455
123977
  import { Fragment as Fragment36, jsx as jsx135, jsxs as jsxs127 } from "react/jsx-runtime";
123456
123978
  function toFormState(modelId, md) {
@@ -123878,7 +124400,7 @@ function ModelSchemaEditor({
123878
124400
  onClick: onCancel,
123879
124401
  className: "h-8 gap-1.5 text-xs",
123880
124402
  children: [
123881
- /* @__PURE__ */ jsx135(X22, { className: "h-3.5 w-3.5" }),
124403
+ /* @__PURE__ */ jsx135(X23, { className: "h-3.5 w-3.5" }),
123882
124404
  t("common:action.cancel")
123883
124405
  ]
123884
124406
  }
@@ -123891,7 +124413,7 @@ function ModelSchemaEditor({
123891
124413
  onClick: showRaw ? handleRawSave : handleFormSave,
123892
124414
  className: "h-8 gap-1.5 text-xs",
123893
124415
  children: [
123894
- /* @__PURE__ */ jsx135(Check21, { className: "h-3.5 w-3.5" }),
124416
+ /* @__PURE__ */ jsx135(Check22, { className: "h-3.5 w-3.5" }),
123895
124417
  t("common:action.save")
123896
124418
  ]
123897
124419
  }
@@ -124143,7 +124665,7 @@ function ModelListEditor({
124143
124665
  "aria-label": t("settings:providerModels.usingModel", {
124144
124666
  model: row.modelId
124145
124667
  }),
124146
- children: /* @__PURE__ */ jsx136(Check22, { className: "h-3.5 w-3.5" })
124668
+ children: /* @__PURE__ */ jsx136(Check23, { className: "h-3.5 w-3.5" })
124147
124669
  }
124148
124670
  ) : /* @__PURE__ */ jsx136(
124149
124671
  "button",
@@ -124157,7 +124679,7 @@ function ModelListEditor({
124157
124679
  title: t("settings:providerModels.useModel", {
124158
124680
  model: row.modelId
124159
124681
  }),
124160
- children: /* @__PURE__ */ jsx136(Check22, { className: "h-3.5 w-3.5" })
124682
+ children: /* @__PURE__ */ jsx136(Check23, { className: "h-3.5 w-3.5" })
124161
124683
  }
124162
124684
  )),
124163
124685
  /* @__PURE__ */ jsx136(
@@ -124235,7 +124757,7 @@ function ModelListEditor({
124235
124757
  type: "button",
124236
124758
  onClick: () => setShowCustomEditor(false),
124237
124759
  className: "text-muted-foreground hover:text-foreground",
124238
- children: /* @__PURE__ */ jsx136(X23, { className: "h-4 w-4" })
124760
+ children: /* @__PURE__ */ jsx136(X24, { className: "h-4 w-4" })
124239
124761
  }
124240
124762
  )
124241
124763
  ] }),
@@ -125516,7 +126038,7 @@ init_useWebSocket();
125516
126038
  init_i18n();
125517
126039
  init_utils();
125518
126040
  init_stores();
125519
- import { ArrowDown as ArrowDown4, ArrowUp as ArrowUp4, Brain as Brain12, Loader2 as Loader223, Plus as Plus13, X as X24 } from "lucide-react";
126041
+ import { ArrowDown as ArrowDown4, ArrowUp as ArrowUp4, Brain as Brain12, Loader2 as Loader223, Plus as Plus13, X as X25 } from "lucide-react";
125520
126042
  import { useCallback as useCallback43, useEffect as useEffect82, useMemo as useMemo42, useState as useState85 } from "react";
125521
126043
  init_badge();
125522
126044
  init_button();
@@ -126215,7 +126737,7 @@ function BrainSection() {
126215
126737
  const next = config.models.map(entryLabel).filter((_, j) => j !== i);
126216
126738
  sendPatch({ models: next.length > 0 ? next : null });
126217
126739
  },
126218
- children: /* @__PURE__ */ jsx141(X24, { className: "h-3 w-3" })
126740
+ children: /* @__PURE__ */ jsx141(X25, { className: "h-3 w-3" })
126219
126741
  }
126220
126742
  )
126221
126743
  ]
@@ -126317,7 +126839,7 @@ function BrainSection() {
126317
126839
  className: "h-6 w-6 p-0 text-destructive",
126318
126840
  disabled: busy,
126319
126841
  onClick: () => setVoters(voters.filter((_, j) => j !== i)),
126320
- children: /* @__PURE__ */ jsx141(X24, { className: "h-3 w-3" })
126842
+ children: /* @__PURE__ */ jsx141(X25, { className: "h-3 w-3" })
126321
126843
  }
126322
126844
  )
126323
126845
  ]
@@ -126607,7 +127129,7 @@ init_i18n();
126607
127129
  init_badge();
126608
127130
  init_button();
126609
127131
  init_input();
126610
- import { ChevronDown as ChevronDown20, Loader2 as Loader224, Power, PowerOff, Search as Search13, Wrench as Wrench15 } from "lucide-react";
127132
+ import { ChevronDown as ChevronDown21, Loader2 as Loader224, Power, PowerOff, Search as Search13, Wrench as Wrench15 } from "lucide-react";
126611
127133
  import { useCallback as useCallback44, useEffect as useEffect83, useState as useState86 } from "react";
126612
127134
  import { jsx as jsx143, jsxs as jsxs134 } from "react/jsx-runtime";
126613
127135
  function StatusDot2({ disabled, direct }) {
@@ -126659,7 +127181,7 @@ function ToolRow2({
126659
127181
  onClick: () => setExpanded(!expanded),
126660
127182
  "aria-label": expanded ? "Collapse" : "Expand",
126661
127183
  children: /* @__PURE__ */ jsx143(
126662
- ChevronDown20,
127184
+ ChevronDown21,
126663
127185
  {
126664
127186
  className: `h-4 w-4 transition-transform ${expanded ? "rotate-180" : ""}`
126665
127187
  }
@@ -127106,7 +127628,7 @@ function SettingsPanel() {
127106
127628
  /* @__PURE__ */ jsx145("p", { className: "mt-0.5 text-[11px] text-muted-foreground", children: provider && activeModel ? `${provider} / ${activeModel}` : t("settings:subtitle") })
127107
127629
  ] })
127108
127630
  ] }),
127109
- /* @__PURE__ */ jsx145(Button, { variant: "ghost", size: "icon", onClick: () => showPanel("chat"), children: /* @__PURE__ */ jsx145(X25, { className: "h-4 w-4" }) }),
127631
+ /* @__PURE__ */ jsx145(Button, { variant: "ghost", size: "icon", onClick: () => showPanel("chat"), children: /* @__PURE__ */ jsx145(X26, { className: "h-4 w-4" }) }),
127110
127632
  /* @__PURE__ */ jsx145(Button, { variant: "ghost", size: "sm", onClick: () => setResetOpen(true), children: t("settings:resetLabel") })
127111
127633
  ] }),
127112
127634
  /* @__PURE__ */ jsx145(ScrollArea, { className: "min-h-0 flex-1", ref: scrollAreaRef, children: /* @__PURE__ */ jsx145("div", { className: "mx-auto max-w-7xl p-4 sm:p-6", children: /* @__PURE__ */ jsxs136(
@@ -127245,7 +127767,7 @@ import {
127245
127767
  SlidersHorizontal as SlidersHorizontal2,
127246
127768
  Target as Target2,
127247
127769
  Users as Users6,
127248
- X as X26
127770
+ X as X27
127249
127771
  } from "lucide-react";
127250
127772
  import { useEffect as useEffect92, useMemo as useMemo44, useState as useState95 } from "react";
127251
127773
 
@@ -127762,7 +128284,7 @@ init_agent_session();
127762
128284
  init_agent_status();
127763
128285
  init_utils();
127764
128286
  init_stores();
127765
- import { Bot as Bot15, Check as Check23, Clock as Clock10, Copy as Copy7, Cpu as Cpu15, MessageSquare as MessageSquare8, Wrench as Wrench16, XCircle as XCircle7 } from "lucide-react";
128287
+ import { Bot as Bot15, Check as Check24, Clock as Clock10, Copy as Copy7, Cpu as Cpu15, MessageSquare as MessageSquare8, Wrench as Wrench16, XCircle as XCircle7 } from "lucide-react";
127766
128288
  import { useCallback as useCallback47, useMemo as useMemo43, useState as useState89 } from "react";
127767
128289
  import { jsx as jsx147, jsxs as jsxs138 } from "react/jsx-runtime";
127768
128290
  var STATUS_CONFIG = {
@@ -127928,7 +128450,7 @@ function FleetPanel({ className }) {
127928
128450
  className: "inline-flex items-center gap-1 text-[10px] text-muted-foreground hover:text-foreground hover:bg-muted px-1.5 py-0.5 rounded transition-colors cursor-pointer",
127929
128451
  title: t("activity:fleet.copyOutput"),
127930
128452
  children: [
127931
- copiedId === agent.id ? /* @__PURE__ */ jsx147(Check23, { className: "h-3 w-3 text-success" }) : /* @__PURE__ */ jsx147(Copy7, { className: "h-3 w-3" }),
128453
+ copiedId === agent.id ? /* @__PURE__ */ jsx147(Check24, { className: "h-3 w-3 text-success" }) : /* @__PURE__ */ jsx147(Copy7, { className: "h-3 w-3" }),
127932
128454
  /* @__PURE__ */ jsx147("span", { children: copiedId === agent.id ? t("common:action.copied") : t("common:action.copy") })
127933
128455
  ]
127934
128456
  }
@@ -127949,7 +128471,7 @@ init_i18n();
127949
128471
  init_ws_client();
127950
128472
  import {
127951
128473
  CheckCircle2 as CheckCircle216,
127952
- ChevronDown as ChevronDown21,
128474
+ ChevronDown as ChevronDown22,
127953
128475
  ChevronRight as ChevronRight13,
127954
128476
  Circle as Circle4,
127955
128477
  Clock as Clock11,
@@ -128037,7 +128559,7 @@ function GoalPanel({ goal, className }) {
128037
128559
  children: t(`activity:goal.${stateCfg.labelKey}`)
128038
128560
  }
128039
128561
  ),
128040
- collapsed ? /* @__PURE__ */ jsx148(ChevronRight13, { className: "h-3.5 w-3.5 text-muted-foreground shrink-0" }) : /* @__PURE__ */ jsx148(ChevronDown21, { className: "h-3.5 w-3.5 text-muted-foreground shrink-0" })
128562
+ collapsed ? /* @__PURE__ */ jsx148(ChevronRight13, { className: "h-3.5 w-3.5 text-muted-foreground shrink-0" }) : /* @__PURE__ */ jsx148(ChevronDown22, { className: "h-3.5 w-3.5 text-muted-foreground shrink-0" })
128041
128563
  ]
128042
128564
  }
128043
128565
  ),
@@ -129101,7 +129623,7 @@ function WorkspaceDockInspector({ sessionId }) {
129101
129623
  className: "absolute right-3 top-3 inline-flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
129102
129624
  "aria-label": t("activity:dock.closeWorkspaceInspector"),
129103
129625
  title: t("activity:dock.closeWorkspaceInspector"),
129104
- children: /* @__PURE__ */ jsx156(X26, { className: "h-4 w-4" })
129626
+ children: /* @__PURE__ */ jsx156(X27, { className: "h-4 w-4" })
129105
129627
  }
129106
129628
  )
129107
129629
  ] }),
@@ -129383,7 +129905,7 @@ var TerminalPanelLazy = lazy5(
129383
129905
  // src/components/WorkbenchTopbar.tsx
129384
129906
  import {
129385
129907
  Bot as Bot33,
129386
- Check as Check49,
129908
+ Check as Check50,
129387
129909
  Command as Command2,
129388
129910
  Menu,
129389
129911
  Moon as Moon4,
@@ -129578,12 +130100,12 @@ import {
129578
130100
  Bell as Bell4,
129579
130101
  BellOff,
129580
130102
  BellRing,
129581
- Check as Check48,
130103
+ Check as Check49,
129582
130104
  CheckCheck as CheckCheck2,
129583
130105
  Clock as Clock24,
129584
130106
  Info as Info6,
129585
130107
  Trash2 as Trash230,
129586
- X as X62,
130108
+ X as X63,
129587
130109
  XCircle as XCircle16
129588
130110
  } from "lucide-react";
129589
130111
  import { useCallback as useCallback87, useMemo as useMemo86, useState as useState163 } from "react";
@@ -129610,7 +130132,7 @@ function formatRelativeTime(timestamp2, t) {
129610
130132
  }
129611
130133
  function NotificationIcon({ variant }) {
129612
130134
  if (variant === "success") {
129613
- return /* @__PURE__ */ jsx286(Check48, { className: "h-4 w-4 text-success shrink-0" });
130135
+ return /* @__PURE__ */ jsx286(Check49, { className: "h-4 w-4 text-success shrink-0" });
129614
130136
  }
129615
130137
  if (variant === "error") {
129616
130138
  return /* @__PURE__ */ jsx286(XCircle16, { className: "h-4 w-4 text-destructive shrink-0" });
@@ -129692,7 +130214,7 @@ function NotificationItem({
129692
130214
  className: "rounded p-0.5 text-muted-foreground hover:bg-accent hover:text-foreground",
129693
130215
  title: t("toasts:menu.markAsRead", { defaultValue: "Mark as read" }),
129694
130216
  "aria-label": t("toasts:menu.markAsRead", { defaultValue: "Mark as read" }),
129695
- children: /* @__PURE__ */ jsx286(Check48, { className: "h-3 w-3" })
130217
+ children: /* @__PURE__ */ jsx286(Check49, { className: "h-3 w-3" })
129696
130218
  }
129697
130219
  ),
129698
130220
  /* @__PURE__ */ jsx286(
@@ -129706,7 +130228,7 @@ function NotificationItem({
129706
130228
  className: "rounded p-0.5 text-muted-foreground opacity-60 hover:opacity-100 hover:bg-destructive/10 hover:text-destructive transition-opacity",
129707
130229
  title: t("toasts:menu.remove", { defaultValue: "Remove notification" }),
129708
130230
  "aria-label": t("toasts:menu.remove", { defaultValue: "Remove notification" }),
129709
- children: /* @__PURE__ */ jsx286(X62, { className: "h-3 w-3" })
130231
+ children: /* @__PURE__ */ jsx286(X63, { className: "h-3 w-3" })
129710
130232
  }
129711
130233
  ),
129712
130234
  !item.read && /* @__PURE__ */ jsx286(
@@ -130190,7 +130712,7 @@ function WorkbenchTopbar({
130190
130712
  }
130191
130713
  ),
130192
130714
  /* @__PURE__ */ jsx287("span", { className: "flex-1", children: t(option.labelKey) }),
130193
- palette === option.id ? /* @__PURE__ */ jsx287(Check49, { className: "h-3.5 w-3.5 text-primary", "aria-hidden": true }) : null
130715
+ palette === option.id ? /* @__PURE__ */ jsx287(Check50, { className: "h-3.5 w-3.5 text-primary", "aria-hidden": true }) : null
130194
130716
  ]
130195
130717
  },
130196
130718
  option.id