openfox 2.0.133 → 2.0.135

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/CHANGELOG.md +30 -0
  3. package/dist/{chat-handler-T47GATL5.js → chat-handler-WGDFMOOD.js} +23 -22
  4. package/dist/chunk-24YKXKCG.js +35 -0
  5. package/dist/chunk-2OMGR7LN.js +45 -0
  6. package/dist/{chunk-GFW2HWJ6.js → chunk-4R5GV7RW.js} +37 -16
  7. package/dist/{chunk-P5MSY7ZI.js → chunk-5H5NRWHA.js} +22 -17
  8. package/dist/{chunk-MQMPIXON.js → chunk-5UMXFLET.js} +3 -3
  9. package/dist/{chunk-5JWJEZJ3.js → chunk-5UQ4CKOA.js} +2 -2
  10. package/dist/{chunk-7JVBDBXE.js → chunk-7QMWYNVF.js} +2 -2
  11. package/dist/{chunk-P57IBMK4.js → chunk-AATMPL7S.js} +4 -4
  12. package/dist/{chunk-OUQZZEIQ.js → chunk-BIZFY3QP.js} +487 -210
  13. package/dist/{chunk-LQKXJPKP.js → chunk-CTWZPN7G.js} +5 -1
  14. package/dist/{chunk-BKMWZTNO.js → chunk-DWA4IE65.js} +14 -2
  15. package/dist/{chunk-HXHPKGJE.js → chunk-ESZQTFQP.js} +614 -157
  16. package/dist/{chunk-KWAHD2JA.js → chunk-F2MOHHXB.js} +15 -2
  17. package/dist/{chunk-A7CB4USC.js → chunk-GP3CLMPQ.js} +132 -45
  18. package/dist/{chunk-HCYSGLY2.js → chunk-HF3NDXB4.js} +1 -1
  19. package/dist/{chunk-Y6ZGHOKM.js → chunk-I5ODJKYM.js} +4 -4
  20. package/dist/{chunk-OMMPTN6X.js → chunk-IAT2LBIX.js} +69 -27
  21. package/dist/{chunk-6EZDW4JS.js → chunk-J3NMNYGM.js} +2 -2
  22. package/dist/{chunk-M5T4RDPJ.js → chunk-MEEUXRFL.js} +2 -2
  23. package/dist/{chunk-RRUSYVQD.js → chunk-NFEZATSN.js} +8 -8
  24. package/dist/{chunk-MGEYAYGU.js → chunk-O3RCSKUH.js} +2 -2
  25. package/dist/{chunk-ELYHHEYL.js → chunk-ORCQ3EXQ.js} +2 -2
  26. package/dist/{chunk-FEIRWXLX.js → chunk-OZWHRBDY.js} +64 -17
  27. package/dist/{chunk-FGNJMKDV.js → chunk-QZOV4OVN.js} +29 -5
  28. package/dist/{chunk-TACWRDDC.js → chunk-S67WIWUG.js} +2 -2
  29. package/dist/{chunk-ZL4IAFF3.js → chunk-UKIUQAQZ.js} +3 -3
  30. package/dist/{chunk-VXG3AFFY.js → chunk-VHLD6PCZ.js} +8 -8
  31. package/dist/chunk-WY3PWHWY.js +7 -0
  32. package/dist/{chunk-CLDCHOEA.js → chunk-ZMK4VX7V.js} +2 -2
  33. package/dist/cli/dev.js +4 -1
  34. package/dist/cli/index.js +4 -1
  35. package/dist/{client-2K6PPPJJ.js → client-VVYOWXRR.js} +4 -4
  36. package/dist/{compactor-OEJAA2YP.js → compactor-454UEIEX.js} +9 -9
  37. package/dist/{dynamic-context-NJZKAZE3.js → dynamic-context-LKC6JYLQ.js} +10 -10
  38. package/dist/{events-ZJPRGVL2.js → events-335XAKFK.js} +6 -6
  39. package/dist/export-import-3WMRLO4A.js +137 -0
  40. package/dist/{folding-QRZOHY2I.js → folding-H7JTX6KI.js} +4 -4
  41. package/dist/{http-client-P4XTKAZA.js → http-client-A445WYZU.js} +3 -3
  42. package/dist/{install-VA2F6X6Z.js → install-AVTFA344.js} +64 -15
  43. package/dist/{launch-UKXVO37B.js → launch-GJ7EHQRI.js} +23 -22
  44. package/dist/{manager-TMBFBCQL.js → manager-ZACEUL5P.js} +4 -4
  45. package/dist/{mcp-YU7AM3UV.js → mcp-SQ4DOGPT.js} +22 -9
  46. package/dist/{orchestrator-GX22Y5EM.js → orchestrator-JGJWTRO5.js} +22 -21
  47. package/dist/package.json +3 -1
  48. package/dist/{path-security-CBACXAMS.js → path-security-4LROI7F4.js} +10 -10
  49. package/dist/{platform-5LQXOZO3.js → platform-XPMZKAUB.js} +3 -3
  50. package/dist/{processor-V35OLKRV.js → processor-MSQP63ML.js} +22 -21
  51. package/dist/{project-creator-6AGQTNXB.js → project-creator-T3A4H3YV.js} +42 -29
  52. package/dist/{protocol-BMUoqwYH.d.ts → protocol-Nr_H1_oC.d.ts} +3 -1
  53. package/dist/{protocol-Y7MRKRUO.js → protocol-XO4ZROAU.js} +3 -3
  54. package/dist/provider/index.d.ts +4 -4
  55. package/dist/provider-JWUNG2TD.js +507 -0
  56. package/dist/{provider-manager-BO5ZBG3T.js → provider-manager-2KKZ37XJ.js} +5 -5
  57. package/dist/pwa-V5PFB4OQ.js +502 -0
  58. package/dist/{registry-CMSSZHDC.js → registry-BEIR7Y5G.js} +3 -3
  59. package/dist/{serve-XRVT3D7Z.js → serve-CW5C3CBZ.js} +47 -36
  60. package/dist/server/index.d.ts +18 -3
  61. package/dist/server/index.js +27 -26
  62. package/dist/{server-GXMZMPXI.js → server-ZHEB7XS2.js} +26 -25
  63. package/dist/{service-WKABQHKL.js → service-M77VWL2M.js} +97 -32
  64. package/dist/{service-O3LCO3TQ.js → service-XIUNS5XV.js} +7 -6
  65. package/dist/{session-overrides-OECQYRDK.js → session-overrides-LYW5PJ3R.js} +5 -5
  66. package/dist/{sessions-NMPX5ICI.js → sessions-AOK3AGHY.js} +6 -4
  67. package/dist/{settings-MDCRNQBY.js → settings-ZJPM6PQV.js} +2 -2
  68. package/dist/shared/index.d.ts +31 -4
  69. package/dist/shared/index.js +16 -2
  70. package/dist/{tasks-WOC3QUFA.js → tasks-3JJWJJ3X.js} +34 -18
  71. package/dist/{tools-CW6POKUL.js → tools-E63MOJBO.js} +20 -19
  72. package/dist/{types-CoY8Ka1C.d.ts → types-BlQjLBui.d.ts} +1 -1
  73. package/dist/{types-BIkpxjaj.d.ts → types-G10ho8PT.d.ts} +1 -1
  74. package/dist/update-XVXNSSDK.js +76 -0
  75. package/dist/web/assets/{index-Y300llHY.css → index-Bg_Z8i3F.css} +1 -1
  76. package/dist/web/assets/index-wTFCxQAw.js +313 -0
  77. package/dist/web/index.html +2 -2
  78. package/dist/web/sw.js +1 -1
  79. package/package.json +3 -1
  80. package/dist/chunk-JKGHTBEV.js +0 -7
  81. package/dist/provider-NWRGNGS3.js +0 -403
  82. package/dist/pwa-2GRFSXD7.js +0 -363
  83. package/dist/update-VC3Y3EOP.js +0 -49
  84. package/dist/web/assets/index-ATAQvBwl.js +0 -312
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveDefaultAgentId
3
- } from "./chunk-ELYHHEYL.js";
3
+ } from "./chunk-ORCQ3EXQ.js";
4
4
  import {
5
5
  getDatabase
6
6
  } from "./chunk-JU757HVI.js";
@@ -240,6 +240,18 @@ function updateSessionMessageCount(id, delta) {
240
240
  } catch {
241
241
  }
242
242
  }
243
+ function setSessionMessageCount(id, count) {
244
+ try {
245
+ const db = getDatabase();
246
+ const now = (/* @__PURE__ */ new Date()).toISOString();
247
+ db.prepare(
248
+ `
249
+ UPDATE sessions SET message_count = ?, updated_at = ? WHERE id = ?
250
+ `
251
+ ).run(count, now, id);
252
+ } catch {
253
+ }
254
+ }
243
255
  function getSessionMessageCount(id) {
244
256
  try {
245
257
  const db = getDatabase();
@@ -456,6 +468,7 @@ export {
456
468
  updateSessionCachedPrompt,
457
469
  getSessionCachedPrompt,
458
470
  updateSessionMessageCount,
471
+ setSessionMessageCount,
459
472
  getSessionMessageCount,
460
473
  listSessions,
461
474
  listSessionsByProject,
@@ -471,4 +484,4 @@ export {
471
484
  getLatestWorkflowExecution,
472
485
  clearWorkflowExecution
473
486
  };
474
- //# sourceMappingURL=chunk-KWAHD2JA.js.map
487
+ //# sourceMappingURL=chunk-F2MOHHXB.js.map
@@ -2,29 +2,32 @@ import {
2
2
  generateSessionNameForSession,
3
3
  getSessionMessageCount,
4
4
  needsNameGeneration
5
- } from "./chunk-RRUSYVQD.js";
5
+ } from "./chunk-NFEZATSN.js";
6
6
  import {
7
7
  launchWorkflowRun
8
- } from "./chunk-P5MSY7ZI.js";
8
+ } from "./chunk-5H5NRWHA.js";
9
9
  import {
10
10
  runChatTurn
11
- } from "./chunk-GFW2HWJ6.js";
11
+ } from "./chunk-4R5GV7RW.js";
12
12
  import {
13
13
  devServerManager
14
- } from "./chunk-HXHPKGJE.js";
14
+ } from "./chunk-ESZQTFQP.js";
15
15
  import {
16
16
  gitSpawnEnv
17
17
  } from "./chunk-J7GAZGZT.js";
18
+ import {
19
+ serverT
20
+ } from "./chunk-OZWHRBDY.js";
18
21
  import {
19
22
  appendCompactionPrompt
20
- } from "./chunk-ZL4IAFF3.js";
23
+ } from "./chunk-UKIUQAQZ.js";
21
24
  import {
22
25
  hasRecentLLMFailure,
23
26
  interruptLLMRetryWait
24
27
  } from "./chunk-7ET46SNE.js";
25
28
  import {
26
29
  onProcessEvent
27
- } from "./chunk-MQMPIXON.js";
30
+ } from "./chunk-5UMXFLET.js";
28
31
  import {
29
32
  killProcessTree
30
33
  } from "./chunk-I72ACQ6R.js";
@@ -32,7 +35,7 @@ import {
32
35
  applyDynamicContext,
33
36
  computeSessionHash,
34
37
  computeUnifiedDiff
35
- } from "./chunk-VXG3AFFY.js";
38
+ } from "./chunk-VHLD6PCZ.js";
36
39
  import {
37
40
  getPendingQuestionsForSession,
38
41
  provideAnswer
@@ -40,14 +43,14 @@ import {
40
43
  import {
41
44
  combineEventsWithSnapshot,
42
45
  getEventStore
43
- } from "./chunk-FGNJMKDV.js";
46
+ } from "./chunk-QZOV4OVN.js";
44
47
  import {
45
48
  buildMessagesFromStoredEvents,
46
49
  foldPendingConfirmations
47
- } from "./chunk-M5T4RDPJ.js";
50
+ } from "./chunk-MEEUXRFL.js";
48
51
  import {
49
52
  getRuntimeConfig
50
- } from "./chunk-ELYHHEYL.js";
53
+ } from "./chunk-ORCQ3EXQ.js";
51
54
  import {
52
55
  createChatErrorMessage,
53
56
  createChatMessageMessage,
@@ -62,19 +65,19 @@ import {
62
65
  parseClientMessage,
63
66
  serializeServerMessage,
64
67
  storedEventToServerMessage
65
- } from "./chunk-P57IBMK4.js";
68
+ } from "./chunk-AATMPL7S.js";
66
69
  import {
67
70
  getPlatformShell
68
- } from "./chunk-MGEYAYGU.js";
71
+ } from "./chunk-O3RCSKUH.js";
69
72
  import {
70
73
  getMaxVisibleItems
71
- } from "./chunk-LQKXJPKP.js";
74
+ } from "./chunk-CTWZPN7G.js";
72
75
  import {
73
76
  logger
74
77
  } from "./chunk-K44MW7JJ.js";
75
78
  import {
76
79
  createServerMessage
77
- } from "./chunk-HCYSGLY2.js";
80
+ } from "./chunk-HF3NDXB4.js";
78
81
 
79
82
  // src/server/ws/server.ts
80
83
  import { WebSocketServer, WebSocket as WebSocket2 } from "ws";
@@ -472,6 +475,14 @@ async function isValidToken(token) {
472
475
  }
473
476
 
474
477
  // src/server/ws/server.ts
478
+ var MSG_INVALID_MESSAGE_FORMAT = { en: "Invalid message format", fr: "Format de message invalide" };
479
+ var MSG_NO_ACTIVE_SESSION = { en: "No active session", fr: "Aucune session active" };
480
+ var MSG_SESSION_NOT_FOUND = { en: "Session not found", fr: "Session introuvable" };
481
+ var MSG_SESSION_IS_RUNNING = {
482
+ en: "Session is already running",
483
+ fr: "La session est d\xE9j\xE0 en cours d\u2019ex\xE9cution"
484
+ };
485
+ var MSG_UNKNOWN_ERROR = { en: "Unknown error", fr: "Erreur inconnue" };
475
486
  var resolveMcpReady = null;
476
487
  var mcpReadyPromise = new Promise((resolve) => {
477
488
  resolveMcpReady = resolve;
@@ -1023,7 +1034,7 @@ function createWebSocketServer(httpServer, _config, getLLMClient, getActiveProvi
1023
1034
  const seq = client2.lastSentSeq + 1;
1024
1035
  enqueueSend(
1025
1036
  client2,
1026
- serializeServerMessage(createErrorMessage("INVALID_MESSAGE", "Invalid message format")),
1037
+ serializeServerMessage(createErrorMessage("INVALID_MESSAGE", serverT(MSG_INVALID_MESSAGE_FORMAT))),
1027
1038
  seq
1028
1039
  );
1029
1040
  return;
@@ -1059,7 +1070,11 @@ function createWebSocketServer(httpServer, _config, getLLMClient, getActiveProvi
1059
1070
  enqueueSend(
1060
1071
  client2,
1061
1072
  serializeServerMessage(
1062
- createErrorMessage("INTERNAL_ERROR", error instanceof Error ? error.message : "Unknown error", message.id)
1073
+ createErrorMessage(
1074
+ "INTERNAL_ERROR",
1075
+ error instanceof Error ? error.message : serverT(MSG_UNKNOWN_ERROR),
1076
+ message.id
1077
+ )
1063
1078
  ),
1064
1079
  seq
1065
1080
  );
@@ -1150,12 +1165,18 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
1150
1165
  // =========================================================================
1151
1166
  case "session.load": {
1152
1167
  if (!isSessionLoadPayload(message.payload)) {
1153
- send(createErrorMessage("INVALID_PAYLOAD", "Invalid session.load payload", message.id));
1168
+ send(
1169
+ createErrorMessage(
1170
+ "INVALID_PAYLOAD",
1171
+ serverT({ en: "Invalid session.load payload", fr: "Payload de session.load invalide" }),
1172
+ message.id
1173
+ )
1174
+ );
1154
1175
  return;
1155
1176
  }
1156
1177
  const session = sessionManager.getSession(message.payload.sessionId);
1157
1178
  if (!session) {
1158
- send(createErrorMessage("NOT_FOUND", "Session not found", message.id));
1179
+ send(createErrorMessage("NOT_FOUND", serverT(MSG_SESSION_NOT_FOUND), message.id));
1159
1180
  return;
1160
1181
  }
1161
1182
  client.activeSessionId = session.id;
@@ -1208,12 +1229,21 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
1208
1229
  const payload = message.payload;
1209
1230
  const sessionId = payload?.sessionId ?? client.activeSessionId;
1210
1231
  if (!sessionId) {
1211
- send(createErrorMessage("NO_SESSION", "No active session", message.id));
1232
+ send(createErrorMessage("NO_SESSION", serverT(MSG_NO_ACTIVE_SESSION), message.id));
1212
1233
  return;
1213
1234
  }
1214
1235
  const session = sessionManager.requireSession(sessionId);
1215
1236
  if (session.isRunning) {
1216
- send(createErrorMessage("SESSION_RUNNING", "Cannot compact while session is running", message.id));
1237
+ send(
1238
+ createErrorMessage(
1239
+ "SESSION_RUNNING",
1240
+ serverT({
1241
+ en: "Cannot compact while session is running",
1242
+ fr: "Impossible de compacter pendant que la session est en cours"
1243
+ }),
1244
+ message.id
1245
+ )
1246
+ );
1217
1247
  return;
1218
1248
  }
1219
1249
  send({ type: "ack", payload: {}, id: message.id });
@@ -1240,10 +1270,11 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
1240
1270
  }).catch((error) => {
1241
1271
  if (error instanceof Error && error.message === "Aborted") return;
1242
1272
  logger.error("Compaction failed", { error, sessionId });
1273
+ const reason = error instanceof Error ? error.message : serverT(MSG_UNKNOWN_ERROR);
1243
1274
  sendForSession(
1244
1275
  sessionId,
1245
1276
  createChatErrorMessage(
1246
- `Compaction failed: ${error instanceof Error ? error.message : "Unknown error"}`,
1277
+ serverT({ en: "Compaction failed: {{reason}}", fr: "\xC9chec de la compaction : {{reason}}" }, { reason }),
1247
1278
  true
1248
1279
  )
1249
1280
  );
@@ -1267,7 +1298,7 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
1267
1298
  }
1268
1299
  case "context.checkDynamic": {
1269
1300
  if (!client.activeSessionId) {
1270
- send(createErrorMessage("NO_SESSION", "No active session", message.id));
1301
+ send(createErrorMessage("NO_SESSION", serverT(MSG_NO_ACTIVE_SESSION), message.id));
1271
1302
  return;
1272
1303
  }
1273
1304
  const sessionId = client.activeSessionId;
@@ -1308,13 +1339,13 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
1308
1339
  const payload = message.payload;
1309
1340
  const sessionId = payload?.sessionId ?? client.activeSessionId;
1310
1341
  if (!sessionId) {
1311
- send(createErrorMessage("NO_SESSION", "No active session", message.id));
1342
+ send(createErrorMessage("NO_SESSION", serverT(MSG_NO_ACTIVE_SESSION), message.id));
1312
1343
  return;
1313
1344
  }
1314
1345
  const session = sessionManager.requireSession(sessionId);
1315
1346
  try {
1316
- const { buildCachedPrompt, computePreviewToolDiff } = await import("./dynamic-context-NJZKAZE3.js");
1317
- const allAgents = await import("./registry-CMSSZHDC.js");
1347
+ const { buildCachedPrompt, computePreviewToolDiff } = await import("./dynamic-context-LKC6JYLQ.js");
1348
+ const allAgents = await import("./registry-BEIR7Y5G.js");
1318
1349
  const agentDef = allAgents.findAgentById(session.mode, await allAgents.loadAllAgentsDefault()) ?? allAgents.findAgentById("planner", await allAgents.loadAllAgentsDefault());
1319
1350
  const modelName = session.providerModel ?? _providerManager?.getCurrentModel();
1320
1351
  const {
@@ -1325,7 +1356,7 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
1325
1356
  const oldCached = sessionManager.getCachedPrompt(sessionId);
1326
1357
  const oldPrompt = oldCached?.systemPrompt;
1327
1358
  const diff = oldPrompt ? computeUnifiedDiff(oldPrompt, newPrompt) : [];
1328
- const { getToolRegistryForAgent } = await import("./tools-CW6POKUL.js");
1359
+ const { getToolRegistryForAgent } = await import("./tools-E63MOJBO.js");
1329
1360
  const unfilteredTools = getToolRegistryForAgent(agentDef).definitions;
1330
1361
  const toolDiff = computePreviewToolDiff(oldCached?.tools, unfilteredTools, newTools);
1331
1362
  send({
@@ -1345,10 +1376,11 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
1345
1376
  error: error instanceof Error ? error.message : "Unknown error",
1346
1377
  sessionId
1347
1378
  });
1379
+ const reason = error instanceof Error ? error.message : serverT(MSG_UNKNOWN_ERROR);
1348
1380
  send(
1349
1381
  createErrorMessage(
1350
1382
  "ERROR",
1351
- `Failed to preview: ${error instanceof Error ? error.message : "Unknown error"}`,
1383
+ serverT({ en: "Failed to preview: {{reason}}", fr: "\xC9chec de l\u2019aper\xE7u : {{reason}}" }, { reason }),
1352
1384
  message.id
1353
1385
  )
1354
1386
  );
@@ -1359,12 +1391,21 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
1359
1391
  const payload = message.payload;
1360
1392
  const sessionId = payload?.sessionId ?? client.activeSessionId;
1361
1393
  if (!sessionId) {
1362
- send(createErrorMessage("NO_SESSION", "No active session", message.id));
1394
+ send(createErrorMessage("NO_SESSION", serverT(MSG_NO_ACTIVE_SESSION), message.id));
1363
1395
  return;
1364
1396
  }
1365
1397
  const session = sessionManager.requireSession(sessionId);
1366
1398
  if (session.isRunning) {
1367
- send(createErrorMessage("SESSION_RUNNING", "Cannot apply dynamic context while session is running", message.id));
1399
+ send(
1400
+ createErrorMessage(
1401
+ "SESSION_RUNNING",
1402
+ serverT({
1403
+ en: "Cannot apply dynamic context while session is running",
1404
+ fr: "Impossible d\u2019appliquer le contexte dynamique pendant que la session est en cours"
1405
+ }),
1406
+ message.id
1407
+ )
1408
+ );
1368
1409
  return;
1369
1410
  }
1370
1411
  ;
@@ -1377,10 +1418,17 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
1377
1418
  send({ type: "ack", payload: {}, id: message.id });
1378
1419
  } catch (error) {
1379
1420
  logger.error("Failed to apply dynamic context", { error, sessionId });
1421
+ const reason = error instanceof Error ? error.message : serverT(MSG_UNKNOWN_ERROR);
1380
1422
  sendForSession(
1381
1423
  sessionId,
1382
1424
  createChatErrorMessage(
1383
- `Failed to apply dynamic context: ${error instanceof Error ? error.message : "Unknown error"}`,
1425
+ serverT(
1426
+ {
1427
+ en: "Failed to apply dynamic context: {{reason}}",
1428
+ fr: "\xC9chec d\u2019application du contexte dynamique : {{reason}}"
1429
+ },
1430
+ { reason }
1431
+ ),
1384
1432
  true
1385
1433
  )
1386
1434
  );
@@ -1396,7 +1444,7 @@ async function handleClientMessage(ws, client, message, _getLLMClient, _getActiv
1396
1444
  const launchPayloadEarly = message.payload;
1397
1445
  const sessionId = launchPayloadEarly?.sessionId ?? client.activeSessionId;
1398
1446
  if (!sessionId) {
1399
- send(createErrorMessage("NO_SESSION", "No active session", message.id));
1447
+ send(createErrorMessage("NO_SESSION", serverT(MSG_NO_ACTIVE_SESSION), message.id));
1400
1448
  return;
1401
1449
  }
1402
1450
  const session = sessionManager.requireSession(sessionId);
@@ -1424,7 +1472,13 @@ ${content}` : workflowInfo;
1424
1472
  if (!launchPayloadEarly?.resumeFrom) {
1425
1473
  const pendingCriteria = session.criteria.filter((c) => c.status.type !== "passed");
1426
1474
  if (!launchPayloadEarly?.workflowId && pendingCriteria.length === 0) {
1427
- send(createErrorMessage("NO_WORK", "No pending criteria to work on", message.id));
1475
+ send(
1476
+ createErrorMessage(
1477
+ "NO_WORK",
1478
+ serverT({ en: "No pending criteria to work on", fr: "Aucun crit\xE8re en attente sur lequel travailler" }),
1479
+ message.id
1480
+ )
1481
+ );
1428
1482
  return;
1429
1483
  }
1430
1484
  }
@@ -1511,17 +1565,29 @@ ${content}` : workflowInfo;
1511
1565
  // =========================================================================
1512
1566
  case "ask.answer": {
1513
1567
  if (!client.activeSessionId) {
1514
- send(createErrorMessage("NO_SESSION", "No active session", message.id));
1568
+ send(createErrorMessage("NO_SESSION", serverT(MSG_NO_ACTIVE_SESSION), message.id));
1515
1569
  return;
1516
1570
  }
1517
1571
  if (!isAskAnswerPayload(message.payload)) {
1518
- send(createErrorMessage("INVALID_PAYLOAD", "Invalid ask.answer payload", message.id));
1572
+ send(
1573
+ createErrorMessage(
1574
+ "INVALID_PAYLOAD",
1575
+ serverT({ en: "Invalid ask.answer payload", fr: "Payload ask.answer invalide" }),
1576
+ message.id
1577
+ )
1578
+ );
1519
1579
  return;
1520
1580
  }
1521
1581
  const { callId, answer, skip } = message.payload;
1522
1582
  const found = provideAnswer(callId, answer, skip);
1523
1583
  if (!found) {
1524
- send(createErrorMessage("NOT_FOUND", "No pending question with that ID", message.id));
1584
+ send(
1585
+ createErrorMessage(
1586
+ "NOT_FOUND",
1587
+ serverT({ en: "No pending question with that ID", fr: "Aucune question en attente avec cet ID" }),
1588
+ message.id
1589
+ )
1590
+ );
1525
1591
  return;
1526
1592
  }
1527
1593
  logger.debug("Ask user answer received", {
@@ -1539,12 +1605,12 @@ ${content}` : workflowInfo;
1539
1605
  const payload = message.payload;
1540
1606
  const exitSessionId = payload?.sessionId ?? client.activeSessionId;
1541
1607
  if (!exitSessionId) {
1542
- send(createErrorMessage("NO_SESSION", "No active session", message.id));
1608
+ send(createErrorMessage("NO_SESSION", serverT(MSG_NO_ACTIVE_SESSION), message.id));
1543
1609
  return;
1544
1610
  }
1545
1611
  const exitSession = sessionManager.getSession(exitSessionId);
1546
1612
  if (!exitSession) {
1547
- send(createErrorMessage("NOT_FOUND", "Session not found", message.id));
1613
+ send(createErrorMessage("NOT_FOUND", serverT(MSG_SESSION_NOT_FOUND), message.id));
1548
1614
  return;
1549
1615
  }
1550
1616
  const activeExec = sessionManager.getActiveWorkflowExecution(exitSessionId);
@@ -1577,7 +1643,7 @@ ${content}` : workflowInfo;
1577
1643
  const payload = message.payload;
1578
1644
  const retrySessionId = payload?.sessionId ?? client.activeSessionId;
1579
1645
  if (!retrySessionId) {
1580
- send(createErrorMessage("NO_SESSION", "No active session", message.id));
1646
+ send(createErrorMessage("NO_SESSION", serverT(MSG_NO_ACTIVE_SESSION), message.id));
1581
1647
  return;
1582
1648
  }
1583
1649
  const interrupted = interruptLLMRetryWait(retrySessionId);
@@ -1588,25 +1654,37 @@ ${content}` : workflowInfo;
1588
1654
  const payload = message.payload;
1589
1655
  const retrySessionId = payload?.sessionId ?? client.activeSessionId;
1590
1656
  if (!retrySessionId) {
1591
- send(createErrorMessage("NO_SESSION", "No active session", message.id));
1657
+ send(createErrorMessage("NO_SESSION", serverT(MSG_NO_ACTIVE_SESSION), message.id));
1592
1658
  return;
1593
1659
  }
1594
1660
  const retrySession = sessionManager.getSession(retrySessionId);
1595
1661
  if (!retrySession) {
1596
- send(createErrorMessage("NOT_FOUND", "Session not found", message.id));
1662
+ send(createErrorMessage("NOT_FOUND", serverT(MSG_SESSION_NOT_FOUND), message.id));
1597
1663
  return;
1598
1664
  }
1599
1665
  if (retrySession.isRunning) {
1600
- send(createErrorMessage("SESSION_RUNNING", "Session is already running", message.id));
1666
+ send(createErrorMessage("SESSION_RUNNING", serverT(MSG_SESSION_IS_RUNNING), message.id));
1601
1667
  return;
1602
1668
  }
1603
1669
  if (!hasRecentLLMFailure(retrySessionId, 30 * 6e4)) {
1604
- send(createErrorMessage("NO_FAILED_TURN", "No failed turn to retry", message.id));
1670
+ send(
1671
+ createErrorMessage(
1672
+ "NO_FAILED_TURN",
1673
+ serverT({ en: "No failed turn to retry", fr: "Aucun tour \xE9chou\xE9 \xE0 relancer" }),
1674
+ message.id
1675
+ )
1676
+ );
1605
1677
  return;
1606
1678
  }
1607
1679
  const latestExec = sessionManager.getLatestWorkflowExecution(retrySessionId);
1608
1680
  if (latestExec && (latestExec.status === "blocked" || latestExec.status === "running" || latestExec.status === "waiting")) {
1609
- send(createErrorMessage("WORKFLOW_ACTIVE", "A workflow run is active", message.id));
1681
+ send(
1682
+ createErrorMessage(
1683
+ "WORKFLOW_ACTIVE",
1684
+ serverT({ en: "A workflow run is active", fr: "Un run de workflow est actif" }),
1685
+ message.id
1686
+ )
1687
+ );
1610
1688
  return;
1611
1689
  }
1612
1690
  if (retrySession.phase === "blocked") {
@@ -1624,7 +1702,16 @@ ${content}` : workflowInfo;
1624
1702
  break;
1625
1703
  }
1626
1704
  default: {
1627
- send(createErrorMessage("UNKNOWN_MESSAGE", `Unknown message type: ${message.type}`, message.id));
1705
+ send(
1706
+ createErrorMessage(
1707
+ "UNKNOWN_MESSAGE",
1708
+ serverT(
1709
+ { en: "Unknown message type: {{type}}", fr: "Type de message inconnu : {{type}}" },
1710
+ { type: message.type }
1711
+ ),
1712
+ message.id
1713
+ )
1714
+ );
1628
1715
  }
1629
1716
  }
1630
1717
  }
@@ -1642,4 +1729,4 @@ export {
1642
1729
  signalMcpReady,
1643
1730
  createWebSocketServer
1644
1731
  };
1645
- //# sourceMappingURL=chunk-A7CB4USC.js.map
1732
+ //# sourceMappingURL=chunk-GP3CLMPQ.js.map
@@ -26,4 +26,4 @@ export {
26
26
  isClientMessage,
27
27
  isServerMessage
28
28
  };
29
- //# sourceMappingURL=chunk-HCYSGLY2.js.map
29
+ //# sourceMappingURL=chunk-HF3NDXB4.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  getEventStore
3
- } from "./chunk-FGNJMKDV.js";
3
+ } from "./chunk-QZOV4OVN.js";
4
4
  import {
5
5
  createChatPathConfirmationMessage
6
- } from "./chunk-P57IBMK4.js";
6
+ } from "./chunk-AATMPL7S.js";
7
7
  import {
8
8
  getPlatformShell
9
- } from "./chunk-MGEYAYGU.js";
9
+ } from "./chunk-O3RCSKUH.js";
10
10
 
11
11
  // src/server/tools/path-security.ts
12
12
  import { realpath } from "fs/promises";
@@ -782,4 +782,4 @@ export {
782
782
  getConfirmationSessionId,
783
783
  getPendingConfirmationsBySession
784
784
  };
785
- //# sourceMappingURL=chunk-Y6ZGHOKM.js.map
785
+ //# sourceMappingURL=chunk-I5ODJKYM.js.map