@wrongstack/webui 0.308.7 → 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-z7sAuWGe.js → AgentRosterView-CBiLW8dV.js} +1 -1
- package/dist/assets/{AnalyticsDashboard-Ch1DX7tR.js → AnalyticsDashboard-Grpp3QKX.js} +1 -1
- package/dist/assets/{AudienceMemoryPanel-Cec0V4--.js → AudienceMemoryPanel-DU3hUuUl.js} +1 -1
- package/dist/assets/{ChangesView-CzvRJS2F.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-i2BGY0ev.js → ConfirmModal-BJOVE-JI.js} +1 -1
- package/dist/assets/{CronJobsPanel-D4VNa-Kl.js → CronJobsPanel-B3UJP0mn.js} +1 -1
- package/dist/assets/{DeadCodeScanPanel-DyV2LHm_.js → DeadCodeScanPanel-_iUu5-90.js} +1 -1
- package/dist/assets/{DebugDashboard-C_T68C0f.js → DebugDashboard-NTiN0je2.js} +1 -1
- package/dist/assets/{DesignGalleryView-CVmV-AU2.js → DesignGalleryView-BG2Nr8wy.js} +1 -1
- package/dist/assets/{GoalView-DQa9PklT.js → GoalView-Dakf9ZR8.js} +1 -1
- package/dist/assets/KanbanView-BR07PhbR.js +3 -0
- package/dist/assets/{MailboxDetailView-D7aRTWS8.js → MailboxDetailView-D31IhaK_.js} +1 -1
- package/dist/assets/{MemoryDrawer-Bivx9AXj.js → MemoryDrawer-6n0Etoz4.js} +1 -1
- package/dist/assets/MemoryManager-7DSVhxZf.js +1 -0
- package/dist/assets/{ModelPicker-MpC6-gWQ.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-C8GH1q2B.js → ProcessMonitor-BGLc3yNM.js} +1 -1
- package/dist/assets/{PromptJournalView-BdOYPAjU.js → PromptJournalView-CxDiqUkN.js} +1 -1
- package/dist/assets/{QueuePanel-RBW9Sh9b.js → QueuePanel-B2f1HbN0.js} +1 -1
- package/dist/assets/{RefreshDebugView-1lZduXKE.js → RefreshDebugView-D8F95QxF.js} +1 -1
- package/dist/assets/{RequirementIntakeView-BtKuq_F4.js → RequirementIntakeView-BRolSCpk.js} +1 -1
- package/dist/assets/{SageTabs-D2_mTlcJ.js → SageTabs-DblSyqzB.js} +2 -2
- package/dist/assets/{SddFlowGraph-BdaItHkB.js → SddFlowGraph-YOPsSaFc.js} +1 -1
- package/dist/assets/SddHub-IusMUP2D.js +2 -0
- package/dist/assets/{SessionInspectView-xchxZrHA.js → SessionInspectView-B633Bi0X.js} +1 -1
- package/dist/assets/SessionList-BCE6NSCu.js +1 -0
- package/dist/assets/{SessionsDashboard-6QJsVGap.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-D-qbN6F5.js → SpecsView-Ddbow1sn.js} +1 -1
- package/dist/assets/TechStackView-HTZUTbuu.js +2 -0
- package/dist/assets/{TerminalPanel-DZs5mkPP.js → TerminalPanel-Bi3CmRvI.js} +1 -1
- package/dist/assets/{Toaster-ChF897Tc.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-DiD9Wcep.js → i18n-CYYBUSJB.js} +2 -2
- package/dist/assets/{index-Cnerffls.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-XgkT9mo8.js → roster-ws-lMIf13ag.js} +1 -1
- package/dist/assets/session-store-D4PNeAGe.js +1 -0
- package/dist/assets/settings-B36QpLU8.js +1 -0
- package/dist/assets/settings-B8Hgh9_X.js +1 -0
- package/dist/assets/settings-B8uABeWU.js +1 -0
- package/dist/assets/settings-CSwU_zzD.js +1 -0
- package/dist/assets/settings-DfID_cS9.js +1 -0
- package/dist/assets/{settings-BPT8LWkU.js → settings-FXJ8SsEh.js} +1 -1
- package/dist/assets/settings-RQKnX4dA.js +1 -0
- 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-BVq0hf0a.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 +23 -23
- package/dist/index.js +409 -101
- package/dist/stores/index.d.ts +1 -1
- package/dist/stores/office-map-store.d.ts +6 -0
- package/dist/stores/session-store.d.ts +7 -0
- package/dist/types/protocol-core.d.ts +4 -0
- package/package.json +15 -15
- package/dist/assets/ChronicleDashboard-Dc5cQH7A.js +0 -1
- package/dist/assets/CodeEditor-C1xScB5M.js +0 -2
- package/dist/assets/CodeMap-BMcY8qXe.js +0 -1
- package/dist/assets/KanbanView-CDp4gTML.js +0 -3
- package/dist/assets/MemoryManager-DOTxwo0l.js +0 -1
- package/dist/assets/OfficeMapPanel-D6yTfGIT.css +0 -1
- package/dist/assets/OfficeMapPanel-Q8nQfQVb.js +0 -4
- package/dist/assets/SddHub-DVO0JGWk.js +0 -2
- package/dist/assets/SessionList-2W7mKbcZ.js +0 -1
- package/dist/assets/SetupScreen-DM2KCb23.js +0 -1
- package/dist/assets/SkillDetailView-Cx2z8hyp.js +0 -3
- package/dist/assets/TechStackView-C7XFcAls.js +0 -2
- package/dist/assets/codemap-index-store-BFm1TzVW.js +0 -1
- package/dist/assets/session-store-BgiP4PnQ.js +0 -1
- package/dist/assets/settings-50uwXQIW.js +0 -1
- package/dist/assets/settings-BmJI-gam.js +0 -1
- package/dist/assets/settings-CqFe8Jtz.js +0 -1
- package/dist/assets/settings-DeM0wvCG.js +0 -1
- package/dist/assets/settings-DijFr-kZ.js +0 -1
- package/dist/assets/settings-L9mLQIIP.js +0 -1
- package/dist/assets/stores-CzgPPQlG.js +0 -7
- package/dist/assets/useWebSocket-DvMcAAgU.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",
|
|
@@ -4616,7 +4625,8 @@ var require_settings = __commonJS({
|
|
|
4616
4625
|
autonomyDelayMsLabel: "Auto-proceed delay",
|
|
4617
4626
|
autonomyDelayMsHint: "Milliseconds before the agent auto-proceeds in Auto mode. 0 = immediate.",
|
|
4618
4627
|
refineCountdownLabel: "Refine countdown",
|
|
4619
|
-
refineCountdownHint: "Grace period before the refined prompt auto-sends (milliseconds)."
|
|
4628
|
+
refineCountdownHint: "Grace period before the refined prompt auto-sends (milliseconds).",
|
|
4629
|
+
reasoningEffortModelSet: "levels offered by the active model"
|
|
4620
4630
|
},
|
|
4621
4631
|
execution: {
|
|
4622
4632
|
heading: "Execution",
|
|
@@ -6481,6 +6491,8 @@ var require_activity2 = __commonJS({
|
|
|
6481
6491
|
zoomControls: "Zoom-Steuerung",
|
|
6482
6492
|
animateWires: "Kabel animieren",
|
|
6483
6493
|
backgroundHeading: "Hintergrund",
|
|
6494
|
+
waitThresholdHeading: "Warteschwelle",
|
|
6495
|
+
waitThresholdHint: "Live-Schreibtisch nach so viel Stille als wartend markieren",
|
|
6484
6496
|
bgDots: "Punkte",
|
|
6485
6497
|
bgLines: "Linien",
|
|
6486
6498
|
bgCross: "Kreuz",
|
|
@@ -7221,6 +7233,13 @@ var require_activity2 = __commonJS({
|
|
|
7221
7233
|
syncWaiting: "Warten auf Synchronisierung",
|
|
7222
7234
|
todoTelemetryWaiting: "Terminal neu verbinden, um die Live-Aufgabenliste zu empfangen",
|
|
7223
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",
|
|
7224
7243
|
noPrompt: "In dieser Sitzung wurde noch kein Prompt empfangen",
|
|
7225
7244
|
activeTodos: "Aktive Aufgaben",
|
|
7226
7245
|
todoProgress: "{{done}}/{{total}} erledigt",
|
|
@@ -9511,7 +9530,8 @@ var require_settings2 = __commonJS({
|
|
|
9511
9530
|
autonomyDelayMsLabel: "Verz\xF6gerung der automatischen Fortsetzung",
|
|
9512
9531
|
autonomyDelayMsHint: "Millisekunden, bevor der Agent im Auto-Modus automatisch fortf\xE4hrt. 0 = sofort.",
|
|
9513
9532
|
refineCountdownLabel: "Verfeinerungs-Countdown",
|
|
9514
|
-
refineCountdownHint: "Gnadenfrist, bevor der verfeinerte Prompt automatisch gesendet wird (Millisekunden)."
|
|
9533
|
+
refineCountdownHint: "Gnadenfrist, bevor der verfeinerte Prompt automatisch gesendet wird (Millisekunden).",
|
|
9534
|
+
reasoningEffortModelSet: "Stufen des aktiven Modells"
|
|
9515
9535
|
},
|
|
9516
9536
|
execution: {
|
|
9517
9537
|
heading: "Ausf\xFChrung",
|
|
@@ -11376,6 +11396,8 @@ var require_activity3 = __commonJS({
|
|
|
11376
11396
|
zoomControls: "Controles de zoom",
|
|
11377
11397
|
animateWires: "Animar cables",
|
|
11378
11398
|
backgroundHeading: "Fondo",
|
|
11399
|
+
waitThresholdHeading: "Umbral de espera",
|
|
11400
|
+
waitThresholdHint: "Marcar un escritorio activo como en espera tras este silencio",
|
|
11379
11401
|
bgDots: "Puntos",
|
|
11380
11402
|
bgLines: "L\xEDneas",
|
|
11381
11403
|
bgCross: "Cruz",
|
|
@@ -12116,6 +12138,13 @@ var require_activity3 = __commonJS({
|
|
|
12116
12138
|
syncWaiting: "esperando sincronizaci\xF3n",
|
|
12117
12139
|
todoTelemetryWaiting: "Reconecta este terminal para recibir la lista de tareas en vivo",
|
|
12118
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",
|
|
12119
12148
|
noPrompt: "A\xFAn no se recibi\xF3 ning\xFAn prompt en esta sesi\xF3n",
|
|
12120
12149
|
activeTodos: "Tareas activas",
|
|
12121
12150
|
todoProgress: "{{done}}/{{total}} completadas",
|
|
@@ -14406,7 +14435,8 @@ var require_settings3 = __commonJS({
|
|
|
14406
14435
|
autonomyDelayMsLabel: "Retraso de continuaci\xF3n autom\xE1tica",
|
|
14407
14436
|
autonomyDelayMsHint: "Milisegundos antes de que el agente contin\xFAe autom\xE1ticamente en modo Auto. 0 = inmediato.",
|
|
14408
14437
|
refineCountdownLabel: "Cuenta atr\xE1s de refinamiento",
|
|
14409
|
-
refineCountdownHint: "Per\xEDodo de gracia antes del env\xEDo autom\xE1tico del prompt refinado (milisegundos)."
|
|
14438
|
+
refineCountdownHint: "Per\xEDodo de gracia antes del env\xEDo autom\xE1tico del prompt refinado (milisegundos).",
|
|
14439
|
+
reasoningEffortModelSet: "niveles del modelo activo"
|
|
14410
14440
|
},
|
|
14411
14441
|
execution: {
|
|
14412
14442
|
heading: "Ejecuci\xF3n",
|
|
@@ -16271,6 +16301,8 @@ var require_activity4 = __commonJS({
|
|
|
16271
16301
|
zoomControls: "Contr\xF4les zoom",
|
|
16272
16302
|
animateWires: "Animer les fils",
|
|
16273
16303
|
backgroundHeading: "Arri\xE8re-plan",
|
|
16304
|
+
waitThresholdHeading: "Seuil d'attente",
|
|
16305
|
+
waitThresholdHint: "Marquer un bureau actif comme en attente apr\xE8s ce silence",
|
|
16274
16306
|
bgDots: "Points",
|
|
16275
16307
|
bgLines: "Lignes",
|
|
16276
16308
|
bgCross: "Croix",
|
|
@@ -17012,6 +17044,13 @@ D\xE9clencheurs : l'utilisateur dit "mot-cl\xE9", "autre".`,
|
|
|
17012
17044
|
syncWaiting: "synchronisation en attente",
|
|
17013
17045
|
todoTelemetryWaiting: "Reconnectez ce terminal pour recevoir la liste des t\xE2ches en direct",
|
|
17014
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",
|
|
17015
17054
|
noPrompt: "Aucun prompt re\xE7u dans cette session",
|
|
17016
17055
|
activeTodos: "T\xE2ches actives",
|
|
17017
17056
|
todoProgress: "{{done}}/{{total}} termin\xE9es",
|
|
@@ -19302,7 +19341,8 @@ var require_settings4 = __commonJS({
|
|
|
19302
19341
|
autonomyDelayMsLabel: "D\xE9lai de reprise automatique",
|
|
19303
19342
|
autonomyDelayMsHint: "Millisecondes avant que l'agent reprenne automatiquement en mode Auto. 0 = imm\xE9diat.",
|
|
19304
19343
|
refineCountdownLabel: "Compte \xE0 rebours d'affinage",
|
|
19305
|
-
refineCountdownHint: "D\xE9lai de gr\xE2ce avant l'envoi automatique du prompt affin\xE9 (millisecondes)."
|
|
19344
|
+
refineCountdownHint: "D\xE9lai de gr\xE2ce avant l'envoi automatique du prompt affin\xE9 (millisecondes).",
|
|
19345
|
+
reasoningEffortModelSet: "niveaux du mod\xE8le actif"
|
|
19306
19346
|
},
|
|
19307
19347
|
execution: {
|
|
19308
19348
|
heading: "Ex\xE9cution",
|
|
@@ -21167,6 +21207,8 @@ var require_activity5 = __commonJS({
|
|
|
21167
21207
|
zoomControls: "Controlli zoom",
|
|
21168
21208
|
animateWires: "Anima fili",
|
|
21169
21209
|
backgroundHeading: "Sfondo",
|
|
21210
|
+
waitThresholdHeading: "Soglia di attesa",
|
|
21211
|
+
waitThresholdHint: "Contrassegna una scrivania attiva come in attesa dopo questo silenzio",
|
|
21170
21212
|
bgDots: "Punti",
|
|
21171
21213
|
bgLines: "Linee",
|
|
21172
21214
|
bgCross: "Croce",
|
|
@@ -21908,6 +21950,13 @@ Trigger: l'utente dice "parola chiave", "altra".`,
|
|
|
21908
21950
|
syncWaiting: "sincronizzazione in attesa",
|
|
21909
21951
|
todoTelemetryWaiting: "Riconnetti questo terminale per ricevere l\u2019elenco attivit\xE0 live",
|
|
21910
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",
|
|
21911
21960
|
noPrompt: "Nessun prompt ancora ricevuto in questa sessione",
|
|
21912
21961
|
activeTodos: "Attivit\xE0 attive",
|
|
21913
21962
|
todoProgress: "{{done}}/{{total}} completate",
|
|
@@ -24198,7 +24247,8 @@ var require_settings5 = __commonJS({
|
|
|
24198
24247
|
autonomyDelayMsLabel: "Ritardo di avanzamento automatico",
|
|
24199
24248
|
autonomyDelayMsHint: "Millisecondi prima che l'agente proceda automaticamente in modalit\xE0 Auto. 0 = immediato.",
|
|
24200
24249
|
refineCountdownLabel: "Conto alla rovescia affinamento",
|
|
24201
|
-
refineCountdownHint: "Periodo di grazia prima dell'invio automatico del prompt affinato (millisecondi)."
|
|
24250
|
+
refineCountdownHint: "Periodo di grazia prima dell'invio automatico del prompt affinato (millisecondi).",
|
|
24251
|
+
reasoningEffortModelSet: "livelli del modello attivo"
|
|
24202
24252
|
},
|
|
24203
24253
|
execution: {
|
|
24204
24254
|
heading: "Esecuzione",
|
|
@@ -26063,6 +26113,8 @@ var require_activity6 = __commonJS({
|
|
|
26063
26113
|
zoomControls: "Controles de zoom",
|
|
26064
26114
|
animateWires: "Animar fios",
|
|
26065
26115
|
backgroundHeading: "Fundo",
|
|
26116
|
+
waitThresholdHeading: "Limiar de espera",
|
|
26117
|
+
waitThresholdHint: "Marcar uma mesa ativa como aguardando ap\xF3s este sil\xEAncio",
|
|
26066
26118
|
bgDots: "Pontos",
|
|
26067
26119
|
bgLines: "Linhas",
|
|
26068
26120
|
bgCross: "Cruz",
|
|
@@ -26803,6 +26855,13 @@ var require_activity6 = __commonJS({
|
|
|
26803
26855
|
syncWaiting: "aguardando sincroniza\xE7\xE3o",
|
|
26804
26856
|
todoTelemetryWaiting: "Reconecte este terminal para receber a lista de tarefas ao vivo",
|
|
26805
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",
|
|
26806
26865
|
noPrompt: "Nenhum prompt recebido nesta sess\xE3o",
|
|
26807
26866
|
activeTodos: "Tarefas ativas",
|
|
26808
26867
|
todoProgress: "{{done}}/{{total}} conclu\xEDdas",
|
|
@@ -29093,7 +29152,8 @@ var require_settings6 = __commonJS({
|
|
|
29093
29152
|
autonomyDelayMsLabel: "Atraso de continua\xE7\xE3o autom\xE1tica",
|
|
29094
29153
|
autonomyDelayMsHint: "Milissegundos antes de o agente continuar automaticamente no modo Auto. 0 = imediato.",
|
|
29095
29154
|
refineCountdownLabel: "Contagem regressiva de refinamento",
|
|
29096
|
-
refineCountdownHint: "Per\xEDodo de car\xEAncia antes do envio autom\xE1tico do prompt refinado (milissegundos)."
|
|
29155
|
+
refineCountdownHint: "Per\xEDodo de car\xEAncia antes do envio autom\xE1tico do prompt refinado (milissegundos).",
|
|
29156
|
+
reasoningEffortModelSet: "n\xEDveis do modelo ativo"
|
|
29097
29157
|
},
|
|
29098
29158
|
execution: {
|
|
29099
29159
|
heading: "Execu\xE7\xE3o",
|
|
@@ -30958,6 +31018,8 @@ var require_activity7 = __commonJS({
|
|
|
30958
31018
|
zoomControls: "Yak\u0131nla\u015Ft\u0131rma kontrolleri",
|
|
30959
31019
|
animateWires: "Ba\u011Flant\u0131lar\u0131 animasyonla",
|
|
30960
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",
|
|
30961
31023
|
bgDots: "Noktalar",
|
|
30962
31024
|
bgLines: "\xC7izgiler",
|
|
30963
31025
|
bgCross: "\xC7apraz",
|
|
@@ -31699,6 +31761,13 @@ var require_activity7 = __commonJS({
|
|
|
31699
31761
|
todoTelemetryWaiting: "Canl\u0131 todo listesi i\xE7in bu terminali yeniden ba\u011Flay\u0131n",
|
|
31700
31762
|
taskNotReported: "\xC7al\u0131\u015F\u0131yor ancak g\xF6rev a\xE7\u0131klamas\u0131 bildirilmedi",
|
|
31701
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",
|
|
31702
31771
|
activeTodos: "Aktif yap\u0131lacaklar",
|
|
31703
31772
|
todoProgress: "{{done}}/{{total}} tamamland\u0131",
|
|
31704
31773
|
allTodosDone: "T\xFCm i\u015Fler tamamland\u0131",
|
|
@@ -33988,7 +34057,8 @@ var require_settings7 = __commonJS({
|
|
|
33988
34057
|
autonomyDelayMsLabel: "Otomatik devam gecikmesi",
|
|
33989
34058
|
autonomyDelayMsHint: "Auto modunda ajan\u0131n otomatik devam etmeden \xF6nce bekleme s\xFCresi (milisaniye). 0 = an\u0131nda.",
|
|
33990
34059
|
refineCountdownLabel: "\u0130yile\u015Ftirme geri say\u0131m\u0131",
|
|
33991
|
-
refineCountdownHint: "\u0130yile\u015Ftirilmi\u015F istemin otomatik g\xF6nderilmeden \xF6nceki bekleme s\xFCresi (milisaniye)."
|
|
34060
|
+
refineCountdownHint: "\u0130yile\u015Ftirilmi\u015F istemin otomatik g\xF6nderilmeden \xF6nceki bekleme s\xFCresi (milisaniye).",
|
|
34061
|
+
reasoningEffortModelSet: "aktif modelin destekledi\u011Fi seviyeler"
|
|
33992
34062
|
},
|
|
33993
34063
|
execution: {
|
|
33994
34064
|
heading: "Y\xFCr\xFCtme",
|
|
@@ -35384,7 +35454,13 @@ var init_session_store = __esm({
|
|
|
35384
35454
|
// Clear cache snapshot on provider/model switch — a stale
|
|
35385
35455
|
// reading from the previous provider can never apply to the
|
|
35386
35456
|
// new prompt cache. Same lifecycle as `contextLimitWarning`.
|
|
35387
|
-
|
|
35457
|
+
// `reasoningEffortLevels` follows: a new model's effort set is
|
|
35458
|
+
// unknown until the next session.start repopulates it.
|
|
35459
|
+
...sessionOrRouteChanged ? {
|
|
35460
|
+
contextLimitWarning: null,
|
|
35461
|
+
cacheStats: null,
|
|
35462
|
+
reasoningEffortLevels: void 0
|
|
35463
|
+
} : {}
|
|
35388
35464
|
};
|
|
35389
35465
|
}),
|
|
35390
35466
|
updateUsage: (usage) => set((state) => {
|
|
@@ -35412,7 +35488,8 @@ var init_session_store = __esm({
|
|
|
35412
35488
|
lastVisitedAt: Date.now(),
|
|
35413
35489
|
droppedTools: 0,
|
|
35414
35490
|
contextLimitWarning: null,
|
|
35415
|
-
cacheStats: null
|
|
35491
|
+
cacheStats: null,
|
|
35492
|
+
reasoningEffortLevels: void 0
|
|
35416
35493
|
}),
|
|
35417
35494
|
endSession: () => set({
|
|
35418
35495
|
session: null,
|
|
@@ -35420,7 +35497,8 @@ var init_session_store = __esm({
|
|
|
35420
35497
|
iteration: null,
|
|
35421
35498
|
droppedTools: 0,
|
|
35422
35499
|
contextLimitWarning: null,
|
|
35423
|
-
cacheStats: null
|
|
35500
|
+
cacheStats: null,
|
|
35501
|
+
reasoningEffortLevels: void 0
|
|
35424
35502
|
// Note: we intentionally do NOT clear lastVisitedAt here. The
|
|
35425
35503
|
// verifier view uses it to show "previous activity at …" even
|
|
35426
35504
|
// when the user explicitly ended a session.
|
|
@@ -35434,7 +35512,13 @@ var init_session_store = __esm({
|
|
|
35434
35512
|
contextMode: env.contextMode ?? state.contextMode,
|
|
35435
35513
|
inputCost: env.inputCost ?? state.inputCost,
|
|
35436
35514
|
outputCost: env.outputCost ?? state.outputCost,
|
|
35437
|
-
cacheReadCost: env.cacheReadCost ?? state.cacheReadCost
|
|
35515
|
+
cacheReadCost: env.cacheReadCost ?? state.cacheReadCost,
|
|
35516
|
+
// Key-presence, not `??`: the server OMITS the field when the new
|
|
35517
|
+
// model advertises no effort list, and a `??` fallback would keep
|
|
35518
|
+
// the previous model's list alive across the switch (the same
|
|
35519
|
+
// stale-leak pattern cacheStats guards against). Present-but-
|
|
35520
|
+
// undefined means "no list" and must overwrite.
|
|
35521
|
+
reasoningEffortLevels: "reasoningEffortLevels" in env ? env.reasoningEffortLevels : state.reasoningEffortLevels
|
|
35438
35522
|
})),
|
|
35439
35523
|
setIteration: (iteration) => set({ iteration }),
|
|
35440
35524
|
setContextUsage: (tokens, maxContext) => set((state) => ({
|
|
@@ -40398,7 +40482,7 @@ var init_monitor_store = __esm({
|
|
|
40398
40482
|
break;
|
|
40399
40483
|
}
|
|
40400
40484
|
for (let j = 0; j < aa.length; j++) {
|
|
40401
|
-
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) {
|
|
40402
40486
|
same = false;
|
|
40403
40487
|
break;
|
|
40404
40488
|
}
|
|
@@ -40451,10 +40535,12 @@ var init_monitor_store = __esm({
|
|
|
40451
40535
|
// src/stores/office-map-store.ts
|
|
40452
40536
|
import { create as create21 } from "zustand";
|
|
40453
40537
|
import { persist as persist6 } from "zustand/middleware";
|
|
40454
|
-
var useOfficeMapStore;
|
|
40538
|
+
var WAIT_THRESHOLD_PRESETS, DEFAULT_WAIT_THRESHOLD_MS, useOfficeMapStore;
|
|
40455
40539
|
var init_office_map_store = __esm({
|
|
40456
40540
|
"src/stores/office-map-store.ts"() {
|
|
40457
40541
|
"use strict";
|
|
40542
|
+
WAIT_THRESHOLD_PRESETS = [3e4, 6e4, 12e4, 3e5, 6e5];
|
|
40543
|
+
DEFAULT_WAIT_THRESHOLD_MS = 12e4;
|
|
40458
40544
|
useOfficeMapStore = create21()(
|
|
40459
40545
|
persist6(
|
|
40460
40546
|
(set) => ({
|
|
@@ -40466,6 +40552,7 @@ var init_office_map_store = __esm({
|
|
|
40466
40552
|
animateEdges: true,
|
|
40467
40553
|
showFeed: true,
|
|
40468
40554
|
background: "dots",
|
|
40555
|
+
waitThresholdMs: DEFAULT_WAIT_THRESHOLD_MS,
|
|
40469
40556
|
setViewMode: (v) => set({ viewMode: v }),
|
|
40470
40557
|
setShowHud: (v) => set({ showHud: v }),
|
|
40471
40558
|
setShowLegend: (v) => set({ showLegend: v }),
|
|
@@ -40473,7 +40560,8 @@ var init_office_map_store = __esm({
|
|
|
40473
40560
|
setShowControls: (v) => set({ showControls: v }),
|
|
40474
40561
|
setAnimateEdges: (v) => set({ animateEdges: v }),
|
|
40475
40562
|
setShowFeed: (v) => set({ showFeed: v }),
|
|
40476
|
-
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 })
|
|
40477
40565
|
}),
|
|
40478
40566
|
{ name: "wrongstack-officemap" }
|
|
40479
40567
|
)
|
|
@@ -44049,7 +44137,10 @@ function handleSessionStart(msg) {
|
|
|
44049
44137
|
contextMode: payload.contextMode,
|
|
44050
44138
|
inputCost: payload.inputCost,
|
|
44051
44139
|
outputCost: payload.outputCost,
|
|
44052
|
-
cacheReadCost: payload.cacheReadCost
|
|
44140
|
+
cacheReadCost: payload.cacheReadCost,
|
|
44141
|
+
// Always pass the key (even undefined) so the store's key-presence
|
|
44142
|
+
// semantics replace a previous model's list on switch.
|
|
44143
|
+
reasoningEffortLevels: payload.reasoningEffortLevels
|
|
44053
44144
|
});
|
|
44054
44145
|
useConfigStore.getState().setConfig({ provider, model });
|
|
44055
44146
|
if (isReset) {
|
|
@@ -50098,7 +50189,7 @@ var init_AgentRosterCatalogTab = __esm({
|
|
|
50098
50189
|
import {
|
|
50099
50190
|
Bot as Bot14,
|
|
50100
50191
|
CheckCircle2 as CheckCircle218,
|
|
50101
|
-
Clock as
|
|
50192
|
+
Clock as Clock13,
|
|
50102
50193
|
Crown as Crown5,
|
|
50103
50194
|
LayoutGrid as LayoutGrid4,
|
|
50104
50195
|
Trash2 as Trash215,
|
|
@@ -50505,7 +50596,7 @@ var init_AgentRosterLiveTab = __esm({
|
|
|
50505
50596
|
timeout: {
|
|
50506
50597
|
led: "bg-warning",
|
|
50507
50598
|
badge: "bg-muted text-muted-foreground",
|
|
50508
|
-
icon: /* @__PURE__ */ jsx153(
|
|
50599
|
+
icon: /* @__PURE__ */ jsx153(Clock13, { className: "h-3.5 w-3.5" }),
|
|
50509
50600
|
color: "text-warning"
|
|
50510
50601
|
},
|
|
50511
50602
|
stopped: {
|
|
@@ -58066,7 +58157,7 @@ import {
|
|
|
58066
58157
|
Activity as Activity16,
|
|
58067
58158
|
AlertCircle as AlertCircle2,
|
|
58068
58159
|
BarChart3 as BarChart35,
|
|
58069
|
-
Clock as
|
|
58160
|
+
Clock as Clock14,
|
|
58070
58161
|
Eye as Eye8,
|
|
58071
58162
|
FileWarning,
|
|
58072
58163
|
Gauge as Gauge4,
|
|
@@ -58197,7 +58288,7 @@ function DebugDashboard() {
|
|
|
58197
58288
|
] })
|
|
58198
58289
|
] }) }),
|
|
58199
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: [
|
|
58200
|
-
/* @__PURE__ */ jsx178(
|
|
58291
|
+
/* @__PURE__ */ jsx178(Clock14, { className: "w-4 h-4" }),
|
|
58201
58292
|
t("activity:debug.lastUpdated", { time: data.lastUpdated.toLocaleTimeString() })
|
|
58202
58293
|
] }),
|
|
58203
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: [
|
|
@@ -58281,7 +58372,7 @@ function DebugDashboard() {
|
|
|
58281
58372
|
title: t("activity:debug.avgDebounce"),
|
|
58282
58373
|
value: `${(data.fileWatcher?.averageDebounceDelayMs ?? 0).toFixed(1)}ms`,
|
|
58283
58374
|
subtitle: t("activity:debug.actualDelay"),
|
|
58284
|
-
icon:
|
|
58375
|
+
icon: Clock14,
|
|
58285
58376
|
color: "text-warning"
|
|
58286
58377
|
}
|
|
58287
58378
|
),
|
|
@@ -58349,7 +58440,7 @@ function DebugDashboard() {
|
|
|
58349
58440
|
title: t("activity:debugDash.serverUptime"),
|
|
58350
58441
|
value: formatUptime(data.system?.uptime ?? 0),
|
|
58351
58442
|
subtitle: t("activity:debugDash.sinceProcessStart"),
|
|
58352
|
-
icon:
|
|
58443
|
+
icon: Clock14,
|
|
58353
58444
|
color: "text-primary"
|
|
58354
58445
|
}
|
|
58355
58446
|
)
|
|
@@ -59088,7 +59179,7 @@ var init_DesignGalleryView = __esm({
|
|
|
59088
59179
|
});
|
|
59089
59180
|
|
|
59090
59181
|
// src/components/TaskCard.tsx
|
|
59091
|
-
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";
|
|
59092
59183
|
import { useState as useState101 } from "react";
|
|
59093
59184
|
import { jsx as jsx180, jsxs as jsxs171 } from "react/jsx-runtime";
|
|
59094
59185
|
function formatTime4(ms) {
|
|
@@ -59140,7 +59231,7 @@ function TaskCard({
|
|
|
59140
59231
|
running ? "bg-primary/15 text-primary" : "bg-muted text-muted-foreground"
|
|
59141
59232
|
),
|
|
59142
59233
|
children: [
|
|
59143
|
-
running && /* @__PURE__ */ jsx180(
|
|
59234
|
+
running && /* @__PURE__ */ jsx180(Clock15, { className: "w-3 h-3 animate-spin", "aria-label": t("common:status.working") }),
|
|
59144
59235
|
/* @__PURE__ */ jsx180("span", { children: task.assignee })
|
|
59145
59236
|
]
|
|
59146
59237
|
}
|
|
@@ -59236,7 +59327,7 @@ var init_TaskCard = __esm({
|
|
|
59236
59327
|
init_i18n();
|
|
59237
59328
|
TASK_STATUS_CONFIG = {
|
|
59238
59329
|
pending: { icon: /* @__PURE__ */ jsx180(Circle9, { className: "w-4 h-4" }), color: "text-muted-foreground" },
|
|
59239
|
-
in_progress: { icon: /* @__PURE__ */ jsx180(
|
|
59330
|
+
in_progress: { icon: /* @__PURE__ */ jsx180(Clock15, { className: "w-4 h-4 animate-spin" }), color: "text-primary" },
|
|
59240
59331
|
blocked: { icon: /* @__PURE__ */ jsx180(Pause6, { className: "w-4 h-4" }), color: "text-warning" },
|
|
59241
59332
|
failed: { icon: /* @__PURE__ */ jsx180(XCircle8, { className: "w-4 h-4" }), color: "text-destructive" },
|
|
59242
59333
|
review: { icon: /* @__PURE__ */ jsx180(RotateCcw10, { className: "w-4 h-4" }), color: "text-info" },
|
|
@@ -68227,7 +68318,7 @@ __export(MailboxDetailView_exports, {
|
|
|
68227
68318
|
import {
|
|
68228
68319
|
ArrowLeft as ArrowLeft4,
|
|
68229
68320
|
CheckCircle2 as CheckCircle225,
|
|
68230
|
-
Clock as
|
|
68321
|
+
Clock as Clock16,
|
|
68231
68322
|
Mail as Mail4,
|
|
68232
68323
|
Tag as Tag2,
|
|
68233
68324
|
User as User3,
|
|
@@ -68362,7 +68453,7 @@ function MailboxDetailView({ className }) {
|
|
|
68362
68453
|
] }),
|
|
68363
68454
|
/* @__PURE__ */ jsx213("span", { className: "opacity-40", children: "\u2022" }),
|
|
68364
68455
|
/* @__PURE__ */ jsxs203("span", { className: "inline-flex items-center gap-1", children: [
|
|
68365
|
-
/* @__PURE__ */ jsx213(
|
|
68456
|
+
/* @__PURE__ */ jsx213(Clock16, { className: "h-3 w-3" }),
|
|
68366
68457
|
fmtRelative(msg.timestamp)
|
|
68367
68458
|
] })
|
|
68368
68459
|
] })
|
|
@@ -68396,7 +68487,7 @@ function MailboxDetailView({ className }) {
|
|
|
68396
68487
|
/* @__PURE__ */ jsx213("span", { className: "truncate", children: recipientScopeLabel })
|
|
68397
68488
|
] }),
|
|
68398
68489
|
/* @__PURE__ */ jsxs203("div", { className: "flex items-center gap-1.5 text-muted-foreground", children: [
|
|
68399
|
-
/* @__PURE__ */ jsx213(
|
|
68490
|
+
/* @__PURE__ */ jsx213(Clock16, { className: "h-3 w-3 shrink-0" }),
|
|
68400
68491
|
/* @__PURE__ */ jsx213("span", { children: fmtTime3(msg.timestamp) })
|
|
68401
68492
|
] }),
|
|
68402
68493
|
msg.replyTo && /* @__PURE__ */ jsxs203("div", { className: "flex items-center gap-1.5 text-muted-foreground col-span-2", children: [
|
|
@@ -69551,6 +69642,59 @@ function shortPath4(value, max = 46) {
|
|
|
69551
69642
|
const tail = parts.slice(-2).join("/");
|
|
69552
69643
|
return tail.length <= max ? `\u2026/${tail}` : `\u2026${value.slice(-(max - 1))}`;
|
|
69553
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
|
+
}
|
|
69554
69698
|
function relativeTime(timestamp2, now) {
|
|
69555
69699
|
const seconds = Math.max(0, Math.floor((now - timestamp2) / 1e3));
|
|
69556
69700
|
if (seconds < 5) return "now";
|
|
@@ -70048,16 +70192,28 @@ function AgentLane({
|
|
|
70048
70192
|
routedMailIds
|
|
70049
70193
|
}) {
|
|
70050
70194
|
const { t } = useTranslation();
|
|
70195
|
+
const waitThresholdMs = useOfficeMapStore((s) => s.waitThresholdMs);
|
|
70051
70196
|
const { agent, client: client2, current, display, history, mail } = model;
|
|
70052
70197
|
const active = agent.status === "active" || agent.status === "streaming";
|
|
70053
70198
|
const failed = agent.status === "error";
|
|
70054
70199
|
const latestMail = mail[0];
|
|
70055
70200
|
const visualRole = agentVisualRole(agent);
|
|
70056
70201
|
const desk = deskPersonality(`${client2.sessionId}:${agent.serverId}:${agent.name}`, visualRole);
|
|
70057
|
-
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;
|
|
70058
70213
|
const recentWork = history.slice(0, 6);
|
|
70059
70214
|
const latestActivityAt = recentWork[0]?.completedAt ?? recentWork[0]?.startedAt ?? display?.completedAt ?? display?.startedAt;
|
|
70060
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");
|
|
70061
70217
|
return /* @__PURE__ */ jsxs205(
|
|
70062
70218
|
"article",
|
|
70063
70219
|
{
|
|
@@ -70067,7 +70223,8 @@ function AgentLane({
|
|
|
70067
70223
|
`is-layout-${desk.layout}`,
|
|
70068
70224
|
`is-clutter-${desk.clutter}`,
|
|
70069
70225
|
active && "is-active",
|
|
70070
|
-
failed && "is-failed"
|
|
70226
|
+
failed && "is-failed",
|
|
70227
|
+
wait.waiting && "is-waiting"
|
|
70071
70228
|
),
|
|
70072
70229
|
children: [
|
|
70073
70230
|
/* @__PURE__ */ jsxs205("div", { className: "agent-office__identity", children: [
|
|
@@ -70091,6 +70248,48 @@ function AgentLane({
|
|
|
70091
70248
|
}
|
|
70092
70249
|
)
|
|
70093
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
|
+
),
|
|
70094
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")) }),
|
|
70095
70294
|
/* @__PURE__ */ jsxs205("div", { className: "agent-office__agent-meta", children: [
|
|
70096
70295
|
/* @__PURE__ */ jsx215("span", { children: client2.branch ? `\u2387 ${client2.branch}` : client2.type.toUpperCase() }),
|
|
@@ -70229,6 +70428,55 @@ function AgentLane({
|
|
|
70229
70428
|
},
|
|
70230
70429
|
`tool:${call.id}`
|
|
70231
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
|
+
)
|
|
70232
70480
|
] })
|
|
70233
70481
|
]
|
|
70234
70482
|
}
|
|
@@ -70488,6 +70736,7 @@ var init_AgentOfficeView2 = __esm({
|
|
|
70488
70736
|
"src/components/AgentOfficeView.tsx"() {
|
|
70489
70737
|
"use strict";
|
|
70490
70738
|
init_i18n();
|
|
70739
|
+
init_agent_status();
|
|
70491
70740
|
init_agent_office();
|
|
70492
70741
|
init_utils();
|
|
70493
70742
|
init_stores();
|
|
@@ -70500,7 +70749,7 @@ var init_AgentOfficeView2 = __esm({
|
|
|
70500
70749
|
});
|
|
70501
70750
|
|
|
70502
70751
|
// src/components/WatchMessageBubble.tsx
|
|
70503
|
-
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";
|
|
70504
70753
|
import remarkGfm3 from "remark-gfm";
|
|
70505
70754
|
import { jsx as jsx216, jsxs as jsxs206 } from "react/jsx-runtime";
|
|
70506
70755
|
function fmtDuration5(durationMs) {
|
|
@@ -70522,7 +70771,7 @@ function WatchBubbleContent({ entry }) {
|
|
|
70522
70771
|
/* @__PURE__ */ jsx216(Terminal9, { className: "h-3 w-3" }),
|
|
70523
70772
|
/* @__PURE__ */ jsx216("span", { className: "font-mono", children: entry.tool ?? t("activity:watch.toolFallback") }),
|
|
70524
70773
|
entry.durationMs !== void 0 && /* @__PURE__ */ jsxs206("span", { className: "ml-auto text-[10px] text-muted-foreground font-normal tabular-nums", children: [
|
|
70525
|
-
/* @__PURE__ */ jsx216(
|
|
70774
|
+
/* @__PURE__ */ jsx216(Clock17, { className: "h-3 w-3 inline mr-0.5 align-text-bottom" }),
|
|
70526
70775
|
fmtDuration5(entry.durationMs)
|
|
70527
70776
|
] })
|
|
70528
70777
|
] }),
|
|
@@ -78793,7 +79042,7 @@ import {
|
|
|
78793
79042
|
Activity as Activity24,
|
|
78794
79043
|
ArrowLeft as ArrowLeft8,
|
|
78795
79044
|
Check as Check38,
|
|
78796
|
-
Clock as
|
|
79045
|
+
Clock as Clock18,
|
|
78797
79046
|
FileText as FileText19,
|
|
78798
79047
|
GitBranch as GitBranch17,
|
|
78799
79048
|
Maximize2 as Maximize26,
|
|
@@ -78938,7 +79187,7 @@ function SddTaskDrawer({
|
|
|
78938
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 }) }),
|
|
78939
79188
|
/* @__PURE__ */ jsx249(Meta, { label: t("activity:sddTask.metaType"), children: task.type }),
|
|
78940
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: [
|
|
78941
|
-
/* @__PURE__ */ jsx249(
|
|
79190
|
+
/* @__PURE__ */ jsx249(Clock18, { className: "h-3 w-3 text-muted-foreground" }),
|
|
78942
79191
|
elapsed
|
|
78943
79192
|
] }) }),
|
|
78944
79193
|
task.retries ? /* @__PURE__ */ jsx249(Meta, { label: t("activity:sddTask.metaRetries"), children: /* @__PURE__ */ jsxs239("span", { className: "flex items-center gap-1 text-destructive", children: [
|
|
@@ -80676,7 +80925,7 @@ import {
|
|
|
80676
80925
|
CheckCircle2 as CheckCircle229,
|
|
80677
80926
|
ChevronRight as ChevronRight25,
|
|
80678
80927
|
Circle as Circle11,
|
|
80679
|
-
Clock as
|
|
80928
|
+
Clock as Clock19,
|
|
80680
80929
|
Loader2 as Loader245,
|
|
80681
80930
|
Lock as Lock4,
|
|
80682
80931
|
RotateCcw as RotateCcw18,
|
|
@@ -80759,7 +81008,7 @@ var init_DependencyGraph = __esm({
|
|
|
80759
81008
|
STATUS2 = {
|
|
80760
81009
|
completed: { icon: /* @__PURE__ */ jsx252(CheckCircle229, { className: "h-3.5 w-3.5" }), text: "text-success", ring: "border-success/35" },
|
|
80761
81010
|
in_progress: { icon: /* @__PURE__ */ jsx252(Loader245, { className: "h-3.5 w-3.5 animate-spin" }), text: "text-primary", ring: "border-primary/45" },
|
|
80762
|
-
queued: { icon: /* @__PURE__ */ jsx252(
|
|
81011
|
+
queued: { icon: /* @__PURE__ */ jsx252(Clock19, { className: "h-3.5 w-3.5" }), text: "text-warning", ring: "border-warning/35" },
|
|
80763
81012
|
blocked: { icon: /* @__PURE__ */ jsx252(Lock4, { className: "h-3.5 w-3.5" }), text: "text-destructive", ring: "border-destructive/30" },
|
|
80764
81013
|
pending: { icon: /* @__PURE__ */ jsx252(Circle11, { className: "h-3.5 w-3.5" }), text: "text-muted-foreground", ring: "border-border/70" },
|
|
80765
81014
|
review: { icon: /* @__PURE__ */ jsx252(RotateCcw18, { className: "h-3.5 w-3.5" }), text: "text-primary", ring: "border-primary/35" },
|
|
@@ -81897,7 +82146,7 @@ import {
|
|
|
81897
82146
|
Activity as Activity27,
|
|
81898
82147
|
AlertCircle as AlertCircle5,
|
|
81899
82148
|
CheckCircle2 as CheckCircle231,
|
|
81900
|
-
Clock as
|
|
82149
|
+
Clock as Clock20,
|
|
81901
82150
|
Cpu as Cpu21,
|
|
81902
82151
|
FolderGit2,
|
|
81903
82152
|
History as HistoryIcon2,
|
|
@@ -81938,7 +82187,7 @@ function agentMeta(status) {
|
|
|
81938
82187
|
};
|
|
81939
82188
|
case "waiting_user":
|
|
81940
82189
|
return {
|
|
81941
|
-
icon: /* @__PURE__ */ jsx256(
|
|
82190
|
+
icon: /* @__PURE__ */ jsx256(Clock20, { className: "h-3.5 w-3.5" }),
|
|
81942
82191
|
cls: "text-warning"
|
|
81943
82192
|
};
|
|
81944
82193
|
case "error":
|
|
@@ -81974,7 +82223,7 @@ function sessionMeta(status) {
|
|
|
81974
82223
|
};
|
|
81975
82224
|
case "closing":
|
|
81976
82225
|
return {
|
|
81977
|
-
icon: /* @__PURE__ */ jsx256(
|
|
82226
|
+
icon: /* @__PURE__ */ jsx256(Clock20, { className: "h-3.5 w-3.5" }),
|
|
81978
82227
|
cls: "text-warning",
|
|
81979
82228
|
badge: "border-warning/25 bg-warning/10 text-warning"
|
|
81980
82229
|
};
|
|
@@ -82236,7 +82485,7 @@ function LiveSessionsDashboard() {
|
|
|
82236
82485
|
/* @__PURE__ */ jsx256("span", { className: "truncate font-mono", children: s.gitBranch })
|
|
82237
82486
|
] }) : null,
|
|
82238
82487
|
/* @__PURE__ */ jsxs246("span", { className: "inline-flex items-center gap-1", children: [
|
|
82239
|
-
/* @__PURE__ */ jsx256(
|
|
82488
|
+
/* @__PURE__ */ jsx256(Clock20, { className: "h-3.5 w-3.5" }),
|
|
82240
82489
|
fmtDuration6(s.startedAt)
|
|
82241
82490
|
] }),
|
|
82242
82491
|
/* @__PURE__ */ jsx256("span", { className: "font-mono", children: t("activity:liveSessions.pidLabel", { pid: s.pid }) })
|
|
@@ -87281,7 +87530,7 @@ var CronJobsPanel_exports = {};
|
|
|
87281
87530
|
__export(CronJobsPanel_exports, {
|
|
87282
87531
|
CronJobsPanel: () => CronJobsPanel
|
|
87283
87532
|
});
|
|
87284
|
-
import { Clock as
|
|
87533
|
+
import { Clock as Clock21, PauseCircle as PauseCircle2, PlayCircle, RotateCw as RotateCw8 } from "lucide-react";
|
|
87285
87534
|
import { useCallback as useCallback82 } from "react";
|
|
87286
87535
|
import { jsx as jsx271, jsxs as jsxs261 } from "react/jsx-runtime";
|
|
87287
87536
|
function fmtInterval(ms) {
|
|
@@ -87319,7 +87568,7 @@ function StatusBadge3({ enabled, overdue }) {
|
|
|
87319
87568
|
t("activity:cronJobs.statusDisabled")
|
|
87320
87569
|
] });
|
|
87321
87570
|
if (overdue) return /* @__PURE__ */ jsxs261(Badge, { variant: "destructive", className: "gap-1", children: [
|
|
87322
|
-
/* @__PURE__ */ jsx271(
|
|
87571
|
+
/* @__PURE__ */ jsx271(Clock21, { className: "h-3 w-3" }),
|
|
87323
87572
|
t("activity:cronJobs.statusOverdue")
|
|
87324
87573
|
] });
|
|
87325
87574
|
return /* @__PURE__ */ jsxs261(Badge, { variant: "outline", className: "gap-1 border-success/30 bg-success/10 text-success", children: [
|
|
@@ -87361,7 +87610,7 @@ function CronJobsPanel({ open, onClose }) {
|
|
|
87361
87610
|
/* @__PURE__ */ jsx271("span", { className: "text-muted-foreground/60", children: t("activity:cronJobs.maxConcurrent", { count: maxConcurrent }) })
|
|
87362
87611
|
] }),
|
|
87363
87612
|
count === 0 && /* @__PURE__ */ jsxs261("div", { className: "flex flex-col items-center gap-2 py-12 text-muted-foreground", children: [
|
|
87364
|
-
/* @__PURE__ */ jsx271(
|
|
87613
|
+
/* @__PURE__ */ jsx271(Clock21, { className: "h-8 w-8 opacity-40" }),
|
|
87365
87614
|
/* @__PURE__ */ jsx271("p", { className: "text-sm", children: t("activity:cronJobs.emptyTitle") }),
|
|
87366
87615
|
/* @__PURE__ */ jsxs261("p", { className: "text-xs", children: [
|
|
87367
87616
|
t("activity:cronJobs.emptyUse"),
|
|
@@ -91721,10 +91970,7 @@ function pickToolIcon(toolName) {
|
|
|
91721
91970
|
if (/fetch|http|web|curl|request/i.test(toolName)) return Globe2;
|
|
91722
91971
|
return Wrench4;
|
|
91723
91972
|
}
|
|
91724
|
-
function SmartInputPreview({
|
|
91725
|
-
toolName,
|
|
91726
|
-
input
|
|
91727
|
-
}) {
|
|
91973
|
+
function SmartInputPreview({ toolName, input }) {
|
|
91728
91974
|
const { t } = useTranslation();
|
|
91729
91975
|
const diff = diffFromToolInput(toolName, input);
|
|
91730
91976
|
if (diff) {
|
|
@@ -91734,12 +91980,17 @@ function SmartInputPreview({
|
|
|
91734
91980
|
const obj = input;
|
|
91735
91981
|
const cmd = obj.command ?? obj.cmd ?? obj.script;
|
|
91736
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
|
+
);
|
|
91737
91987
|
return /* @__PURE__ */ jsxs21("div", { className: "rounded-lg border bg-background/40 overflow-hidden", children: [
|
|
91738
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: [
|
|
91739
91989
|
/* @__PURE__ */ jsx26(Terminal2, { className: "h-3 w-3" }),
|
|
91740
91990
|
/* @__PURE__ */ jsx26("span", { children: t("confirm.command") })
|
|
91741
91991
|
] }),
|
|
91742
|
-
/* @__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") })
|
|
91743
91994
|
] });
|
|
91744
91995
|
}
|
|
91745
91996
|
const url = obj.url;
|
|
@@ -91935,19 +92186,11 @@ function ConfirmDialog() {
|
|
|
91935
92186
|
]
|
|
91936
92187
|
}
|
|
91937
92188
|
),
|
|
91938
|
-
/* @__PURE__ */ jsxs21(
|
|
91939
|
-
|
|
91940
|
-
|
|
91941
|
-
|
|
91942
|
-
|
|
91943
|
-
title: t("confirm.yesTitle"),
|
|
91944
|
-
children: [
|
|
91945
|
-
t("action.yes"),
|
|
91946
|
-
" ",
|
|
91947
|
-
/* @__PURE__ */ jsx26("kbd", { className: "ml-1 text-[10px] border rounded px-1 bg-background/80", children: "y" })
|
|
91948
|
-
]
|
|
91949
|
-
}
|
|
91950
|
-
)
|
|
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
|
+
] })
|
|
91951
92194
|
] })
|
|
91952
92195
|
]
|
|
91953
92196
|
}
|
|
@@ -97210,7 +97453,7 @@ function Banner({ ok, children }) {
|
|
|
97210
97453
|
init_utils();
|
|
97211
97454
|
init_i18n();
|
|
97212
97455
|
init_stores();
|
|
97213
|
-
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";
|
|
97214
97457
|
import { useShallow as useShallow4 } from "zustand/react/shallow";
|
|
97215
97458
|
import { jsx as jsx46, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
97216
97459
|
function Toggle({
|
|
@@ -97263,12 +97506,14 @@ function OfficeMapSettingsPanel() {
|
|
|
97263
97506
|
showControls,
|
|
97264
97507
|
animateEdges,
|
|
97265
97508
|
background,
|
|
97509
|
+
waitThresholdMs,
|
|
97266
97510
|
setShowHud,
|
|
97267
97511
|
setShowLegend,
|
|
97268
97512
|
setShowMinimap,
|
|
97269
97513
|
setShowControls,
|
|
97270
97514
|
setAnimateEdges,
|
|
97271
|
-
setBackground
|
|
97515
|
+
setBackground,
|
|
97516
|
+
setWaitThresholdMs
|
|
97272
97517
|
} = useOfficeMapStore(
|
|
97273
97518
|
useShallow4((s) => ({
|
|
97274
97519
|
showHud: s.showHud,
|
|
@@ -97277,12 +97522,14 @@ function OfficeMapSettingsPanel() {
|
|
|
97277
97522
|
showControls: s.showControls,
|
|
97278
97523
|
animateEdges: s.animateEdges,
|
|
97279
97524
|
background: s.background,
|
|
97525
|
+
waitThresholdMs: s.waitThresholdMs,
|
|
97280
97526
|
setShowHud: s.setShowHud,
|
|
97281
97527
|
setShowLegend: s.setShowLegend,
|
|
97282
97528
|
setShowMinimap: s.setShowMinimap,
|
|
97283
97529
|
setShowControls: s.setShowControls,
|
|
97284
97530
|
setAnimateEdges: s.setAnimateEdges,
|
|
97285
|
-
setBackground: s.setBackground
|
|
97531
|
+
setBackground: s.setBackground,
|
|
97532
|
+
setWaitThresholdMs: s.setWaitThresholdMs
|
|
97286
97533
|
}))
|
|
97287
97534
|
);
|
|
97288
97535
|
const { clientCounts, currentSession, totalAgents, activeAgents } = useMonitorStore(
|
|
@@ -97372,9 +97619,33 @@ function OfficeMapSettingsPanel() {
|
|
|
97372
97619
|
},
|
|
97373
97620
|
b.value
|
|
97374
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
|
+
)) })
|
|
97375
97642
|
] })
|
|
97376
97643
|
] });
|
|
97377
97644
|
}
|
|
97645
|
+
function formatThreshold(ms) {
|
|
97646
|
+
const seconds = ms / 1e3;
|
|
97647
|
+
return seconds % 60 === 0 && seconds >= 60 ? `${seconds / 60}m` : `${seconds}s`;
|
|
97648
|
+
}
|
|
97378
97649
|
|
|
97379
97650
|
// src/components/SidePanel/AgentsPanel.tsx
|
|
97380
97651
|
init_utils();
|
|
@@ -99306,7 +99577,7 @@ init_i18n();
|
|
|
99306
99577
|
init_utils();
|
|
99307
99578
|
init_ws_client();
|
|
99308
99579
|
init_stores();
|
|
99309
|
-
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";
|
|
99310
99581
|
import { useCallback as useCallback15, useEffect as useEffect39, useState as useState31 } from "react";
|
|
99311
99582
|
import { jsx as jsx55, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
99312
99583
|
var STATUS_ORDER = {
|
|
@@ -99375,7 +99646,7 @@ function TodosPanel() {
|
|
|
99375
99646
|
onClick: () => handleToggle(todo)
|
|
99376
99647
|
}
|
|
99377
99648
|
),
|
|
99378
|
-
/* @__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(
|
|
99379
99650
|
Circle5,
|
|
99380
99651
|
{
|
|
99381
99652
|
className: cn(
|
|
@@ -99448,12 +99719,12 @@ function TodosPanel() {
|
|
|
99448
99719
|
init_ws_client();
|
|
99449
99720
|
init_utils();
|
|
99450
99721
|
init_i18n();
|
|
99451
|
-
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";
|
|
99452
99723
|
import { useCallback as useCallback16, useEffect as useEffect40, useRef as useRef13, useState as useState32 } from "react";
|
|
99453
99724
|
import { jsx as jsx56, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
99454
99725
|
var STATUS_CONFIG = {
|
|
99455
99726
|
pending: { icon: /* @__PURE__ */ jsx56(Circle6, { className: "w-3.5 h-3.5" }), labelKey: "statusPending", color: "text-muted-foreground/70" },
|
|
99456
|
-
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" },
|
|
99457
99728
|
blocked: { icon: /* @__PURE__ */ jsx56(Pause3, { className: "w-3.5 h-3.5" }), labelKey: "statusBlocked", color: "text-warning" },
|
|
99458
99729
|
failed: { icon: /* @__PURE__ */ jsx56(XCircle3, { className: "w-3.5 h-3.5" }), labelKey: "statusFailed", color: "text-destructive" },
|
|
99459
99730
|
review: { icon: /* @__PURE__ */ jsx56(RotateCcw4, { className: "w-3.5 h-3.5" }), labelKey: "statusReview", color: "text-info" },
|
|
@@ -99624,12 +99895,12 @@ function TasksPanel() {
|
|
|
99624
99895
|
init_ws_client();
|
|
99625
99896
|
init_utils();
|
|
99626
99897
|
init_i18n();
|
|
99627
|
-
import { CheckCircle2 as CheckCircle29, Circle as Circle7, Clock as
|
|
99898
|
+
import { CheckCircle2 as CheckCircle29, Circle as Circle7, Clock as Clock6 } from "lucide-react";
|
|
99628
99899
|
import { useCallback as useCallback17, useEffect as useEffect41, useRef as useRef14, useState as useState33 } from "react";
|
|
99629
99900
|
import { jsx as jsx57, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
99630
99901
|
var STATUS_CONFIG2 = {
|
|
99631
99902
|
open: { icon: /* @__PURE__ */ jsx57(Circle7, { className: "w-3.5 h-3.5" }), labelKey: "statusOpen", color: "text-muted-foreground/70" },
|
|
99632
|
-
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" },
|
|
99633
99904
|
done: { icon: /* @__PURE__ */ jsx57(CheckCircle29, { className: "w-3.5 h-3.5" }), labelKey: "statusDone", color: "text-success" }
|
|
99634
99905
|
};
|
|
99635
99906
|
function PlanPanel() {
|
|
@@ -100177,7 +100448,7 @@ import { VList as VList2 } from "virtua";
|
|
|
100177
100448
|
init_i18n();
|
|
100178
100449
|
init_memory_injector_store();
|
|
100179
100450
|
init_utils();
|
|
100180
|
-
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";
|
|
100181
100452
|
import { memo as memo4, useEffect as useEffect44 } from "react";
|
|
100182
100453
|
import { Fragment as Fragment12, jsx as jsx63, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
100183
100454
|
function formatTime3(at) {
|
|
@@ -100331,7 +100602,7 @@ var MemoryInjectorPanel = memo4(function MemoryInjectorPanel2({
|
|
|
100331
100602
|
] })
|
|
100332
100603
|
] }),
|
|
100333
100604
|
/* @__PURE__ */ jsxs58("div", { className: "mt-1 flex items-center gap-2 text-[10px] text-muted-foreground/80", children: [
|
|
100334
|
-
/* @__PURE__ */ jsx63(
|
|
100605
|
+
/* @__PURE__ */ jsx63(Clock7, { className: "size-3" }),
|
|
100335
100606
|
/* @__PURE__ */ jsx63("span", { children: formatTime3(latest.at) }),
|
|
100336
100607
|
/* @__PURE__ */ jsx63("span", { className: "opacity-40", children: "\xB7" }),
|
|
100337
100608
|
/* @__PURE__ */ jsx63("span", { className: "font-mono", children: latest.trigger }),
|
|
@@ -100423,7 +100694,7 @@ var MemoryInjectorPanel = memo4(function MemoryInjectorPanel2({
|
|
|
100423
100694
|
className: "border-b border-border/30 px-4 py-2.5",
|
|
100424
100695
|
children: [
|
|
100425
100696
|
/* @__PURE__ */ jsxs58("div", { className: "flex items-center gap-2 text-[11px] tabular-nums", children: [
|
|
100426
|
-
/* @__PURE__ */ jsx63(
|
|
100697
|
+
/* @__PURE__ */ jsx63(Clock7, { className: "size-3 text-muted-foreground/60" }),
|
|
100427
100698
|
/* @__PURE__ */ jsx63("span", { className: "text-muted-foreground", children: formatTime3(trace.at) }),
|
|
100428
100699
|
/* @__PURE__ */ jsx63("span", { className: "opacity-30", children: "\xB7" }),
|
|
100429
100700
|
/* @__PURE__ */ jsx63("span", { className: "font-mono text-foreground/80", children: trace.trigger }),
|
|
@@ -100551,10 +100822,19 @@ function useAutoSubmitStreak() {
|
|
|
100551
100822
|
}
|
|
100552
100823
|
}, [sessionId]);
|
|
100553
100824
|
useEffect45(() => {
|
|
100554
|
-
|
|
100825
|
+
const wasAuto = prevAutonomyRef.current === "auto";
|
|
100826
|
+
const isAuto = autonomy === "auto";
|
|
100827
|
+
if (!wasAuto && isAuto) {
|
|
100555
100828
|
_capWarned = false;
|
|
100556
100829
|
capWarnedRef.current = false;
|
|
100557
100830
|
}
|
|
100831
|
+
if (wasAuto && !isAuto) {
|
|
100832
|
+
_streak = 0;
|
|
100833
|
+
streakRef.current = 0;
|
|
100834
|
+
_loopHalted = false;
|
|
100835
|
+
_loopGuard.reset();
|
|
100836
|
+
_continuationTracker.reset();
|
|
100837
|
+
}
|
|
100558
100838
|
prevAutonomyRef.current = autonomy;
|
|
100559
100839
|
}, [autonomy]);
|
|
100560
100840
|
const canAutoSubmit = useCallback18(() => {
|
|
@@ -101131,17 +101411,28 @@ function NextStepsBar({
|
|
|
101131
101411
|
document.addEventListener("chat:next-step-countdown", handler);
|
|
101132
101412
|
return () => document.removeEventListener("chat:next-step-countdown", handler);
|
|
101133
101413
|
}, [steps.length, autoFillActive, isLatest, sessionEndAutoFill]);
|
|
101414
|
+
const prevGateRef = useRef17(yoloMode && autoMode && canAutoSubmitProp);
|
|
101415
|
+
useEffect47(() => {
|
|
101416
|
+
const gateOpen2 = yoloMode && autoMode && canAutoSubmitProp;
|
|
101417
|
+
const wasOpen = prevGateRef.current;
|
|
101418
|
+
prevGateRef.current = gateOpen2;
|
|
101419
|
+
if (!autoFillActive) return;
|
|
101420
|
+
if (wasOpen && !gateOpen2) {
|
|
101421
|
+
setAutoFillActive(false);
|
|
101422
|
+
}
|
|
101423
|
+
}, [autoFillActive, yoloMode, autoMode, canAutoSubmitProp]);
|
|
101424
|
+
const gateOpen = yoloMode && autoMode && canAutoSubmitProp;
|
|
101134
101425
|
const handleAutoFill = useCallback19(() => {
|
|
101135
101426
|
if (steps.length > 0) {
|
|
101136
101427
|
const step = steps[0];
|
|
101137
|
-
if (step.auto && onAutoSubmit) {
|
|
101428
|
+
if (step.auto && onAutoSubmit && gateOpen) {
|
|
101138
101429
|
onAutoSubmit(step.text);
|
|
101139
101430
|
} else {
|
|
101140
101431
|
fillInput(step.text);
|
|
101141
101432
|
}
|
|
101142
101433
|
}
|
|
101143
101434
|
setAutoFillActive(false);
|
|
101144
|
-
}, [steps, onAutoSubmit]);
|
|
101435
|
+
}, [steps, onAutoSubmit, gateOpen]);
|
|
101145
101436
|
const stepsKey = steps.map((s) => `${s.index}:${s.text}`).join("|");
|
|
101146
101437
|
useEffect47(() => {
|
|
101147
101438
|
setSelectedIndices(/* @__PURE__ */ new Set());
|
|
@@ -101566,7 +101857,7 @@ init_utils();
|
|
|
101566
101857
|
init_useWebSocket();
|
|
101567
101858
|
init_button();
|
|
101568
101859
|
import { useCallback as useCallback20, useEffect as useEffect50, useRef as useRef19, useState as useState41 } from "react";
|
|
101569
|
-
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";
|
|
101570
101861
|
import { Fragment as Fragment16, jsx as jsx72, jsxs as jsxs67 } from "react/jsx-runtime";
|
|
101571
101862
|
function RefinePanel({
|
|
101572
101863
|
original,
|
|
@@ -101734,7 +102025,7 @@ function RefinePanel({
|
|
|
101734
102025
|
return /* @__PURE__ */ jsxs67("div", { className: "rounded-lg border bg-card text-card-foreground shadow-sm overflow-hidden animate-message", children: [
|
|
101735
102026
|
/* @__PURE__ */ jsxs67("div", { className: "flex items-center justify-between px-4 py-2 border-b bg-muted/30", children: [
|
|
101736
102027
|
/* @__PURE__ */ jsxs67("div", { className: "flex items-center gap-2", children: [
|
|
101737
|
-
/* @__PURE__ */ jsx72(
|
|
102028
|
+
/* @__PURE__ */ jsx72(Clock8, { className: "h-4 w-4 text-primary" }),
|
|
101738
102029
|
/* @__PURE__ */ jsx72("span", { className: "text-sm font-medium", children: t("activity:refine.countdownHeader") }),
|
|
101739
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 })
|
|
101740
102031
|
] }),
|
|
@@ -103734,7 +104025,7 @@ init_i18n();
|
|
|
103734
104025
|
init_useWebSocket();
|
|
103735
104026
|
init_stores();
|
|
103736
104027
|
init_dialog();
|
|
103737
|
-
import { Clock as
|
|
104028
|
+
import { Clock as Clock9, History as History2, Rewind } from "lucide-react";
|
|
103738
104029
|
import { useCallback as useCallback22, useEffect as useEffect55, useRef as useRef22, useState as useState44 } from "react";
|
|
103739
104030
|
import { jsx as jsx77, jsxs as jsxs72 } from "react/jsx-runtime";
|
|
103740
104031
|
function mapCheckpoint(cp) {
|
|
@@ -103801,7 +104092,7 @@ function CheckpointTimeline({
|
|
|
103801
104092
|
] }) }),
|
|
103802
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") }),
|
|
103803
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: [
|
|
103804
|
-
/* @__PURE__ */ jsx77(
|
|
104095
|
+
/* @__PURE__ */ jsx77(Clock9, { className: "h-10 w-10 opacity-15" }),
|
|
103805
104096
|
/* @__PURE__ */ jsx77("p", { className: "text-sm font-medium", children: t("activity:checkpoint.emptyTitle") }),
|
|
103806
104097
|
/* @__PURE__ */ jsx77("p", { className: "text-xs text-center max-w-xs", children: t("activity:checkpoint.emptyBody") })
|
|
103807
104098
|
] }) : /* @__PURE__ */ jsx77("div", { className: "py-1", children: [...checkpoints].reverse().map((cp, i) => {
|
|
@@ -104100,7 +104391,7 @@ import {
|
|
|
104100
104391
|
CheckCircle2 as CheckCircle210,
|
|
104101
104392
|
ChevronDown as ChevronDown6,
|
|
104102
104393
|
ChevronRight as ChevronRight6,
|
|
104103
|
-
Clock as
|
|
104394
|
+
Clock as Clock10,
|
|
104104
104395
|
FileText as FileText5,
|
|
104105
104396
|
Loader2 as Loader210,
|
|
104106
104397
|
Trash2 as Trash28,
|
|
@@ -104540,7 +104831,7 @@ function ContextWindowEditor({ open, onClose }) {
|
|
|
104540
104831
|
] })
|
|
104541
104832
|
] }),
|
|
104542
104833
|
isLoading && /* @__PURE__ */ jsxs73("span", { className: "flex items-center gap-1 text-warning", children: [
|
|
104543
|
-
/* @__PURE__ */ jsx78(
|
|
104834
|
+
/* @__PURE__ */ jsx78(Clock10, { className: "h-3 w-3" }),
|
|
104544
104835
|
t("activity:ctxEditor.agentRunningApplyDisabled")
|
|
104545
104836
|
] })
|
|
104546
104837
|
] }),
|
|
@@ -106355,7 +106646,7 @@ init_i18n();
|
|
|
106355
106646
|
import {
|
|
106356
106647
|
ChevronDown as ChevronDown12,
|
|
106357
106648
|
ChevronRight as ChevronRight8,
|
|
106358
|
-
Clock as
|
|
106649
|
+
Clock as Clock11,
|
|
106359
106650
|
Download as Download5,
|
|
106360
106651
|
Loader2 as Loader211
|
|
106361
106652
|
} from "lucide-react";
|
|
@@ -106858,7 +107149,7 @@ var ToolLedgerCard = memo7(function ToolLedgerCard2({
|
|
|
106858
107149
|
expanded && /* @__PURE__ */ jsxs90("div", { className: "border-t border-border/40", children: [
|
|
106859
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: [
|
|
106860
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: [
|
|
106861
|
-
/* @__PURE__ */ jsx96(
|
|
107152
|
+
/* @__PURE__ */ jsx96(Clock11, { className: "h-3 w-3" }),
|
|
106862
107153
|
/* @__PURE__ */ jsx96("span", { children: t("activity:message.inputLabel") })
|
|
106863
107154
|
] }),
|
|
106864
107155
|
/* @__PURE__ */ jsx96(ToolInputView, { input: message.toolInput })
|
|
@@ -109092,6 +109383,7 @@ import { useShallow as useShallow12 } from "zustand/react/shallow";
|
|
|
109092
109383
|
// src/components/SettingsPanel/AgentSettingsTab.tsx
|
|
109093
109384
|
init_i18n();
|
|
109094
109385
|
init_local_prefs();
|
|
109386
|
+
init_session_store();
|
|
109095
109387
|
import { Activity as Activity8, Cpu as Cpu10, Zap as Zap15 } from "lucide-react";
|
|
109096
109388
|
import { useState as useState65 } from "react";
|
|
109097
109389
|
|
|
@@ -109501,6 +109793,19 @@ function PreferenceToggle({
|
|
|
109501
109793
|
|
|
109502
109794
|
// src/components/SettingsPanel/AgentSettingsTab.tsx
|
|
109503
109795
|
import { jsx as jsx111, jsxs as jsxs105 } from "react/jsx-runtime";
|
|
109796
|
+
var ALL_EFFORTS = [
|
|
109797
|
+
"none",
|
|
109798
|
+
"minimal",
|
|
109799
|
+
"low",
|
|
109800
|
+
"medium",
|
|
109801
|
+
"high",
|
|
109802
|
+
"xhigh",
|
|
109803
|
+
"max"
|
|
109804
|
+
];
|
|
109805
|
+
var EFFORT_SET = new Set(ALL_EFFORTS);
|
|
109806
|
+
function isEffort(value) {
|
|
109807
|
+
return EFFORT_SET.has(value);
|
|
109808
|
+
}
|
|
109504
109809
|
function AgentSettingsTab({
|
|
109505
109810
|
syncPref,
|
|
109506
109811
|
switchAutonomy
|
|
@@ -109508,6 +109813,23 @@ function AgentSettingsTab({
|
|
|
109508
109813
|
const { t } = useTranslation();
|
|
109509
109814
|
const localPrefs = useLocalPrefs();
|
|
109510
109815
|
const [refinerPickerOpen, setRefinerPickerOpen] = useState65(false);
|
|
109816
|
+
const EFFORT_LABEL_KEYS = {
|
|
109817
|
+
none: "settings:agent.reasoningEffortNone",
|
|
109818
|
+
minimal: "settings:agent.reasoningEffortMinimal",
|
|
109819
|
+
low: "settings:agent.reasoningEffortLow",
|
|
109820
|
+
medium: "settings:agent.reasoningEffortMedium",
|
|
109821
|
+
high: "settings:agent.reasoningEffortHigh",
|
|
109822
|
+
xhigh: "settings:agent.reasoningEffortXhigh",
|
|
109823
|
+
max: "settings:agent.reasoningEffortMax"
|
|
109824
|
+
};
|
|
109825
|
+
const effortLevels = useSessionStore((s) => s.reasoningEffortLevels);
|
|
109826
|
+
const narrowed = effortLevels?.length ? effortLevels.filter(isEffort) : [...ALL_EFFORTS];
|
|
109827
|
+
const current = localPrefs.reasoningEffort;
|
|
109828
|
+
if (isEffort(current) && !narrowed.includes(current)) narrowed.push(current);
|
|
109829
|
+
const effortOptions = narrowed.map((level) => ({
|
|
109830
|
+
value: level,
|
|
109831
|
+
label: t(EFFORT_LABEL_KEYS[level])
|
|
109832
|
+
}));
|
|
109511
109833
|
return /* @__PURE__ */ jsxs105("div", { className: "space-y-6", children: [
|
|
109512
109834
|
/* @__PURE__ */ jsxs105("div", { className: "rounded-xl border border-border/70 bg-card/80 p-5 shadow-sm", children: [
|
|
109513
109835
|
/* @__PURE__ */ jsxs105("div", { className: "flex items-start gap-3 mb-4", children: [
|
|
@@ -109700,23 +110022,9 @@ function AgentSettingsTab({
|
|
|
109700
110022
|
PreferenceSelect,
|
|
109701
110023
|
{
|
|
109702
110024
|
label: t("settings:agent.reasoningEffortLabel"),
|
|
109703
|
-
hint: t("settings:agent.reasoningEffortHint"),
|
|
110025
|
+
hint: effortLevels ? `${t("settings:agent.reasoningEffortHint")} (${t("settings:agent.reasoningEffortModelSet")})` : t("settings:agent.reasoningEffortHint"),
|
|
109704
110026
|
value: localPrefs.reasoningEffort,
|
|
109705
|
-
options:
|
|
109706
|
-
{ value: "none", label: t("settings:agent.reasoningEffortNone") },
|
|
109707
|
-
{
|
|
109708
|
-
value: "minimal",
|
|
109709
|
-
label: t("settings:agent.reasoningEffortMinimal")
|
|
109710
|
-
},
|
|
109711
|
-
{ value: "low", label: t("settings:agent.reasoningEffortLow") },
|
|
109712
|
-
{
|
|
109713
|
-
value: "medium",
|
|
109714
|
-
label: t("settings:agent.reasoningEffortMedium")
|
|
109715
|
-
},
|
|
109716
|
-
{ value: "high", label: t("settings:agent.reasoningEffortHigh") },
|
|
109717
|
-
{ value: "xhigh", label: t("settings:agent.reasoningEffortXhigh") },
|
|
109718
|
-
{ value: "max", label: t("settings:agent.reasoningEffortMax") }
|
|
109719
|
-
],
|
|
110027
|
+
options: effortOptions,
|
|
109720
110028
|
onChange: (v) => syncPref("reasoningEffort", v)
|
|
109721
110029
|
}
|
|
109722
110030
|
),
|
|
@@ -113583,7 +113891,7 @@ init_button();
|
|
|
113583
113891
|
import {
|
|
113584
113892
|
Brain as Brain9,
|
|
113585
113893
|
Check as Check19,
|
|
113586
|
-
Clock as
|
|
113894
|
+
Clock as Clock12,
|
|
113587
113895
|
DollarSign,
|
|
113588
113896
|
Eye as Eye3,
|
|
113589
113897
|
FileText as FileText9,
|
|
@@ -114256,7 +114564,7 @@ function ModelListEditor({
|
|
|
114256
114564
|
row.name && row.name !== row.modelId && /* @__PURE__ */ jsx135("span", { className: "text-[11px] text-muted-foreground", children: row.name })
|
|
114257
114565
|
] }) }),
|
|
114258
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: [
|
|
114259
|
-
/* @__PURE__ */ jsx135(
|
|
114567
|
+
/* @__PURE__ */ jsx135(Clock12, { className: "h-3 w-3" }),
|
|
114260
114568
|
ctx2
|
|
114261
114569
|
] }) : /* @__PURE__ */ jsx135("span", { className: "text-muted-foreground/40", children: "\u2014" }) }),
|
|
114262
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" }) }),
|