@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.
Files changed (89) hide show
  1. package/dist/assets/{AgentRosterView-CbgKjnxJ.js → AgentRosterView-CBiLW8dV.js} +1 -1
  2. package/dist/assets/{AnalyticsDashboard-BXnPG2xB.js → AnalyticsDashboard-Grpp3QKX.js} +1 -1
  3. package/dist/assets/{AudienceMemoryPanel-Ch-jf06O.js → AudienceMemoryPanel-DU3hUuUl.js} +1 -1
  4. package/dist/assets/{ChangesView-5lcal8q4.js → ChangesView-DOrw4udd.js} +1 -1
  5. package/dist/assets/ChronicleDashboard-DlCuQRB8.js +1 -0
  6. package/dist/assets/CodeEditor-CU6zP0r8.js +2 -0
  7. package/dist/assets/CodeMap-BkJqVDg2.js +1 -0
  8. package/dist/assets/{ConfirmModal-KzK0LoJw.js → ConfirmModal-BJOVE-JI.js} +1 -1
  9. package/dist/assets/{CronJobsPanel-aLru0Rd_.js → CronJobsPanel-B3UJP0mn.js} +1 -1
  10. package/dist/assets/{DeadCodeScanPanel-BXpB_M2Z.js → DeadCodeScanPanel-_iUu5-90.js} +1 -1
  11. package/dist/assets/{DebugDashboard-hnhGaWr-.js → DebugDashboard-NTiN0je2.js} +1 -1
  12. package/dist/assets/{DesignGalleryView-CXHgaI2Q.js → DesignGalleryView-BG2Nr8wy.js} +1 -1
  13. package/dist/assets/{GoalView-BB5t68cb.js → GoalView-Dakf9ZR8.js} +1 -1
  14. package/dist/assets/KanbanView-BR07PhbR.js +3 -0
  15. package/dist/assets/{MailboxDetailView-jPxF6ia3.js → MailboxDetailView-D31IhaK_.js} +1 -1
  16. package/dist/assets/{MemoryDrawer-e8UxQq-s.js → MemoryDrawer-6n0Etoz4.js} +1 -1
  17. package/dist/assets/MemoryManager-7DSVhxZf.js +1 -0
  18. package/dist/assets/{ModelPicker-nyXP3xsj.js → ModelPicker-C72kprRH.js} +1 -1
  19. package/dist/assets/OfficeMapPanel-Ce7myLNH.css +1 -0
  20. package/dist/assets/OfficeMapPanel-Dc8-4CiU.js +4 -0
  21. package/dist/assets/{ProcessMonitor-Epj6RrOA.js → ProcessMonitor-BGLc3yNM.js} +1 -1
  22. package/dist/assets/{PromptJournalView-CMlGmjig.js → PromptJournalView-CxDiqUkN.js} +1 -1
  23. package/dist/assets/{QueuePanel-D67eiPuQ.js → QueuePanel-B2f1HbN0.js} +1 -1
  24. package/dist/assets/{RefreshDebugView-CWAwHE9i.js → RefreshDebugView-D8F95QxF.js} +1 -1
  25. package/dist/assets/{RequirementIntakeView-DPj065HL.js → RequirementIntakeView-BRolSCpk.js} +1 -1
  26. package/dist/assets/{SageTabs-BtRa8OZC.js → SageTabs-DblSyqzB.js} +2 -2
  27. package/dist/assets/{SddFlowGraph-DMSN4LTZ.js → SddFlowGraph-YOPsSaFc.js} +1 -1
  28. package/dist/assets/SddHub-IusMUP2D.js +2 -0
  29. package/dist/assets/{SessionInspectView-BdlOiPzO.js → SessionInspectView-B633Bi0X.js} +1 -1
  30. package/dist/assets/SessionList-BCE6NSCu.js +1 -0
  31. package/dist/assets/{SessionsDashboard-BiR0zh-a.js → SessionsDashboard-N__p7_i5.js} +1 -1
  32. package/dist/assets/SetupScreen-B06asuJC.js +1 -0
  33. package/dist/assets/SkillDetailView-BxpQcgfh.js +3 -0
  34. package/dist/assets/{SpecsView-2PqHEXH9.js → SpecsView-Ddbow1sn.js} +1 -1
  35. package/dist/assets/TechStackView-HTZUTbuu.js +2 -0
  36. package/dist/assets/{TerminalPanel-CLUB8F2H.js → TerminalPanel-Bi3CmRvI.js} +1 -1
  37. package/dist/assets/{Toaster-BlD1m8P2.js → Toaster-COVFFUKo.js} +1 -1
  38. package/dist/assets/{activity-DYwBIByU.js → activity-7Sj9fdO-.js} +2 -2
  39. package/dist/assets/{activity-CA5G03Kw.js → activity-B-LcgiXm.js} +2 -2
  40. package/dist/assets/{activity-CezOSNBd.js → activity-B7hiQ_IX.js} +2 -2
  41. package/dist/assets/{activity-C6pIBHte.js → activity-Cq0Lqtgz.js} +2 -2
  42. package/dist/assets/{activity-CxnlCaZu.js → activity-DVuAYnoi.js} +2 -2
  43. package/dist/assets/{activity-l8lDAw8a.js → activity-Dt0RpmkN.js} +2 -2
  44. package/dist/assets/{activity-CkGBp_I-.js → activity-JmCi-KcX.js} +2 -2
  45. package/dist/assets/{button-DvpRpKkt.js → button-DAT5OnLL.js} +1 -1
  46. package/dist/assets/{chat-store-c0pGYczr.js → chat-store-CtIMb3sU.js} +1 -1
  47. package/dist/assets/{codemap-activity-store-BH7Mh4k9.js → codemap-activity-store-CA_14DHd.js} +1 -1
  48. package/dist/assets/codemap-index-store-BlPxA13l.js +1 -0
  49. package/dist/assets/{dialog-BJjDUqb3.js → dialog-BMrjwjA6.js} +1 -1
  50. package/dist/assets/{empty-state-Cefmzojx.js → empty-state-Bf05Z1d2.js} +1 -1
  51. package/dist/assets/{i18n-DbJfY4tY.js → i18n-CYYBUSJB.js} +2 -2
  52. package/dist/assets/{index-DQn-Lz9q.js → index-cUeJ0FkT.js} +55 -54
  53. package/dist/assets/{input-BtoHcCl9.js → input-Ccsxvwz6.js} +1 -1
  54. package/dist/assets/{mailbox-store-bF96Ih2G.js → mailbox-store-BWD7JeF9.js} +1 -1
  55. package/dist/assets/{markdown-CIRD7kOg.js → markdown-Kp5uSgOw.js} +23 -23
  56. package/dist/assets/{roster-ws-DycHs92J.js → roster-ws-lMIf13ag.js} +1 -1
  57. package/dist/assets/{session-store-CKdsROPD.js → session-store-D4PNeAGe.js} +1 -1
  58. package/dist/assets/{shared-B3czc2Dj.js → shared-Y6T3EEnd.js} +1 -1
  59. package/dist/assets/stores-BUtRik4k.js +7 -0
  60. package/dist/assets/{ui-store-xx1NssJI.js → ui-store-DxMnhARg.js} +1 -1
  61. package/dist/assets/useWebSocket-Ew1Bbjci.js +29 -0
  62. package/dist/assets/{utils-tsZEnrBH.js → utils-B5X3DKef.js} +1 -1
  63. package/dist/assets/{vector-memory-panel-C6iWDhkJ.js → vector-memory-panel-CnBqV6GK.js} +1 -1
  64. package/dist/assets/{vendor-C_zEzV4N.js → vendor-DLS502Zs.js} +3 -3
  65. package/dist/assets/{view-navigation-CZKugncK.js → view-navigation-Hd631M1W.js} +1 -1
  66. package/dist/assets/{ws-client-CBfMQmW9.js → ws-client-DYrfK01f.js} +1 -1
  67. package/dist/components/AgentOfficeView/model.d.ts +20 -0
  68. package/dist/components/AgentOfficeView.d.ts +10 -0
  69. package/dist/index.css +114 -7
  70. package/dist/index.html +22 -22
  71. package/dist/index.js +317 -70
  72. package/dist/stores/index.d.ts +1 -1
  73. package/dist/stores/office-map-store.d.ts +6 -0
  74. package/package.json +15 -15
  75. package/dist/assets/ChronicleDashboard-BH9k5NjB.js +0 -1
  76. package/dist/assets/CodeEditor-BrQMwzOp.js +0 -2
  77. package/dist/assets/CodeMap-B5e0v0jn.js +0 -1
  78. package/dist/assets/KanbanView-bZtgy3zZ.js +0 -3
  79. package/dist/assets/MemoryManager-BXYIA9wG.js +0 -1
  80. package/dist/assets/OfficeMapPanel-CBfE7Kli.js +0 -4
  81. package/dist/assets/OfficeMapPanel-D6yTfGIT.css +0 -1
  82. package/dist/assets/SddHub-CuqWpqSd.js +0 -2
  83. package/dist/assets/SessionList-CvvH8SI2.js +0 -1
  84. package/dist/assets/SetupScreen-B8s5fvr8.js +0 -1
  85. package/dist/assets/SkillDetailView-DbXp7-E5.js +0 -3
  86. package/dist/assets/TechStackView-Dnws9pc9.js +0 -2
  87. package/dist/assets/codemap-index-store-BFm1TzVW.js +0 -1
  88. package/dist/assets/stores-C0xX0jn4.js +0 -7
  89. 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 Clock12,
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(Clock12, { className: "h-3.5 w-3.5" }),
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 Clock13,
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(Clock13, { className: "w-4 h-4" }),
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: Clock13,
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: Clock13,
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 Clock14, Pause as Pause6, RotateCcw as RotateCcw10, UserCog, XCircle as XCircle8 } from "lucide-react";
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(Clock14, { className: "w-3 h-3 animate-spin", "aria-label": t("common:status.working") }),
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(Clock14, { className: "w-4 h-4 animate-spin" }), color: "text-primary" },
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 Clock15,
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(Clock15, { className: "h-3 w-3" }),
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(Clock15, { className: "h-3 w-3 shrink-0" }),
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 latestMailIsFresh = latestMail && now - latestMail.timestampMs < 3e4 && !routedMailIds?.has(latestMail.id);
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 Clock16, Terminal as Terminal9, User as User4 } from "lucide-react";
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(Clock16, { className: "h-3 w-3 inline mr-0.5 align-text-bottom" }),
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 Clock17,
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(Clock17, { className: "h-3 w-3 text-muted-foreground" }),
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 Clock18,
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(Clock18, { className: "h-3.5 w-3.5" }), text: "text-warning", ring: "border-warning/35" },
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 Clock19,
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(Clock19, { className: "h-3.5 w-3.5" }),
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(Clock19, { className: "h-3.5 w-3.5" }),
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(Clock19, { className: "h-3.5 w-3.5" }),
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 Clock20, PauseCircle as PauseCircle2, PlayCircle, RotateCw as RotateCw8 } from "lucide-react";
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(Clock20, { className: "h-3 w-3" }),
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(Clock20, { className: "h-8 w-8 opacity-40" }),
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
- Button,
91964
- {
91965
- size: "sm",
91966
- onClick: () => handleConfirm("yes"),
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 Clock3, Trash2 as Trash26 } from "lucide-react";
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(Clock3, { className: "w-3.5 h-3.5 text-warning animate-spin" }) : /* @__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 Clock4, Pause as Pause3, XCircle as XCircle3, RotateCcw as RotateCcw4 } from "lucide-react";
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(Clock4, { className: "w-3.5 h-3.5 animate-spin" }), labelKey: "statusInProgress", color: "text-warning" },
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 Clock5 } from "lucide-react";
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(Clock5, { className: "w-3.5 h-3.5 animate-spin" }), labelKey: "statusInProgress", color: "text-warning" },
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 Clock6, PanelRightClose, Tag } from "lucide-react";
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(Clock6, { className: "size-3" }),
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(Clock6, { className: "size-3 text-muted-foreground/60" }),
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 Clock7, 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";
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(Clock7, { className: "h-4 w-4 text-primary" }),
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 Clock8, History as History2, Rewind } from "lucide-react";
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(Clock8, { className: "h-10 w-10 opacity-15" }),
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 Clock9,
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(Clock9, { className: "h-3 w-3" }),
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 Clock10,
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(Clock10, { className: "h-3 w-3" }),
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 Clock11,
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(Clock11, { className: "h-3 w-3" }),
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" }) }),