@wrongstack/webui 0.264.0 → 0.267.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
@@ -277,12 +277,94 @@ interface WSSkillsList {
277
277
  description: string;
278
278
  version: string;
279
279
  source: string;
280
+ sourceUrl: string;
281
+ ref: string;
280
282
  path: string;
281
283
  trigger: string;
282
284
  scope: string[];
283
285
  }>;
284
286
  };
285
287
  }
288
+ interface WSSkillContent {
289
+ type: 'skills.content';
290
+ payload: {
291
+ name: string;
292
+ body: string;
293
+ path: string;
294
+ source: string;
295
+ relatedFiles: string[];
296
+ references: string[];
297
+ error?: string | undefined;
298
+ sourceUrl?: string;
299
+ };
300
+ }
301
+ interface WSSkillsInstalled {
302
+ type: 'skills.installed';
303
+ payload: {
304
+ success: boolean;
305
+ error: string | null;
306
+ results?: Array<{
307
+ name: string;
308
+ path: string;
309
+ scope: 'project' | 'user';
310
+ source: string;
311
+ ref: string;
312
+ skillCount: number;
313
+ }>;
314
+ };
315
+ }
316
+ interface WSSkillsUninstalled {
317
+ type: 'skills.uninstalled';
318
+ payload: {
319
+ success: boolean;
320
+ error: string | null;
321
+ };
322
+ }
323
+ interface WSSkillsUpdated {
324
+ type: 'skills.updated';
325
+ payload: {
326
+ success: boolean;
327
+ error: string | null;
328
+ updated?: Array<{
329
+ name: string;
330
+ oldRef: string;
331
+ newRef: string;
332
+ }>;
333
+ unchanged?: string[];
334
+ errors?: Array<{
335
+ name: string;
336
+ error: string;
337
+ }>;
338
+ };
339
+ }
340
+ interface WSSkillsCreated {
341
+ type: 'skills.created';
342
+ payload: {
343
+ success: boolean;
344
+ error: string | null;
345
+ skill?: {
346
+ name: string;
347
+ path: string;
348
+ scope: 'project' | 'user';
349
+ };
350
+ };
351
+ }
352
+ interface WSSkillsEdited {
353
+ type: 'skills.edited';
354
+ payload: {
355
+ success: boolean;
356
+ error: string | null;
357
+ };
358
+ }
359
+ interface WSSkillsExported {
360
+ type: 'skills.exported';
361
+ payload: {
362
+ /** Base64-encoded ZIP buffer containing all skills as SKILL.md files */
363
+ zipBase64: string;
364
+ skillCount: number;
365
+ error?: string | undefined;
366
+ };
367
+ }
286
368
  interface WSDiagGet {
287
369
  type: 'diag.get';
288
370
  payload: {
@@ -687,6 +769,12 @@ type WSClientMessage = WSUserMessage | WSToolConfirmResult | {
687
769
  };
688
770
  } | {
689
771
  type: 'skills.list';
772
+ } | {
773
+ type: 'skills.content';
774
+ payload: {
775
+ name: string;
776
+ source: string;
777
+ };
690
778
  } | {
691
779
  type: 'diag.get';
692
780
  } | {
@@ -779,6 +867,13 @@ type WSClientMessage = WSUserMessage | WSToolConfirmResult | {
779
867
  type: 'process.killAll';
780
868
  } | {
781
869
  type: 'git.info';
870
+ } | {
871
+ type: 'git.changes';
872
+ } | {
873
+ type: 'git.diff';
874
+ payload: {
875
+ path: string;
876
+ };
782
877
  } | {
783
878
  type: 'goal.get';
784
879
  } | {
@@ -852,8 +947,118 @@ type WSClientMessage = WSUserMessage | WSToolConfirmResult | {
852
947
  payload: {
853
948
  text: string;
854
949
  };
950
+ } | {
951
+ type: 'skills.list';
952
+ } | {
953
+ type: 'skills.content';
954
+ payload: {
955
+ name: string;
956
+ source: string;
957
+ };
958
+ } | {
959
+ type: 'skills.install';
960
+ payload: {
961
+ ref: string;
962
+ global?: boolean;
963
+ };
964
+ } | {
965
+ type: 'skills.uninstall';
966
+ payload: {
967
+ name: string;
968
+ global?: boolean;
969
+ };
970
+ } | {
971
+ type: 'skills.update';
972
+ payload: {
973
+ name?: string;
974
+ global?: boolean;
975
+ };
976
+ } | {
977
+ type: 'skills.create';
978
+ payload: {
979
+ name: string;
980
+ description: string;
981
+ scope: 'project' | 'global';
982
+ };
983
+ } | {
984
+ type: 'skills.export';
985
+ payload?: Record<string, unknown>;
986
+ } | {
987
+ type: 'skills.edit';
988
+ payload: {
989
+ name: string;
990
+ body: string;
991
+ };
992
+ } | {
993
+ type: 'mcp.list';
994
+ } | {
995
+ type: 'mcp.add';
996
+ payload: {
997
+ name: string;
998
+ transport: string;
999
+ description?: string;
1000
+ enabled?: boolean;
1001
+ command?: string;
1002
+ args?: string[];
1003
+ env?: Record<string, string>;
1004
+ allowedTools?: string[];
1005
+ };
1006
+ } | {
1007
+ type: 'mcp.remove';
1008
+ payload: {
1009
+ name: string;
1010
+ };
1011
+ } | {
1012
+ type: 'mcp.update';
1013
+ payload: {
1014
+ name: string;
1015
+ transport?: string;
1016
+ description?: string;
1017
+ enabled?: boolean;
1018
+ command?: string;
1019
+ args?: string[];
1020
+ env?: Record<string, string>;
1021
+ allowedTools?: string[];
1022
+ };
1023
+ } | {
1024
+ type: 'mcp.wake';
1025
+ payload: {
1026
+ name: string;
1027
+ };
1028
+ } | {
1029
+ type: 'mcp.sleep';
1030
+ payload: {
1031
+ name: string;
1032
+ };
1033
+ } | {
1034
+ type: 'mcp.discover';
1035
+ payload: {
1036
+ name: string;
1037
+ };
1038
+ } | {
1039
+ type: 'mcp.enable';
1040
+ payload: {
1041
+ name: string;
1042
+ };
1043
+ } | {
1044
+ type: 'mcp.disable';
1045
+ payload: {
1046
+ name: string;
1047
+ };
1048
+ } | {
1049
+ type: 'mcp.restart';
1050
+ payload: {
1051
+ name: string;
1052
+ };
1053
+ } | {
1054
+ type: 'plan.template_use';
1055
+ payload: {
1056
+ template: string;
1057
+ };
1058
+ } | {
1059
+ type: 'webui.shutdown';
855
1060
  };
856
- type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingDelta | WSToolUseStart | WSToolProgress | WSToolExecuted | WSIterationStarted | WSIterationCompleted | WSProviderResponse | WSRunResult | WSSessionStats | WSError | WSToolConfirmNeeded | WSContextDebug | WSContextCompacted | WSContextRepaired | WSContextModesList | WSContextModeChanged | WSToolsList | WSMemoryList | WSSkillsList | WSDiagGet | WSStatsGet | WSSessionsList | WSProviderCatalog | WSProviderModels | WSSavedProviders | WSProviderProbe | WSKeyOperationResult | WSFilesList | {
1061
+ 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 | {
857
1062
  type: 'files.tree';
858
1063
  payload: {
859
1064
  root: string;
@@ -926,6 +1131,28 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
926
1131
  behind: number;
927
1132
  ahead: number;
928
1133
  };
1134
+ } | {
1135
+ type: 'git.changes';
1136
+ payload: {
1137
+ files: Array<{
1138
+ path: string;
1139
+ status: string;
1140
+ added: number;
1141
+ deleted: number;
1142
+ staged: boolean;
1143
+ }>;
1144
+ error?: string | undefined;
1145
+ };
1146
+ } | {
1147
+ type: 'git.diff';
1148
+ payload: {
1149
+ path: string;
1150
+ oldText?: string | undefined;
1151
+ newText?: string | undefined;
1152
+ binary?: boolean | undefined;
1153
+ tooLarge?: boolean | undefined;
1154
+ error?: string | undefined;
1155
+ };
929
1156
  } | {
930
1157
  type: 'projects.list';
931
1158
  payload: {
@@ -993,6 +1220,197 @@ type WSServerMessage = WSSessionStart | WSSessionEnd | WSTextDelta | WSThinkingD
993
1220
  english: string;
994
1221
  error?: string | undefined;
995
1222
  };
1223
+ } | {
1224
+ type: 'coordinator.status';
1225
+ payload: {
1226
+ status: 'idle' | 'running' | 'draining' | 'stopped';
1227
+ mode?: string;
1228
+ subagentCount?: number;
1229
+ taskQueue?: {
1230
+ pending: number;
1231
+ running: number;
1232
+ completed: number;
1233
+ failed: number;
1234
+ };
1235
+ };
1236
+ } | {
1237
+ type: 'coordinator.stats';
1238
+ payload: {
1239
+ total: number;
1240
+ running: number;
1241
+ idle: number;
1242
+ stopped: number;
1243
+ inFlight: number;
1244
+ pending: number;
1245
+ completed: number;
1246
+ subagentStatuses?: Array<{
1247
+ id: string;
1248
+ name: string;
1249
+ status: string;
1250
+ currentTask?: string;
1251
+ }>;
1252
+ };
1253
+ } | {
1254
+ type: 'budget.threshold_reached';
1255
+ payload: {
1256
+ subagentId: string;
1257
+ taskId?: string;
1258
+ ts: number;
1259
+ kind: string;
1260
+ used: number;
1261
+ limit: number;
1262
+ timeoutMs: number;
1263
+ };
1264
+ } | {
1265
+ type: 'budget.decision';
1266
+ payload: {
1267
+ subagentId: string;
1268
+ kind: string;
1269
+ decision: 'extend' | 'deny';
1270
+ extended?: {
1271
+ timeoutMs?: number;
1272
+ maxIterations?: number;
1273
+ maxToolCalls?: number;
1274
+ };
1275
+ };
1276
+ } | {
1277
+ type: 'subagent.budget_extended';
1278
+ payload: {
1279
+ subagentId: string;
1280
+ kind: string;
1281
+ extendedMs?: number;
1282
+ extendedTo?: number;
1283
+ };
1284
+ } | {
1285
+ type: 'consensus.vote_initiated';
1286
+ payload: {
1287
+ changeId: string;
1288
+ title: string;
1289
+ eligible: Array<{
1290
+ agentId: string;
1291
+ agentName: string;
1292
+ }>;
1293
+ };
1294
+ } | {
1295
+ type: 'consensus.vote_cast';
1296
+ payload: {
1297
+ changeId: string;
1298
+ voterId: string;
1299
+ value: 'approve' | 'reject' | 'abstain';
1300
+ };
1301
+ } | {
1302
+ type: 'consensus.vote_resolved';
1303
+ payload: {
1304
+ changeId: string;
1305
+ result: 'approved' | 'rejected' | 'vetoed' | 'quorum_not_met';
1306
+ approveCount: number;
1307
+ rejectCount: number;
1308
+ };
1309
+ } | {
1310
+ type: 'task.pending';
1311
+ payload: {
1312
+ taskId: string;
1313
+ description: string;
1314
+ priority?: number;
1315
+ };
1316
+ } | {
1317
+ type: 'task.started';
1318
+ payload: {
1319
+ taskId: string;
1320
+ subagentId: string;
1321
+ };
1322
+ } | {
1323
+ type: 'task.completed';
1324
+ payload: {
1325
+ taskId: string;
1326
+ subagentId: string;
1327
+ status: string;
1328
+ durationMs: number;
1329
+ };
1330
+ } | {
1331
+ type: 'task.failed';
1332
+ payload: {
1333
+ taskId: string;
1334
+ subagentId: string;
1335
+ error: string;
1336
+ };
1337
+ } | {
1338
+ type: 'mcp.list';
1339
+ payload: {
1340
+ servers: Array<{
1341
+ name: string;
1342
+ transport: string;
1343
+ status: string;
1344
+ enabled: boolean;
1345
+ description?: string;
1346
+ tools?: string[];
1347
+ error?: string;
1348
+ pid?: number;
1349
+ }>;
1350
+ };
1351
+ } | {
1352
+ type: 'mcp.server.added';
1353
+ payload: {
1354
+ server: {
1355
+ name: string;
1356
+ transport: string;
1357
+ status: string;
1358
+ enabled: boolean;
1359
+ description?: string;
1360
+ tools?: string[];
1361
+ };
1362
+ };
1363
+ } | {
1364
+ type: 'mcp.server.removed';
1365
+ payload: {
1366
+ name: string;
1367
+ };
1368
+ } | {
1369
+ type: 'mcp.server.updated';
1370
+ payload: {
1371
+ server: {
1372
+ name: string;
1373
+ transport: string;
1374
+ status: string;
1375
+ enabled: boolean;
1376
+ description?: string;
1377
+ tools?: string[];
1378
+ };
1379
+ };
1380
+ } | {
1381
+ type: 'mcp.server.discovered';
1382
+ payload: {
1383
+ name: string;
1384
+ tools: string[];
1385
+ };
1386
+ } | {
1387
+ type: 'mcp.server.sleeping';
1388
+ payload: {
1389
+ name: string;
1390
+ };
1391
+ } | {
1392
+ type: 'mcp.server.waking';
1393
+ payload: {
1394
+ name: string;
1395
+ };
1396
+ } | {
1397
+ type: 'mcp.server.connected';
1398
+ payload: {
1399
+ name: string;
1400
+ pid?: number;
1401
+ };
1402
+ } | {
1403
+ type: 'mcp.server.error';
1404
+ payload: {
1405
+ name: string;
1406
+ error: string;
1407
+ };
1408
+ } | {
1409
+ type: 'mcp.operation_result';
1410
+ payload: {
1411
+ success: boolean;
1412
+ message: string;
1413
+ };
996
1414
  };
997
1415
  type BroadcastFn = (msg: WSServerMessage) => void;
998
1416
  /** Narrow type for CollabPanel event handlers — only collab-related messages + errors. */
@@ -1205,4 +1623,4 @@ interface WSCollabInjectionGranted {
1205
1623
  };
1206
1624
  }
1207
1625
 
1208
- 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, WSSkillsList, WSStatsGet, WSTextDelta, WSThinkingDelta, WSTodosUpdated, WSToolConfirmNeeded, WSToolConfirmResult, WSToolExecuted, WSToolProgress, WSToolUseStart, WSToolsList, WSUserMessage, WSWorktreeEvent, WSWorktreeState, WorktreeHandleView };
1626
+ 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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/webui",
3
- "version": "0.264.0",
3
+ "version": "0.267.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": [
@@ -68,9 +68,11 @@
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
+ "@uiw/react-textarea-code-editor": "^3.1.1",
71
72
  "@xyflow/react": "^12.11.0",
72
73
  "class-variance-authority": "^0.7.1",
73
74
  "clsx": "^2.1.1",
75
+ "jszip": "^3.10.1",
74
76
  "lucide-react": "^1.17.0",
75
77
  "monaco-editor": "^0.55.1",
76
78
  "react": "^19.2.7",
@@ -82,10 +84,11 @@
82
84
  "virtua": "^0.49.1",
83
85
  "ws": "^8.21.0",
84
86
  "zustand": "^5.0.14",
85
- "@wrongstack/core": "0.264.0",
86
- "@wrongstack/tools": "0.264.0",
87
- "@wrongstack/runtime": "0.264.0",
88
- "@wrongstack/providers": "0.264.0"
87
+ "@wrongstack/core": "0.267.0",
88
+ "@wrongstack/mcp": "0.267.0",
89
+ "@wrongstack/tools": "0.267.0",
90
+ "@wrongstack/providers": "0.267.0",
91
+ "@wrongstack/runtime": "0.267.0"
89
92
  },
90
93
  "devDependencies": {
91
94
  "@playwright/test": "^1.60.0",