@wrongstack/webui 0.275.1 → 0.276.2

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
@@ -37,9 +37,12 @@ interface WSSessionEnd {
37
37
  totalCost: number;
38
38
  };
39
39
  }
40
+ interface SessionScopedPayload {
41
+ sessionId?: string | undefined;
42
+ }
40
43
  interface WSUserMessage {
41
44
  type: 'user_message';
42
- payload: {
45
+ payload: SessionScopedPayload & {
43
46
  id: string;
44
47
  content: string;
45
48
  timestamp: number;
@@ -49,20 +52,20 @@ interface WSUserMessage {
49
52
  }
50
53
  interface WSTextDelta {
51
54
  type: 'provider.text_delta';
52
- payload: {
55
+ payload: SessionScopedPayload & {
53
56
  text: string;
54
57
  messageId: string;
55
58
  };
56
59
  }
57
60
  interface WSThinkingDelta {
58
61
  type: 'provider.thinking_delta';
59
- payload: {
62
+ payload: SessionScopedPayload & {
60
63
  text: string;
61
64
  };
62
65
  }
63
66
  interface WSToolUseStart {
64
67
  type: 'tool.started';
65
- payload: {
68
+ payload: SessionScopedPayload & {
66
69
  id: string;
67
70
  name: string;
68
71
  input?: unknown | undefined;
@@ -71,7 +74,7 @@ interface WSToolUseStart {
71
74
  }
72
75
  interface WSToolProgress {
73
76
  type: 'tool.progress';
74
- payload: {
77
+ payload: SessionScopedPayload & {
75
78
  name: string;
76
79
  id: string;
77
80
  event: {
@@ -83,7 +86,7 @@ interface WSToolProgress {
83
86
  }
84
87
  interface WSToolExecuted {
85
88
  type: 'tool.executed';
86
- payload: {
89
+ payload: SessionScopedPayload & {
87
90
  id: string;
88
91
  name: string;
89
92
  durationMs: number;
@@ -94,28 +97,28 @@ interface WSToolExecuted {
94
97
  }
95
98
  interface WSIterationStarted {
96
99
  type: 'iteration.started';
97
- payload: {
100
+ payload: SessionScopedPayload & {
98
101
  index: number;
99
102
  maxIterations?: number | undefined;
100
103
  };
101
104
  }
102
105
  interface WSIterationCompleted {
103
106
  type: 'iteration.completed';
104
- payload: {
107
+ payload: SessionScopedPayload & {
105
108
  index: number;
106
109
  totalIterations: number;
107
110
  };
108
111
  }
109
112
  interface WSIterationLimitReached {
110
113
  type: 'iteration.limit_reached';
111
- payload: {
114
+ payload: SessionScopedPayload & {
112
115
  currentIterations: number;
113
116
  currentLimit: number;
114
117
  };
115
118
  }
116
119
  interface WSProviderResponse {
117
120
  type: 'provider.response';
118
- payload: {
121
+ payload: SessionScopedPayload & {
119
122
  usage: Usage;
120
123
  stopReason: string;
121
124
  messageId: string;
@@ -123,7 +126,7 @@ interface WSProviderResponse {
123
126
  }
124
127
  interface WSProviderRetry {
125
128
  type: 'provider.retry';
126
- payload: {
129
+ payload: SessionScopedPayload & {
127
130
  providerId: string;
128
131
  attempt: number;
129
132
  delayMs: number;
@@ -133,7 +136,7 @@ interface WSProviderRetry {
133
136
  }
134
137
  interface WSProviderError {
135
138
  type: 'provider.error';
136
- payload: {
139
+ payload: SessionScopedPayload & {
137
140
  providerId: string;
138
141
  status: number;
139
142
  description: string;
@@ -142,7 +145,7 @@ interface WSProviderError {
142
145
  }
143
146
  interface WSProviderFallback {
144
147
  type: 'provider.fallback';
145
- payload: {
148
+ payload: SessionScopedPayload & {
146
149
  from: {
147
150
  providerId: string;
148
151
  model: string;
@@ -157,14 +160,14 @@ interface WSProviderFallback {
157
160
  }
158
161
  interface WSProviderStreamError {
159
162
  type: 'provider.stream_error';
160
- payload: {
163
+ payload: SessionScopedPayload & {
161
164
  eventType: string;
162
165
  message: string;
163
166
  };
164
167
  }
165
168
  interface WSRunResult {
166
169
  type: 'run.result';
167
- payload: {
170
+ payload: SessionScopedPayload & {
168
171
  status: 'done' | 'failed' | 'max_iterations' | 'aborted';
169
172
  iterations: number;
170
173
  finalText?: string | undefined;
@@ -188,14 +191,14 @@ interface WSSessionStats {
188
191
  }
189
192
  interface WSError {
190
193
  type: 'error';
191
- payload: {
194
+ payload: SessionScopedPayload & {
192
195
  phase: string;
193
196
  message: string;
194
197
  };
195
198
  }
196
199
  interface WSToolConfirmNeeded {
197
200
  type: 'tool.confirm_needed';
198
- payload: {
201
+ payload: SessionScopedPayload & {
199
202
  id: string;
200
203
  toolName: string;
201
204
  input: unknown;
@@ -205,14 +208,14 @@ interface WSToolConfirmNeeded {
205
208
  }
206
209
  interface WSToolConfirmResult {
207
210
  type: 'tool.confirm_result';
208
- payload: {
211
+ payload: SessionScopedPayload & {
209
212
  id: string;
210
213
  decision: 'yes' | 'no' | 'always' | 'deny';
211
214
  };
212
215
  }
213
216
  interface WSTrustPersisted {
214
217
  type: 'trust.persisted';
215
- payload: {
218
+ payload: SessionScopedPayload & {
216
219
  tool: string;
217
220
  pattern: string;
218
221
  decision: 'always' | 'deny';
@@ -220,7 +223,7 @@ interface WSTrustPersisted {
220
223
  }
221
224
  interface WSToolLoopDetected {
222
225
  type: 'tool.loop_detected';
223
- payload: {
226
+ payload: SessionScopedPayload & {
224
227
  tools: string;
225
228
  repeatCount: number;
226
229
  iteration: number;
@@ -229,14 +232,14 @@ interface WSToolLoopDetected {
229
232
  }
230
233
  interface WSDelegateStarted {
231
234
  type: 'delegate.started';
232
- payload: {
235
+ payload: SessionScopedPayload & {
233
236
  target: string;
234
237
  task: string;
235
238
  };
236
239
  }
237
240
  interface WSDelegateCompleted {
238
241
  type: 'delegate.completed';
239
- payload: {
242
+ payload: SessionScopedPayload & {
240
243
  target: string;
241
244
  task: string;
242
245
  ok: boolean;
@@ -259,7 +262,7 @@ interface WSModelSwitch {
259
262
  type MemoryScope = 'project-agents' | 'project-memory' | 'user-memory';
260
263
  interface WSContextDebug {
261
264
  type: 'context.debug';
262
- payload: {
265
+ payload: SessionScopedPayload & {
263
266
  total: number;
264
267
  mode?: string | undefined;
265
268
  policy?: unknown | undefined;
@@ -286,7 +289,7 @@ interface WSContextDebug {
286
289
  }
287
290
  interface WSContextCompacted {
288
291
  type: 'context.compacted';
289
- payload: {
292
+ payload: SessionScopedPayload & {
290
293
  before: number;
291
294
  after: number;
292
295
  saved: number;
@@ -303,7 +306,7 @@ interface WSContextCompacted {
303
306
  }
304
307
  interface WSCompactionFailed {
305
308
  type: 'compaction.failed';
306
- payload: {
309
+ payload: SessionScopedPayload & {
307
310
  message: string;
308
311
  aggressive: boolean;
309
312
  level: 'warn' | 'soft' | 'hard';
@@ -315,7 +318,7 @@ interface WSCompactionFailed {
315
318
  }
316
319
  interface WSContextRepaired {
317
320
  type: 'context.repaired';
318
- payload: {
321
+ payload: SessionScopedPayload & {
319
322
  removedToolUses: string[];
320
323
  removedToolResults: string[];
321
324
  removedMessages: number;
@@ -325,7 +328,7 @@ interface WSContextRepaired {
325
328
  }
326
329
  interface WSContextPct {
327
330
  type: 'ctx.pct';
328
- payload: {
331
+ payload: SessionScopedPayload & {
329
332
  load: number;
330
333
  rawLoad?: number | undefined;
331
334
  tokens: number;
@@ -334,7 +337,7 @@ interface WSContextPct {
334
337
  }
335
338
  interface WSContextMaxContext {
336
339
  type: 'ctx.max_context';
337
- payload: {
340
+ payload: SessionScopedPayload & {
338
341
  providerId: string;
339
342
  modelId: string;
340
343
  maxContext: number;
@@ -342,20 +345,20 @@ interface WSContextMaxContext {
342
345
  }
343
346
  interface WSTokenThreshold {
344
347
  type: 'token.threshold';
345
- payload: {
348
+ payload: SessionScopedPayload & {
346
349
  used: number;
347
350
  limit: number;
348
351
  };
349
352
  }
350
353
  interface WSTokenCostEstimateUnavailable {
351
354
  type: 'token.cost_estimate_unavailable';
352
- payload: {
355
+ payload: SessionScopedPayload & {
353
356
  model: string;
354
357
  };
355
358
  }
356
359
  interface WSContextModesList {
357
360
  type: 'context.modes.list';
358
- payload: {
361
+ payload: SessionScopedPayload & {
359
362
  activeId: string;
360
363
  modes: Array<{
361
364
  id: string;
@@ -374,7 +377,7 @@ interface WSContextModesList {
374
377
  }
375
378
  interface WSContextModeChanged {
376
379
  type: 'context.mode.changed';
377
- payload: {
380
+ payload: SessionScopedPayload & {
378
381
  id: string;
379
382
  name: string;
380
383
  policy: unknown;
@@ -575,7 +578,7 @@ interface WSSkillsExported {
575
578
  }
576
579
  interface WSDiagGet {
577
580
  type: 'diag.get';
578
- payload: {
581
+ payload: SessionScopedPayload & {
579
582
  provider: string;
580
583
  model: string;
581
584
  cwd: string;
@@ -601,7 +604,7 @@ interface WSDiagGet {
601
604
  }
602
605
  interface WSStatsGet {
603
606
  type: 'stats.get';
604
- payload: {
607
+ payload: SessionScopedPayload & {
605
608
  sessionId: string;
606
609
  provider: string;
607
610
  model: string;
@@ -626,7 +629,7 @@ interface WSStatsGet {
626
629
  }
627
630
  interface WSSideEffects {
628
631
  type: 'side_effects';
629
- payload: {
632
+ payload: SessionScopedPayload & {
630
633
  sideEffects: Array<{
631
634
  toolUseId: string;
632
635
  toolName: string;
@@ -728,6 +731,31 @@ interface WSKeyOperationResult {
728
731
  message: string;
729
732
  };
730
733
  }
734
+ /** Which subscription OAuth login a flow is running. */
735
+ type OAuthKind = 'chatgpt' | 'claude' | 'copilot';
736
+ /**
737
+ * Progress for an in-flight subscription OAuth login, broadcast in reply to
738
+ * `auth.oauth.start` / `auth.oauth.code`. `phase` drives the UI:
739
+ * - `awaiting_browser` — loopback flows: open `authorizeUrl` in a new tab.
740
+ * - `awaiting_code` — copilot device flow: show `userCode` + `verificationUri`.
741
+ * - `exchanging` / `fetching_models` — spinner states.
742
+ * - `success` — `providerId` is now saved (the `providers.saved` broadcast follows).
743
+ * - `error` — `message` carries the reason.
744
+ */
745
+ interface WSAuthOAuthStatus {
746
+ type: 'auth.oauth.status';
747
+ payload: {
748
+ kind: OAuthKind;
749
+ phase: 'awaiting_browser' | 'awaiting_code' | 'exchanging' | 'fetching_models' | 'success' | 'error';
750
+ providerId?: string | undefined;
751
+ authorizeUrl?: string | undefined;
752
+ verificationUri?: string | undefined;
753
+ userCode?: string | undefined;
754
+ /** True when a loopback listener bound (false → manual paste needed). */
755
+ bound?: boolean | undefined;
756
+ message?: string | undefined;
757
+ };
758
+ }
731
759
  interface WSFilesList {
732
760
  type: 'files.list';
733
761
  payload: {
@@ -770,7 +798,7 @@ interface WSCompletionResult {
770
798
  }
771
799
  interface WSTodosUpdated {
772
800
  type: 'todos.updated';
773
- payload: {
801
+ payload: SessionScopedPayload & {
774
802
  todos: Array<{
775
803
  id: string;
776
804
  content: string;
@@ -822,7 +850,7 @@ interface WSEternalIteration {
822
850
  }
823
851
  interface WSAgentTimelineMessage {
824
852
  type: 'agent.timeline.message';
825
- payload: {
853
+ payload: SessionScopedPayload & {
826
854
  subagentId: string;
827
855
  agentName: string;
828
856
  content: string;
@@ -835,7 +863,7 @@ interface WSAgentTimelineMessage {
835
863
  }
836
864
  interface WSAgentStatusChanged {
837
865
  type: 'agent.status_changed';
838
- payload: {
866
+ payload: SessionScopedPayload & {
839
867
  subagentId: string;
840
868
  agentName: string;
841
869
  status: 'spawned' | 'running' | 'completed' | 'failed' | 'timeout' | 'stopped' | 'budget_exhausted';
@@ -1195,39 +1223,45 @@ type WSClientMessage = WSUserMessage | WSToolConfirmResult | {
1195
1223
  };
1196
1224
  } | {
1197
1225
  type: 'abort';
1198
- payload: Record<string, never>;
1226
+ payload: SessionScopedPayload;
1199
1227
  } | {
1200
1228
  type: 'session.resume';
1201
1229
  payload: {
1202
1230
  id: string;
1203
- };
1231
+ } & SessionScopedPayload;
1204
1232
  } | {
1205
1233
  type: 'session.new';
1234
+ payload?: SessionScopedPayload;
1206
1235
  } | {
1207
1236
  type: 'session.checkpoints';
1237
+ payload?: SessionScopedPayload;
1208
1238
  } | {
1209
1239
  type: 'session.rewind';
1210
1240
  payload: {
1211
1241
  checkpointIndex: number;
1212
- };
1242
+ } & SessionScopedPayload;
1213
1243
  } | {
1214
1244
  type: 'context.clear';
1245
+ payload?: SessionScopedPayload;
1215
1246
  } | {
1216
1247
  type: 'context.compact';
1217
1248
  payload: {
1218
1249
  aggressive: boolean;
1219
- };
1250
+ } & SessionScopedPayload;
1220
1251
  } | {
1221
1252
  type: 'context.repair';
1253
+ payload?: SessionScopedPayload;
1222
1254
  } | {
1223
1255
  type: 'context.debug';
1256
+ payload?: SessionScopedPayload;
1224
1257
  } | {
1225
1258
  type: 'context.modes.list';
1259
+ payload?: SessionScopedPayload;
1226
1260
  } | {
1227
1261
  type: 'context.mode.switch';
1228
1262
  payload: {
1229
1263
  id: string;
1230
- };
1264
+ } & SessionScopedPayload;
1231
1265
  } | {
1232
1266
  type: 'context.mode.create';
1233
1267
  payload: {
@@ -1241,7 +1275,7 @@ type WSClientMessage = WSUserMessage | WSToolConfirmResult | {
1241
1275
  };
1242
1276
  preserveK: number;
1243
1277
  eliseThreshold: number;
1244
- };
1278
+ } & SessionScopedPayload;
1245
1279
  } | {
1246
1280
  type: 'context.mode.update';
1247
1281
  payload: {
@@ -1255,12 +1289,12 @@ type WSClientMessage = WSUserMessage | WSToolConfirmResult | {
1255
1289
  } | undefined;
1256
1290
  preserveK?: number | undefined;
1257
1291
  eliseThreshold?: number | undefined;
1258
- };
1292
+ } & SessionScopedPayload;
1259
1293
  } | {
1260
1294
  type: 'context.mode.delete';
1261
1295
  payload: {
1262
1296
  id: string;
1263
- };
1297
+ } & SessionScopedPayload;
1264
1298
  } | WSModelSwitch | {
1265
1299
  type: 'providers.list';
1266
1300
  } | {
@@ -1335,6 +1369,22 @@ type WSClientMessage = WSUserMessage | WSToolConfirmResult | {
1335
1369
  providerId: string;
1336
1370
  timeoutMs?: number | undefined;
1337
1371
  };
1372
+ } | {
1373
+ type: 'auth.oauth.start';
1374
+ payload: {
1375
+ kind: OAuthKind;
1376
+ };
1377
+ } | {
1378
+ type: 'auth.oauth.code';
1379
+ payload: {
1380
+ kind: OAuthKind;
1381
+ input: string;
1382
+ };
1383
+ } | {
1384
+ type: 'auth.oauth.cancel';
1385
+ payload: {
1386
+ kind: OAuthKind;
1387
+ };
1338
1388
  } | {
1339
1389
  type: 'tools.list';
1340
1390
  } | {
@@ -1403,15 +1453,18 @@ type WSClientMessage = WSUserMessage | WSToolConfirmResult | {
1403
1453
  };
1404
1454
  } | {
1405
1455
  type: 'diag.get';
1456
+ payload?: SessionScopedPayload;
1406
1457
  } | {
1407
1458
  type: 'stats.get';
1459
+ payload?: SessionScopedPayload;
1408
1460
  } | {
1409
1461
  type: 'session.save';
1462
+ payload?: SessionScopedPayload;
1410
1463
  } | {
1411
1464
  type: 'sessions.list';
1412
1465
  payload: {
1413
1466
  limit: number;
1414
- };
1467
+ } & SessionScopedPayload;
1415
1468
  } | {
1416
1469
  type: 'session.delete';
1417
1470
  payload: {
@@ -1449,37 +1502,41 @@ type WSClientMessage = WSUserMessage | WSToolConfirmResult | {
1449
1502
  };
1450
1503
  } | WSCompletionRequest | {
1451
1504
  type: 'todos.get';
1505
+ payload?: SessionScopedPayload;
1452
1506
  } | {
1453
1507
  type: 'todos.clear';
1508
+ payload?: SessionScopedPayload;
1454
1509
  } | {
1455
1510
  type: 'todos.remove';
1456
1511
  payload: {
1457
1512
  id?: string | undefined;
1458
1513
  index?: number | undefined;
1459
- };
1514
+ } & SessionScopedPayload;
1460
1515
  } | {
1461
1516
  type: 'todo.update';
1462
1517
  payload: {
1463
1518
  id: string;
1464
1519
  status?: 'pending' | 'in_progress' | 'completed' | undefined;
1465
1520
  activeForm?: string | undefined;
1466
- };
1521
+ } & SessionScopedPayload;
1467
1522
  } | {
1468
1523
  type: 'tasks.get';
1524
+ payload?: SessionScopedPayload;
1469
1525
  } | {
1470
1526
  type: 'task.update';
1471
1527
  payload: {
1472
1528
  id: string;
1473
1529
  status: string;
1474
- };
1530
+ } & SessionScopedPayload;
1475
1531
  } | {
1476
1532
  type: 'plan.get';
1533
+ payload?: SessionScopedPayload;
1477
1534
  } | {
1478
1535
  type: 'plan.item.update';
1479
1536
  payload: {
1480
1537
  target: string;
1481
1538
  status: 'open' | 'in_progress' | 'done';
1482
- };
1539
+ } & SessionScopedPayload;
1483
1540
  } | {
1484
1541
  type: 'ping';
1485
1542
  } | {
@@ -1733,7 +1790,7 @@ type WSClientMessage = WSUserMessage | WSToolConfirmResult | {
1733
1790
  } | {
1734
1791
  type: 'webui.shutdown';
1735
1792
  };
1736
- 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 | WSDesignList | WSDesignUse | WSDesignState | WSDesignSet | WSDesignMaterialize | WSDesignVerify | WSSkillsInstalled | WSSkillsUninstalled | WSSkillsUpdated | WSSkillsCreated | WSSkillsEdited | WSSkillsExported | WSDiagGet | WSStatsGet | WSSessionsList | WSProviderCatalog | WSProviderModels | WSSavedProviders | WSProviderProbe | WSKeyOperationResult | WSFilesList | {
1793
+ 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 | WSDesignList | WSDesignUse | WSDesignState | WSDesignSet | WSDesignMaterialize | WSDesignVerify | WSSkillsInstalled | WSSkillsUninstalled | WSSkillsUpdated | WSSkillsCreated | WSSkillsEdited | WSSkillsExported | WSDiagGet | WSStatsGet | WSSessionsList | WSProviderCatalog | WSProviderModels | WSSavedProviders | WSProviderProbe | WSKeyOperationResult | WSAuthOAuthStatus | WSFilesList | {
1737
1794
  type: 'files.tree';
1738
1795
  payload: {
1739
1796
  root: string;
@@ -1812,7 +1869,7 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
1812
1869
  };
1813
1870
  } | WSEternalIteration | WSAgentTimelineMessage | WSAgentStatusChanged | {
1814
1871
  type: 'subagent.event';
1815
- payload: Record<string, unknown> & {
1872
+ payload: SessionScopedPayload & Record<string, unknown> & {
1816
1873
  kind: string;
1817
1874
  };
1818
1875
  } | WSWorktreeState | WSWorktreeEvent | WSWorktreeOrphans | WSWorktreeCleanupResult | WSWorktreeMergeResult | WSWorktreeDiffResult | WSCollabState | WSCollabParticipantJoined | WSCollabParticipantLeft | WSCollabEvent | WSCollabAnnotationAdded | WSCollabAnnotationResolved | WSCollabPauseGranted | WSCollabPauseReleased | WSCollabInjectionGranted | {
@@ -1940,7 +1997,7 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
1940
1997
  };
1941
1998
  } | {
1942
1999
  type: 'brain.answer';
1943
- payload: {
2000
+ payload: SessionScopedPayload & {
1944
2001
  question: string;
1945
2002
  decision: {
1946
2003
  type: string;
@@ -1953,7 +2010,7 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
1953
2010
  };
1954
2011
  } | {
1955
2012
  type: 'brain.event';
1956
- payload: Record<string, unknown> & {
2013
+ payload: SessionScopedPayload & Record<string, unknown> & {
1957
2014
  event: string;
1958
2015
  };
1959
2016
  } | {
@@ -1964,14 +2021,14 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
1964
2021
  };
1965
2022
  } | {
1966
2023
  type: 'session.rewound';
1967
- payload: {
2024
+ payload: SessionScopedPayload & {
1968
2025
  toPromptIndex: number;
1969
2026
  revertedFiles: string[];
1970
2027
  removedEvents: number;
1971
2028
  };
1972
2029
  } | {
1973
2030
  type: 'checkpoint.written';
1974
- payload: {
2031
+ payload: SessionScopedPayload & {
1975
2032
  promptIndex: number;
1976
2033
  promptPreview: string;
1977
2034
  ts: string;
@@ -1979,13 +2036,13 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
1979
2036
  };
1980
2037
  } | {
1981
2038
  type: 'in_flight.started';
1982
- payload: {
2039
+ payload: SessionScopedPayload & {
1983
2040
  context: string;
1984
2041
  ts: string;
1985
2042
  };
1986
2043
  } | {
1987
2044
  type: 'in_flight.ended';
1988
- payload: {
2045
+ payload: SessionScopedPayload & {
1989
2046
  reason: 'clean' | 'aborted' | 'recovered';
1990
2047
  ts: string;
1991
2048
  };
@@ -2011,7 +2068,7 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
2011
2068
  };
2012
2069
  } | {
2013
2070
  type: 'coordinator.stats';
2014
- payload: {
2071
+ payload: SessionScopedPayload & {
2015
2072
  total: number;
2016
2073
  running: number;
2017
2074
  idle: number;
@@ -2028,13 +2085,13 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
2028
2085
  };
2029
2086
  } | {
2030
2087
  type: 'fleet.concurrency_update';
2031
- payload: {
2088
+ payload: SessionScopedPayload & {
2032
2089
  fleetConcurrency: number;
2033
2090
  fleetConcurrencyMax: number;
2034
2091
  };
2035
2092
  } | {
2036
2093
  type: 'budget.threshold_reached';
2037
- payload: {
2094
+ payload: SessionScopedPayload & {
2038
2095
  subagentId: string;
2039
2096
  taskId?: string;
2040
2097
  ts: number;
@@ -2441,4 +2498,4 @@ interface WSCollabInjectionGranted {
2441
2498
  };
2442
2499
  }
2443
2500
 
2444
- 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, WSDesignKitSummary, WSDesignList, WSDesignMaterialize, WSDesignSet, WSDesignState, WSDesignUse, WSDesignVerify, 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, WSSideEffects, WSSkillContent, WSSkillsCreated, WSSkillsEdited, WSSkillsExported, WSSkillsInstalled, WSSkillsList, WSSkillsUninstalled, WSSkillsUpdated, WSStatsGet, WSTextDelta, WSThinkingDelta, WSTodosCleared, WSTodosUpdated, WSTokenCostEstimateUnavailable, WSTokenThreshold, WSToolConfirmNeeded, WSToolConfirmResult, WSToolExecuted, WSToolLoopDetected, WSToolProgress, WSToolUseStart, WSToolsList, WSTrustPersisted, WSUserMessage, WSWorktreeCleanupResult, WSWorktreeDiffResult, WSWorktreeEvent, WSWorktreeMergeResult, WSWorktreeOrphans, WSWorktreeState, WorktreeDiffSummary, WorktreeHandleView, WorktreeOrphanView };
2501
+ export type { BroadcastFn, CollabPanelMessage, CollabRole, CompletionItemKind, MemoryScope, OAuthKind, SessionScopedPayload, WSAgentStatusChanged, WSAgentTimelineMessage, WSAuthOAuthStatus, 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, WSDesignKitSummary, WSDesignList, WSDesignMaterialize, WSDesignSet, WSDesignState, WSDesignUse, WSDesignVerify, 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, WSSideEffects, WSSkillContent, WSSkillsCreated, WSSkillsEdited, WSSkillsExported, WSSkillsInstalled, WSSkillsList, WSSkillsUninstalled, WSSkillsUpdated, WSStatsGet, WSTextDelta, WSThinkingDelta, WSTodosCleared, WSTodosUpdated, WSTokenCostEstimateUnavailable, WSTokenThreshold, WSToolConfirmNeeded, WSToolConfirmResult, WSToolExecuted, WSToolLoopDetected, WSToolProgress, WSToolUseStart, WSToolsList, WSTrustPersisted, WSUserMessage, WSWorktreeCleanupResult, WSWorktreeDiffResult, WSWorktreeEvent, WSWorktreeMergeResult, WSWorktreeOrphans, WSWorktreeState, WorktreeDiffSummary, WorktreeHandleView, WorktreeOrphanView };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/webui",
3
- "version": "0.275.1",
3
+ "version": "0.276.2",
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": [
@@ -68,6 +68,7 @@
68
68
  "@radix-ui/react-tabs": "^1.1.14",
69
69
  "@radix-ui/react-toast": "^1.2.16",
70
70
  "@radix-ui/react-tooltip": "^1.2.9",
71
+ "@types/qrcode": "^1.5.6",
71
72
  "@uiw/react-textarea-code-editor": "^3.1.1",
72
73
  "@xterm/addon-fit": "^0.11.0",
73
74
  "@xterm/xterm": "^6.0.0",
@@ -77,6 +78,7 @@
77
78
  "jszip": "^3.10.1",
78
79
  "lucide-react": "^1.17.0",
79
80
  "monaco-editor": "^0.55.1",
81
+ "qrcode": "^1.5.4",
80
82
  "react": "^19.2.7",
81
83
  "react-dom": "^19.2.7",
82
84
  "react-markdown": "^10.1.0",
@@ -86,11 +88,11 @@
86
88
  "virtua": "^0.49.1",
87
89
  "ws": "^8.21.0",
88
90
  "zustand": "^5.0.14",
89
- "@wrongstack/mcp": "0.275.1",
90
- "@wrongstack/core": "0.275.1",
91
- "@wrongstack/providers": "0.275.1",
92
- "@wrongstack/runtime": "0.275.1",
93
- "@wrongstack/tools": "0.275.1"
91
+ "@wrongstack/core": "0.276.2",
92
+ "@wrongstack/providers": "0.276.2",
93
+ "@wrongstack/tools": "0.276.2",
94
+ "@wrongstack/runtime": "0.276.2",
95
+ "@wrongstack/mcp": "0.276.2"
94
96
  },
95
97
  "peerDependencies": {
96
98
  "node-pty": "^1.1.0"