@wrongstack/webui 0.309.0 → 0.309.1
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-CbgKjnxJ.js → AgentRosterView-CBiLW8dV.js} +1 -1
- package/dist/assets/{AnalyticsDashboard-BXnPG2xB.js → AnalyticsDashboard-Grpp3QKX.js} +1 -1
- package/dist/assets/{AudienceMemoryPanel-Ch-jf06O.js → AudienceMemoryPanel-DU3hUuUl.js} +1 -1
- package/dist/assets/{ChangesView-5lcal8q4.js → ChangesView-DOrw4udd.js} +1 -1
- package/dist/assets/ChronicleDashboard-DlCuQRB8.js +1 -0
- package/dist/assets/CodeEditor-CU6zP0r8.js +2 -0
- package/dist/assets/CodeMap-BkJqVDg2.js +1 -0
- package/dist/assets/{ConfirmModal-KzK0LoJw.js → ConfirmModal-BJOVE-JI.js} +1 -1
- package/dist/assets/{CronJobsPanel-aLru0Rd_.js → CronJobsPanel-B3UJP0mn.js} +1 -1
- package/dist/assets/{DeadCodeScanPanel-BXpB_M2Z.js → DeadCodeScanPanel-_iUu5-90.js} +1 -1
- package/dist/assets/{DebugDashboard-hnhGaWr-.js → DebugDashboard-NTiN0je2.js} +1 -1
- package/dist/assets/{DesignGalleryView-CXHgaI2Q.js → DesignGalleryView-BG2Nr8wy.js} +1 -1
- package/dist/assets/{GoalView-BB5t68cb.js → GoalView-Dakf9ZR8.js} +1 -1
- package/dist/assets/KanbanView-BR07PhbR.js +3 -0
- package/dist/assets/{MailboxDetailView-jPxF6ia3.js → MailboxDetailView-D31IhaK_.js} +1 -1
- package/dist/assets/{MemoryDrawer-e8UxQq-s.js → MemoryDrawer-6n0Etoz4.js} +1 -1
- package/dist/assets/MemoryManager-7DSVhxZf.js +1 -0
- package/dist/assets/{ModelPicker-nyXP3xsj.js → ModelPicker-C72kprRH.js} +1 -1
- package/dist/assets/OfficeMapPanel-Ce7myLNH.css +1 -0
- package/dist/assets/OfficeMapPanel-Dc8-4CiU.js +4 -0
- package/dist/assets/{ProcessMonitor-Epj6RrOA.js → ProcessMonitor-BGLc3yNM.js} +1 -1
- package/dist/assets/{PromptJournalView-CMlGmjig.js → PromptJournalView-CxDiqUkN.js} +1 -1
- package/dist/assets/{QueuePanel-D67eiPuQ.js → QueuePanel-B2f1HbN0.js} +1 -1
- package/dist/assets/{RefreshDebugView-CWAwHE9i.js → RefreshDebugView-D8F95QxF.js} +1 -1
- package/dist/assets/{RequirementIntakeView-DPj065HL.js → RequirementIntakeView-BRolSCpk.js} +1 -1
- package/dist/assets/{SageTabs-BtRa8OZC.js → SageTabs-DblSyqzB.js} +2 -2
- package/dist/assets/{SddFlowGraph-DMSN4LTZ.js → SddFlowGraph-YOPsSaFc.js} +1 -1
- package/dist/assets/SddHub-IusMUP2D.js +2 -0
- package/dist/assets/{SessionInspectView-BdlOiPzO.js → SessionInspectView-B633Bi0X.js} +1 -1
- package/dist/assets/SessionList-BCE6NSCu.js +1 -0
- package/dist/assets/{SessionsDashboard-BiR0zh-a.js → SessionsDashboard-N__p7_i5.js} +1 -1
- package/dist/assets/SetupScreen-B06asuJC.js +1 -0
- package/dist/assets/SkillDetailView-BxpQcgfh.js +3 -0
- package/dist/assets/{SpecsView-2PqHEXH9.js → SpecsView-Ddbow1sn.js} +1 -1
- package/dist/assets/TechStackView-HTZUTbuu.js +2 -0
- package/dist/assets/{TerminalPanel-CLUB8F2H.js → TerminalPanel-Bi3CmRvI.js} +1 -1
- package/dist/assets/{Toaster-BlD1m8P2.js → Toaster-COVFFUKo.js} +1 -1
- package/dist/assets/{activity-DYwBIByU.js → activity-7Sj9fdO-.js} +2 -2
- package/dist/assets/{activity-CA5G03Kw.js → activity-B-LcgiXm.js} +2 -2
- package/dist/assets/{activity-CezOSNBd.js → activity-B7hiQ_IX.js} +2 -2
- package/dist/assets/{activity-C6pIBHte.js → activity-Cq0Lqtgz.js} +2 -2
- package/dist/assets/{activity-CxnlCaZu.js → activity-DVuAYnoi.js} +2 -2
- package/dist/assets/{activity-l8lDAw8a.js → activity-Dt0RpmkN.js} +2 -2
- package/dist/assets/{activity-CkGBp_I-.js → activity-JmCi-KcX.js} +2 -2
- package/dist/assets/{button-DvpRpKkt.js → button-DAT5OnLL.js} +1 -1
- package/dist/assets/{chat-store-c0pGYczr.js → chat-store-CtIMb3sU.js} +1 -1
- package/dist/assets/{codemap-activity-store-BH7Mh4k9.js → codemap-activity-store-CA_14DHd.js} +1 -1
- package/dist/assets/codemap-index-store-BlPxA13l.js +1 -0
- package/dist/assets/{dialog-BJjDUqb3.js → dialog-BMrjwjA6.js} +1 -1
- package/dist/assets/{empty-state-Cefmzojx.js → empty-state-Bf05Z1d2.js} +1 -1
- package/dist/assets/{i18n-DbJfY4tY.js → i18n-CYYBUSJB.js} +2 -2
- package/dist/assets/{index-DQn-Lz9q.js → index-cUeJ0FkT.js} +55 -54
- package/dist/assets/{input-BtoHcCl9.js → input-Ccsxvwz6.js} +1 -1
- package/dist/assets/{mailbox-store-bF96Ih2G.js → mailbox-store-BWD7JeF9.js} +1 -1
- package/dist/assets/{markdown-CIRD7kOg.js → markdown-Kp5uSgOw.js} +23 -23
- package/dist/assets/{roster-ws-DycHs92J.js → roster-ws-lMIf13ag.js} +1 -1
- package/dist/assets/{session-store-CKdsROPD.js → session-store-D4PNeAGe.js} +1 -1
- package/dist/assets/{shared-B3czc2Dj.js → shared-Y6T3EEnd.js} +1 -1
- package/dist/assets/stores-BUtRik4k.js +7 -0
- package/dist/assets/{ui-store-xx1NssJI.js → ui-store-DxMnhARg.js} +1 -1
- package/dist/assets/useWebSocket-Ew1Bbjci.js +29 -0
- package/dist/assets/{utils-tsZEnrBH.js → utils-B5X3DKef.js} +1 -1
- package/dist/assets/{vector-memory-panel-C6iWDhkJ.js → vector-memory-panel-CnBqV6GK.js} +1 -1
- package/dist/assets/{vendor-C_zEzV4N.js → vendor-DLS502Zs.js} +3 -3
- package/dist/assets/{view-navigation-CZKugncK.js → view-navigation-Hd631M1W.js} +1 -1
- package/dist/assets/{ws-client-CBfMQmW9.js → ws-client-DYrfK01f.js} +1 -1
- package/dist/components/AgentOfficeView/model.d.ts +20 -0
- package/dist/components/AgentOfficeView.d.ts +10 -0
- package/dist/index.css +114 -7
- package/dist/index.html +22 -22
- package/dist/index.js +317 -70
- package/dist/stores/index.d.ts +1 -1
- package/dist/stores/office-map-store.d.ts +6 -0
- package/package.json +15 -15
- package/dist/assets/ChronicleDashboard-BH9k5NjB.js +0 -1
- package/dist/assets/CodeEditor-BrQMwzOp.js +0 -2
- package/dist/assets/CodeMap-B5e0v0jn.js +0 -1
- package/dist/assets/KanbanView-bZtgy3zZ.js +0 -3
- package/dist/assets/MemoryManager-BXYIA9wG.js +0 -1
- package/dist/assets/OfficeMapPanel-CBfE7Kli.js +0 -4
- package/dist/assets/OfficeMapPanel-D6yTfGIT.css +0 -1
- package/dist/assets/SddHub-CuqWpqSd.js +0 -2
- package/dist/assets/SessionList-CvvH8SI2.js +0 -1
- package/dist/assets/SetupScreen-B8s5fvr8.js +0 -1
- package/dist/assets/SkillDetailView-DbXp7-E5.js +0 -3
- package/dist/assets/TechStackView-Dnws9pc9.js +0 -2
- package/dist/assets/codemap-index-store-BFm1TzVW.js +0 -1
- package/dist/assets/stores-C0xX0jn4.js +0 -7
- package/dist/assets/useWebSocket-D9Dy4-9x.js +0 -29
package/dist/index.js
CHANGED
|
@@ -1591,6 +1591,8 @@ var require_activity = __commonJS({
|
|
|
1591
1591
|
zoomControls: "Zoom controls",
|
|
1592
1592
|
animateWires: "Animate wires",
|
|
1593
1593
|
backgroundHeading: "Background",
|
|
1594
|
+
waitThresholdHeading: "Waiting threshold",
|
|
1595
|
+
waitThresholdHint: "Flag a live desk as waiting after this much silence",
|
|
1594
1596
|
bgDots: "Dots",
|
|
1595
1597
|
bgLines: "Lines",
|
|
1596
1598
|
bgCross: "Cross",
|
|
@@ -2331,6 +2333,13 @@ var require_activity = __commonJS({
|
|
|
2331
2333
|
syncWaiting: "waiting for sync",
|
|
2332
2334
|
todoTelemetryWaiting: "Reconnect this terminal to receive the live todo list",
|
|
2333
2335
|
taskNotReported: "Working, but no task description was reported",
|
|
2336
|
+
waitingForReply: 'Waiting for a reply to "{{subject}}" \u2014 sent {{duration}} ago',
|
|
2337
|
+
waitingMailFallback: "a recent message",
|
|
2338
|
+
waitingTelemetry: "Waiting \u2014 no telemetry from this terminal yet",
|
|
2339
|
+
waitingNoWork: "Waiting for work \u2014 no activity for {{duration}} (last: {{last}})",
|
|
2340
|
+
waitingNothingYet: "nothing yet",
|
|
2341
|
+
contextUsed: "Context window used",
|
|
2342
|
+
cost: "cost",
|
|
2334
2343
|
noPrompt: "No prompt received in this session yet",
|
|
2335
2344
|
activeTodos: "Active todos",
|
|
2336
2345
|
todoProgress: "{{done}}/{{total}} done",
|
|
@@ -6482,6 +6491,8 @@ var require_activity2 = __commonJS({
|
|
|
6482
6491
|
zoomControls: "Zoom-Steuerung",
|
|
6483
6492
|
animateWires: "Kabel animieren",
|
|
6484
6493
|
backgroundHeading: "Hintergrund",
|
|
6494
|
+
waitThresholdHeading: "Warteschwelle",
|
|
6495
|
+
waitThresholdHint: "Live-Schreibtisch nach so viel Stille als wartend markieren",
|
|
6485
6496
|
bgDots: "Punkte",
|
|
6486
6497
|
bgLines: "Linien",
|
|
6487
6498
|
bgCross: "Kreuz",
|
|
@@ -7222,6 +7233,13 @@ var require_activity2 = __commonJS({
|
|
|
7222
7233
|
syncWaiting: "Warten auf Synchronisierung",
|
|
7223
7234
|
todoTelemetryWaiting: "Terminal neu verbinden, um die Live-Aufgabenliste zu empfangen",
|
|
7224
7235
|
taskNotReported: "Agent arbeitet, aber es wurde keine Aufgabenbeschreibung gemeldet",
|
|
7236
|
+
waitingForReply: "Wartet auf eine Antwort auf \u201E{{subject}}\u201C \u2014 vor {{duration}} gesendet",
|
|
7237
|
+
waitingMailFallback: "eine aktuelle Nachricht",
|
|
7238
|
+
waitingTelemetry: "Wartet \u2014 noch keine Telemetrie von diesem Terminal",
|
|
7239
|
+
waitingNoWork: "Wartet auf Arbeit \u2014 seit {{duration}} keine Aktivit\xE4t (zuletzt: {{last}})",
|
|
7240
|
+
waitingNothingYet: "noch nichts",
|
|
7241
|
+
contextUsed: "Belegtes Kontextfenster",
|
|
7242
|
+
cost: "Kosten",
|
|
7225
7243
|
noPrompt: "In dieser Sitzung wurde noch kein Prompt empfangen",
|
|
7226
7244
|
activeTodos: "Aktive Aufgaben",
|
|
7227
7245
|
todoProgress: "{{done}}/{{total}} erledigt",
|
|
@@ -11378,6 +11396,8 @@ var require_activity3 = __commonJS({
|
|
|
11378
11396
|
zoomControls: "Controles de zoom",
|
|
11379
11397
|
animateWires: "Animar cables",
|
|
11380
11398
|
backgroundHeading: "Fondo",
|
|
11399
|
+
waitThresholdHeading: "Umbral de espera",
|
|
11400
|
+
waitThresholdHint: "Marcar un escritorio activo como en espera tras este silencio",
|
|
11381
11401
|
bgDots: "Puntos",
|
|
11382
11402
|
bgLines: "L\xEDneas",
|
|
11383
11403
|
bgCross: "Cruz",
|
|
@@ -12118,6 +12138,13 @@ var require_activity3 = __commonJS({
|
|
|
12118
12138
|
syncWaiting: "esperando sincronizaci\xF3n",
|
|
12119
12139
|
todoTelemetryWaiting: "Reconecta este terminal para recibir la lista de tareas en vivo",
|
|
12120
12140
|
taskNotReported: "El agente trabaja, pero no inform\xF3 una descripci\xF3n de la tarea",
|
|
12141
|
+
waitingForReply: "Esperando respuesta a \xAB{{subject}}\xBB \u2014 enviado hace {{duration}}",
|
|
12142
|
+
waitingMailFallback: "un mensaje reciente",
|
|
12143
|
+
waitingTelemetry: "Esperando \u2014 a\xFAn sin telemetr\xEDa de esta terminal",
|
|
12144
|
+
waitingNoWork: "Esperando trabajo \u2014 sin actividad durante {{duration}} (\xFAltimo: {{last}})",
|
|
12145
|
+
waitingNothingYet: "nada todav\xEDa",
|
|
12146
|
+
contextUsed: "Ventana de contexto usada",
|
|
12147
|
+
cost: "costo",
|
|
12121
12148
|
noPrompt: "A\xFAn no se recibi\xF3 ning\xFAn prompt en esta sesi\xF3n",
|
|
12122
12149
|
activeTodos: "Tareas activas",
|
|
12123
12150
|
todoProgress: "{{done}}/{{total}} completadas",
|
|
@@ -16274,6 +16301,8 @@ var require_activity4 = __commonJS({
|
|
|
16274
16301
|
zoomControls: "Contr\xF4les zoom",
|
|
16275
16302
|
animateWires: "Animer les fils",
|
|
16276
16303
|
backgroundHeading: "Arri\xE8re-plan",
|
|
16304
|
+
waitThresholdHeading: "Seuil d'attente",
|
|
16305
|
+
waitThresholdHint: "Marquer un bureau actif comme en attente apr\xE8s ce silence",
|
|
16277
16306
|
bgDots: "Points",
|
|
16278
16307
|
bgLines: "Lignes",
|
|
16279
16308
|
bgCross: "Croix",
|
|
@@ -17015,6 +17044,13 @@ D\xE9clencheurs : l'utilisateur dit "mot-cl\xE9", "autre".`,
|
|
|
17015
17044
|
syncWaiting: "synchronisation en attente",
|
|
17016
17045
|
todoTelemetryWaiting: "Reconnectez ce terminal pour recevoir la liste des t\xE2ches en direct",
|
|
17017
17046
|
taskNotReported: "L\u2019agent travaille, mais aucune description de t\xE2che n\u2019a \xE9t\xE9 signal\xE9e",
|
|
17047
|
+
waitingForReply: "En attente d\u2019une r\xE9ponse \xE0 \xAB {{subject}} \xBB \u2014 envoy\xE9 il y a {{duration}}",
|
|
17048
|
+
waitingMailFallback: "un message r\xE9cent",
|
|
17049
|
+
waitingTelemetry: "En attente \u2014 aucune t\xE9l\xE9m\xE9trie de ce terminal pour l\u2019instant",
|
|
17050
|
+
waitingNoWork: "En attente de travail \u2014 aucune activit\xE9 depuis {{duration}} (dernier : {{last}})",
|
|
17051
|
+
waitingNothingYet: "rien pour l\u2019instant",
|
|
17052
|
+
contextUsed: "Fen\xEAtre de contexte utilis\xE9e",
|
|
17053
|
+
cost: "co\xFBt",
|
|
17018
17054
|
noPrompt: "Aucun prompt re\xE7u dans cette session",
|
|
17019
17055
|
activeTodos: "T\xE2ches actives",
|
|
17020
17056
|
todoProgress: "{{done}}/{{total}} termin\xE9es",
|
|
@@ -21171,6 +21207,8 @@ var require_activity5 = __commonJS({
|
|
|
21171
21207
|
zoomControls: "Controlli zoom",
|
|
21172
21208
|
animateWires: "Anima fili",
|
|
21173
21209
|
backgroundHeading: "Sfondo",
|
|
21210
|
+
waitThresholdHeading: "Soglia di attesa",
|
|
21211
|
+
waitThresholdHint: "Contrassegna una scrivania attiva come in attesa dopo questo silenzio",
|
|
21174
21212
|
bgDots: "Punti",
|
|
21175
21213
|
bgLines: "Linee",
|
|
21176
21214
|
bgCross: "Croce",
|
|
@@ -21912,6 +21950,13 @@ Trigger: l'utente dice "parola chiave", "altra".`,
|
|
|
21912
21950
|
syncWaiting: "sincronizzazione in attesa",
|
|
21913
21951
|
todoTelemetryWaiting: "Riconnetti questo terminale per ricevere l\u2019elenco attivit\xE0 live",
|
|
21914
21952
|
taskNotReported: "L\u2019agente sta lavorando, ma non ha segnalato una descrizione dell\u2019attivit\xE0",
|
|
21953
|
+
waitingForReply: "In attesa di una risposta a \xAB{{subject}}\xBB \u2014 inviata {{duration}} fa",
|
|
21954
|
+
waitingMailFallback: "un messaggio recente",
|
|
21955
|
+
waitingTelemetry: "In attesa \u2014 nessuna telemetria da questo terminale",
|
|
21956
|
+
waitingNoWork: "In attesa di lavoro \u2014 nessuna attivit\xE0 da {{duration}} (ultima: {{last}})",
|
|
21957
|
+
waitingNothingYet: "ancora niente",
|
|
21958
|
+
contextUsed: "Finestra di contesto usata",
|
|
21959
|
+
cost: "costo",
|
|
21915
21960
|
noPrompt: "Nessun prompt ancora ricevuto in questa sessione",
|
|
21916
21961
|
activeTodos: "Attivit\xE0 attive",
|
|
21917
21962
|
todoProgress: "{{done}}/{{total}} completate",
|
|
@@ -26068,6 +26113,8 @@ var require_activity6 = __commonJS({
|
|
|
26068
26113
|
zoomControls: "Controles de zoom",
|
|
26069
26114
|
animateWires: "Animar fios",
|
|
26070
26115
|
backgroundHeading: "Fundo",
|
|
26116
|
+
waitThresholdHeading: "Limiar de espera",
|
|
26117
|
+
waitThresholdHint: "Marcar uma mesa ativa como aguardando ap\xF3s este sil\xEAncio",
|
|
26071
26118
|
bgDots: "Pontos",
|
|
26072
26119
|
bgLines: "Linhas",
|
|
26073
26120
|
bgCross: "Cruz",
|
|
@@ -26808,6 +26855,13 @@ var require_activity6 = __commonJS({
|
|
|
26808
26855
|
syncWaiting: "aguardando sincroniza\xE7\xE3o",
|
|
26809
26856
|
todoTelemetryWaiting: "Reconecte este terminal para receber a lista de tarefas ao vivo",
|
|
26810
26857
|
taskNotReported: "O agente est\xE1 trabalhando, mas nenhuma descri\xE7\xE3o de tarefa foi informada",
|
|
26858
|
+
waitingForReply: 'Aguardando uma resposta para "{{subject}}" \u2014 mensagem enviada h\xE1 {{duration}}',
|
|
26859
|
+
waitingMailFallback: "uma mensagem recente",
|
|
26860
|
+
waitingTelemetry: "Aguardando \u2014 ainda sem telemetria deste terminal",
|
|
26861
|
+
waitingNoWork: "Aguardando trabalho \u2014 sem atividade por {{duration}} (\xFAltima: {{last}})",
|
|
26862
|
+
waitingNothingYet: "nada ainda",
|
|
26863
|
+
contextUsed: "Janela de contexto usada",
|
|
26864
|
+
cost: "custo",
|
|
26811
26865
|
noPrompt: "Nenhum prompt recebido nesta sess\xE3o",
|
|
26812
26866
|
activeTodos: "Tarefas ativas",
|
|
26813
26867
|
todoProgress: "{{done}}/{{total}} conclu\xEDdas",
|
|
@@ -30964,6 +31018,8 @@ var require_activity7 = __commonJS({
|
|
|
30964
31018
|
zoomControls: "Yak\u0131nla\u015Ft\u0131rma kontrolleri",
|
|
30965
31019
|
animateWires: "Ba\u011Flant\u0131lar\u0131 animasyonla",
|
|
30966
31020
|
backgroundHeading: "Arka plan",
|
|
31021
|
+
waitThresholdHeading: "Bekleme e\u015Fi\u011Fi",
|
|
31022
|
+
waitThresholdHint: "Canl\u0131 bir masay\u0131 bu kadar sessizlikten sonra bekliyor olarak i\u015Faretle",
|
|
30967
31023
|
bgDots: "Noktalar",
|
|
30968
31024
|
bgLines: "\xC7izgiler",
|
|
30969
31025
|
bgCross: "\xC7apraz",
|
|
@@ -31705,6 +31761,13 @@ var require_activity7 = __commonJS({
|
|
|
31705
31761
|
todoTelemetryWaiting: "Canl\u0131 todo listesi i\xE7in bu terminali yeniden ba\u011Flay\u0131n",
|
|
31706
31762
|
taskNotReported: "\xC7al\u0131\u015F\u0131yor ancak g\xF6rev a\xE7\u0131klamas\u0131 bildirilmedi",
|
|
31707
31763
|
noPrompt: "Bu oturumda hen\xFCz prompt al\u0131nmad\u0131",
|
|
31764
|
+
waitingForReply: '"{{subject}}" yan\u0131t bekliyor \u2014 {{duration}} \xF6nce g\xF6nderildi',
|
|
31765
|
+
waitingMailFallback: "yak\u0131n tarihli bir mesaj",
|
|
31766
|
+
waitingTelemetry: "Bekliyor \u2014 bu terminalden hen\xFCz telemetri yok",
|
|
31767
|
+
waitingNoWork: "\u0130\u015F bekliyor \u2014 {{duration}}dir etkinlik yok (son: {{last}})",
|
|
31768
|
+
waitingNothingYet: "hen\xFCz bir \u015Fey yok",
|
|
31769
|
+
contextUsed: "Kullan\u0131lan ba\u011Flam penceresi",
|
|
31770
|
+
cost: "maliyet",
|
|
31708
31771
|
activeTodos: "Aktif yap\u0131lacaklar",
|
|
31709
31772
|
todoProgress: "{{done}}/{{total}} tamamland\u0131",
|
|
31710
31773
|
allTodosDone: "T\xFCm i\u015Fler tamamland\u0131",
|
|
@@ -40419,7 +40482,7 @@ var init_monitor_store = __esm({
|
|
|
40419
40482
|
break;
|
|
40420
40483
|
}
|
|
40421
40484
|
for (let j = 0; j < aa.length; j++) {
|
|
40422
|
-
if (aa[j].id !== ba[j].id || aa[j].name !== ba[j].name || aa[j].status !== ba[j].status || aa[j].currentTool !== ba[j].currentTool || aa[j].iterations !== ba[j].iterations || aa[j].toolCalls !== ba[j].toolCalls || aa[j].ctxPct !== ba[j].ctxPct || aa[j].recentTools?.[0]?.id !== ba[j].recentTools?.[0]?.id || aa[j].recentMail?.[0]?.id !== ba[j].recentMail?.[0]?.id || aa[j].activity?.reads !== ba[j].activity?.reads || aa[j].activity?.writes !== ba[j].activity?.writes || aa[j].activity?.edits !== ba[j].activity?.edits || aa[j].activity?.terminalCalls !== ba[j].activity?.terminalCalls || aa[j].activity?.mailReceived !== ba[j].activity?.mailReceived || aa[j].activity?.mailSent !== ba[j].activity?.mailSent || aa[j].activity?.linesAdded !== ba[j].activity?.linesAdded || aa[j].activity?.linesRemoved !== ba[j].activity?.linesRemoved) {
|
|
40485
|
+
if (aa[j].id !== ba[j].id || aa[j].name !== ba[j].name || aa[j].status !== ba[j].status || aa[j].currentTool !== ba[j].currentTool || aa[j].iterations !== ba[j].iterations || aa[j].toolCalls !== ba[j].toolCalls || aa[j].ctxPct !== ba[j].ctxPct || aa[j].tokensIn !== ba[j].tokensIn || aa[j].tokensOut !== ba[j].tokensOut || aa[j].costUsd !== ba[j].costUsd || aa[j].recentTools?.[0]?.id !== ba[j].recentTools?.[0]?.id || aa[j].recentMail?.[0]?.id !== ba[j].recentMail?.[0]?.id || aa[j].activity?.reads !== ba[j].activity?.reads || aa[j].activity?.writes !== ba[j].activity?.writes || aa[j].activity?.edits !== ba[j].activity?.edits || aa[j].activity?.terminalCalls !== ba[j].activity?.terminalCalls || aa[j].activity?.mailReceived !== ba[j].activity?.mailReceived || aa[j].activity?.mailSent !== ba[j].activity?.mailSent || aa[j].activity?.linesAdded !== ba[j].activity?.linesAdded || aa[j].activity?.linesRemoved !== ba[j].activity?.linesRemoved) {
|
|
40423
40486
|
same = false;
|
|
40424
40487
|
break;
|
|
40425
40488
|
}
|
|
@@ -40472,10 +40535,12 @@ var init_monitor_store = __esm({
|
|
|
40472
40535
|
// src/stores/office-map-store.ts
|
|
40473
40536
|
import { create as create21 } from "zustand";
|
|
40474
40537
|
import { persist as persist6 } from "zustand/middleware";
|
|
40475
|
-
var useOfficeMapStore;
|
|
40538
|
+
var WAIT_THRESHOLD_PRESETS, DEFAULT_WAIT_THRESHOLD_MS, useOfficeMapStore;
|
|
40476
40539
|
var init_office_map_store = __esm({
|
|
40477
40540
|
"src/stores/office-map-store.ts"() {
|
|
40478
40541
|
"use strict";
|
|
40542
|
+
WAIT_THRESHOLD_PRESETS = [3e4, 6e4, 12e4, 3e5, 6e5];
|
|
40543
|
+
DEFAULT_WAIT_THRESHOLD_MS = 12e4;
|
|
40479
40544
|
useOfficeMapStore = create21()(
|
|
40480
40545
|
persist6(
|
|
40481
40546
|
(set) => ({
|
|
@@ -40487,6 +40552,7 @@ var init_office_map_store = __esm({
|
|
|
40487
40552
|
animateEdges: true,
|
|
40488
40553
|
showFeed: true,
|
|
40489
40554
|
background: "dots",
|
|
40555
|
+
waitThresholdMs: DEFAULT_WAIT_THRESHOLD_MS,
|
|
40490
40556
|
setViewMode: (v) => set({ viewMode: v }),
|
|
40491
40557
|
setShowHud: (v) => set({ showHud: v }),
|
|
40492
40558
|
setShowLegend: (v) => set({ showLegend: v }),
|
|
@@ -40494,7 +40560,8 @@ var init_office_map_store = __esm({
|
|
|
40494
40560
|
setShowControls: (v) => set({ showControls: v }),
|
|
40495
40561
|
setAnimateEdges: (v) => set({ animateEdges: v }),
|
|
40496
40562
|
setShowFeed: (v) => set({ showFeed: v }),
|
|
40497
|
-
setBackground: (v) => set({ background: v })
|
|
40563
|
+
setBackground: (v) => set({ background: v }),
|
|
40564
|
+
setWaitThresholdMs: (v) => set({ waitThresholdMs: Number.isFinite(v) && v > 0 ? Math.round(v) : DEFAULT_WAIT_THRESHOLD_MS })
|
|
40498
40565
|
}),
|
|
40499
40566
|
{ name: "wrongstack-officemap" }
|
|
40500
40567
|
)
|
|
@@ -50122,7 +50189,7 @@ var init_AgentRosterCatalogTab = __esm({
|
|
|
50122
50189
|
import {
|
|
50123
50190
|
Bot as Bot14,
|
|
50124
50191
|
CheckCircle2 as CheckCircle218,
|
|
50125
|
-
Clock as
|
|
50192
|
+
Clock as Clock13,
|
|
50126
50193
|
Crown as Crown5,
|
|
50127
50194
|
LayoutGrid as LayoutGrid4,
|
|
50128
50195
|
Trash2 as Trash215,
|
|
@@ -50529,7 +50596,7 @@ var init_AgentRosterLiveTab = __esm({
|
|
|
50529
50596
|
timeout: {
|
|
50530
50597
|
led: "bg-warning",
|
|
50531
50598
|
badge: "bg-muted text-muted-foreground",
|
|
50532
|
-
icon: /* @__PURE__ */ jsx153(
|
|
50599
|
+
icon: /* @__PURE__ */ jsx153(Clock13, { className: "h-3.5 w-3.5" }),
|
|
50533
50600
|
color: "text-warning"
|
|
50534
50601
|
},
|
|
50535
50602
|
stopped: {
|
|
@@ -58090,7 +58157,7 @@ import {
|
|
|
58090
58157
|
Activity as Activity16,
|
|
58091
58158
|
AlertCircle as AlertCircle2,
|
|
58092
58159
|
BarChart3 as BarChart35,
|
|
58093
|
-
Clock as
|
|
58160
|
+
Clock as Clock14,
|
|
58094
58161
|
Eye as Eye8,
|
|
58095
58162
|
FileWarning,
|
|
58096
58163
|
Gauge as Gauge4,
|
|
@@ -58221,7 +58288,7 @@ function DebugDashboard() {
|
|
|
58221
58288
|
] })
|
|
58222
58289
|
] }) }),
|
|
58223
58290
|
data.lastUpdated && /* @__PURE__ */ jsxs169("div", { className: "flex items-center gap-2 rounded-lg border border-border/60 bg-card/55 px-3 py-2 text-sm text-muted-foreground", children: [
|
|
58224
|
-
/* @__PURE__ */ jsx178(
|
|
58291
|
+
/* @__PURE__ */ jsx178(Clock14, { className: "w-4 h-4" }),
|
|
58225
58292
|
t("activity:debug.lastUpdated", { time: data.lastUpdated.toLocaleTimeString() })
|
|
58226
58293
|
] }),
|
|
58227
58294
|
data.error && /* @__PURE__ */ jsxs169("div", { className: "flex items-center gap-3 rounded-xl border border-destructive/25 bg-destructive/10 p-4 text-destructive", children: [
|
|
@@ -58305,7 +58372,7 @@ function DebugDashboard() {
|
|
|
58305
58372
|
title: t("activity:debug.avgDebounce"),
|
|
58306
58373
|
value: `${(data.fileWatcher?.averageDebounceDelayMs ?? 0).toFixed(1)}ms`,
|
|
58307
58374
|
subtitle: t("activity:debug.actualDelay"),
|
|
58308
|
-
icon:
|
|
58375
|
+
icon: Clock14,
|
|
58309
58376
|
color: "text-warning"
|
|
58310
58377
|
}
|
|
58311
58378
|
),
|
|
@@ -58373,7 +58440,7 @@ function DebugDashboard() {
|
|
|
58373
58440
|
title: t("activity:debugDash.serverUptime"),
|
|
58374
58441
|
value: formatUptime(data.system?.uptime ?? 0),
|
|
58375
58442
|
subtitle: t("activity:debugDash.sinceProcessStart"),
|
|
58376
|
-
icon:
|
|
58443
|
+
icon: Clock14,
|
|
58377
58444
|
color: "text-primary"
|
|
58378
58445
|
}
|
|
58379
58446
|
)
|
|
@@ -59112,7 +59179,7 @@ var init_DesignGalleryView = __esm({
|
|
|
59112
59179
|
});
|
|
59113
59180
|
|
|
59114
59181
|
// src/components/TaskCard.tsx
|
|
59115
|
-
import { CheckCircle2 as CheckCircle219, Circle as Circle9, Clock as
|
|
59182
|
+
import { CheckCircle2 as CheckCircle219, Circle as Circle9, Clock as Clock15, Pause as Pause6, RotateCcw as RotateCcw10, UserCog, XCircle as XCircle8 } from "lucide-react";
|
|
59116
59183
|
import { useState as useState101 } from "react";
|
|
59117
59184
|
import { jsx as jsx180, jsxs as jsxs171 } from "react/jsx-runtime";
|
|
59118
59185
|
function formatTime4(ms) {
|
|
@@ -59164,7 +59231,7 @@ function TaskCard({
|
|
|
59164
59231
|
running ? "bg-primary/15 text-primary" : "bg-muted text-muted-foreground"
|
|
59165
59232
|
),
|
|
59166
59233
|
children: [
|
|
59167
|
-
running && /* @__PURE__ */ jsx180(
|
|
59234
|
+
running && /* @__PURE__ */ jsx180(Clock15, { className: "w-3 h-3 animate-spin", "aria-label": t("common:status.working") }),
|
|
59168
59235
|
/* @__PURE__ */ jsx180("span", { children: task.assignee })
|
|
59169
59236
|
]
|
|
59170
59237
|
}
|
|
@@ -59260,7 +59327,7 @@ var init_TaskCard = __esm({
|
|
|
59260
59327
|
init_i18n();
|
|
59261
59328
|
TASK_STATUS_CONFIG = {
|
|
59262
59329
|
pending: { icon: /* @__PURE__ */ jsx180(Circle9, { className: "w-4 h-4" }), color: "text-muted-foreground" },
|
|
59263
|
-
in_progress: { icon: /* @__PURE__ */ jsx180(
|
|
59330
|
+
in_progress: { icon: /* @__PURE__ */ jsx180(Clock15, { className: "w-4 h-4 animate-spin" }), color: "text-primary" },
|
|
59264
59331
|
blocked: { icon: /* @__PURE__ */ jsx180(Pause6, { className: "w-4 h-4" }), color: "text-warning" },
|
|
59265
59332
|
failed: { icon: /* @__PURE__ */ jsx180(XCircle8, { className: "w-4 h-4" }), color: "text-destructive" },
|
|
59266
59333
|
review: { icon: /* @__PURE__ */ jsx180(RotateCcw10, { className: "w-4 h-4" }), color: "text-info" },
|
|
@@ -68251,7 +68318,7 @@ __export(MailboxDetailView_exports, {
|
|
|
68251
68318
|
import {
|
|
68252
68319
|
ArrowLeft as ArrowLeft4,
|
|
68253
68320
|
CheckCircle2 as CheckCircle225,
|
|
68254
|
-
Clock as
|
|
68321
|
+
Clock as Clock16,
|
|
68255
68322
|
Mail as Mail4,
|
|
68256
68323
|
Tag as Tag2,
|
|
68257
68324
|
User as User3,
|
|
@@ -68386,7 +68453,7 @@ function MailboxDetailView({ className }) {
|
|
|
68386
68453
|
] }),
|
|
68387
68454
|
/* @__PURE__ */ jsx213("span", { className: "opacity-40", children: "\u2022" }),
|
|
68388
68455
|
/* @__PURE__ */ jsxs203("span", { className: "inline-flex items-center gap-1", children: [
|
|
68389
|
-
/* @__PURE__ */ jsx213(
|
|
68456
|
+
/* @__PURE__ */ jsx213(Clock16, { className: "h-3 w-3" }),
|
|
68390
68457
|
fmtRelative(msg.timestamp)
|
|
68391
68458
|
] })
|
|
68392
68459
|
] })
|
|
@@ -68420,7 +68487,7 @@ function MailboxDetailView({ className }) {
|
|
|
68420
68487
|
/* @__PURE__ */ jsx213("span", { className: "truncate", children: recipientScopeLabel })
|
|
68421
68488
|
] }),
|
|
68422
68489
|
/* @__PURE__ */ jsxs203("div", { className: "flex items-center gap-1.5 text-muted-foreground", children: [
|
|
68423
|
-
/* @__PURE__ */ jsx213(
|
|
68490
|
+
/* @__PURE__ */ jsx213(Clock16, { className: "h-3 w-3 shrink-0" }),
|
|
68424
68491
|
/* @__PURE__ */ jsx213("span", { children: fmtTime3(msg.timestamp) })
|
|
68425
68492
|
] }),
|
|
68426
68493
|
msg.replyTo && /* @__PURE__ */ jsxs203("div", { className: "flex items-center gap-1.5 text-muted-foreground col-span-2", children: [
|
|
@@ -69575,6 +69642,59 @@ function shortPath4(value, max = 46) {
|
|
|
69575
69642
|
const tail = parts.slice(-2).join("/");
|
|
69576
69643
|
return tail.length <= max ? `\u2026/${tail}` : `\u2026${value.slice(-(max - 1))}`;
|
|
69577
69644
|
}
|
|
69645
|
+
function deskWaitState(model, now, thresholdMs = 12e4) {
|
|
69646
|
+
const { agent, client: client2, current, history, mail } = model;
|
|
69647
|
+
const active = agent.status === "active" || agent.status === "streaming";
|
|
69648
|
+
const lastToolAt = current?.startedAt ?? history[0]?.completedAt ?? history[0]?.startedAt;
|
|
69649
|
+
const lastMailAt = mail[0]?.timestampMs;
|
|
69650
|
+
const candidates = [lastToolAt, lastMailAt].filter((value) => value !== void 0);
|
|
69651
|
+
const startedMs = Date.parse(client2.startedAt ?? "");
|
|
69652
|
+
const floor = Number.isFinite(startedMs) ? startedMs : 0;
|
|
69653
|
+
const lastActivityAt = candidates.length > 0 ? Math.max(...candidates, floor) : floor > 0 ? floor : void 0;
|
|
69654
|
+
const idleMs = lastActivityAt === void 0 ? Number.POSITIVE_INFINITY : Math.max(0, now - lastActivityAt);
|
|
69655
|
+
if (!active || current !== void 0 || idleMs < thresholdMs) {
|
|
69656
|
+
return {
|
|
69657
|
+
waiting: false,
|
|
69658
|
+
idleMs,
|
|
69659
|
+
reason: "no-work",
|
|
69660
|
+
anchor: "",
|
|
69661
|
+
anchorId: void 0,
|
|
69662
|
+
anchorAt: lastActivityAt
|
|
69663
|
+
};
|
|
69664
|
+
}
|
|
69665
|
+
if (client2.todos === void 0 && agent.toolCalls === 0) {
|
|
69666
|
+
return {
|
|
69667
|
+
waiting: true,
|
|
69668
|
+
idleMs,
|
|
69669
|
+
reason: "telemetry",
|
|
69670
|
+
anchor: agent.currentTask ?? "",
|
|
69671
|
+
anchorId: void 0,
|
|
69672
|
+
anchorAt: lastActivityAt
|
|
69673
|
+
};
|
|
69674
|
+
}
|
|
69675
|
+
const newest = mail[0];
|
|
69676
|
+
const pendingReply = newest !== void 0 && newest.direction === "outgoing" && (lastToolAt === void 0 || newest.timestampMs > lastToolAt) ? newest : void 0;
|
|
69677
|
+
if (pendingReply !== void 0) {
|
|
69678
|
+
return {
|
|
69679
|
+
waiting: true,
|
|
69680
|
+
idleMs,
|
|
69681
|
+
reason: "mail-reply",
|
|
69682
|
+
anchor: pendingReply.subject,
|
|
69683
|
+
anchorId: pendingReply.id,
|
|
69684
|
+
anchorAt: lastActivityAt
|
|
69685
|
+
};
|
|
69686
|
+
}
|
|
69687
|
+
return {
|
|
69688
|
+
waiting: true,
|
|
69689
|
+
idleMs,
|
|
69690
|
+
reason: "no-work",
|
|
69691
|
+
// Empty string means "not reported" everywhere else in the view — treat it
|
|
69692
|
+
// as absent here too so the last completed action becomes the anchor.
|
|
69693
|
+
anchor: agent.currentTask || history[0]?.summary || "",
|
|
69694
|
+
anchorId: void 0,
|
|
69695
|
+
anchorAt: lastActivityAt
|
|
69696
|
+
};
|
|
69697
|
+
}
|
|
69578
69698
|
function relativeTime(timestamp2, now) {
|
|
69579
69699
|
const seconds = Math.max(0, Math.floor((now - timestamp2) / 1e3));
|
|
69580
69700
|
if (seconds < 5) return "now";
|
|
@@ -70072,16 +70192,28 @@ function AgentLane({
|
|
|
70072
70192
|
routedMailIds
|
|
70073
70193
|
}) {
|
|
70074
70194
|
const { t } = useTranslation();
|
|
70195
|
+
const waitThresholdMs = useOfficeMapStore((s) => s.waitThresholdMs);
|
|
70075
70196
|
const { agent, client: client2, current, display, history, mail } = model;
|
|
70076
70197
|
const active = agent.status === "active" || agent.status === "streaming";
|
|
70077
70198
|
const failed = agent.status === "error";
|
|
70078
70199
|
const latestMail = mail[0];
|
|
70079
70200
|
const visualRole = agentVisualRole(agent);
|
|
70080
70201
|
const desk = deskPersonality(`${client2.sessionId}:${agent.serverId}:${agent.name}`, visualRole);
|
|
70081
|
-
const
|
|
70202
|
+
const wait = deskWaitState(model, now, waitThresholdMs);
|
|
70203
|
+
const waitActionable = wait.reason === "mail-reply" ? mail.some((item) => item.id === wait.anchorId) : Boolean(agent.currentTask);
|
|
70204
|
+
const waitIdleLabel = Number.isFinite(wait.idleMs) ? relativeTime(now - wait.idleMs, now) : "\u2014";
|
|
70205
|
+
const waitTitle = wait.waiting ? wait.reason === "mail-reply" ? t("activity:agentOffice.waitingForReply", {
|
|
70206
|
+
subject: wait.anchor || t("activity:agentOffice.waitingMailFallback"),
|
|
70207
|
+
duration: waitIdleLabel
|
|
70208
|
+
}) : wait.reason === "telemetry" ? t("activity:agentOffice.waitingTelemetry") : t("activity:agentOffice.waitingNoWork", {
|
|
70209
|
+
duration: waitIdleLabel,
|
|
70210
|
+
last: wait.anchor || t("activity:agentOffice.waitingNothingYet")
|
|
70211
|
+
}) : void 0;
|
|
70212
|
+
const latestMailIsFresh = latestMail && now - latestMail.timestampMs < 3e4 && !routedMailIds?.has(latestMail.id) && wait.anchorId !== latestMail.id;
|
|
70082
70213
|
const recentWork = history.slice(0, 6);
|
|
70083
70214
|
const latestActivityAt = recentWork[0]?.completedAt ?? recentWork[0]?.startedAt ?? display?.completedAt ?? display?.startedAt;
|
|
70084
70215
|
const activeToolClass = current ? `is-tool-${current.kind}` : void 0;
|
|
70216
|
+
const actionLine = current ? current.summary : display ? display.summary : wait.waiting ? waitTitle ?? t("activity:agentOffice.waiting") : active ? t("activity:agentOffice.preparing") : t("activity:agentOffice.waiting");
|
|
70085
70217
|
return /* @__PURE__ */ jsxs205(
|
|
70086
70218
|
"article",
|
|
70087
70219
|
{
|
|
@@ -70091,7 +70223,8 @@ function AgentLane({
|
|
|
70091
70223
|
`is-layout-${desk.layout}`,
|
|
70092
70224
|
`is-clutter-${desk.clutter}`,
|
|
70093
70225
|
active && "is-active",
|
|
70094
|
-
failed && "is-failed"
|
|
70226
|
+
failed && "is-failed",
|
|
70227
|
+
wait.waiting && "is-waiting"
|
|
70095
70228
|
),
|
|
70096
70229
|
children: [
|
|
70097
70230
|
/* @__PURE__ */ jsxs205("div", { className: "agent-office__identity", children: [
|
|
@@ -70115,6 +70248,48 @@ function AgentLane({
|
|
|
70115
70248
|
}
|
|
70116
70249
|
)
|
|
70117
70250
|
] }),
|
|
70251
|
+
wait.waiting && waitActionable && /* @__PURE__ */ jsxs205(
|
|
70252
|
+
"button",
|
|
70253
|
+
{
|
|
70254
|
+
type: "button",
|
|
70255
|
+
className: cn("agent-office__wait-badge", `is-${wait.reason}`),
|
|
70256
|
+
title: waitTitle,
|
|
70257
|
+
"aria-label": waitTitle,
|
|
70258
|
+
onClick: () => {
|
|
70259
|
+
if (wait.reason === "mail-reply") {
|
|
70260
|
+
const pending = mail.find((item) => item.id === wait.anchorId);
|
|
70261
|
+
if (pending) onSelect({ kind: "mail", mail: pending, agentName: agent.name });
|
|
70262
|
+
return;
|
|
70263
|
+
}
|
|
70264
|
+
if (!agent.currentTask) return;
|
|
70265
|
+
onSelect({
|
|
70266
|
+
kind: "task",
|
|
70267
|
+
task: agent.currentTask,
|
|
70268
|
+
taskId: agent.taskId,
|
|
70269
|
+
agentName: agent.name
|
|
70270
|
+
});
|
|
70271
|
+
},
|
|
70272
|
+
children: [
|
|
70273
|
+
/* @__PURE__ */ jsx215(Clock37, { "aria-hidden": "true" }),
|
|
70274
|
+
/* @__PURE__ */ jsx215("span", { children: waitIdleLabel })
|
|
70275
|
+
]
|
|
70276
|
+
}
|
|
70277
|
+
),
|
|
70278
|
+
wait.waiting && !waitActionable && // No anchor to open (no task, no resolvable mail) — render as pure
|
|
70279
|
+
// status so keyboard/screen-reader users aren't offered a dead button.
|
|
70280
|
+
/* @__PURE__ */ jsxs205(
|
|
70281
|
+
"span",
|
|
70282
|
+
{
|
|
70283
|
+
role: "status",
|
|
70284
|
+
className: cn("agent-office__wait-badge", `is-${wait.reason}`),
|
|
70285
|
+
title: waitTitle,
|
|
70286
|
+
"aria-label": waitTitle,
|
|
70287
|
+
children: [
|
|
70288
|
+
/* @__PURE__ */ jsx215(Clock37, { "aria-hidden": "true" }),
|
|
70289
|
+
/* @__PURE__ */ jsx215("span", { children: waitIdleLabel })
|
|
70290
|
+
]
|
|
70291
|
+
}
|
|
70292
|
+
),
|
|
70118
70293
|
/* @__PURE__ */ jsx215("span", { className: "agent-office__role", children: agent.role ?? (agent.serverId === "leader" || agent.serverId.startsWith("leader@") ? t("activity:agentOffice.leadAgent") : t("activity:agentOffice.agent")) }),
|
|
70119
70294
|
/* @__PURE__ */ jsxs205("div", { className: "agent-office__agent-meta", children: [
|
|
70120
70295
|
/* @__PURE__ */ jsx215("span", { children: client2.branch ? `\u2387 ${client2.branch}` : client2.type.toUpperCase() }),
|
|
@@ -70253,6 +70428,55 @@ function AgentLane({
|
|
|
70253
70428
|
},
|
|
70254
70429
|
`tool:${call.id}`
|
|
70255
70430
|
)) : /* @__PURE__ */ jsx215("span", { className: "agent-office__history-empty", children: agent.toolCalls > 0 && agent.recentTools === void 0 && agent.activity === void 0 ? t("activity:agentOffice.telemetryReconnect") : t("activity:agentOffice.noCalls") }) })
|
|
70431
|
+
] }),
|
|
70432
|
+
/* @__PURE__ */ jsxs205("div", { className: "agent-office__desk-metrics", children: [
|
|
70433
|
+
/* @__PURE__ */ jsxs205(
|
|
70434
|
+
"span",
|
|
70435
|
+
{
|
|
70436
|
+
className: "agent-office__metric",
|
|
70437
|
+
title: `${t("activity:agentOffice.tokens")}: in ${fmtTok(agent.tokensIn)} / out ${fmtTok(agent.tokensOut)}`,
|
|
70438
|
+
children: [
|
|
70439
|
+
/* @__PURE__ */ jsx215("strong", { children: fmtTok(agent.tokensIn + agent.tokensOut) }),
|
|
70440
|
+
/* @__PURE__ */ jsx215("small", { children: "TOK" })
|
|
70441
|
+
]
|
|
70442
|
+
}
|
|
70443
|
+
),
|
|
70444
|
+
/* @__PURE__ */ jsxs205("span", { className: "agent-office__metric", title: t("activity:agentOffice.cost"), children: [
|
|
70445
|
+
/* @__PURE__ */ jsx215("strong", { children: fmtCost(agent.costUsd) }),
|
|
70446
|
+
/* @__PURE__ */ jsx215("small", { children: "COST" })
|
|
70447
|
+
] }),
|
|
70448
|
+
/* @__PURE__ */ jsxs205(
|
|
70449
|
+
"span",
|
|
70450
|
+
{
|
|
70451
|
+
className: "agent-office__metric",
|
|
70452
|
+
title: t("activity:agentOffice.contextUsed"),
|
|
70453
|
+
children: [
|
|
70454
|
+
/* @__PURE__ */ jsx215("strong", { children: agent.ctxPct !== void 0 ? `${Math.round(agent.ctxPct)}%` : "\u2014" }),
|
|
70455
|
+
/* @__PURE__ */ jsx215("small", { children: "CTX" }),
|
|
70456
|
+
agent.ctxPct !== void 0 && /* @__PURE__ */ jsx215(
|
|
70457
|
+
"i",
|
|
70458
|
+
{
|
|
70459
|
+
className: cn(
|
|
70460
|
+
"agent-office__ctx-bar",
|
|
70461
|
+
agent.ctxPct >= 80 && "is-high"
|
|
70462
|
+
),
|
|
70463
|
+
children: /* @__PURE__ */ jsx215("b", { style: { width: `${Math.min(100, Math.max(0, agent.ctxPct))}%` } })
|
|
70464
|
+
}
|
|
70465
|
+
)
|
|
70466
|
+
]
|
|
70467
|
+
}
|
|
70468
|
+
),
|
|
70469
|
+
/* @__PURE__ */ jsxs205(
|
|
70470
|
+
"span",
|
|
70471
|
+
{
|
|
70472
|
+
className: "agent-office__metric agent-office__metric-action",
|
|
70473
|
+
title: actionLine,
|
|
70474
|
+
children: [
|
|
70475
|
+
/* @__PURE__ */ jsx215(Activity20, { "aria-hidden": "true" }),
|
|
70476
|
+
/* @__PURE__ */ jsx215("small", { children: actionLine })
|
|
70477
|
+
]
|
|
70478
|
+
}
|
|
70479
|
+
)
|
|
70256
70480
|
] })
|
|
70257
70481
|
]
|
|
70258
70482
|
}
|
|
@@ -70512,6 +70736,7 @@ var init_AgentOfficeView2 = __esm({
|
|
|
70512
70736
|
"src/components/AgentOfficeView.tsx"() {
|
|
70513
70737
|
"use strict";
|
|
70514
70738
|
init_i18n();
|
|
70739
|
+
init_agent_status();
|
|
70515
70740
|
init_agent_office();
|
|
70516
70741
|
init_utils();
|
|
70517
70742
|
init_stores();
|
|
@@ -70524,7 +70749,7 @@ var init_AgentOfficeView2 = __esm({
|
|
|
70524
70749
|
});
|
|
70525
70750
|
|
|
70526
70751
|
// src/components/WatchMessageBubble.tsx
|
|
70527
|
-
import { AlertCircle as AlertCircle4, Bot as Bot20, Clock as
|
|
70752
|
+
import { AlertCircle as AlertCircle4, Bot as Bot20, Clock as Clock17, Terminal as Terminal9, User as User4 } from "lucide-react";
|
|
70528
70753
|
import remarkGfm3 from "remark-gfm";
|
|
70529
70754
|
import { jsx as jsx216, jsxs as jsxs206 } from "react/jsx-runtime";
|
|
70530
70755
|
function fmtDuration5(durationMs) {
|
|
@@ -70546,7 +70771,7 @@ function WatchBubbleContent({ entry }) {
|
|
|
70546
70771
|
/* @__PURE__ */ jsx216(Terminal9, { className: "h-3 w-3" }),
|
|
70547
70772
|
/* @__PURE__ */ jsx216("span", { className: "font-mono", children: entry.tool ?? t("activity:watch.toolFallback") }),
|
|
70548
70773
|
entry.durationMs !== void 0 && /* @__PURE__ */ jsxs206("span", { className: "ml-auto text-[10px] text-muted-foreground font-normal tabular-nums", children: [
|
|
70549
|
-
/* @__PURE__ */ jsx216(
|
|
70774
|
+
/* @__PURE__ */ jsx216(Clock17, { className: "h-3 w-3 inline mr-0.5 align-text-bottom" }),
|
|
70550
70775
|
fmtDuration5(entry.durationMs)
|
|
70551
70776
|
] })
|
|
70552
70777
|
] }),
|
|
@@ -78817,7 +79042,7 @@ import {
|
|
|
78817
79042
|
Activity as Activity24,
|
|
78818
79043
|
ArrowLeft as ArrowLeft8,
|
|
78819
79044
|
Check as Check38,
|
|
78820
|
-
Clock as
|
|
79045
|
+
Clock as Clock18,
|
|
78821
79046
|
FileText as FileText19,
|
|
78822
79047
|
GitBranch as GitBranch17,
|
|
78823
79048
|
Maximize2 as Maximize26,
|
|
@@ -78962,7 +79187,7 @@ function SddTaskDrawer({
|
|
|
78962
79187
|
/* @__PURE__ */ jsx249(Meta, { label: t("activity:sddTask.metaPriority"), children: /* @__PURE__ */ jsx249("span", { className: cn("font-medium uppercase", priorityStyle(task.priority).text), children: task.priority }) }),
|
|
78963
79188
|
/* @__PURE__ */ jsx249(Meta, { label: t("activity:sddTask.metaType"), children: task.type }),
|
|
78964
79189
|
elapsed && /* @__PURE__ */ jsx249(Meta, { label: task.completedAt ? t("activity:sddTask.metaDuration") : t("activity:sddTask.metaElapsed"), children: /* @__PURE__ */ jsxs239("span", { className: "flex items-center gap-1", children: [
|
|
78965
|
-
/* @__PURE__ */ jsx249(
|
|
79190
|
+
/* @__PURE__ */ jsx249(Clock18, { className: "h-3 w-3 text-muted-foreground" }),
|
|
78966
79191
|
elapsed
|
|
78967
79192
|
] }) }),
|
|
78968
79193
|
task.retries ? /* @__PURE__ */ jsx249(Meta, { label: t("activity:sddTask.metaRetries"), children: /* @__PURE__ */ jsxs239("span", { className: "flex items-center gap-1 text-destructive", children: [
|
|
@@ -80700,7 +80925,7 @@ import {
|
|
|
80700
80925
|
CheckCircle2 as CheckCircle229,
|
|
80701
80926
|
ChevronRight as ChevronRight25,
|
|
80702
80927
|
Circle as Circle11,
|
|
80703
|
-
Clock as
|
|
80928
|
+
Clock as Clock19,
|
|
80704
80929
|
Loader2 as Loader245,
|
|
80705
80930
|
Lock as Lock4,
|
|
80706
80931
|
RotateCcw as RotateCcw18,
|
|
@@ -80783,7 +81008,7 @@ var init_DependencyGraph = __esm({
|
|
|
80783
81008
|
STATUS2 = {
|
|
80784
81009
|
completed: { icon: /* @__PURE__ */ jsx252(CheckCircle229, { className: "h-3.5 w-3.5" }), text: "text-success", ring: "border-success/35" },
|
|
80785
81010
|
in_progress: { icon: /* @__PURE__ */ jsx252(Loader245, { className: "h-3.5 w-3.5 animate-spin" }), text: "text-primary", ring: "border-primary/45" },
|
|
80786
|
-
queued: { icon: /* @__PURE__ */ jsx252(
|
|
81011
|
+
queued: { icon: /* @__PURE__ */ jsx252(Clock19, { className: "h-3.5 w-3.5" }), text: "text-warning", ring: "border-warning/35" },
|
|
80787
81012
|
blocked: { icon: /* @__PURE__ */ jsx252(Lock4, { className: "h-3.5 w-3.5" }), text: "text-destructive", ring: "border-destructive/30" },
|
|
80788
81013
|
pending: { icon: /* @__PURE__ */ jsx252(Circle11, { className: "h-3.5 w-3.5" }), text: "text-muted-foreground", ring: "border-border/70" },
|
|
80789
81014
|
review: { icon: /* @__PURE__ */ jsx252(RotateCcw18, { className: "h-3.5 w-3.5" }), text: "text-primary", ring: "border-primary/35" },
|
|
@@ -81921,7 +82146,7 @@ import {
|
|
|
81921
82146
|
Activity as Activity27,
|
|
81922
82147
|
AlertCircle as AlertCircle5,
|
|
81923
82148
|
CheckCircle2 as CheckCircle231,
|
|
81924
|
-
Clock as
|
|
82149
|
+
Clock as Clock20,
|
|
81925
82150
|
Cpu as Cpu21,
|
|
81926
82151
|
FolderGit2,
|
|
81927
82152
|
History as HistoryIcon2,
|
|
@@ -81962,7 +82187,7 @@ function agentMeta(status) {
|
|
|
81962
82187
|
};
|
|
81963
82188
|
case "waiting_user":
|
|
81964
82189
|
return {
|
|
81965
|
-
icon: /* @__PURE__ */ jsx256(
|
|
82190
|
+
icon: /* @__PURE__ */ jsx256(Clock20, { className: "h-3.5 w-3.5" }),
|
|
81966
82191
|
cls: "text-warning"
|
|
81967
82192
|
};
|
|
81968
82193
|
case "error":
|
|
@@ -81998,7 +82223,7 @@ function sessionMeta(status) {
|
|
|
81998
82223
|
};
|
|
81999
82224
|
case "closing":
|
|
82000
82225
|
return {
|
|
82001
|
-
icon: /* @__PURE__ */ jsx256(
|
|
82226
|
+
icon: /* @__PURE__ */ jsx256(Clock20, { className: "h-3.5 w-3.5" }),
|
|
82002
82227
|
cls: "text-warning",
|
|
82003
82228
|
badge: "border-warning/25 bg-warning/10 text-warning"
|
|
82004
82229
|
};
|
|
@@ -82260,7 +82485,7 @@ function LiveSessionsDashboard() {
|
|
|
82260
82485
|
/* @__PURE__ */ jsx256("span", { className: "truncate font-mono", children: s.gitBranch })
|
|
82261
82486
|
] }) : null,
|
|
82262
82487
|
/* @__PURE__ */ jsxs246("span", { className: "inline-flex items-center gap-1", children: [
|
|
82263
|
-
/* @__PURE__ */ jsx256(
|
|
82488
|
+
/* @__PURE__ */ jsx256(Clock20, { className: "h-3.5 w-3.5" }),
|
|
82264
82489
|
fmtDuration6(s.startedAt)
|
|
82265
82490
|
] }),
|
|
82266
82491
|
/* @__PURE__ */ jsx256("span", { className: "font-mono", children: t("activity:liveSessions.pidLabel", { pid: s.pid }) })
|
|
@@ -87305,7 +87530,7 @@ var CronJobsPanel_exports = {};
|
|
|
87305
87530
|
__export(CronJobsPanel_exports, {
|
|
87306
87531
|
CronJobsPanel: () => CronJobsPanel
|
|
87307
87532
|
});
|
|
87308
|
-
import { Clock as
|
|
87533
|
+
import { Clock as Clock21, PauseCircle as PauseCircle2, PlayCircle, RotateCw as RotateCw8 } from "lucide-react";
|
|
87309
87534
|
import { useCallback as useCallback82 } from "react";
|
|
87310
87535
|
import { jsx as jsx271, jsxs as jsxs261 } from "react/jsx-runtime";
|
|
87311
87536
|
function fmtInterval(ms) {
|
|
@@ -87343,7 +87568,7 @@ function StatusBadge3({ enabled, overdue }) {
|
|
|
87343
87568
|
t("activity:cronJobs.statusDisabled")
|
|
87344
87569
|
] });
|
|
87345
87570
|
if (overdue) return /* @__PURE__ */ jsxs261(Badge, { variant: "destructive", className: "gap-1", children: [
|
|
87346
|
-
/* @__PURE__ */ jsx271(
|
|
87571
|
+
/* @__PURE__ */ jsx271(Clock21, { className: "h-3 w-3" }),
|
|
87347
87572
|
t("activity:cronJobs.statusOverdue")
|
|
87348
87573
|
] });
|
|
87349
87574
|
return /* @__PURE__ */ jsxs261(Badge, { variant: "outline", className: "gap-1 border-success/30 bg-success/10 text-success", children: [
|
|
@@ -87385,7 +87610,7 @@ function CronJobsPanel({ open, onClose }) {
|
|
|
87385
87610
|
/* @__PURE__ */ jsx271("span", { className: "text-muted-foreground/60", children: t("activity:cronJobs.maxConcurrent", { count: maxConcurrent }) })
|
|
87386
87611
|
] }),
|
|
87387
87612
|
count === 0 && /* @__PURE__ */ jsxs261("div", { className: "flex flex-col items-center gap-2 py-12 text-muted-foreground", children: [
|
|
87388
|
-
/* @__PURE__ */ jsx271(
|
|
87613
|
+
/* @__PURE__ */ jsx271(Clock21, { className: "h-8 w-8 opacity-40" }),
|
|
87389
87614
|
/* @__PURE__ */ jsx271("p", { className: "text-sm", children: t("activity:cronJobs.emptyTitle") }),
|
|
87390
87615
|
/* @__PURE__ */ jsxs261("p", { className: "text-xs", children: [
|
|
87391
87616
|
t("activity:cronJobs.emptyUse"),
|
|
@@ -91745,10 +91970,7 @@ function pickToolIcon(toolName) {
|
|
|
91745
91970
|
if (/fetch|http|web|curl|request/i.test(toolName)) return Globe2;
|
|
91746
91971
|
return Wrench4;
|
|
91747
91972
|
}
|
|
91748
|
-
function SmartInputPreview({
|
|
91749
|
-
toolName,
|
|
91750
|
-
input
|
|
91751
|
-
}) {
|
|
91973
|
+
function SmartInputPreview({ toolName, input }) {
|
|
91752
91974
|
const { t } = useTranslation();
|
|
91753
91975
|
const diff = diffFromToolInput(toolName, input);
|
|
91754
91976
|
if (diff) {
|
|
@@ -91758,12 +91980,17 @@ function SmartInputPreview({
|
|
|
91758
91980
|
const obj = input;
|
|
91759
91981
|
const cmd = obj.command ?? obj.cmd ?? obj.script;
|
|
91760
91982
|
if (typeof cmd === "string" && cmd.trim().length > 0) {
|
|
91983
|
+
const consumed = /* @__PURE__ */ new Set(["command", "cmd", "script"]);
|
|
91984
|
+
const rest = Object.entries(obj).filter(
|
|
91985
|
+
([k, v]) => !consumed.has(k) && v !== void 0 && v !== null && v !== ""
|
|
91986
|
+
);
|
|
91761
91987
|
return /* @__PURE__ */ jsxs21("div", { className: "rounded-lg border bg-background/40 overflow-hidden", children: [
|
|
91762
91988
|
/* @__PURE__ */ jsxs21("div", { className: "px-3 py-1.5 text-[10px] uppercase tracking-wider text-muted-foreground border-b bg-muted/40 flex items-center gap-1.5", children: [
|
|
91763
91989
|
/* @__PURE__ */ jsx26(Terminal2, { className: "h-3 w-3" }),
|
|
91764
91990
|
/* @__PURE__ */ jsx26("span", { children: t("confirm.command") })
|
|
91765
91991
|
] }),
|
|
91766
|
-
/* @__PURE__ */ jsx26("pre", { className: "px-3 py-2 text-xs font-mono whitespace-pre-wrap break-all max-h-40 overflow-auto", children: cmd })
|
|
91992
|
+
/* @__PURE__ */ jsx26("pre", { className: "px-3 py-2 text-xs font-mono whitespace-pre-wrap break-all max-h-40 overflow-auto", children: cmd }),
|
|
91993
|
+
rest.length > 0 && /* @__PURE__ */ jsx26("pre", { className: "px-3 py-2 text-xs font-mono whitespace-pre-wrap break-all max-h-40 overflow-auto border-t bg-muted/20", children: rest.map(([k, v]) => `${k}: ${typeof v === "string" ? v : JSON.stringify(v)}`).join("\n") })
|
|
91767
91994
|
] });
|
|
91768
91995
|
}
|
|
91769
91996
|
const url = obj.url;
|
|
@@ -91959,19 +92186,11 @@ function ConfirmDialog() {
|
|
|
91959
92186
|
]
|
|
91960
92187
|
}
|
|
91961
92188
|
),
|
|
91962
|
-
/* @__PURE__ */ jsxs21(
|
|
91963
|
-
|
|
91964
|
-
|
|
91965
|
-
|
|
91966
|
-
|
|
91967
|
-
title: t("confirm.yesTitle"),
|
|
91968
|
-
children: [
|
|
91969
|
-
t("action.yes"),
|
|
91970
|
-
" ",
|
|
91971
|
-
/* @__PURE__ */ jsx26("kbd", { className: "ml-1 text-[10px] border rounded px-1 bg-background/80", children: "y" })
|
|
91972
|
-
]
|
|
91973
|
-
}
|
|
91974
|
-
)
|
|
92189
|
+
/* @__PURE__ */ jsxs21(Button, { size: "sm", onClick: () => handleConfirm("yes"), title: t("confirm.yesTitle"), children: [
|
|
92190
|
+
t("action.yes"),
|
|
92191
|
+
" ",
|
|
92192
|
+
/* @__PURE__ */ jsx26("kbd", { className: "ml-1 text-[10px] border rounded px-1 bg-background/80", children: "y" })
|
|
92193
|
+
] })
|
|
91975
92194
|
] })
|
|
91976
92195
|
]
|
|
91977
92196
|
}
|
|
@@ -97234,7 +97453,7 @@ function Banner({ ok, children }) {
|
|
|
97234
97453
|
init_utils();
|
|
97235
97454
|
init_i18n();
|
|
97236
97455
|
init_stores();
|
|
97237
|
-
import { Activity as Activity3, Bot as Bot5, Cpu as Cpu6, Users as Users3, Zap as Zap8 } from "lucide-react";
|
|
97456
|
+
import { Activity as Activity3, Bot as Bot5, Clock3, Cpu as Cpu6, Users as Users3, Zap as Zap8 } from "lucide-react";
|
|
97238
97457
|
import { useShallow as useShallow4 } from "zustand/react/shallow";
|
|
97239
97458
|
import { jsx as jsx46, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
97240
97459
|
function Toggle({
|
|
@@ -97287,12 +97506,14 @@ function OfficeMapSettingsPanel() {
|
|
|
97287
97506
|
showControls,
|
|
97288
97507
|
animateEdges,
|
|
97289
97508
|
background,
|
|
97509
|
+
waitThresholdMs,
|
|
97290
97510
|
setShowHud,
|
|
97291
97511
|
setShowLegend,
|
|
97292
97512
|
setShowMinimap,
|
|
97293
97513
|
setShowControls,
|
|
97294
97514
|
setAnimateEdges,
|
|
97295
|
-
setBackground
|
|
97515
|
+
setBackground,
|
|
97516
|
+
setWaitThresholdMs
|
|
97296
97517
|
} = useOfficeMapStore(
|
|
97297
97518
|
useShallow4((s) => ({
|
|
97298
97519
|
showHud: s.showHud,
|
|
@@ -97301,12 +97522,14 @@ function OfficeMapSettingsPanel() {
|
|
|
97301
97522
|
showControls: s.showControls,
|
|
97302
97523
|
animateEdges: s.animateEdges,
|
|
97303
97524
|
background: s.background,
|
|
97525
|
+
waitThresholdMs: s.waitThresholdMs,
|
|
97304
97526
|
setShowHud: s.setShowHud,
|
|
97305
97527
|
setShowLegend: s.setShowLegend,
|
|
97306
97528
|
setShowMinimap: s.setShowMinimap,
|
|
97307
97529
|
setShowControls: s.setShowControls,
|
|
97308
97530
|
setAnimateEdges: s.setAnimateEdges,
|
|
97309
|
-
setBackground: s.setBackground
|
|
97531
|
+
setBackground: s.setBackground,
|
|
97532
|
+
setWaitThresholdMs: s.setWaitThresholdMs
|
|
97310
97533
|
}))
|
|
97311
97534
|
);
|
|
97312
97535
|
const { clientCounts, currentSession, totalAgents, activeAgents } = useMonitorStore(
|
|
@@ -97396,9 +97619,33 @@ function OfficeMapSettingsPanel() {
|
|
|
97396
97619
|
},
|
|
97397
97620
|
b.value
|
|
97398
97621
|
)) })
|
|
97622
|
+
] }),
|
|
97623
|
+
/* @__PURE__ */ jsxs41("div", { children: [
|
|
97624
|
+
/* @__PURE__ */ jsxs41("div", { className: "flex items-center gap-1.5 mb-1.5 px-2 text-xs font-semibold text-muted-foreground uppercase tracking-wide", children: [
|
|
97625
|
+
/* @__PURE__ */ jsx46(Clock3, { className: "h-3 w-3" }),
|
|
97626
|
+
t("activity:officeMap.waitThresholdHeading")
|
|
97627
|
+
] }),
|
|
97628
|
+
/* @__PURE__ */ jsx46("p", { className: "mb-1.5 px-2 text-[11px] text-muted-foreground", children: t("activity:officeMap.waitThresholdHint") }),
|
|
97629
|
+
/* @__PURE__ */ jsx46("div", { className: "flex flex-wrap gap-1 px-2", children: WAIT_THRESHOLD_PRESETS.map((ms) => /* @__PURE__ */ jsx46(
|
|
97630
|
+
"button",
|
|
97631
|
+
{
|
|
97632
|
+
type: "button",
|
|
97633
|
+
onClick: () => setWaitThresholdMs(ms),
|
|
97634
|
+
className: cn(
|
|
97635
|
+
"px-2 py-1 text-xs rounded transition-colors font-mono",
|
|
97636
|
+
waitThresholdMs === ms ? "bg-primary text-primary-foreground" : "bg-muted text-muted-foreground hover:bg-accent"
|
|
97637
|
+
),
|
|
97638
|
+
children: formatThreshold(ms)
|
|
97639
|
+
},
|
|
97640
|
+
ms
|
|
97641
|
+
)) })
|
|
97399
97642
|
] })
|
|
97400
97643
|
] });
|
|
97401
97644
|
}
|
|
97645
|
+
function formatThreshold(ms) {
|
|
97646
|
+
const seconds = ms / 1e3;
|
|
97647
|
+
return seconds % 60 === 0 && seconds >= 60 ? `${seconds / 60}m` : `${seconds}s`;
|
|
97648
|
+
}
|
|
97402
97649
|
|
|
97403
97650
|
// src/components/SidePanel/AgentsPanel.tsx
|
|
97404
97651
|
init_utils();
|
|
@@ -99330,7 +99577,7 @@ init_i18n();
|
|
|
99330
99577
|
init_utils();
|
|
99331
99578
|
init_ws_client();
|
|
99332
99579
|
init_stores();
|
|
99333
|
-
import { CheckCircle2 as CheckCircle27, Circle as Circle5, Clock as
|
|
99580
|
+
import { CheckCircle2 as CheckCircle27, Circle as Circle5, Clock as Clock4, Trash2 as Trash26 } from "lucide-react";
|
|
99334
99581
|
import { useCallback as useCallback15, useEffect as useEffect39, useState as useState31 } from "react";
|
|
99335
99582
|
import { jsx as jsx55, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
99336
99583
|
var STATUS_ORDER = {
|
|
@@ -99399,7 +99646,7 @@ function TodosPanel() {
|
|
|
99399
99646
|
onClick: () => handleToggle(todo)
|
|
99400
99647
|
}
|
|
99401
99648
|
),
|
|
99402
|
-
/* @__PURE__ */ jsx55("span", { className: "pointer-events-none relative mt-0.5 shrink-0", children: isCompleted ? /* @__PURE__ */ jsx55(CheckCircle27, { className: "w-3.5 h-3.5 text-success" }) : isInProgress ? /* @__PURE__ */ jsx55(
|
|
99649
|
+
/* @__PURE__ */ jsx55("span", { className: "pointer-events-none relative mt-0.5 shrink-0", children: isCompleted ? /* @__PURE__ */ jsx55(CheckCircle27, { className: "w-3.5 h-3.5 text-success" }) : isInProgress ? /* @__PURE__ */ jsx55(Clock4, { className: "w-3.5 h-3.5 text-warning animate-spin" }) : /* @__PURE__ */ jsx55(
|
|
99403
99650
|
Circle5,
|
|
99404
99651
|
{
|
|
99405
99652
|
className: cn(
|
|
@@ -99472,12 +99719,12 @@ function TodosPanel() {
|
|
|
99472
99719
|
init_ws_client();
|
|
99473
99720
|
init_utils();
|
|
99474
99721
|
init_i18n();
|
|
99475
|
-
import { CheckCircle2 as CheckCircle28, Circle as Circle6, Clock as
|
|
99722
|
+
import { CheckCircle2 as CheckCircle28, Circle as Circle6, Clock as Clock5, Pause as Pause3, XCircle as XCircle3, RotateCcw as RotateCcw4 } from "lucide-react";
|
|
99476
99723
|
import { useCallback as useCallback16, useEffect as useEffect40, useRef as useRef13, useState as useState32 } from "react";
|
|
99477
99724
|
import { jsx as jsx56, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
99478
99725
|
var STATUS_CONFIG = {
|
|
99479
99726
|
pending: { icon: /* @__PURE__ */ jsx56(Circle6, { className: "w-3.5 h-3.5" }), labelKey: "statusPending", color: "text-muted-foreground/70" },
|
|
99480
|
-
in_progress: { icon: /* @__PURE__ */ jsx56(
|
|
99727
|
+
in_progress: { icon: /* @__PURE__ */ jsx56(Clock5, { className: "w-3.5 h-3.5 animate-spin" }), labelKey: "statusInProgress", color: "text-warning" },
|
|
99481
99728
|
blocked: { icon: /* @__PURE__ */ jsx56(Pause3, { className: "w-3.5 h-3.5" }), labelKey: "statusBlocked", color: "text-warning" },
|
|
99482
99729
|
failed: { icon: /* @__PURE__ */ jsx56(XCircle3, { className: "w-3.5 h-3.5" }), labelKey: "statusFailed", color: "text-destructive" },
|
|
99483
99730
|
review: { icon: /* @__PURE__ */ jsx56(RotateCcw4, { className: "w-3.5 h-3.5" }), labelKey: "statusReview", color: "text-info" },
|
|
@@ -99648,12 +99895,12 @@ function TasksPanel() {
|
|
|
99648
99895
|
init_ws_client();
|
|
99649
99896
|
init_utils();
|
|
99650
99897
|
init_i18n();
|
|
99651
|
-
import { CheckCircle2 as CheckCircle29, Circle as Circle7, Clock as
|
|
99898
|
+
import { CheckCircle2 as CheckCircle29, Circle as Circle7, Clock as Clock6 } from "lucide-react";
|
|
99652
99899
|
import { useCallback as useCallback17, useEffect as useEffect41, useRef as useRef14, useState as useState33 } from "react";
|
|
99653
99900
|
import { jsx as jsx57, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
99654
99901
|
var STATUS_CONFIG2 = {
|
|
99655
99902
|
open: { icon: /* @__PURE__ */ jsx57(Circle7, { className: "w-3.5 h-3.5" }), labelKey: "statusOpen", color: "text-muted-foreground/70" },
|
|
99656
|
-
in_progress: { icon: /* @__PURE__ */ jsx57(
|
|
99903
|
+
in_progress: { icon: /* @__PURE__ */ jsx57(Clock6, { className: "w-3.5 h-3.5 animate-spin" }), labelKey: "statusInProgress", color: "text-warning" },
|
|
99657
99904
|
done: { icon: /* @__PURE__ */ jsx57(CheckCircle29, { className: "w-3.5 h-3.5" }), labelKey: "statusDone", color: "text-success" }
|
|
99658
99905
|
};
|
|
99659
99906
|
function PlanPanel() {
|
|
@@ -100201,7 +100448,7 @@ import { VList as VList2 } from "virtua";
|
|
|
100201
100448
|
init_i18n();
|
|
100202
100449
|
init_memory_injector_store();
|
|
100203
100450
|
init_utils();
|
|
100204
|
-
import { Activity as Activity4, Brain as Brain3, Clock as
|
|
100451
|
+
import { Activity as Activity4, Brain as Brain3, Clock as Clock7, PanelRightClose, Tag } from "lucide-react";
|
|
100205
100452
|
import { memo as memo4, useEffect as useEffect44 } from "react";
|
|
100206
100453
|
import { Fragment as Fragment12, jsx as jsx63, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
100207
100454
|
function formatTime3(at) {
|
|
@@ -100355,7 +100602,7 @@ var MemoryInjectorPanel = memo4(function MemoryInjectorPanel2({
|
|
|
100355
100602
|
] })
|
|
100356
100603
|
] }),
|
|
100357
100604
|
/* @__PURE__ */ jsxs58("div", { className: "mt-1 flex items-center gap-2 text-[10px] text-muted-foreground/80", children: [
|
|
100358
|
-
/* @__PURE__ */ jsx63(
|
|
100605
|
+
/* @__PURE__ */ jsx63(Clock7, { className: "size-3" }),
|
|
100359
100606
|
/* @__PURE__ */ jsx63("span", { children: formatTime3(latest.at) }),
|
|
100360
100607
|
/* @__PURE__ */ jsx63("span", { className: "opacity-40", children: "\xB7" }),
|
|
100361
100608
|
/* @__PURE__ */ jsx63("span", { className: "font-mono", children: latest.trigger }),
|
|
@@ -100447,7 +100694,7 @@ var MemoryInjectorPanel = memo4(function MemoryInjectorPanel2({
|
|
|
100447
100694
|
className: "border-b border-border/30 px-4 py-2.5",
|
|
100448
100695
|
children: [
|
|
100449
100696
|
/* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-2 text-[11px] tabular-nums", children: [
|
|
100450
|
-
/* @__PURE__ */ jsx63(
|
|
100697
|
+
/* @__PURE__ */ jsx63(Clock7, { className: "size-3 text-muted-foreground/60" }),
|
|
100451
100698
|
/* @__PURE__ */ jsx63("span", { className: "text-muted-foreground", children: formatTime3(trace.at) }),
|
|
100452
100699
|
/* @__PURE__ */ jsx63("span", { className: "opacity-30", children: "\xB7" }),
|
|
100453
100700
|
/* @__PURE__ */ jsx63("span", { className: "font-mono text-foreground/80", children: trace.trigger }),
|
|
@@ -101610,7 +101857,7 @@ init_utils();
|
|
|
101610
101857
|
init_useWebSocket();
|
|
101611
101858
|
init_button();
|
|
101612
101859
|
import { useCallback as useCallback20, useEffect as useEffect50, useRef as useRef19, useState as useState41 } from "react";
|
|
101613
|
-
import { AlertTriangle as AlertTriangle9, Check as Check10, ClipboardCopy, Clock as
|
|
101860
|
+
import { AlertTriangle as AlertTriangle9, Check as Check10, ClipboardCopy, Clock as Clock8, Edit3, Globe as Globe3, Loader2 as Loader29, RotateCw as RotateCw4, Send as Send3, Sparkles as Sparkles7, X as X12, Zap as Zap11 } from "lucide-react";
|
|
101614
101861
|
import { Fragment as Fragment16, jsx as jsx72, jsxs as jsxs67 } from "react/jsx-runtime";
|
|
101615
101862
|
function RefinePanel({
|
|
101616
101863
|
original,
|
|
@@ -101778,7 +102025,7 @@ function RefinePanel({
|
|
|
101778
102025
|
return /* @__PURE__ */ jsxs67("div", { className: "rounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden animate-message", children: [
|
|
101779
102026
|
/* @__PURE__ */ jsxs67("div", { className: "flex items-center justify-between px-4 py-2 border-b bg-muted/30", children: [
|
|
101780
102027
|
/* @__PURE__ */ jsxs67("div", { className: "flex items-center gap-2", children: [
|
|
101781
|
-
/* @__PURE__ */ jsx72(
|
|
102028
|
+
/* @__PURE__ */ jsx72(Clock8, { className: "h-4 w-4 text-primary" }),
|
|
101782
102029
|
/* @__PURE__ */ jsx72("span", { className: "text-sm font-medium", children: t("activity:refine.countdownHeader") }),
|
|
101783
102030
|
preRefineCountdown > 0 && /* @__PURE__ */ jsx72("span", { className: "ml-1 inline-flex items-center justify-center min-w-5 h-5 px-1.5 rounded-full bg-primary/15 text-primary text-xs font-bold tabular-nums", children: preRefineCountdown })
|
|
101784
102031
|
] }),
|
|
@@ -103778,7 +104025,7 @@ init_i18n();
|
|
|
103778
104025
|
init_useWebSocket();
|
|
103779
104026
|
init_stores();
|
|
103780
104027
|
init_dialog();
|
|
103781
|
-
import { Clock as
|
|
104028
|
+
import { Clock as Clock9, History as History2, Rewind } from "lucide-react";
|
|
103782
104029
|
import { useCallback as useCallback22, useEffect as useEffect55, useRef as useRef22, useState as useState44 } from "react";
|
|
103783
104030
|
import { jsx as jsx77, jsxs as jsxs72 } from "react/jsx-runtime";
|
|
103784
104031
|
function mapCheckpoint(cp) {
|
|
@@ -103845,7 +104092,7 @@ function CheckpointTimeline({
|
|
|
103845
104092
|
] }) }),
|
|
103846
104093
|
/* @__PURE__ */ jsx77("div", { className: "border-b border-border/70 bg-muted/25 px-4 py-2.5 text-[10px] text-muted-foreground leading-relaxed", children: t("activity:checkpoint.description") }),
|
|
103847
104094
|
/* @__PURE__ */ jsx77("div", { className: "min-h-0 min-w-0 flex-1 overflow-y-auto overscroll-contain", children: checkpoints.length === 0 ? /* @__PURE__ */ jsxs72("div", { className: "flex flex-col items-center justify-center py-16 gap-3 text-muted-foreground", children: [
|
|
103848
|
-
/* @__PURE__ */ jsx77(
|
|
104095
|
+
/* @__PURE__ */ jsx77(Clock9, { className: "h-10 w-10 opacity-15" }),
|
|
103849
104096
|
/* @__PURE__ */ jsx77("p", { className: "text-sm font-medium", children: t("activity:checkpoint.emptyTitle") }),
|
|
103850
104097
|
/* @__PURE__ */ jsx77("p", { className: "text-xs text-center max-w-xs", children: t("activity:checkpoint.emptyBody") })
|
|
103851
104098
|
] }) : /* @__PURE__ */ jsx77("div", { className: "py-1", children: [...checkpoints].reverse().map((cp, i) => {
|
|
@@ -104144,7 +104391,7 @@ import {
|
|
|
104144
104391
|
CheckCircle2 as CheckCircle210,
|
|
104145
104392
|
ChevronDown as ChevronDown6,
|
|
104146
104393
|
ChevronRight as ChevronRight6,
|
|
104147
|
-
Clock as
|
|
104394
|
+
Clock as Clock10,
|
|
104148
104395
|
FileText as FileText5,
|
|
104149
104396
|
Loader2 as Loader210,
|
|
104150
104397
|
Trash2 as Trash28,
|
|
@@ -104584,7 +104831,7 @@ function ContextWindowEditor({ open, onClose }) {
|
|
|
104584
104831
|
] })
|
|
104585
104832
|
] }),
|
|
104586
104833
|
isLoading && /* @__PURE__ */ jsxs73("span", { className: "flex items-center gap-1 text-warning", children: [
|
|
104587
|
-
/* @__PURE__ */ jsx78(
|
|
104834
|
+
/* @__PURE__ */ jsx78(Clock10, { className: "h-3 w-3" }),
|
|
104588
104835
|
t("activity:ctxEditor.agentRunningApplyDisabled")
|
|
104589
104836
|
] })
|
|
104590
104837
|
] }),
|
|
@@ -106399,7 +106646,7 @@ init_i18n();
|
|
|
106399
106646
|
import {
|
|
106400
106647
|
ChevronDown as ChevronDown12,
|
|
106401
106648
|
ChevronRight as ChevronRight8,
|
|
106402
|
-
Clock as
|
|
106649
|
+
Clock as Clock11,
|
|
106403
106650
|
Download as Download5,
|
|
106404
106651
|
Loader2 as Loader211
|
|
106405
106652
|
} from "lucide-react";
|
|
@@ -106902,7 +107149,7 @@ var ToolLedgerCard = memo7(function ToolLedgerCard2({
|
|
|
106902
107149
|
expanded && /* @__PURE__ */ jsxs90("div", { className: "border-t border-border/40", children: [
|
|
106903
107150
|
message.toolInput !== void 0 && (diff ? /* @__PURE__ */ jsx96("div", { className: "p-2", children: /* @__PURE__ */ jsx96(ToolDiffView, { diff }) }) : /* @__PURE__ */ jsxs90("div", { className: "overflow-x-auto bg-muted/30 p-2.5", children: [
|
|
106904
107151
|
/* @__PURE__ */ jsxs90("div", { className: "mb-1.5 flex items-center gap-1 font-mono text-[10px] uppercase tracking-wide text-muted-foreground/70", children: [
|
|
106905
|
-
/* @__PURE__ */ jsx96(
|
|
107152
|
+
/* @__PURE__ */ jsx96(Clock11, { className: "h-3 w-3" }),
|
|
106906
107153
|
/* @__PURE__ */ jsx96("span", { children: t("activity:message.inputLabel") })
|
|
106907
107154
|
] }),
|
|
106908
107155
|
/* @__PURE__ */ jsx96(ToolInputView, { input: message.toolInput })
|
|
@@ -113644,7 +113891,7 @@ init_button();
|
|
|
113644
113891
|
import {
|
|
113645
113892
|
Brain as Brain9,
|
|
113646
113893
|
Check as Check19,
|
|
113647
|
-
Clock as
|
|
113894
|
+
Clock as Clock12,
|
|
113648
113895
|
DollarSign,
|
|
113649
113896
|
Eye as Eye3,
|
|
113650
113897
|
FileText as FileText9,
|
|
@@ -114317,7 +114564,7 @@ function ModelListEditor({
|
|
|
114317
114564
|
row.name && row.name !== row.modelId && /* @__PURE__ */ jsx135("span", { className: "text-[11px] text-muted-foreground", children: row.name })
|
|
114318
114565
|
] }) }),
|
|
114319
114566
|
/* @__PURE__ */ jsx135("td", { className: "px-3 py-2 text-xs text-muted-foreground", children: ctx2 ? /* @__PURE__ */ jsxs128("span", { className: "inline-flex items-center gap-1", children: [
|
|
114320
|
-
/* @__PURE__ */ jsx135(
|
|
114567
|
+
/* @__PURE__ */ jsx135(Clock12, { className: "h-3 w-3" }),
|
|
114321
114568
|
ctx2
|
|
114322
114569
|
] }) : /* @__PURE__ */ jsx135("span", { className: "text-muted-foreground/40", children: "\u2014" }) }),
|
|
114323
114570
|
/* @__PURE__ */ jsx135("td", { className: "px-3 py-2 text-xs text-muted-foreground", children: out ? /* @__PURE__ */ jsx135("span", { children: out }) : /* @__PURE__ */ jsx135("span", { className: "text-muted-foreground/40", children: "\u2014" }) }),
|