@wrongstack/webui 0.317.2 → 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 (87) hide show
  1. package/dist/assets/{AgentRosterView-xv5VajRi.js → AgentRosterView-BVpIFQwi.js} +1 -1
  2. package/dist/assets/{AnalyticsDashboard-D7D5_bvf.js → AnalyticsDashboard-nqlWJi6M.js} +1 -1
  3. package/dist/assets/{AudienceMemoryPanel-Cpg91ZrC.js → AudienceMemoryPanel-BT6C4Jkw.js} +1 -1
  4. package/dist/assets/{ChangesView-4CP-bLYD.js → ChangesView-CN7NWDeV.js} +1 -1
  5. package/dist/assets/{ChimeraReviewsView-DZjw-bOC.js → ChimeraReviewsView-BNQE5kRx.js} +1 -1
  6. package/dist/assets/{ChronicleDashboard-BnNxX8Hc.js → ChronicleDashboard-BWMkG_hu.js} +1 -1
  7. package/dist/assets/{CodeEditor-FNYzhDcO.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-BXqObet6.js → CronJobsPanel-CsMIoWVQ.js} +1 -1
  11. package/dist/assets/{DeadCodeScanPanel-VnMQatbH.js → DeadCodeScanPanel-DooqnEMF.js} +1 -1
  12. package/dist/assets/{DebugDashboard-Hwt0OxYX.js → DebugDashboard-C0tmxxV8.js} +1 -1
  13. package/dist/assets/{DesignGalleryView-Ce2H_zeu.js → DesignGalleryView-lc-XRmVG.js} +1 -1
  14. package/dist/assets/{GoalView-DlS73sGV.js → GoalView-BuYUc4OB.js} +1 -1
  15. package/dist/assets/{KanbanView-Cd77gXMT.js → KanbanView-DQK6adut.js} +1 -1
  16. package/dist/assets/{MailboxDetailView-B4hFbVk5.js → MailboxDetailView-CBV3-Hf2.js} +1 -1
  17. package/dist/assets/{MemoryDrawer-CnpnSW42.js → MemoryDrawer-rPf-1Ulk.js} +1 -1
  18. package/dist/assets/{MemoryManager-DqJfeD_d.js → MemoryManager-B_ZJhOqq.js} +1 -1
  19. package/dist/assets/{ModelPicker-R1UwpDyl.js → ModelPicker-CLs0qQgg.js} +1 -1
  20. package/dist/assets/{OfficeMapPanel-zAuziIkn.js → OfficeMapPanel-DnbdkXL1.js} +1 -1
  21. package/dist/assets/{ProcessMonitor-Baj9b1_B.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-B5JjTm9k.js → RequirementIntakeView-g9dzUTVw.js} +1 -1
  26. package/dist/assets/{SageTabs-Co-5UcaG.js → SageTabs-Bw6PDwy3.js} +2 -2
  27. package/dist/assets/{SddFlowGraph-BsfhxlDK.js → SddFlowGraph-Bj_Aqq5B.js} +1 -1
  28. package/dist/assets/{SddHub-DYAjEaqD.js → SddHub-Cdow0Exb.js} +1 -1
  29. package/dist/assets/{SessionInspectView-DVeF-pUQ.js → SessionInspectView-je_xLISf.js} +1 -1
  30. package/dist/assets/{SessionList-BvVLmIsL.js → SessionList-4y1uuB-y.js} +1 -1
  31. package/dist/assets/{SessionsDashboard-wPcCBDIK.js → SessionsDashboard-DkaNF5lx.js} +1 -1
  32. package/dist/assets/{SetupScreen-uhBHDZqD.js → SetupScreen-DWzbXvmU.js} +1 -1
  33. package/dist/assets/{SkillDetailView-DPqT3npD.js → SkillDetailView-Bjq8GkDB.js} +1 -1
  34. package/dist/assets/{SpecsView-BEITfh6o.js → SpecsView-ok8HZ8ws.js} +1 -1
  35. package/dist/assets/{TechStackView-DLEi7aSX.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 +1068 -544
  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/file-store.d.ts +9 -0
  73. package/dist/stores/fleet-store.d.ts +4 -0
  74. package/dist/stores/types.d.ts +9 -0
  75. package/dist/stores/ui-store.d.ts +0 -2
  76. package/package.json +10 -10
  77. package/dist/assets/index-DSyVpLgL.css +0 -1
  78. package/dist/assets/index-b_i-YcNT.js +0 -137
  79. package/dist/assets/setup-BQLPzL3N.js +0 -1
  80. package/dist/assets/setup-C9lrNwQF.js +0 -1
  81. package/dist/assets/setup-CcxP7cUl.js +0 -1
  82. package/dist/assets/setup-CtKKNpH9.js +0 -1
  83. package/dist/assets/setup-D4rp2jda.js +0 -1
  84. package/dist/assets/setup-MvmOtwNp.js +0 -1
  85. package/dist/assets/setup-blxUcxNU.js +0 -1
  86. package/dist/assets/ui-store-DpKUBLWd.js +0 -1
  87. package/dist/assets/useWebSocket-B4er0zlV.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) {
@@ -48848,17 +49054,20 @@ function hydrateReplayMessages(replay, markers = [], toolMeta = []) {
48848
49054
  const timestamp2 = replayTimestamp(item.ts);
48849
49055
  const id = replayMessageId(messages.length);
48850
49056
  switch (item.kind) {
48851
- case "user":
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;
49070
+ }
48862
49071
  case "assistant":
48863
49072
  messages.push({ id, role: "assistant", content: item.text, timestamp: timestamp2 });
48864
49073
  break;
@@ -49130,6 +49339,7 @@ var init_session_replay_handlers = __esm({
49130
49339
  init_view_navigation();
49131
49340
  init_ws_client();
49132
49341
  init_bug_hunt_message();
49342
+ init_perf_run_message();
49133
49343
  init_stores();
49134
49344
  init_session_tab_store();
49135
49345
  init_resume_progress_store();
@@ -51763,7 +51973,7 @@ var init_useProviderModels = __esm({
51763
51973
  });
51764
51974
 
51765
51975
  // src/components/MessageBubble/CopyButton.tsx
51766
- import { Copy as Copy5, Check as Check15 } from "lucide-react";
51976
+ import { Copy as Copy5, Check as Check16 } from "lucide-react";
51767
51977
  import { useState as useState54 } from "react";
51768
51978
  import { Fragment as Fragment24, jsx as jsx85, jsxs as jsxs80 } from "react/jsx-runtime";
51769
51979
  function CopyButton({
@@ -51794,7 +52004,7 @@ function CopyButton({
51794
52004
  ),
51795
52005
  title: labelText,
51796
52006
  children: copied ? /* @__PURE__ */ jsxs80(Fragment24, { children: [
51797
- /* @__PURE__ */ jsx85(Check15, { className: "h-3 w-3 text-success" }),
52007
+ /* @__PURE__ */ jsx85(Check16, { className: "h-3 w-3 text-success" }),
51798
52008
  /* @__PURE__ */ jsx85("span", { children: t("common:action.copied") })
51799
52009
  ] }) : /* @__PURE__ */ jsxs80(Fragment24, { children: [
51800
52010
  /* @__PURE__ */ jsx85(Copy5, { className: "h-3 w-3" }),
@@ -52382,7 +52592,7 @@ var init_fallback_ref = __esm({
52382
52592
  });
52383
52593
 
52384
52594
  // src/components/ModelPicker.tsx
52385
- 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";
52386
52596
  import { useEffect as useEffect73, useMemo as useMemo37, useRef as useRef37, useState as useState72 } from "react";
52387
52597
  import { jsx as jsx120, jsxs as jsxs113 } from "react/jsx-runtime";
52388
52598
  function ModelPicker({
@@ -52431,7 +52641,7 @@ function ModelPicker({
52431
52641
  children: value ? provider ? `${provider}/${value}` : value : placeholder ?? t("activity:model.runDefault")
52432
52642
  }
52433
52643
  ),
52434
- /* @__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" })
52435
52645
  ]
52436
52646
  }
52437
52647
  ),
@@ -52452,7 +52662,7 @@ function ModelPicker({
52452
52662
  type: "button",
52453
52663
  onClick: () => setQuery(""),
52454
52664
  className: "text-muted-foreground hover:text-foreground",
52455
- children: /* @__PURE__ */ jsx120(X17, { className: "h-3 w-3" })
52665
+ children: /* @__PURE__ */ jsx120(X18, { className: "h-3 w-3" })
52456
52666
  }
52457
52667
  )
52458
52668
  ] }),
@@ -52488,7 +52698,7 @@ function ModelPicker({
52488
52698
  selected ? "bg-primary/8 text-primary" : "text-foreground"
52489
52699
  ),
52490
52700
  children: [
52491
- 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" }),
52492
52702
  /* @__PURE__ */ jsxs113("span", { className: "min-w-0 flex-1", children: [
52493
52703
  /* @__PURE__ */ jsxs113("span", { className: "flex items-center gap-1", children: [
52494
52704
  /* @__PURE__ */ jsx120("span", { className: "break-words", children: c.label }),
@@ -52516,7 +52726,7 @@ var init_ModelPicker = __esm({
52516
52726
  });
52517
52727
 
52518
52728
  // src/components/FallbackEditor.tsx
52519
- 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";
52520
52730
  import { jsx as jsx121, jsxs as jsxs114 } from "react/jsx-runtime";
52521
52731
  function FallbackEditor({
52522
52732
  value,
@@ -52597,7 +52807,7 @@ function FallbackEditor({
52597
52807
  onClick: () => remove(i),
52598
52808
  className: "text-muted-foreground hover:text-destructive",
52599
52809
  title: t("common:action.remove"),
52600
- children: /* @__PURE__ */ jsx121(X18, { className: "h-3 w-3" })
52810
+ children: /* @__PURE__ */ jsx121(X19, { className: "h-3 w-3" })
52601
52811
  }
52602
52812
  )
52603
52813
  ]
@@ -52687,7 +52897,7 @@ var init_useFieldKeyboardNav = __esm({
52687
52897
  });
52688
52898
 
52689
52899
  // src/components/SetupScreen/ModelEditor.tsx
52690
- 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";
52691
52901
  import { useCallback as useCallback34, useEffect as useEffect76, useRef as useRef40, useState as useState76 } from "react";
52692
52902
  import { jsx as jsx130, jsxs as jsxs122 } from "react/jsx-runtime";
52693
52903
  function ModelEditor({
@@ -52791,7 +53001,7 @@ maxOutput: ${model.maxOutput}` : ""}` : void 0,
52791
53001
  type: "button",
52792
53002
  onClick: () => removeModel(model.id),
52793
53003
  className: "opacity-0 group-hover:opacity-100 transition-opacity text-muted-foreground hover:text-destructive",
52794
- children: /* @__PURE__ */ jsx130(X20, { className: "h-3 w-3" })
53004
+ children: /* @__PURE__ */ jsx130(X21, { className: "h-3 w-3" })
52795
53005
  }
52796
53006
  )
52797
53007
  ]
@@ -52823,7 +53033,7 @@ maxOutput: ${model.maxOutput}` : ""}` : void 0,
52823
53033
  "hover:bg-accent/10 border border-transparent hover:border-accent/30"
52824
53034
  ),
52825
53035
  children: [
52826
- /* @__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" }),
52827
53037
  /* @__PURE__ */ jsxs122("div", { className: "min-w-0 flex-1", children: [
52828
53038
  /* @__PURE__ */ jsx130("span", { className: "font-medium block truncate", children: match.name }),
52829
53039
  /* @__PURE__ */ jsxs122("span", { className: "text-muted-foreground block", children: [
@@ -52868,7 +53078,7 @@ maxOutput: ${model.maxOutput}` : ""}` : void 0,
52868
53078
  }
52869
53079
  ),
52870
53080
  /* @__PURE__ */ jsxs122(Button, { type: "button", size: "sm", onClick: confirmCustom, disabled: !customId.trim(), children: [
52871
- /* @__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" }),
52872
53082
  t("setup:screen.custom.add")
52873
53083
  ] })
52874
53084
  ] }),
@@ -54090,7 +54300,7 @@ var init_roster_ws = __esm({
54090
54300
  });
54091
54301
 
54092
54302
  // src/components/AgentRosterCatalogTab.tsx
54093
- 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";
54094
54304
  import { useCallback as useCallback52, useMemo as useMemo47, useState as useState98 } from "react";
54095
54305
  import { jsx as jsx159, jsxs as jsxs150 } from "react/jsx-runtime";
54096
54306
  function RosterCatalogTab({
@@ -54145,7 +54355,7 @@ function RosterCatalogTab({
54145
54355
  type: "button",
54146
54356
  onClick: () => setSearchQuery(""),
54147
54357
  className: "text-muted-foreground hover:text-foreground",
54148
- children: /* @__PURE__ */ jsx159(X27, { className: "h-3 w-3" })
54358
+ children: /* @__PURE__ */ jsx159(X28, { className: "h-3 w-3" })
54149
54359
  }
54150
54360
  )
54151
54361
  ] }) }),
@@ -54179,7 +54389,7 @@ function RosterCatalogTab({
54179
54389
  ] })
54180
54390
  ] }),
54181
54391
  /* @__PURE__ */ jsx159(
54182
- ChevronDown22,
54392
+ ChevronDown23,
54183
54393
  {
54184
54394
  className: cn(
54185
54395
  "h-3.5 w-3.5 shrink-0 text-muted-foreground transition-transform",
@@ -56377,7 +56587,7 @@ import {
56377
56587
  Tag as Tag2,
56378
56588
  Trash2 as Trash216,
56379
56589
  Upload,
56380
- X as X28
56590
+ X as X29
56381
56591
  } from "lucide-react";
56382
56592
  import { useCallback as useCallback55, useEffect as useEffect94, useMemo as useMemo50, useRef as useRef51, useState as useState101 } from "react";
56383
56593
  import { Fragment as Fragment44, jsx as jsx167, jsxs as jsxs157 } from "react/jsx-runtime";
@@ -56685,7 +56895,7 @@ function AudienceMemoryPanel() {
56685
56895
  className: "absolute right-2 top-1/2 -translate-y-1/2 rounded-sm p-0.5 text-muted-foreground hover:text-foreground",
56686
56896
  onClick: () => setQuery(""),
56687
56897
  "aria-label": t("activity:audienceMem.clearAudienceMemorySearch"),
56688
- children: /* @__PURE__ */ jsx167(X28, { className: "size-3" })
56898
+ children: /* @__PURE__ */ jsx167(X29, { className: "size-3" })
56689
56899
  }
56690
56900
  )
56691
56901
  ] }),
@@ -56745,7 +56955,7 @@ function AudienceMemoryPanel() {
56745
56955
  onClick: () => setFeedback(null),
56746
56956
  className: "shrink-0 rounded-sm opacity-70 hover:opacity-100",
56747
56957
  "aria-label": t("activity:audienceMem.dismissMessage"),
56748
- children: /* @__PURE__ */ jsx167(X28, { className: "size-3" })
56958
+ children: /* @__PURE__ */ jsx167(X29, { className: "size-3" })
56749
56959
  }
56750
56960
  )
56751
56961
  ]
@@ -57520,7 +57730,7 @@ import {
57520
57730
  MessageSquareText as MessageSquareText2,
57521
57731
  Search as Search16,
57522
57732
  TerminalSquare,
57523
- X as X29
57733
+ X as X30
57524
57734
  } from "lucide-react";
57525
57735
  import { jsx as jsx168, jsxs as jsxs158 } from "react/jsx-runtime";
57526
57736
  function shortPath(value, max = 46) {
@@ -57565,7 +57775,7 @@ function ToolActionDetail({
57565
57775
  /* @__PURE__ */ jsx168("span", { children: t("activity:agentOffice.toolCall") }),
57566
57776
  /* @__PURE__ */ jsx168("h2", { children: call.toolName })
57567
57777
  ] }),
57568
- /* @__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, {}) })
57569
57779
  ] }),
57570
57780
  /* @__PURE__ */ jsxs158("div", { className: "agent-office__detail-status", children: [
57571
57781
  /* @__PURE__ */ jsx168(
@@ -57662,7 +57872,7 @@ function MailActionDetail({
57662
57872
  /* @__PURE__ */ jsx168("span", { children: mail.direction === "incoming" ? "INCOMING MAIL" : "OUTGOING MAIL" }),
57663
57873
  /* @__PURE__ */ jsx168("h2", { children: mail.subject })
57664
57874
  ] }),
57665
- /* @__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, {}) })
57666
57876
  ] }),
57667
57877
  /* @__PURE__ */ jsxs158("div", { className: "agent-office__detail-status", children: [
57668
57878
  /* @__PURE__ */ jsx168("span", { className: cn("agent-office__status-dot", mail.unread && "is-active") }),
@@ -57709,7 +57919,7 @@ function TaskActionDetail({
57709
57919
  /* @__PURE__ */ jsx168("span", { children: t("activity:agentOffice.currentTask") }),
57710
57920
  /* @__PURE__ */ jsx168("h2", { children: selected.agentName })
57711
57921
  ] }),
57712
- /* @__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, {}) })
57713
57923
  ] }),
57714
57924
  /* @__PURE__ */ jsxs158("section", { className: "agent-office__detail-section", children: [
57715
57925
  /* @__PURE__ */ jsx168("h3", { children: t("activity:agentOffice.task") }),
@@ -57731,7 +57941,7 @@ function OfficeBriefingDetail({
57731
57941
  /* @__PURE__ */ jsx168("span", { children: selected.instructionActive ? t("activity:agentOffice.activeInstruction") : t("activity:agentOffice.officeBriefing") }),
57732
57942
  /* @__PURE__ */ jsx168("h2", { children: selected.officeLabel })
57733
57943
  ] }),
57734
- /* @__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, {}) })
57735
57945
  ] }),
57736
57946
  /* @__PURE__ */ jsxs158("div", { className: "agent-office__detail-status", children: [
57737
57947
  /* @__PURE__ */ jsx168(
@@ -58194,7 +58404,7 @@ var init_AgentOfficeView = __esm({
58194
58404
  // src/components/AgentOfficeView/model.ts
58195
58405
  import {
58196
58406
  Building2 as Building22,
58197
- Check as Check24,
58407
+ Check as Check25,
58198
58408
  Code2 as Code25,
58199
58409
  FilePenLine as FilePenLine2,
58200
58410
  FolderSearch as FolderSearch2,
@@ -58415,7 +58625,7 @@ var init_model = __esm({
58415
58625
  leader: Building22,
58416
58626
  builder: Code25,
58417
58627
  researcher: Search17,
58418
- reviewer: Check24,
58628
+ reviewer: Check25,
58419
58629
  planner: ListTodo5,
58420
58630
  operator: TerminalSquare2
58421
58631
  };
@@ -58427,7 +58637,7 @@ import {
58427
58637
  Activity as Activity13,
58428
58638
  Bot as Bot19,
58429
58639
  Building2 as Building23,
58430
- Check as Check25,
58640
+ Check as Check26,
58431
58641
  CheckCircle2 as CheckCircle222,
58432
58642
  Clock3 as Clock34,
58433
58643
  Code2 as Code26,
@@ -58444,7 +58654,7 @@ import {
58444
58654
  Send as Send5,
58445
58655
  TerminalSquare as TerminalSquare3,
58446
58656
  Wifi as Wifi3,
58447
- X as X30,
58657
+ X as X31,
58448
58658
  Zap as Zap24
58449
58659
  } from "lucide-react";
58450
58660
  import { useMemo as useMemo52, useState as useState102 } from "react";
@@ -58522,7 +58732,7 @@ function ToolParcel({
58522
58732
  !compact && call.target && /* @__PURE__ */ jsx169("span", { className: "agent-office__parcel-target", children: shortPath2(call.target) }),
58523
58733
  /* @__PURE__ */ jsx169("span", { className: "agent-office__parcel-summary", children: call.summary })
58524
58734
  ] }),
58525
- /* @__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, {}) })
58526
58736
  ]
58527
58737
  }
58528
58738
  );
@@ -58841,7 +59051,7 @@ function AgentLane({
58841
59051
  className: "agent-office__agent-verified",
58842
59052
  title: agent.presenceSource === "registry" ? "Verified by live session registry" : "Verified by local fleet state",
58843
59053
  children: [
58844
- /* @__PURE__ */ jsx169(Check25, { "aria-hidden": "true" }),
59054
+ /* @__PURE__ */ jsx169(Check26, { "aria-hidden": "true" }),
58845
59055
  agent.presenceSource === "registry" ? "LIVE" : "LOCAL"
58846
59056
  ]
58847
59057
  }
@@ -63133,7 +63343,7 @@ var init_monaco_theme = __esm({
63133
63343
 
63134
63344
  // src/components/MonacoDiffView.tsx
63135
63345
  import { DiffEditor, loader } from "@monaco-editor/react";
63136
- import { Check as Check26, Loader2 as Loader230, Save } from "lucide-react";
63346
+ import { Check as Check27, Loader2 as Loader230, Save } from "lucide-react";
63137
63347
  import * as monaco2 from "monaco-editor";
63138
63348
  import { useCallback as useCallback60, useEffect as useEffect99, useRef as useRef55, useState as useState107 } from "react";
63139
63349
  import { jsx as jsx183, jsxs as jsxs173 } from "react/jsx-runtime";
@@ -63197,7 +63407,7 @@ function MonacoDiffView({
63197
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",
63198
63408
  title: t("activity:monacoDiff.applyTitle"),
63199
63409
  children: [
63200
- 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" }),
63201
63411
  saving ? t("activity:monacoDiff.applying") : savedAt && !dirty ? t("activity:monacoDiff.applied") : t("activity:monacoDiff.apply")
63202
63412
  ]
63203
63413
  }
@@ -63546,7 +63756,7 @@ import {
63546
63756
  ShieldCheck as ShieldCheck7,
63547
63757
  TerminalSquare as TerminalSquare4,
63548
63758
  TriangleAlert as TriangleAlert5,
63549
- X as X31
63759
+ X as X32
63550
63760
  } from "lucide-react";
63551
63761
  import { useCallback as useCallback61, useEffect as useEffect101, useMemo as useMemo56, useRef as useRef56, useState as useState109 } from "react";
63552
63762
  import { jsx as jsx186, jsxs as jsxs176 } from "react/jsx-runtime";
@@ -64135,7 +64345,7 @@ function ChronicleDashboard() {
64135
64345
  type: "button",
64136
64346
  onClick: () => setSelected(null),
64137
64347
  className: "rounded p-1 hover:bg-muted",
64138
- children: /* @__PURE__ */ jsx186(X31, { className: "h-4 w-4" })
64348
+ children: /* @__PURE__ */ jsx186(X32, { className: "h-4 w-4" })
64139
64349
  }
64140
64350
  )
64141
64351
  ] }),
@@ -64673,7 +64883,7 @@ var init_useMemoryForFile = __esm({
64673
64883
  import { useCallback as useCallback63, useEffect as useEffect103, useState as useState111 } from "react";
64674
64884
  import {
64675
64885
  AlertTriangle as AlertTriangle21,
64676
- Check as Check27,
64886
+ Check as Check28,
64677
64887
  CircleX,
64678
64888
  Eye as Eye7,
64679
64889
  EyeOff as EyeOff2,
@@ -64683,7 +64893,7 @@ import {
64683
64893
  Pin as Pin3,
64684
64894
  RefreshCw as RefreshCw20,
64685
64895
  Sparkles as Sparkles15,
64686
- X as X32
64896
+ X as X33
64687
64897
  } from "lucide-react";
64688
64898
  import { Fragment as Fragment51, jsx as jsx187, jsxs as jsxs177 } from "react/jsx-runtime";
64689
64899
  function matchStrengthClass(strength) {
@@ -64825,7 +65035,7 @@ function MemoryCard({
64825
65035
  className: "h-7 gap-1 px-2 text-[11px]",
64826
65036
  title: t("activity:memoryManager.acceptSuggestionTitle"),
64827
65037
  children: [
64828
- /* @__PURE__ */ jsx187(Check27, { className: "size-3" }),
65038
+ /* @__PURE__ */ jsx187(Check28, { className: "size-3" }),
64829
65039
  " ",
64830
65040
  t("activity:memoryManager.actionAcceptDeletion")
64831
65041
  ]
@@ -64842,7 +65052,7 @@ function MemoryCard({
64842
65052
  className: "h-7 gap-1 px-2 text-[11px]",
64843
65053
  title: t("activity:memoryManager.rejectSuggestionTitle"),
64844
65054
  children: [
64845
- /* @__PURE__ */ jsx187(X32, { className: "size-3" }),
65055
+ /* @__PURE__ */ jsx187(X33, { className: "size-3" }),
64846
65056
  " ",
64847
65057
  t("activity:memoryManager.actionKeep")
64848
65058
  ]
@@ -65179,8 +65389,8 @@ import {
65179
65389
  Activity as Activity17,
65180
65390
  Bot as Bot28,
65181
65391
  BrainCircuit as BrainCircuit6,
65182
- Check as Check28,
65183
- ChevronDown as ChevronDown23,
65392
+ Check as Check29,
65393
+ ChevronDown as ChevronDown24,
65184
65394
  ChevronUp as ChevronUp4,
65185
65395
  CircleDot as CircleDot5,
65186
65396
  Copy as Copy8,
@@ -65515,7 +65725,7 @@ function FileActivityDrawer({ file }) {
65515
65725
  children: [
65516
65726
  /* @__PURE__ */ jsx188(FileClock, { className: "h-3.5 w-3.5 shrink-0 text-primary" }),
65517
65727
  /* @__PURE__ */ jsx188("span", { className: "truncate", children: t("activity:fileActivity.title") }),
65518
- 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" })
65519
65729
  ]
65520
65730
  }
65521
65731
  ),
@@ -66026,7 +66236,7 @@ function SkeletonTab({ file }) {
66026
66236
  disabled: !skeleton,
66027
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",
66028
66238
  children: [
66029
- 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" }),
66030
66240
  /* @__PURE__ */ jsx188("span", { children: copied ? "Copied" : "Copy" })
66031
66241
  ]
66032
66242
  }
@@ -66061,7 +66271,7 @@ var CodeEditor_exports = {};
66061
66271
  __export(CodeEditor_exports, {
66062
66272
  CodeEditor: () => CodeEditor
66063
66273
  });
66064
- 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";
66065
66275
  import { useCallback as useCallback65, useEffect as useEffect105, useMemo as useMemo58, useRef as useRef59, useState as useState113 } from "react";
66066
66276
  import Editor, { loader as loader2 } from "@monaco-editor/react";
66067
66277
  import * as monaco3 from "monaco-editor";
@@ -66133,7 +66343,7 @@ function EditorTabs() {
66133
66343
  f.dirty && /* @__PURE__ */ jsx189(Circle8, { className: "h-2 w-2 fill-current text-primary shrink-0" }),
66134
66344
  /* @__PURE__ */ jsx189("span", { className: "truncate", children: baseName }),
66135
66345
  /* @__PURE__ */ jsx189(
66136
- X33,
66346
+ X34,
66137
66347
  {
66138
66348
  className: cn(
66139
66349
  "h-3 w-3 shrink-0 rounded-sm hover:bg-muted-foreground/20 opacity-0 group-hover:opacity-100 transition-opacity",
@@ -66960,7 +67170,7 @@ var init_CodeMapActivityHelpers = __esm({
66960
67170
  });
66961
67171
 
66962
67172
  // src/components/CodeMapActivityDrawer.tsx
66963
- import { Activity as ActivityIcon2, X as X34 } from "lucide-react";
67173
+ import { Activity as ActivityIcon2, X as X35 } from "lucide-react";
66964
67174
  import { jsx as jsx190, jsxs as jsxs180 } from "react/jsx-runtime";
66965
67175
  function CodeMapActivityDrawer({
66966
67176
  historyFile,
@@ -66981,7 +67191,7 @@ function CodeMapActivityDrawer({
66981
67191
  onClick: onClose,
66982
67192
  className: "flex h-7 w-7 items-center justify-center border text-muted-foreground hover:bg-muted",
66983
67193
  "aria-label": t("activity:codeMap.closeActivity"),
66984
- children: /* @__PURE__ */ jsx190(X34, { className: "h-3.5 w-3.5" })
67194
+ children: /* @__PURE__ */ jsx190(X35, { className: "h-3.5 w-3.5" })
66985
67195
  }
66986
67196
  )
66987
67197
  ] }),
@@ -68034,7 +68244,7 @@ var init_CodeMapSelectedNodeSummary = __esm({
68034
68244
  });
68035
68245
 
68036
68246
  // src/components/CodeMapRelations.tsx
68037
- 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";
68038
68248
  import { jsx as jsx198, jsxs as jsxs188 } from "react/jsx-runtime";
68039
68249
  function RelationSection(props) {
68040
68250
  const { t } = useTranslation();
@@ -68065,7 +68275,7 @@ function RelationSection(props) {
68065
68275
  className: "flex h-6 w-5 shrink-0 items-center justify-center text-muted-foreground",
68066
68276
  onClick: () => nested.length > 0 && onToggle(key),
68067
68277
  "aria-label": `${isExpanded ? "Collapse" : "Expand"} relation ${item.node.label}`,
68068
- 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" })
68069
68279
  }
68070
68280
  ),
68071
68281
  /* @__PURE__ */ jsxs188(
@@ -68121,7 +68331,7 @@ var init_CodeMapRelations = __esm({
68121
68331
  });
68122
68332
 
68123
68333
  // src/components/CodeMapRelationInspector.tsx
68124
- import { Radio as Radio6, X as X35 } from "lucide-react";
68334
+ import { Radio as Radio6, X as X36 } from "lucide-react";
68125
68335
  import { jsx as jsx199, jsxs as jsxs189 } from "react/jsx-runtime";
68126
68336
  function CodeMapRelationInspector({
68127
68337
  selectedNode,
@@ -68151,7 +68361,7 @@ function CodeMapRelationInspector({
68151
68361
  className: "text-muted-foreground hover:text-foreground",
68152
68362
  onClick: onClearSelection,
68153
68363
  "aria-label": t("activity:codeMap.clearSelection"),
68154
- children: /* @__PURE__ */ jsx199(X35, { className: "h-3.5 w-3.5" })
68364
+ children: /* @__PURE__ */ jsx199(X36, { className: "h-3.5 w-3.5" })
68155
68365
  }
68156
68366
  )
68157
68367
  ] }),
@@ -68281,7 +68491,7 @@ var init_CodeMapSearchResults = __esm({
68281
68491
  // src/components/CodeMapDirectoryTree.tsx
68282
68492
  import {
68283
68493
  Box as Box2,
68284
- ChevronDown as ChevronDown25,
68494
+ ChevronDown as ChevronDown26,
68285
68495
  ChevronRight as ChevronRight17,
68286
68496
  ExternalLink as ExternalLink6,
68287
68497
  FileCode as FileCode6,
@@ -68348,7 +68558,7 @@ var init_CodeMapDirectoryTree = __esm({
68348
68558
  style: { paddingLeft: 8 + depth * 12 },
68349
68559
  onClick: () => onToggleDirectory(key),
68350
68560
  children: [
68351
- 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" }),
68352
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" }),
68353
68563
  /* @__PURE__ */ jsx201("span", { className: "truncate", children: child.name })
68354
68564
  ]
@@ -68386,7 +68596,7 @@ var init_CodeMapDirectoryTree = __esm({
68386
68596
  className: "flex h-6 w-4 shrink-0 items-center justify-center text-muted-foreground",
68387
68597
  onClick: () => onToggleFile(file),
68388
68598
  "aria-label": `${expanded ? "Collapse" : "Expand"} ${file.label}`,
68389
- 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" })
68390
68600
  }
68391
68601
  ),
68392
68602
  /* @__PURE__ */ jsxs191(
@@ -68482,7 +68692,7 @@ var init_CodeMapDirectoryTree = __esm({
68482
68692
  });
68483
68693
 
68484
68694
  // src/components/CodeMapTreeSidebar.tsx
68485
- 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";
68486
68696
  import { jsx as jsx202, jsxs as jsxs192 } from "react/jsx-runtime";
68487
68697
  function CodeMapTreeSidebar({
68488
68698
  rootGraph,
@@ -68544,7 +68754,7 @@ function CodeMapTreeSidebar({
68544
68754
  onSearchChange("");
68545
68755
  },
68546
68756
  "aria-label": t("activity:codeMapTree.clearSearch"),
68547
- 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" })
68548
68758
  }
68549
68759
  )
68550
68760
  ] })
@@ -68607,7 +68817,7 @@ function CodeMapTreeSidebar({
68607
68817
  className: "flex h-6 w-5 items-center justify-center text-muted-foreground",
68608
68818
  onClick: () => togglePackage(packageNode),
68609
68819
  "aria-label": `${expanded ? "Collapse" : "Expand"} ${packageName}`,
68610
- 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" })
68611
68821
  }
68612
68822
  ),
68613
68823
  /* @__PURE__ */ jsxs192(
@@ -69523,7 +69733,7 @@ import {
69523
69733
  Clock as Clock17,
69524
69734
  Eye as Eye8,
69525
69735
  FileWarning,
69526
- Gauge as Gauge4,
69736
+ Gauge as Gauge6,
69527
69737
  RefreshCw as RefreshCw22,
69528
69738
  Server as Server5,
69529
69739
  TrendingUp as TrendingUp3
@@ -69703,7 +69913,7 @@ function DebugDashboard() {
69703
69913
  title: t("activity:debug.filesProcessed"),
69704
69914
  value: data.fileWatcher?.filesProcessed ?? 0,
69705
69915
  subtitle: t("activity:debug.afterHash"),
69706
- icon: Gauge4,
69916
+ icon: Gauge6,
69707
69917
  color: "text-success"
69708
69918
  }
69709
69919
  )
@@ -69753,7 +69963,7 @@ function DebugDashboard() {
69753
69963
  ] }),
69754
69964
  /* @__PURE__ */ jsxs194("section", { children: [
69755
69965
  /* @__PURE__ */ jsxs194("h2", { className: "mb-3 flex items-center gap-2 text-sm font-semibold text-muted-foreground", children: [
69756
- /* @__PURE__ */ jsx204(Gauge4, { className: "h-4 w-4 text-primary" }),
69966
+ /* @__PURE__ */ jsx204(Gauge6, { className: "h-4 w-4 text-primary" }),
69757
69967
  t("activity:debugDash.webuiServerProcess")
69758
69968
  ] }),
69759
69969
  /* @__PURE__ */ jsxs194("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4", children: [
@@ -69793,7 +70003,7 @@ function DebugDashboard() {
69793
70003
  title: t("activity:debugDash.v8HeapLimit"),
69794
70004
  value: formatBytes2(data.system?.heapLimit ?? 0),
69795
70005
  subtitle: t("activity:debugDash.oldSpaceCeiling"),
69796
- icon: Gauge4,
70006
+ icon: Gauge6,
69797
70007
  color: "text-warning"
69798
70008
  }
69799
70009
  ),
@@ -69982,7 +70192,7 @@ function DebugDashboard() {
69982
70192
  title: t("activity:debugDash.indexWorkload"),
69983
70193
  value: `${data.system?.codebaseIndexServer?.health?.server?.activeRequests ?? 0} requests`,
69984
70194
  subtitle: `${data.system?.codebaseIndexServer?.health?.server?.activeWrites ?? 0} writes \xB7 ${data.system?.codebaseIndexServer?.health?.server?.queuedWrites ?? 0} queued`,
69985
- icon: Gauge4,
70195
+ icon: Gauge6,
69986
70196
  color: "text-primary"
69987
70197
  }
69988
70198
  ),
@@ -70110,7 +70320,7 @@ var DesignGalleryView_exports = {};
70110
70320
  __export(DesignGalleryView_exports, {
70111
70321
  DesignGalleryView: () => DesignGalleryView
70112
70322
  });
70113
- 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";
70114
70324
  import { useCallback as useCallback68, useEffect as useEffect108, useMemo as useMemo60, useState as useState116 } from "react";
70115
70325
  import { jsx as jsx205, jsxs as jsxs195 } from "react/jsx-runtime";
70116
70326
  function applyOv(base, overrides, theme) {
@@ -70495,7 +70705,7 @@ function DesignGalleryView({ className }) {
70495
70705
  onClick: () => showPanel("chat"),
70496
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",
70497
70707
  title: t("common:action.close"),
70498
- children: /* @__PURE__ */ jsx205(X37, { className: "h-4 w-4" })
70708
+ children: /* @__PURE__ */ jsx205(X38, { className: "h-4 w-4" })
70499
70709
  }
70500
70710
  )
70501
70711
  ] })
@@ -70541,7 +70751,7 @@ function DesignGalleryView({ className }) {
70541
70751
  /* @__PURE__ */ jsx205("h3", { className: "text-sm font-semibold truncate", children: kit.name }),
70542
70752
  /* @__PURE__ */ jsx205("code", { className: "text-[10px] text-muted-foreground", children: kit.id }),
70543
70753
  isActive && /* @__PURE__ */ jsxs195("span", { className: "inline-flex items-center gap-0.5 text-[9px] font-semibold uppercase text-primary ml-auto", children: [
70544
- /* @__PURE__ */ jsx205(Check29, { className: "w-3 h-3" }),
70754
+ /* @__PURE__ */ jsx205(Check30, { className: "w-3 h-3" }),
70545
70755
  " ",
70546
70756
  t("activity:design.active")
70547
70757
  ] })
@@ -71217,7 +71427,7 @@ __export(GoalView_exports, {
71217
71427
  GoalView: () => GoalView
71218
71428
  });
71219
71429
  import { useCallback as useCallback70, useEffect as useEffect109, useRef as useRef61, useState as useState119 } from "react";
71220
- 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";
71221
71431
  import { Fragment as Fragment58, jsx as jsx208, jsxs as jsxs198 } from "react/jsx-runtime";
71222
71432
  function GoalView({ onClose }) {
71223
71433
  const { client: client2 } = useWebSocket();
@@ -71456,7 +71666,7 @@ function GoalView({ onClose }) {
71456
71666
  }
71457
71667
  )
71458
71668
  ] }),
71459
- /* @__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" }) })
71460
71670
  ] })
71461
71671
  ] }),
71462
71672
  hasPhases && goalText && /* @__PURE__ */ jsxs198("div", { className: "shrink-0 border-b border-border/60 bg-muted/20 px-4 py-2.5", children: [
@@ -72056,7 +72266,7 @@ var init_useKanbanMeta = __esm({
72056
72266
  });
72057
72267
 
72058
72268
  // src/components/ChipMultiSelect.tsx
72059
- 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";
72060
72270
  import { useEffect as useEffect112, useMemo as useMemo62, useRef as useRef62, useState as useState121 } from "react";
72061
72271
  import { jsx as jsx209, jsxs as jsxs199 } from "react/jsx-runtime";
72062
72272
  function ChipMultiSelect({
@@ -72104,7 +72314,7 @@ function ChipMultiSelect({
72104
72314
  onClick: () => toggle(value),
72105
72315
  className: "text-muted-foreground hover:text-destructive",
72106
72316
  "aria-label": `Remove ${labelFor(value)}`,
72107
- children: /* @__PURE__ */ jsx209(X39, { size: 11 })
72317
+ children: /* @__PURE__ */ jsx209(X40, { size: 11 })
72108
72318
  }
72109
72319
  )
72110
72320
  ]
@@ -72120,7 +72330,7 @@ function ChipMultiSelect({
72120
72330
  children: [
72121
72331
  /* @__PURE__ */ jsx209(Plus18, { className: "h-3.5 w-3.5 shrink-0 text-primary" }),
72122
72332
  /* @__PURE__ */ jsx209("span", { className: "min-w-0 flex-1 truncate text-muted-foreground", children: placeholder ?? "Add\u2026" }),
72123
- /* @__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" })
72124
72334
  ]
72125
72335
  }
72126
72336
  ),
@@ -72141,7 +72351,7 @@ function ChipMultiSelect({
72141
72351
  type: "button",
72142
72352
  onClick: () => setQuery(""),
72143
72353
  className: "text-muted-foreground hover:text-foreground",
72144
- children: /* @__PURE__ */ jsx209(X39, { className: "h-3 w-3" })
72354
+ children: /* @__PURE__ */ jsx209(X40, { className: "h-3 w-3" })
72145
72355
  }
72146
72356
  )
72147
72357
  ] }),
@@ -72158,7 +72368,7 @@ function ChipMultiSelect({
72158
72368
  isSelected ? "bg-primary/8 text-primary" : "text-foreground"
72159
72369
  ),
72160
72370
  children: [
72161
- 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" }),
72162
72372
  /* @__PURE__ */ jsxs199("span", { className: "min-w-0 flex-1", children: [
72163
72373
  /* @__PURE__ */ jsx209("span", { className: "block truncate", children: o.label }),
72164
72374
  o.description && /* @__PURE__ */ jsx209("span", { className: "mt-0.5 block truncate text-[10px] text-muted-foreground", children: o.description })
@@ -72183,7 +72393,7 @@ var init_ChipMultiSelect = __esm({
72183
72393
  });
72184
72394
 
72185
72395
  // src/components/KanbanBoardChrome.tsx
72186
- 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";
72187
72397
  import { useEffect as useEffect113, useState as useState122 } from "react";
72188
72398
  import { jsx as jsx210, jsxs as jsxs200 } from "react/jsx-runtime";
72189
72399
  function relativeLastSeen(lastSeenAt) {
@@ -72313,7 +72523,7 @@ function SupervisorBar({
72313
72523
  ] }),
72314
72524
  snapshot?.summary && /* @__PURE__ */ jsx210("span", { className: "min-w-0 flex-1 truncate text-muted-foreground", children: snapshot.summary }),
72315
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") }),
72316
- /* @__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") })
72317
72527
  ]
72318
72528
  }
72319
72529
  ),
@@ -72861,7 +73071,7 @@ var init_KanbanBoundaryEditor = __esm({
72861
73071
  });
72862
73072
 
72863
73073
  // src/components/KanbanCleanerAlert.tsx
72864
- 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";
72865
73075
  import { useEffect as useEffect115, useId as useId3, useRef as useRef63, useState as useState124 } from "react";
72866
73076
  import { jsx as jsx213, jsxs as jsxs203 } from "react/jsx-runtime";
72867
73077
  function KanbanCleanerAlert({
@@ -72926,7 +73136,7 @@ function KanbanCleanerAlert({
72926
73136
  onClick: () => setExpanded((value) => !value),
72927
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",
72928
73138
  children: /* @__PURE__ */ jsx213(
72929
- ChevronDown29,
73139
+ ChevronDown30,
72930
73140
  {
72931
73141
  size: 14,
72932
73142
  "aria-hidden": "true",
@@ -73170,7 +73380,7 @@ var init_KanbanTaskFields = __esm({
73170
73380
  });
73171
73381
 
73172
73382
  // src/components/TaskRiskPanel.tsx
73173
- 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";
73174
73384
  import { jsx as jsx215, jsxs as jsxs205 } from "react/jsx-runtime";
73175
73385
  function record2(value) {
73176
73386
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
@@ -73479,7 +73689,7 @@ function TaskRiskPanel({
73479
73689
  }
73480
73690
  ),
73481
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 }) }),
73482
- /* @__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" })
73483
73693
  ] }),
73484
73694
  /* @__PURE__ */ jsxs205("div", { className: "space-y-2 border-t border-border/60 p-2.5", children: [
73485
73695
  /* @__PURE__ */ jsx215("div", { className: "grid grid-cols-3 gap-1 text-center sm:grid-cols-6", children: [
@@ -74552,7 +74762,7 @@ import {
74552
74762
  AlertTriangle as AlertTriangle25,
74553
74763
  Ban as Ban2,
74554
74764
  Brain as Brain14,
74555
- Check as Check31,
74765
+ Check as Check32,
74556
74766
  CircleDot as CircleDot7,
74557
74767
  GitMerge as GitMerge3,
74558
74768
  Layers as Layers12,
@@ -74561,7 +74771,7 @@ import {
74561
74771
  RotateCcw as RotateCcw12,
74562
74772
  ShieldAlert as ShieldAlert10,
74563
74773
  Split,
74564
- X as X40
74774
+ X as X41
74565
74775
  } from "lucide-react";
74566
74776
  function statusStyle(s) {
74567
74777
  return SDD_STATUS[s] ?? SDD_STATUS.pending;
@@ -74636,7 +74846,7 @@ var init_sdd_theme = __esm({
74636
74846
  },
74637
74847
  failed: {
74638
74848
  label: "Failed",
74639
- icon: X40,
74849
+ icon: X41,
74640
74850
  text: "text-destructive",
74641
74851
  ring: "border-destructive/45 bg-destructive/10",
74642
74852
  dot: "bg-destructive",
@@ -74644,7 +74854,7 @@ var init_sdd_theme = __esm({
74644
74854
  },
74645
74855
  completed: {
74646
74856
  label: "Done",
74647
- icon: Check31,
74857
+ icon: Check32,
74648
74858
  text: "text-success",
74649
74859
  ring: "border-success/35 bg-success/10",
74650
74860
  dot: "bg-success",
@@ -74697,8 +74907,8 @@ var init_sdd_theme = __esm({
74697
74907
  ];
74698
74908
  SDD_FEED_KIND = {
74699
74909
  started: { icon: Play6, color: "text-warning" },
74700
- completed: { icon: Check31, color: "text-success" },
74701
- failed: { icon: X40, color: "text-destructive" },
74910
+ completed: { icon: Check32, color: "text-success" },
74911
+ failed: { icon: X41, color: "text-destructive" },
74702
74912
  retrying: { icon: RotateCcw12, color: "text-warning" },
74703
74913
  wave: { icon: Layers12, color: "text-primary" },
74704
74914
  deadlock: { icon: AlertTriangle25, color: "text-destructive" },
@@ -74724,14 +74934,14 @@ import {
74724
74934
  useReactFlow as useReactFlow3
74725
74935
  } from "@xyflow/react";
74726
74936
  import "@xyflow/react/dist/style.css";
74727
- 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";
74728
74938
  import { jsx as jsx219, jsxs as jsxs209 } from "react/jsx-runtime";
74729
74939
  function TaskNode({ data }) {
74730
74940
  const t = data.task;
74731
74941
  const { t: tt } = useTranslation();
74732
74942
  const s = STATUS[t.displayStatus];
74733
74943
  const running = t.displayStatus === "in_progress";
74734
- 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;
74735
74945
  return /* @__PURE__ */ jsxs209(
74736
74946
  "div",
74737
74947
  {
@@ -74928,7 +75138,7 @@ var init_SddFlowGraph = __esm({
74928
75138
  });
74929
75139
 
74930
75140
  // src/components/KanbanDecompositionPanel.tsx
74931
- 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";
74932
75142
  import { useMemo as useMemo65, useState as useState127 } from "react";
74933
75143
  import { Fragment as Fragment59, jsx as jsx220, jsxs as jsxs210 } from "react/jsx-runtime";
74934
75144
  function KanbanDecompositionApprovalCard({
@@ -74948,7 +75158,7 @@ function KanbanDecompositionApprovalCard({
74948
75158
  onClick: () => setCollapsed((value) => !value),
74949
75159
  className: "flex w-full items-center gap-2 text-left text-xs font-semibold text-warning",
74950
75160
  children: [
74951
- collapsed ? /* @__PURE__ */ jsx220(ChevronRight19, { size: 13 }) : /* @__PURE__ */ jsx220(ChevronDown31, { size: 13 }),
75161
+ collapsed ? /* @__PURE__ */ jsx220(ChevronRight19, { size: 13 }) : /* @__PURE__ */ jsx220(ChevronDown32, { size: 13 }),
74952
75162
  /* @__PURE__ */ jsx220(Scissors, { size: 13 }),
74953
75163
  pending.length,
74954
75164
  " decomposition proposal",
@@ -74985,7 +75195,7 @@ function KanbanDecompositionApprovalCard({
74985
75195
  }),
74986
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",
74987
75197
  children: [
74988
- /* @__PURE__ */ jsx220(Check33, { size: 12 }),
75198
+ /* @__PURE__ */ jsx220(Check34, { size: 12 }),
74989
75199
  " ",
74990
75200
  t("activity:kanbanDecomp.approve")
74991
75201
  ]
@@ -75002,7 +75212,7 @@ function KanbanDecompositionApprovalCard({
75002
75212
  }),
75003
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",
75004
75214
  children: [
75005
- /* @__PURE__ */ jsx220(X42, { size: 12 }),
75215
+ /* @__PURE__ */ jsx220(X43, { size: 12 }),
75006
75216
  " ",
75007
75217
  t("activity:kanbanDecomp.reject")
75008
75218
  ]
@@ -75126,7 +75336,7 @@ function KanbanDecompositionPanel({
75126
75336
  }),
75127
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",
75128
75338
  children: [
75129
- /* @__PURE__ */ jsx220(Check33, { size: 13 }),
75339
+ /* @__PURE__ */ jsx220(Check34, { size: 13 }),
75130
75340
  " ",
75131
75341
  t("activity:kanbanDecomp.approveAmpSplit")
75132
75342
  ]
@@ -75143,7 +75353,7 @@ function KanbanDecompositionPanel({
75143
75353
  }),
75144
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",
75145
75355
  children: [
75146
- /* @__PURE__ */ jsx220(X42, { size: 13 }),
75356
+ /* @__PURE__ */ jsx220(X43, { size: 13 }),
75147
75357
  " ",
75148
75358
  t("activity:kanbanDecomp.reject")
75149
75359
  ]
@@ -75295,7 +75505,7 @@ var init_KanbanQueueHealthBar = __esm({
75295
75505
  });
75296
75506
 
75297
75507
  // src/components/KanbanRunControls.tsx
75298
- 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";
75299
75509
  import { useState as useState128 } from "react";
75300
75510
  import { jsx as jsx222, jsxs as jsxs212 } from "react/jsx-runtime";
75301
75511
  function RunControlBar({
@@ -75455,7 +75665,7 @@ function RunTaskControls({
75455
75665
  type: "button",
75456
75666
  onClick: submitReassign,
75457
75667
  className: "rounded-md bg-primary/10 px-2 py-1.5 text-primary",
75458
- children: /* @__PURE__ */ jsx222(Check34, { size: 14 })
75668
+ children: /* @__PURE__ */ jsx222(Check35, { size: 14 })
75459
75669
  }
75460
75670
  ),
75461
75671
  /* @__PURE__ */ jsx222(
@@ -75464,7 +75674,7 @@ function RunTaskControls({
75464
75674
  type: "button",
75465
75675
  onClick: () => setReassigning(false),
75466
75676
  className: "rounded-md bg-muted px-2 py-1.5",
75467
- children: /* @__PURE__ */ jsx222(X43, { size: 14 })
75677
+ children: /* @__PURE__ */ jsx222(X44, { size: 14 })
75468
75678
  }
75469
75679
  )
75470
75680
  ] }) : /* @__PURE__ */ jsxs212("div", { className: "flex flex-wrap gap-2", children: [
@@ -75722,7 +75932,7 @@ var init_KanbanTaskActivityRecorder = __esm({
75722
75932
  });
75723
75933
 
75724
75934
  // src/components/KanbanTaskCompletionChecks.tsx
75725
- import { Check as Check35, Plus as Plus21 } from "lucide-react";
75935
+ import { Check as Check36, Plus as Plus21 } from "lucide-react";
75726
75936
  import { jsx as jsx225, jsxs as jsxs215 } from "react/jsx-runtime";
75727
75937
  function KanbanTaskCompletionChecks({
75728
75938
  board,
@@ -75742,7 +75952,7 @@ function KanbanTaskCompletionChecks({
75742
75952
  className: "grid grid-cols-[auto_1fr_92px] items-center gap-2 rounded-md border bg-background px-2 py-1.5 text-xs",
75743
75953
  children: [
75744
75954
  /* @__PURE__ */ jsx225(
75745
- Check35,
75955
+ Check36,
75746
75956
  {
75747
75957
  size: 13,
75748
75958
  className: check.status === "passed" ? "text-success" : "text-muted-foreground"
@@ -75977,7 +76187,7 @@ var init_KanbanTaskOptions = __esm({
75977
76187
  });
75978
76188
 
75979
76189
  // src/components/TaskActivityTimeline.tsx
75980
- 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";
75981
76191
  import { useMemo as useMemo66, useState as useState129 } from "react";
75982
76192
  import { Fragment as Fragment60, jsx as jsx227, jsxs as jsxs217 } from "react/jsx-runtime";
75983
76193
  function buildTaskActivityExport(task, events, scope, exportedAt = (/* @__PURE__ */ new Date()).toISOString()) {
@@ -76366,7 +76576,7 @@ function TaskActivityTimeline({
76366
76576
  className: "flex size-7 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground",
76367
76577
  "aria-label": t("activity:taskTimeline.copyVisibleTaskActivityJson"),
76368
76578
  title: t("activity:taskTimeline.copyFilteredActivityJson"),
76369
- 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" })
76370
76580
  }
76371
76581
  ),
76372
76582
  /* @__PURE__ */ jsx227(
@@ -76439,7 +76649,7 @@ function TaskActivityTimeline({
76439
76649
  onClick: () => setQuery(""),
76440
76650
  "aria-label": t("activity:taskTimeline.clearTaskActivitySearch"),
76441
76651
  className: "absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",
76442
- children: /* @__PURE__ */ jsx227(X44, { className: "size-3" })
76652
+ children: /* @__PURE__ */ jsx227(X45, { className: "size-3" })
76443
76653
  }
76444
76654
  )
76445
76655
  ] }),
@@ -76579,7 +76789,7 @@ var init_TaskActivityTimeline = __esm({
76579
76789
  });
76580
76790
 
76581
76791
  // src/components/TaskExecutionAttempts.tsx
76582
- 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";
76583
76793
  import { jsx as jsx228, jsxs as jsxs218 } from "react/jsx-runtime";
76584
76794
  function record4(value) {
76585
76795
  return value && typeof value === "object" && !Array.isArray(value) ? value : {};
@@ -76702,7 +76912,7 @@ function TaskExecutionAttempts({
76702
76912
  "latest:",
76703
76913
  attempts[0].status
76704
76914
  ] }),
76705
- /* @__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" })
76706
76916
  ] }),
76707
76917
  /* @__PURE__ */ jsxs218("div", { className: "space-y-2 border-t border-border/60 p-2.5", children: [
76708
76918
  attemptPage.pageItems.map((attempt) => /* @__PURE__ */ jsxs218("section", { className: "rounded-md border bg-background/70 p-2.5", children: [
@@ -76790,7 +77000,7 @@ import {
76790
77000
  Activity as Activity21,
76791
77001
  Bot as Bot30,
76792
77002
  BrainCircuit as BrainCircuit7,
76793
- ChevronDown as ChevronDown33,
77003
+ ChevronDown as ChevronDown34,
76794
77004
  GitBranch as GitBranch13,
76795
77005
  Route as Route2,
76796
77006
  ShieldCheck as ShieldCheck14
@@ -76966,7 +77176,7 @@ function TaskIntelligencePanel({
76966
77176
  /* @__PURE__ */ jsx229("span", { className: "text-xs font-semibold", children: t("activity:taskIntel.heading") }),
76967
77177
  /* @__PURE__ */ jsx229("span", { className: "rounded bg-muted px-1.5 py-0.5 text-[9px] uppercase text-muted-foreground", children: task.status }),
76968
77178
  /* @__PURE__ */ jsx229("span", { className: "ml-auto text-[10px] text-muted-foreground", children: t("activity:taskIntel.eventsCount", { count: intelligence.eventCount }) }),
76969
- /* @__PURE__ */ jsx229(ChevronDown33, { className: "size-3.5 text-muted-foreground" })
77179
+ /* @__PURE__ */ jsx229(ChevronDown34, { className: "size-3.5 text-muted-foreground" })
76970
77180
  ] }),
76971
77181
  /* @__PURE__ */ jsxs219("div", { className: "space-y-2.5 border-t border-border/60 p-2.5", children: [
76972
77182
  /* @__PURE__ */ jsxs219("section", { className: "rounded-md border border-info/25 bg-info/5 p-2.5", children: [
@@ -77367,7 +77577,7 @@ var init_KanbanContractGraphPanel = __esm({
77367
77577
  import {
77368
77578
  AlertTriangle as AlertTriangle27,
77369
77579
  CheckCircle2 as CheckCircle227,
77370
- ChevronDown as ChevronDown34,
77580
+ ChevronDown as ChevronDown35,
77371
77581
  ChevronRight as ChevronRight20,
77372
77582
  FileCode2 as FileCode24,
77373
77583
  FileText as FileText17,
@@ -77408,7 +77618,7 @@ function CollapsibleSection({
77408
77618
  onClick: () => setOpen(!open),
77409
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",
77410
77620
  children: [
77411
- open ? /* @__PURE__ */ jsx231(ChevronDown34, { size: 13 }) : /* @__PURE__ */ jsx231(ChevronRight20, { size: 13 }),
77621
+ open ? /* @__PURE__ */ jsx231(ChevronDown35, { size: 13 }) : /* @__PURE__ */ jsx231(ChevronRight20, { size: 13 }),
77412
77622
  /* @__PURE__ */ jsx231(Icon2, { size: 13 }),
77413
77623
  title
77414
77624
  ]
@@ -77437,7 +77647,7 @@ function CheckResultRow({ check }) {
77437
77647
  type: "button",
77438
77648
  onClick: () => setExpanded(!expanded),
77439
77649
  className: "shrink-0 text-muted-foreground hover:text-foreground",
77440
- 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 })
77441
77651
  }
77442
77652
  )
77443
77653
  ] }),
@@ -77657,7 +77867,7 @@ var init_TaskVerificationSection = __esm({
77657
77867
 
77658
77868
  // src/components/KanbanTaskInspector.tsx
77659
77869
  import {
77660
- ChevronDown as ChevronDown35,
77870
+ ChevronDown as ChevronDown36,
77661
77871
  Copy as Copy10,
77662
77872
  Maximize2 as Maximize26,
77663
77873
  Minimize2 as Minimize22,
@@ -77666,7 +77876,7 @@ import {
77666
77876
  Send as Send10,
77667
77877
  ShieldCheck as ShieldCheck16,
77668
77878
  UserPlus as UserPlus3,
77669
- X as X45
77879
+ X as X46
77670
77880
  } from "lucide-react";
77671
77881
  import { useEffect as useEffect118, useState as useState132 } from "react";
77672
77882
  import { Fragment as Fragment62, jsx as jsx233, jsxs as jsxs223 } from "react/jsx-runtime";
@@ -77936,7 +78146,7 @@ function KanbanTaskInspector({
77936
78146
  onClose();
77937
78147
  },
77938
78148
  className: "flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground",
77939
- children: /* @__PURE__ */ jsx233(X45, { size: 16 })
78149
+ children: /* @__PURE__ */ jsx233(X46, { size: 16 })
77940
78150
  }
77941
78151
  )
77942
78152
  ] }),
@@ -78410,7 +78620,7 @@ function KanbanTaskInspector({
78410
78620
  children: [
78411
78621
  t("activity:kanbanInspector.advanced"),
78412
78622
  /* @__PURE__ */ jsx233(
78413
- ChevronDown35,
78623
+ ChevronDown36,
78414
78624
  {
78415
78625
  size: 13,
78416
78626
  className: cn("transition-transform", showAdvanced && "rotate-180")
@@ -78634,20 +78844,20 @@ var init_KanbanTaskInspector = __esm({
78634
78844
  // src/components/KanbanTaskTree.tsx
78635
78845
  import {
78636
78846
  AlertTriangle as AlertTriangle28,
78637
- Check as Check37,
78847
+ Check as Check38,
78638
78848
  ChevronRight as ChevronRight21,
78639
78849
  CircleDot as CircleDot9,
78640
78850
  Loader2 as Loader241,
78641
78851
  ShieldCheck as ShieldCheck17,
78642
78852
  ShieldQuestion as ShieldQuestion2,
78643
78853
  ShieldX,
78644
- X as X46
78854
+ X as X47
78645
78855
  } from "lucide-react";
78646
78856
  import { useMemo as useMemo68 } from "react";
78647
78857
  import { jsx as jsx234, jsxs as jsxs224 } from "react/jsx-runtime";
78648
78858
  function StatusIcon({ task }) {
78649
- if (task.status === "completed") return /* @__PURE__ */ jsx234(Check37, { size: 13, className: "text-success" });
78650
- 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" });
78651
78861
  if (task.status === "in_progress")
78652
78862
  return /* @__PURE__ */ jsx234(Loader241, { size: 13, className: "animate-spin text-info" });
78653
78863
  return /* @__PURE__ */ jsx234(CircleDot9, { size: 13, className: "text-muted-foreground" });
@@ -79196,7 +79406,7 @@ __export(KanbanView_exports, {
79196
79406
  TASK_ACTIVITY_LOAD_LIMIT: () => TASK_ACTIVITY_LOAD_LIMIT,
79197
79407
  deriveTaskCardIntelligence: () => deriveTaskCardIntelligence
79198
79408
  });
79199
- 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";
79200
79410
  import { useEffect as useEffect120, useMemo as useMemo70, useRef as useRef65, useState as useState134 } from "react";
79201
79411
  import { Fragment as Fragment63, jsx as jsx238, jsxs as jsxs227 } from "react/jsx-runtime";
79202
79412
  function KanbanView({ onClose }) {
@@ -79602,7 +79812,7 @@ function KanbanView({ onClose }) {
79602
79812
  }
79603
79813
  ),
79604
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: [
79605
- /* @__PURE__ */ jsx238(X47, { size: 15 }),
79815
+ /* @__PURE__ */ jsx238(X48, { size: 15 }),
79606
79816
  /* @__PURE__ */ jsx238("span", { className: "min-w-0 flex-1 truncate", children: error }),
79607
79817
  /* @__PURE__ */ jsx238(
79608
79818
  "button",
@@ -79611,7 +79821,7 @@ function KanbanView({ onClose }) {
79611
79821
  "aria-label": t("common:action.close"),
79612
79822
  onClick: () => setError(null),
79613
79823
  className: "flex h-6 w-6 shrink-0 items-center justify-center rounded hover:bg-destructive/20",
79614
- children: /* @__PURE__ */ jsx238(X47, { size: 15 })
79824
+ children: /* @__PURE__ */ jsx238(X48, { size: 15 })
79615
79825
  }
79616
79826
  )
79617
79827
  ] }),
@@ -79770,7 +79980,7 @@ import {
79770
79980
  MessageSquare as MessageSquare10,
79771
79981
  Reply,
79772
79982
  Search as Search23,
79773
- X as X48,
79983
+ X as X49,
79774
79984
  Lock as Lock3,
79775
79985
  Globe as Globe8
79776
79986
  } from "lucide-react";
@@ -79903,7 +80113,7 @@ function MailboxDetailView({ className }) {
79903
80113
  onClick: handleClose,
79904
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",
79905
80115
  title: t("activity:mailbox.closeTitle"),
79906
- children: /* @__PURE__ */ jsx239(X48, { className: "h-4 w-4" })
80116
+ children: /* @__PURE__ */ jsx239(X49, { className: "h-4 w-4" })
79907
80117
  }
79908
80118
  )
79909
80119
  ] }),
@@ -79988,7 +80198,7 @@ __export(PromptJournalView_exports, {
79988
80198
  PromptJournalView: () => PromptJournalView
79989
80199
  });
79990
80200
  import {
79991
- ChevronDown as ChevronDown36,
80201
+ ChevronDown as ChevronDown37,
79992
80202
  ChevronRight as ChevronRight22,
79993
80203
  FileText as FileText19,
79994
80204
  RefreshCw as RefreshCw25,
@@ -80197,7 +80407,7 @@ function JournalEntryCard({
80197
80407
  onClick: onToggle,
80198
80408
  className: "flex w-full items-start gap-2 rounded-lg px-3 py-2 text-left hover:bg-accent/40",
80199
80409
  children: [
80200
- 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" }),
80201
80411
  /* @__PURE__ */ jsxs229("div", { className: "min-w-0 flex-1", children: [
80202
80412
  /* @__PURE__ */ jsxs229("div", { className: "flex flex-wrap items-center gap-x-2 gap-y-1 text-xs", children: [
80203
80413
  /* @__PURE__ */ jsx240("span", { className: "tabular text-muted-foreground", children: time }),
@@ -81207,7 +81417,7 @@ import {
81207
81417
  Save as Save5,
81208
81418
  Sparkles as Sparkles18,
81209
81419
  Trash2 as Trash222,
81210
- X as X49
81420
+ X as X50
81211
81421
  } from "lucide-react";
81212
81422
  import { useEffect as useEffect123, useRef as useRef66, useState as useState138 } from "react";
81213
81423
  import { Fragment as Fragment65, jsx as jsx246, jsxs as jsxs235 } from "react/jsx-runtime";
@@ -81260,7 +81470,7 @@ function MemoryEditor({
81260
81470
  ] }),
81261
81471
  /* @__PURE__ */ jsxs235("div", { className: "ml-auto flex items-center gap-2", children: [
81262
81472
  /* @__PURE__ */ jsxs235(Button, { type: "button", variant: "ghost", size: "sm", onClick: onCancel, disabled: busy, children: [
81263
- /* @__PURE__ */ jsx246(X49, { className: "size-3.5" }),
81473
+ /* @__PURE__ */ jsx246(X50, { className: "size-3.5" }),
81264
81474
  " ",
81265
81475
  t("common:action.cancel")
81266
81476
  ] }),
@@ -81668,7 +81878,7 @@ var init_MemoryEditor = __esm({
81668
81878
  });
81669
81879
 
81670
81880
  // src/components/MemoryManager/MemoryFilters.tsx
81671
- 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";
81672
81882
  import { useState as useState139 } from "react";
81673
81883
  import { jsx as jsx247, jsxs as jsxs236 } from "react/jsx-runtime";
81674
81884
  function MemoryFilters({
@@ -81712,7 +81922,7 @@ function MemoryFilters({
81712
81922
  "aria-label": t("activity:memoryManager.clearSearchAria"),
81713
81923
  onClick: () => onSearchChange(""),
81714
81924
  className: "absolute right-2 top-1/2 -translate-y-1/2 p-1 text-muted-foreground hover:text-foreground",
81715
- children: /* @__PURE__ */ jsx247(X50, { className: "size-3.5" })
81925
+ children: /* @__PURE__ */ jsx247(X51, { className: "size-3.5" })
81716
81926
  }
81717
81927
  )
81718
81928
  ] }),
@@ -81798,7 +82008,7 @@ function MemoryFilters({
81798
82008
  title: tagFilter ? `Active filter: ${tagFilter} (click the chip to clear)` : tagsVisible ? "Hide tag filters" : `Show tag filters (${allTags.length})`,
81799
82009
  children: [
81800
82010
  /* @__PURE__ */ jsx247(
81801
- ChevronDown37,
82011
+ ChevronDown38,
81802
82012
  {
81803
82013
  className: cn(
81804
82014
  "size-3 transition-transform",
@@ -82190,7 +82400,7 @@ var init_MemorySearchBreakdown = __esm({
82190
82400
  });
82191
82401
 
82192
82402
  // src/components/MemoryManager/MemoryManagerEmpty.tsx
82193
- 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";
82194
82404
  import { jsx as jsx250, jsxs as jsxs239 } from "react/jsx-runtime";
82195
82405
  function MemoryManagerEmpty({ onCapture }) {
82196
82406
  const { t } = useTranslation();
@@ -82203,7 +82413,7 @@ function MemoryManagerEmpty({ onCapture }) {
82203
82413
  /* @__PURE__ */ jsx250("p", { className: "mt-2 max-w-md text-sm leading-6 text-muted-foreground", children: t("activity:memoryManager.emptyBody") }),
82204
82414
  /* @__PURE__ */ jsxs239("div", { className: "mt-6 grid w-full max-w-lg gap-2 sm:grid-cols-3", children: [
82205
82415
  /* @__PURE__ */ jsxs239("div", { className: "border border-border/70 bg-card/45 p-3", children: [
82206
- /* @__PURE__ */ jsx250(Check38, { className: "mx-auto size-4 text-success" }),
82416
+ /* @__PURE__ */ jsx250(Check39, { className: "mx-auto size-4 text-success" }),
82207
82417
  /* @__PURE__ */ jsx250("p", { className: "mt-2 text-[10px] font-bold uppercase", children: t("activity:memoryManager.emptyVerifiedAnchors") })
82208
82418
  ] }),
82209
82419
  /* @__PURE__ */ jsxs239("div", { className: "border border-border/70 bg-card/45 p-3", children: [
@@ -82393,7 +82603,7 @@ var init_MemoryManagerStatsBar = __esm({
82393
82603
  });
82394
82604
 
82395
82605
  // src/components/MemoryManager/ReviewQueue.tsx
82396
- 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";
82397
82607
  import { useCallback as useCallback72, useEffect as useEffect124, useRef as useRef67, useState as useState140 } from "react";
82398
82608
  import { Fragment as Fragment68, jsx as jsx253, jsxs as jsxs242 } from "react/jsx-runtime";
82399
82609
  function ReviewQueue({
@@ -82527,7 +82737,7 @@ function ReviewQueue({
82527
82737
  }
82528
82738
  if (candidates.length === 0) {
82529
82739
  return /* @__PURE__ */ jsxs242("div", { className: "flex flex-1 flex-col items-center justify-center gap-2 p-8 text-center", children: [
82530
- /* @__PURE__ */ jsx253(Check39, { className: "size-6 text-success" }),
82740
+ /* @__PURE__ */ jsx253(Check40, { className: "size-6 text-success" }),
82531
82741
  /* @__PURE__ */ jsx253("p", { className: "text-sm font-medium", children: t("activity:memoryManager.reviewEmptyTitle") }),
82532
82742
  /* @__PURE__ */ jsx253("p", { className: "max-w-sm text-xs text-muted-foreground", children: t("activity:memoryManager.reviewEmptyHint") }),
82533
82743
  /* @__PURE__ */ jsxs242(Button, { size: "sm", variant: "ghost", onClick: () => load(), children: [
@@ -82561,7 +82771,7 @@ function ReviewQueue({
82561
82771
  disabled: selectedCount === 0 || bulkBusy,
82562
82772
  onClick: () => void bulkAct("accept"),
82563
82773
  children: [
82564
- 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" }),
82565
82775
  t("activity:memoryManager.reviewBulkAccept"),
82566
82776
  selectedCount > 0 ? ` (${selectedCount})` : ""
82567
82777
  ]
@@ -82576,7 +82786,7 @@ function ReviewQueue({
82576
82786
  disabled: selectedCount === 0 || bulkBusy,
82577
82787
  onClick: () => void bulkAct("reject"),
82578
82788
  children: [
82579
- /* @__PURE__ */ jsx253(X51, { className: "size-3" }),
82789
+ /* @__PURE__ */ jsx253(X52, { className: "size-3" }),
82580
82790
  t("activity:memoryManager.reviewBulkKeep"),
82581
82791
  selectedCount > 0 ? ` (${selectedCount})` : ""
82582
82792
  ]
@@ -82642,7 +82852,7 @@ function ReviewQueue({
82642
82852
  disabled: busy,
82643
82853
  onClick: () => void act(c.id, "accept"),
82644
82854
  children: [
82645
- 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" }),
82646
82856
  t("activity:memoryManager.actionAcceptDeletion")
82647
82857
  ]
82648
82858
  }
@@ -82656,7 +82866,7 @@ function ReviewQueue({
82656
82866
  disabled: busy,
82657
82867
  onClick: () => void act(c.id, "reject"),
82658
82868
  children: [
82659
- /* @__PURE__ */ jsx253(X51, { className: "size-3" }),
82869
+ /* @__PURE__ */ jsx253(X52, { className: "size-3" }),
82660
82870
  t("activity:memoryManager.actionKeep")
82661
82871
  ]
82662
82872
  }
@@ -83362,7 +83572,7 @@ var MemoryManager_exports = {};
83362
83572
  __export(MemoryManager_exports, {
83363
83573
  MemoryManager: () => MemoryManager
83364
83574
  });
83365
- 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";
83366
83576
  import { Fragment as Fragment69, jsx as jsx254, jsxs as jsxs243 } from "react/jsx-runtime";
83367
83577
  function MemoryManager() {
83368
83578
  const { t } = useTranslation();
@@ -83422,7 +83632,7 @@ function MemoryManager() {
83422
83632
  ),
83423
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: [
83424
83634
  state.notice && /* @__PURE__ */ jsxs243("div", { role: "status", className: "flex items-center gap-2 text-xs text-success", children: [
83425
- /* @__PURE__ */ jsx254(Check40, { className: "size-3.5" }),
83635
+ /* @__PURE__ */ jsx254(Check41, { className: "size-3.5" }),
83426
83636
  " ",
83427
83637
  state.notice
83428
83638
  ] }),
@@ -84816,7 +85026,7 @@ var init_SddDestroyDialog = __esm({
84816
85026
  });
84817
85027
 
84818
85028
  // src/components/SddKanbanView.tsx
84819
- 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";
84820
85030
  import { useMemo as useMemo77 } from "react";
84821
85031
  import { jsx as jsx261, jsxs as jsxs250 } from "react/jsx-runtime";
84822
85032
  function SddKanbanView({
@@ -84877,8 +85087,8 @@ function KanbanCard({
84877
85087
  children: [
84878
85088
  /* @__PURE__ */ jsxs250("div", { className: "flex items-center gap-1.5", children: [
84879
85089
  running && /* @__PURE__ */ jsx261(Loader247, { className: "h-3 w-3 animate-spin text-warning" }),
84880
- task.displayStatus === "completed" && /* @__PURE__ */ jsx261(Check41, { className: "h-3 w-3 text-success" }),
84881
- 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" }),
84882
85092
  /* @__PURE__ */ jsx261("span", { className: "font-mono text-[10px] text-muted-foreground", children: task.shortId }),
84883
85093
  /* @__PURE__ */ jsx261(
84884
85094
  "span",
@@ -84968,7 +85178,7 @@ var init_SddKanbanView = __esm({
84968
85178
  import {
84969
85179
  Activity as Activity24,
84970
85180
  ArrowLeft as ArrowLeft8,
84971
- Check as Check42,
85181
+ Check as Check43,
84972
85182
  Clock as Clock20,
84973
85183
  FileText as FileText20,
84974
85184
  GitBranch as GitBranch17,
@@ -84980,7 +85190,7 @@ import {
84980
85190
  Terminal as Terminal13,
84981
85191
  Trash2 as Trash225,
84982
85192
  UserCog as UserCog2,
84983
- X as X53
85193
+ X as X54
84984
85194
  } from "lucide-react";
84985
85195
  import { useMemo as useMemo78, useState as useState146 } from "react";
84986
85196
  import { jsx as jsx262, jsxs as jsxs251 } from "react/jsx-runtime";
@@ -85303,7 +85513,7 @@ function SddTaskDrawer({
85303
85513
  onClick: submitReassign,
85304
85514
  disabled: !reassignName.trim(),
85305
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",
85306
- children: /* @__PURE__ */ jsx262(Check42, { className: "h-3.5 w-3.5" })
85516
+ children: /* @__PURE__ */ jsx262(Check43, { className: "h-3.5 w-3.5" })
85307
85517
  }
85308
85518
  ),
85309
85519
  /* @__PURE__ */ jsx262(
@@ -85312,7 +85522,7 @@ function SddTaskDrawer({
85312
85522
  type: "button",
85313
85523
  onClick: () => setReassigning(false),
85314
85524
  className: "rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted",
85315
- children: /* @__PURE__ */ jsx262(X53, { className: "h-3.5 w-3.5" })
85525
+ children: /* @__PURE__ */ jsx262(X54, { className: "h-3.5 w-3.5" })
85316
85526
  }
85317
85527
  )
85318
85528
  ] }) : confirm ? /* @__PURE__ */ jsxs251("div", { className: "sdd-rise flex items-center gap-2", children: [
@@ -85328,7 +85538,7 @@ function SddTaskDrawer({
85328
85538
  },
85329
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",
85330
85540
  children: [
85331
- /* @__PURE__ */ jsx262(Check42, { className: "h-3.5 w-3.5" }),
85541
+ /* @__PURE__ */ jsx262(Check43, { className: "h-3.5 w-3.5" }),
85332
85542
  " ",
85333
85543
  confirm === "stop" ? t("common:action.stop") : t("common:action.delete")
85334
85544
  ]
@@ -85340,7 +85550,7 @@ function SddTaskDrawer({
85340
85550
  type: "button",
85341
85551
  onClick: () => setConfirm(null),
85342
85552
  className: "rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted",
85343
- children: /* @__PURE__ */ jsx262(X53, { className: "h-3.5 w-3.5" })
85553
+ children: /* @__PURE__ */ jsx262(X54, { className: "h-3.5 w-3.5" })
85344
85554
  }
85345
85555
  )
85346
85556
  ] }) : /* @__PURE__ */ jsxs251("div", { className: "flex flex-wrap gap-2", children: [
@@ -85450,7 +85660,7 @@ function SddTaskDrawer({
85450
85660
  setSplitText("");
85451
85661
  },
85452
85662
  className: "rounded-md bg-muted px-2 py-1.5 text-xs text-muted-foreground hover:bg-muted",
85453
- children: /* @__PURE__ */ jsx262(X53, { className: "h-3.5 w-3.5" })
85663
+ children: /* @__PURE__ */ jsx262(X54, { className: "h-3.5 w-3.5" })
85454
85664
  }
85455
85665
  )
85456
85666
  ] })
@@ -85595,7 +85805,7 @@ import {
85595
85805
  Square as Square10,
85596
85806
  Trash2 as Trash226,
85597
85807
  Undo2 as Undo24,
85598
- X as X54,
85808
+ X as X55,
85599
85809
  XCircle as XCircle12,
85600
85810
  Zap as Zap28
85601
85811
  } from "lucide-react";
@@ -85927,7 +86137,7 @@ function SddBoardView({ onClose }) {
85927
86137
  ]
85928
86138
  }
85929
86139
  )),
85930
- /* @__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" }) })
85931
86141
  ] })
85932
86142
  ] }),
85933
86143
  snapshot && p && /* @__PURE__ */ jsxs252("div", { className: "mt-2.5 flex items-center gap-5", children: [
@@ -86120,7 +86330,7 @@ function LifecycleResultBanner({
86120
86330
  children: [
86121
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" }),
86122
86332
  /* @__PURE__ */ jsx263("span", { className: "flex-1", children: lifecycleMessage(result) }),
86123
- /* @__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" }) })
86124
86334
  ]
86125
86335
  }
86126
86336
  );
@@ -86153,9 +86363,9 @@ var init_SddBoardView = __esm({
86153
86363
  // src/components/SddWizard.tsx
86154
86364
  import {
86155
86365
  Bot as Bot31,
86156
- Check as Check43,
86366
+ Check as Check44,
86157
86367
  CheckCheck,
86158
- ChevronDown as ChevronDown38,
86368
+ ChevronDown as ChevronDown39,
86159
86369
  ChevronRight as ChevronRight26,
86160
86370
  Copy as Copy12,
86161
86371
  Lightbulb as Lightbulb3,
@@ -86168,7 +86378,7 @@ import {
86168
86378
  Sparkles as Sparkles20,
86169
86379
  Target as Target4,
86170
86380
  User as User5,
86171
- X as X55,
86381
+ X as X56,
86172
86382
  Zap as Zap29
86173
86383
  } from "lucide-react";
86174
86384
  import { useCallback as useCallback76, useEffect as useEffect131, useMemo as useMemo80, useRef as useRef71, useState as useState148 } from "react";
@@ -86427,7 +86637,7 @@ function SddWizard({
86427
86637
  /* @__PURE__ */ jsx264("p", { className: "mt-1 text-[10px] text-muted-foreground", children: runPlanDecompose ? t("activity:sddWizard.planDecomposeOn") : t("activity:sddWizard.planDecomposeOff") })
86428
86638
  ] })
86429
86639
  ] }),
86430
- /* @__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" }) })
86431
86641
  ] })
86432
86642
  ] }),
86433
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) => {
@@ -86443,7 +86653,7 @@ function SddWizard({
86443
86653
  title: t("activity:sddWizard.rewindToPhaseTitle", "Return to this phase to revise"),
86444
86654
  className: "inline-flex items-center rounded-full px-2 py-0.5 text-success transition hover:bg-success/10 hover:underline",
86445
86655
  children: [
86446
- /* @__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" }),
86447
86657
  t(`activity:sddWizard.${PHASE_LABEL[p]}`)
86448
86658
  ]
86449
86659
  }
@@ -86455,7 +86665,7 @@ function SddWizard({
86455
86665
  active ? "bg-primary/15 text-primary font-medium" : done ? "text-success" : "text-muted-foreground"
86456
86666
  ),
86457
86667
  children: [
86458
- 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" }),
86459
86669
  t(`activity:sddWizard.${PHASE_LABEL[p]}`)
86460
86670
  ]
86461
86671
  }
@@ -86529,7 +86739,7 @@ function SddWizard({
86529
86739
  onClick: () => setGraphOpen((o) => !o),
86530
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",
86531
86741
  children: [
86532
- 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" }),
86533
86743
  /* @__PURE__ */ jsx264(Network10, { className: "h-3.5 w-3.5" }),
86534
86744
  t("activity:sddWizard.taskGraphSummary", { count: snapshot?.taskCount ?? 0 }),
86535
86745
  /* @__PURE__ */ jsx264("span", { className: "ml-auto text-muted-foreground", children: graphOpen ? t("activity:sddWizard.dragToExplore") : t("activity:sddWizard.show") })
@@ -86590,7 +86800,7 @@ function SddWizard({
86590
86800
  onClick: () => setPlanOpen((o) => !o),
86591
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",
86592
86802
  children: [
86593
- 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" }),
86594
86804
  /* @__PURE__ */ jsx264(Sparkles20, { className: "h-3.5 w-3.5 text-primary" }),
86595
86805
  " ",
86596
86806
  t("activity:sddWizard.implementationPlan")
@@ -86613,7 +86823,7 @@ function SddWizard({
86613
86823
  ]
86614
86824
  }
86615
86825
  ) : /* @__PURE__ */ jsxs253(Button, { variant: "secondary", onClick: approve, disabled: busy, children: [
86616
- /* @__PURE__ */ jsx264(Check43, { className: "mr-1.5 h-4 w-4" }),
86826
+ /* @__PURE__ */ jsx264(Check44, { className: "mr-1.5 h-4 w-4" }),
86617
86827
  phase === "spec_review" ? t("activity:sddWizard.approveSpec") : t("activity:sddWizard.approvePlan")
86618
86828
  ] }),
86619
86829
  /* @__PURE__ */ jsxs253(
@@ -86958,7 +87168,7 @@ __export(SpecsView_exports, {
86958
87168
  SpecsView: () => SpecsView
86959
87169
  });
86960
87170
  import { useCallback as useCallback77, useEffect as useEffect132, useState as useState149 } from "react";
86961
- 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";
86962
87172
  import { jsx as jsx266, jsxs as jsxs255 } from "react/jsx-runtime";
86963
87173
  function detailToPhases(detail) {
86964
87174
  return detail.columns.map((col) => ({
@@ -87046,7 +87256,7 @@ function SpecsView({
87046
87256
  /* @__PURE__ */ jsx266("p", { className: "text-xs text-muted-foreground", children: t("activity:specs.subtitle") })
87047
87257
  ] })
87048
87258
  ] }),
87049
- /* @__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" }) })
87050
87260
  ] }),
87051
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) => {
87052
87262
  const expanded = expandedSpecId === spec.id;
@@ -87059,7 +87269,7 @@ function SpecsView({
87059
87269
  onClick: () => toggle(spec),
87060
87270
  className: "flex w-full items-start gap-3 p-4 text-left",
87061
87271
  children: [
87062
- /* @__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" }) }),
87063
87273
  /* @__PURE__ */ jsx266(FileText21, { className: "mt-0.5 h-4 w-4 text-muted-foreground" }),
87064
87274
  /* @__PURE__ */ jsxs255("div", { className: "min-w-0 flex-1", children: [
87065
87275
  /* @__PURE__ */ jsxs255("div", { className: "flex items-center gap-2", children: [
@@ -87333,7 +87543,7 @@ import {
87333
87543
  Star as Star6,
87334
87544
  Trash2 as Trash227,
87335
87545
  Wrench as Wrench18,
87336
- X as X57
87546
+ X as X58
87337
87547
  } from "lucide-react";
87338
87548
  import { useCallback as useCallback79, useEffect as useEffect134, useMemo as useMemo81, useRef as useRef72, useState as useState151 } from "react";
87339
87549
  import { jsx as jsx268, jsxs as jsxs257 } from "react/jsx-runtime";
@@ -87752,7 +87962,7 @@ function SessionList({
87752
87962
  onClick: () => setHistoryQuery(""),
87753
87963
  className: "absolute right-0 top-0 inline-flex h-9 w-8 items-center justify-center text-muted-foreground hover:text-foreground",
87754
87964
  title: t("activity:sessions.clearFilter"),
87755
- children: /* @__PURE__ */ jsx268(X57, { className: "h-3.5 w-3.5" })
87965
+ children: /* @__PURE__ */ jsx268(X58, { className: "h-3.5 w-3.5" })
87756
87966
  }
87757
87967
  ) : null
87758
87968
  ] }),
@@ -89053,7 +89263,7 @@ __export(SkillDetailView_exports, {
89053
89263
  });
89054
89264
  import {
89055
89265
  Sparkles as Sparkles21,
89056
- X as X58,
89266
+ X as X59,
89057
89267
  ChevronLeft as ChevronLeft3,
89058
89268
  ChevronRight as ChevronRight29,
89059
89269
  Download as Download9,
@@ -89061,7 +89271,7 @@ import {
89061
89271
  RefreshCw as RefreshCw31,
89062
89272
  Trash2 as Trash228,
89063
89273
  Copy as Copy13,
89064
- Check as Check44,
89274
+ Check as Check45,
89065
89275
  Globe as Globe9,
89066
89276
  ArrowUpRight,
89067
89277
  FolderOpen as FolderOpen7,
@@ -89436,7 +89646,7 @@ function SkillDetailView({ className }) {
89436
89646
  onClick: handleCopySourceUrl,
89437
89647
  className: "flex shrink-0 items-center text-muted-foreground transition-colors hover:text-foreground",
89438
89648
  title: t("activity:skillDetail.copySourceUrl"),
89439
- 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" })
89440
89650
  }
89441
89651
  )
89442
89652
  ] }),
@@ -89496,7 +89706,7 @@ function SkillDetailView({ className }) {
89496
89706
  onClick: handleClose,
89497
89707
  className: "flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground",
89498
89708
  title: t("activity:skillDetail.closeTitle"),
89499
- children: /* @__PURE__ */ jsx271(X58, { className: "h-4 w-4" })
89709
+ children: /* @__PURE__ */ jsx271(X59, { className: "h-4 w-4" })
89500
89710
  }
89501
89711
  )
89502
89712
  ] })
@@ -89713,7 +89923,7 @@ function SkillDetailView({ className }) {
89713
89923
  /* @__PURE__ */ jsx271(Trash228, { className: "h-4 w-4 text-destructive" }),
89714
89924
  /* @__PURE__ */ jsx271(DialogTitle, { className: "font-semibold text-sm", children: t("activity:skillDetail.uninstallSkillHeading") })
89715
89925
  ] }),
89716
- /* @__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" }) })
89717
89927
  ] }),
89718
89928
  /* @__PURE__ */ jsxs260("div", { className: "min-h-0 flex-1 space-y-2 overflow-y-auto overscroll-contain p-4", children: [
89719
89929
  /* @__PURE__ */ jsx271("p", { className: "text-sm", children: uninstallConfirmSkill && t("activity:skillDetail.uninstallConfirm", { name: uninstallConfirmSkill.name }) }),
@@ -90503,7 +90713,7 @@ var init_FindingsPanel = __esm({
90503
90713
  });
90504
90714
 
90505
90715
  // src/components/TechStackView/TechStackToolbar.tsx
90506
- 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";
90507
90717
  import { jsx as jsx276, jsxs as jsxs265 } from "react/jsx-runtime";
90508
90718
  function TechStackToolbar({
90509
90719
  searchQuery,
@@ -90545,7 +90755,7 @@ function TechStackToolbar({
90545
90755
  "aria-label": t("activity:techStack.clearSearch"),
90546
90756
  onClick: () => onSearchChange(""),
90547
90757
  className: "absolute right-2 top-1/2 -translate-y-1/2 p-1 text-muted-foreground hover:text-foreground",
90548
- children: /* @__PURE__ */ jsx276(X59, { className: "size-3.5" })
90758
+ children: /* @__PURE__ */ jsx276(X60, { className: "size-3.5" })
90549
90759
  }
90550
90760
  )
90551
90761
  ] }),
@@ -90652,7 +90862,7 @@ var TechStackView_exports = {};
90652
90862
  __export(TechStackView_exports, {
90653
90863
  TechStackView: () => TechStackView
90654
90864
  });
90655
- 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";
90656
90866
  import { useCallback as useCallback83, useEffect as useEffect138, useMemo as useMemo84, useState as useState155 } from "react";
90657
90867
  import { Fragment as Fragment76, jsx as jsx277, jsxs as jsxs266 } from "react/jsx-runtime";
90658
90868
  function TechStackView() {
@@ -90887,7 +91097,7 @@ function TechStackView() {
90887
91097
  size: "icon",
90888
91098
  onClick: () => void cancelJob(),
90889
91099
  "aria-label": t("activity:techStack.cancelJob"),
90890
- children: /* @__PURE__ */ jsx277(X60, { className: "size-4" })
91100
+ children: /* @__PURE__ */ jsx277(X61, { className: "size-4" })
90891
91101
  }
90892
91102
  ),
90893
91103
  /* @__PURE__ */ jsxs266(DropdownMenu, { children: [
@@ -91759,9 +91969,9 @@ __export(ChimeraReviewsView_exports, {
91759
91969
  });
91760
91970
  import {
91761
91971
  AlertCircle as AlertCircle7,
91762
- Check as Check45,
91972
+ Check as Check46,
91763
91973
  CheckCircle2 as CheckCircle236,
91764
- ChevronDown as ChevronDown40,
91974
+ ChevronDown as ChevronDown41,
91765
91975
  ChevronRight as ChevronRight30,
91766
91976
  FileCode2 as FileCode28,
91767
91977
  History as History11,
@@ -92061,7 +92271,7 @@ function ChimeraReviewsView() {
92061
92271
  disabled: detail.report.lifecycle === "completed",
92062
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",
92063
92273
  children: [
92064
- /* @__PURE__ */ jsx279(Check45, { className: "h-3.5 w-3.5" }),
92274
+ /* @__PURE__ */ jsx279(Check46, { className: "h-3.5 w-3.5" }),
92065
92275
  "Mark Completed"
92066
92276
  ]
92067
92277
  }
@@ -92262,7 +92472,7 @@ function ChimeraReviewsView() {
92262
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",
92263
92473
  children: [
92264
92474
  /* @__PURE__ */ jsx279("span", { children: "Raw Report Markdown" }),
92265
- 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" })
92266
92476
  ]
92267
92477
  }
92268
92478
  ),
@@ -92639,8 +92849,8 @@ var init_relative_time = __esm({
92639
92849
 
92640
92850
  // src/components/SetupScreen/ProviderKeyCard.tsx
92641
92851
  import {
92642
- Check as Check46,
92643
- ChevronDown as ChevronDown41,
92852
+ Check as Check47,
92853
+ ChevronDown as ChevronDown42,
92644
92854
  ChevronRight as ChevronRight32,
92645
92855
  Copy as Copy14,
92646
92856
  ExternalLink as ExternalLink10,
@@ -92738,7 +92948,7 @@ function ProviderKeyCard({
92738
92948
  /* @__PURE__ */ jsxs270("div", { className: "flex items-center gap-2", children: [
92739
92949
  /* @__PURE__ */ jsx281("h3", { className: "text-sm font-semibold", children: popular.name }),
92740
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: [
92741
- /* @__PURE__ */ jsx281(Check46, { className: "h-2.5 w-2.5" }),
92951
+ /* @__PURE__ */ jsx281(Check47, { className: "h-2.5 w-2.5" }),
92742
92952
  t("setup:screen.card.keySaved")
92743
92953
  ] }),
92744
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: [
@@ -92797,7 +93007,7 @@ function ProviderKeyCard({
92797
93007
  onClick: handleCopyReferral,
92798
93008
  className: "inline-flex items-center gap-1 text-[11px] text-warning/80 hover:text-warning transition-colors",
92799
93009
  children: copied ? /* @__PURE__ */ jsxs270(Fragment77, { children: [
92800
- /* @__PURE__ */ jsx281(Check46, { className: "h-3 w-3" }),
93010
+ /* @__PURE__ */ jsx281(Check47, { className: "h-3 w-3" }),
92801
93011
  " ",
92802
93012
  t("setup:screen.card.copied")
92803
93013
  ] }) : /* @__PURE__ */ jsxs270(Fragment77, { children: [
@@ -92847,7 +93057,7 @@ function ProviderKeyCard({
92847
93057
  /* @__PURE__ */ jsx281(Loader258, { className: "h-3 w-3 animate-spin" }),
92848
93058
  t("setup:screen.probe.checking", "Checking connection\u2026")
92849
93059
  ] }) : probeResult?.ok ? /* @__PURE__ */ jsxs270("div", { className: "flex items-center gap-1.5 text-[11px] text-success mt-1", children: [
92850
- /* @__PURE__ */ jsx281(Check46, { className: "h-3 w-3" }),
93060
+ /* @__PURE__ */ jsx281(Check47, { className: "h-3 w-3" }),
92851
93061
  /* @__PURE__ */ jsxs270("span", { children: [
92852
93062
  t("setup:screen.probe.connected", "Connected"),
92853
93063
  probeResult.modelCount != null && ` \xB7 ${probeResult.modelCount} ${t("setup:screen.probe.models", "models")}`,
@@ -92876,7 +93086,7 @@ function ProviderKeyCard({
92876
93086
  className: "text-[11px] text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1",
92877
93087
  children: [
92878
93088
  t("setup:screen.providers.modelsAvailable", { count: catalogProvider?.modelCount ?? 0 }),
92879
- 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" })
92880
93090
  ]
92881
93091
  }
92882
93092
  )
@@ -93084,7 +93294,7 @@ function ProviderKeyCard({
93084
93294
  variant: "outline",
93085
93295
  onClick: handleCopyReferral,
93086
93296
  className: "shrink-0",
93087
- 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" })
93088
93298
  }
93089
93299
  )
93090
93300
  ] }),
@@ -93119,7 +93329,7 @@ __export(SetupScreen_exports, {
93119
93329
  import {
93120
93330
  ArrowRight as ArrowRight5,
93121
93331
  Bot as Bot32,
93122
- Check as Check47,
93332
+ Check as Check48,
93123
93333
  ChevronRight as ChevronRight33,
93124
93334
  Globe as Globe10,
93125
93335
  KeyRound as KeyRound2,
@@ -93370,7 +93580,7 @@ function SetupScreen() {
93370
93580
  ] })
93371
93581
  ] }),
93372
93582
  hasAnyKey && selectedProvider ? /* @__PURE__ */ jsxs271("span", { className: "text-xs text-success/80", children: [
93373
- /* @__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" }),
93374
93584
  t("setup:screen.header.continue")
93375
93585
  ] }) : null
93376
93586
  ] }),
@@ -93568,7 +93778,7 @@ function SetupScreen() {
93568
93778
  ))
93569
93779
  ] })
93570
93780
  ] }),
93571
- 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" }) })
93572
93782
  ] })
93573
93783
  },
93574
93784
  m.id
@@ -93598,7 +93808,7 @@ function SetupScreen() {
93598
93808
  /* @__PURE__ */ jsx282(ArrowRight5, { className: "h-4 w-4 ml-2" })
93599
93809
  ] }),
93600
93810
  /* @__PURE__ */ jsxs271(Button, { onClick: handleSaveConfig, variant: "outline", className: "flex-1", size: "lg", children: [
93601
- /* @__PURE__ */ jsx282(Check47, { className: "h-4 w-4 mr-2" }),
93811
+ /* @__PURE__ */ jsx282(Check48, { className: "h-4 w-4 mr-2" }),
93602
93812
  t("setup:screen.start.saveConfig")
93603
93813
  ] })
93604
93814
  ] }),
@@ -93660,7 +93870,7 @@ __export(TerminalPanel_exports, {
93660
93870
  import { FitAddon } from "@xterm/addon-fit";
93661
93871
  import { Terminal as Terminal15 } from "@xterm/xterm";
93662
93872
  import "@xterm/xterm/css/xterm.css";
93663
- 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";
93664
93874
  import {
93665
93875
  useEffect as useEffect142,
93666
93876
  useRef as useRef75,
@@ -93878,7 +94088,7 @@ function TerminalPanel({
93878
94088
  onClick: onClose,
93879
94089
  title: t("activity:terminal.closeDock"),
93880
94090
  className: "inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
93881
- children: /* @__PURE__ */ jsx283(X61, { className: "h-4 w-4" })
94091
+ children: /* @__PURE__ */ jsx283(X62, { className: "h-4 w-4" })
93882
94092
  }
93883
94093
  )
93884
94094
  ] })
@@ -93937,7 +94147,7 @@ function TerminalPanel({
93937
94147
  },
93938
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",
93939
94149
  title: t("activity:terminal.closeTab", { name: tab.name }),
93940
- children: /* @__PURE__ */ jsx283(X61, { className: "h-3 w-3" })
94150
+ children: /* @__PURE__ */ jsx283(X62, { className: "h-3 w-3" })
93941
94151
  }
93942
94152
  )
93943
94153
  ]
@@ -94250,7 +94460,7 @@ var QueuePanel_exports = {};
94250
94460
  __export(QueuePanel_exports, {
94251
94461
  QueuePanel: () => QueuePanel
94252
94462
  });
94253
- 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";
94254
94464
  import { useCallback as useCallback90, useLayoutEffect as useLayoutEffect9, useMemo as useMemo87, useRef as useRef76, useState as useState165 } from "react";
94255
94465
  import { jsx as jsx289, jsxs as jsxs278 } from "react/jsx-runtime";
94256
94466
  function QueuePanel({
@@ -94391,7 +94601,7 @@ function QueuePanel({
94391
94601
  title: t("activity:queue.dispatchedTitle"),
94392
94602
  "data-testid": `queue-dispatched-${sourceIdx}`,
94393
94603
  children: [
94394
- /* @__PURE__ */ jsx289(Check50, { className: "h-3 w-3" }),
94604
+ /* @__PURE__ */ jsx289(Check51, { className: "h-3 w-3" }),
94395
94605
  t("activity:queue.dispatchedLabel")
94396
94606
  ]
94397
94607
  }
@@ -94405,7 +94615,7 @@ function QueuePanel({
94405
94615
  className: "ml-1 p-1.5 rounded-md shrink-0 hover:bg-destructive/10 hover:text-destructive transition-colors",
94406
94616
  title: t("activity:queue.removeTitle"),
94407
94617
  "data-testid": `queue-remove-${sourceIdx}`,
94408
- children: /* @__PURE__ */ jsx289(X63, { className: "h-3.5 w-3.5" })
94618
+ children: /* @__PURE__ */ jsx289(X64, { className: "h-3.5 w-3.5" })
94409
94619
  }
94410
94620
  )
94411
94621
  ]
@@ -106504,7 +106714,7 @@ import { lazy as lazy5, Suspense as Suspense5 } from "react";
106504
106714
  import { useShallow as useShallow18 } from "zustand/react/shallow";
106505
106715
 
106506
106716
  // src/components/ChatView/index.tsx
106507
- 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";
106508
106718
  import { lazy as lazy2, Suspense as Suspense2, useEffect as useEffect66 } from "react";
106509
106719
  import { VList as VList2 } from "virtua";
106510
106720
 
@@ -111688,10 +111898,130 @@ function SearchOverlay() {
111688
111898
 
111689
111899
  // src/components/ToolStatsModal.tsx
111690
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
111691
112023
  init_utils();
111692
112024
  init_stores();
111693
- import { Bot as Bot8, Clock as Clock5, Layers as Layers2, TriangleAlert as TriangleAlert3, Wrench as Wrench7, X as X15 } from "lucide-react";
111694
- import { useEffect as useEffect55, useMemo as useMemo28, useState as useState45 } from "react";
111695
112025
  import { jsx as jsx72, jsxs as jsxs67 } from "react/jsx-runtime";
111696
112026
  function emptyTotals() {
111697
112027
  return { started: 0, ok: 0, failed: 0, totalMs: 0 };
@@ -111714,11 +112044,24 @@ function formatMs(ms) {
111714
112044
  if (ms < 1e3) return `${Math.round(ms)}ms`;
111715
112045
  return `${(ms / 1e3).toFixed(1)}s`;
111716
112046
  }
111717
- function RatioBar({
111718
- ok,
111719
- failed,
111720
- inFlight
111721
- }) {
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 }) {
111722
112065
  const total = Math.max(1, ok + failed + inFlight);
111723
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: [
111724
112067
  /* @__PURE__ */ jsx72(
@@ -111746,17 +112089,32 @@ function StatChip({ label, value, tone: tone3 }) {
111746
112089
  function ToolRow({ name, bucket }) {
111747
112090
  const completed = bucket.ok + bucket.failed;
111748
112091
  const avg = completed > 0 ? bucket.totalMs / completed : 0;
111749
- return /* @__PURE__ */ jsxs67("div", { className: "flex items-center gap-2 px-2 py-1 text-xs rounded hover:bg-muted/40 transition-colors", children: [
111750
- /* @__PURE__ */ jsx72(Wrench7, { className: "h-3 w-3 shrink-0 text-muted-foreground" }),
111751
- /* @__PURE__ */ jsx72("span", { className: "font-mono truncate flex-1 min-w-0", title: name, children: name }),
111752
- /* @__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: [
111753
112104
  bucket.started,
111754
112105
  "\xD7"
111755
112106
  ] }),
111756
- /* @__PURE__ */ jsx72(RatioBar, { ok: bucket.ok, failed: bucket.failed, inFlight: 0 }),
111757
- /* @__PURE__ */ jsx72("span", { className: "tabular-nums text-success w-8 text-right", children: bucket.ok }),
111758
- /* @__PURE__ */ jsx72("span", { className: "tabular-nums text-destructive w-8 text-right", children: bucket.failed }),
111759
- /* @__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) })
111760
112118
  ] });
111761
112119
  }
111762
112120
  function ToolStatsModal({ open, onClose }) {
@@ -111818,13 +112176,13 @@ function ToolStatsModal({ open, onClose }) {
111818
112176
  {
111819
112177
  "aria-label": t("chat:toolStats.title", "Tool call statistics"),
111820
112178
  className: cn(
111821
- "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",
111822
112180
  animateIn ? "scale-100" : "scale-95"
111823
112181
  ),
111824
112182
  onClick: (e) => e.stopPropagation(),
111825
112183
  children: [
111826
112184
  /* @__PURE__ */ jsxs67("div", { className: "flex items-center gap-2 border-b border-border/60 px-4 py-3", children: [
111827
- /* @__PURE__ */ jsx72(Wrench7, { className: "h-4 w-4 text-primary" }),
112185
+ /* @__PURE__ */ jsx72(Wrench8, { className: "h-4 w-4 text-primary" }),
111828
112186
  /* @__PURE__ */ jsx72("h2", { className: "text-sm font-semibold", children: t("chat:toolStats.title", "Tool call statistics") }),
111829
112187
  /* @__PURE__ */ jsx72("span", { className: "ml-auto text-[10px] text-muted-foreground", children: t("chat:toolStats.liveScope", "This page \xB7 live + closed sessions") }),
111830
112188
  /* @__PURE__ */ jsx72(
@@ -111839,7 +112197,7 @@ function ToolStatsModal({ open, onClose }) {
111839
112197
  )
111840
112198
  ] }),
111841
112199
  /* @__PURE__ */ jsxs67("div", { className: "flex-1 space-y-4 overflow-y-auto overscroll-contain p-4", children: [
111842
- /* @__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: [
111843
112201
  /* @__PURE__ */ jsx72(
111844
112202
  StatChip,
111845
112203
  {
@@ -111847,7 +112205,14 @@ function ToolStatsModal({ open, onClose }) {
111847
112205
  value: totals.started.toLocaleString()
111848
112206
  }
111849
112207
  ),
111850
- /* @__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
+ ),
111851
112216
  /* @__PURE__ */ jsx72(
111852
112217
  StatChip,
111853
112218
  {
@@ -111880,14 +112245,7 @@ function ToolStatsModal({ open, onClose }) {
111880
112245
  }
111881
112246
  )
111882
112247
  ] }),
111883
- /* @__PURE__ */ jsx72(
111884
- RatioBar,
111885
- {
111886
- ok: totals.ok,
111887
- failed: totals.failed,
111888
- inFlight: totals.inFlight
111889
- }
111890
- ),
112248
+ /* @__PURE__ */ jsx72(RatioBar, { ok: totals.ok, failed: totals.failed, inFlight: totals.inFlight }),
111891
112249
  /* @__PURE__ */ jsxs67("div", { children: [
111892
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: [
111893
112251
  /* @__PURE__ */ jsx72(Layers2, { className: "h-3.5 w-3.5 text-primary" }),
@@ -111896,7 +112254,14 @@ function ToolStatsModal({ open, onClose }) {
111896
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(
111897
112255
  "chat:toolStats.noLiveData",
111898
112256
  "No tool calls recorded yet on this page. Run a prompt \u2014 stats appear here live, per tab."
111899
- ) }) : /* @__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
+ )) })
111900
112265
  ] }),
111901
112266
  pastSessions.length > 0 && /* @__PURE__ */ jsxs67("div", { children: [
111902
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: [
@@ -111943,10 +112308,7 @@ function SessionCard({ session, label }) {
111943
112308
  () => Object.entries(session.perTool).sort(([, a], [, b]) => b.started - a.started),
111944
112309
  [session.perTool]
111945
112310
  );
111946
- const agentEntries = useMemo28(
111947
- () => Object.entries(session.perAgent),
111948
- [session.perAgent]
111949
- );
112311
+ const agentEntries = useMemo28(() => Object.entries(session.perAgent), [session.perAgent]);
111950
112312
  const agentToAgent = agentEntries.filter(([key]) => key !== LEADER_AGENT_KEY);
111951
112313
  const leader = session.perAgent[LEADER_AGENT_KEY];
111952
112314
  const totals = useMemo28(() => {
@@ -111970,26 +112332,28 @@ function SessionCard({ session, label }) {
111970
112332
  ] }),
111971
112333
  /* @__PURE__ */ jsx72("span", { className: "w-24 shrink-0", children: /* @__PURE__ */ jsx72(RatioBar, { ok: totals.ok, failed: totals.failed, inFlight }) })
111972
112334
  ] }),
111973
- /* @__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
+ ] }),
111974
112345
  (agentToAgent.length > 0 || d.started > 0) && /* @__PURE__ */ jsxs67("div", { className: "mt-2 rounded border border-border/40 bg-background/40 p-2", children: [
111975
112346
  /* @__PURE__ */ jsxs67("div", { className: "mb-1 flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-wider text-muted-foreground", children: [
111976
112347
  /* @__PURE__ */ jsx72(Bot8, { className: "h-3 w-3" }),
111977
112348
  t("chat:toolStats.agentToAgent", "Agent-to-agent")
111978
112349
  ] }),
111979
- agentToAgent.map(([agent, bucket]) => /* @__PURE__ */ jsxs67(
111980
- "div",
111981
- {
111982
- className: "flex items-center gap-2 px-1 py-0.5 text-xs",
111983
- children: [
111984
- /* @__PURE__ */ jsx72(Bot8, { className: "h-3 w-3 shrink-0 text-info" }),
111985
- /* @__PURE__ */ jsx72("span", { className: "font-mono truncate flex-1 min-w-0", title: agent, children: agent }),
111986
- /* @__PURE__ */ jsx72(RatioBar, { ok: bucket.ok, failed: bucket.failed, inFlight: 0 }),
111987
- /* @__PURE__ */ jsx72("span", { className: "tabular-nums text-success w-8 text-right", children: bucket.ok }),
111988
- /* @__PURE__ */ jsx72("span", { className: "tabular-nums text-destructive w-8 text-right", children: bucket.failed })
111989
- ]
111990
- },
111991
- agent
111992
- )),
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)),
111993
112357
  d.started > 0 && /* @__PURE__ */ jsxs67("div", { className: "mt-1 flex items-center gap-1.5 px-1 text-[11px] text-muted-foreground", children: [
111994
112358
  /* @__PURE__ */ jsx72(
111995
112359
  TriangleAlert3,
@@ -112016,14 +112380,75 @@ function SessionCard({ session, label }) {
112016
112380
  // src/components/WelcomeScreen.tsx
112017
112381
  init_i18n();
112018
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();
112019
112447
  init_utils();
112020
112448
  init_view_navigation();
112021
112449
  init_ws_client();
112022
112450
  init_stores();
112023
112451
  init_local_prefs();
112024
- import { ArrowRight as ArrowRight3, Crosshair, KeyRound, Loader2 as Loader212, ShieldOff } from "lucide-react";
112025
- import { useCallback as useCallback21, useEffect as useEffect56, useState as useState46 } from "react";
112026
- import { useShallow as useShallow7 } from "zustand/react/shallow";
112027
112452
  import { jsx as jsx73, jsxs as jsxs68 } from "react/jsx-runtime";
112028
112453
  var ELITE_BUG_HUNTER_SLUG = "elite-bug-hunter";
112029
112454
  function directoryPaths(tree) {
@@ -112031,6 +112456,7 @@ function directoryPaths(tree) {
112031
112456
  const visit = (nodes) => {
112032
112457
  for (const node of nodes) {
112033
112458
  if (node.type !== "directory") continue;
112459
+ if (node.ignored) continue;
112034
112460
  paths.push(node.path);
112035
112461
  if (node.children) visit(node.children);
112036
112462
  }
@@ -112060,6 +112486,10 @@ function WelcomeScreen() {
112060
112486
  const [bugHuntState, setBugHuntState] = useState46("idle");
112061
112487
  const [bugHuntScope, setBugHuntScope] = useState46("");
112062
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("");
112063
112493
  const scopeDirectories = directoryPaths(projectTree);
112064
112494
  useEffect56(() => {
112065
112495
  if (!wsConnected) return;
@@ -112084,71 +112514,33 @@ function WelcomeScreen() {
112084
112514
  const client2 = getWSClient(wsUrl);
112085
112515
  if (!client2.isConnected || bugHuntState === "loading") return;
112086
112516
  setBugHuntState("loading");
112087
- let settled = false;
112088
- let policyOff = () => {
112089
- };
112090
- let contentOff = () => {
112091
- };
112092
- const finish = (next) => {
112093
- if (settled) return;
112094
- settled = true;
112095
- clearTimeout(timeout);
112096
- policyOff();
112097
- contentOff();
112098
- setBugHuntState(next);
112099
- };
112100
- const timeout = setTimeout(() => finish("error"), 8e3);
112101
- const requestPrompt = () => {
112102
- contentOff = client2.on("prompts.content", (message) => {
112103
- const payload = message.payload;
112104
- if (payload?.slug !== ELITE_BUG_HUNTER_SLUG) return;
112105
- const content = payload.content?.trim() ?? "";
112106
- if (!payload.found || !content) {
112107
- finish("error");
112108
- return;
112109
- }
112517
+ launchBuiltinRound({
112518
+ client: client2,
112519
+ slug: ELITE_BUG_HUNTER_SLUG,
112520
+ requireSoloSession: true,
112521
+ subagentsAllowed,
112522
+ sessionId,
112523
+ setPrefs,
112524
+ compose: (content) => {
112110
112525
  const scopeText = bugHuntScope ? `${bugHuntScope} and all of its descendants` : "the whole project";
112111
- const runPrompt = buildBugHuntMessage(
112526
+ return buildBugHuntMessage(
112112
112527
  `${content}
112113
112528
 
112114
112529
  ## WebUI run configuration (mandatory)
112115
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.`,
112116
112531
  { scope: bugHuntScope, maxBugs: bugHuntMaxBugs }
112117
112532
  );
112118
- const id = client2.sendMessage(runPrompt);
112533
+ },
112534
+ onSent: (id, content) => {
112119
112535
  addMessage({
112120
112536
  id,
112121
112537
  role: "user",
112122
- content: runPrompt,
112538
+ content,
112123
112539
  bugHunt: { scope: bugHuntScope, maxBugs: bugHuntMaxBugs }
112124
112540
  });
112125
112541
  setLoading(true);
112126
- client2.send({ type: "prompts.used", payload: { slug: ELITE_BUG_HUNTER_SLUG } });
112127
- finish("idle");
112128
- });
112129
- client2.send({ type: "prompts.content", payload: { slug: ELITE_BUG_HUNTER_SLUG } });
112130
- };
112131
- if (!subagentsAllowed) {
112132
- requestPrompt();
112133
- return;
112134
- }
112135
- policyOff = client2.on("prefs.updated", (message) => {
112136
- const payload = message.payload;
112137
- if (sessionId && payload["sessionId"] !== sessionId) return;
112138
- if (typeof payload["subagentsAllowed"] !== "boolean") return;
112139
- if (payload["subagentsAllowed"] !== false) {
112140
- finish("error");
112141
- return;
112142
- }
112143
- policyOff();
112144
- policyOff = () => {
112145
- };
112146
- requestPrompt();
112147
- });
112148
- setPrefs({ subagentsAllowed: false });
112149
- client2.send({
112150
- type: "prefs.update",
112151
- payload: { subagentsAllowed: false, ...sessionId ? { sessionId } : {} }
112542
+ },
112543
+ onSettle: setBugHuntState
112152
112544
  });
112153
112545
  }, [
112154
112546
  addMessage,
@@ -112161,6 +112553,54 @@ This run may complete up to ${bugHuntMaxBugs} proven bug ${bugHuntMaxBugs === 1
112161
112553
  subagentsAllowed,
112162
112554
  wsUrl
112163
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
+ ]);
112164
112604
  const toggleSoloSession = useCallback21(() => {
112165
112605
  const allowed = !subagentsAllowed;
112166
112606
  setPrefs({ subagentsAllowed: allowed });
@@ -112274,7 +112714,76 @@ This run may complete up to ${bugHuntMaxBugs} proven bug ${bugHuntMaxBugs === 1
112274
112714
  )
112275
112715
  ] })
112276
112716
  ] }),
112277
- 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") })
112278
112787
  ] })
112279
112788
  ] })
112280
112789
  ] }),
@@ -112306,13 +112815,14 @@ This run may complete up to ${bugHuntMaxBugs} proven bug ${bugHuntMaxBugs === 1
112306
112815
  }
112307
112816
 
112308
112817
  // src/components/ChatView/AgentTabs.tsx
112818
+ init_dropdown_menu();
112309
112819
  init_i18n();
112310
112820
  init_agent_session();
112311
112821
  init_task_brief_preview();
112312
112822
  init_utils();
112313
112823
  init_ws_client();
112314
112824
  init_stores();
112315
- 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";
112316
112826
  import { useShallow as useShallow8 } from "zustand/react/shallow";
112317
112827
  import { jsx as jsx74, jsxs as jsxs69 } from "react/jsx-runtime";
112318
112828
  var TAB_LED = {
@@ -112322,6 +112832,56 @@ var TAB_LED = {
112322
112832
  timeout: { led: "bg-warning", pulse: false },
112323
112833
  stopped: { led: "bg-muted-foreground", pulse: false }
112324
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
+ }
112325
112885
  function AgentTabs() {
112326
112886
  const { t } = useTranslation();
112327
112887
  const currentSessionId = useActiveSessionId();
@@ -112331,10 +112891,20 @@ function AgentTabs() {
112331
112891
  const leaderName = useFleetStore((s) => leaderId ? s.agents.get(leaderId)?.name : void 0);
112332
112892
  const focusId = useUIStore((s) => s.subagentChatFocusId);
112333
112893
  const setFocus = useUIStore((s) => s.setSubagentChatFocus);
112894
+ const removeAgent = useFleetStore((s) => s.removeAgent);
112334
112895
  const agents = allAgents.filter((a) => agentBelongsToSession(a.sessionId, currentSessionId));
112335
112896
  const subagents = agents.filter((a) => a.id !== leaderId);
112336
112897
  const runningSubs = subagents.filter((a) => a.status === "running").length;
112337
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 });
112338
112908
  return /* @__PURE__ */ jsxs69(
112339
112909
  "div",
112340
112910
  {
@@ -112369,38 +112939,89 @@ function AgentTabs() {
112369
112939
  ]
112370
112940
  }
112371
112941
  ),
112372
- subagents.map((a) => {
112373
- const meta2 = TAB_LED[a.status] ?? TAB_LED.stopped;
112374
- const active = focusId === a.id;
112375
- 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(
112376
112955
  "button",
112377
112956
  {
112378
112957
  type: "button",
112379
- role: "tab",
112380
- "aria-selected": active,
112381
- title: a.description ? taskBriefPreview(a.description, 180) : a.name,
112382
- onClick: () => {
112383
- setFocus(a.id, currentSessionId);
112384
- useUIStore.getState().setCurrentView("chat");
112385
- },
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 }),
112386
112961
  className: cn(
112387
- "flex shrink-0 items-center gap-1.5 rounded-md px-2 py-0.5 text-[11px] font-medium transition-colors border",
112388
- 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"
112389
112964
  ),
112390
112965
  children: [
112391
112966
  /* @__PURE__ */ jsx74(
112392
112967
  "span",
112393
112968
  {
112394
- 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
+ ),
112395
112973
  "aria-hidden": "true"
112396
112974
  }
112397
112975
  ),
112398
- /* @__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" })
112399
112981
  ]
112400
- },
112401
- a.id
112402
- );
112403
- })
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
+ ] })
112404
113025
  ] }),
112405
113026
  /* @__PURE__ */ jsxs69("div", { className: "flex shrink-0 items-center gap-2 pl-2 border-l border-border/30", children: [
112406
113027
  isLoading ? /* @__PURE__ */ jsxs69("div", { className: "inline-flex items-center gap-1", children: [
@@ -112606,14 +113227,14 @@ init_utils();
112606
113227
  import {
112607
113228
  Activity as Activity5,
112608
113229
  AlertTriangle as AlertTriangle11,
112609
- Brain as Brain4,
112610
- ChevronDown as ChevronDown9,
113230
+ Brain as Brain5,
113231
+ ChevronDown as ChevronDown10,
112611
113232
  History as History4,
112612
113233
  PanelLeftOpen,
112613
113234
  Pencil as Pencil2,
112614
113235
  Terminal as Terminal4,
112615
113236
  Wand2 as Wand23,
112616
- Wrench as Wrench9,
113237
+ Wrench as Wrench10,
112617
113238
  Zap as Zap13
112618
113239
  } from "lucide-react";
112619
113240
 
@@ -112623,7 +113244,7 @@ init_i18n();
112623
113244
  import {
112624
113245
  Activity as Activity4,
112625
113246
  ArrowRightLeft,
112626
- ChevronDown as ChevronDown6,
113247
+ ChevronDown as ChevronDown7,
112627
113248
  Pause as Pause2,
112628
113249
  Play as Play2
112629
113250
  } from "lucide-react";
@@ -112705,7 +113326,7 @@ function AutonomyPicker({
112705
113326
  children: [
112706
113327
  current?.icon,
112707
113328
  !compact && /* @__PURE__ */ jsx77("span", { className: "truncate max-w-[7rem]", children: current ? t(`activity:autonomy.${current.labelKey}`) : value }),
112708
- /* @__PURE__ */ jsx77(ChevronDown6, { className: "h-3 w-3 opacity-60" })
113329
+ /* @__PURE__ */ jsx77(ChevronDown7, { className: "h-3 w-3 opacity-60" })
112709
113330
  ]
112710
113331
  }
112711
113332
  ),
@@ -112744,7 +113365,7 @@ init_utils();
112744
113365
  init_i18n();
112745
113366
  init_stores();
112746
113367
  import { expectDefined as expectDefined8 } from "@wrongstack/core/utils/expect-defined";
112747
- 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";
112748
113369
  import { useCallback as useCallback22, useEffect as useEffect58, useRef as useRef26, useState as useState48 } from "react";
112749
113370
  import { jsx as jsx78, jsxs as jsxs73 } from "react/jsx-runtime";
112750
113371
  function ContextModePicker() {
@@ -112816,11 +113437,11 @@ function ContextModePicker() {
112816
113437
  ),
112817
113438
  title: t("activity:ctxMode.triggerTitle"),
112818
113439
  children: [
112819
- /* @__PURE__ */ jsx78(Gauge2, { className: "h-3 w-3" }),
113440
+ /* @__PURE__ */ jsx78(Gauge3, { className: "h-3 w-3" }),
112820
113441
  t("activity:ctxMode.ctxPrefix"),
112821
113442
  " ",
112822
113443
  /* @__PURE__ */ jsx78("span", { className: "font-mono", children: contextMode || active.id }),
112823
- /* @__PURE__ */ jsx78(ChevronDown7, { className: "h-3 w-3 opacity-60" })
113444
+ /* @__PURE__ */ jsx78(ChevronDown8, { className: "h-3 w-3 opacity-60" })
112824
113445
  ]
112825
113446
  }
112826
113447
  ),
@@ -112836,7 +113457,7 @@ function ContextModePicker() {
112836
113457
  opsOpen && "bg-accent/50 text-foreground"
112837
113458
  ),
112838
113459
  title: t("activity:ctxMode.opsHeading"),
112839
- children: /* @__PURE__ */ jsx78(Wrench8, { className: "h-3 w-3" })
113460
+ children: /* @__PURE__ */ jsx78(Wrench9, { className: "h-3 w-3" })
112840
113461
  }
112841
113462
  ),
112842
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: [
@@ -112878,7 +113499,7 @@ function ContextModePicker() {
112878
113499
  onClick: repair,
112879
113500
  className: "w-full text-left px-3 py-2 hover:bg-accent/40 flex items-center gap-2",
112880
113501
  children: [
112881
- /* @__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" }),
112882
113503
  /* @__PURE__ */ jsxs73("div", { children: [
112883
113504
  /* @__PURE__ */ jsx78("div", { className: "text-xs", children: t("activity:ctxMode.repairContext") }),
112884
113505
  /* @__PURE__ */ jsx78("div", { className: "text-[10px] text-muted-foreground", children: t("activity:ctxMode.repairDesc") })
@@ -112924,7 +113545,7 @@ function ContextModePicker() {
112924
113545
  ),
112925
113546
  children: [
112926
113547
  /* @__PURE__ */ jsx78(
112927
- Check11,
113548
+ Check12,
112928
113549
  {
112929
113550
  className: cn(
112930
113551
  "h-3.5 w-3.5 mt-0.5 shrink-0",
@@ -113086,7 +113707,7 @@ init_useWebSocket();
113086
113707
  init_utils();
113087
113708
  init_i18n();
113088
113709
  init_stores();
113089
- import { Check as Check12, ChevronDown as ChevronDown8 } from "lucide-react";
113710
+ import { Check as Check13, ChevronDown as ChevronDown9 } from "lucide-react";
113090
113711
  import { useEffect as useEffect60, useRef as useRef28, useState as useState50 } from "react";
113091
113712
  import { jsx as jsx80, jsxs as jsxs75 } from "react/jsx-runtime";
113092
113713
  function ModePicker() {
@@ -113136,7 +113757,7 @@ function ModePicker() {
113136
113757
  t("activity:mode.modePrefix"),
113137
113758
  " ",
113138
113759
  /* @__PURE__ */ jsx80("span", { className: "font-mono", children: mode || "default" }),
113139
- /* @__PURE__ */ jsx80(ChevronDown8, { className: "h-3 w-3 opacity-60" })
113760
+ /* @__PURE__ */ jsx80(ChevronDown9, { className: "h-3 w-3 opacity-60" })
113140
113761
  ]
113141
113762
  }
113142
113763
  ),
@@ -113156,7 +113777,7 @@ function ModePicker() {
113156
113777
  ),
113157
113778
  children: [
113158
113779
  /* @__PURE__ */ jsx80(
113159
- Check12,
113780
+ Check13,
113160
113781
  {
113161
113782
  className: cn(
113162
113783
  "h-3.5 w-3.5 mt-0.5 shrink-0",
@@ -113309,7 +113930,7 @@ function ChatHeader({
113309
113930
  title: t("chat:switchSession"),
113310
113931
  children: [
113311
113932
  /* @__PURE__ */ jsx81(History4, { className: "h-3 w-3" }),
113312
- /* @__PURE__ */ jsx81(ChevronDown9, { className: "h-2.5 w-2.5" })
113933
+ /* @__PURE__ */ jsx81(ChevronDown10, { className: "h-2.5 w-2.5" })
113313
113934
  ]
113314
113935
  }
113315
113936
  ),
@@ -113368,7 +113989,7 @@ function ChatHeader({
113368
113989
  onClick: () => setToolStatsOpen((v) => !v),
113369
113990
  title: t("chat:header.toolStatsTitle", "Tool call stats"),
113370
113991
  children: [
113371
- /* @__PURE__ */ jsx81(Wrench9, { className: "h-4 w-4" }),
113992
+ /* @__PURE__ */ jsx81(Wrench10, { className: "h-4 w-4" }),
113372
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" })
113373
113994
  ]
113374
113995
  }
@@ -113382,7 +114003,7 @@ function ChatHeader({
113382
114003
  onClick: () => setMemoryPanelOpen((v) => !v),
113383
114004
  title: t("chat:header.memoryContextTitle", "Memory context"),
113384
114005
  children: [
113385
- /* @__PURE__ */ jsx81(Brain4, { className: "h-4 w-4" }),
114006
+ /* @__PURE__ */ jsx81(Brain5, { className: "h-4 w-4" }),
113386
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 }),
113387
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" })
113388
114009
  ]
@@ -113499,6 +114120,7 @@ import { memo as memo12 } from "react";
113499
114120
 
113500
114121
  // src/components/MessageBubble/index.tsx
113501
114122
  init_i18n();
114123
+ init_perf_run_message();
113502
114124
  init_utils();
113503
114125
  init_ws_client();
113504
114126
  init_stores();
@@ -113510,9 +114132,10 @@ import {
113510
114132
  Bot as Bot10,
113511
114133
  Brain as Brain8,
113512
114134
  Crosshair as Crosshair2,
113513
- ChevronDown as ChevronDown14,
114135
+ ChevronDown as ChevronDown15,
113514
114136
  ChevronRight as ChevronRight9,
113515
114137
  FileCode2 as FileCode22,
114138
+ Gauge as Gauge4,
113516
114139
  Info as Info3,
113517
114140
  Pencil as Pencil3,
113518
114141
  Pin as Pin2,
@@ -113532,10 +114155,10 @@ import { memo as memo4, useMemo as useMemo29, useState as useState51 } from "rea
113532
114155
  import {
113533
114156
  Activity as Activity6,
113534
114157
  AlertOctagon,
113535
- Brain as Brain5,
113536
- Check as Check13,
114158
+ Brain as Brain6,
114159
+ Check as Check14,
113537
114160
  CheckCircle2 as CheckCircle29,
113538
- ChevronDown as ChevronDown10,
114161
+ ChevronDown as ChevronDown11,
113539
114162
  ChevronRight as ChevronRight5,
113540
114163
  Compass,
113541
114164
  Copy as Copy3,
@@ -113681,7 +114304,7 @@ var BrainDecisionCard = memo4(function BrainDecisionCard2({
113681
114304
  "flex h-10 w-10 shrink-0 items-center justify-center rounded-xl border shadow-xs transition-transform duration-200 hover:scale-105",
113682
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"
113683
114306
  ),
113684
- 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" })
113685
114308
  }
113686
114309
  ),
113687
114310
  /* @__PURE__ */ jsxs77("div", { children: [
@@ -113701,7 +114324,7 @@ var BrainDecisionCard = memo4(function BrainDecisionCard2({
113701
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",
113702
114325
  title: "Copy Brain Directive",
113703
114326
  children: [
113704
- 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" }),
113705
114328
  /* @__PURE__ */ jsx82("span", { className: "text-[11px]", children: copied ? "Copied" : "Copy" })
113706
114329
  ]
113707
114330
  }
@@ -113779,7 +114402,7 @@ var BrainDecisionCard = memo4(function BrainDecisionCard2({
113779
114402
  className: "text-[11px] text-primary hover:underline font-medium flex items-center gap-0.5 cursor-pointer",
113780
114403
  children: [
113781
114404
  /* @__PURE__ */ jsx82("span", { children: rationaleExpanded ? "Collapse" : "Expand" }),
113782
- 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" })
113783
114406
  ]
113784
114407
  }
113785
114408
  )
@@ -113818,9 +114441,9 @@ import { memo as memo5, useMemo as useMemo30, useState as useState52 } from "rea
113818
114441
  import {
113819
114442
  AlertTriangle as AlertTriangle12,
113820
114443
  Award,
113821
- Check as Check14,
114444
+ Check as Check15,
113822
114445
  CheckCircle2 as CheckCircle210,
113823
- ChevronDown as ChevronDown11,
114446
+ ChevronDown as ChevronDown12,
113824
114447
  ChevronRight as ChevronRight6,
113825
114448
  Clock as Clock6,
113826
114449
  Coins,
@@ -113835,7 +114458,7 @@ import {
113835
114458
  ShieldCheck,
113836
114459
  Sparkles as Sparkles9,
113837
114460
  Users as Users3,
113838
- Wrench as Wrench10,
114461
+ Wrench as Wrench11,
113839
114462
  XCircle as XCircle3,
113840
114463
  Zap as Zap15
113841
114464
  } from "lucide-react";
@@ -113902,7 +114525,7 @@ function getPersonaIcon(persona) {
113902
114525
  if (p.includes("skeptic")) return /* @__PURE__ */ jsx83(ShieldAlert5, { className: "h-3.5 w-3.5" });
113903
114526
  if (p.includes("security")) return /* @__PURE__ */ jsx83(Shield, { className: "h-3.5 w-3.5" });
113904
114527
  if (p.includes("auditor") || p.includes("cost") || p.includes("budget")) return /* @__PURE__ */ jsx83(Coins, { className: "h-3.5 w-3.5" });
113905
- 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" });
113906
114529
  if (p.includes("user") || p.includes("advocate")) return /* @__PURE__ */ jsx83(Users3, { className: "h-3.5 w-3.5" });
113907
114530
  return /* @__PURE__ */ jsx83(Award, { className: "h-3.5 w-3.5" });
113908
114531
  }
@@ -114072,7 +114695,7 @@ var CouncilDecisionCard = memo5(function CouncilDecisionCard2({
114072
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",
114073
114696
  title: "Copy Council Summary",
114074
114697
  children: [
114075
- 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" }),
114076
114699
  /* @__PURE__ */ jsx83("span", { className: "text-[11px]", children: copied ? "Copied" : "Copy" })
114077
114700
  ]
114078
114701
  }
@@ -114312,7 +114935,7 @@ var CouncilDecisionCard = memo5(function CouncilDecisionCard2({
114312
114935
  className: "inline-flex items-center gap-0.5 text-primary hover:underline font-medium cursor-pointer",
114313
114936
  children: [
114314
114937
  /* @__PURE__ */ jsx83("span", { children: isExpanded ? "Hide" : "Rationale" }),
114315
- 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" })
114316
114939
  ]
114317
114940
  }
114318
114941
  ) : null
@@ -114537,7 +115160,7 @@ function StreamingMarkdown({ text: text4 }) {
114537
115160
  // src/components/MessageBubble/ToolLedgerCard.tsx
114538
115161
  init_i18n();
114539
115162
  import {
114540
- ChevronDown as ChevronDown13,
115163
+ ChevronDown as ChevronDown14,
114541
115164
  ChevronRight as ChevronRight8,
114542
115165
  Clock as Clock7,
114543
115166
  Download as Download5,
@@ -114545,124 +115168,6 @@ import {
114545
115168
  } from "lucide-react";
114546
115169
  import { memo as memo8, useState as useState59 } from "react";
114547
115170
 
114548
- // src/lib/tool-icon.ts
114549
- import { getToolIcon, TOOL_ICON_CONFIG } from "@wrongstack/tools/tool-icons";
114550
- import {
114551
- Brain as Brain6,
114552
- ClipboardList as ClipboardList2,
114553
- Code2 as Code22,
114554
- Database as Database2,
114555
- FileEdit as FileEdit2,
114556
- FileJson as FileJson2,
114557
- FileText as FileText7,
114558
- FlaskConical,
114559
- FolderOpen as FolderOpen4,
114560
- FolderTree,
114561
- GitBranch as GitBranch2,
114562
- GitCompare as GitCompare3,
114563
- Globe as Globe4,
114564
- Hammer,
114565
- Hash as Hash2,
114566
- ListChecks,
114567
- ListTodo as ListTodo2,
114568
- Package as Package2,
114569
- ScrollText as ScrollText2,
114570
- Search as Search7,
114571
- Settings,
114572
- Shell,
114573
- Wrench as Wrench11
114574
- } from "lucide-react";
114575
- var TOOL_LUCIDE = {
114576
- file: FileText7,
114577
- edit: FileEdit2,
114578
- search: Search7,
114579
- folder: FolderOpen4,
114580
- terminal: Shell,
114581
- web: Globe4,
114582
- git: GitBranch2,
114583
- tree: FolderTree,
114584
- code: Code22,
114585
- test: FlaskConical,
114586
- package: Package2,
114587
- document: ScrollText2,
114588
- scaffold: Hammer,
114589
- todo: ListTodo2,
114590
- plan: ClipboardList2,
114591
- task: ListChecks,
114592
- meta: Wrench11,
114593
- index: Database2,
114594
- json: FileJson2,
114595
- diff: GitCompare3,
114596
- logs: Hash2,
114597
- settings: Settings,
114598
- brain: Brain6,
114599
- fallback: Wrench11
114600
- };
114601
- function getToolVisual(name) {
114602
- const id = getToolIcon(name);
114603
- return { Icon: TOOL_LUCIDE[id], color: TOOL_ICON_CONFIG[id].color };
114604
- }
114605
- var TOOL_CATEGORY_LABELS = {
114606
- file: "file read/write",
114607
- edit: "file editing",
114608
- search: "search & grep",
114609
- folder: "folder navigation",
114610
- terminal: "shell commands",
114611
- web: "web fetch",
114612
- git: "git operations",
114613
- tree: "directory tree",
114614
- code: "code quality",
114615
- test: "testing",
114616
- package: "package management",
114617
- document: "documentation",
114618
- scaffold: "project scaffolding",
114619
- todo: "todo tracking",
114620
- plan: "planning",
114621
- task: "task management",
114622
- meta: "tool orchestration",
114623
- index: "code indexing",
114624
- json: "JSON data",
114625
- diff: "diff & patch",
114626
- logs: "log viewing",
114627
- settings: "configuration",
114628
- brain: "memory",
114629
- fallback: "external tool"
114630
- };
114631
- function getToolTooltip(name) {
114632
- const id = getToolIcon(name);
114633
- const colorName = hexToColorName(TOOL_ICON_CONFIG[id].color);
114634
- const category = TOOL_CATEGORY_LABELS[id];
114635
- return `${category} \u2014 ${colorName}`;
114636
- }
114637
- function hexToColorName(hex) {
114638
- const colors = {
114639
- "#60a5fa": "blue",
114640
- "#fbbf24": "amber",
114641
- "#a78bfa": "violet",
114642
- "#38bdf8": "sky",
114643
- "#67e8f9": "cyan-light",
114644
- "#a3e635": "lime",
114645
- "#34d399": "emerald",
114646
- "#22d3ee": "cyan",
114647
- "#818cf8": "indigo",
114648
- "#4ade80": "green",
114649
- "#f472b6": "pink",
114650
- "#94a3b8": "slate",
114651
- "#c084fc": "purple",
114652
- "#facc15": "yellow",
114653
- "#2dd4bf": "teal",
114654
- "#5eead4": "teal-light",
114655
- "#cbd5e1": "slate-light",
114656
- "#06b6d4": "cyan-dark",
114657
- "#eab308": "yellow-dark",
114658
- "#93c5fd": "blue-light",
114659
- "#a3a3a3": "neutral",
114660
- "#9ca3af": "gray",
114661
- "#e879f9": "fuchsia"
114662
- };
114663
- return colors[hex] ?? "colored";
114664
- }
114665
-
114666
115171
  // src/lib/tool-summary.ts
114667
115172
  import { FALLBACK_HEAD_FIELDS, summarizeToolInput } from "@wrongstack/tools/tool-summary";
114668
115173
 
@@ -114673,7 +115178,7 @@ init_DiffView();
114673
115178
  // src/components/ToolResult.tsx
114674
115179
  init_utils();
114675
115180
  init_i18n();
114676
- 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";
114677
115182
  import { memo as memo7, useMemo as useMemo32, useState as useState57 } from "react";
114678
115183
 
114679
115184
  // src/lib/sage-block.ts
@@ -114931,7 +115436,7 @@ function JsonResult({
114931
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",
114932
115437
  children: [
114933
115438
  /* @__PURE__ */ jsxs84("span", { className: "flex items-center gap-1", children: [
114934
- 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" }),
114935
115440
  /* @__PURE__ */ jsx90("span", { className: "font-mono", children: t("activity:toolResult.jsonLines", { count: lineCount2 }) })
114936
115441
  ] }),
114937
115442
  /* @__PURE__ */ jsx90("span", { children: expanded ? t("activity:toolResult.collapse") : t("activity:toolResult.expand") })
@@ -115025,7 +115530,7 @@ var ToolLedgerCard = memo8(function ToolLedgerCard2({
115025
115530
  }
115026
115531
  ),
115027
115532
  typeof message.toolDurationMs === "number" && /* @__PURE__ */ jsx92("span", { className: "text-[10px]", children: formatToolDuration(message.toolDurationMs) }),
115028
- 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
115029
115534
  ] })
115030
115535
  ]
115031
115536
  }
@@ -115108,6 +115613,9 @@ var MessageBubble = memo9(function MessageBubble2({
115108
115613
  const isUser = message.role === "user";
115109
115614
  const bugHunt = message.bugHunt;
115110
115615
  const isBugHunt = !!bugHunt;
115616
+ const perfRun = message.perfRun;
115617
+ const isPerfRun = !!perfRun;
115618
+ const isPromptCard = isBugHunt || isPerfRun;
115111
115619
  const isTool = message.role === "tool";
115112
115620
  const isThinkingLog = !!message.thinkingLog;
115113
115621
  const isSystem = message.role === "system" && !isThinkingLog;
@@ -115341,6 +115849,22 @@ var MessageBubble = memo9(function MessageBubble2({
115341
115849
  }
115342
115850
  )
115343
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
+ ] })
115344
115868
  ] }) : editing && isUser ? /* @__PURE__ */ jsxs87("div", { className: "flex flex-col gap-2 min-w-[280px]", children: [
115345
115869
  /* @__PURE__ */ jsx93(
115346
115870
  "textarea",
@@ -115406,7 +115930,7 @@ var MessageBubble = memo9(function MessageBubble2({
115406
115930
  dur: durationLabel,
115407
115931
  lines: t("activity:message.linesSuffix", { count: lineCount2 })
115408
115932
  }) }),
115409
- /* @__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" }) })
115410
115934
  ]
115411
115935
  }
115412
115936
  ),
@@ -115567,7 +116091,7 @@ var MessageBubble = memo9(function MessageBubble2({
115567
116091
  }
115568
116092
  );
115569
116093
  })(),
115570
- !isTool && !isBugHunt && message.content && !message.streaming && /* @__PURE__ */ jsx93(
116094
+ !isTool && !isPromptCard && message.content && !message.streaming && /* @__PURE__ */ jsx93(
115571
116095
  CopyButton,
115572
116096
  {
115573
116097
  text: message.content,
@@ -115591,7 +116115,7 @@ var MessageBubble = memo9(function MessageBubble2({
115591
116115
  ]
115592
116116
  }
115593
116117
  ),
115594
- isUser && !isBugHunt && !editing && !isLoading && /* @__PURE__ */ jsxs87(Fragment27, { children: [
116118
+ isUser && !isPromptCard && !editing && !isLoading && /* @__PURE__ */ jsxs87(Fragment27, { children: [
115595
116119
  message.status === "failed" && /* @__PURE__ */ jsxs87(
115596
116120
  "button",
115597
116121
  {
@@ -115663,7 +116187,7 @@ var MessageBubble = memo9(function MessageBubble2({
115663
116187
  init_utils();
115664
116188
  init_i18n();
115665
116189
  import { expectDefined as expectDefined11 } from "@wrongstack/core/utils/expect-defined";
115666
- 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";
115667
116191
  import { memo as memo10, useState as useState61 } from "react";
115668
116192
  import { jsx as jsx94, jsxs as jsxs88 } from "react/jsx-runtime";
115669
116193
  function formatDuration(ms) {
@@ -115703,7 +116227,7 @@ var ToolGroup = memo10(function ToolGroup2({
115703
116227
  "border border-border/40 bg-muted/30"
115704
116228
  ),
115705
116229
  children: [
115706
- 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" }),
115707
116231
  /* @__PURE__ */ jsx94(Terminal6, { className: "h-3.5 w-3.5 text-muted-foreground" }),
115708
116232
  /* @__PURE__ */ jsx94("span", { className: "font-mono text-xs", children: t("activity:toolGroup.toolCalls", { count: tools.length }) }),
115709
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" }),
@@ -115898,12 +116422,12 @@ import {
115898
116422
  AlertCircle as AlertCircle2,
115899
116423
  Bot as Bot11,
115900
116424
  Brain as Brain9,
115901
- Check as Check16,
116425
+ Check as Check17,
115902
116426
  CircleDot as CircleDot4,
115903
116427
  Info as Info4,
115904
116428
  Maximize2 as Maximize22,
115905
116429
  Wrench as Wrench12,
115906
- X as X16
116430
+ X as X17
115907
116431
  } from "lucide-react";
115908
116432
  import { memo as memo13, useEffect as useEffect63, useRef as useRef30, useState as useState62 } from "react";
115909
116433
  import { Fragment as Fragment28, jsx as jsx97, jsxs as jsxs91 } from "react/jsx-runtime";
@@ -115958,7 +116482,7 @@ var TranscriptRow = memo13(function TranscriptRow2({ entry }) {
115958
116482
  if (entry.kind === "tool_use" || entry.kind === "tool_result") {
115959
116483
  const isUse = entry.kind === "tool_use";
115960
116484
  const ok = entry.toolOk !== false;
115961
- const Icon3 = isUse ? Wrench12 : ok ? Check16 : X16;
116485
+ const Icon3 = isUse ? Wrench12 : ok ? Check17 : X17;
115962
116486
  return /* @__PURE__ */ jsxs91(
115963
116487
  "div",
115964
116488
  {
@@ -116093,7 +116617,7 @@ function SubagentTranscriptView({ agentId }) {
116093
116617
  "aria-label": t("activity:transcript.returnToLeader"),
116094
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",
116095
116619
  children: [
116096
- /* @__PURE__ */ jsx97(X16, { className: "h-3 w-3" }),
116620
+ /* @__PURE__ */ jsx97(X17, { className: "h-3 w-3" }),
116097
116621
  t("activity:transcript.returnToLeader")
116098
116622
  ]
116099
116623
  }
@@ -116904,7 +117428,7 @@ function ChatView() {
116904
117428
  onClick: () => state.setInputCollapsed(true),
116905
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",
116906
117430
  children: [
116907
- /* @__PURE__ */ jsx100(ChevronDown16, { className: "h-3 w-3" }),
117431
+ /* @__PURE__ */ jsx100(ChevronDown17, { className: "h-3 w-3" }),
116908
117432
  /* @__PURE__ */ jsx100("span", { children: t("chat:input.collapseInput", "Collapse") })
116909
117433
  ]
116910
117434
  }
@@ -116960,7 +117484,7 @@ import {
116960
117484
  BarChart3 as BarChart33,
116961
117485
  Cpu as Cpu8,
116962
117486
  FileText as FileText8,
116963
- Gauge as Gauge3,
117487
+ Gauge as Gauge5,
116964
117488
  HardDrive,
116965
117489
  Layers as Layers4,
116966
117490
  MessageSquare as MessageSquare7,
@@ -117417,7 +117941,7 @@ function PressureSection({
117417
117941
  const { t } = useTranslation();
117418
117942
  const zone = zoneFor(pct);
117419
117943
  const accent = pct > 85 ? "danger" : pct > 60 ? "warning" : "success";
117420
- 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: [
117421
117945
  /* @__PURE__ */ jsxs97("div", { className: "flex flex-col sm:flex-row items-center gap-4", children: [
117422
117946
  /* @__PURE__ */ jsx103(
117423
117947
  "div",
@@ -118016,7 +118540,7 @@ import {
118016
118540
  Radio,
118017
118541
  Settings2,
118018
118542
  Shield as Shield4,
118019
- X as X25,
118543
+ X as X26,
118020
118544
  Zap as Zap20
118021
118545
  } from "lucide-react";
118022
118546
  import { useCallback as useCallback45, useEffect as useEffect84, useRef as useRef43, useState as useState87 } from "react";
@@ -119135,7 +119659,7 @@ init_button();
119135
119659
  import {
119136
119660
  AlertTriangle as AlertTriangle14,
119137
119661
  Ban,
119138
- ChevronDown as ChevronDown17,
119662
+ ChevronDown as ChevronDown18,
119139
119663
  ChevronRight as ChevronRight11,
119140
119664
  Clock as Clock8,
119141
119665
  RefreshCw as RefreshCw12,
@@ -119213,7 +119737,7 @@ function ModelRow({
119213
119737
  onClick: () => setExpanded((e) => !e),
119214
119738
  className: "flex w-full items-center gap-2 px-3 py-2 text-left hover:bg-muted/50 transition-colors rounded-md",
119215
119739
  children: [
119216
- /* @__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" }) }),
119217
119741
  /* @__PURE__ */ jsx112(
119218
119742
  "span",
119219
119743
  {
@@ -121173,8 +121697,8 @@ init_dialog();
121173
121697
  init_input();
121174
121698
  init_tabs();
121175
121699
  import {
121176
- Check as Check18,
121177
- ChevronDown as ChevronDown19,
121700
+ Check as Check19,
121701
+ ChevronDown as ChevronDown20,
121178
121702
  ChevronRight as ChevronRight12,
121179
121703
  Edit3 as Edit32,
121180
121704
  Loader2 as Loader216,
@@ -121368,7 +121892,7 @@ function ServerCard({
121368
121892
  className: "flex min-w-0 flex-1 items-center gap-2 text-left",
121369
121893
  onClick: () => setExpanded(!expanded),
121370
121894
  children: [
121371
- 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" }),
121372
121896
  /* @__PURE__ */ jsx124(StatusDot, { status: server.status }),
121373
121897
  /* @__PURE__ */ jsx124("span", { className: "min-w-0 truncate font-medium", children: server.name }),
121374
121898
  /* @__PURE__ */ jsx124("span", { className: "rounded bg-muted/60 px-1.5 py-0.5 text-xs text-muted-foreground", children: server.transport }),
@@ -121723,7 +122247,7 @@ function OfficialServerCard({
121723
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(", ") }) })
121724
122248
  ] }),
121725
122249
  /* @__PURE__ */ jsx124("div", { className: "shrink-0", children: isAdded ? /* @__PURE__ */ jsxs117(Button, { variant: "ghost", size: "sm", disabled: true, children: [
121726
- /* @__PURE__ */ jsx124(Check18, { className: "w-4 h-4 mr-1" }),
122250
+ /* @__PURE__ */ jsx124(Check19, { className: "w-4 h-4 mr-1" }),
121727
122251
  t("settings:mcp.added")
121728
122252
  ] }) : /* @__PURE__ */ jsxs117(Button, { size: "sm", variant: "outline", onClick: onAdd, children: [
121729
122253
  /* @__PURE__ */ jsx124(Plus7, { className: "w-4 h-4 mr-1" }),
@@ -122362,7 +122886,7 @@ function ModelSection({
122362
122886
  // src/components/SettingsPanel/ModelTiersSection.tsx
122363
122887
  init_local_prefs();
122364
122888
  init_button();
122365
- 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";
122366
122890
  import { useCallback as useCallback32, useState as useState75 } from "react";
122367
122891
  import { jsx as jsx129, jsxs as jsxs121 } from "react/jsx-runtime";
122368
122892
  var LEADER_MODES = [
@@ -122479,7 +123003,7 @@ function ModelTiersSection({ syncPref }) {
122479
123003
  className: "text-muted-foreground hover:text-destructive",
122480
123004
  title: "Remove level",
122481
123005
  "data-testid": `model-tier-remove-${id}`,
122482
- children: /* @__PURE__ */ jsx129(X19, { className: "h-3 w-3" })
123006
+ children: /* @__PURE__ */ jsx129(X20, { className: "h-3 w-3" })
122483
123007
  }
122484
123008
  )
122485
123009
  ] }),
@@ -122587,7 +123111,7 @@ function ModelTiersSection({ syncPref }) {
122587
123111
  onClick: () => removeRoute(key),
122588
123112
  className: "text-muted-foreground hover:text-destructive",
122589
123113
  title: "Remove rule",
122590
- children: /* @__PURE__ */ jsx129(X19, { className: "h-3 w-3" })
123114
+ children: /* @__PURE__ */ jsx129(X20, { className: "h-3 w-3" })
122591
123115
  }
122592
123116
  )
122593
123117
  ]
@@ -122743,7 +123267,7 @@ import { useCallback as useCallback41, useEffect as useEffect81, useMemo as useM
122743
123267
  // src/components/ui/api-key-display.tsx
122744
123268
  init_utils();
122745
123269
  init_i18n();
122746
- import { Check as Check20, Copy as Copy6 } from "lucide-react";
123270
+ import { Check as Check21, Copy as Copy6 } from "lucide-react";
122747
123271
  import { useCallback as useCallback35, useState as useState77 } from "react";
122748
123272
  import { jsx as jsx131, jsxs as jsxs123 } from "react/jsx-runtime";
122749
123273
  function ApiKeyDisplay({ maskedKey, className }) {
@@ -122772,7 +123296,7 @@ function ApiKeyDisplay({ maskedKey, className }) {
122772
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",
122773
123297
  title: copied ? "Copied" : "Copy key preview",
122774
123298
  "aria-label": t("activity:apikeydisplay.copyApiKeyToClipboard"),
122775
- 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" })
122776
123300
  }
122777
123301
  )
122778
123302
  ]
@@ -123286,7 +123810,7 @@ init_Toaster();
123286
123810
  init_button();
123287
123811
  import {
123288
123812
  Brain as Brain11,
123289
- Check as Check22,
123813
+ Check as Check23,
123290
123814
  Clock as Clock9,
123291
123815
  DollarSign,
123292
123816
  Eye as Eye2,
@@ -123299,13 +123823,13 @@ import {
123299
123823
  Trash2 as Trash212,
123300
123824
  Video,
123301
123825
  Wrench as Wrench14,
123302
- X as X23
123826
+ X as X24
123303
123827
  } from "lucide-react";
123304
123828
  import { Fragment as Fragment37, useCallback as useCallback39, useMemo as useMemo39, useState as useState81 } from "react";
123305
123829
 
123306
123830
  // src/components/SettingsPanel/ModelCatalogPicker.tsx
123307
123831
  init_i18n();
123308
- 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";
123309
123833
  import { useCallback as useCallback37, useEffect as useEffect79, useRef as useRef42, useState as useState79 } from "react";
123310
123834
  import { jsx as jsx134, jsxs as jsxs126 } from "react/jsx-runtime";
123311
123835
  function ModelCatalogPicker({ ws, onSelect, onClose }) {
@@ -123392,7 +123916,7 @@ function ModelCatalogPicker({ ws, onSelect, onClose }) {
123392
123916
  type: "button",
123393
123917
  onClick: onClose,
123394
123918
  className: "text-muted-foreground hover:text-foreground",
123395
- children: /* @__PURE__ */ jsx134(X21, { className: "h-4 w-4" })
123919
+ children: /* @__PURE__ */ jsx134(X22, { className: "h-4 w-4" })
123396
123920
  }
123397
123921
  )
123398
123922
  ] }),
@@ -123448,7 +123972,7 @@ init_i18n();
123448
123972
  init_utils();
123449
123973
  init_button();
123450
123974
  import { MODELS_DEV_MODALITY_VALUES, modelsDevModelSchema } from "@wrongstack/core/models";
123451
- import { Check as Check21, X as X22 } from "lucide-react";
123975
+ import { Check as Check22, X as X23 } from "lucide-react";
123452
123976
  import { useCallback as useCallback38, useState as useState80 } from "react";
123453
123977
  import { Fragment as Fragment36, jsx as jsx135, jsxs as jsxs127 } from "react/jsx-runtime";
123454
123978
  function toFormState(modelId, md) {
@@ -123876,7 +124400,7 @@ function ModelSchemaEditor({
123876
124400
  onClick: onCancel,
123877
124401
  className: "h-8 gap-1.5 text-xs",
123878
124402
  children: [
123879
- /* @__PURE__ */ jsx135(X22, { className: "h-3.5 w-3.5" }),
124403
+ /* @__PURE__ */ jsx135(X23, { className: "h-3.5 w-3.5" }),
123880
124404
  t("common:action.cancel")
123881
124405
  ]
123882
124406
  }
@@ -123889,7 +124413,7 @@ function ModelSchemaEditor({
123889
124413
  onClick: showRaw ? handleRawSave : handleFormSave,
123890
124414
  className: "h-8 gap-1.5 text-xs",
123891
124415
  children: [
123892
- /* @__PURE__ */ jsx135(Check21, { className: "h-3.5 w-3.5" }),
124416
+ /* @__PURE__ */ jsx135(Check22, { className: "h-3.5 w-3.5" }),
123893
124417
  t("common:action.save")
123894
124418
  ]
123895
124419
  }
@@ -124141,7 +124665,7 @@ function ModelListEditor({
124141
124665
  "aria-label": t("settings:providerModels.usingModel", {
124142
124666
  model: row.modelId
124143
124667
  }),
124144
- children: /* @__PURE__ */ jsx136(Check22, { className: "h-3.5 w-3.5" })
124668
+ children: /* @__PURE__ */ jsx136(Check23, { className: "h-3.5 w-3.5" })
124145
124669
  }
124146
124670
  ) : /* @__PURE__ */ jsx136(
124147
124671
  "button",
@@ -124155,7 +124679,7 @@ function ModelListEditor({
124155
124679
  title: t("settings:providerModels.useModel", {
124156
124680
  model: row.modelId
124157
124681
  }),
124158
- children: /* @__PURE__ */ jsx136(Check22, { className: "h-3.5 w-3.5" })
124682
+ children: /* @__PURE__ */ jsx136(Check23, { className: "h-3.5 w-3.5" })
124159
124683
  }
124160
124684
  )),
124161
124685
  /* @__PURE__ */ jsx136(
@@ -124233,7 +124757,7 @@ function ModelListEditor({
124233
124757
  type: "button",
124234
124758
  onClick: () => setShowCustomEditor(false),
124235
124759
  className: "text-muted-foreground hover:text-foreground",
124236
- children: /* @__PURE__ */ jsx136(X23, { className: "h-4 w-4" })
124760
+ children: /* @__PURE__ */ jsx136(X24, { className: "h-4 w-4" })
124237
124761
  }
124238
124762
  )
124239
124763
  ] }),
@@ -125514,7 +126038,7 @@ init_useWebSocket();
125514
126038
  init_i18n();
125515
126039
  init_utils();
125516
126040
  init_stores();
125517
- 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";
125518
126042
  import { useCallback as useCallback43, useEffect as useEffect82, useMemo as useMemo42, useState as useState85 } from "react";
125519
126043
  init_badge();
125520
126044
  init_button();
@@ -126213,7 +126737,7 @@ function BrainSection() {
126213
126737
  const next = config.models.map(entryLabel).filter((_, j) => j !== i);
126214
126738
  sendPatch({ models: next.length > 0 ? next : null });
126215
126739
  },
126216
- children: /* @__PURE__ */ jsx141(X24, { className: "h-3 w-3" })
126740
+ children: /* @__PURE__ */ jsx141(X25, { className: "h-3 w-3" })
126217
126741
  }
126218
126742
  )
126219
126743
  ]
@@ -126315,7 +126839,7 @@ function BrainSection() {
126315
126839
  className: "h-6 w-6 p-0 text-destructive",
126316
126840
  disabled: busy,
126317
126841
  onClick: () => setVoters(voters.filter((_, j) => j !== i)),
126318
- children: /* @__PURE__ */ jsx141(X24, { className: "h-3 w-3" })
126842
+ children: /* @__PURE__ */ jsx141(X25, { className: "h-3 w-3" })
126319
126843
  }
126320
126844
  )
126321
126845
  ]
@@ -126605,7 +127129,7 @@ init_i18n();
126605
127129
  init_badge();
126606
127130
  init_button();
126607
127131
  init_input();
126608
- 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";
126609
127133
  import { useCallback as useCallback44, useEffect as useEffect83, useState as useState86 } from "react";
126610
127134
  import { jsx as jsx143, jsxs as jsxs134 } from "react/jsx-runtime";
126611
127135
  function StatusDot2({ disabled, direct }) {
@@ -126657,7 +127181,7 @@ function ToolRow2({
126657
127181
  onClick: () => setExpanded(!expanded),
126658
127182
  "aria-label": expanded ? "Collapse" : "Expand",
126659
127183
  children: /* @__PURE__ */ jsx143(
126660
- ChevronDown20,
127184
+ ChevronDown21,
126661
127185
  {
126662
127186
  className: `h-4 w-4 transition-transform ${expanded ? "rotate-180" : ""}`
126663
127187
  }
@@ -127104,7 +127628,7 @@ function SettingsPanel() {
127104
127628
  /* @__PURE__ */ jsx145("p", { className: "mt-0.5 text-[11px] text-muted-foreground", children: provider && activeModel ? `${provider} / ${activeModel}` : t("settings:subtitle") })
127105
127629
  ] })
127106
127630
  ] }),
127107
- /* @__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" }) }),
127108
127632
  /* @__PURE__ */ jsx145(Button, { variant: "ghost", size: "sm", onClick: () => setResetOpen(true), children: t("settings:resetLabel") })
127109
127633
  ] }),
127110
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(
@@ -127243,7 +127767,7 @@ import {
127243
127767
  SlidersHorizontal as SlidersHorizontal2,
127244
127768
  Target as Target2,
127245
127769
  Users as Users6,
127246
- X as X26
127770
+ X as X27
127247
127771
  } from "lucide-react";
127248
127772
  import { useEffect as useEffect92, useMemo as useMemo44, useState as useState95 } from "react";
127249
127773
 
@@ -127760,7 +128284,7 @@ init_agent_session();
127760
128284
  init_agent_status();
127761
128285
  init_utils();
127762
128286
  init_stores();
127763
- 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";
127764
128288
  import { useCallback as useCallback47, useMemo as useMemo43, useState as useState89 } from "react";
127765
128289
  import { jsx as jsx147, jsxs as jsxs138 } from "react/jsx-runtime";
127766
128290
  var STATUS_CONFIG = {
@@ -127926,7 +128450,7 @@ function FleetPanel({ className }) {
127926
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",
127927
128451
  title: t("activity:fleet.copyOutput"),
127928
128452
  children: [
127929
- 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" }),
127930
128454
  /* @__PURE__ */ jsx147("span", { children: copiedId === agent.id ? t("common:action.copied") : t("common:action.copy") })
127931
128455
  ]
127932
128456
  }
@@ -127947,7 +128471,7 @@ init_i18n();
127947
128471
  init_ws_client();
127948
128472
  import {
127949
128473
  CheckCircle2 as CheckCircle216,
127950
- ChevronDown as ChevronDown21,
128474
+ ChevronDown as ChevronDown22,
127951
128475
  ChevronRight as ChevronRight13,
127952
128476
  Circle as Circle4,
127953
128477
  Clock as Clock11,
@@ -128035,7 +128559,7 @@ function GoalPanel({ goal, className }) {
128035
128559
  children: t(`activity:goal.${stateCfg.labelKey}`)
128036
128560
  }
128037
128561
  ),
128038
- 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" })
128039
128563
  ]
128040
128564
  }
128041
128565
  ),
@@ -129099,7 +129623,7 @@ function WorkspaceDockInspector({ sessionId }) {
129099
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",
129100
129624
  "aria-label": t("activity:dock.closeWorkspaceInspector"),
129101
129625
  title: t("activity:dock.closeWorkspaceInspector"),
129102
- children: /* @__PURE__ */ jsx156(X26, { className: "h-4 w-4" })
129626
+ children: /* @__PURE__ */ jsx156(X27, { className: "h-4 w-4" })
129103
129627
  }
129104
129628
  )
129105
129629
  ] }),
@@ -129381,7 +129905,7 @@ var TerminalPanelLazy = lazy5(
129381
129905
  // src/components/WorkbenchTopbar.tsx
129382
129906
  import {
129383
129907
  Bot as Bot33,
129384
- Check as Check49,
129908
+ Check as Check50,
129385
129909
  Command as Command2,
129386
129910
  Menu,
129387
129911
  Moon as Moon4,
@@ -129576,12 +130100,12 @@ import {
129576
130100
  Bell as Bell4,
129577
130101
  BellOff,
129578
130102
  BellRing,
129579
- Check as Check48,
130103
+ Check as Check49,
129580
130104
  CheckCheck as CheckCheck2,
129581
130105
  Clock as Clock24,
129582
130106
  Info as Info6,
129583
130107
  Trash2 as Trash230,
129584
- X as X62,
130108
+ X as X63,
129585
130109
  XCircle as XCircle16
129586
130110
  } from "lucide-react";
129587
130111
  import { useCallback as useCallback87, useMemo as useMemo86, useState as useState163 } from "react";
@@ -129608,7 +130132,7 @@ function formatRelativeTime(timestamp2, t) {
129608
130132
  }
129609
130133
  function NotificationIcon({ variant }) {
129610
130134
  if (variant === "success") {
129611
- 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" });
129612
130136
  }
129613
130137
  if (variant === "error") {
129614
130138
  return /* @__PURE__ */ jsx286(XCircle16, { className: "h-4 w-4 text-destructive shrink-0" });
@@ -129690,7 +130214,7 @@ function NotificationItem({
129690
130214
  className: "rounded p-0.5 text-muted-foreground hover:bg-accent hover:text-foreground",
129691
130215
  title: t("toasts:menu.markAsRead", { defaultValue: "Mark as read" }),
129692
130216
  "aria-label": t("toasts:menu.markAsRead", { defaultValue: "Mark as read" }),
129693
- children: /* @__PURE__ */ jsx286(Check48, { className: "h-3 w-3" })
130217
+ children: /* @__PURE__ */ jsx286(Check49, { className: "h-3 w-3" })
129694
130218
  }
129695
130219
  ),
129696
130220
  /* @__PURE__ */ jsx286(
@@ -129704,7 +130228,7 @@ function NotificationItem({
129704
130228
  className: "rounded p-0.5 text-muted-foreground opacity-60 hover:opacity-100 hover:bg-destructive/10 hover:text-destructive transition-opacity",
129705
130229
  title: t("toasts:menu.remove", { defaultValue: "Remove notification" }),
129706
130230
  "aria-label": t("toasts:menu.remove", { defaultValue: "Remove notification" }),
129707
- children: /* @__PURE__ */ jsx286(X62, { className: "h-3 w-3" })
130231
+ children: /* @__PURE__ */ jsx286(X63, { className: "h-3 w-3" })
129708
130232
  }
129709
130233
  ),
129710
130234
  !item.read && /* @__PURE__ */ jsx286(
@@ -130188,7 +130712,7 @@ function WorkbenchTopbar({
130188
130712
  }
130189
130713
  ),
130190
130714
  /* @__PURE__ */ jsx287("span", { className: "flex-1", children: t(option.labelKey) }),
130191
- 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
130192
130716
  ]
130193
130717
  },
130194
130718
  option.id