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,58 +1,59 @@
1
1
  import {
2
2
  createServer,
3
3
  createServerHandle
4
- } from "../chunk-OUQZZEIQ.js";
4
+ } from "../chunk-BIZFY3QP.js";
5
5
  import "../chunk-T3S5MTMD.js";
6
6
  import "../chunk-WLJJRX22.js";
7
7
  import "../chunk-DQTN4B33.js";
8
8
  import "../chunk-IJ53Y77N.js";
9
- import "../chunk-A7CB4USC.js";
10
- import "../chunk-RRUSYVQD.js";
11
- import "../chunk-P5MSY7ZI.js";
12
- import "../chunk-GFW2HWJ6.js";
13
- import "../chunk-HXHPKGJE.js";
9
+ import "../chunk-GP3CLMPQ.js";
10
+ import "../chunk-NFEZATSN.js";
11
+ import "../chunk-5H5NRWHA.js";
12
+ import "../chunk-4R5GV7RW.js";
13
+ import "../chunk-ESZQTFQP.js";
14
14
  import "../chunk-XE6UC5Z3.js";
15
15
  import "../chunk-J7GAZGZT.js";
16
- import "../chunk-FEIRWXLX.js";
17
- import "../chunk-TACWRDDC.js";
18
- import "../chunk-ZL4IAFF3.js";
16
+ import "../chunk-OZWHRBDY.js";
17
+ import "../chunk-S67WIWUG.js";
18
+ import "../chunk-UKIUQAQZ.js";
19
19
  import "../chunk-7ET46SNE.js";
20
20
  import "../chunk-LW6MMSTD.js";
21
- import "../chunk-MQMPIXON.js";
21
+ import "../chunk-5UMXFLET.js";
22
22
  import "../chunk-I72ACQ6R.js";
23
23
  import "../chunk-JE7LW7Y6.js";
24
24
  import "../chunk-OAN4BXEW.js";
25
- import "../chunk-VXG3AFFY.js";
26
- import "../chunk-BKMWZTNO.js";
27
- import "../chunk-7JVBDBXE.js";
25
+ import "../chunk-VHLD6PCZ.js";
26
+ import "../chunk-DWA4IE65.js";
27
+ import "../chunk-7QMWYNVF.js";
28
28
  import "../chunk-JURM3RPZ.js";
29
- import "../chunk-Y6ZGHOKM.js";
30
- import "../chunk-FGNJMKDV.js";
31
- import "../chunk-M5T4RDPJ.js";
32
- import "../chunk-KWAHD2JA.js";
33
- import "../chunk-ELYHHEYL.js";
29
+ import "../chunk-I5ODJKYM.js";
30
+ import "../chunk-QZOV4OVN.js";
31
+ import "../chunk-MEEUXRFL.js";
32
+ import "../chunk-F2MOHHXB.js";
33
+ import "../chunk-ORCQ3EXQ.js";
34
34
  import "../chunk-OSXPQSLW.js";
35
- import "../chunk-P57IBMK4.js";
35
+ import "../chunk-AATMPL7S.js";
36
36
  import "../chunk-LCLH6ZUL.js";
37
- import "../chunk-MGEYAYGU.js";
38
- import "../chunk-5JWJEZJ3.js";
37
+ import "../chunk-O3RCSKUH.js";
38
+ import "../chunk-5UQ4CKOA.js";
39
39
  import "../chunk-OA2FURC3.js";
40
40
  import "../chunk-J2GP3J3X.js";
41
41
  import "../chunk-YNMP647F.js";
42
- import "../chunk-JKGHTBEV.js";
42
+ import "../chunk-WY3PWHWY.js";
43
43
  import "../chunk-DPFET73G.js";
44
- import "../chunk-CLDCHOEA.js";
44
+ import "../chunk-ZMK4VX7V.js";
45
45
  import "../chunk-TS5WKTFB.js";
46
46
  import "../chunk-UV6IH6HK.js";
47
47
  import "../chunk-HNCM3D7Y.js";
48
48
  import "../chunk-EUOWCVU6.js";
49
- import "../chunk-6EZDW4JS.js";
50
- import "../chunk-LQKXJPKP.js";
49
+ import "../chunk-J3NMNYGM.js";
50
+ import "../chunk-CTWZPN7G.js";
51
51
  import "../chunk-JU757HVI.js";
52
52
  import "../chunk-2AI7VYPN.js";
53
53
  import "../chunk-K44MW7JJ.js";
54
54
  import "../chunk-7OHXF5GW.js";
55
- import "../chunk-HCYSGLY2.js";
55
+ import "../chunk-HF3NDXB4.js";
56
+ import "../chunk-24YKXKCG.js";
56
57
  import "../chunk-R5FAEKXQ.js";
57
58
  import "../chunk-CQGTEGKL.js";
58
59
  import "../chunk-YLJ4XMA6.js";
@@ -1,51 +1,52 @@
1
1
  import {
2
2
  createWebSocketServer,
3
3
  signalMcpReady
4
- } from "./chunk-A7CB4USC.js";
5
- import "./chunk-RRUSYVQD.js";
6
- import "./chunk-P5MSY7ZI.js";
7
- import "./chunk-GFW2HWJ6.js";
8
- import "./chunk-HXHPKGJE.js";
4
+ } from "./chunk-GP3CLMPQ.js";
5
+ import "./chunk-NFEZATSN.js";
6
+ import "./chunk-5H5NRWHA.js";
7
+ import "./chunk-4R5GV7RW.js";
8
+ import "./chunk-ESZQTFQP.js";
9
9
  import "./chunk-XE6UC5Z3.js";
10
10
  import "./chunk-J7GAZGZT.js";
11
- import "./chunk-FEIRWXLX.js";
12
- import "./chunk-TACWRDDC.js";
13
- import "./chunk-ZL4IAFF3.js";
11
+ import "./chunk-OZWHRBDY.js";
12
+ import "./chunk-S67WIWUG.js";
13
+ import "./chunk-UKIUQAQZ.js";
14
14
  import "./chunk-7ET46SNE.js";
15
15
  import "./chunk-LW6MMSTD.js";
16
- import "./chunk-MQMPIXON.js";
16
+ import "./chunk-5UMXFLET.js";
17
17
  import "./chunk-I72ACQ6R.js";
18
18
  import "./chunk-JE7LW7Y6.js";
19
19
  import "./chunk-OAN4BXEW.js";
20
- import "./chunk-VXG3AFFY.js";
21
- import "./chunk-BKMWZTNO.js";
22
- import "./chunk-7JVBDBXE.js";
20
+ import "./chunk-VHLD6PCZ.js";
21
+ import "./chunk-DWA4IE65.js";
22
+ import "./chunk-7QMWYNVF.js";
23
23
  import "./chunk-JURM3RPZ.js";
24
- import "./chunk-Y6ZGHOKM.js";
25
- import "./chunk-FGNJMKDV.js";
26
- import "./chunk-M5T4RDPJ.js";
27
- import "./chunk-KWAHD2JA.js";
28
- import "./chunk-ELYHHEYL.js";
24
+ import "./chunk-I5ODJKYM.js";
25
+ import "./chunk-QZOV4OVN.js";
26
+ import "./chunk-MEEUXRFL.js";
27
+ import "./chunk-F2MOHHXB.js";
28
+ import "./chunk-ORCQ3EXQ.js";
29
29
  import "./chunk-OSXPQSLW.js";
30
- import "./chunk-P57IBMK4.js";
30
+ import "./chunk-AATMPL7S.js";
31
31
  import "./chunk-LCLH6ZUL.js";
32
- import "./chunk-MGEYAYGU.js";
33
- import "./chunk-5JWJEZJ3.js";
32
+ import "./chunk-O3RCSKUH.js";
33
+ import "./chunk-5UQ4CKOA.js";
34
34
  import "./chunk-OA2FURC3.js";
35
35
  import "./chunk-J2GP3J3X.js";
36
36
  import "./chunk-DPFET73G.js";
37
- import "./chunk-CLDCHOEA.js";
37
+ import "./chunk-ZMK4VX7V.js";
38
38
  import "./chunk-TS5WKTFB.js";
39
39
  import "./chunk-UV6IH6HK.js";
40
40
  import "./chunk-HNCM3D7Y.js";
41
41
  import "./chunk-EUOWCVU6.js";
42
- import "./chunk-6EZDW4JS.js";
43
- import "./chunk-LQKXJPKP.js";
42
+ import "./chunk-J3NMNYGM.js";
43
+ import "./chunk-CTWZPN7G.js";
44
44
  import "./chunk-JU757HVI.js";
45
45
  import "./chunk-2AI7VYPN.js";
46
46
  import "./chunk-K44MW7JJ.js";
47
47
  import "./chunk-7OHXF5GW.js";
48
- import "./chunk-HCYSGLY2.js";
48
+ import "./chunk-HF3NDXB4.js";
49
+ import "./chunk-24YKXKCG.js";
49
50
  import "./chunk-R5FAEKXQ.js";
50
51
  import "./chunk-CQGTEGKL.js";
51
52
  import "./chunk-YLJ4XMA6.js";
@@ -53,4 +54,4 @@ export {
53
54
  createWebSocketServer,
54
55
  signalMcpReady
55
56
  };
56
- //# sourceMappingURL=server-GXMZMPXI.js.map
57
+ //# sourceMappingURL=server-ZHEB7XS2.js.map
@@ -1,3 +1,8 @@
1
+ import {
2
+ cliT
3
+ } from "./chunk-2OMGR7LN.js";
4
+ import "./chunk-24YKXKCG.js";
5
+ import "./chunk-CQGTEGKL.js";
1
6
  import "./chunk-YLJ4XMA6.js";
2
7
 
3
8
  // src/cli/service.ts
@@ -120,7 +125,7 @@ exec "$openfox_bin" "$@"
120
125
  `;
121
126
  await writeFile(scriptPath, scriptContent, { encoding: "utf-8" });
122
127
  await exec("chmod", ["+x", scriptPath]);
123
- console.log(`Created: ${scriptPath}`);
128
+ console.log(cliT({ en: `Created: ${scriptPath}`, fr: `Cr\xE9\xE9 : ${scriptPath}` }));
124
129
  }
125
130
  async function createSystemdService(headless) {
126
131
  const serviceDir = expandPath("~/.config/systemd/user");
@@ -144,11 +149,16 @@ Environment=OPENFOX_SERVICE=true
144
149
  WantedBy=${target}
145
150
  `;
146
151
  await writeFile(servicePath, serviceContent, "utf-8");
147
- console.log(`Created: ${servicePath}`);
152
+ console.log(cliT({ en: `Created: ${servicePath}`, fr: `Cr\xE9\xE9 : ${servicePath}` }));
148
153
  }
149
154
  async function runServiceCommand(_mode, subcommand, ...args) {
150
155
  if (process.platform === "win32") {
151
- console.log("openfox service is not supported on Windows (it relies on systemd). Run `openfox` directly instead.");
156
+ console.log(
157
+ cliT({
158
+ en: "openfox service is not supported on Windows (it relies on systemd). Run `openfox` directly instead.",
159
+ fr: "openfox service n\u2019est pas pris en charge sur Windows (il repose sur systemd). Lancez `openfox` directement \xE0 la place."
160
+ })
161
+ );
152
162
  process.exitCode = 1;
153
163
  return;
154
164
  }
@@ -162,7 +172,12 @@ async function runServiceCommand(_mode, subcommand, ...args) {
162
172
  case "install": {
163
173
  let headlessOverride;
164
174
  if (headlessFlag && desktopFlag) {
165
- console.error("Cannot use both --headless and --desktop");
175
+ console.error(
176
+ cliT({
177
+ en: "Cannot use both --headless and --desktop",
178
+ fr: "Impossible d\u2019utiliser \xE0 la fois --headless et --desktop"
179
+ })
180
+ );
166
181
  process.exit(1);
167
182
  } else if (headlessFlag) {
168
183
  headlessOverride = true;
@@ -191,13 +206,15 @@ async function runServiceCommand(_mode, subcommand, ...args) {
191
206
  await serviceUninstall();
192
207
  break;
193
208
  default:
194
- console.error(`Unknown subcommand: ${subcommand}`);
209
+ console.error(cliT({ en: `Unknown subcommand: ${subcommand}`, fr: `Sous-commande inconnue : ${subcommand}` }));
195
210
  printServiceHelp();
196
211
  process.exit(1);
197
212
  }
198
213
  }
199
214
  function printServiceHelp() {
200
- console.log(`
215
+ console.log(
216
+ cliT({
217
+ en: `
201
218
  OpenFox Service Management
202
219
 
203
220
  Usage:
@@ -213,24 +230,65 @@ Commands:
213
230
  status Show service status
214
231
  logs [-f] Show recent service logs (use -f or --follow to tail)
215
232
  uninstall Disable and remove the service files
216
- `);
233
+ `,
234
+ fr: `
235
+ Gestion du service OpenFox
236
+
237
+ Utilisation :
238
+ openfox service <commande>
239
+
240
+ Commandes :
241
+ install Installer et activer le service systemd
242
+ Utiliser --headless pour les serveurs sans affichage / CLI uniquement
243
+ Utiliser --desktop pour forcer le mode bureau (d\xE9faut quand un affichage est d\xE9tect\xE9)
244
+ start D\xE9marrer le service (s\u2019il est install\xE9)
245
+ stop Arr\xEAter le service (s\u2019il est install\xE9)
246
+ restart Red\xE9marrer le service (s\u2019il est install\xE9)
247
+ status Afficher l\u2019\xE9tat du service
248
+ logs [-f] Afficher les journaux r\xE9cents du service (utiliser -f ou --follow pour suivre)
249
+ uninstall D\xE9sactiver et supprimer les fichiers du service
250
+ `
251
+ })
252
+ );
217
253
  }
218
254
  async function serviceInstall(headlessOverride) {
219
255
  const headless = headlessOverride ?? await detectHeadless();
220
256
  if (headless) {
221
- console.log("Installing OpenFox service (headless mode)...\n");
257
+ console.log(
258
+ cliT({
259
+ en: "Installing OpenFox service (headless mode)...\n",
260
+ fr: "Installation du service OpenFox (mode sans affichage)...\n"
261
+ })
262
+ );
222
263
  } else {
223
- console.log("Installing OpenFox service (desktop mode)...\n");
224
- console.log(" Tip: Use --headless for headless/CLI-only servers");
264
+ console.log(
265
+ cliT({
266
+ en: "Installing OpenFox service (desktop mode)...\n",
267
+ fr: "Installation du service OpenFox (mode bureau)...\n"
268
+ })
269
+ );
270
+ console.log(
271
+ cliT({
272
+ en: " Tip: Use --headless for headless/CLI-only servers",
273
+ fr: " Astuce : utilisez --headless pour les serveurs sans affichage / CLI uniquement"
274
+ })
275
+ );
225
276
  }
226
277
  const installed = await pathExists(SERVICE_PATH);
227
278
  if (installed) {
228
279
  const { success } = systemctl(["is-active", SERVICE_NAME], true);
229
280
  if (success) {
230
- console.log("Service is already installed and running.");
281
+ console.log(
282
+ cliT({
283
+ en: "Service is already installed and running.",
284
+ fr: "Le service est d\xE9j\xE0 install\xE9 et en cours d\u2019ex\xE9cution."
285
+ })
286
+ );
231
287
  return;
232
288
  }
233
- console.log("Service files exist. Reinstalling...");
289
+ console.log(
290
+ cliT({ en: "Service files exist. Reinstalling...", fr: "Les fichiers du service existent. R\xE9installation..." })
291
+ );
234
292
  await serviceUninstall();
235
293
  }
236
294
  await createWrapperScript(headless);
@@ -238,64 +296,69 @@ async function serviceInstall(headlessOverride) {
238
296
  systemctl(["daemon-reload"]);
239
297
  systemctl(["enable", SERVICE_NAME]);
240
298
  systemctl(["start", SERVICE_NAME]);
241
- console.log("\n\u2713 Service installed and started");
299
+ console.log(cliT({ en: "\n\u2713 Service installed and started", fr: "\n\u2713 Service install\xE9 et d\xE9marr\xE9" }));
242
300
  }
243
301
  async function serviceStart() {
244
302
  const installed = await pathExists(SERVICE_PATH);
245
303
  if (!installed) {
246
- console.log('Service not installed. Run "openfox service install" first.');
304
+ console.log(
305
+ cliT({
306
+ en: 'Service not installed. Run "openfox service install" first.',
307
+ fr: "Service non install\xE9. Lancez d\u2019abord \xAB openfox service install \xBB."
308
+ })
309
+ );
247
310
  return;
248
311
  }
249
312
  const { success } = systemctl(["is-active", SERVICE_NAME], true);
250
313
  if (success) {
251
- console.log("Service is already running.");
314
+ console.log(cliT({ en: "Service is already running.", fr: "Le service est d\xE9j\xE0 en cours d\u2019ex\xE9cution." }));
252
315
  return;
253
316
  }
254
317
  systemctl(["start", SERVICE_NAME]);
255
- console.log("\u2713 Service started");
318
+ console.log(cliT({ en: "\u2713 Service started", fr: "\u2713 Service d\xE9marr\xE9" }));
256
319
  }
257
320
  async function serviceStop() {
258
321
  const installed = await pathExists(SERVICE_PATH);
259
322
  if (!installed) {
260
- console.log("Service not installed.");
323
+ console.log(cliT({ en: "Service not installed.", fr: "Service non install\xE9." }));
261
324
  return;
262
325
  }
263
326
  const { success } = systemctl(["is-active", SERVICE_NAME], true);
264
327
  if (!success) {
265
- console.log("Service is not running.");
328
+ console.log(cliT({ en: "Service is not running.", fr: "Le service n\u2019est pas en cours d\u2019ex\xE9cution." }));
266
329
  return;
267
330
  }
268
331
  const { success: stopped } = systemctl(["stop", SERVICE_NAME]);
269
332
  if (stopped) {
270
- console.log("\u2713 Service stopped");
333
+ console.log(cliT({ en: "\u2713 Service stopped", fr: "\u2713 Service arr\xEAt\xE9" }));
271
334
  } else {
272
- console.error("\u2717 Failed to stop service");
335
+ console.error(cliT({ en: "\u2717 Failed to stop service", fr: "\u2717 \xC9chec de l\u2019arr\xEAt du service" }));
273
336
  process.exit(1);
274
337
  }
275
338
  }
276
339
  async function serviceRestart() {
277
340
  const installed = await pathExists(SERVICE_PATH);
278
341
  if (!installed) {
279
- console.log("Service not installed.");
342
+ console.log(cliT({ en: "Service not installed.", fr: "Service non install\xE9." }));
280
343
  return;
281
344
  }
282
345
  systemctl(["restart", SERVICE_NAME]);
283
- console.log("\u2713 Service restarted");
346
+ console.log(cliT({ en: "\u2713 Service restarted", fr: "\u2713 Service red\xE9marr\xE9" }));
284
347
  }
285
348
  async function serviceStatus() {
286
349
  const installed = await pathExists(SERVICE_PATH);
287
350
  if (!installed) {
288
- console.log("Service: not installed");
351
+ console.log(cliT({ en: "Service: not installed", fr: "Service : non install\xE9" }));
289
352
  return;
290
353
  }
291
- console.log("Service: installed");
354
+ console.log(cliT({ en: "Service: installed", fr: "Service : install\xE9" }));
292
355
  systemctl(["is-active", SERVICE_NAME], false);
293
356
  systemctl(["is-enabled", SERVICE_NAME], false);
294
357
  }
295
358
  async function serviceLogs(args) {
296
359
  const installed = await pathExists(SERVICE_PATH);
297
360
  if (!installed) {
298
- console.log("Service not installed.");
361
+ console.log(cliT({ en: "Service not installed.", fr: "Service non install\xE9." }));
299
362
  return;
300
363
  }
301
364
  const follow = args.includes("-f") || args.includes("--follow");
@@ -306,14 +369,14 @@ async function serviceLogs(args) {
306
369
  encoding: "utf-8",
307
370
  windowsHide: true
308
371
  });
309
- console.log(result.stdout || result.stderr || "No logs");
372
+ console.log(result.stdout || result.stderr || cliT({ en: "No logs", fr: "Aucun journal" }));
310
373
  }
311
374
  }
312
375
  async function serviceUninstall() {
313
- console.log("Uninstalling OpenFox service...\n");
376
+ console.log(cliT({ en: "Uninstalling OpenFox service...\n", fr: "D\xE9sinstallation du service OpenFox...\n" }));
314
377
  const installed = await pathExists(SERVICE_PATH);
315
378
  if (!installed) {
316
- console.log("Service not installed.");
379
+ console.log(cliT({ en: "Service not installed.", fr: "Service non install\xE9." }));
317
380
  return;
318
381
  }
319
382
  const { success } = systemctl(["is-active", SERVICE_NAME], true);
@@ -323,19 +386,21 @@ async function serviceUninstall() {
323
386
  systemctl(["disable", SERVICE_NAME]);
324
387
  try {
325
388
  await rm(expandPath(SERVICE_PATH));
326
- console.log(`Removed: ${expandPath(SERVICE_PATH)}`);
389
+ console.log(cliT({ en: `Removed: ${expandPath(SERVICE_PATH)}`, fr: `Supprim\xE9 : ${expandPath(SERVICE_PATH)}` }));
327
390
  } catch {
328
391
  }
329
392
  try {
330
393
  await rm(expandPath(RUN_SCRIPT_PATH));
331
- console.log(`Removed: ${expandPath(RUN_SCRIPT_PATH)}`);
394
+ console.log(
395
+ cliT({ en: `Removed: ${expandPath(RUN_SCRIPT_PATH)}`, fr: `Supprim\xE9 : ${expandPath(RUN_SCRIPT_PATH)}` })
396
+ );
332
397
  } catch {
333
398
  }
334
399
  systemctl(["daemon-reload"]);
335
- console.log("\n\u2713 Service uninstalled");
400
+ console.log(cliT({ en: "\n\u2713 Service uninstalled", fr: "\n\u2713 Service d\xE9sinstall\xE9" }));
336
401
  }
337
402
  export {
338
403
  detectHeadless,
339
404
  runServiceCommand
340
405
  };
341
- //# sourceMappingURL=service-WKABQHKL.js.map
406
+ //# sourceMappingURL=service-M77VWL2M.js.map
@@ -2,26 +2,27 @@ import {
2
2
  createTasksService,
3
3
  isTaskConflictError,
4
4
  isTaskGateError
5
- } from "./chunk-FEIRWXLX.js";
5
+ } from "./chunk-OZWHRBDY.js";
6
6
  import "./chunk-OSXPQSLW.js";
7
- import "./chunk-5JWJEZJ3.js";
7
+ import "./chunk-5UQ4CKOA.js";
8
8
  import "./chunk-OA2FURC3.js";
9
9
  import "./chunk-J2GP3J3X.js";
10
10
  import "./chunk-DPFET73G.js";
11
- import "./chunk-CLDCHOEA.js";
11
+ import "./chunk-ZMK4VX7V.js";
12
12
  import "./chunk-TS5WKTFB.js";
13
13
  import "./chunk-UV6IH6HK.js";
14
14
  import "./chunk-HNCM3D7Y.js";
15
15
  import "./chunk-EUOWCVU6.js";
16
- import "./chunk-6EZDW4JS.js";
17
- import "./chunk-LQKXJPKP.js";
16
+ import "./chunk-J3NMNYGM.js";
17
+ import "./chunk-CTWZPN7G.js";
18
18
  import "./chunk-JU757HVI.js";
19
19
  import "./chunk-2AI7VYPN.js";
20
20
  import "./chunk-K44MW7JJ.js";
21
+ import "./chunk-24YKXKCG.js";
21
22
  import "./chunk-YLJ4XMA6.js";
22
23
  export {
23
24
  createTasksService,
24
25
  isTaskConflictError,
25
26
  isTaskGateError
26
27
  };
27
- //# sourceMappingURL=service-O3LCO3TQ.js.map
28
+ //# sourceMappingURL=service-XIUNS5XV.js.map
@@ -3,12 +3,12 @@ import {
3
3
  getAllSessionOverrides,
4
4
  getSessionDisabledServers,
5
5
  setSessionDisabledServers
6
- } from "./chunk-TACWRDDC.js";
7
- import "./chunk-KWAHD2JA.js";
8
- import "./chunk-ELYHHEYL.js";
6
+ } from "./chunk-S67WIWUG.js";
7
+ import "./chunk-F2MOHHXB.js";
8
+ import "./chunk-ORCQ3EXQ.js";
9
9
  import "./chunk-OSXPQSLW.js";
10
10
  import "./chunk-DPFET73G.js";
11
- import "./chunk-LQKXJPKP.js";
11
+ import "./chunk-CTWZPN7G.js";
12
12
  import "./chunk-JU757HVI.js";
13
13
  import "./chunk-K44MW7JJ.js";
14
14
  import "./chunk-CQGTEGKL.js";
@@ -19,4 +19,4 @@ export {
19
19
  getSessionDisabledServers,
20
20
  setSessionDisabledServers
21
21
  };
22
- //# sourceMappingURL=session-overrides-OECQYRDK.js.map
22
+ //# sourceMappingURL=session-overrides-LYW5PJ3R.js.map
@@ -12,6 +12,7 @@ import {
12
12
  listSessions,
13
13
  listSessionsByProject,
14
14
  listSessionsLimited,
15
+ setSessionMessageCount,
15
16
  toggleFavorite,
16
17
  updateSessionBranch,
17
18
  updateSessionCachedPrompt,
@@ -27,11 +28,11 @@ import {
27
28
  updateSessionRunning,
28
29
  updateSessionWorkdir,
29
30
  updateWorkflowExecutionStatus
30
- } from "./chunk-KWAHD2JA.js";
31
- import "./chunk-ELYHHEYL.js";
31
+ } from "./chunk-F2MOHHXB.js";
32
+ import "./chunk-ORCQ3EXQ.js";
32
33
  import "./chunk-OSXPQSLW.js";
33
34
  import "./chunk-DPFET73G.js";
34
- import "./chunk-LQKXJPKP.js";
35
+ import "./chunk-CTWZPN7G.js";
35
36
  import "./chunk-JU757HVI.js";
36
37
  import "./chunk-K44MW7JJ.js";
37
38
  import "./chunk-CQGTEGKL.js";
@@ -50,6 +51,7 @@ export {
50
51
  listSessions,
51
52
  listSessionsByProject,
52
53
  listSessionsLimited,
54
+ setSessionMessageCount,
53
55
  toggleFavorite,
54
56
  updateSessionBranch,
55
57
  updateSessionCachedPrompt,
@@ -66,4 +68,4 @@ export {
66
68
  updateSessionWorkdir,
67
69
  updateWorkflowExecutionStatus
68
70
  };
69
- //# sourceMappingURL=sessions-NMPX5ICI.js.map
71
+ //# sourceMappingURL=sessions-AOK3AGHY.js.map
@@ -6,7 +6,7 @@ import {
6
6
  getMaxVisibleItems,
7
7
  getSetting,
8
8
  setSetting
9
- } from "./chunk-LQKXJPKP.js";
9
+ } from "./chunk-CTWZPN7G.js";
10
10
  import "./chunk-JU757HVI.js";
11
11
  import "./chunk-K44MW7JJ.js";
12
12
  import "./chunk-YLJ4XMA6.js";
@@ -19,4 +19,4 @@ export {
19
19
  getSetting,
20
20
  setSetting
21
21
  };
22
- //# sourceMappingURL=settings-MDCRNQBY.js.map
22
+ //# sourceMappingURL=settings-ZJPM6PQV.js.map
@@ -1,6 +1,6 @@
1
- import { a as Message, S as SessionStats } from '../types-BIkpxjaj.js';
2
- export { A as Attachment, C as CallStatsDataPoint, b as Config, c as ContextState, d as ContextWindow, e as Criterion, f as CriterionAttempt, g as CriterionStatus, h as CriterionValidation, D as DangerLevel, i as Diagnostic, E as EditContextEdit, j as EditContextLine, k as EditContextRegion, l as ElementData, m as ExecutionState, F as FileReadEntry, I as InjectedFile, L as LLMCallStats, n as LlmBackend, o as MessageRole, p as MessageSegment, q as MessageStats, r as MetadataEntry, M as ModelConfig, s as ModelSessionStats, P as PreparingToolCall, t as Project, u as ProjectTask, v as ProjectTaskCounts, w as ProjectTaskSettings, x as Provider, y as ProviderBackend, R as RecentUserPrompt, z as Session, B as SessionMetadata, G as SessionMode, H as SessionPhase, J as SessionSummary, K as StatsDataPoint, N as StatsIdentity, O as TaskActor, Q as TaskAuditEntry, U as TaskGateConfig, V as TaskGateValue, W as TaskRunState, X as TaskStatus, Y as Todo, T as ToolCall, Z as ToolMode, _ as ToolName, $ as ToolResult, a0 as UserStepChoice, a1 as ValidationResult, a2 as WorkflowExecution, a3 as WorkflowExecutionStatus, a4 as WorkflowLaunchScope, a5 as WorkflowParameter, a6 as WorkflowScope } from '../types-BIkpxjaj.js';
3
- export { A as AgentEvent, a as AskAnswerPayload, b as AskUserEvent, B as BackgroundProcess, c as BackgroundProcessExitedPayload, d as BackgroundProcessOutputPayload, e as BackgroundProcessRemovedPayload, f as BackgroundProcessStartedPayload, g as BackgroundProcessStatus, C as ChatAskUserPayload, h as ChatDeltaPayload, i as ChatDonePayload, j as ChatErrorPayload, k as ChatFormatRetryPayload, l as ChatLLMRetryFailedPayload, m as ChatLLMRetryNowPayload, n as ChatLLMRetryPayload, o as ChatMessagePayload, p as ChatMessageUpdatedPayload, q as ChatPathConfirmationPayload, r as ChatProgressPayload, s as ChatRetryPayload, t as ChatStatsPayload, u as ChatThinkingPayload, v as ChatTodoPayload, w as ChatToolCallPayload, x as ChatToolOutputPayload, y as ChatToolPreparingPayload, z as ChatToolResultPayload, D as ChatVisionFallbackPayload, E as ChoiceOption, F as ClientMessage, G as ClientMessageType, H as ContextCompactionEvent, I as ContextPreviewPayload, J as ContextStatePayload, K as CriteriaUpdatedPayload, L as DevServerOutputPayload, M as DevServerStatePayload, N as DiffLine, O as ErrorPayload, P as GitDiffFile, Q as GitStatusPayload, R as LogLine, S as LspDiagnosticsPayload, T as MetadataUpdatedPayload, U as ModeChangedPayload, V as PathConfirmPayload, W as PathConfirmationReason, X as PendingPathConfirmationPayload, Y as PendingQuestionPayload, Z as PhaseChangedPayload, _ as ProjectDeletedPayload, $ as ProjectListPayload, a0 as ProjectStatePayload, a1 as ProviderChangedPayload, a2 as QueueAddedEvent, a3 as QueueCancelledEvent, a4 as QueueDrainedEvent, a5 as QueueEvent, a6 as QueueEventType, a7 as QueueStatePayload, a8 as QueuedMessage, a9 as ServerMessage, aa as ServerMessageType, ab as SessionCreatedPayload, ac as SessionListPayload, ad as SessionLoadPayload, ae as SessionNameGeneratedPayload, af as SessionRunningPayload, ag as SessionStatePayload, ah as TaskCompletedPayload, ai as TasksUpdatePayload, aj as WorkflowWaitingPayload, ak as createClientMessage, al as createServerMessage, am as isClientMessage, an as isServerMessage } from '../protocol-BMUoqwYH.js';
1
+ import { c as Message, o as SessionStats } from '../types-G10ho8PT.js';
2
+ export { A as Attachment, p as CallStatsDataPoint, q as Config, C as ContextState, r as ContextWindow, f as Criterion, s as CriterionAttempt, t as CriterionStatus, u as CriterionValidation, v as DangerLevel, D as Diagnostic, E as EditContextEdit, w as EditContextLine, x as EditContextRegion, y as ElementData, z as ExecutionState, F as FileReadEntry, I as InjectedFile, L as LLMCallStats, B as LlmBackend, G as MessageRole, H as MessageSegment, d as MessageStats, g as MetadataEntry, M as ModelConfig, J as ModelSessionStats, K as PreparingToolCall, P as Project, k as ProjectTask, m as ProjectTaskCounts, l as ProjectTaskSettings, N as Provider, O as ProviderBackend, R as RecentUserPrompt, j as Session, Q as SessionMetadata, S as SessionMode, h as SessionPhase, i as SessionSummary, U as StatsDataPoint, V as StatsIdentity, X as TaskActor, Y as TaskAuditEntry, n as TaskGateConfig, Z as TaskGateValue, _ as TaskRunState, $ as TaskStatus, e as Todo, T as ToolCall, a as ToolMode, a0 as ToolName, b as ToolResult, a1 as UserStepChoice, a2 as ValidationResult, W as WorkflowExecution, a3 as WorkflowExecutionStatus, a4 as WorkflowLaunchScope, a5 as WorkflowParameter, a6 as WorkflowScope } from '../types-G10ho8PT.js';
3
+ export { A as AgentEvent, a as AskAnswerPayload, b as AskUserEvent, B as BackgroundProcess, c as BackgroundProcessExitedPayload, d as BackgroundProcessOutputPayload, e as BackgroundProcessRemovedPayload, f as BackgroundProcessStartedPayload, g as BackgroundProcessStatus, C as ChatAskUserPayload, h as ChatDeltaPayload, i as ChatDonePayload, j as ChatErrorPayload, k as ChatFormatRetryPayload, l as ChatLLMRetryFailedPayload, m as ChatLLMRetryNowPayload, n as ChatLLMRetryPayload, o as ChatMessagePayload, p as ChatMessageUpdatedPayload, q as ChatPathConfirmationPayload, r as ChatProgressPayload, s as ChatRetryPayload, t as ChatStatsPayload, u as ChatThinkingPayload, v as ChatTodoPayload, w as ChatToolCallPayload, x as ChatToolOutputPayload, y as ChatToolPreparingPayload, z as ChatToolResultPayload, D as ChatVisionFallbackPayload, E as ChoiceOption, F as ClientMessage, G as ClientMessageType, H as ContextCompactionEvent, I as ContextPreviewPayload, J as ContextStatePayload, K as CriteriaUpdatedPayload, L as DevServerOutputPayload, M as DevServerStatePayload, N as DiffLine, O as ErrorPayload, P as GitDiffFile, Q as GitStatusPayload, R as LogLine, S as LspDiagnosticsPayload, T as MetadataUpdatedPayload, U as ModeChangedPayload, V as PathConfirmPayload, W as PathConfirmationReason, X as PendingPathConfirmationPayload, Y as PendingQuestionPayload, Z as PhaseChangedPayload, _ as ProjectDeletedPayload, $ as ProjectListPayload, a0 as ProjectStatePayload, a1 as ProviderChangedPayload, a2 as QueueAddedEvent, a3 as QueueCancelledEvent, a4 as QueueDrainedEvent, a5 as QueueEvent, a6 as QueueEventType, a7 as QueueStatePayload, a8 as QueuedMessage, a9 as ServerMessage, aa as ServerMessageType, ab as SessionCreatedPayload, ac as SessionListPayload, ad as SessionLoadPayload, ae as SessionNameGeneratedPayload, af as SessionRunningPayload, ag as SessionStatePayload, ah as TaskCompletedPayload, ai as TasksUpdatePayload, aj as WorkflowWaitingPayload, ak as createClientMessage, al as createServerMessage, am as isClientMessage, an as isServerMessage } from '../protocol-Nr_H1_oC.js';
4
4
 
5
5
  /**
6
6
  * Session stats computation - aggregates response-level MessageStats from
@@ -18,4 +18,31 @@ export { A as AgentEvent, a as AskAnswerPayload, b as AskUserEvent, B as Backgro
18
18
  */
19
19
  declare function computeSessionStats(messages: Message[]): SessionStats | null;
20
20
 
21
- export { Message, SessionStats, computeSessionStats };
21
+ declare const locales: readonly ["en", "fr"];
22
+ type Locale = (typeof locales)[number];
23
+ declare const pluralForms: readonly ["one", "other"];
24
+ type PluralForm = (typeof pluralForms)[number];
25
+ type Translation = {
26
+ [L in Locale]: string | Record<PluralForm, string>;
27
+ };
28
+ declare function getLocale(): Locale;
29
+ declare function setLocale(locale: Locale): void;
30
+ /**
31
+ * Replace `{{name}}` placeholders with the matching variable. Unknown
32
+ * placeholders are left untouched so a missing variable can never silently
33
+ * hide a broken translation.
34
+ */
35
+ declare function interpolate(msg: string, vars: Record<string, string | number>): string;
36
+ /**
37
+ * Resolve a translation for the active locale.
38
+ *
39
+ * - string entries are interpolated as-is
40
+ * - plural entries pick the category via `Intl.PluralRules` for the active
41
+ * locale, using `vars.count` (defaults to 1)
42
+ *
43
+ * Both locales are mandatory at the type level, so there is deliberately no
44
+ * fallback: a missing `fr` entry is a compile error, never a runtime gap.
45
+ */
46
+ declare function t(tx: Translation, vars?: Record<string, string | number>): string;
47
+
48
+ export { type Locale, Message, type PluralForm, SessionStats, type Translation, computeSessionStats, getLocale, interpolate, locales, pluralForms, setLocale, t };
@@ -6,13 +6,27 @@ import {
6
6
  createServerMessage,
7
7
  isClientMessage,
8
8
  isServerMessage
9
- } from "../chunk-HCYSGLY2.js";
9
+ } from "../chunk-HF3NDXB4.js";
10
+ import {
11
+ getLocale,
12
+ interpolate,
13
+ locales,
14
+ pluralForms,
15
+ setLocale,
16
+ t
17
+ } from "../chunk-24YKXKCG.js";
10
18
  import "../chunk-YLJ4XMA6.js";
11
19
  export {
12
20
  computeSessionStats,
13
21
  createClientMessage,
14
22
  createServerMessage,
23
+ getLocale,
24
+ interpolate,
15
25
  isClientMessage,
16
- isServerMessage
26
+ isServerMessage,
27
+ locales,
28
+ pluralForms,
29
+ setLocale,
30
+ t
17
31
  };
18
32
  //# sourceMappingURL=index.js.map