@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.
- package/dist/assets/{AgentRosterView-xv5VajRi.js → AgentRosterView-BVpIFQwi.js} +1 -1
- package/dist/assets/{AnalyticsDashboard-D7D5_bvf.js → AnalyticsDashboard-nqlWJi6M.js} +1 -1
- package/dist/assets/{AudienceMemoryPanel-Cpg91ZrC.js → AudienceMemoryPanel-BT6C4Jkw.js} +1 -1
- package/dist/assets/{ChangesView-4CP-bLYD.js → ChangesView-CN7NWDeV.js} +1 -1
- package/dist/assets/{ChimeraReviewsView-DZjw-bOC.js → ChimeraReviewsView-BNQE5kRx.js} +1 -1
- package/dist/assets/{ChronicleDashboard-BnNxX8Hc.js → ChronicleDashboard-BWMkG_hu.js} +1 -1
- package/dist/assets/{CodeEditor-FNYzhDcO.js → CodeEditor-DZ2k-Mz5.js} +1 -1
- package/dist/assets/{CodeMap-DA_k3u5g.js → CodeMap-CLOuNLqN.js} +1 -1
- package/dist/assets/{ConfirmModal-gukSikBD.js → ConfirmModal-B6BGiiN8.js} +1 -1
- package/dist/assets/{CronJobsPanel-BXqObet6.js → CronJobsPanel-CsMIoWVQ.js} +1 -1
- package/dist/assets/{DeadCodeScanPanel-VnMQatbH.js → DeadCodeScanPanel-DooqnEMF.js} +1 -1
- package/dist/assets/{DebugDashboard-Hwt0OxYX.js → DebugDashboard-C0tmxxV8.js} +1 -1
- package/dist/assets/{DesignGalleryView-Ce2H_zeu.js → DesignGalleryView-lc-XRmVG.js} +1 -1
- package/dist/assets/{GoalView-DlS73sGV.js → GoalView-BuYUc4OB.js} +1 -1
- package/dist/assets/{KanbanView-Cd77gXMT.js → KanbanView-DQK6adut.js} +1 -1
- package/dist/assets/{MailboxDetailView-B4hFbVk5.js → MailboxDetailView-CBV3-Hf2.js} +1 -1
- package/dist/assets/{MemoryDrawer-CnpnSW42.js → MemoryDrawer-rPf-1Ulk.js} +1 -1
- package/dist/assets/{MemoryManager-DqJfeD_d.js → MemoryManager-B_ZJhOqq.js} +1 -1
- package/dist/assets/{ModelPicker-R1UwpDyl.js → ModelPicker-CLs0qQgg.js} +1 -1
- package/dist/assets/{OfficeMapPanel-zAuziIkn.js → OfficeMapPanel-DnbdkXL1.js} +1 -1
- package/dist/assets/{ProcessMonitor-Baj9b1_B.js → ProcessMonitor-CHNNqCk9.js} +1 -1
- package/dist/assets/{PromptJournalView-CXZ9notj.js → PromptJournalView-Biu4DknM.js} +1 -1
- package/dist/assets/{QueuePanel-DOcgHRH3.js → QueuePanel-CzTXq6j4.js} +1 -1
- package/dist/assets/{RefreshDebugView-BYmeORMQ.js → RefreshDebugView-d9iU3sFX.js} +1 -1
- package/dist/assets/{RequirementIntakeView-B5JjTm9k.js → RequirementIntakeView-g9dzUTVw.js} +1 -1
- package/dist/assets/{SageTabs-Co-5UcaG.js → SageTabs-Bw6PDwy3.js} +2 -2
- package/dist/assets/{SddFlowGraph-BsfhxlDK.js → SddFlowGraph-Bj_Aqq5B.js} +1 -1
- package/dist/assets/{SddHub-DYAjEaqD.js → SddHub-Cdow0Exb.js} +1 -1
- package/dist/assets/{SessionInspectView-DVeF-pUQ.js → SessionInspectView-je_xLISf.js} +1 -1
- package/dist/assets/{SessionList-BvVLmIsL.js → SessionList-4y1uuB-y.js} +1 -1
- package/dist/assets/{SessionsDashboard-wPcCBDIK.js → SessionsDashboard-DkaNF5lx.js} +1 -1
- package/dist/assets/{SetupScreen-uhBHDZqD.js → SetupScreen-DWzbXvmU.js} +1 -1
- package/dist/assets/{SkillDetailView-DPqT3npD.js → SkillDetailView-Bjq8GkDB.js} +1 -1
- package/dist/assets/{SpecsView-BEITfh6o.js → SpecsView-ok8HZ8ws.js} +1 -1
- package/dist/assets/{TechStackView-DLEi7aSX.js → TechStackView-CQ9AdoBa.js} +1 -1
- package/dist/assets/{TerminalPanel-DlIyvxm6.js → TerminalPanel-cbM6oQWQ.js} +1 -1
- package/dist/assets/{activity-q85HXQNv.js → activity-BU6MNvBJ.js} +1 -1
- package/dist/assets/{activity-B2_Vr2oD.js → activity-C7dkJqBU.js} +1 -1
- package/dist/assets/{activity-DYMBKGt0.js → activity-C_18AaRY.js} +1 -1
- package/dist/assets/{activity-IxgYWPDt.js → activity-CpnSsE22.js} +1 -1
- package/dist/assets/{activity-BF1idM4Y.js → activity-CtTKsSX6.js} +1 -1
- package/dist/assets/{activity-C-kOJZXC.js → activity-D1rp3dH9.js} +1 -1
- package/dist/assets/{activity-DPpMW8BU.js → activity-hTPcI4q1.js} +1 -1
- package/dist/assets/{chat-DTI7lNDx.js → chat-6dE2AJNN.js} +1 -1
- package/dist/assets/{chat-BvKkSd09.js → chat-B3AJmhGD.js} +1 -1
- package/dist/assets/{chat-BNWqeV-N.js → chat-BHsbpaVt.js} +1 -1
- package/dist/assets/{chat-BlllxfpP.js → chat-BITJe8-v.js} +1 -1
- package/dist/assets/{chat-DlhXGxxi.js → chat-U-Jjb8_k.js} +1 -1
- package/dist/assets/{chat-B60h8Cji.js → chat-_Xp5fDnj.js} +1 -1
- package/dist/assets/{chat-B5a3cvps.js → chat-mSbSzPl5.js} +1 -1
- package/dist/assets/{chat-store-DIcs826A.js → chat-store-oW_-zcJP.js} +1 -1
- package/dist/assets/{i18n-Cv65b1SP.js → i18n-D06uU1PM.js} +2 -2
- package/dist/assets/index-CWYymMpa.css +1 -0
- package/dist/assets/index-Cwjer17r.js +144 -0
- package/dist/assets/{roster-ws-D5JW3IPJ.js → roster-ws-BQUI8QuW.js} +1 -1
- package/dist/assets/setup-B0D9CK3-.js +1 -0
- package/dist/assets/setup-B58YVaGU.js +1 -0
- package/dist/assets/setup-C2H9Uv0Q.js +1 -0
- package/dist/assets/setup-CzM4dkkU.js +1 -0
- package/dist/assets/setup-Di56FlHP.js +1 -0
- package/dist/assets/setup-Dwt58Mpz.js +1 -0
- package/dist/assets/setup-DznVdlJy.js +1 -0
- package/dist/assets/{stores-CNuMLG8X.js → stores-C7Vvce-6.js} +1 -1
- package/dist/assets/ui-store-Dm7ujR9u.js +1 -0
- package/dist/assets/useWebSocket-9lfOsI_r.js +27 -0
- package/dist/assets/{view-navigation-DPOY0lyt.js → view-navigation-wOKaM_Rf.js} +1 -1
- package/dist/assets/{ws-client-D-d32pHb.js → ws-client-DtTZLD8e.js} +2 -2
- package/dist/index.html +14 -14
- package/dist/index.js +1068 -544
- package/dist/lib/launch-builtin-round.d.ts +43 -0
- package/dist/lib/perf-run-message.d.ts +51 -0
- package/dist/stores/file-store.d.ts +9 -0
- package/dist/stores/fleet-store.d.ts +4 -0
- package/dist/stores/types.d.ts +9 -0
- package/dist/stores/ui-store.d.ts +0 -2
- package/package.json +10 -10
- package/dist/assets/index-DSyVpLgL.css +0 -1
- package/dist/assets/index-b_i-YcNT.js +0 -137
- package/dist/assets/setup-BQLPzL3N.js +0 -1
- package/dist/assets/setup-C9lrNwQF.js +0 -1
- package/dist/assets/setup-CcxP7cUl.js +0 -1
- package/dist/assets/setup-CtKKNpH9.js +0 -1
- package/dist/assets/setup-D4rp2jda.js +0 -1
- package/dist/assets/setup-MvmOtwNp.js +0 -1
- package/dist/assets/setup-blxUcxNU.js +0 -1
- package/dist/assets/ui-store-DpKUBLWd.js +0 -1
- 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
|
|
39307
|
-
//
|
|
39308
|
-
//
|
|
39309
|
-
//
|
|
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 =
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
-
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
65183
|
-
ChevronDown as
|
|
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(
|
|
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(
|
|
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
|
|
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
|
-
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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:
|
|
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(
|
|
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:
|
|
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:
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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
|
-
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
74701
|
-
failed: { icon:
|
|
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
|
|
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" ?
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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
|
-
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
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(
|
|
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
|
-
|
|
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
|
|
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
|
|
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(
|
|
78650
|
-
if (task.status === "failed") return /* @__PURE__ */ jsx234(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
-
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
84881
|
-
task.displayStatus === "failed" && /* @__PURE__ */ jsx261(
|
|
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
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
86366
|
+
Check as Check44,
|
|
86157
86367
|
CheckCheck,
|
|
86158
|
-
ChevronDown as
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
91972
|
+
Check as Check46,
|
|
91763
91973
|
CheckCircle2 as CheckCircle236,
|
|
91764
|
-
ChevronDown as
|
|
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(
|
|
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(
|
|
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
|
|
92643
|
-
ChevronDown as
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
111718
|
-
|
|
111719
|
-
|
|
111720
|
-
|
|
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
|
-
|
|
111750
|
-
|
|
111751
|
-
|
|
111752
|
-
/* @__PURE__ */ jsxs67("
|
|
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(
|
|
111757
|
-
|
|
111758
|
-
|
|
111759
|
-
|
|
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-[
|
|
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(
|
|
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: "
|
|
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(
|
|
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(
|
|
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__ */
|
|
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
|
-
"
|
|
111981
|
-
{
|
|
111982
|
-
|
|
111983
|
-
|
|
111984
|
-
|
|
111985
|
-
|
|
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
|
-
|
|
112088
|
-
|
|
112089
|
-
|
|
112090
|
-
|
|
112091
|
-
|
|
112092
|
-
|
|
112093
|
-
|
|
112094
|
-
|
|
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
|
-
|
|
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
|
-
|
|
112533
|
+
},
|
|
112534
|
+
onSent: (id, content) => {
|
|
112119
112535
|
addMessage({
|
|
112120
112536
|
id,
|
|
112121
112537
|
role: "user",
|
|
112122
|
-
content
|
|
112538
|
+
content,
|
|
112123
112539
|
bugHunt: { scope: bugHuntScope, maxBugs: bugHuntMaxBugs }
|
|
112124
112540
|
});
|
|
112125
112541
|
setLoading(true);
|
|
112126
|
-
|
|
112127
|
-
|
|
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
|
-
|
|
112373
|
-
|
|
112374
|
-
|
|
112375
|
-
|
|
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
|
-
|
|
112380
|
-
"
|
|
112381
|
-
|
|
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
|
|
112388
|
-
|
|
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(
|
|
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__ */
|
|
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
|
-
|
|
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
|
|
112610
|
-
ChevronDown as
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
113536
|
-
Check as
|
|
114158
|
+
Brain as Brain6,
|
|
114159
|
+
Check as Check14,
|
|
113537
114160
|
CheckCircle2 as CheckCircle29,
|
|
113538
|
-
ChevronDown as
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
114444
|
+
Check as Check15,
|
|
113822
114445
|
CheckCircle2 as CheckCircle210,
|
|
113823
|
-
ChevronDown as
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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 && !
|
|
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 && !
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
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 ?
|
|
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(
|
|
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(
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
121177
|
-
ChevronDown as
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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
|
-
|
|
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(
|
|
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
|
|
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
|
|
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(
|
|
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
|
|
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(
|
|
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(
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|