codex-chatgpt-control 0.5.1-alpha.4 → 0.5.1-alpha.6

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 (169) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/contracts/v1/fixtures/doctor-scenario-preflight.json +2 -2
  3. package/dist/codex-chatgpt-control-backend.mjs +576 -289
  4. package/dist/codex-chatgpt-control-live-smoke.bundle.mjs +592 -295
  5. package/dist/codex-chatgpt-control-release-canary.bundle.mjs +592 -295
  6. package/dist/codex-chatgpt-control.bundle.mjs +576 -289
  7. package/dist/src/browser/attach.js +8 -0
  8. package/dist/src/commands/chat-popover.d.ts +3 -0
  9. package/dist/src/commands/chat-popover.js +144 -27
  10. package/dist/src/commands/configuration.js +91 -19
  11. package/dist/src/commands/experience.d.ts +2 -0
  12. package/dist/src/commands/experience.js +52 -9
  13. package/dist/src/commands/files.js +14 -6
  14. package/dist/src/commands/messages.js +49 -3
  15. package/dist/src/commands/modes.js +6 -2
  16. package/dist/src/dom/generation-state.js +19 -4
  17. package/dist/src/dom/locale/am.d.ts +2 -0
  18. package/dist/src/dom/locale/am.js +7 -5
  19. package/dist/src/dom/locale/ar.d.ts +2 -0
  20. package/dist/src/dom/locale/ar.js +4 -2
  21. package/dist/src/dom/locale/bg.d.ts +2 -0
  22. package/dist/src/dom/locale/bg.js +4 -2
  23. package/dist/src/dom/locale/bn.d.ts +2 -0
  24. package/dist/src/dom/locale/bn.js +4 -2
  25. package/dist/src/dom/locale/bs.d.ts +3 -0
  26. package/dist/src/dom/locale/bs.js +10 -7
  27. package/dist/src/dom/locale/ca.d.ts +3 -0
  28. package/dist/src/dom/locale/ca.js +4 -1
  29. package/dist/src/dom/locale/cs.d.ts +3 -0
  30. package/dist/src/dom/locale/cs.js +7 -4
  31. package/dist/src/dom/locale/da.d.ts +3 -0
  32. package/dist/src/dom/locale/da.js +7 -4
  33. package/dist/src/dom/locale/de.d.ts +2 -0
  34. package/dist/src/dom/locale/de.js +4 -2
  35. package/dist/src/dom/locale/el.d.ts +2 -0
  36. package/dist/src/dom/locale/el.js +7 -5
  37. package/dist/src/dom/locale/en.d.ts +4 -3
  38. package/dist/src/dom/locale/en.js +4 -3
  39. package/dist/src/dom/locale/es-419.d.ts +2 -0
  40. package/dist/src/dom/locale/es-419.js +4 -2
  41. package/dist/src/dom/locale/es-ES.d.ts +2 -0
  42. package/dist/src/dom/locale/es-ES.js +4 -2
  43. package/dist/src/dom/locale/et.d.ts +2 -0
  44. package/dist/src/dom/locale/et.js +7 -5
  45. package/dist/src/dom/locale/fa.d.ts +2 -0
  46. package/dist/src/dom/locale/fa.js +4 -2
  47. package/dist/src/dom/locale/fi.d.ts +2 -0
  48. package/dist/src/dom/locale/fi.js +4 -2
  49. package/dist/src/dom/locale/fr-CA.d.ts +6 -0
  50. package/dist/src/dom/locale/fr-CA.js +7 -1
  51. package/dist/src/dom/locale/fr-FR.d.ts +2 -0
  52. package/dist/src/dom/locale/fr-FR.js +9 -7
  53. package/dist/src/dom/locale/gu.d.ts +2 -0
  54. package/dist/src/dom/locale/gu.js +7 -5
  55. package/dist/src/dom/locale/hi.d.ts +2 -0
  56. package/dist/src/dom/locale/hi.js +9 -7
  57. package/dist/src/dom/locale/hr.d.ts +3 -0
  58. package/dist/src/dom/locale/hr.js +4 -1
  59. package/dist/src/dom/locale/hu.d.ts +2 -0
  60. package/dist/src/dom/locale/hu.js +4 -2
  61. package/dist/src/dom/locale/hy.d.ts +2 -0
  62. package/dist/src/dom/locale/hy.js +4 -2
  63. package/dist/src/dom/locale/id.d.ts +3 -0
  64. package/dist/src/dom/locale/id.js +4 -1
  65. package/dist/src/dom/locale/index.d.ts +11 -0
  66. package/dist/src/dom/locale/index.js +19 -0
  67. package/dist/src/dom/locale/is.d.ts +2 -0
  68. package/dist/src/dom/locale/is.js +4 -2
  69. package/dist/src/dom/locale/it.d.ts +2 -0
  70. package/dist/src/dom/locale/it.js +7 -5
  71. package/dist/src/dom/locale/ja.d.ts +2 -0
  72. package/dist/src/dom/locale/ja.js +8 -6
  73. package/dist/src/dom/locale/ka.d.ts +2 -0
  74. package/dist/src/dom/locale/ka.js +4 -2
  75. package/dist/src/dom/locale/kk.d.ts +2 -0
  76. package/dist/src/dom/locale/kk.js +8 -6
  77. package/dist/src/dom/locale/kn.d.ts +3 -0
  78. package/dist/src/dom/locale/kn.js +8 -5
  79. package/dist/src/dom/locale/ko.d.ts +2 -0
  80. package/dist/src/dom/locale/ko.js +4 -2
  81. package/dist/src/dom/locale/lt.d.ts +2 -0
  82. package/dist/src/dom/locale/lt.js +5 -3
  83. package/dist/src/dom/locale/lv.d.ts +2 -0
  84. package/dist/src/dom/locale/lv.js +4 -2
  85. package/dist/src/dom/locale/mk.d.ts +2 -0
  86. package/dist/src/dom/locale/mk.js +4 -2
  87. package/dist/src/dom/locale/ml.d.ts +2 -0
  88. package/dist/src/dom/locale/ml.js +7 -5
  89. package/dist/src/dom/locale/mn.d.ts +2 -0
  90. package/dist/src/dom/locale/mn.js +4 -2
  91. package/dist/src/dom/locale/mr.d.ts +2 -0
  92. package/dist/src/dom/locale/mr.js +7 -5
  93. package/dist/src/dom/locale/ms.d.ts +3 -0
  94. package/dist/src/dom/locale/ms.js +4 -1
  95. package/dist/src/dom/locale/my.d.ts +2 -0
  96. package/dist/src/dom/locale/my.js +4 -2
  97. package/dist/src/dom/locale/nb.d.ts +2 -0
  98. package/dist/src/dom/locale/nb.js +4 -2
  99. package/dist/src/dom/locale/nl.d.ts +3 -0
  100. package/dist/src/dom/locale/nl.js +4 -1
  101. package/dist/src/dom/locale/pa.d.ts +2 -0
  102. package/dist/src/dom/locale/pa.js +4 -2
  103. package/dist/src/dom/locale/pl.d.ts +3 -0
  104. package/dist/src/dom/locale/pl.js +4 -1
  105. package/dist/src/dom/locale/pt-BR.d.ts +2 -0
  106. package/dist/src/dom/locale/pt-BR.js +11 -9
  107. package/dist/src/dom/locale/pt-PT.d.ts +2 -0
  108. package/dist/src/dom/locale/pt-PT.js +7 -5
  109. package/dist/src/dom/locale/ro.d.ts +3 -0
  110. package/dist/src/dom/locale/ro.js +4 -1
  111. package/dist/src/dom/locale/ru.d.ts +2 -0
  112. package/dist/src/dom/locale/ru.js +4 -2
  113. package/dist/src/dom/locale/sk.d.ts +3 -0
  114. package/dist/src/dom/locale/sk.js +4 -1
  115. package/dist/src/dom/locale/sl.d.ts +3 -0
  116. package/dist/src/dom/locale/sl.js +4 -1
  117. package/dist/src/dom/locale/so.d.ts +2 -0
  118. package/dist/src/dom/locale/so.js +4 -2
  119. package/dist/src/dom/locale/sq.d.ts +2 -0
  120. package/dist/src/dom/locale/sq.js +4 -2
  121. package/dist/src/dom/locale/sr.d.ts +2 -0
  122. package/dist/src/dom/locale/sr.js +4 -2
  123. package/dist/src/dom/locale/sv.d.ts +2 -0
  124. package/dist/src/dom/locale/sv.js +4 -2
  125. package/dist/src/dom/locale/sw.d.ts +2 -0
  126. package/dist/src/dom/locale/sw.js +5 -3
  127. package/dist/src/dom/locale/ta.d.ts +2 -0
  128. package/dist/src/dom/locale/ta.js +8 -6
  129. package/dist/src/dom/locale/te.d.ts +2 -0
  130. package/dist/src/dom/locale/te.js +7 -5
  131. package/dist/src/dom/locale/th.d.ts +2 -0
  132. package/dist/src/dom/locale/th.js +4 -2
  133. package/dist/src/dom/locale/tl.d.ts +3 -0
  134. package/dist/src/dom/locale/tl.js +4 -1
  135. package/dist/src/dom/locale/tr.d.ts +3 -0
  136. package/dist/src/dom/locale/tr.js +4 -1
  137. package/dist/src/dom/locale/types.d.ts +6 -0
  138. package/dist/src/dom/locale/uk.d.ts +2 -0
  139. package/dist/src/dom/locale/uk.js +7 -5
  140. package/dist/src/dom/locale/ur.d.ts +2 -0
  141. package/dist/src/dom/locale/ur.js +4 -2
  142. package/dist/src/dom/locale/vi.d.ts +2 -0
  143. package/dist/src/dom/locale/vi.js +4 -2
  144. package/dist/src/dom/locale/zh-HK.d.ts +2 -0
  145. package/dist/src/dom/locale/zh-HK.js +4 -2
  146. package/dist/src/dom/locale/zh-Hans.d.ts +2 -0
  147. package/dist/src/dom/locale/zh-Hans.js +7 -5
  148. package/dist/src/dom/locale/zh-TW.d.ts +2 -0
  149. package/dist/src/dom/locale/zh-TW.js +6 -4
  150. package/dist/src/dom/locale-labels.d.ts +1 -1
  151. package/dist/src/dom/locale-labels.js +1 -1
  152. package/dist/src/dom/message-format.js +17 -2
  153. package/dist/src/dom/messages.js +38 -11
  154. package/dist/src/dom/selectors.d.ts +3 -2
  155. package/dist/src/dom/selectors.js +5 -7
  156. package/dist/src/dom/wait-snapshot.js +24 -5
  157. package/dist/src/safety/blockers.js +1 -1
  158. package/dist/src/scripts/apply-intelligence-locale-captures.js +15 -6
  159. package/dist/src/scripts/capture-intelligence-locales.d.ts +5 -3
  160. package/dist/src/scripts/capture-intelligence-locales.js +185 -2
  161. package/dist/src/scripts/live-smoke/scenarios.d.ts +1 -0
  162. package/dist/src/scripts/live-smoke/scenarios.js +22 -6
  163. package/dist/src/scripts/locale-capture/slider-label.d.ts +1 -0
  164. package/dist/src/scripts/locale-capture/slider-label.js +14 -0
  165. package/dist/src/types.d.ts +2 -0
  166. package/package.json +1 -1
  167. package/references/backend-protocol.md +23 -0
  168. package/references/localization.md +15 -0
  169. package/references/python-parity.md +11 -0
@@ -1013,7 +1013,7 @@ var RULES = [
1013
1013
  {
1014
1014
  kind: "not_found",
1015
1015
  message: "The requested ChatGPT conversation or page was not found.",
1016
- patterns: [/conversation not found/i, /404/i, /page not found/i]
1016
+ patterns: [/conversation not found/i, /\b404\b/i, /page not found/i]
1017
1017
  }
1018
1018
  ];
1019
1019
  function classifyVisibleText(text) {
@@ -1039,9 +1039,10 @@ function classifyVisibleText(text) {
1039
1039
  var en = {
1040
1040
  // --- Primary interaction path (accessible names) ---
1041
1041
  composerTextbox: ["Chat with ChatGPT", "Ask ChatGPT"],
1042
- workComposerTextbox: ["Work on anything", "Work on something"],
1042
+ workComposerTextbox: ["Work on anything", "Work on something", "Work with ChatGPT"],
1043
+ projectComposerPrefixes: ["New chat in"],
1043
1044
  newWork: ["Work on something else", "New work", "New task"],
1044
- sendButton: ["Send prompt"],
1045
+ sendButton: ["Send prompt", "Send"],
1045
1046
  searchChatsButton: ["Search chats"],
1046
1047
  searchChatsPlaceholder: ["Search chats..."],
1047
1048
  newChat: ["New chat"],
@@ -1114,7 +1115,7 @@ var en = {
1114
1115
  /** Exact-match transient assistant placeholders filtered out of captured responses. */
1115
1116
  transientAssistant: ["thinking", "reasoning", "searching", "searching the web"],
1116
1117
  /** Streaming "stop" control text, matched while a response generates. */
1117
- stopControl: ["stop generating", "stop streaming", "stop answering"],
1118
+ stopControl: ["stop generating", "stop streaming", "stop answering", "stop"],
1118
1119
  /** Interrupted generation markers shown after the assistant stops before completion. */
1119
1120
  stoppedAssistant: ["stopped thinking", "stopped answering", "generation stopped"],
1120
1121
  /** Response-action affordance text (fallback to the structural copy-button locator). */
@@ -1132,8 +1133,8 @@ var en = {
1132
1133
  var de = {
1133
1134
  configurationAxes: {
1134
1135
  power: ["Leistung"],
1135
- model: ["Modell"],
1136
- effort: ["Aufwand", "Denkaufwand"],
1136
+ model: ["Modell", "Modell ausw\xE4hlen"],
1137
+ effort: ["Aufwand", "Denkaufwand", "Leistung"],
1137
1138
  speed: ["Tempo"],
1138
1139
  advanced: ["Erweitert"]
1139
1140
  },
@@ -1175,8 +1176,8 @@ var de = {
1175
1176
  var esES = {
1176
1177
  configurationAxes: {
1177
1178
  power: ["Potencia"],
1178
- model: ["Modelo"],
1179
- effort: ["Esfuerzo"],
1179
+ model: ["Modelo", "Seleccionar modelo"],
1180
+ effort: ["Esfuerzo", "Potencia"],
1180
1181
  speed: ["Velocidad"],
1181
1182
  advanced: ["Avanzadas"]
1182
1183
  },
@@ -1221,17 +1222,17 @@ var esES = {
1221
1222
  var frFR = {
1222
1223
  configurationAxes: {
1223
1224
  power: ["Puissance"],
1224
- model: ["Mod\xE8le"],
1225
- effort: ["Niveau"],
1225
+ model: ["Mod\xE8le", "S\xE9lectionner le mod\xE8le"],
1226
+ effort: ["Niveau", "Puissance"],
1226
1227
  speed: ["Vitesse"],
1227
1228
  advanced: ["Avanc\xE9"]
1228
1229
  },
1229
1230
  configurationOptions: {
1230
1231
  instant: ["Instantan\xE9"],
1231
1232
  light: ["Minimal"],
1232
- medium: ["Moyenne"],
1233
- high: ["\xC9lev\xE9e"],
1234
- extraHigh: ["Tr\xE8s \xE9lev\xE9e"],
1233
+ medium: ["Moyenne", "Moyen"],
1234
+ high: ["\xC9lev\xE9e", "\xC9lev\xE9"],
1235
+ extraHigh: ["Tr\xE8s \xE9lev\xE9e", "Tr\xE8s \xE9lev\xE9"],
1235
1236
  max: ["Maximum"],
1236
1237
  fast: ["Rapide"]
1237
1238
  },
@@ -1244,11 +1245,11 @@ var frFR = {
1244
1245
  addFilesOpenerCandidates: ["Ajouter des fichiers et plus encore"],
1245
1246
  addPhotosFilesMenuItem: ["Ajouter des photos et fichiers"],
1246
1247
  copyResponse: ["Copier la r\xE9ponse"],
1247
- modeLabels: ["Moyen", "Avanc\xE9", "Tr\xE8s \xE9lev\xE9", "Instantan\xE9e", "Moyenne", "\xC9lev\xE9e", "Tr\xE8s \xE9lev\xE9e", "Instantan\xE9"],
1248
+ modeLabels: ["Moyen", "Avanc\xE9", "Tr\xE8s \xE9lev\xE9", "Instantan\xE9e", "Moyenne", "\xC9lev\xE9e", "Tr\xE8s \xE9lev\xE9e", "Instantan\xE9", "\xC9lev\xE9"],
1248
1249
  modeOptions: {
1249
1250
  instant: ["Instantan\xE9e", "Instantan\xE9"],
1250
1251
  medium: ["Moyen", "Moyenne"],
1251
- high: ["Avanc\xE9", "\xC9lev\xE9e"],
1252
+ high: ["Avanc\xE9", "\xC9lev\xE9e", "\xC9lev\xE9"],
1252
1253
  extraHigh: ["Tr\xE8s \xE9lev\xE9", "Tr\xE8s \xE9lev\xE9e"]
1253
1254
  },
1254
1255
  modeOpenerExtra: ["Configurer"],
@@ -1266,8 +1267,8 @@ var frFR = {
1266
1267
  var zhHK = {
1267
1268
  configurationAxes: {
1268
1269
  power: ["\u667A\u80FD\u5F37\u5EA6"],
1269
- model: ["\u6A21\u578B"],
1270
- effort: ["\u63A8\u7406\u5F37\u5EA6"],
1270
+ model: ["\u6A21\u578B", "\u9078\u64C7\u6A21\u578B"],
1271
+ effort: ["\u63A8\u7406\u5F37\u5EA6", "\u667A\u80FD\u5F37\u5EA6"],
1271
1272
  speed: ["\u56DE\u61C9\u901F\u5EA6"],
1272
1273
  advanced: ["\u9032\u968E"]
1273
1274
  },
@@ -1316,8 +1317,8 @@ var zhHK = {
1316
1317
  var zhTW = {
1317
1318
  configurationAxes: {
1318
1319
  power: ["\u80FD\u529B"],
1319
- model: ["\u6A21\u578B"],
1320
- effort: ["\u63A8\u7406\u5F37\u5EA6"],
1320
+ model: ["\u6A21\u578B", "\u9078\u53D6\u6A21\u578B"],
1321
+ effort: ["\u63A8\u7406\u5F37\u5EA6", "\u80FD\u529B"],
1321
1322
  speed: ["\u901F\u5EA6"],
1322
1323
  advanced: ["\u9032\u968E"]
1323
1324
  },
@@ -1341,12 +1342,12 @@ var zhTW = {
1341
1342
  addFilesOpenerCandidates: ["\u65B0\u589E\u6A94\u6848\u7B49\u66F4\u591A\u529F\u80FD"],
1342
1343
  addPhotosFilesMenuItem: ["\u65B0\u589E\u7167\u7247\u548C\u6A94\u6848"],
1343
1344
  copyResponse: ["\u8907\u88FD\u56DE\u61C9"],
1344
- modeLabels: ["\u5373\u6642", "\u4E2D\u7B49", "\u9AD8", "\u8D85\u9AD8", "\u5C08\u696D", "\u4E2D"],
1345
+ modeLabels: ["\u5373\u6642", "\u4E2D\u7B49", "\u9AD8", "\u8D85\u9AD8", "\u5C08\u696D", "\u4E2D", "\u6975\u9AD8"],
1345
1346
  modeOptions: {
1346
1347
  instant: ["\u5373\u6642"],
1347
1348
  medium: ["\u4E2D\u7B49", "\u4E2D"],
1348
1349
  high: ["\u9AD8"],
1349
- extraHigh: ["\u8D85\u9AD8"],
1350
+ extraHigh: ["\u8D85\u9AD8", "\u6975\u9AD8"],
1350
1351
  pro: ["\u5C08\u696D"]
1351
1352
  },
1352
1353
  modeOpenerExtra: ["\u8A2D\u5B9A"],
@@ -1368,8 +1369,8 @@ var zhTW = {
1368
1369
  var ja = {
1369
1370
  configurationAxes: {
1370
1371
  power: ["\u30D1\u30EF\u30FC"],
1371
- model: ["\u30E2\u30C7\u30EB"],
1372
- effort: ["\u601D\u8003\u30EC\u30D9\u30EB", "\u63A8\u8AD6\u30EC\u30D9\u30EB"],
1372
+ model: ["\u30E2\u30C7\u30EB", "\u30E2\u30C7\u30EB\u3092\u9078\u629E"],
1373
+ effort: ["\u601D\u8003\u30EC\u30D9\u30EB", "\u63A8\u8AD6\u30EC\u30D9\u30EB", "\u30D1\u30EF\u30FC"],
1373
1374
  speed: ["\u901F\u5EA6"],
1374
1375
  advanced: ["\u8A73\u7D30\u8A2D\u5B9A"]
1375
1376
  },
@@ -1377,8 +1378,8 @@ var ja = {
1377
1378
  instant: ["\u6700\u901F"],
1378
1379
  light: ["\u8EFD"],
1379
1380
  medium: ["\u4E2D\u7A0B\u5EA6"],
1380
- high: ["\u9AD8\u3044"],
1381
- extraHigh: ["\u975E\u5E38\u306B\u9AD8\u3044"],
1381
+ high: ["\u9AD8\u3044", "\u9AD8"],
1382
+ extraHigh: ["\u975E\u5E38\u306B\u9AD8\u3044", "\u6975\u9AD8"],
1382
1383
  max: ["\u6700\u5927"],
1383
1384
  ultra: ["\u30A6\u30EB\u30C8\u30E9"],
1384
1385
  standard: ["\u6A19\u6E96"],
@@ -1393,12 +1394,12 @@ var ja = {
1393
1394
  addFilesOpenerCandidates: ["\u30D5\u30A1\u30A4\u30EB\u306E\u8FFD\u52A0\u306A\u3069"],
1394
1395
  addPhotosFilesMenuItem: ["\u5199\u771F\u3068\u30D5\u30A1\u30A4\u30EB\u3092\u8FFD\u52A0"],
1395
1396
  copyResponse: ["\u56DE\u7B54\u3092\u30B3\u30D4\u30FC\u3059\u308B"],
1396
- modeLabels: ["\u6700\u901F", "\u6A19\u6E96", "\u9AD8", "\u6700\u9AD8", "\u4E2D\u7A0B\u5EA6", "\u9AD8\u3044", "\u975E\u5E38\u306B\u9AD8\u3044"],
1397
+ modeLabels: ["\u6700\u901F", "\u6A19\u6E96", "\u9AD8", "\u6700\u9AD8", "\u4E2D\u7A0B\u5EA6", "\u9AD8\u3044", "\u975E\u5E38\u306B\u9AD8\u3044", "\u6975\u9AD8"],
1397
1398
  modeOptions: {
1398
1399
  instant: ["\u6700\u901F"],
1399
1400
  medium: ["\u6A19\u6E96", "\u4E2D\u7A0B\u5EA6"],
1400
1401
  high: ["\u9AD8", "\u9AD8\u3044"],
1401
- extraHigh: ["\u6700\u9AD8", "\u975E\u5E38\u306B\u9AD8\u3044"]
1402
+ extraHigh: ["\u6700\u9AD8", "\u975E\u5E38\u306B\u9AD8\u3044", "\u6975\u9AD8"]
1402
1403
  },
1403
1404
  modeOpenerExtra: ["\u8A2D\u5B9A\u3059\u308B"],
1404
1405
  tools: {
@@ -1414,13 +1415,13 @@ var ja = {
1414
1415
  var it = {
1415
1416
  configurationAxes: {
1416
1417
  power: ["Potenza"],
1417
- model: ["Modello"],
1418
- effort: ["Sforzo"],
1418
+ model: ["Modello", "Seleziona modello"],
1419
+ effort: ["Sforzo", "Potenza"],
1419
1420
  speed: ["Velocit\xE0"],
1420
1421
  advanced: ["Avanzate"]
1421
1422
  },
1422
1423
  configurationOptions: {
1423
- instant: ["Istantaneo"],
1424
+ instant: ["Istantaneo", "Immediato"],
1424
1425
  medium: ["Medio"],
1425
1426
  high: ["Alto"],
1426
1427
  extraHigh: ["Molto alto"],
@@ -1435,9 +1436,9 @@ var it = {
1435
1436
  addFilesOpenerCandidates: ["Aggiungi file e altro"],
1436
1437
  addPhotosFilesMenuItem: ["Aggiungi foto e file"],
1437
1438
  copyResponse: ["Copia risposta"],
1438
- modeLabels: ["Istantanea", "Media", "Alta", "Extra elevata", "Medio", "Alto", "Molto alto", "Istantaneo"],
1439
+ modeLabels: ["Istantanea", "Media", "Alta", "Extra elevata", "Medio", "Alto", "Molto alto", "Istantaneo", "Immediato"],
1439
1440
  modeOptions: {
1440
- instant: ["Istantanea", "Istantaneo"],
1441
+ instant: ["Istantanea", "Istantaneo", "Immediato"],
1441
1442
  medium: ["Media", "Medio"],
1442
1443
  high: ["Alta", "Alto"],
1443
1444
  extraHigh: ["Extra elevata", "Molto alto"]
@@ -1456,8 +1457,8 @@ var it = {
1456
1457
  var vi = {
1457
1458
  configurationAxes: {
1458
1459
  power: ["S\u1EE9c m\u1EA1nh"],
1459
- model: ["M\xF4 h\xECnh"],
1460
- effort: ["M\u1EE9c \u0111\u1ED9", "M\u1EE9c suy lu\u1EADn"],
1460
+ model: ["M\xF4 h\xECnh", "Ch\u1ECDn m\xF4 h\xECnh"],
1461
+ effort: ["M\u1EE9c \u0111\u1ED9", "M\u1EE9c suy lu\u1EADn", "S\u1EE9c m\u1EA1nh"],
1461
1462
  speed: ["T\u1ED1c \u0111\u1ED9"],
1462
1463
  advanced: ["N\xE2ng cao"]
1463
1464
  },
@@ -1506,13 +1507,13 @@ var vi = {
1506
1507
  var am = {
1507
1508
  configurationAxes: {
1508
1509
  power: ["\u12A0\u1245\u121D"],
1509
- model: ["\u121E\u12F4\u120D"],
1510
- effort: ["\u1325\u1228\u1275"],
1510
+ model: ["\u121E\u12F4\u120D", "\u121E\u12F4\u120D \u12ED\u121D\u1228\u1321"],
1511
+ effort: ["\u1325\u1228\u1275", "\u12A0\u1245\u121D"],
1511
1512
  speed: ["\u134D\u1325\u1290\u1275"],
1512
1513
  advanced: ["\u12E8\u120B\u1240"]
1513
1514
  },
1514
1515
  configurationOptions: {
1515
- instant: ["\u1348\u1323\u1295"],
1516
+ instant: ["\u1348\u1323\u1295", "\u1245\u133D\u1260\u1273\u12CA"],
1516
1517
  light: ["\u1240\u120B\u120D"],
1517
1518
  medium: ["\u1218\u12AB\u12A8\u1208\u129B"],
1518
1519
  high: ["\u12A8\u134D\u1270\u129B"],
@@ -1531,9 +1532,9 @@ var am = {
1531
1532
  addFilesOpenerCandidates: ["\u134B\u12ED\u120E\u127D\u1295 \u12EB\u12AD\u1209 \u12A5\u1293 \u120C\u120E\u127D\u121D"],
1532
1533
  addPhotosFilesMenuItem: ["\u134E\u1276\u12CE\u127D\u1295 \u12A5\u1293 \u134B\u12ED\u120E\u127D\u1295 \u12EB\u12AD\u1209"],
1533
1534
  copyResponse: ["\u121D\u120B\u1239\u1295 \u12ED\u1245\u12F1"],
1534
- modeLabels: ["\u1348\u1323\u1295", "\u1218\u12AB\u12A8\u1208\u129B", "\u12A8\u134D\u1270\u129B", "\u12A5\u1305\u130D \u12A8\u134D\u1270\u129B"],
1535
+ modeLabels: ["\u1348\u1323\u1295", "\u1218\u12AB\u12A8\u1208\u129B", "\u12A8\u134D\u1270\u129B", "\u12A5\u1305\u130D \u12A8\u134D\u1270\u129B", "\u1245\u133D\u1260\u1273\u12CA"],
1535
1536
  modeOptions: {
1536
- instant: ["\u1348\u1323\u1295"],
1537
+ instant: ["\u1348\u1323\u1295", "\u1245\u133D\u1260\u1273\u12CA"],
1537
1538
  medium: ["\u1218\u12AB\u12A8\u1208\u129B"],
1538
1539
  high: ["\u12A8\u134D\u1270\u129B"],
1539
1540
  extraHigh: ["\u12A5\u1305\u130D \u12A8\u134D\u1270\u129B"]
@@ -1557,8 +1558,8 @@ var am = {
1557
1558
  var ar = {
1558
1559
  configurationAxes: {
1559
1560
  power: ["\u0627\u0644\u0642\u062F\u0631\u0629"],
1560
- model: ["\u0627\u0644\u0646\u0645\u0648\u0630\u062C"],
1561
- effort: ["\u0627\u0644\u062C\u0647\u062F"],
1561
+ model: ["\u0627\u0644\u0646\u0645\u0648\u0630\u062C", "\u0627\u062E\u062A\u0631 \u0627\u0644\u0646\u0645\u0648\u0630\u062C"],
1562
+ effort: ["\u0627\u0644\u062C\u0647\u062F", "\u0627\u0644\u0642\u062F\u0631\u0629"],
1562
1563
  speed: ["\u0627\u0644\u0633\u0631\u0639\u0629"],
1563
1564
  advanced: ["\u0645\u062A\u0642\u062F\u0645"]
1564
1565
  },
@@ -1607,8 +1608,8 @@ var ar = {
1607
1608
  var bg = {
1608
1609
  configurationAxes: {
1609
1610
  power: ["\u041C\u043E\u0449\u043D\u043E\u0441\u0442"],
1610
- model: ["\u041C\u043E\u0434\u0435\u043B"],
1611
- effort: ["\u0423\u0441\u0438\u043B\u0438\u0435"],
1611
+ model: ["\u041C\u043E\u0434\u0435\u043B", "\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043C\u043E\u0434\u0435\u043B"],
1612
+ effort: ["\u0423\u0441\u0438\u043B\u0438\u0435", "\u041C\u043E\u0449\u043D\u043E\u0441\u0442"],
1612
1613
  speed: ["\u0421\u043A\u043E\u0440\u043E\u0441\u0442"],
1613
1614
  advanced: ["\u0420\u0430\u0437\u0448\u0438\u0440\u0435\u043D\u0438"]
1614
1615
  },
@@ -1655,16 +1656,17 @@ var bg = {
1655
1656
  var bs = {
1656
1657
  configurationAxes: {
1657
1658
  power: ["Snaga"],
1658
- effort: ["Napor"],
1659
+ model: ["Odaberi model"],
1660
+ effort: ["Napor", "Snaga"],
1659
1661
  speed: ["Brzina"],
1660
1662
  advanced: ["Napredno"]
1661
1663
  },
1662
1664
  configurationOptions: {
1663
1665
  instant: ["Brzo"],
1664
1666
  light: ["Lagano"],
1665
- medium: ["Srednja"],
1666
- high: ["Visoka"],
1667
- extraHigh: ["Veoma visoka"],
1667
+ medium: ["Srednja", "Srednji"],
1668
+ high: ["Visoka", "Visoki"],
1669
+ extraHigh: ["Veoma visoka", "Veoma visoki"],
1668
1670
  max: ["Maks."],
1669
1671
  standard: ["Standardno"],
1670
1672
  fast: ["Brzo"]
@@ -1678,12 +1680,12 @@ var bs = {
1678
1680
  addFilesOpenerCandidates: ["Otpremite datoteke i jo\u0161 mnogo toga"],
1679
1681
  addPhotosFilesMenuItem: ["Dodaj slike i datoteke"],
1680
1682
  copyResponse: ["Kopiraj odgovor"],
1681
- modeLabels: ["Brzo", "Srednji", "Visoko", "Vrlo visoko", "Srednja", "Visoka", "Veoma visoka"],
1683
+ modeLabels: ["Brzo", "Srednji", "Visoko", "Vrlo visoko", "Srednja", "Visoka", "Veoma visoka", "Visoki", "Veoma visoki"],
1682
1684
  modeOptions: {
1683
1685
  instant: ["Brzo"],
1684
1686
  medium: ["Srednji", "Srednja"],
1685
- high: ["Visoko", "Visoka"],
1686
- extraHigh: ["Vrlo visoko", "Veoma visoka"]
1687
+ high: ["Visoko", "Visoka", "Visoki"],
1688
+ extraHigh: ["Vrlo visoko", "Veoma visoka", "Veoma visoki"]
1687
1689
  },
1688
1690
  modeOpenerExtra: ["Podesi"],
1689
1691
  tools: {
@@ -1700,7 +1702,8 @@ var bs = {
1700
1702
  var ca = {
1701
1703
  configurationAxes: {
1702
1704
  power: ["Pot\xE8ncia"],
1703
- effort: ["Esfor\xE7"],
1705
+ model: ["Selecciona un model"],
1706
+ effort: ["Esfor\xE7", "Pot\xE8ncia"],
1704
1707
  speed: ["Velocitat"],
1705
1708
  advanced: ["Avan\xE7ades"]
1706
1709
  },
@@ -1748,12 +1751,13 @@ var ca = {
1748
1751
  var cs = {
1749
1752
  configurationAxes: {
1750
1753
  power: ["V\xFDkon"],
1751
- effort: ["\xDAsil\xED", "M\xEDra \xFAsil\xED"],
1754
+ model: ["Vyberte model"],
1755
+ effort: ["\xDAsil\xED", "M\xEDra \xFAsil\xED", "V\xFDkon"],
1752
1756
  speed: ["Rychlost"],
1753
1757
  advanced: ["Pokro\u010Dil\xE9"]
1754
1758
  },
1755
1759
  configurationOptions: {
1756
- instant: ["Okam\u017Eit\xE1"],
1760
+ instant: ["Okam\u017Eit\xE1", "Instantn\xED"],
1757
1761
  light: ["N\xEDzk\xE1"],
1758
1762
  medium: ["St\u0159edn\xED"],
1759
1763
  high: ["Vysok\xE1"],
@@ -1771,9 +1775,9 @@ var cs = {
1771
1775
  addFilesOpenerCandidates: ["P\u0159id\xE1v\xE1n\xED soubor\u016F a dal\u0161\xED"],
1772
1776
  addPhotosFilesMenuItem: ["P\u0159idat fotografie a soubory"],
1773
1777
  copyResponse: ["Zkop\xEDrovat odpov\u011B\u010F"],
1774
- modeLabels: ["Okam\u017Eit\xE1", "St\u0159edn\xED", "Vysok\xE1", "Velmi vysok\xE1"],
1778
+ modeLabels: ["Okam\u017Eit\xE1", "St\u0159edn\xED", "Vysok\xE1", "Velmi vysok\xE1", "Instantn\xED"],
1775
1779
  modeOptions: {
1776
- instant: ["Okam\u017Eit\xE1"],
1780
+ instant: ["Okam\u017Eit\xE1", "Instantn\xED"],
1777
1781
  medium: ["St\u0159edn\xED"],
1778
1782
  high: ["Vysok\xE1"],
1779
1783
  extraHigh: ["Velmi vysok\xE1"]
@@ -1793,12 +1797,13 @@ var cs = {
1793
1797
  var da = {
1794
1798
  configurationAxes: {
1795
1799
  power: ["Styrke"],
1796
- effort: ["Indsats", "T\xE6nkeindsats"],
1800
+ model: ["V\xE6lg model"],
1801
+ effort: ["Indsats", "T\xE6nkeindsats", "Styrke"],
1797
1802
  speed: ["Hastighed"],
1798
1803
  advanced: ["Avanceret"]
1799
1804
  },
1800
1805
  configurationOptions: {
1801
- instant: ["\xD8jeblikkeligt"],
1806
+ instant: ["\xD8jeblikkeligt", "\xD8jeblikkelig"],
1802
1807
  light: ["Let"],
1803
1808
  medium: ["Mellem"],
1804
1809
  high: ["H\xF8j"],
@@ -1815,9 +1820,9 @@ var da = {
1815
1820
  addFilesOpenerCandidates: ["Tilf\xF8j filer og mere"],
1816
1821
  addPhotosFilesMenuItem: ["Tilf\xF8j billeder og filer"],
1817
1822
  copyResponse: ["Kopi\xE9r svar"],
1818
- modeLabels: ["\xD8jeblikkeligt", "H\xF8j", "Ekstra h\xF8j", "Mellem"],
1823
+ modeLabels: ["\xD8jeblikkeligt", "H\xF8j", "Ekstra h\xF8j", "Mellem", "\xD8jeblikkelig"],
1819
1824
  modeOptions: {
1820
- instant: ["\xD8jeblikkeligt"],
1825
+ instant: ["\xD8jeblikkeligt", "\xD8jeblikkelig"],
1821
1826
  medium: ["Mellem"],
1822
1827
  high: ["H\xF8j"],
1823
1828
  extraHigh: ["Ekstra h\xF8j"]
@@ -1837,13 +1842,13 @@ var da = {
1837
1842
  var el = {
1838
1843
  configurationAxes: {
1839
1844
  power: ["\u0399\u03C3\u03C7\u03CD\u03C2"],
1840
- model: ["\u039C\u03BF\u03BD\u03C4\u03AD\u03BB\u03BF"],
1841
- effort: ["\u03A0\u03C1\u03BF\u03C3\u03C0\u03AC\u03B8\u03B5\u03B9\u03B1", "\u0395\u03C0\u03AF\u03C0\u03B5\u03B4\u03BF \u03C3\u03C5\u03BB\u03BB\u03BF\u03B3\u03B9\u03C3\u03BC\u03BF\u03CD"],
1845
+ model: ["\u039C\u03BF\u03BD\u03C4\u03AD\u03BB\u03BF", "\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03BC\u03BF\u03BD\u03C4\u03AD\u03BB\u03BF\u03C5"],
1846
+ effort: ["\u03A0\u03C1\u03BF\u03C3\u03C0\u03AC\u03B8\u03B5\u03B9\u03B1", "\u0395\u03C0\u03AF\u03C0\u03B5\u03B4\u03BF \u03C3\u03C5\u03BB\u03BB\u03BF\u03B3\u03B9\u03C3\u03BC\u03BF\u03CD", "\u0399\u03C3\u03C7\u03CD\u03C2"],
1842
1847
  speed: ["\u03A4\u03B1\u03C7\u03CD\u03C4\u03B7\u03C4\u03B1"],
1843
1848
  advanced: ["\u0393\u03B9\u03B1 \u03C0\u03C1\u03BF\u03C7\u03C9\u03C1\u03B7\u03BC\u03AD\u03BD\u03BF\u03C5\u03C2"]
1844
1849
  },
1845
1850
  configurationOptions: {
1846
- instant: ["\u0386\u03BC\u03B5\u03C3\u03B7"],
1851
+ instant: ["\u0386\u03BC\u03B5\u03C3\u03B7", "\u0393\u03C1\u03AE\u03B3\u03BF\u03C1\u03BF"],
1847
1852
  light: ["\u0395\u03BB\u03B1\u03C6\u03C1\u03B9\u03AC"],
1848
1853
  medium: ["\u039C\u03B5\u03C3\u03B1\u03AF\u03BF"],
1849
1854
  high: ["\u03A5\u03C8\u03B7\u03BB\u03CC"],
@@ -1861,9 +1866,9 @@ var el = {
1861
1866
  addFilesOpenerCandidates: ["\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD \u03BA\u03B1\u03B9 \u03AC\u03BB\u03BB\u03B1"],
1862
1867
  addPhotosFilesMenuItem: ["\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C6\u03C9\u03C4\u03BF\u03B3\u03C1\u03B1\u03C6\u03B9\u03CE\u03BD & \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD"],
1863
1868
  copyResponse: ["\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03B1\u03C0\u03AC\u03BD\u03C4\u03B7\u03C3\u03B7\u03C2"],
1864
- modeLabels: ["\u0386\u03BC\u03B5\u03C3\u03B7", "\u039C\u03B5\u03C3\u03B1\u03AF\u03B1", "\u03A5\u03C8\u03B7\u03BB\u03AE", "\u03A0\u03BF\u03BB\u03CD \u03C5\u03C8\u03B7\u03BB\u03CC", "\u039C\u03B5\u03C3\u03B1\u03AF\u03BF", "\u03A5\u03C8\u03B7\u03BB\u03CC"],
1869
+ modeLabels: ["\u0386\u03BC\u03B5\u03C3\u03B7", "\u039C\u03B5\u03C3\u03B1\u03AF\u03B1", "\u03A5\u03C8\u03B7\u03BB\u03AE", "\u03A0\u03BF\u03BB\u03CD \u03C5\u03C8\u03B7\u03BB\u03CC", "\u039C\u03B5\u03C3\u03B1\u03AF\u03BF", "\u03A5\u03C8\u03B7\u03BB\u03CC", "\u0393\u03C1\u03AE\u03B3\u03BF\u03C1\u03BF"],
1865
1870
  modeOptions: {
1866
- instant: ["\u0386\u03BC\u03B5\u03C3\u03B7"],
1871
+ instant: ["\u0386\u03BC\u03B5\u03C3\u03B7", "\u0393\u03C1\u03AE\u03B3\u03BF\u03C1\u03BF"],
1867
1872
  medium: ["\u039C\u03B5\u03C3\u03B1\u03AF\u03B1", "\u039C\u03B5\u03C3\u03B1\u03AF\u03BF"],
1868
1873
  high: ["\u03A5\u03C8\u03B7\u03BB\u03AE", "\u03A5\u03C8\u03B7\u03BB\u03CC"],
1869
1874
  extraHigh: ["\u03A0\u03BF\u03BB\u03CD \u03C5\u03C8\u03B7\u03BB\u03CC"]
@@ -1883,8 +1888,8 @@ var el = {
1883
1888
  var es419 = {
1884
1889
  configurationAxes: {
1885
1890
  power: ["Potencia"],
1886
- model: ["Modelo"],
1887
- effort: ["Esfuerzo"],
1891
+ model: ["Modelo", "Seleccionar modelo"],
1892
+ effort: ["Esfuerzo", "Potencia"],
1888
1893
  speed: ["Velocidad"],
1889
1894
  advanced: ["Avanzado"]
1890
1895
  },
@@ -1929,13 +1934,13 @@ var es419 = {
1929
1934
  var et = {
1930
1935
  configurationAxes: {
1931
1936
  power: ["V\xF5imsus"],
1932
- model: ["Mudel"],
1933
- effort: ["Pingutus", "P\xF5hjalikkus"],
1937
+ model: ["Mudel", "Vali mudel"],
1938
+ effort: ["Pingutus", "P\xF5hjalikkus", "V\xF5imsus"],
1934
1939
  speed: ["Kiirus"],
1935
1940
  advanced: ["T\xE4psemad seaded"]
1936
1941
  },
1937
1942
  configurationOptions: {
1938
- instant: ["Kohene"],
1943
+ instant: ["Kohene", "Kiire"],
1939
1944
  light: ["Kerge"],
1940
1945
  medium: ["Keskmine"],
1941
1946
  high: ["K\xF5rge"],
@@ -1951,9 +1956,9 @@ var et = {
1951
1956
  addFilesOpenerCandidates: ["Failide lisamine ja muud"],
1952
1957
  addPhotosFilesMenuItem: ["Lisa fotosid ja faile"],
1953
1958
  copyResponse: ["Kopeeri vastus"],
1954
- modeLabels: ["Kohene", "Keskmine", "K\xF5rge", "V\xE4ga k\xF5rge"],
1959
+ modeLabels: ["Kohene", "Keskmine", "K\xF5rge", "V\xE4ga k\xF5rge", "Kiire"],
1955
1960
  modeOptions: {
1956
- instant: ["Kohene"],
1961
+ instant: ["Kohene", "Kiire"],
1957
1962
  medium: ["Keskmine"],
1958
1963
  high: ["K\xF5rge"],
1959
1964
  extraHigh: ["V\xE4ga k\xF5rge"]
@@ -1973,8 +1978,8 @@ var et = {
1973
1978
  var fa = {
1974
1979
  configurationAxes: {
1975
1980
  power: ["\u062A\u0648\u0627\u0646"],
1976
- model: ["\u0645\u062F\u0644"],
1977
- effort: ["\u0633\u0637\u062D \u062A\u0644\u0627\u0634", "\u0645\u06CC\u0632\u0627\u0646 \u0627\u0633\u062A\u062F\u0644\u0627\u0644"],
1981
+ model: ["\u0645\u062F\u0644", "\u0627\u0646\u062A\u062E\u0627\u0628 \u0645\u062F\u0644"],
1982
+ effort: ["\u0633\u0637\u062D \u062A\u0644\u0627\u0634", "\u0645\u06CC\u0632\u0627\u0646 \u0627\u0633\u062A\u062F\u0644\u0627\u0644", "\u062A\u0648\u0627\u0646"],
1978
1983
  speed: ["\u0633\u0631\u0639\u062A"],
1979
1984
  advanced: ["\u067E\u06CC\u0634\u0631\u0641\u062A\u0647"]
1980
1985
  },
@@ -2023,8 +2028,8 @@ var fa = {
2023
2028
  var fi = {
2024
2029
  configurationAxes: {
2025
2030
  power: ["Teho"],
2026
- model: ["Malli"],
2027
- effort: ["M\xE4\xE4r\xE4", "P\xE4\xE4ttelytaso"],
2031
+ model: ["Malli", "Valitse malli"],
2032
+ effort: ["M\xE4\xE4r\xE4", "P\xE4\xE4ttelytaso", "Teho"],
2028
2033
  speed: ["Nopeus"],
2029
2034
  advanced: ["Lis\xE4asetukset"]
2030
2035
  },
@@ -2069,7 +2074,8 @@ var fi = {
2069
2074
  var frCA = {
2070
2075
  configurationAxes: {
2071
2076
  power: ["Puissance"],
2072
- model: ["Mod\xE8le"],
2077
+ model: ["Mod\xE8le", "S\xE9lectionner un mod\xE8le"],
2078
+ effort: ["Puissance"],
2073
2079
  speed: ["Vitesse"],
2074
2080
  advanced: ["Avanc\xE9"]
2075
2081
  },
@@ -2098,6 +2104,9 @@ var frCA = {
2098
2104
  extraHigh: ["Tr\xE8s \xE9lev\xE9"]
2099
2105
  },
2100
2106
  modeOpenerExtra: ["Configurer..."],
2107
+ experienceOptions: {
2108
+ chat: ["Clavardage"]
2109
+ },
2101
2110
  tools: {
2102
2111
  web_search: ["Recherche sur Internet"],
2103
2112
  deep_research: ["Recherche approfondie"],
@@ -2112,13 +2121,13 @@ var frCA = {
2112
2121
  var gu = {
2113
2122
  configurationAxes: {
2114
2123
  power: ["\u0A95\u0ACD\u0AB7\u0AAE\u0AA4\u0ABE"],
2115
- model: ["\u0AAE\u0ACB\u0AA1\u0AC7\u0AB2"],
2116
- effort: ["\u0AAA\u0ACD\u0AB0\u0AAF\u0ABE\u0AB8"],
2124
+ model: ["\u0AAE\u0ACB\u0AA1\u0AC7\u0AB2", "\u0AAE\u0ACB\u0AA1\u0AC7\u0AB2 \u0AAA\u0AB8\u0A82\u0AA6 \u0A95\u0AB0\u0ACB"],
2125
+ effort: ["\u0AAA\u0ACD\u0AB0\u0AAF\u0ABE\u0AB8", "\u0A95\u0ACD\u0AB7\u0AAE\u0AA4\u0ABE"],
2117
2126
  speed: ["\u0A9D\u0AA1\u0AAA"],
2118
2127
  advanced: ["\u0A8F\u0AA1\u0AB5\u0ABE\u0AA8\u0ACD\u0AB8\u0ACD\u0AA1"]
2119
2128
  },
2120
2129
  configurationOptions: {
2121
- instant: ["\u0AA4\u0AB0\u0AA4"],
2130
+ instant: ["\u0AA4\u0AB0\u0AA4", "\u0A87\u0AA8\u0ACD\u0AB8\u0ACD\u0A9F\u0AA8\u0ACD\u0A9F"],
2122
2131
  light: ["\u0AB2\u0ABE\u0A87\u0A9F"],
2123
2132
  medium: ["\u0AAE\u0AC0\u0AA1\u0ABF\u0AAF\u0AAE"],
2124
2133
  high: ["\u0AB9\u0ABE\u0A87"],
@@ -2137,9 +2146,9 @@ var gu = {
2137
2146
  addFilesOpenerCandidates: ["\u0AAB\u0ABE\u0A87\u0AB2\u0ACB \u0A85\u0AA8\u0AC7 \u0AB5\u0AA7\u0AC1 \u0A89\u0AAE\u0AC7\u0AB0\u0ACB"],
2138
2147
  addPhotosFilesMenuItem: ["\u0AAB\u0ACB\u0A9F\u0ABE \u0A85\u0AA8\u0AC7 \u0AAB\u0ABE\u0A87\u0AB2\u0ACB \u0A89\u0AAE\u0AC7\u0AB0\u0ACB"],
2139
2148
  copyResponse: ["\u0AAA\u0ACD\u0AB0\u0AA4\u0ABF\u0AAD\u0ABE\u0AB5 \u0A95\u0AC9\u0AAA\u0ABF \u0A95\u0AB0\u0ACB"],
2140
- modeLabels: ["\u0AA4\u0AB0\u0AA4", "\u0AAE\u0AA7\u0ACD\u0AAF\u0AAE", "\u0A89\u0A9A\u0ACD\u0A9A", "\u0A85\u0AA4\u0ABF \u0A89\u0A9A\u0ACD\u0A9A", "\u0AAE\u0AC0\u0AA1\u0ABF\u0AAF\u0AAE", "\u0AB9\u0ABE\u0A87", "\u0A8F\u0A95\u0ACD\u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABE \u0AB9\u0ABE\u0A87"],
2149
+ modeLabels: ["\u0AA4\u0AB0\u0AA4", "\u0AAE\u0AA7\u0ACD\u0AAF\u0AAE", "\u0A89\u0A9A\u0ACD\u0A9A", "\u0A85\u0AA4\u0ABF \u0A89\u0A9A\u0ACD\u0A9A", "\u0AAE\u0AC0\u0AA1\u0ABF\u0AAF\u0AAE", "\u0AB9\u0ABE\u0A87", "\u0A8F\u0A95\u0ACD\u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABE \u0AB9\u0ABE\u0A87", "\u0A87\u0AA8\u0ACD\u0AB8\u0ACD\u0A9F\u0AA8\u0ACD\u0A9F"],
2141
2150
  modeOptions: {
2142
- instant: ["\u0AA4\u0AB0\u0AA4"],
2151
+ instant: ["\u0AA4\u0AB0\u0AA4", "\u0A87\u0AA8\u0ACD\u0AB8\u0ACD\u0A9F\u0AA8\u0ACD\u0A9F"],
2143
2152
  medium: ["\u0AAE\u0AA7\u0ACD\u0AAF\u0AAE", "\u0AAE\u0AC0\u0AA1\u0ABF\u0AAF\u0AAE"],
2144
2153
  high: ["\u0A89\u0A9A\u0ACD\u0A9A", "\u0AB9\u0ABE\u0A87"],
2145
2154
  extraHigh: ["\u0A85\u0AA4\u0ABF \u0A89\u0A9A\u0ACD\u0A9A", "\u0A8F\u0A95\u0ACD\u0AB8\u0ACD\u0A9F\u0ACD\u0AB0\u0ABE \u0AB9\u0ABE\u0A87"]
@@ -2163,16 +2172,16 @@ var gu = {
2163
2172
  var hi = {
2164
2173
  configurationAxes: {
2165
2174
  power: ["\u092A\u093E\u0935\u0930"],
2166
- model: ["\u092E\u0949\u0921\u0932"],
2167
- effort: ["\u092A\u094D\u0930\u092F\u093E\u0938", "\u0938\u094B\u091A\u0928\u0947 \u0915\u093E \u0938\u094D\u0924\u0930"],
2175
+ model: ["\u092E\u0949\u0921\u0932", "\u092E\u0949\u0921\u0932 \u091A\u0941\u0928\u0947\u0902"],
2176
+ effort: ["\u092A\u094D\u0930\u092F\u093E\u0938", "\u0938\u094B\u091A\u0928\u0947 \u0915\u093E \u0938\u094D\u0924\u0930", "\u092A\u093E\u0935\u0930"],
2168
2177
  speed: ["\u0917\u0924\u093F"],
2169
2178
  advanced: ["\u090F\u0921\u0935\u093E\u0902\u0938\u094D\u0921"]
2170
2179
  },
2171
2180
  configurationOptions: {
2172
- instant: ["\u0924\u0941\u0930\u0902\u0924"],
2181
+ instant: ["\u0924\u0941\u0930\u0902\u0924", "\u0907\u0902\u0938\u094D\u091F\u0947\u0902\u091F"],
2173
2182
  light: ["\u0932\u093E\u0907\u091F"],
2174
2183
  medium: ["\u092E\u0927\u094D\u092F\u092E"],
2175
- high: ["\u0909\u091A\u094D\u091A"],
2184
+ high: ["\u0909\u091A\u094D\u091A", "\u0939\u093E\u0908"],
2176
2185
  extraHigh: ["\u090F\u0915\u094D\u0938\u094D\u091F\u094D\u0930\u093E \u0939\u093E\u0908"],
2177
2186
  max: ["\u0905\u0927\u093F\u0915\u0924\u092E"],
2178
2187
  ultra: ["\u0905\u0932\u094D\u091F\u094D\u0930\u093E"],
@@ -2188,11 +2197,11 @@ var hi = {
2188
2197
  addFilesOpenerCandidates: ["\u092B\u093C\u093E\u0907\u0932\u094B\u0902 \u0915\u094B \u091C\u094B\u0921\u093C\u0947\u0902 \u0914\u0930 \u092D\u0940 \u092C\u0939\u0941\u0924 \u0915\u0941\u091B \u0915\u0930\u0947\u0902"],
2189
2198
  addPhotosFilesMenuItem: ["\u092B\u093C\u094B\u091F\u094B \u0914\u0930 \u092B\u093C\u093E\u0907\u0932\u0947\u0902 \u091C\u094B\u0921\u093C\u0947\u0902"],
2190
2199
  copyResponse: ["\u091C\u0935\u093E\u092C \u0915\u094B \u0915\u0949\u092A\u0940 \u0915\u0930\u0947\u0902"],
2191
- modeLabels: ["\u0924\u0941\u0930\u0902\u0924", "\u092E\u0927\u094D\u092F\u092E", "\u0909\u091A\u094D\u091A", "\u092C\u0939\u0941\u0924 \u0909\u091A\u094D\u091A", "\u090F\u0915\u094D\u0938\u094D\u091F\u094D\u0930\u093E \u0939\u093E\u0908"],
2200
+ modeLabels: ["\u0924\u0941\u0930\u0902\u0924", "\u092E\u0927\u094D\u092F\u092E", "\u0909\u091A\u094D\u091A", "\u092C\u0939\u0941\u0924 \u0909\u091A\u094D\u091A", "\u090F\u0915\u094D\u0938\u094D\u091F\u094D\u0930\u093E \u0939\u093E\u0908", "\u0907\u0902\u0938\u094D\u091F\u0947\u0902\u091F", "\u0939\u093E\u0908"],
2192
2201
  modeOptions: {
2193
- instant: ["\u0924\u0941\u0930\u0902\u0924"],
2202
+ instant: ["\u0924\u0941\u0930\u0902\u0924", "\u0907\u0902\u0938\u094D\u091F\u0947\u0902\u091F"],
2194
2203
  medium: ["\u092E\u0927\u094D\u092F\u092E"],
2195
- high: ["\u0909\u091A\u094D\u091A"],
2204
+ high: ["\u0909\u091A\u094D\u091A", "\u0939\u093E\u0908"],
2196
2205
  extraHigh: ["\u092C\u0939\u0941\u0924 \u0909\u091A\u094D\u091A", "\u090F\u0915\u094D\u0938\u094D\u091F\u094D\u0930\u093E \u0939\u093E\u0908"]
2197
2206
  },
2198
2207
  modeOpenerExtra: ["\u0915\u0949\u0928\u094D\u092B\u093C\u093F\u0917\u0930 \u0915\u0930\u0947\u0902..."],
@@ -2214,7 +2223,8 @@ var hi = {
2214
2223
  var hr = {
2215
2224
  configurationAxes: {
2216
2225
  power: ["Snaga"],
2217
- effort: ["Razina napora"],
2226
+ model: ["Odaberite model"],
2227
+ effort: ["Razina napora", "Snaga"],
2218
2228
  speed: ["Brzina"],
2219
2229
  advanced: ["Napredno"]
2220
2230
  },
@@ -2257,8 +2267,8 @@ var hr = {
2257
2267
  var hu = {
2258
2268
  configurationAxes: {
2259
2269
  power: ["Teljes\xEDtm\xE9ny"],
2260
- model: ["Modell"],
2261
- effort: ["R\xE1ford\xEDt\xE1s", "Er\u0151fesz\xEDt\xE9s"],
2270
+ model: ["Modell", "Modell kiv\xE1laszt\xE1sa"],
2271
+ effort: ["R\xE1ford\xEDt\xE1s", "Er\u0151fesz\xEDt\xE9s", "Teljes\xEDtm\xE9ny"],
2262
2272
  speed: ["Sebess\xE9g"],
2263
2273
  advanced: ["Speci\xE1lis"]
2264
2274
  },
@@ -2302,8 +2312,8 @@ var hu = {
2302
2312
  var hy = {
2303
2313
  configurationAxes: {
2304
2314
  power: ["\u0540\u0566\u0578\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576"],
2305
- model: ["\u0544\u0578\u0564\u0565\u056C"],
2306
- effort: ["\u054B\u0561\u0576\u0584", "\u0544\u057F\u0561\u056E\u0578\u0572\u0578\u0582\u0569\u0575\u0561\u0576 \u0574\u0561\u056F\u0561\u0580\u0564\u0561\u056F"],
2315
+ model: ["\u0544\u0578\u0564\u0565\u056C", "\u0538\u0576\u057F\u0580\u0565\u056C \u0574\u0578\u0564\u0565\u056C\u0568"],
2316
+ effort: ["\u054B\u0561\u0576\u0584", "\u0544\u057F\u0561\u056E\u0578\u0572\u0578\u0582\u0569\u0575\u0561\u0576 \u0574\u0561\u056F\u0561\u0580\u0564\u0561\u056F", "\u0540\u0566\u0578\u0580\u0578\u0582\u0569\u0575\u0578\u0582\u0576"],
2307
2317
  speed: ["\u0531\u0580\u0561\u0563\u0578\u0582\u0569\u0575\u0578\u0582\u0576"],
2308
2318
  advanced: ["\u0538\u0576\u0564\u056C\u0561\u0575\u0576\u057E\u0561\u056E"]
2309
2319
  },
@@ -2354,7 +2364,8 @@ var hy = {
2354
2364
  var id = {
2355
2365
  configurationAxes: {
2356
2366
  power: ["Daya"],
2357
- effort: ["Upaya"],
2367
+ model: ["Pilih model"],
2368
+ effort: ["Upaya", "Daya"],
2358
2369
  speed: ["Kecepatan"],
2359
2370
  advanced: ["Tingkat lanjut"]
2360
2371
  },
@@ -2399,8 +2410,8 @@ var id = {
2399
2410
  var is = {
2400
2411
  configurationAxes: {
2401
2412
  power: ["Afl"],
2402
- model: ["L\xEDkan"],
2403
- effort: ["\xC1reynsla", "Vinnsla"],
2413
+ model: ["L\xEDkan", "Velja l\xEDkan"],
2414
+ effort: ["\xC1reynsla", "Vinnsla", "Afl"],
2404
2415
  speed: ["Hra\xF0i"],
2405
2416
  advanced: ["\xCDtarlegt"]
2406
2417
  },
@@ -2448,8 +2459,8 @@ var is = {
2448
2459
  var ka = {
2449
2460
  configurationAxes: {
2450
2461
  power: ["\u10E1\u10D8\u10DB\u10EB\u10DA\u10D0\u10D5\u10E0\u10D4"],
2451
- model: ["\u10DB\u10DD\u10D3\u10D4\u10DA\u10D8"],
2452
- effort: ["\u10EB\u10D0\u10DA\u10D8\u10E1\u10EE\u10DB\u10D4\u10D5\u10D0", "\u10DB\u10E1\u10EF\u10D4\u10DA\u10DD\u10D1\u10D8\u10E1 \u10D3\u10DD\u10DC\u10D4"],
2462
+ model: ["\u10DB\u10DD\u10D3\u10D4\u10DA\u10D8", "\u10DB\u10DD\u10D3\u10D4\u10DA\u10D8\u10E1 \u10D0\u10E0\u10E9\u10D4\u10D5\u10D0"],
2463
+ effort: ["\u10EB\u10D0\u10DA\u10D8\u10E1\u10EE\u10DB\u10D4\u10D5\u10D0", "\u10DB\u10E1\u10EF\u10D4\u10DA\u10DD\u10D1\u10D8\u10E1 \u10D3\u10DD\u10DC\u10D4", "\u10E1\u10D8\u10DB\u10EB\u10DA\u10D0\u10D5\u10E0\u10D4"],
2453
2464
  speed: ["\u10E1\u10D8\u10E9\u10E5\u10D0\u10E0\u10D4"],
2454
2465
  advanced: ["\u10D2\u10D0\u10E4\u10D0\u10E0\u10D7\u10DD\u10D4\u10D1\u10E3\u10DA\u10D8"]
2455
2466
  },
@@ -2499,18 +2510,18 @@ var ka = {
2499
2510
  var kk = {
2500
2511
  configurationAxes: {
2501
2512
  power: ["\u049A\u0443\u0430\u0442"],
2502
- model: ["\u041C\u043E\u0434\u0435\u043B\u044C"],
2503
- effort: ["\u041A\u04AF\u0448-\u0436\u0456\u0433\u0435\u0440", "\u041E\u0439\u043B\u0430\u043D\u0443 \u0434\u0435\u04A3\u0433\u0435\u0439\u0456"],
2513
+ model: ["\u041C\u043E\u0434\u0435\u043B\u044C", "\u041C\u043E\u0434\u0435\u043B\u044C\u0434\u0456 \u0442\u0430\u04A3\u0434\u0430\u04A3\u044B\u0437"],
2514
+ effort: ["\u041A\u04AF\u0448-\u0436\u0456\u0433\u0435\u0440", "\u041E\u0439\u043B\u0430\u043D\u0443 \u0434\u0435\u04A3\u0433\u0435\u0439\u0456", "\u049A\u0443\u0430\u0442"],
2504
2515
  speed: ["\u0416\u044B\u043B\u0434\u0430\u043C\u0434\u044B\u049B"],
2505
2516
  advanced: ["\u041A\u0435\u04A3\u0435\u0439\u0442\u0456\u043B\u0433\u0435\u043D"]
2506
2517
  },
2507
2518
  configurationOptions: {
2508
- instant: ["\u0416\u0435\u0434\u0435\u043B"],
2519
+ instant: ["\u0416\u0435\u0434\u0435\u043B", "\u0422\u0435\u0437"],
2509
2520
  light: ["\u0416\u0435\u04A3\u0456\u043B"],
2510
2521
  medium: ["\u041E\u0440\u0442\u0430\u0448\u0430"],
2511
2522
  high: ["\u0416\u043E\u0493\u0430\u0440\u044B"],
2512
2523
  extraHigh: ["\u04E8\u0442\u0435 \u0436\u043E\u0493\u0430\u0440\u044B"],
2513
- max: ["\u041C\u0430\u043A\u0441"],
2524
+ max: ["\u041C\u0430\u043A\u0441", "\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u0434\u044B"],
2514
2525
  ultra: ["\u0423\u043B\u044C\u0442\u0440\u0430"],
2515
2526
  standard: ["\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u0442\u044B"],
2516
2527
  fast: ["\u0416\u044B\u043B\u0434\u0430\u043C"]
@@ -2524,9 +2535,9 @@ var kk = {
2524
2535
  addFilesOpenerCandidates: ["\u0424\u0430\u0439\u043B\u0434\u0430\u0440\u0434\u044B \u0436\u04D9\u043D\u0435 \u0431\u0430\u0441\u049B\u0430 \u0434\u0435\u0440\u0435\u043A\u0442\u0435\u0440\u0434\u0456 \u049B\u043E\u0441\u0443"],
2525
2536
  addPhotosFilesMenuItem: ["\u0424\u043E\u0442\u043E\u0441\u0443\u0440\u0435\u0442\u0442\u0435\u0440 \u043C\u0435\u043D \u0444\u0430\u0439\u043B\u0434\u0430\u0440 \u049B\u043E\u0441\u0443"],
2526
2537
  copyResponse: ["\u0416\u0430\u0443\u0430\u043F\u0442\u044B \u043A\u04E9\u0448\u0456\u0440\u0443"],
2527
- modeLabels: ["\u0416\u0435\u0434\u0435\u043B", "\u041E\u0440\u0442\u0430\u0448\u0430", "\u0416\u043E\u0493\u0430\u0440\u044B", "\u0410\u0441\u0430 \u0436\u043E\u0493\u0430\u0440\u044B", "\u04E8\u0442\u0435 \u0436\u043E\u0493\u0430\u0440\u044B"],
2538
+ modeLabels: ["\u0416\u0435\u0434\u0435\u043B", "\u041E\u0440\u0442\u0430\u0448\u0430", "\u0416\u043E\u0493\u0430\u0440\u044B", "\u0410\u0441\u0430 \u0436\u043E\u0493\u0430\u0440\u044B", "\u04E8\u0442\u0435 \u0436\u043E\u0493\u0430\u0440\u044B", "\u0422\u0435\u0437"],
2528
2539
  modeOptions: {
2529
- instant: ["\u0416\u0435\u0434\u0435\u043B"],
2540
+ instant: ["\u0416\u0435\u0434\u0435\u043B", "\u0422\u0435\u0437"],
2530
2541
  medium: ["\u041E\u0440\u0442\u0430\u0448\u0430"],
2531
2542
  high: ["\u0416\u043E\u0493\u0430\u0440\u044B"],
2532
2543
  extraHigh: ["\u0410\u0441\u0430 \u0436\u043E\u0493\u0430\u0440\u044B", "\u04E8\u0442\u0435 \u0436\u043E\u0493\u0430\u0440\u044B"]
@@ -2550,13 +2561,13 @@ var kk = {
2550
2561
  var kn = {
2551
2562
  configurationAxes: {
2552
2563
  power: ["\u0CAA\u0CB5\u0CB0\u0CCD"],
2553
- model: ["\u0CAE\u0CBE\u0CA1\u0CC6\u0CB2\u0CCD"],
2554
- effort: ["\u0C8E\u0CAB\u0CB0\u0CCD\u0C9F\u0CCD", "\u0CAA\u0CCD\u0CB0\u0CAF\u0CA4\u0CCD\u0CA8"],
2564
+ model: ["\u0CAE\u0CBE\u0CA1\u0CC6\u0CB2\u0CCD", "\u0CAE\u0CBE\u0CA6\u0CB0\u0CBF\u0CAF\u0CA8\u0CCD\u0CA8\u0CC1 \u0C86\u0CAF\u0CCD\u0C95\u0CC6\u0CAE\u0CBE\u0CA1\u0CBF"],
2565
+ effort: ["\u0C8E\u0CAB\u0CB0\u0CCD\u0C9F\u0CCD", "\u0CAA\u0CCD\u0CB0\u0CAF\u0CA4\u0CCD\u0CA8", "\u0CAA\u0CB5\u0CB0\u0CCD"],
2555
2566
  speed: ["\u0CB5\u0CC7\u0C97"],
2556
2567
  advanced: ["\u0CB8\u0CC1\u0CA7\u0CBE\u0CB0\u0CBF\u0CA4"]
2557
2568
  },
2558
2569
  configurationOptions: {
2559
- instant: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3"],
2570
+ instant: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3", "\u0C87\u0CA8\u0CCD\u200C\u0CB8\u0CCD\u0C9F\u0C82\u0C9F\u0CCD"],
2560
2571
  light: ["\u0CB2\u0CC8\u0C9F\u0CCD"],
2561
2572
  medium: ["\u0CAE\u0CC0\u0CA1\u0CBF\u0CAF\u0C82"],
2562
2573
  high: ["\u0CB9\u0CC8"],
@@ -2575,9 +2586,9 @@ var kn = {
2575
2586
  addFilesOpenerCandidates: ["\u0CAB\u0CC8\u0CB2\u0CCD\u200C\u0C97\u0CB3\u0CC1 \u0CAE\u0CA4\u0CCD\u0CA4\u0CC1 \u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CBF\u0CA8\u0CB5\u0CC1\u0C97\u0CB3\u0CA8\u0CCD\u0CA8\u0CC1 \u0CB8\u0CC7\u0CB0\u0CBF\u0CB8\u0CBF"],
2576
2587
  addPhotosFilesMenuItem: ["\u0CAB\u0CCB\u0C9F\u0CCA \u0CAE\u0CA4\u0CCD\u0CA4\u0CC1 \u0CAB\u0CC8\u0CB2\u0CCD\u200C\u0C97\u0CB3\u0CA8\u0CCD\u0CA8\u0CC1 \u0CB8\u0CC7\u0CB0\u0CBF\u0CB8\u0CBF"],
2577
2588
  copyResponse: ["\u0CAA\u0CCD\u0CB0\u0CA4\u0CBF\u0C95\u0CCD\u0CB0\u0CBF\u0CAF\u0CC6\u0CAF\u0CA8\u0CCD\u0CA8\u0CC1 \u0CA8\u0C95\u0CB2\u0CBF\u0CB8\u0CBF"],
2578
- modeLabels: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3", "\u0CAE\u0CA7\u0CCD\u0CAF\u0CAE", "\u0C89\u0CA8\u0CCD\u0CA8\u0CA4", "\u0C85\u0CA4\u0CBF \u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CC1", "\u0CAA\u0CCD\u0CB0\u0CCA", "\u0CAE\u0CC0\u0CA1\u0CBF\u0CAF\u0C82", "\u0CB9\u0CC8", "\u0C8E\u0C95\u0CCD\u0CB8\u0CCD\u200C\u0C9F\u0CCD\u0CB0\u0CBE \u0CB9\u0CC8"],
2589
+ modeLabels: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3", "\u0CAE\u0CA7\u0CCD\u0CAF\u0CAE", "\u0C89\u0CA8\u0CCD\u0CA8\u0CA4", "\u0C85\u0CA4\u0CBF \u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CC1", "\u0CAA\u0CCD\u0CB0\u0CCA", "\u0CAE\u0CC0\u0CA1\u0CBF\u0CAF\u0C82", "\u0CB9\u0CC8", "\u0C8E\u0C95\u0CCD\u0CB8\u0CCD\u200C\u0C9F\u0CCD\u0CB0\u0CBE \u0CB9\u0CC8", "\u0C87\u0CA8\u0CCD\u200C\u0CB8\u0CCD\u0C9F\u0C82\u0C9F\u0CCD"],
2579
2590
  modeOptions: {
2580
- instant: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3"],
2591
+ instant: ["\u0CA4\u0C95\u0CCD\u0CB7\u0CA3", "\u0C87\u0CA8\u0CCD\u200C\u0CB8\u0CCD\u0C9F\u0C82\u0C9F\u0CCD"],
2581
2592
  medium: ["\u0CAE\u0CA7\u0CCD\u0CAF\u0CAE", "\u0CAE\u0CC0\u0CA1\u0CBF\u0CAF\u0C82"],
2582
2593
  high: ["\u0C89\u0CA8\u0CCD\u0CA8\u0CA4", "\u0CB9\u0CC8"],
2583
2594
  extraHigh: ["\u0C85\u0CA4\u0CBF \u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CC1", "\u0C8E\u0C95\u0CCD\u0CB8\u0CCD\u200C\u0C9F\u0CCD\u0CB0\u0CBE \u0CB9\u0CC8"],
@@ -2585,7 +2596,8 @@ var kn = {
2585
2596
  },
2586
2597
  modeOpenerExtra: ["\u0C95\u0CBE\u0CA8\u0CCD\u0CAB\u0CBF\u0C97\u0CB0\u0CCD \u0CAE\u0CBE\u0CA1\u0CBF..."],
2587
2598
  experienceOptions: {
2588
- chat: ["\u0C9A\u0CBE\u0C9F\u0CCD"]
2599
+ chat: ["\u0C9A\u0CBE\u0C9F\u0CCD"],
2600
+ work: ["\u0CB5\u0CB0\u0CCD\u0C95\u0CCD"]
2589
2601
  },
2590
2602
  tools: {
2591
2603
  web_search: ["\u0CB5\u0CC6\u0CAC\u0CCD \u0CB8\u0CB0\u0CCD\u0C9A\u0CCD"],
@@ -2601,8 +2613,8 @@ var kn = {
2601
2613
  var ko = {
2602
2614
  configurationAxes: {
2603
2615
  power: ["\uC131\uB2A5"],
2604
- model: ["\uBAA8\uB378"],
2605
- effort: ["\uCD94\uB860 \uC218\uC900", "\uCD94\uB860 \uAC15\uB3C4"],
2616
+ model: ["\uBAA8\uB378", "\uBAA8\uB378 \uC120\uD0DD"],
2617
+ effort: ["\uCD94\uB860 \uC218\uC900", "\uCD94\uB860 \uAC15\uB3C4", "\uC131\uB2A5"],
2606
2618
  speed: ["\uC18D\uB3C4"],
2607
2619
  advanced: ["\uACE0\uAE09"]
2608
2620
  },
@@ -2646,8 +2658,8 @@ var ko = {
2646
2658
  var lt = {
2647
2659
  configurationAxes: {
2648
2660
  power: ["Paj\u0117gumas"],
2649
- model: ["Modelis"],
2650
- effort: ["Pastangos", "M\u0105stymo lygis"],
2661
+ model: ["Modelis", "Pasirinkti model\u012F"],
2662
+ effort: ["Pastangos", "M\u0105stymo lygis", "Paj\u0117gumas"],
2651
2663
  speed: ["Greitis"],
2652
2664
  advanced: ["I\u0161pl\u0117stiniai"]
2653
2665
  },
@@ -2656,7 +2668,7 @@ var lt = {
2656
2668
  light: ["Lengvas"],
2657
2669
  medium: ["Vidutinis"],
2658
2670
  high: ["Auk\u0161tas"],
2659
- extraHigh: ["Labai auk\u0161tas"],
2671
+ extraHigh: ["Labai auk\u0161tas", "Ypa\u010D didel\u0117s"],
2660
2672
  max: ["Maks."],
2661
2673
  standard: ["Standartinis"],
2662
2674
  fast: ["Greitas"]
@@ -2693,13 +2705,13 @@ var lt = {
2693
2705
  var zhHans = {
2694
2706
  configurationAxes: {
2695
2707
  power: ["\u80FD\u529B"],
2696
- model: ["\u6A21\u578B"],
2697
- effort: ["\u63A8\u7406\u5F3A\u5EA6", "\u601D\u8003\u5F3A\u5EA6"],
2708
+ model: ["\u6A21\u578B", "\u9009\u62E9\u6A21\u578B"],
2709
+ effort: ["\u63A8\u7406\u5F3A\u5EA6", "\u601D\u8003\u5F3A\u5EA6", "\u80FD\u529B"],
2698
2710
  speed: ["\u901F\u5EA6"],
2699
2711
  advanced: ["\u9AD8\u7EA7"]
2700
2712
  },
2701
2713
  configurationOptions: {
2702
- instant: ["\u6781\u901F"],
2714
+ instant: ["\u6781\u901F", "\u5373\u65F6"],
2703
2715
  light: ["\u8F7B\u5EA6"],
2704
2716
  medium: ["\u4E2D"],
2705
2717
  high: ["\u9AD8"],
@@ -2718,9 +2730,9 @@ var zhHans = {
2718
2730
  addFilesOpenerCandidates: ["\u6DFB\u52A0\u6587\u4EF6\u7B49"],
2719
2731
  addPhotosFilesMenuItem: ["\u6DFB\u52A0\u7167\u7247\u548C\u6587\u4EF6"],
2720
2732
  copyResponse: ["\u590D\u5236\u56DE\u590D"],
2721
- modeLabels: ["\u6781\u901F", "\u5747\u8861", "\u9AD8\u7EA7", "\u8D85\u9AD8", "\u4E13\u4E1A", "\u4E2D", "\u9AD8", "\u6781\u9AD8"],
2733
+ modeLabels: ["\u6781\u901F", "\u5747\u8861", "\u9AD8\u7EA7", "\u8D85\u9AD8", "\u4E13\u4E1A", "\u4E2D", "\u9AD8", "\u6781\u9AD8", "\u5373\u65F6"],
2722
2734
  modeOptions: {
2723
- instant: ["\u6781\u901F"],
2735
+ instant: ["\u6781\u901F", "\u5373\u65F6"],
2724
2736
  medium: ["\u5747\u8861", "\u4E2D"],
2725
2737
  high: ["\u9AD8\u7EA7", "\u9AD8"],
2726
2738
  extraHigh: ["\u8D85\u9AD8", "\u6781\u9AD8"],
@@ -2744,8 +2756,8 @@ var zhHans = {
2744
2756
  // src/dom/locale/ur.ts
2745
2757
  var ur = {
2746
2758
  configurationAxes: {
2747
- model: ["\u0645\u0627\u0688\u0644"],
2748
- effort: ["\u06A9\u0648\u0634\u0634"],
2759
+ model: ["\u0645\u0627\u0688\u0644", "\u0645\u0627\u0688\u0644 \u0645\u0646\u062A\u062E\u0628 \u06A9\u0631\u06CC\u06BA"],
2760
+ effort: ["\u06A9\u0648\u0634\u0634", "Power"],
2749
2761
  speed: ["\u0631\u0641\u062A\u0627\u0631"],
2750
2762
  advanced: ["\u0627\u06CC\u0688\u0648\u0627\u0646\u0633\u0688"]
2751
2763
  },
@@ -2795,13 +2807,13 @@ var ur = {
2795
2807
  var uk = {
2796
2808
  configurationAxes: {
2797
2809
  power: ["\u041F\u043E\u0442\u0443\u0436\u043D\u0456\u0441\u0442\u044C"],
2798
- model: ["\u041C\u043E\u0434\u0435\u043B\u044C"],
2799
- effort: ["\u0417\u0443\u0441\u0438\u043B\u043B\u044F", "\u041C\u0456\u0440\u043A\u0443\u0432\u0430\u043D\u043D\u044F"],
2810
+ model: ["\u041C\u043E\u0434\u0435\u043B\u044C", "\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u043C\u043E\u0434\u0435\u043B\u044C"],
2811
+ effort: ["\u0417\u0443\u0441\u0438\u043B\u043B\u044F", "\u041C\u0456\u0440\u043A\u0443\u0432\u0430\u043D\u043D\u044F", "\u041F\u043E\u0442\u0443\u0436\u043D\u0456\u0441\u0442\u044C"],
2800
2812
  speed: ["\u0428\u0432\u0438\u0434\u043A\u0456\u0441\u0442\u044C"],
2801
2813
  advanced: ["\u0414\u043E\u0434\u0430\u0442\u043A\u043E\u0432\u043E"]
2802
2814
  },
2803
2815
  configurationOptions: {
2804
- instant: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439"],
2816
+ instant: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439", "\u041C\u0438\u0442\u0442\u0454\u0432\u0435"],
2805
2817
  light: ["\u041D\u0438\u0437\u044C\u043A\u0438\u0439"],
2806
2818
  medium: ["\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439"],
2807
2819
  high: ["\u0412\u0438\u0441\u043E\u043A\u0438\u0439"],
@@ -2820,9 +2832,9 @@ var uk = {
2820
2832
  addFilesOpenerCandidates: ["\u0414\u043E\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043B\u0438 \u0439 \u0432\u0438\u043A\u043E\u043D\u0443\u0439\u0442\u0435 \u0456\u043D\u0448\u0456 \u0434\u0456\u0457"],
2821
2833
  addPhotosFilesMenuItem: ["\u0414\u043E\u0434\u0430\u0442\u0438 \u0441\u0432\u0456\u0442\u043B\u0438\u043D\u0438 \u0442\u0430 \u0444\u0430\u0439\u043B\u0438"],
2822
2834
  copyResponse: ["\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u044C"],
2823
- modeLabels: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439", "\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439", "\u0412\u0438\u0441\u043E\u043A\u0438\u0439", "\u0414\u0443\u0436\u0435 \u0432\u0438\u0441\u043E\u043A\u0438\u0439", "\u041D\u0430\u0439\u0432\u0438\u0449\u0438\u0439"],
2835
+ modeLabels: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439", "\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439", "\u0412\u0438\u0441\u043E\u043A\u0438\u0439", "\u0414\u0443\u0436\u0435 \u0432\u0438\u0441\u043E\u043A\u0438\u0439", "\u041D\u0430\u0439\u0432\u0438\u0449\u0438\u0439", "\u041C\u0438\u0442\u0442\u0454\u0432\u0435"],
2824
2836
  modeOptions: {
2825
- instant: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439"],
2837
+ instant: ["\u041C\u0438\u0442\u0442\u0454\u0432\u0438\u0439", "\u041C\u0438\u0442\u0442\u0454\u0432\u0435"],
2826
2838
  medium: ["\u0421\u0435\u0440\u0435\u0434\u043D\u0456\u0439"],
2827
2839
  high: ["\u0412\u0438\u0441\u043E\u043A\u0438\u0439"],
2828
2840
  extraHigh: ["\u0414\u0443\u0436\u0435 \u0432\u0438\u0441\u043E\u043A\u0438\u0439", "\u041D\u0430\u0439\u0432\u0438\u0449\u0438\u0439"]
@@ -2846,16 +2858,16 @@ var uk = {
2846
2858
  var ptBR = {
2847
2859
  configurationAxes: {
2848
2860
  power: ["Pot\xEAncia"],
2849
- model: ["Modelo"],
2850
- effort: ["Esfor\xE7o", "N\xEDvel de racioc\xEDnio"],
2861
+ model: ["Modelo", "Selecionar modelo"],
2862
+ effort: ["Esfor\xE7o", "N\xEDvel de racioc\xEDnio", "Pot\xEAncia"],
2851
2863
  speed: ["Velocidade"],
2852
2864
  advanced: ["Avan\xE7ado"]
2853
2865
  },
2854
2866
  configurationOptions: {
2855
- instant: ["Instant\xE2neo"],
2867
+ instant: ["Instant\xE2neo", "Instant\xE2nea"],
2856
2868
  light: ["Leve"],
2857
- medium: ["M\xE9dio"],
2858
- high: ["Alto"],
2869
+ medium: ["M\xE9dio", "M\xE9dia"],
2870
+ high: ["Alto", "Alta"],
2859
2871
  extraHigh: ["Extra alto"],
2860
2872
  max: ["M\xE1ximo"],
2861
2873
  standard: ["Padr\xE3o"],
@@ -2870,11 +2882,11 @@ var ptBR = {
2870
2882
  addFilesOpenerCandidates: ["Adicionar arquivos e mais"],
2871
2883
  addPhotosFilesMenuItem: ["Carregar fotos e arquivos"],
2872
2884
  copyResponse: ["Copiar resposta"],
2873
- modeLabels: ["Instant\xE2neo", "M\xE9dio", "Alto", "Muito alta", "Extra alto"],
2885
+ modeLabels: ["Instant\xE2neo", "M\xE9dio", "Alto", "Muito alta", "Extra alto", "Instant\xE2nea", "M\xE9dia", "Alta"],
2874
2886
  modeOptions: {
2875
- instant: ["Instant\xE2neo"],
2876
- medium: ["M\xE9dio"],
2877
- high: ["Alto"],
2887
+ instant: ["Instant\xE2neo", "Instant\xE2nea"],
2888
+ medium: ["M\xE9dio", "M\xE9dia"],
2889
+ high: ["Alto", "Alta"],
2878
2890
  extraHigh: ["Muito alta", "Extra alto"]
2879
2891
  },
2880
2892
  modeOpenerExtra: ["Configurar\u2026"],
@@ -2892,8 +2904,8 @@ var ptBR = {
2892
2904
  var ptPT = {
2893
2905
  configurationAxes: {
2894
2906
  power: ["Capacidade"],
2895
- model: ["Modelo"],
2896
- effort: ["Esfor\xE7o"],
2907
+ model: ["Modelo", "Selecionar modelo"],
2908
+ effort: ["Esfor\xE7o", "Capacidade"],
2897
2909
  speed: ["Velocidade"],
2898
2910
  advanced: ["Avan\xE7ado"]
2899
2911
  },
@@ -2901,7 +2913,7 @@ var ptPT = {
2901
2913
  instant: ["Instant\xE2neo"],
2902
2914
  light: ["Leve"],
2903
2915
  medium: ["M\xE9dio"],
2904
- high: ["Elevado"],
2916
+ high: ["Elevado", "Elevada"],
2905
2917
  extraHigh: ["Muito elevado"],
2906
2918
  max: ["M\xE1x."],
2907
2919
  standard: ["Padr\xE3o"],
@@ -2916,11 +2928,11 @@ var ptPT = {
2916
2928
  addFilesOpenerCandidates: ["Adicionar ficheiros e mais"],
2917
2929
  addPhotosFilesMenuItem: ["Carregar fotos e ficheiros"],
2918
2930
  copyResponse: ["Copiar resposta"],
2919
- modeLabels: ["Instant\xE2neo", "M\xE9dia", "Alta", "M\xE1ximo", "M\xE9dio", "Elevado", "Muito elevado"],
2931
+ modeLabels: ["Instant\xE2neo", "M\xE9dia", "Alta", "M\xE1ximo", "M\xE9dio", "Elevado", "Muito elevado", "Elevada"],
2920
2932
  modeOptions: {
2921
2933
  instant: ["Instant\xE2neo"],
2922
2934
  medium: ["M\xE9dia", "M\xE9dio"],
2923
- high: ["Alta", "Elevado"],
2935
+ high: ["Alta", "Elevado", "Elevada"],
2924
2936
  extraHigh: ["M\xE1ximo", "Muito elevado"]
2925
2937
  },
2926
2938
  modeOpenerExtra: ["Configurar..."],
@@ -2938,7 +2950,8 @@ var ptPT = {
2938
2950
  var pl = {
2939
2951
  configurationAxes: {
2940
2952
  power: ["Moc"],
2941
- effort: ["Nak\u0142ad pracy", "Wysi\u0142ek"],
2953
+ model: ["Wybierz model"],
2954
+ effort: ["Nak\u0142ad pracy", "Wysi\u0142ek", "Moc"],
2942
2955
  speed: ["Szybko\u015B\u0107"],
2943
2956
  advanced: ["Zaawansowane"]
2944
2957
  },
@@ -2983,7 +2996,8 @@ var pl = {
2983
2996
  var sk = {
2984
2997
  configurationAxes: {
2985
2998
  power: ["V\xFDkon"],
2986
- effort: ["\xDAsilie"],
2999
+ model: ["Vyberte model"],
3000
+ effort: ["\xDAsilie", "V\xFDkon"],
2987
3001
  speed: ["R\xFDchlos\u0165"],
2988
3002
  advanced: ["Roz\u0161\xEDren\xE9"]
2989
3003
  },
@@ -3028,7 +3042,8 @@ var sk = {
3028
3042
  var ro = {
3029
3043
  configurationAxes: {
3030
3044
  power: ["Capacitate"],
3031
- effort: ["Efort"],
3045
+ model: ["Selecteaz\u0103 modelul"],
3046
+ effort: ["Efort", "Capacitate"],
3032
3047
  speed: ["Vitez\u0103"],
3033
3048
  advanced: ["Avansat"]
3034
3049
  },
@@ -3070,8 +3085,8 @@ var ro = {
3070
3085
  var nb = {
3071
3086
  configurationAxes: {
3072
3087
  power: ["Styrke"],
3073
- model: ["Modell"],
3074
- effort: ["Innsats", "Resonneringsniv\xE5"],
3088
+ model: ["Modell", "Velg modell"],
3089
+ effort: ["Innsats", "Resonneringsniv\xE5", "Styrke"],
3075
3090
  speed: ["Hastighet"],
3076
3091
  advanced: ["Avansert"]
3077
3092
  },
@@ -3115,13 +3130,13 @@ var nb = {
3115
3130
  var ml = {
3116
3131
  configurationAxes: {
3117
3132
  power: ["\u0D2A\u0D35\u0D7C"],
3118
- model: ["\u0D2E\u0D4B\u0D21\u0D7D"],
3119
- effort: ["\u0D36\u0D4D\u0D30\u0D2E\u0D02"],
3133
+ model: ["\u0D2E\u0D4B\u0D21\u0D7D", "\u0D2E\u0D4B\u0D21\u0D7D \u0D24\u0D3F\u0D30\u0D1E\u0D4D\u0D1E\u0D46\u0D1F\u0D41\u0D15\u0D4D\u0D15\u0D41\u0D15"],
3134
+ effort: ["\u0D36\u0D4D\u0D30\u0D2E\u0D02", "\u0D2A\u0D35\u0D7C"],
3120
3135
  speed: ["\u0D35\u0D47\u0D17\u0D24"],
3121
3136
  advanced: ["\u0D35\u0D3F\u0D2A\u0D41\u0D32\u0D2E\u0D3E\u0D2F\u0D24\u0D4D"]
3122
3137
  },
3123
3138
  configurationOptions: {
3124
- instant: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02"],
3139
+ instant: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02", "\u0D07\u0D7B\u0D38\u0D4D\u0D31\u0D4D\u0D31\u0D7B\u0D4D\u0D31\u0D4D"],
3125
3140
  light: ["\u0D32\u0D33\u0D3F\u0D24\u0D02"],
3126
3141
  medium: ["\u0D07\u0D1F\u0D24\u0D4D\u0D24\u0D30\u0D02"],
3127
3142
  high: ["\u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D"],
@@ -3140,9 +3155,9 @@ var ml = {
3140
3155
  addFilesOpenerCandidates: ["\u0D2B\u0D2F\u0D32\u0D41\u0D15\u0D33\u0D41\u0D02 \u0D2E\u0D31\u0D4D\u0D31\u0D41\u0D02 \u0D1A\u0D47\u0D7C\u0D15\u0D4D\u0D15\u0D41\u0D15"],
3141
3156
  addPhotosFilesMenuItem: ["\u0D2B\u0D4B\u0D1F\u0D4D\u0D1F\u0D4B\u0D15\u0D33\u0D41\u0D02 \u0D2B\u0D2F\u0D32\u0D41\u0D15\u0D33\u0D41\u0D02 \u0D05\u0D2A\u0D4D\u200C\u0D32\u0D4B\u0D21\u0D4D \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D15"],
3142
3157
  copyResponse: ["\u0D2E\u0D31\u0D41\u0D2A\u0D1F\u0D3F \u0D15\u0D4B\u0D2A\u0D4D\u0D2A\u0D3F \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D15"],
3143
- modeLabels: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02", "\u0D07\u0D1F\u0D24\u0D4D\u0D24\u0D30\u0D02", "\u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D", "\u0D35\u0D33\u0D30\u0D46 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28", "\u0D2A\u0D4D\u0D30\u0D4B", "\u0D05\u0D24\u0D4D\u0D2F\u0D27\u0D3F\u0D15\u0D02 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D"],
3158
+ modeLabels: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02", "\u0D07\u0D1F\u0D24\u0D4D\u0D24\u0D30\u0D02", "\u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D", "\u0D35\u0D33\u0D30\u0D46 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28", "\u0D2A\u0D4D\u0D30\u0D4B", "\u0D05\u0D24\u0D4D\u0D2F\u0D27\u0D3F\u0D15\u0D02 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D", "\u0D07\u0D7B\u0D38\u0D4D\u0D31\u0D4D\u0D31\u0D7B\u0D4D\u0D31\u0D4D"],
3144
3159
  modeOptions: {
3145
- instant: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02"],
3160
+ instant: ["\u0D24\u0D7D\u0D15\u0D4D\u0D37\u0D23\u0D02", "\u0D07\u0D7B\u0D38\u0D4D\u0D31\u0D4D\u0D31\u0D7B\u0D4D\u0D31\u0D4D"],
3146
3161
  medium: ["\u0D07\u0D1F\u0D24\u0D4D\u0D24\u0D30\u0D02"],
3147
3162
  high: ["\u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D"],
3148
3163
  extraHigh: ["\u0D35\u0D33\u0D30\u0D46 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28", "\u0D05\u0D24\u0D4D\u0D2F\u0D27\u0D3F\u0D15\u0D02 \u0D09\u0D2F\u0D7C\u0D28\u0D4D\u0D28\u0D24\u0D4D"],
@@ -3166,8 +3181,8 @@ var ml = {
3166
3181
  // src/dom/locale/ru.ts
3167
3182
  var ru = {
3168
3183
  configurationAxes: {
3169
- model: ["\u041C\u043E\u0434\u0435\u043B\u044C"],
3170
- effort: ["\u0423\u0440\u043E\u0432\u0435\u043D\u044C", "\u0423\u0440\u043E\u0432\u0435\u043D\u044C \u043F\u0440\u043E\u0440\u0430\u0431\u043E\u0442\u043A\u0438"],
3184
+ model: ["\u041C\u043E\u0434\u0435\u043B\u044C", "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u043C\u043E\u0434\u0435\u043B\u044C"],
3185
+ effort: ["\u0423\u0440\u043E\u0432\u0435\u043D\u044C", "\u0423\u0440\u043E\u0432\u0435\u043D\u044C \u043F\u0440\u043E\u0440\u0430\u0431\u043E\u0442\u043A\u0438", "Power"],
3171
3186
  speed: ["\u0421\u043A\u043E\u0440\u043E\u0441\u0442\u044C"],
3172
3187
  advanced: ["\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043D\u043D\u044B\u0435"]
3173
3188
  },
@@ -3215,8 +3230,8 @@ var ru = {
3215
3230
  var pa = {
3216
3231
  configurationAxes: {
3217
3232
  power: ["\u0A2A\u0A3E\u0A35\u0A30"],
3218
- model: ["\u0A2E\u0A3E\u0A21\u0A32"],
3219
- effort: ["\u0A15\u0A4B\u0A38\u0A3C\u0A3F\u0A38\u0A3C"],
3233
+ model: ["\u0A2E\u0A3E\u0A21\u0A32", "\u0A2E\u0A3E\u0A21\u0A32 \u0A1A\u0A41\u0A23\u0A4B"],
3234
+ effort: ["\u0A15\u0A4B\u0A38\u0A3C\u0A3F\u0A38\u0A3C", "\u0A2A\u0A3E\u0A35\u0A30"],
3220
3235
  speed: ["\u0A17\u0A24\u0A40"],
3221
3236
  advanced: ["\u0A09\u0A71\u0A28\u0A24"]
3222
3237
  },
@@ -3267,13 +3282,13 @@ var pa = {
3267
3282
  var mr = {
3268
3283
  configurationAxes: {
3269
3284
  power: ["\u092A\u0949\u0935\u0930"],
3270
- model: ["\u092E\u0949\u0921\u0947\u0932"],
3271
- effort: ["\u092A\u094D\u0930\u092F\u0924\u094D\u0928"],
3285
+ model: ["\u092E\u0949\u0921\u0947\u0932", "\u092E\u0949\u0921\u0947\u0932 \u0928\u093F\u0935\u0921\u093E"],
3286
+ effort: ["\u092A\u094D\u0930\u092F\u0924\u094D\u0928", "\u092A\u0949\u0935\u0930"],
3272
3287
  speed: ["\u0935\u0947\u0917"],
3273
3288
  advanced: ["\u092A\u094D\u0930\u0917\u0924"]
3274
3289
  },
3275
3290
  configurationOptions: {
3276
- instant: ["\u091D\u091F\u092A\u091F"],
3291
+ instant: ["\u091D\u091F\u092A\u091F", "\u0907\u0928\u094D\u0938\u094D\u091F\u0902\u091F"],
3277
3292
  light: ["\u0939\u0932\u0915\u093E"],
3278
3293
  medium: ["\u092E\u0927\u094D\u092F\u092E"],
3279
3294
  high: ["\u0909\u091A\u094D\u091A"],
@@ -3292,9 +3307,9 @@ var mr = {
3292
3307
  addFilesOpenerCandidates: ["\u092B\u093E\u0907\u0932\u094D\u0938 \u091C\u094B\u0921\u093E \u0906\u0923\u093F \u0907\u0924\u0930 \u0905\u0928\u0947\u0915 \u0917\u094B\u0937\u094D\u091F\u0940 \u0915\u0930\u093E"],
3293
3308
  addPhotosFilesMenuItem: ["\u092B\u094B\u091F\u094B \u0906\u0923\u093F \u092B\u093E\u0907\u0932\u094D\u0938 \u0905\u092A\u0932\u094B\u0921 \u0915\u0930\u093E"],
3294
3309
  copyResponse: ["\u092A\u094D\u0930\u0924\u093F\u0938\u093E\u0926 \u0915\u0949\u092A\u0940 \u0915\u0930\u093E"],
3295
- modeLabels: ["\u091D\u091F\u092A\u091F", "\u092E\u0927\u094D\u092F\u092E", "\u0909\u091A\u094D\u091A", "\u0905\u0924\u093F\u0909\u091A\u094D\u091A", "\u092A\u094D\u0930\u094B", "\u0905\u0924\u094D\u092F\u0941\u091A\u094D\u091A"],
3310
+ modeLabels: ["\u091D\u091F\u092A\u091F", "\u092E\u0927\u094D\u092F\u092E", "\u0909\u091A\u094D\u091A", "\u0905\u0924\u093F\u0909\u091A\u094D\u091A", "\u092A\u094D\u0930\u094B", "\u0905\u0924\u094D\u092F\u0941\u091A\u094D\u091A", "\u0907\u0928\u094D\u0938\u094D\u091F\u0902\u091F"],
3296
3311
  modeOptions: {
3297
- instant: ["\u091D\u091F\u092A\u091F"],
3312
+ instant: ["\u091D\u091F\u092A\u091F", "\u0907\u0928\u094D\u0938\u094D\u091F\u0902\u091F"],
3298
3313
  medium: ["\u092E\u0927\u094D\u092F\u092E"],
3299
3314
  high: ["\u0909\u091A\u094D\u091A"],
3300
3315
  extraHigh: ["\u0905\u0924\u093F\u0909\u091A\u094D\u091A", "\u0905\u0924\u094D\u092F\u0941\u091A\u094D\u091A"],
@@ -3319,7 +3334,8 @@ var mr = {
3319
3334
  var tr = {
3320
3335
  configurationAxes: {
3321
3336
  power: ["G\xFC\xE7"],
3322
- effort: ["D\xFCzey", "\xC7aba"],
3337
+ model: ["Model se\xE7"],
3338
+ effort: ["D\xFCzey", "\xC7aba", "G\xFC\xE7"],
3323
3339
  speed: ["H\u0131z"],
3324
3340
  advanced: ["Geli\u015Fmi\u015F"]
3325
3341
  },
@@ -3368,8 +3384,8 @@ var tr = {
3368
3384
  var sw = {
3369
3385
  configurationAxes: {
3370
3386
  power: ["Umahiri"],
3371
- model: ["Modeli", "Mfumo"],
3372
- effort: ["Juhudi", "Kiwango cha uchambuzi"],
3387
+ model: ["Modeli", "Mfumo", "Chagua muundo"],
3388
+ effort: ["Juhudi", "Kiwango cha uchambuzi", "Umahiri"],
3373
3389
  speed: ["Kasi"],
3374
3390
  advanced: ["Za kina"]
3375
3391
  },
@@ -3378,7 +3394,7 @@ var sw = {
3378
3394
  light: ["Nyepesi"],
3379
3395
  medium: ["Wastani"],
3380
3396
  high: ["Juu"],
3381
- extraHigh: ["Juu Zaidi"],
3397
+ extraHigh: ["Juu Zaidi", "Juu Sana"],
3382
3398
  max: ["Juu kabisa"],
3383
3399
  standard: ["Kawaida"],
3384
3400
  fast: ["Haraka"]
@@ -3414,13 +3430,13 @@ var sw = {
3414
3430
  var te = {
3415
3431
  configurationAxes: {
3416
3432
  power: ["\u0C2A\u0C35\u0C30\u0C4D"],
3417
- model: ["\u0C2E\u0C4B\u0C21\u0C32\u0C4D"],
3418
- effort: ["\u0C2A\u0C4D\u0C30\u0C2F\u0C24\u0C4D\u0C28\u0C02", "\u0C06\u0C32\u0C4B\u0C1A\u0C28"],
3433
+ model: ["\u0C2E\u0C4B\u0C21\u0C32\u0C4D", "\u0C2E\u0C4B\u0C21\u0C32\u0C4D\u200C\u0C28\u0C41 \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F"],
3434
+ effort: ["\u0C2A\u0C4D\u0C30\u0C2F\u0C24\u0C4D\u0C28\u0C02", "\u0C06\u0C32\u0C4B\u0C1A\u0C28", "\u0C2A\u0C35\u0C30\u0C4D"],
3419
3435
  speed: ["\u0C35\u0C47\u0C17\u0C02"],
3420
3436
  advanced: ["\u0C05\u0C27\u0C41\u0C28\u0C3E\u0C24\u0C28\u0C02"]
3421
3437
  },
3422
3438
  configurationOptions: {
3423
- instant: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02"],
3439
+ instant: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02", "\u0C07\u0C28\u0C4D\u200C\u0C38\u0C4D\u0C1F\u0C46\u0C02\u0C1F\u0C4D\u200C\u0C17\u0C3E"],
3424
3440
  light: ["\u0C32\u0C48\u0C1F\u0C4D"],
3425
3441
  medium: ["\u0C2E\u0C40\u0C21\u0C3F\u0C2F\u0C02"],
3426
3442
  high: ["\u0C39\u0C48"],
@@ -3439,9 +3455,9 @@ var te = {
3439
3455
  addFilesOpenerCandidates: ["\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C32\u0C28\u0C41 \u0C2E\u0C30\u0C3F\u0C2F\u0C41 \u0C2E\u0C30\u0C3F\u0C28\u0C4D\u0C28\u0C3F \u0C1C\u0C4B\u0C21\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F"],
3440
3456
  addPhotosFilesMenuItem: ["\u0C2B\u0C4B\u0C1F\u0C4B\u0C32\u0C41 & \u0C2B\u0C48\u0C32\u0C4D\u200C\u0C32\u0C28\u0C41 \u0C05\u0C2A\u0C4D\u200C\u0C32\u0C4B\u0C21\u0C4D \u0C1A\u0C47\u0C2F\u0C02\u0C21\u0C3F"],
3441
3457
  copyResponse: ["\u0C2A\u0C4D\u0C30\u0C24\u0C3F\u0C38\u0C4D\u0C2A\u0C02\u0C26\u0C28\u0C28\u0C41 \u0C15\u0C3E\u0C2A\u0C40 \u0C1A\u0C47\u0C2F\u0C02\u0C21\u0C3F"],
3442
- modeLabels: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02", "\u0C2E\u0C27\u0C4D\u0C2F\u0C38\u0C4D\u0C25", "\u0C05\u0C27\u0C3F\u0C15", "\u0C05\u0C24\u0C4D\u0C2F\u0C27\u0C3F\u0C15", "\u0C2A\u0C4D\u0C30\u0C4B", "\u0C2E\u0C40\u0C21\u0C3F\u0C2F\u0C02", "\u0C39\u0C48", "\u0C0E\u0C15\u0C4D\u0C38\u0C4D\u200C\u0C1F\u0C4D\u0C30\u0C3E \u0C39\u0C48"],
3458
+ modeLabels: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02", "\u0C2E\u0C27\u0C4D\u0C2F\u0C38\u0C4D\u0C25", "\u0C05\u0C27\u0C3F\u0C15", "\u0C05\u0C24\u0C4D\u0C2F\u0C27\u0C3F\u0C15", "\u0C2A\u0C4D\u0C30\u0C4B", "\u0C2E\u0C40\u0C21\u0C3F\u0C2F\u0C02", "\u0C39\u0C48", "\u0C0E\u0C15\u0C4D\u0C38\u0C4D\u200C\u0C1F\u0C4D\u0C30\u0C3E \u0C39\u0C48", "\u0C07\u0C28\u0C4D\u200C\u0C38\u0C4D\u0C1F\u0C46\u0C02\u0C1F\u0C4D\u200C\u0C17\u0C3E"],
3443
3459
  modeOptions: {
3444
- instant: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02"],
3460
+ instant: ["\u0C24\u0C15\u0C4D\u0C37\u0C23\u0C02", "\u0C07\u0C28\u0C4D\u200C\u0C38\u0C4D\u0C1F\u0C46\u0C02\u0C1F\u0C4D\u200C\u0C17\u0C3E"],
3445
3461
  medium: ["\u0C2E\u0C27\u0C4D\u0C2F\u0C38\u0C4D\u0C25", "\u0C2E\u0C40\u0C21\u0C3F\u0C2F\u0C02"],
3446
3462
  high: ["\u0C05\u0C27\u0C3F\u0C15", "\u0C39\u0C48"],
3447
3463
  extraHigh: ["\u0C05\u0C24\u0C4D\u0C2F\u0C27\u0C3F\u0C15", "\u0C0E\u0C15\u0C4D\u0C38\u0C4D\u200C\u0C1F\u0C4D\u0C30\u0C3E \u0C39\u0C48"],
@@ -3465,7 +3481,8 @@ var te = {
3465
3481
  // src/dom/locale/tl.ts
3466
3482
  var tl = {
3467
3483
  configurationAxes: {
3468
- effort: ["Pagsisikap", "Pag-iisip"],
3484
+ model: ["Mag-select ng model"],
3485
+ effort: ["Pagsisikap", "Pag-iisip", "Power"],
3469
3486
  speed: ["Bilis"]
3470
3487
  },
3471
3488
  configurationOptions: {
@@ -3494,8 +3511,8 @@ var tl = {
3494
3511
  var th = {
3495
3512
  configurationAxes: {
3496
3513
  power: ["\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16"],
3497
- model: ["\u0E42\u0E21\u0E40\u0E14\u0E25"],
3498
- effort: ["\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E01\u0E32\u0E23\u0E04\u0E34\u0E14"],
3514
+ model: ["\u0E42\u0E21\u0E40\u0E14\u0E25", "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E42\u0E21\u0E40\u0E14\u0E25"],
3515
+ effort: ["\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E01\u0E32\u0E23\u0E04\u0E34\u0E14", "\u0E23\u0E30\u0E14\u0E31\u0E1A\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16"],
3499
3516
  speed: ["\u0E04\u0E27\u0E32\u0E21\u0E40\u0E23\u0E47\u0E27"],
3500
3517
  advanced: ["\u0E02\u0E31\u0E49\u0E19\u0E2A\u0E39\u0E07"]
3501
3518
  },
@@ -3533,8 +3550,8 @@ var th = {
3533
3550
  var bn = {
3534
3551
  configurationAxes: {
3535
3552
  power: ["\u0995\u09CD\u09B7\u09AE\u09A4\u09BE"],
3536
- model: ["\u09AE\u09A1\u09C7\u09B2"],
3537
- effort: ["\u09AA\u09CD\u09B0\u099A\u09C7\u09B7\u09CD\u099F\u09BE"],
3553
+ model: ["\u09AE\u09A1\u09C7\u09B2", "\u09AE\u09A1\u09C7\u09B2 \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A8"],
3554
+ effort: ["\u09AA\u09CD\u09B0\u099A\u09C7\u09B7\u09CD\u099F\u09BE", "\u0995\u09CD\u09B7\u09AE\u09A4\u09BE"],
3538
3555
  speed: ["\u0997\u09A4\u09BF"],
3539
3556
  advanced: ["\u0989\u09A8\u09CD\u09A8\u09A4"]
3540
3557
  },
@@ -3585,7 +3602,8 @@ var bn = {
3585
3602
  var ms = {
3586
3603
  configurationAxes: {
3587
3604
  power: ["Kuasa"],
3588
- effort: ["Usaha"],
3605
+ model: ["Pilih model"],
3606
+ effort: ["Usaha", "Kuasa"],
3589
3607
  speed: ["Kelajuan"],
3590
3608
  advanced: ["Lanjutan"]
3591
3609
  },
@@ -3633,8 +3651,8 @@ var ms = {
3633
3651
  var so = {
3634
3652
  configurationAxes: {
3635
3653
  power: ["Awood"],
3636
- model: ["Moodel"],
3637
- effort: ["Dadaal"],
3654
+ model: ["Moodel", "Dooro moodelka"],
3655
+ effort: ["Dadaal", "Awood"],
3638
3656
  speed: ["Xawaare"],
3639
3657
  advanced: ["Horumarsan"]
3640
3658
  },
@@ -3683,7 +3701,8 @@ var so = {
3683
3701
  var nl = {
3684
3702
  configurationAxes: {
3685
3703
  power: ["Rekenkracht"],
3686
- effort: ["Inspanning"],
3704
+ model: ["Model selecteren"],
3705
+ effort: ["Inspanning", "Rekenkracht"],
3687
3706
  speed: ["Snelheid"],
3688
3707
  advanced: ["Geavanceerd"]
3689
3708
  },
@@ -3726,8 +3745,8 @@ var nl = {
3726
3745
  var sv = {
3727
3746
  configurationAxes: {
3728
3747
  power: ["Prestanda"],
3729
- model: ["Modell"],
3730
- effort: ["Resonemangsniv\xE5"],
3748
+ model: ["Modell", "V\xE4lj modell"],
3749
+ effort: ["Resonemangsniv\xE5", "Prestanda"],
3731
3750
  speed: ["Hastighet"],
3732
3751
  advanced: ["Avancerat"]
3733
3752
  },
@@ -3770,8 +3789,8 @@ var sv = {
3770
3789
  var lv = {
3771
3790
  configurationAxes: {
3772
3791
  power: ["Jauda"],
3773
- model: ["Modelis"],
3774
- effort: ["P\u016Bles"],
3792
+ model: ["Modelis", "Izv\u0113l\u0113ties modeli"],
3793
+ effort: ["P\u016Bles", "Jauda"],
3775
3794
  speed: ["\u0100trums"],
3776
3795
  advanced: ["Papildu"]
3777
3796
  },
@@ -3816,8 +3835,8 @@ var lv = {
3816
3835
  var mk = {
3817
3836
  configurationAxes: {
3818
3837
  power: ["\u041C\u043E\u045C\u043D\u043E\u0441\u0442"],
3819
- model: ["\u041C\u043E\u0434\u0435\u043B"],
3820
- effort: ["\u041D\u0430\u043F\u043E\u0440"],
3838
+ model: ["\u041C\u043E\u0434\u0435\u043B", "\u0418\u0437\u0431\u0435\u0440\u0438 \u043C\u043E\u0434\u0435\u043B"],
3839
+ effort: ["\u041D\u0430\u043F\u043E\u0440", "\u041C\u043E\u045C\u043D\u043E\u0441\u0442"],
3821
3840
  speed: ["\u0411\u0440\u0437\u0438\u043D\u0430"],
3822
3841
  advanced: ["\u041D\u0430\u043F\u0440\u0435\u0434\u043D\u043E"]
3823
3842
  },
@@ -3865,8 +3884,8 @@ var mk = {
3865
3884
  var sq = {
3866
3885
  configurationAxes: {
3867
3886
  power: ["Fuqia"],
3868
- model: ["Modeli"],
3869
- effort: ["P\xEBrpjekje", "Arsyetim"],
3887
+ model: ["Modeli", "Zgjidh modelin"],
3888
+ effort: ["P\xEBrpjekje", "Arsyetim", "Fuqia"],
3870
3889
  speed: ["Shpejt\xEBsi"],
3871
3890
  advanced: ["T\xEB avancuara"]
3872
3891
  },
@@ -3914,7 +3933,8 @@ var sq = {
3914
3933
  var sl = {
3915
3934
  configurationAxes: {
3916
3935
  power: ["Mo\u010D"],
3917
- effort: ["Napor"],
3936
+ model: ["Izberite model"],
3937
+ effort: ["Napor", "Mo\u010D"],
3918
3938
  speed: ["Hitrost"],
3919
3939
  advanced: ["Napredno"]
3920
3940
  },
@@ -3963,8 +3983,8 @@ var sl = {
3963
3983
  var sr = {
3964
3984
  configurationAxes: {
3965
3985
  power: ["\u0421\u043D\u0430\u0433\u0430"],
3966
- model: ["\u041C\u043E\u0434\u0435\u043B"],
3967
- effort: ["\u041D\u0438\u0432\u043E", "\u041D\u0430\u043F\u043E\u0440"],
3986
+ model: ["\u041C\u043E\u0434\u0435\u043B", "\u0418\u0437\u0430\u0431\u0435\u0440\u0438 \u043C\u043E\u0434\u0435\u043B"],
3987
+ effort: ["\u041D\u0438\u0432\u043E", "\u041D\u0430\u043F\u043E\u0440", "\u0421\u043D\u0430\u0433\u0430"],
3968
3988
  speed: ["\u0411\u0440\u0437\u0438\u043D\u0430"],
3969
3989
  advanced: ["\u041D\u0430\u043F\u0440\u0435\u0434\u043D\u043E"]
3970
3990
  },
@@ -4012,8 +4032,8 @@ var sr = {
4012
4032
  var mn = {
4013
4033
  configurationAxes: {
4014
4034
  power: ["\u0427\u0430\u0434\u0430\u043B"],
4015
- model: ["\u0417\u0430\u0433\u0432\u0430\u0440"],
4016
- effort: ["\u0425\u04AF\u0447\u0438\u043D \u0447\u0430\u0440\u043C\u0430\u0439\u043B\u0442", "\u0422\u043E\u043E\u0446\u043E\u043E\u043B\u043E\u043B"],
4035
+ model: ["\u0417\u0430\u0433\u0432\u0430\u0440", "\u0417\u0430\u0433\u0432\u0430\u0440 \u0441\u043E\u043D\u0433\u043E\u0445"],
4036
+ effort: ["\u0425\u04AF\u0447\u0438\u043D \u0447\u0430\u0440\u043C\u0430\u0439\u043B\u0442", "\u0422\u043E\u043E\u0446\u043E\u043E\u043B\u043E\u043B", "\u0427\u0430\u0434\u0430\u043B"],
4017
4037
  speed: ["\u0425\u0443\u0440\u0434"],
4018
4038
  advanced: ["\u0414\u044D\u0432\u0448\u0438\u043B\u0442\u044D\u0442"]
4019
4039
  },
@@ -4064,8 +4084,8 @@ var mn = {
4064
4084
  var my = {
4065
4085
  configurationAxes: {
4066
4086
  power: ["\u1005\u103D\u1019\u103A\u1038\u1021\u102C\u1038"],
4067
- model: ["\u1019\u1031\u102C\u103A\u1012\u101A\u103A"],
4068
- effort: ["\u1021\u102C\u1038\u1011\u102F\u1010\u103A\u1019\u103E\u102F"],
4087
+ model: ["\u1019\u1031\u102C\u103A\u1012\u101A\u103A", "\u1019\u1031\u102C\u103A\u1012\u101A\u103A \u101B\u103D\u1031\u1038\u1001\u103B\u101A\u103A\u101B\u1014\u103A"],
4088
+ effort: ["\u1021\u102C\u1038\u1011\u102F\u1010\u103A\u1019\u103E\u102F", "\u1005\u103D\u1019\u103A\u1038\u1021\u102C\u1038"],
4069
4089
  speed: ["\u1021\u1019\u103C\u1014\u103A\u1014\u103E\u102F\u1014\u103A\u1038"],
4070
4090
  advanced: ["\u1021\u1006\u1004\u1037\u103A\u1019\u103C\u1004\u1037\u103A"]
4071
4091
  },
@@ -4114,8 +4134,8 @@ var my = {
4114
4134
  var ta = {
4115
4135
  configurationAxes: {
4116
4136
  power: ["\u0BA4\u0BBF\u0BB1\u0BA9\u0BCD"],
4117
- model: ["\u0BAE\u0BBE\u0BA4\u0BBF\u0BB0\u0BBF", "\u0BAE\u0BBE\u0B9F\u0BB2\u0BCD"],
4118
- effort: ["\u0BAE\u0BC1\u0BAF\u0BB1\u0BCD\u0B9A\u0BBF", "\u0B9A\u0BBF\u0BA8\u0BCD\u0BA4\u0BA9\u0BC8 \u0B85\u0BB3\u0BB5\u0BC1"],
4137
+ model: ["\u0BAE\u0BBE\u0BA4\u0BBF\u0BB0\u0BBF", "\u0BAE\u0BBE\u0B9F\u0BB2\u0BCD", "\u0BAE\u0BBE\u0B9F\u0BB2\u0BC8\u0BA4\u0BCD \u0BA4\u0BC7\u0BB0\u0BCD\u0BB5\u0BC1\u0B9A\u0BC6\u0BAF\u0BCD"],
4138
+ effort: ["\u0BAE\u0BC1\u0BAF\u0BB1\u0BCD\u0B9A\u0BBF", "\u0B9A\u0BBF\u0BA8\u0BCD\u0BA4\u0BA9\u0BC8 \u0B85\u0BB3\u0BB5\u0BC1", "\u0BA4\u0BBF\u0BB1\u0BA9\u0BCD"],
4119
4139
  speed: ["\u0BB5\u0BC7\u0B95\u0BAE\u0BCD"],
4120
4140
  advanced: ["\u0BAE\u0BC7\u0BAE\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F"]
4121
4141
  },
@@ -4123,8 +4143,8 @@ var ta = {
4123
4143
  instant: ["\u0B89\u0B9F\u0BA9\u0B9F\u0BBF"],
4124
4144
  light: ["\u0B95\u0BC1\u0BB1\u0BC8\u0BB5\u0BC1"],
4125
4145
  medium: ["\u0BAE\u0BBF\u0BA4\u0BAE\u0BBE\u0BA9"],
4126
- high: ["\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
4127
- extraHigh: ["\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
4146
+ high: ["\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BCD"],
4147
+ extraHigh: ["\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BCD"],
4128
4148
  max: ["\u0B85\u0BA4\u0BBF\u0B95\u0BAA\u0B9F\u0BCD\u0B9A\u0BAE\u0BCD"],
4129
4149
  ultra: ["\u0B85\u0BB2\u0BCD\u0B9F\u0BCD\u0BB0\u0BBE"],
4130
4150
  standard: ["\u0BB5\u0BB4\u0B95\u0BCD\u0B95\u0BAE\u0BBE\u0BA9"],
@@ -4139,11 +4159,11 @@ var ta = {
4139
4159
  addFilesOpenerCandidates: ["\u0B95\u0BCB\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BC8\u0BAF\u0BC1\u0BAE\u0BCD \u0BAE\u0BC7\u0BB2\u0BC1\u0BAE\u0BCD \u0BAA\u0BB2\u0BB5\u0BB1\u0BCD\u0BB1\u0BC8\u0BAF\u0BC1\u0BAE\u0BCD \u0B9A\u0BC7\u0BB0\u0BCD"],
4140
4160
  addPhotosFilesMenuItem: ["\u0BAA\u0B9F\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0BAE\u0BB1\u0BCD\u0BB1\u0BC1\u0BAE\u0BCD \u0B83\u0BAA\u0BC8\u0BB2\u0BCD\u0B95\u0BB3\u0BC8\u0BAA\u0BCD \u0BAA\u0BA4\u0BBF\u0BB5\u0BC7\u0BB1\u0BCD\u0BB1\u0BC1"],
4141
4161
  copyResponse: ["\u0BAA\u0BA4\u0BBF\u0BB2\u0BC8 \u0BA8\u0B95\u0BB2\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95\u0BB2\u0BBE\u0BAE\u0BCD"],
4142
- modeLabels: ["\u0B89\u0B9F\u0BA9\u0B9F\u0BBF", "\u0BA8\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4\u0BB0", "\u0B89\u0BAF\u0BB0\u0BCD", "\u0BAE\u0BBF\u0B95 \u0B89\u0BAF\u0BB0\u0BCD\u0BB5\u0BC1", "\u0BAA\u0BCD\u0BB0\u0BCB", "\u0BAE\u0BBF\u0BA4\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
4162
+ modeLabels: ["\u0B89\u0B9F\u0BA9\u0B9F\u0BBF", "\u0BA8\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4\u0BB0", "\u0B89\u0BAF\u0BB0\u0BCD", "\u0BAE\u0BBF\u0B95 \u0B89\u0BAF\u0BB0\u0BCD\u0BB5\u0BC1", "\u0BAA\u0BCD\u0BB0\u0BCB", "\u0BAE\u0BBF\u0BA4\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BCD"],
4143
4163
  modeOptions: {
4144
4164
  instant: ["\u0B89\u0B9F\u0BA9\u0B9F\u0BBF"],
4145
4165
  medium: ["\u0BA8\u0B9F\u0BC1\u0BA4\u0BCD\u0BA4\u0BB0", "\u0BAE\u0BBF\u0BA4\u0BAE\u0BBE\u0BA9"],
4146
- high: ["\u0B89\u0BAF\u0BB0\u0BCD", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
4166
+ high: ["\u0B89\u0BAF\u0BB0\u0BCD", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9", "\u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BCD"],
4147
4167
  extraHigh: ["\u0BAE\u0BBF\u0B95 \u0B89\u0BAF\u0BB0\u0BCD\u0BB5\u0BC1", "\u0BAE\u0BBF\u0B95 \u0B85\u0BA4\u0BBF\u0B95\u0BAE\u0BBE\u0BA9"],
4148
4168
  pro: ["\u0BAA\u0BCD\u0BB0\u0BCB"]
4149
4169
  },
@@ -4286,6 +4306,7 @@ function flattenNestedLabel(localeList, group, id2) {
4286
4306
  var nonToolKeys = [
4287
4307
  "composerTextbox",
4288
4308
  "workComposerTextbox",
4309
+ "projectComposerPrefixes",
4289
4310
  "newWork",
4290
4311
  "sendButton",
4291
4312
  "searchChatsButton",
@@ -4346,6 +4367,15 @@ function escapeRegExp(value) {
4346
4367
  function anyLabelPattern(candidates) {
4347
4368
  return new RegExp(candidates.map(escapeRegExp).join("|"), "i");
4348
4369
  }
4370
+ function labelOrPrefixPattern(candidates, prefixes) {
4371
+ const sources = candidates.map(escapeRegExp);
4372
+ for (const prefix of prefixes) {
4373
+ if (prefix.length > 0) {
4374
+ sources.push(`^${escapeRegExp(prefix)}\\s+\\S`);
4375
+ }
4376
+ }
4377
+ return new RegExp(sources.join("|"), "i");
4378
+ }
4349
4379
 
4350
4380
  // src/browser/chatgpt-url.ts
4351
4381
  var CHATGPT_HOME = "https://chatgpt.com/";
@@ -4804,8 +4834,9 @@ var generatedArtifactDownloadClauses = [
4804
4834
  ];
4805
4835
  var cssSelectors = {
4806
4836
  assistantMessages: "[data-message-author-role='assistant']",
4807
- userMessages: "[data-message-author-role='user']",
4808
- roleMessages: "[data-message-author-role]",
4837
+ currentAssistantMessages: "main [data-chatgpt-search-unit-key$=':assistant'][data-chatgpt-search-message-ids]",
4838
+ userMessages: "[data-message-author-role='user'], main [data-chatgpt-search-unit-key$=':user'][data-chatgpt-search-message-ids]",
4839
+ roleMessages: "[data-message-author-role], main [data-chatgpt-search-unit-key$=':user'][data-chatgpt-search-message-ids], main [data-chatgpt-search-unit-key$=':assistant'][data-chatgpt-search-message-ids]",
4809
4840
  conversationTurns: "[data-testid^='conversation-turn']",
4810
4841
  hiddenFileInputs: "input[type='file']",
4811
4842
  downloadControls: downloadControlClauses.join(", "),
@@ -4816,10 +4847,10 @@ function composerTextbox(page) {
4816
4847
  return requiredLocator(page, "[contenteditable='true'], textarea");
4817
4848
  }
4818
4849
  return page.getByRole("textbox", {
4819
- name: anyLabelPattern([
4820
- ...localeLabels.composerTextbox,
4821
- ...localeLabels.workComposerTextbox
4822
- ])
4850
+ name: labelOrPrefixPattern(
4851
+ [...localeLabels.composerTextbox, ...localeLabels.workComposerTextbox],
4852
+ localeLabels.projectComposerPrefixes
4853
+ )
4823
4854
  });
4824
4855
  }
4825
4856
  function sendButton(page) {
@@ -4930,10 +4961,19 @@ function extractRoleMessageHtml(html) {
4930
4961
  const root = parseHtmlFragment(html);
4931
4962
  const messages = [];
4932
4963
  walkElementsWithAncestors(root, [], (element, ancestors) => {
4933
- const role = element.attrs["data-message-author-role"];
4964
+ const current = element.attrs["data-message-author-role"] === void 0 && element.attrs["data-chatgpt-search-message-ids"] !== void 0;
4965
+ if (current && !ancestors.some((ancestor) => ancestor.tag === "main")) return;
4966
+ const role = element.attrs["data-message-author-role"] ?? (current ? element.attrs["data-chatgpt-search-unit-key"]?.split(":").at(-1) : void 0);
4934
4967
  if (role === "user" || role === "assistant") {
4935
4968
  const metadataElement = [...ancestors].reverse().find((ancestor) => ancestor.attrs["data-testid"]?.startsWith("conversation-turn")) ?? element;
4936
- messages.push({ role, html: serializeChildren(element), metadataHtml: serializeNode(metadataElement) });
4969
+ let content = element;
4970
+ if (current) {
4971
+ walkElements(element, (child) => {
4972
+ if (role === "user" && child.attrs["data-user-message-bubble"] === "true" || role === "assistant" && child.attrs["data-markdown-text-style"] === "assistant-message" && child.children.length > 0) content = child;
4973
+ });
4974
+ }
4975
+ const messageHtml = serializeChildren(content).replace(/<h4\b[^>]*data-conversation-role=["']assistant["'][^>]*>[\s\S]*?<\/h4>/i, "");
4976
+ messages.push({ role, html: messageHtml, metadataHtml: serializeNode(metadataElement) });
4937
4977
  }
4938
4978
  });
4939
4979
  return messages;
@@ -5468,15 +5508,19 @@ function extractMessagesFromHtml(html, args = {}) {
5468
5508
  async function readMessages(page, args = {}) {
5469
5509
  if (typeof page.evaluate === "function") {
5470
5510
  const messages = await page.evaluate(() => {
5471
- const nodes = Array.from(document.querySelectorAll("[data-message-author-role]"));
5511
+ const legacy = Array.from(document.querySelectorAll("[data-message-author-role]"));
5512
+ const nodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
5513
+ "main [data-chatgpt-search-unit-key][data-chatgpt-search-message-ids]"
5514
+ ));
5472
5515
  return nodes.map((node) => {
5473
- const role = node.getAttribute("data-message-author-role");
5516
+ const role = node.getAttribute("data-message-author-role") ?? node.getAttribute("data-chatgpt-search-unit-key")?.split(":").at(-1);
5474
5517
  if (role !== "user" && role !== "assistant") {
5475
5518
  return void 0;
5476
5519
  }
5520
+ const content = role === "user" ? node.querySelector?.('[data-user-message-bubble="true"]') : node.querySelector?.('[data-markdown-text-style="assistant-message"]');
5477
5521
  return {
5478
5522
  role,
5479
- html: node.innerHTML,
5523
+ html: content?.innerHTML || node.innerHTML.replace(/<h4\b[^>]*data-conversation-role=["']assistant["'][^>]*>[\s\S]*?<\/h4>/i, ""),
5480
5524
  metadataHtml: node.closest("[data-testid^='conversation-turn']")?.outerHTML ?? node.outerHTML
5481
5525
  };
5482
5526
  }).filter(Boolean);
@@ -5492,12 +5536,16 @@ async function readMessages(page, args = {}) {
5492
5536
  async function readLatestMessage(page, role = "assistant", format = "markdown", maxChars) {
5493
5537
  if (typeof page.evaluate === "function") {
5494
5538
  const message = await page.evaluate((wantedRole) => {
5495
- const nodes = Array.from(document.querySelectorAll(`[data-message-author-role="${wantedRole}"]`));
5539
+ const legacy = Array.from(document.querySelectorAll(`[data-message-author-role="${wantedRole}"]`));
5540
+ const nodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
5541
+ `main [data-chatgpt-search-unit-key$=":${wantedRole}"][data-chatgpt-search-message-ids]`
5542
+ ));
5496
5543
  const node = nodes.at(-1);
5497
5544
  if (node === void 0) return void 0;
5545
+ const content = wantedRole === "user" ? node.querySelector?.('[data-user-message-bubble="true"]') : node.querySelector?.('[data-markdown-text-style="assistant-message"]');
5498
5546
  return {
5499
5547
  role: wantedRole,
5500
- html: node.innerHTML,
5548
+ html: content?.innerHTML || node.innerHTML.replace(/<h4\b[^>]*data-conversation-role=["']assistant["'][^>]*>[\s\S]*?<\/h4>/i, ""),
5501
5549
  metadataHtml: node.closest("[data-testid^='conversation-turn']")?.outerHTML ?? node.outerHTML
5502
5550
  };
5503
5551
  }, role).catch(() => void 0);
@@ -5516,9 +5564,15 @@ async function readLatestMessage(page, role = "assistant", format = "markdown",
5516
5564
  async function readLatestMessageText(page, role = "assistant") {
5517
5565
  if (typeof page.evaluate === "function") {
5518
5566
  return page.evaluate((wantedRole) => {
5519
- const nodes = Array.from(document.querySelectorAll(`[data-message-author-role="${wantedRole}"]`));
5567
+ const legacy = Array.from(document.querySelectorAll(`[data-message-author-role="${wantedRole}"]`));
5568
+ const nodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
5569
+ `main [data-chatgpt-search-unit-key$=":${wantedRole}"][data-chatgpt-search-message-ids]`
5570
+ ));
5520
5571
  const node = nodes.at(-1);
5521
- return node?.innerText ?? node?.textContent ?? void 0;
5572
+ if (node?.getAttribute("data-chatgpt-search-unit-key") === null) return node?.innerText ?? node?.textContent ?? void 0;
5573
+ if (node === void 0) return void 0;
5574
+ const content = wantedRole === "user" ? node.querySelector?.('[data-user-message-bubble="true"]') : node.querySelector?.('[data-markdown-text-style="assistant-message"]');
5575
+ return content?.innerText || content?.textContent || (node.innerText ?? node.textContent ?? "").replace(node.querySelector?.('[data-conversation-role="assistant"]')?.textContent ?? "", "").trim();
5522
5576
  }, role).catch(() => void 0);
5523
5577
  }
5524
5578
  return readLatestMessage(page, role, "normalized_text").then((message) => message?.text).catch(() => void 0);
@@ -5526,10 +5580,14 @@ async function readLatestMessageText(page, role = "assistant") {
5526
5580
  async function readLatestMessageTextSnapshot(page, role) {
5527
5581
  if (typeof page.evaluate === "function") {
5528
5582
  return page.evaluate((wantedRole) => {
5529
- const allNodes = Array.from(document.querySelectorAll("[data-message-author-role]"));
5530
- const roleNodes = allNodes.filter((node) => node.getAttribute("data-message-author-role") === wantedRole);
5583
+ const legacy = Array.from(document.querySelectorAll("[data-message-author-role]"));
5584
+ const allNodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
5585
+ "main [data-chatgpt-search-unit-key][data-chatgpt-search-message-ids]"
5586
+ )).filter((node) => /:(?:user|assistant)$/.test(node.getAttribute("data-chatgpt-search-unit-key") ?? ""));
5587
+ const roleNodes = allNodes.filter((node) => (node.getAttribute("data-message-author-role") ?? node.getAttribute("data-chatgpt-search-unit-key")?.split(":").at(-1)) === wantedRole);
5531
5588
  const latest = roleNodes.at(-1);
5532
- const latestText2 = latest?.innerText ?? latest?.textContent ?? void 0;
5589
+ const content = wantedRole === "user" ? latest?.querySelector?.('[data-user-message-bubble="true"]') : latest?.querySelector?.('[data-markdown-text-style="assistant-message"]');
5590
+ const latestText2 = content?.innerText || content?.textContent || (latest === void 0 ? void 0 : (latest.innerText ?? latest.textContent ?? "").replace(latest.querySelector?.('[data-conversation-role="assistant"]')?.textContent ?? "", "").trim());
5533
5591
  const snapshot3 = { turnCount: allNodes.length };
5534
5592
  if (latestText2 !== void 0) snapshot3.latestText = latestText2;
5535
5593
  return snapshot3;
@@ -5553,7 +5611,10 @@ async function countPageMessages(page, role) {
5553
5611
  if (typeof page.evaluate === "function") {
5554
5612
  return page.evaluate((wantedRole) => {
5555
5613
  const selector = wantedRole === void 0 ? "[data-message-author-role]" : `[data-message-author-role="${wantedRole}"]`;
5556
- return document.querySelectorAll(selector).length;
5614
+ const legacyCount = document.querySelectorAll(selector).length;
5615
+ if (legacyCount > 0) return legacyCount;
5616
+ const currentSelector = wantedRole === void 0 ? 'main [data-chatgpt-search-unit-key$=":user"][data-chatgpt-search-message-ids], main [data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]' : `main [data-chatgpt-search-unit-key$=":${wantedRole}"][data-chatgpt-search-message-ids]`;
5617
+ return document.querySelectorAll(currentSelector).length;
5557
5618
  }, role);
5558
5619
  }
5559
5620
  return countMessages(await readMessages(page), role);
@@ -7571,6 +7632,13 @@ function normalizePage(pageOrTab) {
7571
7632
  const value = providerValue(primary, property) ?? providerValue(maybe, property);
7572
7633
  if (isProviderRecord(value)) normalized[property] = value;
7573
7634
  }
7635
+ const rawAx = providerValue(maybe, "ax");
7636
+ if (normalized.keyboard === void 0 && isProviderRecord(rawAx)) {
7637
+ const pressKey = providerCallable(rawAx, "pressKey");
7638
+ if (pressKey !== void 0) normalized.keyboard = { press: async (key) => {
7639
+ await pressKey(null, key);
7640
+ } };
7641
+ }
7574
7642
  if (isProviderRecord(embedded)) normalized.playwright = embedded;
7575
7643
  for (const method of [
7576
7644
  "url",
@@ -9190,12 +9258,16 @@ async function tryGeneratedFilePreviewDownload(page, args) {
9190
9258
  const selected = selectGeneratedFileAffordance(candidates, args);
9191
9259
  if (selected === void 0) return void 0;
9192
9260
  try {
9193
- const assistantMessages = requiredLocator(page, cssSelectors.assistantMessages);
9194
- const assistantCount = await locatorCountWithTimeout(
9261
+ let assistantMessages = requiredLocator(page, cssSelectors.assistantMessages);
9262
+ let assistantCount = await locatorCountWithTimeout(
9195
9263
  assistantMessages,
9196
9264
  localGuardTimeout(timeoutMs, 5e3),
9197
9265
  "generated_file_assistant_count_timeout"
9198
9266
  );
9267
+ if (assistantCount === 0) {
9268
+ assistantMessages = requiredLocator(page, cssSelectors.currentAssistantMessages);
9269
+ assistantCount = await locatorCountWithTimeout(assistantMessages, localGuardTimeout(timeoutMs, 5e3), "generated_file_assistant_count_timeout");
9270
+ }
9199
9271
  if (selected.assistantIndex < 0 || selected.assistantIndex >= assistantCount) {
9200
9272
  throw new Error("The selected generated-file assistant turn is no longer present.");
9201
9273
  }
@@ -9223,11 +9295,12 @@ async function tryGeneratedFilePreviewDownload(page, args) {
9223
9295
  }
9224
9296
  await affordance.click({ timeoutMs: localGuardTimeout(timeoutMs, 1e4) });
9225
9297
  const labelledPreview = requiredLocator(page, `section[aria-label="${escapeCssAttribute(selected.filename)}"]`);
9298
+ const currentPreview = page.getByRole?.("tabpanel", { name: selected.filename, exact: true });
9226
9299
  const workbookPreviews = requiredLocator(page, "section[data-testid^='popcorn-']");
9227
9300
  const workbookPreview = typeof workbookPreviews.filter === "function" ? workbookPreviews.filter({ hasText: selected.filename }) : void 0;
9228
9301
  const download = await waitForPreviewDownloadControl(
9229
9302
  page,
9230
- workbookPreview === void 0 ? [labelledPreview] : [labelledPreview, workbookPreview],
9303
+ [...currentPreview === void 0 ? [] : [currentPreview], labelledPreview, ...workbookPreview === void 0 ? [] : [workbookPreview]],
9231
9304
  timeoutMs
9232
9305
  );
9233
9306
  if (download === void 0) {
@@ -9268,17 +9341,20 @@ async function inspectGeneratedFileAffordances(page, timeoutMs) {
9268
9341
  const prefix = downloadLabels.map((label) => label.trim()).filter(Boolean).sort((left, right) => right.length - left.length).find((label) => lowered.startsWith(`${label.toLocaleLowerCase()} `));
9269
9342
  return prefix === void 0 ? trimmed : trimmed.slice(prefix.length).trim();
9270
9343
  };
9271
- const assistants = Array.from(document.querySelectorAll("[data-message-author-role='assistant']"));
9344
+ const legacyAssistants = Array.from(document.querySelectorAll("[data-message-author-role='assistant']"));
9345
+ const assistants = legacyAssistants.length > 0 ? legacyAssistants : Array.from(document.querySelectorAll(
9346
+ 'main [data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]'
9347
+ ));
9272
9348
  return assistants.flatMap(
9273
9349
  (assistant, assistantIndex) => Array.from(assistant.querySelectorAll("button[aria-label], a[download], a[href*='/backend-api/files/']")).filter(visible).map((element) => {
9274
9350
  const controlLabel = (element.getAttribute("aria-label") ?? element.textContent ?? "").trim();
9275
9351
  const text = (element.textContent ?? "").trim();
9276
9352
  return {
9277
9353
  assistantIndex,
9278
- filename: normalizedFilename(controlLabel),
9354
+ filename: controlLabel.startsWith("Open preview of ") ? controlLabel.slice("Open preview of ".length) : normalizedFilename(controlLabel),
9279
9355
  controlLabel,
9280
9356
  tag: element.tagName.toLocaleLowerCase(),
9281
- textFilename: normalizedFilename(text)
9357
+ textFilename: controlLabel.startsWith("Open preview of ") ? element.parentElement?.querySelector("[title]")?.getAttribute("title") ?? "" : normalizedFilename(text)
9282
9358
  };
9283
9359
  }).filter((item) => (item.tag === "button" || item.tag === "a") && fileLike(item.filename) && item.filename === item.textFilename).map(({ assistantIndex: index, filename, controlLabel, tag }) => ({
9284
9360
  assistantIndex: index,
@@ -11152,8 +11228,11 @@ async function readAssistantGenerationState(page, options = {}) {
11152
11228
  const visibleStopButtons = Array.from(document.querySelectorAll("button")).filter((button) => isVisible(button) && button.disabled !== true && button.getAttribute("aria-disabled") !== "true" && isScopedStopControl(button) && matchingLabels2(button, args.send).length === 0 && matchingLabels2(button, args.stop).length > 0);
11153
11229
  const activeSignals = [...new Set(visibleStopButtons.flatMap((button) => matchingLabels2(button, args.stop)))];
11154
11230
  const turns = Array.from(document.querySelectorAll("[data-testid^='conversation-turn']"));
11155
- const latestAssistant = Array.from(document.querySelectorAll("[data-message-author-role='assistant']")).at(-1);
11156
- const latestTurn = latestAssistant?.closest("[data-testid^='conversation-turn']") ?? turns.at(-1);
11231
+ const legacyAssistants = Array.from(document.querySelectorAll("[data-message-author-role='assistant']"));
11232
+ const latestAssistant = (legacyAssistants.length > 0 ? legacyAssistants : Array.from(document.querySelectorAll(
11233
+ 'main [data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]'
11234
+ ))).at(-1);
11235
+ const latestTurn = latestAssistant?.closest("[data-testid^='conversation-turn']") ?? turns.at(-1) ?? (latestAssistant?.hasAttribute?.("data-chatgpt-search-unit-key") === true ? latestAssistant : void 0);
11157
11236
  const stoppedSignals = latestTurn === void 0 ? [] : [...new Set(Array.from(latestTurn.querySelectorAll(
11158
11237
  "button, [role='status'], [aria-label], [title], p, span, div"
11159
11238
  )).filter((element) => isVisible(element)).flatMap((element) => matchingLabels2(element, args.stopped)))];
@@ -11191,7 +11270,17 @@ async function latestAssistantTurnHasResponseActions(page) {
11191
11270
  if (typeof page.evaluate === "function") {
11192
11271
  const scoped = await page.evaluate((phrases) => {
11193
11272
  const turns = Array.from(document.querySelectorAll("[data-testid^='conversation-turn']"));
11194
- if (turns.length === 0) return void 0;
11273
+ if (turns.length === 0) {
11274
+ const latest = Array.from(document.querySelectorAll('main [data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]')).at(-1);
11275
+ if (latest === void 0) return void 0;
11276
+ let owner = latest;
11277
+ for (let depth = 0; owner !== null && depth < 6 && owner.tagName !== "MAIN"; depth += 1, owner = owner.parentElement) {
11278
+ const assistants = Array.from(owner.querySelectorAll('[data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]'));
11279
+ if (owner !== latest && (assistants.length !== 1 || assistants[0] !== latest)) break;
11280
+ if (Array.from(owner.querySelectorAll("button")).some((button) => phrases.some((phrase) => [button.innerText, button.textContent, button.getAttribute("aria-label"), button.getAttribute("title")].some((value) => (value ?? "").trim().toLowerCase() === phrase.trim().toLowerCase())))) return true;
11281
+ }
11282
+ return false;
11283
+ }
11195
11284
  const latestTurn = turns.reverse().find(
11196
11285
  (turn) => turn.querySelector("[data-message-author-role='assistant']") !== null
11197
11286
  );
@@ -11361,11 +11450,15 @@ async function readWaitDomSnapshot(page) {
11361
11450
  void __combinedWaitSnapshot;
11362
11451
  const normalizeWs = (value) => value.replace(/\s+/g, " ").trim();
11363
11452
  const normalizeLower = (value) => (value ?? "").trim().toLowerCase();
11364
- const nodes = Array.from(document.querySelectorAll("[data-message-author-role]"));
11365
- const assistantNodes = nodes.filter((node) => node.getAttribute("data-message-author-role") === "assistant");
11453
+ const legacy = Array.from(document.querySelectorAll("[data-message-author-role]"));
11454
+ const nodes = legacy.length > 0 ? legacy : Array.from(document.querySelectorAll(
11455
+ "main [data-chatgpt-search-unit-key][data-chatgpt-search-message-ids]"
11456
+ )).filter((node) => /:(?:user|assistant)$/.test(node.getAttribute("data-chatgpt-search-unit-key") ?? ""));
11457
+ const assistantNodes = nodes.filter((node) => (node.getAttribute("data-message-author-role") ?? node.getAttribute("data-chatgpt-search-unit-key")?.split(":").at(-1)) === "assistant");
11366
11458
  const latestAssistant = assistantNodes.at(-1);
11367
11459
  const latestAssistantTurnIndex = latestAssistant === void 0 ? void 0 : nodes.indexOf(latestAssistant) + 1;
11368
- const normalizedText = normalizeWs(latestAssistant?.innerText ?? latestAssistant?.textContent ?? "");
11460
+ const content = latestAssistant?.querySelector?.('[data-markdown-text-style="assistant-message"]');
11461
+ const normalizedText = normalizeWs(content?.innerText || content?.textContent || (latestAssistant?.innerText ?? latestAssistant?.textContent ?? "").replace(latestAssistant?.querySelector?.('[data-conversation-role="assistant"]')?.textContent ?? "", ""));
11369
11462
  let hash = 2166136261;
11370
11463
  for (let index = 0; index < normalizedText.length; index += 1) {
11371
11464
  hash ^= normalizedText.charCodeAt(index);
@@ -11403,7 +11496,7 @@ async function readWaitDomSnapshot(page) {
11403
11496
  };
11404
11497
  const visibleStopButtons = Array.from(document.querySelectorAll("button")).filter((button) => isVisible(button) && button.disabled !== true && button.getAttribute("aria-disabled") !== "true" && isScopedStopControl(button) && matchingLabels2(button, args.send).length === 0 && matchingLabels2(button, args.stop).length > 0);
11405
11498
  const activeSignals = [...new Set(visibleStopButtons.flatMap((button) => matchingLabels2(button, args.stop)))];
11406
- const latestAssistantTurn = latestAssistant?.closest("[data-testid^='conversation-turn']") ?? Array.from(document.querySelectorAll("[data-testid^='conversation-turn']")).at(-1);
11499
+ const latestAssistantTurn = latestAssistant?.closest("[data-testid^='conversation-turn']") ?? Array.from(document.querySelectorAll("[data-testid^='conversation-turn']")).at(-1) ?? (latestAssistant?.hasAttribute?.("data-chatgpt-search-unit-key") === true ? latestAssistant : void 0);
11407
11500
  const stoppedSignals = latestAssistantTurn === void 0 ? [] : [...new Set(Array.from(latestAssistantTurn.querySelectorAll(
11408
11501
  "button, [role='status'], [aria-label], [title], p, span, div"
11409
11502
  )).filter((element) => isVisible(element)).flatMap((element) => matchingLabels2(element, args.stopped)))];
@@ -11416,7 +11509,18 @@ async function readWaitDomSnapshot(page) {
11416
11509
  const turns = Array.from(document.querySelectorAll("[data-testid^='conversation-turn']"));
11417
11510
  let hasResponseActions;
11418
11511
  if (turns.length === 0) {
11419
- hasResponseActions = void 0;
11512
+ if (latestAssistant?.hasAttribute?.("data-chatgpt-search-unit-key") === true) {
11513
+ hasResponseActions = false;
11514
+ let owner = latestAssistant;
11515
+ for (let depth = 0; owner !== null && depth < 6 && owner.tagName !== "MAIN"; depth += 1, owner = owner.parentElement) {
11516
+ const assistants = Array.from(owner.querySelectorAll('[data-chatgpt-search-unit-key$=":assistant"][data-chatgpt-search-message-ids]'));
11517
+ if (owner !== latestAssistant && (assistants.length !== 1 || assistants[0] !== latestAssistant)) break;
11518
+ if (Array.from(owner.querySelectorAll("button")).some((button) => args.actions.some((phrase) => [button.getAttribute("aria-label"), button.getAttribute("title"), button.textContent].some((value) => (value ?? "").trim().toLowerCase() === phrase.trim().toLowerCase())))) {
11519
+ hasResponseActions = true;
11520
+ break;
11521
+ }
11522
+ }
11523
+ }
11420
11524
  } else {
11421
11525
  const latestTurn = [...turns].reverse().find(
11422
11526
  (turn) => turn.querySelector("[data-message-author-role='assistant']") !== null
@@ -11541,6 +11645,9 @@ var ProbeTimeoutError = class extends Error {
11541
11645
  };
11542
11646
 
11543
11647
  // src/commands/messages.ts
11648
+ var COMPOSER_SETTLE_TIMEOUT_MS = 2e3;
11649
+ var COMPOSER_SETTLE_INTERVAL_MS = 100;
11650
+ var COMPOSER_SETTLE_ATTEMPTS = 20;
11544
11651
  function isResponseComplete(snapshot2) {
11545
11652
  return snapshot2.latestText.trim().length > 0 && !isTransientAssistantText(snapshot2.latestText) && snapshot2.textStableForMs >= snapshot2.stableMs && snapshot2.generation.observed && !snapshot2.generation.active && !snapshot2.generation.stopped && snapshot2.hasResponseActions;
11546
11653
  }
@@ -11555,9 +11662,9 @@ async function composeMessage(env, args) {
11555
11662
  const text = args.mode === "append" ? `${await readLocatorText(textbox)}${args.text}` : args.text;
11556
11663
  await textbox.click?.();
11557
11664
  await textbox.fill?.(text);
11558
- const actual = normalizeWhitespace(await readLocatorText(textbox));
11559
11665
  const wanted = normalizeWhitespace(text);
11560
- if (actual !== wanted && actual.length > 0) {
11666
+ const actual = await settleComposerText(page, textbox, wanted, args.timeoutMs);
11667
+ if (actual !== wanted) {
11561
11668
  return {
11562
11669
  ok: false,
11563
11670
  status: "error",
@@ -12593,13 +12700,35 @@ function waitTargetReached(args, snapshot2) {
12593
12700
  }
12594
12701
  async function readLocatorText(locator) {
12595
12702
  if (typeof locator.innerText === "function") {
12596
- return locator.innerText().catch(() => "");
12703
+ const text = await locator.innerText().catch(() => "");
12704
+ if (text.length > 0) {
12705
+ return text;
12706
+ }
12707
+ }
12708
+ if (typeof locator.inputValue === "function") {
12709
+ const value = await locator.inputValue().catch(() => "");
12710
+ if (value.length > 0) {
12711
+ return value;
12712
+ }
12597
12713
  }
12598
12714
  if (typeof locator.textContent === "function") {
12599
12715
  return locator.textContent().then((text) => text ?? "").catch(() => "");
12600
12716
  }
12601
12717
  return "";
12602
12718
  }
12719
+ async function settleComposerText(page, textbox, wanted, timeoutMs) {
12720
+ const budgetMs = Math.min(timeoutMs ?? COMPOSER_SETTLE_TIMEOUT_MS, COMPOSER_SETTLE_TIMEOUT_MS);
12721
+ const deadline = Date.now() + budgetMs;
12722
+ let actual = normalizeWhitespace(await readLocatorText(textbox));
12723
+ for (let attempt = 0; attempt < COMPOSER_SETTLE_ATTEMPTS && actual !== wanted; attempt += 1) {
12724
+ if (Date.now() >= deadline) {
12725
+ break;
12726
+ }
12727
+ await sleep2(page, COMPOSER_SETTLE_INTERVAL_MS);
12728
+ actual = normalizeWhitespace(await readLocatorText(textbox));
12729
+ }
12730
+ return actual;
12731
+ }
12603
12732
  async function sleep2(page, ms2) {
12604
12733
  if (typeof page.waitForTimeout === "function") {
12605
12734
  await page.waitForTimeout(ms2);
@@ -13326,7 +13455,7 @@ async function readChatPopover(page) {
13326
13455
  return current2 === null;
13327
13456
  };
13328
13457
  const normalize = (value) => value.replace(/\s+/g, " ").trim();
13329
- const roots = document.querySelectorAll('[data-testid="composer-intelligence-picker-content"]');
13458
+ const roots = Array.from(document.querySelectorAll('[data-testid="composer-intelligence-picker-content"]')).concat(Array.from(document.querySelectorAll("[data-model-picker-view]")));
13330
13459
  if (roots.length > 8) return { acted: false };
13331
13460
  const activeRoots = Array.from(roots).filter((node) => visible(node));
13332
13461
  if (activeRoots.length !== 1) return { acted: false };
@@ -13342,7 +13471,12 @@ async function readChatPopover(page) {
13342
13471
  ancestor = ancestor.parentNode;
13343
13472
  }
13344
13473
  if (menu?.getAttribute("data-state") !== "open" || !visible(menu)) return { acted: false };
13345
- const nodes = [];
13474
+ const currentProfile = root.hasAttribute("data-model-picker-view");
13475
+ if (currentProfile) {
13476
+ const triggers = Array.from(document.querySelectorAll('button[data-codex-intelligence-trigger="true"]')).filter((trigger) => trigger.getAttribute("id") === menu.getAttribute("aria-labelledby") && trigger.getAttribute("aria-haspopup") === "menu" && trigger.getAttribute("aria-expanded") === "true");
13477
+ if (triggers.length !== 1) return { acted: false };
13478
+ }
13479
+ const nodes = [root];
13346
13480
  const text = /* @__PURE__ */ new Map();
13347
13481
  let current = root.firstChild;
13348
13482
  let count = 0;
@@ -13376,25 +13510,28 @@ async function readChatPopover(page) {
13376
13510
  }
13377
13511
  return false;
13378
13512
  };
13379
- const owners = nodes.filter((node) => node.getAttribute("data-has-slider") === "true" && node.getAttribute("data-has-advanced-view") === "true" && node.getAttribute("data-model-selection-view") === "true" && visible(node));
13513
+ const owners = currentProfile ? [root] : nodes.filter((node) => node.getAttribute("data-has-slider") === "true" && node.getAttribute("data-has-advanced-view") === "true" && node.getAttribute("data-model-selection-view") === "true" && visible(node));
13380
13514
  if (owners.length !== 1) return { acted: false };
13381
13515
  const owner = owners[0];
13382
- const view = owner.getAttribute("data-view");
13516
+ const view = owner.getAttribute(currentProfile ? "data-model-picker-view" : "data-view");
13383
13517
  if (view !== "simple" && view !== "advanced") return { acted: false };
13384
- const panels = nodes.filter((node) => node.getAttribute("data-testid") === `composer-model-picker-slider-${view}-view` && within(node, owner) && node.getAttribute("data-active") === "true" && visible(node));
13518
+ const panels = nodes.filter((node) => (currentProfile ? node.parentNode === owner : node.getAttribute("data-testid") === `composer-model-picker-slider-${view}-view` && within(node, owner)) && node.getAttribute("data-active") === "true" && visible(node));
13385
13519
  if (panels.length !== 1) return { acted: false };
13386
13520
  const panel = panels[0];
13387
- const toggles = nodes.filter((node) => node.getAttribute("role") === "menuitem" && node.getAttribute("data-interactive") === "true" && node.getAttribute("aria-expanded") === String(view === "advanced") && within(node, owner) && visible(node));
13521
+ const toggles = nodes.filter((node) => node.getAttribute("role") === "menuitem" && node.getAttribute("data-interactive") === "true" && (currentProfile ? node.getAttribute("data-model-picker-view-toggle") === "true" : node.getAttribute("aria-expanded") === String(view === "advanced")) && within(node, owner) && visible(node));
13388
13522
  if (toggles.length > 1 || view === "simple" && toggles.length !== 1) return { acted: false };
13389
13523
  const modelNodes = view === "advanced" ? nodes.filter((node) => within(node, panel) && node.getAttribute("role") === "menuitemradio" && visible(node)) : [];
13390
13524
  if (modelNodes.length > 32) return { acted: false };
13391
13525
  const modelLabel = (node) => {
13392
- const primary = nodes.filter((child) => within(child, node) && (child.getAttribute("class") ?? "").split(/\s+/).includes("truncate"));
13526
+ const primary = nodes.filter((child) => {
13527
+ const classes = (child.getAttribute("class") ?? "").split(/\s+/);
13528
+ return within(child, node) && classes.includes("truncate") && !classes.includes("text-xs");
13529
+ });
13393
13530
  return normalize(primary.length === 1 ? text.get(primary[0]) ?? "" : text.get(node) ?? "");
13394
13531
  };
13395
13532
  const snapshot2 = {
13396
13533
  view,
13397
- rootIndex: Array.from(roots).indexOf(root),
13534
+ rootIndex: currentProfile ? Array.from(document.querySelectorAll("[data-model-picker-view]")).indexOf(root) : Array.from(document.querySelectorAll('[data-testid="composer-intelligence-picker-content"]')).indexOf(root),
13398
13535
  toggleIndex: nodes.filter((node) => node.getAttribute("role") === "menuitem" && node.getAttribute("data-interactive") === "true").indexOf(toggles[0]),
13399
13536
  modelOptions: modelNodes.map((node) => ({
13400
13537
  label: modelLabel(node),
@@ -13402,6 +13539,7 @@ async function readChatPopover(page) {
13402
13539
  index: nodes.filter((row) => within(row, panel) && row.getAttribute("role") === "menuitemradio").indexOf(node)
13403
13540
  })).filter((option) => option.label.length > 0)
13404
13541
  };
13542
+ if (currentProfile) snapshot2.profile = "model_picker_v2";
13405
13543
  const triggerId = menu.getAttribute("aria-labelledby");
13406
13544
  if (triggerId !== null && triggerId.length > 0 && triggerId.length < 240 && !/\s/.test(triggerId)) snapshot2.triggerId = triggerId;
13407
13545
  const checked = snapshot2.modelOptions.filter((option) => option.checked);
@@ -13420,7 +13558,7 @@ async function readChatPopover(page) {
13420
13558
  if (sliders.length === 1) {
13421
13559
  const slider = sliders[0];
13422
13560
  const powers = nodes.filter((node) => within(slider, node) && within(node, panel) && node.getAttribute("role") === "menuitem" && visible(node) && config.powerLabels.some((label) => normalize(node.getAttribute("aria-label") ?? "").toLocaleLowerCase() === label.toLocaleLowerCase()));
13423
- const sliderOwners = nodes.filter((node) => within(slider, node) && within(node, panel) && node.hasAttribute("data-model-reasoning-effort-slider"));
13561
+ const sliderOwners = nodes.filter((node) => within(slider, node) && within(node, panel) && node.hasAttribute(currentProfile ? "data-model-picker-power-slider" : "data-model-reasoning-effort-slider"));
13424
13562
  const integer = (name) => {
13425
13563
  const raw = slider.getAttribute(name);
13426
13564
  return raw !== null && /^-?\d+$/.test(raw) && Number.isSafeInteger(Number(raw)) ? Number(raw) : void 0;
@@ -13449,11 +13587,46 @@ async function readChatPopover(page) {
13449
13587
  return observation !== void 0 && observation !== null && typeof observation.acted === "boolean" ? observation : { acted: false };
13450
13588
  }
13451
13589
  function observedRoot(page, snapshot2) {
13452
- const roots = page.locator?.('[data-testid="composer-intelligence-picker-content"]');
13590
+ const roots = page.locator?.(snapshot2.profile === "model_picker_v2" ? "[data-model-picker-view]" : '[data-testid="composer-intelligence-picker-content"]');
13453
13591
  return roots?.nth?.(snapshot2.rootIndex) ?? (snapshot2.rootIndex === 0 ? roots : void 0);
13454
13592
  }
13593
+ async function openChatPopover(page) {
13594
+ if ((await readChatPopover(page)).snapshot !== void 0) return true;
13595
+ let trigger = page.locator?.('button[data-codex-intelligence-trigger="true"][aria-haspopup="menu"]');
13596
+ let count = await trigger?.count?.().catch(() => 0) ?? 0;
13597
+ if (count === 0) return void 0;
13598
+ if (count > 1 && count <= 8 && typeof trigger?.filter === "function") {
13599
+ trigger = trigger.filter({ visible: true });
13600
+ count = await trigger.count?.().catch(() => 0) ?? 0;
13601
+ }
13602
+ if (count !== 1) return false;
13603
+ if (trigger?.click === void 0 || trigger.evaluate === void 0) return void 0;
13604
+ const actionable = await trigger.evaluate((element) => {
13605
+ if (element.tagName !== "BUTTON" || element.getAttribute("data-codex-intelligence-trigger") !== "true" || element.getAttribute("aria-haspopup") !== "menu") return void 0;
13606
+ let current = element;
13607
+ for (let depth = 0; current !== null && depth < 64; depth += 1) {
13608
+ if (current.nodeType !== 1) break;
13609
+ const node = current;
13610
+ if (node.hidden || node.hasAttribute("hidden") || node.hasAttribute("inert") || node.disabled || node.getAttribute("aria-hidden") === "true" || node.getAttribute("aria-disabled") === "true") return false;
13611
+ const style = window.getComputedStyle(node);
13612
+ if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" || current === element && style.pointerEvents === "none") return false;
13613
+ current = current.parentNode;
13614
+ }
13615
+ if (current?.nodeType === 1) return false;
13616
+ const rect = element.getBoundingClientRect();
13617
+ return rect.width > 0 && rect.height > 0 && element.getAttribute("aria-expanded") === "false";
13618
+ }).catch(() => void 0);
13619
+ if (actionable === void 0) return void 0;
13620
+ if (!actionable) return false;
13621
+ await trigger.click();
13622
+ for (let attempt = 0; attempt < 5; attempt += 1) {
13623
+ await waitForPopoverTransition(page, 100);
13624
+ if ((await readChatPopover(page)).snapshot !== void 0) return true;
13625
+ }
13626
+ return false;
13627
+ }
13455
13628
  async function clickObservedControl(page, snapshot2, modelIndex) {
13456
- const selector = modelIndex === void 0 ? '[role="menuitem"][data-interactive="true"]' : '[data-testid="composer-model-picker-slider-advanced-view"][data-active="true"] [role="menuitemradio"]';
13629
+ const selector = modelIndex === void 0 ? '[role="menuitem"][data-interactive="true"]' : snapshot2.profile === "model_picker_v2" ? ':scope > [data-active="true"] [role="menuitemradio"]' : '[data-testid="composer-model-picker-slider-advanced-view"][data-active="true"] [role="menuitemradio"]';
13457
13630
  const candidates = observedRoot(page, snapshot2)?.locator?.(selector);
13458
13631
  const index = modelIndex ?? snapshot2.toggleIndex;
13459
13632
  const target = candidates?.nth?.(index) ?? (index === 0 ? candidates : void 0);
@@ -13467,7 +13640,7 @@ async function clickObservedControl(page, snapshot2, modelIndex) {
13467
13640
  if (node.hidden || node.hasAttribute("hidden") || node.hasAttribute("inert") || node.getAttribute("aria-hidden") === "true" || node.getAttribute("aria-disabled") === "true" || node.getAttribute("data-active") === "false") return void 0;
13468
13641
  const style = window.getComputedStyle(node);
13469
13642
  if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" || style.pointerEvents === "none") return void 0;
13470
- if (node.getAttribute("data-testid") === "composer-intelligence-picker-content") owned = true;
13643
+ if (node.getAttribute("data-testid") === "composer-intelligence-picker-content" || node.getAttribute("data-model-picker-view") === "simple" || node.getAttribute("data-model-picker-view") === "advanced") owned = true;
13471
13644
  current = current.parentNode;
13472
13645
  }
13473
13646
  const rect = element.getBoundingClientRect();
@@ -13483,7 +13656,8 @@ async function clickObservedControl(page, snapshot2, modelIndex) {
13483
13656
  if (label.length > 512) return void 0;
13484
13657
  let parent = child.parentNode;
13485
13658
  for (let depth = 0; parent !== null && parent !== element && depth < 64; depth += 1) {
13486
- if (parent.nodeType === 1 && (parent.getAttribute("class") ?? "").split(/\s+/).includes("truncate")) {
13659
+ const classes = parent.nodeType === 1 ? (parent.getAttribute("class") ?? "").split(/\s+/) : [];
13660
+ if (classes.includes("truncate") && !classes.includes("text-xs")) {
13487
13661
  primary.set(parent, (primary.get(parent) ?? "") + (child.nodeValue ?? ""));
13488
13662
  }
13489
13663
  parent = parent.parentNode;
@@ -13497,9 +13671,9 @@ async function clickObservedControl(page, snapshot2, modelIndex) {
13497
13671
  if (child === element || child === null) break;
13498
13672
  child = child.nextSibling;
13499
13673
  }
13500
- return { role: element.getAttribute("role"), expanded: element.getAttribute("aria-expanded"), label: (primary.size === 1 ? [...primary.values()][0] : label).replace(/\s+/g, " ").trim() };
13674
+ return { role: element.getAttribute("role"), expanded: element.getAttribute("aria-expanded"), viewToggle: element.getAttribute("data-model-picker-view-toggle"), label: (primary.size === 1 ? [...primary.values()][0] : label).replace(/\s+/g, " ").trim() };
13501
13675
  }).catch(() => void 0);
13502
- if (state === void 0 || state.role !== (modelIndex === void 0 ? "menuitem" : "menuitemradio") || modelIndex === void 0 && state.expanded !== String(snapshot2.view === "advanced")) return false;
13676
+ if (state === void 0 || state.role !== (modelIndex === void 0 ? "menuitem" : "menuitemradio") || modelIndex === void 0 && (snapshot2.profile === "model_picker_v2" ? state.viewToggle !== "true" : state.expanded !== String(snapshot2.view === "advanced"))) return false;
13503
13677
  const expectedModel = snapshot2.modelOptions.find((option) => option.index === modelIndex);
13504
13678
  if (modelIndex !== void 0 && (expectedModel === void 0 || state.label !== expectedModel.label)) return false;
13505
13679
  await target.click();
@@ -13510,9 +13684,9 @@ async function closeChatPopover(page, before) {
13510
13684
  if (snapshot2 === void 0) return false;
13511
13685
  const escapedId = snapshot2.triggerId?.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
13512
13686
  const menu = escapedId === void 0 ? void 0 : page.locator?.(`[role="menu"][aria-labelledby="${escapedId}"]`);
13513
- if (menu?.press !== void 0 && await menu.count?.() === 1) await menu.press("Escape");
13514
- else if (page.keyboard?.press !== void 0) await page.keyboard.press("Escape");
13687
+ if (page.keyboard?.press !== void 0) await page.keyboard.press("Escape");
13515
13688
  else if (page.cua?.keypress !== void 0) await page.cua.keypress({ keys: ["ESC"] });
13689
+ else if (menu?.press !== void 0 && await menu.count?.() === 1) await menu.press("Escape");
13516
13690
  else return false;
13517
13691
  for (let attempt = 0; attempt < 5; attempt += 1) {
13518
13692
  await waitForPopoverTransition(page, 100);
@@ -13527,6 +13701,7 @@ async function waitForPopoverTransition(page, milliseconds) {
13527
13701
  async function reopenChatPopover(page, before) {
13528
13702
  if (before.triggerId === void 0) return void 0;
13529
13703
  if (!await closeChatPopover(page, before)) return void 0;
13704
+ if (before.profile === "model_picker_v2") await waitForPopoverTransition(page, 250);
13530
13705
  const trigger = page.locator?.(`[id="${before.triggerId.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"]`);
13531
13706
  if (trigger?.click === void 0 || trigger.evaluate === void 0 || await trigger.count?.() !== 1) return void 0;
13532
13707
  const isVisible = () => trigger.evaluate((element) => {
@@ -13623,7 +13798,7 @@ async function selectChatPopoverEffort(page, labels) {
13623
13798
  return void 0;
13624
13799
  }
13625
13800
  if (before.slider.current === target) return before;
13626
- const candidates = observedRoot(page, before)?.locator?.('[data-testid="composer-model-picker-slider-simple-view"][data-active="true"] [role="slider"]');
13801
+ const candidates = observedRoot(page, before)?.locator?.(before.profile === "model_picker_v2" ? ':scope > [data-active="true"] [role="slider"]' : '[data-testid="composer-model-picker-slider-simple-view"][data-active="true"] [role="slider"]');
13627
13802
  const locator = candidates?.nth?.(before.slider.index) ?? (before.slider.index === 0 ? candidates : void 0);
13628
13803
  if (locator?.press === void 0 || locator.evaluate === void 0 || await locator.count?.() !== 1) return void 0;
13629
13804
  const locatorState = await locator.evaluate((element) => {
@@ -13637,6 +13812,12 @@ async function selectChatPopoverEffort(page, labels) {
13637
13812
  if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" || style.pointerEvents === "none") return void 0;
13638
13813
  if (node.getAttribute("data-testid") === "composer-model-picker-slider-simple-view" && node.getAttribute("data-active") === "true") panel = true;
13639
13814
  if (node.getAttribute("data-testid") === "composer-intelligence-picker-content") owned = true;
13815
+ if (node.getAttribute("data-model-picker-view") === "simple") {
13816
+ owned = true;
13817
+ let track = element;
13818
+ while (track !== null && track.parentNode !== node) track = track.parentNode;
13819
+ if (track?.nodeType === 1 && track.getAttribute("data-active") === "true") panel = true;
13820
+ }
13640
13821
  current = current.parentNode;
13641
13822
  }
13642
13823
  const rect = element.getBoundingClientRect();
@@ -13683,7 +13864,10 @@ async function selectChatPopoverSpeed(page, labels) {
13683
13864
  const initial = (await readChatPopover(page)).snapshot;
13684
13865
  if (initial === void 0) return void 0;
13685
13866
  try {
13686
- const simple = await setChatPopoverView(page, "simple");
13867
+ const opened = await setChatPopoverView(page, "simple");
13868
+ if (opened?.speed === void 0 || opened.speedIndex === void 0) return void 0;
13869
+ await waitForPopoverTransition(page, 200);
13870
+ const simple = (await readChatPopover(page)).snapshot;
13687
13871
  if (simple?.speed === void 0 || simple.speedIndex === void 0) return void 0;
13688
13872
  const desired = ["Standard", "Fast"].filter((value) => labels.some((label) => normalizeForLabelMatch(label) === normalizeForLabelMatch(value)));
13689
13873
  if (desired.length !== 1) return void 0;
@@ -13691,7 +13875,7 @@ async function selectChatPopoverSpeed(page, labels) {
13691
13875
  const candidates = observedRoot(page, simple)?.locator?.('[role="menuitemcheckbox"][data-fast-mode-enabled]');
13692
13876
  const locator = candidates?.nth?.(simple.speedIndex) ?? (simple.speedIndex === 0 ? candidates : void 0);
13693
13877
  if (locator?.click === void 0 || locator.evaluate === void 0 || await locator.count?.() !== 1) return void 0;
13694
- const state = await locator.evaluate((element) => {
13878
+ const readActionableState = () => locator.evaluate((element) => {
13695
13879
  let current = element;
13696
13880
  let owned = false, simple2 = false, open7 = false;
13697
13881
  for (let depth = 0; current !== null && depth < 64; depth += 1) {
@@ -13700,7 +13884,10 @@ async function selectChatPopoverSpeed(page, labels) {
13700
13884
  if (node.hidden || node.hasAttribute("hidden") || node.hasAttribute("inert") || node.getAttribute("aria-hidden") === "true" || node.getAttribute("aria-disabled") === "true" || node.getAttribute("data-active") === "false" || node.getAttribute("data-locked") === "true") return void 0;
13701
13885
  const style = window.getComputedStyle(node);
13702
13886
  if (style.display === "none" || style.visibility === "hidden" || style.opacity === "0" || style.pointerEvents === "none") return void 0;
13703
- if (node.getAttribute("role") === "menu" && node.getAttribute("data-state") === "open") open7 = true;
13887
+ if (node.getAttribute("role") === "menu" && node.getAttribute("data-state") === "open") {
13888
+ open7 = true;
13889
+ if (style.opacity !== "1") return void 0;
13890
+ }
13704
13891
  if (node.getAttribute("data-testid") === "composer-intelligence-picker-content") owned = true;
13705
13892
  if (node.getAttribute("data-view") === "simple" && node.getAttribute("data-model-selection-view") === "true") simple2 = true;
13706
13893
  current = current.parentNode;
@@ -13708,13 +13895,22 @@ async function selectChatPopoverSpeed(page, labels) {
13708
13895
  const rect = element.getBoundingClientRect();
13709
13896
  if (current?.nodeType === 1 || !owned || !simple2 || !open7 || rect.width <= 0 || rect.height <= 0 || element.getAttribute("role") !== "menuitemcheckbox" || element.getAttribute("data-visible") !== "true") return void 0;
13710
13897
  const checked = element.getAttribute("aria-checked");
13711
- return element.getAttribute("data-fast-mode-enabled") === checked ? checked : void 0;
13898
+ return element.getAttribute("data-fast-mode-enabled") === checked ? checked ?? void 0 : void 0;
13712
13899
  }).catch(() => void 0);
13900
+ let state;
13901
+ for (let attempt = 0; attempt < 8; attempt += 1) {
13902
+ state = await readActionableState();
13903
+ if (state === String(simple.speed === "Fast")) break;
13904
+ if (attempt + 1 < 8) await waitForPopoverTransition(page, 100);
13905
+ }
13713
13906
  if (state !== String(simple.speed === "Fast")) return void 0;
13714
13907
  await locator.click();
13715
- await waitForPopoverTransition(page, 150);
13716
- const after = (await readChatPopover(page)).snapshot;
13717
- return after !== void 0 && after.speed === desired[0] ? after.speed : void 0;
13908
+ for (let attempt = 0; attempt < 6; attempt += 1) {
13909
+ await waitForPopoverTransition(page, attempt === 0 ? 150 : 100);
13910
+ const after = (await readChatPopover(page)).snapshot;
13911
+ if (after?.speed === desired[0]) return desired[0];
13912
+ }
13913
+ return void 0;
13718
13914
  } finally {
13719
13915
  await setChatPopoverView(page, initial.view);
13720
13916
  }
@@ -13962,7 +14158,8 @@ async function getMode(env, args = {}) {
13962
14158
  }
13963
14159
  const page = env.page;
13964
14160
  try {
13965
- const modes = await visibleModeButtonLabelList(page);
14161
+ const popover = (await readChatPopover(page)).snapshot;
14162
+ const modes = popover?.effort === void 0 ? await visibleModeButtonLabelList(page) : [popover.effort];
13966
14163
  const warnings = modes.length === 0 ? ["No mode-labelled composer control is currently visible, so the active ChatGPT mode could not be read."] : [];
13967
14164
  return resultOk({ modes }, await contextFromPage(page), warnings);
13968
14165
  } catch (error) {
@@ -14049,6 +14246,8 @@ async function clickFirstUniqueButton(page, labels) {
14049
14246
  return false;
14050
14247
  }
14051
14248
  async function clickModeOpener(page, modeButtons) {
14249
+ const currentPicker = await openChatPopover(page);
14250
+ if (currentPicker !== void 0) return currentPicker;
14052
14251
  if (await clickFirstUniqueButton(page, modeButtons)) {
14053
14252
  return true;
14054
14253
  }
@@ -14724,13 +14923,16 @@ function detectExperienceFromSnapshot(snapshot2) {
14724
14923
  if (workConfigurationOpener) {
14725
14924
  evidence.push({ source: "control", label: "Work configuration opener" });
14726
14925
  }
14926
+ if (snapshot2.workPopoverOpen === true) {
14927
+ evidence.push({ source: "control", label: "Work configuration popover" });
14928
+ }
14727
14929
  if (/\/work(?:\/|$|\?)/.test(url)) {
14728
14930
  evidence.push({ source: "url", label: snapshot2.url });
14729
14931
  }
14730
14932
  if (containsAny(mainText, ["work on something else", "work on anything"])) {
14731
14933
  evidence.push({ source: "heading", label: "Work composer copy" });
14732
14934
  }
14733
- const workScore = workComposer.length * 4 + (workSurfaceSelected ? 10 : 0) + (workAxes ? 6 : 0) + (workConfigurationOpener ? 6 : 0) + (/\/work(?:\/|$|\?)/.test(url) ? 3 : 0) + (containsAny(mainText, ["work on something else", "work on anything"]) ? 2 : 0);
14935
+ const workScore = workComposer.length * 4 + (workSurfaceSelected ? 10 : 0) + (workAxes ? 6 : 0) + (workConfigurationOpener ? 6 : 0) + (snapshot2.workPopoverOpen === true ? 10 : 0) + (/\/work(?:\/|$|\?)/.test(url) ? 3 : 0) + (containsAny(mainText, ["work on something else", "work on anything"]) ? 2 : 0);
14734
14936
  const chatScore = chatComposer.length * 4 + (chatSurfaceSelected ? 10 : 0);
14735
14937
  let experience = "unknown";
14736
14938
  let confidence = "low";
@@ -14773,8 +14975,13 @@ async function readSurfaceSnapshot(page) {
14773
14975
  };
14774
14976
  const normalize = (value) => value.replace(/\s+/g, " ").trim();
14775
14977
  const normalizeComparable = (value) => normalize(value).toLocaleLowerCase();
14776
- const wantedSurfaceLabels = new Set(surfaceOptionLabels.map(normalizeComparable));
14777
- const composerRoots = Array.from(document.querySelectorAll(
14978
+ const chatSurfaceLabels = new Set(surfaceOptionLabels.chat.map(normalizeComparable));
14979
+ const workSurfaceLabels = new Set(surfaceOptionLabels.work.map(normalizeComparable));
14980
+ const wantedSurfaceLabels = /* @__PURE__ */ new Set([...chatSurfaceLabels, ...workSurfaceLabels]);
14981
+ const currentComposerRoots = Array.from(document.querySelectorAll(
14982
+ 'main form[data-thread-find-composer="true"]'
14983
+ )).filter(visible);
14984
+ const composerRoots = currentComposerRoots.length > 0 ? currentComposerRoots : Array.from(document.querySelectorAll(
14778
14985
  "main form, main [data-testid*='composer' i], main [class*='composer' i]"
14779
14986
  )).filter(visible);
14780
14987
  const main = document.querySelector("main");
@@ -14821,14 +15028,33 @@ async function readSurfaceSnapshot(page) {
14821
15028
  "h1, h2, h3, form, [data-testid*='composer' i], [class*='composer' i]"
14822
15029
  )).filter(visible).slice(0, 32);
14823
15030
  const mainText = normalize(surfaceTextNodes.map(labelFor).join(" ")).slice(0, 2e3);
14824
- const selectedSurfaceLabels = Array.from(new Set(Array.from(document.querySelectorAll(
15031
+ const selectedRadioLabels = Array.from(document.querySelectorAll(
14825
15032
  "[role='radio'][aria-checked='true'], [role='radio'][data-state='checked'], input[type='radio']:checked"
14826
- )).filter(visible).map(labelFor).map(normalize).filter((label) => wantedSurfaceLabels.has(normalizeComparable(label))))).slice(0, 4);
14827
- return { composerLabels, mainControls, composerControls, controlGroups, mainText, selectedSurfaceLabels };
14828
- }, [
14829
- ...localeLabels.experienceOptions.chat,
14830
- ...localeLabels.experienceOptions.work
14831
- ]).catch(() => ({ composerLabels: [], mainControls: [], mainText: "", selectedSurfaceLabels: [] }));
15033
+ )).filter(visible).map(labelFor).map(normalize).filter((label) => wantedSurfaceLabels.has(normalizeComparable(label)));
15034
+ const pressedGroups = Array.from(document.querySelectorAll("main [role='group']")).filter(visible).filter((group) => {
15035
+ let ancestor = group;
15036
+ for (let depth = 0; ancestor !== null && depth < 64; depth += 1) {
15037
+ if (ancestor.hasAttribute("data-message-author-role") || ancestor.tagName === "ARTICLE" || ["dialog", "menu", "listbox"].includes(ancestor.getAttribute("role") ?? "")) return false;
15038
+ ancestor = ancestor.parentElement;
15039
+ }
15040
+ return ancestor === null;
15041
+ }).map((group) => Array.from(group.querySelectorAll("button[aria-pressed]")).filter((button) => button.parentElement === group && visible(button) && button.getAttribute("disabled") === null && button.getAttribute("aria-disabled") !== "true")).filter((buttons) => buttons.length === 2 && new Set(buttons.map((button) => normalizeComparable(labelFor(button)))).size === 2 && buttons.every((button) => wantedSurfaceLabels.has(normalizeComparable(labelFor(button))) && ["true", "false"].includes(button.getAttribute("aria-pressed") ?? "")) && buttons.filter((button) => chatSurfaceLabels.has(normalizeComparable(labelFor(button)))).length === 1 && buttons.filter((button) => workSurfaceLabels.has(normalizeComparable(labelFor(button)))).length === 1 && buttons.filter((button) => button.getAttribute("aria-pressed") === "true").length === 1);
15042
+ const selectedButtonLabels = pressedGroups.length === 1 ? pressedGroups[0].filter((button) => button.getAttribute("aria-pressed") === "true").map(labelFor).map(normalize) : [];
15043
+ const selectedSurfaceLabels = Array.from(/* @__PURE__ */ new Set([...selectedRadioLabels, ...selectedButtonLabels])).slice(0, 4);
15044
+ const workPopoverOpen = Array.from(document.querySelectorAll(
15045
+ '[data-testid="composer-intelligence-picker-content"]'
15046
+ )).filter(visible).some((root) => {
15047
+ const speed = Array.from(root.querySelectorAll(
15048
+ '[role="menuitemcheckbox"][data-fast-mode-enabled]'
15049
+ )).filter(visible);
15050
+ const sliders = Array.from(root.querySelectorAll('[role="slider"]'));
15051
+ return speed.length === 1 && sliders.length === 1;
15052
+ });
15053
+ return { composerLabels, mainControls, composerControls, controlGroups, mainText, selectedSurfaceLabels, workPopoverOpen };
15054
+ }, {
15055
+ chat: localeLabels.experienceOptions.chat,
15056
+ work: localeLabels.experienceOptions.work
15057
+ }).catch(() => ({ composerLabels: [], mainControls: [], mainText: "", selectedSurfaceLabels: [] }));
14832
15058
  return { url, ...snapshot2 };
14833
15059
  }
14834
15060
  function profileFromSnapshot(snapshot2, experience) {
@@ -14969,14 +15195,30 @@ async function inspectConfiguration(env, args = {}) {
14969
15195
  }
14970
15196
  const page = env.page;
14971
15197
  try {
14972
- const detected = await detectExperience(
15198
+ let detected = await detectExperience(
14973
15199
  env,
14974
15200
  args.timeoutMs === void 0 ? {} : { timeoutMs: args.timeoutMs }
14975
15201
  );
14976
15202
  if (!detected.ok || detected.data === void 0) {
14977
15203
  return forwardFailure2(detected);
14978
15204
  }
14979
- if (args.experience !== void 0 && detected.data.experience !== args.experience) {
15205
+ let detectedData = detected.data;
15206
+ if (args.experience !== void 0 && detectedData.experience !== args.experience) {
15207
+ const retryMs = Math.min(
15208
+ args.timeoutMs ?? CONFIGURATION_CONTROL_DISCOVERY_TIMEOUT_MS,
15209
+ CONFIGURATION_CONTROL_DISCOVERY_TIMEOUT_MS
15210
+ );
15211
+ const attempts = Math.max(1, Math.ceil(Math.max(0, retryMs) / CONFIGURATION_CONTROL_POLL_MS));
15212
+ for (let attempt = 1; attempt < attempts; attempt += 1) {
15213
+ await page.waitForTimeout?.(CONFIGURATION_CONTROL_POLL_MS);
15214
+ const retried = await detectExperience(env, { timeoutMs: 0 });
15215
+ if (!retried.ok || retried.data === void 0) return forwardFailure2(retried);
15216
+ detected = retried;
15217
+ detectedData = retried.data;
15218
+ if (detectedData.experience === args.experience) break;
15219
+ }
15220
+ }
15221
+ if (args.experience !== void 0 && detectedData.experience !== args.experience) {
14980
15222
  return {
14981
15223
  ok: false,
14982
15224
  status: "unsupported",
@@ -14985,16 +15227,16 @@ async function inspectConfiguration(env, args = {}) {
14985
15227
  kind: "selector_drift",
14986
15228
  code: "experience_mismatch",
14987
15229
  fieldPath: "experience",
14988
- message: `Configuration inspection expected ${args.experience}, but the visible composer is ${detected.data.experience}. Call experience.open first or omit the expected experience.`,
15230
+ message: `Configuration inspection expected ${args.experience}, but the visible composer is ${detectedData.experience}. Call experience.open first or omit the expected experience.`,
14989
15231
  resumable: true
14990
15232
  },
14991
15233
  context: await contextFromPage(page, {
14992
- experience: detected.data.experience,
14993
- selectorProfile: detected.data.selectorProfile
15234
+ experience: detectedData.experience,
15235
+ selectorProfile: detectedData.selectorProfile
14994
15236
  })
14995
15237
  };
14996
15238
  }
14997
- const experience = detected.data.experience;
15239
+ const experience = detectedData.experience;
14998
15240
  const initialChatPopover = experience !== "unknown" ? (await readChatPopover(page)).snapshot : void 0;
14999
15241
  const initialPanel = await readConfigurationPanel(page);
15000
15242
  const rootOpened = experience !== "unknown" && await waitForConfigurationRoot(
@@ -15002,13 +15244,11 @@ async function inspectConfiguration(env, args = {}) {
15002
15244
  experience,
15003
15245
  args.timeoutMs
15004
15246
  );
15005
- if (rootOpened) {
15006
- await page.waitForTimeout?.(150);
15007
- }
15008
- if (experience !== "unknown" && (await readChatPopover(page)).snapshot !== void 0) {
15247
+ const openedPopover = rootOpened ? await waitForObservedChatPopover(page) : void 0;
15248
+ if (experience !== "unknown" && openedPopover !== void 0) {
15009
15249
  try {
15010
15250
  const chat = await inspectChatPopover(page);
15011
- const data2 = configurationInspectionFromPopover(experience, detected.data.evidence, chat);
15251
+ const data2 = configurationInspectionFromPopover(experience, detectedData.evidence, chat);
15012
15252
  if (args.includeOptions === false) data2.options = {};
15013
15253
  return resultOk(
15014
15254
  data2,
@@ -15030,8 +15270,8 @@ async function inspectConfiguration(env, args = {}) {
15030
15270
  const rootItems = rootOpened ? await enumerateVisibleMenuItems(page) : [];
15031
15271
  const data = configurationInspectionFromSurface(
15032
15272
  experience,
15033
- detected.data.selectorProfile,
15034
- detected.data.evidence,
15273
+ detectedData.selectorProfile,
15274
+ detectedData.evidence,
15035
15275
  panel,
15036
15276
  rootItems
15037
15277
  );
@@ -15155,7 +15395,11 @@ async function applyConfiguration(env, args) {
15155
15395
  }
15156
15396
  const selected = [];
15157
15397
  for (const [axis, requested] of selectionEntries(desired)) {
15158
- const currentResult = selected.length === 0 ? beforeResult : await inspectConfiguration(env, { includeOptions: false });
15398
+ const currentResult = selected.length === 0 ? beforeResult : await inspectConfiguration(env, {
15399
+ experience: before.experience,
15400
+ includeOptions: false,
15401
+ ...args.timeoutMs === void 0 ? {} : { timeoutMs: args.timeoutMs }
15402
+ });
15159
15403
  if (!currentResult.ok || currentResult.data === void 0) return forwardFailure2(currentResult);
15160
15404
  const current = currentResult.data;
15161
15405
  if (current.experience !== before.experience) return configurationFailure(page, before, desired, selected, "The composer experience changed during configuration selection.", "experience_mismatch");
@@ -15236,7 +15480,7 @@ function configurationInspectionFromSurface(experience, detectedProfile, evidenc
15236
15480
  const modelRows = menuItems.filter((item) => item.role === "menuitemradio" && item.hasPopup !== true && (/^(?:gpt[\s-]|o\d+(?:\b|$)|\d+(?:\.\d+)?$)/i.test(item.label) || localeLabels.modeOptions.latest.some((label) => visibleLabelMatches(item.label, label))));
15237
15481
  const chatOptions = menuItems.filter((item) => !isConfigurationAxisRow(item.label) && !modelRows.includes(item) && item.hasPopup !== true && !/^gpt[\s-]/i.test(item.label) && item.ariaLabel !== "Select model").map(menuItemToOption);
15238
15482
  const selectedEffort = chatOptions.filter((option) => option.selected === true);
15239
- const openerValue = panel.openerValue ?? panel.openerLabel;
15483
+ const openerValue = chatOpenerEffortValue(panel.openerValue ?? panel.openerLabel);
15240
15484
  if (chatOptions.length > 0 || openerValue !== void 0) availableAxes.push(axis);
15241
15485
  if (selectedEffort.length === 1) active[axis] = selectedEffort[0].label;
15242
15486
  else if (openerValue !== void 0 && !isConfigurationAxisRow(openerValue) && !/^(?:thinking effort|select model|power)$/i.test(openerValue)) active[axis] = openerValue;
@@ -15259,6 +15503,24 @@ function configurationInspectionFromSurface(experience, detectedProfile, evidenc
15259
15503
  evidence
15260
15504
  };
15261
15505
  }
15506
+ function chatOpenerEffortValue(value) {
15507
+ if (value === void 0) return void 0;
15508
+ const combined = /^(?:gpt[-\s]*)?[\p{N}]+(?:[.,][\p{N}]+)?\s+(.+)$/u.exec(value.trim());
15509
+ if (combined === null) return value;
15510
+ const effort = combined[1]?.trim();
15511
+ if (effort === void 0 || effort.length === 0) return void 0;
15512
+ const labels = [
15513
+ ...localeLabels.configurationOptions.instant,
15514
+ ...localeLabels.configurationOptions.light,
15515
+ ...localeLabels.configurationOptions.medium,
15516
+ ...localeLabels.configurationOptions.high,
15517
+ ...localeLabels.configurationOptions.extraHigh,
15518
+ ...localeLabels.configurationOptions.max,
15519
+ ...localeLabels.configurationOptions.ultra,
15520
+ ...localeLabels.configurationOptions.pro
15521
+ ];
15522
+ return labels.some((label) => normalizeForLabelMatch(label) === normalizeForLabelMatch(effort)) ? effort : void 0;
15523
+ }
15262
15524
  async function inspectWorkAxisOptions(env, axis) {
15263
15525
  const page = env.page;
15264
15526
  const options = (await openWorkAxisOptions(env, axis)).map(menuItemToOption);
@@ -15272,12 +15534,24 @@ async function selectWorkAxis(env, axis, requested, timeoutMs) {
15272
15534
  }
15273
15535
  const initialPopover = (await readChatPopover(page)).snapshot;
15274
15536
  await openConfigurationRoot(page, "work");
15275
- if ((await readChatPopover(page)).snapshot !== void 0) {
15537
+ if (await waitForObservedChatPopover(page) !== void 0) {
15276
15538
  try {
15277
15539
  const labels = configurationSemanticLabels(requested);
15278
15540
  if (axis === "model") return await selectChatPopoverModel(page, labels);
15279
15541
  if (axis === "effort") return await selectChatPopoverEffort(page, labels);
15280
- if (axis === "speed") return await selectChatPopoverSpeed(page, labels);
15542
+ if (axis === "speed") {
15543
+ for (let attempt = 0; attempt < 3; attempt += 1) {
15544
+ const selected = await selectChatPopoverSpeed(page, labels);
15545
+ if (selected !== void 0) return selected;
15546
+ if (attempt + 1 < 3) {
15547
+ await closeConfigurationMenus(page);
15548
+ await page.waitForTimeout?.(CONFIGURATION_SELECTION_RETRY_MS);
15549
+ await openConfigurationRoot(page, "work");
15550
+ if (await waitForObservedChatPopover(page) === void 0) return void 0;
15551
+ }
15552
+ }
15553
+ return void 0;
15554
+ }
15281
15555
  return void 0;
15282
15556
  } finally {
15283
15557
  if (initialPopover === void 0) await closeConfigurationMenus(page);
@@ -15410,7 +15684,7 @@ async function selectChatAxis(env, axis, requested, timeoutMs) {
15410
15684
  const page = env.page;
15411
15685
  const initialPopover = (await readChatPopover(page)).snapshot;
15412
15686
  await openConfigurationRoot(page, "chat");
15413
- if ((await readChatPopover(page)).snapshot !== void 0) {
15687
+ if (await waitForObservedChatPopover(page) !== void 0) {
15414
15688
  try {
15415
15689
  if (axis === "modelVersion") return await selectChatPopoverModel(page, configurationSemanticLabels(requested));
15416
15690
  if (axis === "effort" || axis === "intelligence" || axis === "model") return await selectChatPopoverEffort(page, configurationSemanticLabels(requested));
@@ -15431,6 +15705,10 @@ async function selectChatAxis(env, axis, requested, timeoutMs) {
15431
15705
  }
15432
15706
  async function openConfigurationRoot(page, experience) {
15433
15707
  if (experience !== "unknown" && (await readChatPopover(page)).snapshot !== void 0) return true;
15708
+ if (experience !== "unknown") {
15709
+ const currentPicker = await openChatPopover(page);
15710
+ if (currentPicker !== void 0) return currentPicker;
15711
+ }
15434
15712
  const existing = await readConfigurationPanel(page);
15435
15713
  if (existing.axisRows.length > 0) {
15436
15714
  return true;
@@ -15505,6 +15783,14 @@ async function openConfigurationRoot(page, experience) {
15505
15783
  }
15506
15784
  return false;
15507
15785
  }
15786
+ async function waitForObservedChatPopover(page) {
15787
+ for (let attempt = 0; attempt < 6; attempt += 1) {
15788
+ const snapshot2 = (await readChatPopover(page)).snapshot;
15789
+ if (snapshot2 !== void 0) return snapshot2;
15790
+ if (attempt + 1 < 6) await page.waitForTimeout?.(100);
15791
+ }
15792
+ return void 0;
15793
+ }
15508
15794
  function configurationMenuLooksRecognized(items, experience, openerLabel) {
15509
15795
  if (items.some((item) => /(?:model|mode|effort|speed)-(?:switcher|selector)|model-switcher/i.test(item.testId ?? ""))) {
15510
15796
  return true;
@@ -15780,6 +16066,7 @@ function normalizeConfigurationId(value) {
15780
16066
  async function closeConfigurationMenus(page) {
15781
16067
  if ((await readChatPopover(page)).snapshot !== void 0) {
15782
16068
  await closeChatPopover(page);
16069
+ await page.waitForTimeout?.(350);
15783
16070
  return;
15784
16071
  }
15785
16072
  if (!await pressConfigurationEscape(page)) return;