codex-chatgpt-control 0.1.0-alpha.1 → 0.2.0-alpha.1

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 (242) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +55 -0
  3. package/contracts/v1/fixtures/backend-capabilities.json +7 -0
  4. package/contracts/v1/fixtures/blocker-explanation-profiles.json +114 -0
  5. package/contracts/v1/fixtures/command-descriptors.json +192 -15
  6. package/contracts/v1/fixtures/doctor-bridge-upload.json +8 -0
  7. package/contracts/v1/fixtures/doctor-scenario-preflight.json +108 -0
  8. package/contracts/v1/fixtures/existing-tab-diagnostics-blocker.json +57 -0
  9. package/contracts/v1/fixtures/files-preflight-success.json +32 -0
  10. package/contracts/v1/fixtures/help-root.json +1 -1
  11. package/contracts/v1/fixtures/output-json-parse-success.json +17 -2
  12. package/contracts/v1/fixtures/project-sources-plan-add.json +71 -0
  13. package/contracts/v1/fixtures/read-latest-clipped.json +31 -0
  14. package/contracts/v1/fixtures/reports-create-redacted.json +15 -0
  15. package/contracts/v1/fixtures/responses-basic-success.json +11 -0
  16. package/contracts/v1/fixtures/run-basic-success.json +15 -0
  17. package/contracts/v1/fixtures/run-browser-bridge-blocker.json +2 -2
  18. package/contracts/v1/fixtures/run-timeout-partial.json +2 -2
  19. package/contracts/v1/fixtures/runner-budget-blocker.json +1 -1
  20. package/contracts/v1/fixtures/stream-blocked.ndjson +1 -1
  21. package/contracts/v1/fixtures/stream-submitted-completed.ndjson +1 -1
  22. package/contracts/v1/manifest.json +30 -0
  23. package/contracts/v1/parity-suite.json +72 -6
  24. package/contracts/v1/schemas/backend-request.schema.json +3 -0
  25. package/contracts/v1/schemas/command-result.schema.json +48 -0
  26. package/contracts/v1/schemas/response.schema.json +28 -0
  27. package/contracts/v1/schemas/run-result.schema.json +84 -0
  28. package/contracts/v1/surface-drift-policy.json +210 -0
  29. package/dist/codex-chatgpt-control-backend.mjs +5137 -488
  30. package/dist/codex-chatgpt-control.bundle.mjs +5001 -286
  31. package/dist/src/backend/client.d.ts +6 -1
  32. package/dist/src/backend/client.js +5 -0
  33. package/dist/src/backend/protocol.d.ts +1 -1
  34. package/dist/src/backend/protocol.js +7 -0
  35. package/dist/src/backend/session.js +14 -0
  36. package/dist/src/browser/attach.js +128 -20
  37. package/dist/src/browser/downloads.js +2 -1
  38. package/dist/src/browser/page-state.js +6 -3
  39. package/dist/src/client.d.ts +16 -1
  40. package/dist/src/client.js +86 -7
  41. package/dist/src/commands/artifacts.d.ts +5 -0
  42. package/dist/src/commands/artifacts.js +432 -0
  43. package/dist/src/commands/context.js +5 -2
  44. package/dist/src/commands/doctor.d.ts +10 -2
  45. package/dist/src/commands/doctor.js +242 -14
  46. package/dist/src/commands/files.d.ts +2 -1
  47. package/dist/src/commands/files.js +352 -18
  48. package/dist/src/commands/messages.d.ts +2 -1
  49. package/dist/src/commands/messages.js +232 -40
  50. package/dist/src/commands/modes.js +202 -20
  51. package/dist/src/commands/project-sources.d.ts +10 -0
  52. package/dist/src/commands/project-sources.js +643 -0
  53. package/dist/src/commands/registry.js +76 -14
  54. package/dist/src/commands/reports.d.ts +9 -0
  55. package/dist/src/commands/reports.js +83 -6
  56. package/dist/src/commands/response-actions.js +33 -0
  57. package/dist/src/commands/sequence.js +14 -0
  58. package/dist/src/commands/threads.js +2 -1
  59. package/dist/src/commands/timeouts.d.ts +2 -0
  60. package/dist/src/commands/timeouts.js +18 -0
  61. package/dist/src/diagnostics/blockers.d.ts +54 -0
  62. package/dist/src/diagnostics/blockers.js +299 -0
  63. package/dist/src/dom/artifacts.d.ts +7 -0
  64. package/dist/src/dom/artifacts.js +198 -0
  65. package/dist/src/dom/generation-state.d.ts +8 -0
  66. package/dist/src/dom/generation-state.js +103 -0
  67. package/dist/src/dom/locale/am.d.ts +28 -0
  68. package/dist/src/dom/locale/am.js +28 -0
  69. package/dist/src/dom/locale/ar.d.ts +28 -0
  70. package/dist/src/dom/locale/ar.js +28 -0
  71. package/dist/src/dom/locale/bg.d.ts +28 -0
  72. package/dist/src/dom/locale/bg.js +28 -0
  73. package/dist/src/dom/locale/bn.d.ts +28 -0
  74. package/dist/src/dom/locale/bn.js +28 -0
  75. package/dist/src/dom/locale/bs.d.ts +28 -0
  76. package/dist/src/dom/locale/bs.js +28 -0
  77. package/dist/src/dom/locale/ca.d.ts +28 -0
  78. package/dist/src/dom/locale/ca.js +28 -0
  79. package/dist/src/dom/locale/cs.d.ts +28 -0
  80. package/dist/src/dom/locale/cs.js +28 -0
  81. package/dist/src/dom/locale/da.d.ts +28 -0
  82. package/dist/src/dom/locale/da.js +28 -0
  83. package/dist/src/dom/locale/de.d.ts +30 -0
  84. package/dist/src/dom/locale/de.js +30 -0
  85. package/dist/src/dom/locale/el.d.ts +28 -0
  86. package/dist/src/dom/locale/el.js +28 -0
  87. package/dist/src/dom/locale/en.d.ts +50 -0
  88. package/dist/src/dom/locale/en.js +56 -0
  89. package/dist/src/dom/locale/es-419.d.ts +28 -0
  90. package/dist/src/dom/locale/es-419.js +28 -0
  91. package/dist/src/dom/locale/es-ES.d.ts +28 -0
  92. package/dist/src/dom/locale/es-ES.js +28 -0
  93. package/dist/src/dom/locale/et.d.ts +28 -0
  94. package/dist/src/dom/locale/et.js +28 -0
  95. package/dist/src/dom/locale/fa.d.ts +28 -0
  96. package/dist/src/dom/locale/fa.js +28 -0
  97. package/dist/src/dom/locale/fi.d.ts +28 -0
  98. package/dist/src/dom/locale/fi.js +28 -0
  99. package/dist/src/dom/locale/fr-CA.d.ts +29 -0
  100. package/dist/src/dom/locale/fr-CA.js +29 -0
  101. package/dist/src/dom/locale/fr-FR.d.ts +30 -0
  102. package/dist/src/dom/locale/fr-FR.js +30 -0
  103. package/dist/src/dom/locale/gu.d.ts +28 -0
  104. package/dist/src/dom/locale/gu.js +28 -0
  105. package/dist/src/dom/locale/hi.d.ts +28 -0
  106. package/dist/src/dom/locale/hi.js +28 -0
  107. package/dist/src/dom/locale/hr.d.ts +28 -0
  108. package/dist/src/dom/locale/hr.js +28 -0
  109. package/dist/src/dom/locale/hu.d.ts +28 -0
  110. package/dist/src/dom/locale/hu.js +28 -0
  111. package/dist/src/dom/locale/hy.d.ts +28 -0
  112. package/dist/src/dom/locale/hy.js +28 -0
  113. package/dist/src/dom/locale/id.d.ts +28 -0
  114. package/dist/src/dom/locale/id.js +28 -0
  115. package/dist/src/dom/locale/index.d.ts +79 -0
  116. package/dist/src/dom/locale/index.js +202 -0
  117. package/dist/src/dom/locale/is.d.ts +28 -0
  118. package/dist/src/dom/locale/is.js +28 -0
  119. package/dist/src/dom/locale/it.d.ts +27 -0
  120. package/dist/src/dom/locale/it.js +27 -0
  121. package/dist/src/dom/locale/ja.d.ts +27 -0
  122. package/dist/src/dom/locale/ja.js +27 -0
  123. package/dist/src/dom/locale/ka.d.ts +28 -0
  124. package/dist/src/dom/locale/ka.js +28 -0
  125. package/dist/src/dom/locale/kk.d.ts +28 -0
  126. package/dist/src/dom/locale/kk.js +28 -0
  127. package/dist/src/dom/locale/kn.d.ts +28 -0
  128. package/dist/src/dom/locale/kn.js +28 -0
  129. package/dist/src/dom/locale/ko.d.ts +28 -0
  130. package/dist/src/dom/locale/ko.js +28 -0
  131. package/dist/src/dom/locale/lt.d.ts +28 -0
  132. package/dist/src/dom/locale/lt.js +28 -0
  133. package/dist/src/dom/locale/lv.d.ts +28 -0
  134. package/dist/src/dom/locale/lv.js +28 -0
  135. package/dist/src/dom/locale/mk.d.ts +28 -0
  136. package/dist/src/dom/locale/mk.js +28 -0
  137. package/dist/src/dom/locale/ml.d.ts +28 -0
  138. package/dist/src/dom/locale/ml.js +28 -0
  139. package/dist/src/dom/locale/mn.d.ts +28 -0
  140. package/dist/src/dom/locale/mn.js +28 -0
  141. package/dist/src/dom/locale/mr.d.ts +28 -0
  142. package/dist/src/dom/locale/mr.js +28 -0
  143. package/dist/src/dom/locale/ms.d.ts +28 -0
  144. package/dist/src/dom/locale/ms.js +28 -0
  145. package/dist/src/dom/locale/my.d.ts +28 -0
  146. package/dist/src/dom/locale/my.js +28 -0
  147. package/dist/src/dom/locale/nb.d.ts +28 -0
  148. package/dist/src/dom/locale/nb.js +28 -0
  149. package/dist/src/dom/locale/nl.d.ts +28 -0
  150. package/dist/src/dom/locale/nl.js +28 -0
  151. package/dist/src/dom/locale/pa.d.ts +28 -0
  152. package/dist/src/dom/locale/pa.js +28 -0
  153. package/dist/src/dom/locale/pl.d.ts +28 -0
  154. package/dist/src/dom/locale/pl.js +28 -0
  155. package/dist/src/dom/locale/pt-BR.d.ts +28 -0
  156. package/dist/src/dom/locale/pt-BR.js +28 -0
  157. package/dist/src/dom/locale/pt-PT.d.ts +28 -0
  158. package/dist/src/dom/locale/pt-PT.js +28 -0
  159. package/dist/src/dom/locale/ro.d.ts +28 -0
  160. package/dist/src/dom/locale/ro.js +28 -0
  161. package/dist/src/dom/locale/ru.d.ts +28 -0
  162. package/dist/src/dom/locale/ru.js +28 -0
  163. package/dist/src/dom/locale/sk.d.ts +28 -0
  164. package/dist/src/dom/locale/sk.js +28 -0
  165. package/dist/src/dom/locale/sl.d.ts +28 -0
  166. package/dist/src/dom/locale/sl.js +28 -0
  167. package/dist/src/dom/locale/so.d.ts +28 -0
  168. package/dist/src/dom/locale/so.js +28 -0
  169. package/dist/src/dom/locale/sq.d.ts +28 -0
  170. package/dist/src/dom/locale/sq.js +28 -0
  171. package/dist/src/dom/locale/sr.d.ts +28 -0
  172. package/dist/src/dom/locale/sr.js +28 -0
  173. package/dist/src/dom/locale/sv.d.ts +28 -0
  174. package/dist/src/dom/locale/sv.js +28 -0
  175. package/dist/src/dom/locale/sw.d.ts +28 -0
  176. package/dist/src/dom/locale/sw.js +28 -0
  177. package/dist/src/dom/locale/ta.d.ts +28 -0
  178. package/dist/src/dom/locale/ta.js +28 -0
  179. package/dist/src/dom/locale/te.d.ts +28 -0
  180. package/dist/src/dom/locale/te.js +28 -0
  181. package/dist/src/dom/locale/th.d.ts +28 -0
  182. package/dist/src/dom/locale/th.js +28 -0
  183. package/dist/src/dom/locale/tl.d.ts +28 -0
  184. package/dist/src/dom/locale/tl.js +28 -0
  185. package/dist/src/dom/locale/tr.d.ts +28 -0
  186. package/dist/src/dom/locale/tr.js +28 -0
  187. package/dist/src/dom/locale/types.d.ts +45 -0
  188. package/dist/src/dom/locale/types.js +1 -0
  189. package/dist/src/dom/locale/uk.d.ts +28 -0
  190. package/dist/src/dom/locale/uk.js +28 -0
  191. package/dist/src/dom/locale/ur.d.ts +28 -0
  192. package/dist/src/dom/locale/ur.js +28 -0
  193. package/dist/src/dom/locale/vi.d.ts +28 -0
  194. package/dist/src/dom/locale/vi.js +28 -0
  195. package/dist/src/dom/locale/zh-HK.d.ts +28 -0
  196. package/dist/src/dom/locale/zh-HK.js +28 -0
  197. package/dist/src/dom/locale/zh-Hans.d.ts +28 -0
  198. package/dist/src/dom/locale/zh-Hans.js +28 -0
  199. package/dist/src/dom/locale/zh-TW.d.ts +29 -0
  200. package/dist/src/dom/locale/zh-TW.js +29 -0
  201. package/dist/src/dom/locale-labels.d.ts +26 -0
  202. package/dist/src/dom/locale-labels.js +26 -0
  203. package/dist/src/dom/menus.d.ts +6 -0
  204. package/dist/src/dom/menus.js +34 -8
  205. package/dist/src/dom/message-format.d.ts +2 -1
  206. package/dist/src/dom/message-format.js +67 -10
  207. package/dist/src/dom/messages.d.ts +2 -1
  208. package/dist/src/dom/messages.js +2 -4
  209. package/dist/src/dom/selectors.d.ts +1 -0
  210. package/dist/src/dom/selectors.js +42 -15
  211. package/dist/src/index.d.ts +5 -0
  212. package/dist/src/index.js +5 -0
  213. package/dist/src/platform/local-paths.d.ts +4 -0
  214. package/dist/src/platform/local-paths.js +20 -0
  215. package/dist/src/runner/interruptions.js +15 -4
  216. package/dist/src/runner/responses.js +18 -1
  217. package/dist/src/runner/result.js +15 -0
  218. package/dist/src/runner/resume.js +1 -0
  219. package/dist/src/runner/types.d.ts +3 -0
  220. package/dist/src/safety/risk.d.ts +7 -0
  221. package/dist/src/safety/risk.js +7 -0
  222. package/dist/src/safety/untrusted-output.d.ts +73 -0
  223. package/dist/src/safety/untrusted-output.js +199 -0
  224. package/dist/src/scripts/apply-intelligence-locale-captures.d.ts +1 -0
  225. package/dist/src/scripts/apply-intelligence-locale-captures.js +184 -0
  226. package/dist/src/scripts/capture-intelligence-locales.d.ts +25 -0
  227. package/dist/src/scripts/capture-intelligence-locales.js +669 -0
  228. package/dist/src/scripts/check-surface-drift.d.ts +1 -0
  229. package/dist/src/scripts/check-surface-drift.js +11 -0
  230. package/dist/src/scripts/live-smoke/scenarios.js +84 -0
  231. package/dist/src/scripts/locale-capture/language-coverage.d.ts +10 -0
  232. package/dist/src/scripts/locale-capture/language-coverage.js +39 -0
  233. package/dist/src/testing/surface-drift.d.ts +66 -0
  234. package/dist/src/testing/surface-drift.js +363 -0
  235. package/dist/src/types.d.ts +201 -2
  236. package/package.json +2 -1
  237. package/references/backend-protocol.md +93 -1
  238. package/references/language-coverage.md +142 -0
  239. package/references/localization.md +247 -0
  240. package/references/python-parity.md +63 -1
  241. package/references/safety.md +2 -0
  242. package/references/troubleshooting.md +58 -0
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Arabic (ar). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=ar, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export declare const ar: {
10
+ composerTextbox: string[];
11
+ sendButton: string[];
12
+ searchChatsButton: string[];
13
+ searchChatsPlaceholder: string[];
14
+ newChat: string[];
15
+ addFilesButton: string[];
16
+ addFilesOpenerCandidates: string[];
17
+ addPhotosFilesMenuItem: string[];
18
+ copyResponse: string[];
19
+ modeLabels: string[];
20
+ modeOpenerExtra: string[];
21
+ tools: {
22
+ web_search: string[];
23
+ deep_research: string[];
24
+ create_image: string[];
25
+ };
26
+ signedInMarkers: string[];
27
+ responseActions: string[];
28
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Arabic (ar). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=ar, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export const ar = {
10
+ composerTextbox: ["الدردشة مع ChatGPT"],
11
+ sendButton: ["إرسال السؤال"],
12
+ searchChatsButton: ["البحث في الدردشات"],
13
+ searchChatsPlaceholder: ["البحث في الدردشات..."],
14
+ newChat: ["دردشة جديدة"],
15
+ addFilesButton: ["إضافة الملفات والمزيد"],
16
+ addFilesOpenerCandidates: ["إضافة الملفات والمزيد"],
17
+ addPhotosFilesMenuItem: ["إضافة صور وملفات"],
18
+ copyResponse: ["نسخ إجابة"],
19
+ modeLabels: ["فوري", "متوسط", "عالي", "مكثف جدًا", "احترافي"],
20
+ modeOpenerExtra: ["تكوين"],
21
+ tools: {
22
+ web_search: ["البحث في الويب"],
23
+ deep_research: ["البحث التفصيلي"],
24
+ create_image: ["إنشاء صورة"],
25
+ },
26
+ signedInMarkers: ["دردشة جديدة", "البحث في الدردشات", "المحادثات الأخيرة", "المكتبة", "المشروعات", "الدردشة مع ChatGPT"],
27
+ responseActions: ["نسخ إجابة"],
28
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Bulgarian (bg-BG). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=bg-BG, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export declare const bg: {
10
+ composerTextbox: string[];
11
+ sendButton: string[];
12
+ searchChatsButton: string[];
13
+ searchChatsPlaceholder: string[];
14
+ newChat: string[];
15
+ addFilesButton: string[];
16
+ addFilesOpenerCandidates: string[];
17
+ addPhotosFilesMenuItem: string[];
18
+ copyResponse: string[];
19
+ modeLabels: string[];
20
+ modeOpenerExtra: string[];
21
+ tools: {
22
+ web_search: string[];
23
+ deep_research: string[];
24
+ create_image: string[];
25
+ };
26
+ signedInMarkers: string[];
27
+ responseActions: string[];
28
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Bulgarian (bg-BG). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=bg-BG, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export const bg = {
10
+ composerTextbox: ["Чат с ChatGPT"],
11
+ sendButton: ["Изпращане на подкана"],
12
+ searchChatsButton: ["Търсене на чатове"],
13
+ searchChatsPlaceholder: ["Търсене в чатове..."],
14
+ newChat: ["Нов чат"],
15
+ addFilesButton: ["Добавяне на файлове и др."],
16
+ addFilesOpenerCandidates: ["Добавяне на файлове и др."],
17
+ addPhotosFilesMenuItem: ["Добавяне на снимки и файлове"],
18
+ copyResponse: ["Копирайте отговора"],
19
+ modeLabels: ["Мигновен", "Среден", "Висок", "Много високо", "Про"],
20
+ modeOpenerExtra: ["Конфигурирайте"],
21
+ tools: {
22
+ web_search: ["Търсене в интернет"],
23
+ deep_research: ["Подробно проучване"],
24
+ create_image: ["Създаване на изображение"],
25
+ },
26
+ signedInMarkers: ["Нов чат", "Търсене на чатове", "Скорошни чатове", "Каталог", "Проекти", "Чат с ChatGPT"],
27
+ responseActions: ["Копирайте отговора"],
28
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Bengali (bn-BD). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=bn-BD, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export declare const bn: {
10
+ composerTextbox: string[];
11
+ sendButton: string[];
12
+ searchChatsButton: string[];
13
+ searchChatsPlaceholder: string[];
14
+ newChat: string[];
15
+ addFilesButton: string[];
16
+ addFilesOpenerCandidates: string[];
17
+ addPhotosFilesMenuItem: string[];
18
+ copyResponse: string[];
19
+ modeLabels: string[];
20
+ modeOpenerExtra: string[];
21
+ tools: {
22
+ web_search: string[];
23
+ deep_research: string[];
24
+ create_image: string[];
25
+ };
26
+ signedInMarkers: string[];
27
+ responseActions: string[];
28
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Bengali (bn-BD). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=bn-BD, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export const bn = {
10
+ composerTextbox: ["যে কোন কিছু জিজ্ঞেস করুন…"],
11
+ sendButton: ["প্রম্পট পাঠান"],
12
+ searchChatsButton: ["চ্যাট খুঁজুন"],
13
+ searchChatsPlaceholder: ["চ্যাট সন্ধান করুন..."],
14
+ newChat: ["নতুন চ্যাট"],
15
+ addFilesButton: ["ফাইল এবং আরও অনেক কিছু যোগ করুন"],
16
+ addFilesOpenerCandidates: ["ফাইল এবং আরও অনেক কিছু যোগ করুন"],
17
+ addPhotosFilesMenuItem: ["ফটো এবং ফাইল আপলোড করুন"],
18
+ copyResponse: ["উত্তর কপি করুন"],
19
+ modeLabels: ["তাৎক্ষণিক", "মাঝারি", "উচ্চ", "অতি উচ্চ", "প্রো"],
20
+ modeOpenerExtra: ["কনফিগার করুন..."],
21
+ tools: {
22
+ web_search: ["ওয়েব সন্ধান"],
23
+ deep_research: ["গভীর অনুসন্ধান"],
24
+ create_image: ["ছবি তৈরি করুন"],
25
+ },
26
+ signedInMarkers: ["নতুন চ্যাট", "চ্যাট খুঁজুন", "সাম্প্রতিক", "চ্যাটের ইতিহাস", "প্রোজেক্ট", "যে কোন কিছু জিজ্ঞেস করুন…"],
27
+ responseActions: ["উত্তর কপি করুন"],
28
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Bosnian (bs-BA). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=bs-BA, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export declare const bs: {
10
+ composerTextbox: string[];
11
+ sendButton: string[];
12
+ searchChatsButton: string[];
13
+ searchChatsPlaceholder: string[];
14
+ newChat: string[];
15
+ addFilesButton: string[];
16
+ addFilesOpenerCandidates: string[];
17
+ addPhotosFilesMenuItem: string[];
18
+ copyResponse: string[];
19
+ modeLabels: string[];
20
+ modeOpenerExtra: string[];
21
+ tools: {
22
+ web_search: string[];
23
+ deep_research: string[];
24
+ create_image: string[];
25
+ };
26
+ signedInMarkers: string[];
27
+ responseActions: string[];
28
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Bosnian (bs-BA). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=bs-BA, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export const bs = {
10
+ composerTextbox: ["Razgovarajte pomoću ChatGPT-a"],
11
+ sendButton: ["Pošalji upit"],
12
+ searchChatsButton: ["Pretraži razgovore"],
13
+ searchChatsPlaceholder: ["Pretražuj razgovore..."],
14
+ newChat: ["Novi razgovor"],
15
+ addFilesButton: ["Otpremite datoteke i još mnogo toga"],
16
+ addFilesOpenerCandidates: ["Otpremite datoteke i još mnogo toga"],
17
+ addPhotosFilesMenuItem: ["Dodaj slike i datoteke"],
18
+ copyResponse: ["Kopiraj odgovor"],
19
+ modeLabels: ["Brzo", "Srednji", "Visoko", "Vrlo visoko"],
20
+ modeOpenerExtra: ["Podesi"],
21
+ tools: {
22
+ web_search: ["Internet pretraga"],
23
+ deep_research: ["Detaljno istraživanje"],
24
+ create_image: ["Kreirajte sliku"],
25
+ },
26
+ signedInMarkers: ["Novi razgovor", "Pretraži razgovore", "Nedavno", "Biblioteka", "Projekti", "Razgovarajte pomoću ChatGPT-a"],
27
+ responseActions: ["Kopiraj odgovor"],
28
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Catalan (ca-ES). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=ca-ES, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export declare const ca: {
10
+ composerTextbox: string[];
11
+ sendButton: string[];
12
+ searchChatsButton: string[];
13
+ searchChatsPlaceholder: string[];
14
+ newChat: string[];
15
+ addFilesButton: string[];
16
+ addFilesOpenerCandidates: string[];
17
+ addPhotosFilesMenuItem: string[];
18
+ copyResponse: string[];
19
+ modeLabels: string[];
20
+ modeOpenerExtra: string[];
21
+ tools: {
22
+ web_search: string[];
23
+ deep_research: string[];
24
+ create_image: string[];
25
+ };
26
+ signedInMarkers: string[];
27
+ responseActions: string[];
28
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Catalan (ca-ES). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=ca-ES, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export const ca = {
10
+ composerTextbox: ["Xateja amb el ChatGPT"],
11
+ sendButton: ["Envia la indicació"],
12
+ searchChatsButton: ["Cerca xats"],
13
+ searchChatsPlaceholder: ["Cerca als xats..."],
14
+ newChat: ["Xat nou"],
15
+ addFilesButton: ["Afegeix fitxers i més"],
16
+ addFilesOpenerCandidates: ["Afegeix fitxers i més"],
17
+ addPhotosFilesMenuItem: ["Afegeix fotos i fitxers"],
18
+ copyResponse: ["Copia la resposta"],
19
+ modeLabels: ["Instantani", "Mitjà", "Alt", "Molt alt"],
20
+ modeOpenerExtra: ["Configura…"],
21
+ tools: {
22
+ web_search: ["Cerca a la xarxa"],
23
+ deep_research: ["Recerca profunda"],
24
+ create_image: ["Crea una imatge"],
25
+ },
26
+ signedInMarkers: ["Xat nou", "Cerca xats", "Recents", "Història de xats", "Projectes", "Xateja amb el ChatGPT"],
27
+ responseActions: ["Copia la resposta"],
28
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Czech (cs-CZ). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=cs-CZ, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export declare const cs: {
10
+ composerTextbox: string[];
11
+ sendButton: string[];
12
+ searchChatsButton: string[];
13
+ searchChatsPlaceholder: string[];
14
+ newChat: string[];
15
+ addFilesButton: string[];
16
+ addFilesOpenerCandidates: string[];
17
+ addPhotosFilesMenuItem: string[];
18
+ copyResponse: string[];
19
+ modeLabels: string[];
20
+ modeOpenerExtra: string[];
21
+ tools: {
22
+ web_search: string[];
23
+ deep_research: string[];
24
+ create_image: string[];
25
+ };
26
+ signedInMarkers: string[];
27
+ responseActions: string[];
28
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Czech (cs-CZ). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=cs-CZ, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export const cs = {
10
+ composerTextbox: ["Chatovat s ChatGPT"],
11
+ sendButton: ["Odeslat výzvu"],
12
+ searchChatsButton: ["Hledat chaty"],
13
+ searchChatsPlaceholder: ["Hledat chaty…"],
14
+ newChat: ["Nový chat"],
15
+ addFilesButton: ["Přidávání souborů a další"],
16
+ addFilesOpenerCandidates: ["Přidávání souborů a další"],
17
+ addPhotosFilesMenuItem: ["Přidat fotografie a soubory"],
18
+ copyResponse: ["Zkopírovat odpověď"],
19
+ modeLabels: ["Okamžitá", "Střední", "Vysoká", "Velmi vysoká"],
20
+ modeOpenerExtra: ["Konfigurovat…"],
21
+ tools: {
22
+ web_search: ["Vyhledávání na webu"],
23
+ deep_research: ["Hloubkový výzkum"],
24
+ create_image: ["Vytvoř obrázek"],
25
+ },
26
+ signedInMarkers: ["Nový chat", "Hledat chaty", "Nedávné", "Historie chatu", "Projekty", "Chatovat s ChatGPT"],
27
+ responseActions: ["Zkopírovat odpověď"],
28
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Danish (da-DK). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=da-DK, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export declare const da: {
10
+ composerTextbox: string[];
11
+ sendButton: string[];
12
+ searchChatsButton: string[];
13
+ searchChatsPlaceholder: string[];
14
+ newChat: string[];
15
+ addFilesButton: string[];
16
+ addFilesOpenerCandidates: string[];
17
+ addPhotosFilesMenuItem: string[];
18
+ copyResponse: string[];
19
+ modeLabels: string[];
20
+ modeOpenerExtra: string[];
21
+ tools: {
22
+ web_search: string[];
23
+ deep_research: string[];
24
+ create_image: string[];
25
+ };
26
+ signedInMarkers: string[];
27
+ responseActions: string[];
28
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Danish (da-DK). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=da-DK, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export const da = {
10
+ composerTextbox: ["Chat med ChatGPT"],
11
+ sendButton: ["Send forespørgsel"],
12
+ searchChatsButton: ["Søg i chats"],
13
+ searchChatsPlaceholder: ["Søg i chats..."],
14
+ newChat: ["Ny chat"],
15
+ addFilesButton: ["Tilføj filer og mere"],
16
+ addFilesOpenerCandidates: ["Tilføj filer og mere"],
17
+ addPhotosFilesMenuItem: ["Tilføj billeder og filer"],
18
+ copyResponse: ["Kopiér svar"],
19
+ modeLabels: ["Øjeblikkeligt", "Høj", "Ekstra høj"],
20
+ modeOpenerExtra: ["Konfigurer ..."],
21
+ tools: {
22
+ web_search: ["Internetsøgning"],
23
+ deep_research: ["Grundig research"],
24
+ create_image: ["Lav et billede"],
25
+ },
26
+ signedInMarkers: ["Ny chat", "Søg i chats", "Seneste", "Chathistorik", "Projekter", "Chat med ChatGPT"],
27
+ responseActions: ["Kopiér svar"],
28
+ };
@@ -0,0 +1,30 @@
1
+ /**
2
+ * German (de-DE). Captured 2026-06-09 against a live chatgpt.com session (html lang=de-DE).
3
+ *
4
+ * Only keys whose text differs from English are listed. Omitted because they match English
5
+ * case-insensitively: `tools.deep_research` ("Deep Research"). Not yet captured —
6
+ * fall back to English + `selector_drift`:
7
+ * `download`, `downloadImage`, `imageContainerHint`, `transientAssistant`, `stopControl`,
8
+ * and the login/captcha/rate-limit blocker copy.
9
+ *
10
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
11
+ */
12
+ export declare const de: {
13
+ composerTextbox: string[];
14
+ sendButton: string[];
15
+ searchChatsButton: string[];
16
+ searchChatsPlaceholder: string[];
17
+ newChat: string[];
18
+ addFilesButton: string[];
19
+ addFilesOpenerCandidates: string[];
20
+ addPhotosFilesMenuItem: string[];
21
+ copyResponse: string[];
22
+ modeLabels: string[];
23
+ modeOpenerExtra: string[];
24
+ tools: {
25
+ web_search: string[];
26
+ create_image: string[];
27
+ };
28
+ signedInMarkers: string[];
29
+ responseActions: string[];
30
+ };
@@ -0,0 +1,30 @@
1
+ /**
2
+ * German (de-DE). Captured 2026-06-09 against a live chatgpt.com session (html lang=de-DE).
3
+ *
4
+ * Only keys whose text differs from English are listed. Omitted because they match English
5
+ * case-insensitively: `tools.deep_research` ("Deep Research"). Not yet captured —
6
+ * fall back to English + `selector_drift`:
7
+ * `download`, `downloadImage`, `imageContainerHint`, `transientAssistant`, `stopControl`,
8
+ * and the login/captcha/rate-limit blocker copy.
9
+ *
10
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
11
+ */
12
+ export const de = {
13
+ composerTextbox: ["Mit ChatGPT chatten"],
14
+ sendButton: ["Aufforderung senden"],
15
+ searchChatsButton: ["Chats durchsuchen"],
16
+ searchChatsPlaceholder: ["Chats suchen…"],
17
+ newChat: ["Neuer Chat"],
18
+ addFilesButton: ["Dateien und mehr hinzufügen"],
19
+ addFilesOpenerCandidates: ["Dateien und mehr hinzufügen"],
20
+ addPhotosFilesMenuItem: ["Fotos und Dateien hinzufügen"],
21
+ copyResponse: ["Antwort kopieren"],
22
+ modeLabels: ["Sofort", "Mittel", "Hoch", "Extra hoch"],
23
+ modeOpenerExtra: ["Konfigurieren"],
24
+ tools: {
25
+ web_search: ["Websuche"],
26
+ create_image: ["Bild erstellen"],
27
+ },
28
+ signedInMarkers: ["Neuer Chat", "Chats durchsuchen", "Letzte", "Bibliothek", "Projekte", "Mit ChatGPT chatten"],
29
+ responseActions: ["Antwort kopieren"],
30
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Greek (el-GR). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=el-GR, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export declare const el: {
10
+ composerTextbox: string[];
11
+ sendButton: string[];
12
+ searchChatsButton: string[];
13
+ searchChatsPlaceholder: string[];
14
+ newChat: string[];
15
+ addFilesButton: string[];
16
+ addFilesOpenerCandidates: string[];
17
+ addPhotosFilesMenuItem: string[];
18
+ copyResponse: string[];
19
+ modeLabels: string[];
20
+ modeOpenerExtra: string[];
21
+ tools: {
22
+ web_search: string[];
23
+ deep_research: string[];
24
+ create_image: string[];
25
+ };
26
+ signedInMarkers: string[];
27
+ responseActions: string[];
28
+ };
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Greek (el-GR). Captured 2026-06-09 against a live chatgpt.com session
3
+ * (html lang=el-GR, Google Translate confirmed off).
4
+ *
5
+ * Some non-Intelligence surfaces may still fall back to English + `selector_drift`.
6
+ *
7
+ * Intelligence picker labels updated 2026-06-10 from a visible ChatGPT Pro session.
8
+ */
9
+ export const el = {
10
+ composerTextbox: ["Συνομιλία με το ChatGPT"],
11
+ sendButton: ["Αποστολή προτροπής"],
12
+ searchChatsButton: ["Αναζήτηση συνομιλιών"],
13
+ searchChatsPlaceholder: ["Αναζήτηση συνομιλιών…"],
14
+ newChat: ["Νέα συνομιλία"],
15
+ addFilesButton: ["Προσθήκη αρχείων και άλλα"],
16
+ addFilesOpenerCandidates: ["Προσθήκη αρχείων και άλλα"],
17
+ addPhotosFilesMenuItem: ["Προσθήκη φωτογραφιών & αρχείων"],
18
+ copyResponse: ["Αντιγραφή απάντησης"],
19
+ modeLabels: ["Άμεση", "Μεσαία", "Υψηλή", "Πολύ υψηλό"],
20
+ modeOpenerExtra: ["Διαμόρφωση…"],
21
+ tools: {
22
+ web_search: ["Αναζήτηση στον ιστό"],
23
+ deep_research: ["Έρευνα σε βάθος"],
24
+ create_image: ["Δημιουργία εικόνας"],
25
+ },
26
+ signedInMarkers: ["Νέα συνομιλία", "Αναζήτηση συνομιλιών", "Πρόσφατες", "Ιστορικό συνομιλιών", "Έργα", "Συνομιλία με το ChatGPT"],
27
+ responseActions: ["Αντιγραφή απάντησης"],
28
+ };
@@ -0,0 +1,50 @@
1
+ /**
2
+ * English (canonical) locale strings.
3
+ *
4
+ * This must be COMPLETE — every key in `LocaleStrings` must be present. The `satisfies`
5
+ * check enforces this at compile time. English is always first in the `locales` list and
6
+ * defines the canonical public API keys (e.g. `effort: "Thinking"`, `tool: "web_search"`).
7
+ */
8
+ export declare const en: {
9
+ readonly composerTextbox: readonly ["Chat with ChatGPT"];
10
+ readonly sendButton: readonly ["Send prompt"];
11
+ readonly searchChatsButton: readonly ["Search chats"];
12
+ readonly searchChatsPlaceholder: readonly ["Search chats..."];
13
+ readonly newChat: readonly ["New chat"];
14
+ readonly addFilesButton: readonly ["Add files and more"];
15
+ /** Fallback opener labels tried in order when the primary add-files control is absent. */
16
+ readonly addFilesOpenerCandidates: readonly ["Add files and more", "Add files", "Add photos"];
17
+ readonly addPhotosFilesMenuItem: readonly ["Add photos & files"];
18
+ readonly projectSourcesTab: readonly ["Sources"];
19
+ readonly projectSourcesAddSource: readonly ["Add source", "Add sources"];
20
+ readonly projectSourcesUploadFiles: readonly ["Upload files", "Upload file", "Upload", "Add files"];
21
+ readonly copyResponse: readonly ["Copy response"];
22
+ readonly download: readonly ["Download"];
23
+ readonly downloadImage: readonly ["Download image"];
24
+ /** Container hint used to scope generated-image download controls. */
25
+ readonly imageContainerHint: readonly ["image"];
26
+ readonly modeLabels: readonly ["Latest", "Instant", "Thinking", "Extended", "Medium", "High", "Extra High", "Pro"];
27
+ /** Extra openers that surface the mode menu but are not selectable modes themselves. */
28
+ readonly modeOpenerExtra: readonly ["Configure"];
29
+ readonly tools: {
30
+ readonly web_search: readonly ["Web search"];
31
+ readonly deep_research: readonly ["Deep research"];
32
+ readonly create_image: readonly ["Create image"];
33
+ };
34
+ /** Sidebar/shell markers that indicate a signed-in ChatGPT surface. */
35
+ readonly signedInMarkers: readonly ["New chat", "Search chats", "Chat with ChatGPT", "Recents", "Projects"];
36
+ /** Exact-match transient assistant placeholders filtered out of captured responses. */
37
+ readonly transientAssistant: readonly ["thinking", "reasoning", "searching", "searching the web"];
38
+ /** Streaming "stop" control text, matched while a response generates. */
39
+ readonly stopControl: readonly ["stop generating", "stop streaming", "stop answering", "cancel"];
40
+ /** Interrupted generation markers shown after the assistant stops before completion. */
41
+ readonly stoppedAssistant: readonly ["stopped thinking", "stopped answering", "generation stopped"];
42
+ /** Response-action affordance text (fallback to the structural copy-button locator). */
43
+ readonly responseActions: readonly ["Copy response", "More actions"];
44
+ /** Sign-in wall copy. Matched as whole words. */
45
+ readonly loginBlocker: readonly ["log in", "login", "sign in", "signin", "welcome back"];
46
+ /** Captcha / suspicious-activity challenge copy. */
47
+ readonly captchaBlocker: readonly ["captcha", "verify you are human", "verify that you are human", "suspicious activity"];
48
+ /** Usage/rate-limit copy. */
49
+ readonly rateLimitBlocker: readonly ["usage limit", "rate limit", "try again later", "too many requests"];
50
+ };
@@ -0,0 +1,56 @@
1
+ /**
2
+ * English (canonical) locale strings.
3
+ *
4
+ * This must be COMPLETE — every key in `LocaleStrings` must be present. The `satisfies`
5
+ * check enforces this at compile time. English is always first in the `locales` list and
6
+ * defines the canonical public API keys (e.g. `effort: "Thinking"`, `tool: "web_search"`).
7
+ */
8
+ export const en = {
9
+ // --- Primary interaction path (accessible names) ---
10
+ composerTextbox: ["Chat with ChatGPT"],
11
+ sendButton: ["Send prompt"],
12
+ searchChatsButton: ["Search chats"],
13
+ searchChatsPlaceholder: ["Search chats..."],
14
+ newChat: ["New chat"],
15
+ addFilesButton: ["Add files and more"],
16
+ /** Fallback opener labels tried in order when the primary add-files control is absent. */
17
+ addFilesOpenerCandidates: ["Add files and more", "Add files", "Add photos"],
18
+ addPhotosFilesMenuItem: ["Add photos & files"],
19
+ projectSourcesTab: ["Sources"],
20
+ projectSourcesAddSource: ["Add source", "Add sources"],
21
+ projectSourcesUploadFiles: ["Upload files", "Upload file", "Upload", "Add files"],
22
+ copyResponse: ["Copy response"],
23
+ // --- Download affordances (matched as `aria-label` substrings) ---
24
+ download: ["Download"],
25
+ downloadImage: ["Download image"],
26
+ /** Container hint used to scope generated-image download controls. */
27
+ imageContainerHint: ["image"],
28
+ // --- Mode switcher (also the canonical public API keys) ---
29
+ modeLabels: ["Latest", "Instant", "Thinking", "Extended", "Medium", "High", "Extra High", "Pro"],
30
+ /** Extra openers that surface the mode menu but are not selectable modes themselves. */
31
+ modeOpenerExtra: ["Configure"],
32
+ // --- Tool menu items, keyed by logical tool id ---
33
+ tools: {
34
+ web_search: ["Web search"],
35
+ deep_research: ["Deep research"],
36
+ create_image: ["Create image"],
37
+ },
38
+ // --- Detection heuristics (Node-side, matched against extracted visible text) ---
39
+ /** Sidebar/shell markers that indicate a signed-in ChatGPT surface. */
40
+ signedInMarkers: ["New chat", "Search chats", "Chat with ChatGPT", "Recents", "Projects"],
41
+ /** Exact-match transient assistant placeholders filtered out of captured responses. */
42
+ transientAssistant: ["thinking", "reasoning", "searching", "searching the web"],
43
+ /** Streaming "stop" control text, matched while a response generates. */
44
+ stopControl: ["stop generating", "stop streaming", "stop answering", "cancel"],
45
+ /** Interrupted generation markers shown after the assistant stops before completion. */
46
+ stoppedAssistant: ["stopped thinking", "stopped answering", "generation stopped"],
47
+ /** Response-action affordance text (fallback to the structural copy-button locator). */
48
+ responseActions: ["Copy response", "More actions"],
49
+ // --- Blocker classification (ChatGPT-localized visible text only) ---
50
+ /** Sign-in wall copy. Matched as whole words. */
51
+ loginBlocker: ["log in", "login", "sign in", "signin", "welcome back"],
52
+ /** Captcha / suspicious-activity challenge copy. */
53
+ captchaBlocker: ["captcha", "verify you are human", "verify that you are human", "suspicious activity"],
54
+ /** Usage/rate-limit copy. */
55
+ rateLimitBlocker: ["usage limit", "rate limit", "try again later", "too many requests"],
56
+ };