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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.135 - 2026-09-01
4
+
5
+ ### Features
6
+
7
+ - **Export and import sessions** — save a session to a JSON file and restore it elsewhere, preserving its cached layout
8
+
9
+ ### Enhancements
10
+
11
+ - **Fuller mobile header navigation** — the project and session dropdowns from desktop now appear on mobile, with a Home shortcut back to the project list
12
+ - **Shorter French UI labels** — history, stop, and related controls use more concise wording
13
+
14
+ ### Bug Fixes
15
+
16
+ - **Live turn stats stay visible** — they no longer disappear while the assistant waits for your input
17
+ - **Header dropdown closes on middle-click** — navigating via a link's middle-click now dismisses the menu
18
+ - **Dev server status loads at startup** — the header no longer shows “Aucune config” until the popover is opened
19
+ - **Missing French labels translated** — “No matches” and “Task Completed” now render in French
20
+
21
+ ## 2.0.134 - 2026-08-31
22
+
23
+ ### Features
24
+
25
+ - **Interface language setting** — pick Automatic, English, or French to localize the web UI, server messages, and CLI
26
+ - **Agent language setting** — the agent replies in your chosen language via injected instructions
27
+ - **Create projects without git** — git init is skipped when git is missing, so git-less codebases work out of the box
28
+
29
+ ### Enhancements
30
+
31
+ - **Full error on LLM failures** — an (i) button on failed bubbles and retry pills opens a modal with the details
32
+
3
33
  ## 2.0.133 - 2026-08-30
4
34
 
5
35
  ### Features
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.135 - 2026-09-01
4
+
5
+ ### Features
6
+
7
+ - **Export and import sessions** — save a session to a JSON file and restore it elsewhere, preserving its cached layout
8
+
9
+ ### Enhancements
10
+
11
+ - **Fuller mobile header navigation** — the project and session dropdowns from desktop now appear on mobile, with a Home shortcut back to the project list
12
+ - **Shorter French UI labels** — history, stop, and related controls use more concise wording
13
+
14
+ ### Bug Fixes
15
+
16
+ - **Live turn stats stay visible** — they no longer disappear while the assistant waits for your input
17
+ - **Header dropdown closes on middle-click** — navigating via a link's middle-click now dismisses the menu
18
+ - **Dev server status loads at startup** — the header no longer shows “Aucune config” until the popover is opened
19
+ - **Missing French labels translated** — “No matches” and “Task Completed” now render in French
20
+
21
+ ## 2.0.134 - 2026-08-31
22
+
23
+ ### Features
24
+
25
+ - **Interface language setting** — pick Automatic, English, or French to localize the web UI, server messages, and CLI
26
+ - **Agent language setting** — the agent replies in your chosen language via injected instructions
27
+ - **Create projects without git** — git init is skipped when git is missing, so git-less codebases work out of the box
28
+
29
+ ### Enhancements
30
+
31
+ - **Full error on LLM failures** — an (i) button on failed bubbles and retry pills opens a modal with the details
32
+
3
33
  ## 2.0.133 - 2026-08-30
4
34
 
5
35
  ### Features
@@ -2,55 +2,56 @@ import {
2
2
  buildRunChatTurnParams,
3
3
  finalizeTurnCompletion,
4
4
  generateSessionNameForSession
5
- } from "./chunk-RRUSYVQD.js";
5
+ } from "./chunk-NFEZATSN.js";
6
6
  import {
7
7
  runChatTurn
8
- } from "./chunk-GFW2HWJ6.js";
9
- import "./chunk-HXHPKGJE.js";
8
+ } from "./chunk-4R5GV7RW.js";
9
+ import "./chunk-ESZQTFQP.js";
10
10
  import "./chunk-XE6UC5Z3.js";
11
11
  import "./chunk-J7GAZGZT.js";
12
- import "./chunk-FEIRWXLX.js";
13
- import "./chunk-TACWRDDC.js";
12
+ import "./chunk-OZWHRBDY.js";
13
+ import "./chunk-S67WIWUG.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";
24
+ import "./chunk-I5ODJKYM.js";
25
25
  import {
26
26
  getEventStore
27
- } from "./chunk-FGNJMKDV.js";
28
- import "./chunk-M5T4RDPJ.js";
29
- import "./chunk-KWAHD2JA.js";
30
- import "./chunk-ELYHHEYL.js";
27
+ } from "./chunk-QZOV4OVN.js";
28
+ import "./chunk-MEEUXRFL.js";
29
+ import "./chunk-F2MOHHXB.js";
30
+ import "./chunk-ORCQ3EXQ.js";
31
31
  import "./chunk-OSXPQSLW.js";
32
32
  import {
33
33
  createChatMessageMessage,
34
34
  createPhaseChangedMessage,
35
35
  createSessionRunningMessage
36
- } from "./chunk-P57IBMK4.js";
36
+ } from "./chunk-AATMPL7S.js";
37
37
  import "./chunk-LCLH6ZUL.js";
38
- import "./chunk-MGEYAYGU.js";
39
- import "./chunk-5JWJEZJ3.js";
38
+ import "./chunk-O3RCSKUH.js";
39
+ import "./chunk-5UQ4CKOA.js";
40
40
  import "./chunk-OA2FURC3.js";
41
41
  import "./chunk-J2GP3J3X.js";
42
42
  import "./chunk-DPFET73G.js";
43
- import "./chunk-CLDCHOEA.js";
43
+ import "./chunk-ZMK4VX7V.js";
44
44
  import "./chunk-TS5WKTFB.js";
45
45
  import "./chunk-UV6IH6HK.js";
46
46
  import "./chunk-HNCM3D7Y.js";
47
47
  import "./chunk-EUOWCVU6.js";
48
- import "./chunk-6EZDW4JS.js";
49
- import "./chunk-LQKXJPKP.js";
48
+ import "./chunk-J3NMNYGM.js";
49
+ import "./chunk-CTWZPN7G.js";
50
50
  import "./chunk-JU757HVI.js";
51
51
  import "./chunk-2AI7VYPN.js";
52
52
  import "./chunk-K44MW7JJ.js";
53
- import "./chunk-HCYSGLY2.js";
53
+ import "./chunk-HF3NDXB4.js";
54
+ import "./chunk-24YKXKCG.js";
54
55
  import "./chunk-R5FAEKXQ.js";
55
56
  import "./chunk-CQGTEGKL.js";
56
57
  import "./chunk-YLJ4XMA6.js";
@@ -174,4 +175,4 @@ export {
174
175
  startChatSession,
175
176
  stopSessionExecution
176
177
  };
177
- //# sourceMappingURL=chat-handler-T47GATL5.js.map
178
+ //# sourceMappingURL=chat-handler-WGDFMOOD.js.map
@@ -0,0 +1,35 @@
1
+ // src/shared/i18n/index.ts
2
+ var locales = ["en", "fr"];
3
+ var pluralForms = ["one", "other"];
4
+ var currentLocale = "en";
5
+ function getLocale() {
6
+ return currentLocale;
7
+ }
8
+ function setLocale(locale) {
9
+ currentLocale = locale;
10
+ }
11
+ function interpolate(msg, vars) {
12
+ return msg.replace(/\{\{(\w+)\}\}/g, (match, key) => {
13
+ const value = vars[key];
14
+ return value === void 0 ? match : String(value);
15
+ });
16
+ }
17
+ function t(tx, vars) {
18
+ const entry = tx[currentLocale];
19
+ if (typeof entry === "string") {
20
+ return interpolate(entry, vars ?? {});
21
+ }
22
+ const count = typeof vars?.["count"] === "number" ? vars["count"] : 1;
23
+ const form = new Intl.PluralRules(currentLocale).select(count);
24
+ return interpolate(entry[form], { ...vars, count });
25
+ }
26
+
27
+ export {
28
+ locales,
29
+ pluralForms,
30
+ getLocale,
31
+ setLocale,
32
+ interpolate,
33
+ t
34
+ };
35
+ //# sourceMappingURL=chunk-24YKXKCG.js.map
@@ -0,0 +1,45 @@
1
+ import {
2
+ getLocale,
3
+ setLocale,
4
+ t
5
+ } from "./chunk-24YKXKCG.js";
6
+ import {
7
+ getDatabasePath
8
+ } from "./chunk-CQGTEGKL.js";
9
+
10
+ // src/cli/i18n.ts
11
+ import Database from "better-sqlite3";
12
+ var mode = null;
13
+ var resolved = null;
14
+ function setCliMode(value) {
15
+ mode = value;
16
+ resolved = null;
17
+ }
18
+ function resolveLocale() {
19
+ if (resolved) return resolved;
20
+ let locale = "en";
21
+ try {
22
+ if (!mode) return "en";
23
+ const db = new Database(getDatabasePath(mode), { readonly: true });
24
+ try {
25
+ const row = db.prepare(`SELECT value FROM settings WHERE key = 'display.locale'`).get();
26
+ if (row?.value === "fr") locale = "fr";
27
+ } finally {
28
+ db.close();
29
+ }
30
+ } catch {
31
+ }
32
+ resolved = locale;
33
+ return locale;
34
+ }
35
+ function cliT(tx, vars) {
36
+ const locale = resolveLocale();
37
+ if (getLocale() !== locale) setLocale(locale);
38
+ return t(tx, vars);
39
+ }
40
+
41
+ export {
42
+ setCliMode,
43
+ cliT
44
+ };
45
+ //# sourceMappingURL=chunk-2OMGR7LN.js.map
@@ -4,7 +4,10 @@ import {
4
4
  getToolRegistryForAgent,
5
5
  processEventsForConversation,
6
6
  runTopLevelAgentLoop
7
- } from "./chunk-HXHPKGJE.js";
7
+ } from "./chunk-ESZQTFQP.js";
8
+ import {
9
+ serverT
10
+ } from "./chunk-OZWHRBDY.js";
8
11
  import {
9
12
  TurnMetrics,
10
13
  createChatDoneEvent,
@@ -15,34 +18,34 @@ import {
15
18
  checkToolChangesAndInject,
16
19
  computeDynamicContextHash,
17
20
  getToolFingerprint
18
- } from "./chunk-VXG3AFFY.js";
21
+ } from "./chunk-VHLD6PCZ.js";
19
22
  import {
20
23
  getAllInstructions,
21
24
  getEnabledSkillMetadata
22
- } from "./chunk-BKMWZTNO.js";
25
+ } from "./chunk-DWA4IE65.js";
23
26
  import {
24
27
  buildAgentReminder,
25
28
  buildAgentSmallReminder,
26
29
  buildTopLevelSystemPrompt
27
- } from "./chunk-7JVBDBXE.js";
30
+ } from "./chunk-7QMWYNVF.js";
28
31
  import {
29
32
  PathAccessDeniedError
30
- } from "./chunk-Y6ZGHOKM.js";
33
+ } from "./chunk-I5ODJKYM.js";
31
34
  import {
32
35
  getCurrentContextWindowId,
33
36
  getCurrentWindowMessageOptions,
34
37
  getEventStore
35
- } from "./chunk-FGNJMKDV.js";
38
+ } from "./chunk-QZOV4OVN.js";
36
39
  import {
37
40
  buildSnapshotFromSessionState
38
- } from "./chunk-M5T4RDPJ.js";
41
+ } from "./chunk-MEEUXRFL.js";
39
42
  import {
40
43
  findAgentById,
41
44
  getRuntimeConfig,
42
45
  getSubAgents,
43
46
  loadAllAgentsDefault,
44
47
  resolveDefaultAgentId
45
- } from "./chunk-ELYHHEYL.js";
48
+ } from "./chunk-ORCQ3EXQ.js";
46
49
  import {
47
50
  logger
48
51
  } from "./chunk-K44MW7JJ.js";
@@ -52,7 +55,7 @@ import {
52
55
 
53
56
  // src/server/chat/orchestrator.ts
54
57
  async function buildRetryPatterns() {
55
- const { getSetting, SETTINGS_KEYS } = await import("./settings-MDCRNQBY.js");
58
+ const { getSetting, SETTINGS_KEYS } = await import("./settings-ZJPM6PQV.js");
56
59
  const raw = getSetting(SETTINGS_KEYS.RETRY_PATTERNS);
57
60
  if (!raw) {
58
61
  const oldXmlProtection = getSetting("llm.disableXmlProtection");
@@ -125,11 +128,20 @@ async function runChatTurn(options) {
125
128
  } catch (error) {
126
129
  if (error instanceof PathAccessDeniedError) {
127
130
  const errorMsgId2 = crypto.randomUUID();
128
- const reasonText = error.reason === "sensitive_file" ? "sensitive files that may contain secrets" : error.reason === "both" ? "files outside the project and sensitive files" : "files outside the project directory";
131
+ const reasonText = error.reason === "sensitive_file" ? serverT({
132
+ en: "sensitive files that may contain secrets",
133
+ fr: "des fichiers sensibles pouvant contenir des secrets"
134
+ }) : error.reason === "both" ? serverT({
135
+ en: "files outside the project and sensitive files",
136
+ fr: "des fichiers hors du projet et des fichiers sensibles"
137
+ }) : serverT({ en: "files outside the project directory", fr: "des fichiers hors du dossier du projet" });
129
138
  eventStore.append(sessionId, {
130
139
  type: "chat.error",
131
140
  data: {
132
- error: `User denied access to ${reasonText}.`,
141
+ error: serverT(
142
+ { en: "User denied access to {{reason}}.", fr: "Acc\xE8s refus\xE9 par l\u2019utilisateur : {{reason}}." },
143
+ { reason: reasonText }
144
+ ),
133
145
  recoverable: false
134
146
  }
135
147
  });
@@ -138,7 +150,13 @@ async function runChatTurn(options) {
138
150
  createMessageStartEvent(
139
151
  errorMsgId2,
140
152
  "user",
141
- `Access denied: ${error.paths.join(", ")}. If you need this file, explain why and ask the user for permission.`,
153
+ serverT(
154
+ {
155
+ en: "Access denied: {{paths}}. If you need this file, explain why and ask the user for permission.",
156
+ fr: "Acc\xE8s refus\xE9 : {{paths}}. Si vous avez besoin de ce fichier, expliquez pourquoi et demandez l\u2019autorisation \xE0 l\u2019utilisateur."
157
+ },
158
+ { paths: error.paths.join(", ") }
159
+ ),
142
160
  {
143
161
  ...getCurrentWindowMessageOptions(sessionId) ?? {},
144
162
  isSystemGenerated: true,
@@ -162,7 +180,7 @@ async function runChatTurn(options) {
162
180
  eventStore.append(sessionId, {
163
181
  type: "chat.error",
164
182
  data: {
165
- error: error instanceof Error ? error.message : "Unknown error",
183
+ error: error instanceof Error ? error.message : serverT({ en: "Unknown error", fr: "Erreur inconnue" }),
166
184
  recoverable: false
167
185
  }
168
186
  });
@@ -171,7 +189,10 @@ async function runChatTurn(options) {
171
189
  createMessageStartEvent(
172
190
  errorMsgId,
173
191
  "user",
174
- `Error: ${error instanceof Error ? error.message : "Unknown error"}`,
192
+ serverT(
193
+ { en: "Error: {{message}}", fr: "Erreur : {{message}}" },
194
+ { message: error instanceof Error ? error.message : serverT({ en: "Unknown error", fr: "Erreur inconnue" }) }
195
+ ),
175
196
  {
176
197
  ...getCurrentWindowMessageOptions(sessionId) ?? {},
177
198
  isSystemGenerated: true,
@@ -334,7 +355,7 @@ async function runAgentTurn(options, turnMetrics, agentId, append, callbacks) {
334
355
  getConversationMessages: buildGetConversationMessages(options.sessionId, resolveAgentClient, append),
335
356
  injectAgentReminder: () => injectAgentReminder(options.sessionId, agentDef),
336
357
  rebuildCachedContext: async () => {
337
- const { applyDynamicContext } = await import("./dynamic-context-NJZKAZE3.js");
358
+ const { applyDynamicContext } = await import("./dynamic-context-LKC6JYLQ.js");
338
359
  await applyDynamicContext(options.sessionManager, options.sessionId, agentLlmClient.getModel());
339
360
  },
340
361
  ...options.initialCompacting ? { initialCompacting: true } : {},
@@ -364,4 +385,4 @@ export {
364
385
  runChatTurn,
365
386
  runAgentTurn
366
387
  };
367
- //# sourceMappingURL=chunk-GFW2HWJ6.js.map
388
+ //# sourceMappingURL=chunk-4R5GV7RW.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  runAgentTurn
3
- } from "./chunk-GFW2HWJ6.js";
3
+ } from "./chunk-4R5GV7RW.js";
4
4
  import {
5
5
  executeSubAgent,
6
6
  getToolRegistryForAgent
7
- } from "./chunk-HXHPKGJE.js";
7
+ } from "./chunk-ESZQTFQP.js";
8
8
  import {
9
9
  gitSpawnEnv
10
10
  } from "./chunk-J7GAZGZT.js";
@@ -14,8 +14,9 @@ import {
14
14
  loadDefaultWorkflows,
15
15
  loadProjectWorkflows,
16
16
  loadUserWorkflows,
17
- normalizeWorkflowScope
18
- } from "./chunk-FEIRWXLX.js";
17
+ normalizeWorkflowScope,
18
+ serverT
19
+ } from "./chunk-OZWHRBDY.js";
19
20
  import {
20
21
  TurnMetrics,
21
22
  createMessageStartEvent
@@ -24,27 +25,27 @@ import {
24
25
  checkAborted,
25
26
  decodeUtf8,
26
27
  spawnShellProcess
27
- } from "./chunk-MQMPIXON.js";
28
+ } from "./chunk-5UMXFLET.js";
28
29
  import {
29
30
  terminateProcessTree
30
31
  } from "./chunk-I72ACQ6R.js";
31
32
  import {
32
33
  getCurrentContextWindowId,
33
34
  getEventStore
34
- } from "./chunk-FGNJMKDV.js";
35
+ } from "./chunk-QZOV4OVN.js";
35
36
  import {
36
37
  findAgentById,
37
38
  getRuntimeConfig,
38
39
  loadAllAgentsDefault,
39
40
  resolveDefaultAgentId
40
- } from "./chunk-ELYHHEYL.js";
41
+ } from "./chunk-ORCQ3EXQ.js";
41
42
  import {
42
43
  createChatMessageMessage,
43
44
  createSessionRunningMessage
44
- } from "./chunk-P57IBMK4.js";
45
+ } from "./chunk-AATMPL7S.js";
45
46
  import {
46
47
  LLMError
47
- } from "./chunk-6EZDW4JS.js";
48
+ } from "./chunk-J3NMNYGM.js";
48
49
  import {
49
50
  logger
50
51
  } from "./chunk-K44MW7JJ.js";
@@ -53,7 +54,7 @@ import {
53
54
  } from "./chunk-7OHXF5GW.js";
54
55
  import {
55
56
  createServerMessage
56
- } from "./chunk-HCYSGLY2.js";
57
+ } from "./chunk-HF3NDXB4.js";
57
58
  import {
58
59
  getGlobalConfigDir
59
60
  } from "./chunk-CQGTEGKL.js";
@@ -679,9 +680,10 @@ async function executeWorkflow(workflow, options, subGroup) {
679
680
  const timeout = shellStep.timeout ?? 6e4;
680
681
  const successCodes = shellStep.successExitCodes ?? [0];
681
682
  const shellMsgId = crypto.randomUUID();
683
+ const runningContent = serverT({ en: "Running: `{{command}}`", fr: "Ex\xE9cution : `{{command}}`" }, { command });
682
684
  eventStore.append(
683
685
  sessionId,
684
- createMessageStartEvent(shellMsgId, "user", `Running: \`${command}\``, {
686
+ createMessageStartEvent(shellMsgId, "user", runningContent, {
685
687
  ...currentWindowMessageOptions ?? {},
686
688
  isSystemGenerated: true,
687
689
  messageKind: "auto-prompt",
@@ -693,7 +695,7 @@ async function executeWorkflow(workflow, options, subGroup) {
693
695
  createChatMessageMessage({
694
696
  id: shellMsgId,
695
697
  role: "user",
696
- content: `Running: \`${command}\``,
698
+ content: runningContent,
697
699
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
698
700
  isSystemGenerated: true,
699
701
  messageKind: "auto-prompt",
@@ -709,10 +711,13 @@ async function executeWorkflow(workflow, options, subGroup) {
709
711
  );
710
712
  const output = [result.stdout, result.stderr].filter(Boolean).join("\n").trim();
711
713
  lastStepOutput = { stdout: result.stdout ?? "", stderr: result.stderr ?? "", exitCode: String(result.exitCode) };
712
- const outputContent = output ? `Exit code: ${result.exitCode}
713
- \`\`\`
714
- ${output.slice(0, 1e4)}
715
- \`\`\`` : `Exit code: ${result.exitCode}`;
714
+ const outputContent = output ? serverT(
715
+ {
716
+ en: "Exit code: {{code}}\n```\n{{output}}\n```",
717
+ fr: "Code de sortie : {{code}}\n```\n{{output}}\n```"
718
+ },
719
+ { code: result.exitCode, output: output.slice(0, 1e4) }
720
+ ) : serverT({ en: "Exit code: {{code}}", fr: "Code de sortie : {{code}}" }, { code: result.exitCode });
716
721
  eventStore.append(sessionId, { type: "message.done", data: { messageId: shellMsgId } });
717
722
  const outputMsgId = crypto.randomUUID();
718
723
  eventStore.append(
@@ -1016,4 +1021,4 @@ export {
1016
1021
  abortRunnerRun,
1017
1022
  launchWorkflowRun
1018
1023
  };
1019
- //# sourceMappingURL=chunk-P5MSY7ZI.js.map
1024
+ //# sourceMappingURL=chunk-5H5NRWHA.js.map
@@ -11,11 +11,11 @@ import {
11
11
  } from "./chunk-I72ACQ6R.js";
12
12
  import {
13
13
  getPlatformShell
14
- } from "./chunk-MGEYAYGU.js";
14
+ } from "./chunk-O3RCSKUH.js";
15
15
  import {
16
16
  SETTINGS_KEYS,
17
17
  getSetting
18
- } from "./chunk-LQKXJPKP.js";
18
+ } from "./chunk-CTWZPN7G.js";
19
19
 
20
20
  // src/server/utils/shell.ts
21
21
  import { spawn } from "child_process";
@@ -214,4 +214,4 @@ export {
214
214
  getSessionProcesses2 as getSessionProcesses,
215
215
  getProcessLogs
216
216
  };
217
- //# sourceMappingURL=chunk-MQMPIXON.js.map
217
+ //# sourceMappingURL=chunk-5UMXFLET.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-OA2FURC3.js";
5
5
  import {
6
6
  createLLMClient
7
- } from "./chunk-CLDCHOEA.js";
7
+ } from "./chunk-ZMK4VX7V.js";
8
8
  import {
9
9
  getModelProfile
10
10
  } from "./chunk-TS5WKTFB.js";
@@ -895,4 +895,4 @@ export {
895
895
  parseDefaultModelSelection,
896
896
  createProviderManager
897
897
  };
898
- //# sourceMappingURL=chunk-5JWJEZJ3.js.map
898
+ //# sourceMappingURL=chunk-5UQ4CKOA.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getPlatformShell
3
- } from "./chunk-MGEYAYGU.js";
3
+ } from "./chunk-O3RCSKUH.js";
4
4
 
5
5
  // src/server/tools/tool-policy.ts
6
6
  var ALWAYS_ALLOWED = /* @__PURE__ */ new Set(["step_done"]);
@@ -246,4 +246,4 @@ export {
246
246
  buildAgentSmallReminder,
247
247
  COMPACTION_PROMPT
248
248
  };
249
- //# sourceMappingURL=chunk-7JVBDBXE.js.map
249
+ //# sourceMappingURL=chunk-7QMWYNVF.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  createServerMessage,
6
6
  isClientMessage
7
- } from "./chunk-HCYSGLY2.js";
7
+ } from "./chunk-HF3NDXB4.js";
8
8
 
9
9
  // src/server/session/client-session.ts
10
10
  function toClientSession(session) {
@@ -143,8 +143,8 @@ function createChatStatsMessage(stats) {
143
143
  function createChatErrorMessage(error, recoverable) {
144
144
  return createServerMessage("chat.error", { error, recoverable });
145
145
  }
146
- function createChatLLMRetryMessage(attempt, retryInMs) {
147
- return createServerMessage("chat.llm_retry", { attempt, retryInMs });
146
+ function createChatLLMRetryMessage(attempt, retryInMs, error) {
147
+ return createServerMessage("chat.llm_retry", { attempt, retryInMs, error });
148
148
  }
149
149
  function createChatLLMRetryFailedMessage(error, attempts) {
150
150
  return createServerMessage("chat.llm_retry_failed", { error, attempts });
@@ -378,4 +378,4 @@ export {
378
378
  createQueueStateMessage,
379
379
  storedEventToServerMessage
380
380
  };
381
- //# sourceMappingURL=chunk-P57IBMK4.js.map
381
+ //# sourceMappingURL=chunk-AATMPL7S.js.map