@wrongstack/webui 0.269.0 → 0.272.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/types.d.ts CHANGED
@@ -105,6 +105,13 @@ interface WSIterationCompleted {
105
105
  totalIterations: number;
106
106
  };
107
107
  }
108
+ interface WSIterationLimitReached {
109
+ type: 'iteration.limit_reached';
110
+ payload: {
111
+ currentIterations: number;
112
+ currentLimit: number;
113
+ };
114
+ }
108
115
  interface WSProviderResponse {
109
116
  type: 'provider.response';
110
117
  payload: {
@@ -113,6 +120,47 @@ interface WSProviderResponse {
113
120
  messageId: string;
114
121
  };
115
122
  }
123
+ interface WSProviderRetry {
124
+ type: 'provider.retry';
125
+ payload: {
126
+ providerId: string;
127
+ attempt: number;
128
+ delayMs: number;
129
+ status: number;
130
+ description: string;
131
+ };
132
+ }
133
+ interface WSProviderError {
134
+ type: 'provider.error';
135
+ payload: {
136
+ providerId: string;
137
+ status: number;
138
+ description: string;
139
+ retryable: boolean;
140
+ };
141
+ }
142
+ interface WSProviderFallback {
143
+ type: 'provider.fallback';
144
+ payload: {
145
+ from: {
146
+ providerId: string;
147
+ model: string;
148
+ };
149
+ to: {
150
+ providerId: string;
151
+ model: string;
152
+ };
153
+ status: number;
154
+ providerSwitched: boolean;
155
+ };
156
+ }
157
+ interface WSProviderStreamError {
158
+ type: 'provider.stream_error';
159
+ payload: {
160
+ eventType: string;
161
+ message: string;
162
+ };
163
+ }
116
164
  interface WSRunResult {
117
165
  type: 'run.result';
118
166
  payload: {
@@ -161,6 +209,45 @@ interface WSToolConfirmResult {
161
209
  decision: 'yes' | 'no' | 'always' | 'deny';
162
210
  };
163
211
  }
212
+ interface WSTrustPersisted {
213
+ type: 'trust.persisted';
214
+ payload: {
215
+ tool: string;
216
+ pattern: string;
217
+ decision: 'always' | 'deny';
218
+ };
219
+ }
220
+ interface WSToolLoopDetected {
221
+ type: 'tool.loop_detected';
222
+ payload: {
223
+ tools: string;
224
+ repeatCount: number;
225
+ iteration: number;
226
+ kind?: 'tool' | 'message' | 'mixed' | undefined;
227
+ };
228
+ }
229
+ interface WSDelegateStarted {
230
+ type: 'delegate.started';
231
+ payload: {
232
+ target: string;
233
+ task: string;
234
+ };
235
+ }
236
+ interface WSDelegateCompleted {
237
+ type: 'delegate.completed';
238
+ payload: {
239
+ target: string;
240
+ task: string;
241
+ ok: boolean;
242
+ status?: string | undefined;
243
+ summary: string;
244
+ durationMs: number;
245
+ iterations: number;
246
+ toolCalls: number;
247
+ costUsd?: number | undefined;
248
+ subagentId?: string | undefined;
249
+ };
250
+ }
164
251
  interface WSModelSwitch {
165
252
  type: 'model.switch';
166
253
  payload: {
@@ -213,6 +300,18 @@ interface WSContextCompacted {
213
300
  };
214
301
  };
215
302
  }
303
+ interface WSCompactionFailed {
304
+ type: 'compaction.failed';
305
+ payload: {
306
+ message: string;
307
+ aggressive: boolean;
308
+ level: 'warn' | 'soft' | 'hard';
309
+ tokens: number;
310
+ maxContext: number;
311
+ load: number;
312
+ fatal: boolean;
313
+ };
314
+ }
216
315
  interface WSContextRepaired {
217
316
  type: 'context.repaired';
218
317
  payload: {
@@ -223,6 +322,35 @@ interface WSContextRepaired {
223
322
  afterMessages?: number | undefined;
224
323
  };
225
324
  }
325
+ interface WSContextPct {
326
+ type: 'ctx.pct';
327
+ payload: {
328
+ load: number;
329
+ tokens: number;
330
+ maxContext: number;
331
+ };
332
+ }
333
+ interface WSContextMaxContext {
334
+ type: 'ctx.max_context';
335
+ payload: {
336
+ providerId: string;
337
+ modelId: string;
338
+ maxContext: number;
339
+ };
340
+ }
341
+ interface WSTokenThreshold {
342
+ type: 'token.threshold';
343
+ payload: {
344
+ used: number;
345
+ limit: number;
346
+ };
347
+ }
348
+ interface WSTokenCostEstimateUnavailable {
349
+ type: 'token.cost_estimate_unavailable';
350
+ payload: {
351
+ model: string;
352
+ };
353
+ }
226
354
  interface WSContextModesList {
227
355
  type: 'context.modes.list';
228
356
  payload: {
@@ -511,6 +639,40 @@ interface WSFilesList {
511
639
  files: string[];
512
640
  };
513
641
  }
642
+ type CompletionItemKind = 'text' | 'method' | 'function' | 'constructor' | 'field' | 'variable' | 'class' | 'interface' | 'module' | 'property' | 'unit' | 'value' | 'enum' | 'keyword' | 'snippet' | 'file' | 'reference';
643
+ interface WSCompletionRequest {
644
+ type: 'completion.request';
645
+ payload: {
646
+ requestId: string;
647
+ filePath: string;
648
+ language: string;
649
+ lineNumber: number;
650
+ column: number;
651
+ content?: string | undefined;
652
+ prefix: string;
653
+ suffix?: string | undefined;
654
+ triggerCharacter?: string | undefined;
655
+ triggerKind?: number | undefined;
656
+ allowLlm?: boolean | undefined;
657
+ };
658
+ }
659
+ interface WSCompletionResult {
660
+ type: 'completion.result';
661
+ payload: {
662
+ requestId: string;
663
+ filePath: string;
664
+ items: Array<{
665
+ label: string;
666
+ insertText: string;
667
+ kind?: CompletionItemKind | undefined;
668
+ detail?: string | undefined;
669
+ documentation?: string | undefined;
670
+ sortText?: string | undefined;
671
+ source?: 'llm' | 'index' | 'lsp' | undefined;
672
+ }>;
673
+ error?: string | undefined;
674
+ };
675
+ }
514
676
  interface WSTodosUpdated {
515
677
  type: 'todos.updated';
516
678
  payload: {
@@ -522,6 +684,10 @@ interface WSTodosUpdated {
522
684
  }>;
523
685
  };
524
686
  }
687
+ interface WSTodosCleared {
688
+ type: 'todos.cleared';
689
+ payload?: Record<string, never>;
690
+ }
525
691
  interface WSModesList {
526
692
  type: 'modes.list';
527
693
  payload: {
@@ -539,6 +705,50 @@ interface WSAutoPhaseState {
539
705
  type: 'autophase.state';
540
706
  payload: Record<string, unknown>;
541
707
  }
708
+ interface WSAutoPhaseProgress {
709
+ type: 'autophase.progress';
710
+ payload: Record<string, unknown>;
711
+ }
712
+ interface WSAutoPhaseLifecycle {
713
+ type: 'autophase.paused' | 'autophase.resumed' | 'autophase.stopped' | 'autophase.saved' | 'autophase.completed' | 'autophase.failed' | 'autophase.error';
714
+ payload: Record<string, unknown>;
715
+ }
716
+ interface WSAutoPhaseList {
717
+ type: 'autophase.list';
718
+ payload: {
719
+ graphs: unknown[];
720
+ };
721
+ }
722
+ interface WSEternalIteration {
723
+ type: 'eternal.iteration';
724
+ payload: {
725
+ entry: Record<string, unknown>;
726
+ };
727
+ }
728
+ interface WSAgentTimelineMessage {
729
+ type: 'agent.timeline.message';
730
+ payload: {
731
+ subagentId: string;
732
+ agentName: string;
733
+ content: string;
734
+ kind: 'text' | 'tool_use' | 'error' | 'status';
735
+ iteration: number;
736
+ ts: string;
737
+ toolName?: string | undefined;
738
+ costUsd?: number | undefined;
739
+ };
740
+ }
741
+ interface WSAgentStatusChanged {
742
+ type: 'agent.status_changed';
743
+ payload: {
744
+ subagentId: string;
745
+ agentName: string;
746
+ status: 'spawned' | 'running' | 'completed' | 'failed' | 'timeout' | 'stopped' | 'budget_exhausted';
747
+ ts: string;
748
+ summary?: string | undefined;
749
+ task?: string | undefined;
750
+ };
751
+ }
542
752
  /** One worktree lane in the swim-lane / DAG view. */
543
753
  interface WorktreeHandleView {
544
754
  handleId: string;
@@ -593,6 +803,20 @@ type WSClientMessage = WSUserMessage | WSToolConfirmResult | {
593
803
  } | {
594
804
  type: 'autophase.stop';
595
805
  payload: Record<string, never>;
806
+ } | {
807
+ type: 'autophase.status';
808
+ payload?: Record<string, never>;
809
+ } | {
810
+ type: 'autophase.save';
811
+ payload?: Record<string, never>;
812
+ } | {
813
+ type: 'autophase.list';
814
+ payload?: Record<string, never>;
815
+ } | {
816
+ type: 'autophase.load';
817
+ payload: {
818
+ graphId: string;
819
+ };
596
820
  } | {
597
821
  type: 'autophase.toggleAutonomous';
598
822
  payload: {
@@ -821,7 +1045,7 @@ type WSClientMessage = WSUserMessage | WSToolConfirmResult | {
821
1045
  filePath: string;
822
1046
  content: string;
823
1047
  };
824
- } | {
1048
+ } | WSCompletionRequest | {
825
1049
  type: 'todos.get';
826
1050
  } | {
827
1051
  type: 'todos.clear';
@@ -1083,7 +1307,7 @@ type WSClientMessage = WSUserMessage | WSToolConfirmResult | {
1083
1307
  } | {
1084
1308
  type: 'webui.shutdown';
1085
1309
  };
1086
- type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingDelta | WSToolUseStart | WSToolProgress | WSToolExecuted | WSIterationStarted | WSIterationCompleted | WSProviderResponse | WSRunResult | WSSessionStats | WSError | WSToolConfirmNeeded | WSContextDebug | WSContextCompacted | WSContextRepaired | WSContextModesList | WSContextModeChanged | WSToolsList | WSMemoryList | WSSkillsList | WSSkillContent | WSSkillsInstalled | WSSkillsUninstalled | WSSkillsUpdated | WSSkillsCreated | WSSkillsEdited | WSSkillsExported | WSDiagGet | WSStatsGet | WSSessionsList | WSProviderCatalog | WSProviderModels | WSSavedProviders | WSProviderProbe | WSKeyOperationResult | WSFilesList | {
1310
+ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingDelta | WSToolUseStart | WSToolProgress | WSToolExecuted | WSIterationStarted | WSIterationCompleted | WSIterationLimitReached | WSProviderResponse | WSProviderRetry | WSProviderError | WSProviderFallback | WSProviderStreamError | WSRunResult | WSSessionStats | WSError | WSToolConfirmNeeded | WSTrustPersisted | WSToolLoopDetected | WSDelegateStarted | WSDelegateCompleted | WSContextDebug | WSContextCompacted | WSCompactionFailed | WSContextRepaired | WSContextPct | WSContextMaxContext | WSTokenThreshold | WSTokenCostEstimateUnavailable | WSContextModesList | WSContextModeChanged | WSToolsList | WSMemoryList | WSSkillsList | WSSkillContent | WSSkillsInstalled | WSSkillsUninstalled | WSSkillsUpdated | WSSkillsCreated | WSSkillsEdited | WSSkillsExported | WSDiagGet | WSStatsGet | WSSessionsList | WSProviderCatalog | WSProviderModels | WSSavedProviders | WSProviderProbe | WSKeyOperationResult | WSFilesList | {
1087
1311
  type: 'files.tree';
1088
1312
  payload: {
1089
1313
  root: string;
@@ -1104,7 +1328,7 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
1104
1328
  success: boolean;
1105
1329
  error?: string | undefined;
1106
1330
  };
1107
- } | WSTodosUpdated | {
1331
+ } | WSCompletionResult | WSTodosUpdated | WSTodosCleared | {
1108
1332
  type: 'tasks.updated';
1109
1333
  payload: {
1110
1334
  tasks: unknown[];
@@ -1116,7 +1340,12 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
1116
1340
  plan: unknown | null;
1117
1341
  error?: string | undefined;
1118
1342
  };
1119
- } | WSModesList | WSAutoPhaseState | WSWorktreeState | WSWorktreeEvent | WSCollabState | WSCollabParticipantJoined | WSCollabParticipantLeft | WSCollabEvent | WSCollabAnnotationAdded | WSCollabAnnotationResolved | WSCollabPauseGranted | WSCollabPauseReleased | WSCollabInjectionGranted | {
1343
+ } | WSModesList | WSAutoPhaseState | WSAutoPhaseProgress | WSAutoPhaseLifecycle | WSAutoPhaseList | WSEternalIteration | WSAgentTimelineMessage | WSAgentStatusChanged | {
1344
+ type: 'subagent.event';
1345
+ payload: Record<string, unknown> & {
1346
+ kind: string;
1347
+ };
1348
+ } | WSWorktreeState | WSWorktreeEvent | WSCollabState | WSCollabParticipantJoined | WSCollabParticipantLeft | WSCollabEvent | WSCollabAnnotationAdded | WSCollabAnnotationResolved | WSCollabPauseGranted | WSCollabPauseReleased | WSCollabInjectionGranted | {
1120
1349
  type: 'session.checkpoints';
1121
1350
  payload: {
1122
1351
  checkpoints: Array<{
@@ -1134,6 +1363,25 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
1134
1363
  } | {
1135
1364
  type: 'prefs.updated';
1136
1365
  payload: Record<string, unknown>;
1366
+ } | {
1367
+ type: 'client.status_update';
1368
+ payload: Record<string, unknown>;
1369
+ } | {
1370
+ type: 'sessions.status_update';
1371
+ payload: {
1372
+ sessions: unknown[];
1373
+ };
1374
+ } | {
1375
+ type: 'mailbox.event';
1376
+ payload: Record<string, unknown> & {
1377
+ event: string;
1378
+ };
1379
+ } | {
1380
+ type: 'mailbox.received';
1381
+ payload: Record<string, unknown>;
1382
+ } | {
1383
+ type: 'mailbox.agent_registered';
1384
+ payload: Record<string, unknown>;
1137
1385
  } | {
1138
1386
  type: 'process.list';
1139
1387
  payload: {
@@ -1238,6 +1486,39 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
1238
1486
  payload: Record<string, unknown> & {
1239
1487
  event: string;
1240
1488
  };
1489
+ } | {
1490
+ type: 'session.damaged';
1491
+ payload: {
1492
+ sessionId: string;
1493
+ detail: string;
1494
+ };
1495
+ } | {
1496
+ type: 'session.rewound';
1497
+ payload: {
1498
+ toPromptIndex: number;
1499
+ revertedFiles: string[];
1500
+ removedEvents: number;
1501
+ };
1502
+ } | {
1503
+ type: 'checkpoint.written';
1504
+ payload: {
1505
+ promptIndex: number;
1506
+ promptPreview: string;
1507
+ ts: string;
1508
+ fileCount: number;
1509
+ };
1510
+ } | {
1511
+ type: 'in_flight.started';
1512
+ payload: {
1513
+ context: string;
1514
+ ts: string;
1515
+ };
1516
+ } | {
1517
+ type: 'in_flight.ended';
1518
+ payload: {
1519
+ reason: 'clean' | 'aborted' | 'recovered';
1520
+ ts: string;
1521
+ };
1241
1522
  } | {
1242
1523
  type: 'model.refine_result';
1243
1524
  payload: {
@@ -1275,6 +1556,12 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
1275
1556
  currentTask?: string;
1276
1557
  }>;
1277
1558
  };
1559
+ } | {
1560
+ type: 'fleet.concurrency_update';
1561
+ payload: {
1562
+ fleetConcurrency: number;
1563
+ fleetConcurrencyMax: number;
1564
+ };
1278
1565
  } | {
1279
1566
  type: 'budget.threshold_reached';
1280
1567
  payload: {
@@ -1423,6 +1710,19 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
1423
1710
  payload: {
1424
1711
  name: string;
1425
1712
  pid?: number;
1713
+ toolCount?: number;
1714
+ };
1715
+ } | {
1716
+ type: 'mcp.server.reconnected';
1717
+ payload: {
1718
+ name: string;
1719
+ toolCount: number;
1720
+ };
1721
+ } | {
1722
+ type: 'mcp.server.disconnected';
1723
+ payload: {
1724
+ name: string;
1725
+ reason: string;
1426
1726
  };
1427
1727
  } | {
1428
1728
  type: 'mcp.server.error';
@@ -1436,6 +1736,16 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
1436
1736
  success: boolean;
1437
1737
  message: string;
1438
1738
  };
1739
+ } | {
1740
+ type: 'mailbox.cleared';
1741
+ payload: {
1742
+ error?: string | undefined;
1743
+ };
1744
+ } | {
1745
+ type: 'mailbox.purged';
1746
+ payload: Record<string, unknown> & {
1747
+ error?: string | undefined;
1748
+ };
1439
1749
  } | {
1440
1750
  type: 'terminal.output';
1441
1751
  payload: {
@@ -1661,4 +1971,4 @@ interface WSCollabInjectionGranted {
1661
1971
  };
1662
1972
  }
1663
1973
 
1664
- export type { BroadcastFn, CollabPanelMessage, CollabRole, MemoryScope, WSAutoPhaseState, WSClientMessage, WSCollabAnnotate, WSCollabAnnotationAdded, WSCollabAnnotationResolved, WSCollabEvent, WSCollabGrantControl, WSCollabInjectTool, WSCollabInjectionGranted, WSCollabJoin, WSCollabLeave, WSCollabParticipantJoined, WSCollabParticipantLeft, WSCollabPauseGranted, WSCollabPauseReleased, WSCollabRequestPause, WSCollabResolve, WSCollabResume, WSCollabState, WSContextCompacted, WSContextDebug, WSContextModeChanged, WSContextModesList, WSContextRepaired, WSDiagGet, WSError, WSFilesList, WSIterationCompleted, WSIterationStarted, WSKeyOperationResult, WSMemoryList, WSMessage, WSModelSwitch, WSModesList, WSProviderCatalog, WSProviderModels, WSProviderProbe, WSProviderResponse, WSRunResult, WSSavedProviders, WSServerMessage, WSSessionEnd, WSSessionStart, WSSessionStats, WSSessionsList, WSSkillContent, WSSkillsCreated, WSSkillsEdited, WSSkillsExported, WSSkillsInstalled, WSSkillsList, WSSkillsUninstalled, WSSkillsUpdated, WSStatsGet, WSTextDelta, WSThinkingDelta, WSTodosUpdated, WSToolConfirmNeeded, WSToolConfirmResult, WSToolExecuted, WSToolProgress, WSToolUseStart, WSToolsList, WSUserMessage, WSWorktreeEvent, WSWorktreeState, WorktreeHandleView };
1974
+ export type { BroadcastFn, CollabPanelMessage, CollabRole, CompletionItemKind, MemoryScope, WSAgentStatusChanged, WSAgentTimelineMessage, WSAutoPhaseLifecycle, WSAutoPhaseList, WSAutoPhaseProgress, WSAutoPhaseState, WSClientMessage, WSCollabAnnotate, WSCollabAnnotationAdded, WSCollabAnnotationResolved, WSCollabEvent, WSCollabGrantControl, WSCollabInjectTool, WSCollabInjectionGranted, WSCollabJoin, WSCollabLeave, WSCollabParticipantJoined, WSCollabParticipantLeft, WSCollabPauseGranted, WSCollabPauseReleased, WSCollabRequestPause, WSCollabResolve, WSCollabResume, WSCollabState, WSCompactionFailed, WSCompletionRequest, WSCompletionResult, WSContextCompacted, WSContextDebug, WSContextMaxContext, WSContextModeChanged, WSContextModesList, WSContextPct, WSContextRepaired, WSDelegateCompleted, WSDelegateStarted, WSDiagGet, WSError, WSEternalIteration, WSFilesList, WSIterationCompleted, WSIterationLimitReached, WSIterationStarted, WSKeyOperationResult, WSMemoryList, WSMessage, WSModelSwitch, WSModesList, WSProviderCatalog, WSProviderError, WSProviderFallback, WSProviderModels, WSProviderProbe, WSProviderResponse, WSProviderRetry, WSProviderStreamError, WSRunResult, WSSavedProviders, WSServerMessage, WSSessionEnd, WSSessionStart, WSSessionStats, WSSessionsList, WSSkillContent, WSSkillsCreated, WSSkillsEdited, WSSkillsExported, WSSkillsInstalled, WSSkillsList, WSSkillsUninstalled, WSSkillsUpdated, WSStatsGet, WSTextDelta, WSThinkingDelta, WSTodosCleared, WSTodosUpdated, WSTokenCostEstimateUnavailable, WSTokenThreshold, WSToolConfirmNeeded, WSToolConfirmResult, WSToolExecuted, WSToolLoopDetected, WSToolProgress, WSToolUseStart, WSToolsList, WSTrustPersisted, WSUserMessage, WSWorktreeEvent, WSWorktreeState, WorktreeHandleView };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/webui",
3
- "version": "0.269.0",
3
+ "version": "0.272.0",
4
4
  "license": "MIT",
5
5
  "description": "Browser-based WebUI for WrongStack — React + Vite frontend with WebSocket backend that drives the same agent kernel as the CLI/TUI.",
6
6
  "keywords": [
@@ -87,11 +87,11 @@
87
87
  "virtua": "^0.49.1",
88
88
  "ws": "^8.21.0",
89
89
  "zustand": "^5.0.14",
90
- "@wrongstack/core": "0.269.0",
91
- "@wrongstack/runtime": "0.269.0",
92
- "@wrongstack/tools": "0.269.0",
93
- "@wrongstack/providers": "0.269.0",
94
- "@wrongstack/mcp": "0.269.0"
90
+ "@wrongstack/core": "0.272.0",
91
+ "@wrongstack/mcp": "0.272.0",
92
+ "@wrongstack/tools": "0.272.0",
93
+ "@wrongstack/providers": "0.272.0",
94
+ "@wrongstack/runtime": "0.272.0"
95
95
  },
96
96
  "devDependencies": {
97
97
  "@playwright/test": "^1.60.0",